@nextcloud/vue 8.0.0-beta.7 → 8.0.0-beta.9
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 +36 -0
- package/dist/Components/NcActionButton.cjs +49 -1
- package/dist/Components/NcActionButton.cjs.map +1 -1
- package/dist/Components/NcActionButton.mjs +49 -13
- package/dist/Components/NcActionButton.mjs.map +1 -1
- package/dist/Components/NcActionButtonGroup.cjs +30 -1
- package/dist/Components/NcActionButtonGroup.cjs.map +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +30 -9
- package/dist/Components/NcActionButtonGroup.mjs.map +1 -1
- package/dist/Components/NcActionCaption.cjs +29 -1
- package/dist/Components/NcActionCaption.cjs.map +1 -1
- package/dist/Components/NcActionCaption.mjs +29 -9
- package/dist/Components/NcActionCaption.mjs.map +1 -1
- package/dist/Components/NcActionCheckbox.cjs +78 -1
- package/dist/Components/NcActionCheckbox.cjs.map +1 -1
- package/dist/Components/NcActionCheckbox.mjs +80 -19
- package/dist/Components/NcActionCheckbox.mjs.map +1 -1
- package/dist/Components/NcActionInput.cjs +231 -1
- package/dist/Components/NcActionInput.cjs.map +1 -1
- package/dist/Components/NcActionInput.mjs +235 -70
- package/dist/Components/NcActionInput.mjs.map +1 -1
- package/dist/Components/NcActionLink.cjs +69 -1
- package/dist/Components/NcActionLink.cjs.map +1 -1
- package/dist/Components/NcActionLink.mjs +66 -14
- package/dist/Components/NcActionLink.mjs.map +1 -1
- package/dist/Components/NcActionRadio.cjs +85 -1
- package/dist/Components/NcActionRadio.cjs.map +1 -1
- package/dist/Components/NcActionRadio.mjs +87 -19
- package/dist/Components/NcActionRadio.mjs.map +1 -1
- package/dist/Components/NcActionRouter.cjs +42 -1
- package/dist/Components/NcActionRouter.cjs.map +1 -1
- package/dist/Components/NcActionRouter.mjs +41 -12
- package/dist/Components/NcActionRouter.mjs.map +1 -1
- package/dist/Components/NcActionSeparator.cjs +20 -1
- package/dist/Components/NcActionSeparator.cjs.map +1 -1
- package/dist/Components/NcActionSeparator.mjs +20 -9
- package/dist/Components/NcActionSeparator.mjs.map +1 -1
- package/dist/Components/NcActionText.cjs +23 -1
- package/dist/Components/NcActionText.cjs.map +1 -1
- package/dist/Components/NcActionText.mjs +21 -9
- package/dist/Components/NcActionText.mjs.map +1 -1
- package/dist/Components/NcActionTextEditable.cjs +81 -1
- package/dist/Components/NcActionTextEditable.cjs.map +1 -1
- package/dist/Components/NcActionTextEditable.mjs +79 -22
- package/dist/Components/NcActionTextEditable.mjs.map +1 -1
- package/dist/Components/NcActions.cjs +459 -1
- package/dist/Components/NcActions.cjs.map +1 -1
- package/dist/Components/NcActions.mjs +463 -100
- package/dist/Components/NcActions.mjs.map +1 -1
- package/dist/Components/NcAppContent.cjs +218 -1
- package/dist/Components/NcAppContent.cjs.map +1 -1
- package/dist/Components/NcAppContent.mjs +220 -66
- package/dist/Components/NcAppContent.mjs.map +1 -1
- package/dist/Components/NcAppContentDetails.cjs +19 -1
- package/dist/Components/NcAppContentDetails.cjs.map +1 -1
- package/dist/Components/NcAppContentDetails.mjs +18 -7
- package/dist/Components/NcAppContentDetails.mjs.map +1 -1
- package/dist/Components/NcAppContentList.cjs +29 -1
- package/dist/Components/NcAppContentList.cjs.map +1 -1
- package/dist/Components/NcAppContentList.mjs +29 -8
- package/dist/Components/NcAppContentList.mjs.map +1 -1
- package/dist/Components/NcAppNavigation.cjs +66 -1
- package/dist/Components/NcAppNavigation.cjs.map +1 -1
- package/dist/Components/NcAppNavigation.mjs +67 -28
- package/dist/Components/NcAppNavigation.mjs.map +1 -1
- package/dist/Components/NcAppNavigationCaption.cjs +44 -1
- package/dist/Components/NcAppNavigationCaption.cjs.map +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +40 -9
- package/dist/Components/NcAppNavigationCaption.mjs.map +1 -1
- package/dist/Components/NcAppNavigationIconBullet.cjs +40 -1
- package/dist/Components/NcAppNavigationIconBullet.cjs.map +1 -1
- package/dist/Components/NcAppNavigationIconBullet.mjs +40 -15
- package/dist/Components/NcAppNavigationIconBullet.mjs.map +1 -1
- package/dist/Components/NcAppNavigationItem.cjs +386 -1
- package/dist/Components/NcAppNavigationItem.cjs.map +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +382 -81
- package/dist/Components/NcAppNavigationItem.mjs.map +1 -1
- package/dist/Components/NcAppNavigationNew.cjs +50 -1
- package/dist/Components/NcAppNavigationNew.cjs.map +1 -1
- package/dist/Components/NcAppNavigationNew.mjs +51 -14
- package/dist/Components/NcAppNavigationNew.mjs.map +1 -1
- package/dist/Components/NcAppNavigationNewItem.cjs +87 -1
- package/dist/Components/NcAppNavigationNewItem.cjs.map +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +83 -17
- package/dist/Components/NcAppNavigationNewItem.mjs.map +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +69 -1
- package/dist/Components/NcAppNavigationSettings.cjs.map +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +60 -21
- package/dist/Components/NcAppNavigationSettings.mjs.map +1 -1
- package/dist/Components/NcAppNavigationSpacer.cjs +20 -1
- package/dist/Components/NcAppNavigationSpacer.cjs.map +1 -1
- package/dist/Components/NcAppNavigationSpacer.mjs +20 -9
- package/dist/Components/NcAppNavigationSpacer.mjs.map +1 -1
- package/dist/Components/NcAppNavigationToggle.cjs +25 -1
- package/dist/Components/NcAppNavigationToggle.cjs.map +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +21 -1
- package/dist/Components/NcAppNavigationToggle.mjs.map +1 -1
- package/dist/Components/NcAppSettingsDialog.cjs +156 -1
- package/dist/Components/NcAppSettingsDialog.cjs.map +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +160 -50
- package/dist/Components/NcAppSettingsDialog.mjs.map +1 -1
- package/dist/Components/NcAppSettingsSection.cjs +39 -1
- package/dist/Components/NcAppSettingsSection.cjs.map +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +39 -13
- package/dist/Components/NcAppSettingsSection.mjs.map +1 -1
- package/dist/Components/NcAppSidebar.cjs +443 -1
- package/dist/Components/NcAppSidebar.cjs.map +1 -1
- package/dist/Components/NcAppSidebar.mjs +409 -92
- package/dist/Components/NcAppSidebar.mjs.map +1 -1
- package/dist/Components/NcAppSidebarTab.cjs +83 -1
- package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
- package/dist/Components/NcAppSidebarTab.mjs +83 -20
- package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
- package/dist/Components/NcAvatar.cjs +3 -1
- package/dist/Components/NcAvatar.cjs.map +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.cjs +175 -1
- package/dist/Components/NcBreadcrumb.cjs.map +1 -1
- package/dist/Components/NcBreadcrumb.mjs +175 -35
- package/dist/Components/NcBreadcrumb.mjs.map +1 -1
- package/dist/Components/NcBreadcrumbs.cjs +372 -1
- package/dist/Components/NcBreadcrumbs.cjs.map +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +373 -142
- package/dist/Components/NcBreadcrumbs.mjs.map +1 -1
- package/dist/Components/NcButton.cjs +226 -1
- package/dist/Components/NcButton.cjs.map +1 -1
- package/dist/Components/NcButton.mjs +226 -24
- package/dist/Components/NcButton.mjs.map +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs +352 -1
- package/dist/Components/NcCheckboxRadioSwitch.cjs.map +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +360 -59
- package/dist/Components/NcCheckboxRadioSwitch.mjs.map +1 -1
- package/dist/Components/NcColorPicker.cjs +118 -1
- package/dist/Components/NcColorPicker.cjs.map +1 -1
- package/dist/Components/NcColorPicker.mjs +124 -46
- package/dist/Components/NcColorPicker.mjs.map +1 -1
- package/dist/Components/NcContent.cjs +25 -1
- package/dist/Components/NcContent.cjs.map +1 -1
- package/dist/Components/NcContent.mjs +24 -8
- package/dist/Components/NcContent.mjs.map +1 -1
- package/dist/Components/NcCounterBubble.cjs +47 -1
- package/dist/Components/NcCounterBubble.cjs.map +1 -1
- package/dist/Components/NcCounterBubble.mjs +46 -12
- package/dist/Components/NcCounterBubble.mjs.map +1 -1
- package/dist/Components/NcDashboardWidget.cjs +133 -1
- package/dist/Components/NcDashboardWidget.cjs.map +1 -1
- package/dist/Components/NcDashboardWidget.mjs +128 -39
- package/dist/Components/NcDashboardWidget.mjs.map +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +138 -1
- package/dist/Components/NcDashboardWidgetItem.cjs.map +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +130 -23
- package/dist/Components/NcDashboardWidgetItem.mjs.map +1 -1
- package/dist/Components/NcDateTime.cjs +125 -1
- package/dist/Components/NcDateTime.cjs.map +1 -1
- package/dist/Components/NcDateTime.mjs +126 -41
- package/dist/Components/NcDateTime.mjs.map +1 -1
- package/dist/Components/NcDateTimePicker.cjs +217 -1
- package/dist/Components/NcDateTimePicker.cjs.map +1 -1
- package/dist/Components/NcDateTimePicker.mjs +212 -53
- package/dist/Components/NcDateTimePicker.mjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.cjs +199 -1
- package/dist/Components/NcDateTimePickerNative.cjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +195 -58
- package/dist/Components/NcDateTimePickerNative.mjs.map +1 -1
- package/dist/Components/NcDialog.cjs +171 -0
- package/dist/Components/NcDialog.cjs.map +1 -0
- package/dist/Components/NcDialog.mjs +177 -0
- package/dist/Components/NcDialog.mjs.map +1 -0
- package/dist/Components/NcDialogButton.cjs +69 -0
- package/dist/Components/NcDialogButton.cjs.map +1 -0
- package/dist/Components/NcDialogButton.mjs +74 -0
- package/dist/Components/NcDialogButton.mjs.map +1 -0
- package/dist/Components/NcEllipsisedOption.cjs +74 -1
- package/dist/Components/NcEllipsisedOption.cjs.map +1 -1
- package/dist/Components/NcEllipsisedOption.mjs +73 -20
- package/dist/Components/NcEllipsisedOption.mjs.map +1 -1
- package/dist/Components/NcEmojiPicker.cjs +175 -1
- package/dist/Components/NcEmojiPicker.cjs.map +1 -1
- package/dist/Components/NcEmojiPicker.mjs +172 -52
- package/dist/Components/NcEmojiPicker.mjs.map +1 -1
- package/dist/Components/NcEmptyContent.cjs +54 -1
- package/dist/Components/NcEmptyContent.cjs.map +1 -1
- package/dist/Components/NcEmptyContent.mjs +46 -10
- package/dist/Components/NcEmptyContent.mjs.map +1 -1
- package/dist/Components/NcGuestContent.cjs +26 -1
- package/dist/Components/NcGuestContent.cjs.map +1 -1
- package/dist/Components/NcGuestContent.mjs +24 -11
- package/dist/Components/NcGuestContent.mjs.map +1 -1
- package/dist/Components/NcHeaderMenu.cjs +167 -1
- package/dist/Components/NcHeaderMenu.cjs.map +1 -1
- package/dist/Components/NcHeaderMenu.mjs +161 -49
- package/dist/Components/NcHeaderMenu.mjs.map +1 -1
- package/dist/Components/NcHighlight.cjs +3 -1
- package/dist/Components/NcHighlight.cjs.map +1 -1
- package/dist/Components/NcHighlight.mjs +1 -1
- package/dist/Components/NcIconSvgWrapper.cjs +59 -1
- package/dist/Components/NcIconSvgWrapper.cjs.map +1 -1
- package/dist/Components/NcIconSvgWrapper.mjs +60 -12
- package/dist/Components/NcIconSvgWrapper.mjs.map +1 -1
- package/dist/Components/NcInputField.cjs +210 -1
- package/dist/Components/NcInputField.cjs.map +1 -1
- package/dist/Components/NcInputField.mjs +211 -38
- package/dist/Components/NcInputField.mjs.map +1 -1
- package/dist/Components/NcListItem.cjs +237 -1
- package/dist/Components/NcListItem.cjs.map +1 -1
- package/dist/Components/NcListItem.mjs +233 -57
- package/dist/Components/NcListItem.mjs.map +1 -1
- package/dist/Components/NcListItemIcon.cjs +158 -1
- package/dist/Components/NcListItemIcon.cjs.map +1 -1
- package/dist/Components/NcListItemIcon.mjs +154 -30
- package/dist/Components/NcListItemIcon.mjs.map +1 -1
- package/dist/Components/NcLoadingIcon.cjs +54 -1
- package/dist/Components/NcLoadingIcon.cjs.map +1 -1
- package/dist/Components/NcLoadingIcon.mjs +54 -14
- package/dist/Components/NcLoadingIcon.mjs.map +1 -1
- package/dist/Components/NcModal.cjs +403 -1
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +392 -96
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcNoteCard.cjs +71 -1
- package/dist/Components/NcNoteCard.cjs.map +1 -1
- package/dist/Components/NcNoteCard.mjs +72 -38
- package/dist/Components/NcNoteCard.mjs.map +1 -1
- package/dist/Components/NcPasswordField.cjs +163 -1
- package/dist/Components/NcPasswordField.cjs.map +1 -1
- package/dist/Components/NcPasswordField.mjs +169 -54
- package/dist/Components/NcPasswordField.mjs.map +1 -1
- package/dist/Components/NcPopover.cjs +125 -1
- package/dist/Components/NcPopover.cjs.map +1 -1
- package/dist/Components/NcPopover.mjs +124 -41
- package/dist/Components/NcPopover.mjs.map +1 -1
- package/dist/Components/NcProgressBar.cjs +57 -1
- package/dist/Components/NcProgressBar.cjs.map +1 -1
- package/dist/Components/NcProgressBar.mjs +57 -15
- package/dist/Components/NcProgressBar.mjs.map +1 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs +184 -1
- package/dist/Components/NcRelatedResourcesPanel.cjs.map +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +183 -61
- package/dist/Components/NcRelatedResourcesPanel.mjs.map +1 -1
- package/dist/Components/NcRichContenteditable.cjs +478 -1
- package/dist/Components/NcRichContenteditable.cjs.map +1 -1
- package/dist/Components/NcRichContenteditable.mjs +447 -127
- package/dist/Components/NcRichContenteditable.mjs.map +1 -1
- package/dist/Components/NcRichText.cjs +44 -1
- package/dist/Components/NcRichText.cjs.map +1 -1
- package/dist/Components/NcRichText.mjs +25 -4
- package/dist/Components/NcRichText.mjs.map +1 -1
- package/dist/Components/NcSavingIndicatorIcon.cjs +59 -1
- package/dist/Components/NcSavingIndicatorIcon.cjs.map +1 -1
- package/dist/Components/NcSavingIndicatorIcon.mjs +56 -9
- package/dist/Components/NcSavingIndicatorIcon.mjs.map +1 -1
- package/dist/Components/NcSelect.cjs +411 -1
- package/dist/Components/NcSelect.cjs.map +1 -1
- package/dist/Components/NcSelect.mjs +405 -47
- package/dist/Components/NcSelect.mjs.map +1 -1
- package/dist/Components/NcSelectTags.cjs +251 -2
- package/dist/Components/NcSelectTags.cjs.map +1 -1
- package/dist/Components/NcSelectTags.mjs +236 -73
- package/dist/Components/NcSelectTags.mjs.map +1 -1
- package/dist/Components/NcSettingsInputText.cjs +90 -1
- package/dist/Components/NcSettingsInputText.cjs.map +1 -1
- package/dist/Components/NcSettingsInputText.mjs +88 -19
- package/dist/Components/NcSettingsInputText.mjs.map +1 -1
- package/dist/Components/NcSettingsSection.cjs +62 -1
- package/dist/Components/NcSettingsSection.cjs.map +1 -1
- package/dist/Components/NcSettingsSection.mjs +62 -15
- package/dist/Components/NcSettingsSection.mjs.map +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +26 -1
- package/dist/Components/NcSettingsSelectGroup.cjs.map +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +22 -1
- package/dist/Components/NcSettingsSelectGroup.mjs.map +1 -1
- package/dist/Components/NcTextArea.cjs +167 -0
- package/dist/Components/NcTextArea.cjs.map +1 -0
- package/dist/Components/NcTextArea.mjs +172 -0
- package/dist/Components/NcTextArea.mjs.map +1 -0
- package/dist/Components/NcTextField.cjs +98 -1
- package/dist/Components/NcTextField.cjs.map +1 -1
- package/dist/Components/NcTextField.mjs +102 -22
- package/dist/Components/NcTextField.mjs.map +1 -1
- package/dist/Components/NcTimezonePicker.cjs +4387 -614
- package/dist/Components/NcTimezonePicker.cjs.map +1 -1
- package/dist/Components/NcTimezonePicker.mjs +4372 -663
- package/dist/Components/NcTimezonePicker.mjs.map +1 -1
- package/dist/Components/NcUserBubble.cjs +189 -1
- package/dist/Components/NcUserBubble.cjs.map +1 -1
- package/dist/Components/NcUserBubble.mjs +190 -47
- package/dist/Components/NcUserBubble.mjs.map +1 -1
- package/dist/Components/NcVNodes.cjs +35 -1
- package/dist/Components/NcVNodes.cjs.map +1 -1
- package/dist/Components/NcVNodes.mjs +35 -8
- package/dist/Components/NcVNodes.mjs.map +1 -1
- package/dist/Directives/Focus.cjs +30 -1
- package/dist/Directives/Focus.cjs.map +1 -1
- package/dist/Directives/Focus.mjs +28 -5
- package/dist/Directives/Focus.mjs.map +1 -1
- package/dist/Directives/Linkify.cjs +8 -1
- package/dist/Directives/Linkify.cjs.map +1 -1
- package/dist/Directives/Linkify.mjs +6 -6
- package/dist/Directives/Linkify.mjs.map +1 -1
- package/dist/Directives/Tooltip.cjs +37 -1
- package/dist/Directives/Tooltip.cjs.map +1 -1
- package/dist/Directives/Tooltip.mjs +29 -4
- package/dist/Directives/Tooltip.mjs.map +1 -1
- package/dist/Functions/emoji.cjs +36 -1
- package/dist/Functions/emoji.cjs.map +1 -1
- package/dist/Functions/emoji.mjs +32 -11
- package/dist/Functions/emoji.mjs.map +1 -1
- package/dist/Functions/usernameToColor.cjs +39 -1
- package/dist/Functions/usernameToColor.cjs.map +1 -1
- package/dist/Functions/usernameToColor.mjs +32 -11
- package/dist/Functions/usernameToColor.mjs.map +1 -1
- package/dist/Mixins/clickOutsideOptions.cjs +40 -1
- package/dist/Mixins/clickOutsideOptions.cjs.map +1 -1
- package/dist/Mixins/clickOutsideOptions.mjs +39 -4
- package/dist/Mixins/clickOutsideOptions.mjs.map +1 -1
- package/dist/Mixins/isFullscreen.cjs +44 -1
- package/dist/Mixins/isFullscreen.cjs.map +1 -1
- package/dist/Mixins/isFullscreen.mjs +42 -11
- package/dist/Mixins/isFullscreen.mjs.map +1 -1
- package/dist/Mixins/isMobile.cjs +87 -1
- package/dist/Mixins/isMobile.cjs.map +1 -1
- package/dist/Mixins/isMobile.mjs +86 -11
- package/dist/Mixins/isMobile.mjs.map +1 -1
- package/dist/Mixins/richEditor.cjs +10 -1
- package/dist/Mixins/richEditor.cjs.map +1 -1
- package/dist/Mixins/richEditor.mjs +2 -2
- package/dist/assets/NcAppNavigationToggle-2cc5b864.css +35 -0
- package/dist/assets/NcInputConfirmCancel-2ba60a52.css +51 -0
- package/dist/assets/NcMentionBubble-6e887c5f.css +81 -0
- package/dist/assets/{index-23405a74.css → NcSettingsSelectGroup-0d38d76b.css} +15 -2
- package/dist/assets/index-0adc989c.css +96 -0
- package/dist/assets/index-1151d229.css +41 -0
- package/dist/assets/index-1beccc92.css +140 -0
- package/dist/assets/index-236620b0.css +150 -0
- package/dist/assets/{index-823ec431.css → index-24f6c355.css} +67 -3
- package/dist/assets/index-2a8e4ca1.css +540 -0
- package/dist/assets/{index-29421a2e.css → index-2d4de2fc.css} +19 -2
- package/dist/assets/{NcSettingsSelectGroup-e88cbf1a.css → index-30e099f7.css} +17 -2
- package/dist/assets/index-34dfc54e.css +88 -0
- package/dist/assets/index-3764a447.css +99 -0
- package/dist/assets/index-400b48a6.css +60 -0
- package/dist/assets/{index-1d28ce70.css → index-441b6552.css} +25 -2
- package/dist/assets/{NcInputConfirmCancel-c1d05dd9.css → index-4611417f.css} +31 -2
- package/dist/assets/index-4a775ba1.css +204 -0
- package/dist/assets/index-4b75fe20.css +79 -0
- package/dist/assets/index-4ebacc78.css +107 -0
- package/dist/assets/index-4ef32afd.css +128 -0
- package/dist/assets/index-50b0766d.css +202 -0
- package/dist/assets/index-574438d6.css +884 -0
- package/dist/assets/index-57b305d3.css +44 -0
- package/dist/assets/index-5ee8a575.css +295 -0
- package/dist/assets/index-5fa0ac5a.css +46 -0
- package/dist/assets/index-61b63a8f.css +57 -0
- package/dist/assets/index-6416f636.css +83 -0
- package/dist/assets/index-6c47e88a.css +46 -0
- package/dist/assets/index-6f721577.css +80 -0
- package/dist/assets/index-73867d38.css +133 -0
- package/dist/assets/index-76a58945.css +68 -0
- package/dist/assets/index-76dd9f11.css +5 -0
- package/dist/assets/index-7813bab3.css +66 -0
- package/dist/assets/index-793eae6b.css +234 -0
- package/dist/assets/index-8304db49.css +129 -0
- package/dist/assets/index-8aa4712e.css +51 -0
- package/dist/assets/{index-3e8ea1d6.css → index-8f52a20f.css} +16 -2
- package/dist/assets/index-93ad846c.css +259 -0
- package/dist/assets/index-9dcf6260.css +151 -0
- package/dist/assets/index-9e44e336.css +59 -0
- package/dist/assets/index-9e9587e1.css +45 -0
- package/dist/assets/index-a2b51bce.css +47 -0
- package/dist/assets/index-a2d55f92.css +204 -0
- package/dist/assets/index-a9e4fe04.css +46 -0
- package/dist/assets/index-abb90c97.css +164 -0
- package/dist/assets/{index-3b76db9b.css → index-af72a30b.css} +78 -3
- package/dist/assets/{NcAppNavigationToggle-110970cd.css → index-b8f13a1f.css} +13 -2
- package/dist/assets/index-b991895f.css +87 -0
- package/dist/assets/{index-25b448e3.css → index-baf8711a.css} +67 -3
- package/dist/assets/index-c06ad941.css +175 -0
- package/dist/assets/index-c5ae3bc4.css +303 -0
- package/dist/assets/index-c6f0da2e.css +69 -0
- package/dist/assets/index-d211cae8.css +93 -0
- package/dist/assets/index-d646553d.css +41 -0
- package/dist/assets/index-dc612aa3.css +112 -0
- package/dist/assets/index-e7c55791.css +243 -0
- package/dist/assets/index-e7eadba7.css +82 -0
- package/dist/assets/index-e828b286.css +76 -0
- package/dist/assets/index-ed4adf1d.css +115 -0
- package/dist/assets/{index-19f059f6.css → index-edee3304.css} +33 -2
- package/dist/assets/index-eea65531.css +129 -0
- package/dist/assets/index-f85aa003.css +78 -0
- package/dist/assets/index-fc61f2d8.css +41 -0
- package/dist/assets/referencePickerModal-3a127978.css +482 -0
- package/dist/chunks/GenColors-38246c38.mjs +46 -0
- package/dist/chunks/{GenColors-8097de04.cjs.map → GenColors-38246c38.mjs.map} +1 -1
- package/dist/chunks/GenColors-eedcc70a.cjs +45 -0
- package/dist/chunks/{GenColors-85cb6194.mjs.map → GenColors-eedcc70a.cjs.map} +1 -1
- package/dist/{assets/index-cb18d6f3.css → chunks/GenRandomId-c214d235.cjs} +8 -5
- package/dist/chunks/{GenRandomId-67df40eb.cjs.map → GenRandomId-c214d235.cjs.map} +1 -1
- package/dist/chunks/GenRandomId-cb9ccebe.mjs +25 -0
- package/dist/chunks/{GenRandomId-1e1b509a.mjs.map → GenRandomId-cb9ccebe.mjs.map} +1 -1
- package/dist/chunks/Linkify-39f20c9a.mjs +33 -0
- package/dist/chunks/{Linkify-a0faf443.mjs.map → Linkify-39f20c9a.mjs.map} +1 -1
- package/dist/chunks/Linkify-40cdd635.cjs +32 -0
- package/dist/chunks/{Linkify-a4db36a9.cjs.map → Linkify-40cdd635.cjs.map} +1 -1
- package/dist/chunks/NcAppNavigationToggle-841d3015.cjs +49 -0
- package/dist/chunks/NcAppNavigationToggle-841d3015.cjs.map +1 -0
- package/dist/chunks/NcAppNavigationToggle-e358aa47.mjs +55 -0
- package/dist/chunks/NcAppNavigationToggle-e358aa47.mjs.map +1 -0
- package/dist/chunks/NcInputConfirmCancel-44052477.mjs +96 -0
- package/dist/chunks/NcInputConfirmCancel-44052477.mjs.map +1 -0
- package/dist/chunks/NcInputConfirmCancel-6bea0fdc.cjs +90 -0
- package/dist/chunks/NcInputConfirmCancel-6bea0fdc.cjs.map +1 -0
- package/dist/chunks/NcRichText-332fe454.cjs +289 -0
- package/dist/chunks/{NcRichText-bb9d3893.mjs.map → NcRichText-332fe454.cjs.map} +1 -1
- package/dist/chunks/NcRichText-8fda53c8.mjs +302 -0
- package/dist/chunks/{NcRichText-3c54a3cc.cjs.map → NcRichText-8fda53c8.mjs.map} +1 -1
- package/dist/chunks/NcSettingsSelectGroup-a5ff8c36.cjs +183 -0
- package/dist/chunks/NcSettingsSelectGroup-a5ff8c36.cjs.map +1 -0
- package/dist/chunks/NcSettingsSelectGroup-fdd3309c.mjs +192 -0
- package/dist/chunks/NcSettingsSelectGroup-fdd3309c.mjs.map +1 -0
- package/dist/chunks/ScopeComponent-9519afcc.mjs +29 -0
- package/dist/chunks/{ScopeComponent-1f3a7612.mjs.map → ScopeComponent-9519afcc.mjs.map} +1 -1
- package/dist/chunks/ScopeComponent-e060526a.cjs +28 -0
- package/dist/chunks/{ScopeComponent-4b8bd1ee.cjs.map → ScopeComponent-e060526a.cjs.map} +1 -1
- package/dist/chunks/_plugin-vue2_normalizer-71e2aa87.mjs +32 -0
- package/dist/chunks/_plugin-vue2_normalizer-71e2aa87.mjs.map +1 -0
- package/dist/chunks/_plugin-vue2_normalizer-7f9efb60.cjs +31 -0
- package/dist/chunks/_plugin-vue2_normalizer-7f9efb60.cjs.map +1 -0
- package/dist/chunks/actionGlobal-8c1c28c9.mjs +50 -0
- package/dist/chunks/{actionGlobal-cda46023.mjs.map → actionGlobal-8c1c28c9.mjs.map} +1 -1
- package/dist/chunks/actionGlobal-9e29e11b.cjs +49 -0
- package/dist/chunks/{actionGlobal-ec7003e8.cjs.map → actionGlobal-9e29e11b.cjs.map} +1 -1
- package/dist/chunks/actionText-54bc24a6.cjs +120 -0
- package/dist/chunks/{actionText-bef01778.cjs.map → actionText-54bc24a6.cjs.map} +1 -1
- package/dist/chunks/actionText-a64be267.mjs +121 -0
- package/dist/chunks/{actionText-6c35d3fc.mjs.map → actionText-a64be267.mjs.map} +1 -1
- package/dist/chunks/focusTrap-14985831.cjs +26 -0
- package/dist/chunks/{focusTrap-173aba65.mjs.map → focusTrap-14985831.cjs.map} +1 -1
- package/dist/chunks/focusTrap-5d0f71d4.mjs +27 -0
- package/dist/chunks/{focusTrap-139520e2.cjs.map → focusTrap-5d0f71d4.mjs.map} +1 -1
- package/dist/chunks/index-032137a6.cjs +468 -0
- package/dist/chunks/index-032137a6.cjs.map +1 -0
- package/dist/chunks/index-20a9ace9.mjs +149 -0
- package/dist/chunks/{index-cd3f1f8f.mjs.map → index-20a9ace9.mjs.map} +1 -1
- package/dist/chunks/index-4398f925.cjs +149 -0
- package/dist/chunks/{index-858938bd.cjs.map → index-4398f925.cjs.map} +1 -1
- package/dist/chunks/index-5f2a5f57.mjs +155 -0
- package/dist/chunks/{index-377488aa.mjs.map → index-5f2a5f57.mjs.map} +1 -1
- package/dist/chunks/index-e894376a.cjs +148 -0
- package/dist/chunks/{index-df3f51c6.cjs.map → index-e894376a.cjs.map} +1 -1
- package/dist/chunks/index-fb2ee22c.mjs +481 -0
- package/dist/chunks/index-fb2ee22c.mjs.map +1 -0
- package/dist/chunks/l10n-05a09c66.mjs +31 -0
- package/dist/chunks/l10n-05a09c66.mjs.map +1 -0
- package/dist/chunks/l10n-9aa6482d.mjs +10 -0
- package/dist/chunks/l10n-9aa6482d.mjs.map +1 -0
- package/dist/chunks/l10n-b1d264c7.cjs +29 -0
- package/dist/chunks/l10n-b1d264c7.cjs.map +1 -0
- package/dist/chunks/l10n-c7bd0ea6.cjs +8 -0
- package/dist/chunks/l10n-c7bd0ea6.cjs.map +1 -0
- package/dist/chunks/logger-3612e664.mjs +25 -0
- package/dist/chunks/{logger-01af1a78.cjs.map → logger-3612e664.mjs.map} +1 -1
- package/dist/chunks/logger-4998b668.cjs +24 -0
- package/dist/chunks/{logger-ccc7ee65.mjs.map → logger-4998b668.cjs.map} +1 -1
- package/dist/chunks/referencePickerModal-279a483d.cjs +858 -0
- package/dist/chunks/referencePickerModal-279a483d.cjs.map +1 -0
- package/dist/chunks/referencePickerModal-443a4c57.mjs +877 -0
- package/dist/chunks/referencePickerModal-443a4c57.mjs.map +1 -0
- package/dist/index.cjs +257 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +301 -150
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -4
- package/dist/assets/NcMentionBubble-67378a12.css +0 -21
- package/dist/assets/index-2cedaf24.css +0 -21
- package/dist/assets/index-30d74459.css +0 -42
- package/dist/assets/index-317f55be.css +0 -21
- package/dist/assets/index-34f6bb3f.css +0 -21
- package/dist/assets/index-37970f20.css +0 -21
- package/dist/assets/index-3aba62de.css +0 -21
- package/dist/assets/index-47fab7bf.css +0 -21
- package/dist/assets/index-49a0d570.css +0 -21
- package/dist/assets/index-4a4c1700.css +0 -21
- package/dist/assets/index-4a4c2637.css +0 -21
- package/dist/assets/index-4efbac36.css +0 -21
- package/dist/assets/index-6140ff62.css +0 -21
- package/dist/assets/index-66b19339.css +0 -21
- package/dist/assets/index-6cb0dc4a.css +0 -21
- package/dist/assets/index-6f63d18f.css +0 -42
- package/dist/assets/index-76287c8f.css +0 -21
- package/dist/assets/index-7a7195d0.css +0 -21
- package/dist/assets/index-7e084b52.css +0 -21
- package/dist/assets/index-7f55fed2.css +0 -21
- package/dist/assets/index-7ffde264.css +0 -21
- package/dist/assets/index-81f5e4c8.css +0 -21
- package/dist/assets/index-82b5969a.css +0 -21
- package/dist/assets/index-852d8576.css +0 -21
- package/dist/assets/index-8f58dd75.css +0 -21
- package/dist/assets/index-935fa6f9.css +0 -42
- package/dist/assets/index-939ba6f0.css +0 -21
- package/dist/assets/index-a17dfbc4.css +0 -21
- package/dist/assets/index-a4a40fa3.css +0 -21
- package/dist/assets/index-a50a8de6.css +0 -1
- package/dist/assets/index-a513dcd5.css +0 -21
- package/dist/assets/index-a8c5cf75.css +0 -21
- package/dist/assets/index-a999ba9f.css +0 -21
- package/dist/assets/index-afc15e11.css +0 -21
- package/dist/assets/index-b814f5fa.css +0 -21
- package/dist/assets/index-ba6ad1b4.css +0 -21
- package/dist/assets/index-bf10e8e1.css +0 -21
- package/dist/assets/index-bf46edd7.css +0 -21
- package/dist/assets/index-c6d7f3b0.css +0 -21
- package/dist/assets/index-c736204a.css +0 -21
- package/dist/assets/index-cb76ef23.css +0 -21
- package/dist/assets/index-cc70a006.css +0 -21
- package/dist/assets/index-dd464a52.css +0 -21
- package/dist/assets/index-e0ceef85.css +0 -21
- package/dist/assets/index-ecdb616f.css +0 -42
- package/dist/assets/index-ee410fad.css +0 -21
- package/dist/assets/index-ef0bca81.css +0 -42
- package/dist/assets/index-f1030e54.css +0 -21
- package/dist/assets/index-f6ca40ca.css +0 -21
- package/dist/assets/index-f8466b88.css +0 -21
- package/dist/assets/referencePickerModal-41e4705a.css +0 -21
- package/dist/chunks/GenColors-8097de04.cjs +0 -1
- package/dist/chunks/GenColors-85cb6194.mjs +0 -25
- package/dist/chunks/GenRandomId-1e1b509a.mjs +0 -4
- package/dist/chunks/GenRandomId-67df40eb.cjs +0 -1
- package/dist/chunks/IsMobileState-151fc57d.cjs +0 -1
- package/dist/chunks/IsMobileState-151fc57d.cjs.map +0 -1
- package/dist/chunks/IsMobileState-e1fe5f58.mjs +0 -15
- package/dist/chunks/IsMobileState-e1fe5f58.mjs.map +0 -1
- package/dist/chunks/Linkify-a0faf443.mjs +0 -5
- package/dist/chunks/Linkify-a4db36a9.cjs +0 -1
- package/dist/chunks/NcAppNavigationToggle-5f3b9b9a.cjs +0 -1
- package/dist/chunks/NcAppNavigationToggle-5f3b9b9a.cjs.map +0 -1
- package/dist/chunks/NcAppNavigationToggle-86cc2542.mjs +0 -23
- package/dist/chunks/NcAppNavigationToggle-86cc2542.mjs.map +0 -1
- package/dist/chunks/NcInputConfirmCancel-0cd93e0e.mjs +0 -43
- package/dist/chunks/NcInputConfirmCancel-0cd93e0e.mjs.map +0 -1
- package/dist/chunks/NcInputConfirmCancel-17c8ddfb.cjs +0 -1
- package/dist/chunks/NcInputConfirmCancel-17c8ddfb.cjs.map +0 -1
- package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_357e6d0e_lang-072bbb05.cjs.map +0 -1
- package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_357e6d0e_lang-55016398.mjs.map +0 -1
- package/dist/chunks/NcRichText-3c54a3cc.cjs +0 -1
- package/dist/chunks/NcRichText-bb9d3893.mjs +0 -123
- package/dist/chunks/NcSettingsSelectGroup-0be1fe91.mjs +0 -58
- package/dist/chunks/NcSettingsSelectGroup-0be1fe91.mjs.map +0 -1
- package/dist/chunks/NcSettingsSelectGroup-62ca94a9.cjs +0 -1
- package/dist/chunks/NcSettingsSelectGroup-62ca94a9.cjs.map +0 -1
- package/dist/chunks/ScopeComponent-1f3a7612.mjs +0 -8
- package/dist/chunks/ScopeComponent-4b8bd1ee.cjs +0 -1
- package/dist/chunks/_plugin-vue2_normalizer-5b4c43a4.mjs +0 -24
- package/dist/chunks/_plugin-vue2_normalizer-5b4c43a4.mjs.map +0 -1
- package/dist/chunks/_plugin-vue2_normalizer-764a4c12.cjs +0 -1
- package/dist/chunks/_plugin-vue2_normalizer-764a4c12.cjs.map +0 -1
- package/dist/chunks/actionGlobal-cda46023.mjs +0 -15
- package/dist/chunks/actionGlobal-ec7003e8.cjs +0 -1
- package/dist/chunks/actionText-6c35d3fc.mjs +0 -23
- package/dist/chunks/actionText-bef01778.cjs +0 -1
- package/dist/chunks/focusTrap-139520e2.cjs +0 -1
- package/dist/chunks/focusTrap-173aba65.mjs +0 -6
- package/dist/chunks/index-197226c7.mjs +0 -171
- package/dist/chunks/index-197226c7.mjs.map +0 -1
- package/dist/chunks/index-377488aa.mjs +0 -46
- package/dist/chunks/index-858938bd.cjs +0 -3
- package/dist/chunks/index-cd3f1f8f.mjs +0 -43
- package/dist/chunks/index-cebd6e80.cjs +0 -1
- package/dist/chunks/index-cebd6e80.cjs.map +0 -1
- package/dist/chunks/index-df3f51c6.cjs +0 -1
- package/dist/chunks/l10n-05baf7da.mjs +0 -5
- package/dist/chunks/l10n-05baf7da.mjs.map +0 -1
- package/dist/chunks/l10n-46d0c1c0.cjs +0 -1
- package/dist/chunks/l10n-46d0c1c0.cjs.map +0 -1
- package/dist/chunks/l10n-9a5a6afc.mjs +0 -18
- package/dist/chunks/l10n-9a5a6afc.mjs.map +0 -1
- package/dist/chunks/l10n-dacb6440.cjs +0 -1
- package/dist/chunks/l10n-dacb6440.cjs.map +0 -1
- package/dist/chunks/logger-01af1a78.cjs +0 -1
- package/dist/chunks/logger-ccc7ee65.mjs +0 -5
- package/dist/chunks/referencePickerModal-6120a321.cjs +0 -1
- package/dist/chunks/referencePickerModal-6120a321.cjs.map +0 -1
- package/dist/chunks/referencePickerModal-d0573462.mjs +0 -428
- package/dist/chunks/referencePickerModal-d0573462.mjs.map +0 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { N as b } from "./referencePickerModal-443a4c57.mjs";
|
|
2
|
+
import h from "@nextcloud/axios";
|
|
3
|
+
import { generateOcsUrl as d } from "@nextcloud/router";
|
|
4
|
+
import { n as g } from "./_plugin-vue2_normalizer-71e2aa87.mjs";
|
|
5
|
+
import { visit as _, SKIP as v } from "unist-util-visit";
|
|
6
|
+
import { u as l } from "unist-builder";
|
|
7
|
+
import { unified as y } from "unified";
|
|
8
|
+
import w from "remark-parse";
|
|
9
|
+
import R from "remark-breaks";
|
|
10
|
+
import N from "remark-rehype";
|
|
11
|
+
import A from "rehype-react";
|
|
12
|
+
import L from "rehype-external-links";
|
|
13
|
+
const m = /(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig, x = /(\s|\(|^)((https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z0-9]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig, $ = {
|
|
14
|
+
name: "NcReferenceList",
|
|
15
|
+
components: {
|
|
16
|
+
NcReferenceWidget: b
|
|
17
|
+
},
|
|
18
|
+
props: {
|
|
19
|
+
text: {
|
|
20
|
+
type: String,
|
|
21
|
+
default: ""
|
|
22
|
+
},
|
|
23
|
+
referenceData: {
|
|
24
|
+
type: Object,
|
|
25
|
+
default: null
|
|
26
|
+
},
|
|
27
|
+
limit: {
|
|
28
|
+
type: Number,
|
|
29
|
+
default: 1
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
data() {
|
|
33
|
+
return {
|
|
34
|
+
references: null,
|
|
35
|
+
loading: !0
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
computed: {
|
|
39
|
+
isVisible() {
|
|
40
|
+
return this.loading || this.displayedReferences;
|
|
41
|
+
},
|
|
42
|
+
values() {
|
|
43
|
+
return this.referenceData ? this.referenceData : this.references ? Object.values(this.references) : [];
|
|
44
|
+
},
|
|
45
|
+
firstReference() {
|
|
46
|
+
var e;
|
|
47
|
+
return (e = this.values[0]) != null ? e : null;
|
|
48
|
+
},
|
|
49
|
+
displayedReferences() {
|
|
50
|
+
return this.values.slice(0, this.limit);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
watch: {
|
|
54
|
+
text: "fetch"
|
|
55
|
+
},
|
|
56
|
+
mounted() {
|
|
57
|
+
this.fetch();
|
|
58
|
+
},
|
|
59
|
+
methods: {
|
|
60
|
+
fetch() {
|
|
61
|
+
if (this.loading = !0, this.referenceData) {
|
|
62
|
+
this.loading = !1;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!new RegExp(m).exec(this.text)) {
|
|
66
|
+
this.loading = !1;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
this.resolve().then((e) => {
|
|
70
|
+
this.references = e.data.ocs.data.references, this.loading = !1;
|
|
71
|
+
}).catch((e) => {
|
|
72
|
+
console.error("Failed to extract references", e), this.loading = !1;
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
resolve() {
|
|
76
|
+
const e = new RegExp(m).exec(this.text.trim());
|
|
77
|
+
return this.limit === 1 && e ? h.get(d("references/resolve", 2) + `?reference=${encodeURIComponent(e[0])}`) : h.post(d("references/extract", 2), {
|
|
78
|
+
text: this.text,
|
|
79
|
+
resolve: !0,
|
|
80
|
+
limit: this.limit
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
var j = function() {
|
|
86
|
+
var s = this, t = s._self._c;
|
|
87
|
+
return s.isVisible ? t("div", { staticClass: "widgets--list", class: { "icon-loading": s.loading } }, s._l(s.displayedReferences, function(r) {
|
|
88
|
+
var i;
|
|
89
|
+
return t("div", { key: (i = r == null ? void 0 : r.openGraphObject) == null ? void 0 : i.id }, [t("NcReferenceWidget", { attrs: { reference: r } })], 1);
|
|
90
|
+
}), 0) : s._e();
|
|
91
|
+
}, T = [], O = /* @__PURE__ */ g(
|
|
92
|
+
$,
|
|
93
|
+
j,
|
|
94
|
+
T,
|
|
95
|
+
!1,
|
|
96
|
+
null,
|
|
97
|
+
"bd1fbb02",
|
|
98
|
+
null,
|
|
99
|
+
null
|
|
100
|
+
);
|
|
101
|
+
const f = O.exports, C = {
|
|
102
|
+
name: "NcLink",
|
|
103
|
+
props: {
|
|
104
|
+
href: {
|
|
105
|
+
type: String,
|
|
106
|
+
required: !0
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
render(e) {
|
|
110
|
+
return e("a", {
|
|
111
|
+
attrs: {
|
|
112
|
+
href: this.href,
|
|
113
|
+
rel: "noopener noreferrer",
|
|
114
|
+
target: "_blank",
|
|
115
|
+
class: "rich-text--external-link"
|
|
116
|
+
}
|
|
117
|
+
}, [this.href.trim()]);
|
|
118
|
+
}
|
|
119
|
+
}, M = function({ autolink: e, useMarkdown: s }) {
|
|
120
|
+
return function(t) {
|
|
121
|
+
!s || !e || _(t, (r) => r.type === "text", (r, i, n) => {
|
|
122
|
+
let c = k(r.value);
|
|
123
|
+
return c = c.map((a) => typeof a == "string" ? l("text", a) : l("link", {
|
|
124
|
+
url: a.props.href
|
|
125
|
+
}, [l("text", a.props.href)])).filter((a) => a), n.children.splice(i, 1, ...c.flat()), [v, i + c.flat().length];
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
}, k = (e) => {
|
|
129
|
+
let s = x.exec(e);
|
|
130
|
+
const t = [];
|
|
131
|
+
let r = 0;
|
|
132
|
+
for (; s !== null; ) {
|
|
133
|
+
let n = s[2], c, a = e.substring(r, s.index + s[1].length);
|
|
134
|
+
n[0] === " " && (a += n[0], n = n.substring(1).trim());
|
|
135
|
+
const o = n[n.length - 1];
|
|
136
|
+
(o === "." || o === "," || o === ";" || s[0][0] === "(" && o === ")") && (n = n.substring(0, n.length - 1), c = o), t.push(a), t.push({ component: C, props: { href: n } }), c && t.push(c), r = s.index + s[0].length, s = x.exec(e);
|
|
137
|
+
}
|
|
138
|
+
t.push(e.substring(r));
|
|
139
|
+
const i = t.map((n) => typeof n == "string" ? n : n.props.href).join("");
|
|
140
|
+
return e === i ? t : (console.error("Failed to reassemble the chunked text: " + e), e);
|
|
141
|
+
}, D = function() {
|
|
142
|
+
return function(e) {
|
|
143
|
+
_(e, (t) => t.type === "text", s);
|
|
144
|
+
function s(t, r, i) {
|
|
145
|
+
const n = t.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((c, a, o) => {
|
|
146
|
+
const p = c.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
147
|
+
if (!p)
|
|
148
|
+
return l("text", c);
|
|
149
|
+
const [, u] = p;
|
|
150
|
+
return l("element", {
|
|
151
|
+
tagName: `#${u}`
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
i.children.splice(r, 1, ...n);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}, E = ({ h: e, context: s }, t) => (s.autolink && (t = k(t)), Array.isArray(t) ? t.map((r) => {
|
|
158
|
+
if (typeof r == "string")
|
|
159
|
+
return r;
|
|
160
|
+
const { component: i, props: n } = r, c = i.name === "NcLink" ? void 0 : "rich-text--component";
|
|
161
|
+
return e(i, {
|
|
162
|
+
props: n,
|
|
163
|
+
class: c
|
|
164
|
+
});
|
|
165
|
+
}) : t), P = {
|
|
166
|
+
name: "NcRichText",
|
|
167
|
+
components: {
|
|
168
|
+
NcReferenceList: f
|
|
169
|
+
},
|
|
170
|
+
props: {
|
|
171
|
+
text: {
|
|
172
|
+
type: String,
|
|
173
|
+
default: ""
|
|
174
|
+
},
|
|
175
|
+
arguments: {
|
|
176
|
+
type: Object,
|
|
177
|
+
default: () => ({})
|
|
178
|
+
},
|
|
179
|
+
referenceLimit: {
|
|
180
|
+
type: Number,
|
|
181
|
+
default: 0
|
|
182
|
+
},
|
|
183
|
+
/** Provide data upfront to avoid extra http request */
|
|
184
|
+
references: {
|
|
185
|
+
type: Object,
|
|
186
|
+
default: null
|
|
187
|
+
},
|
|
188
|
+
markdownCssClasses: {
|
|
189
|
+
type: Object,
|
|
190
|
+
default: () => ({
|
|
191
|
+
a: "rich-text--external-link",
|
|
192
|
+
ol: "rich-text--ordered-list",
|
|
193
|
+
ul: "rich-text--un-ordered-list",
|
|
194
|
+
li: "rich-text--list-item",
|
|
195
|
+
strong: "rich-text--strong",
|
|
196
|
+
em: "rich-text--italic",
|
|
197
|
+
h1: "rich-text--heading rich-text--heading-1",
|
|
198
|
+
h2: "rich-text--heading rich-text--heading-2",
|
|
199
|
+
h3: "rich-text--heading rich-text--heading-3",
|
|
200
|
+
h4: "rich-text--heading rich-text--heading-4",
|
|
201
|
+
h5: "rich-text--heading rich-text--heading-5",
|
|
202
|
+
h6: "rich-text--heading rich-text--heading-6",
|
|
203
|
+
hr: "rich-text--hr",
|
|
204
|
+
table: "rich-text--table",
|
|
205
|
+
pre: "rich-text--pre",
|
|
206
|
+
code: "rich-text--code",
|
|
207
|
+
blockquote: "rich-text--blockquote"
|
|
208
|
+
})
|
|
209
|
+
},
|
|
210
|
+
useMarkdown: {
|
|
211
|
+
type: Boolean,
|
|
212
|
+
default: !1
|
|
213
|
+
},
|
|
214
|
+
autolink: {
|
|
215
|
+
type: Boolean,
|
|
216
|
+
default: !0
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
methods: {
|
|
220
|
+
renderPlaintext(e) {
|
|
221
|
+
const s = this, t = this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(function(r, i, n) {
|
|
222
|
+
const c = r.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
223
|
+
if (!c)
|
|
224
|
+
return E({ h: e, context: s }, r);
|
|
225
|
+
const a = c[1], o = s.arguments[a];
|
|
226
|
+
if (typeof o == "object") {
|
|
227
|
+
const { component: p, props: u } = o;
|
|
228
|
+
return e(p, {
|
|
229
|
+
props: u,
|
|
230
|
+
class: "rich-text--component"
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return o ? e("span", { class: "rich-text--fallback" }, o) : r;
|
|
234
|
+
});
|
|
235
|
+
return e("div", { class: "rich-text--wrapper" }, [
|
|
236
|
+
e("div", {}, t.flat()),
|
|
237
|
+
this.referenceLimit > 0 ? e("div", { class: "rich-text--reference-widget" }, [
|
|
238
|
+
e(f, { props: { text: this.text, referenceData: this.references } })
|
|
239
|
+
]) : null
|
|
240
|
+
]);
|
|
241
|
+
},
|
|
242
|
+
renderMarkdown(e) {
|
|
243
|
+
const s = y().use(w).use(M, {
|
|
244
|
+
autolink: this.autolink,
|
|
245
|
+
useMarkdown: this.useMarkdown
|
|
246
|
+
}).use(R).use(N, {
|
|
247
|
+
handlers: {
|
|
248
|
+
component(t, r) {
|
|
249
|
+
return t(r, r.component, { value: r.value });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}).use(D).use(L, {
|
|
253
|
+
target: "_blank",
|
|
254
|
+
rel: ["noopener noreferrer"]
|
|
255
|
+
}).use(A, {
|
|
256
|
+
createElement: (t, r, i) => {
|
|
257
|
+
if (i = i == null ? void 0 : i.map(
|
|
258
|
+
(c) => typeof c == "string" ? c.replace(/</gmi, "<") : c
|
|
259
|
+
), !t.startsWith("#"))
|
|
260
|
+
return e(t, r, i);
|
|
261
|
+
const n = this.arguments[t.slice(1)];
|
|
262
|
+
return n ? n.component ? e(
|
|
263
|
+
n.component,
|
|
264
|
+
{
|
|
265
|
+
attrs: r,
|
|
266
|
+
props: n.props,
|
|
267
|
+
class: "rich-text--component"
|
|
268
|
+
},
|
|
269
|
+
i
|
|
270
|
+
) : e("span", r, [n]) : e("span", { attrs: r, class: "rich-text--fallback" }, [`{${t.slice(1)}}`]);
|
|
271
|
+
},
|
|
272
|
+
prefix: !1
|
|
273
|
+
}).processSync(
|
|
274
|
+
this.text.replace(/</gmi, "<").replace(/>/gmi, ">")
|
|
275
|
+
).result;
|
|
276
|
+
return e("div", { class: "rich-text--wrapper rich-text--wrapper-markdown" }, [
|
|
277
|
+
s,
|
|
278
|
+
this.referenceLimit > 0 ? e("div", { class: "rich-text--reference-widget" }, [
|
|
279
|
+
e(f, { props: { text: this.text, referenceData: this.references } })
|
|
280
|
+
]) : null
|
|
281
|
+
]);
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
render(e) {
|
|
285
|
+
return this.useMarkdown ? this.renderMarkdown(e) : this.renderPlaintext(e);
|
|
286
|
+
}
|
|
287
|
+
}, U = null, Z = null;
|
|
288
|
+
var z = /* @__PURE__ */ g(
|
|
289
|
+
P,
|
|
290
|
+
U,
|
|
291
|
+
Z,
|
|
292
|
+
!1,
|
|
293
|
+
null,
|
|
294
|
+
"5f33f45b",
|
|
295
|
+
null,
|
|
296
|
+
null
|
|
297
|
+
);
|
|
298
|
+
const X = z.exports;
|
|
299
|
+
export {
|
|
300
|
+
X as N,
|
|
301
|
+
f as a
|
|
302
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NcRichText-3c54a3cc.cjs","sources":["../../src/components/NcRichText/helpers.js","../../src/components/NcRichText/NcReferenceList.vue","../../src/components/NcRichText/autolink.js","../../src/components/NcRichText/placeholder.js","../../src/components/NcRichText/NcRichText.vue"],"sourcesContent":["/**\n * Regex pattern to match links to be resolved by the link-reference provider\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * Regex pattern to identify strings as links and then making them clickable\n * Opposed to the above regex this one also matches IP addresses, which we would like to be clickable,\n * but in general resolving references for them might mostly not work,\n * as the link provider checks for local addresses and does not resolve them.\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig\n","<template>\n\t<div v-if=\"isVisible\" class=\"widgets--list\" :class=\"{'icon-loading': loading }\">\n\t\t<div v-for=\"reference in displayedReferences\" :key=\"reference?.openGraphObject?.id\">\n\t\t\t<NcReferenceWidget :reference=\"reference\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport NcReferenceWidget from './NcReferenceWidget.vue'\nimport { URL_PATTERN } from './helpers.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcReferenceList',\n\tcomponents: {\n\t\tNcReferenceWidget,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\treferenceData: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\treferences: null,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn this.loading || this.displayedReferences\n\t\t},\n\t\tvalues() {\n\t\t\treturn this.referenceData\n\t\t\t\t? this.referenceData\n\t\t\t\t: (this.references ? Object.values(this.references) : [])\n\t\t},\n\t\tfirstReference() {\n\t\t\treturn this.values[0] ?? null\n\t\t},\n\t\tdisplayedReferences() {\n\t\t\treturn this.values.slice(0, this.limit)\n\t\t},\n\t},\n\twatch: {\n\t\ttext: 'fetch',\n\t},\n\tmounted() {\n\t\tthis.fetch()\n\t},\n\tmethods: {\n\t\tfetch() {\n\t\t\tthis.loading = true\n\t\t\tif (this.referenceData) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!(new RegExp(URL_PATTERN).exec(this.text))) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.resolve().then((response) => {\n\t\t\t\tthis.references = response.data.ocs.data.references\n\t\t\t\tthis.loading = false\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error('Failed to extract references', error)\n\t\t\t\tthis.loading = false\n\t\t\t})\n\t\t},\n\t\tresolve() {\n\t\t\tconst match = (new RegExp(URL_PATTERN).exec(this.text.trim()))\n\t\t\tif (this.limit === 1 && match) {\n\t\t\t\treturn axios.get(generateOcsUrl('references/resolve', 2) + `?reference=${encodeURIComponent(match[0])}`)\n\t\t\t}\n\n\t\t\treturn axios.post(generateOcsUrl('references/extract', 2), {\n\t\t\t\ttext: this.text,\n\t\t\t\tresolve: true,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widgets--list.icon-loading {\n\tmin-height: 44px;\n}\n</style>\n","import { URL_PATTERN_AUTOLINK } from './helpers.js'\n\nimport { visit, SKIP } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nconst NcLink = {\n\tname: 'NcLink',\n\tprops: {\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\trender(h) {\n\t\treturn h('a', {\n\t\t\tattrs: {\n\t\t\t\thref: this.href,\n\t\t\t\trel: 'noopener noreferrer',\n\t\t\t\ttarget: '_blank',\n\t\t\t\tclass: 'rich-text--external-link',\n\t\t\t},\n\t\t}, [this.href.trim()])\n\t},\n}\n\nexport const remarkAutolink = function({ autolink, useMarkdown }) {\n\treturn function(tree) {\n\n\t\tif (!useMarkdown || !autolink) {\n\t\t\treturn\n\t\t}\n\n\t\tvisit(tree, (node) => node.type === 'text', (node, index, parent) => {\n\t\t\tlet parsed = parseUrl(node.value)\n\t\t\tparsed = parsed.map((n) => {\n\t\t\t\tif (typeof n === 'string') {\n\t\t\t\t\treturn u('text', n)\n\t\t\t\t}\n\n\t\t\t\treturn u('link', {\n\t\t\t\t\turl: n.props.href,\n\t\t\t\t}, [u('text', n.props.href)])\n\t\t\t}).filter((x) => x)\n\n\t\t\tparent.children.splice(index, 1, ...parsed.flat())\n\t\t\treturn [SKIP, index + parsed.flat().length]\n\t\t})\n\t}\n}\n\nexport const parseUrl = (text) => {\n\tlet match = URL_PATTERN_AUTOLINK.exec(text)\n\tconst list = []\n\tlet start = 0\n\twhile (match !== null) {\n\t\tlet href = match[2]\n\t\tlet textAfter\n\t\tlet textBefore = text.substring(start, match.index + match[1].length)\n\t\tif (href[0] === ' ') {\n\t\t\ttextBefore += href[0]\n\t\t\thref = href.substring(1).trim()\n\t\t}\n\t\tconst lastChar = href[(href.length - 1)]\n\t\tif (lastChar === '.' || lastChar === ',' || lastChar === ';' || (match[0][0] === '(' && lastChar === ')')) {\n\t\t\thref = href.substring(0, href.length - 1)\n\t\t\ttextAfter = lastChar\n\t\t}\n\t\tlist.push(textBefore)\n\t\tlist.push({ component: NcLink, props: { href } })\n\t\tif (textAfter) {\n\t\t\tlist.push(textAfter)\n\t\t}\n\t\tstart = match.index + match[0].length\n\t\tmatch = URL_PATTERN_AUTOLINK.exec(text)\n\t}\n\tlist.push(text.substring(start))\n\tconst joinedText = list.map((item) => typeof item === 'string' ? item : item.props.href).join('')\n\tif (text === joinedText) {\n\t\treturn list\n\t}\n\tconsole.error('Failed to reassemble the chunked text: ' + text)\n\treturn text\n}\n","import { parseUrl } from './autolink.js'\n\nimport { visit } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nexport const remarkPlaceholder = function() {\n\treturn function(ast) {\n\t\tvisit(ast, (node) => node.type === 'text', visitor)\n\n\t\t/**\n\t\t *\n\t\t * @param {object} node The node\n\t\t * @param {number} index The index of the node\n\t\t * @param {object} parent The parent node\n\t\t */\n\t\tfunction visitor(node, index, parent) {\n\t\t\tconst placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig)\n\t\t\t\t.map((entry, index, list) => {\n\t\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\treturn u('text', entry)\n\t\t\t\t\t}\n\t\t\t\t\tconst [, component] = matches\n\t\t\t\t\treturn u('element', {\n\t\t\t\t\t\ttagName: `#${component}`,\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\tparent.children.splice(index, 1, ...placeholders)\n\t\t}\n\t}\n}\n\nexport const prepareTextNode = ({ h, context }, text) => {\n\tif (context.autolink) {\n\t\ttext = parseUrl(text)\n\t}\n\tif (Array.isArray(text)) {\n\t\treturn text.map((entry) => {\n\t\t\tif (typeof entry === 'string') {\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\tconst { component, props } = entry\n\t\t\t// do not override class of NcLink\n\t\t\tconst componentClass = component.name === 'NcLink' ? undefined : 'rich-text--component'\n\t\t\treturn h(component, {\n\t\t\t\tprops,\n\t\t\t\tclass: componentClass,\n\t\t\t})\n\t\t})\n\t}\n\treturn text\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Guido Krömer <mail@cacodaemon.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n### General description\n\nThis component displays rich text with optional autolink or [Markdown support](https://www.markdownguide.org/basic-syntax/).\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText\n\t\t\t:class=\"{'plain-text': !useMarkdown }\"\n\t\t\t:text=\"text\" :autolink=\"autolink\" :arguments=\"args\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: `## Hello everyone 🎉\nThe file {file} was added by {username}. Visit https://nextcloud.com to check it!\n\nSome examples for markdown syntax:\n1. **bold text**\n2. _italic text_\n3. example of \\`inline code\\`\n\n> blockquote example\n`,\n\t\t\tautolink: true,\n\t\t\tuseMarkdown: true,\n\t\t\targs: {\n\t\t\t\tfile: 'MyDocument.odt',\n\t\t\t\tusername: {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Jane Doe'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n\n.plain-text {\n\twhite-space: pre-line;\n}\n</style>\n```\n\n### Usage with NcRichContenteditable\n\nSee [NcRichContenteditable](#/Components/NcRichContenteditable) documentation for more information\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable :value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning user @Test01 or inserting emoji :smile\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:autolink=\"autolink\"\n\t\t\t:arguments=\"userMentions\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tmessage: '',\n\t\t\t\tautolink: true,\n\t\t\t\tuseMarkdown: true,\n\t\t\t\tuserData: {\n\t\t\t\t\tTest01: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test01',\n\t\t\t\t\t\ttitle: 'Test01',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t\tTest02: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test02',\n\t\t\t\t\t\ttitle: 'Test02',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test@User': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\t\ttitle: 'Test 03',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test Offline': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\t\ttitle: 'Test Offline',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: null,\n\t\t\t\t\t},\n\t\t\t\t\t'Test DND': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\t\ttitle: 'Test DND',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tuserMentions: {\n\t\t\t\t\t'user-1': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-2': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-3': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-4': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-5': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\ttext() {\n\t\t\t\treturn this.message\n\t\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t\t},\n\t\t},\n\t\tmethods: {\n\t\t\tautoComplete(search, callback) {\n\t\t\t\tcallback(Object.values(this.userData))\n\t\t\t},\n\t\t\tonSubmit() {\n\t\t\t\talert(this.message)\n\t\t\t}\n\t\t}\n\t}\n</script>\n```\n</docs>\n\n<script>\nimport NcReferenceList from './NcReferenceList.vue'\nimport { remarkAutolink } from './autolink.js'\nimport { remarkPlaceholder, prepareTextNode } from './placeholder.js'\n\nimport { unified } from 'unified'\nimport markdown from 'remark-parse'\nimport breaks from 'remark-breaks'\nimport remark2rehype from 'remark-rehype'\nimport rehype2react from 'rehype-react'\nimport rehypeExternalLinks from 'rehype-external-links'\n\nexport default {\n\tname: 'NcRichText',\n\tcomponents: {\n\t\tNcReferenceList,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\targuments: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t},\n\t\treferenceLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\t/** Provide data upfront to avoid extra http request */\n\t\treferences: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tmarkdownCssClasses: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\ta: 'rich-text--external-link',\n\t\t\t\t\tol: 'rich-text--ordered-list',\n\t\t\t\t\tul: 'rich-text--un-ordered-list',\n\t\t\t\t\tli: 'rich-text--list-item',\n\t\t\t\t\tstrong: 'rich-text--strong',\n\t\t\t\t\tem: 'rich-text--italic',\n\t\t\t\t\th1: 'rich-text--heading rich-text--heading-1',\n\t\t\t\t\th2: 'rich-text--heading rich-text--heading-2',\n\t\t\t\t\th3: 'rich-text--heading rich-text--heading-3',\n\t\t\t\t\th4: 'rich-text--heading rich-text--heading-4',\n\t\t\t\t\th5: 'rich-text--heading rich-text--heading-5',\n\t\t\t\t\th6: 'rich-text--heading rich-text--heading-6',\n\t\t\t\t\thr: 'rich-text--hr',\n\t\t\t\t\ttable: 'rich-text--table',\n\t\t\t\t\tpre: 'rich-text--pre',\n\t\t\t\t\tcode: 'rich-text--code',\n\t\t\t\t\tblockquote: 'rich-text--blockquote',\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tuseMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautolink: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tmethods: {\n\t\trenderPlaintext(h) {\n\t\t\tconst context = this\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(entry, index, list) {\n\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t// just return plain string nodes as text\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn prepareTextNode({ h, context }, entry)\n\t\t\t\t}\n\t\t\t\t// return component instance if argument is an object\n\t\t\t\tconst argumentId = matches[1]\n\t\t\t\tconst argument = context.arguments[argumentId]\n\t\t\t\tif (typeof argument === 'object') {\n\t\t\t\t\tconst { component, props } = argument\n\t\t\t\t\treturn h(component, {\n\t\t\t\t\t\tprops,\n\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (argument) {\n\t\t\t\t\treturn h('span', { class: 'rich-text--fallback' }, argument)\n\t\t\t\t}\n\t\t\t\treturn entry\n\t\t\t})\n\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\th('div', {}, placeholders.flat()),\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown(h) {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(markdown)\n\t\t\t\t.use(remarkAutolink, {\n\t\t\t\t\tautolink: this.autolink,\n\t\t\t\t\tuseMarkdown: this.useMarkdown,\n\t\t\t\t})\n\t\t\t\t.use(breaks)\n\t\t\t\t.use(remark2rehype, {\n\t\t\t\t\thandlers: {\n\t\t\t\t\t\tcomponent(toHast, node) {\n\t\t\t\t\t\t\treturn toHast(node, node.component, { value: node.value })\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t// .use(rehypeAddClasses, this.markdownCssClasses)\n\t\t\t\t.use(remarkPlaceholder)\n\t\t\t\t.use(rehypeExternalLinks, {\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\trel: ['noopener noreferrer'],\n\t\t\t\t})\n\t\t\t\t.use(rehype2react, {\n\t\t\t\t\tcreateElement: (tag, attrs, children) => {\n\t\t\t\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\t\t\t\tchildren = children?.map(child => typeof child === 'string'\n\t\t\t\t\t\t\t? child.replace(/</gmi, '<')\n\t\t\t\t\t\t\t: child,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (!tag.startsWith('#')) {\n\t\t\t\t\t\t\treturn h(tag, attrs, children)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst placeholder = this.arguments[tag.slice(1)]\n\t\t\t\t\t\tif (!placeholder) {\n\t\t\t\t\t\t\treturn h('span', { ...{ attrs }, ...{ class: 'rich-text--fallback' } }, [`{${tag.slice(1)}}`])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!placeholder.component) {\n\t\t\t\t\t\t\treturn h('span', attrs, [placeholder])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn h(\n\t\t\t\t\t\t\tplaceholder.component,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\tprops: placeholder.props,\n\t\t\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tprefix: false,\n\t\t\t\t})\n\t\t\t\t.processSync(this.text\n\t\t\t\t\t// escape special symbol \"<\" to not treat text as HTML\n\t\t\t\t\t.replace(/</gmi, '<')\n\t\t\t\t\t// unescape special symbol \">\" to parse blockquotes\n\t\t\t\t\t.replace(/>/gmi, '>')\n\t\t\t\t)\n\t\t\t\t.result\n\n\t\t\treturn h('div', { class: 'rich-text--wrapper rich-text--wrapper-markdown' }, [\n\t\t\t\trenderedMarkdown,\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t},\n\trender(h) {\n\t\treturn this.useMarkdown\n\t\t\t? this.renderMarkdown(h)\n\t\t\t: this.renderPlaintext(h)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n/* stylelint-disable-next-line scss/at-import-partial-extension */\n@import './richtext.scss';\n\na:not(.rich-text--component) {\n\ttext-decoration: underline;\n}\n</style>\n"],"names":["URL_PATTERN","URL_PATTERN_AUTOLINK","_sfc_main","NcReferenceWidget","_a","response","error","match","axios","generateOcsUrl","NcLink","h","remarkAutolink","autolink","useMarkdown","tree","visit","node","index","parent","parsed","parseUrl","n","u","x","SKIP","text","list","start","href","textAfter","textBefore","lastChar","joinedText","item","remarkPlaceholder","ast","visitor","placeholders","entry","matches","component","prepareTextNode","context","props","componentClass","NcReferenceList","argumentId","argument","renderedMarkdown","unified","markdown","breaks","remark2rehype","toHast","rehypeExternalLinks","rehype2react","tag","attrs","children","child","placeholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NcRichText-8fda53c8.mjs","sources":["../../src/components/NcRichText/helpers.js","../../src/components/NcRichText/NcReferenceList.vue","../../src/components/NcRichText/autolink.js","../../src/components/NcRichText/placeholder.js","../../src/components/NcRichText/NcRichText.vue"],"sourcesContent":["/**\n * Regex pattern to match links to be resolved by the link-reference provider\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * Regex pattern to identify strings as links and then making them clickable\n * Opposed to the above regex this one also matches IP addresses, which we would like to be clickable,\n * but in general resolving references for them might mostly not work,\n * as the link provider checks for local addresses and does not resolve them.\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig\n","<template>\n\t<div v-if=\"isVisible\" class=\"widgets--list\" :class=\"{'icon-loading': loading }\">\n\t\t<div v-for=\"reference in displayedReferences\" :key=\"reference?.openGraphObject?.id\">\n\t\t\t<NcReferenceWidget :reference=\"reference\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport NcReferenceWidget from './NcReferenceWidget.vue'\nimport { URL_PATTERN } from './helpers.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcReferenceList',\n\tcomponents: {\n\t\tNcReferenceWidget,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\treferenceData: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\treferences: null,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn this.loading || this.displayedReferences\n\t\t},\n\t\tvalues() {\n\t\t\treturn this.referenceData\n\t\t\t\t? this.referenceData\n\t\t\t\t: (this.references ? Object.values(this.references) : [])\n\t\t},\n\t\tfirstReference() {\n\t\t\treturn this.values[0] ?? null\n\t\t},\n\t\tdisplayedReferences() {\n\t\t\treturn this.values.slice(0, this.limit)\n\t\t},\n\t},\n\twatch: {\n\t\ttext: 'fetch',\n\t},\n\tmounted() {\n\t\tthis.fetch()\n\t},\n\tmethods: {\n\t\tfetch() {\n\t\t\tthis.loading = true\n\t\t\tif (this.referenceData) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!(new RegExp(URL_PATTERN).exec(this.text))) {\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.resolve().then((response) => {\n\t\t\t\tthis.references = response.data.ocs.data.references\n\t\t\t\tthis.loading = false\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error('Failed to extract references', error)\n\t\t\t\tthis.loading = false\n\t\t\t})\n\t\t},\n\t\tresolve() {\n\t\t\tconst match = (new RegExp(URL_PATTERN).exec(this.text.trim()))\n\t\t\tif (this.limit === 1 && match) {\n\t\t\t\treturn axios.get(generateOcsUrl('references/resolve', 2) + `?reference=${encodeURIComponent(match[0])}`)\n\t\t\t}\n\n\t\t\treturn axios.post(generateOcsUrl('references/extract', 2), {\n\t\t\t\ttext: this.text,\n\t\t\t\tresolve: true,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widgets--list.icon-loading {\n\tmin-height: 44px;\n}\n</style>\n","import { URL_PATTERN_AUTOLINK } from './helpers.js'\n\nimport { visit, SKIP } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nconst NcLink = {\n\tname: 'NcLink',\n\tprops: {\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\trender(h) {\n\t\treturn h('a', {\n\t\t\tattrs: {\n\t\t\t\thref: this.href,\n\t\t\t\trel: 'noopener noreferrer',\n\t\t\t\ttarget: '_blank',\n\t\t\t\tclass: 'rich-text--external-link',\n\t\t\t},\n\t\t}, [this.href.trim()])\n\t},\n}\n\nexport const remarkAutolink = function({ autolink, useMarkdown }) {\n\treturn function(tree) {\n\n\t\tif (!useMarkdown || !autolink) {\n\t\t\treturn\n\t\t}\n\n\t\tvisit(tree, (node) => node.type === 'text', (node, index, parent) => {\n\t\t\tlet parsed = parseUrl(node.value)\n\t\t\tparsed = parsed.map((n) => {\n\t\t\t\tif (typeof n === 'string') {\n\t\t\t\t\treturn u('text', n)\n\t\t\t\t}\n\n\t\t\t\treturn u('link', {\n\t\t\t\t\turl: n.props.href,\n\t\t\t\t}, [u('text', n.props.href)])\n\t\t\t}).filter((x) => x)\n\n\t\t\tparent.children.splice(index, 1, ...parsed.flat())\n\t\t\treturn [SKIP, index + parsed.flat().length]\n\t\t})\n\t}\n}\n\nexport const parseUrl = (text) => {\n\tlet match = URL_PATTERN_AUTOLINK.exec(text)\n\tconst list = []\n\tlet start = 0\n\twhile (match !== null) {\n\t\tlet href = match[2]\n\t\tlet textAfter\n\t\tlet textBefore = text.substring(start, match.index + match[1].length)\n\t\tif (href[0] === ' ') {\n\t\t\ttextBefore += href[0]\n\t\t\thref = href.substring(1).trim()\n\t\t}\n\t\tconst lastChar = href[(href.length - 1)]\n\t\tif (lastChar === '.' || lastChar === ',' || lastChar === ';' || (match[0][0] === '(' && lastChar === ')')) {\n\t\t\thref = href.substring(0, href.length - 1)\n\t\t\ttextAfter = lastChar\n\t\t}\n\t\tlist.push(textBefore)\n\t\tlist.push({ component: NcLink, props: { href } })\n\t\tif (textAfter) {\n\t\t\tlist.push(textAfter)\n\t\t}\n\t\tstart = match.index + match[0].length\n\t\tmatch = URL_PATTERN_AUTOLINK.exec(text)\n\t}\n\tlist.push(text.substring(start))\n\tconst joinedText = list.map((item) => typeof item === 'string' ? item : item.props.href).join('')\n\tif (text === joinedText) {\n\t\treturn list\n\t}\n\tconsole.error('Failed to reassemble the chunked text: ' + text)\n\treturn text\n}\n","import { parseUrl } from './autolink.js'\n\nimport { visit } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nexport const remarkPlaceholder = function() {\n\treturn function(ast) {\n\t\tvisit(ast, (node) => node.type === 'text', visitor)\n\n\t\t/**\n\t\t *\n\t\t * @param {object} node The node\n\t\t * @param {number} index The index of the node\n\t\t * @param {object} parent The parent node\n\t\t */\n\t\tfunction visitor(node, index, parent) {\n\t\t\tconst placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig)\n\t\t\t\t.map((entry, index, list) => {\n\t\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\treturn u('text', entry)\n\t\t\t\t\t}\n\t\t\t\t\tconst [, component] = matches\n\t\t\t\t\treturn u('element', {\n\t\t\t\t\t\ttagName: `#${component}`,\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\tparent.children.splice(index, 1, ...placeholders)\n\t\t}\n\t}\n}\n\nexport const prepareTextNode = ({ h, context }, text) => {\n\tif (context.autolink) {\n\t\ttext = parseUrl(text)\n\t}\n\tif (Array.isArray(text)) {\n\t\treturn text.map((entry) => {\n\t\t\tif (typeof entry === 'string') {\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\tconst { component, props } = entry\n\t\t\t// do not override class of NcLink\n\t\t\tconst componentClass = component.name === 'NcLink' ? undefined : 'rich-text--component'\n\t\t\treturn h(component, {\n\t\t\t\tprops,\n\t\t\t\tclass: componentClass,\n\t\t\t})\n\t\t})\n\t}\n\treturn text\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Guido Krömer <mail@cacodaemon.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n### General description\n\nThis component displays rich text with optional autolink or [Markdown support](https://www.markdownguide.org/basic-syntax/).\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText\n\t\t\t:class=\"{'plain-text': !useMarkdown }\"\n\t\t\t:text=\"text\" :autolink=\"autolink\" :arguments=\"args\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: `## Hello everyone 🎉\nThe file {file} was added by {username}. Visit https://nextcloud.com to check it!\n\nSome examples for markdown syntax:\n1. **bold text**\n2. _italic text_\n3. example of \\`inline code\\`\n\n> blockquote example\n`,\n\t\t\tautolink: true,\n\t\t\tuseMarkdown: true,\n\t\t\targs: {\n\t\t\t\tfile: 'MyDocument.odt',\n\t\t\t\tusername: {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Jane Doe'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n\n.plain-text {\n\twhite-space: pre-line;\n}\n</style>\n```\n\n### Usage with NcRichContenteditable\n\nSee [NcRichContenteditable](#/Components/NcRichContenteditable) documentation for more information\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable :value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning user @Test01 or inserting emoji :smile\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:autolink=\"autolink\"\n\t\t\t:arguments=\"userMentions\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tmessage: '',\n\t\t\t\tautolink: true,\n\t\t\t\tuseMarkdown: true,\n\t\t\t\tuserData: {\n\t\t\t\t\tTest01: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test01',\n\t\t\t\t\t\ttitle: 'Test01',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t\tTest02: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test02',\n\t\t\t\t\t\ttitle: 'Test02',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test@User': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\t\ttitle: 'Test 03',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test Offline': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\t\ttitle: 'Test Offline',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: null,\n\t\t\t\t\t},\n\t\t\t\t\t'Test DND': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\t\ttitle: 'Test DND',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tuserMentions: {\n\t\t\t\t\t'user-1': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-2': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-3': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-4': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-5': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\ttext() {\n\t\t\t\treturn this.message\n\t\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t\t},\n\t\t},\n\t\tmethods: {\n\t\t\tautoComplete(search, callback) {\n\t\t\t\tcallback(Object.values(this.userData))\n\t\t\t},\n\t\t\tonSubmit() {\n\t\t\t\talert(this.message)\n\t\t\t}\n\t\t}\n\t}\n</script>\n```\n</docs>\n\n<script>\nimport NcReferenceList from './NcReferenceList.vue'\nimport { remarkAutolink } from './autolink.js'\nimport { remarkPlaceholder, prepareTextNode } from './placeholder.js'\n\nimport { unified } from 'unified'\nimport markdown from 'remark-parse'\nimport breaks from 'remark-breaks'\nimport remark2rehype from 'remark-rehype'\nimport rehype2react from 'rehype-react'\nimport rehypeExternalLinks from 'rehype-external-links'\n\nexport default {\n\tname: 'NcRichText',\n\tcomponents: {\n\t\tNcReferenceList,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\targuments: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t},\n\t\treferenceLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\t/** Provide data upfront to avoid extra http request */\n\t\treferences: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tmarkdownCssClasses: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\ta: 'rich-text--external-link',\n\t\t\t\t\tol: 'rich-text--ordered-list',\n\t\t\t\t\tul: 'rich-text--un-ordered-list',\n\t\t\t\t\tli: 'rich-text--list-item',\n\t\t\t\t\tstrong: 'rich-text--strong',\n\t\t\t\t\tem: 'rich-text--italic',\n\t\t\t\t\th1: 'rich-text--heading rich-text--heading-1',\n\t\t\t\t\th2: 'rich-text--heading rich-text--heading-2',\n\t\t\t\t\th3: 'rich-text--heading rich-text--heading-3',\n\t\t\t\t\th4: 'rich-text--heading rich-text--heading-4',\n\t\t\t\t\th5: 'rich-text--heading rich-text--heading-5',\n\t\t\t\t\th6: 'rich-text--heading rich-text--heading-6',\n\t\t\t\t\thr: 'rich-text--hr',\n\t\t\t\t\ttable: 'rich-text--table',\n\t\t\t\t\tpre: 'rich-text--pre',\n\t\t\t\t\tcode: 'rich-text--code',\n\t\t\t\t\tblockquote: 'rich-text--blockquote',\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tuseMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautolink: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tmethods: {\n\t\trenderPlaintext(h) {\n\t\t\tconst context = this\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(entry, index, list) {\n\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t// just return plain string nodes as text\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn prepareTextNode({ h, context }, entry)\n\t\t\t\t}\n\t\t\t\t// return component instance if argument is an object\n\t\t\t\tconst argumentId = matches[1]\n\t\t\t\tconst argument = context.arguments[argumentId]\n\t\t\t\tif (typeof argument === 'object') {\n\t\t\t\t\tconst { component, props } = argument\n\t\t\t\t\treturn h(component, {\n\t\t\t\t\t\tprops,\n\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (argument) {\n\t\t\t\t\treturn h('span', { class: 'rich-text--fallback' }, argument)\n\t\t\t\t}\n\t\t\t\treturn entry\n\t\t\t})\n\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\th('div', {}, placeholders.flat()),\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown(h) {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(markdown)\n\t\t\t\t.use(remarkAutolink, {\n\t\t\t\t\tautolink: this.autolink,\n\t\t\t\t\tuseMarkdown: this.useMarkdown,\n\t\t\t\t})\n\t\t\t\t.use(breaks)\n\t\t\t\t.use(remark2rehype, {\n\t\t\t\t\thandlers: {\n\t\t\t\t\t\tcomponent(toHast, node) {\n\t\t\t\t\t\t\treturn toHast(node, node.component, { value: node.value })\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t// .use(rehypeAddClasses, this.markdownCssClasses)\n\t\t\t\t.use(remarkPlaceholder)\n\t\t\t\t.use(rehypeExternalLinks, {\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\trel: ['noopener noreferrer'],\n\t\t\t\t})\n\t\t\t\t.use(rehype2react, {\n\t\t\t\t\tcreateElement: (tag, attrs, children) => {\n\t\t\t\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\t\t\t\tchildren = children?.map(child => typeof child === 'string'\n\t\t\t\t\t\t\t? child.replace(/</gmi, '<')\n\t\t\t\t\t\t\t: child,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (!tag.startsWith('#')) {\n\t\t\t\t\t\t\treturn h(tag, attrs, children)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst placeholder = this.arguments[tag.slice(1)]\n\t\t\t\t\t\tif (!placeholder) {\n\t\t\t\t\t\t\treturn h('span', { ...{ attrs }, ...{ class: 'rich-text--fallback' } }, [`{${tag.slice(1)}}`])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!placeholder.component) {\n\t\t\t\t\t\t\treturn h('span', attrs, [placeholder])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn h(\n\t\t\t\t\t\t\tplaceholder.component,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\tprops: placeholder.props,\n\t\t\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tprefix: false,\n\t\t\t\t})\n\t\t\t\t.processSync(this.text\n\t\t\t\t\t// escape special symbol \"<\" to not treat text as HTML\n\t\t\t\t\t.replace(/</gmi, '<')\n\t\t\t\t\t// unescape special symbol \">\" to parse blockquotes\n\t\t\t\t\t.replace(/>/gmi, '>'),\n\t\t\t\t)\n\t\t\t\t.result\n\n\t\t\treturn h('div', { class: 'rich-text--wrapper rich-text--wrapper-markdown' }, [\n\t\t\t\trenderedMarkdown,\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t},\n\trender(h) {\n\t\treturn this.useMarkdown\n\t\t\t? this.renderMarkdown(h)\n\t\t\t: this.renderPlaintext(h)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n/* stylelint-disable-next-line scss/at-import-partial-extension */\n@import './richtext.scss';\n\na:not(.rich-text--component) {\n\ttext-decoration: underline;\n}\n</style>\n"],"names":["URL_PATTERN","URL_PATTERN_AUTOLINK","_sfc_main","NcReferenceWidget","_a","response","error","match","axios","generateOcsUrl","NcLink","h","remarkAutolink","autolink","useMarkdown","tree","visit","node","index","parent","parsed","parseUrl","n","u","x","SKIP","text","list","start","href","textAfter","textBefore","lastChar","joinedText","item","remarkPlaceholder","ast","visitor","placeholders","entry","matches","component","prepareTextNode","context","props","componentClass","NcReferenceList","argumentId","argument","renderedMarkdown","unified","markdown","breaks","remark2rehype","toHast","rehypeExternalLinks","rehype2react","tag","attrs","children","child","placeholder"],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
var y = require("../assets/NcSettingsSelectGroup-0d38d76b.css");
|
|
2
|
+
const a = require("../Components/NcSelect.cjs"), i = require("./l10n-b1d264c7.cjs"), n = require("./l10n-c7bd0ea6.cjs"), o = require("./GenRandomId-c214d235.cjs"), l = require("@nextcloud/axios"), u = require("@nextcloud/router"), c = require("debounce"), d = require("./_plugin-vue2_normalizer-7f9efb60.cjs"), p = (t) => t && t.__esModule ? t : { default: t }, h = /* @__PURE__ */ p(l);
|
|
3
|
+
const g = {
|
|
4
|
+
name: "NcSettingsSelectGroup",
|
|
5
|
+
components: {
|
|
6
|
+
NcSelect: a
|
|
7
|
+
},
|
|
8
|
+
mixins: [n.l10n],
|
|
9
|
+
props: {
|
|
10
|
+
/**
|
|
11
|
+
* The text of the label element of the select group input
|
|
12
|
+
*/
|
|
13
|
+
label: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: !0
|
|
16
|
+
},
|
|
17
|
+
/**
|
|
18
|
+
* Placeholder for the input element
|
|
19
|
+
* For backwards compatibility it falls back to the `label` value
|
|
20
|
+
*/
|
|
21
|
+
placeholder: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: ""
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* id attribute of the select group element
|
|
27
|
+
*/
|
|
28
|
+
id: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: () => "action-" + o.GenRandomId(),
|
|
31
|
+
validator: (t) => t.trim() !== ""
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* value of the select group input
|
|
35
|
+
* A list of group IDs can be provided
|
|
36
|
+
*/
|
|
37
|
+
value: {
|
|
38
|
+
type: Array,
|
|
39
|
+
default: () => []
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* disabled state of the settings select group input
|
|
43
|
+
*/
|
|
44
|
+
disabled: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: !1
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
emits: [
|
|
50
|
+
"input",
|
|
51
|
+
"error"
|
|
52
|
+
],
|
|
53
|
+
data() {
|
|
54
|
+
return {
|
|
55
|
+
/** Temporary store to cache groups */
|
|
56
|
+
groups: {},
|
|
57
|
+
randId: o.GenRandomId(),
|
|
58
|
+
errorMessage: ""
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
computed: {
|
|
62
|
+
/**
|
|
63
|
+
* If the error message should be shown
|
|
64
|
+
*/
|
|
65
|
+
hasError() {
|
|
66
|
+
return this.errorMessage !== "";
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Validate input value and only return valid strings (group IDs)
|
|
70
|
+
*
|
|
71
|
+
* @return {string[]}
|
|
72
|
+
*/
|
|
73
|
+
filteredValue() {
|
|
74
|
+
return this.value.filter((t) => t !== "" && typeof t == "string");
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* value property converted to an array of group objects used as input for the NcSelect
|
|
78
|
+
*/
|
|
79
|
+
inputValue() {
|
|
80
|
+
return this.filteredValue.map(
|
|
81
|
+
(t) => typeof this.groups[t] > "u" ? {
|
|
82
|
+
id: t,
|
|
83
|
+
displayname: t
|
|
84
|
+
} : this.groups[t]
|
|
85
|
+
);
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Convert groups object to array of groups required for NcSelect.options
|
|
89
|
+
* Filter out currently selected values
|
|
90
|
+
*
|
|
91
|
+
* @return {object[]}
|
|
92
|
+
*/
|
|
93
|
+
groupsArray() {
|
|
94
|
+
return Object.values(this.groups).filter((t) => !this.value.includes(t.id));
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
watch: {
|
|
98
|
+
/**
|
|
99
|
+
* If the value is changed, check that all groups are loaded so we show the correct display name
|
|
100
|
+
*/
|
|
101
|
+
value: {
|
|
102
|
+
handler() {
|
|
103
|
+
const t = Object.keys(this.groups);
|
|
104
|
+
this.filteredValue.filter((r) => !t.includes(r)).forEach((r) => {
|
|
105
|
+
this.loadGroup(r);
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
// Run the watch handler also when the component is initially mounted
|
|
109
|
+
immediate: !0
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
/**
|
|
113
|
+
* Load groups matching the empty query to reduce API calls
|
|
114
|
+
*/
|
|
115
|
+
async mounted() {
|
|
116
|
+
const t = `${appName}:${appVersion}/initialGroups`;
|
|
117
|
+
let e = window.sessionStorage.getItem(t);
|
|
118
|
+
e ? (e = Object.fromEntries(JSON.parse(e).map((r) => [r.id, r])), this.groups = { ...this.groups, ...e }) : (await this.loadGroup(""), window.sessionStorage.setItem(t, JSON.stringify(Object.values(this.groups))));
|
|
119
|
+
},
|
|
120
|
+
methods: {
|
|
121
|
+
/**
|
|
122
|
+
* Called when a new group is selected or previous group is deselected to emit the update event
|
|
123
|
+
*
|
|
124
|
+
* @param {object[]} updatedValue Array of selected groups
|
|
125
|
+
*/
|
|
126
|
+
update(t) {
|
|
127
|
+
const e = t.map((r) => r.id);
|
|
128
|
+
this.$emit("input", e);
|
|
129
|
+
},
|
|
130
|
+
/**
|
|
131
|
+
* Use provisioning API to search for given group and save it in the groups object
|
|
132
|
+
*
|
|
133
|
+
* @param {string} query The query like parts of the id oder display name
|
|
134
|
+
* @return {boolean}
|
|
135
|
+
*/
|
|
136
|
+
async loadGroup(t) {
|
|
137
|
+
try {
|
|
138
|
+
t = typeof t == "string" ? encodeURI(t) : "";
|
|
139
|
+
const e = await h.default.get(u.generateOcsUrl(`cloud/groups/details?search=${t}&limit=10`, 2));
|
|
140
|
+
if (this.errorMessage !== "" && window.setTimeout(() => {
|
|
141
|
+
this.errorMessage = "";
|
|
142
|
+
}, 5e3), Object.keys(e.data.ocs.data.groups).length > 0) {
|
|
143
|
+
const r = Object.fromEntries(e.data.ocs.data.groups.map((s) => [s.id, s]));
|
|
144
|
+
return this.groups = { ...this.groups, ...r }, !0;
|
|
145
|
+
}
|
|
146
|
+
} catch (e) {
|
|
147
|
+
this.$emit("error", e), this.errorMessage = i.t("Unable to search the group");
|
|
148
|
+
}
|
|
149
|
+
return !1;
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Custom filter function for `NcSelect` to filter by ID *and* display name
|
|
153
|
+
*
|
|
154
|
+
* @param {object} option One of the groups
|
|
155
|
+
* @param {string} label The label property of the group
|
|
156
|
+
* @param {string} search The current search string
|
|
157
|
+
*/
|
|
158
|
+
filterGroups(t, e, r) {
|
|
159
|
+
return `${e || ""} ${t.id}`.toLocaleLowerCase().indexOf(r.toLocaleLowerCase()) > -1;
|
|
160
|
+
},
|
|
161
|
+
/**
|
|
162
|
+
* Debounce the group search (reduce API calls)
|
|
163
|
+
*/
|
|
164
|
+
onSearch: c.debounce(function(t) {
|
|
165
|
+
this.loadGroup(t);
|
|
166
|
+
}, 200)
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
var m = function() {
|
|
170
|
+
var e = this, r = e._self._c;
|
|
171
|
+
return r("div", [e.label ? r("label", { staticClass: "hidden-visually", attrs: { for: e.id } }, [e._v(e._s(e.label))]) : e._e(), r("NcSelect", { attrs: { value: e.inputValue, options: e.groupsArray, placeholder: e.placeholder || e.label, "filter-by": e.filterGroups, "input-id": e.id, limit: 5, label: "displayname", multiple: !0, "close-on-select": !1, disabled: e.disabled }, on: { input: e.update, search: e.onSearch } }), r("div", { directives: [{ name: "show", rawName: "v-show", value: e.hasError, expression: "hasError" }], staticClass: "select-group-error" }, [e._v(" " + e._s(e.errorMessage) + " ")])], 1);
|
|
172
|
+
}, f = [], _ = /* @__PURE__ */ d.normalizeComponent(
|
|
173
|
+
g,
|
|
174
|
+
m,
|
|
175
|
+
f,
|
|
176
|
+
!1,
|
|
177
|
+
null,
|
|
178
|
+
"5a35ccce",
|
|
179
|
+
null,
|
|
180
|
+
null
|
|
181
|
+
);
|
|
182
|
+
const v = _.exports;
|
|
183
|
+
exports.NcSettingsSelectGroup = v;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcSettingsSelectGroup-a5ff8c36.cjs","sources":["../../src/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author Ferdinand Thiessen <opensource@fthiessen.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n```vue\n<template>\n\t<section>\n\t\t<NcSettingsSelectGroup v-model=\"groups\" placeholder=\"Select user groups\" label=\"The hidden label\" />\n\t\t<NcSettingsSelectGroup v-model=\"otherGroups\" :disabled=\"true\" label=\"Also a fallback for the placeholder\" />\n\t\t<div>You have selected: <code>{{ groups }}</code> and <code>{{ otherGroups }}</code></div>\n\t</section>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgroups: [],\n\t\t\totherGroups: ['admin']\n\t\t}\n\t}\n}\n</script>\n<style scoped>\nsection * {\n\tpadding: 6px 0px;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<label v-if=\"label\" :for=\"id\" class=\"hidden-visually\">{{ label }}</label>\n\t\t<NcSelect :value=\"inputValue\"\n\t\t\t:options=\"groupsArray\"\n\t\t\t:placeholder=\"placeholder || label\"\n\t\t\t:filter-by=\"filterGroups\"\n\t\t\t:input-id=\"id\"\n\t\t\t:limit=\"5\"\n\t\t\tlabel=\"displayname\"\n\t\t\t:multiple=\"true\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:disabled=\"disabled\"\n\t\t\t@input=\"update\"\n\t\t\t@search=\"onSearch\" />\n\t\t<div v-show=\"hasError\" class=\"select-group-error\">\n\t\t\t{{ errorMessage }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '../../components/NcSelect/index.js'\nimport { t } from '../../l10n.js'\nimport l10n from '../../mixins/l10n.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { debounce } from 'debounce'\n\nexport default {\n\tname: 'NcSettingsSelectGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tmixins: [l10n],\n\tprops: {\n\t\t/**\n\t\t * The text of the label element of the select group input\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder for the input element\n\t\t * For backwards compatibility it falls back to the `label` value\n\t\t */\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * id attribute of the select group element\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => 'action-' + GenRandomId(),\n\t\t\tvalidator: id => id.trim() !== '',\n\t\t},\n\n\t\t/**\n\t\t * value of the select group input\n\t\t * A list of group IDs can be provided\n\t\t */\n\t\tvalue: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * disabled state of the settings select group input\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'input',\n\t\t'error',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\t/** Temporary store to cache groups */\n\t\t\tgroups: {},\n\t\t\trandId: GenRandomId(),\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * If the error message should be shown\n\t\t */\n\t\thasError() {\n\t\t\treturn this.errorMessage !== ''\n\t\t},\n\n\t\t/**\n\t\t * Validate input value and only return valid strings (group IDs)\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tfilteredValue() {\n\t\t\treturn this.value.filter((group) => group !== '' && typeof group === 'string')\n\t\t},\n\n\t\t/**\n\t\t * value property converted to an array of group objects used as input for the NcSelect\n\t\t */\n\t\tinputValue() {\n\t\t\treturn this.filteredValue.map(\n\t\t\t\t(id) => {\n\t\t\t\t\tif (typeof this.groups[id] === 'undefined') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdisplayname: id,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this.groups[id]\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\n\t\t/**\n\t\t * Convert groups object to array of groups required for NcSelect.options\n\t\t * Filter out currently selected values\n\t\t *\n\t\t * @return {object[]}\n\t\t */\n\t\tgroupsArray() {\n\t\t\treturn Object.values(this.groups).filter(g => !this.value.includes(g.id))\n\t\t},\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the value is changed, check that all groups are loaded so we show the correct display name\n\t\t */\n\t\tvalue: {\n\t\t\thandler() {\n\t\t\t\tconst loadedGroupIds = Object.keys(this.groups)\n\t\t\t\tconst missing = this.filteredValue.filter(group => !loadedGroupIds.includes(group))\n\t\t\t\tmissing.forEach((groupId) => {\n\t\t\t\t\tthis.loadGroup(groupId)\n\t\t\t\t})\n\t\t\t},\n\t\t\t// Run the watch handler also when the component is initially mounted\n\t\t\timmediate: true,\n\t\t},\n\t},\n\t/**\n\t * Load groups matching the empty query to reduce API calls\n\t */\n\tasync mounted() {\n\t\t// version scoped to prevent issues with different library versions\n\t\tconst storageName = `${appName}:${appVersion}/initialGroups`\n\n\t\tlet savedGroups = window.sessionStorage.getItem(storageName)\n\t\tif (savedGroups) {\n\t\t\tsavedGroups = Object.fromEntries(JSON.parse(savedGroups).map(group => [group.id, group]))\n\t\t\tthis.groups = { ...this.groups, ...savedGroups }\n\t\t} else {\n\t\t\tawait this.loadGroup('')\n\t\t\twindow.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)))\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Called when a new group is selected or previous group is deselected to emit the update event\n\t\t *\n\t\t * @param {object[]} updatedValue Array of selected groups\n\t\t */\n\t\tupdate(updatedValue) {\n\t\t\tconst value = updatedValue.map((element) => element.id)\n\t\t\t/** Emitted when the groups selection changes<br />**Payload:** `value` (`Array`) - *Ids of selected groups */\n\t\t\tthis.$emit('input', value)\n\t\t},\n\n\t\t/**\n\t\t * Use provisioning API to search for given group and save it in the groups object\n\t\t *\n\t\t * @param {string} query The query like parts of the id oder display name\n\t\t * @return {boolean}\n\t\t */\n\t\tasync loadGroup(query) {\n\t\t\ttry {\n\t\t\t\tquery = typeof query === 'string' ? encodeURI(query) : ''\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2))\n\n\t\t\t\t// No network error, so reset any error after 5 seconds\n\t\t\t\tif (this.errorMessage !== '') {\n\t\t\t\t\twindow.setTimeout(() => {\n\t\t\t\t\t\tthis.errorMessage = ''\n\t\t\t\t\t}, 5000)\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tconst newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]))\n\t\t\t\t\tthis.groups = { ...this.groups, ...newGroups }\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t/** Emitted if groups could not be queried.<br />**Payload:** `error` (`object`) - The Axios error */\n\t\t\t\tthis.$emit('error', error)\n\t\t\t\tthis.errorMessage = t('Unable to search the group')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/**\n\t\t * Custom filter function for `NcSelect` to filter by ID *and* display name\n\t\t *\n\t\t * @param {object} option One of the groups\n\t\t * @param {string} label The label property of the group\n\t\t * @param {string} search The current search string\n\t\t */\n\t\tfilterGroups(option, label, search) {\n\t\t\treturn `${label || ''} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1\n\t\t},\n\n\t\t/**\n\t\t * Debounce the group search (reduce API calls)\n\t\t */\n\t\tonSearch: debounce(function(query) {\n\t\t\tthis.loadGroup(query)\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.select-group-error {\n\tcolor: var(--color-error);\n\tfont-size: 13px;\n\tpadding-inline-start: var(--border-radius-large);\n}\n</style>\n"],"names":["_sfc_main","Components_NcSelect","l10n","GenRandomId","id","group","g","loadedGroupIds","groupId","storageName","savedGroups","updatedValue","value","element","query","response","axios__default","router","newGroups","error","l10n$1","option","label","search","debounce"],"mappings":"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"}
|