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