@nextcloud/vue
Version:
Nextcloud vue components
2 lines (1 loc) • 6.29 kB
JavaScript
"use strict";const v=require("./referencePickerModal-44160fb3.cjs"),f=require("@nextcloud/axios"),x=require("@nextcloud/router"),b=require("./_plugin-vue2_normalizer-764a4c12.cjs"),d=require("unist-util-visit"),o=require("unist-builder"),y=require("unified"),w=require("remark-parse"),q=require("remark-breaks"),R=require("remark-rehype"),_=require("rehype-react"),N=require("rehype-external-links"),g=/(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig,m=/(\s|\(|^)((https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z0-9]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig,j={name:"NcReferenceList",components:{NcReferenceWidget:v.NcReferenceWidget},props:{text:{type:String,default:""},referenceData:{type:Object,default:null},limit:{type:Number,default:1}},data(){return{references:null,loading:!0}},computed:{isVisible(){return this.loading||this.displayedReferences},values(){return this.referenceData?this.referenceData:this.references?Object.values(this.references):[]},firstReference(){var e;return(e=this.values[0])!=null?e:null},displayedReferences(){return this.values.slice(0,this.limit)}},watch:{text:"fetch"},mounted(){this.fetch()},methods:{fetch(){if(this.loading=!0,this.referenceData){this.loading=!1;return}if(!new RegExp(g).exec(this.text)){this.loading=!1;return}this.resolve().then(e=>{this.references=e.data.ocs.data.references,this.loading=!1}).catch(e=>{console.error("Failed to extract references",e),this.loading=!1})},resolve(){const e=new RegExp(g).exec(this.text.trim());return this.limit===1&&e?f.get(x.generateOcsUrl("references/resolve",2)+`?reference=${encodeURIComponent(e[0])}`):f.post(x.generateOcsUrl("references/extract",2),{text:this.text,resolve:!0,limit:this.limit})}}};var A=function(){var e=this,i=e._self._c;return e.isVisible?i("div",{staticClass:"widgets--list",class:{"icon-loading":e.loading}},e._l(e.displayedReferences,function(t){var r;return i("div",{key:(r=t==null?void 0:t.openGraphObject)==null?void 0:r.id},[i("NcReferenceWidget",{attrs:{reference:t}})],1)}),0):e._e()},L=[],O=b.normalizeComponent(j,A,L,!1,null,"bd1fbb02",null,null);const u=O.exports,M={name:"NcLink",props:{href:{type:String,required:!0}},render(e){return e("a",{attrs:{href:this.href,rel:"noopener noreferrer",target:"_blank",class:"rich-text--external-link"}},[this.href.trim()])}},$=function({autolink:e,useMarkdown:i}){return function(t){!i||!e||d.visit(t,r=>r.type==="text",(r,c,n)=>{let s=k(r.value);return s=s.map(a=>typeof a=="string"?o.u("text",a):o.u("link",{url:a.props.href},[o.u("text",a.props.href)])).filter(a=>a),n.children.splice(c,1,...s.flat()),[d.SKIP,c+s.flat().length]})}},k=e=>{let i=m.exec(e);const t=[];let r=0;for(;i!==null;){let n=i[2],s,a=e.substring(r,i.index+i[1].length);n[0]===" "&&(a+=n[0],n=n.substring(1).trim());const l=n[n.length-1];(l==="."||l===","||l===";"||i[0][0]==="("&&l===")")&&(n=n.substring(0,n.length-1),s=l),t.push(a),t.push({component:M,props:{href:n}}),s&&t.push(s),r=i.index+i[0].length,i=m.exec(e)}t.push(e.substring(r));const c=t.map(n=>typeof n=="string"?n:n.props.href).join("");return e===c?t:(console.error("Failed to reassemble the chunked text: "+e),e)},z=function(){return function(e){d.visit(e,t=>t.type==="text",i);function i(t,r,c){const n=t.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((s,a,l)=>{const h=s.match(/^\{([a-z\-_.0-9]+)\}$/i);if(!h)return o.u("text",s);const[,p]=h;return o.u("element",{tagName:`#${p}`})});c.children.splice(r,1,...n)}}},C=({h:e,context:i},t)=>(i.autolink&&(t=k(t)),Array.isArray(t)?t.map(r=>{if(typeof r=="string")return r;const{component:c,props:n}=r,s=c.name==="NcLink"?void 0:"rich-text--component";return e(c,{props:n,class:s})}):t),D={name:"NcRichText",components:{NcReferenceList:u},props:{text:{type:String,default:""},arguments:{type:Object,default:()=>({})},referenceLimit:{type:Number,default:0},references:{type:Object,default:null},markdownCssClasses:{type:Object,default:()=>({a:"rich-text--external-link",ol:"rich-text--ordered-list",ul:"rich-text--un-ordered-list",li:"rich-text--list-item",strong:"rich-text--strong",em:"rich-text--italic",h1:"rich-text--heading rich-text--heading-1",h2:"rich-text--heading rich-text--heading-2",h3:"rich-text--heading rich-text--heading-3",h4:"rich-text--heading rich-text--heading-4",h5:"rich-text--heading rich-text--heading-5",h6:"rich-text--heading rich-text--heading-6",hr:"rich-text--hr",table:"rich-text--table",pre:"rich-text--pre",code:"rich-text--code",blockquote:"rich-text--blockquote"})},useMarkdown:{type:Boolean,default:!1},autolink:{type:Boolean,default:!0}},methods:{renderPlaintext(e){const i=this,t=this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(function(r,c,n){const s=r.match(/^\{([a-z\-_.0-9]+)\}$/i);if(!s)return C({h:e,context:i},r);const a=s[1],l=i.arguments[a];if(typeof l=="object"){const{component:h,props:p}=l;return e(h,{props:p,class:"rich-text--component"})}return l?e("span",{class:"rich-text--fallback"},l):r});return e("div",{class:"rich-text--wrapper"},[e("div",{},t.flat()),this.referenceLimit>0?e("div",{class:"rich-text--reference-widget"},[e(u,{props:{text:this.text,referenceData:this.references}})]):null])},renderMarkdown(e){const i=y.unified().use(w).use($,{autolink:this.autolink,useMarkdown:this.useMarkdown}).use(q).use(R,{handlers:{component(t,r){return t(r,r.component,{value:r.value})}}}).use(z).use(N,{target:"_blank",rel:["noopener noreferrer"]}).use(_,{createElement:(t,r,c)=>{if(c=c==null?void 0:c.map(s=>typeof s=="string"?s.replace(/</gmi,"<"):s),!t.startsWith("#"))return e(t,r,c);const n=this.arguments[t.slice(1)];return n?n.component?e(n.component,{attrs:r,props:n.props,class:"rich-text--component"},c):e("span",r,[n]):e("span",{attrs:r,class:"rich-text--fallback"},[`{${t.slice(1)}}`])},prefix:!1}).processSync(this.text.replace(/</gmi,"<").replace(/>/gmi,">")).result;return e("div",{class:"rich-text--wrapper rich-text--wrapper-markdown"},[i,this.referenceLimit>0?e("div",{class:"rich-text--reference-widget"},[e(u,{props:{text:this.text,referenceData:this.references}})]):null])}},render(e){return this.useMarkdown?this.renderMarkdown(e):this.renderPlaintext(e)}},Z=null,S=null;var E=b.normalizeComponent(D,Z,S,!1,null,"f9d2c651",null,null);const P=E.exports;exports.NcReferenceList=u,exports.NcRichText=P;