rt-chat-messages 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(z,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("markdown-it"),require("@vscode/markdown-it-katex"),require("mermaid")):typeof define=="function"&&define.amd?define(["exports","vue","markdown-it","@vscode/markdown-it-katex","mermaid"],e):(z=typeof globalThis<"u"?globalThis:z||self,e(z.ChatMessages={},z.Vue,z.markdownit,z.markdownItKatex,z.mermaid))})(this,(function(z,e,we,Ce,ce){"use strict";const Ee={class:"cm-dialog__body"},Be=e.defineComponent({__name:"Dialog",props:{visible:{type:Boolean,default:!1},width:{default:"50%"},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!0}},emits:["update:visible","close"],setup(o,{emit:h}){const k=o,l=h,N=e.ref(!1);e.onMounted(()=>{N.value=!0});const E=e.computed(()=>k.fullscreen?{width:"100%",height:"100%",margin:0}:{width:k.width}),_=()=>{l("update:visible",!1),l("close")},B=()=>{k.closeOnClickModal&&_()};return(b,C)=>N.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"body"},[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["cm-dialog-overlay",{"is-fullscreen":o.fullscreen}]),onClick:e.withModifiers(B,["self"])},[e.createElementVNode("div",{class:"cm-dialog",style:e.normalizeStyle(E.value),role:"dialog","aria-modal":"true"},[e.createElementVNode("div",Ee,[e.renderSlot(b.$slots,"default",{},void 0,!0)]),o.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"cm-dialog__close",onClick:_},[...C[0]||(C[0]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[e.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})],-1)])])):e.createCommentVNode("",!0)],4)],2)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),U=(o,h)=>{const k=o.__vccOpts||o;for(const[l,N]of h)k[l]=N;return k},te=U(Be,[["__scopeId","data-v-efdf0259"]]),Me=["disabled"],Ne={key:0,class:"cm-icon-loading"},L=U(e.defineComponent({__name:"Button",props:{type:{default:"default"},size:{default:"default"},circle:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(o,{emit:h}){const k=o,l=h,N=E=>{k.disabled||k.loading||l("click",E)};return(E,_)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["cm-button",[`cm-button--${o.type}`,`cm-button--${o.size}`,{"is-circle":o.circle,"is-disabled":o.disabled,"is-loading":o.loading}]]),disabled:o.disabled||o.loading,onClick:N},[o.loading?(e.openBlock(),e.createElementBlock("span",Ne,[..._[0]||(_[0]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"1em",height:"1em"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 0 1 448 448 32 32 0 1 1-64 0 416 416 0 0 0-416-416 416 416 0 0 0-416 416 32 32 0 1 1-64 0 448 448 0 0 1 448-448z"})],-1)])])):e.renderSlot(E.$slots,"default",{key:1},void 0,!0)],10,Me))}}),[["__scopeId","data-v-bab126c7"]]),T=(o,h)=>e.defineComponent({name:o,render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024",width:"1em",height:"1em",fill:"currentColor",style:"vertical-align: middle"},[e.h("path",{d:h})])}}),G=T("Close","M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"),ie=T("ZoomIn","M637.696 587.392a316.032 316.032 0 1 0-45.44 49.344l191.232 191.296a32 32 0 0 0 45.312-45.184L637.696 587.392zM73.152 357.696a284.48 284.48 0 1 1 284.48 284.48A284.672 284.672 0 0 1 73.152 357.568zm268.48-154.56a32 32 0 0 0-32 32v90.496h-90.56a32 32 0 0 0 0 64h90.56v90.56a32 32 0 0 0 64 0v-90.496h90.496a32 32 0 0 0 0-64H373.632v-90.56a32 32 0 0 0-32-32z"),de=T("ZoomOut","M637.696 587.392a316.032 316.032 0 1 0-45.44 49.344l191.232 191.296a32 32 0 0 0 45.312-45.184L637.696 587.392zM73.152 357.696a284.48 284.48 0 1 1 284.48 284.48A284.672 284.672 0 0 1 73.152 357.568zm145.92-58.56a32 32 0 0 0 0 64h245.12a32 32 0 0 0 0-64H219.072z"),me=T("Document","M854.6 288.7c0.4 0 0.7 0 1 0v431.5c0 17.6-14.4 32-32 32H200.4c-17.6 0-32-14.4-32-32l0-575.2c0-17.6 14.4-32 32-32h391.5c0 0.3 0 0.7 0 1l0 142.1c0 17.6 14.4 32.1 32 32.1h142.6c0-0.4 0-0.7 0-1.1L854.6 288.7zM790.2 220.2L668 97.9v122.3h122.2zM240 448h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h384a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64z"),ge=T("Download","M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2 0.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"),Ve=T("VideoPlay","M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.656-340.32a32 32 0 0 1 32 32V673.92a32 32 0 0 1-50.208 26.24l-236.8-161.92a32 32 0 0 1 0-52.48l236.8-161.92a32 32 0 0 1 18.208-5.632z"),_e=T("VideoPause","M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-96-544a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32z"),xe=T("ArrowLeft","M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"),Se=T("ArrowRight","M340.864 149.312a29.12 29.12 0 0 0-41.728 0 30.592 30.592 0 0 0 0 42.752L611.072 511.936 299.136 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L672.448 534.272a32 32 0 0 0 0-44.672L340.864 149.312z"),fe=T("Spinner","M512 64a448 448 0 0 1 448 448 32 32 0 1 1-64 0 416 416 0 0 0-416-416 416 416 0 0 0-416 416 32 32 0 1 1-64 0 448 448 0 0 1 448-448z"),he=T("Check","M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1 0.4-12.8-6.3-12.8z"),be=T("ChevronUp","M854.6 642.5l-320-320c-12.5-12.5-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L512 390.6l297.4 297.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z"),$e=T("ChevronDown","M854.6 381.5l-320 320c-12.5 12.5-32.8 12.5-45.3 0l-320-320c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L512 633.4l297.4-297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"),ve=["src","alt"],ze={class:"preview-controls"},Le={class:"cm-button-group"},Te={key:0,class:"mobile-close-hint"},De=["innerHTML"],Ie={class:"preview-controls"},Ae={class:"cm-button-group"},He={key:0,class:"mobile-close-hint"},ae=U(e.defineComponent({__name:"MarkdownMessage",props:{content:{},isStreaming:{type:Boolean,default:!1}},setup(o){const h=o,k=e.ref(),l=e.ref(),N=e.ref(!1),E=e.ref(""),_=e.ref(""),B=e.ref(!1),b=e.ref(""),C=e.ref(!1),c=e.ref(1),i=e.ref({x:0,y:0}),y=e.ref(!1),V=e.ref({x:0,y:0}),M=e.ref(1),w=e.ref({x:0,y:0}),Y=e.ref(!1),O=e.ref({x:0,y:0}),W=e.ref(""),R=e.ref(new Map);let X=0;ce.initialize({startOnLoad:!1,theme:"default",securityLevel:"loose",fontFamily:"inherit"});const Q=t=>{const a=t.renderer.rules.fence;t.renderer.rules.fence=(s,g,r,n,m)=>{const p=s[g],v=p.content.trim();return(p.info?p.info.trim():"")==="mermaid"?(X++,`<div class="mermaid-container"><pre class="mermaid" data-mermaid-id="${`mermaid-${Date.now()}-${X}`}">${v}</pre></div>`):a(s,g,r,n,m)}},F=new we({html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0,quotes:`""''`,highlight:function(t,a){return a&&a.trim()?`<pre class="hljs language-${a}"><code>${(g=>g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"))(t)}</code></pre>`:`<pre class="hljs"><code>${t}</code></pre>`}}),Z=F.renderer.rules.image||function(t,a,s,g,r){return r.renderToken(t,a,s)};F.renderer.rules.image=function(t,a,s,g,r){const n=t[a],m=n.attrIndex("src");if(m>=0){const p=n.attrs[m][1],S="img-"+(I=>{let $=0;for(let D=0;D<I.length;D++){const H=I.charCodeAt(D);$=($<<5)-$+H,$=$&$}return Math.abs($).toString(36)})(p);n.attrSet("id",S),n.attrSet("data-image-id",S),n.attrSet("key",S),n.attrSet("loading","eager"),n.attrSet("decoding","async"),n.attrSet("fetchpriority","high"),n.attrSet("data-src",p),n.attrSet("data-cached","true")}return Z(t,a,s,g,r)},F.use(Ce,{throwOnError:!1,errorColor:"#cc0000"}),F.use(Q);const oe=t=>{const a=t.match(/```[\w]*\n/g),s=t.match(/\n```/g),g=(a==null?void 0:a.length)||0,r=(s==null?void 0:s.length)||0;return g>r&&(t+="\n```"),t},ee=t=>{if(!t)return"";t=t.replace(/;;\s*$/g,""),t=t.replace(/;;\s*$/g,"");const a=/^```(?:markdown|md)\s*\n([\s\S]*?)\n```$/,s=t.match(a);if(s)t=s[1];else{const g=/^```\s*\n([\s\S]*?)\n```$/,r=t.match(g);if(r){const n=r[1];(/^#{1,6}\s/.test(n)||/^\*{1,2}[^*]+\*{1,2}/.test(n)||/^[-*+]\s/.test(n)||/^\d+\.\s/.test(n)||/!\[.*?\]\(.*?\)/.test(n)||/\[.*?\]\(.*?\)/.test(n)||/^\|.+\|/.test(n)||/^\|[\s-:]+\|/m.test(n))&&(t=n)}}if(h.isStreaming){const g=/^```(?:markdown|md)?\s*\n/;if(g.test(t)){const n=t.replace(g,"");(/^#{1,6}\s/.test(n)||/^\|.+\|/.test(n)||/^\|[\s-:]+\|/m.test(n)||/!\[.*?\]\(.*?\)/.test(n)||/\[.*?\]\(.*?\)/.test(n))&&(t=t.replace(g,""))}if(/^```(?:markdown|md)?\s*\n/.test(h.content)){const n=/\n```\s*$/;n.test(t)&&(t=t.replace(n,""))}}return t=t.replace(/```(?:markdown|md)\s*\n([\s\S]*?)\n```/g,(g,r)=>r),h.isStreaming&&(t=oe(t)),t},se=t=>{if(!t.includes("<img"))return t;const a=/<img[^>]*?src="([^"]*)"[^>]*?>/g;let s,g=t;const r=[];for(;(s=a.exec(t))!==null;){const n=s[0],m=s[1];if(R.value.has(m)){const p=R.value.get(m);n!==p&&r.push({original:n,cached:p})}else R.value.set(m,n)}for(const{original:n,cached:m}of r)g=g.replace(n,m);return g},le=t=>{if(!l.value)return;const a=l.value;if(!h.isStreaming||a.children.length===0){a.innerHTML=t,h.isStreaming||e.nextTick(()=>{ye(),u()});return}const s=document.createElement("div");s.innerHTML=t;const g=new Map;a.querySelectorAll("img[data-image-id]").forEach(n=>{const m=n.getAttribute("data-image-id");m&&g.set(m,n)}),s.querySelectorAll("img[data-image-id]").forEach(n=>{const m=n.getAttribute("data-image-id");if(m&&g.has(m)){const p=g.get(m);n.parentNode&&n.parentNode.replaceChild(p,n)}});const r=document.createDocumentFragment();for(;s.firstChild;)r.appendChild(s.firstChild);a.innerHTML="",a.appendChild(r)},P=()=>{try{if(!h.content){W.value="",l.value&&(l.value.innerHTML=""),h.isStreaming||R.value.clear();return}const t=ee(h.content);let a=F.render(t);h.isStreaming&&a.includes("<img")&&(a=se(a)),a!==W.value&&(W.value=a,le(a)),h.isStreaming||R.value.clear()}catch(t){console.error("Markdown rendering error:",t),l.value&&(l.value.innerHTML=`<pre style="white-space: pre-wrap; word-wrap: break-word;">${h.content}</pre>`)}};e.watch(()=>h.content,P),e.watch(()=>h.isStreaming,(t,a)=>{a&&!t&&e.nextTick(()=>{P()})});const d=()=>{C.value=window.innerWidth<768},f=t=>{let a=t;return a=a.replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1"),[/([A-Za-z0-9_]+)\[([^\]]*[\u4e00-\u9fa5]+[^\]]*)\]/g,/([A-Za-z0-9_]+)\(([^)]*[\u4e00-\u9fa5]+[^)]*)\)/g,/([A-Za-z0-9_]+)\{([^}]*[\u4e00-\u9fa5]+[^}]*)\}/g].forEach(g=>{a=a.replace(g,(r,n,m)=>{if(m.startsWith('"')&&m.endsWith('"'))return r;let p=m.replace(/^["']+|["']+$/g,"").replace(/["]/g,'\\"');return r.includes("[")?`${n}["${p}"]`:r.includes("(")?`${n}("${p}")`:r.includes("{")?`${n}{"${p}"}`:r})}),a},u=async()=>{var a,s;if(h.isStreaming||(await e.nextTick(),!k.value))return;const t=k.value.querySelectorAll(".mermaid");if(t.length!==0)for(const g of Array.from(t)){const r=g;let n=(a=r.textContent)==null?void 0:a.trim();if(n&&r.getAttribute("data-processed")!=="true")try{r.setAttribute("data-processed","true"),n=f(n);const m=r.getAttribute("data-mermaid-id")||`mermaid-${Date.now()}-${Math.random()}`,{svg:p}=await ce.render(m,n),v=r.parentElement;if(v){const S=document.createElement("div");S.className="mermaid-svg",S.innerHTML=p,S.setAttribute("data-mermaid-svg","true"),S.style.cursor="pointer",S.title="Click to zoom",S.addEventListener("click",I=>{I.preventDefault(),I.stopPropagation(),b.value=p,M.value=1,w.value={x:0,y:0},B.value=!0}),v.replaceChild(S,r)}}catch(m){console.error("Mermaid render failure:",m);const p=document.createElement("div");p.className="mermaid-error",p.textContent=`Mermaid render error: ${m}`,(s=r.parentElement)==null||s.replaceChild(p,r)}}},x=t=>{t.preventDefault(),t.stopPropagation();const a=t.target;E.value=a.src,_.value=a.alt||"Image Preview",c.value=1,i.value={x:0,y:0},N.value=!0},A=()=>{c.value<=1&&(i.value={x:0,y:0})},Ht=()=>{c.value=Math.min(c.value+1,10),A()},Rt=()=>{c.value=Math.max(c.value-1,.5),A()},pe=()=>{c.value=1,i.value={x:0,y:0}},Ft=()=>{c.value<=1&&(N.value=!1)},Pt=t=>{t.preventDefault();const a=t.deltaY>0?-.5:.5,s=Math.max(.5,Math.min(10,c.value+a));c.value=s,A()},Ut=t=>{var n;if(c.value<=1)return;t.preventDefault(),y.value=!0,V.value={x:t.clientX-i.value.x,y:t.clientY-i.value.y};const a=t.target,s=(n=a.parentElement)==null?void 0:n.getBoundingClientRect(),g=m=>{if(!y.value||!s)return;let p=m.clientX-V.value.x,v=m.clientY-V.value.y;const S=a.offsetWidth,I=a.offsetHeight,$=S*c.value,D=I*c.value,H=.3,re=s.width*(1-H-.5)-$/2,j=$/2-s.width*(1-H-.5),K=s.height*(1-H-.5)-D/2,q=D/2-s.height*(1-H-.5);$>s.width?p=Math.max(re,Math.min(j,p)):p=0,D>s.height?v=Math.max(K,Math.min(q,v)):v=0,i.value={x:p,y:v}},r=()=>{y.value=!1,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",g),document.addEventListener("mouseup",r)},Yt=t=>{var v;if(t.touches.length!==1)return;const a=t.touches[0],s=a.clientX,g=a.clientY;if(c.value<=1)return;y.value=!0,V.value={x:s-i.value.x,y:g-i.value.y};const r=t.target,n=(v=r.parentElement)==null?void 0:v.getBoundingClientRect(),m=S=>{if(!y.value||S.touches.length!==1||!n)return;const I=S.touches[0];let $=I.clientX-V.value.x,D=I.clientY-V.value.y;const H=r.offsetWidth,re=r.offsetHeight,j=H*c.value,K=re*c.value,q=.3,jt=n.width*(1-q-.5)-j/2,Kt=j/2-n.width*(1-q-.5),Gt=n.height*(1-q-.5)-K/2,Jt=K/2-n.height*(1-q-.5);j>n.width?$=Math.max(jt,Math.min(Kt,$)):$=0,K>n.height?D=Math.max(Gt,Math.min(Jt,D)):D=0,i.value={x:$,y:D}},p=()=>{y.value=!1,document.removeEventListener("touchmove",m),document.removeEventListener("touchend",p)};document.addEventListener("touchmove",m,{passive:!1}),document.addEventListener("touchend",p)},Ot=()=>{M.value=Math.min(M.value+1,10)},Wt=()=>{M.value=Math.max(M.value-1,.5)},ke=()=>{M.value=1,w.value={x:0,y:0}},Xt=t=>{t.preventDefault();const a=t.deltaY>0?-.5:.5;M.value=Math.max(.5,Math.min(10,M.value+a))},qt=t=>{var n,m;if(M.value<=1)return;t.preventDefault(),Y.value=!0,O.value={x:t.clientX-w.value.x,y:t.clientY-w.value.y};const s=(m=(n=t.target.closest(".mermaid-preview-content"))==null?void 0:n.parentElement)==null?void 0:m.getBoundingClientRect(),g=p=>{if(!Y.value||!s)return;let v=p.clientX-O.value.x,S=p.clientY-O.value.y;w.value={x:v,y:S}},r=()=>{Y.value=!1,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",g),document.addEventListener("mouseup",r)},Zt=t=>{},ye=()=>{h.isStreaming||e.nextTick(()=>{if(!k.value)return;k.value.querySelectorAll(".markdown-content img").forEach(a=>{const s=a;s.getAttribute("data-processed")!=="true"&&(s.setAttribute("data-processed","true"),s.style.cursor="pointer",s.addEventListener("click",x))})})};return e.onMounted(()=>{d(),window.addEventListener("resize",d),P(),ye(),u()}),e.onUnmounted(()=>{k.value&&k.value.querySelectorAll(".markdown-content img").forEach(a=>{a.removeEventListener("click",x)})}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{class:"markdown-message",ref_key:"markdownContainer",ref:k},[e.createElementVNode("div",{ref_key:"markdownContent",ref:l,class:"markdown-content"},null,512),e.createVNode(te,{visible:N.value,"onUpdate:visible":a[2]||(a[2]=s=>N.value=s),width:C.value?"95vw":"80vw",fullscreen:C.value,class:"image-preview-dialog","close-on-click-modal":!1,"append-to-body":""},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"image-preview-container",onClick:a[1]||(a[1]=e.withModifiers(s=>N.value=!1,["self"]))},[e.createElementVNode("img",{src:E.value,alt:_.value,class:"preview-image",style:e.normalizeStyle({transform:`translate(${i.value.x}px, ${i.value.y}px) scale(${c.value})`}),onWheel:e.withModifiers(Pt,["prevent"]),onDblclick:pe,onMousedown:Ut,onTouchstart:e.withModifiers(Yt,["prevent"]),onClick:Ft},null,44,ve),e.createElementVNode("div",ze,[e.createElementVNode("div",Le,[e.createVNode(L,{size:"small",onClick:Rt,disabled:c.value<=.5},{default:e.withCtx(()=>[e.createVNode(e.unref(de))]),_:1},8,["disabled"]),e.createVNode(L,{size:"small",onClick:pe},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(Math.round(c.value*100))+"% ",1)]),_:1}),e.createVNode(L,{size:"small",onClick:Ht,disabled:c.value>=10},{default:e.withCtx(()=>[e.createVNode(e.unref(ie))]),_:1},8,["disabled"])]),e.createVNode(L,{size:"small",onClick:a[0]||(a[0]=s=>N.value=!1),type:"danger"},{default:e.withCtx(()=>[e.createVNode(e.unref(G))]),_:1})]),C.value?(e.openBlock(),e.createElementBlock("div",Te,"双击重置 · 轻触关闭")):e.createCommentVNode("",!0)])]),_:1},8,["visible","width","fullscreen"]),e.createVNode(te,{visible:B.value,"onUpdate:visible":a[5]||(a[5]=s=>B.value=s),width:C.value?"95vw":"90vw",fullscreen:C.value,class:"mermaid-preview-dialog","close-on-click-modal":!1,"append-to-body":""},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"mermaid-preview-container",onClick:a[4]||(a[4]=e.withModifiers(s=>B.value=!1,["self"]))},[e.createElementVNode("div",{class:"mermaid-preview-content",innerHTML:b.value,style:e.normalizeStyle({transform:`translate(${w.value.x}px, ${w.value.y}px) scale(${M.value})`}),onWheel:e.withModifiers(Xt,["prevent"]),onDblclick:ke,onMousedown:qt,onTouchstart:e.withModifiers(Zt,["prevent"])},null,44,De),e.createElementVNode("div",Ie,[e.createElementVNode("div",Ae,[e.createVNode(L,{size:"small",onClick:Wt,disabled:M.value<=.5},{default:e.withCtx(()=>[e.createVNode(e.unref(de))]),_:1},8,["disabled"]),e.createVNode(L,{size:"small",onClick:ke},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(Math.round(M.value*100))+"% ",1)]),_:1}),e.createVNode(L,{size:"small",onClick:Ot,disabled:M.value>=10},{default:e.withCtx(()=>[e.createVNode(e.unref(ie))]),_:1},8,["disabled"])]),e.createVNode(L,{size:"small",onClick:a[3]||(a[3]=s=>B.value=!1),type:"danger"},{default:e.withCtx(()=>[e.createVNode(e.unref(G))]),_:1})]),C.value?(e.openBlock(),e.createElementBlock("div",He,"双击重置 · 轻触关闭")):e.createCommentVNode("",!0)])]),_:1},8,["visible","width","fullscreen"])],512))}}),[["__scopeId","data-v-e47faf67"]]),Re={key:0,class:"text-content"},Fe={key:1,class:"images-content"},Pe=["onClick"],Ue=["src","alt","onError"],Ye={key:0,class:"more-images"},Oe={key:2,class:"attachments-content"},We={class:"file-icon-wrapper"},Xe={class:"attachment-info"},qe={class:"attachment-name"},Ze={class:"attachment-size"},je={key:3,class:"files-content"},Ke=["onClick"],Ge={class:"file-icon-wrapper-small"},Je={class:"file-info"},Qe={class:"file-name"},et={class:"file-type"},tt={class:"file-actions"},at={key:4,class:"audio-content"},nt={class:"audio-player"},ot={class:"audio-info"},st={class:"audio-progress"},lt={class:"progress-bar"},rt={class:"audio-time"},ct={class:"image-preview-container"},it=["src"],dt={key:0,class:"image-nav"},mt={class:"image-counter"},J=U(e.defineComponent({__name:"MultimodalMessage",props:{message:{},isUser:{type:Boolean,default:!1},isStreaming:{type:Boolean,default:!1}},setup(o){const h=o,k=e.computed(()=>{try{return h.message.metadata?JSON.parse(h.message.metadata):{}}catch{return{}}}),l=e.computed(()=>k.value.imageUrls||[]),N=e.computed(()=>k.value.fileUrls||[]),E=e.computed(()=>k.value.audioUrl),_=e.computed(()=>h.message.attachments&&h.message.attachments.length>0?h.message.attachments:k.value.attachments&&Array.isArray(k.value.attachments)?k.value.attachments:[]),B=e.ref(!1),b=e.ref(""),C=e.ref(0),c=e.ref(!1),i=e.ref(!1),y=e.ref(0),V=e.ref(0),M=e.computed(()=>V.value>0?y.value/V.value*100:0);let w=null;const Y=(d,f)=>{b.value=d,C.value=f,B.value=!0},O=()=>{C.value>0&&(C.value--,b.value=l.value[C.value])},W=()=>{C.value<l.value.length-1&&(C.value++,b.value=l.value[C.value])},R=(d,f)=>{console.error("Image load failed:",f);const u=d.target;u.style.display="none"},X=d=>{try{const u=new URL(d).pathname,x=u.substring(u.lastIndexOf("/")+1);return decodeURIComponent(x)||"Unknown File"}catch{return"Unknown File"}},Q=d=>{var x;return((x=X(d).split(".").pop())==null?void 0:x.toUpperCase())||"FILE"},F=d=>{const f=Q(d).toLowerCase();["jpg","jpeg","png","gif","webp","pdf"].includes(f)?window.open(d,"_blank"):Z(d)},Z=d=>{try{const f=document.createElement("a");f.href=d,f.download=X(d),f.target="_blank",document.body.appendChild(f),f.click(),document.body.removeChild(f)}catch(f){console.error("Download failed:",f),alert("下载失败")}},oe=async()=>{if(E.value)try{w||(w=new Audio,w.src=E.value,w.addEventListener("loadedmetadata",()=>{V.value=(w==null?void 0:w.duration)||0}),w.addEventListener("timeupdate",()=>{y.value=(w==null?void 0:w.currentTime)||0}),w.addEventListener("ended",()=>{c.value=!1,y.value=0}),w.addEventListener("error",d=>{console.error("Audio playback error:",d),i.value=!1,c.value=!1})),c.value?(w.pause(),c.value=!1):(i.value=!0,await w.play(),c.value=!0,i.value=!1)}catch(d){console.error("Audio playback failed:",d),i.value=!1,c.value=!1}},ee=d=>{const f=Math.floor(d/60),u=Math.floor(d%60);return`${f}:${u.toString().padStart(2,"0")}`},se=d=>{if(d===0)return"0 B";const f=1024,u=["B","KB","MB","GB"],x=Math.floor(Math.log(d)/Math.log(f));return(d/Math.pow(f,x)).toFixed(2)+u[x]},le=d=>{var u;return((u=d.split(".").pop())==null?void 0:u.toUpperCase())||"FILE"},P=d=>{B.value&&(d.key==="ArrowLeft"?O():d.key==="ArrowRight"?W():d.key==="Escape"&&(B.value=!1))};return e.watch(B,d=>{d?document.addEventListener("keydown",P):document.removeEventListener("keydown",P)}),e.onUnmounted(()=>{w&&(w.pause(),w=null),document.removeEventListener("keydown",P)}),(d,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["multimodal-message",{"is-user":o.isUser,"is-assistant":!o.isUser}])},[o.message.content?(e.openBlock(),e.createElementBlock("div",Re,[e.createVNode(ae,{content:o.message.content,"is-streaming":o.isStreaming},null,8,["content","is-streaming"])])):e.createCommentVNode("",!0),l.value&&l.value.length>0?(e.openBlock(),e.createElementBlock("div",Fe,[e.createElementVNode("div",{class:e.normalizeClass(["images-grid",`grid-${Math.min(l.value.length,4)}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.slice(0,4),(u,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"image-item",onClick:A=>Y(u,x)},[e.createElementVNode("img",{src:u,alt:`图片 ${x+1}`,onError:A=>R(A,u),loading:"lazy"},null,40,Ue),x===3&&l.value.length>4?(e.openBlock(),e.createElementBlock("div",Ye," +"+e.toDisplayString(l.value.length-4),1)):e.createCommentVNode("",!0)],8,Pe))),128))],2)])):e.createCommentVNode("",!0),_.value&&_.value.length>0?(e.openBlock(),e.createElementBlock("div",Oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,(u,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"attachment-item"},[e.createElementVNode("div",We,[e.createVNode(e.unref(me),{class:"file-icon"})]),e.createElementVNode("div",Xe,[e.createElementVNode("span",qe,e.toDisplayString(u.name),1),e.createElementVNode("span",Ze,e.toDisplayString(le(u.name))+"   "+e.toDisplayString(se(u.size)),1)])]))),128))])):e.createCommentVNode("",!0),N.value&&N.value.length>0?(e.openBlock(),e.createElementBlock("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,(u,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"file-item",onClick:A=>F(u)},[e.createElementVNode("div",Ge,[e.createVNode(e.unref(me),{class:"file-icon"})]),e.createElementVNode("div",Je,[e.createElementVNode("span",Qe,e.toDisplayString(X(u)),1),e.createElementVNode("span",et,e.toDisplayString(Q(u)),1)]),e.createElementVNode("div",tt,[e.createVNode(L,{size:"small",type:"text",onClick:e.withModifiers(A=>Z(u),["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(ge))]),_:1},8,["onClick"])])],8,Ke))),128))])):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createElementBlock("div",at,[e.createElementVNode("div",nt,[e.createVNode(L,{onClick:oe,loading:i.value,circle:"",size:"small",class:"play-btn"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value?e.unref(_e):e.unref(Ve))))]),_:1},8,["loading"]),e.createElementVNode("div",ot,[e.createElementVNode("div",st,[e.createElementVNode("div",lt,[e.createElementVNode("div",{class:"progress-fill",style:e.normalizeStyle({width:M.value+"%"})},null,4)])]),e.createElementVNode("div",rt,[e.createElementVNode("span",null,e.toDisplayString(ee(y.value)),1),f[4]||(f[4]=e.createElementVNode("span",null,"/",-1)),e.createElementVNode("span",null,e.toDisplayString(ee(V.value)),1)])]),e.createVNode(L,{onClick:f[0]||(f[0]=u=>Z(E.value)),size:"small",type:"text",class:"download-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(ge))]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(te,{visible:B.value,"onUpdate:visible":f[3]||(f[3]=u=>B.value=u),width:"90%","show-close":!1,"append-to-body":"",class:"image-preview-dialog-wrapper"},{default:e.withCtx(()=>[e.createElementVNode("div",ct,[e.createElementVNode("img",{src:b.value,alt:"预览图片",class:"preview-image",onClick:f[1]||(f[1]=u=>B.value=!1)},null,8,it),l.value&&l.value.length>1?(e.openBlock(),e.createElementBlock("div",dt,[e.createVNode(L,{onClick:O,disabled:C.value===0,circle:"",class:"nav-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(xe))]),_:1},8,["disabled"]),e.createElementVNode("span",mt,e.toDisplayString(C.value+1)+" / "+e.toDisplayString(l.value.length),1),e.createVNode(L,{onClick:W,disabled:C.value===l.value.length-1,circle:"",class:"nav-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(Se))]),_:1},8,["disabled"])])):e.createCommentVNode("",!0),e.createVNode(L,{onClick:f[2]||(f[2]=u=>B.value=!1),class:"close-btn",circle:""},{default:e.withCtx(()=>[e.createVNode(e.unref(G))]),_:1})])]),_:1},8,["visible"])],2))}}),[["__scopeId","data-v-7795fedb"]]),gt={key:0,class:"agent-steps"},ft={class:"steps-indicator"},ht={key:0,class:"icon-running"},ut={key:1,class:"icon-completed"},pt={class:"steps-summary"},kt={class:"icon-chevron"},yt={class:"steps-list"},wt={class:"step-icon"},Ct={key:3,class:"icon-dot"},Et={class:"step-name"},ne=U(e.defineComponent({__name:"AgentSteps",props:{steps:{}},emits:["resize"],setup(o,{emit:h}){const k=o,l=e.ref(!0),N=h,E=()=>{l.value=!l.value,setTimeout(()=>{N("resize")},300)},_=e.computed(()=>k.steps.some(b=>b.status==="running")),B=e.computed(()=>{const b=k.steps.find(c=>c.status==="running");if(b)return`正在${b.displayName}...`;const C=k.steps.filter(c=>c.status==="completed").length;return C===k.steps.length?"处理完成":`已完成 ${C}/${k.steps.length} 个步骤`});return(b,C)=>o.steps.length>0?(e.openBlock(),e.createElementBlock("div",gt,[e.createElementVNode("div",{class:"steps-header",onClick:E},[e.createElementVNode("div",ft,[_.value?(e.openBlock(),e.createElementBlock("div",ht,[e.createVNode(e.unref(fe))])):(e.openBlock(),e.createElementBlock("div",ut,[e.createVNode(e.unref(he))]))]),e.createElementVNode("span",pt,e.toDisplayString(B.value),1),e.createElementVNode("div",kt,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.value?e.unref(be):e.unref($e))))])]),e.withDirectives(e.createElementVNode("div",yt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.steps,c=>(e.openBlock(),e.createElementBlock("div",{key:c.name,class:e.normalizeClass(["step-item",{"is-running":c.status==="running","is-completed":c.status==="completed","is-error":c.status==="error"}])},[e.createElementVNode("div",wt,[c.status==="running"?(e.openBlock(),e.createBlock(e.unref(fe),{key:0,class:"icon-spin"})):c.status==="completed"?(e.openBlock(),e.createBlock(e.unref(he),{key:1})):c.status==="error"?(e.openBlock(),e.createBlock(e.unref(G),{key:2})):(e.openBlock(),e.createElementBlock("div",Ct))]),e.createElementVNode("span",Et,e.toDisplayString(c.displayName),1)],2))),128))],512),[[e.vShow,l.value]])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-181f5844"]]),Bt={class:"chat-message-list-root"},Mt={key:0,class:"bg-grid"},Nt={key:0,class:"welcome-screen"},Vt={class:"welcome-content"},_t={class:"welcome-logo"},xt=["src"],St={key:1,class:"default-logo"},bt={class:"welcome-title"},$t={key:1,class:"messages-container"},vt={key:0,class:"message-bubble user-bubble"},zt={key:1,class:"message-content assistant-content"},Lt={class:"message-bubble assistant-bubble"},Tt={key:1,class:"message-actions"},Dt=["onClick"],It={key:0,class:"message-row message-assistant"},ue=U(e.defineComponent({__name:"ChatMessageList",props:{messages:{default:()=>[]},isStreaming:{type:Boolean,default:!1},isTyping:{type:Boolean,default:!1},showWelcome:{type:Boolean,default:!0},appName:{default:"AI助手"},appLogo:{},agentSteps:{},showAgentSteps:{type:Boolean,default:!0},autoScroll:{type:Boolean,default:!0},contentPaddingTop:{default:"80px"},contentPaddingBottom:{default:"140px"},showBackground:{type:Boolean,default:!0}},emits:["copy","scroll","scroll-bottom"],setup(o,{expose:h,emit:k}){const l=o,N=k,E=e.ref(null),_=e.ref(!1),B=async(i="smooth")=>{await e.nextTick(),E.value&&E.value.scrollTo({top:E.value.scrollHeight,behavior:i})},b=i=>{N("scroll",i);const y=i.target;if(!y)return;const{scrollTop:V,scrollHeight:M,clientHeight:w}=y;M-V-w<50?(_.value=!1,N("scroll-bottom")):_.value=!0};e.watch(()=>l.messages.length,async(i,y)=>{i>(y||0)&&(_.value=!1),l.autoScroll&&!_.value&&B()}),e.watch(()=>{var i;return(i=l.messages[l.messages.length-1])==null?void 0:i.content},async(i,y)=>{if(l.isStreaming&&l.autoScroll&&!_.value){const V=(i==null?void 0:i.length)||0,M=(y==null?void 0:y.length)||0;V>M&&E.value&&E.value.scrollTo({top:E.value.scrollHeight,behavior:"instant"})}}),e.watch(()=>l.isTyping,i=>{i&&l.autoScroll&&B()});const C=i=>{N("copy",i),navigator.clipboard&&i.content&&navigator.clipboard.writeText(i.content)};e.watch(()=>l.agentSteps,()=>{l.autoScroll&&!_.value&&B()},{deep:!0});const c=()=>{l.autoScroll&&!_.value&&B()};return h({scrollToBottom:B,containerRef:E}),(i,y)=>(e.openBlock(),e.createElementBlock("div",Bt,[o.showBackground?(e.openBlock(),e.createElementBlock("div",Mt)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"chat-message-list",ref_key:"containerRef",ref:E,onScroll:b,style:e.normalizeStyle({paddingTop:o.contentPaddingTop,paddingBottom:o.contentPaddingBottom})},[o.showWelcome&&o.messages.length===0?(e.openBlock(),e.createElementBlock("div",Nt,[e.renderSlot(i.$slots,"welcome",{},()=>[e.createElementVNode("div",Vt,[e.createElementVNode("div",_t,[o.appLogo?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.appLogo,alt:"Logo"},null,8,xt)):(e.openBlock(),e.createElementBlock("div",St,[...y[0]||(y[0]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"32",height:"32"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"})],-1)])]))]),e.createElementVNode("h2",bt,e.toDisplayString(o.appName),1),y[1]||(y[1]=e.createElementVNode("p",{class:"welcome-desc"},"今天有什么可以帮您?",-1))])],!0)])):(e.openBlock(),e.createElementBlock("div",$t,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.messages,(V,M)=>(e.openBlock(),e.createElementBlock("div",{key:V.id||M,class:e.normalizeClass(["message-row",V.role==="user"?"message-user":"message-assistant"])},[V.role==="user"?(e.openBlock(),e.createElementBlock("div",vt,[e.createVNode(J,{message:V,"is-user":!0},null,8,["message"])])):(e.openBlock(),e.createElementBlock("div",zt,[o.showAgentSteps&&M===o.messages.length-1&&o.agentSteps&&o.agentSteps.length>0?(e.openBlock(),e.createBlock(ne,{key:0,steps:o.agentSteps,onResize:c},null,8,["steps"])):e.createCommentVNode("",!0),e.createElementVNode("div",Lt,[e.createVNode(J,{message:V,"is-user":!1,"is-streaming":o.isStreaming&&M===o.messages.length-1},null,8,["message","is-streaming"])]),V.content&&!(o.isStreaming&&M===o.messages.length-1)?(e.openBlock(),e.createElementBlock("div",Tt,[e.createElementVNode("button",{class:"action-btn",onClick:w=>C(V),title:"复制"},[...y[2]||(y[2]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"12",height:"12"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c6 6 14.1 9.4 22.6 9.4H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM352 853.3V704h149.3l-149.3 149.3zM224 256h448v640H416V672c0-17.7-14.3-32-32-32H224V256z"})],-1),e.createElementVNode("span",null,"复制",-1)])],8,Dt)])):e.createCommentVNode("",!0)]))],2))),128)),o.isTyping?(e.openBlock(),e.createElementBlock("div",It,[...y[3]||(y[3]=[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("div",{class:"typing-dot"}),e.createElementVNode("div",{class:"typing-dot",style:{"animation-delay":"0.2s"}}),e.createElementVNode("div",{class:"typing-dot",style:{"animation-delay":"0.4s"}})],-1)])])):e.createCommentVNode("",!0)]))],36)]))}}),[["__scopeId","data-v-02d657d5"]]),At={install(o){o.component("ChatMessageList",ue),o.component("MultimodalMessage",J),o.component("MarkdownMessage",ae),o.component("AgentSteps",ne)}};z.AgentSteps=ne,z.ChatMessageList=ue,z.MarkdownMessage=ae,z.MultimodalMessage=J,z.default=At,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(T,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("a2ui-vue"),require("markdown-it"),require("@vscode/markdown-it-katex"),require("mermaid")):typeof define=="function"&&define.amd?define(["exports","vue","a2ui-vue","markdown-it","@vscode/markdown-it-katex","mermaid"],e):(T=typeof globalThis<"u"?globalThis:T||self,e(T.ChatMessages={},T.Vue,T.A2UIVue,T.markdownit,T.markdownItKatex,T.mermaid))})(this,(function(T,e,ie,_e,Ie,Ve){"use strict";const ze={class:"cm-dialog__body"},Le=e.defineComponent({__name:"Dialog",props:{visible:{type:Boolean,default:!1},width:{default:"50%"},fullscreen:{type:Boolean,default:!1},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!0}},emits:["update:visible","close"],setup(l,{emit:g}){const k=l,p=g,d=e.ref(!1);e.onMounted(()=>{d.value=!0});const w=e.computed(()=>k.fullscreen?{width:"100%",height:"100%",margin:0}:{width:k.width}),C=()=>{p("update:visible",!1),p("close")},E=()=>{k.closeOnClickModal&&C()};return(V,M)=>d.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"body"},[l.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["cm-dialog-overlay",{"is-fullscreen":l.fullscreen}]),onClick:e.withModifiers(E,["self"])},[e.createElementVNode("div",{class:"cm-dialog",style:e.normalizeStyle(w.value),role:"dialog","aria-modal":"true"},[e.createElementVNode("div",ze,[e.renderSlot(V.$slots,"default",{},void 0,!0)]),l.showClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"cm-dialog__close",onClick:C},[...M[0]||(M[0]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[e.createElementVNode("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})],-1)])])):e.createCommentVNode("",!0)],4)],2)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),ce=(l,g)=>{const k=l.__vccOpts||l;for(const[p,d]of g)k[p]=d;return k},Ee=ce(Le,[["__scopeId","data-v-efdf0259"]]),Te=["disabled"],Ue={key:0,class:"cm-icon-loading"},H=ce(e.defineComponent({__name:"Button",props:{type:{default:"default"},size:{default:"default"},circle:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},emits:["click"],setup(l,{emit:g}){const k=l,p=g,d=w=>{k.disabled||k.loading||p("click",w)};return(w,C)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["cm-button",[`cm-button--${l.type}`,`cm-button--${l.size}`,{"is-circle":l.circle,"is-disabled":l.disabled,"is-loading":l.loading}]]),disabled:l.disabled||l.loading,onClick:d},[l.loading?(e.openBlock(),e.createElementBlock("span",Ue,[...C[0]||(C[0]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"1em",height:"1em"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64a448 448 0 0 1 448 448 32 32 0 1 1-64 0 416 416 0 0 0-416-416 416 416 0 0 0-416 416 32 32 0 1 1-64 0 448 448 0 0 1 448-448z"})],-1)])])):e.renderSlot(w.$slots,"default",{key:1},void 0,!0)],10,Te))}}),[["__scopeId","data-v-bab126c7"]]),P=(l,g)=>e.defineComponent({name:l,render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024",width:"1em",height:"1em",fill:"currentColor",style:"vertical-align: middle"},[e.h("path",{d:g})])}}),ye=P("Close","M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"),be=P("ZoomIn","M637.696 587.392a316.032 316.032 0 1 0-45.44 49.344l191.232 191.296a32 32 0 0 0 45.312-45.184L637.696 587.392zM73.152 357.696a284.48 284.48 0 1 1 284.48 284.48A284.672 284.672 0 0 1 73.152 357.568zm268.48-154.56a32 32 0 0 0-32 32v90.496h-90.56a32 32 0 0 0 0 64h90.56v90.56a32 32 0 0 0 64 0v-90.496h90.496a32 32 0 0 0 0-64H373.632v-90.56a32 32 0 0 0-32-32z"),ve=P("ZoomOut","M637.696 587.392a316.032 316.032 0 1 0-45.44 49.344l191.232 191.296a32 32 0 0 0 45.312-45.184L637.696 587.392zM73.152 357.696a284.48 284.48 0 1 1 284.48 284.48A284.672 284.672 0 0 1 73.152 357.568zm145.92-58.56a32 32 0 0 0 0 64h245.12a32 32 0 0 0 0-64H219.072z"),De=P("Document","M854.6 288.7c0.4 0 0.7 0 1 0v431.5c0 17.6-14.4 32-32 32H200.4c-17.6 0-32-14.4-32-32l0-575.2c0-17.6 14.4-32 32-32h391.5c0 0.3 0 0.7 0 1l0 142.1c0 17.6 14.4 32.1 32 32.1h142.6c0-0.4 0-0.7 0-1.1L854.6 288.7zM790.2 220.2L668 97.9v122.3h122.2zM240 448h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h544a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64zm0 128h384a32 32 0 0 0 0-64H240a32 32 0 0 0 0 64z"),Ne=P("Download","M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2 0.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"),He=P("VideoPlay","M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.656-340.32a32 32 0 0 1 32 32V673.92a32 32 0 0 1-50.208 26.24l-236.8-161.92a32 32 0 0 1 0-52.48l236.8-161.92a32 32 0 0 1 18.208-5.632z"),Pe=P("VideoPause","M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm-96-544a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32z"),Re=P("ArrowLeft","M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"),Fe=P("ArrowRight","M340.864 149.312a29.12 29.12 0 0 0-41.728 0 30.592 30.592 0 0 0 0 42.752L611.072 511.936 299.136 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L672.448 534.272a32 32 0 0 0 0-44.672L340.864 149.312z"),Ae=P("Spinner","M512 64a448 448 0 0 1 448 448 32 32 0 1 1-64 0 416 416 0 0 0-416-416 416 416 0 0 0-416 416 32 32 0 1 1-64 0 448 448 0 0 1 448-448z"),xe=P("Check","M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1 0.4-12.8-6.3-12.8z"),Oe=P("ChevronUp","M854.6 642.5l-320-320c-12.5-12.5-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L512 390.6l297.4 297.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z"),We=P("ChevronDown","M854.6 381.5l-320 320c-12.5 12.5-32.8 12.5-45.3 0l-320-320c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L512 633.4l297.4-297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"),je=["src","alt"],Ye={class:"preview-controls"},qe={class:"cm-button-group"},Xe={key:0,class:"mobile-close-hint"},Ze=["innerHTML"],Ke={class:"preview-controls"},Je={class:"cm-button-group"},Ge={key:0,class:"mobile-close-hint"},Be=ce(e.defineComponent({__name:"MarkdownMessage",props:{content:{},isStreaming:{type:Boolean,default:!1}},setup(l){const g=l,k=e.ref(),p=e.ref(),d=e.ref(!1),w=e.ref(""),C=e.ref(""),E=e.ref(!1),V=e.ref(""),M=e.ref(!1),m=e.ref(1),I=e.ref({x:0,y:0}),b=e.ref(!1),_=e.ref({x:0,y:0}),v=e.ref(1),U=e.ref({x:0,y:0}),N=e.ref(!1),oe=e.ref({x:0,y:0}),S=e.ref(""),q=e.ref(new Map),K=e.ref(!1);let se=0;Ve.initialize({startOnLoad:!1,theme:"default",securityLevel:"loose",fontFamily:"inherit"});const pe=t=>{const a=t.renderer.rules.fence;t.renderer.rules.fence=(o,s,c,r,h)=>{const y=o[s],D=y.content.trim();return(y.info?y.info.trim():"")==="mermaid"?(se++,`<div class="mermaid-container"><pre class="mermaid" data-mermaid-id="${`mermaid-${Date.now()}-${se}`}">${D}</pre></div>`):a(o,s,c,r,h)}},R=new _e({html:!0,xhtmlOut:!1,breaks:!0,langPrefix:"language-",linkify:!0,typographer:!0,quotes:`""''`,highlight:function(t,a){return a&&a.trim()?`<pre class="hljs language-${a}"><code>${(s=>s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"))(t)}</code></pre>`:`<pre class="hljs"><code>${t}</code></pre>`}}),A=R.renderer.rules.image||function(t,a,o,s,c){return c.renderToken(t,a,o)};R.renderer.rules.image=function(t,a,o,s,c){const r=t[a],h=r.attrIndex("src");if(h>=0){const y=r.attrs[h][1],$="img-"+(j=>{let L=0;for(let O=0;O<j.length;O++){const ae=j.charCodeAt(O);L=(L<<5)-L+ae,L=L&L}return Math.abs(L).toString(36)})(y);r.attrSet("id",$),r.attrSet("data-image-id",$),r.attrSet("key",$),r.attrSet("loading","eager"),r.attrSet("decoding","async"),r.attrSet("fetchpriority","high"),r.attrSet("data-src",y),r.attrSet("data-cached","true")}return A(t,a,o,s,c)},R.use(Ie,{throwOnError:!1,errorColor:"#cc0000"}),R.use(pe);const de=t=>{const a=t.match(/```[\w]*\n/g),o=t.match(/\n```/g),s=(a==null?void 0:a.length)||0,c=(o==null?void 0:o.length)||0;return s>c&&(t+="\n```"),t},re=t=>{if(!t)return"";t=t.replace(/;;\s*$/g,""),t=t.replace(/;;\s*$/g,"");const a=/^```(?:markdown|md)\s*\n([\s\S]*?)\n```$/,o=t.match(a);if(o)t=o[1];else{const s=/^```\s*\n([\s\S]*?)\n```$/,c=t.match(s);if(c){const r=c[1];(/^#{1,6}\s/.test(r)||/^\*{1,2}[^*]+\*{1,2}/.test(r)||/^[-*+]\s/.test(r)||/^\d+\.\s/.test(r)||/!\[.*?\]\(.*?\)/.test(r)||/\[.*?\]\(.*?\)/.test(r)||/^\|.+\|/.test(r)||/^\|[\s-:]+\|/m.test(r))&&(t=r)}}if(g.isStreaming){const s=/^```(?:markdown|md)?\s*\n/;if(s.test(t)){const r=t.replace(s,"");(/^#{1,6}\s/.test(r)||/^\|.+\|/.test(r)||/^\|[\s-:]+\|/m.test(r)||/!\[.*?\]\(.*?\)/.test(r)||/\[.*?\]\(.*?\)/.test(r))&&(t=t.replace(s,""))}if(/^```(?:markdown|md)?\s*\n/.test(g.content)){const r=/\n```\s*$/;r.test(t)&&(t=t.replace(r,""))}}return t=t.replace(/```(?:markdown|md)\s*\n([\s\S]*?)\n```/g,(s,c)=>c),g.isStreaming&&(t=de(t)),t},J=t=>{if(!t.includes("<img"))return t;const a=/<img[^>]*?src="([^"]*)"[^>]*?>/g;let o,s=t;const c=[];for(;(o=a.exec(t))!==null;){const r=o[0],h=o[1];if(q.value.has(h)){const y=q.value.get(h);r!==y&&c.push({original:r,cached:y})}else q.value.set(h,r)}for(const{original:r,cached:h}of c)s=s.replace(r,h);return s},G=t=>{if(!p.value)return;const a=p.value,o=new Map;if(g.isStreaming&&a.children.length>0&&a.querySelectorAll("img[data-image-id]").forEach(s=>{const c=s.getAttribute("data-image-id");c&&o.set(c,s)}),a.innerHTML=t,!g.isStreaming){e.nextTick(()=>{n(),f()});return}o.size>0&&a.querySelectorAll("img[data-image-id]").forEach(s=>{const c=s.getAttribute("data-image-id");if(c&&o.has(c)){const r=o.get(c);s.parentNode&&r!==s&&s.parentNode.replaceChild(r,s)}})},W=()=>{try{if(!g.content){S.value="",p.value&&(p.value.innerHTML=""),g.isStreaming||q.value.clear();return}if(document.hidden&&g.isStreaming){K.value=!0;return}const t=re(g.content);let a=R.render(t);g.isStreaming&&a.includes("<img")&&(a=J(a)),a!==S.value&&(S.value=a,G(a)),g.isStreaming||q.value.clear()}catch(t){console.error("Markdown rendering error:",t),p.value&&(p.value.innerHTML=`<pre style="white-space: pre-wrap; word-wrap: break-word;">${g.content}</pre>`)}};e.watch(()=>g.content,W),e.watch(()=>g.isStreaming,(t,a)=>{a&&!t&&e.nextTick(()=>{W()})});const Q=()=>{!document.hidden&&K.value&&(K.value=!1,e.nextTick(()=>{W()}))};document.addEventListener("visibilitychange",Q),e.onUnmounted(()=>{document.removeEventListener("visibilitychange",Q)});const i=()=>{M.value=window.innerWidth<768},u=t=>{let a=t;return a=a.replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1"),[/([A-Za-z0-9_]+)\[([^\]]*[\u4e00-\u9fa5]+[^\]]*)\]/g,/([A-Za-z0-9_]+)\(([^)]*[\u4e00-\u9fa5]+[^)]*)\)/g,/([A-Za-z0-9_]+)\{([^}]*[\u4e00-\u9fa5]+[^}]*)\}/g].forEach(s=>{a=a.replace(s,(c,r,h)=>{if(h.startsWith('"')&&h.endsWith('"'))return c;let y=h.replace(/^["']+|["']+$/g,"").replace(/["]/g,'\\"');return c.includes("[")?`${r}["${y}"]`:c.includes("(")?`${r}("${y}")`:c.includes("{")?`${r}{"${y}"}`:c})}),a},f=async()=>{var a,o;if(g.isStreaming||(await e.nextTick(),!k.value))return;const t=k.value.querySelectorAll(".mermaid");if(t.length!==0)for(const s of Array.from(t)){const c=s;let r=(a=c.textContent)==null?void 0:a.trim();if(r&&c.getAttribute("data-processed")!=="true")try{c.setAttribute("data-processed","true"),r=u(r);const h=c.getAttribute("data-mermaid-id")||`mermaid-${Date.now()}-${Math.random()}`,{svg:y}=await Ve.render(h,r),D=c.parentElement;if(D){const $=document.createElement("div");$.className="mermaid-svg",$.innerHTML=y,$.setAttribute("data-mermaid-svg","true"),$.style.cursor="pointer",$.title="Click to zoom",$.addEventListener("click",j=>{j.preventDefault(),j.stopPropagation(),V.value=y,v.value=1,U.value={x:0,y:0},E.value=!0}),D.replaceChild($,c)}}catch(h){console.error("Mermaid render failure:",h);const y=document.createElement("div");y.className="mermaid-error",y.textContent=`Mermaid render error: ${h}`,(o=c.parentElement)==null||o.replaceChild(y,c)}}},B=t=>{t.preventDefault(),t.stopPropagation();const a=t.target;w.value=a.src,C.value=a.alt||"Image Preview",m.value=1,I.value={x:0,y:0},d.value=!0},x=()=>{m.value<=1&&(I.value={x:0,y:0})},ee=()=>{m.value=Math.min(m.value+1,10),x()},X=()=>{m.value=Math.max(m.value-1,.5),x()},te=()=>{m.value=1,I.value={x:0,y:0}},me=()=>{m.value<=1&&(d.value=!1)},ne=t=>{t.preventDefault();const a=t.deltaY>0?-.5:.5,o=Math.max(.5,Math.min(10,m.value+a));m.value=o,x()},Y=t=>{var r;if(m.value<=1)return;t.preventDefault(),b.value=!0,_.value={x:t.clientX-I.value.x,y:t.clientY-I.value.y};const a=t.target,o=(r=a.parentElement)==null?void 0:r.getBoundingClientRect(),s=h=>{if(!b.value||!o)return;let y=h.clientX-_.value.x,D=h.clientY-_.value.y;const $=a.offsetWidth,j=a.offsetHeight,L=$*m.value,O=j*m.value,ae=.3,Me=o.width*(1-ae-.5)-L/2,he=L/2-o.width*(1-ae-.5),ke=o.height*(1-ae-.5)-O/2,ge=O/2-o.height*(1-ae-.5);L>o.width?y=Math.max(Me,Math.min(he,y)):y=0,O>o.height?D=Math.max(ke,Math.min(ge,D)):D=0,I.value={x:y,y:D}},c=()=>{b.value=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",c)};document.addEventListener("mousemove",s),document.addEventListener("mouseup",c)},z=t=>{var D;if(t.touches.length!==1)return;const a=t.touches[0],o=a.clientX,s=a.clientY;if(m.value<=1)return;b.value=!0,_.value={x:o-I.value.x,y:s-I.value.y};const c=t.target,r=(D=c.parentElement)==null?void 0:D.getBoundingClientRect(),h=$=>{if(!b.value||$.touches.length!==1||!r)return;const j=$.touches[0];let L=j.clientX-_.value.x,O=j.clientY-_.value.y;const ae=c.offsetWidth,Me=c.offsetHeight,he=ae*m.value,ke=Me*m.value,ge=.3,Gt=r.width*(1-ge-.5)-he/2,Qt=he/2-r.width*(1-ge-.5),en=r.height*(1-ge-.5)-ke/2,tn=ke/2-r.height*(1-ge-.5);he>r.width?L=Math.max(Gt,Math.min(Qt,L)):L=0,ke>r.height?O=Math.max(en,Math.min(tn,O)):O=0,I.value={x:L,y:O}},y=()=>{b.value=!1,document.removeEventListener("touchmove",h),document.removeEventListener("touchend",y)};document.addEventListener("touchmove",h,{passive:!1}),document.addEventListener("touchend",y)},F=()=>{v.value=Math.min(v.value+1,10)},le=()=>{v.value=Math.max(v.value-1,.5)},Z=()=>{v.value=1,U.value={x:0,y:0}},ue=t=>{t.preventDefault();const a=t.deltaY>0?-.5:.5;v.value=Math.max(.5,Math.min(10,v.value+a))},Ce=t=>{var r,h;if(v.value<=1)return;t.preventDefault(),N.value=!0,oe.value={x:t.clientX-U.value.x,y:t.clientY-U.value.y};const o=(h=(r=t.target.closest(".mermaid-preview-content"))==null?void 0:r.parentElement)==null?void 0:h.getBoundingClientRect(),s=y=>{if(!N.value||!o)return;let D=y.clientX-oe.value.x,$=y.clientY-oe.value.y;U.value={x:D,y:$}},c=()=>{N.value=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",c)};document.addEventListener("mousemove",s),document.addEventListener("mouseup",c)},fe=t=>{},n=()=>{g.isStreaming||e.nextTick(()=>{if(!k.value)return;k.value.querySelectorAll(".markdown-content img").forEach(a=>{const o=a;o.getAttribute("data-processed")!=="true"&&(o.setAttribute("data-processed","true"),o.style.cursor="pointer",o.addEventListener("click",B))})})};return e.onMounted(()=>{i(),window.addEventListener("resize",i),W(),n(),f()}),e.onUnmounted(()=>{k.value&&k.value.querySelectorAll(".markdown-content img").forEach(a=>{a.removeEventListener("click",B)})}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{class:"markdown-message",ref_key:"markdownContainer",ref:k},[e.createElementVNode("div",{ref_key:"markdownContent",ref:p,class:"markdown-content"},null,512),e.createVNode(Ee,{visible:d.value,"onUpdate:visible":a[2]||(a[2]=o=>d.value=o),width:M.value?"95vw":"80vw",fullscreen:M.value,class:"image-preview-dialog","close-on-click-modal":!1,"append-to-body":""},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"image-preview-container",onClick:a[1]||(a[1]=e.withModifiers(o=>d.value=!1,["self"]))},[e.createElementVNode("img",{src:w.value,alt:C.value,class:"preview-image",style:e.normalizeStyle({transform:`translate(${I.value.x}px, ${I.value.y}px) scale(${m.value})`}),onWheel:e.withModifiers(ne,["prevent"]),onDblclick:te,onMousedown:Y,onTouchstart:e.withModifiers(z,["prevent"]),onClick:me},null,44,je),e.createElementVNode("div",Ye,[e.createElementVNode("div",qe,[e.createVNode(H,{size:"small",onClick:X,disabled:m.value<=.5},{default:e.withCtx(()=>[e.createVNode(e.unref(ve))]),_:1},8,["disabled"]),e.createVNode(H,{size:"small",onClick:te},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(Math.round(m.value*100))+"% ",1)]),_:1}),e.createVNode(H,{size:"small",onClick:ee,disabled:m.value>=10},{default:e.withCtx(()=>[e.createVNode(e.unref(be))]),_:1},8,["disabled"])]),e.createVNode(H,{size:"small",onClick:a[0]||(a[0]=o=>d.value=!1),type:"danger"},{default:e.withCtx(()=>[e.createVNode(e.unref(ye))]),_:1})]),M.value?(e.openBlock(),e.createElementBlock("div",Xe,"双击重置 · 轻触关闭")):e.createCommentVNode("",!0)])]),_:1},8,["visible","width","fullscreen"]),e.createVNode(Ee,{visible:E.value,"onUpdate:visible":a[5]||(a[5]=o=>E.value=o),width:M.value?"95vw":"90vw",fullscreen:M.value,class:"mermaid-preview-dialog","close-on-click-modal":!1,"append-to-body":""},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"mermaid-preview-container",onClick:a[4]||(a[4]=e.withModifiers(o=>E.value=!1,["self"]))},[e.createElementVNode("div",{class:"mermaid-preview-content",innerHTML:V.value,style:e.normalizeStyle({transform:`translate(${U.value.x}px, ${U.value.y}px) scale(${v.value})`}),onWheel:e.withModifiers(ue,["prevent"]),onDblclick:Z,onMousedown:Ce,onTouchstart:e.withModifiers(fe,["prevent"])},null,44,Ze),e.createElementVNode("div",Ke,[e.createElementVNode("div",Je,[e.createVNode(H,{size:"small",onClick:le,disabled:v.value<=.5},{default:e.withCtx(()=>[e.createVNode(e.unref(ve))]),_:1},8,["disabled"]),e.createVNode(H,{size:"small",onClick:Z},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(Math.round(v.value*100))+"% ",1)]),_:1}),e.createVNode(H,{size:"small",onClick:F,disabled:v.value>=10},{default:e.withCtx(()=>[e.createVNode(e.unref(be))]),_:1},8,["disabled"])]),e.createVNode(H,{size:"small",onClick:a[3]||(a[3]=o=>E.value=!1),type:"danger"},{default:e.withCtx(()=>[e.createVNode(e.unref(ye))]),_:1})]),M.value?(e.openBlock(),e.createElementBlock("div",Ge,"双击重置 · 轻触关闭")):e.createCommentVNode("",!0)])]),_:1},8,["visible","width","fullscreen"])],512))}}),[["__scopeId","data-v-6028683a"]]),Qe={key:0,class:"text-content"},et={key:1,class:"images-content"},tt=["onClick"],nt=["src","alt","onError"],at={key:0,class:"more-images"},ot={key:2,class:"files-content"},st=["onClick"],rt={class:"file-icon-wrapper-small"},lt=["title"],it={class:"file-name"},ct={class:"file-type"},dt={class:"file-actions"},mt={key:3,class:"audio-content"},ut={class:"audio-player"},ft={class:"audio-info"},gt={class:"audio-progress"},pt={class:"progress-bar"},ht={class:"audio-time"},kt={class:"image-preview-container"},yt=["src"],wt={key:0,class:"image-nav"},Ct={class:"image-counter"},we=ce(e.defineComponent({__name:"MultimodalMessage",props:{message:{},isUser:{type:Boolean,default:!1},isStreaming:{type:Boolean,default:!1},apiBaseUrl:{default:""},onDownload:{}},setup(l){const g=l,k=e.computed(()=>{try{return g.message.metadata?JSON.parse(g.message.metadata):{}}catch{return{}}}),p=e.computed(()=>k.value.imageUrls||[]),d=e.computed(()=>k.value.audioUrl),w=e.ref(new Set),C=e.computed(()=>k.value.fileUrls||[]),E=e.computed(()=>C.value),V=e.computed(()=>g.message.attachments&&g.message.attachments.length>0?g.message.attachments:k.value.attachments&&Array.isArray(k.value.attachments)?k.value.attachments:[]),M=e.computed(()=>{const i=[];return V.value&&V.value.length>0?V.value.forEach(u=>{var B,x;((B=u.type)==null?void 0:B.startsWith("image/"))||((x=u.name)==null?void 0:x.match(/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$/i))||i.push({url:u.url||u.download_url||u.file_url||"",name:u.original_name||u.name||"Unknown File",type:A(u.original_name||u.name||"Unknown File")})}):E.value&&E.value.length>0&&E.value.forEach(u=>{i.push({url:u,name:R(u),type:A(u)})}),i}),m=e.ref(!1),I=e.ref(""),b=e.ref(0),_=e.ref(!1),v=e.ref(!1),U=e.ref(0),N=e.ref(0),oe=e.computed(()=>N.value>0?U.value/N.value*100:0);let S=null;const q=(i,u)=>{I.value=i,b.value=u,m.value=!0},K=()=>{b.value>0&&(b.value--,I.value=p.value[b.value])},se=()=>{b.value<p.value.length-1&&(b.value++,I.value=p.value[b.value])},pe=(i,u)=>{console.error("Image load failed:",u);const f=i.target;f.style.display="none"},R=i=>{if(!i)return"Unknown File";if(!i.includes("/"))return decodeURIComponent(i)||"Unknown File";try{const u=i.lastIndexOf("/"),f=u>=0?i.substring(u+1):i;return decodeURIComponent(f)||"Unknown File"}catch{return"Unknown File"}},A=i=>{var B;return((B=R(i).split(".").pop())==null?void 0:B.toUpperCase())||"FILE"},de=(i,u)=>{J(i,u)},re=i=>!i||i.startsWith("http://")||i.startsWith("https://")||i.startsWith("blob:")?i:(g.apiBaseUrl?g.apiBaseUrl.replace(/\/$/,""):"")+(i.startsWith("/")?i:"/"+i),J=async(i,u)=>{try{const f=re(i);if(console.log("正在下载文件...",f),g.onDownload&&(w.value=new Set([...w.value,i]),await g.onDownload(i,u)!==!1)){const F=new Set(w.value);F.delete(i),w.value=F;return}w.value=new Set([...w.value,i]);const B=localStorage.getItem("token"),x={};if(B&&(x.Authorization=B.startsWith("Bearer ")?B:`Bearer ${B}`),typeof window<"u"&&typeof window.plus<"u"){const z=window.plus,F=z.downloader.createDownload(f,{method:"GET",filename:"_downloads/"+(u||R(i))},(le,Z)=>{const ue=new Set(w.value);ue.delete(i),w.value=ue,Z===200||Z===206?z.runtime.openFile(le.filename):console.error("App 环境原生下载失败, status:",Z)});x.Authorization&&F.setRequestHeader("Authorization",x.Authorization),F.start();return}const ee=await fetch(f,{headers:x});if(!ee.ok)throw new Error(`下载失败: ${ee.status}`);let X=u;const te=ee.headers.get("Content-Disposition");if(te){const z=te.match(/filename\*=UTF-8''(.+)/i);if(z)X=decodeURIComponent(z[1]);else{const F=te.match(/filename="?([^";\n]+)"?/i);F&&(X=F[1])}}const me=await ee.blob(),ne=URL.createObjectURL(me),Y=document.createElement("a");Y.href=ne,Y.download=X||u||R(i),document.body.appendChild(Y),Y.click(),document.body.removeChild(Y),URL.revokeObjectURL(ne)}catch(f){console.error("下载文件失败:",f)}finally{const f=new Set(w.value);f.delete(i),w.value=f}},G=async()=>{if(d.value)try{S||(S=new Audio,S.src=re(d.value),S.addEventListener("loadedmetadata",()=>{N.value=(S==null?void 0:S.duration)||0}),S.addEventListener("timeupdate",()=>{U.value=(S==null?void 0:S.currentTime)||0}),S.addEventListener("ended",()=>{_.value=!1,U.value=0}),S.addEventListener("error",i=>{console.error("Audio playback error:",i),v.value=!1,_.value=!1})),_.value?(S.pause(),_.value=!1):(v.value=!0,await S.play(),_.value=!0,v.value=!1)}catch(i){console.error("Audio playback failed:",i),v.value=!1,_.value=!1}},W=i=>{const u=Math.floor(i/60),f=Math.floor(i%60);return`${u}:${f.toString().padStart(2,"0")}`},Q=i=>{m.value&&(i.key==="ArrowLeft"?K():i.key==="ArrowRight"?se():i.key==="Escape"&&(m.value=!1))};return e.watch(m,i=>{i?document.addEventListener("keydown",Q):document.removeEventListener("keydown",Q)}),e.onUnmounted(()=>{S&&(S.pause(),S=null),document.removeEventListener("keydown",Q)}),(i,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["multimodal-message",{"is-user":l.isUser,"is-assistant":!l.isUser}])},[l.message.content?(e.openBlock(),e.createElementBlock("div",Qe,[e.createVNode(Be,{content:l.message.content,"is-streaming":l.isStreaming},null,8,["content","is-streaming"])])):e.createCommentVNode("",!0),p.value&&p.value.length>0?(e.openBlock(),e.createElementBlock("div",et,[e.createElementVNode("div",{class:e.normalizeClass(["images-grid",`grid-${Math.min(p.value.length,4)}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value.slice(0,4),(f,B)=>(e.openBlock(),e.createElementBlock("div",{key:B,class:"image-item",onClick:x=>q(f,B)},[e.createElementVNode("img",{src:f,alt:`图片 ${B+1}`,onError:x=>pe(x,f),loading:"lazy"},null,40,nt),B===3&&p.value.length>4?(e.openBlock(),e.createElementBlock("div",at," +"+e.toDisplayString(p.value.length-4),1)):e.createCommentVNode("",!0)],8,tt))),128))],2)])):e.createCommentVNode("",!0),M.value&&M.value.length>0?(e.openBlock(),e.createElementBlock("div",ot,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,(f,B)=>(e.openBlock(),e.createElementBlock("div",{key:B,class:"file-item",onClick:x=>de(f.url,f.name)},[e.createElementVNode("div",rt,[e.createVNode(e.unref(De),{class:"file-icon"})]),e.createElementVNode("div",{class:"file-info",title:f.name},[e.createElementVNode("span",it,e.toDisplayString(f.name),1),e.createElementVNode("span",ct,e.toDisplayString(f.type),1)],8,lt),e.createElementVNode("div",dt,[e.createVNode(H,{size:"small",type:"text",disabled:w.value.has(f.url),onClick:e.withModifiers(x=>J(f.url,f.name),["stop"])},{default:e.withCtx(()=>[e.createVNode(e.unref(Ne),{class:e.normalizeClass({"icon-spin":w.value.has(f.url)})},null,8,["class"])]),_:2},1032,["disabled","onClick"])])],8,st))),128))])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",mt,[e.createElementVNode("div",ut,[e.createVNode(H,{onClick:G,loading:v.value,circle:"",size:"small",class:"play-btn"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(_.value?e.unref(Pe):e.unref(He))))]),_:1},8,["loading"]),e.createElementVNode("div",ft,[e.createElementVNode("div",gt,[e.createElementVNode("div",pt,[e.createElementVNode("div",{class:"progress-fill",style:e.normalizeStyle({width:oe.value+"%"})},null,4)])]),e.createElementVNode("div",ht,[e.createElementVNode("span",null,e.toDisplayString(W(U.value)),1),u[4]||(u[4]=e.createElementVNode("span",null,"/",-1)),e.createElementVNode("span",null,e.toDisplayString(W(N.value)),1)])]),e.createVNode(H,{onClick:u[0]||(u[0]=f=>J(d.value)),size:"small",type:"text",class:"download-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(Ne))]),_:1})])])):e.createCommentVNode("",!0),e.createVNode(Ee,{visible:m.value,"onUpdate:visible":u[3]||(u[3]=f=>m.value=f),width:"90%","show-close":!1,"append-to-body":"",class:"image-preview-dialog-wrapper"},{default:e.withCtx(()=>[e.createElementVNode("div",kt,[e.createElementVNode("img",{src:I.value,alt:"预览图片",class:"preview-image",onClick:u[1]||(u[1]=f=>m.value=!1)},null,8,yt),p.value&&p.value.length>1?(e.openBlock(),e.createElementBlock("div",wt,[e.createVNode(H,{onClick:K,disabled:b.value===0,circle:"",class:"nav-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(Re))]),_:1},8,["disabled"]),e.createElementVNode("span",Ct,e.toDisplayString(b.value+1)+" / "+e.toDisplayString(p.value.length),1),e.createVNode(H,{onClick:se,disabled:b.value===p.value.length-1,circle:"",class:"nav-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(Fe))]),_:1},8,["disabled"])])):e.createCommentVNode("",!0),e.createVNode(H,{onClick:u[2]||(u[2]=f=>m.value=!1),class:"close-btn",circle:""},{default:e.withCtx(()=>[e.createVNode(e.unref(ye))]),_:1})])]),_:1},8,["visible"])],2))}}),[["__scopeId","data-v-3f270644"]]),Et={key:0,class:"agent-steps"},Bt={class:"steps-indicator"},St={key:0,class:"icon-running"},Mt={key:1,class:"icon-completed"},Vt={class:"steps-summary"},bt={class:"icon-chevron"},vt={class:"steps-list"},Nt={class:"step-icon"},At={key:3,class:"icon-dot"},xt={class:"step-name"},Se=ce(e.defineComponent({__name:"AgentSteps",props:{steps:{}},emits:["resize"],setup(l,{emit:g}){const k=l,p=e.ref(!0),d=g,w=()=>{p.value=!p.value,setTimeout(()=>{d("resize")},300)},C=e.computed(()=>k.steps.some(V=>V.status==="running")),E=e.computed(()=>{const V=k.steps.find(m=>m.status==="running");if(V)return`正在${V.displayName}...`;const M=k.steps.filter(m=>m.status==="completed").length;return M===k.steps.length?"处理完成":`已完成 ${M}/${k.steps.length} 个步骤`});return(V,M)=>l.steps.length>0?(e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("div",{class:"steps-header",onClick:w},[e.createElementVNode("div",Bt,[C.value?(e.openBlock(),e.createElementBlock("div",St,[e.createVNode(e.unref(Ae))])):(e.openBlock(),e.createElementBlock("div",Mt,[e.createVNode(e.unref(xe))]))]),e.createElementVNode("span",Vt,e.toDisplayString(E.value),1),e.createElementVNode("div",bt,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(p.value?e.unref(Oe):e.unref(We))))])]),e.withDirectives(e.createElementVNode("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.steps,m=>(e.openBlock(),e.createElementBlock("div",{key:m.name,class:e.normalizeClass(["step-item",{"is-running":m.status==="running","is-completed":m.status==="completed","is-error":m.status==="error"}])},[e.createElementVNode("div",Nt,[m.status==="running"?(e.openBlock(),e.createBlock(e.unref(Ae),{key:0,class:"icon-spin"})):m.status==="completed"?(e.openBlock(),e.createBlock(e.unref(xe),{key:1})):m.status==="error"?(e.openBlock(),e.createBlock(e.unref(ye),{key:2})):(e.openBlock(),e.createElementBlock("div",At))]),e.createElementVNode("span",xt,e.toDisplayString(m.displayName),1)],2))),128))],512),[[e.vShow,p.value]])])):e.createCommentVNode("",!0)}}),[["__scopeId","data-v-181f5844"]]),$t={class:"chat-message-list-root"},_t={key:0,class:"bg-grid"},It={key:0,class:"welcome-screen"},zt={class:"welcome-content"},Lt={class:"welcome-logo"},Tt=["src"],Ut={key:1,class:"default-logo"},Dt={class:"welcome-title"},Ht={key:1,class:"messages-container"},Pt={key:0,class:"user-message-wrapper"},Rt={class:"message-bubble user-bubble"},Ft={key:0,class:"message-actions user-actions"},Ot=["onClick"],Wt={key:1,class:"message-content assistant-content"},jt={class:"message-bubble assistant-bubble"},Yt={key:1,class:"a2ui-card-skeleton","aria-hidden":"true"},qt={key:1,class:"message-actions"},Xt=["onClick"],Zt={key:0,class:"message-row message-assistant"},Kt={key:0,class:"loading-ring",viewBox:"0 0 36 36"},$e=ce(e.defineComponent({__name:"ChatMessageList",props:{messages:{default:()=>[]},isStreaming:{type:Boolean,default:!1},isTyping:{type:Boolean,default:!1},showWelcome:{type:Boolean,default:!0},appName:{default:"AI助手"},appLogo:{},agentSteps:{},showAgentSteps:{type:Boolean,default:!0},autoScroll:{type:Boolean,default:!0},contentPaddingTop:{default:"80px"},contentPaddingBottom:{default:"140px"},showBackground:{type:Boolean,default:!0},apiBaseUrl:{default:""},enableA2UI:{type:Boolean,default:!0},autoProvideA2UI:{type:Boolean,default:!0},hideA2UIRawContent:{type:Boolean,default:!0},showA2UISkeleton:{type:Boolean,default:!0},a2uiActionHandler:{}},emits:["copy","scroll","scroll-bottom","a2ui-action","a2ui-error"],setup(l,{expose:g,emit:k}){const p=new WeakSet,d=l,w=k,C=e.ref(null),E=e.ref(!1),V=e.ref(!0),M=e.ref({}),m=e.ref({});(()=>{var t;if(!d.autoProvideA2UI)return;try{ie.useA2UIConfig();return}catch{}const n=(t=e.getCurrentInstance())==null?void 0:t.appContext.app;!n||p.has(n)||(ie.provideA2UI({app:n,catalog:ie.DEFAULT_CATALOG,theme:ie.defaultTheme}),p.add(n))})();const b=ie.useMessageProcessor(),_=()=>{if(!C.value)return!0;const{scrollTop:n,scrollHeight:t,clientHeight:a}=C.value;return t-n-a<50},v=()=>{V.value=_()},U=n=>{var a,o;return!n||typeof n!="object"||n.version!=="v0.9"||[n.createSurface,n.updateComponents,n.updateDataModel,n.deleteSurface].filter(Boolean).length!==1?!1:n.createSurface?oe(n.createSurface):n.updateComponents?pe(n.updateComponents):n.updateDataModel?typeof((a=N(n.updateDataModel))==null?void 0:a.surfaceId)=="string":n.deleteSurface?typeof((o=N(n.deleteSurface))==null?void 0:o.surfaceId)=="string":!1},N=n=>n&&typeof n=="object"&&!Array.isArray(n)?n:null,oe=n=>{const t=N(n);if(!t)return!1;const a=Object.keys(t);return typeof t.surfaceId=="string"&&typeof t.catalogId=="string"&&a.every(o=>o==="surfaceId"||o==="catalogId")},S=n=>Array.isArray(n)?n.every(t=>{const a=N(t);return!!(a&&typeof a.label=="string"&&typeof a.value=="string")}):!1,q=n=>Array.isArray(n)&&n.every(t=>typeof t=="string"),K=n=>Array.isArray(n)?n.every(t=>{const a=N(t);return!!(a&&typeof a.label=="string"&&typeof a.value=="string")}):!1,se=n=>{const t=N(n);return!(!t||typeof t.id!="string"||typeof t.component!="string"||Object.prototype.hasOwnProperty.call(t,"props")||Object.prototype.hasOwnProperty.call(t,"componentType")||Object.prototype.hasOwnProperty.call(t,"component_type")||t.facts!==void 0&&!S(t.facts)||t.tags!==void 0&&!q(t.tags)||["policyOptions","audienceOptions","detailOptions"].some(o=>t[o]!==void 0&&!K(t[o])))},pe=n=>{const t=N(n);return!t||typeof t.surfaceId!="string"||!Array.isArray(t.components)||t.components.length===0?!1:t.components.every(se)},R=n=>{const t=n.trim();if(!t)return null;const a=t.match(/^```(?:json|a2ui|agui|ag-ui)?\s*([\s\S]*?)\s*```$/i),o=a?a[1].trim():t;if(!o.startsWith("{")&&!o.startsWith("["))return null;try{return JSON.parse(o)}catch{return null}},A=n=>{if(!n)return[];if(typeof n=="string"){const o=R(n);return o?A(o):Array.from(n.matchAll(/```(?:agui|ag-ui|a2ui|json)\s*\n([\s\S]*?)\n```/gi)).flatMap(s=>{const c=R(s[1]);return c?A(c):[]})}if(Array.isArray(n)){const o=n.map(s=>N(s)).filter(s=>!!s);return o.length===n.length&&o.every(U)?o:[]}if(typeof n!="object")return[];const t=n;if(U(t))return[t];const a=de(t);return a.length>0?a:[]},de=n=>{if(!n||typeof n!="object")return[];if(Array.isArray(n)){const a=n.map(o=>N(o)).filter(o=>!!o);return a.length!==n.length||!a.every(re)?[]:a.flatMap(J)}const t=n;return t.protocol==="ag-ui"?de(t.aguiEvents||t.agui_events):re(t)?J(t):[]},re=n=>{const t=String(n.type||"").toUpperCase();return t?t==="STATE_SNAPSHOT"?G(n.state).length>0:t==="STATE_DELTA"?G(n.delta).length>0:!0:!1},J=n=>{const t=String(n.type||"").toUpperCase();return t==="STATE_SNAPSHOT"?G(n.state):t==="STATE_DELTA"?G(n.delta):[]},G=n=>{const t=N(n);return t?A(t.a2uiMessages):[]},W=n=>[...A(n.a2ui),...A(n.a2uiMessage),...A(n.a2uiMessages),...A(n.a2ui_message),...A(n.a2ui_messages),...A(n.agui),...A(n.aguiEvents),...A(n.agui_events),...A(n.metadata),...A(n.content)],Q=n=>{var t,a,o,s;return((t=n==null?void 0:n.createSurface)==null?void 0:t.surfaceId)||((a=n==null?void 0:n.updateComponents)==null?void 0:a.surfaceId)||((o=n==null?void 0:n.updateDataModel)==null?void 0:o.surfaceId)||((s=n==null?void 0:n.deleteSurface)==null?void 0:s.surfaceId)||null},i=(n,t)=>String(n.id||`index-${t}`),u=(n,t,a=!1)=>{const o={...m.value},s={...M.value},c=a?new Set(s[n]||[]):new Set;for(const r of t){const h=Q(r);h&&(o[h]=n,c.add(h))}s[n]=Array.from(c),m.value=o,M.value=s},f=()=>{if(b.clearSurfaces(),M.value={},m.value={},!d.enableA2UI)return;const n=[];if(d.messages.forEach((t,a)=>{const o=W(t);if(o.length===0)return;const s=i(t,a);u(s,o),n.push(...o)}),n.length!==0)try{b.processMessages(n)}catch(t){console.warn("[rt-chat-messages] A2UI payload render failed",t),w("a2ui-error",t)}},B=(n,t)=>{if(!d.enableA2UI)return[];const a=i(n,t);return(M.value[a]||[]).filter(o=>m.value[o]===a)},x=n=>{const t=typeof n.content=="string"?n.content.trimStart():"";if(!t||W(n).length>0)return!1;const a=t.match(/^```([^\s\n`]*)?/);if(!a)return!1;const o=(a[1]||"").toLowerCase();return o?["a","ag","agu","agui","ag-","ag-u","ag-ui","a2","a2u","a2ui"].includes(o):!1},ee=(n,t)=>!!(d.enableA2UI&&d.showA2UISkeleton&&d.isStreaming&&t===d.messages.length-1&&B(n,t).length===0&&x(n)),X=n=>!d.hideA2UIRawContent||n.attachments&&n.attachments.length>0?!0:x(n)||!n.content?!1:W(n).length===0,te=async n=>{var a;const t=(a=n==null?void 0:n.message)==null?void 0:a.action;w("a2ui-action",t,n);try{const o=d.a2uiActionHandler?await d.a2uiActionHandler(n):[],s=A(o);if(s.length>0){const c=m.value[t==null?void 0:t.surfaceId];c&&u(c,s,!0),b.processMessages(s),d.autoScroll&&!E.value&&(await e.nextTick(),z("smooth"))}n.resolve(s)}catch(o){w("a2ui-error",o),n.reject(o instanceof Error?o:new Error(String(o)))}};let me=0,ne=!1;const Y=()=>{_()||(V.value=!1,E.value=!0)},z=async(n="smooth",t=!1)=>{if(await e.nextTick(),C.value){if(t&&(E.value=!1),E.value)return;V.value=!0,ne=!0,C.value.scrollTo({top:C.value.scrollHeight,behavior:n}),setTimeout(()=>{ne=!1},50)}},F=n=>{if(w("scroll",n),!C.value)return;const t=C.value.scrollTop,a=t<me;me=t,!ne&&a&&(E.value=!0,V.value=!1),_()&&(V.value=!0,E.value=!1,w("scroll-bottom"))};e.watch(()=>d.messages.length,async(n,t)=>{n>(t||0)&&(E.value=!1,d.autoScroll&&z("instant"))}),e.watch(()=>[d.messages,d.enableA2UI],f,{deep:!0,immediate:!0});let le=null;e.watch(()=>d.messages,async()=>{if(!d.isStreaming||!d.autoScroll||E.value||document.hidden)return;const n=d.messages[d.messages.length-1];!n||n.role!=="assistant"||(le&&cancelAnimationFrame(le),le=requestAnimationFrame(async()=>{await e.nextTick(),C.value&&!E.value&&C.value.scrollTo({top:C.value.scrollHeight,behavior:"instant"})}))},{deep:!0}),e.watch(()=>d.isTyping,n=>{n&&d.autoScroll&&z("instant")});const Z=n=>{w("copy",n),navigator.clipboard&&n.content&&navigator.clipboard.writeText(n.content)};e.watch(()=>d.agentSteps,()=>{d.autoScroll&&!E.value&&z()},{deep:!0});const ue=()=>{d.autoScroll&&!E.value&&z()},Ce=()=>{!document.hidden&&d.isStreaming&&d.autoScroll&&!E.value&&e.nextTick(()=>{C.value&&(C.value.scrollTo({top:C.value.scrollHeight,behavior:"instant"}),V.value=!0)})};let fe;return e.onMounted(()=>{v(),fe=b.onEvent(te),document.addEventListener("visibilitychange",Ce)}),e.onUnmounted(()=>{fe==null||fe(),document.removeEventListener("visibilitychange",Ce)}),g({scrollToBottom:z,containerRef:C}),(n,t)=>(e.openBlock(),e.createElementBlock("div",$t,[l.showBackground?(e.openBlock(),e.createElementBlock("div",_t)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"chat-message-list",ref_key:"containerRef",ref:C,onScroll:F,onWheel:Y,onTouchmove:Y,style:e.normalizeStyle({paddingTop:l.contentPaddingTop,paddingBottom:l.contentPaddingBottom})},[l.showWelcome&&l.messages.length===0?(e.openBlock(),e.createElementBlock("div",It,[e.renderSlot(n.$slots,"welcome",{},()=>[e.createElementVNode("div",zt,[e.createElementVNode("div",Lt,[l.appLogo?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.appLogo,alt:"Logo"},null,8,Tt)):(e.openBlock(),e.createElementBlock("div",Ut,[...t[1]||(t[1]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"32",height:"32"},[e.createElementVNode("path",{fill:"currentColor",d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"})],-1)])]))]),e.createElementVNode("h2",Dt,e.toDisplayString(l.appName),1),t[2]||(t[2]=e.createElementVNode("p",{class:"welcome-desc"},"今天有什么可以帮您?",-1))])],!0)])):(e.openBlock(),e.createElementBlock("div",Ht,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.messages,(a,o)=>(e.openBlock(),e.createElementBlock("div",{key:a.id||o,class:e.normalizeClass(["message-row",a.role==="user"?"message-user":"message-assistant"])},[a.role==="user"?(e.openBlock(),e.createElementBlock("div",Pt,[e.createElementVNode("div",Rt,[e.createVNode(we,{message:a,"is-user":!0,"api-base-url":l.apiBaseUrl},null,8,["message","api-base-url"])]),a.content?(e.openBlock(),e.createElementBlock("div",Ft,[e.createElementVNode("button",{class:"action-btn",onClick:s=>Z(a),title:"复制"},[...t[3]||(t[3]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"12",height:"12"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c6 6 14.1 9.4 22.6 9.4H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM352 853.3V704h149.3l-149.3 149.3zM224 256h448v640H416V672c0-17.7-14.3-32-32-32H224V256z"})],-1),e.createElementVNode("span",null,"复制",-1)])],8,Ot)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",Wt,[l.showAgentSteps&&o===l.messages.length-1&&l.agentSteps&&l.agentSteps.length>0?(e.openBlock(),e.createBlock(Se,{key:0,steps:l.agentSteps,onResize:ue},null,8,["steps"])):e.createCommentVNode("",!0),e.createElementVNode("div",jt,[B(a,o).length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["a2ui-surfaces",{"a2ui-surfaces-with-content":X(a)}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B(a,o),s=>(e.openBlock(),e.createBlock(e.unref(ie.A2UISurface),{key:s,"surface-id":s},null,8,["surface-id"]))),128))],2)):e.createCommentVNode("",!0),ee(a,o)?(e.openBlock(),e.createElementBlock("div",Yt,[...t[4]||(t[4]=[e.createStaticVNode('<div class="skeleton-header" data-v-a459a823><div class="skeleton-avatar skeleton-shimmer" data-v-a459a823></div><div class="skeleton-title-group" data-v-a459a823><div class="skeleton-line skeleton-title skeleton-shimmer" data-v-a459a823></div><div class="skeleton-line skeleton-subtitle skeleton-shimmer" data-v-a459a823></div></div></div><div class="skeleton-line skeleton-summary skeleton-shimmer" data-v-a459a823></div><div class="skeleton-line skeleton-summary short skeleton-shimmer" data-v-a459a823></div><div class="skeleton-facts" data-v-a459a823><div class="skeleton-fact skeleton-shimmer" data-v-a459a823></div><div class="skeleton-fact skeleton-shimmer" data-v-a459a823></div><div class="skeleton-fact skeleton-shimmer" data-v-a459a823></div></div>',4)])])):e.createCommentVNode("",!0),X(a)?(e.openBlock(),e.createBlock(we,{key:2,message:a,"is-user":!1,"api-base-url":l.apiBaseUrl,"is-streaming":l.isStreaming&&o===l.messages.length-1},null,8,["message","api-base-url","is-streaming"])):e.createCommentVNode("",!0)]),X(a)&&a.content&&!(l.isStreaming&&o===l.messages.length-1)?(e.openBlock(),e.createElementBlock("div",qt,[e.createElementVNode("button",{class:"action-btn",onClick:s=>Z(a),title:"复制"},[...t[5]||(t[5]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"12",height:"12"},[e.createElementVNode("path",{fill:"currentColor",d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c6 6 14.1 9.4 22.6 9.4H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM352 853.3V704h149.3l-149.3 149.3zM224 256h448v640H416V672c0-17.7-14.3-32-32-32H224V256z"})],-1),e.createElementVNode("span",null,"复制",-1)])],8,Xt)])):e.createCommentVNode("",!0)]))],2))),128)),l.isTyping?(e.openBlock(),e.createElementBlock("div",Zt,[...t[6]||(t[6]=[e.createElementVNode("div",{class:"typing-indicator"},[e.createElementVNode("div",{class:"typing-dot"}),e.createElementVNode("div",{class:"typing-dot",style:{"animation-delay":"0.2s"}}),e.createElementVNode("div",{class:"typing-dot",style:{"animation-delay":"0.4s"}})],-1)])])):e.createCommentVNode("",!0)]))],36),e.createVNode(e.Transition,{name:"fade-slide"},{default:e.withCtx(()=>[V.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,class:"scroll-to-bottom-btn",style:e.normalizeStyle({bottom:`calc(${l.contentPaddingBottom||"140px"} + 20px)`}),onClick:t[0]||(t[0]=a=>z("smooth",!0))},[t[8]||(t[8]=e.createElementVNode("div",{class:"btn-inner"},[e.createElementVNode("svg",{class:"arrow-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2.5",d:"M19 9l-7 7-7-7"})])],-1)),l.isStreaming?(e.openBlock(),e.createElementBlock("svg",Kt,[...t[7]||(t[7]=[e.createElementVNode("circle",{class:"loading-circle",cx:"18",cy:"18",r:"16"},null,-1)])])):e.createCommentVNode("",!0)],4))]),_:1})]))}}),[["__scopeId","data-v-a459a823"]]),Jt={install(l){l.component("ChatMessageList",$e),l.component("MultimodalMessage",we),l.component("MarkdownMessage",Be),l.component("AgentSteps",Se)}};T.AgentSteps=Se,T.ChatMessageList=$e,T.MarkdownMessage=Be,T.MultimodalMessage=we,T.default=Jt,Object.defineProperties(T,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));