@nextcloud/vue 9.0.0-alpha.3 → 9.0.0-alpha.4
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 +44 -0
- package/README.md +5 -0
- package/dist/Components/NcActionButton.mjs +1 -1
- package/dist/Components/NcActionButtonGroup.mjs +1 -1
- package/dist/Components/NcActionCaption.mjs +1 -1
- package/dist/Components/NcActionCheckbox.mjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActionLink.mjs +1 -1
- package/dist/Components/NcActionRadio.mjs +1 -1
- package/dist/Components/NcActionRouter.mjs +1 -1
- package/dist/Components/NcActionSeparator.mjs +1 -1
- package/dist/Components/NcActionText.mjs +1 -1
- package/dist/Components/NcActionTextEditable.mjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppContent.mjs +1 -1
- package/dist/Components/NcAppNavigation.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationIconBullet.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationList.mjs +1 -1
- package/dist/Components/NcAppNavigationNew.mjs +1 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppNavigationSpacer.mjs +1 -1
- package/dist/Components/NcAppNavigationToggle.mjs +1 -21
- package/dist/Components/NcAppNavigationToggle.mjs.map +1 -1
- package/dist/Components/NcAppSettingsDialog.mjs +1 -1
- package/dist/Components/NcAppSettingsSection.mjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAppSidebarTab.mjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcButton.mjs +1 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +1 -1
- package/dist/Components/NcChip.mjs +4 -0
- package/dist/Components/NcChip.mjs.map +1 -0
- package/dist/Components/NcColorPicker.mjs +1 -1
- package/dist/Components/NcContent.mjs +1 -1
- package/dist/Components/NcCounterBubble.mjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTime.mjs +1 -1
- package/dist/Components/NcDateTimePicker.mjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcDialog.mjs +1 -1
- package/dist/Components/NcDialogButton.mjs +1 -1
- package/dist/Components/NcEllipsisedOption.mjs +1 -1
- package/dist/Components/NcEmojiPicker.mjs +1 -1
- package/dist/Components/NcEmptyContent.mjs +1 -1
- package/dist/Components/NcGuestContent.mjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcHighlight.mjs +1 -1
- package/dist/Components/NcIconSvgWrapper.mjs +1 -1
- package/dist/Components/NcInputField.mjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcLoadingIcon.mjs +1 -1
- package/dist/Components/NcModal.mjs +14 -53
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcNoteCard.mjs +1 -1
- package/dist/Components/NcPasswordField.mjs +1 -1
- package/dist/Components/NcPopover.mjs +1 -1
- package/dist/Components/NcProgressBar.mjs +1 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +2 -2
- package/dist/Components/NcRichText.mjs +3 -24
- package/dist/Components/NcRichText.mjs.map +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSettingsInputText.mjs +1 -1
- package/dist/Components/NcSettingsSection.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -22
- package/dist/Components/NcSettingsSelectGroup.mjs.map +1 -1
- package/dist/Components/NcTextArea.mjs +1 -1
- package/dist/Components/NcTextField.mjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Components/NcUserStatusIcon.mjs +1 -1
- package/dist/Components/NcVNodes.mjs.map +1 -1
- package/dist/Composables/useIsFullscreen.mjs +0 -21
- package/dist/Composables/useIsFullscreen.mjs.map +1 -1
- package/dist/Composables/useIsMobile.mjs +0 -21
- package/dist/Composables/useIsMobile.mjs.map +1 -1
- package/dist/Directives/Focus.mjs +0 -21
- package/dist/Directives/Focus.mjs.map +1 -1
- package/dist/Directives/Linkify.mjs +1 -1
- package/dist/Directives/Linkify.mjs.map +1 -1
- package/dist/Directives/Tooltip.mjs +1 -23
- package/dist/Directives/Tooltip.mjs.map +1 -1
- package/dist/Functions/a11y.mjs +0 -21
- package/dist/Functions/a11y.mjs.map +1 -1
- package/dist/Functions/emoji.mjs +1 -1
- package/dist/Functions/reference.mjs +1 -1
- package/dist/Functions/usernameToColor.mjs +1 -1
- package/dist/Mixins/clickOutsideOptions.mjs +0 -21
- package/dist/Mixins/clickOutsideOptions.mjs.map +1 -1
- package/dist/Mixins/richEditor.mjs +2 -2
- package/dist/assets/NcActionButton-tvMk0Dz-.css +107 -0
- package/dist/assets/{NcActionButtonGroup-CvloX35s.css → NcActionButtonGroup-CQxLn2fv.css} +6 -20
- package/dist/assets/NcActionCaption-D-VXTPLI.css +32 -0
- package/dist/assets/NcActionCheckbox-DzmNTqwC.css +78 -0
- package/dist/assets/NcActionInput-4qR5N5lV.css +222 -0
- package/dist/assets/NcActionLink-Djp7wPGg.css +92 -0
- package/dist/assets/NcActionRadio-ZRQheAZT.css +78 -0
- package/dist/assets/NcActionRouter-B0l-dISs.css +103 -0
- package/dist/assets/NcActionSeparator-CEbb5P6P.css +24 -0
- package/dist/assets/NcActionText-Ip9hRt85.css +107 -0
- package/dist/assets/NcActionTextEditable-1JPkW_4o.css +238 -0
- package/dist/assets/NcActions-pRTZ3RyK.css +83 -0
- package/dist/assets/NcAppContent-CK9aL637.css +125 -0
- package/dist/assets/NcAppNavigation-BjnW8PQn.css +103 -0
- package/dist/assets/NcAppNavigationCaption-NPhURS5E.css +48 -0
- package/dist/assets/NcAppNavigationIconBullet-EfIZU7x-.css +30 -0
- package/dist/assets/{NcAppNavigationItem-DBjQubbD.css → NcAppNavigationItem-wQ3n8jc-.css} +50 -74
- package/dist/assets/NcAppNavigationList-BIbyyT7b.css +29 -0
- package/dist/assets/NcAppNavigationNew-R0QcGqvG.css +27 -0
- package/dist/assets/{NcAppNavigationNewItem-wTDYmQmA.css → NcAppNavigationNewItem-CO3GnR26.css} +42 -52
- package/dist/assets/NcAppNavigationSettings-Cyn2gy0W.css +79 -0
- package/dist/assets/NcAppNavigationSpacer-DiE3sVy0.css +6 -0
- package/dist/assets/NcAppNavigationToggle-CNPQvWtG.css +27 -0
- package/dist/assets/NcAppSettingsDialog-ksK-DMgk.css +74 -0
- package/dist/assets/NcAppSettingsSection-CcRbdcD-.css +30 -0
- package/dist/assets/{NcAppSidebar-v-H-37nV.css → NcAppSidebar-CxMCtTtn.css} +98 -149
- package/dist/assets/NcAppSidebarTab-Cp0hG2NU.css +34 -0
- package/dist/assets/NcAvatar-BnHiRwVr.css +129 -0
- package/dist/assets/NcBreadcrumb-CJ7KeSKQ.css +68 -0
- package/dist/assets/NcBreadcrumbs-C05lySw_.css +37 -0
- package/dist/assets/{NcButton-BqOBMPBj.css → NcButton-D3_Qd5cl.css} +58 -71
- package/dist/assets/{NcCheckboxRadioSwitch-BrP8x4oD.css → NcCheckboxRadioSwitch-By6afmQ3.css} +53 -81
- package/dist/assets/NcChip-Cho4h_Kr.css +61 -0
- package/dist/assets/NcColorPicker-vEZb9dRS.css +122 -0
- package/dist/assets/NcContent-DljiVMLl.css +80 -0
- package/dist/assets/NcCounterBubble-DT16e2bg.css +53 -0
- package/dist/assets/NcDashboardWidget-CvGZT_xf.css +73 -0
- package/dist/assets/NcDashboardWidgetItem-JCtQhwhS.css +85 -0
- package/dist/assets/{NcDateTimePicker-DBxgtJoU.css → NcDateTimePicker-BLEg7GJo.css} +38 -76
- package/dist/assets/NcDateTimePickerNative-DLch-JRA.css +47 -0
- package/dist/assets/NcDialog-BmN7gR6_.css +132 -0
- package/dist/assets/NcEllipsisedOption-DZK2vWD1.css +34 -0
- package/dist/assets/{NcEmojiPicker-DPDnLnba.css → NcEmojiPicker-C18M6LHu.css} +16 -44
- package/dist/assets/NcEmptyContent-C-nruaFh.css +65 -0
- package/dist/assets/NcGuestContent-Dh5z5Dgm.css +50 -0
- package/dist/assets/NcHeaderMenu-C-0GR7Si.css +77 -0
- package/dist/assets/NcIconSvgWrapper-CtTf2c7f.css +39 -0
- package/dist/assets/NcInputConfirmCancel-DBjIHKvN.css +39 -0
- package/dist/assets/{NcInputField-CSuJUlgW.css → NcInputField-DXzhRkiY.css} +42 -55
- package/dist/assets/NcListItem-Cs-R5Xpu.css +156 -0
- package/dist/assets/NcListItemIcon-C2zhDUEr.css +64 -0
- package/dist/assets/NcLoadingIcon-BSONDy7x.css +21 -0
- package/dist/assets/NcMentionBubble-B-xYaJDc.css +70 -0
- package/dist/assets/{NcModal-JZMyM8zO.css → NcModal-B5iEU9Qr.css} +70 -87
- package/dist/assets/NcNoteCard-BLPU1den.css +50 -0
- package/dist/assets/{NcPopover-BwI1hPzy.css → NcPopover-BDlL00qZ.css} +6 -20
- package/dist/assets/NcProgressBar-BsqdCn-x.css +56 -0
- package/dist/assets/NcRelatedResourcesPanel-C56aj2M3.css +158 -0
- package/dist/assets/{NcRichContenteditable-C9Sikuur.css → NcRichContenteditable-B_YH-89_.css} +55 -97
- package/dist/assets/NcRichText-yqgOn353.css +217 -0
- package/dist/assets/{NcSelect-Fmyu7qyl.css → NcSelect-9AZOhTlS.css} +9 -21
- package/dist/assets/NcSettingsInputText-C3j73xA0.css +35 -0
- package/dist/assets/NcSettingsSection-CFKAEs4p.css +52 -0
- package/dist/assets/NcSettingsSelectGroup-CGfaysRv.css +23 -0
- package/dist/assets/{NcTextArea-n0qdPImB.css → NcTextArea-BjB_qSH0.css} +30 -42
- package/dist/assets/NcUserBubble-CIfQjmmP.css +48 -0
- package/dist/assets/NcUserStatusIcon-D9N1ER72.css +30 -0
- package/dist/assets/{Tooltip-jHgt4m-W.css → Tooltip-4CSl8xev.css} +10 -30
- package/dist/assets/referencePickerModal-DeIfdfau.css +413 -0
- package/dist/chunks/{GenColors-BjorWIgA.mjs → GenColors-BidEIqUL.mjs} +1 -23
- package/dist/chunks/GenColors-BidEIqUL.mjs.map +1 -0
- package/dist/chunks/GenRandomId-CMooMQt0.mjs +6 -0
- package/dist/chunks/GenRandomId-CMooMQt0.mjs.map +1 -0
- package/dist/chunks/Linkify-BtgR-dXX.mjs +14 -0
- package/dist/chunks/Linkify-BtgR-dXX.mjs.map +1 -0
- package/dist/chunks/{NcActionButton-BFQnlisT.mjs → NcActionButton-Bqkgltcz.mjs} +4 -4
- package/dist/chunks/NcActionButton-Bqkgltcz.mjs.map +1 -0
- package/dist/chunks/{NcActionButtonGroup-D-8C3HSO.mjs → NcActionButtonGroup-BeQ4mLmQ.mjs} +3 -3
- package/dist/chunks/NcActionButtonGroup-BeQ4mLmQ.mjs.map +1 -0
- package/dist/chunks/{NcActionCaption-CV_zDfFg.mjs → NcActionCaption-Cb_uvgZc.mjs} +2 -2
- package/dist/chunks/{NcActionCaption-CV_zDfFg.mjs.map → NcActionCaption-Cb_uvgZc.mjs.map} +1 -1
- package/dist/chunks/{NcActionCheckbox-CjZH6kjg.mjs → NcActionCheckbox-A6JNjini.mjs} +4 -4
- package/dist/chunks/NcActionCheckbox-A6JNjini.mjs.map +1 -0
- package/dist/chunks/{NcActionInput-ClUviDGB.mjs → NcActionInput-DCe8K_gs.mjs} +10 -10
- package/dist/chunks/NcActionInput-DCe8K_gs.mjs.map +1 -0
- package/dist/chunks/{NcActionLink-CQEzoS_a.mjs → NcActionLink-C0mINC5i.mjs} +4 -4
- package/dist/chunks/NcActionLink-C0mINC5i.mjs.map +1 -0
- package/dist/chunks/{NcActionRadio-D6VrxjcX.mjs → NcActionRadio-BqAyH2zq.mjs} +4 -4
- package/dist/chunks/NcActionRadio-BqAyH2zq.mjs.map +1 -0
- package/dist/chunks/{NcActionRouter-DmrWV-q1.mjs → NcActionRouter-Dr-j-IUI.mjs} +4 -4
- package/dist/chunks/NcActionRouter-Dr-j-IUI.mjs.map +1 -0
- package/dist/chunks/{NcActionSeparator-ib21YUAE.mjs → NcActionSeparator-DKFXmIJ5.mjs} +2 -2
- package/dist/chunks/NcActionSeparator-DKFXmIJ5.mjs.map +1 -0
- package/dist/chunks/{NcActionText-dj38IHk6.mjs → NcActionText-C5ZPI56c.mjs} +4 -4
- package/dist/chunks/NcActionText-C5ZPI56c.mjs.map +1 -0
- package/dist/chunks/{NcActionTextEditable-W1wFQ9dc.mjs → NcActionTextEditable-CLXTDGjr.mjs} +4 -4
- package/dist/chunks/NcActionTextEditable-CLXTDGjr.mjs.map +1 -0
- package/dist/chunks/{NcActions-B6QL_4DD.mjs → NcActions-COaRMDe5.mjs} +7 -7
- package/dist/chunks/NcActions-COaRMDe5.mjs.map +1 -0
- package/dist/chunks/{NcAppContent-jvz75P8O.mjs → NcAppContent-D2in9bd7.mjs} +5 -5
- package/dist/chunks/NcAppContent-D2in9bd7.mjs.map +1 -0
- package/dist/chunks/NcAppContentDetails-Ch6NJvAl.mjs.map +1 -1
- package/dist/chunks/NcAppContentList-DGwk3AvB.mjs.map +1 -1
- package/dist/chunks/{NcAppNavigation-D0RINQda.mjs → NcAppNavigation-Dz1n-CeR.mjs} +5 -5
- package/dist/chunks/NcAppNavigation-Dz1n-CeR.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationCaption-BnhoAPkJ.mjs → NcAppNavigationCaption-6odGo1iM.mjs} +3 -3
- package/dist/chunks/NcAppNavigationCaption-6odGo1iM.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationIconBullet-JoIYov5C.mjs → NcAppNavigationIconBullet-DuqQFciH.mjs} +2 -2
- package/dist/chunks/NcAppNavigationIconBullet-DuqQFciH.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationItem-s0czI8KR.mjs → NcAppNavigationItem-BHtzDfb2.mjs} +10 -10
- package/dist/chunks/NcAppNavigationItem-BHtzDfb2.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationList-DzTic3Q7.mjs → NcAppNavigationList-DCmrqe9N.mjs} +2 -2
- package/dist/chunks/NcAppNavigationList-DCmrqe9N.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationNew-RBp5Nk-2.mjs → NcAppNavigationNew-CRonFKWJ.mjs} +3 -3
- package/dist/chunks/NcAppNavigationNew-CRonFKWJ.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationNewItem-u85Ffz-V.mjs → NcAppNavigationNewItem-Ctbp1kb-.mjs} +4 -4
- package/dist/chunks/NcAppNavigationNewItem-Ctbp1kb-.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationSettings-D_4gHC9H.mjs → NcAppNavigationSettings-ynYeFb6Z.mjs} +4 -4
- package/dist/chunks/NcAppNavigationSettings-ynYeFb6Z.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationSpacer-Ctbl-q5I.mjs → NcAppNavigationSpacer-BQFYpMbq.mjs} +2 -2
- package/dist/chunks/NcAppNavigationSpacer-BQFYpMbq.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationToggle-BtC5hBww.mjs → NcAppNavigationToggle-DYG8u5dW.mjs} +4 -4
- package/dist/chunks/NcAppNavigationToggle-DYG8u5dW.mjs.map +1 -0
- package/dist/chunks/{NcAppSettingsDialog-DXpamfEo.mjs → NcAppSettingsDialog-CjpGb_I4.mjs} +4 -4
- package/dist/chunks/NcAppSettingsDialog-CjpGb_I4.mjs.map +1 -0
- package/dist/chunks/{NcAppSettingsSection-PG8OLRbP.mjs → NcAppSettingsSection-a7OfJ9GT.mjs} +2 -2
- package/dist/chunks/NcAppSettingsSection-a7OfJ9GT.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-B0pjWsoI.mjs → NcAppSidebar-BGCuCKk_.mjs} +232 -200
- package/dist/chunks/NcAppSidebar-BGCuCKk_.mjs.map +1 -0
- package/dist/chunks/{NcAppSidebarTab-BTuuQoW5.mjs → NcAppSidebarTab-zBqyKIgn.mjs} +2 -2
- package/dist/chunks/NcAppSidebarTab-zBqyKIgn.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-BKmfsBcY.mjs → NcAvatar-OjWzLdGK.mjs} +15 -36
- package/dist/chunks/NcAvatar-OjWzLdGK.mjs.map +1 -0
- package/dist/chunks/{NcBreadcrumb-C3k6T3Bj.mjs → NcBreadcrumb-Df7Nn5jU.mjs} +5 -5
- package/dist/chunks/NcBreadcrumb-Df7Nn5jU.mjs.map +1 -0
- package/dist/chunks/{NcBreadcrumbs-Crc4BkfA.mjs → NcBreadcrumbs-CighY87i.mjs} +12 -16
- package/dist/chunks/NcBreadcrumbs-CighY87i.mjs.map +1 -0
- package/dist/chunks/{NcButton-B27fpd1m.mjs → NcButton-DvO0XwJf.mjs} +6 -31
- package/dist/chunks/NcButton-DvO0XwJf.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-DdG8AL_h.mjs → NcCheckboxRadioSwitch-BW7W0ToW.mjs} +6 -6
- package/dist/chunks/NcCheckboxRadioSwitch-BW7W0ToW.mjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs +3 -0
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs.map +1 -0
- package/dist/chunks/NcChip-Crkkyllt.mjs +143 -0
- package/dist/chunks/NcChip-Crkkyllt.mjs.map +1 -0
- package/dist/chunks/{NcColorPicker-D4IB1shI.mjs → NcColorPicker-Bq2-21Np.mjs} +7 -7
- package/dist/chunks/NcColorPicker-Bq2-21Np.mjs.map +1 -0
- package/dist/chunks/NcContent-WcbDFG2f.mjs +130 -0
- package/dist/chunks/NcContent-WcbDFG2f.mjs.map +1 -0
- package/dist/chunks/{NcCounterBubble-BVDNwJiw.mjs → NcCounterBubble-B0Sk58x_.mjs} +2 -2
- package/dist/chunks/NcCounterBubble-B0Sk58x_.mjs.map +1 -0
- package/dist/chunks/{NcDashboardWidget-B5H6n5qG.mjs → NcDashboardWidget-xBpqAct1.mjs} +7 -7
- package/dist/chunks/NcDashboardWidget-xBpqAct1.mjs.map +1 -0
- package/dist/chunks/{NcDashboardWidgetItem-BbgZpZ-D.mjs → NcDashboardWidgetItem-BwemNzvL.mjs} +5 -5
- package/dist/chunks/NcDashboardWidgetItem-BwemNzvL.mjs.map +1 -0
- package/dist/chunks/{NcDateTime-p5872lEX.mjs → NcDateTime-BVQqC6rO.mjs} +1 -22
- package/dist/chunks/NcDateTime-BVQqC6rO.mjs.map +1 -0
- package/dist/chunks/{NcDateTimePicker-C1gBl-W0.mjs → NcDateTimePicker-CjuFbS-2.mjs} +7 -7
- package/dist/chunks/NcDateTimePicker-CjuFbS-2.mjs.map +1 -0
- package/dist/chunks/{NcDateTimePickerNative-CyCL5Ovh.mjs → NcDateTimePickerNative-DwJ_yIEg.mjs} +3 -3
- package/dist/chunks/NcDateTimePickerNative-DwJ_yIEg.mjs.map +1 -0
- package/dist/chunks/{NcDialog-Dq3Qnbke.mjs → NcDialog-CE2gyz2g.mjs} +4 -4
- package/dist/chunks/NcDialog-CE2gyz2g.mjs.map +1 -0
- package/dist/chunks/{NcDialogButton-C6SudZTq.mjs → NcDialogButton-DAb0CNtg.mjs} +11 -3
- package/dist/chunks/NcDialogButton-DAb0CNtg.mjs.map +1 -0
- package/dist/chunks/{NcEllipsisedOption-DsCFqgUF.mjs → NcEllipsisedOption-CufdpPBu.mjs} +9 -3
- package/dist/chunks/NcEllipsisedOption-CufdpPBu.mjs.map +1 -0
- package/dist/chunks/{NcEmojiPicker-BwQ8VxQZ.mjs → NcEmojiPicker-DNbUUyLY.mjs} +9 -9
- package/dist/chunks/NcEmojiPicker-DNbUUyLY.mjs.map +1 -0
- package/dist/chunks/{NcEmptyContent-CdgacgQe.mjs → NcEmptyContent-BoGB3vFC.mjs} +2 -2
- package/dist/chunks/NcEmptyContent-BoGB3vFC.mjs.map +1 -0
- package/dist/chunks/{NcGuestContent-DfnVEtGM.mjs → NcGuestContent-DVqg5Bq4.mjs} +2 -2
- package/dist/chunks/NcGuestContent-DVqg5Bq4.mjs.map +1 -0
- package/dist/chunks/{NcHeaderMenu-CJVtnKpb.mjs → NcHeaderMenu-CIWkk8T1.mjs} +6 -6
- package/dist/chunks/NcHeaderMenu-CIWkk8T1.mjs.map +1 -0
- package/dist/chunks/{NcHighlight-CR5kySMp.mjs → NcHighlight-BHtRIzqk.mjs} +0 -21
- package/dist/chunks/NcHighlight-BHtRIzqk.mjs.map +1 -0
- package/dist/chunks/{NcIconSvgWrapper-C0csZ9zg.mjs → NcIconSvgWrapper-DbL6OP85.mjs} +3 -3
- package/dist/chunks/NcIconSvgWrapper-DbL6OP85.mjs.map +1 -0
- package/dist/chunks/{NcInputConfirmCancel-Rk8B1Q0j.mjs → NcInputConfirmCancel-Cwh6_J6A.mjs} +4 -4
- package/dist/chunks/NcInputConfirmCancel-Cwh6_J6A.mjs.map +1 -0
- package/dist/chunks/{NcInputField-DX0Brmlk.mjs → NcInputField-BrAvsgA4.mjs} +4 -4
- package/dist/chunks/NcInputField-BrAvsgA4.mjs.map +1 -0
- package/dist/chunks/{NcListItem-CgZoQEIf.mjs → NcListItem-D3yyUn7h.mjs} +5 -5
- package/dist/chunks/{NcListItem-CgZoQEIf.mjs.map → NcListItem-D3yyUn7h.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-A5o8HkQv.mjs → NcListItemIcon-B06oTqsI.mjs} +6 -6
- package/dist/chunks/NcListItemIcon-B06oTqsI.mjs.map +1 -0
- package/dist/chunks/{NcLoadingIcon-DwbO7gAy.mjs → NcLoadingIcon-DREmHXr2.mjs} +2 -2
- package/dist/chunks/NcLoadingIcon-DREmHXr2.mjs.map +1 -0
- package/dist/chunks/{NcNoteCard-CdZRsd8-.mjs → NcNoteCard-CQgzjr2r.mjs} +2 -2
- package/dist/chunks/NcNoteCard-CQgzjr2r.mjs.map +1 -0
- package/dist/chunks/{NcPasswordField-B7CiEElO.mjs → NcPasswordField-CaRDsoPg.mjs} +4 -3
- package/dist/chunks/NcPasswordField-CaRDsoPg.mjs.map +1 -0
- package/dist/chunks/{NcPopover-B9UbiGTv.mjs → NcPopover-BXfbq-Vs.mjs} +2 -2
- package/dist/chunks/NcPopover-BXfbq-Vs.mjs.map +1 -0
- package/dist/chunks/{NcProgressBar-CAXfza4R.mjs → NcProgressBar-C2r8oqsv.mjs} +3 -3
- package/dist/chunks/NcProgressBar-C2r8oqsv.mjs.map +1 -0
- package/dist/chunks/{NcRelatedResourcesPanel-Dr4jL2gw.mjs → NcRelatedResourcesPanel-Bg_z2tZT.mjs} +8 -8
- package/dist/chunks/NcRelatedResourcesPanel-Bg_z2tZT.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-P06ORHyg.mjs → NcRichContenteditable-Cx8Fv6sx.mjs} +51 -29
- package/dist/chunks/NcRichContenteditable-Cx8Fv6sx.mjs.map +1 -0
- package/dist/chunks/{NcRichText-BfreYq5m.mjs → NcRichText-2N_x-ark.mjs} +11 -10
- package/dist/chunks/NcRichText-2N_x-ark.mjs.map +1 -0
- package/dist/chunks/NcSavingIndicatorIcon-BiGAtlKQ.mjs.map +1 -1
- package/dist/chunks/{NcSelect-Dt3JJc9b.mjs → NcSelect-CPlvJjcY.mjs} +6 -6
- package/dist/chunks/NcSelect-CPlvJjcY.mjs.map +1 -0
- package/dist/chunks/{NcSelectTags-F8Z_SdXE.mjs → NcSelectTags-Hpq3uQ0b.mjs} +3 -24
- package/dist/chunks/NcSelectTags-Hpq3uQ0b.mjs.map +1 -0
- package/dist/chunks/{NcSettingsInputText-BtDwhhX0.mjs → NcSettingsInputText-oIYmufF3.mjs} +4 -4
- package/dist/chunks/NcSettingsInputText-oIYmufF3.mjs.map +1 -0
- package/dist/chunks/{NcSettingsSection-BN98AV4b.mjs → NcSettingsSection-CMw4W_UL.mjs} +3 -3
- package/dist/chunks/NcSettingsSection-CMw4W_UL.mjs.map +1 -0
- package/dist/chunks/{NcSettingsSelectGroup-61ylzaOo.mjs → NcSettingsSelectGroup-BTVYUUsQ.mjs} +5 -5
- package/dist/chunks/NcSettingsSelectGroup-BTVYUUsQ.mjs.map +1 -0
- package/dist/chunks/{NcTextArea-DOXp3B2R.mjs → NcTextArea-qvR02aYz.mjs} +3 -3
- package/dist/chunks/NcTextArea-qvR02aYz.mjs.map +1 -0
- package/dist/chunks/{NcTextField-5CbWAUlw.mjs → NcTextField-W5cVvjob.mjs} +2 -2
- package/dist/chunks/NcTextField-W5cVvjob.mjs.map +1 -0
- package/dist/chunks/NcTimezonePicker-DQ7LMeQo.mjs +187 -0
- package/dist/chunks/NcTimezonePicker-DQ7LMeQo.mjs.map +1 -0
- package/dist/chunks/{NcUserBubble-B1nO-OgL.mjs → NcUserBubble-DrQahQl0.mjs} +4 -4
- package/dist/chunks/NcUserBubble-DrQahQl0.mjs.map +1 -0
- package/dist/chunks/{NcUserStatusIcon-DXxHWiO9.mjs → NcUserStatusIcon-CA3yJfmu.mjs} +7 -28
- package/dist/chunks/NcUserStatusIcon-CA3yJfmu.mjs.map +1 -0
- package/dist/chunks/ScopeComponent-C5tGtO7l.mjs +14 -0
- package/dist/chunks/ScopeComponent-C5tGtO7l.mjs.map +1 -0
- package/dist/chunks/{_l10n-ipRV_dfs.mjs → _l10n-C3nxU4O-.mjs} +10 -10
- package/dist/chunks/_l10n-C3nxU4O-.mjs.map +1 -0
- package/dist/chunks/actionGlobal-BZFdtdJL.mjs +25 -0
- package/dist/chunks/actionGlobal-BZFdtdJL.mjs.map +1 -0
- package/dist/chunks/{actionText-CBxkao_8.mjs → actionText-aI0owku1.mjs} +1 -43
- package/dist/chunks/actionText-aI0owku1.mjs.map +1 -0
- package/dist/chunks/{autolink-CuPhRJIL.mjs → autolink-CKPk5rzg.mjs} +7 -24
- package/dist/chunks/autolink-CKPk5rzg.mjs.map +1 -0
- package/dist/chunks/{emoji-BjUFGMrw.mjs → emoji-Ba55f8iV.mjs} +0 -21
- package/dist/chunks/emoji-Ba55f8iV.mjs.map +1 -0
- package/dist/chunks/focusTrap-Cecv_gjR.mjs +7 -0
- package/dist/chunks/focusTrap-Cecv_gjR.mjs.map +1 -0
- package/dist/chunks/getAvatarUrl-DxvUjKMi.mjs +11 -0
- package/dist/chunks/getAvatarUrl-DxvUjKMi.mjs.map +1 -0
- package/dist/chunks/{index-5AsHlmYO.mjs → index-BKkaCvJ0.mjs} +4 -25
- package/dist/chunks/index-BKkaCvJ0.mjs.map +1 -0
- package/dist/chunks/index-CtoB4eIp.mjs.map +1 -1
- package/dist/chunks/{referencePickerModal-Tr-vmVPW.mjs → referencePickerModal-Cho5o36L.mjs} +19 -238
- package/dist/chunks/referencePickerModal-Cho5o36L.mjs.map +1 -0
- package/dist/chunks/usernameToColor-4ci35wWd.mjs +26 -0
- package/dist/chunks/usernameToColor-4ci35wWd.mjs.map +1 -0
- package/dist/components/NcActionButton/NcActionButton.vue.d.ts +3 -7
- package/dist/components/NcActionButtonGroup/NcActionButtonGroup.vue.d.ts +1 -1
- package/dist/components/NcActionCheckbox/NcActionCheckbox.vue.d.ts +4 -4
- package/dist/components/NcActionInput/NcActionInput.vue.d.ts +11 -11
- package/dist/components/NcActionRadio/NcActionRadio.vue.d.ts +4 -4
- package/dist/components/NcActionTextEditable/NcActionTextEditable.vue.d.ts +4 -4
- package/dist/components/NcActions/NcActions.vue.d.ts +5 -5
- package/dist/components/NcAppContent/NcAppContent.vue.d.ts +1 -1
- package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +1 -1
- package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +5 -5
- package/dist/components/NcAppNavigationItem/NcInputConfirmCancel.vue.d.ts +3 -3
- package/dist/components/NcAppNavigationSettings/NcAppNavigationSettings.vue.d.ts +3 -3
- package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +47 -15
- package/dist/components/NcAvatar/NcAvatar.vue.d.ts +3 -3
- package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +5 -5
- package/dist/components/NcButton/NcButton.vue.d.ts +16 -13
- package/dist/components/NcButton/index.d.ts +2 -19
- package/dist/components/NcChip/NcChip.vue.d.ts +113 -0
- package/dist/components/NcChip/index.d.ts +5 -0
- package/dist/components/NcContent/NcContent.vue.d.ts +1 -1
- package/dist/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue.d.ts +1 -1
- package/dist/components/NcEllipsisedOption/NcEllipsisedOption.vue.d.ts +12 -0
- package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +2 -2
- package/dist/components/NcHeaderMenu/NcHeaderMenu.vue.d.ts +3 -3
- package/dist/components/NcHighlight/NcHighlight.vue.d.ts +1 -1
- package/dist/components/NcIconSvgWrapper/NcIconSvgWrapper.vue.d.ts +4 -4
- package/dist/components/NcInputField/NcInputField.vue.d.ts +6 -6
- package/dist/components/NcListItem/NcListItem.vue.d.ts +1 -1
- package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +2 -2
- package/dist/components/NcLoadingIcon/NcLoadingIcon.vue.d.ts +1 -1
- package/dist/components/NcNoteCard/NcNoteCard.vue.d.ts +1 -1
- package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +2 -2
- package/dist/components/NcRelatedResourcesPanel/NcResource.vue.d.ts +1 -1
- package/dist/components/NcRelatedResourcesPanel/NcTeamResources.vue.d.ts +1 -1
- package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +5 -5
- package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +22 -10
- package/dist/components/NcRichText/NcReferencePicker/NcSearch.vue.d.ts +1 -1
- package/dist/components/NcRichText/NcReferenceWidget.vue.d.ts +1 -1
- package/dist/components/NcRichText/NcRichText.vue.d.ts +2 -2
- package/dist/components/NcRichText/helpers.d.ts +4 -0
- package/dist/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.vue.d.ts +2 -2
- package/dist/components/NcSelect/NcSelect.vue.d.ts +2 -2
- package/dist/components/NcSelectTags/NcSelectTags.vue.d.ts +1 -1
- package/dist/components/NcSettingsInputText/NcSettingsInputText.vue.d.ts +4 -4
- package/dist/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue.d.ts +5 -5
- package/dist/components/NcTextArea/NcTextArea.vue.d.ts +3 -3
- package/dist/components/NcTimezonePicker/NcTimezonePicker.vue.d.ts +1 -1
- package/dist/components/NcUserBubble/NcUserBubble.vue.d.ts +3 -3
- package/dist/components/NcVNodes/NcVNodes.vue.d.ts +3 -3
- package/dist/components/index.d.ts +6 -19
- package/dist/composables/useFormatDateTime.d.ts +5 -5
- package/dist/directives/index.d.ts +2 -19
- package/dist/functions/a11y/index.d.ts +2 -19
- package/dist/functions/emoji/emoji.d.ts +2 -19
- package/dist/functions/emoji/index.d.ts +2 -19
- package/dist/functions/reference/widgets.d.ts +4 -0
- package/dist/index.d.ts +2 -19
- package/dist/index.mjs +90 -119
- package/dist/index.mjs.map +1 -1
- package/dist/l10n.d.ts +2 -2
- package/dist/mixins/clickOutsideOptions/index.d.ts +1 -1
- package/dist/mixins/richEditor/index.d.ts +1 -1
- package/dist/utils/FindRanges.d.ts +2 -19
- package/dist/utils/GenRandomId.d.ts +2 -19
- package/dist/utils/GetChildren.d.ts +2 -19
- package/dist/utils/GetParent.d.ts +2 -19
- package/dist/utils/ScopeComponent.d.ts +2 -19
- package/dist/utils/Timer.d.ts +4 -38
- package/dist/utils/UserStatus.d.ts +2 -19
- package/dist/utils/getAvatarUrl.d.ts +2 -19
- package/dist/vendor.LICENSE.txt +4 -4
- package/package.json +31 -33
- package/LICENSE +0 -661
- package/dist/assets/NcActionButton-DilAGmID.css +0 -139
- package/dist/assets/NcActionCaption-sfcjBZnu.css +0 -46
- package/dist/assets/NcActionCheckbox-BPTe8v7j.css +0 -110
- package/dist/assets/NcActionInput-BCm3Bb6i.css +0 -271
- package/dist/assets/NcActionLink-ufhOZDI9.css +0 -124
- package/dist/assets/NcActionRadio-BgKkAdF8.css +0 -110
- package/dist/assets/NcActionRouter-DJDXSMeq.css +0 -135
- package/dist/assets/NcActionSeparator-CB59y4di.css +0 -38
- package/dist/assets/NcActionText-FrsQgrnA.css +0 -139
- package/dist/assets/NcActionTextEditable-pgsRQJ7l.css +0 -287
- package/dist/assets/NcActions-6uFGQVJQ.css +0 -111
- package/dist/assets/NcAppContent-CVWf32qC.css +0 -153
- package/dist/assets/NcAppNavigation-B_aG01bd.css +0 -131
- package/dist/assets/NcAppNavigationCaption-B32FjjW3.css +0 -62
- package/dist/assets/NcAppNavigationIconBullet-B8q3pUL5.css +0 -44
- package/dist/assets/NcAppNavigationList-DnIxrbVX.css +0 -43
- package/dist/assets/NcAppNavigationNew-B29SvI0s.css +0 -41
- package/dist/assets/NcAppNavigationSettings-RpFZX7Hx.css +0 -93
- package/dist/assets/NcAppNavigationSpacer-C12GX5n6.css +0 -6
- package/dist/assets/NcAppNavigationToggle-Bb19ZkjT.css +0 -41
- package/dist/assets/NcAppSettingsDialog-CQY4VVRw.css +0 -88
- package/dist/assets/NcAppSettingsSection-BUxPrhYB.css +0 -44
- package/dist/assets/NcAppSidebarTab-WhMYMxlI.css +0 -48
- package/dist/assets/NcAvatar-xxyc0_S6.css +0 -143
- package/dist/assets/NcBreadcrumb-BKgJHxzd.css +0 -82
- package/dist/assets/NcBreadcrumbs-Dq8VnSzJ.css +0 -51
- package/dist/assets/NcColorPicker-q8nVYCvu.css +0 -136
- package/dist/assets/NcContent-CQqz6KXD.css +0 -108
- package/dist/assets/NcCounterBubble-CWi_P1Tb.css +0 -67
- package/dist/assets/NcDashboardWidget-DzDAv3ER.css +0 -87
- package/dist/assets/NcDashboardWidgetItem-BevETFRF.css +0 -99
- package/dist/assets/NcDateTimePickerNative-DHZcOvOf.css +0 -61
- package/dist/assets/NcDialog-CvmjNcgn.css +0 -160
- package/dist/assets/NcEllipsisedOption-ClDzkIX6.css +0 -48
- package/dist/assets/NcEmptyContent-CMM4BKRc.css +0 -79
- package/dist/assets/NcGuestContent-BTahASdv.css +0 -78
- package/dist/assets/NcHeaderMenu-fYpidmuR.css +0 -91
- package/dist/assets/NcIconSvgWrapper-C95UOHYS.css +0 -53
- package/dist/assets/NcInputConfirmCancel-dYsxq6pH.css +0 -53
- package/dist/assets/NcListItem-CJa4SoZs.css +0 -170
- package/dist/assets/NcListItemIcon-KqKY7_tj.css +0 -78
- package/dist/assets/NcLoadingIcon-gxK0ujO0.css +0 -35
- package/dist/assets/NcMentionBubble-DmzU72Mw.css +0 -84
- package/dist/assets/NcNoteCard-e7-Bxio8.css +0 -64
- package/dist/assets/NcProgressBar-D5VftcJm.css +0 -70
- package/dist/assets/NcRelatedResourcesPanel-CbFY3Cdm.css +0 -200
- package/dist/assets/NcRichText-Cc65tYYs.css +0 -240
- package/dist/assets/NcSettingsInputText-DR4Wv2XP.css +0 -49
- package/dist/assets/NcSettingsSection-DrlA06-W.css +0 -66
- package/dist/assets/NcSettingsSelectGroup-Ba_9qqBq.css +0 -37
- package/dist/assets/NcUserBubble-a6zTGwWG.css +0 -62
- package/dist/assets/NcUserStatusIcon-DYNzsng_.css +0 -44
- package/dist/assets/referencePickerModal-4K_FZwca.css +0 -539
- package/dist/chunks/GenColors-BjorWIgA.mjs.map +0 -1
- package/dist/chunks/GenRandomId-CXkjMlAT.mjs +0 -27
- package/dist/chunks/GenRandomId-CXkjMlAT.mjs.map +0 -1
- package/dist/chunks/Linkify-BBPJHBma.mjs +0 -35
- package/dist/chunks/Linkify-BBPJHBma.mjs.map +0 -1
- package/dist/chunks/NcActionButton-BFQnlisT.mjs.map +0 -1
- package/dist/chunks/NcActionButtonGroup-D-8C3HSO.mjs.map +0 -1
- package/dist/chunks/NcActionCheckbox-CjZH6kjg.mjs.map +0 -1
- package/dist/chunks/NcActionInput-ClUviDGB.mjs.map +0 -1
- package/dist/chunks/NcActionLink-CQEzoS_a.mjs.map +0 -1
- package/dist/chunks/NcActionRadio-D6VrxjcX.mjs.map +0 -1
- package/dist/chunks/NcActionRouter-DmrWV-q1.mjs.map +0 -1
- package/dist/chunks/NcActionSeparator-ib21YUAE.mjs.map +0 -1
- package/dist/chunks/NcActionText-dj38IHk6.mjs.map +0 -1
- package/dist/chunks/NcActionTextEditable-W1wFQ9dc.mjs.map +0 -1
- package/dist/chunks/NcActions-B6QL_4DD.mjs.map +0 -1
- package/dist/chunks/NcAppContent-jvz75P8O.mjs.map +0 -1
- package/dist/chunks/NcAppNavigation-D0RINQda.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationCaption-BnhoAPkJ.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationIconBullet-JoIYov5C.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationItem-s0czI8KR.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationList-DzTic3Q7.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationNew-RBp5Nk-2.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationNewItem-u85Ffz-V.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationSettings-D_4gHC9H.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationSpacer-Ctbl-q5I.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationToggle-BtC5hBww.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsDialog-DXpamfEo.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-PG8OLRbP.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-B0pjWsoI.mjs.map +0 -1
- package/dist/chunks/NcAppSidebarTab-BTuuQoW5.mjs.map +0 -1
- package/dist/chunks/NcAvatar-BKmfsBcY.mjs.map +0 -1
- package/dist/chunks/NcBreadcrumb-C3k6T3Bj.mjs.map +0 -1
- package/dist/chunks/NcBreadcrumbs-Crc4BkfA.mjs.map +0 -1
- package/dist/chunks/NcButton-B27fpd1m.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-DdG8AL_h.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_9bdeea42_lang-C9ptCbXx.mjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_9bdeea42_lang-C9ptCbXx.mjs.map +0 -1
- package/dist/chunks/NcColorPicker-D4IB1shI.mjs.map +0 -1
- package/dist/chunks/NcContent-CMQytlSd.mjs +0 -129
- package/dist/chunks/NcContent-CMQytlSd.mjs.map +0 -1
- package/dist/chunks/NcCounterBubble-BVDNwJiw.mjs.map +0 -1
- package/dist/chunks/NcDashboardWidget-B5H6n5qG.mjs.map +0 -1
- package/dist/chunks/NcDashboardWidgetItem-BbgZpZ-D.mjs.map +0 -1
- package/dist/chunks/NcDateTime-p5872lEX.mjs.map +0 -1
- package/dist/chunks/NcDateTimePicker-C1gBl-W0.mjs.map +0 -1
- package/dist/chunks/NcDateTimePickerNative-CyCL5Ovh.mjs.map +0 -1
- package/dist/chunks/NcDialog-Dq3Qnbke.mjs.map +0 -1
- package/dist/chunks/NcDialogButton-C6SudZTq.mjs.map +0 -1
- package/dist/chunks/NcEllipsisedOption-DsCFqgUF.mjs.map +0 -1
- package/dist/chunks/NcEmojiPicker-BwQ8VxQZ.mjs.map +0 -1
- package/dist/chunks/NcEmptyContent-CdgacgQe.mjs.map +0 -1
- package/dist/chunks/NcGuestContent-DfnVEtGM.mjs.map +0 -1
- package/dist/chunks/NcHeaderMenu-CJVtnKpb.mjs.map +0 -1
- package/dist/chunks/NcHighlight-CR5kySMp.mjs.map +0 -1
- package/dist/chunks/NcIconSvgWrapper-C0csZ9zg.mjs.map +0 -1
- package/dist/chunks/NcInputConfirmCancel-Rk8B1Q0j.mjs.map +0 -1
- package/dist/chunks/NcInputField-DX0Brmlk.mjs.map +0 -1
- package/dist/chunks/NcListItemIcon-A5o8HkQv.mjs.map +0 -1
- package/dist/chunks/NcLoadingIcon-DwbO7gAy.mjs.map +0 -1
- package/dist/chunks/NcNoteCard-CdZRsd8-.mjs.map +0 -1
- package/dist/chunks/NcPasswordField-B7CiEElO.mjs.map +0 -1
- package/dist/chunks/NcPopover-B9UbiGTv.mjs.map +0 -1
- package/dist/chunks/NcProgressBar-CAXfza4R.mjs.map +0 -1
- package/dist/chunks/NcRelatedResourcesPanel-Dr4jL2gw.mjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-P06ORHyg.mjs.map +0 -1
- package/dist/chunks/NcRichText-BfreYq5m.mjs.map +0 -1
- package/dist/chunks/NcSelect-Dt3JJc9b.mjs.map +0 -1
- package/dist/chunks/NcSelectTags-F8Z_SdXE.mjs.map +0 -1
- package/dist/chunks/NcSettingsInputText-BtDwhhX0.mjs.map +0 -1
- package/dist/chunks/NcSettingsSection-BN98AV4b.mjs.map +0 -1
- package/dist/chunks/NcSettingsSelectGroup-61ylzaOo.mjs.map +0 -1
- package/dist/chunks/NcTextArea-DOXp3B2R.mjs.map +0 -1
- package/dist/chunks/NcTextField-5CbWAUlw.mjs.map +0 -1
- package/dist/chunks/NcTimezonePicker-Cs2arCUX.mjs +0 -4051
- package/dist/chunks/NcTimezonePicker-Cs2arCUX.mjs.map +0 -1
- package/dist/chunks/NcUserBubble-B1nO-OgL.mjs.map +0 -1
- package/dist/chunks/NcUserStatusIcon-DXxHWiO9.mjs.map +0 -1
- package/dist/chunks/ScopeComponent-B2OE7k3z.mjs +0 -35
- package/dist/chunks/ScopeComponent-B2OE7k3z.mjs.map +0 -1
- package/dist/chunks/_l10n-ipRV_dfs.mjs.map +0 -1
- package/dist/chunks/actionGlobal-BIN1Dngv.mjs +0 -46
- package/dist/chunks/actionGlobal-BIN1Dngv.mjs.map +0 -1
- package/dist/chunks/actionText-CBxkao_8.mjs.map +0 -1
- package/dist/chunks/autolink-CuPhRJIL.mjs.map +0 -1
- package/dist/chunks/emoji-BjUFGMrw.mjs.map +0 -1
- package/dist/chunks/focusTrap-hWDNhn4t.mjs +0 -28
- package/dist/chunks/focusTrap-hWDNhn4t.mjs.map +0 -1
- package/dist/chunks/getAvatarUrl-BBvqBOJD.mjs +0 -32
- package/dist/chunks/getAvatarUrl-BBvqBOJD.mjs.map +0 -1
- package/dist/chunks/index-5AsHlmYO.mjs.map +0 -1
- package/dist/chunks/logger-C7ZZ6zFQ.mjs +0 -25
- package/dist/chunks/logger-C7ZZ6zFQ.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-Tr-vmVPW.mjs.map +0 -1
- package/dist/chunks/usernameToColor-BpeOvoed.mjs +0 -47
- package/dist/chunks/usernameToColor-BpeOvoed.mjs.map +0 -1
- package/dist/utils/IsOutOfViewport.d.ts +0 -8
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcLoadingIcon-DwbO7gAy.mjs","sources":["../../src/components/NcLoadingIcon/NcLoadingIcon.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2022 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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# Usage\n\n```\n<div>\n\t<NcLoadingIcon />\n</div>\n<div style=\"background-color: #171717;\">\n\t<NcLoadingIcon :size=\"64\" appearance=\"light\" name=\"Loading on dark background\" />\n</div>\n<div style=\"background-color: #fff;\">\n\t<NcLoadingIcon :size=\"64\" appearance=\"dark\" name=\"Loading on light background\" />\n</div>\n```\n</docs>\n\n<template>\n\t<span :aria-label=\"name\"\n\t\trole=\"img\"\n\t\tclass=\"material-design-icon loading-icon\">\n\t\t<svg :width=\"size\"\n\t\t\t:height=\"size\"\n\t\t\tviewBox=\"0 0 24 24\">\n\t\t\t<path :fill=\"colors[0]\" d=\"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z\" />\n\t\t\t<path :fill=\"colors[1]\" d=\"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z\">\n\t\t\t\t<title v-if=\"name\">{{ name }}</title>\n\t\t\t</path>\n\t\t</svg>\n\t</span>\n</template>\n\n<script>\nexport default {\n\tname: 'NcLoadingIcon',\n\tprops: {\n\t\t/**\n\t\t * Specify the size of the loading icon.\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 20,\n\t\t},\n\t\t/**\n\t\t * The appearance of the loading icon.\n\t\t * 'auto' adjusts to the Nextcloud color scheme,\n\t\t * 'light' and 'dark' are static.\n\t\t */\n\t\tappearance: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['auto', 'light', 'dark'].includes(value)\n\t\t\t},\n\t\t\tdefault: 'auto',\n\t\t},\n\t\t/**\n\t\t * Specify what is loading.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\tcolors() {\n\t\t\tconst colors = ['#777', '#CCC']\n\t\t\tif (this.appearance === 'light') {\n\t\t\t\treturn colors\n\t\t\t} else if (this.appearance === 'dark') {\n\t\t\t\treturn colors.reverse()\n\t\t\t}\n\t\t\treturn ['var(--color-loading-light)', 'var(--color-loading-dark)']\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.loading-icon svg{\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n</style>\n"],"names":["_createElementBlock","_createElementVNode","_createCommentVNode"],"mappings":";;AAsDA,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,YAAY;AAAA,MACX,MAAM;AAAA,MACN,UAAU,OAAO;AAChB,eAAO,CAAC,QAAQ,SAAS,MAAM,EAAE,SAAS,KAAK;AAAA,MAC/C;AAAA,MACD,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACT,SAAS;AACR,YAAM,SAAS,CAAC,QAAQ,MAAM;AAC9B,UAAI,KAAK,eAAe,SAAS;AAChC,eAAO;AAAA,MACR,WAAW,KAAK,eAAe,QAAQ;AACtC,eAAO,OAAO,QAAQ;AAAA,MACvB;AACA,aAAO,CAAC,8BAA8B,2BAA2B;AAAA,IACjE;AAAA,EACD;AACF;AA/FA,MAAA,aAAA,CAAA,YAAA;AAAA,MAAA,aAAA,CAAA,SAAA,QAAA;AAAA,MAAA,aAAA,CAAA,MAAA;AAAA,MAAA,aAAA,CAAA,MAAA;qBAAA,KAAA,EAAA;;sBAuCCA,mBAWO,QAAA;AAAA,IAXA,cAAY,OAAI;AAAA,IACtB,MAAK;AAAA,IACL,OAAM;AAAA;kBACNA,mBAOM,OAAA;AAAA,MAPA,OAAO,OAAI;AAAA,MACf,QAAQ,OAAI;AAAA,MACb,SAAQ;AAAA;MACRC,mBAA2E,QAAA;AAAA,QAApE,MAAM,SAAM,OAAA,CAAA;AAAA,QAAK,GAAE;AAAA,MA7C7B,GAAA,MAAA,GAAA,UAAA;AAAA,MA8CGA,mBAEO,QAAA;AAAA,QAFA,MAAM,SAAM,OAAA,CAAA;AAAA,QAAK,GAAE;AAAA;QACZ,OAAI,qBAAjBD,mBAAqC,SA/CzC,4BA+C0B,OAAI,IAAA,GAAA,CAAA,KA/C9BE,mBAAA,IAAA,IAAA;AAAA,MAAA,GAAA,GAAA,UAAA;AAAA,IAAA,GAAA,GAAA,UAAA;AAAA,EAAA,GAAA,GAAA,UAAA;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcNoteCard-CdZRsd8-.mjs","sources":["../../node_modules/vue-material-design-icons/CheckboxMarkedCircle.vue","../../node_modules/vue-material-design-icons/AlertDecagram.vue","../../node_modules/vue-material-design-icons/Alert.vue","../../node_modules/vue-material-design-icons/Information.vue","../../src/components/NcNoteCard/NcNoteCard.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon checkbox-marked-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckboxMarkedCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon alert-decagram-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M13,17H11V15H13V17M13,13H11V7H13V13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AlertDecagramIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon alert-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13 14H11V9H13M13 18H11V16H13M1 21H23L12 2L1 21Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AlertIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon information-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"InformationIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - @copyright Copyright (c) 2022 Carl Schwan <carl@carlschwan.eu>\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>\nThis component is made to display additional information to the user. It is\navailable in four versions:\n\n- success: Display a successful message\n- info: Display an informational message\n- warning: Display a warning to the user. This indicate that the action they want\n- error: Display an error message. For example\n\nWhen using an error type,\n\n```vue\n<template>\n\t<div>\n\t\t<NcNoteCard type=\"warning\">\n\t\t\t<p>This is dangerous</p>\n\t\t</NcNoteCard>\n\n\t\t<NcNoteCard type=\"error\" heading=\"Error\">\n\t\t\t<p>The server is not happy and reported the following error</p>\n\t\t</NcNoteCard>\n\n\t\t<NcNoteCard type=\"success\">\n\t\t\t<p>You won</p>\n\t\t</NcNoteCard>\n\n\t\t<NcNoteCard type=\"info\">\n\t\t\t<p>For your information</p>\n\t\t</NcNoteCard>\n\n\t\t<NcNoteCard type=\"warning\">\n\t\t\t<template #icon>\n\t\t\t\t<Cog :size=\"20\"/>\n\t\t\t</template>\n\t\t\t<p>Custom icon usage</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\n\timport Cog from 'vue-material-design-icons/Cog.vue'\n\n\texport default {\n\t\tcomponents: {\n\t\t\tCog,\n\t\t},\n\t}\n</script>\n```\n</docs>\n\n<template>\n\t<div class=\"notecard\"\n\t\t:class=\"`notecard--${type}`\"\n\t\t:role=\"shouldShowAlert ? 'alert' : 'note'\">\n\t\t<!-- @slot Manually provide icon -->\n\t\t<slot name=\"icon\">\n\t\t\t<component :is=\"icon\"\n\t\t\t\tclass=\"notecard__icon\"\n\t\t\t\t:class=\"{'notecard__icon--heading': heading}\"\n\t\t\t\t:fill-color=\"color\" />\n\t\t</slot>\n\t\t<div>\n\t\t\t<h2 v-if=\"heading\">\n\t\t\t\t{{ heading }}\n\t\t\t</h2>\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport CheckboxMarkedCircle from 'vue-material-design-icons/CheckboxMarkedCircle.vue'\nimport AlertDecagram from 'vue-material-design-icons/AlertDecagram.vue'\nimport Alert from 'vue-material-design-icons/Alert.vue'\nimport Information from 'vue-material-design-icons/Information.vue'\n\nexport default {\n\tname: 'NcNoteCard',\n\n\tprops: {\n\t\t/**\n\t\t * Type of the attribute\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'warning',\n\t\t\tvalidator: type => ['success', 'info', 'warning', 'error'].includes(type),\n\t\t},\n\t\tshowAlert: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\theading: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\tshouldShowAlert() {\n\t\t\treturn this.showAlert || this.type === 'error'\n\t\t},\n\t\ticon() {\n\t\t\tswitch (this.type) {\n\t\t\tcase 'error':\n\t\t\t\treturn AlertDecagram\n\t\t\tcase 'success':\n\t\t\t\treturn CheckboxMarkedCircle\n\t\t\tcase 'info':\n\t\t\t\treturn Information\n\t\t\tcase 'warning':\n\t\t\t\treturn Alert\n\t\t\tdefault:\n\t\t\t\treturn Alert\n\t\t\t}\n\t\t},\n\t\tcolor() {\n\t\t\tswitch (this.type) {\n\t\t\tcase 'error':\n\t\t\t\treturn 'var(--color-error)'\n\t\t\tcase 'success':\n\t\t\t\treturn 'var(--color-success)'\n\t\t\tcase 'info':\n\t\t\t\treturn 'var(--color-info)'\n\t\t\tcase 'warning':\n\t\t\t\treturn 'var(--color-warning)'\n\t\t\tdefault:\n\t\t\t\treturn 'var(--color-warning)'\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.notecard {\n\tcolor: var(--color-main-text) !important;\n\tbackground-color: var(--note-background) !important;\n\tborder-inline-start: 4px solid var(--note-theme);\n\tborder-radius: var(--border-radius);\n\tmargin: 1rem 0;\n\tmargin-top: 1rem;\n\tpadding: 1rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: 1rem;\n\n\t&__icon--heading {\n\t\tmargin-bottom: auto;\n\t\tmargin-top: 0.3rem;\n\t}\n\n\t&--success {\n\t\t--note-background: rgba(var(--color-success-rgb), 0.1);\n\t\t--note-theme: var(--color-success);\n\t}\n\n\t&--info {\n\t\t--note-background: rgba(var(--color-info-rgb), 0.1);\n\t\t--note-theme: var(--color-info);\n\t}\n\n\t&--error {\n\t\t--note-background: rgba(var(--color-error-rgb), 0.1);\n\t\t--note-theme: var(--color-error);\n\t}\n\n\t&--warning {\n\t\t--note-background: rgba(var(--color-warning-rgb), 0.1);\n\t\t--note-theme: var(--color-warning);\n\t}\n}\n</style>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_hoisted_4","_createCommentVNode","_normalizeClass","_renderSlot","_createBlock","_resolveDynamicComponent"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcPasswordField-B7CiEElO.mjs","sources":["../../node_modules/vue-material-design-icons/Eye.vue","../../node_modules/vue-material-design-icons/EyeOff.vue","../../src/components/NcPasswordField/NcPasswordField.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17M12,4.5C7,4.5 2.73,7.61 1,12C2.73,16.39 7,19.5 12,19.5C17,19.5 21.27,16.39 23,12C21.27,7.61 17,4.5 12,4.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon eye-off-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M11.83,9L15,12.16C15,12.11 15,12.05 15,12A3,3 0 0,0 12,9C11.94,9 11.89,9 11.83,9M7.53,9.8L9.08,11.35C9.03,11.56 9,11.77 9,12A3,3 0 0,0 12,15C12.22,15 12.44,14.97 12.65,14.92L14.2,16.47C13.53,16.8 12.79,17 12,17A5,5 0 0,1 7,12C7,11.21 7.2,10.47 7.53,9.8M2,4.27L4.28,6.55L4.73,7C3.08,8.3 1.78,10 1,12C2.73,16.39 7,19.5 12,19.5C13.55,19.5 15.03,19.2 16.38,18.66L16.81,19.08L19.73,22L21,20.73L3.27,3M12,7A5,5 0 0,1 17,12C17,12.64 16.87,13.26 16.64,13.82L19.57,16.75C21.07,15.5 22.27,13.86 23,12C21.27,7.61 17,4.5 12,4.5C10.6,4.5 9.26,4.75 8,5.2L10.17,7.35C10.74,7.13 11.35,7 12,7Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"EyeOffIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - @copyright Copyright (c) 2022 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\n - @author Carl Schwan <carl@carlschwan.eu>\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### Description\nSee [NcInputField](#/Components/NcFields?id=ncinputfield) for a list of all available props.\n\nGeneral purpose password field component.\n\n```\n<template>\n\t<div class=\"wrapper\">\n\t\t<NcPasswordField v-model=\"text1\"\n\t\t\tlabel=\"Old password\" />\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField\">New password</label>\n\t\t\t<NcPasswordField v-model=\"text2\"\n\t\t\t\tid=\"textField\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\" />\n\t\t</div>\n\t\t<div class=\"external-label\">\n\t\t\t<label for=\"textField2\">New password</label>\n\t\t\t<NcPasswordField v-model=\"text3\"\n\t\t\t\tid=\"textField2\"\n\t\t\t\t:error=\"true\"\n\t\t\t\t:label-outside=\"true\"\n\t\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\t\thelper-text=\"Password is insecure\" />\n\t\t</div>\n\n\t\t<NcPasswordField v-model=\"text4\"\n\t\t\tlabel=\"Good new password\"\n\t\t\t:success=\"true\"\n\t\t\tplaceholder=\"Min. 12 characters\"\n\t\t\thelper-text=\"Password is secure\">\n\t\t\t<template #icon>\n\t\t\t\t<Lock :size=\"20\" />\n\t\t\t</template>\n\t\t</NcPasswordField>\n\n\t\t<NcPasswordField v-model=\"text5\"\n\t\t\t:disabled=\"true\"\n\t\t\tlabel=\"Disabled\" />\n\t</div>\n</template>\n<script>\nimport Lock from 'vue-material-design-icons/Lock'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext1: '',\n\t\t\ttext2: '',\n\t\t\ttext3: 'hunter',\n\t\t\ttext4: '',\n\t\t\ttext5: '',\n\t\t}\n\t},\n\n\tcomponents: {\n\t\tLock,\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.wrapper {\n\tdisplay: flex;\n\tgap: 4px;\n\talign-items: flex-end;\n\tflex-wrap: wrap;\n}\n\n.external-label {\n\tdisplay: flex;\n\twidth: 100%;\n\tmargin-top: 1rem;\n}\n\n.external-label label {\n\tpadding-top: 7px;\n\tpadding-right: 14px;\n\twhite-space: nowrap;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<NcInputField v-bind=\"propsToForward\"\n\t\tref=\"inputField\"\n\t\t:type=\"isPasswordHidden ? 'password' : 'text'\"\n\t\t:trailing-button-label=\"trailingButtonLabelPassword\"\n\t\t:helper-text=\"computedHelperText\"\n\t\t:error=\"computedError\"\n\t\t:success=\"computedSuccess\"\n\t\t:minlength=\"rules.minlength\"\n\t\t@trailing-button-click=\"togglePasswordVisibility\"\n\t\t@update:model-value=\"handleInput\">\n\t\t<template v-if=\"!!$slots.icon\" #icon>\n\t\t\t<!-- Default slot for the leading icon -->\n\t\t\t<slot name=\"icon\" />\n\t\t</template>\n\t\t<template #trailing-button-icon>\n\t\t\t<Eye v-if=\"isPasswordHidden\" :size=\"18\" />\n\t\t\t<EyeOff v-else :size=\"18\" />\n\t\t</template>\n\t</NcInputField>\n</template>\n\n<script>\n\nimport Eye from 'vue-material-design-icons/Eye.vue'\nimport EyeOff from 'vue-material-design-icons/EyeOff.vue'\nimport NcInputField from '../NcInputField/NcInputField.vue'\nimport debounce from 'debounce'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { t } from '../../l10n.js'\nimport logger from '../../utils/logger.js'\n\n/**\n * @typedef PasswordPolicy\n * @property {object} api - The URLs to the password_policy app methods\n * @property {string} api.generate - The URL to the password generator\n * @property {string} api.validate - The URL to the password validator\n * @property {boolean} enforceNonCommonPassword - Whether to enforce non common passwords\n * @property {boolean} enforceNumericCharacters - Whether to enforce numeric characters\n * @property {boolean} enforceSpecialCharacters - Whether to enforce special characters\n * @property {boolean} enforceUpperLowerCase - Whether to enforce upper and lower case\n * @property {number} minLength - The minimum length of the password\n */\n\n/** @type {PasswordPolicy|null} */\nconst passwordPolicy = loadState('core', 'capabilities', {}).password_policy || null\n\nconst NcInputFieldProps = new Set(Object.keys(NcInputField.props))\n\nexport default {\n\tname: 'NcPasswordField',\n\n\tcomponents: {\n\t\tNcInputField,\n\t\tEye,\n\t\tEyeOff,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Any [NcInputField](#/Components/NcFields?id=ncinputfield) props\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\n\t\t// Reuse all the props from NcInputField for better typing and documentation\n\t\t...NcInputField.props,\n\n\t\t// Redefined props\n\n\t\t/**\n\t\t * Controls whether to display the trailing button.\n\t\t */\n\t\t showTrailingButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t// Removed NcInputField props, defined only by this component\n\n\t\ttrailingButtonLabel: undefined,\n\n\t\t// Custom props\n\n\t\t/**\n\t\t * Check if the user entered a valid password using the password_policy\n\t\t * app if available.\n\t\t *\n\t\t * Warning: this doesn't replace server side checking and will do nothing\n\t\t * if the password_policy app is disabled.\n\t\t */\n\t\tcheckPasswordStrength: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * The minlength property defines the minimum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tminlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\n\t\t/**\n\t\t * The maxlength property defines the maximum number of characters\n\t\t * (as UTF-16 code units) the user can enter\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'valid',\n\t\t'invalid',\n\t\t'update:modelValue',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisPasswordHidden: true,\n\t\t\tinternalHelpMessage: '',\n\t\t\tisValid: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcomputedError() {\n\t\t\treturn this.error || this.isValid === false\n\t\t},\n\t\tcomputedSuccess() {\n\t\t\treturn this.success || this.isValid === true\n\t\t},\n\t\tcomputedHelperText() {\n\t\t\tif (this.helperText.length > 0) {\n\t\t\t\treturn this.helperText\n\t\t\t}\n\t\t\treturn this.internalHelpMessage\n\t\t},\n\n\t\trules() {\n\t\t\tconst { minlength } = this\n\t\t\treturn {\n\t\t\t\tminlength: minlength ?? passwordPolicy?.minLength,\n\t\t\t}\n\t\t},\n\n\t\ttrailingButtonLabelPassword() {\n\t\t\treturn this.isPasswordHidden ? t('Show password') : t('Hide password')\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\treturn {\n\t\t\t\t// Proxy original NcInputField's props\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(this.$props).filter(([key]) => NcInputFieldProps.has(key)),\n\t\t\t\t),\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tmodelValue(newValue) {\n\t\t\tif (this.checkPasswordStrength) {\n\t\t\t\tif (passwordPolicy === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.checkPassword(newValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the input element\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.inputField.focus()\n\t\t},\n\n\t\t/**\n\t\t * Select all the text in the input\n\t\t *\n\t\t * @public\n\t\t */\n\t\tselect() {\n\t\t\tthis.$refs.inputField.select()\n\t\t},\n\n\t\thandleInput(event) {\n\t\t\t/**\n\t\t\t * Triggers when the value inside the password field is\n\t\t\t * updated.\n\t\t\t *\n\t\t\t * @property {string} The new value\n\t\t\t */\n\t\t\tthis.$emit('update:modelValue', event)\n\t\t},\n\t\ttogglePasswordVisibility() {\n\t\t\tthis.isPasswordHidden = !this.isPasswordHidden\n\t\t},\n\t\tcheckPassword: debounce(async function(password) {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateOcsUrl('apps/password_policy/api/v1/validate'), { password })\n\t\t\t\tthis.isValid = data.ocs.data.passed\n\t\t\t\tif (data.ocs.data.passed) {\n\t\t\t\t\tthis.internalHelpMessage = t('Password is secure')\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t\t * password entered is valid.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('valid')\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tthis.internalHelpMessage = data.ocs.data.reason\n\t\t\t\t/**\n\t\t\t\t * Triggers when the internal password_policy detect that the\n\t\t\t\t * password entered is invalid.\n\t\t\t\t */\n\t\t\t\tthis.$emit('invalid')\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Password policy returned an error', e)\n\t\t\t}\n\t\t}, 500),\n\t},\n}\n</script>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_hoisted_4","_createCommentVNode","_createBlock","_createSlots","_withCtx","_renderSlot"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcPopover-B9UbiGTv.mjs","sources":["../../src/components/NcPopover/NcPopoverTriggerProvider.vue","../../src/components/NcPopover/NcPopover.vue"],"sourcesContent":["<script>\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tname: 'NcPopoverTriggerProvider',\n\n\tprovide() {\n\t\treturn {\n\t\t\t'NcPopover:trigger:shown': () => this.shown,\n\t\t\t'NcPopover:trigger:attrs': () => this.triggerAttrs,\n\t\t}\n\t},\n\n\tprops: {\n\t\tshown: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tpopupRole: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\ttriggerAttrs() {\n\t\t\treturn {\n\t\t\t\t'aria-haspopup': this.popupRole,\n\t\t\t\t'aria-expanded': this.shown.toString(),\n\t\t\t}\n\t\t},\n\t},\n\n\trender() {\n\t\treturn this.$slots.default?.({\n\t\t\tattrs: this.triggerAttrs,\n\t\t})\n\t},\n})\n</script>\n","<!--\n - @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\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\n### General description\n\nThis component is just a wrapper for the floating-vue plugin by Akryum,\nplease refer to this documentation for customization:\nhttps://github.com/Akryum/floating-vue\n\nThis components has two slots:\n* 'trigger' which can be any html element and it will trigger the popover\nthis slot is optional since you can toggle the popover also by updating the\nopen prop on this component;\n\n* a default slot that is for the content of the popover.\n\n### Examples\n\n#### With a `<NcButton>` as a trigger:\n\n```vue\n<template>\n\t<div style=\"display: flex\">\n\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton>I am the trigger</NcButton>\n\t\t\t</template>\n\t\t\t<template #default>\n\t\t\t\t<form tabindex=\"0\" role=\"dialog\" aria-labelledby=\"popover-example-dialog-header-1\" @submit.prevent>\n\t\t\t\t\t<h2 id=\"popover-example-dialog-header-1\">this is some content</h2>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit. <br/>\n\t\t\t\t\t\tVestibulum eget placerat velit.\n\t\t\t\t\t</p>\n\t\t\t\t\t<label>\n\t\t\t\t\t\tLabel element\n\t\t\t\t\t\t<input type=\"text\" placeholder=\"input element\"/>\n\t\t\t\t\t</label>\n\t\t\t\t</form>\n\t\t\t</template>\n\t\t</NcPopover>\n\t</div>\n</template>\n```\n\n#### Without focus trap:\n\nThe [`focus-trap`](https://github.com/focus-trap/focus-trap) emits an error when used in a non-focusable element tree.\n\nThe prop `:focus-trap=\"false\"` help to prevent it when the default behavior is not relevant.\n\n```vue\n<template>\n\t<div style=\"display: flex\">\n\t\t<NcPopover :focus-trap=\"false\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton>Click me!</NcButton>\n\t\t\t</template>\n\t\t\t<template #default>\n\t\t\t\tHi! 🚀\n\t\t\t</template>\n\t\t</NcPopover>\n\t</div>\n</template>\n```\n\n#### With passing props to `floating-vue`'s `Dropdown`:\n\n```vue\n<template>\n\t<div style=\"display: flex\">\n\t\t<NcPopover container=\"body\" :popper-hide-triggers=\"(triggers) => [...triggers, 'click']\" popup-role=\"dialog\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton>I am the trigger</NcButton>\n\t\t\t</template>\n\t\t\t<template #default>\n\t\t\t\t<NcButton>Click on the button will close NcPopover</NcButton>\n\t\t\t</template>\n\t\t</NcPopover>\n\t</div>\n</template>\n```\n\n#### With a custom button in as a trigger:\n\nWhen `<NcButton>` is used as a `<NcPopover>` trigger, it injects required for a11y attributes to the button.\n\nIf you are using your own custom button as a trigger make sure to bind `attrs` from the trigger slot props.\nSee code example below.\n\n```vue\n<template>\n\t<div style=\"display: flex\">\n\t\t<NcPopover>\n\t\t\t<!-- Take \"attrs\" from the slot props -->\n\t\t\t<template #trigger=\"{ attrs }\">\n\t\t\t\t<!-- Bind attrs as the button attrs -->\n\t\t\t\t<button v-bind=\"attrs\">\n\t\t\t\t\tI am a custom button in the trigger\n\t\t\t\t</button>\n\t\t\t</template>\n\n\t\t\tHi! 🚀\n\t\t</NcPopover>\n\t</div>\n</template>\n```\n\n#### Provide role for the popover content\n\nFor accessibility reasons, popover should have a role. Provide it to the `popup-role` and make sure that the popover content is an element with the same role.\n\nSee: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup\n\n```vue\n<template>\n\t<div style=\"display: flex\">\n\t\t<!-- Provide popup role -->\n\t\t<NcPopover popup-role=\"dialog\">\n\t\t\t<template #trigger>\n\t\t\t\t<NcButton>Delete</NcButton>\n\t\t\t</template>\n\n\t\t\t<!-- Popover content should has the same role -->\n\t\t\t<div role=\"dialog\" aria-labelledby=\"popover-example-custom-role-1\" aria-modal=\"true\">\n\t\t\t\t<!-- This is not required but better to provide a label -->\n\t\t\t\t<header id=\"popover-example-custom-role-1\">\n\t\t\t\t\t<strong>Confirm remove</strong>\n\t\t\t\t</header>\n\t\t\t\t<NcButton type=\"danger\">Delete</NcButton>\n\t\t\t</div>\n\t\t</NcPopover>\n\t</div>\n</template>\n```\n</docs>\n\n<template>\n\t<Dropdown ref=\"popover\"\n\t\t:distance=\"10\"\n\t\t:arrow-padding=\"10\"\n\t\t:no-auto-focus=\"true /* Handled by the focus trap */\"\n\t\t:popper-class=\"popoverBaseClass\"\n\t\t:shown=\"internalShown\"\n\t\t@update:shown=\"internalShown = $event\"\n\t\t@apply-show=\"afterShow\"\n\t\t@apply-hide=\"afterHide\">\n\t\t<NcPopoverTriggerProvider v-slot=\"slotProps\" :shown=\"internalShown\" :popup-role=\"popupRole\">\n\t\t\t<!-- This will be the popover target (for the events and position) -->\n\t\t\t<slot name=\"trigger\" v-bind=\"slotProps\" />\n\t\t</NcPopoverTriggerProvider>\n\n\t\t<!-- This will be the content of the popover -->\n\t\t<template #popper>\n\t\t\t<slot />\n\t\t</template>\n\t</Dropdown>\n</template>\n\n<script>\nimport { warn } from 'vue'\nimport { Dropdown } from 'floating-vue'\nimport { createFocusTrap } from 'focus-trap'\nimport { getTrapStack } from '../../utils/focusTrap.js'\nimport NcPopoverTriggerProvider from './NcPopoverTriggerProvider.vue'\n\nexport default {\n\tname: 'NcPopover',\n\n\tcomponents: {\n\t\tDropdown,\n\t\tNcPopoverTriggerProvider,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Show or hide the popper\n\t\t * @see https://floating-vue.starpad.dev/api/#shown\n\t\t */\n\t\tshown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Popup role\n\t\t * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup#values\n\t\t */\n\t\tpopupRole: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t\tvalidator: (value) => ['menu', 'listbox', 'tree', 'grid', 'dialog', 'true'].includes(value),\n\t\t},\n\n\t\tpopoverBaseClass: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Enable popover focus trap\n\t\t */\n\t\tfocusTrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Set element to return focus to after focus trap deactivation\n\t\t *\n\t\t * @type {import('focus-trap').FocusTargetValueOrFalse}\n\t\t */\n\t\tsetReturnFocus: {\n\t\t\tdefault: undefined,\n\t\t\ttype: [HTMLElement, SVGElement, String, Boolean],\n\t\t},\n\t},\n\n\temits: [\n\t\t'after-show',\n\t\t'after-hide',\n\t\t/**\n\t\t * @see https://floating-vue.starpad.dev/api/#update-shown\n\t\t */\n\t\t'update:shown',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tinternalShown: this.shown,\n\t\t}\n\t},\n\n\twatch: {\n\t\tshown(value) {\n\t\t\tthis.internalShown = value\n\t\t},\n\n\t\tinternalShown(value) {\n\t\t\tthis.$emit('update:shown', value)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.checkTriggerA11y()\n\t},\n\n\tbeforeUnmount() {\n\t\tthis.clearFocusTrap()\n\t\tthis.clearEscapeStopPropagation()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if the trigger has all required a11y attributes.\n\t\t * Important to check custom trigger button.\n\t\t */\n\t\tcheckTriggerA11y() {\n\t\t\tif (window.OC?.debug) {\n\t\t\t\tconst triggerContainer = this.getPopoverTriggerContainerElement()\n\t\t\t\tconst requiredTriggerButton = triggerContainer.querySelector('[aria-expanded]')\n\t\t\t\tif (!requiredTriggerButton) {\n\t\t\t\t\twarn('It looks like you are using a custom button as a <NcPopover> or other popover #trigger. If you are not using <NcButton> as a trigger, you need to bind attrs from the #trigger slot props to your custom button. See <NcPopover> docs for an example.')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove incorrect aria-describedby attribute from the trigger.\n\t\t * @see https://github.com/Akryum/floating-vue/blob/8d4f7125aae0e3ea00ba4093d6d2001ab15058f1/packages/floating-vue/src/components/Popper.ts#L734\n\t\t */\n\t\tremoveFloatingVueAriaDescribedBy() {\n\t\t\t// When the popover is shown, floating-vue mutates the root elements of the trigger adding data-popper-shown and incorrect aria-describedby attributes.\n\t\t\tconst triggerContainer = this.getPopoverTriggerContainerElement()\n\t\t\tconst triggerElements = triggerContainer.querySelectorAll('[data-popper-shown]')\n\t\t\tfor (const el of triggerElements) {\n\t\t\t\tel.removeAttribute('aria-describedby')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {HTMLElement|undefined}\n\t\t */\n\t\tgetPopoverContentElement() {\n\t\t\treturn this.$refs.popover?.$refs.popperContent?.$el\n\t\t},\n\n\t\t/**\n\t\t * @return {HTMLElement|undefined}\n\t\t */\n\t\tgetPopoverTriggerContainerElement() {\n\t\t\treturn this.$refs.popover.$refs.popper.$refs.reference\n\t\t},\n\n\t\t/**\n\t\t * Add focus trap for accessibility.\n\t\t */\n\t\tasync useFocusTrap() {\n\t\t\tawait this.$nextTick()\n\n\t\t\tif (!this.focusTrap) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst el = this.getPopoverContentElement()\n\n\t\t\tif (!el) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Init focus trap\n\t\t\tthis.$focusTrap = createFocusTrap(el, {\n\t\t\t\t// Prevents to lose focus using esc key\n\t\t\t\t// Focus will be release when popover be hide\n\t\t\t\tescapeDeactivates: false,\n\t\t\t\tallowOutsideClick: true,\n\t\t\t\tsetReturnFocus: this.setReturnFocus,\n\t\t\t\ttrapStack: getTrapStack(),\n\t\t\t})\n\t\t\tthis.$focusTrap.activate()\n\t\t},\n\n\t\t/**\n\t\t * Remove focus trap\n\t\t *\n\t\t * @param {object} options The configuration options for focusTrap\n\t\t */\n\t\tclearFocusTrap(options = {}) {\n\t\t\ttry {\n\t\t\t\tthis.$focusTrap?.deactivate(options)\n\t\t\t\tthis.$focusTrap = null\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(err)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add stopPropagation for Escape.\n\t\t * It prevents global Escape handling after closing popover.\n\t\t *\n\t\t * Manual event handling is used here instead of v-on because there is no direct access to the node.\n\t\t * Alternative - wrap <template #popover> in a div wrapper.\n\t\t */\n\t\taddEscapeStopPropagation() {\n\t\t\tconst el = this.getPopoverContentElement()\n\t\t\tel?.addEventListener('keydown', this.stopKeydownEscapeHandler)\n\t\t},\n\n\t\t/**\n\t\t * Remove stop Escape handler\n\t\t */\n\t\tclearEscapeStopPropagation() {\n\t\t\tconst el = this.getPopoverContentElement()\n\t\t\tel?.removeEventListener('keydown', this.stopKeydownEscapeHandler)\n\t\t},\n\n\t\t/**\n\t\t * @param {KeyboardEvent} event - native keydown event\n\t\t */\n\t\tstopKeydownEscapeHandler(event) {\n\t\t\tif (event.type === 'keydown' && event.key === 'Escape') {\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\t\t},\n\n\t\tafterShow() {\n\t\t\tthis.removeFloatingVueAriaDescribedBy()\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t/**\n\t\t\t\t * Triggered after the tooltip was visually displayed.\n\t\t\t\t *\n\t\t\t\t * This is different from the 'show' and 'apply-show' which\n\t\t\t\t * run earlier than this where there is no guarantee that the\n\t\t\t\t * tooltip is already visible and in the DOM.\n\t\t\t\t */\n\t\t\t\tthis.$emit('after-show')\n\t\t\t\tthis.useFocusTrap()\n\t\t\t\tthis.addEscapeStopPropagation()\n\t\t\t})\n\t\t},\n\t\tafterHide() {\n\t\t\t/**\n\t\t\t * Triggered after the tooltip was visually hidden.\n\t\t\t */\n\t\t\tthis.$emit('after-hide')\n\t\t\tthis.clearFocusTrap()\n\t\t\tthis.clearEscapeStopPropagation()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_sfc_main","NcPopoverTriggerProvider","_createBlock","_renderSlot","_withCtx","_createVNode","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcProgressBar-CAXfza4R.mjs","sources":["../../src/components/NcProgressBar/NcProgressBar.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @copyright Copyright (c) 2024 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n - @author Raimund Schlüßler\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>\nThis is a simple progress bar component.\n## Usage:\n\n### Linear\n```vue\n<template>\n\t<span>\n\t\tSmall\n\t\t<NcProgressBar :value=\"20\" />\n\t\t<br>\n\t\tMedium\n\t\t<NcProgressBar :value=\"60\" size=\"medium\" />\n\t\t<br>\n\t\tMedium with color\n\t\t<NcProgressBar :value=\"55\" size=\"medium\" color=\"green\" />\n\t\t<br>\n\t\tError\n\t\t<NcProgressBar :value=\"80\" :error=\"true\" />\n\t</span>\n</template>\n```\n\n### Circular\n```vue\n<template>\n\t<span>\n\t\tDefault\n\t\t<NcProgressBar type=\"circular\" :value=\"55\" />\n\t\t<br />\n\t\tColor\n\t\t<NcProgressBar type=\"circular\" :value=\"70\" color=\"green\" />\n\t\t<br />\n\t\tError\n\t\t<NcProgressBar type=\"circular\" :value=\"60\" :error=\"true\" />\n\t</span>\n</template>\n```\n</docs>\n\n<template>\n\t<span v-if=\"type === 'circular'\"\n\t\trole=\"progressbar\"\n\t\t:aria-valuenow=\"value\"\n\t\t:style=\"{ '--progress-bar-height': height + 'px' }\"\n\t\t:class=\"{ 'progress-bar--error': error }\"\n\t\tclass=\"progress-bar progress-bar--circular\">\n\t\t<svg :height=\"height\"\n\t\t\t:width=\"height\">\n\t\t\t<circle stroke=\"currentColor\"\n\t\t\t\tfill=\"transparent\"\n\t\t\t\t:stroke-dasharray=\"`${progress * circumference} ${(1 - progress) * circumference}`\"\n\t\t\t\t:stroke-dashoffset=\"0.25*circumference\"\n\t\t\t\t:stroke-width=\"stroke\"\n\t\t\t\t:r=\"radiusNormalized\"\n\t\t\t\t:cx=\"radius\"\n\t\t\t\t:cy=\"radius\" />\n\t\t\t<circle stroke=\"var(--color-background-darker)\"\n\t\t\t\tfill=\"transparent\"\n\t\t\t\t:stroke-dasharray=\"`${(1 - progress) * circumference} ${progress * circumference}`\"\n\t\t\t\t:stroke-dashoffset=\"(0.25 - progress) * circumference\"\n\t\t\t\t:stroke-width=\"stroke\"\n\t\t\t\t:r=\"radiusNormalized\"\n\t\t\t\t:cx=\"radius\"\n\t\t\t\t:cy=\"radius\" />\n\t\t</svg>\n\t</span>\n\t<progress v-else\n\t\tclass=\"progress-bar progress-bar--linear vue\"\n\t\t:class=\"{ 'progress-bar--error': error }\"\n\t\t:style=\"{'--progress-bar-height': height + 'px' }\"\n\t\t:value=\"value\"\n\t\tmax=\"100\" />\n</template>\n\n<script>\nexport default {\n\n\tname: 'NcProgressBar',\n\n\tprops: {\n\t\t/**\n\t\t * An integer between 1 and 100\n\t\t */\n\t\tvalue: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t\tvalidator(value) {\n\t\t\t\treturn value >= 0\n\t\t\t\t\t&& value <= 100\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Determines the height of the progressbar.\n\t\t * Possible values:\n\t\t * - 'small' (default)\n\t\t * - 'medium'\n\t\t * - Number\n\t\t * @type {'small'|'medium'|number}\n\t\t */\n\t\tsize: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: 'small',\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['small', 'medium'].includes(value) || typeof value === 'number'\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Applies an error color to the progressbar if true.\n\t\t */\n\t\terror: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * ProgressBar type\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'linear',\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['linear', 'circular'].includes(value)\n\t\t\t},\n\t\t},\n\t\tcolor: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstroke: 4,\n\t\t}\n\t},\n\tcomputed: {\n\t\theight() {\n\t\t\tif (this.type === 'circular') {\n\t\t\t\tif (Number.isInteger(this.size)) {\n\t\t\t\t\treturn this.size\n\t\t\t\t}\n\t\t\t\treturn 44\n\t\t\t}\n\t\t\tif (this.size === 'small') {\n\t\t\t\treturn 4\n\t\t\t} else if (this.size === 'medium') {\n\t\t\t\treturn 6\n\t\t\t}\n\t\t\treturn this.size\n\t\t},\n\t\tprogress() {\n\t\t\treturn this.value / 100\n\t\t},\n\t\tradius() {\n\t\t\treturn this.height / 2\n\t\t},\n\t\tradiusNormalized() {\n\t\t\treturn this.radius - 3 * this.stroke\n\t\t},\n\t\tcircumference() {\n\t\t\treturn this.radiusNormalized * 2 * Math.PI\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.progress-bar {\n\tdisplay: block;\n\theight: var(--progress-bar-height);\n\n\t--progress-bar-color: v-bind(color);\n\n\t&--linear {\n\t\twidth: 100%;\n\t\toverflow: hidden;\n\t\tborder: 0;\n\t\tpadding: 0;\n\t\tbackground: var(--color-background-dark);\n\t\tborder-radius: calc(var(--progress-bar-height) / 2);\n\n\t\t// Browser specific rules\n\t\t&::-webkit-progress-bar {\n\t\t\theight: var(--progress-bar-height);\n\t\t\tbackground-color: transparent;\n\t\t}\n\t\t&::-webkit-progress-value {\n\t\t\tbackground: var(--progress-bar-color, var(--gradient-primary-background));\n\t\t\tborder-radius: calc(var(--progress-bar-height) / 2);\n\t\t}\n\t\t&::-moz-progress-bar {\n\t\t\tbackground: var(--progress-bar-color, var(--gradient-primary-background));\n\t\t\tborder-radius: calc(var(--progress-bar-height) / 2);\n\t\t}\n\t}\n\t&--circular {\n\t\twidth: var(--progress-bar-height);\n\t\tcolor: var(--progress-bar-color, var(--color-primary-element));\n\t}\n\t&--error {\n\t\tcolor: var(--color-error) !important;\n\t\t// Override previous values\n\t\t&::-moz-progress-bar {\n\t\t\tbackground: var(--color-error) !important;\n\t\t}\n\t\t&::-webkit-progress-value {\n\t\t\tbackground: var(--color-error) !important;\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_createElementBlock","_normalizeStyle","_normalizeClass","_createElementVNode"],"mappings":";;AAoGA,MAAK,YAAU;AAAA,EAEd,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,OAAO;AAChB,eAAO,SAAS,KACZ,SAAS;AAAA,MACb;AAAA,IACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASD,MAAM;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,MACT,UAAU,OAAO;AAChB,eAAO,CAAC,SAAS,QAAQ,EAAE,SAAS,KAAK,KAAK,OAAO,UAAU;AAAA,MAC/D;AAAA,IACD;AAAA;AAAA;AAAA;AAAA,IAID,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,OAAO;AAChB,eAAO,CAAC,UAAU,UAAU,EAAE,SAAS,KAAK;AAAA,MAC5C;AAAA,IACD;AAAA,IACD,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,EACD;AAAA,EACD,OAAO;AACN,WAAO;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACA;AAAA,EACD,UAAU;AAAA,IACT,SAAS;AACR,UAAI,KAAK,SAAS,YAAY;AAC7B,YAAI,OAAO,UAAU,KAAK,IAAI,GAAG;AAChC,iBAAO,KAAK;AAAA,QACb;AACA,eAAO;AAAA,MACR;AACA,UAAI,KAAK,SAAS,SAAS;AAC1B,eAAO;AAAA,iBACG,KAAK,SAAS,UAAU;AAClC,eAAO;AAAA,MACR;AACA,aAAO,KAAK;AAAA,IACZ;AAAA,IACD,WAAW;AACV,aAAO,KAAK,QAAQ;AAAA,IACpB;AAAA,IACD,SAAS;AACR,aAAO,KAAK,SAAS;AAAA,IACrB;AAAA,IACD,mBAAmB;AAClB,aAAO,KAAK,SAAS,IAAI,KAAK;AAAA,IAC9B;AAAA,IACD,gBAAgB;AACf,aAAO,KAAK,mBAAmB,IAAI,KAAK;AAAA,IACxC;AAAA,EACD;AACF;;;;;;;;;;;AA1LA,MAAA,aAAA,CAAA,eAAA;AAAA,MAAA,aAAA,CAAA,UAAA,OAAA;AAAA,MAAA,aAAA,CAAA,oBAAA,qBAAA,gBAAA,KAAA,MAAA,IAAA;AAAA,MAAA,aAAA,CAAA,oBAAA,qBAAA,gBAAA,KAAA,MAAA,IAAA;AAAA,MAAA,aAAA,CAAA,OAAA;;SAiEa,OAAI,SAAA,2BAAhBA,mBAyBO,QAAA;AAAA,IA1FR,KAAA;AAAA,IAkEE,MAAK;AAAA,IACJ,iBAAe,OAAK;AAAA,IACpB,OApEHC,0CAoEqC,SAAM,SAAA,MAAA;AAAA,IACxC,OArEHC,eAAA,CAAA,EAAA,uBAqEmC,OAAK,MAAA,GAChC,qCAAqC,CAAA;AAAA;kBAC3CF,mBAkBM,OAAA;AAAA,MAlBA,QAAQ,SAAM;AAAA,MAClB,OAAO,SAAM;AAAA;MACdG,mBAOgB,UAAA;AAAA,QAPR,QAAO;AAAA,QACd,MAAK;AAAA,QACJ,uBAAqB,SAAQ,WAAG,sBAAa,KAAS,IAAA,SAAA,YAAY,SAAa,aAAA;AAAA,QAC/E,4BAAwB,SAAa;AAAA,QACrC,gBAAc,MAAM;AAAA,QACpB,GAAG,SAAgB;AAAA,QACnB,IAAI,SAAM;AAAA,QACV,IAAI,SAAM;AAAA,MAhFf,GAAA,MAAA,GAAA,UAAA;AAAA,MAiFGA,mBAOgB,UAAA;AAAA,QAPR,QAAO;AAAA,QACd,MAAK;AAAA,QACJ,4BAA0B,SAAQ,YAAI,sBAAa,IAAI,SAAA,WAAW,SAAa,aAAA;AAAA,QAC/E,sBAAiB,OAAU,SAAQ,YAAI,SAAa;AAAA,QACpD,gBAAc,MAAM;AAAA,QACpB,GAAG,SAAgB;AAAA,QACnB,IAAI,SAAM;AAAA,QACV,IAAI,SAAM;AAAA,MAxFf,GAAA,MAAA,GAAA,UAAA;AAAA,IAAA,GAAA,GAAA,UAAA;AAAA,EAAA,GAAA,IAAA,UAAA,mBA2FCH,mBAKa,YAAA;AAAA,IAhGd,KAAA;AAAA,IA4FE,OA5FFE,eAAA,CA4FQ,yCAAuC,EAAA,uBACZ,OAAK,MAAA,CAAA,CAAA;AAAA,IACrC,OA9FHD,0CA8FoC,SAAM,SAAA,MAAA;AAAA,IACvC,OAAO,OAAK;AAAA,IACb,KAAI;AAAA,EAhGN,GAAA,MAAA,IAAA,UAAA;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcRelatedResourcesPanel-Dr4jL2gw.mjs","sources":["../../node_modules/vue-material-design-icons/AccountGroup.vue","../../node_modules/vue-material-design-icons/OpenInNew.vue","../../src/components/NcRelatedResourcesPanel/NcTeamResources.vue","../../src/components/NcRelatedResourcesPanel/NcResource.vue","../../src/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon account-group-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountGroupIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon open-in-new-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"OpenInNewIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n\t<div v-if=\"appEnabled && isVisible\" class=\"team-resources\">\n\t\t<h5 class=\"team-resources__header\">\n\t\t\t{{ t('Related team resources') }}\n\t\t</h5>\n\t\t<details v-for=\"team in teamResources\"\n\t\t\t:key=\"team.teamId\"\n\t\t\tname=\"Team resources\"\n\t\t\tclass=\"related-team\"\n\t\t\t:open=\"open(team.teamId)\"\n\t\t\t@toggle=\"(event) => toggleOpen(team.teamId, event.target.open)\">\n\t\t\t<summary class=\"related-team__header\">\n\t\t\t\t<h5 class=\"related-team__name\">\n\t\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t\t\t{{ team.displayName }}\n\t\t\t\t</h5>\n\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t:href=\"team.link\"\n\t\t\t\t\t:aria-label=\"t('View team')\"\n\t\t\t\t\t:title=\"t('View team')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcButton>\n\n\t\t\t\t<ChevronUp v-if=\"open(team.teamId)\"\n\t\t\t\t\t:size=\"20\" />\n\t\t\t\t<ChevronDown v-else\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</summary>\n\n\t\t\t<div>\n\t\t\t\t<div v-for=\"provider in teamProviders(team.teamId)\"\n\t\t\t\t\t:key=\"provider.id\"\n\t\t\t\t\tclass=\"related-team-provider\">\n\t\t\t\t\t<h6 v-if=\"provider.resources.length > 0\">\n\t\t\t\t\t\t{{ provider.name }}\n\t\t\t\t\t</h6>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li v-for=\"resource in provider.resources\" :key=\"resource.url\" class=\"related-team-resource\">\n\t\t\t\t\t\t\t<a :href=\"resource.url\" class=\"related-team-resource__link\">\n\t\t\t\t\t\t\t\t<span v-if=\"resource.iconEmoji\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t{{ resource.iconEmoji }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper v-else-if=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\tclass=\"resource__icon\"\n\t\t\t\t\t\t\t\t\t:svg=\"resource.iconSvg\"\n\t\t\t\t\t\t\t\t\t:size=\"20\" />\n\t\t\t\t\t\t\t\t<span v-else-if=\"resource.iconURL\" class=\"resource__icon\">\n\t\t\t\t\t\t\t\t\t<img :src=\"resource.iconURL\" alt=\"\">\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class=\"resource__name\">\n\t\t\t\t\t\t\t\t\t{{ resource.label }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</details>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport ChevronUp from 'vue-material-design-icons/ChevronUp.vue'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew.vue'\nimport NcButton from '../NcButton/NcButton.vue'\nimport NcIconSvgWrapper from '../NcIconSvgWrapper/NcIconSvgWrapper.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcTeamResources',\n\n\tcomponents: {\n\t\tAccountGroup,\n\t\tChevronDown,\n\t\tChevronUp,\n\t\tOpenInNew,\n\t\tNcButton,\n\t\tNcIconSvgWrapper,\n\t},\n\n\tprops: {\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.circles !== undefined && (OC.config.version.split('.')[0] ?? 0) >= 29,\n\t\t\tloading: false,\n\t\t\tteamResources: null,\n\t\t\tteamOpen: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn !this.loading && this.teamResources?.length > 0\n\t\t},\n\t\tteamProviders() {\n\t\t\treturn (teamId) => {\n\t\t\t\tconst team = this.teamResources.find(t => t.teamId === teamId)\n\t\t\t\treturn team.resources?.reduce((acc, resource) => {\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!acc[resource.provider.id]) {\n\t\t\t\t\t\tacc[resource.provider.id] = resource.provider\n\t\t\t\t\t\tacc[resource.provider.id].resources = []\n\t\t\t\t\t}\n\n\t\t\t\t\tif (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\n\t\t\t\t\tacc[resource.provider.id].resources.push(resource)\n\t\t\t\t\treturn acc\n\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t\topen() {\n\t\t\treturn (teamId) => {\n\t\t\t\treturn this.teamOpen.indexOf(teamId) !== -1\n\t\t\t}\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchTeamResources()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchTeamResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchTeamResources() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tconst response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`))\n\t\t\t\tthis.teamResources = response.data.ocs.data.teams\n\t\t\t\tthis.teamOpen = [this.teamResources[0]?.teamId]\n\t\t\t} catch (e) {\n\t\t\t\tthis.teamResources = null\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\ttoggleOpen(teamId, open) {\n\t\t\tif (open) {\n\t\t\t\tthis.teamOpen.push(teamId)\n\t\t\t} else {\n\t\t\t\tthis.teamOpen.splice(this.teamOpen.indexOf(teamId), 1)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.team-resources__header {\n\tfont-weight: bold;\n\tmargin-bottom: 6px;\n}\n\n.related-team {\n\tborder-radius: var(--border-radius-rounded);\n\tborder: 2px solid var(--color-border-dark);\n\tmargin-bottom: 6px;\n\n\t&__open {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&__header {\n\t\tpadding: 6px;\n\t\tpadding-right: 24px;\n\t\tdisplay: flex;\n\t\tgap: 12px;\n\t}\n\n\t&__name {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\talign-items: center;\n\t\tgap: 12px;\n\t\tpadding: 6px 12px;\n\t\tfont-weight: bold;\n\t\tmargin: 0;\n\t}\n\n\t.related-team-provider {\n\t\tpadding: 6px 12px;\n\n\t\t&__name {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 3px;\n\t\t}\n\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\tpadding: 6px 12px;\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t.related-team-resource {\n\t\t&__link {\n\t\t\tdisplay: flex;\n\t\t\tgap: 12px;\n\t\t\theight: 44px;\n\t\t\talign-items: center;\n\t\t\tborder-radius: var(--border-radius-large);\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\toutline: 2px solid var(--color-primary-element);\n\t\t\t}\n\t\t}\n\t\t.resource__icon {\n\t\t\twidth: 44px;\n\t\t\theight: 44px;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\ttext-align: center;\n\n\t\t\t& > img {\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\toverflow: hidden;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\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<template>\n\t<li class=\"resource\">\n\t\t<NcButton class=\"resource__button\"\n\t\t\t:aria-label=\"labelTranslated\"\n\t\t\ttype=\"tertiary\"\n\t\t\t:to=\"route\"\n\t\t\t:href=\"route ? null : url\">\n\t\t\t<template #icon>\n\t\t\t\t<div class=\"resource__icon\">\n\t\t\t\t\t<img :src=\"icon\">\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t{{ name }}\n\t\t</NcButton>\n\t</li>\n</template>\n\n<script>\nimport NcButton from '../NcButton/index.ts'\n\nimport { getRoute } from '../NcRichText/autolink.ts'\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcResource',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\turl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlabelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name }),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.url)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.resource {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 100% !important;\n\t\tjustify-content: flex-start !important;\n\t\tpadding: 0 !important;\n\n\t\t&:deep {\n\t\t\t.button-vue__wrapper {\n\t\t\t\tjustify-content: flex-start !important;\n\n\t\t\t\t.button-vue__text {\n\t\t\t\t\tfont-weight: normal !important;\n\t\t\t\t\tmargin-left: 2px !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__icon {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\timg {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n</style>\n","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\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### Usage\n\nUse this component to display the related resources of a given item.\n\n```\n<template>\n\t<NcRelatedResourcesPanel provider-id=\"talk\"\n\t\theader=\"Related resources for talk\"\n\t\t:item-id=\"conversationId\" />\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tconversationId: 1,\n\t\t}\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<div>\n\t\t<NcTeamResources :provider-id=\"providerId\"\n\t\t\t:item-id=\"itemId\" />\n\n\t\t<div v-if=\"appEnabled && isVisible\" class=\"related-resources\">\n\t\t\t<div class=\"related-resources__header\">\n\t\t\t\t<h5>{{ header }}</h5>\n\t\t\t\t<p>{{ subline }}</p>\n\t\t\t</div>\n\n\t\t\t<NcResource v-for=\"resource in resources\"\n\t\t\t\t:key=\"resource.itemId\"\n\t\t\t\tclass=\"related-resources__entry\"\n\t\t\t\t:icon=\"resource.icon\"\n\t\t\t\t:name=\"resource.title\"\n\t\t\t\t:url=\"resource.url\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcTeamResources from './NcTeamResources.vue'\nimport NcResource from './NcResource.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcRelatedResourcesPanel',\n\n\tcomponents: {\n\t\tNcResource,\n\t\tNcTeamResources,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n\t\t */\n\t\titemId: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n\t\t */\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Set the maximum number of resources to load\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\t/**\n\t\t * Only used by the files sidebar\n\t\t *\n\t\t * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n\t\t */\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Make the header name dynamic\n\t\t */\n\t\theader: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Related resources'),\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Anything shared with the same group of people will show up here'),\n\t\t},\n\t\t/**\n\t\t * If this element is used on a primary element set to true for primary styling.\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'has-error',\n\t\t'has-resources',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tappEnabled: OC?.appswebroots?.related_resources !== undefined,\n\t\t\tloading: false,\n\t\t\terror: null,\n\t\t\tresources: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisVisible() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.error ?? this.resources.length > 0\n\t\t},\n\t\tsubline() {\n\t\t\tif (this.error) {\n\t\t\t\treturn t('Error getting related resources. Please contact your system administrator if you have any questions.')\n\t\t\t}\n\t\t\treturn this.description\n\t\t},\n\n\t\thasResourceInfo() {\n\t\t\tif (this.providerId !== null && this.itemId !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (this.fileInfo !== null) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tisFiles() {\n\t\t\treturn this.fileInfo?.id !== undefined\n\t\t},\n\n\t\turl() {\n\t\t\tlet providerId = null\n\t\t\tlet itemId = null\n\n\t\t\tif (this.isFiles) {\n\t\t\t\tproviderId = 'files'\n\t\t\t\titemId = this.fileInfo.id\n\t\t\t} else {\n\t\t\t\tproviderId = this.providerId\n\t\t\t\titemId = this.itemId\n\t\t\t}\n\n\t\t\treturn generateOcsUrl('/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json', {\n\t\t\t\tproviderId,\n\t\t\t\titemId,\n\t\t\t\tresourceType: this.resourceType,\n\t\t\t\tlimit: this.limit,\n\t\t\t})\n\t\t},\n\t},\n\n\twatch: {\n\t\tproviderId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\titemId() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\tfileInfo() {\n\t\t\tthis.fetchRelatedResources()\n\t\t},\n\t\terror(error) {\n\t\t\t/**\n\t\t\t * Emitted when the error value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-error', Boolean(error))\n\t\t},\n\t\tresources(resources) {\n\t\t\t/**\n\t\t\t * Emitted when the resources value changes\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('has-resources', resources.length > 0)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.fetchRelatedResources()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tasync fetchRelatedResources() {\n\t\t\tif (!this.appEnabled || !this.hasResourceInfo) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tthis.error = null\n\t\t\tthis.resources = []\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(this.url)\n\t\t\t\tthis.resources = response.data.ocs?.data\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = e\n\t\t\t\tconsole.error(e)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.related-resources {\n\t&__header {\n\n\t\th5 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 6px;\n\t\t}\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n</style>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_hoisted_4","_createCommentVNode","t","_openBlock","_toDisplayString","_Fragment","_renderList","_createVNode","_createTextVNode","_createBlock","_withCtx"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcRichContenteditable-P06ORHyg.mjs","sources":["../../src/components/NcRichContenteditable/NcAutoCompleteResult.vue","../../src/components/NcRichContenteditable/NcRichContenteditable.vue"],"sourcesContent":["<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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<template>\n\t<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<span v-if=\"status.icon\"\n\t\t\t\tclass=\"autocomplete-result__status autocomplete-result__status--icon\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</span>\n\t\t\t<NcUserStatusIcon v-else-if=\"status.status && status.status !== 'offline'\"\n\t\t\t\tclass=\"autocomplete-result__status\"\n\t\t\t\t:status=\"status.status\" />\n\t\t</div>\n\n\t\t<!-- Label and subline -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\" :title=\"labelWithFallback\">\n\t\t\t\t{{ labelWithFallback }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nimport NcUserStatusIcon from '../NcUserStatusIcon/index.js'\n\nexport default {\n\tname: 'NcAutoCompleteResult',\n\n\tcomponents: {\n\t\tNcUserStatusIcon,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\t// For backwards compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.autocomplete-result {\n\tdisplay: flex;\n\theight: var(--default-clickable-area);\n\tpadding: var(--default-grid-baseline) 0;\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 var(--default-clickable-area);\n\t\twidth: var(--default-clickable-area);\n\t\tmin-width: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\tborder-radius: var(--default-clickable-area);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: contain;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tbox-sizing: border-box;\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmin-width: 18px;\n\t\tmin-height: 18px;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: calc(var(--default-grid-baseline) * 2);\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n\n</style>\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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\n### General description\n\nThis component displays contenteditable div with automated `@` [at] autocompletion and `:` [colon] emoji autocompletion.\n\n### Examples\n\nTry mentioning user @Test01 or inserting emoji :smile\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable\n\t\t\tlabel=\"Write a comment\"\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<NcRichContenteditable\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<h5>Output - raw</h5>\n\t\t{{ JSON.stringify(message) }}\n\n\t\t<h5>Output - preformatted</h5>\n\t\t<p class=\"pre-line\">{{ message }}</p>\n\n\t\t<h5>Output - in NcRichText with markdown support</h5>\n\t\t<NcRichText :text=\"text\" :arguments=\"userMentions\" autolink use-markdown />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: '**Lorem ipsum** dolor sit amet.',\n\t\t\t// You need to provide this for the inline mention to understand what to display or not.\n\t\t\t// Key should be a string with leading '@', like @Test02 or @\"Test Offline\"\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test@User': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test Offline': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\tlabel: 'Test Offline',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: null,\n\t\t\t\t},\n\t\t\t\t'Test DND': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\tlabel: 'Test DND',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// To display user bubbles in NcRichText, special format of data should be provided:\n\t\t\t// Key should be in curly brackets without '@' and ' ' symbols, like {user-2}\n\t\t\tuserMentions: {\n\t\t\t\t'user-1': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-2': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-3': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-4': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-5': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\ttext() {\n\t\t\treturn this.message\n\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n\th5 {\n\t\tfont-weight: bold;\n\t\tmargin: 40px 0 20px 0;\n\t}\n\n\t.pre-line {\n\t\twhite-space: pre-line;\n\t}\n</style>\n```\n\n</docs>\n\n<template>\n\t<div class=\"rich-contenteditable\" :class=\"$props.class\">\n\t\t<div :id=\"id\"\n\t\t\tref=\"contenteditable\"\n\t\t\tv-tooltip=\"tooltipString\"\n\t\t\t:class=\"{\n\t\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t\t'rich-contenteditable__input--has-label': label,\n\t\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t\t}\"\n\t\t\t:contenteditable=\"canEdit\"\n\t\t\t:aria-labelledby=\"label ? labelId : undefined\"\n\t\t\t:aria-placeholder=\"placeholder\"\n\t\t\taria-multiline=\"true\"\n\t\t\tclass=\"rich-contenteditable__input\"\n\t\t\trole=\"textbox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\taria-autocomplete=\"inline\"\n\t\t\t:aria-controls=\"tributeId\"\n\t\t\t:aria-expanded=\"isAutocompleteOpen ? 'true' : 'false'\"\n\t\t\t:aria-activedescendant=\"autocompleteActiveId\"\n\t\t\tv-bind=\"$attrs\"\n\t\t\t@focus=\"moveCursorToEnd\"\n\t\t\t@input=\"onInput\"\n\t\t\t@compositionstart=\"isComposing = true\"\n\t\t\t@compositionend=\"isComposing = false\"\n\t\t\t@keydown.delete=\"onDelete\"\n\t\t\t@keydown.esc.capture=\"onKeyEsc\"\n\t\t\t@keydown.enter.exact=\"onEnter\"\n\t\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t\t@paste=\"onPaste\"\n\t\t\t@keyup.stop.prevent.capture=\"onKeyUp\"\n\t\t\t@keydown.up.exact.stop=\"onTributeArrowKeyDown\"\n\t\t\t@keydown.down.exact.stop=\"onTributeArrowKeyDown\"\n\t\t\t@tribute-active-true=\"onTributeActive(true)\"\n\t\t\t@tribute-active-false=\"onTributeActive(false)\" />\n\t\t<div v-if=\"label\"\n\t\t\t:id=\"labelId\"\n\t\t\tclass=\"rich-contenteditable__label\">\n\t\t\t{{ label }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcAutoCompleteResult from './NcAutoCompleteResult.vue'\nimport richEditor from '../../mixins/richEditor/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport { emojiSearch, emojiAddRecent } from '../../functions/emoji/index.ts'\nimport { searchProvider, getLinkWithPicker } from '../NcRichText/index.js'\n\nimport Tribute from 'tributejs/dist/tribute.esm.js'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\n/**\n * Populate the list of text smiles we want to offer via Tribute.\n * We add the colon `:)` and colon-dash `:-)` version for each of them.\n */\nconst smilesCharacters = ['d', 'D', 'p', 'P', 's', 'S', 'x', 'X', ')', '(', '|', '/']\nconst textSmiles = []\nsmilesCharacters.forEach((char) => {\n\ttextSmiles.push(':' + char)\n\ttextSmiles.push(':-' + char)\n})\n\nexport default {\n\tname: 'NcRichContenteditable',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [richEditor],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * The ID attribute of the content editable\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(7),\n\t\t},\n\n\t\t/**\n\t\t * Visual label of the contenteditable\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write a message …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable emoji autocompletion\n\t\t */\n\t\temojiAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable link autocompletion\n\t\t */\n\t\tlinkAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * CSS class to apply to the root element.\n\t\t */\n\t\tclass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t\t'paste',\n\t\t'update:modelValue',\n\t\t'smart-picker-submit',\n\t],\n\n\tsetup() {\n\t\tconst uid = GenRandomId(5)\n\t\treturn {\n\t\t\t// Constants\n\t\t\tlabelId: `nc-rich-contenteditable-${uid}-label`,\n\t\t\ttributeId: `nc-rich-contenteditable-${uid}-tribute`,\n\t\t\t/**\n\t\t\t * Non-reactive property to store Tribute instance\n\t\t\t *\n\t\t\t * @type {import('tributejs').default | null}\n\t\t\t */\n\t\t\ttribute: null,\n\t\t\ttributeStyleMutationObserver: null,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.modelValue,\n\n\t\t\t// Is in text composition session in IME\n\t\t\tisComposing: false,\n\n\t\t\t// Tribute autocomplete\n\t\t\tisAutocompleteOpen: false,\n\t\t\tautocompleteActiveId: undefined,\n\t\t\tisTributeIntegrationDone: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue || this.localValue.trim() === ''\n\t\t},\n\n\t\t/**\n\t\t * Is this Firefox? 🙄\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFF() {\n\t\t\treturn !!navigator.userAgent.match(/firefox/i)\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttooltipString() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshown: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\n\t\t/**\n\t\t * Compute debounce function for the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete() {\n\t\t\treturn debounce(async (search, callback) => {\n\t\t\t\tthis.autoComplete(search, callback)\n\t\t\t}, 100)\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tmodelValue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.modelValue.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.modelValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.initializeTribute()\n\n\t\t// Update default value\n\t\tthis.updateContent(this.modelValue)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeUnmount() {\n\t\tif (this.tribute) {\n\t\t\tthis.tribute.detach(this.$refs.contenteditable)\n\t\t}\n\n\t\tif (this.tributeStyleMutationObserver) {\n\t\t\tthis.tributeStyleMutationObserver.disconnect()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the richContenteditable\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.contenteditable.focus()\n\t\t},\n\n\t\tinitializeTribute() {\n\t\t\tconst renderMenuItem = (content) => `<div id=\"nc-rich-contenteditable-tribute-item-${GenRandomId(5)}\" class=\"${this.$style['tribute-item']}\" role=\"option\">${content}</div>`\n\n\t\t\tconst tributesCollection = []\n\t\t\ttributesCollection.push({\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n\t\t\t\tlookup: result => `${result.id} ${result.label ?? result.title}`,\n\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-autocomplete']}`,\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: this.$style['tribute-container__item'],\n\n\t\t\t})\n\n\t\t\tif (this.emojiAutocomplete) {\n\t\t\t\ttributesCollection.push({\n\t\t\t\t\ttrigger: ':',\n\t\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t\t// We pass search results as values (see below)\n\t\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\t\tmenuItemTemplate: item => {\n\t\t\t\t\t\tif (textSmiles.includes(item.original)) {\n\t\t\t\t\t\t\t// Display the raw text string for :), :-D, … for non emoji results,\n\t\t\t\t\t\t\t// instead of trying to show an image and their name.\n\t\t\t\t\t\t\treturn item.original\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn renderMenuItem(`<span class=\"${this.$style['tribute-item__emoji']}\">${item.original.native}</span> :${item.original.short_name}`)\n\t\t\t\t\t},\n\t\t\t\t\t// Hide if no results\n\t\t\t\t\tnoMatchTemplate: () => t('No emoji found'),\n\t\t\t\t\t// Display raw emoji along with its name\n\t\t\t\t\tselectTemplate: (item) => {\n\t\t\t\t\t\tif (textSmiles.includes(item.original)) {\n\t\t\t\t\t\t\t// Replace the selection with the raw text string for :), :-D, … for non emoji results\n\t\t\t\t\t\t\treturn item.original\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\temojiAddRecent(item.original)\n\t\t\t\t\t\treturn item.original.native\n\t\t\t\t\t},\n\t\t\t\t\t// Pass the search results as values\n\t\t\t\t\tvalues: (text, cb) => {\n\t\t\t\t\t\tconst emojiResults = emojiSearch(text)\n\t\t\t\t\t\tif (textSmiles.includes(':' + text)) {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * Prepend text smiles to the search results so that Tribute\n\t\t\t\t\t\t\t * is not interfering with normal writing, aka. \"Cocos Island Meme\".\n\t\t\t\t\t\t\t * E.g. `:)` and `:-)` got replaced by the flag of Cocos Island,\n\t\t\t\t\t\t\t * when submitting the input with Enter after writing them\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\temojiResults.unshift(':' + text)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcb(emojiResults)\n\t\t\t\t\t},\n\t\t\t\t\t// Class added to the menu container\n\t\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-emoji']}`,\n\t\t\t\t\t// Class added to each list item\n\t\t\t\t\titemClass: this.$style['tribute-container__item'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (this.linkAutocomplete) {\n\t\t\t\ttributesCollection.push({\n\t\t\t\t\ttrigger: '/',\n\t\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t\t// We pass search results as values (see below)\n\t\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\t\tmenuItemTemplate: item => renderMenuItem(`<img class=\"${this.$style['tribute-item__icon']}\" src=\"${item.original.icon_url}\"> <span class=\"${this.$style['tribute-item__title']}\">${item.original.title}</span>`),\n\t\t\t\t\t// Hide if no results\n\t\t\t\t\tnoMatchTemplate: () => t('No link provider found'),\n\t\t\t\t\tselectTemplate: this.getLink,\n\t\t\t\t\t// Pass the search results as values\n\t\t\t\t\tvalues: (text, cb) => cb(searchProvider(text)),\n\t\t\t\t\t// Class added to the menu container\n\t\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-link']}`,\n\t\t\t\t\t// Class added to each list item\n\t\t\t\t\titemClass: this.$style['tribute-container__item'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.tribute = new Tribute({\n\t\t\t\tcollection: tributesCollection,\n\t\t\t\t// FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n\t\t\t\t// Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n\t\t\t\tallowSpaces: false,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t})\n\t\t\tthis.tribute.attach(this.$refs.contenteditable)\n\t\t},\n\n\t\tgetLink(item) {\n\t\t\t// there is no way to get a tribute result asynchronously\n\t\t\t// so we immediately insert a node and replace it when the result comes\n\t\t\tgetLinkWithPicker(item.original.id)\n\t\t\t\t.then(result => {\n\t\t\t\t\t// replace dummy temp element by a text node which contains the picker result\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tconst eventData = {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tinsertText: true,\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('smart-picker-submit', eventData)\n\t\t\t\t\tif (eventData.insertText) {\n\t\t\t\t\t\tconst newElem = document.createTextNode(result)\n\t\t\t\t\t\ttmpElem.replaceWith(newElem)\n\t\t\t\t\t\tthis.setCursorAfter(newElem)\n\t\t\t\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmpElem.remove()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.debug('Smart picker promise rejected:', error)\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tthis.setCursorAfter(tmpElem)\n\t\t\t\t\ttmpElem.remove()\n\t\t\t\t})\n\t\t\treturn '<span id=\"tmp-smart-picker-result-node\"></span>'\n\t\t},\n\t\tsetCursorAfter(element) {\n\t\t\tconst range = document.createRange()\n\t\t\trange.setEndAfter(element)\n\t\t\trange.collapse()\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\tmoveCursorToEnd() {\n\t\t\tif (!document.createRange) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst range = document.createRange()\n\t\t\trange.selectNodeContents(this.$refs.contenteditable)\n\t\t\trange.collapse(false)\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t *\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t *\n\t\t * @param {Event} event the paste event\n\t\t * @fires Event paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst text = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// If no selection, replace the whole data\n\t\t\tif (!selection.rangeCount) {\n\t\t\t\tthis.updateValue(text)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Generate text and insert\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\tselection.deleteFromDocument()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Put cursor at the end of the selection\n\t\t\tconst newRange = document.createRange()\n\t\t\tnewRange.setStart(event.target, range.endOffset)\n\t\t\tnewRange.collapse(true)\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(newRange)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t *\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\tconst text = this.parseContent(htmlOrText)\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:modelValue', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t *\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Because FF have a decade old bug preventing contenteditable=false\n\t\t * to properly be deleted on backspace, we have to hack 👀\n\t\t * https://stackoverflow.com/a/59383394/3885878\n\t\t * https://stackoverflow.com/a/30574622\n\t\t *\n\t\t * @param {Event} event the delete keydown event\n\t\t */\n\t\tonDelete(event) {\n\t\t\tif (!this.isFF || !window.getSelection) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// fix backspace bug in FF\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=685445\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1665167\n\t\t\tconst selection = window.getSelection()\n\t\t\tconst node = event.target\n\t\t\tif (!selection.isCollapsed || !selection.rangeCount) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst curRange = selection.getRangeAt(selection.rangeCount - 1)\n\t\t\tif (curRange.commonAncestorContainer.nodeType === 3 && curRange.startOffset > 0) {\n\t\t\t\t// we are in child selection. The characters of the text node is being deleted\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst range = document.createRange()\n\t\t\tif (selection.anchorNode !== node) {\n\t\t\t\t// selection is in character mode. expand it to the whole editable field\n\t\t\t\trange.selectNodeContents(node)\n\t\t\t\trange.setEndBefore(selection.anchorNode)\n\t\t\t} else if (selection.anchorOffset > 0) {\n\t\t\t\trange.setEnd(node, selection.anchorOffset)\n\t\t\t} else {\n\t\t\t\t// reached the beginning of editable field\n\t\t\t\treturn\n\t\t\t}\n\t\t\trange.setStart(node, range.endOffset - 1)\n\n\t\t\tconst previousNode = range.cloneContents().lastChild\n\t\t\tif (previousNode && previousNode.contentEditable === 'false') {\n\t\t\t\t// this is some rich content, e.g. smile. We should help the user to delete it\n\t\t\t\trange.deleteContents()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if multiline\n\t\t\t// or length is over maxlength\n\t\t\t// or autocompletion menu is opened\n\t\t\t// or in a text composition session with IME\n\t\t\tif (this.multiline\n\t\t\t\t|| this.isOverMaxlength\n\t\t\t\t|| this.tribute.isActive\n\t\t\t\t|| this.isComposing) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\tonKeyUp(event) {\n\t\t\t// prevent tribute from opening on keyup\n\t\t\tevent.stopImmediatePropagation()\n\t\t},\n\n\t\tonKeyEsc(event) {\n\t\t\t// prevent event from bubbling when tribute is open\n\t\t\tif (this.tribute && this.isAutocompleteOpen) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tthis.tribute.hideMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get HTML element with Tribute.js container\n\t\t * @return {HTMLElement}\n\t\t */\n\t\tgetTributeContainer() {\n\t\t\treturn this.tribute.menu\n\t\t},\n\n\t\t/**\n\t\t * Get the currently selected item element id in Tribute.js container\n\t\t * @return {HTMLElement}\n\t\t */\n\t\tgetTributeSelectedItem() {\n\t\t\t// Tribute does not provide a way to get the active item, only the data index\n\t\t\t// So we have to find it manually by select class\n\t\t\treturn this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]')\n\t\t},\n\n\t\t/**\n\t\t * Handle Tribute activation\n\t\t * @param {boolean} isActive - is active\n\t\t */\n\t\tonTributeActive(isActive) {\n\t\t\tthis.isAutocompleteOpen = isActive\n\n\t\t\tif (isActive) {\n\t\t\t\t// Tribute.js doesn't support containerClass update when new collection is open\n\t\t\t\t// The first opened collection's containerClass stays forever\n\t\t\t\t// https://github.com/zurb/tribute/issues/595\n\t\t\t\t// https://github.com/zurb/tribute/issues/627\n\t\t\t\t// So we have to manually update the class\n\t\t\t\t// The default class is \"tribute-container\"\n\t\t\t\tthis.getTributeContainer().setAttribute('class', this.tribute.current.collection.containerClass || this.$style['tribute-container'])\n\n\t\t\t\tthis.setupTributeIntegration()\n\t\t\t} else {\n\t\t\t\t// Cancel loading data for autocomplete\n\t\t\t\t// Otherwise it could be received when another autocomplete is already opened\n\t\t\t\tthis.debouncedAutoComplete.clear()\n\n\t\t\t\t// Reset active item\n\t\t\t\tthis.autocompleteActiveId = undefined\n\n\t\t\t\tthis.setTributeFocusVisible(false)\n\t\t\t}\n\t\t},\n\n\t\tonTributeArrowKeyDown() {\n\t\t\tif (!this.isAutocompleteOpen) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.setTributeFocusVisible(true)\n\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t},\n\n\t\tonTributeSelectedItemWillChange() {\n\t\t\t// Wait until tribute has updated the selected item\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.autocompleteActiveId = this.getTributeSelectedItem()?.id\n\t\t\t})\n\t\t},\n\n\t\tsetupTributeIntegration() {\n\t\t\t// Setup integration only once on the first open\n\t\t\tif (this.isTributeIntegrationDone) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.isTributeIntegrationDone = true\n\n\t\t\tconst tributeContainer = this.getTributeContainer()\n\n\t\t\t// For aria-controls\n\t\t\ttributeContainer.id = this.tributeId\n\n\t\t\t// Container with options must be a listbox\n\t\t\ttributeContainer.setAttribute('role', 'listbox')\n\t\t\t// Reset list+listitem role from ul+li\n\t\t\tconst ul = tributeContainer.children[0]\n\t\t\tul.setAttribute('role', 'presentation')\n\n\t\t\t// Tribute.js does not provide a way to react on show/hide\n\t\t\t// tribute-active-true/false events are fired on initial activation, which is too early with async autoComplete function\n\t\t\tthis.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n\t\t\t\tif (target.style.display !== 'none') {\n\t\t\t\t\t// Tribute is visible - there will be selected item\n\t\t\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t\t\t}\n\t\t\t}).observe(tributeContainer, {\n\t\t\t\tattributes: true,\n\t\t\t\tattributeFilter: ['style'],\n\t\t\t})\n\n\t\t\t// Handle selecting new item on mouse selection\n\t\t\ttributeContainer.addEventListener('mousemove', () => {\n\t\t\t\tthis.setTributeFocusVisible(false)\n\t\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t\t}, { passive: true })\n\t\t},\n\n\t\t/**\n\t\t * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n\t\t *\n\t\t * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n\t\t * to style selected options in the autocomplete listbox.\n\t\t *\n\t\t * @param {boolean} withFocusVisible - should the focus-visible class be added\n\t\t */\n\t\tsetTributeFocusVisible(withFocusVisible) {\n\t\t\tif (withFocusVisible) {\n\t\t\t\tthis.getTributeContainer().classList.add(this.$style['tribute-container--focus-visible'])\n\t\t\t} else {\n\t\t\t\tthis.getTributeContainer().classList.remove(this.$style['tribute-container--focus-visible'])\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable {\n\tposition: relative;\n\twidth: auto;\n\n\t&__label {\n\t\tposition: absolute;\n\t\tmargin-inline: 14px 0;\n\t\tmax-width: fit-content;\n\t\tinset-block-start: 11px;\n\t\tinset-inline: 0;\n\t\t// Fix color so that users do not think the input already has content\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t// only one line labels are allowed\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t// forward events to input\n\t\tpointer-events: none;\n\t\t// Position transition\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow);\n\t}\n\n\t&__input:focus + &__label,\n\t&__input:not(&__input--empty) + &__label {\n\t\tinset-block-start: -10px;\n\t\tline-height: 1.5; // minimum allowed line height for accessibility\n\t\tfont-size: 13px; // minimum allowed font size for accessibility\n\t\tfont-weight: 500;\n\t\tborder-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding-inline: 5px;\n\t\tmargin-inline-start: 9px;\n\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick);\n\t}\n\n\t&__input {\n\t\toverflow-y: auto;\n\t\twidth: auto;\n\t\tmargin: 0;\n\t\tpadding: 8px;\n\t\tcursor: text;\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-radius: var(--border-radius-large);\n\t\toutline: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tfont-size: inherit;\n\t\tmin-height: $clickable-area;\n\t\tmax-height: $clickable-area * 5.5;\n\n\t\t&--has-label {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t\t&--empty:focus:before,\n\t\t&--empty:not(&--has-label):before {\n\t\t\tcontent: attr(aria-placeholder);\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&[contenteditable='false']:not(&--disabled) {\n\t\t\tcursor: default;\n\t\t\tbackground-color: transparent;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-color: transparent;\n\t\t\topacity: 1;\n\t\t\tborder-radius: 0;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tmin-height: $clickable-area * 3;\n\t\t\t// No max for mutiline\n\t\t\tmax-height: none;\n\t\t}\n\n\t\t&--disabled {\n\t\t\topacity: $opacity_disabled;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: 2px solid var(--color-background-darker);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t}\n}\n\n</style>\n\n<style lang=\"scss\" module>\n.tribute-container {\n\tz-index: 9000;\n\toverflow: auto;\n\t// Hide container root element while initialising\n\tposition: absolute;\n\tleft: -10000px;\n\t// Space it out a bit from the text\n\tmargin: var(--default-grid-baseline) 0;\n\tpadding: var(--default-grid-baseline);\n\tcolor: var(--color-text-maxcontrast);\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\n\t.tribute-container__item {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\n\t\tmargin-bottom: var(--default-grid-baseline);\n\t\tcursor: pointer;\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\t&:global(.highlight) {\n\t\t\tcolor: var(--color-main-text);\n\t\t\tbackground: var(--color-background-hover);\n\n\t\t\t&, * {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.tribute-container--focus-visible {\n\t\t:global(.highlight).tribute-container__item {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t}\n\t}\n}\n\n.tribute-container-autocomplete {\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// Autocomplete height\n\t// + 2 paddings around autocomplete\n\t// + 2 paddings arouind tribute item\n\t// + 1 padding gap\n\t// And 1.5 paddings - container's padding without the last gap\n\tmax-height: calc((var(--default-clickable-area) + 5 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline));\n}\n\n.tribute-container-emoji,\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 200px;\n\t// Show maximum 5 entries and a half to show scroll\n\t// Item height\n\t// + 2 paddings around autocomplete\n\t// + 2 paddings arouind tribute item\n\t// + 1 padding gap\n\t// And 1.5 paddings - container's padding without the last gap\n\tmax-height: calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline));\n\n\t.tribute-item {\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\n\t\t&__emoji {\n\t\t\tpadding-right: calc(var(--default-grid-baseline) * 2);\n\t\t}\n\t}\n}\n\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 300px;\n\t.tribute-item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t&__title {\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t&__icon {\n\t\t\tmargin: auto 0;\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tpadding-right: calc(var(--default-grid-baseline) * 2);\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_normalizeClass","_normalizeStyle","_hoisted_2","_toDisplayString","_createBlock","_createCommentVNode","Tooltip","_withDirectives","_mergeProps","_withKeys","_withModifiers"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAKA,cAAU;AAAA,EACd,MAAM;AAAA,EAEN,YAAY;AAAA,IACX;AAAA,EACA;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,OAAO;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACT;AAAA,IACD,OAAO;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,IACT;AAAA,IACD,SAAS;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,IAAI;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,MAAM;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,IACV;AAAA,IACD,SAAS;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IACD,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,IACV;AAAA,IACD,QAAQ;AAAA,MACP,MAAM,CAAC,QAAQ,KAAK;AAAA,MACpB,SAAS,OAAO,CAAA;AAAA,IAChB;AAAA,EACD;AAAA,EACD,UAAU;AAAA,IACT,YAAY;AACX,UAAI,KAAK,SAAS;AACjB,eAAO,KAAK;AAAA,MACb;AAEA,aAAO,KAAK,MAAM,KAAK,WAAW,UAC/B,KAAK,aAAa,KAAK,IAAI,EAAE,IAC7B;AAAA,IACH;AAAA;AAAA,IAED,oBAAoB;AACnB,aAAO,KAAK,SAAS,KAAK;AAAA,IAC1B;AAAA,EACD;AAAA,EAED,SAAS;AAAA,IACR;AAAA,EACA;AACF;AAhGM,MAAAC,eAAA,EAAA,OAAM,sBAAqB;;EAtBjC,KAAA;AAAA,EA4BI,OAAM;;AASF,MAAA,aAAA,EAAA,OAAM,+BAA8B;AArC5C,MAAA,aAAA,CAAA,OAAA;;EAAA,KAAA;AAAA,EAyCwB,OAAM;;;;AAnB7B,SAAAC,UAAA,GAAAC,mBAuBM,OAvBNF,cAuBM;AAAA,IArBLG,mBAUM,OAAA;AAAA,MAVA,OAxBRC,eAwBgB,CAAA,CAAA,OAAA,MAAoC,8BAAA,SAAA,mCAE3C,2BAA2B,CAAA;AAAA,MADhC,OAzBJC,eAyBW,SAAS,YAAA,EAAA,iBAAA,OAA6B,SAAS,SAAA,IAAA,IAAA,IAAA;AAAA;MAE3C,OAAA,OAAO,QAAnBJ,UAAA,GAAAC,mBAGO,QAHPI,cAGOC,gBADH,iBAAU,OAAA,OAAO,QAAI,EAAA,GAAA,CAAA,KAEI,OAAA,OAAO,UAAU,OAAA,OAAO,WAAM,0BAA3DC,YAE2B,6BAAA;AAAA,QAjC9B,KAAA;AAAA,QAgCI,OAAM;AAAA,QACL,QAAQ,OAAM,OAAC;AAAA,iCAjCpBC,mBAAA,IAAA,IAAA;AAAA;IAqCEN,mBAOO,QAPP,YAOO;AAAA,MANNA,mBAEO,QAAA;AAAA,QAFD,OAAM;AAAA,QAA8B,OAAO,SAAiB;AAAA,MAC9D,GAAAI,gBAAA,SAAA,iBAAiB,GAvCxB,GAAA,UAAA;AAAA,MAyCe,OAAO,wBAAnBL,mBAEO,QAFP,YAEOK,gBADH,OAAO,OAAA,GAAA,CAAA,KA1CdE,mBAAA,IAAA,IAAA;AAAA;;;;;;;;;;;;;;;;;;ACqRA,MAAM,mBAAmB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AACpF,MAAM,aAAa,CAAC;AACpB,iBAAiB,QAAQ,CAAC,SAAS;AAClC,aAAW,KAAK,MAAM,IAAI;AAC1B,aAAW,KAAK,OAAO,IAAI;AAC5B,CAAC;AAED,MAAK,YAAU;AAAA,EACd,MAAM;AAAA,EAEN,YAAY;AAAA,IACX,SAASC;AAAAA,EACT;AAAA,EAED,QAAQ,CAAC,UAAU;AAAA,EAEnB,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,IAAI;AAAA,MACH,MAAM;AAAA,MACN,SAAS,MAAM,YAAY,CAAC;AAAA,IAC5B;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,IAED,YAAY;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,IACV;AAAA,IAED,aAAa;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,EAAE,mBAAmB;AAAA,IAC9B;AAAA,IAED,cAAc;AAAA,MACb,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,IACjB;AAAA,IAED,eAAe;AAAA,MACd,MAAM;AAAA,MACN,SAAS,MAAM,SAAS;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASD,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,iBAAiB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,mBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACN,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACT;AAAA,EACD;AAAA,EAED,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAED,QAAQ;AACP,UAAM,MAAM,YAAY,CAAC;AACzB,WAAO;AAAA;AAAA,MAEN,SAAS,2BAA2B,GAAG;AAAA,MACvC,WAAW,2BAA2B,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMzC,SAAS;AAAA,MACT,8BAA8B;AAAA,IAC/B;AAAA,EACA;AAAA,EAED,OAAO;AACN,WAAO;AAAA;AAAA;AAAA;AAAA,MAIN,YAAY,KAAK;AAAA;AAAA,MAGjB,aAAa;AAAA;AAAA,MAGb,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,0BAA0B;AAAA,IAC3B;AAAA,EACA;AAAA,EAED,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMT,eAAe;AACd,aAAO,CAAC,KAAK,cAAc,KAAK,WAAW,KAAI,MAAO;AAAA,IACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,OAAO;AACN,aAAO,CAAC,CAAC,UAAU,UAAU,MAAM,UAAU;AAAA,IAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,kBAAkB;AACjB,UAAI,KAAK,gBAAgB,CAAC,KAAK,WAAW;AACzC,eAAO;AAAA,MACR;AACA,aAAO,aAAa,KAAK,UAAU,IAAI,KAAK;AAAA,IAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,gBAAgB;AACf,UAAI,CAAC,KAAK,iBAAiB;AAC1B,eAAO;AAAA,MACR;AACA,aAAO;AAAA,QACN,SAAS,EAAE,+CAA+C,EAAE,OAAO,KAAK,WAAW;AAAA,QACnF,OAAO;AAAA,QACP,SAAS;AAAA,MACV;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,UAAU;AACT,aAAO,KAAK,mBAAmB,CAAC,KAAK;AAAA,IACrC;AAAA;AAAA;AAAA;AAAA,IAKD,wBAAwB;AACvB,aAAO,SAAS,OAAO,QAAQ,aAAa;AAC3C,aAAK,aAAa,QAAQ,QAAQ;AAAA,MAClC,GAAE,GAAG;AAAA,IACN;AAAA,EACD;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKN,aAAa;AACZ,YAAM,OAAO,KAAK,MAAM,gBAAgB;AAExC,UAAI,KAAK,WAAW,KAAK,MAAM,KAAK,aAAa,IAAI,EAAE,QAAQ;AAC9D,aAAK,cAAc,KAAK,UAAU;AAAA,MACnC;AAAA,IACA;AAAA,EACD;AAAA,EAED,UAAU;AACT,SAAK,kBAAkB;AAGvB,SAAK,cAAc,KAAK,UAAU;AAIlC,SAAK,MAAM,gBAAgB,kBAAkB,KAAK;AAAA,EAClD;AAAA,EACD,gBAAgB;AACf,QAAI,KAAK,SAAS;AACjB,WAAK,QAAQ,OAAO,KAAK,MAAM,eAAe;AAAA,IAC/C;AAEA,QAAI,KAAK,8BAA8B;AACtC,WAAK,6BAA6B,WAAW;AAAA,IAC9C;AAAA,EACA;AAAA,EAED,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMR,QAAQ;AACP,WAAK,MAAM,gBAAgB,MAAM;AAAA,IACjC;AAAA,IAED,oBAAoB;AACnB,YAAM,iBAAiB,CAAC,YAAY,iDAAiD,YAAY,CAAC,CAAC,YAAY,KAAK,OAAO,cAAc,CAAC,mBAAmB,OAAO;AAEpK,YAAM,qBAAqB,CAAC;AAC5B,yBAAmB,KAAK;AAAA,QACvB,UAAU;AAAA;AAAA,QAEV,QAAQ,YAAU,GAAG,OAAO,EAAE,IAAI,OAAO,SAAS,OAAO,KAAK;AAAA,QAC9D,qBAAqB;AAAA;AAAA,QAErB,kBAAkB,UAAQ,eAAe,KAAK,oBAAoB,KAAK,UAAU,oBAAoB,CAAC;AAAA;AAAA,QAEtG,iBAAiB,MAAM;AAAA;AAAA,QAEvB,gBAAgB,UAAQ,KAAK,kBAAkB,MAAM,UAAU,EAAE;AAAA;AAAA,QAEjE,QAAQ,KAAK;AAAA;AAAA,QAEb,gBAAgB,GAAG,KAAK,OAAO,mBAAmB,CAAC,IAAI,KAAK,OAAO,gCAAgC,CAAC;AAAA;AAAA,QAEpG,WAAW,KAAK,OAAO,yBAAyB;AAAA,OAEhD;AAED,UAAI,KAAK,mBAAmB;AAC3B,2BAAmB,KAAK;AAAA,UACvB,SAAS;AAAA;AAAA;AAAA,UAGT,QAAQ,CAAC,QAAQ,UAAU;AAAA,UAC3B,qBAAqB;AAAA;AAAA,UAErB,kBAAkB,UAAQ;AACzB,gBAAI,WAAW,SAAS,KAAK,QAAQ,GAAG;AAGvC,qBAAO,KAAK;AAAA,YACb;AACA,mBAAO,eAAe,gBAAgB,KAAK,OAAO,qBAAqB,CAAC,KAAK,KAAK,SAAS,MAAM,YAAY,KAAK,SAAS,UAAU,EAAE;AAAA,UACvI;AAAA;AAAA,UAED,iBAAiB,MAAM,EAAE,gBAAgB;AAAA;AAAA,UAEzC,gBAAgB,CAAC,SAAS;AACzB,gBAAI,WAAW,SAAS,KAAK,QAAQ,GAAG;AAEvC,qBAAO,KAAK;AAAA,YACb;AAEA,2BAAe,KAAK,QAAQ;AAC5B,mBAAO,KAAK,SAAS;AAAA,UACrB;AAAA;AAAA,UAED,QAAQ,CAAC,MAAM,OAAO;AACrB,kBAAM,eAAe,YAAY,IAAI;AACrC,gBAAI,WAAW,SAAS,MAAM,IAAI,GAAG;AAOpC,2BAAa,QAAQ,MAAM,IAAI;AAAA,YAChC;AACA,eAAG,YAAY;AAAA,UACf;AAAA;AAAA,UAED,gBAAgB,GAAG,KAAK,OAAO,mBAAmB,CAAC,IAAI,KAAK,OAAO,yBAAyB,CAAC;AAAA;AAAA,UAE7F,WAAW,KAAK,OAAO,yBAAyB;AAAA,SAChD;AAAA,MACF;AAEA,UAAI,KAAK,kBAAkB;AAC1B,2BAAmB,KAAK;AAAA,UACvB,SAAS;AAAA;AAAA;AAAA,UAGT,QAAQ,CAAC,QAAQ,UAAU;AAAA,UAC3B,qBAAqB;AAAA;AAAA,UAErB,kBAAkB,UAAQ,eAAe,eAAe,KAAK,OAAO,oBAAoB,CAAC,UAAU,KAAK,SAAS,QAAQ,mBAAmB,KAAK,OAAO,qBAAqB,CAAC,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,UAE/M,iBAAiB,MAAM,EAAE,wBAAwB;AAAA,UACjD,gBAAgB,KAAK;AAAA;AAAA,UAErB,QAAQ,CAAC,MAAM,OAAO,GAAG,eAAe,IAAI,CAAC;AAAA;AAAA,UAE7C,gBAAgB,GAAG,KAAK,OAAO,mBAAmB,CAAC,IAAI,KAAK,OAAO,wBAAwB,CAAC;AAAA;AAAA,UAE5F,WAAW,KAAK,OAAO,yBAAyB;AAAA,SAChD;AAAA,MACF;AAEA,WAAK,UAAU,IAAI,QAAQ;AAAA,QAC1B,YAAY;AAAA;AAAA;AAAA,QAGZ,aAAa;AAAA;AAAA,QAEb,eAAe,KAAK;AAAA,OACpB;AACD,WAAK,QAAQ,OAAO,KAAK,MAAM,eAAe;AAAA,IAC9C;AAAA,IAED,QAAQ,MAAM;AAGb,wBAAkB,KAAK,SAAS,EAAE,EAChC,KAAK,YAAU;AAEf,cAAM,UAAU,SAAS,eAAe,8BAA8B;AACtE,cAAM,YAAY;AAAA,UACjB;AAAA,UACA,YAAY;AAAA,QACb;AACA,aAAK,MAAM,uBAAuB,SAAS;AAC3C,YAAI,UAAU,YAAY;AACzB,gBAAM,UAAU,SAAS,eAAe,MAAM;AAC9C,kBAAQ,YAAY,OAAO;AAC3B,eAAK,eAAe,OAAO;AAC3B,eAAK,YAAY,KAAK,MAAM,gBAAgB,SAAS;AAAA,eAC/C;AACN,kBAAQ,OAAO;AAAA,QAChB;AAAA,OACA,EACA,MAAM,CAAC,UAAU;AACjB,gBAAQ,MAAM,kCAAkC,KAAK;AACrD,cAAM,UAAU,SAAS,eAAe,8BAA8B;AACtE,aAAK,eAAe,OAAO;AAC3B,gBAAQ,OAAO;AAAA,OACf;AACF,aAAO;AAAA,IACP;AAAA,IACD,eAAe,SAAS;AACvB,YAAM,QAAQ,SAAS,YAAY;AACnC,YAAM,YAAY,OAAO;AACzB,YAAM,SAAS;AACf,YAAM,YAAY,OAAO,aAAa;AACtC,gBAAU,gBAAgB;AAC1B,gBAAU,SAAS,KAAK;AAAA,IACxB;AAAA,IACD,kBAAkB;AACjB,UAAI,CAAC,SAAS,aAAa;AAC1B;AAAA,MACD;AACA,YAAM,QAAQ,SAAS,YAAY;AACnC,YAAM,mBAAmB,KAAK,MAAM,eAAe;AACnD,YAAM,SAAS,KAAK;AACpB,YAAM,YAAY,OAAO,aAAa;AACtC,gBAAU,gBAAgB;AAC1B,gBAAU,SAAS,KAAK;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,QAAQ,OAAO;AACd,WAAK,YAAY,MAAM,OAAO,SAAS;AAAA,IACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASD,QAAQ,OAAO;AAEd,UAAI,CAAC,KAAK,SAAS;AAClB;AAAA,MACD;AAEA,YAAM,eAAe;AACrB,YAAM,gBAAgB,MAAM;AAG5B,WAAK,MAAM,SAAS,KAAK;AAGzB,UAAI,cAAc,MAAM,WAAW,KAC/B,CAAC,OAAO,OAAO,cAAc,KAAK,EAAE,KAAK,UAAQ,MAAM,KAAK,WAAW,MAAM,CAAC,GAAG;AACpF;AAAA,MACD;AAEA,YAAM,OAAO,cAAc,QAAQ,MAAM;AACzC,YAAM,YAAY,OAAO,aAAa;AAGtC,UAAI,CAAC,UAAU,YAAY;AAC1B,aAAK,YAAY,IAAI;AACrB;AAAA,MACD;AAGA,YAAM,QAAQ,UAAU,WAAW,CAAC;AACpC,gBAAU,mBAAmB;AAC7B,YAAM,WAAW,SAAS,eAAe,IAAI,CAAC;AAG9C,YAAM,WAAW,SAAS,YAAY;AACtC,eAAS,SAAS,MAAM,QAAQ,MAAM,SAAS;AAC/C,eAAS,SAAS,IAAI;AACtB,gBAAU,gBAAgB;AAC1B,gBAAU,SAAS,QAAQ;AAG3B,WAAK,YAAY,KAAK,MAAM,gBAAgB,SAAS;AAAA,IACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,YAAY,YAAY;AACvB,YAAM,OAAO,KAAK,aAAa,UAAU;AACzC,WAAK,aAAa;AAClB,WAAK,MAAM,qBAAqB,IAAI;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,cAAc,OAAO;AACpB,YAAM,kBAAkB,KAAK,cAAc,KAAK;AAChD,WAAK,MAAM,gBAAgB,YAAY;AACvC,WAAK,aAAa;AAAA,IAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUD,SAAS,OAAO;AACf,UAAI,CAAC,KAAK,QAAQ,CAAC,OAAO,cAAc;AACvC;AAAA,MACD;AAGA,UAAI,CAAC,KAAK,SAAS;AAClB;AAAA,MACD;AAKA,YAAM,YAAY,OAAO,aAAa;AACtC,YAAM,OAAO,MAAM;AACnB,UAAI,CAAC,UAAU,eAAe,CAAC,UAAU,YAAY;AACpD;AAAA,MACD;AAEA,YAAM,WAAW,UAAU,WAAW,UAAU,aAAa,CAAC;AAC9D,UAAI,SAAS,wBAAwB,aAAa,KAAK,SAAS,cAAc,GAAG;AAEhF;AAAA,MACD;AAEA,YAAM,QAAQ,SAAS,YAAY;AACnC,UAAI,UAAU,eAAe,MAAM;AAElC,cAAM,mBAAmB,IAAI;AAC7B,cAAM,aAAa,UAAU,UAAU;AAAA,MACxC,WAAW,UAAU,eAAe,GAAG;AACtC,cAAM,OAAO,MAAM,UAAU,YAAY;AAAA,aACnC;AAEN;AAAA,MACD;AACA,YAAM,SAAS,MAAM,MAAM,YAAY,CAAC;AAExC,YAAM,eAAe,MAAM,cAAa,EAAG;AAC3C,UAAI,gBAAgB,aAAa,oBAAoB,SAAS;AAE7D,cAAM,eAAe;AACrB,cAAM,eAAe;AAAA,MACtB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,QAAQ,OAAO;AAKd,UAAI,KAAK,aACL,KAAK,mBACL,KAAK,QAAQ,YACb,KAAK,aAAa;AACrB;AAAA,MACD;AAEA,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,MAAM,UAAU,KAAK;AAAA,IAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,YAAY,OAAO;AAClB,UAAI,KAAK,iBAAiB;AACzB;AAAA,MACD;AACA,WAAK,MAAM,UAAU,KAAK;AAAA,IAC1B;AAAA,IAED,QAAQ,OAAO;AAEd,YAAM,yBAAyB;AAAA,IAC/B;AAAA,IAED,SAAS,OAAO;AAEf,UAAI,KAAK,WAAW,KAAK,oBAAoB;AAC5C,cAAM,yBAAyB;AAC/B,aAAK,QAAQ,SAAS;AAAA,MACvB;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,sBAAsB;AACrB,aAAO,KAAK,QAAQ;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,yBAAyB;AAGxB,aAAO,KAAK,sBAAsB,cAAc,0DAA0D;AAAA,IAC1G;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,gBAAgB,UAAU;AACzB,WAAK,qBAAqB;AAE1B,UAAI,UAAU;AAOb,aAAK,oBAAqB,EAAC,aAAa,SAAS,KAAK,QAAQ,QAAQ,WAAW,kBAAkB,KAAK,OAAO,mBAAmB,CAAC;AAEnI,aAAK,wBAAwB;AAAA,aACvB;AAGN,aAAK,sBAAsB,MAAM;AAGjC,aAAK,uBAAuB;AAE5B,aAAK,uBAAuB,KAAK;AAAA,MAClC;AAAA,IACA;AAAA,IAED,wBAAwB;AACvB,UAAI,CAAC,KAAK,oBAAoB;AAC7B;AAAA,MACD;AACA,WAAK,uBAAuB,IAAI;AAChC,WAAK,gCAAgC;AAAA,IACrC;AAAA,IAED,kCAAkC;AAEjC,4BAAsB,MAAM;AAC3B,aAAK,uBAAuB,KAAK,uBAAwB,GAAE;AAAA,OAC3D;AAAA,IACD;AAAA,IAED,0BAA0B;AAEzB,UAAI,KAAK,0BAA0B;AAClC;AAAA,MACD;AACA,WAAK,2BAA2B;AAEhC,YAAM,mBAAmB,KAAK,oBAAoB;AAGlD,uBAAiB,KAAK,KAAK;AAG3B,uBAAiB,aAAa,QAAQ,SAAS;AAE/C,YAAM,KAAK,iBAAiB,SAAS,CAAC;AACtC,SAAG,aAAa,QAAQ,cAAc;AAItC,WAAK,+BAA+B,IAAI,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM;AAC1E,YAAI,OAAO,MAAM,YAAY,QAAQ;AAEpC,eAAK,gCAAgC;AAAA,QACtC;AAAA,OACA,EAAE,QAAQ,kBAAkB;AAAA,QAC5B,YAAY;AAAA,QACZ,iBAAiB,CAAC,OAAO;AAAA,OACzB;AAGD,uBAAiB,iBAAiB,aAAa,MAAM;AACpD,aAAK,uBAAuB,KAAK;AACjC,aAAK,gCAAgC;AAAA,MACtC,GAAG,EAAE,SAAS,MAAM;AAAA,IACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUD,uBAAuB,kBAAkB;AACxC,UAAI,kBAAkB;AACrB,aAAK,oBAAmB,EAAG,UAAU,IAAI,KAAK,OAAO,kCAAkC,CAAC;AAAA,aAClF;AACN,aAAK,oBAAmB,EAAG,UAAU,OAAO,KAAK,OAAO,kCAAkC,CAAC;AAAA,MAC5F;AAAA,IACA;AAAA,EACD;AACF;AAj+BA,MAAA,aAAA,CAAA,MAAA,mBAAA,mBAAA,oBAAA,iBAAA,iBAAA,uBAAA;AAAA,MAAA,aAAA,CAAA,IAAA;;;sBAuNCR,mBA0CM,OAAA;AAAA,IA1CD,OAvNNE,eAuNY,CAAA,wBAA+B,KAAA,OAAO,KAAK,CAAA;AAAA;IACrDO,eAAAR,mBAmCkD,OAnClDS,WAmCkD;AAAA,MAnC5C,IAAI,OAAE;AAAA,MACX,KAAI;AAAA,MAEH,OAAK,CAAA;AAAA,8CAA8C,SAAY;AAAA,kDAAgD,OAAS;AAAA,kDAAgD,OAAK;AAAA,iDAA+C,SAAe;AAAA,iDAA+C,OAAQ;AAAA,SAW7R,6BAA6B;AAAA,MAJlC,iBAAiB,SAAO;AAAA,MACxB,mBAAiB,OAAA,QAAQ,OAAA,UAAU;AAAA,MACnC,oBAAkB,OAAW;AAAA,MAC9B,kBAAe;AAAA,MAEf,MAAK;AAAA,MACL,iBAAc;AAAA,MACd,qBAAkB;AAAA,MACjB,iBAAe,OAAS;AAAA,MACxB,iBAAe,MAAkB,qBAAA,SAAA;AAAA,MACjC,yBAAuB,MAAoB;AAAA,OACpC,KAAM,QAAA;AAAA,MACb,gDAAO,SAAe,mBAAA,SAAA,gBAAA,GAAA,IAAA;AAAA,MACtB,gDAAO,SAAO,WAAA,SAAA,QAAA,GAAA,IAAA;AAAA,MACd,0DAAkB,MAAW,cAAA;AAAA,MAC7B,wDAAgB,MAAW,cAAA;AAAA,MAC3B,WAAO;AAAA,QAlPX,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAC,SAAA,IAAA,SAkPoB,SAAQ,YAAA,SAAA,SAAA,GAAA,IAAA,GAAA,CAAA,QAAA,CAAA;AAAA,QAlP5B,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAA,SAAAC,2BAoPyB,SAAO,WAAA,SAAA,QAAA,GAAA,IAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,QApPhC,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAD,SAAAC,2BAqP2C,SAAW,eAAA,SAAA,YAAA,GAAA,IAAA,GAAA,CAAA,QAAA,SAAA,QAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,QArPtD,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAD,SAAAC,2BAwP2B,SAAqB,yBAAA,SAAA,sBAAA,GAAA,IAAA,GAAA,CAAA,SAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA;AAAA,QAxPhD,OAAA,EAAA,MAAA,OAAA,EAAA,IAAAD,SAAAC,2BAyP6B,SAAqB,yBAAA,SAAA,sBAAA,GAAA,IAAA,GAAA,CAAA,SAAA,MAAA,CAAA,GAAA,CAAA,MAAA,CAAA;AAAA;MAzPlD,kBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAD,sBAmPyB,SAAQ,YAAA,SAAA,SAAA,GAAA,IAAA,GAAA,CAAA,KAAA,CAAA;AAAA,MAG7B,gDAAO,SAAO,WAAA,SAAA,QAAA,GAAA,IAAA;AAAA,MAtPlB,gBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAAC,2BAuPgC,SAAO,WAAA,SAAA,QAAA,GAAA,IAAA,GAAA,CAAA,QAAA,SAAA,CAAA;AAAA,MAGnC,6DAAqB,SAAe,gBAAA,IAAA;AAAA,MACpC,8DAAsB,SAAe,gBAAA,KAAA;AAAA,IA3PzC,CAAA,GAAA,MAAA,IAAA,UAAA,GAAA;AAAA,2BA0Nc,SAAa,aAAA;AAAA;IAkCd,OAAK,sBAAhBZ,mBAIM,OAAA;AAAA,MAhQR,KAAA;AAAA,MA6PI,IAAI,OAAO;AAAA,MACZ,OAAM;AAAA,IACH,GAAAK,gBAAA,OAAA,KAAK,GA/PX,GAAA,UAAA,KAAAE,mBAAA,IAAA,IAAA;AAAA;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcRichText-BfreYq5m.mjs","sources":["../../src/components/NcRichText/NcReferenceList.vue","../../src/components/NcRichText/placeholder.js","../../src/components/NcRichText/NcRichText.vue"],"sourcesContent":["<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\" :interactive=\"interactive\" :interactive-opt-in=\"interactiveOptIn\" />\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\tdisplayFallback: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: ['loaded'],\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.length !== 0\n\t\t},\n\t\tvalues() {\n\t\t\tif (this.referenceData) {\n\t\t\t\treturn this.referenceData\n\t\t\t}\n\n\t\t\tif (this.displayFallback && !this.loading && !this.references) {\n\t\t\t\treturn [this.fallbackReference]\n\t\t\t}\n\n\t\t\treturn 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\tfallbackReference() {\n\t\t\treturn {\n\t\t\t\taccessible: true,\n\t\t\t\topenGraphObject: {\n\t\t\t\t\tid: this.text,\n\t\t\t\t\tlink: this.text,\n\t\t\t\t\tname: this.text,\n\t\t\t\t},\n\t\t\t\trichObjectType: 'open-graph',\n\t\t\t}\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\tthis.$emit('loaded')\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\tthis.$emit('loaded')\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.widget--list {\n\twidth: var(--widget-full-width, 100%);\n}\n\n.widgets--list.icon-loading {\n\tmin-height: 44px;\n}\n</style>\n","import { u } from 'unist-builder'\nimport { visit } from 'unist-util-visit'\nimport { parseUrl } from './autolink.ts'\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\tchildren: [],\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\t...props,\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 v-model=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"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### Flavored Markdown\n\nThis component can support [Github Flavored Markdown](https://github.github.com/gfm/).\nIt adds such elements, as tables, task lists, strikethrough, and supports autolinks by default\n\nIt is also possible to make a rendered content interactive and listen for events\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:use-extended-markdown=\"true\"\n\t\t\t:interactive=\"true\"\n\t\t\t@interact:todo=\"handleInteraction\"/>\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\ttext: `## Try flavored markdown right now!\n\n~~strikethrough~~\n\n- [ ] task to be done\n- [x] task completed\n\nTable header | Column A | Column B\n-- | -- | --\nTable row | value A | value B\n`,\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\thandleInteraction(id) {\n\t\t\t\tconst parentId = id.split('-markdown-input-')[0]\n\t\t\t\tconst index = Array.from(document.querySelectorAll(`span[id^=\"${parentId}-markdown-input-\"]`)).findIndex((el) => el.id.includes(id))\n\t\t\t\tif (index === -1 ) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet checkBoxIndex = 0\n\t\t\t\tlines = this.text.split('\\n')\n\t\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\t\tif (lines[i].includes('[ ]') || lines[i].includes('[x]')) {\n\t\t\t\t\t\tif (checkBoxIndex === index) {\n\t\t\t\t\t\t\tconst isChecked = lines[i].includes('[x]')\n\t\t\t\t\t\t\tif (isChecked) {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[x]', '[ ]')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[ ]', '[x]')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcheckBoxIndex++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.text = lines.join('\\n')\n\t\t\t},\n\t\t},\n\t}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\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 v-model=\"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 v-model=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useExtendedMarkdown\" type=\"checkbox\">Use extended 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\t\t:use-extended-markdown=\"useExtendedMarkdown\" />\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\tuseExtendedMarkdown: 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\tlabel: '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\tlabel: '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\tlabel: '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\tlabel: '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\tlabel: '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 NcCheckboxRadioSwitch from '../NcCheckboxRadioSwitch/NcCheckboxRadioSwitch.vue'\nimport { getRoute, remarkAutolink } from './autolink.ts'\nimport { remarkPlaceholder, prepareTextNode } from './placeholder.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport breaks from 'remark-breaks'\nimport remark2rehype from 'remark-rehype'\nimport rehype2react from 'rehype-react'\nimport rehypeExternalLinks from 'rehype-external-links'\nimport { Fragment, h, resolveComponent } from 'vue'\nimport { RouterLink } from 'vue-router'\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\treferenceInteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\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\t/** Provide GitHub Flavored Markdown syntax */\n\t\tuseExtendedMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide event from rendered markdown inputs */\n\t\tinteractive: {\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\temits: ['interact:todo'],\n\n\tdata() {\n\t\treturn {\n\t\t\tparentId: GenRandomId(5),\n\t\t}\n\t},\n\n\tmethods: {\n\t\trenderPlaintext() {\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\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: this }, 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 = this.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((typeof component === 'string') ? resolveComponent(component) : component, {\n\t\t\t\t\t\t...props,\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, {\n\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown() {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(remarkParse)\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\tuseExtendedMarkdown: this.useExtendedMarkdown,\n\t\t\t\t})\n\t\t\t\t.use(this.useExtendedMarkdown ? remarkGfm : undefined)\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\tFragment,\n\t\t\t\t\tjsx: this.createElement,\n\t\t\t\t\tjsxs: this.createElement,\n\t\t\t\t\telementAttributeNameCase: 'html',\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, {\n\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\tcreateElement(type, props, key) {\n\t\t\t// Modified code from vue/jsx-runtime\n\t\t\tif (key) {\n\t\t\t\tprops.key = key\n\t\t\t}\n\t\t\t// Children should be always an array\n\t\t\tlet children = props.children ?? []\n\t\t\tdelete props.children\n\n\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\tif (typeof children === 'string') {\n\t\t\t\tchildren = children.replace(/</gmi, '<')\n\t\t\t}\n\n\t\t\tif (!String(type).startsWith('#')) {\n\t\t\t\tlet nestedNode = null\n\t\t\t\tif (this.useExtendedMarkdown) {\n\t\t\t\t\tif (String(type) === 'li' && Array.isArray(children)\n\t\t\t\t\t\t&& children[0].type === 'input'\n\t\t\t\t\t\t&& children[0].props.type === 'checkbox') {\n\t\t\t\t\t\tconst [inputNode, , ...labelParts] = children\n\n\t\t\t\t\t\tconst nestedNodeIndex = labelParts.findIndex((child) => ['ul', 'ol', 'li', 'blockquote', 'pre'].includes(child.tag))\n\t\t\t\t\t\tif (nestedNodeIndex !== -1) {\n\t\t\t\t\t\t\tnestedNode = labelParts[nestedNodeIndex]\n\t\t\t\t\t\t\tlabelParts.splice(nestedNodeIndex)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst id = this.parentId + '-markdown-input-' + GenRandomId(5)\n\t\t\t\t\t\tconst propsToForward = { ...inputNode.props }\n\t\t\t\t\t\t// The checked prop is name modelValue for NcCheckboxRadioSwitch\n\t\t\t\t\t\tdelete propsToForward.checked\n\t\t\t\t\t\tconst inputComponent = h(NcCheckboxRadioSwitch, {\n\t\t\t\t\t\t\t...propsToForward,\n\t\t\t\t\t\t\tmodelValue: inputNode.props.checked,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdisabled: !this.interactive,\n\t\t\t\t\t\t\t'onUpdate:modelValue': () => {\n\t\t\t\t\t\t\t\tthis.$emit('interact:todo', id)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, labelParts)\n\n\t\t\t\t\t\treturn h(type, props, [inputComponent, nestedNode])\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (String(type) === 'a') {\n\t\t\t\t\tconst route = getRoute(this.$router, props.href)\n\t\t\t\t\tif (route) {\n\t\t\t\t\t\tdelete props.href\n\t\t\t\t\t\tdelete props.target\n\n\t\t\t\t\t\treturn h(RouterLink, {\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\tto: route,\n\t\t\t\t\t\t}, children)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn h(type, props, children)\n\t\t\t}\n\n\t\t\tconst placeholder = this.arguments[type.slice(1)]\n\t\t\tif (!placeholder) {\n\t\t\t\treturn h('span', { ...props, class: 'rich-text--fallback' }, [`{${type.slice(1)}}`])\n\t\t\t}\n\n\t\t\tif (!placeholder.component) {\n\t\t\t\treturn h('span', { ...props }, [placeholder])\n\t\t\t}\n\n\t\t\treturn h(\n\t\t\t\t(typeof placeholder.component === 'string') ? resolveComponent(placeholder.component) : placeholder.component,\n\t\t\t\t{\n\t\t\t\t\t...props,\n\t\t\t\t\t...placeholder.props,\n\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t},\n\t\t\t\tchildren,\n\t\t\t)\n\t\t},\n\t},\n\trender() {\n\t\treturn this.useMarkdown || this.useExtendedMarkdown\n\t\t\t? this.renderMarkdown()\n\t\t\t: this.renderPlaintext()\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\n</style>\n"],"names":["_sfc_main","_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createVNode","_createCommentVNode","index","h"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NcSelect-Dt3JJc9b.mjs","sources":["../../src/components/NcSelect/NcSelect.vue"],"sourcesContent":["<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<docs>\n### Description\n\nGeneral purpose multiselect component.\n\n### Basic examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Simple (top placement)',\n\t\t\tplacement: 'top',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (with placeholder)',\n\t\t\tmultiple: true,\n\t\t\tplaceholder: 'Select multiple options',\n\t\t\toptions: [\n\t\t\t\t'foo',\n\t\t\t\t'bar',\n\t\t\t\t'baz',\n\t\t\t\t'qux',\n\t\t\t\t'quux',\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple (objects, pre-selected, stay open on select)',\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'baz',\n\t\t\t\t\tlabel: 'Baz',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'qux',\n\t\t\t\t\tlabel: 'Qux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'quux',\n\t\t\t\t\tlabel: 'Quux',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'corge',\n\t\t\t\t\tlabel: 'Corge',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'grault',\n\t\t\t\t\tlabel: 'Grault',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'garply',\n\t\t\t\t\tlabel: 'Garply',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'waldo',\n\t\t\t\t\tlabel: 'Waldo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'fred',\n\t\t\t\t\tlabel: 'Fred',\n\t\t\t\t},\n\t\t\t],\n\t\t\tvalue: [\n\t\t\t\t{\n\t\t\t\t\tid: 'foo',\n\t\t\t\t\tlabel: 'Foo',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'bar',\n\t\t\t\t\tlabel: 'Bar',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(2, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### Native form validation example\n\n```vue\n<template>\n\t<div class=\"container\">\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require a selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"singleValue\"\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\n\t\t<form class=\"container__form\" @submit.prevent>\n\t\t\t<NcSelect class=\"container__select\"\n\t\t\t\tinput-label=\"Require at least one selection\"\n\t\t\t\t:options=\"options\"\n\t\t\t\tv-model=\"multiValue\"\n\t\t\t\tmultiple\n\t\t\t\trequired />\n\t\t\t<NcButton native-type=\"submit\">Submit</NcButton>\n\t\t</form>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\toptions: ['foo', 'bar', 'baz', 'qux', 'quux'],\n\t\t\tsingleValue: null,\n\t\t\tmultiValue: [],\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.container {\n\tdisplay: flex;\n\tgap: 0 12px;\n}\n\n.container__form {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-end;\n\twidth: 100%;\n\tgap: 8px 0;\n}\n\n.container__select {\n\twidth: 100%;\n}\n</style>\n```\n\n### No wrap example\n\nThe `noWrap` prop is set to `true` and the `max-width` of the multiselect\nparent container is limited to `350px`\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"false\"\n\t\t\t\tv-bind=\"data1.props\"\n\t\t\t\tv-model=\"data1.props.value\" />\n\t\t</div>\n\t\t<div class=\"container\">\n\t\t\t<NcSelect :no-wrap=\"true\"\n\t\t\t\tv-bind=\"data2.props\"\n\t\t\t\tv-model=\"data2.props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nconst data1 = {\n\tprops: {\n\t\tinputLabel: 'Wrapped (Default)',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nconst data2 = {\n\tprops: {\n\t\tinputLabel: 'Not wrapped',\n\t\tmultiple: true,\n\t\tcloseOnSelect: false,\n\t\toptions: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t\tvalue: [\n\t\t\t'foo',\n\t\t\t'bar',\n\t\t\t'baz',\n\t\t\t'qux',\n\t\t\t'quux',\n\t\t\t'corge',\n\t\t\t'grault',\n\t\t\t'garply',\n\t\t\t'waldo',\n\t\t\t'fred',\n\t\t],\n\t},\n}\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tdata1,\n\t\t\tdata2,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 1fr);\n\tgap: 10px;\n}\n\n.container {\n\tmax-width: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n\n### User select examples\n\n```vue\n<template>\n\t<div class=\"grid\">\n\t\t<div v-for=\"{ props } in selectArray\"\n\t\t\tclass=\"container\">\n\t\t\t<NcSelect v-bind=\"props\"\n\t\t\t\tv-model=\"props.value\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport AccountGroup from '@mdi/svg/svg/account-group.svg?raw'\nimport Email from '@mdi/svg/svg/email.svg?raw'\n\nconst selectArray = [\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'User select',\n\t\t\tuserSelect: true,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t\t// Example of how to show the user status within the option\n\t\t\t\t\tuser: '0-john',\n\t\t\t\t\tpreloadedUserStatus: {\n\t\t\t\t\t\ticon: '',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\tmessage: 'I am online',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n\n\t{\n\t\tprops: {\n\t\t\tinputLabel: 'Multiple user select (stay open on select)',\n\t\t\tuserSelect: true,\n\t\t\tmultiple: true,\n\t\t\tcloseOnSelect: false,\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tid: '0-john',\n\t\t\t\t\tdisplayName: 'John',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'john@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-emma',\n\t\t\t\t\tdisplayName: 'Emma',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'emma@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-olivia',\n\t\t\t\t\tdisplayName: 'Olivia',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'olivia@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-noah',\n\t\t\t\t\tdisplayName: 'Noah',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'noah@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '0-oliver',\n\t\t\t\t\tdisplayName: 'Oliver',\n\t\t\t\t\tisNoUser: false,\n\t\t\t\t\tsubname: 'oliver@example.org',\n\t\t\t\t\ticon: '',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '1-admin',\n\t\t\t\t\tdisplayName: 'Admin',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: null,\n\t\t\t\t\ticonSvg: AccountGroup,\n\t\t\t\t\ticonName: 'Group icon',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: '2-org@example.org',\n\t\t\t\t\tdisplayName: 'Organization',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tsubname: 'org@example.org',\n\t\t\t\t\ticonSvg: Email,\n\t\t\t\t\ticonName: 'Email icon',\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n]\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tselectArray,\n\t\t}\n\t},\n}\n</script>\n\n<style>\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(1, 500px);\n\tgap: 10px;\n}\n\n.container {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px 0;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<VueSelect class=\"select\"\n\t\t:class=\"{\n\t\t\t'select--no-wrap': noWrap,\n\t\t\t'user-select': userSelect,\n\t\t}\"\n\t\tv-bind=\"propsToForward\"\n\t\t@search=\"search = $event\"\n\t\t@update:model-value=\"$emit('update:modelValue', $event)\">\n\t\t<template v-if=\"!labelOutside && inputLabel\" #header>\n\t\t\t<label :for=\"inputId\"\n\t\t\t\tclass=\"select__label\">\n\t\t\t\t{{ inputLabel }}\n\t\t\t</label>\n\t\t</template>\n\t\t<template #search=\"{ attributes, events }\">\n\t\t\t<input :class=\"['vs__search', inputClass]\"\n\t\t\t\tv-bind=\"attributes\"\n\t\t\t\t:required=\"inputRequired\"\n\t\t\t\tv-on=\"events\">\n\t\t</template>\n\t\t<template #open-indicator=\"{ attributes }\">\n\t\t\t<ChevronDown v-bind=\"attributes\"\n\t\t\t\tfill-color=\"var(--vs-controls-color)\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tcursor: !disabled ? 'pointer' : null,\n\t\t\t\t}\"\n\t\t\t\t:size=\"26\" />\n\t\t\t\t<!-- Set size to 26 to make up for the increased padding of this icon -->\n\t\t</template>\n\t\t<template #option=\"option\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"option\"\n\t\t\t\t:avatar-size=\"24\"\n\t\t\t\t:name=\"option[localLabel]\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(option[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #selected-option=\"selectedOption\">\n\t\t\t<NcListItemIcon v-if=\"userSelect\"\n\t\t\t\tv-bind=\"selectedOption\"\n\t\t\t\t:avatar-size=\"24\"\n\t\t\t\t:name=\"selectedOption[localLabel]\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<NcEllipsisedOption v-else\n\t\t\t\t:name=\"String(selectedOption[localLabel])\"\n\t\t\t\t:search=\"search\" />\n\t\t</template>\n\t\t<template #spinner=\"spinner\">\n\t\t\t<NcLoadingIcon v-if=\"spinner.loading\" />\n\t\t</template>\n\t\t<template #no-options>\n\t\t\t{{ t('No results') }}\n\t\t</template>\n\t\t<template v-for=\"(_, name) in $slots\" #[name]=\"data\">\n\t\t\t<!-- @slot Any combination of slots from https://vue-select.org/api/slots.html -->\n\t\t\t<slot :name=\"name\" v-bind=\"data\" />\n\t\t</template>\n\t</VueSelect>\n</template>\n\n<script>\n// TODO: Use @nextcloud/vue-select once a vue 3 version is available.\n// Until then, all @nextcloud/vue-select specific improvements won't be available.\n// E.g. the `limit` prop has no effect, currently.\nimport 'vue-select/dist/vue-select.css'\n\nimport VueSelect from 'vue-select'\nimport {\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\tlimitShift,\n\toffset,\n\tshift,\n} from '@floating-ui/dom'\nimport { t } from '../../l10n.js'\n\nimport ChevronDown from 'vue-material-design-icons/ChevronDown.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport NcEllipsisedOption from '../NcEllipsisedOption/index.js'\nimport NcListItemIcon from '../NcListItemIcon/index.js'\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\n\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport { h, warn } from 'vue'\n\nexport default {\n\tname: 'NcSelect',\n\n\tcomponents: {\n\t\tChevronDown,\n\t\tNcEllipsisedOption,\n\t\tNcListItemIcon,\n\t\tNcLoadingIcon,\n\t\tVueSelect,\n\t},\n\n\tprops: {\n\t\t// Add VueSelect props to $props\n\t\t...VueSelect.props,\n\t\t...VueSelect.mixins.reduce((allProps, mixin) => ({ ...allProps, ...mixin.props }), {}),\n\n\t\t/**\n\t\t * `aria-label` for the clear input button\n\t\t */\n\t\tariaLabelClearSelected: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Clear selected'),\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the search input\n\t\t *\n\t\t * A descriptive `inputLabel` is preferred as this is not visible.\n\t\t */\n\t\tariaLabelCombobox: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * `aria-label` for the listbox element\n\t\t */\n\t\tariaLabelListbox: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Options'),\n\t\t},\n\n\t\t/**\n\t\t * Allows to customize the `aria-label` for the deselect-option button\n\t\t * The default is \"Deselect \" + optionLabel\n\t\t * @type {(optionLabel: string) => string}\n\t\t */\n\t\tariaLabelDeselectOption: {\n\t\t\ttype: Function,\n\t\t\tdefault: (optionLabel) => t('Deselect {option}', { option: optionLabel }),\n\t\t},\n\n\t\t/**\n\t\t * Append the dropdown element to the end of the body\n\t\t * and size/position it dynamically.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#appendtobody\n\t\t */\n\t\tappendToBody: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this function is responsible for\n\t\t * positioning the drop down list.\n\t\t *\n\t\t * If a function is returned from `calculatePosition`, it will\n\t\t * be called when the drop down list is removed from the DOM.\n\t\t * This allows for any garbage collection you may need to do.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#calculateposition\n\t\t */\n\t\tcalculatePosition: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Close the dropdown when selecting an option\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#closeonselect\n\t\t */\n\t\tcloseOnSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Replace default vue-select components\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#components\n\t\t */\n\t\tcomponents: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({\n\t\t\t\tDeselect: {\n\t\t\t\t\trender: () => h(Close, {\n\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\tfillColor: 'var(--vs-controls-color)',\n\t\t\t\t\t\tstyle: [\n\t\t\t\t\t\t\t{ cursor: 'pointer' },\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\n\t\t/**\n\t\t * Sets the maximum number of options to display in the dropdown list\n\t\t */\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Disable the component\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#disabled\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Determines whether the dropdown should be open.\n\t\t * Receives the component instance as the only argument.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#dropdownshouldopen\n\t\t */\n\t\tdropdownShouldOpen: {\n\t\t\ttype: Function,\n\t\t\tdefault: ({ noDrop, open }) => {\n\t\t\t\treturn noDrop ? false : open\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Callback to determine if the provided option should\n\t\t * match the current search text. Used to determine\n\t\t * if the option should be displayed.\n\t\t *\n\t\t * Defaults to the internal vue-select function documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to filter by the\n\t\t * `displayName` and `subname` properties of the user option object\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#filterby\n\t\t */\n\t\tfilterBy: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Class for the `input`\n\t\t *\n\t\t * Necessary for use in NcActionInput\n\t\t */\n\t\tinputClass: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Input element id\n\t\t */\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: () => `select-input-${GenRandomId()}`,\n\t\t},\n\n\t\t/**\n\t\t * Visible label for the input element\n\t\t *\n\t\t * @todo Set default for @nextcloud/vue 9\n\t\t */\n\t\tinputLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass true if you are using an external label\n\t\t */\n\t\tlabelOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Display a visible border around dropdown options\n\t\t * which have keyboard focus\n\t\t */\n\t\tkeyboardFocusBorder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Key of the displayed label for object options\n\t\t *\n\t\t * Defaults to the internal vue-select string documented at the link\n\t\t * below\n\t\t *\n\t\t * Enabling `userSelect` will automatically set this to `'displayName'`\n\t\t * unless this prop is set explicitly\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#label\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Show the loading icon\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#loading\n\t\t */\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Allow selection of multiple options\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#multiple\n\t\t */\n\t\tmultiple: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Disable automatic wrapping when selected options overflow the width\n\t\t */\n\t\tnoWrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Array of options\n\t\t *\n\t\t * @type {Array<string | number | Record<string | number, any>>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#options\n\t\t */\n\t\toptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/**\n\t\t * Placeholder text\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#placeholder\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 * Customized component's response to keydown events while the search input has focus\n\t\t *\n\t\t * @see https://vue-select.org/guide/keydown.html#mapkeydown\n\t\t */\n\t\tmapKeydown: {\n\t\t\ttype: Function,\n\t\t\t/**\n\t\t\t * Patched Vue-Select keydown events handlers map to stop Escape propagation in open select\n\t\t\t *\n\t\t\t * @param {Record<number, Function>} map - Mapped keyCode to handlers { <keyCode>:<callback> }\n\t\t\t * @param {import('@nextcloud/vue-select').VueSelect} vm - VueSelect instance\n\t\t\t * @return {Record<number, Function>} patched keydown event handlers\n\t\t\t */\n\t\t\tdefault(map, vm) {\n\t\t\t\treturn {\n\t\t\t\t\t...map,\n\t\t\t\t\t/**\n\t\t\t\t\t * Patched Escape handler to stop propagation from open select\n\t\t\t\t\t *\n\t\t\t\t\t * @param {KeyboardEvent} event - default keydown event handler\n\t\t\t\t\t */\n\t\t\t\t\t27: (event) => {\n\t\t\t\t\t\tif (vm.open) {\n\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Default VueSelect's handler\n\t\t\t\t\t\tmap[27](event)\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * A unique identifier used to generate IDs and DOM attributes. Must be unique for every instance of the component.\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#uid\n\t\t */\n\t\tuid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(),\n\t\t},\n\n\t\t/**\n\t\t * When `appendToBody` is true, this sets the placement of the dropdown\n\t\t *\n\t\t * @type {'bottom' | 'top'}\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * If false, the focused dropdown option will not be reset when filtered\n\t\t * options change\n\t\t */\n\t\tresetFocusOnOptionsChange: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable the user selector with avatars\n\t\t *\n\t\t * Objects must contain the data expected by the\n\t\t * [NcListItemIcon](#/Components/NcListItemIcon) and\n\t\t * [NcAvatar](#/Components/NcAvatar) components\n\t\t */\n\t\tuserSelect: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Currently selected value\n\t\t *\n\t\t * The `v-model` directive may be used for two-way data binding\n\t\t *\n\t\t * @type {string | number | Record<string | number, any> | Array<any>}\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html#value\n\t\t */\n\t\tmodelValue: {\n\t\t\ttype: [String, Number, Object, Array],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable if a value is required for native form validation\n\t\t */\n\t\trequired: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Any available prop\n\t\t *\n\t\t * @see https://vue-select.org/api/props.html\n\t\t */\n\t\t// Not an actual prop but needed to show in vue-styleguidist docs\n\t\t// eslint-disable-next-line\n\t\t' ': {},\n\t},\n\n\temits: [\n\t\t/**\n\t\t * All events from https://vue-select.org/api/events.html\n\t\t */\n\t\t// Not an actual event but needed to show in vue-styleguidist docs\n\t\t' ',\n\t\t'update:modelValue',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsearch: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputRequired() {\n\t\t\tif (!this.required) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// The <input> itself does not have any value so we set the `required` attribute conditionally\n\t\t\treturn this.value === null || (Array.isArray(this.value) && this.value.length === 0)\n\t\t},\n\n\t\tlocalCalculatePosition() {\n\t\t\tif (this.calculatePosition !== null) {\n\t\t\t\treturn this.calculatePosition\n\t\t\t}\n\n\t\t\treturn (dropdownMenu, component, { width }) => {\n\t\t\t\tdropdownMenu.style.width = width\n\n\t\t\t\tconst addClass = {\n\t\t\t\t\tname: 'addClass',\n\t\t\t\t\tfn(/* middlewareArgs */) {\n\t\t\t\t\t\tdropdownMenu.classList.add('vs__dropdown-menu--floating')\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst togglePlacementClass = {\n\t\t\t\t\tname: 'togglePlacementClass',\n\t\t\t\t\tfn({ placement }) {\n\t\t\t\t\t\tcomponent.$el.classList.toggle(\n\t\t\t\t\t\t\t'select--drop-up',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\tdropdownMenu.classList.toggle(\n\t\t\t\t\t\t\t'vs__dropdown-menu--floating-placement-top',\n\t\t\t\t\t\t\tplacement === 'top',\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn {}\n\t\t\t\t\t},\n\t\t\t\t}\n\n\t\t\t\tconst updatePosition = () => {\n\t\t\t\t\tcomputePosition(component.$refs.toggle, dropdownMenu, {\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tmiddleware: [\n\t\t\t\t\t\t\toffset(-1),\n\t\t\t\t\t\t\taddClass,\n\t\t\t\t\t\t\ttogglePlacementClass,\n\t\t\t\t\t\t\t// Match popperjs default collision prevention behavior by appending the following middleware in order\n\t\t\t\t\t\t\tflip(),\n\t\t\t\t\t\t\tshift({ limiter: limitShift() }),\n\t\t\t\t\t\t],\n\t\t\t\t\t}).then(({ x, y }) => {\n\t\t\t\t\t\tObject.assign(dropdownMenu.style, {\n\t\t\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\t\t\twidth: `${component.$refs.toggle.getBoundingClientRect().width}px`,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst cleanup = autoUpdate(\n\t\t\t\t\tcomponent.$refs.toggle,\n\t\t\t\t\tdropdownMenu,\n\t\t\t\t\tupdatePosition,\n\t\t\t\t)\n\n\t\t\t\treturn cleanup\n\t\t\t}\n\t\t},\n\n\t\tlocalFilterBy() {\n\t\t\t// Match the email notation like \"Jane <j.doe@example.com>\" with the email address as matching group\n\t\t\tconst EMAIL_NOTATION = /[^<]*<([^>]+)/\n\n\t\t\tif (this.filterBy !== null) {\n\t\t\t\treturn this.filterBy\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn (option, label, search) => {\n\t\t\t\t\tconst match = search.match(EMAIL_NOTATION)\n\t\t\t\t\treturn (match && option.subname?.toLocaleLowerCase?.()?.indexOf(match[1].toLocaleLowerCase()) > -1)\n\t\t\t\t\t\t|| (`${label} ${option.subname}`\n\t\t\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t\t\t.indexOf(search.toLocaleLowerCase()) > -1)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn VueSelect.props.filterBy.default\n\t\t},\n\n\t\tlocalLabel() {\n\t\t\tif (this.label !== null) {\n\t\t\t\treturn this.label\n\t\t\t}\n\t\t\tif (this.userSelect) {\n\t\t\t\treturn 'displayName'\n\t\t\t}\n\t\t\treturn VueSelect.props.label.default\n\t\t},\n\n\t\tpropsToForward() {\n\t\t\tconst vueSelectKeys = [\n\t\t\t\t...Object.keys(VueSelect.props),\n\t\t\t\t...VueSelect.mixins.flatMap(mixin => Object.keys(mixin.props ?? {})),\n\t\t\t]\n\t\t\tconst initialPropsToForward = Object.fromEntries(\n\t\t\t\tObject.entries(this.$props)\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\t\t.filter(([key, _value]) => vueSelectKeys.includes(key)),\n\t\t\t)\n\t\t\tconst propsToForward = {\n\t\t\t\t...initialPropsToForward,\n\t\t\t\t// Custom overrides of vue-select props\n\t\t\t\tcalculatePosition: this.localCalculatePosition,\n\t\t\t\tfilterBy: this.localFilterBy,\n\t\t\t\tlabel: this.localLabel,\n\t\t\t}\n\t\t\treturn propsToForward\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox) {\n\t\t\twarn('[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`.')\n\t\t}\n\t\tif (this.inputLabel && this.ariaLabelCombobox) {\n\t\t\twarn('[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.')\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\t/**\n\t * Set custom vue-select CSS variables.\n\t * Needs to be on the body (not :root) for theming to apply (see nextcloud/server#36462)\n\t */\n\n\t/* Search Input */\n\t--vs-search-input-color: var(--color-main-text);\n\t--vs-search-input-bg: var(--color-main-background);\n\t--vs-search-input-placeholder-color: var(--color-text-maxcontrast);\n\n\t/* Font */\n\t--vs-font-size: var(--default-font-size);\n\t--vs-line-height: var(--default-line-height);\n\n\t/* Disabled State */\n\t--vs-state-disabled-bg: var(--color-background-hover);\n\t--vs-state-disabled-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-controls-color: var(--color-text-maxcontrast);\n\t--vs-state-disabled-cursor: not-allowed;\n\t--vs-disabled-bg: var(--color-background-hover);\n\t--vs-disabled-color: var(--color-text-maxcontrast);\n\t--vs-disabled-cursor: not-allowed;\n\n\t/* Borders */\n\t--vs-border-color: var(--color-border-maxcontrast);\n\t--vs-border-width: 2px;\n\t--vs-border-style: solid;\n\t--vs-border-radius: var(--border-radius-large);\n\n\t/* Component Controls: Clear, Open Indicator */\n\t--vs-controls-color: var(--color-main-text);\n\n\t/* Selected */\n\t--vs-selected-bg: var(--color-background-hover);\n\t--vs-selected-color: var(--color-main-text);\n\t--vs-selected-border-color: var(--vs-border-color);\n\t--vs-selected-border-style: var(--vs-border-style);\n\t--vs-selected-border-width: var(--vs-border-width);\n\n\t/* Dropdown */\n\t--vs-dropdown-bg: var(--color-main-background);\n\t--vs-dropdown-color: var(--color-main-text);\n\t--vs-dropdown-z-index: 9999;\n\t--vs-dropdown-box-shadow: 0px 2px 2px 0px var(--color-box-shadow);\n\n\t/* Options */\n\t--vs-dropdown-option-padding: 8px 20px;\n\n\t/* Active State */\n\t--vs-dropdown-option--active-bg: var(--color-background-hover);\n\t--vs-dropdown-option--active-color: var(--color-main-text);\n\n\t/* Keyboard Focus State */\n\t--vs-dropdown-option--kb-focus-box-shadow: inset 0px 0px 0px 2px var(--vs-border-color);\n\n\t/* Deselect State */\n\t--vs-dropdown-option--deselect-bg: var(--color-error);\n\t--vs-dropdown-option--deselect-color: #fff;\n\n\t/* Transitions */\n\t--vs-transition-duration: 0ms;\n\n\t/* Actions */\n\t--vs-actions-padding: 0 8px 0 4px;\n}\n\n.v-select.select {\n\t/* Override default vue-select styles */\n\tmin-height: $clickable-area;\n\tmin-width: 260px;\n\tmargin: 0;\n\n\t.select__label {\n\t\tdisplay: block;\n\t\tmargin-bottom: 2px;\n\t}\n\n\t.vs__selected {\n\t\theight: 32px;\n\t\tpadding: 0 8px 0 12px;\n\t\tborder-radius: 18px !important;\n\t\tbackground: var(--color-primary-element-light);\n\t\tborder: none;\n\t}\n\n\t.vs__search {\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t.vs__search, .vs__search:focus {\n\t\tmargin: 2px 0 0;\n\t}\n\n\t.vs__dropdown-toggle {\n\t\tposition: relative;\n\t\tmax-height: 100px;\n\t\tpadding: 0;\n\t\toverflow-y: auto;\n\t}\n\n\t.vs__actions {\n\t\tposition: sticky;\n\t\ttop: 0;\n\t}\n\n\t.vs__clear {\n\t\tmargin-right: 2px;\n\t}\n\n\t&.vs--open .vs__dropdown-toggle {\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t\tborder-bottom-color: transparent;\n\t}\n\n\t&:not(.vs--disabled, .vs--open) .vs__dropdown-toggle:hover {\n\t\toutline: 2px solid var(--color-main-background);\n\t\tborder-color: var(--color-main-text);\n\t}\n\n\t&.vs--disabled {\n\t\t.vs__search,\n\t\t.vs__selected {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\n\t\t.vs__clear,\n\t\t.vs__deselect {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&--no-wrap {\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t\toverflow: auto;\n\t\t\tmin-width: unset;\n\t\t\t.vs__selected {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&--drop-up {\n\t\t&.vs--open {\n\t\t\t.vs__dropdown-toggle {\n\t\t\t\tborder-radius: 0 0 var(--vs-border-radius) var(--vs-border-radius);\n\t\t\t\tborder-top-color: transparent;\n\t\t\t\tborder-bottom-color: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t.vs__selected-options {\n\t\t// If search is hidden, ensure that the height of the search is the same\n\t\tmin-height: 40px; // 36px search height + 4px search margin\n\n\t\t// Hide search from dom if unused to prevent unneeded flex wrap\n\t\t.vs__selected ~ .vs__search[readonly] {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n\n\t&.vs--single {\n\t\t&.vs--loading,\n\t\t&.vs--open {\n\t\t\t.vs__selected {\n\t\t\t\t// Fix `max-width` for `position: absolute`\n\t\t\t\tmax-width: 100%;\n\t\t\t\t// Fix color to be accessible\n\t\t\t\topacity: 1;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t}\n\t\t}\n\t\t.vs__selected-options {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t\t.vs__selected {\n\t\t\tbackground: unset !important;\n\t\t}\n\t}\n}\n\n.vs__dropdown-menu {\n\tborder-color: var(--color-main-text) !important;\n\toutline: none !important;\n\tbox-shadow:\n\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t0 2px 0 var(--color-main-background), // Bottom\n\t\t2px 0 0 var(--color-main-background), // Left\n\t\t!important;\n\tpadding: 4px !important;\n\n\t&--floating {\n\t\t/* Fallback styles overidden by programmatically set inline styles */\n\t\twidth: max-content;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\n\t\t&-placement-top {\n\t\t\tborder-radius: var(--vs-border-radius) var(--vs-border-radius) 0 0 !important;\n\t\t\tborder-top-style: var(--vs-border-style) !important;\n\t\t\tborder-bottom-style: none !important;\n\t\t\tbox-shadow:\n\t\t\t\t0 -2px 0 var(--color-main-background), // Top\n\t\t\t\t-2px 0 0 var(--color-main-background), // Right\n\t\t\t\t2px 0 0 var(--color-main-background), // Left\n\t\t\t\t!important\n\t\t}\n\t}\n\n\t.vs__dropdown-option {\n\t\tborder-radius: 6px !important;\n\t}\n\n\t.vs__no-options {\n\t\tcolor: var(--color-text-lighter) !important;\n\t}\n}\n\n// Selected users require slightly different padding\n.user-select .vs__selected {\n\tpadding: 0 2px !important;\n}\n</style>\n"],"names":["_openBlock","_createBlock","_mergeProps","_createSlots","_withCtx","_createElementVNode","_toHandlers","_createVNode","_createCommentVNode","_createTextVNode","_toDisplayString","_renderList","_renderSlot","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|