UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

2 lines (1 loc) 6.03 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),i=require("../attachments/Attachments2.js"),B=require("ant-design-vue"),_=require("../_util/pick-attrs.js"),ee=require("../_util/hooks/use-x-component-config.js");require("../x-provider/index.js");const te=require("./context.js"),ne=require("./components/ActionButton/context.js"),ae=require("./components/ClearButton.js"),q=require("./components/LoadingButton.js"),F=require("./components/SendButton.js"),D=require("./components/SpeechButton/index.js"),le=require("./style/index.js"),oe=require("./useSpeech.js"),se=require("../_util/getValue.js"),ue=require("../x-provider/hooks/use-x-provider-context.js"),ce=n.defineComponent({name:"AXSender",__name:"Sender",props:n.mergeDefaults({onKeyPress:{type:Function},onFocus:null,onBlur:null,prefixCls:null,defaultValue:null,value:null,loading:{type:Boolean},placeholder:null,readOnly:{type:Boolean},submitType:{type:[String,Boolean]},disabled:{type:Boolean},onSubmit:{type:Function},onChange:{type:Function},onCancel:null,onKeyDown:{type:Function},onPaste:{type:Function},onPasteFile:{type:Function},components:null,styles:null,rootClassName:null,classNames:null,style:null,className:null,actions:{type:[Function,Boolean]},allowSpeech:null,prefix:{type:Function},footer:{type:Function},header:{type:Function},autoSize:null},{styles:()=>({}),classNames:()=>({}),submitType:"enter",actions:void 0,disabled:void 0,autoSize:()=>({maxRows:8})}),emits:["update:value"],setup(e,{expose:w,emit:$}){const K=i.createPropsRestProxy(e,["prefixCls","styles","classNames","className","rootClassName","style","defaultValue","value","placeholder","readOnly","submitType","onSubmit","loading","components","onCancel","onChange","actions","onKeyPress","onKeyDown","disabled","allowSpeech","prefix","footer","header","onPaste","onPasteFile","autoSize"]);n.toRef(e,"prefixCls");function R(t,a,c){return se.default(t,a)||c}const d={SendButton:F.default,ClearButton:ae.default,LoadingButton:q.default,SpeechButton:D.default},I=$,s=n.useSlots(),{direction:A,getPrefixCls:T}=ue.default(),l=n.computed(()=>T("sender",e.prefixCls)),f=n.ref(null),r=n.ref(null),o=ee.default("sender"),C=n.computed(()=>`${l.value}-input`),[k,z,E]=le.default(l.value),O=n.computed(()=>i.classnames(l.value,o.value.className,e.className,e.rootClassName,z.value,E,{[`${l.value}-rtl`]:A.value==="rtl",[`${l.value}-disabled`]:e.disabled})),p=n.computed(()=>`${l.value}-actions-btn`),h=n.computed(()=>`${l.value}-actions-list`),u=n.ref(e.value??e.defaultValue??""),g=t=>{u.value=t};n.watch(()=>e.value,()=>{g(e.value)});const v=(t,a)=>{g(t),I("update:value",t),e.onChange&&e.onChange(t,a)},{speechPermission:M,triggerSpeech:S,recording:L}=oe.default(t=>{v(`${u.value} ${t}`)},()=>e.allowSpeech),X=R(e.components,["input"],B.Input.TextArea),j=n.computed(()=>_.default(K,{attr:!0,aria:!0,data:!0})),H=n.computed(()=>({...j.value,ref:r})),m=()=>{u.value&&e.onSubmit&&!e.loading&&e.onSubmit(u.value)},G=()=>{v("")},y=n.ref(!1),J=()=>{y.value=!0},Q=()=>{y.value=!1},U=t=>{const a=t.key==="Enter"&&!y.value;switch(e.submitType){case"enter":a&&!t.shiftKey&&(t.preventDefault(),m());break;case"shiftEnter":a&&t.shiftKey&&(t.preventDefault(),m());break}e.onKeyPress&&e.onKeyPress(t)},W=t=>{var c,V;const a=(c=t.clipboardData)==null?void 0:c.files;a!=null&&a.length&&e.onPasteFile&&(e.onPasteFile(a[0],a),t.preventDefault()),(V=e.onPaste)==null||V.call(e,t)},Y=t=>{var a,c;t.target!==((a=f.value)==null?void 0:a.querySelector(`.${C.value}`))&&t.preventDefault(),(c=r.value)==null||c.focus()},x=n.computed(()=>{let t=n.createVNode(B.Flex,{class:`${h.value}-presets`},{default:()=>[e.allowSpeech&&n.createVNode(D.default,null,null),e.loading?n.createVNode(q.default,null,null):n.createVNode(F.default,null,null)]});const a={components:d};return s.actions?t=s.actions({ori:t,info:a}):typeof e.actions=="function"?t=e.actions(t,a):(e.actions||e.actions===!1)&&(t=e.actions),t}),Z=n.computed(()=>({prefixCls:p.value,onSend:m,onSendDisabled:!u.value,onClear:G,onClearDisabled:!u.value,onCancel:e.onCancel,onCancelDisabled:!e.loading,onSpeech:()=>S(!1),onSpeechDisabled:!M.value,speechRecording:L.value,disabled:e.disabled})),N=n.computed(()=>{let t=null;const a={components:d};return s.footer?t=s.footer({info:a}):typeof e.footer=="function"?t=e.footer({components:d}):e.footer&&(t=e.footer),t}),b=n.computed(()=>s.header?s.header():typeof e.header=="function"?e.header():e.header),P=n.computed(()=>s.prefix?s.prefix():typeof e.prefix=="function"?e.prefix():e.prefix);return w({nativeElement:f.value,focus:t=>{var a;return(a=r.value)==null?void 0:a.focus(t)},blur:()=>{var t;return(t=r.value)==null?void 0:t.blur()}}),()=>k(n.createVNode("div",{ref:f,class:O.value,style:{...o.value.style,...e.style}},[b.value&&n.createVNode(te.SenderHeaderContextProvider,{value:{prefixCls:l.value}},{default:()=>[b.value]}),n.createVNode(ne.ActionButtonContextProvider,{value:Z.value},{default:()=>[n.createVNode("div",{class:`${l.value}-content`,onMousedown:Y},[P.value&&n.createVNode("div",{class:i.classnames(`${l.value}-prefix`,o.value.classNames.prefix,e.classNames.prefix),style:{...o.value.styles.prefix,...e.styles.prefix}},[P.value]),n.createVNode(X,n.mergeProps(H.value,{disabled:e.disabled,style:{...o.value.styles.input,...e.styles.input},class:i.classnames(C.value,o.value.classNames.input,e.classNames.input),autoSize:e.autoSize,value:u.value,onChange:t=>{v(t.target.value,t),S(!0)},onPressEnter:U,onCompositionstart:J,onCompositionend:Q,onKeydown:e.onKeyDown,placeholder:e.placeholder,onPaste:W,bordered:!1,readOnly:e.readOnly}),null),x.value&&n.createVNode("div",{class:i.classnames(h.value,o.value.classNames.actions,e.classNames.actions),style:{...o.value.styles.actions,...e.styles.actions}},[x.value])]),N.value&&n.createVNode("div",{class:i.classnames(`${l.value}-footer`,o.value.classNames.footer,e.classNames.footer),style:{...o.value.styles.footer,...e.styles.footer}},[N.value])]})]))}});exports.default=ce;