UNPKG

@artmate/chat

Version:

**开箱即用的AI组件库(基于 Vue3 + ElementPlus)**

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