Files
qhmes/web-dist/js/ImChatInput-rBvfVpHc.js
2026-06-16 18:19:57 +08:00

3 lines
5.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* empty css */import{fE as X,c0 as Y,bR as Z,aC as ee,bV as te,bT as ne,fF as ae,aN as oe,aR as se,aS as le,fG as ie,bn as p,fH as de,au as re}from"./index-X7Y8jykP.js";import"./index-CfNJyBRj.js";import{D as ue}from"./dropdown-jkliuVyN.js";import{e as ce,r as g,C as me,z as I,Q as i,f as a,A as s,u as b,c as M,K as k,J as fe,G as pe,y as j,E as C}from"./vue-vendor-DNhG1Cve.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";const ge={class:"im-chat-input-wrap"},be={class:"im-chat-input-toolbar"},_e={class:"toolbar-left"},ve=["disabled"],ye=["disabled"],he={class:"toolbar-right"},we={class:"send-btn-group"},Ee={class:"im-chat-input-hint"},B="im-chat-send-mode",Ie=ce({name:"ImChatInput",__name:"ImChatInput",props:{modelValue:{},disabled:{type:Boolean,default:!1},sending:{type:Boolean,default:!1}},emits:["update:modelValue","send","image-uploaded"],setup(l,{emit:D}){const d=l,r=D,R={categories:{recent:"最近使用",smileys:"全部表情",people:"人物",nature:"自然",foods:"食物",activity:"活动",places:"地点",objects:"物品",symbols:"符号",flags:"旗帜"},search:"搜索表情",notfound:"未找到表情"},T={width:"360px",border:"none"},z=X(),N=Y(),S=g(),_=g(!1),h=g(!1),u=g(!1),v=g(G()),x=M(()=>!d.disabled&&!!d.modelValue.trim()&&!d.sending),F=M(()=>v.value==="enter"?"Enter / Alt+S 发送Ctrl+Enter 换行":"Ctrl+Enter / Alt+S 发送Enter 换行");function G(){return localStorage.getItem(B)==="ctrlEnter"?"ctrlEnter":"enter"}function P({key:e}){v.value=e,localStorage.setItem(B,e)}function U(e){return e.parentElement||document.body}function K(){var e,t;return(t=(e=S.value)==null?void 0:e.resizableTextArea)==null?void 0:t.textArea}function H(e){r("update:modelValue",e)}function L(){window.setTimeout(()=>{_.value=!1},120)}function V(e){var m,f;const t=K(),n=d.modelValue||"";if(!t){r("update:modelValue",n+e);return}const o=(m=t.selectionStart)!=null?m:n.length,c=(f=t.selectionEnd)!=null?f:o,E=n.slice(0,o)+e+n.slice(c);r("update:modelValue",E);const y=o+e.length;window.requestAnimationFrame(()=>{t.focus(),t.setSelectionRange(y,y)})}function $(e){const t=ie(e);t&&(V(t),h.value=!1,_.value=!0,window.requestAnimationFrame(()=>{var n;return(n=K())==null?void 0:n.focus()}))}function w(){x.value&&r("send")}function q(e){if(e.altKey&&!e.ctrlKey&&!e.shiftKey&&(e.key==="s"||e.key==="S")){e.preventDefault(),w();return}if(e.key!=="Enter")return;const t=v.value==="enter",n=t?!e.ctrlKey&&!e.shiftKey:e.ctrlKey&&!e.shiftKey,o=t?e.ctrlKey||e.shiftKey:!e.ctrlKey||e.shiftKey;if(n){e.preventDefault(),w();return}o&&e.ctrlKey&&!e.shiftKey&&(e.preventDefault(),V(`
`))}const O=e=>{var t;return(t=e.type)!=null&&t.startsWith("image/")?e.size>de?(p.warning("图片大小不能超过10MB"),!1):d.disabled?(p.warning("请先选择聊天对象"),!1):(u.value=!0,!0):(p.warning("仅支持发送图片文件"),!1)};function J(e){const{file:t}=e;if(t.status==="uploading")return;if(u.value=!1,t.status==="error"){p.error(`${t.name} 上传失败`);return}if(t.status!=="done")return;const n=t.response;if(!(n!=null&&n.success)){p.warning((n==null?void 0:n.message)||"图片上传失败");return}const o=n.message;o&&r("image-uploaded",o)}return(e,t)=>{const n=Z,o=k("Picker"),c=k("Icon"),E=ee,y=te,m=k("a-button"),f=le,Q=se,W=ue;return I(),me("div",ge,[i("div",{class:fe(["im-chat-input",{focused:_.value,disabled:l.disabled}])},[a(n,{ref_key:"textareaRef",ref:S,value:l.modelValue,"auto-size":{minRows:3,maxRows:8},placeholder:"请输入消息",bordered:!1,disabled:l.disabled,class:"im-chat-input-textarea","onUpdate:value":H,onFocus:t[0]||(t[0]=A=>_.value=!0),onBlur:L,onKeydown:q},null,8,["value","disabled"]),i("div",be,[i("div",_e,[a(E,{open:h.value,"onUpdate:open":t[1]||(t[1]=A=>h.value=A),trigger:"click",placement:"topLeft","overlay-class-name":"im-emoji-popover","overlay-style":{padding:0},"get-popup-container":U},{content:s(()=>[a(o,{"picker-styles":T,i18n:R,data:b(z),emoji:"grinning",native:!0,"show-preview":!1,"infinite-scroll":!1,"show-search":!0,"show-skin-tones":!1,set:"native",onSelect:$},null,8,["data"])]),default:s(()=>[i("button",{type:"button",class:"toolbar-btn",title:"表情",disabled:l.disabled},[a(c,{icon:"ant-design:smile-outlined"})],8,ve)]),_:1},8,["open"]),a(y,{"show-upload-list":!1,action:b(oe),headers:b(N),data:{biz:"im/chat"},accept:b(ae),"before-upload":O,disabled:l.disabled||u.value,onChange:J},{default:s(()=>[i("button",{type:"button",class:"toolbar-btn",title:"发送图片",disabled:l.disabled||u.value},[u.value?(I(),j(b(ne),{key:1,spin:""})):(I(),j(c,{key:0,icon:"ant-design:picture-outlined"}))],8,ye)]),_:1},8,["action","headers","accept","disabled"])]),i("div",he,[i("div",we,[a(m,{type:"primary",class:"send-btn",disabled:!x.value,loading:l.sending,onClick:w},{default:s(()=>[...t[2]||(t[2]=[C(" 发送(S) ",-1)])]),_:1},8,["disabled","loading"]),a(W,{trigger:["click"],placement:"topRight"},{overlay:s(()=>[a(Q,{"selected-keys":[v.value],onClick:P},{default:s(()=>[a(f,{key:"enter"},{default:s(()=>[...t[3]||(t[3]=[C(" Enter 发送",-1)])]),_:1}),a(f,{key:"ctrlEnter"},{default:s(()=>[...t[4]||(t[4]=[C(" Ctrl+Enter 发送",-1)])]),_:1})]),_:1},8,["selected-keys"])]),default:s(()=>[a(m,{type:"primary",class:"send-btn-arrow",disabled:l.sending},{default:s(()=>[a(c,{icon:"ant-design:down-outlined"})]),_:1},8,["disabled"])]),_:1})])])])],2),i("div",Ee,pe(F.value),1)])}}}),Ae=re(Ie,[["__scopeId","data-v-d47f1996"]]);export{Ae as default};