UNPKG

@nextcloud/vue

Version:
2 lines (1 loc) 10.1 kB
var A=require("../assets/index18.css");Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("../chunks/index-c4cd0463.cjs"),h=require("@nextcloud/router"),d=require("../chunks/_plugin-vue2_normalizer-764a4c12.cjs"),l=require("../chunks/l10n-46d0c1c0.cjs");require("../Directives/Tooltip.cjs");const u=require("../Functions/emoji.cjs"),c=require("../chunks/referencePickerModal-44160fb3.cjs");require("@nextcloud/axios"),require("unist-util-visit"),require("unist-builder"),require("unified"),require("remark-parse"),require("remark-breaks"),require("remark-rehype"),require("rehype-react"),require("rehype-external-links"),require("./NcEmptyContent.cjs"),require("./NcSelect.cjs"),require("vue-material-design-icons/LinkVariant.vue"),require("./NcLoadingIcon.cjs"),require("./NcTextField.cjs"),require("vue-material-design-icons/DotsHorizontal.vue"),require("./NcButton.cjs"),require("./NcModal.cjs"),require("@nextcloud/event-bus"),require("vue-material-design-icons/ArrowLeft.vue"),require("vue-material-design-icons/Close.vue");const o=require("tributejs/dist/tribute.esm.js"),g=require("debounce"),f=require("string-length"),b=require("floating-vue");const v={name:"NcAutoCompleteResult",props:{title:{type:String,required:!0},subline:{type:String,default:null},id:{type:String,default:null},icon:{type:String,required:!0},iconUrl:{type:String,default:null},source:{type:String,required:!0},status:{type:[Object,Array],default:()=>({})}},computed:{avatarUrl(){return this.iconUrl?this.iconUrl:this.id&&this.source==="users"?this.getAvatarUrl(this.id,44):null},haveStatus(){var e,t,i;return((e=this.status)==null?void 0:e.icon)||((t=this.status)==null?void 0:t.status)&&((i=this.status)==null?void 0:i.status)!=="offline"}},methods:{getAvatarUrl(e,t){return h.generateUrl("/avatar/{user}/{size}",{user:e,size:t})}}};var _=function(){var e=this,t=e._self._c;return t("div",{staticClass:"autocomplete-result"},[t("div",{staticClass:"autocomplete-result__icon",class:[e.icon,`autocomplete-result__icon--${e.avatarUrl?"with-avatar":""}`],style:e.avatarUrl?{backgroundImage:`url(${e.avatarUrl})`}:null},[e.haveStatus?t("div",{staticClass:"autocomplete-result__status",class:[`autocomplete-result__status--${e.status&&e.status.icon?"icon":e.status.status}`]},[e._v(" "+e._s(e.status&&e.status.icon||"")+" ")]):e._e()]),t("span",{staticClass:"autocomplete-result__content"},[t("span",{staticClass:"autocomplete-result__title",attrs:{title:e.title}},[e._v(" "+e._s(e.title)+" ")]),e.subline?t("span",{staticClass:"autocomplete-result__subline"},[e._v(" "+e._s(e.subline)+" ")]):e._e()])])},y=[],C=d.normalizeComponent(v,_,y,!1,null,"25cf09d8",null,null);const m=C.exports;const k={name:"NcRichContenteditable",directives:{tooltip:b.VTooltip},mixins:[p.richEditor],props:{value:{type:String,default:"",required:!0},placeholder:{type:String,default:l.t("Write a message …")},autoComplete:{type:Function,default:()=>[]},menuContainer:{type:Element,default:()=>document.body},multiline:{type:Boolean,default:!1},contenteditable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},maxlength:{type:Number,default:null},emojiAutocomplete:{type:Boolean,default:!0},linkAutocomplete:{type:Boolean,default:!0}},emits:["submit","paste","update:value"],data(){return{textSmiles:[],tribute:null,autocompleteOptions:{allowSpaces:!0,fillAttr:"id",lookup:e=>`${e.id} ${e.title}`,menuContainer:this.menuContainer,menuItemTemplate:e=>this.renderComponentHtml(e.original,m),noMatchTemplate:()=>'<span class="hidden"></span>',selectTemplate:e=>{var t;return this.genSelectTemplate((t=e==null?void 0:e.original)==null?void 0:t.id)},values:this.debouncedAutoComplete},emojiOptions:{trigger:":",lookup:(e,t)=>t,menuContainer:this.menuContainer,menuItemTemplate:e=>this.textSmiles.includes(e.original)?e.original:`<span class="tribute-container-emoji__item__emoji">${e.original.native}</span> :${e.original.short_name}`,noMatchTemplate:()=>l.t("No emoji found"),selectTemplate:e=>this.textSmiles.includes(e.original)?e.original:(u.emojiAddRecent(e.original),e.original.native),values:(e,t)=>{const i=u.emojiSearch(e);this.textSmiles.includes(":"+e)&&i.unshift(":"+e),t(i)},containerClass:"tribute-container-emoji",itemClass:"tribute-container-emoji__item"},linkOptions:{trigger:"/",lookup:(e,t)=>t,menuContainer:this.menuContainer,menuItemTemplate:e=>`<img class="tribute-container-link__item__icon" src="${e.original.icon_url}"> <span class="tribute-container-link__item__title">${e.original.title}</span>`,noMatchTemplate:()=>l.t("No link provider found"),selectTemplate:this.getLink,values:(e,t)=>t(c.searchProvider(e)),containerClass:"tribute-container-link",itemClass:"tribute-container-link__item"},localValue:this.value,isComposing:!1}},computed:{isEmptyValue(){return!this.localValue||this.localValue&&this.localValue.trim()===""},isFF(){return!!navigator.userAgent.match(/firefox/i)},isOverMaxlength(){return this.isEmptyValue||!this.maxlength?!1:f(this.localValue)>this.maxlength},tooltipString(){return this.isOverMaxlength?{content:l.t("Message limit of {count} characters reached",{count:this.maxlength}),shown:!0,trigger:"manual"}:null},canEdit(){return this.contenteditable&&!this.disabled},listeners(){const e={...this.$listeners};return delete e.paste,e}},watch:{value(){const e=this.$refs.contenteditable.innerHTML;this.value.trim()!==this.parseContent(e).trim()&&this.updateContent(this.value)}},mounted(){const e=["d","D","p","P","s","S","x","X",")","(","|","/"];this.textSmiles=[],e.forEach(t=>{this.textSmiles.push(":"+t),this.textSmiles.push(":-"+t)}),this.autocompleteTribute=new o(this.autocompleteOptions),this.autocompleteTribute.attach(this.$el),this.emojiAutocomplete&&(this.emojiTribute=new o(this.emojiOptions),this.emojiTribute.attach(this.$el)),this.linkAutocomplete&&(this.linkTribute=new o(this.linkOptions),this.linkTribute.attach(this.$el)),this.updateContent(this.value),this.$refs.contenteditable.contentEditable=this.canEdit},beforeDestroy(){this.autocompleteTribute&&this.autocompleteTribute.detach(this.$el),this.emojiTribute&&this.emojiTribute.detach(this.$el),this.linkTribute&&this.linkTribute.detach(this.$el)},methods:{focus(){this.$refs.contenteditable.focus()},getLink(e){return c.getLinkWithPicker(e.original.id).then(t=>{const i=document.getElementById("tmp-link-result-node"),n=document.createTextNode(t);i.replaceWith(n),this.setCursorAfter(n),this.updateValue(this.$refs.contenteditable.innerHTML)}).catch(t=>{console.debug("Smart picker promise rejected:",t);const i=document.getElementById("tmp-link-result-node");this.setCursorAfter(i),i.remove()}),'<span id="tmp-link-result-node"></span>'},setCursorAfter(e){const t=document.createRange();t.setEndAfter(e),t.collapse();const i=window.getSelection();i.removeAllRanges(),i.addRange(t)},onInput(e){this.updateValue(e.target.innerHTML)},onPaste(e){if(!this.canEdit)return;e.preventDefault();const t=e.clipboardData;if(this.$emit("paste",e),t.files.length!==0||!Object.values(t.items).find(a=>a==null?void 0:a.type.startsWith("text")))return;const i=t.getData("text"),n=window.getSelection();if(!n.rangeCount){this.updateValue(i);return}const s=n.getRangeAt(0);n.deleteFromDocument(),s.insertNode(document.createTextNode(i));const r=document.createRange();r.setStart(e.target,s.endOffset),r.collapse(!0),n.removeAllRanges(),n.addRange(r),this.updateValue(this.$refs.contenteditable.innerHTML)},updateValue(e){const t=this.parseContent(e);this.localValue=t,this.$emit("update:value",t)},updateContent(e){const t=this.renderContent(e);this.$refs.contenteditable.innerHTML=t,this.localValue=e},onDelete(e){if(!this.isFF||!window.getSelection||!this.canEdit)return;const t=window.getSelection(),i=e.target;if(!t.isCollapsed||!t.rangeCount)return;const n=t.getRangeAt(t.rangeCount-1);if(n.commonAncestorContainer.nodeType===3&&n.startOffset>0)return;const s=document.createRange();if(t.anchorNode!==i)s.selectNodeContents(i),s.setEndBefore(t.anchorNode);else if(t.anchorOffset>0)s.setEnd(i,t.anchorOffset);else return;s.setStart(i,s.endOffset-1);const r=s.cloneContents().lastChild;r&&r.contentEditable==="false"&&(s.deleteContents(),e.preventDefault())},onEnter(e){this.multiline||this.isOverMaxlength||this.autocompleteTribute.isActive||this.emojiTribute.isActive||this.linkTribute.isActive||this.isComposing||(e.preventDefault(),e.stopPropagation(),this.$emit("submit",e))},onCtrlEnter(e){this.isOverMaxlength||this.$emit("submit",e)},debouncedAutoComplete:g(async function(e,t){this.autoComplete(e,t)},100),onKeyUp(e){e.stopImmediatePropagation()}}};var q=function(){var e=this,t=e._self._c;return t("div",e._g({directives:[{name:"tooltip",rawName:"v-tooltip",value:e.tooltipString,expression:"tooltipString"}],ref:"contenteditable",staticClass:"rich-contenteditable__input",class:{"rich-contenteditable__input--empty":e.isEmptyValue,"rich-contenteditable__input--multiline":e.multiline,"rich-contenteditable__input--overflow":e.isOverMaxlength,"rich-contenteditable__input--disabled":e.disabled},attrs:{contenteditable:e.canEdit,placeholder:e.placeholder,"aria-placeholder":e.placeholder,"aria-multiline":"true",role:"textbox"},on:{input:e.onInput,compositionstart:function(i){e.isComposing=!0},compositionend:function(i){e.isComposing=!1},keydown:[function(i){return!i.type.indexOf("key")&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"])?null:e.onDelete.apply(null,arguments)},function(i){return!i.type.indexOf("key")&&e._k(i.keyCode,"enter",13,i.key,"Enter")||i.ctrlKey||i.shiftKey||i.altKey||i.metaKey?null:e.onEnter.apply(null,arguments)},function(i){return!i.type.indexOf("key")&&e._k(i.keyCode,"enter",13,i.key,"Enter")||!i.ctrlKey||i.shiftKey||i.altKey||i.metaKey?null:(i.stopPropagation(),i.preventDefault(),e.onCtrlEnter.apply(null,arguments))}],paste:e.onPaste,"!keyup":function(i){return i.stopPropagation(),i.preventDefault(),e.onKeyUp.apply(null,arguments)}}},e.listeners))},T=[],S=d.normalizeComponent(k,q,T,!1,null,"b7f5e546",null,null);const x=S.exports;exports.NcMentionBubble=p.NcMentionBubble,exports.NcAutoCompleteResult=m,exports.default=x;