@nextcloud/vue 8.6.1 → 8.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/dist/Components/NcActionButton.cjs +6 -6
- package/dist/Components/NcActionButton.cjs.map +1 -1
- package/dist/Components/NcActionButton.mjs +3 -3
- package/dist/Components/NcActionButton.mjs.map +1 -1
- package/dist/Components/NcActionInput.cjs +1 -1
- package/dist/Components/NcActionInput.mjs +1 -1
- package/dist/Components/NcActions.cjs +1 -1
- package/dist/Components/NcActions.mjs +1 -1
- package/dist/Components/NcAppNavigationCaption.cjs +1 -1
- package/dist/Components/NcAppNavigationCaption.mjs +1 -1
- package/dist/Components/NcAppNavigationItem.cjs +1 -1
- package/dist/Components/NcAppNavigationItem.mjs +1 -1
- package/dist/Components/NcAppNavigationSettings.cjs +1 -1
- package/dist/Components/NcAppNavigationSettings.mjs +1 -1
- package/dist/Components/NcAppSidebar.cjs +1 -1
- package/dist/Components/NcAppSidebar.mjs +1 -1
- package/dist/Components/NcAppSidebarTab.cjs +3 -3
- package/dist/Components/NcAppSidebarTab.cjs.map +1 -1
- package/dist/Components/NcAppSidebarTab.mjs +5 -5
- package/dist/Components/NcAppSidebarTab.mjs.map +1 -1
- package/dist/Components/NcAvatar.cjs +1 -1
- package/dist/Components/NcAvatar.mjs +1 -1
- package/dist/Components/NcBreadcrumb.cjs +1 -1
- package/dist/Components/NcBreadcrumb.mjs +1 -1
- package/dist/Components/NcBreadcrumbs.cjs +1 -1
- package/dist/Components/NcBreadcrumbs.mjs +1 -1
- package/dist/Components/NcDashboardWidget.cjs +1 -1
- package/dist/Components/NcDashboardWidget.mjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.cjs +1 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +1 -1
- package/dist/Components/NcDateTimePicker.cjs +3 -3
- package/dist/Components/NcDateTimePicker.cjs.map +1 -1
- package/dist/Components/NcDateTimePicker.mjs +8 -8
- package/dist/Components/NcDateTimePicker.mjs.map +1 -1
- package/dist/Components/NcDateTimePickerNative.cjs +1 -1
- package/dist/Components/NcDateTimePickerNative.mjs +1 -1
- package/dist/Components/NcHeaderMenu.cjs +1 -1
- package/dist/Components/NcHeaderMenu.mjs +1 -1
- package/dist/Components/NcListItem.cjs +1 -1
- package/dist/Components/NcListItem.mjs +1 -1
- package/dist/Components/NcListItemIcon.cjs +1 -1
- package/dist/Components/NcListItemIcon.mjs +1 -1
- package/dist/Components/NcModal.cjs +7 -7
- package/dist/Components/NcModal.cjs.map +1 -1
- package/dist/Components/NcModal.mjs +7 -7
- package/dist/Components/NcModal.mjs.map +1 -1
- package/dist/Components/NcRichContenteditable.cjs +1 -1
- package/dist/Components/NcRichContenteditable.mjs +2 -2
- package/dist/Components/NcRichText.cjs +11 -11
- package/dist/Components/NcRichText.cjs.map +1 -1
- package/dist/Components/NcRichText.mjs +22 -21
- package/dist/Components/NcRichText.mjs.map +1 -1
- package/dist/Components/NcSelect.cjs +1 -1
- package/dist/Components/NcSelect.mjs +1 -1
- package/dist/Components/NcSelectTags.cjs +1 -1
- package/dist/Components/NcSelectTags.mjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.cjs +1 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +1 -1
- package/dist/Components/NcTimezonePicker.cjs +1 -1
- package/dist/Components/NcTimezonePicker.mjs +1 -1
- package/dist/Components/NcUserBubble.cjs +1 -1
- package/dist/Components/NcUserBubble.mjs +1 -1
- package/dist/Functions/reference.cjs +16 -0
- package/dist/Functions/reference.cjs.map +1 -0
- package/dist/Functions/reference.mjs +17 -0
- package/dist/Functions/reference.mjs.map +1 -0
- package/dist/Functions/registerReference.cjs +71 -0
- package/dist/Functions/registerReference.cjs.map +1 -0
- package/dist/Functions/registerReference.mjs +71 -0
- package/dist/Functions/registerReference.mjs.map +1 -0
- package/dist/Mixins/richEditor.cjs +1 -1
- package/dist/Mixins/richEditor.mjs +1 -1
- package/dist/assets/{NcActionButton-1Z9lN7ar.css → NcActionButton-rOZFVQA8.css} +17 -17
- package/dist/assets/{NcActions-mSL9fcPO.css → NcActions-4Gq5bZLW.css} +12 -12
- package/dist/assets/{NcAppSidebar-iU8Zp4Qk.css → NcAppSidebar-YHd7DpMW.css} +44 -44
- package/dist/assets/{NcAppSidebarTab-Phau6edJ.css → NcAppSidebarTab-FywbKxqo.css} +4 -4
- package/dist/assets/{NcBreadcrumb-M3hqCbqS.css → NcBreadcrumb-HspaFygg.css} +16 -16
- package/dist/assets/{NcDateTimePicker-vivOLt2Q.css → NcDateTimePicker-w8SEtYvQ.css} +17 -17
- package/dist/assets/{NcHeaderMenu-06vdn4tC.css → NcHeaderMenu-Srn5iXdL.css} +14 -15
- package/dist/assets/NcListItem-L8LeGwpe.css +165 -0
- package/dist/assets/{NcMentionBubble-2OXF_uEJ.css → NcMentionBubble-YYl1ib_F.css} +9 -9
- package/dist/assets/{NcModal-UZh031V1.css → NcModal-sIK5sUoC.css} +63 -63
- package/dist/assets/{NcRichContenteditable-j9edXOEH.css → NcRichContenteditable-N1TxeACO.css} +76 -84
- package/dist/assets/NcRichText-kDp48Nji.css +215 -0
- package/dist/assets/referencePickerModal-A0PlFUEI.css +316 -0
- package/dist/chunks/{NcActionInput-jQFZLsoe.mjs → NcActionInput-XHMzOL_h.mjs} +1 -1
- package/dist/chunks/{NcActionInput-jQFZLsoe.mjs.map → NcActionInput-XHMzOL_h.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput--MiyWKmE.cjs → NcActionInput-f1Oq2O71.cjs} +1 -1
- package/dist/chunks/{NcActionInput--MiyWKmE.cjs.map → NcActionInput-f1Oq2O71.cjs.map} +1 -1
- package/dist/chunks/{NcActions-qCVw08zV.mjs → NcActions-5_igU-CH.mjs} +21 -21
- package/dist/chunks/{NcActions-qCVw08zV.mjs.map → NcActions-5_igU-CH.mjs.map} +1 -1
- package/dist/chunks/{NcActions-SlBohqiI.cjs → NcActions-JXnhQhum.cjs} +7 -7
- package/dist/chunks/{NcActions-SlBohqiI.cjs.map → NcActions-JXnhQhum.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-0lGP-5CR.mjs → NcAppNavigationCaption-2rUO5Mns.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-0lGP-5CR.mjs.map → NcAppNavigationCaption-2rUO5Mns.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-nEKQXQYr.cjs → NcAppNavigationCaption-JQWbmgdy.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-nEKQXQYr.cjs.map → NcAppNavigationCaption-JQWbmgdy.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-g_XncGxL.mjs → NcAppNavigationItem-A1yAdDNN.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationItem-g_XncGxL.mjs.map → NcAppNavigationItem-A1yAdDNN.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-AdLvgSbV.cjs → NcAppNavigationItem-Wb8gX-Ln.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationItem-AdLvgSbV.cjs.map → NcAppNavigationItem-Wb8gX-Ln.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-UKQnGAEz.cjs → NcAppNavigationSettings-VLa79G7w.cjs} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-UKQnGAEz.cjs.map → NcAppNavigationSettings-VLa79G7w.cjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-DQHPDc4X.mjs → NcAppNavigationSettings-gwL_FqLN.mjs} +1 -1
- package/dist/chunks/{NcAppNavigationSettings-DQHPDc4X.mjs.map → NcAppNavigationSettings-gwL_FqLN.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-WyDtlgwP.cjs → NcAppSidebar-rRNJnN-k.cjs} +59 -31
- package/dist/chunks/NcAppSidebar-rRNJnN-k.cjs.map +1 -0
- package/dist/chunks/{NcAppSidebar-Wo8-p3nm.mjs → NcAppSidebar-tnHBPGbL.mjs} +138 -109
- package/dist/chunks/NcAppSidebar-tnHBPGbL.mjs.map +1 -0
- package/dist/chunks/{NcAvatar-c9ryo-7h.mjs → NcAvatar-xT3kz6mU.mjs} +2 -2
- package/dist/chunks/{NcAvatar-c9ryo-7h.mjs.map → NcAvatar-xT3kz6mU.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-khVnYpF2.cjs → NcAvatar-zTS9P1lK.cjs} +2 -2
- package/dist/chunks/{NcAvatar-khVnYpF2.cjs.map → NcAvatar-zTS9P1lK.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumb-SEyo99to.cjs → NcBreadcrumb-DEWk7wO9.cjs} +27 -20
- package/dist/chunks/NcBreadcrumb-DEWk7wO9.cjs.map +1 -0
- package/dist/chunks/{NcBreadcrumb-Ac0G-oky.mjs → NcBreadcrumb-w1UX2NR-.mjs} +14 -7
- package/dist/chunks/NcBreadcrumb-w1UX2NR-.mjs.map +1 -0
- package/dist/chunks/{NcBreadcrumbs-DXpOwLNx.cjs → NcBreadcrumbs-VuaG3ex5.cjs} +1 -1
- package/dist/chunks/{NcBreadcrumbs-DXpOwLNx.cjs.map → NcBreadcrumbs-VuaG3ex5.cjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-YOANgGCY.mjs → NcBreadcrumbs-tRR9CjKD.mjs} +2 -2
- package/dist/chunks/{NcBreadcrumbs-YOANgGCY.mjs.map → NcBreadcrumbs-tRR9CjKD.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-zBrcpL_E.cjs → NcDashboardWidget-QciRRvL4.cjs} +1 -1
- package/dist/chunks/{NcDashboardWidget-zBrcpL_E.cjs.map → NcDashboardWidget-QciRRvL4.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-bEnoXtKm.mjs → NcDashboardWidget-ogqyHahY.mjs} +2 -2
- package/dist/chunks/{NcDashboardWidget-bEnoXtKm.mjs.map → NcDashboardWidget-ogqyHahY.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-LcxIx2-S.cjs → NcDashboardWidgetItem-mIPkPR7r.cjs} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-LcxIx2-S.cjs.map → NcDashboardWidgetItem-mIPkPR7r.cjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-p7yyFX-b.mjs → NcDashboardWidgetItem-wuUHTeLl.mjs} +2 -2
- package/dist/chunks/{NcDashboardWidgetItem-p7yyFX-b.mjs.map → NcDashboardWidgetItem-wuUHTeLl.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-BSi8E43v.cjs → NcHeaderMenu-0d6eqre6.cjs} +6 -6
- package/dist/chunks/{NcHeaderMenu-Vytc8Eqg.mjs.map → NcHeaderMenu-0d6eqre6.cjs.map} +1 -1
- package/dist/chunks/{NcHeaderMenu-Vytc8Eqg.mjs → NcHeaderMenu-91qMsRIw.mjs} +3 -3
- package/dist/chunks/{NcHeaderMenu-BSi8E43v.cjs.map → NcHeaderMenu-91qMsRIw.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-lqYZQhuZ.cjs → NcListItem--_PCqetA.cjs} +30 -47
- package/dist/chunks/NcListItem--_PCqetA.cjs.map +1 -0
- package/dist/chunks/{NcListItem-90hXqC4C.mjs → NcListItem-AMcc69jK.mjs} +33 -50
- package/dist/chunks/NcListItem-AMcc69jK.mjs.map +1 -0
- package/dist/chunks/{NcListItemIcon-ccke4gpg.cjs → NcListItemIcon-BnoIbVbD.cjs} +2 -2
- package/dist/chunks/{NcListItemIcon-ccke4gpg.cjs.map → NcListItemIcon-BnoIbVbD.cjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-hTbMo3-O.mjs → NcListItemIcon-rqgXledP.mjs} +2 -2
- package/dist/chunks/{NcListItemIcon-hTbMo3-O.mjs.map → NcListItemIcon-rqgXledP.mjs.map} +1 -1
- package/dist/chunks/NcRichContenteditable-eG8Fyo-M.mjs +638 -0
- package/dist/chunks/NcRichContenteditable-eG8Fyo-M.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-WxSgSNot.cjs → NcRichContenteditable-jReu2l-M.cjs} +235 -111
- package/dist/chunks/NcRichContenteditable-jReu2l-M.cjs.map +1 -0
- package/dist/chunks/NcRichText-Yo5pFnd0.cjs +310 -0
- package/dist/chunks/NcRichText-Yo5pFnd0.cjs.map +1 -0
- package/dist/chunks/NcRichText-qID66jAy.mjs +325 -0
- package/dist/chunks/NcRichText-qID66jAy.mjs.map +1 -0
- package/dist/chunks/{NcSelect-rMSul72R.cjs → NcSelect-U9LJcdIo.cjs} +55 -45
- package/dist/chunks/NcSelect-U9LJcdIo.cjs.map +1 -0
- package/dist/chunks/{NcSelect-vSPKKiyt.mjs → NcSelect-b2H-YQsK.mjs} +40 -30
- package/dist/chunks/NcSelect-b2H-YQsK.mjs.map +1 -0
- package/dist/chunks/{NcSelectTags-MwCs_QbM.mjs → NcSelectTags-MlILya2b.mjs} +1 -1
- package/dist/chunks/{NcSelectTags-MwCs_QbM.mjs.map → NcSelectTags-MlILya2b.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-beMN3ZsT.cjs → NcSelectTags-rO88Pk-1.cjs} +1 -1
- package/dist/chunks/{NcSelectTags-beMN3ZsT.cjs.map → NcSelectTags-rO88Pk-1.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-msn3aYsn.cjs → NcSettingsSelectGroup-rfeDPLCg.cjs} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-msn3aYsn.cjs.map → NcSettingsSelectGroup-rfeDPLCg.cjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-HkS2QpZS.mjs → NcSettingsSelectGroup-xhnDBg8a.mjs} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-HkS2QpZS.mjs.map → NcSettingsSelectGroup-xhnDBg8a.mjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-Cp479kFL.cjs → NcTimezonePicker-KG0dvgUv.cjs} +1 -1
- package/dist/chunks/{NcTimezonePicker-Cp479kFL.cjs.map → NcTimezonePicker-KG0dvgUv.cjs.map} +1 -1
- package/dist/chunks/{NcTimezonePicker-I6wF2jeF.mjs → NcTimezonePicker-jJeiI-Ff.mjs} +1 -1
- package/dist/chunks/{NcTimezonePicker-I6wF2jeF.mjs.map → NcTimezonePicker-jJeiI-Ff.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-6AbwSr2B.cjs → NcUserBubble-027_C0cM.cjs} +1 -1
- package/dist/chunks/{NcUserBubble-6AbwSr2B.cjs.map → NcUserBubble-027_C0cM.cjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-imSUw-aP.mjs → NcUserBubble-9StjszDh.mjs} +1 -1
- package/dist/chunks/{NcUserBubble-imSUw-aP.mjs.map → NcUserBubble-9StjszDh.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-CjAOgGnx.mjs → ScopeComponent-9fOoDGYa.mjs} +1 -1
- package/dist/chunks/{ScopeComponent-CjAOgGnx.mjs.map → ScopeComponent-9fOoDGYa.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-V9SPec9g.cjs → ScopeComponent-R0tAsT2f.cjs} +1 -1
- package/dist/chunks/{ScopeComponent-V9SPec9g.cjs.map → ScopeComponent-R0tAsT2f.cjs.map} +1 -1
- package/dist/chunks/{index-U21dQVa7.cjs → index-5TyVc_TT.cjs} +29 -16
- package/dist/chunks/index-5TyVc_TT.cjs.map +1 -0
- package/dist/chunks/{index-n2q3iT69.mjs → index-xnq0-IMW.mjs} +26 -13
- package/dist/chunks/index-xnq0-IMW.mjs.map +1 -0
- package/dist/chunks/referencePickerModal-cPBjsn4r.cjs +2393 -0
- package/dist/chunks/referencePickerModal-cPBjsn4r.cjs.map +1 -0
- package/dist/chunks/referencePickerModal-gDBkGfNV.mjs +2414 -0
- package/dist/chunks/referencePickerModal-gDBkGfNV.mjs.map +1 -0
- package/dist/index.cjs +189 -170
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +184 -165
- package/dist/index.mjs.map +1 -1
- package/dist/vendor.LICENSE.txt +4 -0
- package/package.json +4 -4
- package/dist/assets/NcListItem-6sL-frKJ.css +0 -165
- package/dist/assets/referencePickerModal-iy5QSWj6.css +0 -509
- package/dist/chunks/NcAppSidebar-Wo8-p3nm.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-WyDtlgwP.cjs.map +0 -1
- package/dist/chunks/NcBreadcrumb-Ac0G-oky.mjs.map +0 -1
- package/dist/chunks/NcBreadcrumb-SEyo99to.cjs.map +0 -1
- package/dist/chunks/NcListItem-90hXqC4C.mjs.map +0 -1
- package/dist/chunks/NcListItem-lqYZQhuZ.cjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-WxSgSNot.cjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-gQh2HFSV.mjs +0 -515
- package/dist/chunks/NcRichContenteditable-gQh2HFSV.mjs.map +0 -1
- package/dist/chunks/NcRichText-RSAcESV2.mjs +0 -353
- package/dist/chunks/NcRichText-RSAcESV2.mjs.map +0 -1
- package/dist/chunks/NcRichText-fHn-j5sa.cjs +0 -337
- package/dist/chunks/NcRichText-fHn-j5sa.cjs.map +0 -1
- package/dist/chunks/NcSelect-rMSul72R.cjs.map +0 -1
- package/dist/chunks/NcSelect-vSPKKiyt.mjs.map +0 -1
- package/dist/chunks/index-U21dQVa7.cjs.map +0 -1
- package/dist/chunks/index-n2q3iT69.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-FeA-PRqB.mjs +0 -897
- package/dist/chunks/referencePickerModal-FeA-PRqB.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-GXRJ351Q.cjs +0 -880
- package/dist/chunks/referencePickerModal-GXRJ351Q.cjs.map +0 -1
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import '../assets/NcRichText-kDp48Nji.css';
|
|
2
|
+
import { N as g, U as p, p as k, r as _, i as v, L as b } from "./referencePickerModal-gDBkGfNV.mjs";
|
|
3
|
+
import f from "@nextcloud/axios";
|
|
4
|
+
import { generateOcsUrl as h } from "@nextcloud/router";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { n as x } from "./_plugin-vue2_normalizer-u6G_3nkj.mjs";
|
|
7
|
+
import { N as y } from "./NcCheckboxRadioSwitch-PlgK1zWr.mjs";
|
|
8
|
+
import { visit as w } from "unist-util-visit";
|
|
9
|
+
import { u as m } from "unist-builder";
|
|
10
|
+
import { G as R } from "./GenRandomId-VodkdWbp.mjs";
|
|
11
|
+
import { unified as N } from "unified";
|
|
12
|
+
import M from "remark-parse";
|
|
13
|
+
import $ from "remark-gfm";
|
|
14
|
+
import E from "remark-breaks";
|
|
15
|
+
import L from "remark-rehype";
|
|
16
|
+
import j from "rehype-react";
|
|
17
|
+
import O from "rehype-external-links";
|
|
18
|
+
const C = {
|
|
19
|
+
name: "NcReferenceList",
|
|
20
|
+
components: {
|
|
21
|
+
NcReferenceWidget: g
|
|
22
|
+
},
|
|
23
|
+
props: {
|
|
24
|
+
text: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: ""
|
|
27
|
+
},
|
|
28
|
+
referenceData: {
|
|
29
|
+
type: Object,
|
|
30
|
+
default: null
|
|
31
|
+
},
|
|
32
|
+
limit: {
|
|
33
|
+
type: Number,
|
|
34
|
+
default: 1
|
|
35
|
+
},
|
|
36
|
+
displayFallback: {
|
|
37
|
+
type: Boolean,
|
|
38
|
+
default: !1
|
|
39
|
+
},
|
|
40
|
+
interactive: {
|
|
41
|
+
type: Boolean,
|
|
42
|
+
default: !1
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
data() {
|
|
46
|
+
return {
|
|
47
|
+
references: null,
|
|
48
|
+
loading: !0
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
computed: {
|
|
52
|
+
isVisible() {
|
|
53
|
+
return this.loading || this.displayedReferences.length !== 0;
|
|
54
|
+
},
|
|
55
|
+
values() {
|
|
56
|
+
return this.referenceData ? this.referenceData : this.displayFallback && !this.loading && !this.references ? [this.fallbackReference] : this.references ? Object.values(this.references) : [];
|
|
57
|
+
},
|
|
58
|
+
firstReference() {
|
|
59
|
+
return this.values[0] ?? null;
|
|
60
|
+
},
|
|
61
|
+
displayedReferences() {
|
|
62
|
+
return this.values.slice(0, this.limit).map((e) => ({
|
|
63
|
+
...e,
|
|
64
|
+
interactive: this.interactive
|
|
65
|
+
}));
|
|
66
|
+
},
|
|
67
|
+
fallbackReference() {
|
|
68
|
+
return {
|
|
69
|
+
accessible: !0,
|
|
70
|
+
openGraphObject: {
|
|
71
|
+
id: this.text,
|
|
72
|
+
link: this.text,
|
|
73
|
+
name: this.text
|
|
74
|
+
},
|
|
75
|
+
richObjectType: "open-graph"
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
watch: {
|
|
80
|
+
text: "fetch"
|
|
81
|
+
},
|
|
82
|
+
mounted() {
|
|
83
|
+
this.fetch();
|
|
84
|
+
},
|
|
85
|
+
methods: {
|
|
86
|
+
fetch() {
|
|
87
|
+
if (this.loading = !0, this.referenceData) {
|
|
88
|
+
this.loading = !1;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!new RegExp(p).exec(this.text)) {
|
|
92
|
+
this.loading = !1;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.resolve().then((e) => {
|
|
96
|
+
this.references = e.data.ocs.data.references, this.loading = !1, this.$emit("loaded");
|
|
97
|
+
}).catch((e) => {
|
|
98
|
+
console.error("Failed to extract references", e), this.loading = !1, this.$emit("loaded");
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
resolve() {
|
|
102
|
+
const e = new RegExp(p).exec(this.text.trim());
|
|
103
|
+
return this.limit === 1 && e ? f.get(h("references/resolve", 2) + `?reference=${encodeURIComponent(e[0])}`) : f.post(h("references/extract", 2), {
|
|
104
|
+
text: this.text,
|
|
105
|
+
resolve: !0,
|
|
106
|
+
limit: this.limit
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
var A = function() {
|
|
112
|
+
var i = this, r = i._self._c;
|
|
113
|
+
return i.isVisible ? r("div", { staticClass: "widgets--list", class: { "icon-loading": i.loading } }, i._l(i.displayedReferences, function(t) {
|
|
114
|
+
return r("div", { key: t?.openGraphObject?.id }, [r("NcReferenceWidget", { attrs: { reference: t } })], 1);
|
|
115
|
+
}), 0) : i._e();
|
|
116
|
+
}, B = [], D = /* @__PURE__ */ x(
|
|
117
|
+
C,
|
|
118
|
+
A,
|
|
119
|
+
B,
|
|
120
|
+
!1,
|
|
121
|
+
null,
|
|
122
|
+
"ad47d8e3",
|
|
123
|
+
null,
|
|
124
|
+
null
|
|
125
|
+
);
|
|
126
|
+
const u = D.exports, T = function() {
|
|
127
|
+
return function(e) {
|
|
128
|
+
w(e, (r) => r.type === "text", i);
|
|
129
|
+
function i(r, t, s) {
|
|
130
|
+
const a = r.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((n, l, o) => {
|
|
131
|
+
const c = n.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
132
|
+
if (!c)
|
|
133
|
+
return m("text", n);
|
|
134
|
+
const [, d] = c;
|
|
135
|
+
return m("element", {
|
|
136
|
+
tagName: `#${d}`
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
s.children.splice(t, 1, ...a);
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}, z = ({ h: e, context: i }, r) => (i.autolink && (r = k(r)), Array.isArray(r) ? r.map((t) => {
|
|
143
|
+
if (typeof t == "string")
|
|
144
|
+
return t;
|
|
145
|
+
const { component: s, props: a } = t, n = s.name === "NcLink" ? void 0 : "rich-text--component";
|
|
146
|
+
return e(s, {
|
|
147
|
+
props: a,
|
|
148
|
+
class: n
|
|
149
|
+
});
|
|
150
|
+
}) : r), F = {
|
|
151
|
+
name: "NcRichText",
|
|
152
|
+
components: {
|
|
153
|
+
NcReferenceList: u
|
|
154
|
+
},
|
|
155
|
+
props: {
|
|
156
|
+
text: {
|
|
157
|
+
type: String,
|
|
158
|
+
default: ""
|
|
159
|
+
},
|
|
160
|
+
arguments: {
|
|
161
|
+
type: Object,
|
|
162
|
+
default: () => ({})
|
|
163
|
+
},
|
|
164
|
+
referenceLimit: {
|
|
165
|
+
type: Number,
|
|
166
|
+
default: 0
|
|
167
|
+
},
|
|
168
|
+
/** Provide data upfront to avoid extra http request */
|
|
169
|
+
references: {
|
|
170
|
+
type: Object,
|
|
171
|
+
default: null
|
|
172
|
+
},
|
|
173
|
+
markdownCssClasses: {
|
|
174
|
+
type: Object,
|
|
175
|
+
default: () => ({
|
|
176
|
+
a: "rich-text--external-link",
|
|
177
|
+
ol: "rich-text--ordered-list",
|
|
178
|
+
ul: "rich-text--un-ordered-list",
|
|
179
|
+
li: "rich-text--list-item",
|
|
180
|
+
strong: "rich-text--strong",
|
|
181
|
+
em: "rich-text--italic",
|
|
182
|
+
h1: "rich-text--heading rich-text--heading-1",
|
|
183
|
+
h2: "rich-text--heading rich-text--heading-2",
|
|
184
|
+
h3: "rich-text--heading rich-text--heading-3",
|
|
185
|
+
h4: "rich-text--heading rich-text--heading-4",
|
|
186
|
+
h5: "rich-text--heading rich-text--heading-5",
|
|
187
|
+
h6: "rich-text--heading rich-text--heading-6",
|
|
188
|
+
hr: "rich-text--hr",
|
|
189
|
+
table: "rich-text--table",
|
|
190
|
+
pre: "rich-text--pre",
|
|
191
|
+
code: "rich-text--code",
|
|
192
|
+
blockquote: "rich-text--blockquote"
|
|
193
|
+
})
|
|
194
|
+
},
|
|
195
|
+
useMarkdown: {
|
|
196
|
+
type: Boolean,
|
|
197
|
+
default: !1
|
|
198
|
+
},
|
|
199
|
+
/** Provide GitHub Flavored Markdown syntax */
|
|
200
|
+
useExtendedMarkdown: {
|
|
201
|
+
type: Boolean,
|
|
202
|
+
default: !1
|
|
203
|
+
},
|
|
204
|
+
/** Provide event from rendered markdown inputs */
|
|
205
|
+
interactive: {
|
|
206
|
+
type: Boolean,
|
|
207
|
+
default: !1
|
|
208
|
+
},
|
|
209
|
+
autolink: {
|
|
210
|
+
type: Boolean,
|
|
211
|
+
default: !0
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
emits: ["interact:todo"],
|
|
215
|
+
methods: {
|
|
216
|
+
renderPlaintext(e) {
|
|
217
|
+
const i = this, r = this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(function(t, s, a) {
|
|
218
|
+
const n = t.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
219
|
+
if (!n)
|
|
220
|
+
return z({ h: e, context: i }, t);
|
|
221
|
+
const l = n[1], o = i.arguments[l];
|
|
222
|
+
if (typeof o == "object") {
|
|
223
|
+
const { component: c, props: d } = o;
|
|
224
|
+
return e(c, {
|
|
225
|
+
props: d,
|
|
226
|
+
class: "rich-text--component"
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return o ? e("span", { class: "rich-text--fallback" }, o) : t;
|
|
230
|
+
});
|
|
231
|
+
return e("div", { class: "rich-text--wrapper" }, [
|
|
232
|
+
e("div", {}, r.flat()),
|
|
233
|
+
this.referenceLimit > 0 ? e("div", { class: "rich-text--reference-widget" }, [
|
|
234
|
+
e(u, { props: { text: this.text, referenceData: this.references } })
|
|
235
|
+
]) : null
|
|
236
|
+
]);
|
|
237
|
+
},
|
|
238
|
+
renderMarkdown(e) {
|
|
239
|
+
const i = N().use(M).use(_, {
|
|
240
|
+
autolink: this.autolink,
|
|
241
|
+
useMarkdown: this.useMarkdown,
|
|
242
|
+
useExtendedMarkdown: this.useExtendedMarkdown
|
|
243
|
+
}).use(this.useExtendedMarkdown ? $ : void 0).use(E).use(L, {
|
|
244
|
+
handlers: {
|
|
245
|
+
component(r, t) {
|
|
246
|
+
return r(t, t.component, { value: t.value });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}).use(T).use(O, {
|
|
250
|
+
target: "_blank",
|
|
251
|
+
rel: ["noopener noreferrer"]
|
|
252
|
+
}).use(j, {
|
|
253
|
+
createElement: (r, t, s) => {
|
|
254
|
+
if (s = s?.map(
|
|
255
|
+
(n) => typeof n == "string" ? n.replace(/</gmi, "<") : n
|
|
256
|
+
), !r.startsWith("#")) {
|
|
257
|
+
if (this.useExtendedMarkdown && r === "li" && Array.isArray(s) && s[0].tag === "input" && s[0].data.attrs.type === "checkbox") {
|
|
258
|
+
const [n, , l] = s, o = "markdown-input-" + R(5), c = e(y, {
|
|
259
|
+
attrs: {
|
|
260
|
+
...n.data.attrs,
|
|
261
|
+
id: o,
|
|
262
|
+
disabled: !this.interactive
|
|
263
|
+
},
|
|
264
|
+
on: {
|
|
265
|
+
"update:checked": (d) => {
|
|
266
|
+
this.$emit("interact:todo", { id: o, label: l, value: d });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}, [l]);
|
|
270
|
+
return e(r, t, [c]);
|
|
271
|
+
}
|
|
272
|
+
if (r === "a") {
|
|
273
|
+
const n = v(this.$router, t.attrs.href);
|
|
274
|
+
if (n)
|
|
275
|
+
return delete t.attrs.href, delete t.attrs.target, e(b, {
|
|
276
|
+
...t,
|
|
277
|
+
props: {
|
|
278
|
+
to: n
|
|
279
|
+
}
|
|
280
|
+
}, s);
|
|
281
|
+
}
|
|
282
|
+
return e(r, t, s);
|
|
283
|
+
}
|
|
284
|
+
const a = this.arguments[r.slice(1)];
|
|
285
|
+
return a ? a.component ? e(
|
|
286
|
+
a.component,
|
|
287
|
+
{
|
|
288
|
+
attrs: t,
|
|
289
|
+
props: a.props,
|
|
290
|
+
class: "rich-text--component"
|
|
291
|
+
},
|
|
292
|
+
s
|
|
293
|
+
) : e("span", t, [a]) : e("span", { attrs: t, class: "rich-text--fallback" }, [`{${r.slice(1)}}`]);
|
|
294
|
+
},
|
|
295
|
+
prefix: !1
|
|
296
|
+
}).processSync(
|
|
297
|
+
this.text.replace(/</gmi, "<").replace(/>/gmi, ">")
|
|
298
|
+
).result;
|
|
299
|
+
return e("div", { class: "rich-text--wrapper rich-text--wrapper-markdown" }, [
|
|
300
|
+
i,
|
|
301
|
+
this.referenceLimit > 0 ? e("div", { class: "rich-text--reference-widget" }, [
|
|
302
|
+
e(u, { props: { text: this.text, referenceData: this.references } })
|
|
303
|
+
]) : null
|
|
304
|
+
]);
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
render(e) {
|
|
308
|
+
return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown(e) : this.renderPlaintext(e);
|
|
309
|
+
}
|
|
310
|
+
}, G = null, P = null;
|
|
311
|
+
var U = /* @__PURE__ */ x(
|
|
312
|
+
F,
|
|
313
|
+
G,
|
|
314
|
+
P,
|
|
315
|
+
!1,
|
|
316
|
+
null,
|
|
317
|
+
"0f33c076",
|
|
318
|
+
null,
|
|
319
|
+
null
|
|
320
|
+
);
|
|
321
|
+
const ie = U.exports;
|
|
322
|
+
export {
|
|
323
|
+
ie as N,
|
|
324
|
+
u as a
|
|
325
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcRichText-qID66jAy.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\" />\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: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\treferences: null,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn this.loading || this.displayedReferences.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).map(reference => {\n\t\t\t\treturn {\n\t\t\t\t\t...reference,\n\t\t\t\t\tinteractive: this.interactive,\n\t\t\t\t}\n\t\t\t})\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.widgets--list.icon-loading {\n\tmin-height: 44px;\n}\n</style>\n","import { parseUrl } from './autolink.js'\n\nimport { visit } from 'unist-util-visit'\nimport { u } from 'unist-builder'\n\nexport const remarkPlaceholder = function() {\n\treturn function(ast) {\n\t\tvisit(ast, (node) => node.type === 'text', visitor)\n\n\t\t/**\n\t\t *\n\t\t * @param {object} node The node\n\t\t * @param {number} index The index of the node\n\t\t * @param {object} parent The parent node\n\t\t */\n\t\tfunction visitor(node, index, parent) {\n\t\t\tconst placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig)\n\t\t\t\t.map((entry, index, list) => {\n\t\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\treturn u('text', entry)\n\t\t\t\t\t}\n\t\t\t\t\tconst [, component] = matches\n\t\t\t\t\treturn u('element', {\n\t\t\t\t\t\ttagName: `#${component}`,\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\tparent.children.splice(index, 1, ...placeholders)\n\t\t}\n\t}\n}\n\nexport const prepareTextNode = ({ h, context }, text) => {\n\tif (context.autolink) {\n\t\ttext = parseUrl(text)\n\t}\n\tif (Array.isArray(text)) {\n\t\treturn text.map((entry) => {\n\t\t\tif (typeof entry === 'string') {\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\tconst { component, props } = entry\n\t\t\t// do not override class of NcLink\n\t\t\tconst componentClass = component.name === 'NcLink' ? undefined : 'rich-text--component'\n\t\t\treturn h(component, {\n\t\t\t\tprops,\n\t\t\t\tclass: componentClass,\n\t\t\t})\n\t\t})\n\t}\n\treturn text\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Guido Krömer <mail@cacodaemon.de>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n### General description\n\nThis component displays rich text with optional autolink or [Markdown support](https://www.markdownguide.org/basic-syntax/).\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText\n\t\t\t:class=\"{'plain-text': !useMarkdown }\"\n\t\t\t:text=\"text\" :autolink=\"autolink\" :arguments=\"args\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: `## Hello everyone 🎉\nThe file {file} was added by {username}. Visit https://nextcloud.com to check it!\n\nSome examples for markdown syntax:\n1. **bold text**\n2. _italic text_\n3. example of \\`inline code\\`\n\n> blockquote example\n`,\n\t\t\tautolink: true,\n\t\t\tuseMarkdown: true,\n\t\t\targs: {\n\t\t\t\tfile: 'MyDocument.odt',\n\t\t\t\tusername: {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Jane Doe'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n\n.plain-text {\n\twhite-space: pre-line;\n}\n</style>\n```\n\n### 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(event) {\n\t\t\t\tconst uncheckedItem = '- [ ] ' + event.label + '\\n'\n\t\t\t\tconst checkedItem = '- [x] ' + event.label + '\\n'\n\n\t\t\t\tthis.text = event.value\n\t\t\t\t\t? this.text.replace(uncheckedItem, checkedItem)\n\t\t\t\t\t: this.text.replace(checkedItem, uncheckedItem)\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 :value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning user @Test01 or inserting emoji :smile\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:autolink=\"autolink\"\n\t\t\t:arguments=\"userMentions\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tmessage: '',\n\t\t\t\tautolink: true,\n\t\t\t\tuseMarkdown: true,\n\t\t\t\tuserData: {\n\t\t\t\t\tTest01: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test01',\n\t\t\t\t\t\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.js'\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 { 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\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\tmethods: {\n\t\trenderPlaintext(h) {\n\t\t\tconst context = this\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(entry, index, list) {\n\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t// just return plain string nodes as text\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn prepareTextNode({ h, context }, entry)\n\t\t\t\t}\n\t\t\t\t// return component instance if argument is an object\n\t\t\t\tconst argumentId = matches[1]\n\t\t\t\tconst argument = context.arguments[argumentId]\n\t\t\t\tif (typeof argument === 'object') {\n\t\t\t\t\tconst { component, props } = argument\n\t\t\t\t\treturn h(component, {\n\t\t\t\t\t\tprops,\n\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (argument) {\n\t\t\t\t\treturn h('span', { class: 'rich-text--fallback' }, argument)\n\t\t\t\t}\n\t\t\t\treturn entry\n\t\t\t})\n\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\th('div', {}, placeholders.flat()),\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown(h) {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(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\tcreateElement: (tag, attrs, children) => {\n\t\t\t\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\t\t\t\tchildren = children?.map(child => typeof child === 'string'\n\t\t\t\t\t\t\t? child.replace(/</gmi, '<')\n\t\t\t\t\t\t\t: child,\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tif (!tag.startsWith('#')) {\n\t\t\t\t\t\t\tif (this.useExtendedMarkdown) {\n\t\t\t\t\t\t\t\tif (tag === 'li' && Array.isArray(children)\n\t\t\t\t\t\t\t\t\t&& children[0].tag === 'input'\n\t\t\t\t\t\t\t\t\t&& children[0].data.attrs.type === 'checkbox') {\n\t\t\t\t\t\t\t\t\tconst [inputNode, , label] = children\n\t\t\t\t\t\t\t\t\tconst id = 'markdown-input-' + GenRandomId(5)\n\t\t\t\t\t\t\t\t\tconst inputComponent = h(NcCheckboxRadioSwitch, {\n\t\t\t\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\t\t\t\t...inputNode.data.attrs,\n\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: !this.interactive,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\t\t\t'update:checked': (value) => {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.$emit('interact:todo', { id, label, value })\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}, [label])\n\t\t\t\t\t\t\t\t\treturn h(tag, attrs, [inputComponent])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (tag === 'a') {\n\t\t\t\t\t\t\t\tconst route = getRoute(this.$router, attrs.attrs.href)\n\t\t\t\t\t\t\t\tif (route) {\n\t\t\t\t\t\t\t\t\tdelete attrs.attrs.href\n\t\t\t\t\t\t\t\t\tdelete attrs.attrs.target\n\n\t\t\t\t\t\t\t\t\treturn h(RouterLink, {\n\t\t\t\t\t\t\t\t\t\t...attrs,\n\t\t\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\t\t\tto: route,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn h(tag, attrs, children)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst placeholder = this.arguments[tag.slice(1)]\n\t\t\t\t\t\tif (!placeholder) {\n\t\t\t\t\t\t\treturn h('span', { ...{ attrs }, ...{ class: 'rich-text--fallback' } }, [`{${tag.slice(1)}}`])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!placeholder.component) {\n\t\t\t\t\t\t\treturn h('span', attrs, [placeholder])\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn h(\n\t\t\t\t\t\t\tplaceholder.component,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\tprops: placeholder.props,\n\t\t\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tprefix: false,\n\t\t\t\t})\n\t\t\t\t.processSync(this.text\n\t\t\t\t\t// escape special symbol \"<\" to not treat text as HTML\n\t\t\t\t\t.replace(/</gmi, '<')\n\t\t\t\t\t// unescape special symbol \">\" to parse blockquotes\n\t\t\t\t\t.replace(/>/gmi, '>'),\n\t\t\t\t)\n\t\t\t\t.result\n\n\t\t\treturn h('div', { class: 'rich-text--wrapper rich-text--wrapper-markdown' }, [\n\t\t\t\trenderedMarkdown,\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, { props: { text: this.text, referenceData: this.references } }),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t},\n\trender(h) {\n\t\treturn this.useMarkdown || this.useExtendedMarkdown\n\t\t\t? this.renderMarkdown(h)\n\t\t\t: this.renderPlaintext(h)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n/* stylelint-disable-next-line scss/at-import-partial-extension */\n@import './richtext.scss';\n\na:not(.rich-text--component) {\n\ttext-decoration: underline;\n}\n</style>\n"],"names":["_sfc_main","NcReferenceWidget","reference","URL_PATTERN","response","error","match","axios","generateOcsUrl","remarkPlaceholder","ast","visit","node","visitor","index","parent","placeholders","entry","list","matches","u","component","prepareTextNode","h","context","text","parseUrl","props","componentClass","NcReferenceList","argumentId","argument","renderedMarkdown","unified","remarkParse","remarkAutolink","remarkGfm","breaks","remark2rehype","toHast","rehypeExternalLinks","rehype2react","tag","attrs","children","child","inputNode","label","id","GenRandomId","inputComponent","NcCheckboxRadioSwitch","value","route","getRoute","RouterLink","placeholder"],"mappings":";;;;;;;;;;;;;;;;AAcA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,mBAAAC;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,iBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,UAAA;AAAA,IACA,YAAA;AACA,aAAA,KAAA,WAAA,KAAA,oBAAA,WAAA;AAAA,IACA;AAAA,IACA,SAAA;AACA,aAAA,KAAA,gBACA,KAAA,gBAGA,KAAA,mBAAA,CAAA,KAAA,WAAA,CAAA,KAAA,aACA,CAAA,KAAA,iBAAA,IAGA,KAAA,aAAA,OAAA,OAAA,KAAA,UAAA,IAAA,CAAA;AAAA,IACA;AAAA,IACA,iBAAA;AACA,aAAA,KAAA,OAAA,CAAA,KAAA;AAAA,IACA;AAAA,IACA,sBAAA;AACA,aAAA,KAAA,OAAA,MAAA,GAAA,KAAA,KAAA,EAAA,IAAA,CAAAC,OACA;AAAA,QACA,GAAAA;AAAA,QACA,aAAA,KAAA;AAAA,MACA,EACA;AAAA,IACA;AAAA,IACA,oBAAA;AACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,iBAAA;AAAA,UACA,IAAA,KAAA;AAAA,UACA,MAAA,KAAA;AAAA,UACA,MAAA,KAAA;AAAA,QACA;AAAA,QACA,gBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,EACA;AAAA,EACA,UAAA;AACA,SAAA,MAAA;AAAA,EACA;AAAA,EACA,SAAA;AAAA,IACA,QAAA;AAEA,UADA,KAAA,UAAA,IACA,KAAA,eAAA;AACA,aAAA,UAAA;AACA;AAAA,MACA;AAEA,UAAA,CAAA,IAAA,OAAAC,CAAA,EAAA,KAAA,KAAA,IAAA,GAAA;AACA,aAAA,UAAA;AACA;AAAA,MACA;AAEA,WAAA,QAAA,EAAA,KAAA,CAAAC,MAAA;AACA,aAAA,aAAAA,EAAA,KAAA,IAAA,KAAA,YACA,KAAA,UAAA,IACA,KAAA,MAAA,QAAA;AAAA,MACA,CAAA,EAAA,MAAA,CAAAC,MAAA;AACA,gBAAA,MAAA,gCAAAA,CAAA,GACA,KAAA,UAAA,IACA,KAAA,MAAA,QAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IACA,UAAA;AACA,YAAAC,IAAA,IAAA,OAAAH,CAAA,EAAA,KAAA,KAAA,KAAA,KAAA,CAAA;AACA,aAAA,KAAA,UAAA,KAAAG,IACAC,EAAA,IAAAC,EAAA,sBAAA,CAAA,IAAA,cAAA,mBAAAF,EAAA,CAAA,CAAA,CAAA,EAAA,IAGAC,EAAA,KAAAC,EAAA,sBAAA,CAAA,GAAA;AAAA,QACA,MAAA,KAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA,KAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;qBC1HaC,IAAoB,WAAW;AAC3C,SAAO,SAASC,GAAK;AACpB,IAAAC,EAAMD,GAAK,CAACE,MAASA,EAAK,SAAS,QAAQC,CAAO;AAQlD,aAASA,EAAQD,GAAME,GAAOC,GAAQ;AACrC,YAAMC,IAAeJ,EAAK,MAAM,MAAM,uBAAuB,EAC3D,IAAI,CAACK,GAAOH,GAAOI,MAAS;AAC5B,cAAMC,IAAUF,EAAM,MAAM,wBAAwB;AACpD,YAAI,CAACE;AACJ,iBAAOC,EAAE,QAAQH,CAAK;AAEvB,cAAM,CAAA,EAAGI,CAAS,IAAIF;AACtB,eAAOC,EAAE,WAAW;AAAA,UACnB,SAAS,IAAIC,CAAS;AAAA,QAC5B,CAAM;AAAA,MACN,CAAK;AAEF,MAAAN,EAAO,SAAS,OAAOD,GAAO,GAAG,GAAGE,CAAY;AAAA,IAChD;AAAA,EACD;AACF,GAEaM,IAAkB,CAAC,EAAE,GAAAC,GAAG,SAAAC,EAAO,GAAIC,OAC3CD,EAAQ,aACXC,IAAOC,EAASD,CAAI,IAEjB,MAAM,QAAQA,CAAI,IACdA,EAAK,IAAI,CAACR,MAAU;AAC1B,MAAI,OAAOA,KAAU;AACpB,WAAOA;AAER,QAAM,EAAE,WAAAI,GAAW,OAAAM,EAAK,IAAKV,GAEvBW,IAAiBP,EAAU,SAAS,WAAW,SAAY;AACjE,SAAOE,EAAEF,GAAW;AAAA,IACnB,OAAAM;AAAA,IACA,OAAOC;AAAA,EACX,CAAI;AACJ,CAAG,IAEKH,IC+PRzB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,iBAAA6B;AAAA,EACA;AAAA,EACA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OACA,CAAA;AAAA,IAEA;AAAA,IACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OACA;AAAA,QACA,GAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,YAAA;AAAA,MACA;AAAA,IAEA;AAAA,IACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA,IAEA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAA,CAAA,eAAA;AAAA,EACA,SAAA;AAAA,IACA,gBAAAN,GAAA;AACA,YAAAC,IAAA,MACAR,IAAA,KAAA,KAAA,MAAA,uBAAA,EAAA,IAAA,SAAAC,GAAAH,GAAAI,GAAA;AACA,cAAAC,IAAAF,EAAA,MAAA,wBAAA;AAEA,YAAA,CAAAE;AACA,iBAAAG,EAAA,EAAA,GAAAC,GAAA,SAAAC,EAAA,GAAAP,CAAA;AAGA,cAAAa,IAAAX,EAAA,CAAA,GACAY,IAAAP,EAAA,UAAAM,CAAA;AACA,YAAA,OAAAC,KAAA,UAAA;AACA,gBAAA,EAAA,WAAAV,GAAA,OAAAM,EAAA,IAAAI;AACA,iBAAAR,EAAAF,GAAA;AAAA,YACA,OAAAM;AAAA,YACA,OAAA;AAAA,UACA,CAAA;AAAA,QACA;AACA,eAAAI,IACAR,EAAA,QAAA,EAAA,OAAA,sBAAA,GAAAQ,CAAA,IAEAd;AAAA,MACA,CAAA;AACA,aAAAM,EAAA,OAAA,EAAA,OAAA,qBAAA,GAAA;AAAA,QACAA,EAAA,OAAA,CAAA,GAAAP,EAAA,KAAA,CAAA;AAAA,QACA,KAAA,iBAAA,IACAO,EAAA,OAAA,EAAA,OAAA,8BAAA,GAAA;AAAA,UACAA,EAAAM,GAAA,EAAA,OAAA,EAAA,MAAA,KAAA,MAAA,eAAA,KAAA,WAAA,EAAA,CAAA;AAAA,QACA,CAAA,IACA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IACA,eAAAN,GAAA;AACA,YAAAS,IAAAC,EAAA,EACA,IAAAC,CAAA,EACA,IAAAC,GAAA;AAAA,QACA,UAAA,KAAA;AAAA,QACA,aAAA,KAAA;AAAA,QACA,qBAAA,KAAA;AAAA,MACA,CAAA,EACA,IAAA,KAAA,sBAAAC,IAAA,MAAA,EACA,IAAAC,CAAA,EACA,IAAAC,GAAA;AAAA,QACA,UAAA;AAAA,UACA,UAAAC,GAAA3B,GAAA;AACA,mBAAA2B,EAAA3B,GAAAA,EAAA,WAAA,EAAA,OAAAA,EAAA,OAAA;AAAA,UACA;AAAA,QACA;AAAA,MACA,CAAA,EAEA,IAAAH,CAAA,EACA,IAAA+B,GAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA,CAAA,qBAAA;AAAA,MACA,CAAA,EACA,IAAAC,GAAA;AAAA,QACA,eAAA,CAAAC,GAAAC,GAAAC,MAAA;AAOA,cALAA,IAAAA,GAAA;AAAA,YAAA,CAAAC,MAAA,OAAAA,KAAA,WACAA,EAAA,QAAA,WAAA,GAAA,IACAA;AAAA,UACA,GAEA,CAAAH,EAAA,WAAA,GAAA,GAAA;AACA,gBAAA,KAAA,uBACAA,MAAA,QAAA,MAAA,QAAAE,CAAA,KACAA,EAAA,CAAA,EAAA,QAAA,WACAA,EAAA,CAAA,EAAA,KAAA,MAAA,SAAA,YAAA;AACA,oBAAA,CAAAE,KAAAC,CAAA,IAAAH,GACAI,IAAA,oBAAAC,EAAA,CAAA,GACAC,IAAA3B,EAAA4B,GAAA;AAAA,gBACA,OAAA;AAAA,kBACA,GAAAL,EAAA,KAAA;AAAA,kBACA,IAAAE;AAAA,kBACA,UAAA,CAAA,KAAA;AAAA,gBACA;AAAA,gBACA,IAAA;AAAA,kBACA,kBAAA,CAAAI,MAAA;AACA,yBAAA,MAAA,iBAAA,EAAA,IAAAJ,GAAA,OAAAD,GAAA,OAAAK,GAAA;AAAA,kBACA;AAAA,gBACA;AAAA,cACA,GAAA,CAAAL,CAAA,CAAA;AACA,qBAAAxB,EAAAmB,GAAAC,GAAA,CAAAO,CAAA,CAAA;AAAA,YACA;AAGA,gBAAAR,MAAA,KAAA;AACA,oBAAAW,IAAAC,EAAA,KAAA,SAAAX,EAAA,MAAA,IAAA;AACA,kBAAAU;AACA,8BAAAV,EAAA,MAAA,MACA,OAAAA,EAAA,MAAA,QAEApB,EAAAgC,GAAA;AAAA,kBACA,GAAAZ;AAAA,kBACA,OAAA;AAAA,oBACA,IAAAU;AAAA,kBACA;AAAA,gBACA,GAAAT,CAAA;AAAA,YAEA;AAEA,mBAAArB,EAAAmB,GAAAC,GAAAC,CAAA;AAAA,UACA;AAEA,gBAAAY,IAAA,KAAA,UAAAd,EAAA,MAAA,CAAA,CAAA;AACA,iBAAAc,IAIAA,EAAA,YAIAjC;AAAA,YACAiC,EAAA;AAAA,YACA;AAAA,cACA,OAAAb;AAAA,cACA,OAAAa,EAAA;AAAA,cACA,OAAA;AAAA,YACA;AAAA,YACAZ;AAAA,UACA,IAXArB,EAAA,QAAAoB,GAAA,CAAAa,CAAA,CAAA,IAJAjC,EAAA,QAAA,EAAA,OAAAoB,GAAA,OAAA,sBAAA,GAAA,CAAA,IAAAD,EAAA,MAAA,CAAA,CAAA,GAAA,CAAA;AAAA,QAgBA;AAAA,QACA,QAAA;AAAA,MACA,CAAA,EACA;AAAA,QAAA,KAAA,KAEA,QAAA,QAAA,MAAA,EAEA,QAAA,WAAA,GAAA;AAAA,MACA,EACA;AAEA,aAAAnB,EAAA,OAAA,EAAA,OAAA,iDAAA,GAAA;AAAA,QACAS;AAAA,QACA,KAAA,iBAAA,IACAT,EAAA,OAAA,EAAA,OAAA,8BAAA,GAAA;AAAA,UACAA,EAAAM,GAAA,EAAA,OAAA,EAAA,MAAA,KAAA,MAAA,eAAA,KAAA,WAAA,EAAA,CAAA;AAAA,QACA,CAAA,IACA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,OAAAN,GAAA;AACA,WAAA,KAAA,eAAA,KAAA,sBACA,KAAA,eAAAA,CAAA,IACA,KAAA,gBAAAA,CAAA;AAAA,EACA;AACA;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require('../assets/NcSelect-GsLmwj9w.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
require("@nextcloud/vue-select/dist/vue-select.css");
|
|
4
|
-
const f = require("vue"),
|
|
5
|
-
|
|
4
|
+
const f = require("vue"), o = require("@nextcloud/vue-select"), r = require("@floating-ui/dom"), s = require("./_l10n-Od-4xzJA.cjs"), b = require("./ChevronDown-Hc_DTRav.cjs"), y = require("./Close-dotk0707.cjs"), m = require("../Components/NcEllipsisedOption.cjs"), h = require("./NcListItemIcon-BnoIbVbD.cjs"), _ = require("../Components/NcLoadingIcon.cjs"), c = require("./GenRandomId-ULxaMkkr.cjs"), g = require("./_plugin-vue2_normalizer-DCfUPqga.cjs"), L = (t) => t && t.__esModule ? t : { default: t }, p = /* @__PURE__ */ L(f);
|
|
5
|
+
s.register(s.t14);
|
|
6
6
|
const S = {
|
|
7
7
|
name: "NcSelect",
|
|
8
8
|
components: {
|
|
@@ -10,18 +10,18 @@ const S = {
|
|
|
10
10
|
NcEllipsisedOption: m,
|
|
11
11
|
NcListItemIcon: h.NcListItemIcon,
|
|
12
12
|
NcLoadingIcon: _,
|
|
13
|
-
VueSelect:
|
|
13
|
+
VueSelect: o.VueSelect
|
|
14
14
|
},
|
|
15
15
|
props: {
|
|
16
16
|
// Add VueSelect props to $props
|
|
17
|
-
...
|
|
18
|
-
...
|
|
17
|
+
...o.VueSelect.props,
|
|
18
|
+
...o.VueSelect.mixins.reduce((t, e) => ({ ...t, ...e.props }), {}),
|
|
19
19
|
/**
|
|
20
20
|
* `aria-label` for the clear input button
|
|
21
21
|
*/
|
|
22
22
|
ariaLabelClearSelected: {
|
|
23
23
|
type: String,
|
|
24
|
-
default:
|
|
24
|
+
default: s.t("Clear selected")
|
|
25
25
|
},
|
|
26
26
|
/**
|
|
27
27
|
* `aria-label` for the search input
|
|
@@ -37,7 +37,7 @@ const S = {
|
|
|
37
37
|
*/
|
|
38
38
|
ariaLabelListbox: {
|
|
39
39
|
type: String,
|
|
40
|
-
default:
|
|
40
|
+
default: s.t("Options")
|
|
41
41
|
},
|
|
42
42
|
/**
|
|
43
43
|
* Allows to customize the `aria-label` for the deselect-option button
|
|
@@ -46,7 +46,7 @@ const S = {
|
|
|
46
46
|
*/
|
|
47
47
|
ariaLabelDeselectOption: {
|
|
48
48
|
type: Function,
|
|
49
|
-
default: (t) =>
|
|
49
|
+
default: (t) => s.t("Deselect {option}", { option: t })
|
|
50
50
|
},
|
|
51
51
|
/**
|
|
52
52
|
* Append the dropdown element to the end of the body
|
|
@@ -268,8 +268,8 @@ const S = {
|
|
|
268
268
|
*
|
|
269
269
|
* @param {KeyboardEvent} event - default keydown event handler
|
|
270
270
|
*/
|
|
271
|
-
27: (
|
|
272
|
-
e.open &&
|
|
271
|
+
27: (n) => {
|
|
272
|
+
e.open && n.stopPropagation(), t[27](n);
|
|
273
273
|
}
|
|
274
274
|
};
|
|
275
275
|
}
|
|
@@ -324,6 +324,13 @@ const S = {
|
|
|
324
324
|
type: [String, Number, Object, Array],
|
|
325
325
|
default: null
|
|
326
326
|
},
|
|
327
|
+
/**
|
|
328
|
+
* Enable if a value is required for native form validation
|
|
329
|
+
*/
|
|
330
|
+
required: {
|
|
331
|
+
type: Boolean,
|
|
332
|
+
default: !1
|
|
333
|
+
},
|
|
327
334
|
/**
|
|
328
335
|
* Any available prop
|
|
329
336
|
*
|
|
@@ -346,15 +353,18 @@ const S = {
|
|
|
346
353
|
};
|
|
347
354
|
},
|
|
348
355
|
computed: {
|
|
356
|
+
inputRequired() {
|
|
357
|
+
return this.required ? this.value === null || Array.isArray(this.value) && this.value.length === 0 : null;
|
|
358
|
+
},
|
|
349
359
|
localCalculatePosition() {
|
|
350
|
-
return this.calculatePosition !== null ? this.calculatePosition : (t, e, { width:
|
|
351
|
-
t.style.width =
|
|
360
|
+
return this.calculatePosition !== null ? this.calculatePosition : (t, e, { width: n }) => {
|
|
361
|
+
t.style.width = n;
|
|
352
362
|
const l = {
|
|
353
363
|
name: "addClass",
|
|
354
364
|
fn(i) {
|
|
355
365
|
return t.classList.add("vs__dropdown-menu--floating"), {};
|
|
356
366
|
}
|
|
357
|
-
},
|
|
367
|
+
}, a = {
|
|
358
368
|
name: "togglePlacementClass",
|
|
359
369
|
fn({ placement: i }) {
|
|
360
370
|
return e.$el.classList.toggle(
|
|
@@ -366,15 +376,15 @@ const S = {
|
|
|
366
376
|
), {};
|
|
367
377
|
}
|
|
368
378
|
}, u = () => {
|
|
369
|
-
|
|
379
|
+
r.computePosition(e.$refs.toggle, t, {
|
|
370
380
|
placement: this.placement,
|
|
371
381
|
middleware: [
|
|
372
|
-
|
|
382
|
+
r.offset(-1),
|
|
373
383
|
l,
|
|
374
|
-
|
|
384
|
+
a,
|
|
375
385
|
// Match popperjs default collision prevention behavior by appending the following middleware in order
|
|
376
|
-
|
|
377
|
-
|
|
386
|
+
r.flip(),
|
|
387
|
+
r.shift({ limiter: r.limitShift() })
|
|
378
388
|
]
|
|
379
389
|
}).then(({ x: i, y: d }) => {
|
|
380
390
|
Object.assign(t.style, {
|
|
@@ -384,7 +394,7 @@ const S = {
|
|
|
384
394
|
});
|
|
385
395
|
});
|
|
386
396
|
};
|
|
387
|
-
return
|
|
397
|
+
return r.autoUpdate(
|
|
388
398
|
e.$refs.toggle,
|
|
389
399
|
t,
|
|
390
400
|
u
|
|
@@ -393,22 +403,22 @@ const S = {
|
|
|
393
403
|
},
|
|
394
404
|
localFilterBy() {
|
|
395
405
|
const t = /[^<]*<([^>]+)/;
|
|
396
|
-
return this.filterBy !== null ? this.filterBy : this.userSelect ? (e,
|
|
397
|
-
const
|
|
398
|
-
return
|
|
399
|
-
} :
|
|
406
|
+
return this.filterBy !== null ? this.filterBy : this.userSelect ? (e, n, l) => {
|
|
407
|
+
const a = l.match(t);
|
|
408
|
+
return a && e.subname?.toLocaleLowerCase?.()?.indexOf(a[1].toLocaleLowerCase()) > -1 || `${n} ${e.subname}`.toLocaleLowerCase().indexOf(l.toLocaleLowerCase()) > -1;
|
|
409
|
+
} : o.VueSelect.props.filterBy.default;
|
|
400
410
|
},
|
|
401
411
|
localLabel() {
|
|
402
|
-
return this.label !== null ? this.label : this.userSelect ? "displayName" :
|
|
412
|
+
return this.label !== null ? this.label : this.userSelect ? "displayName" : o.VueSelect.props.label.default;
|
|
403
413
|
},
|
|
404
414
|
propsToForward() {
|
|
405
415
|
const t = [
|
|
406
|
-
...Object.keys(
|
|
407
|
-
...
|
|
416
|
+
...Object.keys(o.VueSelect.props),
|
|
417
|
+
...o.VueSelect.mixins.flatMap((l) => Object.keys(l.props ?? {}))
|
|
408
418
|
];
|
|
409
419
|
return {
|
|
410
420
|
...Object.fromEntries(
|
|
411
|
-
Object.entries(this.$props).filter(([l,
|
|
421
|
+
Object.entries(this.$props).filter(([l, a]) => t.includes(l))
|
|
412
422
|
),
|
|
413
423
|
// Custom overrides of vue-select props
|
|
414
424
|
calculatePosition: this.localCalculatePosition,
|
|
@@ -418,47 +428,47 @@ const S = {
|
|
|
418
428
|
}
|
|
419
429
|
},
|
|
420
430
|
mounted() {
|
|
421
|
-
!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox && p.default.util.warn("[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set."), this.inputLabel && this.ariaLabelCombobox && p.default.util.warn("[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.");
|
|
431
|
+
!this.labelOutside && !this.inputLabel && !this.ariaLabelCombobox && p.default.util.warn("[NcSelect] An `inputLabel` or `ariaLabelCombobox` should be set. If an external label is used, `labelOutside` should be set to `true`."), this.inputLabel && this.ariaLabelCombobox && p.default.util.warn("[NcSelect] Only one of `inputLabel` or `ariaLabelCombobox` should to be set.");
|
|
422
432
|
},
|
|
423
433
|
methods: {
|
|
424
|
-
t:
|
|
434
|
+
t: s.t
|
|
425
435
|
}
|
|
426
436
|
};
|
|
427
437
|
var C = function() {
|
|
428
|
-
var e = this,
|
|
429
|
-
return
|
|
438
|
+
var e = this, n = e._self._c;
|
|
439
|
+
return n("VueSelect", e._g(e._b({ staticClass: "select", class: {
|
|
430
440
|
"select--no-wrap": e.noWrap,
|
|
431
441
|
"user-select": e.userSelect
|
|
432
442
|
}, on: { search: (l) => e.search = l }, scopedSlots: e._u([!e.labelOutside && e.inputLabel ? { key: "header", fn: function() {
|
|
433
|
-
return [
|
|
434
|
-
}, proxy: !0 } : null, { key: "search", fn: function({ attributes: l, events:
|
|
435
|
-
return [
|
|
443
|
+
return [n("label", { staticClass: "select__label", attrs: { for: e.inputId } }, [e._v(" " + e._s(e.inputLabel) + " ")])];
|
|
444
|
+
}, proxy: !0 } : null, { key: "search", fn: function({ attributes: l, events: a }) {
|
|
445
|
+
return [n("input", e._g(e._b({ class: ["vs__search", e.inputClass], attrs: { required: e.inputRequired } }, "input", l, !1), a))];
|
|
436
446
|
} }, { key: "open-indicator", fn: function({ attributes: l }) {
|
|
437
|
-
return [
|
|
447
|
+
return [n("ChevronDown", e._b({ style: {
|
|
438
448
|
cursor: e.disabled ? null : "pointer"
|
|
439
449
|
}, attrs: { "fill-color": "var(--vs-controls-color)", size: 26 } }, "ChevronDown", l, !1))];
|
|
440
450
|
} }, { key: "option", fn: function(l) {
|
|
441
|
-
return [e.userSelect ?
|
|
451
|
+
return [e.userSelect ? n("NcListItemIcon", e._b({ attrs: { "avatar-size": 24, name: l[e.localLabel], search: e.search } }, "NcListItemIcon", l, !1)) : n("NcEllipsisedOption", { attrs: { name: String(l[e.localLabel]), search: e.search } })];
|
|
442
452
|
} }, { key: "selected-option", fn: function(l) {
|
|
443
|
-
return [e.userSelect ?
|
|
453
|
+
return [e.userSelect ? n("NcListItemIcon", e._b({ attrs: { "avatar-size": 24, name: l[e.localLabel], search: e.search } }, "NcListItemIcon", l, !1)) : n("NcEllipsisedOption", { attrs: { name: String(l[e.localLabel]), search: e.search } })];
|
|
444
454
|
} }, { key: "spinner", fn: function(l) {
|
|
445
|
-
return [l.loading ?
|
|
455
|
+
return [l.loading ? n("NcLoadingIcon") : e._e()];
|
|
446
456
|
} }, { key: "no-options", fn: function() {
|
|
447
457
|
return [e._v(" " + e._s(e.t("No results")) + " ")];
|
|
448
|
-
}, proxy: !0 }, e._l(e.$scopedSlots, function(l,
|
|
449
|
-
return { key:
|
|
450
|
-
return [e._t(
|
|
458
|
+
}, proxy: !0 }, e._l(e.$scopedSlots, function(l, a) {
|
|
459
|
+
return { key: a, fn: function(u) {
|
|
460
|
+
return [e._t(a, null, null, u)];
|
|
451
461
|
} };
|
|
452
462
|
})], null, !0) }, "VueSelect", e.propsToForward, !1), e.$listeners));
|
|
453
|
-
},
|
|
463
|
+
}, v = [], I = /* @__PURE__ */ g.normalizeComponent(
|
|
454
464
|
S,
|
|
455
465
|
C,
|
|
456
|
-
|
|
466
|
+
v,
|
|
457
467
|
!1,
|
|
458
468
|
null,
|
|
459
469
|
null,
|
|
460
470
|
null,
|
|
461
471
|
null
|
|
462
472
|
);
|
|
463
|
-
const
|
|
464
|
-
exports.NcSelect =
|
|
473
|
+
const N = I.exports;
|
|
474
|
+
exports.NcSelect = N;
|