@dialpad/dialtone 9.25.0 → 9.26.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/dist/css/CHANGELOG.json +1 -1
- package/dist/css/dialtone.css +3 -2
- package/dist/css/dialtone.min.css +1 -1
- package/dist/tokens/android/java/tokens-dark.kt +1 -1
- package/dist/tokens/android/java/tokens-light.kt +1 -1
- package/dist/tokens/android/res/values/colors-dark.xml +1 -1
- package/dist/tokens/android/res/values/colors-light.xml +1 -1
- package/dist/tokens/android/res/values/dimens.xml +1 -1
- package/dist/tokens/css/variables-dark.css +1 -1
- package/dist/tokens/css/variables-light.css +1 -1
- package/dist/tokens/ios/tokens-dark.swift +1 -1
- package/dist/tokens/ios/tokens-light.swift +1 -1
- package/dist/tokens/less/variables-dark.less +1 -1
- package/dist/tokens/less/variables-light.less +1 -1
- package/dist/vue2/dialtone-vue.cjs +3 -2
- package/dist/vue2/dialtone-vue.cjs.map +1 -0
- package/dist/vue2/dialtone-vue.js +13 -7
- package/dist/vue2/dialtone-vue.js.map +1 -0
- package/dist/vue2/directives.cjs +1 -0
- package/dist/vue2/directives.cjs.map +1 -0
- package/dist/vue2/directives.js +1 -0
- package/dist/vue2/directives.js.map +1 -0
- package/dist/vue2/emoji.cjs +1 -0
- package/dist/vue2/emoji.cjs.map +1 -0
- package/dist/vue2/emoji.js +1 -0
- package/dist/vue2/emoji.js.map +1 -0
- package/dist/vue2/emoji_picker-kiTOKaq8.js +1 -0
- package/dist/vue2/emoji_picker-kiTOKaq8.js.map +1 -0
- package/dist/vue2/emoji_picker-njWWAm6V.cjs +1 -0
- package/dist/vue2/emoji_picker-njWWAm6V.cjs.map +1 -0
- package/dist/vue2/emoji_text_wrapper-48ClwKvf.js +1 -0
- package/dist/vue2/emoji_text_wrapper-48ClwKvf.js.map +1 -0
- package/dist/vue2/emoji_text_wrapper-ZlynvHnd.cjs +1 -0
- package/dist/vue2/emoji_text_wrapper-ZlynvHnd.cjs.map +1 -0
- package/dist/vue2/index-OF94C6nQ.js +1 -0
- package/dist/vue2/index-OF94C6nQ.js.map +1 -0
- package/dist/vue2/index-Wx7Jagcr.cjs +1 -0
- package/dist/vue2/index-Wx7Jagcr.cjs.map +1 -0
- package/dist/vue2/message_input.cjs +2 -1
- package/dist/vue2/message_input.cjs.map +1 -0
- package/dist/vue2/message_input.js +2 -1
- package/dist/vue2/message_input.js.map +1 -0
- package/dist/vue2/{rich_text_editor-Eh5kYokw.cjs → rich_text_editor-RVMsCB8N.cjs} +2 -1
- package/dist/vue2/rich_text_editor-RVMsCB8N.cjs.map +1 -0
- package/dist/vue2/{rich_text_editor-9sMob7ck.js → rich_text_editor-eMvTs_Gp.js} +3 -2
- package/dist/vue2/rich_text_editor-eMvTs_Gp.js.map +1 -0
- package/dist/vue2/style.css +1 -1
- package/dist/vue2/tooltip-88U5vFMA.js +1 -0
- package/dist/vue2/tooltip-88U5vFMA.js.map +1 -0
- package/dist/vue2/tooltip-i2wxFIIi.cjs +1 -0
- package/dist/vue2/tooltip-i2wxFIIi.cjs.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +1 -1
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +9 -0
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/dist/vue3/dialtone-vue.cjs +3 -2
- package/dist/vue3/dialtone-vue.cjs.map +1 -0
- package/dist/vue3/dialtone-vue.js +410 -401
- package/dist/vue3/dialtone-vue.js.map +1 -0
- package/dist/vue3/directives.cjs +1 -0
- package/dist/vue3/directives.cjs.map +1 -0
- package/dist/vue3/directives.js +1 -0
- package/dist/vue3/directives.js.map +1 -0
- package/dist/vue3/emoji-DpXo7Avz.js +1 -0
- package/dist/vue3/emoji-DpXo7Avz.js.map +1 -0
- package/dist/vue3/emoji-njsSZBHg.cjs +1 -0
- package/dist/vue3/emoji-njsSZBHg.cjs.map +1 -0
- package/dist/vue3/emoji.cjs +1 -0
- package/dist/vue3/emoji.cjs.map +1 -0
- package/dist/vue3/emoji.js +1 -0
- package/dist/vue3/emoji.js.map +1 -0
- package/dist/vue3/emoji_picker-rUhIsKoU.cjs +1 -0
- package/dist/vue3/emoji_picker-rUhIsKoU.cjs.map +1 -0
- package/dist/vue3/emoji_picker-vEQ--pAv.js +1 -0
- package/dist/vue3/emoji_picker-vEQ--pAv.js.map +1 -0
- package/dist/vue3/emoji_text_wrapper-icAiqYqk.js +1 -0
- package/dist/vue3/emoji_text_wrapper-icAiqYqk.js.map +1 -0
- package/dist/vue3/emoji_text_wrapper-zz_nxXi-.cjs +1 -0
- package/dist/vue3/emoji_text_wrapper-zz_nxXi-.cjs.map +1 -0
- package/dist/vue3/message_input.cjs +2 -1
- package/dist/vue3/message_input.cjs.map +1 -0
- package/dist/vue3/message_input.js +2 -1
- package/dist/vue3/message_input.js.map +1 -0
- package/dist/vue3/{rich_text_editor-0HG24WVq.cjs → rich_text_editor-B2jQbDxj.cjs} +2 -1
- package/dist/vue3/rich_text_editor-B2jQbDxj.cjs.map +1 -0
- package/dist/vue3/{rich_text_editor-m9B5NpUj.js → rich_text_editor-mgv4CNR6.js} +3 -2
- package/dist/vue3/rich_text_editor-mgv4CNR6.js.map +1 -0
- package/dist/vue3/style.css +1 -1
- package/dist/vue3/tooltip-P8ouLQqi.cjs +1 -0
- package/dist/vue3/tooltip-P8ouLQqi.cjs.map +1 -0
- package/dist/vue3/tooltip-S6S4up2q.js +1 -0
- package/dist/vue3/tooltip-S6S4up2q.js.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +1 -1
- package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +9 -0
- package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./rich_text_editor-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./rich_text_editor-RVMsCB8N.cjs"),o=require("./index-Wx7Jagcr.cjs"),l=require("./emoji_picker-njWWAm6V.cjs"),r=require("./tooltip-i2wxFIIi.cjs");require("vue");const u={name:"DtRecipeMessageInput",components:{DtButton:o.DtButton,DtEmojiPicker:l.DtEmojiPicker,DtIcon:o.DtIcon,DtInput:o.DtInput,DtPopover:a.DtPopover,DtRichTextEditor:a.DtRichTextEditor,DtTooltip:r.DtTooltip},mixins:[],inheritAttrs:!1,props:{value:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:""},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(t){return typeof t=="string"?a.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(t):!0}},outputFormat:{type:String,default:"text",validator(t){return a.RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(t)}},link:{type:[Boolean,Object],default:!1},placeholder:{type:String,default:""},disableSend:{type:Boolean,default:!1},maxHeight:{type:String,default:"unset"},showEmojiPicker:{type:Boolean,default:!0},emojiPickerProps:{type:Object,default:()=>({}),validate(t){return["searchNoResultsLabel","searchResultsLabel","searchPlaceholderLabel","skinSelectorButtonTooltipLabel","tabSetLabels"].every(e=>t[e]!=null)}},emojiTooltipMessage:{type:String,default:"Emoji"},emojiButtonAriaLabel:{type:String,default:"emoji button"},showCharacterLimit:{type:[Boolean,Object],default:()=>({count:1500,warning:500,message:""})},showImagePicker:{type:[Boolean,Object],default:()=>({tooltipLabel:"Attach Image",ariaLabel:"image button"})},showSend:{type:[Boolean,Object],default:()=>({icon:"send"})},showCancel:{type:[Boolean,Object],default:()=>({text:"Cancel"})},mentionSuggestion:{type:Object,default:null}},emits:["submit","select-media","add-media","paste-media","cancel","skin-tone","selected-emoji","focus","blur","input"],data(){return{internalInputValue:this.value,hasFocus:!1,imagePickerFocus:!1,emojiPickerFocus:!1,sendButtonFocus:!1,emojiPickerOpened:!1}},computed:{inputLength(){return this.internalInputValue.length},displayCharacterLimitWarning(){return!!this.showCharacterLimit&&this.showCharacterLimit.count-this.inputLength<=this.showCharacterLimit.warning},characterLimitTooltipEnabled(){return this.showCharacterLimit.message&&this.showCharacterLimit.count-this.inputLength<0},isSendDisabled(){return this.disableSend||this.showCharacterLimit&&this.inputLength>this.showCharacterLimit.count},computedCloseButtonProps(){return{ariaLabel:"Close"}},emojiPickerHovered(){return this.emojiPickerFocus||this.emojiPickerOpened}},watch:{value(t){this.internalInputValue=t}},methods:{onDrag(t){t.stopPropagation(),t.preventDefault()},onDrop(t){t.stopPropagation(),t.preventDefault();const e=t.dataTransfer,n=Array.from(e.files);this.$emit("add-media",n)},onPaste(t){if(t.clipboardData.files.length){t.stopPropagation(),t.preventDefault();const e=[...t.clipboardData.files];this.$emit("paste-media",e)}},onSkinTone(t){this.$emit("skin-tone",t)},onSelectEmoji(t){if(!t){this.emojiPickerOpened=!1;return}this.$refs.richTextEditor.editor.commands.insertContent({type:"emoji",attrs:{code:t.shortname}}),this.emojiPickerOpened=!1,this.$emit("selected-emoji",t)},onSelectImage(){this.$refs.messageInputImageUpload.$refs.input.click()},onImageUpload(){this.$emit("select-media",this.$refs.messageInputImageUpload.$refs.input.files)},toggleEmojiPicker(){this.emojiPickerOpened=!this.emojiPickerOpened},onSend(){this.isSendDisabled||this.$emit("submit",this.internalInputValue)},onCancel(){this.$emit("cancel")},onFocus(t){var e;this.hasFocus=!0,(e=this.$refs.richTextEditor)==null||e.focusEditor(),this.$emit("focus",t)},onBlur(t){this.hasFocus=!1,this.$emit("blur",t)},onInput(t){this.$emit("input",t)}}};var c=function(){var e=this,n=e._self._c;return n("div",{class:["d-d-flex","d-fd-column","d-bar8","d-baw1","d-ba","d-c-text",{"d-bc-bold d-bs-sm":e.hasFocus,"d-bc-default":!e.hasFocus}],attrs:{"data-qa":"dt-message-input",role:"presentation"},on:{click:function(i){var s;(s=e.$refs.richTextEditor)==null||s.focusEditor()},"drag-enter":e.onDrag,"drag-over":e.onDrag,drop:e.onDrop,keydown: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.onSend.apply(null,arguments)},paste:e.onPaste}},[n("div",{staticClass:"d-of-auto d-mx16 d-mt8 d-mb4",style:{"max-height":e.maxHeight}},[n("dt-rich-text-editor",e._b({ref:"richTextEditor",attrs:{editable:e.editable,"input-aria-label":e.inputAriaLabel,"input-class":e.inputClass,"output-format":e.outputFormat,"auto-focus":e.autoFocus,link:e.link,placeholder:e.placeholder,"mention-suggestion":e.mentionSuggestion},on:{focus:e.onFocus,blur:e.onBlur,input:function(i){return e.onInput(i)}},model:{value:e.internalInputValue,callback:function(i){e.internalInputValue=i},expression:"internalInputValue"}},"dt-rich-text-editor",e.$attrs,!1))],1),e._t("middle"),n("section",{staticClass:"d-d-flex d-jc-space-between d-mx8 d-my4"},[n("div",{staticClass:"d-d-flex"},[e.showImagePicker?n("dt-tooltip",{attrs:{placement:"top-start",message:e.showImagePicker.tooltipLabel,offset:[-4,-4]},scopedSlots:e._u([{key:"anchor",fn:function(){return[n("dt-button",{attrs:{"data-qa":"dt-message-input-image-btn",size:"sm",circle:"",kind:e.imagePickerFocus?"default":"muted",importance:"clear","aria-label":e.showImagePicker.ariaLabel},on:{click:e.onSelectImage,mouseenter:function(i){e.imagePickerFocus=!0},mouseleave:function(i){e.imagePickerFocus=!1},focus:function(i){e.imagePickerFocus=!0},blur:function(i){e.imagePickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[n("dt-icon",{attrs:{name:"image",size:"300"}})]},proxy:!0}],null,!1,2561380377)}),n("dt-input",{ref:"messageInputImageUpload",staticClass:"d-ps-absolute",attrs:{"data-qa":"dt-message-input-image-input",type:"file",multiple:"",hidden:""},on:{input:e.onImageUpload}})]},proxy:!0}],null,!1,3687934814)}):e._e(),e.showEmojiPicker?n("dt-popover",{attrs:{"data-qa":"dt-message-input-emoji-picker-popover",open:e.emojiPickerOpened,"initial-focus-element":"#searchInput",padding:"none"},on:{opened:i=>{e.emojiPickerOpened=i}},scopedSlots:e._u([{key:"anchor",fn:function(){return[n("dt-tooltip",{attrs:{message:e.emojiTooltipMessage,offset:[0,-4]},scopedSlots:e._u([{key:"anchor",fn:function(){return[n("dt-button",{attrs:{"data-qa":"dt-message-input-emoji-picker-btn",size:"sm",circle:"",kind:e.emojiPickerHovered?"default":"muted",importance:"clear","aria-label":e.emojiButtonAriaLabel,offset:[0,0]},on:{click:e.toggleEmojiPicker,mouseenter:function(i){e.emojiPickerFocus=!0},mouseleave:function(i){e.emojiPickerFocus=!1},focus:function(i){e.emojiPickerFocus=!0},blur:function(i){e.emojiPickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[n("dt-icon",{attrs:{name:e.emojiPickerHovered?"very-satisfied":"satisfied",size:"300"}})]},proxy:!0}],null,!1,352772906)})]},proxy:!0}],null,!1,3933528398)})]},proxy:!0},{key:"content",fn:function(){return[n("dt-emoji-picker",e._b({on:{"skin-tone":e.onSkinTone,"selected-emoji":e.onSelectEmoji}},"dt-emoji-picker",e.emojiPickerProps,!1))]},proxy:!0}],null,!1,1278205067)}):e._e()],1),n("div",{staticClass:"d-d-flex"},[e.showCharacterLimit?n("dt-tooltip",{staticClass:"dt-message-input--remaining-char-tooltip",attrs:{placement:"top-end",enabled:e.characterLimitTooltipEnabled,message:e.showCharacterLimit.message,offset:[10,-8]},scopedSlots:e._u([{key:"anchor",fn:function(){return[n("p",{directives:[{name:"show",rawName:"v-show",value:e.displayCharacterLimitWarning,expression:"displayCharacterLimitWarning"}],staticClass:"d-fc-error d-mr16 dt-message-input--remaining-char",attrs:{"data-qa":"dt-message-input-character-limit"}},[e._v(" "+e._s(e.showCharacterLimit.count-e.inputLength)+" ")])]},proxy:!0}],null,!1,2591914334)}):e._e(),e.showCancel?n("dt-button",{staticClass:"dt-message-input--cancel-button",attrs:{"data-qa":"dt-message-input-cancel-button",size:"sm",kind:"muted",importance:"clear","aria-label":e.showCancel.ariaLabel},on:{click:e.onCancel}},[n("p",[e._v(e._s(e.showCancel.text))])]):e._e(),e.showSend?n("dt-tooltip",{attrs:{placement:"top-end",enabled:!e.showSend,message:e.showSend.tooltipLabel,show:!e.isSendDisabled&&e.sendButtonFocus,offset:[6,-8]},scopedSlots:e._u([{key:"anchor",fn:function(){return[n("dt-button",{class:["d-btn--circle",{"message-input-button__disabled d-fc-muted":e.isSendDisabled}],attrs:{"data-qa":"dt-message-input-send-btn",size:"sm",kind:"default",importance:"primary","aria-label":e.showSend.ariaLabel,"aria-disabled":e.isSendDisabled},on:{click:e.onSend,mouseenter:function(i){e.sendButtonFocus=!0},mouseleave:function(i){e.sendButtonFocus=!1},focus:function(i){e.sendButtonFocus=!0},blur:function(i){e.sendButtonFocus=!1}},scopedSlots:e._u([e.showSend.icon?{key:"icon",fn:function(){return[n("dt-icon",{attrs:{name:e.showSend.icon,size:"300"}})]},proxy:!0}:null],null,!0)},[e.showSend.text?[n("p",[e._v(e._s(e.showSend.text))])]:e._e()],2)]},proxy:!0}],null,!1,2968465028)}):e._e()],1)])],2)},d=[],p=r.normalizeComponent(u,c,d,!1,null,null,null,null);const m=p.exports;exports.DtRichTextEditor=a.DtRichTextEditor;exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=a.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES;exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=a.RICH_TEXT_EDITOR_OUTPUT_FORMATS;exports.DtRecipeMessageInput=m;
|
|
2
|
+
//# sourceMappingURL=message_input.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_input.cjs","sources":["../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-message-input\"\n role=\"presentation\"\n :class=\"['d-d-flex', 'd-fd-column', 'd-bar8', 'd-baw1', 'd-ba', 'd-c-text',\n { 'd-bc-bold d-bs-sm': hasFocus, 'd-bc-default': !hasFocus }]\"\n @click=\"$refs.richTextEditor?.focusEditor()\"\n @drag-enter=\"onDrag\"\n @drag-over=\"onDrag\"\n @drop=\"onDrop\"\n @keydown.enter.exact=\"onSend\"\n @paste=\"onPaste\"\n >\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb4\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"link\"\n :placeholder=\"placeholder\"\n :mention-suggestion=\"mentionSuggestion\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-d-flex d-jc-space-between d-mx8 d-my4\">\n <!-- Left content -->\n <div class=\"d-d-flex\">\n <dt-tooltip\n v-if=\"showImagePicker\"\n placement=\"top-start\"\n :message=\"showImagePicker.tooltipLabel\"\n :offset=\"[-4, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-image-btn\"\n size=\"sm\"\n circle\n :kind=\"imagePickerFocus ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon\n name=\"image\"\n size=\"300\"\n />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-message-input-image-input\"\n type=\"file\"\n class=\"d-ps-absolute\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n </template>\n </dt-tooltip>\n <dt-popover\n v-if=\"showEmojiPicker\"\n data-qa=\"dt-message-input-emoji-picker-popover\"\n :open=\"emojiPickerOpened\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n @opened=\"(open) => { emojiPickerOpened = open }\"\n >\n <template #anchor>\n <dt-tooltip\n :message=\"emojiTooltipMessage\"\n :offset=\"[0, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-emoji-picker-btn\"\n size=\"sm\"\n circle\n :kind=\"emojiPickerHovered ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n :offset=\"[0, 0]\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon\n :name=\"!emojiPickerHovered ? 'satisfied' : 'very-satisfied'\"\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n <template #content>\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"onSelectEmoji\"\n />\n </template>\n </dt-popover>\n </div>\n <!-- Right content -->\n <div class=\"d-d-flex\">\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"dt-message-input--remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, -8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-fc-error d-mr16 dt-message-input--remaining-char\"\n data-qa=\"dt-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-message-input-cancel-button\"\n class=\"dt-message-input--cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- Send button -->\n <dt-tooltip\n v-if=\"showSend\"\n placement=\"top-end\"\n :enabled=\"!showSend\"\n :message=\"showSend.tooltipLabel\"\n :show=\"!isSendDisabled && sendButtonFocus\"\n :offset=\"[6, -8]\"\n >\n <template #anchor>\n <!-- Right positioned UI - send button -->\n <dt-button\n data-qa=\"dt-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-btn--circle',\n {\n 'message-input-button__disabled d-fc-muted': isSendDisabled,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n @mouseenter=\"sendButtonFocus = true\"\n @mouseleave=\"sendButtonFocus = false\"\n @focus=\"sendButtonFocus = true\"\n @blur=\"sendButtonFocus = false\"\n >\n <template\n v-if=\"showSend.icon\"\n #icon\n >\n <dt-icon\n :name=\"showSend.icon\"\n size=\"300\"\n />\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtIcon,\n DtInput,\n DtPopover,\n DtRichTextEditor,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'text',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Enables the Link extension and optionally passes configurations to it\n */\n link: {\n type: [Boolean, Object],\n default: false,\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every(prop => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({ icon: 'send' }),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n imagePickerFocus: false,\n emojiPickerFocus: false,\n sendButtonFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onDrag (e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n onDrop (e) {\n e.stopPropagation();\n e.preventDefault();\n\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji) {\n if (!emoji) {\n this.emojiPickerOpened = false;\n return;\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.emojiPickerOpened = false;\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$refs.richTextEditor?.focusEditor();\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-message-input--remaining-char-tooltip {\n margin-top: auto;\n margin-bottom: auto;\n}\n.dt-message-input--remaining-char {\n font-size: 1.2rem;\n}\n\n.message-input-button__disabled {\n background-color: unset;\n color: var(--theme-sidebar-icon-color);\n cursor: default;\n}\n\n.dt-message-input--cancel-button {\n margin-right: var(--dt-space-300);\n}\n</style>\n"],"names":["_sfc_main","DtButton","DtEmojiPicker","DtIcon","DtInput","DtPopover","DtRichTextEditor","DtTooltip","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","emojiPickerProps","prop","newValue","e","dt","files","skinTone","emoji","event","_a"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as o, a as s, R as r, b as l } from "./rich_text_editor-
|
|
1
|
+
import { D as o, a as s, R as r, b as l } from "./rich_text_editor-eMvTs_Gp.js";
|
|
2
2
|
import { t as u, w as c, x as d } from "./index-OF94C6nQ.js";
|
|
3
3
|
import { D as m } from "./emoji_picker-kiTOKaq8.js";
|
|
4
4
|
import { n as p, D as f } from "./tooltip-88U5vFMA.js";
|
|
@@ -437,3 +437,4 @@ export {
|
|
|
437
437
|
r as RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,
|
|
438
438
|
l as RICH_TEXT_EDITOR_OUTPUT_FORMATS
|
|
439
439
|
};
|
|
440
|
+
//# sourceMappingURL=message_input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_input.js","sources":["../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<!-- eslint-disable vue/no-restricted-class -->\n<template>\n <div\n data-qa=\"dt-message-input\"\n role=\"presentation\"\n :class=\"['d-d-flex', 'd-fd-column', 'd-bar8', 'd-baw1', 'd-ba', 'd-c-text',\n { 'd-bc-bold d-bs-sm': hasFocus, 'd-bc-default': !hasFocus }]\"\n @click=\"$refs.richTextEditor?.focusEditor()\"\n @drag-enter=\"onDrag\"\n @drag-over=\"onDrag\"\n @drop=\"onDrop\"\n @keydown.enter.exact=\"onSend\"\n @paste=\"onPaste\"\n >\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n class=\"d-of-auto d-mx16 d-mt8 d-mb4\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"link\"\n :placeholder=\"placeholder\"\n :mention-suggestion=\"mentionSuggestion\"\n v-bind=\"$attrs\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n @input=\"onInput($event)\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-d-flex d-jc-space-between d-mx8 d-my4\">\n <!-- Left content -->\n <div class=\"d-d-flex\">\n <dt-tooltip\n v-if=\"showImagePicker\"\n placement=\"top-start\"\n :message=\"showImagePicker.tooltipLabel\"\n :offset=\"[-4, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-image-btn\"\n size=\"sm\"\n circle\n :kind=\"imagePickerFocus ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon\n name=\"image\"\n size=\"300\"\n />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-message-input-image-input\"\n type=\"file\"\n class=\"d-ps-absolute\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n </template>\n </dt-tooltip>\n <dt-popover\n v-if=\"showEmojiPicker\"\n data-qa=\"dt-message-input-emoji-picker-popover\"\n :open=\"emojiPickerOpened\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n @opened=\"(open) => { emojiPickerOpened = open }\"\n >\n <template #anchor>\n <dt-tooltip\n :message=\"emojiTooltipMessage\"\n :offset=\"[0, -4]\"\n >\n <template #anchor>\n <dt-button\n data-qa=\"dt-message-input-emoji-picker-btn\"\n size=\"sm\"\n circle\n :kind=\"emojiPickerHovered ? 'default' : 'muted'\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n :offset=\"[0, 0]\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon\n :name=\"!emojiPickerHovered ? 'satisfied' : 'very-satisfied'\"\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n <template #content>\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"onSelectEmoji\"\n />\n </template>\n </dt-popover>\n </div>\n <!-- Right content -->\n <div class=\"d-d-flex\">\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"dt-message-input--remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, -8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-fc-error d-mr16 dt-message-input--remaining-char\"\n data-qa=\"dt-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-message-input-cancel-button\"\n class=\"dt-message-input--cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- Send button -->\n <dt-tooltip\n v-if=\"showSend\"\n placement=\"top-end\"\n :enabled=\"!showSend\"\n :message=\"showSend.tooltipLabel\"\n :show=\"!isSendDisabled && sendButtonFocus\"\n :offset=\"[6, -8]\"\n >\n <template #anchor>\n <!-- Right positioned UI - send button -->\n <dt-button\n data-qa=\"dt-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-btn--circle',\n {\n 'message-input-button__disabled d-fc-muted': isSendDisabled,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n @mouseenter=\"sendButtonFocus = true\"\n @mouseleave=\"sendButtonFocus = false\"\n @focus=\"sendButtonFocus = true\"\n @blur=\"sendButtonFocus = false\"\n >\n <template\n v-if=\"showSend.icon\"\n #icon\n >\n <dt-icon\n :name=\"showSend.icon\"\n size=\"300\"\n />\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtIcon,\n DtInput,\n DtPopover,\n DtRichTextEditor,\n DtTooltip,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'text',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Enables the Link extension and optionally passes configurations to it\n */\n link: {\n type: [Boolean, Object],\n default: false,\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every(prop => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({ icon: 'send' }),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n ],\n\n data () {\n return {\n internalInputValue: this.value, // internal input content\n hasFocus: false,\n imagePickerFocus: false,\n emojiPickerFocus: false,\n sendButtonFocus: false,\n emojiPickerOpened: false,\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n onDrag (e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n onDrop (e) {\n e.stopPropagation();\n e.preventDefault();\n\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji) {\n if (!emoji) {\n this.emojiPickerOpened = false;\n return;\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.emojiPickerOpened = false;\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$refs.richTextEditor?.focusEditor();\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-message-input--remaining-char-tooltip {\n margin-top: auto;\n margin-bottom: auto;\n}\n.dt-message-input--remaining-char {\n font-size: 1.2rem;\n}\n\n.message-input-button__disabled {\n background-color: unset;\n color: var(--theme-sidebar-icon-color);\n cursor: default;\n}\n\n.dt-message-input--cancel-button {\n margin-right: var(--dt-space-300);\n}\n</style>\n"],"names":["_sfc_main","DtButton","DtEmojiPicker","DtIcon","DtInput","DtPopover","DtRichTextEditor","DtTooltip","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","emojiPickerProps","prop","newValue","e","dt","files","skinTone","emoji","event","_a"],"mappings":"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"}
|
|
@@ -94,4 +94,5 @@ img.ProseMirror-separator {
|
|
|
94
94
|
`,ug="️",dg="";let yn=null,bn=null;function fg(n){n===void 0&&(n=[]);const e={};ie.groups=e;const t=new ie;yn==null&&(yn=Go(ig)),bn==null&&(bn=Go(sg)),k(t,"'",nr),k(t,"{",Ut),k(t,"}",Jt),k(t,"[",Hn),k(t,"]",jn),k(t,"(",Vn),k(t,")",qn),k(t,"<",Kn),k(t,">",Wn),k(t,"(",Un),k(t,")",Jn),k(t,"「",Gn),k(t,"」",Yn),k(t,"『",Xn),k(t,"』",Qn),k(t,"<",Zn),k(t,">",er),k(t,"&",tr),k(t,"*",rr),k(t,"@",He),k(t,"`",sr),k(t,"^",or),k(t,":",Ve),k(t,",",ws),k(t,"$",lr),k(t,".",Se),k(t,"=",ar),k(t,"!",As),k(t,"-",xe),k(t,"%",cr),k(t,"|",ur),k(t,"+",dr),k(t,"#",fr),k(t,"?",hr),k(t,'"',Ns),k(t,"/",Oe),k(t,";",Ps),k(t,"~",Gt),k(t,"_",pr),k(t,"\\",ir);const r=ue(t,Ci,Ts,{[Gi]:!0});ue(r,Ci,r);const i=ue(t,bt,Ne,{[Yi]:!0});ue(i,bt,i);const s=ue(t,vi,Zi,{[Xi]:!0});ue(s,bt),ue(s,vi,s);const o=ue(t,Uo,Ja,{[Ko]:!0});k(t,Jo,Ms,{[Ko]:!0}),k(o,Jo),ue(o,Uo,o);const l=ue(t,Ei,Ga,{[Ua]:!0});ue(l,Ei,l),k(l,ug,l);const a=k(l,dg);ue(a,Ei,l);const c=[[bt,i]],u=[[bt,null],[vi,s]];for(let d=0;d<yn.length;d++)$e(t,yn[d],es,Ne,c);for(let d=0;d<bn.length;d++)$e(t,bn[d],ts,Zi,u);ot(es,{tld:!0,ascii:!0},e),ot(ts,{utld:!0,alpha:!0},e),$e(t,"file",Tn,Ne,c),$e(t,"mailto",Tn,Ne,c),$e(t,"http",xt,Ne,c),$e(t,"https",xt,Ne,c),$e(t,"ftp",xt,Ne,c),$e(t,"ftps",xt,Ne,c),ot(Tn,{scheme:!0,ascii:!0},e),ot(xt,{slashscheme:!0,ascii:!0},e),n=n.sort((d,f)=>d[0]>f[0]?1:-1);for(let d=0;d<n.length;d++){const f=n[d][0],p=n[d][1]?{[og]:!0}:{[lg]:!0};f.indexOf("-")>=0?p[Qi]=!0:bt.test(f)?Ci.test(f)?p[Cn]=!0:p[Yi]=!0:p[Gi]=!0,Wo(t,f,f,p)}return Wo(t,"localhost",ln,{ascii:!0}),t.jd=new ie(mr),{start:t,tokens:It({groups:e},Ya)}}function hg(n,e){const t=pg(e.replace(/[A-Z]/g,l=>l.toLowerCase())),r=t.length,i=[];let s=0,o=0;for(;o<r;){let l=n,a=null,c=0,u=null,d=-1,f=-1;for(;o<r&&(a=l.go(t[o]));)l=a,l.accepts()?(d=0,f=0,u=l):d>=0&&(d+=t[o].length,f++),c+=t[o].length,s+=t[o].length,o++;s-=d,o-=f,c-=d,i.push({t:u.t,v:e.slice(s-c,s),s:s-c,e:s})}return i}function pg(n){const e=[],t=n.length;let r=0;for(;r<t;){let i=n.charCodeAt(r),s,o=i<55296||i>56319||r+1===t||(s=n.charCodeAt(r+1))<56320||s>57343?n[r]:n.slice(r,r+2);e.push(o),r+=o.length}return e}function $e(n,e,t,r,i){let s;const o=e.length;for(let l=0;l<o-1;l++){const a=e[l];n.j[a]?s=n.j[a]:(s=new ie(r),s.jr=i.slice(),n.j[a]=s),n=s}return s=new ie(t),s.jr=i.slice(),n.j[e[o-1]]=s,s}function Go(n){const e=[],t=[];let r=0,i="0123456789";for(;r<n.length;){let s=0;for(;i.indexOf(n[r+s])>=0;)s++;if(s>0){e.push(t.join(""));for(let o=parseInt(n.substring(r,r+s),10);o>0;o--)t.pop();r+=s}else t.push(n[r]),r++}return e}const an={defaultProtocol:"http",events:null,format:Yo,formatHref:Yo,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function Ds(n,e){e===void 0&&(e=null);let t=It({},an);n&&(t=It(t,n instanceof Ds?n.o:n));const r=t.ignoreTags,i=[];for(let s=0;s<r.length;s++)i.push(r[s].toUpperCase());this.o=t,e&&(this.defaultRender=e),this.ignoreTags=i}Ds.prototype={o:an,ignoreTags:[],defaultRender(n){return n},check(n){return this.get("validate",n.toString(),n)},get(n,e,t){const r=e!=null;let i=this.o[n];return i&&(typeof i=="object"?(i=t.t in i?i[t.t]:an[n],typeof i=="function"&&r&&(i=i(e,t))):typeof i=="function"&&r&&(i=i(e,t.t,t)),i)},getObj(n,e,t){let r=this.o[n];return typeof r=="function"&&e!=null&&(r=r(e,t.t,t)),r},render(n){const e=n.render(this);return(this.get("render",null,n)||this.defaultRender)(e,n.t,n)}};function Yo(n){return n}function Xa(n,e){this.t="token",this.v=n,this.tk=e}Xa.prototype={isLink:!1,toString(){return this.v},toHref(n){return this.toString()},toFormattedString(n){const e=this.toString(),t=n.get("truncate",e,this),r=n.get("format",e,this);return t&&r.length>t?r.substring(0,t)+"…":r},toFormattedHref(n){return n.get("formatHref",this.toHref(n.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(n){return n===void 0&&(n=an.defaultProtocol),{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(n),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(n){return{type:this.t,value:this.toFormattedString(n),isLink:this.isLink,href:this.toFormattedHref(n),start:this.startIndex(),end:this.endIndex()}},validate(n){return n.get("validate",this.toString(),this)},render(n){const e=this,t=this.toHref(n.get("defaultProtocol")),r=n.get("formatHref",t,this),i=n.get("tagName",t,e),s=this.toFormattedString(n),o={},l=n.get("className",t,e),a=n.get("target",t,e),c=n.get("rel",t,e),u=n.getObj("attributes",t,e),d=n.getObj("events",t,e);return o.href=r,l&&(o.class=l),a&&(o.target=a),c&&(o.rel=c),u&&It(o,u),{tagName:i,attributes:o,content:s,eventListeners:d}}};function Qr(n,e){class t extends Xa{constructor(i,s){super(i,s),this.t=n}}for(const r in e)t.prototype[r]=e[r];return t.t=n,t}const Xo=Qr("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Qo=Qr("text"),mg=Qr("nl"),kn=Qr("url",{isLink:!0,toHref(n){return n===void 0&&(n=an.defaultProtocol),this.hasProtocol()?this.v:`${n}://${this.v}`},hasProtocol(){const n=this.tk;return n.length>=2&&n[0].t!==ln&&n[1].t===Ve}}),de=n=>new ie(n);function gg(n){let{groups:e}=n;const t=e.domain.concat([tr,rr,He,ir,sr,or,lr,ar,xe,Ts,cr,ur,dr,fr,Oe,mr,Gt,pr]),r=[nr,Ve,ws,Se,As,hr,Ns,Ps,Kn,Wn,Ut,Jt,jn,Hn,Vn,qn,Un,Jn,Gn,Yn,Xn,Qn,Zn,er],i=[tr,nr,rr,ir,sr,or,lr,ar,xe,Ut,Jt,cr,ur,dr,fr,hr,Oe,mr,Gt,pr],s=de(),o=k(s,Gt);M(o,i,o),M(o,e.domain,o);const l=de(),a=de(),c=de();M(s,e.domain,l),M(s,e.scheme,a),M(s,e.slashscheme,c),M(l,i,o),M(l,e.domain,l);const u=k(l,He);k(o,He,u),k(a,He,u),k(c,He,u);const d=k(o,Se);M(d,i,o),M(d,e.domain,o);const f=de();M(u,e.domain,f),M(f,e.domain,f);const h=k(f,Se);M(h,e.domain,f);const p=de(Xo);M(h,e.tld,p),M(h,e.utld,p),k(u,ln,p);const m=k(f,xe);M(m,e.domain,f),M(p,e.domain,f),k(p,Se,h),k(p,xe,m);const g=k(p,Ve);M(g,e.numeric,Xo);const y=k(l,xe),O=k(l,Se);M(y,e.domain,l),M(O,i,o),M(O,e.domain,l);const C=de(kn);M(O,e.tld,C),M(O,e.utld,C),M(C,e.domain,l),M(C,i,o),k(C,Se,O),k(C,xe,y),k(C,He,u);const R=k(C,Ve),I=de(kn);M(R,e.numeric,I);const T=de(kn),L=de();M(T,t,T),M(T,r,L),M(L,t,T),M(L,r,L),k(C,Oe,T),k(I,Oe,T);const D=k(a,Ve),v=k(c,Ve),W=k(v,Oe),me=k(W,Oe);M(a,e.domain,l),k(a,Se,O),k(a,xe,y),M(c,e.domain,l),k(c,Se,O),k(c,xe,y),M(D,e.domain,T),k(D,Oe,T),M(me,e.domain,T),M(me,t,T),k(me,Oe,T);const tt=[[Ut,Jt],[Hn,jn],[Vn,qn],[Kn,Wn],[Un,Jn],[Gn,Yn],[Xn,Qn],[Zn,er]];for(let _t=0;_t<tt.length;_t++){const[Re,_e]=tt[_t],Le=k(T,Re);k(L,Re,Le),k(Le,_e,T);const le=de(kn);M(Le,t,le);const Be=de();M(Le,r),M(le,t,le),M(le,r,Be),M(Be,t,le),M(Be,r,Be),k(le,_e,T),k(Be,_e,T)}return k(s,ln,C),k(s,Ms,mg),{start:s,tokens:Ya}}function yg(n,e,t){let r=t.length,i=0,s=[],o=[];for(;i<r;){let l=n,a=null,c=null,u=0,d=null,f=-1;for(;i<r&&!(a=l.go(t[i].t));)o.push(t[i++]);for(;i<r&&(c=a||l.go(t[i].t));)a=null,l=c,l.accepts()?(f=0,d=l):f>=0&&f++,i++,u++;if(f<0)i-=u,i<r&&(o.push(t[i]),i++);else{o.length>0&&(s.push(Ti(Qo,e,o)),o=[]),i-=f,u-=f;const h=d.t,p=t.slice(i-u,i);s.push(Ti(h,e,p))}}return o.length>0&&s.push(Ti(Qo,e,o)),s}function Ti(n,e,t){const r=t[0].s,i=t[t.length-1].e,s=e.slice(r,i);return new n(s,t)}const bg=typeof console<"u"&&console&&console.warn||(()=>{}),kg="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",B={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function Sg(){ie.groups={},B.scanner=null,B.parser=null,B.tokenQueue=[],B.pluginQueue=[],B.customSchemes=[],B.initialized=!1}function Zo(n,e){if(e===void 0&&(e=!1),B.initialized&&bg(`linkifyjs: already initialized - will not register custom scheme "${n}" ${kg}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(n))throw new Error(`linkifyjs: incorrect scheme format.
|
|
95
95
|
1. Must only contain digits, lowercase ASCII letters or "-"
|
|
96
96
|
2. Cannot start or end with "-"
|
|
97
|
-
3. "-" cannot repeat`);B.customSchemes.push([n,e])}function xg(){B.scanner=fg(B.customSchemes);for(let n=0;n<B.tokenQueue.length;n++)B.tokenQueue[n][1]({scanner:B.scanner});B.parser=gg(B.scanner.tokens);for(let n=0;n<B.pluginQueue.length;n++)B.pluginQueue[n][1]({scanner:B.scanner,parser:B.parser});B.initialized=!0}function Og(n){return B.initialized||xg(),yg(B.parser.start,n,hg(B.scanner.start,n))}function Is(n,e,t){if(e===void 0&&(e=null),t===void 0&&(t=null),e&&typeof e=="object"){if(t)throw Error(`linkifyjs: Invalid link type ${e}; must be a string`);t=e,e=null}const r=new Ds(t),i=Og(n),s=[];for(let o=0;o<i.length;o++){const l=i[o];l.isLink&&(!e||l.t===e)&&r.check(l)&&s.push(l.toFormattedObject(r))}return s}function vg(n){return new ne({key:new oe("autolink"),appendTransaction:(e,t,r)=>{const i=e.some(c=>c.docChanged)&&!t.doc.eq(r.doc),s=e.some(c=>c.getMeta("preventAutolink"));if(!i||s)return;const{tr:o}=r,l=za(t.doc,[...e]);if(Va(l).forEach(({newRange:c})=>{const u=Ha(r.doc,c,h=>h.isTextblock);let d,f;if(u.length>1?(d=u[0],f=r.doc.textBetween(d.pos,d.pos+d.node.nodeSize,void 0," ")):u.length&&r.doc.textBetween(c.from,c.to," "," ").endsWith(" ")&&(d=u[0],f=r.doc.textBetween(d.pos,c.to,void 0," ")),d&&f){const h=f.split(" ").filter(g=>g!=="");if(h.length<=0)return!1;const p=h[h.length-1],m=d.pos+f.lastIndexOf(p);if(!p)return!1;Is(p).filter(g=>g.isLink).map(g=>({...g,from:m+g.start+1,to:m+g.end+1})).filter(g=>r.schema.marks.code?!r.doc.rangeHasMark(g.from,g.to,r.schema.marks.code):!0).filter(g=>n.validate?n.validate(g.value):!0).forEach(g=>{Nr(g.from,g.to,r.doc).some(y=>y.mark.type===n.type)||o.addMark(g.from,g.to,n.type.create({href:g.href}))})}}),!!o.steps.length)return o}})}function Eg(n){return new ne({key:new oe("handleClickLink"),props:{handleClick:(e,t,r)=>{var i,s;if(r.button!==0||r.target.nodeName!=="A")return!1;const l=ja(e.state,n.type.name),a=r.target,c=(i=a==null?void 0:a.href)!==null&&i!==void 0?i:l.href,u=(s=a==null?void 0:a.target)!==null&&s!==void 0?s:l.target;return a&&c?(e.editable&&window.open(c,u),!0):!1}}})}function Cg(n){return new ne({key:new oe("handlePasteLink"),props:{handlePaste:(e,t,r)=>{const{state:i}=e,{selection:s}=i,{empty:o}=s;if(o)return!1;let l="";r.content.forEach(c=>{l+=c.textContent});const a=Is(l).find(c=>c.isLink&&c.value===l);return!l||!a?!1:(n.editor.commands.setMark(n.type,{href:a.href}),!0)}}})}const Tg=pe.create({name:"link",priority:1e3,keepOnSplit:!1,onCreate(){this.options.protocols.forEach(n=>{if(typeof n=="string"){Zo(n);return}Zo(n.scheme,n.optionalSlashes)})},onDestroy(){Sg()},inclusive(){return this.options.autolink},addOptions(){return{openOnClick:!0,linkOnPaste:!0,autolink:!0,protocols:[],HTMLAttributes:{target:"_blank",rel:"noopener noreferrer nofollow",class:null},validate:void 0}},addAttributes(){return{href:{default:null},target:{default:this.options.HTMLAttributes.target},rel:{default:this.options.HTMLAttributes.rel},class:{default:this.options.HTMLAttributes.class}}},parseHTML(){return[{tag:'a[href]:not([href *= "javascript:" i])'}]},renderHTML({HTMLAttributes:n}){var e;return!((e=n.href)===null||e===void 0)&&e.startsWith("javascript:")?["a",$(this.options.HTMLAttributes,{...n,href:""}),0]:["a",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setLink:n=>({chain:e})=>e().setMark(this.name,n).setMeta("preventAutolink",!0).run(),toggleLink:n=>({chain:e})=>e().toggleMark(this.name,n,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run(),unsetLink:()=>({chain:n})=>n().unsetMark(this.name,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run()}},addPasteRules(){return[Dt({find:(n,e)=>{var t;const r=(t=e==null?void 0:e.clipboardData)===null||t===void 0?void 0:t.getData("text/html"),i=[];if(r){const s=new DOMParser().parseFromString(r,"text/html"),o=s.querySelectorAll("a");o.length&&[...o].forEach(l=>i.push({text:l.innerText,data:{href:l.getAttribute("href")},index:s.body.innerText.indexOf(l.innerText)+l.innerText.length}))}if(n){const s=Is(n).filter(o=>o.isLink);s.length&&s.forEach(o=>i.push({text:o.value,data:{href:o.href},index:o.start}))}return i},type:this.type,getAttributes:n=>{var e;return{href:(e=n.data)===null||e===void 0?void 0:e.href}}})]},addProseMirrorPlugins(){const n=[];return this.options.autolink&&n.push(vg({type:this.type,validate:this.options.validate})),this.options.openOnClick&&n.push(Eg({type:this.type})),this.options.linkOnPaste&&n.push(Cg({editor:this.editor,type:this.type})),n}}),Mg=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:n}){return["li",$(this.options.HTMLAttributes,n),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),wg=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:n}){return["li",$(this.options.HTMLAttributes,n),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),el=pe.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:n=>n.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["span",$(this.options.HTMLAttributes,n),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:n,commands:e})=>{const t=Ar(n,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),tl=/^(\d+)\.\s$/,Ag=Y.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:n=>n.hasAttribute("start")?parseInt(n.getAttribute("start")||"",10):1}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:n}){const{start:e,...t}=n;return e===1?["ol",$(this.options.HTMLAttributes,t),0]:["ol",$(this.options.HTMLAttributes,n),0]},addCommands(){return{toggleOrderedList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(wg.name,this.editor.getAttributes(el.name)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let n=on({find:tl,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(n=on({find:tl,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(el.name)}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1],editor:this.editor})),[n]}}),Ng=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))$/,Pg=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))/g,Dg=pe.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["s",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setStrike:()=>({commands:n})=>n.setMark(this.name),toggleStrike:()=>({commands:n})=>n.toggleMark(this.name),unsetStrike:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){const n={};return vs()?n["Mod-Shift-s"]=()=>this.editor.commands.toggleStrike():n["Ctrl-Shift-s"]=()=>this.editor.commands.toggleStrike(),n},addInputRules(){return[sn({find:Ng,type:this.type})]},addPasteRules(){return[Dt({find:Pg,type:this.type})]}}),Ig=pe.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["u",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setUnderline:()=>({commands:n})=>n.setMark(this.name),toggleUnderline:()=>({commands:n})=>n.toggleMark(this.name),unsetUnderline:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),Rg=Y.create({name:"text",group:"inline"}),_g=ke.create({name:"textAlign",addOptions(){return{types:[],alignments:["left","center","right","justify"],defaultAlignment:"left"}},addGlobalAttributes(){return[{types:this.options.types,attributes:{textAlign:{default:this.options.defaultAlignment,parseHTML:n=>n.style.textAlign||this.options.defaultAlignment,renderHTML:n=>n.textAlign===this.options.defaultAlignment?{}:{style:`text-align: ${n.textAlign}`}}}}]},addCommands(){return{setTextAlign:n=>({commands:e})=>this.options.alignments.includes(n)?this.options.types.every(t=>e.updateAttributes(t,{textAlign:n})):!1,unsetTextAlign:()=>({commands:n})=>this.options.types.every(e=>n.resetAttributes(e,"textAlign"))}},addKeyboardShortcuts(){return{"Mod-Shift-l":()=>this.editor.commands.setTextAlign("left"),"Mod-Shift-e":()=>this.editor.commands.setTextAlign("center"),"Mod-Shift-r":()=>this.editor.commands.setTextAlign("right"),"Mod-Shift-j":()=>this.editor.commands.setTextAlign("justify")}}}),Lg={name:"EmojiComponent",components:{NodeViewWrapper:qa,DtEmoji:G.DtEmoji},props:Ka};var Bg=function(){var e=this,t=e._self._c;return t("node-view-wrapper",{staticClass:"d-d-inline-block d-va-bottom d-lh0"},[t("dt-emoji",{attrs:{size:"500",code:e.node.attrs.code}})],1)},$g=[],Fg=A.normalizeComponent(Lg,Bg,$g,!1,null,null,null,null);const zg=Fg.exports;function Hg(n){var e;const{char:t,allowSpaces:r,allowedPrefixes:i,startOfLine:s,$position:o}=n,l=Wp(t),a=new RegExp(`\\s${l}$`),c=s?"^":"",u=r?new RegExp(`${c}${l}.*?(?=\\s${l}|$)`,"gm"):new RegExp(`${c}(?:^)?${l}[^\\s${l}]*`,"gm"),d=((e=o.nodeBefore)===null||e===void 0?void 0:e.isText)&&o.nodeBefore.text;if(!d)return null;const f=o.pos-d.length,h=Array.from(d.matchAll(u)).pop();if(!h||h.input===void 0||h.index===void 0)return null;const p=h.input.slice(Math.max(0,h.index-1),h.index),m=new RegExp(`^[${i==null?void 0:i.join("")}\0]?$`).test(p);if(i!==null&&!m)return null;const g=f+h.index;let y=g+h[0].length;return r&&a.test(d.slice(y-1,y+1))&&(h[0]+=" ",y+=1),g<o.pos&&y>=o.pos?{range:{from:g,to:y},query:h[0].slice(t.length),text:h[0]}:null}const jg=new oe("suggestion");function Qa({pluginKey:n=jg,editor:e,char:t="@",allowSpaces:r=!1,allowedPrefixes:i=[" "],startOfLine:s=!1,decorationTag:o="span",decorationClass:l="suggestion",command:a=()=>null,items:c=()=>[],render:u=()=>({}),allow:d=()=>!0}){let f;const h=u==null?void 0:u(),p=new ne({key:n,view(){return{update:async(m,g)=>{var y,O,C,R,I,T,L;const D=(y=this.key)===null||y===void 0?void 0:y.getState(g),v=(O=this.key)===null||O===void 0?void 0:O.getState(m.state),W=D.active&&v.active&&D.range.from!==v.range.from,me=!D.active&&v.active,tt=D.active&&!v.active,_t=!me&&!tt&&D.query!==v.query,Re=me||W,_e=_t&&!W,Le=tt||W;if(!Re&&!_e&&!Le)return;const le=Le&&!Re?D:v,Be=m.dom.querySelector(`[data-decoration-id="${le.decorationId}"]`);f={editor:e,range:le.range,query:le.query,text:le.text,items:[],command:Lt=>{a({editor:e,range:le.range,props:Lt})},decorationNode:Be,clientRect:Be?()=>{var Lt;const{decorationId:nc}=(Lt=this.key)===null||Lt===void 0?void 0:Lt.getState(e.state),Zr=m.dom.querySelector(`[data-decoration-id="${nc}"]`);return(Zr==null?void 0:Zr.getBoundingClientRect())||null}:null},Re&&((C=h==null?void 0:h.onBeforeStart)===null||C===void 0||C.call(h,f)),_e&&((R=h==null?void 0:h.onBeforeUpdate)===null||R===void 0||R.call(h,f)),(_e||Re)&&(f.items=await c({editor:e,query:le.query})),Le&&((I=h==null?void 0:h.onExit)===null||I===void 0||I.call(h,f)),_e&&((T=h==null?void 0:h.onUpdate)===null||T===void 0||T.call(h,f)),Re&&((L=h==null?void 0:h.onStart)===null||L===void 0||L.call(h,f))},destroy:()=>{var m;f&&((m=h==null?void 0:h.onExit)===null||m===void 0||m.call(h,f))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(m,g,y,O){const{isEditable:C}=e,{composing:R}=e.view,{selection:I}=m,{empty:T,from:L}=I,D={...g};if(D.composing=R,C&&(T||e.view.composing)){(L<g.range.from||L>g.range.to)&&!R&&!g.composing&&(D.active=!1);const v=Hg({char:t,allowSpaces:r,allowedPrefixes:i,startOfLine:s,$position:I.$from}),W=`id_${Math.floor(Math.random()*4294967295)}`;v&&d({editor:e,state:O,range:v.range})?(D.active=!0,D.decorationId=g.decorationId?g.decorationId:W,D.range=v.range,D.query=v.query,D.text=v.text):D.active=!1}else D.active=!1;return D.active||(D.decorationId=null,D.range={from:0,to:0},D.query=null,D.text=null),D}},props:{handleKeyDown(m,g){var y;const{active:O,range:C}=p.getState(m.state);return O&&((y=h==null?void 0:h.onKeyDown)===null||y===void 0?void 0:y.call(h,{view:m,event:g,range:C}))||!1},decorations(m){const{active:g,range:y,decorationId:O}=p.getState(m);return g?F.create(m.doc,[ce.inline(y.from,y.to,{nodeName:o,class:l,"data-decoration-id":O})]):null}}});return p}const Vg={name:"SuggestionList",components:{DtListItem:yl},props:{items:{type:Array,required:!0},command:{type:Function,required:!0},itemComponent:{type:Object,required:!0},itemType:{type:String,required:!0}},data(){return{selectedIndex:0}},watch:{items(){this.selectedIndex=0}},methods:{onKeyDown({event:n}){return n.key==="ArrowUp"?(this.upHandler(),!0):n.key==="ArrowDown"?(this.downHandler(),!0):n.key==="Enter"?(this.enterHandler(),n.stopPropagation(),!0):!1},upHandler(){this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.scrollActiveElementIntoView()},downHandler(){this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.scrollActiveElementIntoView()},scrollActiveElementIntoView(){const n=this.$refs.suggestionList.querySelector(".dt-list-item--highlighted");n&&n.scrollIntoView({behaviour:"smooth",block:"center"})},enterHandler(){this.selectItem(this.selectedIndex)},selectItem(n){const e=this.items[n];switch(this.itemType){case"emoji":this.command(e);return;case"mention":this.command({name:e.name,id:e.id,avatarSrc:e.avatarSrc});break}}}};var qg=function(){var e=this,t=e._self._c;return t("div",{staticClass:"d-popover__dialog"},[t("ul",{directives:[{name:"show",rawName:"v-show",value:e.items.length,expression:"items.length"}],ref:"suggestionList",staticClass:"dt-suggestion-list"},e._l(e.items,function(r,i){return t("dt-list-item",{key:r.id,class:["dt-suggestion-list--item",{"dt-list-item--highlighted":i===e.selectedIndex}],attrs:{"navigation-type":"arrow-keys"},on:{click:function(s){return e.selectItem(i)},keydown:function(s){return s.preventDefault(),s.stopPropagation(),e.onKeyDown.apply(null,arguments)}}},[t(e.itemComponent,{tag:"component",attrs:{item:r}})],1)}),1)])},Kg=[],Wg=A.normalizeComponent(Vg,qg,Kg,!1,null,null,null,null);const Za=Wg.exports,Ug={name:"EmojiSuggestion",components:{DtEmoji:G.DtEmoji,DtStack:ss},props:{item:{type:Object,required:!0}}};var Jg=function(){var e=this,t=e._self._c;return t("dt-stack",{attrs:{direction:"row",gap:"400"}},[t("dt-emoji",{attrs:{size:"200",code:e.item.code}}),e._v(" "+e._s(e.item.code)+" ")],1)},Gg=[],Yg=A.normalizeComponent(Ug,Jg,Gg,!1,null,null,null,null);const Xg=Yg.exports,Qg={items:({query:n})=>n.length<2?[]:Object.values(G.emojisIndexed).filter(function(r){return!!r.shortname.substring(1,r.shortname.length-1).startsWith(n.toLowerCase())}).map(r=>({id:r.unicode_character,code:r.shortname})),command:({editor:n,range:e,props:t})=>{var s,o;const r=n.view.state.selection.$to.nodeAfter;((s=r==null?void 0:r.text)==null?void 0:s.startsWith(" "))&&(e.to+=1),n.chain().focus().insertContentAt(e,[{type:"emoji",attrs:t},{type:"text",text:" "}]).run(),(o=window.getSelection())==null||o.collapseToEnd()},render:()=>{let n,e;return{onStart:t=>{n=new Cs(Za,{parent:void 0,propsData:{itemComponent:Xg,itemType:"emoji",...t},editor:t.editor}),t.clientRect&&(e=A.tippy("body",{getReferenceClientRect:t.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start",contentElement:null,zIndex:650}))},onUpdate(t){n.updateProps(t),t.clientRect&&e[0].setProps({getReferenceClientRect:t.clientRect})},onKeyDown(t){var r;return t.event.key==="Escape"?(e[0].hide(),!0):(r=n.ref)==null?void 0:r.onKeyDown(t)},onExit(){e[0].destroy(),n.destroy()}}}},Zg=new oe("emoji"),ey=/:\w+:$/,ty=/:\w+:/g,ny=/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/,ry=/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g,nl=n=>{if(n&&G.codeToEmojiData(n[0]))return{index:n.index,text:n[0],match:n}},iy=n=>[...n.matchAll(ty)].filter(t=>G.codeToEmojiData(t[0])).map(t=>({index:t.index,text:t[0],match:t})),sy=Y.create({addOptions(){return{HTMLAttributes:{},suggestion:{char:":",pluginKey:Zg}}},name:"emoji",group:"inline",inline:!0,selectable:!0,addNodeView(){return Wa(zg)},addAttributes(){return{code:{default:null},id:{default:null}}},parseHTML(){return[{tag:"emoji-component"}]},renderText({node:n}){return n.attrs.code},renderHTML({HTMLAttributes:n}){return["emoji-component",$(this.options.HTMLAttributes,n)]},addInputRules(){return[Fo({find:n=>{const e=n.match(ey);return nl(e)},type:this.type,getAttributes(n){return{code:n[0]}}}),Fo({find:n=>{const e=n.match(ny);return nl(e)},type:this.type,getAttributes(n){const e=G.shortcodeToEmojiData(n[0]).unicode_output;return{code:String.fromCodePoint(parseInt(e,16)),label:"emoji"}}})]},addPasteRules(){return[Ho({find:iy,type:this.type,getAttributes(n){return{code:n[0]}}}),Ho({find:ry,type:this.type,getAttributes(n){return{code:n[0]}}})]},addProseMirrorPlugins(){return[Qa({editor:this.editor,...this.options.suggestion,...Qg})]}});function oy(n,e,t=()=>!0){const r=[];e.lastIndex=0;let i;for(;i=e.exec(n);)t(n,i)&&r.push(i);return r}function ly(n,e){return!["#","@"].includes(n.charAt(e.index))&&!["#","@"].includes(n.charAt(e.index-1))}function ay(n){const e=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return n.replace(e,"")}function cy(n,e){const t=n.slice(0,e+1).search(/\S+\s*$/),r=n.slice(e).search(/\s/);if(r<0){const i=n.slice(t);return{text:i,from:t,to:t+i.length}}return{text:n.slice(t,r+e),from:t,to:r+e}}function ns(n,e,t,r){const i=cy(n,e);if(r.lastIndex=0,!r.test(i.text))return i;const s=t==="left"?i.from-1:i.to+1;return s<=0||s>=n.length||s===e?i:ns(n,s,t,r)}function uy(n,e,t,r){const i=Math.max(n.from-1,0),s=Math.min(n.to+1,e.content.size),o=Nr(i,s,e);for(const l of o)l.mark.type===r&&t.removeMark(l.from,l.to,r)}const rl=A.getPhoneNumberRegex(1,15);function il(n,e,t,r,i,s){if(!n)return;let o=t-e-1;o=o<0?0:o;const l=r-e,a=ns(n,o,"left",rl),c=ns(n,l,"right",rl),u=n.slice(a.from,c.to);oy(u,A.linkRegex,ly).forEach(f=>{const h=ay(f[0]),p=e+a.from+f.index+1,m=p+h.length;i.addMark(p,m,s.create())})}function dy(n){let e=!1;return new ne({key:new oe("autolink"),appendTransaction:(t,r,i)=>{const s=t.some(u=>u.docChanged)&&!r.doc.eq(i.doc);if(e&&!s)return;const{tr:o}=i,{textContent:l}=i.doc;e||il(l,0,0,l.length,o,n.type),e=!0;const a=za(r.doc,[...t]);return Va(a).forEach(({oldRange:u,newRange:d})=>{uy(d,i.doc,o,n.type),Ha(i.doc,d,h=>h.isTextblock).forEach(({node:h,pos:p})=>{il(h.textContent,p,u.from,d.to,o,n.type)})}),o}})}const fy={class:"d-link d-c-text d-d-inline-block",rel:"noopener noreferrer nofollow"},hy=pe.create({name:"Link",renderHTML({HTMLAttributes:n}){return["a",$(this.options.HTMLAttributes,n,fy),0]},renderText({node:n}){return n.attrs.text},addProseMirrorPlugins(){return[dy({type:this.type})]}}),py=new oe("mention"),my=Y.create({name:"mention",addOptions(){return{HTMLAttributes:{},renderLabel({options:n,node:e}){var t;return`${n.suggestion.char}${(t=e.attrs.label)!==null&&t!==void 0?t:e.attrs.id}`},suggestion:{char:"@",pluginKey:py,command:({editor:n,range:e,props:t})=>{var r,i;const s=n.view.state.selection.$to.nodeAfter;((r=s==null?void 0:s.text)===null||r===void 0?void 0:r.startsWith(" "))&&(e.to+=1),n.chain().focus().insertContentAt(e,[{type:this.name,attrs:t},{type:"text",text:" "}]).run(),(i=window.getSelection())===null||i===void 0||i.collapseToEnd()},allow:({state:n,range:e})=>{const t=n.doc.resolve(e.from),r=n.schema.nodes[this.name];return!!t.parent.type.contentMatch.matchType(r)}}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:n=>n.getAttribute("data-id"),renderHTML:n=>n.id?{"data-id":n.id}:{}},label:{default:null,parseHTML:n=>n.getAttribute("data-label"),renderHTML:n=>n.label?{"data-label":n.label}:{}}}},parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({node:n,HTMLAttributes:e}){return["span",$({"data-type":this.name},this.options.HTMLAttributes,e),this.options.renderLabel({options:this.options,node:n})]},renderText({node:n}){return this.options.renderLabel({options:this.options,node:n})},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:n,state:e})=>{let t=!1;const{selection:r}=e,{empty:i,anchor:s}=r;return i?(e.doc.nodesBetween(s-1,s,(o,l)=>{if(o.type.name===this.name)return t=!0,n.insertText(this.options.suggestion.char||"",l,l+o.nodeSize),!1}),t):!1})}},addProseMirrorPlugins(){return[Qa({editor:this.editor,...this.options.suggestion})]}}),gy={name:"MentionComponent",components:{NodeViewWrapper:qa,DtLink:fl},props:Ka,computed:{text(){return"@"+this.$props.node.attrs.name}}};var yy=function(){var e=this,t=e._self._c;return t("node-view-wrapper",{staticClass:"d-d-inline-block"},[t("dt-link",{attrs:{kind:"mention"}},[e._v(" "+e._s(e.text)+" ")])],1)},by=[],ky=A.normalizeComponent(gy,yy,by,!1,null,null,null,null);const Sy=ky.exports,xy=my.extend({addNodeView(){return Wa(Sy)},parseHTML(){return[{tag:"mention-component"}]},addAttributes(){return{name:{default:""},avatarSrc:{default:""},id:{default:""}}},renderText({node:n}){return`@${n.attrs.id}`},renderHTML({HTMLAttributes:n}){return["mention-component",$(this.options.HTMLAttributes,n),0]}}),ec=["text","json","html"],tc=["start","end","all"],Oy=["https","http","ftp","ftps","sftp","mailto"],vy={name:"MentionSuggestion",components:{DtAvatar:dl,DtStack:ss},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc}}};var Ey=function(){var e=this,t=e._self._c;return t("dt-stack",{attrs:{direction:"row",gap:"400"}},[t("dt-avatar",{attrs:{"full-name":e.name,"image-src":e.avatarSrc,"image-alt":e.name,size:"xs"}}),e._v(" "+e._s(e.name)+" ")],1)},Cy=[],Ty=A.normalizeComponent(vy,Ey,Cy,!1,null,null,null,null);const My=Ty.exports,wy={allowSpaces:!0,render:()=>{let n,e;return{onStart:t=>{n=new Cs(Za,{parent:void 0,propsData:{itemComponent:My,itemType:"mention",...t},editor:t.editor}),t.clientRect&&(e=A.tippy("body",{getReferenceClientRect:t.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}))},onUpdate(t){n.updateProps(t),t.clientRect&&e[0].setProps({getReferenceClientRect:t.clientRect})},onKeyDown(t){return t.event.key==="Escape"?(e[0].hide(),!0):n==null?void 0:n.ref.onKeyDown(t)},onExit(){e[0].destroy(),n.destroy()}}}},Ay={name:"DtRichTextEditor",components:{EditorContent:_m},props:{value:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},allowLineBreaks:{type:Boolean,default:!1},inputAriaLabel:{type:String,required:!0},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(n){return typeof n=="string"?tc.includes(n):!0}},outputFormat:{type:String,default:"text",validator(n){return ec.includes(n)}},placeholder:{type:String,default:""},link:{type:[Boolean,Object],default:!1},mentionSuggestion:{type:Object,default:null}},emits:["input","update:value","blur","focus"],data(){return{editor:null,popoverOpened:!1}},computed:{extensions(){const n=[$m,Ym,Qm,jm,rg,Mg,qm,Dg,Rg,Ig];if(this.link&&n.push(this.getExtension(hy,this.link)),n.push(Km.configure({placeholder:this.placeholder})),this.allowLineBreaks||n.push(Vm.extend({addKeyboardShortcuts(){return{Enter:()=>!0,"Shift-Enter":()=>this.editor.commands.first(({commands:e})=>[()=>e.newlineInCode(),()=>e.createParagraphNear(),()=>e.liftEmptyBlock(),()=>e.splitBlock()])}}})),n.push(Tg.extend({inclusive:!1}).configure({autolink:!0,protocols:Oy})),this.mentionSuggestion){const e={...this.mentionSuggestion,...wy};n.push(xy.configure({suggestion:e}))}return n.push(sy),n.push(_g.configure({types:["paragraph"],defaultAlignment:"left"})),n.push(Hm.configure({HTMLAttributes:{class:"dt-rich-text-editor--code-block"}})),n.push(Ag.configure({itemTypeName:"listItem"})),n},inputAttrs(){const n={"aria-label":this.inputAriaLabel,"aria-multiline":!0,role:"textbox"};return this.editable||(n["aria-readonly"]=!0),n}},watch:{editable(n){this.editor.setEditable(n),this.updateEditorAttributes({"aria-readonly":!n})},inputClass(n){this.updateEditorAttributes({class:n})},inputAriaLabel(n){this.updateEditorAttributes({"aria-label":n})},extensions(){this.destroyEditor(),this.createEditor()},value(n){let e=this.getOutput();this.outputFormat==="json"&&(n=JSON.stringify(n),e=JSON.stringify(e)),n!==e&&this.editor.commands.setContent(n,!1)}},created(){this.createEditor()},beforeUnmount(){this.destroyEditor()},methods:{createEditor(){this.editor=new Rm({autofocus:this.autoFocus,content:this.value,editable:this.editable,extensions:this.extensions,editorProps:{attributes:{...this.inputAttrs,class:this.inputClass}}}),this.addEditorListeners()},destroyEditor(){this.editor.destroy()},addEditorListeners(){this.editor.on("update",()=>{const n=this.getOutput();this.$emit("input",n),this.$emit("update:value",n)}),this.editor.on("focus",({event:n})=>{this.$emit("focus",n)}),this.editor.on("blur",({event:n})=>{this.$emit("blur",n)})},getOutput(){switch(this.outputFormat){case"json":return this.editor.getJSON();case"html":return this.editor.getHTML();case"text":default:return this.editor.getText()}},getExtension(n,e){var t;return typeof e=="boolean"?n:(t=n.configure)==null?void 0:t.call(n,e)},updateEditorAttributes(n){this.editor.setOptions({editorProps:{attributes:n}})},focusEditor(){this.editor.commands.focus()}}};var Ny=function(){var e=this,t=e._self._c;return t("editor-content",{staticClass:"dt-rich-text-editor",attrs:{editor:e.editor,"data-qa":"dt-rich-text-editor"}})},Py=[],Dy=A.normalizeComponent(Ay,Ny,Py,!1,null,null,null,null);const Iy=Dy.exports;exports.AVATAR_COLORS=ul;exports.AVATAR_GROUP_VALIDATOR=wi;exports.AVATAR_ICON_SIZES=cl;exports.AVATAR_KIND_MODIFIERS=ll;exports.AVATAR_PRESENCE_SIZE_MODIFIERS=al;exports.AVATAR_PRESENCE_STATES=Mi;exports.AVATAR_SIZE_MODIFIERS=Sn;exports.DT_STACK_DIRECTION=Ye;exports.DT_STACK_GAP=gr;exports.DT_STACK_RESPONSIVE_BREAKPOINTS=rs;exports.DtAvatar=dl;exports.DtItemLayout=Ai;exports.DtLink=fl;exports.DtListItem=yl;exports.DtPopover=Uc;exports.DtPresence=ol;exports.DtRichTextEditor=Iy;exports.DtStack=ss;exports.LIST_ITEM_NAVIGATION_TYPES=$t;exports.LIST_ITEM_TYPES=xn;exports.Modal=gl;exports.PRESENCE_STATES=Ot;exports.PRESENCE_STATES_LIST=sl;exports.Portal=is;exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=tc;exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=ec;exports.SrOnlyCloseButton=pl;exports.SrOnlyCloseButtonMixin=hl;
|
|
97
|
+
3. "-" cannot repeat`);B.customSchemes.push([n,e])}function xg(){B.scanner=fg(B.customSchemes);for(let n=0;n<B.tokenQueue.length;n++)B.tokenQueue[n][1]({scanner:B.scanner});B.parser=gg(B.scanner.tokens);for(let n=0;n<B.pluginQueue.length;n++)B.pluginQueue[n][1]({scanner:B.scanner,parser:B.parser});B.initialized=!0}function Og(n){return B.initialized||xg(),yg(B.parser.start,n,hg(B.scanner.start,n))}function Is(n,e,t){if(e===void 0&&(e=null),t===void 0&&(t=null),e&&typeof e=="object"){if(t)throw Error(`linkifyjs: Invalid link type ${e}; must be a string`);t=e,e=null}const r=new Ds(t),i=Og(n),s=[];for(let o=0;o<i.length;o++){const l=i[o];l.isLink&&(!e||l.t===e)&&r.check(l)&&s.push(l.toFormattedObject(r))}return s}function vg(n){return new ne({key:new oe("autolink"),appendTransaction:(e,t,r)=>{const i=e.some(c=>c.docChanged)&&!t.doc.eq(r.doc),s=e.some(c=>c.getMeta("preventAutolink"));if(!i||s)return;const{tr:o}=r,l=za(t.doc,[...e]);if(Va(l).forEach(({newRange:c})=>{const u=Ha(r.doc,c,h=>h.isTextblock);let d,f;if(u.length>1?(d=u[0],f=r.doc.textBetween(d.pos,d.pos+d.node.nodeSize,void 0," ")):u.length&&r.doc.textBetween(c.from,c.to," "," ").endsWith(" ")&&(d=u[0],f=r.doc.textBetween(d.pos,c.to,void 0," ")),d&&f){const h=f.split(" ").filter(g=>g!=="");if(h.length<=0)return!1;const p=h[h.length-1],m=d.pos+f.lastIndexOf(p);if(!p)return!1;Is(p).filter(g=>g.isLink).map(g=>({...g,from:m+g.start+1,to:m+g.end+1})).filter(g=>r.schema.marks.code?!r.doc.rangeHasMark(g.from,g.to,r.schema.marks.code):!0).filter(g=>n.validate?n.validate(g.value):!0).forEach(g=>{Nr(g.from,g.to,r.doc).some(y=>y.mark.type===n.type)||o.addMark(g.from,g.to,n.type.create({href:g.href}))})}}),!!o.steps.length)return o}})}function Eg(n){return new ne({key:new oe("handleClickLink"),props:{handleClick:(e,t,r)=>{var i,s;if(r.button!==0||r.target.nodeName!=="A")return!1;const l=ja(e.state,n.type.name),a=r.target,c=(i=a==null?void 0:a.href)!==null&&i!==void 0?i:l.href,u=(s=a==null?void 0:a.target)!==null&&s!==void 0?s:l.target;return a&&c?(e.editable&&window.open(c,u),!0):!1}}})}function Cg(n){return new ne({key:new oe("handlePasteLink"),props:{handlePaste:(e,t,r)=>{const{state:i}=e,{selection:s}=i,{empty:o}=s;if(o)return!1;let l="";r.content.forEach(c=>{l+=c.textContent});const a=Is(l).find(c=>c.isLink&&c.value===l);return!l||!a?!1:(n.editor.commands.setMark(n.type,{href:a.href}),!0)}}})}const Tg=pe.create({name:"link",priority:1e3,keepOnSplit:!1,onCreate(){this.options.protocols.forEach(n=>{if(typeof n=="string"){Zo(n);return}Zo(n.scheme,n.optionalSlashes)})},onDestroy(){Sg()},inclusive(){return this.options.autolink},addOptions(){return{openOnClick:!0,linkOnPaste:!0,autolink:!0,protocols:[],HTMLAttributes:{target:"_blank",rel:"noopener noreferrer nofollow",class:null},validate:void 0}},addAttributes(){return{href:{default:null},target:{default:this.options.HTMLAttributes.target},rel:{default:this.options.HTMLAttributes.rel},class:{default:this.options.HTMLAttributes.class}}},parseHTML(){return[{tag:'a[href]:not([href *= "javascript:" i])'}]},renderHTML({HTMLAttributes:n}){var e;return!((e=n.href)===null||e===void 0)&&e.startsWith("javascript:")?["a",$(this.options.HTMLAttributes,{...n,href:""}),0]:["a",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setLink:n=>({chain:e})=>e().setMark(this.name,n).setMeta("preventAutolink",!0).run(),toggleLink:n=>({chain:e})=>e().toggleMark(this.name,n,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run(),unsetLink:()=>({chain:n})=>n().unsetMark(this.name,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run()}},addPasteRules(){return[Dt({find:(n,e)=>{var t;const r=(t=e==null?void 0:e.clipboardData)===null||t===void 0?void 0:t.getData("text/html"),i=[];if(r){const s=new DOMParser().parseFromString(r,"text/html"),o=s.querySelectorAll("a");o.length&&[...o].forEach(l=>i.push({text:l.innerText,data:{href:l.getAttribute("href")},index:s.body.innerText.indexOf(l.innerText)+l.innerText.length}))}if(n){const s=Is(n).filter(o=>o.isLink);s.length&&s.forEach(o=>i.push({text:o.value,data:{href:o.href},index:o.start}))}return i},type:this.type,getAttributes:n=>{var e;return{href:(e=n.data)===null||e===void 0?void 0:e.href}}})]},addProseMirrorPlugins(){const n=[];return this.options.autolink&&n.push(vg({type:this.type,validate:this.options.validate})),this.options.openOnClick&&n.push(Eg({type:this.type})),this.options.linkOnPaste&&n.push(Cg({editor:this.editor,type:this.type})),n}}),Mg=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:n}){return["li",$(this.options.HTMLAttributes,n),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),wg=Y.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:n}){return["li",$(this.options.HTMLAttributes,n),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),el=pe.create({name:"textStyle",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"span",getAttrs:n=>n.hasAttribute("style")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["span",$(this.options.HTMLAttributes,n),0]},addCommands(){return{removeEmptyTextStyle:()=>({state:n,commands:e})=>{const t=Ar(n,this.type);return Object.entries(t).some(([,i])=>!!i)?!0:e.unsetMark(this.name)}}}}),tl=/^(\d+)\.\s$/,Ag=Y.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:n=>n.hasAttribute("start")?parseInt(n.getAttribute("start")||"",10):1}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:n}){const{start:e,...t}=n;return e===1?["ol",$(this.options.HTMLAttributes,t),0]:["ol",$(this.options.HTMLAttributes,n),0]},addCommands(){return{toggleOrderedList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(wg.name,this.editor.getAttributes(el.name)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let n=on({find:tl,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(n=on({find:tl,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(el.name)}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1],editor:this.editor})),[n]}}),Ng=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))$/,Pg=/(?:^|\s)((?:~~)((?:[^~]+))(?:~~))/g,Dg=pe.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["s",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setStrike:()=>({commands:n})=>n.setMark(this.name),toggleStrike:()=>({commands:n})=>n.toggleMark(this.name),unsetStrike:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){const n={};return vs()?n["Mod-Shift-s"]=()=>this.editor.commands.toggleStrike():n["Ctrl-Shift-s"]=()=>this.editor.commands.toggleStrike(),n},addInputRules(){return[sn({find:Ng,type:this.type})]},addPasteRules(){return[Dt({find:Pg,type:this.type})]}}),Ig=pe.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["u",$(this.options.HTMLAttributes,n),0]},addCommands(){return{setUnderline:()=>({commands:n})=>n.setMark(this.name),toggleUnderline:()=>({commands:n})=>n.toggleMark(this.name),unsetUnderline:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),Rg=Y.create({name:"text",group:"inline"}),_g=ke.create({name:"textAlign",addOptions(){return{types:[],alignments:["left","center","right","justify"],defaultAlignment:"left"}},addGlobalAttributes(){return[{types:this.options.types,attributes:{textAlign:{default:this.options.defaultAlignment,parseHTML:n=>n.style.textAlign||this.options.defaultAlignment,renderHTML:n=>n.textAlign===this.options.defaultAlignment?{}:{style:`text-align: ${n.textAlign}`}}}}]},addCommands(){return{setTextAlign:n=>({commands:e})=>this.options.alignments.includes(n)?this.options.types.every(t=>e.updateAttributes(t,{textAlign:n})):!1,unsetTextAlign:()=>({commands:n})=>this.options.types.every(e=>n.resetAttributes(e,"textAlign"))}},addKeyboardShortcuts(){return{"Mod-Shift-l":()=>this.editor.commands.setTextAlign("left"),"Mod-Shift-e":()=>this.editor.commands.setTextAlign("center"),"Mod-Shift-r":()=>this.editor.commands.setTextAlign("right"),"Mod-Shift-j":()=>this.editor.commands.setTextAlign("justify")}}}),Lg={name:"EmojiComponent",components:{NodeViewWrapper:qa,DtEmoji:G.DtEmoji},props:Ka};var Bg=function(){var e=this,t=e._self._c;return t("node-view-wrapper",{staticClass:"d-d-inline-block d-va-bottom d-lh0"},[t("dt-emoji",{attrs:{size:"500",code:e.node.attrs.code}})],1)},$g=[],Fg=A.normalizeComponent(Lg,Bg,$g,!1,null,null,null,null);const zg=Fg.exports;function Hg(n){var e;const{char:t,allowSpaces:r,allowedPrefixes:i,startOfLine:s,$position:o}=n,l=Wp(t),a=new RegExp(`\\s${l}$`),c=s?"^":"",u=r?new RegExp(`${c}${l}.*?(?=\\s${l}|$)`,"gm"):new RegExp(`${c}(?:^)?${l}[^\\s${l}]*`,"gm"),d=((e=o.nodeBefore)===null||e===void 0?void 0:e.isText)&&o.nodeBefore.text;if(!d)return null;const f=o.pos-d.length,h=Array.from(d.matchAll(u)).pop();if(!h||h.input===void 0||h.index===void 0)return null;const p=h.input.slice(Math.max(0,h.index-1),h.index),m=new RegExp(`^[${i==null?void 0:i.join("")}\0]?$`).test(p);if(i!==null&&!m)return null;const g=f+h.index;let y=g+h[0].length;return r&&a.test(d.slice(y-1,y+1))&&(h[0]+=" ",y+=1),g<o.pos&&y>=o.pos?{range:{from:g,to:y},query:h[0].slice(t.length),text:h[0]}:null}const jg=new oe("suggestion");function Qa({pluginKey:n=jg,editor:e,char:t="@",allowSpaces:r=!1,allowedPrefixes:i=[" "],startOfLine:s=!1,decorationTag:o="span",decorationClass:l="suggestion",command:a=()=>null,items:c=()=>[],render:u=()=>({}),allow:d=()=>!0}){let f;const h=u==null?void 0:u(),p=new ne({key:n,view(){return{update:async(m,g)=>{var y,O,C,R,I,T,L;const D=(y=this.key)===null||y===void 0?void 0:y.getState(g),v=(O=this.key)===null||O===void 0?void 0:O.getState(m.state),W=D.active&&v.active&&D.range.from!==v.range.from,me=!D.active&&v.active,tt=D.active&&!v.active,_t=!me&&!tt&&D.query!==v.query,Re=me||W,_e=_t&&!W,Le=tt||W;if(!Re&&!_e&&!Le)return;const le=Le&&!Re?D:v,Be=m.dom.querySelector(`[data-decoration-id="${le.decorationId}"]`);f={editor:e,range:le.range,query:le.query,text:le.text,items:[],command:Lt=>{a({editor:e,range:le.range,props:Lt})},decorationNode:Be,clientRect:Be?()=>{var Lt;const{decorationId:nc}=(Lt=this.key)===null||Lt===void 0?void 0:Lt.getState(e.state),Zr=m.dom.querySelector(`[data-decoration-id="${nc}"]`);return(Zr==null?void 0:Zr.getBoundingClientRect())||null}:null},Re&&((C=h==null?void 0:h.onBeforeStart)===null||C===void 0||C.call(h,f)),_e&&((R=h==null?void 0:h.onBeforeUpdate)===null||R===void 0||R.call(h,f)),(_e||Re)&&(f.items=await c({editor:e,query:le.query})),Le&&((I=h==null?void 0:h.onExit)===null||I===void 0||I.call(h,f)),_e&&((T=h==null?void 0:h.onUpdate)===null||T===void 0||T.call(h,f)),Re&&((L=h==null?void 0:h.onStart)===null||L===void 0||L.call(h,f))},destroy:()=>{var m;f&&((m=h==null?void 0:h.onExit)===null||m===void 0||m.call(h,f))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(m,g,y,O){const{isEditable:C}=e,{composing:R}=e.view,{selection:I}=m,{empty:T,from:L}=I,D={...g};if(D.composing=R,C&&(T||e.view.composing)){(L<g.range.from||L>g.range.to)&&!R&&!g.composing&&(D.active=!1);const v=Hg({char:t,allowSpaces:r,allowedPrefixes:i,startOfLine:s,$position:I.$from}),W=`id_${Math.floor(Math.random()*4294967295)}`;v&&d({editor:e,state:O,range:v.range})?(D.active=!0,D.decorationId=g.decorationId?g.decorationId:W,D.range=v.range,D.query=v.query,D.text=v.text):D.active=!1}else D.active=!1;return D.active||(D.decorationId=null,D.range={from:0,to:0},D.query=null,D.text=null),D}},props:{handleKeyDown(m,g){var y;const{active:O,range:C}=p.getState(m.state);return O&&((y=h==null?void 0:h.onKeyDown)===null||y===void 0?void 0:y.call(h,{view:m,event:g,range:C}))||!1},decorations(m){const{active:g,range:y,decorationId:O}=p.getState(m);return g?F.create(m.doc,[ce.inline(y.from,y.to,{nodeName:o,class:l,"data-decoration-id":O})]):null}}});return p}const Vg={name:"SuggestionList",components:{DtListItem:yl},props:{items:{type:Array,required:!0},command:{type:Function,required:!0},itemComponent:{type:Object,required:!0},itemType:{type:String,required:!0}},data(){return{selectedIndex:0}},watch:{items(){this.selectedIndex=0}},methods:{onKeyDown({event:n}){return n.key==="ArrowUp"?(this.upHandler(),!0):n.key==="ArrowDown"?(this.downHandler(),!0):n.key==="Enter"||n.key==="Tab"?(n.preventDefault(),this.selectHandler(),n.stopPropagation(),!0):!1},upHandler(){this.selectedIndex=(this.selectedIndex+this.items.length-1)%this.items.length,this.scrollActiveElementIntoView()},downHandler(){this.selectedIndex=(this.selectedIndex+1)%this.items.length,this.scrollActiveElementIntoView()},scrollActiveElementIntoView(){const n=this.$refs.suggestionList.querySelector(".dt-list-item--highlighted");n&&n.scrollIntoView({behaviour:"smooth",block:"center"})},selectHandler(){this.selectItem(this.selectedIndex)},selectItem(n){const e=this.items[n];switch(this.itemType){case"emoji":this.command(e);return;case"mention":this.command({name:e.name,id:e.id,avatarSrc:e.avatarSrc});break}}}};var qg=function(){var e=this,t=e._self._c;return t("div",{staticClass:"d-popover__dialog"},[t("ul",{directives:[{name:"show",rawName:"v-show",value:e.items.length,expression:"items.length"}],ref:"suggestionList",staticClass:"dt-suggestion-list"},e._l(e.items,function(r,i){return t("dt-list-item",{key:r.id,class:["dt-suggestion-list--item",{"dt-list-item--highlighted":i===e.selectedIndex}],attrs:{"navigation-type":"arrow-keys"},on:{click:function(s){return e.selectItem(i)},keydown:function(s){return s.preventDefault(),s.stopPropagation(),e.onKeyDown.apply(null,arguments)}}},[t(e.itemComponent,{tag:"component",attrs:{item:r}})],1)}),1)])},Kg=[],Wg=A.normalizeComponent(Vg,qg,Kg,!1,null,null,null,null);const Za=Wg.exports,Ug={name:"EmojiSuggestion",components:{DtEmoji:G.DtEmoji,DtStack:ss},props:{item:{type:Object,required:!0}}};var Jg=function(){var e=this,t=e._self._c;return t("dt-stack",{attrs:{direction:"row",gap:"400"}},[t("dt-emoji",{attrs:{size:"200",code:e.item.code}}),e._v(" "+e._s(e.item.code)+" ")],1)},Gg=[],Yg=A.normalizeComponent(Ug,Jg,Gg,!1,null,null,null,null);const Xg=Yg.exports,Qg={items:({query:n})=>n.length<2?[]:Object.values(G.emojisIndexed).filter(function(r){return!!r.shortname.substring(1,r.shortname.length-1).startsWith(n.toLowerCase())}).map(r=>({id:r.unicode_character,code:r.shortname})),command:({editor:n,range:e,props:t})=>{var s,o;const r=n.view.state.selection.$to.nodeAfter;((s=r==null?void 0:r.text)==null?void 0:s.startsWith(" "))&&(e.to+=1),n.chain().focus().insertContentAt(e,[{type:"emoji",attrs:t},{type:"text",text:" "}]).run(),(o=window.getSelection())==null||o.collapseToEnd()},render:()=>{let n,e;return{onStart:t=>{n=new Cs(Za,{parent:void 0,propsData:{itemComponent:Xg,itemType:"emoji",...t},editor:t.editor}),t.clientRect&&(e=A.tippy("body",{getReferenceClientRect:t.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start",contentElement:null,zIndex:650}))},onUpdate(t){n.updateProps(t),t.clientRect&&e[0].setProps({getReferenceClientRect:t.clientRect})},onKeyDown(t){var r;return t.event.key==="Escape"?(e[0].hide(),!0):(r=n.ref)==null?void 0:r.onKeyDown(t)},onExit(){e[0].destroy(),n.destroy()}}}},Zg=new oe("emoji"),ey=/:\w+:$/,ty=/:\w+:/g,ny=/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])$/,ry=/(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g,nl=n=>{if(n&&G.codeToEmojiData(n[0]))return{index:n.index,text:n[0],match:n}},iy=n=>[...n.matchAll(ty)].filter(t=>G.codeToEmojiData(t[0])).map(t=>({index:t.index,text:t[0],match:t})),sy=Y.create({addOptions(){return{HTMLAttributes:{},suggestion:{char:":",pluginKey:Zg}}},name:"emoji",group:"inline",inline:!0,selectable:!0,addNodeView(){return Wa(zg)},addAttributes(){return{code:{default:null},id:{default:null}}},parseHTML(){return[{tag:"emoji-component"}]},renderText({node:n}){return n.attrs.code},renderHTML({HTMLAttributes:n}){return["emoji-component",$(this.options.HTMLAttributes,n)]},addInputRules(){return[Fo({find:n=>{const e=n.match(ey);return nl(e)},type:this.type,getAttributes(n){return{code:n[0]}}}),Fo({find:n=>{const e=n.match(ny);return nl(e)},type:this.type,getAttributes(n){const e=G.shortcodeToEmojiData(n[0]).unicode_output;return{code:String.fromCodePoint(parseInt(e,16)),label:"emoji"}}})]},addPasteRules(){return[Ho({find:iy,type:this.type,getAttributes(n){return{code:n[0]}}}),Ho({find:ry,type:this.type,getAttributes(n){return{code:n[0]}}})]},addProseMirrorPlugins(){return[Qa({editor:this.editor,...this.options.suggestion,...Qg})]}});function oy(n,e,t=()=>!0){const r=[];e.lastIndex=0;let i;for(;i=e.exec(n);)t(n,i)&&r.push(i);return r}function ly(n,e){return!["#","@"].includes(n.charAt(e.index))&&!["#","@"].includes(n.charAt(e.index-1))}function ay(n){const e=new RegExp("(?:"+[`[!?.,:;'"]`,"(?:&|&)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)+$"].join("|"),"g");return n.replace(e,"")}function cy(n,e){const t=n.slice(0,e+1).search(/\S+\s*$/),r=n.slice(e).search(/\s/);if(r<0){const i=n.slice(t);return{text:i,from:t,to:t+i.length}}return{text:n.slice(t,r+e),from:t,to:r+e}}function ns(n,e,t,r){const i=cy(n,e);if(r.lastIndex=0,!r.test(i.text))return i;const s=t==="left"?i.from-1:i.to+1;return s<=0||s>=n.length||s===e?i:ns(n,s,t,r)}function uy(n,e,t,r){const i=Math.max(n.from-1,0),s=Math.min(n.to+1,e.content.size),o=Nr(i,s,e);for(const l of o)l.mark.type===r&&t.removeMark(l.from,l.to,r)}const rl=A.getPhoneNumberRegex(1,15);function il(n,e,t,r,i,s){if(!n)return;let o=t-e-1;o=o<0?0:o;const l=r-e,a=ns(n,o,"left",rl),c=ns(n,l,"right",rl),u=n.slice(a.from,c.to);oy(u,A.linkRegex,ly).forEach(f=>{const h=ay(f[0]),p=e+a.from+f.index+1,m=p+h.length;i.addMark(p,m,s.create())})}function dy(n){let e=!1;return new ne({key:new oe("autolink"),appendTransaction:(t,r,i)=>{const s=t.some(u=>u.docChanged)&&!r.doc.eq(i.doc);if(e&&!s)return;const{tr:o}=i,{textContent:l}=i.doc;e||il(l,0,0,l.length,o,n.type),e=!0;const a=za(r.doc,[...t]);return Va(a).forEach(({oldRange:u,newRange:d})=>{uy(d,i.doc,o,n.type),Ha(i.doc,d,h=>h.isTextblock).forEach(({node:h,pos:p})=>{il(h.textContent,p,u.from,d.to,o,n.type)})}),o}})}const fy={class:"d-link d-c-text d-d-inline-block",rel:"noopener noreferrer nofollow"},hy=pe.create({name:"Link",renderHTML({HTMLAttributes:n}){return["a",$(this.options.HTMLAttributes,n,fy),0]},renderText({node:n}){return n.attrs.text},addProseMirrorPlugins(){return[dy({type:this.type})]}}),py=new oe("mention"),my=Y.create({name:"mention",addOptions(){return{HTMLAttributes:{},renderLabel({options:n,node:e}){var t;return`${n.suggestion.char}${(t=e.attrs.label)!==null&&t!==void 0?t:e.attrs.id}`},suggestion:{char:"@",pluginKey:py,command:({editor:n,range:e,props:t})=>{var r,i;const s=n.view.state.selection.$to.nodeAfter;((r=s==null?void 0:s.text)===null||r===void 0?void 0:r.startsWith(" "))&&(e.to+=1),n.chain().focus().insertContentAt(e,[{type:this.name,attrs:t},{type:"text",text:" "}]).run(),(i=window.getSelection())===null||i===void 0||i.collapseToEnd()},allow:({state:n,range:e})=>{const t=n.doc.resolve(e.from),r=n.schema.nodes[this.name];return!!t.parent.type.contentMatch.matchType(r)}}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:n=>n.getAttribute("data-id"),renderHTML:n=>n.id?{"data-id":n.id}:{}},label:{default:null,parseHTML:n=>n.getAttribute("data-label"),renderHTML:n=>n.label?{"data-label":n.label}:{}}}},parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({node:n,HTMLAttributes:e}){return["span",$({"data-type":this.name},this.options.HTMLAttributes,e),this.options.renderLabel({options:this.options,node:n})]},renderText({node:n}){return this.options.renderLabel({options:this.options,node:n})},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:n,state:e})=>{let t=!1;const{selection:r}=e,{empty:i,anchor:s}=r;return i?(e.doc.nodesBetween(s-1,s,(o,l)=>{if(o.type.name===this.name)return t=!0,n.insertText(this.options.suggestion.char||"",l,l+o.nodeSize),!1}),t):!1})}},addProseMirrorPlugins(){return[Qa({editor:this.editor,...this.options.suggestion})]}}),gy={name:"MentionComponent",components:{NodeViewWrapper:qa,DtLink:fl},props:Ka,computed:{text(){return"@"+this.$props.node.attrs.name}}};var yy=function(){var e=this,t=e._self._c;return t("node-view-wrapper",{staticClass:"d-d-inline-block"},[t("dt-link",{attrs:{kind:"mention"}},[e._v(" "+e._s(e.text)+" ")])],1)},by=[],ky=A.normalizeComponent(gy,yy,by,!1,null,null,null,null);const Sy=ky.exports,xy=my.extend({addNodeView(){return Wa(Sy)},parseHTML(){return[{tag:"mention-component"}]},addAttributes(){return{name:{default:""},avatarSrc:{default:""},id:{default:""}}},renderText({node:n}){return`@${n.attrs.id}`},renderHTML({HTMLAttributes:n}){return["mention-component",$(this.options.HTMLAttributes,n),0]}}),ec=["text","json","html"],tc=["start","end","all"],Oy=["https","http","ftp","ftps","sftp","mailto"],vy={name:"MentionSuggestion",components:{DtAvatar:dl,DtStack:ss},props:{item:{type:Object,required:!0}},computed:{name(){return this.item.name},avatarSrc(){return this.item.avatarSrc}}};var Ey=function(){var e=this,t=e._self._c;return t("dt-stack",{attrs:{direction:"row",gap:"400"}},[t("dt-avatar",{attrs:{"full-name":e.name,"image-src":e.avatarSrc,"image-alt":e.name,size:"xs"}}),e._v(" "+e._s(e.name)+" ")],1)},Cy=[],Ty=A.normalizeComponent(vy,Ey,Cy,!1,null,null,null,null);const My=Ty.exports,wy={allowSpaces:!0,render:()=>{let n,e;return{onStart:t=>{n=new Cs(Za,{parent:void 0,propsData:{itemComponent:My,itemType:"mention",...t},editor:t.editor}),t.clientRect&&(e=A.tippy("body",{getReferenceClientRect:t.clientRect,appendTo:()=>document.body,content:n.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}))},onUpdate(t){n.updateProps(t),t.clientRect&&e[0].setProps({getReferenceClientRect:t.clientRect})},onKeyDown(t){return t.event.key==="Escape"?(e[0].hide(),!0):n==null?void 0:n.ref.onKeyDown(t)},onExit(){e[0].destroy(),n.destroy()}}}},Ay={name:"DtRichTextEditor",components:{EditorContent:_m},props:{value:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},allowLineBreaks:{type:Boolean,default:!1},inputAriaLabel:{type:String,required:!0},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(n){return typeof n=="string"?tc.includes(n):!0}},outputFormat:{type:String,default:"text",validator(n){return ec.includes(n)}},placeholder:{type:String,default:""},link:{type:[Boolean,Object],default:!1},mentionSuggestion:{type:Object,default:null}},emits:["input","update:value","blur","focus"],data(){return{editor:null,popoverOpened:!1}},computed:{extensions(){const n=[$m,Ym,Qm,jm,rg,Mg,qm,Dg,Rg,Ig];if(this.link&&n.push(this.getExtension(hy,this.link)),n.push(Km.configure({placeholder:this.placeholder})),this.allowLineBreaks||n.push(Vm.extend({addKeyboardShortcuts(){return{Enter:()=>!0,"Shift-Enter":()=>this.editor.commands.first(({commands:e})=>[()=>e.newlineInCode(),()=>e.createParagraphNear(),()=>e.liftEmptyBlock(),()=>e.splitBlock()])}}})),n.push(Tg.extend({inclusive:!1}).configure({autolink:!0,protocols:Oy})),this.mentionSuggestion){const e={...this.mentionSuggestion,...wy};n.push(xy.configure({suggestion:e}))}return n.push(sy),n.push(_g.configure({types:["paragraph"],defaultAlignment:"left"})),n.push(Hm.configure({HTMLAttributes:{class:"dt-rich-text-editor--code-block"}})),n.push(Ag.configure({itemTypeName:"listItem"})),n},inputAttrs(){const n={"aria-label":this.inputAriaLabel,"aria-multiline":!0,role:"textbox"};return this.editable||(n["aria-readonly"]=!0),n}},watch:{editable(n){this.editor.setEditable(n),this.updateEditorAttributes({"aria-readonly":!n})},inputClass(n){this.updateEditorAttributes({class:n})},inputAriaLabel(n){this.updateEditorAttributes({"aria-label":n})},extensions(){this.destroyEditor(),this.createEditor()},value(n){let e=this.getOutput();this.outputFormat==="json"&&(n=JSON.stringify(n),e=JSON.stringify(e)),n!==e&&this.editor.commands.setContent(n,!1)}},created(){this.createEditor()},beforeUnmount(){this.destroyEditor()},methods:{createEditor(){this.editor=new Rm({autofocus:this.autoFocus,content:this.value,editable:this.editable,extensions:this.extensions,editorProps:{attributes:{...this.inputAttrs,class:this.inputClass}}}),this.addEditorListeners()},destroyEditor(){this.editor.destroy()},addEditorListeners(){this.editor.on("update",()=>{const n=this.getOutput();this.$emit("input",n),this.$emit("update:value",n)}),this.editor.on("focus",({event:n})=>{this.$emit("focus",n)}),this.editor.on("blur",({event:n})=>{this.$emit("blur",n)})},getOutput(){switch(this.outputFormat){case"json":return this.editor.getJSON();case"html":return this.editor.getHTML();case"text":default:return this.editor.getText()}},getExtension(n,e){var t;return typeof e=="boolean"?n:(t=n.configure)==null?void 0:t.call(n,e)},updateEditorAttributes(n){this.editor.setOptions({editorProps:{attributes:n}})},focusEditor(){this.editor.commands.focus()}}};var Ny=function(){var e=this,t=e._self._c;return t("editor-content",{staticClass:"dt-rich-text-editor",attrs:{editor:e.editor,"data-qa":"dt-rich-text-editor"}})},Py=[],Dy=A.normalizeComponent(Ay,Ny,Py,!1,null,null,null,null);const Iy=Dy.exports;exports.AVATAR_COLORS=ul;exports.AVATAR_GROUP_VALIDATOR=wi;exports.AVATAR_ICON_SIZES=cl;exports.AVATAR_KIND_MODIFIERS=ll;exports.AVATAR_PRESENCE_SIZE_MODIFIERS=al;exports.AVATAR_PRESENCE_STATES=Mi;exports.AVATAR_SIZE_MODIFIERS=Sn;exports.DT_STACK_DIRECTION=Ye;exports.DT_STACK_GAP=gr;exports.DT_STACK_RESPONSIVE_BREAKPOINTS=rs;exports.DtAvatar=dl;exports.DtItemLayout=Ai;exports.DtLink=fl;exports.DtListItem=yl;exports.DtPopover=Uc;exports.DtPresence=ol;exports.DtRichTextEditor=Iy;exports.DtStack=ss;exports.LIST_ITEM_NAVIGATION_TYPES=$t;exports.LIST_ITEM_TYPES=xn;exports.Modal=gl;exports.PRESENCE_STATES=Ot;exports.PRESENCE_STATES_LIST=sl;exports.Portal=is;exports.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES=tc;exports.RICH_TEXT_EDITOR_OUTPUT_FORMATS=ec;exports.SrOnlyCloseButton=pl;exports.SrOnlyCloseButtonMixin=hl;
|
|
98
|
+
//# sourceMappingURL=rich_text_editor-RVMsCB8N.cjs.map
|