UNPKG

ant-design-x-vue

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