ant-design-x-vue
Version:
Craft AI-driven interfaces effortlessly
2 lines (1 loc) • 5.86 kB
JavaScript
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"),te=require("../x-provider/hooks/use-x-provider-context.js");require("../x-provider/context.js");const ne=require("./context.js"),ae=require("./components/ActionButton/context.js"),oe=require("./components/ClearButton.js"),q=require("./components/LoadingButton.js"),w=require("./components/SendButton.js"),D=require("./components/SpeechButton/index.js"),le=require("./style/index.js"),se=require("./useSpeech.js"),ue=require("../_util/getValue.js"),ce=n.defineComponent({name:"AXSender",__name:"Sender",props:{onKeyPress:{},onFocus:{},onBlur:{},prefixCls:{},defaultValue:{},value:{},loading:{type:Boolean},placeholder:{},readOnly:{type:Boolean},submitType:{type:[String,Boolean],default:"enter"},disabled:{type:Boolean,default:void 0},onSubmit:{},onChange:{},onCancel:{},onKeyDown:{},onPaste:{},onPasteFile:{},components:{},styles:{default:()=>({})},rootClassName:{},classNames:{default:()=>({})},style:{},className:{},actions:{type:[Object,Function,Boolean],default:void 0},allowSpeech:{},prefix:{},footer:{},header:{},autoSize:{default:()=>({maxRows:8})}},emits:["update:value"],setup(e,{expose:$,emit:K}){const R=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 I(t,a,c){return ue.default(t,a)||c}const d={SendButton:w.default,ClearButton:oe.default,LoadingButton:q.default,SpeechButton:D.default},A=K,s=n.useSlots(),{direction:F,getPrefixCls:k}=te.default(),o=n.computed(()=>k("sender",e.prefixCls)),f=n.ref(null),r=n.ref(null),l=ee.default("sender"),C=n.computed(()=>`${o.value}-input`),[O,T,E]=le.default(o.value),z=n.computed(()=>i.classnames(o.value,l.value.className,e.className,e.rootClassName,T.value,E,{[`${o.value}-rtl`]:F.value==="rtl",[`${o.value}-disabled`]:e.disabled})),M=n.computed(()=>`${o.value}-actions-btn`),h=n.computed(()=>`${o.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),A("update:value",t),e.onChange&&e.onChange(t,a)},{speechPermission:L,triggerSpeech:x,recording:X}=se.default(t=>{v(`${u.value} ${t}`)},()=>e.allowSpeech),j=I(e.components,["input"],B.Input.TextArea),H=n.computed(()=>_.default(R,{attr:!0,aria:!0,data:!0})),G=n.computed(()=>({...H.value,ref:r})),m=()=>{u.value&&e.onSubmit&&!e.loading&&e.onSubmit(u.value)},J=()=>{v("")},y=n.ref(!1),Q=()=>{y.value=!0},U=()=>{y.value=!1},W=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)},Y=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)},Z=t=>{var a,c;t.target!==((a=f.value)==null?void 0:a.querySelector(`.${C.value}`))&&t.preventDefault(),(c=r.value)==null||c.focus()},S=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(w.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}),p=n.computed(()=>({prefixCls:M.value,onSend:m,onSendDisabled:!u.value,onClear:J,onClearDisabled:!u.value,onCancel:e.onCancel,onCancelDisabled:!e.loading,onSpeech:()=>x(!1),onSpeechDisabled:!L.value,speechRecording:X.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 $({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()}}),()=>O(n.createVNode("div",{ref:f,class:z.value,style:{...l.value.style,...e.style}},[b.value&&n.createVNode(ne.SenderHeaderContextProvider,{value:{prefixCls:o.value}},{default:()=>[b.value]}),n.createVNode(ae.ActionButtonContextProvider,{value:p.value},{default:()=>[n.createVNode("div",{class:`${o.value}-content`,onMousedown:Z},[P.value&&n.createVNode("div",{class:i.classnames(`${o.value}-prefix`,l.value.classNames.prefix,e.classNames.prefix),style:{...l.value.styles.prefix,...e.styles.prefix}},[P.value]),n.createVNode(j,n.mergeProps(G.value,{disabled:e.disabled,style:{...l.value.styles.input,...e.styles.input},class:i.classnames(C.value,l.value.classNames.input,e.classNames.input),autoSize:e.autoSize,value:u.value,onChange:t=>{v(t.target.value,t),x(!0)},onPressEnter:W,onCompositionstart:Q,onCompositionend:U,onKeydown:e.onKeyDown,placeholder:e.placeholder,onPaste:Y,bordered:!1,readOnly:e.readOnly}),null),S.value&&n.createVNode("div",{class:i.classnames(h.value,l.value.classNames.actions,e.classNames.actions),style:{...l.value.styles.actions,...e.styles.actions}},[S.value])]),N.value&&n.createVNode("div",{class:i.classnames(`${o.value}-footer`,l.value.classNames.footer,e.classNames.footer),style:{...l.value.styles.footer,...e.styles.footer}},[N.value])]})]))}});exports.default=ce;
;