UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

2 lines (1 loc) 2.05 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const _=require("vue"),T=require("./useSyncState.js"),X=require("../_util/hooks/use-event-callback.js");function j(i){return Array.isArray(i)?i:[i]}function F(i){const{defaultMessages:w,agent:b,requestFallback:d,requestPlaceholder:f,parser:v,transformMessage:S,transformStream:$,resolveAbortController:p}=i,k=_.ref(0),A=_.computed(()=>(w||[]).map((s,t)=>({id:`default_${t}`,status:"local",...s}))),[M,l]=T.default(A.value,()=>{}),m=(s,t)=>{const o={id:`msg_${k.value}`,message:s,status:t};return k.value+=1,o},C=_.computed(()=>{const s=[];return M.value.forEach(t=>{const o=v?v(t.message):t.message,c=j(o);c.forEach((u,h)=>{let e=t.id;c.length>1&&(e=`${e}_${h}`),s.push({id:e,message:u,status:t.status})})}),s}),q=s=>s.filter(t=>t.status!=="loading"&&t.status!=="error").map(t=>t.message),E=()=>q(M.value),R=s=>typeof S=="function"?S(s):s.currentMessage;return{onRequest:X.useEventCallback(s=>{if(!b)throw new Error("The agent parameter is required when using the onRequest method in an agent generated by useXAgent.");let t=null,o,c={};if(typeof s=="object"&&(s!=null&&s.message)){const{message:e,...a}=s;o=e,c=a}else o=s;l(e=>{let a=[...e,m(o,"local")];if(f){let r;typeof f=="function"?r=f(o,{messages:q(a)}):r=f;const n=m(r,"loading");t=n.id,a=[...a,n]}return a});let u=null;const h=(e,a)=>{let r=M.value.find(n=>n.id===u);return r?l(n=>n.map(g=>{if(g.id===u){const y=R({originMessage:g.message,currentMessage:e,status:a});return{...g,message:y,status:a}}return g})):(R({currentMessage:e,status:a}),r=m(e,a),l(n=>[...n.filter(y=>y.id!==t),r]),u=r.id),r};b.request({message:o,messages:E(),...c},{onUpdate:e=>{h(e,"loading")},onSuccess:e=>{h(e,"success")},onError:async e=>{if(d){let a;typeof d=="function"?a=await d(o,{error:e,messages:E()}):a=d,l(r=>[...r.filter(n=>n.id!==t&&n.id!==u),m(a,"error")])}else l(a=>a.filter(r=>r.id!==t&&r.id!==u))},onStream:e=>{p==null||p(e)}},$)}),messages:M,parsedMessages:C,setMessages:l}}exports.default=F;