@nextcloud/vue 8.32.0 → 8.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -1
- package/README.md +2 -2
- package/dist/Components/NcActionButton.cjs +1 -1
- package/dist/Components/NcActionButton.mjs +1 -1
- package/dist/Components/NcActionButtonGroup.cjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionCheckbox.cjs +1 -1
- package/dist/Components/NcActionCheckbox.mjs +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActionLink.cjs +5 -5
- package/dist/Components/NcActionLink.cjs.map +1 -1
- package/dist/Components/NcActionLink.mjs +5 -5
- package/dist/Components/NcActionLink.mjs.map +1 -1
- package/dist/Components/NcActionRadio.cjs +1 -1
- package/dist/Components/NcActionRadio.mjs +1 -1
- package/dist/Components/NcActionRouter.cjs +4 -4
- package/dist/Components/NcActionRouter.cjs.map +1 -1
- package/dist/Components/NcActionRouter.mjs +4 -4
- package/dist/Components/NcActionRouter.mjs.map +1 -1
- package/dist/Components/NcActionText.cjs +4 -4
- package/dist/Components/NcActionText.cjs.map +1 -1
- package/dist/Components/NcActionText.mjs +4 -4
- package/dist/Components/NcActionText.mjs.map +1 -1
- package/dist/Components/NcActionTextEditable.cjs +1 -1
- package/dist/Components/NcActionTextEditable.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/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/NcAppNavigationNew.cjs +1 -1
- package/dist/Components/NcAppNavigationNew.mjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.cjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSearch.cjs +1 -1
- package/dist/Components/NcAppNavigationSearch.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/NcAppSettingsSection.cjs +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +1 -1
- package/dist/Components/NcAppSettingsSectionShortcuts.cjs +4 -0
- package/dist/Components/NcAppSettingsSectionShortcuts.cjs.map +1 -0
- package/dist/Components/NcAppSettingsSectionShortcuts.mjs +5 -0
- package/dist/Components/NcAppSettingsSectionShortcuts.mjs.map +1 -0
- package/dist/Components/NcAppSettingsShortcutsSection.cjs +4 -0
- package/dist/Components/NcAppSettingsShortcutsSection.cjs.map +1 -0
- package/dist/Components/NcAppSettingsShortcutsSection.mjs +5 -0
- package/dist/Components/NcAppSettingsShortcutsSection.mjs.map +1 -0
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAppSidebarTab.cjs +2 -3
- package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
- package/dist/Components/NcAppSidebarTab.mjs +2 -3
- package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
- package/dist/Components/NcAssistantButton.cjs +1 -1
- package/dist/Components/NcAssistantButton.mjs +1 -1
- package/dist/Components/NcAssistantIcon.cjs +1 -1
- package/dist/Components/NcAssistantIcon.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 +1 -1
- package/dist/Components/NcButton.mjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.cjs +12 -18
- package/dist/Components/NcChip.cjs.map +1 -1
- package/dist/Components/NcChip.mjs +12 -18
- package/dist/Components/NcChip.mjs.map +1 -1
- package/dist/Components/NcCollectionList.cjs +1 -1
- package/dist/Components/NcCollectionList.mjs +1 -1
- package/dist/Components/NcColorPicker.cjs +1 -1
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.cjs +1 -1
- package/dist/Components/NcContent.mjs +1 -1
- package/dist/Components/NcCounterBubble.cjs +1 -1
- package/dist/Components/NcCounterBubble.mjs +1 -1
- package/dist/Components/NcDashboardWidget.cjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +17 -30
- package/dist/Components/NcDateTimePicker.cjs.map +1 -1
- package/dist/Components/NcDateTimePicker.mjs +17 -30
- package/dist/Components/NcDateTimePicker.mjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.cjs +14 -32
- package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +14 -32
- package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
- package/dist/Components/NcDialog.cjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcDialogButton.cjs +1 -1
- package/dist/Components/NcDialogButton.mjs +1 -1
- package/dist/Components/NcEllipsisedOption.cjs +1 -1
- package/dist/Components/NcEllipsisedOption.mjs +1 -1
- package/dist/Components/NcEmojiPicker.cjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcEmptyContent.cjs +14 -9
- package/dist/Components/NcEmptyContent.cjs.map +1 -1
- package/dist/Components/NcEmptyContent.mjs +14 -9
- package/dist/Components/NcEmptyContent.mjs.map +1 -1
- package/dist/Components/NcFormBox.cjs +4 -0
- package/dist/Components/NcFormBox.cjs.map +1 -0
- package/dist/Components/NcFormBox.mjs +5 -0
- package/dist/Components/NcFormBox.mjs.map +1 -0
- package/dist/Components/NcFormBoxButton.cjs +4 -0
- package/dist/Components/NcFormBoxButton.cjs.map +1 -0
- package/dist/Components/NcFormBoxButton.mjs +5 -0
- package/dist/Components/NcFormBoxButton.mjs.map +1 -0
- package/dist/Components/NcFormBoxCopyButton.cjs +4 -0
- package/dist/Components/NcFormBoxCopyButton.cjs.map +1 -0
- package/dist/Components/NcFormBoxCopyButton.mjs +5 -0
- package/dist/Components/NcFormBoxCopyButton.mjs.map +1 -0
- package/dist/Components/NcFormBoxSwitch.cjs +4 -0
- package/dist/Components/NcFormBoxSwitch.cjs.map +1 -0
- package/dist/Components/NcFormBoxSwitch.mjs +5 -0
- package/dist/Components/NcFormBoxSwitch.mjs.map +1 -0
- package/dist/Components/NcFormGroup.cjs +4 -0
- package/dist/Components/NcFormGroup.cjs.map +1 -0
- package/dist/Components/NcFormGroup.mjs +5 -0
- package/dist/Components/NcFormGroup.mjs.map +1 -0
- package/dist/Components/NcHeaderButton.cjs +1 -1
- package/dist/Components/NcHeaderButton.mjs +1 -1
- package/dist/Components/NcHeaderMenu.cjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcHighlight.cjs +1 -1
- package/dist/Components/NcHighlight.mjs +1 -1
- package/dist/Components/NcHotkey.cjs +4 -0
- package/dist/Components/NcHotkey.cjs.map +1 -0
- package/dist/Components/NcHotkey.mjs +5 -0
- package/dist/Components/NcHotkey.mjs.map +1 -0
- package/dist/Components/NcHotkeyList.cjs +4 -0
- package/dist/Components/NcHotkeyList.cjs.map +1 -0
- package/dist/Components/NcHotkeyList.mjs +5 -0
- package/dist/Components/NcHotkeyList.mjs.map +1 -0
- package/dist/Components/NcIconSvgWrapper.cjs +1 -1
- package/dist/Components/NcIconSvgWrapper.mjs +1 -1
- package/dist/Components/NcInputField.cjs +1 -1
- package/dist/Components/NcInputField.mjs +1 -1
- package/dist/Components/NcKbd.cjs +2 -63
- package/dist/Components/NcKbd.cjs.map +1 -1
- package/dist/Components/NcKbd.mjs +2 -63
- package/dist/Components/NcKbd.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 +13 -14
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +13 -14
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcNoteCard.cjs +2 -2
- package/dist/Components/NcNoteCard.mjs +2 -2
- 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/NcProgressBar.cjs +1 -1
- package/dist/Components/NcProgressBar.mjs +1 -1
- package/dist/Components/NcRadioGroup.cjs +1 -1
- package/dist/Components/NcRadioGroup.mjs +1 -1
- package/dist/Components/NcRadioGroupButton.cjs +1 -1
- package/dist/Components/NcRadioGroupButton.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.cjs +2 -2
- package/dist/Components/NcRichContenteditable.mjs +2 -2
- package/dist/Components/NcRichText.cjs +3 -3
- package/dist/Components/NcRichText.mjs +4 -4
- package/dist/Components/NcSelect.cjs +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.cjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSelectUsers.cjs +1 -1
- package/dist/Components/NcSelectUsers.mjs +1 -1
- package/dist/Components/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 +1 -1
- package/dist/Components/NcTextArea.mjs +1 -1
- package/dist/Components/NcTextField.cjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcThemeProvider.cjs +1 -1
- package/dist/Components/NcThemeProvider.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/Components/NcVNodes.cjs +1 -2
- package/dist/Components/NcVNodes.cjs.map +1 -1
- package/dist/Components/NcVNodes.mjs +1 -2
- package/dist/Components/NcVNodes.mjs.map +1 -1
- package/dist/Composables/useFormatDateTime.cjs +12 -27
- package/dist/Composables/useFormatDateTime.cjs.map +1 -1
- package/dist/Composables/useFormatDateTime.mjs +12 -27
- package/dist/Composables/useFormatDateTime.mjs.map +1 -1
- package/dist/Composables/useHotKey.cjs +1 -2
- package/dist/Composables/useHotKey.cjs.map +1 -1
- package/dist/Composables/useHotKey.mjs +1 -2
- package/dist/Composables/useHotKey.mjs.map +1 -1
- package/dist/Composables/useIsDarkTheme.cjs +2 -5
- package/dist/Composables/useIsDarkTheme.cjs.map +1 -1
- package/dist/Composables/useIsDarkTheme.mjs +2 -5
- package/dist/Composables/useIsDarkTheme.mjs.map +1 -1
- package/dist/Directives/Linkify.cjs +1 -2
- package/dist/Directives/Linkify.cjs.map +1 -1
- package/dist/Directives/Linkify.mjs +1 -2
- package/dist/Directives/Linkify.mjs.map +1 -1
- package/dist/Functions/contactsMenu.cjs +2 -3
- package/dist/Functions/contactsMenu.cjs.map +1 -1
- package/dist/Functions/contactsMenu.mjs +2 -3
- package/dist/Functions/contactsMenu.mjs.map +1 -1
- package/dist/Functions/dialog.cjs +5 -20
- package/dist/Functions/dialog.cjs.map +1 -1
- package/dist/Functions/dialog.mjs +5 -20
- package/dist/Functions/dialog.mjs.map +1 -1
- package/dist/Functions/emoji.cjs +1 -1
- package/dist/Functions/emoji.mjs +1 -1
- package/dist/Functions/reference.cjs +2 -2
- package/dist/Functions/reference.mjs +2 -2
- package/dist/Functions/registerReference.cjs +1 -1
- package/dist/Functions/registerReference.mjs +1 -1
- package/dist/Functions/usernameToColor.cjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/Mixins/richEditor.cjs +1 -1
- package/dist/Mixins/richEditor.mjs +1 -1
- package/dist/assets/{NcActionButton-DwJihiLc.css → NcActionButton-CG4V9b5b.css} +18 -18
- package/dist/assets/{NcActionCheckbox-DvdNISIs.css → NcActionCheckbox-C8I_k6NA.css} +12 -12
- package/dist/assets/{NcActionInput-DsGwr3wt.css → NcActionInput-BvPYSqDP.css} +65 -65
- package/dist/assets/{NcActionLink-7Wp6P-Nk.css → NcActionLink-BtpJIbvI.css} +13 -13
- package/dist/assets/{NcActionRadio-CLsR2Ore.css → NcActionRadio-CLIRNp3t.css} +12 -12
- package/dist/assets/{NcActionRouter-ByijfQtF.css → NcActionRouter-Bpv5Ywxq.css} +16 -16
- package/dist/assets/{NcActionText-CR_yvwWo.css → NcActionText-IMOkntPi.css} +18 -18
- package/dist/assets/{NcActionTextEditable-CCWTiT5c.css → NcActionTextEditable-BCmDMuUg.css} +65 -65
- package/dist/assets/{NcActions-B4-9qwLn.css → NcActions-Dfs69WGA.css} +11 -11
- package/dist/assets/{NcAppContent-BpjG38I8.css → NcAppContent-Ri_iNfn5.css} +4 -4
- package/dist/assets/{NcAppNavigationItem-UaB3qdsS.css → NcAppNavigationItem-DSL2nLRf.css} +36 -36
- package/dist/assets/{NcAppNavigationNewItem-Cjbn5XkO.css → NcAppNavigationNewItem-CYSjj3pD.css} +38 -38
- package/dist/assets/NcAppNavigationSettings-2Wh1E3Hq.css +53 -0
- package/dist/assets/{NcAppSettingsDialog-DH3DIIwL.css → NcAppSettingsDialog-TJ3aaiJI.css} +10 -10
- package/dist/assets/NcAppSettingsSection-Yg4NYCih.css +46 -0
- package/dist/assets/{NcAppSettingsSection-Dq0eTGEp.css → NcAppSettingsShortcutsSection-BuI-s4kd.css} +8 -11
- package/dist/assets/{NcChip-Cc17FJEC.css → NcChip-ByvuZS2-.css} +23 -11
- package/dist/assets/{NcDateTimePicker-C6sMtYzL.css → NcDateTimePicker-uS5WikmF.css} +22 -22
- package/dist/assets/{NcEmptyContent-xdTcF0yQ.css → NcEmptyContent-CUFc_Dds.css} +9 -9
- package/dist/assets/NcFormBox-D-kcijXp.css +54 -0
- package/dist/assets/NcFormBoxButton-C6EvdLK4.css +32 -0
- package/dist/assets/NcFormBoxItem-j2nGdOvd.css +88 -0
- package/dist/assets/NcFormBoxSwitch-BmyNQCbA.css +37 -0
- package/dist/assets/NcFormGroup-BrD0Scm7.css +43 -0
- package/dist/assets/{NcHeaderButton-CeT-dsLr.css → NcHeaderButton-DI-1Gsph.css} +9 -9
- package/dist/assets/{NcHeaderMenu-BXb9npZp.css → NcHeaderMenu-BkpmEa3M.css} +13 -13
- package/dist/assets/NcHotkey-4yi1Hobg.css +45 -0
- package/dist/assets/NcHotkeyList-gAZN0WIu.css +8 -0
- package/dist/assets/{NcInputField-BI3vWgSo.css → NcInputField-CtUAgq1i.css} +42 -42
- package/dist/assets/{NcListItem-rxOwDYE-.css → NcListItem-Czbi1F0Q.css} +44 -44
- package/dist/assets/NcRadioGroup-1zpSX8V5.css +21 -0
- package/dist/assets/{NcRadioGroupButton-6mf16D0h.css → NcRadioGroupButton-DRZ1_-yY.css} +11 -19
- package/dist/assets/{NcRichContenteditable-Ds_cptgr.css → NcRichContenteditable-BjQ4qHUO.css} +12 -12
- package/dist/assets/{NcRichText-CVy4zTPr.css → NcRichText-Cr-HXxVi.css} +93 -88
- package/dist/chunks/{NcActionButton-lJ0IA3IS.cjs → NcActionButton-BWM7FD0z.cjs} +7 -7
- package/dist/chunks/{NcActionButton-lJ0IA3IS.cjs.map → NcActionButton-BWM7FD0z.cjs.map} +1 -1
- package/dist/chunks/{NcActionButton-CZsSFAT4.mjs → NcActionButton-DykQxmXJ.mjs} +7 -7
- package/dist/chunks/{NcActionButton-CZsSFAT4.mjs.map → NcActionButton-DykQxmXJ.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-CQZL14Nz.cjs → NcActionButtonGroup-Bqp4vRGy.cjs} +3 -3
- package/dist/chunks/{NcActionButtonGroup-CQZL14Nz.cjs.map → NcActionButtonGroup-Bqp4vRGy.cjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-CIvAeDpU.mjs → NcActionButtonGroup-Uol_nwut.mjs} +3 -3
- package/dist/chunks/{NcActionButtonGroup-CIvAeDpU.mjs.map → NcActionButtonGroup-Uol_nwut.mjs.map} +1 -1
- package/dist/chunks/{NcActionCheckbox-BAuN4ZMC.mjs → NcActionCheckbox-D9aQuEYw.mjs} +4 -4
- package/dist/chunks/{NcActionCheckbox-BAuN4ZMC.mjs.map → NcActionCheckbox-D9aQuEYw.mjs.map} +1 -1
- package/dist/chunks/{NcActionCheckbox-BvMmq0jL.cjs → NcActionCheckbox-ixZtnZR4.cjs} +4 -4
- package/dist/chunks/{NcActionCheckbox-BvMmq0jL.cjs.map → NcActionCheckbox-ixZtnZR4.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-DfjLV0Gg.cjs → NcActionInput-BZGP5m4T.cjs} +10 -10
- package/dist/chunks/{NcActionInput-DfjLV0Gg.cjs.map → NcActionInput-BZGP5m4T.cjs.map} +1 -1
- package/dist/chunks/{NcActionInput-CfznemNH.mjs → NcActionInput-pjhToEAw.mjs} +10 -10
- package/dist/chunks/{NcActionInput-CfznemNH.mjs.map → NcActionInput-pjhToEAw.mjs.map} +1 -1
- package/dist/chunks/{NcActionRadio-Bg5VuF7I.mjs → NcActionRadio-BmVR-lhZ.mjs} +4 -4
- package/dist/chunks/{NcActionRadio-CBh6AlC4.cjs.map → NcActionRadio-BmVR-lhZ.mjs.map} +1 -1
- package/dist/chunks/{NcActionRadio-CBh6AlC4.cjs → NcActionRadio-DPF0_wH9.cjs} +4 -4
- package/dist/chunks/{NcActionRadio-Bg5VuF7I.mjs.map → NcActionRadio-DPF0_wH9.cjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-CSP4OjpU.mjs → NcActionTextEditable-Bnt0-S7Y.mjs} +8 -8
- package/dist/chunks/{NcActionTextEditable-CSP4OjpU.mjs.map → NcActionTextEditable-Bnt0-S7Y.mjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-BhucWrOO.cjs → NcActionTextEditable-JAg35gIb.cjs} +8 -8
- package/dist/chunks/NcActionTextEditable-JAg35gIb.cjs.map +1 -0
- package/dist/chunks/{NcActions-A918mfXE.mjs → NcActions-CpdT2y6O.mjs} +91 -111
- package/dist/chunks/NcActions-CpdT2y6O.mjs.map +1 -0
- package/dist/chunks/{NcActions-D3N_As6c.cjs → NcActions-ykoV9rRj.cjs} +90 -110
- package/dist/chunks/NcActions-ykoV9rRj.cjs.map +1 -0
- package/dist/chunks/{NcAppContent-DFlcxER-.mjs → NcAppContent-CABHzKrx.mjs} +24 -25
- package/dist/chunks/NcAppContent-CABHzKrx.mjs.map +1 -0
- package/dist/chunks/{NcAppContent-CCyPMvUa.cjs → NcAppContent-D2h4xrfv.cjs} +24 -25
- package/dist/chunks/NcAppContent-D2h4xrfv.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigation-CLF6-i2t.mjs → NcAppNavigation-BKgpMjQN.mjs} +4 -5
- package/dist/chunks/{NcAppNavigation-CLF6-i2t.mjs.map → NcAppNavigation-BKgpMjQN.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-CCHYn0D6.cjs → NcAppNavigation-D_pDitZ1.cjs} +4 -5
- package/dist/chunks/{NcAppNavigation-CCHYn0D6.cjs.map → NcAppNavigation-D_pDitZ1.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-DhW300oH.cjs → NcAppNavigationCaption-CO99po3G.cjs} +3 -3
- package/dist/chunks/{NcAppNavigationCaption-DhW300oH.cjs.map → NcAppNavigationCaption-CO99po3G.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-CsG8P-1P.mjs → NcAppNavigationCaption-CcWZR8rN.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationCaption-CsG8P-1P.mjs.map → NcAppNavigationCaption-CcWZR8rN.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-CwuKVEUN.mjs → NcAppNavigationItem-BYWvtSRw.mjs} +10 -10
- package/dist/chunks/{NcAppNavigationItem-HZVy5JEa.cjs.map → NcAppNavigationItem-BYWvtSRw.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-HZVy5JEa.cjs → NcAppNavigationItem-Ca9CAehR.cjs} +10 -10
- package/dist/chunks/{NcAppNavigationItem-CwuKVEUN.mjs.map → NcAppNavigationItem-Ca9CAehR.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-DbqusDUV.mjs → NcAppNavigationNew-BHzvRlVc.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationNew-DbqusDUV.mjs.map → NcAppNavigationNew-BHzvRlVc.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-T56pahiu.cjs → NcAppNavigationNew-BYvFykgl.cjs} +2 -2
- package/dist/chunks/{NcAppNavigationNew-T56pahiu.cjs.map → NcAppNavigationNew-BYvFykgl.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-DMRZwa_y.cjs → NcAppNavigationNewItem-CwhxGiXO.cjs} +4 -4
- package/dist/chunks/{NcAppNavigationNewItem-DMRZwa_y.cjs.map → NcAppNavigationNewItem-CwhxGiXO.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-BsnZWCLW.mjs → NcAppNavigationNewItem-DUNLtTs8.mjs} +4 -4
- package/dist/chunks/{NcAppNavigationNewItem-BsnZWCLW.mjs.map → NcAppNavigationNewItem-DUNLtTs8.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-BlG1xMok.cjs → NcAppNavigationSearch-BC3LfUdL.cjs} +6 -10
- package/dist/chunks/{NcAppNavigationSearch-BlG1xMok.cjs.map → NcAppNavigationSearch-BC3LfUdL.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-DCMN2cWp.mjs → NcAppNavigationSearch-Ci8jz_C2.mjs} +6 -10
- package/dist/chunks/{NcAppNavigationSearch-DCMN2cWp.mjs.map → NcAppNavigationSearch-Ci8jz_C2.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-n8OaxTbE.mjs → NcAppNavigationSettings-B29zrNPr.mjs} +18 -12
- package/dist/chunks/NcAppNavigationSettings-B29zrNPr.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationSettings-DlIDzhxh.cjs → NcAppNavigationSettings-Dt15jIbU.cjs} +18 -12
- package/dist/chunks/NcAppNavigationSettings-Dt15jIbU.cjs.map +1 -0
- package/dist/chunks/{NcAppNavigationToggle-Cn1UvxNP.cjs → NcAppNavigationToggle-Bk99wJ65.cjs} +13 -14
- package/dist/chunks/{NcAppNavigationToggle-Cn1UvxNP.cjs.map → NcAppNavigationToggle-Bk99wJ65.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-ClYKr8Zn.mjs → NcAppNavigationToggle-DtNWDe9v.mjs} +13 -14
- package/dist/chunks/{NcAppNavigationToggle-ClYKr8Zn.mjs.map → NcAppNavigationToggle-DtNWDe9v.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-R6Y-tl6d.cjs → NcAppSettingsDialog-C1mtjsnj.cjs} +30 -30
- package/dist/chunks/NcAppSettingsDialog-C1mtjsnj.cjs.map +1 -0
- package/dist/chunks/{NcAppSettingsDialog-Cpjr8Tca.mjs → NcAppSettingsDialog-CF-oMoP_.mjs} +32 -32
- package/dist/chunks/NcAppSettingsDialog-CF-oMoP_.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsSection-Cq1VIzMR.mjs +55 -0
- package/dist/chunks/NcAppSettingsSection-Cq1VIzMR.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsSection-Q5PB51ht.cjs +54 -0
- package/dist/chunks/NcAppSettingsSection-Q5PB51ht.cjs.map +1 -0
- package/dist/chunks/NcAppSettingsShortcutsSection-C089rPL6.mjs +43 -0
- package/dist/chunks/NcAppSettingsShortcutsSection-C089rPL6.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsShortcutsSection-DG3FQlb5.cjs +42 -0
- package/dist/chunks/NcAppSettingsShortcutsSection-DG3FQlb5.cjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-CVcOP4bk.mjs → NcAppSidebar-D5IUeKjd.mjs} +15 -18
- package/dist/chunks/{NcAppSidebar-CVcOP4bk.mjs.map → NcAppSidebar-D5IUeKjd.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-Ddt82bsA.cjs → NcAppSidebar-DwLrcwGi.cjs} +15 -18
- package/dist/chunks/{NcAppSidebar-Ddt82bsA.cjs.map → NcAppSidebar-DwLrcwGi.cjs.map} +1 -1
- package/dist/chunks/{NcAssistantButton-WQvWhoAr.cjs → NcAssistantButton-DrYpawyR.cjs} +5 -5
- package/dist/chunks/{NcAssistantButton-WQvWhoAr.cjs.map → NcAssistantButton-DrYpawyR.cjs.map} +1 -1
- package/dist/chunks/{NcAssistantButton-lDdWOemf.mjs → NcAssistantButton-lRXTGAwe.mjs} +5 -5
- package/dist/chunks/{NcAssistantButton-lDdWOemf.mjs.map → NcAssistantButton-lRXTGAwe.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-BTjYuSQ9.mjs → NcAssistantIcon-B9L1Ih5x.mjs} +5 -5
- package/dist/chunks/{NcAssistantIcon-BTjYuSQ9.mjs.map → NcAssistantIcon-B9L1Ih5x.mjs.map} +1 -1
- package/dist/chunks/{NcAssistantIcon-RDQ8YhZE.cjs → NcAssistantIcon-jHDGZ_Bd.cjs} +5 -5
- package/dist/chunks/{NcAssistantIcon-RDQ8YhZE.cjs.map → NcAssistantIcon-jHDGZ_Bd.cjs.map} +1 -1
- package/dist/chunks/{NcAvatar-D_0Aw88L.cjs → NcAvatar-BXRgjNXy.cjs} +23 -25
- package/dist/chunks/{NcAvatar-D_0Aw88L.cjs.map → NcAvatar-BXRgjNXy.cjs.map} +1 -1
- package/dist/chunks/{NcAvatar-Cupl4prm.mjs → NcAvatar-D5nljVEA.mjs} +23 -25
- package/dist/chunks/{NcAvatar-Cupl4prm.mjs.map → NcAvatar-D5nljVEA.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-VJGW992x.mjs → NcBreadcrumb-BC6tmZfd.mjs} +6 -22
- package/dist/chunks/{NcBreadcrumb-VJGW992x.mjs.map → NcBreadcrumb-BC6tmZfd.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-FbePEaGS.cjs → NcBreadcrumb-DCq7akG2.cjs} +6 -22
- package/dist/chunks/{NcBreadcrumb-FbePEaGS.cjs.map → NcBreadcrumb-DCq7akG2.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-CrNBCyUa.cjs → NcBreadcrumbs-7dWiGWqj.cjs} +29 -47
- package/dist/chunks/{NcBreadcrumbs-DJSAcn8x.mjs.map → NcBreadcrumbs-7dWiGWqj.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-DJSAcn8x.mjs → NcBreadcrumbs-BPfsSByZ.mjs} +29 -47
- package/dist/chunks/{NcBreadcrumbs-CrNBCyUa.cjs.map → NcBreadcrumbs-BPfsSByZ.mjs.map} +1 -1
- package/dist/chunks/{NcButton-DK7bNZIL.cjs → NcButton-CJBZrdiL.cjs} +18 -33
- package/dist/chunks/{NcButton-D3CaJu1f.mjs.map → NcButton-CJBZrdiL.cjs.map} +1 -1
- package/dist/chunks/{NcButton-D3CaJu1f.mjs → NcButton-DUZTtFhr.mjs} +18 -33
- package/dist/chunks/{NcButton-DK7bNZIL.cjs.map → NcButton-DUZTtFhr.mjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-CDFUoj2J.cjs → NcCheckboxRadioSwitch-CC2UI0kG.cjs} +8 -8
- package/dist/chunks/{NcCheckboxRadioSwitch-CDFUoj2J.cjs.map → NcCheckboxRadioSwitch-CC2UI0kG.cjs.map} +1 -1
- package/dist/chunks/{NcCheckboxRadioSwitch-ezquUuPz.mjs → NcCheckboxRadioSwitch-DAPHFb0L.mjs} +8 -8
- package/dist/chunks/{NcCheckboxRadioSwitch-ezquUuPz.mjs.map → NcCheckboxRadioSwitch-DAPHFb0L.mjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-w-7M5HGN.mjs → NcCollectionList-B9weMM0Q.mjs} +8 -9
- package/dist/chunks/{NcCollectionList-w-7M5HGN.mjs.map → NcCollectionList-B9weMM0Q.mjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-zAI6Ysc0.cjs → NcCollectionList-DSugNziH.cjs} +8 -9
- package/dist/chunks/{NcCollectionList-zAI6Ysc0.cjs.map → NcCollectionList-DSugNziH.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-F-UP8OaJ.cjs → NcColorPicker-Chrtrp3i.cjs} +16 -36
- package/dist/chunks/{NcColorPicker-F-UP8OaJ.cjs.map → NcColorPicker-Chrtrp3i.cjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-DpLU-oKM.mjs → NcColorPicker-DVkGUHxL.mjs} +16 -36
- package/dist/chunks/{NcColorPicker-DpLU-oKM.mjs.map → NcColorPicker-DVkGUHxL.mjs.map} +1 -1
- package/dist/chunks/{NcContent-C0_AA_wt.mjs → NcContent-BPmE93Mq.mjs} +6 -6
- package/dist/chunks/{NcContent-C0_AA_wt.mjs.map → NcContent-BPmE93Mq.mjs.map} +1 -1
- package/dist/chunks/{NcContent-DITvuNbF.cjs → NcContent-UoMpCfT3.cjs} +6 -6
- package/dist/chunks/{NcContent-DITvuNbF.cjs.map → NcContent-UoMpCfT3.cjs.map} +1 -1
- package/dist/chunks/{NcCounterBubble-B_H3NCef.cjs → NcCounterBubble-hyvazclA.cjs} +4 -6
- package/dist/chunks/{NcCounterBubble-B_H3NCef.cjs.map → NcCounterBubble-hyvazclA.cjs.map} +1 -1
- package/dist/chunks/{NcCounterBubble-BKPpoBiy.mjs → NcCounterBubble-oxV8oMlX.mjs} +4 -6
- package/dist/chunks/{NcCounterBubble-BKPpoBiy.mjs.map → NcCounterBubble-oxV8oMlX.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-CEL-DhKX.mjs → NcDashboardWidget-DpzjksBk.mjs} +5 -5
- package/dist/chunks/{NcDashboardWidget-CEL-DhKX.mjs.map → NcDashboardWidget-DpzjksBk.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget--n1nzfhg.cjs → NcDashboardWidget-k5_NmYYZ.cjs} +5 -5
- package/dist/chunks/{NcDashboardWidget--n1nzfhg.cjs.map → NcDashboardWidget-k5_NmYYZ.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-loanO02A.cjs → NcDashboardWidgetItem-CeA1eF60.cjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-loanO02A.cjs.map → NcDashboardWidgetItem-CeA1eF60.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-DeQtScn8.mjs → NcDashboardWidgetItem-DZ13sBtT.mjs} +4 -4
- package/dist/chunks/{NcDashboardWidgetItem-DeQtScn8.mjs.map → NcDashboardWidgetItem-DZ13sBtT.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-BM_wTqUn.mjs → NcDialog-DDuqQeT-.mjs} +3 -3
- package/dist/chunks/{NcDialog-BM_wTqUn.mjs.map → NcDialog-DDuqQeT-.mjs.map} +1 -1
- package/dist/chunks/{NcDialog-CG2sufkb.cjs → NcDialog-DUTlKw4_.cjs} +3 -3
- package/dist/chunks/{NcDialog-CG2sufkb.cjs.map → NcDialog-DUTlKw4_.cjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-DkfxsIhv.cjs → NcDialogButton-DyWjiA1e.cjs} +6 -7
- package/dist/chunks/{NcDialogButton-DkfxsIhv.cjs.map → NcDialogButton-DyWjiA1e.cjs.map} +1 -1
- package/dist/chunks/{NcDialogButton-Cr0wVMne.mjs → NcDialogButton-P7Ryycqk.mjs} +6 -7
- package/dist/chunks/{NcDialogButton-Cr0wVMne.mjs.map → NcDialogButton-P7Ryycqk.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-BV_iVlIv.mjs → NcEmojiPicker-CpU37Ozq.mjs} +12 -13
- package/dist/chunks/{NcEmojiPicker-BV_iVlIv.mjs.map → NcEmojiPicker-CpU37Ozq.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-fgsuVz7X.cjs → NcEmojiPicker-D8d4iUUn.cjs} +12 -13
- package/dist/chunks/{NcEmojiPicker-fgsuVz7X.cjs.map → NcEmojiPicker-D8d4iUUn.cjs.map} +1 -1
- package/dist/chunks/NcFormBox-DL435pbV.mjs +56 -0
- package/dist/chunks/NcFormBox-DL435pbV.mjs.map +1 -0
- package/dist/chunks/NcFormBox-_JqkU_xn.cjs +55 -0
- package/dist/chunks/NcFormBox-_JqkU_xn.cjs.map +1 -0
- package/dist/chunks/NcFormBoxButton-D-s5mL0c.cjs +137 -0
- package/dist/chunks/NcFormBoxButton-D-s5mL0c.cjs.map +1 -0
- package/dist/chunks/NcFormBoxButton-DN0-J4yN.mjs +138 -0
- package/dist/chunks/NcFormBoxButton-DN0-J4yN.mjs.map +1 -0
- package/dist/chunks/NcFormBoxCopyButton-CTHelPkb.cjs +76 -0
- package/dist/chunks/NcFormBoxCopyButton-CTHelPkb.cjs.map +1 -0
- package/dist/chunks/NcFormBoxCopyButton-Dwrfiovz.mjs +77 -0
- package/dist/chunks/NcFormBoxCopyButton-Dwrfiovz.mjs.map +1 -0
- package/dist/chunks/NcFormBoxItem-CtrbGjnv.cjs +86 -0
- package/dist/chunks/NcFormBoxItem-CtrbGjnv.cjs.map +1 -0
- package/dist/chunks/NcFormBoxItem-DPBm3ZbJ.mjs +87 -0
- package/dist/chunks/NcFormBoxItem-DPBm3ZbJ.mjs.map +1 -0
- package/dist/chunks/NcFormBoxSwitch-CM3WaFkA.cjs +96 -0
- package/dist/chunks/NcFormBoxSwitch-CM3WaFkA.cjs.map +1 -0
- package/dist/chunks/NcFormBoxSwitch-aOCNeI-K.mjs +97 -0
- package/dist/chunks/NcFormBoxSwitch-aOCNeI-K.mjs.map +1 -0
- package/dist/chunks/NcFormGroup-BfsPo9aC.mjs +69 -0
- package/dist/chunks/NcFormGroup-BfsPo9aC.mjs.map +1 -0
- package/dist/chunks/NcFormGroup-CBMl_9_J.cjs +68 -0
- package/dist/chunks/NcFormGroup-CBMl_9_J.cjs.map +1 -0
- package/dist/chunks/{NcHeaderButton-CNQVz4QP.cjs → NcHeaderButton-6kuTEKbj.cjs} +4 -4
- package/dist/chunks/{NcHeaderButton-CNQVz4QP.cjs.map → NcHeaderButton-6kuTEKbj.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderButton-TJML067P.mjs → NcHeaderButton-TgPjfPtk.mjs} +4 -4
- package/dist/chunks/{NcHeaderButton-TJML067P.mjs.map → NcHeaderButton-TgPjfPtk.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-BzyFhg55.cjs → NcHeaderMenu-CwjH_j0c.cjs} +10 -12
- package/dist/chunks/{NcHeaderMenu-D5ddiKnF.mjs.map → NcHeaderMenu-CwjH_j0c.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-D5ddiKnF.mjs → NcHeaderMenu-Hk8OTuma.mjs} +10 -12
- package/dist/chunks/{NcHeaderMenu-BzyFhg55.cjs.map → NcHeaderMenu-Hk8OTuma.mjs.map} +1 -1
- package/dist/chunks/NcHotkey-BMemJWSu.cjs +59 -0
- package/dist/chunks/NcHotkey-BMemJWSu.cjs.map +1 -0
- package/dist/chunks/NcHotkey-CzuMmIU9.mjs +60 -0
- package/dist/chunks/NcHotkey-CzuMmIU9.mjs.map +1 -0
- package/dist/chunks/NcHotkeyList-Bm25Odp7.mjs +48 -0
- package/dist/chunks/NcHotkeyList-Bm25Odp7.mjs.map +1 -0
- package/dist/chunks/NcHotkeyList-DAJkKYNu.cjs +47 -0
- package/dist/chunks/NcHotkeyList-DAJkKYNu.cjs.map +1 -0
- package/dist/chunks/{NcIconSvgWrapper-BCVwmZN2.mjs → NcIconSvgWrapper-BreCg8pX.mjs} +2 -2
- package/dist/chunks/{NcIconSvgWrapper-BCVwmZN2.mjs.map → NcIconSvgWrapper-BreCg8pX.mjs.map} +1 -1
- package/dist/chunks/{NcIconSvgWrapper-DoVPfeNg.cjs → NcIconSvgWrapper-D-aKMbf3.cjs} +2 -2
- package/dist/chunks/{NcIconSvgWrapper-DoVPfeNg.cjs.map → NcIconSvgWrapper-D-aKMbf3.cjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-C8WnMK2V.mjs → NcInputConfirmCancel-CtdWwDCo.mjs} +3 -3
- package/dist/chunks/{NcInputConfirmCancel-C8WnMK2V.mjs.map → NcInputConfirmCancel-CtdWwDCo.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-DVVTaxWi.cjs → NcInputConfirmCancel-vqVq5qKL.cjs} +3 -3
- package/dist/chunks/{NcInputConfirmCancel-DVVTaxWi.cjs.map → NcInputConfirmCancel-vqVq5qKL.cjs.map} +1 -1
- package/dist/chunks/{NcInputField-LBv3nCrt.cjs → NcInputField-DAllLk3X.cjs} +12 -16
- package/dist/chunks/NcInputField-DAllLk3X.cjs.map +1 -0
- package/dist/chunks/{NcInputField-1ujONIvp.mjs → NcInputField-DUtDY_1I.mjs} +12 -16
- package/dist/chunks/NcInputField-DUtDY_1I.mjs.map +1 -0
- package/dist/chunks/NcKbd-CfVfr9CW.mjs +66 -0
- package/dist/chunks/NcKbd-CfVfr9CW.mjs.map +1 -0
- package/dist/chunks/NcKbd-ewuqi-PO.cjs +65 -0
- package/dist/chunks/NcKbd-ewuqi-PO.cjs.map +1 -0
- package/dist/chunks/{NcListItem-DNMfT12A.mjs → NcListItem-BommrKRB.mjs} +10 -12
- package/dist/chunks/{NcListItem-DNMfT12A.mjs.map → NcListItem-BommrKRB.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-DFEvD1TA.cjs → NcListItem-DaRnEXN5.cjs} +10 -12
- package/dist/chunks/{NcListItem-DFEvD1TA.cjs.map → NcListItem-DaRnEXN5.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-OzD38-2R.cjs → NcListItemIcon-2L14AYM5.cjs} +5 -6
- package/dist/chunks/{NcListItemIcon-OzD38-2R.cjs.map → NcListItemIcon-2L14AYM5.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-PNp6Wael.mjs → NcListItemIcon-DT7XMp5c.mjs} +5 -6
- package/dist/chunks/{NcListItemIcon-PNp6Wael.mjs.map → NcListItemIcon-DT7XMp5c.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-D2iDTTpp.mjs → NcPasswordField-B91RnUSh.mjs} +17 -30
- package/dist/chunks/{NcPasswordField-D2iDTTpp.mjs.map → NcPasswordField-B91RnUSh.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-lqTDeja4.cjs → NcPasswordField-BO0hL-T4.cjs} +17 -30
- package/dist/chunks/{NcPasswordField-lqTDeja4.cjs.map → NcPasswordField-BO0hL-T4.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-DrXnNOgM.cjs → NcPopover-BgUZkmjk.cjs} +8 -12
- package/dist/chunks/{NcPopover-nzbq2IjT.mjs.map → NcPopover-BgUZkmjk.cjs.map} +1 -1
- package/dist/chunks/{NcPopover-nzbq2IjT.mjs → NcPopover-gxcAqoEb.mjs} +8 -12
- package/dist/chunks/{NcPopover-DrXnNOgM.cjs.map → NcPopover-gxcAqoEb.mjs.map} +1 -1
- package/dist/chunks/{NcProgressBar-BwnuvxiZ.mjs → NcProgressBar-D7zYeXBH.mjs} +2 -2
- package/dist/chunks/{NcProgressBar-BwnuvxiZ.mjs.map → NcProgressBar-D7zYeXBH.mjs.map} +1 -1
- package/dist/chunks/{NcProgressBar-D10gQgAY.cjs → NcProgressBar-DvxA9bq5.cjs} +2 -2
- package/dist/chunks/{NcProgressBar-D10gQgAY.cjs.map → NcProgressBar-DvxA9bq5.cjs.map} +1 -1
- package/dist/chunks/NcRadioGroup-D0rC63G8.mjs +74 -0
- package/dist/chunks/NcRadioGroup-D0rC63G8.mjs.map +1 -0
- package/dist/chunks/NcRadioGroup-D59En1O3.cjs +75 -0
- package/dist/chunks/NcRadioGroup-D59En1O3.cjs.map +1 -0
- package/dist/chunks/NcRadioGroupButton-3Pu4Iqdf.mjs +65 -0
- package/dist/chunks/NcRadioGroupButton-3Pu4Iqdf.mjs.map +1 -0
- package/dist/chunks/{NcRadioGroupButton-CDf_01-t.cjs → NcRadioGroupButton-DoOf7cE1.cjs} +13 -11
- package/dist/chunks/NcRadioGroupButton-DoOf7cE1.cjs.map +1 -0
- package/dist/chunks/{NcRelatedResourcesPanel-bfv-6W_Z.cjs → NcRelatedResourcesPanel-CpXbcI3f.cjs} +35 -44
- package/dist/chunks/{NcRelatedResourcesPanel-bfv-6W_Z.cjs.map → NcRelatedResourcesPanel-CpXbcI3f.cjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-Q6jZk-Pm.mjs → NcRelatedResourcesPanel-D9-wo_xr.mjs} +35 -44
- package/dist/chunks/{NcRelatedResourcesPanel-Q6jZk-Pm.mjs.map → NcRelatedResourcesPanel-D9-wo_xr.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-8_poOeSx.mjs → NcRichContenteditable-BQNR-AeA.mjs} +35 -54
- package/dist/chunks/{NcRichContenteditable-CtLNSs0S.cjs.map → NcRichContenteditable-BQNR-AeA.mjs.map} +1 -1
- package/dist/chunks/{NcRichContenteditable-CtLNSs0S.cjs → NcRichContenteditable-DsWbC4ZK.cjs} +35 -54
- package/dist/chunks/{NcRichContenteditable-8_poOeSx.mjs.map → NcRichContenteditable-DsWbC4ZK.cjs.map} +1 -1
- package/dist/chunks/{NcRichText-Dnx5x9WS.mjs → NcRichText-BfK6Ybyf.mjs} +123 -113
- package/dist/chunks/{NcRichText-CEsiozf5.cjs.map → NcRichText-BfK6Ybyf.mjs.map} +1 -1
- package/dist/chunks/{NcRichText-CEsiozf5.cjs → NcRichText-CSFIswpI.cjs} +123 -111
- package/dist/chunks/{NcRichText-Dnx5x9WS.mjs.map → NcRichText-CSFIswpI.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-bo6wla87.cjs → NcSelect-CgLK3i8n.cjs} +25 -42
- package/dist/chunks/{NcSelect-bo6wla87.cjs.map → NcSelect-CgLK3i8n.cjs.map} +1 -1
- package/dist/chunks/{NcSelect-TjZw7TJ_.mjs → NcSelect-DTniMiUS.mjs} +25 -42
- package/dist/chunks/{NcSelect-TjZw7TJ_.mjs.map → NcSelect-DTniMiUS.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-CytnLDOw.mjs → NcSelectTags-CktuFsK3.mjs} +28 -49
- package/dist/chunks/{NcSelectTags-D2OSaAfO.cjs.map → NcSelectTags-CktuFsK3.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-D2OSaAfO.cjs → NcSelectTags-DRotL4u-.cjs} +28 -49
- package/dist/chunks/{NcSelectTags-CytnLDOw.mjs.map → NcSelectTags-DRotL4u-.cjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-Bm0877Tm.mjs → NcSelectUsers-RyUVUaWQ.mjs} +7 -8
- package/dist/chunks/{NcSelectUsers-Bm0877Tm.mjs.map → NcSelectUsers-RyUVUaWQ.mjs.map} +1 -1
- package/dist/chunks/{NcSelectUsers-wcRyExkC.cjs → NcSelectUsers-Vy7qpE1b.cjs} +7 -8
- package/dist/chunks/{NcSelectUsers-wcRyExkC.cjs.map → NcSelectUsers-Vy7qpE1b.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-DaFMiOS6.cjs → NcSettingsInputText-DJ1lsJ-4.cjs} +4 -4
- package/dist/chunks/{NcSettingsInputText-DaFMiOS6.cjs.map → NcSettingsInputText-DJ1lsJ-4.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-DPAtsY2T.mjs → NcSettingsInputText-Dtr4Rn2b.mjs} +4 -4
- package/dist/chunks/{NcSettingsInputText-DPAtsY2T.mjs.map → NcSettingsInputText-Dtr4Rn2b.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-CX5q924g.mjs → NcSettingsSection-BniKad1K.mjs} +4 -5
- package/dist/chunks/{NcSettingsSection-CX5q924g.mjs.map → NcSettingsSection-BniKad1K.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-r4NOxKIz.cjs → NcSettingsSection-DGoocV82.cjs} +4 -5
- package/dist/chunks/{NcSettingsSection-r4NOxKIz.cjs.map → NcSettingsSection-DGoocV82.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-CR4XLrgs.mjs → NcSettingsSelectGroup-D4_09H0F.mjs} +10 -26
- package/dist/chunks/{NcSettingsSelectGroup-CR4XLrgs.mjs.map → NcSettingsSelectGroup-D4_09H0F.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-DYYAPkgp.cjs → NcSettingsSelectGroup-DRp_BpNb.cjs} +10 -26
- package/dist/chunks/{NcSettingsSelectGroup-DYYAPkgp.cjs.map → NcSettingsSelectGroup-DRp_BpNb.cjs.map} +1 -1
- package/dist/chunks/{NcTextArea-If_ygOSv.mjs → NcTextArea-DHmD6-6s.mjs} +5 -5
- package/dist/chunks/{NcTextArea-If_ygOSv.mjs.map → NcTextArea-DHmD6-6s.mjs.map} +1 -1
- package/dist/chunks/{NcTextArea-iDhGI-Ko.cjs → NcTextArea-DkVtHTpD.cjs} +5 -5
- package/dist/chunks/{NcTextArea-iDhGI-Ko.cjs.map → NcTextArea-DkVtHTpD.cjs.map} +1 -1
- package/dist/chunks/{NcTextField-BE9R1pLt.mjs → NcTextField-CfZknuqx.mjs} +18 -32
- package/dist/chunks/{NcTextField-BE9R1pLt.mjs.map → NcTextField-CfZknuqx.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-OPiMgNR7.cjs → NcTextField-YOwuZ0wq.cjs} +18 -32
- package/dist/chunks/{NcTextField-OPiMgNR7.cjs.map → NcTextField-YOwuZ0wq.cjs.map} +1 -1
- package/dist/chunks/{NcThemeProvider-E_S5rhIQ.mjs → NcThemeProvider-25ResoIv.mjs} +2 -2
- package/dist/chunks/{NcThemeProvider-E_S5rhIQ.mjs.map → NcThemeProvider-25ResoIv.mjs.map} +1 -1
- package/dist/chunks/{NcThemeProvider-DbNRSwkX.cjs → NcThemeProvider-BqGPTeWg.cjs} +2 -2
- package/dist/chunks/{NcThemeProvider-DbNRSwkX.cjs.map → NcThemeProvider-BqGPTeWg.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-DPpWz5fa.cjs → NcTimezonePicker-CuJzNsPZ.cjs} +7 -7
- package/dist/chunks/{NcTimezonePicker-DPpWz5fa.cjs.map → NcTimezonePicker-CuJzNsPZ.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-D4y736xC.mjs → NcTimezonePicker-DgoDpdHS.mjs} +7 -7
- package/dist/chunks/{NcTimezonePicker-D4y736xC.mjs.map → NcTimezonePicker-DgoDpdHS.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-Bb9WBP1S.cjs → NcUserBubble-DwJgtybL.cjs} +6 -7
- package/dist/chunks/{NcUserBubble-Bb9WBP1S.cjs.map → NcUserBubble-DwJgtybL.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-8Mts76ii.mjs → NcUserBubble-VLY4hn5K.mjs} +6 -7
- package/dist/chunks/{NcUserBubble-8Mts76ii.mjs.map → NcUserBubble-VLY4hn5K.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-BWxo_etm.mjs → NcUserStatusIcon-D_kxQky5.mjs} +9 -12
- package/dist/chunks/{NcUserStatusIcon-BWxo_etm.mjs.map → NcUserStatusIcon-D_kxQky5.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-DV2H-KfR.cjs → NcUserStatusIcon-DaYZfl2J.cjs} +9 -12
- package/dist/chunks/{NcUserStatusIcon-DV2H-KfR.cjs.map → NcUserStatusIcon-DaYZfl2J.cjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-DsONbC6w.mjs → ScopeComponent-B4ZR5mwH.mjs} +2 -2
- package/dist/chunks/{ScopeComponent-DsONbC6w.mjs.map → ScopeComponent-B4ZR5mwH.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CDX-s-IV.cjs → ScopeComponent-B59v3zbZ.cjs} +2 -2
- package/dist/chunks/{ScopeComponent-CDX-s-IV.cjs.map → ScopeComponent-B59v3zbZ.cjs.map} +1 -1
- package/dist/chunks/{_l10n-9b4TMo5Q.cjs → _l10n-B4clLGwo.cjs} +32 -32
- package/dist/chunks/{_l10n-9b4TMo5Q.cjs.map → _l10n-B4clLGwo.cjs.map} +1 -1
- package/dist/chunks/{_l10n-DSLCwJSN.mjs → _l10n-BmKQgz1z.mjs} +59 -59
- package/dist/chunks/_l10n-BmKQgz1z.mjs.map +1 -0
- package/dist/chunks/{actionText-ZM1k96ts.mjs → actionText-BMig9Egt.mjs} +2 -2
- package/dist/chunks/{actionText-ZM1k96ts.mjs.map → actionText-BMig9Egt.mjs.map} +1 -1
- package/dist/chunks/{actionText-D_3-6fCH.cjs → actionText-D2-z0ud3.cjs} +2 -2
- package/dist/chunks/{actionText-D_3-6fCH.cjs.map → actionText-D2-z0ud3.cjs.map} +1 -1
- package/dist/chunks/{colors-BMiIMYXK.mjs → colors-BwQwSDJi.mjs} +4 -4
- package/dist/chunks/{colors-BMiIMYXK.mjs.map → colors-BwQwSDJi.mjs.map} +1 -1
- package/dist/chunks/{colors-DcbJ13is.cjs → colors-FtmuYvMf.cjs} +4 -4
- package/dist/chunks/{colors-DcbJ13is.cjs.map → colors-FtmuYvMf.cjs.map} +1 -1
- package/dist/chunks/createElementId-DhjFt1I9.mjs +8 -0
- package/dist/chunks/{createElementId-5skgwxOP.mjs.map → createElementId-DhjFt1I9.mjs.map} +1 -1
- package/dist/chunks/createElementId-lalylSCf.cjs +7 -0
- package/dist/chunks/{createElementId-DaJhnLzq.cjs.map → createElementId-lalylSCf.cjs.map} +1 -1
- package/dist/chunks/{customPickerElements-BPROmh4T.mjs → customPickerElements-DLFtgReB.mjs} +21 -43
- package/dist/chunks/{customPickerElements-BPROmh4T.mjs.map → customPickerElements-DLFtgReB.mjs.map} +1 -1
- package/dist/chunks/{customPickerElements-DBEOrbce.cjs → customPickerElements-GyIIOHiQ.cjs} +21 -43
- package/dist/chunks/{customPickerElements-DBEOrbce.cjs.map → customPickerElements-GyIIOHiQ.cjs.map} +1 -1
- package/dist/chunks/{emoji-V6ytyzoR.mjs → emoji-BY_D0V5K.mjs} +3 -4
- package/dist/chunks/{emoji-V6ytyzoR.mjs.map → emoji-BY_D0V5K.mjs.map} +1 -1
- package/dist/chunks/{emoji-BCCCB3t3.cjs → emoji-VgSjNTd5.cjs} +3 -4
- package/dist/chunks/{emoji-BCCCB3t3.cjs.map → emoji-VgSjNTd5.cjs.map} +1 -1
- package/dist/chunks/{focusTrap-DhhUL4JZ.cjs → focusTrap-DUTqW_IG.cjs} +2 -3
- package/dist/chunks/{focusTrap-BibOtksr.mjs.map → focusTrap-DUTqW_IG.cjs.map} +1 -1
- package/dist/chunks/{focusTrap-BibOtksr.mjs → focusTrap-HJQ4pqHV.mjs} +2 -3
- package/dist/chunks/{focusTrap-DhhUL4JZ.cjs.map → focusTrap-HJQ4pqHV.mjs.map} +1 -1
- package/dist/chunks/getAvatarUrl-Du9Y3cPO.cjs +14 -0
- package/dist/chunks/{getAvatarUrl-DwWyuiUZ.cjs.map → getAvatarUrl-Du9Y3cPO.cjs.map} +1 -1
- package/dist/chunks/getAvatarUrl-IhLacDEr.mjs +15 -0
- package/dist/chunks/{getAvatarUrl-C8Q41hfR.mjs.map → getAvatarUrl-IhLacDEr.mjs.map} +1 -1
- package/dist/chunks/{index-D_jGr37E.cjs → index-CgkN1xho.cjs} +9 -9
- package/dist/chunks/{index-D_jGr37E.cjs.map → index-CgkN1xho.cjs.map} +1 -1
- package/dist/chunks/{index-JArK0Dbx.mjs → index-CxTT94_h.mjs} +4 -22
- package/dist/chunks/{index-JArK0Dbx.mjs.map → index-CxTT94_h.mjs.map} +1 -1
- package/dist/chunks/{index-CmwBGDjr.cjs → index-Dr9k4hIP.cjs} +4 -22
- package/dist/chunks/{index-CmwBGDjr.cjs.map → index-Dr9k4hIP.cjs.map} +1 -1
- package/dist/chunks/{index-BsEMR4S4.mjs → index-TmAR7I2T.mjs} +9 -9
- package/dist/chunks/{index-BsEMR4S4.mjs.map → index-TmAR7I2T.mjs.map} +1 -1
- package/dist/chunks/legacy-KBXhWdRy.cjs +5 -0
- package/dist/chunks/{legacy-NU_qxPFK.mjs.map → legacy-KBXhWdRy.cjs.map} +1 -1
- package/dist/chunks/legacy-MK4GvP26.mjs +6 -0
- package/dist/chunks/{legacy-DUgfmdiS.cjs.map → legacy-MK4GvP26.mjs.map} +1 -1
- package/dist/chunks/{mdi-Nhb6SBw8.cjs → mdi-CVXTs58m.cjs} +11 -1
- package/dist/chunks/{mdi-CKSXwCsV.mjs.map → mdi-CVXTs58m.cjs.map} +1 -1
- package/dist/chunks/{mdi-CKSXwCsV.mjs → mdi-C_j0YT8c.mjs} +18 -8
- package/dist/chunks/{mdi-Nhb6SBw8.cjs.map → mdi-C_j0YT8c.mjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-DpJUQ5fq.mjs → referencePickerModal-CHpUHrDL.mjs} +36 -67
- package/dist/chunks/{referencePickerModal-DpJUQ5fq.mjs.map → referencePickerModal-CHpUHrDL.mjs.map} +1 -1
- package/dist/chunks/{referencePickerModal-CusxgEsK.cjs → referencePickerModal-CJNn-fvp.cjs} +36 -67
- package/dist/chunks/{referencePickerModal-CusxgEsK.cjs.map → referencePickerModal-CJNn-fvp.cjs.map} +1 -1
- package/dist/chunks/{useAppSettingsDialog-CPqmms-u.cjs → useAppSettingsDialog-BfnyikIV.cjs} +3 -1
- package/dist/chunks/useAppSettingsDialog-BfnyikIV.cjs.map +1 -0
- package/dist/chunks/{useAppSettingsDialog-Dn48dw1k.mjs → useAppSettingsDialog-DbtEkXa4.mjs} +4 -2
- package/dist/chunks/useAppSettingsDialog-DbtEkXa4.mjs.map +1 -0
- package/dist/chunks/{useModelMigration-HPf30klj.cjs → useModelMigration-D5zhrNXr.cjs} +2 -2
- package/dist/chunks/{useModelMigration-HPf30klj.cjs.map → useModelMigration-D5zhrNXr.cjs.map} +1 -1
- package/dist/chunks/{useModelMigration-DBUi8saj.mjs → useModelMigration-EhAWvqDD.mjs} +2 -2
- package/dist/chunks/{useModelMigration-DBUi8saj.mjs.map → useModelMigration-EhAWvqDD.mjs.map} +1 -1
- package/dist/chunks/useNcFormBox-DA9iwXWY.mjs +13 -0
- package/dist/chunks/useNcFormBox-DA9iwXWY.mjs.map +1 -0
- package/dist/chunks/useNcFormBox-DQeOEuQp.cjs +12 -0
- package/dist/chunks/useNcFormBox-DQeOEuQp.cjs.map +1 -0
- package/dist/chunks/{useTrapStackControl-2gEo3rvr.mjs → useTrapStackControl-BnLfCgGU.mjs} +2 -2
- package/dist/chunks/{useTrapStackControl-2gEo3rvr.mjs.map → useTrapStackControl-BnLfCgGU.mjs.map} +1 -1
- package/dist/chunks/{useTrapStackControl-dthvITlQ.cjs → useTrapStackControl-XYABY64G.cjs} +2 -2
- package/dist/chunks/{useTrapStackControl-dthvITlQ.cjs.map → useTrapStackControl-XYABY64G.cjs.map} +1 -1
- package/dist/components/NcAppSettingsDialog/useAppSettingsDialog.d.ts +5 -3
- package/dist/components/NcAppSettingsSection/index.d.ts +5 -0
- package/dist/components/NcAppSettingsSectionShortcuts/index.d.ts +8 -0
- package/dist/components/NcAppSettingsShortcutsSection/index.d.ts +5 -0
- package/dist/components/NcFormBox/index.d.ts +1 -0
- package/dist/components/NcFormBox/useNcFormBox.d.ts +19 -0
- package/dist/components/NcFormBoxButton/index.d.ts +5 -0
- package/dist/components/NcFormBoxCopyButton/index.d.ts +5 -0
- package/dist/components/NcFormBoxCopyButton/useCopy.d.ts +10 -0
- package/dist/components/NcFormBoxSwitch/index.d.ts +5 -0
- package/dist/components/NcFormGroup/index.d.ts +5 -0
- package/dist/components/NcHotkey/index.d.ts +1 -0
- package/dist/components/NcHotkeyList/index.d.ts +1 -0
- package/dist/composables/useButtonLink.d.ts +71 -0
- package/dist/index.cjs +91 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +93 -67
- package/dist/index.mjs.map +1 -1
- package/dist/utils/VueTypes.d.ts +7 -0
- package/package.json +18 -19
- package/dist/assets/NcAppNavigationSettings-1YRzh-xl.css +0 -74
- package/dist/assets/NcRadioGroup-CNgjqqiP.css +0 -49
- package/dist/chunks/NcActionTextEditable-BhucWrOO.cjs.map +0 -1
- package/dist/chunks/NcActions-A918mfXE.mjs.map +0 -1
- package/dist/chunks/NcActions-D3N_As6c.cjs.map +0 -1
- package/dist/chunks/NcAppContent-CCyPMvUa.cjs.map +0 -1
- package/dist/chunks/NcAppContent-DFlcxER-.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationSettings-DlIDzhxh.cjs.map +0 -1
- package/dist/chunks/NcAppNavigationSettings-n8OaxTbE.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsDialog-Cpjr8Tca.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsDialog-R6Y-tl6d.cjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-BNVlt4g0.mjs +0 -88
- package/dist/chunks/NcAppSettingsSection-BNVlt4g0.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-CTqViPnP.cjs +0 -87
- package/dist/chunks/NcAppSettingsSection-CTqViPnP.cjs.map +0 -1
- package/dist/chunks/NcInputField-1ujONIvp.mjs.map +0 -1
- package/dist/chunks/NcInputField-LBv3nCrt.cjs.map +0 -1
- package/dist/chunks/NcRadioGroup-DsnIVQZJ.cjs +0 -102
- package/dist/chunks/NcRadioGroup-DsnIVQZJ.cjs.map +0 -1
- package/dist/chunks/NcRadioGroup-sZaH_3Y0.mjs +0 -101
- package/dist/chunks/NcRadioGroup-sZaH_3Y0.mjs.map +0 -1
- package/dist/chunks/NcRadioGroupButton-B6m10k9G.mjs +0 -63
- package/dist/chunks/NcRadioGroupButton-B6m10k9G.mjs.map +0 -1
- package/dist/chunks/NcRadioGroupButton-CDf_01-t.cjs.map +0 -1
- package/dist/chunks/_l10n-DSLCwJSN.mjs.map +0 -1
- package/dist/chunks/createElementId-5skgwxOP.mjs +0 -9
- package/dist/chunks/createElementId-DaJhnLzq.cjs +0 -8
- package/dist/chunks/getAvatarUrl-C8Q41hfR.mjs +0 -16
- package/dist/chunks/getAvatarUrl-DwWyuiUZ.cjs +0 -15
- package/dist/chunks/legacy-DUgfmdiS.cjs +0 -6
- package/dist/chunks/legacy-NU_qxPFK.mjs +0 -7
- package/dist/chunks/useAppSettingsDialog-CPqmms-u.cjs.map +0 -1
- package/dist/chunks/useAppSettingsDialog-Dn48dw1k.mjs.map +0 -1
|
@@ -1,46 +1,27 @@
|
|
|
1
1
|
import '../assets/referencePickerModal-CGtNx7ew.css';
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defProps = Object.defineProperties;
|
|
4
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
5
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __spreadValues = (a, b) => {
|
|
10
|
-
for (var prop in b || (b = {}))
|
|
11
|
-
if (__hasOwnProp.call(b, prop))
|
|
12
|
-
__defNormalProp(a, prop, b[prop]);
|
|
13
|
-
if (__getOwnPropSymbols)
|
|
14
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
-
if (__propIsEnum.call(b, prop))
|
|
16
|
-
__defNormalProp(a, prop, b[prop]);
|
|
17
|
-
}
|
|
18
|
-
return a;
|
|
19
|
-
};
|
|
20
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
2
|
import Vue, { ref, nextTick } from "vue";
|
|
22
3
|
import { emit } from "@nextcloud/event-bus";
|
|
23
4
|
import { A as ArrowLeft } from "./ArrowLeft-DuT2LZOm.mjs";
|
|
24
5
|
import { C as Close } from "./Close-BtLPUSdO.mjs";
|
|
25
|
-
import { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, j as hasFullWidth, f as renderCustomPickerElement, b as destroyCustomPickerElement, c as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from "./customPickerElements-
|
|
6
|
+
import { d as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, j as hasFullWidth, f as renderCustomPickerElement, b as destroyCustomPickerElement, c as isCustomPickerElementRegistered, g as getCustomPickerElementSize } from "./customPickerElements-DLFtgReB.mjs";
|
|
26
7
|
import { n as normalizeComponent } from "./_plugin-vue2_normalizer-DU4iP6Vu.mjs";
|
|
27
8
|
import axios from "@nextcloud/axios";
|
|
28
9
|
import { loadState } from "@nextcloud/initial-state";
|
|
29
10
|
import { imagePath, generateOcsUrl } from "@nextcloud/router";
|
|
30
|
-
import { r as register, T as
|
|
11
|
+
import { r as register, T as t23, a as t, U as t8, V as t47, W as t41, X as t24, v as t43, Y as t32, m as t18, Z as t12 } from "./_l10n-BmKQgz1z.mjs";
|
|
31
12
|
import { l as logger } from "./logger-D3RVzcfQ.mjs";
|
|
32
13
|
import NcEmptyContent from "../Components/NcEmptyContent.mjs";
|
|
33
|
-
import { N as NcHighlight } from "./index-
|
|
34
|
-
import { N as NcSelect } from "./NcSelect-
|
|
14
|
+
import { N as NcHighlight } from "./index-CxTT94_h.mjs";
|
|
15
|
+
import { N as NcSelect } from "./NcSelect-DTniMiUS.mjs";
|
|
35
16
|
import { useElementSize, useIntersectionObserver } from "@vueuse/core";
|
|
36
17
|
import { RouterLink } from "vue-router";
|
|
37
|
-
import { N as NcButton } from "./NcButton-
|
|
18
|
+
import { N as NcButton } from "./NcButton-DUZTtFhr.mjs";
|
|
38
19
|
import { g as getRoute } from "./autolink-D2pIbi92.mjs";
|
|
39
20
|
import NcLoadingIcon from "../Components/NcLoadingIcon.mjs";
|
|
40
|
-
import { N as NcTextField } from "./NcTextField-
|
|
41
|
-
import { D as DotsHorizontalIcon } from "./NcActions-
|
|
21
|
+
import { N as NcTextField } from "./NcTextField-CfZknuqx.mjs";
|
|
22
|
+
import { D as DotsHorizontalIcon } from "./NcActions-CpdT2y6O.mjs";
|
|
42
23
|
import NcModal from "../Components/NcModal.mjs";
|
|
43
|
-
register(
|
|
24
|
+
register(t23);
|
|
44
25
|
const IDLE_TIMEOUT = 3 * 60 * 1e3;
|
|
45
26
|
const _sfc_main$8 = {
|
|
46
27
|
name: "NcReferenceWidget",
|
|
@@ -172,11 +153,10 @@ const _sfc_main$8 = {
|
|
|
172
153
|
this.renderWidget();
|
|
173
154
|
},
|
|
174
155
|
renderWidget() {
|
|
175
|
-
var _a2;
|
|
176
156
|
if (!this.$refs.customWidget) {
|
|
177
157
|
return;
|
|
178
158
|
}
|
|
179
|
-
if (
|
|
159
|
+
if (this?.reference?.richObjectType === "open-graph") {
|
|
180
160
|
return;
|
|
181
161
|
}
|
|
182
162
|
this.$refs.customWidget.innerHTML = "";
|
|
@@ -184,9 +164,10 @@ const _sfc_main$8 = {
|
|
|
184
164
|
widget.style = "width: 100%;";
|
|
185
165
|
this.$refs.customWidget.appendChild(widget);
|
|
186
166
|
this.$nextTick(() => {
|
|
187
|
-
renderWidget(widget,
|
|
167
|
+
renderWidget(widget, {
|
|
168
|
+
...this.reference,
|
|
188
169
|
interactive: this.isInteractive
|
|
189
|
-
})
|
|
170
|
+
});
|
|
190
171
|
this.rendered = true;
|
|
191
172
|
});
|
|
192
173
|
},
|
|
@@ -250,9 +231,8 @@ const _sfc_main$7 = {
|
|
|
250
231
|
}
|
|
251
232
|
const renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false });
|
|
252
233
|
Promise.resolve(renderFunctionResult).then((result) => {
|
|
253
|
-
var _a2, _b2;
|
|
254
234
|
this.renderResult = result;
|
|
255
|
-
if (
|
|
235
|
+
if (this.renderResult.object?._isVue && this.renderResult.object?.$on) {
|
|
256
236
|
this.renderResult.object.$on("submit", this.onSubmit);
|
|
257
237
|
this.renderResult.object.$on("cancel", this.onCancel);
|
|
258
238
|
}
|
|
@@ -318,7 +298,6 @@ var __component__$6 = /* @__PURE__ */ normalizeComponent(
|
|
|
318
298
|
);
|
|
319
299
|
const LinkVariantIcon = __component__$6.exports;
|
|
320
300
|
register(t8);
|
|
321
|
-
var _a, _b;
|
|
322
301
|
const anyLinkProviderId = "any-link";
|
|
323
302
|
const anyLinkProvider = {
|
|
324
303
|
id: anyLinkProviderId,
|
|
@@ -326,8 +305,8 @@ const anyLinkProvider = {
|
|
|
326
305
|
order: 0,
|
|
327
306
|
icon_url: imagePath("core", "filetypes/link.svg")
|
|
328
307
|
};
|
|
329
|
-
|
|
330
|
-
|
|
308
|
+
window._vue_richtext_reference_providers ??= loadState("core", "reference-provider-list", []);
|
|
309
|
+
window._vue_richtext_reference_provider_timestamps ??= loadState("core", "reference-provider-timestamps", {});
|
|
331
310
|
function getProvider(providerId) {
|
|
332
311
|
if (providerId === anyLinkProviderId) {
|
|
333
312
|
return anyLinkProvider;
|
|
@@ -338,7 +317,7 @@ function getProviders() {
|
|
|
338
317
|
return window._vue_richtext_reference_providers.filter((p) => {
|
|
339
318
|
const keep = !!p.search_providers_ids && p.search_providers_ids.length > 0 || isCustomPickerElementRegistered(p.id);
|
|
340
319
|
if (!keep) {
|
|
341
|
-
logger.debug(
|
|
320
|
+
logger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`);
|
|
342
321
|
}
|
|
343
322
|
return keep;
|
|
344
323
|
});
|
|
@@ -373,7 +352,7 @@ async function touchProvider(providerId) {
|
|
|
373
352
|
await axios.put(url, { timestamp });
|
|
374
353
|
window._vue_richtext_reference_provider_timestamps[providerId] = timestamp;
|
|
375
354
|
}
|
|
376
|
-
register(
|
|
355
|
+
register(t41, t47);
|
|
377
356
|
let mytimer = 0;
|
|
378
357
|
function delay(callback, ms) {
|
|
379
358
|
return function() {
|
|
@@ -388,7 +367,7 @@ function delay(callback, ms) {
|
|
|
388
367
|
function isUrl(str) {
|
|
389
368
|
try {
|
|
390
369
|
return Boolean(new URL(str));
|
|
391
|
-
} catch
|
|
370
|
+
} catch {
|
|
392
371
|
return false;
|
|
393
372
|
}
|
|
394
373
|
}
|
|
@@ -429,8 +408,7 @@ const _sfc_main$5 = {
|
|
|
429
408
|
methods: {
|
|
430
409
|
focus() {
|
|
431
410
|
setTimeout(() => {
|
|
432
|
-
|
|
433
|
-
(_c = (_b2 = (_a2 = this.$refs["provider-select"]) == null ? void 0 : _a2.$el) == null ? void 0 : _b2.querySelector("#provider-select-input")) == null ? void 0 : _c.focus();
|
|
411
|
+
this.$refs["provider-select"]?.$el?.querySelector("#provider-select-input")?.focus();
|
|
434
412
|
}, 300);
|
|
435
413
|
},
|
|
436
414
|
onProviderSelected(p) {
|
|
@@ -468,7 +446,7 @@ var __component__$5 = /* @__PURE__ */ normalizeComponent(
|
|
|
468
446
|
"f39d58d9"
|
|
469
447
|
);
|
|
470
448
|
const NcProviderList = __component__$5.exports;
|
|
471
|
-
register(
|
|
449
|
+
register(t24);
|
|
472
450
|
const _sfc_main$4 = {
|
|
473
451
|
name: "NcRawLinkInput",
|
|
474
452
|
components: {
|
|
@@ -506,8 +484,7 @@ const _sfc_main$4 = {
|
|
|
506
484
|
},
|
|
507
485
|
methods: {
|
|
508
486
|
focus() {
|
|
509
|
-
|
|
510
|
-
(_a2 = this.$refs["url-input"].$el.getElementsByTagName("input")[0]) == null ? void 0 : _a2.focus();
|
|
487
|
+
this.$refs["url-input"].$el.getElementsByTagName("input")[0]?.focus();
|
|
511
488
|
},
|
|
512
489
|
onSubmit(e) {
|
|
513
490
|
const value = e.target.value;
|
|
@@ -603,7 +580,7 @@ var __component__$3 = /* @__PURE__ */ normalizeComponent(
|
|
|
603
580
|
"995c2758"
|
|
604
581
|
);
|
|
605
582
|
const NcSearchResult = __component__$3.exports;
|
|
606
|
-
register(
|
|
583
|
+
register(t32, t41, t43);
|
|
607
584
|
const LIMIT = 5;
|
|
608
585
|
const _sfc_main$2 = {
|
|
609
586
|
name: "NcSearch",
|
|
@@ -689,9 +666,10 @@ const _sfc_main$2 = {
|
|
|
689
666
|
});
|
|
690
667
|
}
|
|
691
668
|
const providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {
|
|
692
|
-
return
|
|
693
|
-
id: "provider-" + pid + "-entry-" + index
|
|
694
|
-
|
|
669
|
+
return {
|
|
670
|
+
id: "provider-" + pid + "-entry-" + index,
|
|
671
|
+
...entry
|
|
672
|
+
};
|
|
695
673
|
});
|
|
696
674
|
results.push(...providerEntriesWithId);
|
|
697
675
|
if (this.resultsBySearchProvider[pid].isPaginated) {
|
|
@@ -727,8 +705,7 @@ const _sfc_main$2 = {
|
|
|
727
705
|
},
|
|
728
706
|
focus() {
|
|
729
707
|
setTimeout(() => {
|
|
730
|
-
|
|
731
|
-
(_c = (_b2 = (_a2 = this.$refs["search-select"]) == null ? void 0 : _a2.$el) == null ? void 0 : _b2.querySelector("#search-select-input")) == null ? void 0 : _c.focus();
|
|
708
|
+
this.$refs["search-select"]?.$el?.querySelector("#search-select-input")?.focus();
|
|
732
709
|
}, 300);
|
|
733
710
|
},
|
|
734
711
|
cancelSearchRequests() {
|
|
@@ -769,12 +746,11 @@ const _sfc_main$2 = {
|
|
|
769
746
|
return this.searchProviders();
|
|
770
747
|
},
|
|
771
748
|
searchProviders(searchProviderId = null) {
|
|
772
|
-
var _a2, _b2;
|
|
773
749
|
this.abortController = new AbortController();
|
|
774
750
|
this.searching = true;
|
|
775
751
|
const searchPromises = searchProviderId === null ? [...this.searchProviderIds].map((pid) => {
|
|
776
752
|
return this.searchOneProvider(pid);
|
|
777
|
-
}) : [this.searchOneProvider(searchProviderId,
|
|
753
|
+
}) : [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)];
|
|
778
754
|
return Promise.allSettled(searchPromises).then((promises) => {
|
|
779
755
|
const isOneCanceled = !!promises.find((p) => {
|
|
780
756
|
return p.status === "rejected" && (p.reason.name === "CanceledError" || p.reason.code === "ERR_CANCELED");
|
|
@@ -889,13 +865,11 @@ const _sfc_main$1 = {
|
|
|
889
865
|
if (this.focusOnCreate) {
|
|
890
866
|
if (this.initialProvider) {
|
|
891
867
|
setTimeout(() => {
|
|
892
|
-
|
|
893
|
-
(_a2 = this.$refs["url-input"]) == null ? void 0 : _a2.focus();
|
|
868
|
+
this.$refs["url-input"]?.focus();
|
|
894
869
|
}, 300);
|
|
895
870
|
} else {
|
|
896
871
|
this.$nextTick(() => {
|
|
897
|
-
|
|
898
|
-
(_a2 = this.$refs["provider-list"]) == null ? void 0 : _a2.focus();
|
|
872
|
+
this.$refs["provider-list"]?.focus();
|
|
899
873
|
});
|
|
900
874
|
}
|
|
901
875
|
}
|
|
@@ -912,21 +886,18 @@ const _sfc_main$1 = {
|
|
|
912
886
|
this.selectedProvider = provider;
|
|
913
887
|
this.$emit("provider-selected", provider);
|
|
914
888
|
this.$nextTick(() => {
|
|
915
|
-
|
|
916
|
-
(_a2 = this.$refs["url-input"]) == null ? void 0 : _a2.focus();
|
|
889
|
+
this.$refs["url-input"]?.focus();
|
|
917
890
|
});
|
|
918
891
|
},
|
|
919
892
|
cancelCustomElement() {
|
|
920
893
|
this.deselectProvider();
|
|
921
894
|
},
|
|
922
895
|
cancelSearch() {
|
|
923
|
-
|
|
924
|
-
this.$emit("cancel-search", (_a2 = this.selectedProvider) == null ? void 0 : _a2.title);
|
|
896
|
+
this.$emit("cancel-search", this.selectedProvider?.title);
|
|
925
897
|
this.deselectProvider();
|
|
926
898
|
},
|
|
927
899
|
cancelRawLinkInput() {
|
|
928
|
-
|
|
929
|
-
this.$emit("cancel-raw-link", (_a2 = this.selectedProvider) == null ? void 0 : _a2.title);
|
|
900
|
+
this.$emit("cancel-raw-link", this.selectedProvider?.title);
|
|
930
901
|
this.deselectProvider();
|
|
931
902
|
},
|
|
932
903
|
cancelProviderSelection() {
|
|
@@ -943,8 +914,7 @@ const _sfc_main$1 = {
|
|
|
943
914
|
this.selectedProvider = null;
|
|
944
915
|
this.$emit("provider-selected", null);
|
|
945
916
|
setTimeout(() => {
|
|
946
|
-
|
|
947
|
-
(_a2 = this.$refs["provider-list"]) == null ? void 0 : _a2.focus();
|
|
917
|
+
this.$refs["provider-list"]?.focus();
|
|
948
918
|
}, 300);
|
|
949
919
|
}
|
|
950
920
|
}
|
|
@@ -1024,8 +994,7 @@ const _sfc_main = {
|
|
|
1024
994
|
return this.initialProvider === null && this.isProviderSelected;
|
|
1025
995
|
},
|
|
1026
996
|
modalSize() {
|
|
1027
|
-
|
|
1028
|
-
return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? (_a2 = getCustomPickerElementSize(this.selectedProvider.id)) != null ? _a2 : "large" : "normal";
|
|
997
|
+
return this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id) ? getCustomPickerElementSize(this.selectedProvider.id) ?? "large" : "normal";
|
|
1029
998
|
},
|
|
1030
999
|
showModalName() {
|
|
1031
1000
|
return !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id);
|
|
@@ -1114,4 +1083,4 @@ export {
|
|
|
1114
1083
|
NcSearch as h,
|
|
1115
1084
|
searchProvider as s
|
|
1116
1085
|
};
|
|
1117
|
-
//# sourceMappingURL=referencePickerModal-
|
|
1086
|
+
//# sourceMappingURL=referencePickerModal-CHpUHrDL.mjs.map
|
package/dist/chunks/{referencePickerModal-DpJUQ5fq.mjs.map → referencePickerModal-CHpUHrDL.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referencePickerModal-DpJUQ5fq.mjs","sources":["../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/functions/reference/providerHelper.ts","../../src/components/NcRichText/NcReferencePicker/utils.js","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/functions/reference/referencePickerModal.ts"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"widgetRoot\" :class=\"{ 'toggle-interactive': hasInteractiveView && !isInteractive }\">\n\t\t<div\n\t\t\tv-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': hasFullWidth }\" />\n\n\t\t<component\n\t\t\t:is=\"referenceWidgetLinkComponent\"\n\t\t\tv-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\tv-bind=\"referenceWidgetLinkProps\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclass=\"widget-default\">\n\t\t\t<img v-if=\"reference.openGraphObject.thumb\" class=\"widget-default--image\" :src=\"reference.openGraphObject.thumb\">\n\t\t\t<div class=\"widget-default--details\">\n\t\t\t\t<p class=\"widget-default--name\">\n\t\t\t\t\t{{ reference.openGraphObject.name }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">\n\t\t\t\t\t{{ reference.openGraphObject.description }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--link\">\n\t\t\t\t\t{{ compactLink }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</component>\n\t\t<NcButton v-if=\"interactiveOptIn && hasInteractiveView && !isInteractive\" class=\"toggle-interactive--button\" @click=\"enableInteractive\">\n\t\t\t{{ t('Enable interactive view') }}\n\t\t</NcButton>\n\t</div>\n</template>\n\n<script>\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { nextTick, ref } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport NcButton from '../../components/NcButton/index.js'\nimport { t } from '../../l10n.js'\nimport { destroyWidget, hasFullWidth, hasInteractiveView, isWidgetRegistered, renderWidget } from './../../functions/reference/widgets.ts'\nimport { getRoute } from './autolink.js'\n\nconst IDLE_TIMEOUT = 3 * 60 * 1000 // 3 minutes outside of viewport before widget is removed from the DOM\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst isVisible = ref(false)\n\t\t// This is the widget root node\n\t\tconst widgetRoot = ref()\n\t\tconst { width } = useElementSize(widgetRoot)\n\n\t\tuseIntersectionObserver(widgetRoot, ([entry]) => {\n\t\t\tnextTick(() => {\n\t\t\t\tisVisible.value = entry.isIntersecting\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tisVisible,\n\t\t\twidgetRoot,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowInteractive: false,\n\t\t\trendered: false,\n\t\t\tidleTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisInteractive() {\n\t\t\treturn (!this.interactiveOptIn && this.interactive) || this.showInteractive\n\t\t},\n\n\t\thasFullWidth() {\n\t\t\treturn hasFullWidth(this.reference.richObjectType)\n\t\t},\n\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType)\n\t\t},\n\n\t\thasInteractiveView() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType)\n\t\t},\n\n\t\tnoAccess() {\n\t\t\treturn this.reference && !this.reference.accessible\n\t\t},\n\n\t\tdescriptionStyle() {\n\t\t\tif (this.numberOfLines === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lineClamp = this.numberOfLines\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\n\t\t},\n\n\t\tnumberOfLines() {\n\t\t\t// no description for width < 450, one line until 550 and so on\n\t\t\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\t\t\treturn lineCountOffsets.findIndex((max) => this.width < max)\n\t\t},\n\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\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.reference.openGraphObject.link)\n\t\t},\n\n\t\treferenceWidgetLinkComponent() {\n\t\t\treturn this.route ? RouterLink : 'a'\n\t\t},\n\n\t\treferenceWidgetLinkProps() {\n\t\t\treturn this.route\n\t\t\t\t? { to: this.route }\n\t\t\t\t: { href: this.reference.openGraphObject.link, target: '_blank' }\n\t\t},\n\t},\n\n\twatch: {\n\t\tisVisible: {\n\t\t\thandler(val) {\n\t\t\t\tif (!val) {\n\t\t\t\t\tthis.idleTimeout = setTimeout(() => {\n\t\t\t\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\t\t\t\tif (!this.isVisible) {\n\t\t\t\t\t\t\tthis.destroyWidget()\n\t\t\t\t\t\t}\n\t\t\t\t\t}, IDLE_TIMEOUT)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (this.idleTimeout) {\n\t\t\t\t\tclearTimeout(this.idleTimeout)\n\t\t\t\t\tthis.idleTimeout = null\n\t\t\t\t}\n\n\t\t\t\tif (!this.rendered) {\n\t\t\t\t\tthis.renderWidget()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\timmediate: true,\n\t\t},\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.destroyWidget()\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tenableInteractive() {\n\t\t\tthis.showInteractive = true\n\t\t\tthis.renderWidget()\n\t\t},\n\n\t\trenderWidget() {\n\t\t\tif (!this.$refs.customWidget) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$refs.customWidget.innerHTML = ''\n\n\t\t\t// create a separate element so we can rerender on the ref again\n\t\t\tconst widget = document.createElement('div')\n\t\t\twidget.style = 'width: 100%;'\n\t\t\tthis.$refs.customWidget.appendChild(widget)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(widget, {\n\t\t\t\t\t...this.reference,\n\t\t\t\t\tinteractive: this.isInteractive,\n\t\t\t\t})\n\t\t\t\tthis.rendered = true\n\t\t\t})\n\t\t},\n\n\t\tdestroyWidget() {\n\t\t\tif (this.rendered) {\n\t\t\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t\t\t\tthis.rendered = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-container);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n\n\t&.full-width {\n\t\twidth: var(--widget-full-width, 100%) !important;\n\t\tinset-inline-start: calc( (var(--widget-full-width, 100%) - 100%) / 2 * -1);\n\t\tposition: relative;\n\t}\n}\n\n.widget-access {\n\t@include widget;\n\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.widget-default {\n\t@include widget;\n\n\t&--compact {\n\t\tflex-direction: column;\n\n\t\t.widget-default--image {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t}\n\n\t\t.widget-default--details {\n\t\t\twidth: 100%;\n\t\t\tpadding-top: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t\tpadding-bottom: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t}\n\n\t\t.widget-default--description {\n\t\t\tdisplay: none;\n\t\t}\n\n\t}\n\n\t&--image {\n\t\twidth: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t&--name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n\t\twidth: 60%;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n\n.toggle-interactive {\n\tposition: relative;\n\t.toggle-interactive--button {\n\t\tposition: absolute;\n\t\tbottom: var(--default-grid-baseline);\n\t\tinset-inline-end: var(--default-grid-baseline);\n\t\tz-index: 10000;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport {\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\trenderCustomPickerElement,\n} from '../../../functions/reference/customPickerElements.ts'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\n\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\n\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\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","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon link-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LinkVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport { isCustomPickerElementRegistered } from './customPickerElements.ts'\n\nexport interface ReferenceProvider {\n\tid: string\n\ttitle: string\n\ticon_url: string\n\torder: number\n\tsearch_providers_ids?: string[]\n}\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider: ReferenceProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\torder: 0,\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nwindow._vue_richtext_reference_providers ??= loadState('core', 'reference-provider-list', [])\n// single timestamps object used by every entity in the page\nwindow._vue_richtext_reference_provider_timestamps ??= loadState('core', 'reference-provider-timestamps', {})\n\n/**\n * @param providerId - The provider ID\n * @return The provider object\n */\nexport function getProvider(providerId: string): ReferenceProvider | undefined {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\n\treturn getProviders().find((p) => p.id === providerId)\n}\n\n/**\n * Get raw provider list as it was provided by the server\n */\nexport function getProviders(): ReferenceProvider[] {\n\treturn window._vue_richtext_reference_providers.filter((p) => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tlogger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`)\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param providerList - List of provider objects\n * @return The sorted provider list\n */\nexport function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[] {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param query - The search query\n * @param limit - (optional) max number of results\n * @return The sorted/filtered provider list\n */\nexport function searchProvider(query: string, limit?: number): ReferenceProvider[] {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter((p) => {\n\t\treturn p.title.match(regexp)\n\t})\n\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param providerId - The id of the search provider\n */\nexport async function touchProvider(providerId: number) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\n\tawait axios.put(url, { timestamp })\n\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet mytimer = 0\n/**\n *\n * @param {Function} callback The callback to call after the delay\n * @param {number} ms The delay in milli-seconds\n */\nexport function delay(callback, ms) {\n\treturn function() {\n\t\tconst context = this\n\t\tconst args = arguments\n\t\tclearTimeout(mytimer)\n\t\tmytimer = setTimeout(function() {\n\t\t\tcallback.apply(context, args)\n\t\t}, ms || 0)\n\t}\n}\n/**\n *\n * @param {string} str The url\n */\nexport function isUrl(str) {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch {\n\t\treturn false\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect\n\t\t\tref=\"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\n\t\t\t\t\t\tclass=\"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\n\t\t\t\t\t\tclass=\"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 LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport { searchProvider } from '../../../functions/reference/providerHelper.ts'\nimport { t } from '../../../l10n.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.js'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\n\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\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\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\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\n\t\tonSearch(query) {\n\t\t\tthis.query = query\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.provider-list {\n\twidth: 100%;\n\tmin-height: 400px;\n\tpadding: 0 16px 16px 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.provider {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 28px;\n\t\t\toverflow: hidden;\n\n\t\t\t.link-icon {\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"raw-link\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<NcTextField\n\t\t\t\tref=\"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\n\t\t\tv-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent\n\t\t\tv-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-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 axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { t } from '../../../l10n.js'\nimport { logger } from '../../../utils/logger.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.js'\nimport NcTextField from '../../NcTextField/index.js'\nimport { delay, isUrl } from './utils.js'\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\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\n\temits: [\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\n\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\n\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\n\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\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\tlogger.error('Could not update reference', { error })\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.raw-link {\n\twidth: 100%;\n\tmin-height: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\tpadding: 0 16px 16px 16px;\n\n\t.input-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.reference-widget {\n\t\tdisplay: flex;\n\t}\n\n\t&--empty-content .provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--input {\n\t\twidth: 99%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"result\">\n\t\t<div\n\t\t\tv-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\n\t\t\tv-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\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\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: var(--default-clickable-area);\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-inline-start: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"smart-picker-search\" :class=\"{ 'with-empty-content': showEmptyContent }\">\n\t\t<NcSelect\n\t\t\tref=\"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\n\t\t\t\t\tv-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\n\t\t\t\t\t\tv-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\">\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\n\t\t\tv-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-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 axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcSearchResult from './NcSearchResult.vue'\nimport { t } from '../../../l10n.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { delay, isUrl } from './utils.js'\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\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\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\n\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder of the search\n\t\t */\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\n\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\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\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\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.cancelSearchRequests()\n\t},\n\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\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\n\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tdelay(() => {\n\t\t\t\tthis.updateSearch()\n\t\t\t}, 500)()\n\t\t},\n\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\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\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\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\t\treturn this.searchOneProvider(pid)\n\t\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\n\t\tsearchOneProvider(providerId, cursor = null) {\n\t\t\tconst url = cursor === null\n\t\t\t\t? generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}', { providerId, term: this.searchQuery, limit: LIMIT })\n\t\t\t\t: generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}', { providerId, term: this.searchQuery, limit: LIMIT, cursor })\n\t\t\treturn axios.get(url, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].name = data.name\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].cursor = data.cursor\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].isPaginated = data.isPaginated\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].entries.push(...data.entries)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.smart-picker-search {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 0 16px 16px 16px;\n\t&.with-empty-content {\n\t\tmin-height: 400px;\n\t}\n\n\t.provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.search-result {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.group-name-icon,\n\t\t.option-simple-icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin: 0 20px 0 10px;\n\t\t}\n\n\t\t.custom-option {\n\t\t\theight: var(--default-clickable-area);\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div\n\t\tclass=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList\n\t\t\tv-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\n\t\t\tv-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\n\t\t\tv-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\n\t\t\tv-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement\n\t\t\t\t:provider=\"selectedProvider\"\n\t\t\t\tclass=\"custom-element\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { touchProvider } from '../../../functions/reference/providerHelper.ts'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\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\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\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\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\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\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\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\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\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\t},\n\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\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\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\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\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t\t.custom-element {\n\t\t\tdisplay: flex;\n\t\t\toverflow-y: auto;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal\n\t\tv-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"true\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div\n\t\t\tref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton\n\t\t\t\tv-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\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t:aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker\n\t\t\t\tref=\"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 { emit } from '@nextcloud/event-bus'\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { t } from '../../../l10n.js'\nimport NcButton from '../../NcButton/index.js'\nimport NcModal from '../../NcModal/index.js'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './../../../functions/reference/customPickerElements.ts'\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\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\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\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\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\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\n\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\n\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\n\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\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\n\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\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\n\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal :deep(.modal-container) {\n\tdisplay: flex !important;\n}\n\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tinset-inline-start: 4px;\n\t}\n\t.close-button {\n\t\tinset-inline-end: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-inline-end: 8px;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.ts'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param providerId - Optional ID of initial selected provider\n * @param isInsideViewer - Should be true if this function is called while the Viewer is displayed\n */\nexport async function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string> {\n\tconst modalId = 'referencePickerModal'\n\tconst modalElement = document.createElement('div')\n\tmodalElement.id = modalId\n\tdocument.body.append(modalElement)\n\n\tconst { promise, reject, resolve } = Promise.withResolvers<string>()\n\tconst initialProvider = (providerId && getProvider(providerId)) || null\n\tconst View = Vue.extend(NcReferencePickerModal)\n\tconst view = new View({\n\t\tpropsData: {\n\t\t\tinitialProvider,\n\t\t\tisInsideViewer,\n\t\t},\n\t}).$mount(modalElement)\n\n\tview.$on('cancel', () => {\n\t\tview.$destroy()\n\t\treject(new Error('User cancellation'))\n\t})\n\tview.$on('submit', (link) => {\n\t\tview.$destroy()\n\t\tresolve(link)\n\t})\n\n\treturn promise\n}\n"],"names":["_sfc_main","_a","_b","ArrowLeftIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"referencePickerModal-CHpUHrDL.mjs","sources":["../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/functions/reference/providerHelper.ts","../../src/components/NcRichText/NcReferencePicker/utils.js","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/functions/reference/referencePickerModal.ts"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"widgetRoot\" :class=\"{ 'toggle-interactive': hasInteractiveView && !isInteractive }\">\n\t\t<div\n\t\t\tv-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': hasFullWidth }\" />\n\n\t\t<component\n\t\t\t:is=\"referenceWidgetLinkComponent\"\n\t\t\tv-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\tv-bind=\"referenceWidgetLinkProps\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclass=\"widget-default\">\n\t\t\t<img v-if=\"reference.openGraphObject.thumb\" class=\"widget-default--image\" :src=\"reference.openGraphObject.thumb\">\n\t\t\t<div class=\"widget-default--details\">\n\t\t\t\t<p class=\"widget-default--name\">\n\t\t\t\t\t{{ reference.openGraphObject.name }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">\n\t\t\t\t\t{{ reference.openGraphObject.description }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--link\">\n\t\t\t\t\t{{ compactLink }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</component>\n\t\t<NcButton v-if=\"interactiveOptIn && hasInteractiveView && !isInteractive\" class=\"toggle-interactive--button\" @click=\"enableInteractive\">\n\t\t\t{{ t('Enable interactive view') }}\n\t\t</NcButton>\n\t</div>\n</template>\n\n<script>\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { nextTick, ref } from 'vue'\nimport { RouterLink } from 'vue-router'\nimport NcButton from '../../components/NcButton/index.js'\nimport { t } from '../../l10n.js'\nimport { destroyWidget, hasFullWidth, hasInteractiveView, isWidgetRegistered, renderWidget } from './../../functions/reference/widgets.ts'\nimport { getRoute } from './autolink.js'\n\nconst IDLE_TIMEOUT = 3 * 60 * 1000 // 3 minutes outside of viewport before widget is removed from the DOM\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst isVisible = ref(false)\n\t\t// This is the widget root node\n\t\tconst widgetRoot = ref()\n\t\tconst { width } = useElementSize(widgetRoot)\n\n\t\tuseIntersectionObserver(widgetRoot, ([entry]) => {\n\t\t\tnextTick(() => {\n\t\t\t\tisVisible.value = entry.isIntersecting\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tisVisible,\n\t\t\twidgetRoot,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowInteractive: false,\n\t\t\trendered: false,\n\t\t\tidleTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisInteractive() {\n\t\t\treturn (!this.interactiveOptIn && this.interactive) || this.showInteractive\n\t\t},\n\n\t\thasFullWidth() {\n\t\t\treturn hasFullWidth(this.reference.richObjectType)\n\t\t},\n\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType)\n\t\t},\n\n\t\thasInteractiveView() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType)\n\t\t},\n\n\t\tnoAccess() {\n\t\t\treturn this.reference && !this.reference.accessible\n\t\t},\n\n\t\tdescriptionStyle() {\n\t\t\tif (this.numberOfLines === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lineClamp = this.numberOfLines\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\n\t\t},\n\n\t\tnumberOfLines() {\n\t\t\t// no description for width < 450, one line until 550 and so on\n\t\t\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\t\t\treturn lineCountOffsets.findIndex((max) => this.width < max)\n\t\t},\n\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\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.reference.openGraphObject.link)\n\t\t},\n\n\t\treferenceWidgetLinkComponent() {\n\t\t\treturn this.route ? RouterLink : 'a'\n\t\t},\n\n\t\treferenceWidgetLinkProps() {\n\t\t\treturn this.route\n\t\t\t\t? { to: this.route }\n\t\t\t\t: { href: this.reference.openGraphObject.link, target: '_blank' }\n\t\t},\n\t},\n\n\twatch: {\n\t\tisVisible: {\n\t\t\thandler(val) {\n\t\t\t\tif (!val) {\n\t\t\t\t\tthis.idleTimeout = setTimeout(() => {\n\t\t\t\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\t\t\t\tif (!this.isVisible) {\n\t\t\t\t\t\t\tthis.destroyWidget()\n\t\t\t\t\t\t}\n\t\t\t\t\t}, IDLE_TIMEOUT)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (this.idleTimeout) {\n\t\t\t\t\tclearTimeout(this.idleTimeout)\n\t\t\t\t\tthis.idleTimeout = null\n\t\t\t\t}\n\n\t\t\t\tif (!this.rendered) {\n\t\t\t\t\tthis.renderWidget()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\timmediate: true,\n\t\t},\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.destroyWidget()\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\tenableInteractive() {\n\t\t\tthis.showInteractive = true\n\t\t\tthis.renderWidget()\n\t\t},\n\n\t\trenderWidget() {\n\t\t\tif (!this.$refs.customWidget) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$refs.customWidget.innerHTML = ''\n\n\t\t\t// create a separate element so we can rerender on the ref again\n\t\t\tconst widget = document.createElement('div')\n\t\t\twidget.style = 'width: 100%;'\n\t\t\tthis.$refs.customWidget.appendChild(widget)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(widget, {\n\t\t\t\t\t...this.reference,\n\t\t\t\t\tinteractive: this.isInteractive,\n\t\t\t\t})\n\t\t\t\tthis.rendered = true\n\t\t\t})\n\t\t},\n\n\t\tdestroyWidget() {\n\t\t\tif (this.rendered) {\n\t\t\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t\t\t\tthis.rendered = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-container);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n\n\t&.full-width {\n\t\twidth: var(--widget-full-width, 100%) !important;\n\t\tinset-inline-start: calc( (var(--widget-full-width, 100%) - 100%) / 2 * -1);\n\t\tposition: relative;\n\t}\n}\n\n.widget-access {\n\t@include widget;\n\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.widget-default {\n\t@include widget;\n\n\t&--compact {\n\t\tflex-direction: column;\n\n\t\t.widget-default--image {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t}\n\n\t\t.widget-default--details {\n\t\t\twidth: 100%;\n\t\t\tpadding-top: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t\tpadding-bottom: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t}\n\n\t\t.widget-default--description {\n\t\t\tdisplay: none;\n\t\t}\n\n\t}\n\n\t&--image {\n\t\twidth: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t&--name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n\t\twidth: 60%;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n\n.toggle-interactive {\n\tposition: relative;\n\t.toggle-interactive--button {\n\t\tposition: absolute;\n\t\tbottom: var(--default-grid-baseline);\n\t\tinset-inline-end: var(--default-grid-baseline);\n\t\tz-index: 10000;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport {\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\trenderCustomPickerElement,\n} from '../../../functions/reference/customPickerElements.ts'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\n\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\n\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\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","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon link-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LinkVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport { logger } from '../../utils/logger.ts'\nimport { isCustomPickerElementRegistered } from './customPickerElements.ts'\n\nexport interface ReferenceProvider {\n\tid: string\n\ttitle: string\n\ticon_url: string\n\torder: number\n\tsearch_providers_ids?: string[]\n}\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider: ReferenceProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\torder: 0,\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nwindow._vue_richtext_reference_providers ??= loadState('core', 'reference-provider-list', [])\n// single timestamps object used by every entity in the page\nwindow._vue_richtext_reference_provider_timestamps ??= loadState('core', 'reference-provider-timestamps', {})\n\n/**\n * @param providerId - The provider ID\n * @return The provider object\n */\nexport function getProvider(providerId: string): ReferenceProvider | undefined {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\n\treturn getProviders().find((p) => p.id === providerId)\n}\n\n/**\n * Get raw provider list as it was provided by the server\n */\nexport function getProviders(): ReferenceProvider[] {\n\treturn window._vue_richtext_reference_providers.filter((p) => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tlogger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`)\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param providerList - List of provider objects\n * @return The sorted provider list\n */\nexport function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[] {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param query - The search query\n * @param limit - (optional) max number of results\n * @return The sorted/filtered provider list\n */\nexport function searchProvider(query: string, limit?: number): ReferenceProvider[] {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter((p) => {\n\t\treturn p.title.match(regexp)\n\t})\n\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param providerId - The id of the search provider\n */\nexport async function touchProvider(providerId: number) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\n\tawait axios.put(url, { timestamp })\n\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet mytimer = 0\n/**\n *\n * @param {Function} callback The callback to call after the delay\n * @param {number} ms The delay in milli-seconds\n */\nexport function delay(callback, ms) {\n\treturn function() {\n\t\tconst context = this\n\t\tconst args = arguments\n\t\tclearTimeout(mytimer)\n\t\tmytimer = setTimeout(function() {\n\t\t\tcallback.apply(context, args)\n\t\t}, ms || 0)\n\t}\n}\n/**\n *\n * @param {string} str The url\n */\nexport function isUrl(str) {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch {\n\t\treturn false\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect\n\t\t\tref=\"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\n\t\t\t\t\t\tclass=\"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\n\t\t\t\t\t\tclass=\"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 LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport { searchProvider } from '../../../functions/reference/providerHelper.ts'\nimport { t } from '../../../l10n.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.js'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\n\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\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\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\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\n\t\tonSearch(query) {\n\t\t\tthis.query = query\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.provider-list {\n\twidth: 100%;\n\tmin-height: 400px;\n\tpadding: 0 16px 16px 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.provider {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 28px;\n\t\t\toverflow: hidden;\n\n\t\t\t.link-icon {\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"raw-link\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<NcTextField\n\t\t\t\tref=\"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\n\t\t\tv-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent\n\t\t\tv-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-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 axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { t } from '../../../l10n.js'\nimport { logger } from '../../../utils/logger.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.js'\nimport NcTextField from '../../NcTextField/index.js'\nimport { delay, isUrl } from './utils.js'\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\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\n\temits: [\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\n\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\n\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\n\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\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\tlogger.error('Could not update reference', { error })\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.raw-link {\n\twidth: 100%;\n\tmin-height: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\tpadding: 0 16px 16px 16px;\n\n\t.input-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.reference-widget {\n\t\tdisplay: flex;\n\t}\n\n\t&--empty-content .provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--input {\n\t\twidth: 99%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"result\">\n\t\t<div\n\t\t\tv-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\n\t\t\tv-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\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\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: var(--default-clickable-area);\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-inline-start: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"smart-picker-search\" :class=\"{ 'with-empty-content': showEmptyContent }\">\n\t\t<NcSelect\n\t\t\tref=\"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\n\t\t\t\t\tv-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\n\t\t\t\t\t\tv-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\">\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\n\t\t\tv-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-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 axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcSearchResult from './NcSearchResult.vue'\nimport { t } from '../../../l10n.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { delay, isUrl } from './utils.js'\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\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\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\n\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder of the search\n\t\t */\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\n\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\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\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\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.cancelSearchRequests()\n\t},\n\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\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\n\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tdelay(() => {\n\t\t\t\tthis.updateSearch()\n\t\t\t}, 500)()\n\t\t},\n\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\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\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\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\t\treturn this.searchOneProvider(pid)\n\t\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\n\t\tsearchOneProvider(providerId, cursor = null) {\n\t\t\tconst url = cursor === null\n\t\t\t\t? generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}', { providerId, term: this.searchQuery, limit: LIMIT })\n\t\t\t\t: generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}', { providerId, term: this.searchQuery, limit: LIMIT, cursor })\n\t\t\treturn axios.get(url, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].name = data.name\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].cursor = data.cursor\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].isPaginated = data.isPaginated\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].entries.push(...data.entries)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.smart-picker-search {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 0 16px 16px 16px;\n\t&.with-empty-content {\n\t\tmin-height: 400px;\n\t}\n\n\t.provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.search-result {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.group-name-icon,\n\t\t.option-simple-icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin: 0 20px 0 10px;\n\t\t}\n\n\t\t.custom-option {\n\t\t\theight: var(--default-clickable-area);\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div\n\t\tclass=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList\n\t\t\tv-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\n\t\t\tv-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\n\t\t\tv-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\n\t\t\tv-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement\n\t\t\t\t:provider=\"selectedProvider\"\n\t\t\t\tclass=\"custom-element\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { touchProvider } from '../../../functions/reference/providerHelper.ts'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\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\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\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\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\t},\n\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\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\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\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\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\t},\n\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\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\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\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\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t\t.custom-element {\n\t\t\tdisplay: flex;\n\t\t\toverflow-y: auto;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal\n\t\tv-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"true\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div\n\t\t\tref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton\n\t\t\t\tv-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\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t:aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker\n\t\t\t\tref=\"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 { emit } from '@nextcloud/event-bus'\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { t } from '../../../l10n.js'\nimport NcButton from '../../NcButton/index.js'\nimport NcModal from '../../NcModal/index.js'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './../../../functions/reference/customPickerElements.ts'\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\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\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\t// eslint-disable-next-line vue/no-boolean-default\n\t\t\tdefault: true,\n\t\t},\n\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\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\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\n\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\n\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\n\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\n\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\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\n\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\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\n\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal :deep(.modal-container) {\n\tdisplay: flex !important;\n}\n\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tinset-inline-start: 4px;\n\t}\n\t.close-button {\n\t\tinset-inline-end: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-inline-end: 8px;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.ts'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param providerId - Optional ID of initial selected provider\n * @param isInsideViewer - Should be true if this function is called while the Viewer is displayed\n */\nexport async function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string> {\n\tconst modalId = 'referencePickerModal'\n\tconst modalElement = document.createElement('div')\n\tmodalElement.id = modalId\n\tdocument.body.append(modalElement)\n\n\tconst { promise, reject, resolve } = Promise.withResolvers<string>()\n\tconst initialProvider = (providerId && getProvider(providerId)) || null\n\tconst View = Vue.extend(NcReferencePickerModal)\n\tconst view = new View({\n\t\tpropsData: {\n\t\t\tinitialProvider,\n\t\t\tisInsideViewer,\n\t\t},\n\t}).$mount(modalElement)\n\n\tview.$on('cancel', () => {\n\t\tview.$destroy()\n\t\treject(new Error('User cancellation'))\n\t})\n\tview.$on('submit', (link) => {\n\t\tview.$destroy()\n\t\tresolve(link)\n\t})\n\n\treturn promise\n}\n"],"names":["_sfc_main","ArrowLeftIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[2]}
|