@think-apps/vue-chat-sdk
Version:
Vue.js SDK for Think Apps Chat Integration
72 lines • 115 kB
JavaScript
(function(C,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(C=typeof globalThis<"u"?globalThis:C||self,a(C.ThinkAppsChatSDK={},C.Vue))})(this,function(C,a){"use strict";var Ia=Object.defineProperty;var La=(C,a,ce)=>a in C?Ia(C,a,{enumerable:!0,configurable:!0,writable:!0,value:ce}):C[a]=ce;var P=(C,a,ce)=>La(C,typeof a!="symbol"?a+"":a,ce);var ct;function ce(){if(window.innerWidth>640)return;document.querySelectorAll("input, textarea, button, span, div, p, a").forEach(t=>{const n=window.getComputedStyle(t);parseFloat(n.fontSize)<14&&(t.style.fontSize="16px")})}function ft(){typeof window>"u"||window.innerWidth>640||(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ce):ce())}typeof window<"u"&&ft();function xn(){return null}const mt=Symbol("chat-config"),bt={baseURL:"",apiKey:null,defaultAgentId:null,timeout:3e4,getHeaders:null,getUserKey:null};function kt(e={}){const t=a.ref({...bt,...e});function n(o){Object.assign(t.value,o)}async function s(){const o={};if(t.value.apiKey&&(o["X-API-Key"]=t.value.apiKey),t.value.getHeaders){const i=await t.value.getHeaders();Object.assign(o,i)}return o}async function r(){return t.value.userKey?t.value.userKey:t.value.getUserKey?await t.value.getUserKey():`user_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}const l={config:t,updateConfig:n,getEffectiveHeaders:s,getEffectiveUserKey:r};return a.provide(mt,l),l}function xt(e={}){const t=a.inject(mt,null);if(t){if(Object.keys(e).length>0){const o=a.computed(()=>({...t.config.value,...e}));return{config:o,updateConfig:t.updateConfig,getEffectiveHeaders:async()=>{const i={};if(o.value.apiKey&&(i["X-API-Key"]=o.value.apiKey),o.value.getHeaders){const c=await o.value.getHeaders();Object.assign(i,c)}return i},getEffectiveUserKey:async()=>o.value.userKey?o.value.userKey:o.value.getUserKey?await o.value.getUserKey():`user_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}}return t}const n=a.ref({...bt,...e});function s(o){Object.assign(n.value,o)}async function r(){const o={};if(n.value.apiKey&&(o["X-API-Key"]=n.value.apiKey),n.value.getHeaders){const i=await n.value.getHeaders();Object.assign(o,i)}return o}async function l(){return n.value.userKey?n.value.userKey:n.value.getUserKey?await n.value.getUserKey():`user_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}return{config:n,updateConfig:s,getEffectiveHeaders:r,getEffectiveUserKey:l}}class yt extends Error{constructor(t,n,s){super(t),this.name="HttpError",this.status=n,this.response=s}}function wt(e={}){const{baseURL:t="",timeout:n=3e4,headers:s={}}=e;function r(f){return f.startsWith("http")?f:`${t.replace(/\/$/,"")}/${f.replace(/^\//,"")}`}async function l(f){if(!f.ok)throw new yt(`HTTP ${f.status}: ${f.statusText}`,f.status,f);return f}function o(f={}){const{method:b="GET",headers:v={},body:$,signal:V,...j}=f,L={method:b.toUpperCase(),headers:{...s,...v},signal:V,...j};return $!==void 0&&(typeof $=="object"&&!($ instanceof FormData)?(L.body=JSON.stringify($),L.headers["Content-Type"]="application/json"):L.body=$),L}function i(f,b){const v=new AbortController;b&&(b.aborted?v.abort():b.addEventListener("abort",()=>{v.abort()}));const $=setTimeout(()=>{v.abort()},f),V=()=>{clearTimeout($)};return{signal:v.signal,cleanup:V}}async function c(f,b={}){const v=r(f),$=o(b),{signal:V,cleanup:j}=i(n,$.signal);$.signal=V;try{const L=await fetch(v,$);return j(),await l(L)}catch(L){throw j(),L.name==="AbortError"?new yt("Request timeout or cancelled",0,null):L}}async function d(f,b={}){return c(f,{...b,method:"GET"})}async function u(f,b,v={}){return c(f,{...v,method:"POST",body:b})}async function g(f,b,v={}){return c(f,{...v,method:"PUT",body:b})}async function h(f,b={}){return c(f,{...b,method:"DELETE"})}async function E(f,b={}){return await c(f,b)}return{request:c,get:d,post:u,put:g,delete:h,stream:E}}wt();function Et(e){const{baseURL:t,apiKey:n,timeout:s=3e4,getHeaders:r,getUserKey:l}=e,o=wt({baseURL:t,timeout:s,headers:{"Content-Type":"application/json",Accept:"text/event-stream","Cache-Control":"no-cache"}});function i(){return`user_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}async function c(){const g={};if(n&&(g["X-API-Key"]=n),r){const h=await r();Object.assign(g,h)}return g}async function d(){return l?await l():i()}async function u(g,h={}){try{const E=await c(),f=await d(),b={agent_id:g.agent_id,message:g.message,key:g.key||f,start_new:g.start_new!==void 0?g.start_new:!1};return await o.stream("/open/chat/stream",{method:"POST",headers:E,body:b,signal:h.signal})}catch(E){throw console.error("流式聊天请求失败:",E),E}}return{streamChat:u,getEffectiveHeaders:c,getEffectiveUserKey:d}}async function yn(e,t,n,s){try{const r=e.body.getReader(),l=new TextDecoder;let o="";for(;;){const{done:i,value:c}=await r.read();if(i)break;o+=l.decode(c,{stream:!0});const d=o.split(`
`);o=d.pop()||"";for(const u of d)if(u.trim()!==""&&u.startsWith("data: ")){const g=u.slice(6).trim();if(g==="[DONE]"){n==null||n();return}try{const h=JSON.parse(g);t==null||t(h)}catch(h){console.warn("解析流式数据失败:",{data:g,error:h.message})}}}n==null||n()}catch(r){console.error("解析流式响应失败:",r),s==null||s(r)}}function _t(e){return{id:e.id||Date.now().toString(),content:e.content||e.response||"",role:e.role||"assistant",timestamp:e.timestamp||new Date().toISOString(),tool_calls:e.tool_calls||[],metadata:e.metadata||{}}}function wn(e){if(typeof e=="string")return e;if(e.choices&&e.choices.length>0){const t=e.choices[0];if(t.delta&&t.delta.content)return t.delta.content}return e.content?e.content:""}function En(e){if(e.choices&&e.choices.length>0){const t=e.choices[0];if(t.delta&&t.delta.tool_calls)return t.delta.tool_calls}return e.tool_calls?e.tool_calls:[]}function _n(e){if(e.choices&&e.choices.length>0){const t=e.choices[0];return t.finish_reason==="stop"||t.finish_reason==="tool_calls"}return!1}function St(e=null,t={}){const n=a.ref([]),s=a.ref(!1),r=a.ref(!1),l=a.ref(null),o=a.ref(null),i=a.ref(null);let c=null,d=null;const{config:u,getEffectiveHeaders:g,getEffectiveUserKey:h}=xt(t),E=a.computed(()=>e||u.value.defaultAgentId),f=a.computed(()=>Et({...u.value,getHeaders:g,getUserKey:h}));function b(O){const w=_t(O);return n.value.push(w),n.value[n.value.length-1]}function v(O){if(n.value.length>0){const w=n.value[n.value.length-1];Object.assign(w,O)}}async function $(O,w={}){var _,N,A,W;if(!E.value)throw new Error("Agent ID 未配置");if(!u.value.baseURL)throw new Error("API baseURL 未配置");try{l.value=null,s.value=!0,d=O;const G=n.value.length===0;b({role:"user",content:O,timestamp:new Date().toISOString()});const U=b({role:"assistant",content:"",timestamp:new Date().toISOString(),tool_calls:[],streaming:!0});c=new AbortController;const q={agent_id:E.value,message:O,key:await h(),start_new:G};s.value=!1,r.value=!0;const p=(await f.value.streamChat(q,{signal:c.signal})).body.getReader(),k=new TextDecoder;let y="";try{for(;;){if(c!=null&&c.signal.aborted){console.log("流式请求被用户取消");break}const{done:T,value:z}=await p.read();if(T){console.log("流式响应读取完成");break}const F=k.decode(z,{stream:!0});y+=F;const Y=y.split(`
`);y=Y.pop()||"";for(const se of Y)if(se.startsWith("data: ")){const K=se.slice(6).trim();if(K==="[DONE]"){U.streaming=!1,r.value=!1,(_=w.onComplete)==null||_.call(w);return}if(!K)continue;try{const D=JSON.parse(K);if((N=w.onChunk)==null||N.call(w,D),D.chunk)await V(D.chunk,U);else if(D.type)await V(D,U);else if(D.error){console.error("收到服务端错误:",D.error),U.content+=`
❌ **错误**: ${D.error}
`,U.streaming=!1,r.value=!1;break}else{const Ce=D.content||D.message||D.text||"";Ce&&(U.content+=Ce)}D.session_id&&(o.value=D.session_id),D.conversation_id&&(i.value=D.conversation_id)}catch(D){if(console.warn("流式数据解析失败,尝试纯文本处理",{data:K,error:D.message}),K.includes("error")||K.includes("Error")||K.includes("失败")){U.content+=`
❌ **错误**: ${K}
`,U.streaming=!1,r.value=!1;break}else U.content+=K}}}}catch(T){throw console.error("流式读取过程中出现错误:",T),T.name!=="AbortError"&&(U.content+=`
❌ **连接错误**: ${T.message}
`),T}finally{try{p.releaseLock()}catch{}U.streaming=!1,r.value=!1,(A=w.onComplete)==null||A.call(w)}}catch(G){if(r.value=!1,s.value=!1,G.name==="AbortError")return;throw l.value=G.message,(W=w.onError)==null||W.call(w,G),G}finally{c=null}}async function V(O,w){try{const{type:_,content:N,meta:A}=O;switch(_){case"text":N&&(w.content+=N);break;case"tool_call":{const W=(A==null?void 0:A.tool_name)||"未知工具",G=(A==null?void 0:A.tool_id)||Date.now().toString();if(w.tool_calls||(w.tool_calls=[]),!w.tool_calls.find(q=>q.id===G)){const q={id:G,name:W,status:"running",result:null,error:null,arguments:(A==null?void 0:A.arguments)||null,timestamp:new Date().toISOString()};w.tool_calls.push(q),w.tool_calls=[...w.tool_calls],await a.nextTick()}break}case"tool_res":{const W=(A==null?void 0:A.error)||!1,G=A==null?void 0:A.tool_id;if(w.tool_calls&&G){const U=w.tool_calls.find(q=>q.id===G);U&&(U.status=W?"error":"completed",U.result=N,U.completedAt=new Date().toISOString(),W&&(U.error=N),w.tool_calls=[...w.tool_calls],await a.nextTick())}break}case"final":w.streaming=!1,r.value=!1;break;default:N&&(w.content+=N);break}}catch(_){console.error("处理SC chunk失败:",_),O.content&&(w.content+=O.content)}}function j(){c&&(c.abort(),c=null),r.value=!1,s.value=!1}function L(){n.value=[],o.value=null,i.value=null,l.value=null}async function J(){if(!d)throw new Error("没有可重试的消息");n.value.length>0&&n.value[n.value.length-1].role==="assistant"&&n.value.pop(),await $(d)}return{messages:n,loading:s,streaming:r,error:l,sessionId:o,conversationId:i,sendMessage:$,clearMessages:L,stopStream:j,retry:J,addMessage:b,updateLastMessage:v}}function qe(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var de=qe();function Nt(e){de=e}var ke={exec:()=>null};function M(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(r,l)=>{let o=typeof l=="string"?l:l.source;return o=o.replace(Q.caret,"$1"),n=n.replace(r,o),s},getRegex:()=>new RegExp(n,t)};return s}var Q={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},Sn=/^(?:[ \t]*(?:\n|$))+/,Nn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Tn=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,xe=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,An=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ze=/(?:[*+-]|\d{1,9}[.)])/,Tt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,At=M(Tt).replace(/bull/g,Ze).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Rn=M(Tt).replace(/bull/g,Ze).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),We=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Cn=/^[^\n]+/,Xe=/(?!\s*\])(?:\\.|[^\[\]\\])+/,vn=M(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Xe).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Mn=M(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ze).getRegex(),ve="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Qe=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Bn=M("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Qe).replace("tag",ve).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Rt=M(We).replace("hr",xe).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ve).getRegex(),$n=M(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Rt).getRegex(),Je={blockquote:$n,code:Nn,def:vn,fences:Tn,heading:An,hr:xe,html:Bn,lheading:At,list:Mn,newline:Sn,paragraph:Rt,table:ke,text:Cn},Ct=M("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",xe).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ve).getRegex(),On={...Je,lheading:Rn,table:Ct,paragraph:M(We).replace("hr",xe).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ct).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ve).getRegex()},In={...Je,html:M(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Qe).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ke,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:M(We).replace("hr",xe).replace("heading",` *#{1,6} *[^
]`).replace("lheading",At).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Ln=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Dn=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,vt=/^( {2,}|\\)\n(?!\s*$)/,zn=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Me=/[\p{P}\p{S}]/u,Ye=/[\s\p{P}\p{S}]/u,Mt=/[^\s\p{P}\p{S}]/u,Pn=M(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ye).getRegex(),Bt=/(?!~)[\p{P}\p{S}]/u,Hn=/(?!~)[\s\p{P}\p{S}]/u,Vn=/(?:[^\s\p{P}\p{S}]|~)/u,Un=/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g,$t=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Kn=M($t,"u").replace(/punct/g,Me).getRegex(),jn=M($t,"u").replace(/punct/g,Bt).getRegex(),Ot="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Fn=M(Ot,"gu").replace(/notPunctSpace/g,Mt).replace(/punctSpace/g,Ye).replace(/punct/g,Me).getRegex(),Gn=M(Ot,"gu").replace(/notPunctSpace/g,Vn).replace(/punctSpace/g,Hn).replace(/punct/g,Bt).getRegex(),qn=M("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Mt).replace(/punctSpace/g,Ye).replace(/punct/g,Me).getRegex(),Zn=M(/\\(punct)/,"gu").replace(/punct/g,Me).getRegex(),Wn=M(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Xn=M(Qe).replace("(?:-->|$)","-->").getRegex(),Qn=M("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Xn).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Be=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Jn=M(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Be).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),It=M(/^!?\[(label)\]\[(ref)\]/).replace("label",Be).replace("ref",Xe).getRegex(),Lt=M(/^!?\[(ref)\](?:\[\])?/).replace("ref",Xe).getRegex(),Yn=M("reflink|nolink(?!\\()","g").replace("reflink",It).replace("nolink",Lt).getRegex(),et={_backpedal:ke,anyPunctuation:Zn,autolink:Wn,blockSkip:Un,br:vt,code:Dn,del:ke,emStrongLDelim:Kn,emStrongRDelimAst:Fn,emStrongRDelimUnd:qn,escape:Ln,link:Jn,nolink:Lt,punctuation:Pn,reflink:It,reflinkSearch:Yn,tag:Qn,text:zn,url:ke},es={...et,link:M(/^!?\[(label)\]\((.*?)\)/).replace("label",Be).getRegex(),reflink:M(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Be).getRegex()},tt={...et,emStrongRDelimAst:Gn,emStrongLDelim:jn,url:M(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},ts={...tt,br:M(vt).replace("{2,}","*").getRegex(),text:M(tt.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},$e={normal:Je,gfm:On,pedantic:In},ye={normal:et,gfm:tt,breaks:ts,pedantic:es},ns={"&":"&","<":"<",">":">",'"':""","'":"'"},Dt=e=>ns[e];function te(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,Dt)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,Dt);return e}function zt(e){try{e=encodeURI(e).replace(Q.percentDecode,"%")}catch{return null}return e}function Pt(e,t){var l;let n=e.replace(Q.findPipe,(o,i,c)=>{let d=!1,u=i;for(;--u>=0&&c[u]==="\\";)d=!d;return d?"|":" |"}),s=n.split(Q.splitPipe),r=0;if(s[0].trim()||s.shift(),s.length>0&&!((l=s.at(-1))!=null&&l.trim())&&s.pop(),t)if(s.length>t)s.splice(t);else for(;s.length<t;)s.push("");for(;r<s.length;r++)s[r]=s[r].trim().replace(Q.slashPipe,"|");return s}function we(e,t,n){let s=e.length;if(s===0)return"";let r=0;for(;r<s&&e.charAt(s-r-1)===t;)r++;return e.slice(0,s-r)}function ss(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let s=0;s<e.length;s++)if(e[s]==="\\")s++;else if(e[s]===t[0])n++;else if(e[s]===t[1]&&(n--,n<0))return s;return n>0?-2:-1}function Ht(e,t,n,s,r){let l=t.href,o=t.title||null,i=e[1].replace(r.other.outputLinkReplace,"$1");s.state.inLink=!0;let c={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:l,title:o,text:i,tokens:s.inlineTokens(i)};return s.state.inLink=!1,c}function rs(e,t,n){let s=e.match(n.other.indentCodeCompensation);if(s===null)return t;let r=s[1];return t.split(`
`).map(l=>{let o=l.match(n.other.beginningSpace);if(o===null)return l;let[i]=o;return i.length>=r.length?l.slice(r.length):l}).join(`
`)}var Oe=class{constructor(e){P(this,"options");P(this,"rules");P(this,"lexer");this.options=e||de}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:we(n,`
`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=rs(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=we(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:we(t[0],`
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=we(t[0],`
`).split(`
`),s="",r="",l=[];for(;n.length>0;){let o=!1,i=[],c;for(c=0;c<n.length;c++)if(this.rules.other.blockquoteStart.test(n[c]))i.push(n[c]),o=!0;else if(!o)i.push(n[c]);else break;n=n.slice(c);let d=i.join(`
`),u=d.replace(this.rules.other.blockquoteSetextReplace,`
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
${d}`:d,r=r?`${r}
${u}`:u;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,l,!0),this.lexer.state.top=g,n.length===0)break;let h=l.at(-1);if((h==null?void 0:h.type)==="code")break;if((h==null?void 0:h.type)==="blockquote"){let E=h,f=E.raw+`
`+n.join(`
`),b=this.blockquote(f);l[l.length-1]=b,s=s.substring(0,s.length-E.raw.length)+b.raw,r=r.substring(0,r.length-E.text.length)+b.text;break}else if((h==null?void 0:h.type)==="list"){let E=h,f=E.raw+`
`+n.join(`
`),b=this.list(f);l[l.length-1]=b,s=s.substring(0,s.length-h.raw.length)+b.raw,r=r.substring(0,r.length-E.raw.length)+b.raw,n=f.substring(l.at(-1).raw.length).split(`
`);continue}}return{type:"blockquote",raw:s,tokens:l,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let l=this.rules.other.listItemRegex(n),o=!1;for(;e;){let c=!1,d="",u="";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let g=t[2].split(`
`,1)[0].replace(this.rules.other.listReplaceTabs,$=>" ".repeat(3*$.length)),h=e.split(`
`,1)[0],E=!g.trim(),f=0;if(this.options.pedantic?(f=2,u=g.trimStart()):E?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,u=g.slice(f),f+=t[1].length),E&&this.rules.other.blankLine.test(h)&&(d+=h+`
`,e=e.substring(h.length+1),c=!0),!c){let $=this.rules.other.nextBulletRegex(f),V=this.rules.other.hrRegex(f),j=this.rules.other.fencesBeginRegex(f),L=this.rules.other.headingBeginRegex(f),J=this.rules.other.htmlBeginRegex(f);for(;e;){let O=e.split(`
`,1)[0],w;if(h=O,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting," "),w=h):w=h.replace(this.rules.other.tabCharGlobal," "),j.test(h)||L.test(h)||J.test(h)||$.test(h)||V.test(h))break;if(w.search(this.rules.other.nonSpaceChar)>=f||!h.trim())u+=`
`+w.slice(f);else{if(E||g.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||j.test(g)||L.test(g)||V.test(g))break;u+=`
`+h}!E&&!h.trim()&&(E=!0),d+=O+`
`,e=e.substring(O.length+1),g=w.slice(f)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(o=!0));let b=null,v;this.options.gfm&&(b=this.rules.other.listIsTask.exec(u),b&&(v=b[0]!=="[ ] ",u=u.replace(this.rules.other.listReplaceTask,""))),r.items.push({type:"list_item",raw:d,task:!!b,checked:v,loose:!1,text:u,tokens:[]}),r.raw+=d}let i=r.items.at(-1);if(i)i.raw=i.raw.trimEnd(),i.text=i.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let c=0;c<r.items.length;c++)if(this.lexer.state.top=!1,r.items[c].tokens=this.lexer.blockTokens(r.items[c].text,[]),!r.loose){let d=r.items[c].tokens.filter(g=>g.type==="space"),u=d.length>0&&d.some(g=>this.rules.other.anyLine.test(g.raw));r.loose=u}if(r.loose)for(let c=0;c<r.items.length;c++)r.items[c].loose=!0;return r}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:s,title:r}}}table(e){var o;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Pt(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=(o=t[3])!=null&&o.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
`):[],l={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(let i of s)this.rules.other.tableAlignRight.test(i)?l.align.push("right"):this.rules.other.tableAlignCenter.test(i)?l.align.push("center"):this.rules.other.tableAlignLeft.test(i)?l.align.push("left"):l.align.push(null);for(let i=0;i<n.length;i++)l.header.push({text:n[i],tokens:this.lexer.inline(n[i]),header:!0,align:l.align[i]});for(let i of r)l.rows.push(Pt(i,l.header.length).map((c,d)=>({text:c,tokens:this.lexer.inline(c),header:!1,align:l.align[d]})));return l}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let l=we(n.slice(0,-1),"\\");if((n.length-l.length)%2===0)return}else{let l=ss(t[2],"()");if(l===-2)return;if(l>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+l;t[2]=t[2].substring(0,l),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let s=t[2],r="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(s);l&&(s=l[1],r=l[3])}else r=t[3]?t[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),Ht(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[s.toLowerCase()];if(!r){let l=n[0].charAt(0);return{type:"text",raw:l,text:l}}return Ht(n,r,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!(!s||s[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,l,o,i=r,c=0,d=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+r);(s=d.exec(t))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(o=[...l].length,s[3]||s[4]){i+=o;continue}else if((s[5]||s[6])&&r%3&&!((r+o)%3)){c+=o;continue}if(i-=o,i>0)continue;o=Math.min(o,o+i+c);let u=[...s[0]][0].length,g=e.slice(0,r+s.index+u+o);if(Math.min(r,o)%2){let E=g.slice(1,-1);return{type:"em",raw:g,text:E,tokens:this.lexer.inlineTokens(E)}}let h=g.slice(2,-2);return{type:"strong",raw:g,text:h,tokens:this.lexer.inlineTokens(h)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=t[1],s="mailto:"+n):(n=t[1],s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n;let t;if(t=this.rules.inline.url.exec(e)){let s,r;if(t[2]==="@")s=t[0],r="mailto:"+s;else{let l;do l=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(l!==t[0]);s=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:s,href:r,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},ae=class gt{constructor(t){P(this,"tokens");P(this,"options");P(this,"state");P(this,"tokenizer");P(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||de,this.options.tokenizer=this.options.tokenizer||new Oe,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:Q,block:$e.normal,inline:ye.normal};this.options.pedantic?(n.block=$e.pedantic,n.inline=ye.pedantic):this.options.gfm&&(n.block=$e.gfm,this.options.breaks?n.inline=ye.breaks:n.inline=ye.gfm),this.tokenizer.rules=n}static get rules(){return{block:$e,inline:ye}}static lex(t,n){return new gt(n).lex(t)}static lexInline(t,n){return new gt(n).inlineTokens(t)}lex(t){t=t.replace(Q.carriageReturn,`
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let s=this.inlineQueue[n];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],s=!1){var r,l,o;for(this.options.pedantic&&(t=t.replace(Q.tabCharGlobal," ").replace(Q.spaceLine,""));t;){let i;if((l=(r=this.options.extensions)==null?void 0:r.block)!=null&&l.some(d=>(i=d.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let d=n.at(-1);i.raw.length===1&&d!==void 0?d.raw+=`
`:n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let d=n.at(-1);(d==null?void 0:d.type)==="paragraph"||(d==null?void 0:d.type)==="text"?(d.raw+=`
`+i.raw,d.text+=`
`+i.text,this.inlineQueue.at(-1).src=d.text):n.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let d=n.at(-1);(d==null?void 0:d.type)==="paragraph"||(d==null?void 0:d.type)==="text"?(d.raw+=`
`+i.raw,d.text+=`
`+i.raw,this.inlineQueue.at(-1).src=d.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),n.push(i);continue}let c=t;if((o=this.options.extensions)!=null&&o.startBlock){let d=1/0,u=t.slice(1),g;this.options.extensions.startBlock.forEach(h=>{g=h.call({lexer:this},u),typeof g=="number"&&g>=0&&(d=Math.min(d,g))}),d<1/0&&d>=0&&(c=t.substring(0,d+1))}if(this.state.top&&(i=this.tokenizer.paragraph(c))){let d=n.at(-1);s&&(d==null?void 0:d.type)==="paragraph"?(d.raw+=`
`+i.raw,d.text+=`
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=d.text):n.push(i),s=c.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let d=n.at(-1);(d==null?void 0:d.type)==="text"?(d.raw+=`
`+i.raw,d.text+=`
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=d.text):n.push(i);continue}if(t){let d="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(d);break}else throw new Error(d)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var i,c,d;let s=t,r=null;if(this.tokens.links){let u=Object.keys(this.tokens.links);if(u.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)u.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,r.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(r=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let l=!1,o="";for(;t;){l||(o=""),l=!1;let u;if((c=(i=this.options.extensions)==null?void 0:i.inline)!=null&&c.some(h=>(u=h.call({lexer:this},t,n))?(t=t.substring(u.raw.length),n.push(u),!0):!1))continue;if(u=this.tokenizer.escape(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.tag(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.link(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(u.raw.length);let h=n.at(-1);u.type==="text"&&(h==null?void 0:h.type)==="text"?(h.raw+=u.raw,h.text+=u.text):n.push(u);continue}if(u=this.tokenizer.emStrong(t,s,o)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.codespan(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.br(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.del(t)){t=t.substring(u.raw.length),n.push(u);continue}if(u=this.tokenizer.autolink(t)){t=t.substring(u.raw.length),n.push(u);continue}if(!this.state.inLink&&(u=this.tokenizer.url(t))){t=t.substring(u.raw.length),n.push(u);continue}let g=t;if((d=this.options.extensions)!=null&&d.startInline){let h=1/0,E=t.slice(1),f;this.options.extensions.startInline.forEach(b=>{f=b.call({lexer:this},E),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(g=t.substring(0,h+1))}if(u=this.tokenizer.inlineText(g)){t=t.substring(u.raw.length),u.raw.slice(-1)!=="_"&&(o=u.raw.slice(-1)),l=!0;let h=n.at(-1);(h==null?void 0:h.type)==="text"?(h.raw+=u.raw,h.text+=u.text):n.push(u);continue}if(t){let h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return n}},Ie=class{constructor(e){P(this,"options");P(this,"parser");this.options=e||de}space(e){return""}code({text:e,lang:t,escaped:n}){var l;let s=(l=(t||"").match(Q.notSpaceStart))==null?void 0:l[0],r=e.replace(Q.endingNewline,"")+`
`;return s?'<pre><code class="language-'+te(s)+'">'+(n?r:te(r,!0))+`</code></pre>
`:"<pre><code>"+(n?r:te(r,!0))+`</code></pre>
`}blockquote({tokens:e}){return`<blockquote>
${this.parser.parse(e)}</blockquote>
`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
`}hr(e){return`<hr>
`}list(e){let t=e.ordered,n=e.start,s="";for(let o=0;o<e.items.length;o++){let i=e.items[o];s+=this.listitem(i)}let r=t?"ol":"ul",l=t&&n!==1?' start="'+n+'"':"";return"<"+r+l+`>
`+s+"</"+r+`>
`}listitem(e){var n;let t="";if(e.task){let s=this.checkbox({checked:!!e.checked});e.loose?((n=e.tokens[0])==null?void 0:n.type)==="paragraph"?(e.tokens[0].text=s+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=s+" "+te(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:s+" ",text:s+" ",escaped:!0}):t+=s+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>
`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
`}table(e){let t="",n="";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let s="";for(let r=0;r<e.rows.length;r++){let l=e.rows[r];n="";for(let o=0;o<l.length;o++)n+=this.tablecell(l[o]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
<thead>
`+t+`</thead>
`+s+`</table>
`}tablerow({text:e}){return`<tr>
${e}</tr>
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${te(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),r=zt(e);if(r===null)return s;e=r;let l='<a href="'+e+'"';return t&&(l+=' title="'+te(t)+'"'),l+=">"+s+"</a>",l}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=zt(e);if(r===null)return te(n);e=r;let l=`<img src="${e}" alt="${n}"`;return t&&(l+=` title="${te(t)}"`),l+=">",l}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:te(e.text)}},nt=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},ie=class pt{constructor(t){P(this,"options");P(this,"renderer");P(this,"textRenderer");this.options=t||de,this.options.renderer=this.options.renderer||new Ie,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new nt}static parse(t,n){return new pt(n).parse(t)}static parseInline(t,n){return new pt(n).parseInline(t)}parse(t,n=!0){var r,l;let s="";for(let o=0;o<t.length;o++){let i=t[o];if((l=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&l[i.type]){let d=i,u=this.options.extensions.renderers[d.type].call({parser:this},d);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(d.type)){s+=u||"";continue}}let c=i;switch(c.type){case"space":{s+=this.renderer.space(c);continue}case"hr":{s+=this.renderer.hr(c);continue}case"heading":{s+=this.renderer.heading(c);continue}case"code":{s+=this.renderer.code(c);continue}case"table":{s+=this.renderer.table(c);continue}case"blockquote":{s+=this.renderer.blockquote(c);continue}case"list":{s+=this.renderer.list(c);continue}case"html":{s+=this.renderer.html(c);continue}case"paragraph":{s+=this.renderer.paragraph(c);continue}case"text":{let d=c,u=this.renderer.text(d);for(;o+1<t.length&&t[o+1].type==="text";)d=t[++o],u+=`
`+this.renderer.text(d);n?s+=this.renderer.paragraph({type:"paragraph",raw:u,text:u,tokens:[{type:"text",raw:u,text:u,escaped:!0}]}):s+=u;continue}default:{let d='Token with "'+c.type+'" type was not found.';if(this.options.silent)return console.error(d),"";throw new Error(d)}}}return s}parseInline(t,n=this.renderer){var r,l;let s="";for(let o=0;o<t.length;o++){let i=t[o];if((l=(r=this.options.extensions)==null?void 0:r.renderers)!=null&&l[i.type]){let d=this.options.extensions.renderers[i.type].call({parser:this},i);if(d!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){s+=d||"";continue}}let c=i;switch(c.type){case"escape":{s+=n.text(c);break}case"html":{s+=n.html(c);break}case"link":{s+=n.link(c);break}case"image":{s+=n.image(c);break}case"strong":{s+=n.strong(c);break}case"em":{s+=n.em(c);break}case"codespan":{s+=n.codespan(c);break}case"br":{s+=n.br(c);break}case"del":{s+=n.del(c);break}case"text":{s+=n.text(c);break}default:{let d='Token with "'+c.type+'" type was not found.';if(this.options.silent)return console.error(d),"";throw new Error(d)}}}return s}},Le=(ct=class{constructor(e){P(this,"options");P(this,"block");this.options=e||de}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?ae.lex:ae.lexInline}provideParser(){return this.block?ie.parse:ie.parseInline}},P(ct,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens"])),ct),as=class{constructor(...e){P(this,"defaults",qe());P(this,"options",this.setOptions);P(this,"parse",this.parseMarkdown(!0));P(this,"parseInline",this.parseMarkdown(!1));P(this,"Parser",ie);P(this,"Renderer",Ie);P(this,"TextRenderer",nt);P(this,"Lexer",ae);P(this,"Tokenizer",Oe);P(this,"Hooks",Le);this.use(...e)}walkTokens(e,t){var s,r;let n=[];for(let l of e)switch(n=n.concat(t.call(this,l)),l.type){case"table":{let o=l;for(let i of o.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of o.rows)for(let c of i)n=n.concat(this.walkTokens(c.tokens,t));break}case"list":{let o=l;n=n.concat(this.walkTokens(o.items,t));break}default:{let o=l;(r=(s=this.defaults.extensions)==null?void 0:s.childTokens)!=null&&r[o.type]?this.defaults.extensions.childTokens[o.type].forEach(i=>{let c=o[i].flat(1/0);n=n.concat(this.walkTokens(c,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let l=t.renderers[r.name];l?t.renderers[r.name]=function(...o){let i=r.renderer.apply(this,o);return i===!1&&(i=l.apply(this,o)),i}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=t[r.level];l?l.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new Ie(this.defaults);for(let l in n.renderer){if(!(l in r))throw new Error(`renderer '${l}' does not exist`);if(["options","parser"].includes(l))continue;let o=l,i=n.renderer[o],c=r[o];r[o]=(...d)=>{let u=i.apply(r,d);return u===!1&&(u=c.apply(r,d)),u||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new Oe(this.defaults);for(let l in n.tokenizer){if(!(l in r))throw new Error(`tokenizer '${l}' does not exist`);if(["options","rules","lexer"].includes(l))continue;let o=l,i=n.tokenizer[o],c=r[o];r[o]=(...d)=>{let u=i.apply(r,d);return u===!1&&(u=c.apply(r,d)),u}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Le;for(let l in n.hooks){if(!(l in r))throw new Error(`hook '${l}' does not exist`);if(["options","block"].includes(l))continue;let o=l,i=n.hooks[o],c=r[o];Le.passThroughHooks.has(l)?r[o]=d=>{if(this.defaults.async)return Promise.resolve(i.call(r,d)).then(g=>c.call(r,g));let u=i.call(r,d);return c.call(r,u)}:r[o]=(...d)=>{let u=i.apply(r,d);return u===!1&&(u=c.apply(r,d)),u}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,l=n.walkTokens;s.walkTokens=function(o){let i=[];return i.push(l.call(this,o)),r&&(i=i.concat(r.call(this,o))),i}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return ae.lex(e,t??this.defaults)}parser(e,t){return ie.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let s={...n},r={...this.defaults,...s},l=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));r.hooks&&(r.hooks.options=r,r.hooks.block=e);let o=r.hooks?r.hooks.provideLexer():e?ae.lex:ae.lexInline,i=r.hooks?r.hooks.provideParser():e?ie.parse:ie.parseInline;if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(t):t).then(c=>o(c,r)).then(c=>r.hooks?r.hooks.processAllTokens(c):c).then(c=>r.walkTokens?Promise.all(this.walkTokens(c,r.walkTokens)).then(()=>c):c).then(c=>i(c,r)).then(c=>r.hooks?r.hooks.postprocess(c):c).catch(l);try{r.hooks&&(t=r.hooks.preprocess(t));let c=o(t,r);r.hooks&&(c=r.hooks.processAllTokens(c)),r.walkTokens&&this.walkTokens(c,r.walkTokens);let d=i(c,r);return r.hooks&&(d=r.hooks.postprocess(d)),d}catch(c){return l(c)}}}onError(e,t){return n=>{if(n.message+=`
Please report this to https://github.com/markedjs/marked.`,e){let s="<p>An error occurred:</p><pre>"+te(n.message+"",!0)+"</pre>";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},he=new as;function B(e,t){return he.parse(e,t)}B.options=B.setOptions=function(e){return he.setOptions(e),B.defaults=he.defaults,Nt(B.defaults),B},B.getDefaults=qe,B.defaults=de,B.use=function(...e){return he.use(...e),B.defaults=he.defaults,Nt(B.defaults),B},B.walkTokens=function(e,t){return he.walkTokens(e,t)},B.parseInline=he.parseInline,B.Parser=ie,B.parser=ie.parse,B.Renderer=Ie,B.TextRenderer=nt,B.Lexer=ae,B.lexer=ae.lex,B.Tokenizer=Oe,B.Hooks=Le,B.parse=B,B.options,B.setOptions,B.use,B.walkTokens,B.parseInline,ie.parse,ae.lex;function is(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Vt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],s=typeof n;(s==="object"||s==="function")&&!Object.isFrozen(n)&&Vt(n)}),e}class Ut{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Kt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function ue(e,...t){const n=Object.create(null);for(const s in e)n[s]=e[s];return t.forEach(function(s){for(const r in s)n[r]=s[r]}),n}const os="</span>",jt=e=>!!e.scope,ls=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((s,r)=>`${s}${"_".repeat(r+1)}`)].join(" ")}return`${t}${e}`};class cs{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Kt(t)}openNode(t){if(!jt(t))return;const n=ls(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){jt(t)&&(this.buffer+=os)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const Ft=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class st{constructor(){this.rootNode=Ft(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Ft({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(s=>this._walk(t,s)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{st._collapse(n)}))}}class us extends st{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const s=t.root;n&&(s.scope=`language:${n}`),this.add(s)}toHTML(){return new cs(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Ee(e){return e?typeof e=="string"?e:e.source:null}function Gt(e){return ge("(?=",e,")")}function ds(e){return ge("(?:",e,")*")}function hs(e){return ge("(?:",e,")?")}function ge(...e){return e.map(n=>Ee(n)).join("")}function gs(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function rt(...e){return"("+(gs(e).capture?"":"?:")+e.map(s=>Ee(s)).join("|")+")"}function qt(e){return new RegExp(e.toString()+"|").exec("").length-1}function ps(e,t){const n=e&&e.exec(t);return n&&n.index===0}const fs=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function at(e,{joinWith:t}){let n=0;return e.map(s=>{n+=1;const r=n;let l=Ee(s),o="";for(;l.length>0;){const i=fs.exec(l);if(!i){o+=l;break}o+=l.substring(0,i.index),l=l.substring(i.index+i[0].length),i[0][0]==="\\"&&i[1]?o+="\\"+String(Number(i[1])+r):(o+=i[0],i[0]==="("&&n++)}return o}).map(s=>`(${s})`).join(t)}const ms=/\b\B/,Zt="[a-zA-Z]\\w*",it="[a-zA-Z_]\\w*",Wt="\\b\\d+(\\.\\d+)?",Xt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Qt="\\b(0b[01]+)",bs="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",ks=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=ge(t,/.*\b/,e.binary,/\b.*/)),ue({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,s)=>{n.index!==0&&s.ignoreMatch()}},e)},_e={begin:"\\\\[\\s\\S]",relevance:0},xs={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[_e]},ys={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[_e]},ws={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},De=function(e,t,n={}){const s=ue({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const r=rt("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return s.contains.push({begin:ge(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s},Es=De("//","$"),_s=De("/\\*","\\*/"),Ss=De("#","$"),Ns={scope:"number",begin:Wt,relevance:0},Ts={scope:"number",begin:Xt,relevance:0},As={scope:"number",begin:Qt,relevance:0},Rs={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[_e,{begin:/\[/,end:/\]/,relevance:0,contains:[_e]}]},Cs={scope:"title",begin:Zt,relevance:0},vs={scope:"title",begin:it,relevance:0},Ms={begin:"\\.\\s*"+it,relevance:0};var ze=Object.freeze({__proto__:null,APOS_STRING_MODE:xs,BACKSLASH_ESCAPE:_e,BINARY_NUMBER_MODE:As,BINARY_NUMBER_RE:Qt,COMMENT:De,C_BLOCK_COMMENT_MODE:_s,C_LINE_COMMENT_MODE:Es,C_NUMBER_MODE:Ts,C_NUMBER_RE:Xt,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},HASH_COMMENT_MODE:Ss,IDENT_RE:Zt,MATCH_NOTHING_RE:ms,METHOD_GUARD:Ms,NUMBER_MODE:Ns,NUMBER_RE:Wt,PHRASAL_WORDS_MODE:ws,QUOTE_STRING_MODE:ys,REGEXP_MODE:Rs,RE_STARTERS_RE:bs,SHEBANG:ks,TITLE_MODE:Cs,UNDERSCORE_IDENT_RE:it,UNDERSCORE_TITLE_MODE:vs});function Bs(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function $s(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Os(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Bs,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Is(e,t){Array.isArray(e.illegal)&&(e.illegal=rt(...e.illegal))}function Ls(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Ds(e,t){e.relevance===void 0&&(e.relevance=1)}const zs=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(s=>{delete e[s]}),e.keywords=n.keywords,e.begin=ge(n.beforeMatch,Gt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Ps=["of","and","for","in","not","or","if","then","parent","list","value"],Hs="keyword";function Jt(e,t,n=Hs){const s=Object.create(null);return typeof e=="string"?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach(function(l){Object.assign(s,Jt(e[l],t,l))}),s;function r(l,o){t&&(o=o.map(i=>i.toLowerCase())),o.forEach(function(i){const c=i.split("|");s[c[0]]=[l,Vs(c[0],c[1])]})}}function Vs(e,t){return t?Number(t):Us(e)?0:1}function Us(e){return Ps.includes(e.toLowerCase())}const Yt={},pe=e=>{console.error(e)},en=(e,...t)=>{console.log(`WARN: ${e}`,...t)},me=(e,t)=>{Yt[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),Yt[`${e}/${t}`]=!0)},Pe=new Error;function tn(e,t,{key:n}){let s=0;const r=e[n],l={},o={};for(let i=1;i<=t.length;i++)o[i+s]=r[i],l[i+s]=!0,s+=qt(t[i-1]);e[n]=o,e[n]._emit=l,e[n]._multi=!0}function Ks(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw pe("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Pe;if(typeof e.beginScope!="object"||e.beginScope===null)throw pe("beginScope must be object"),Pe;tn(e,e.begin,{key:"beginScope"}),e.begin=at(e.begin,{joinWith:""})}}function js(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw pe("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Pe;if(typeof e.endScope!="object"||e.endScope===null)throw pe("endScope must be object"),Pe;tn(e,e.end,{key:"endScope"}),e.end=at(e.end,{joinWith:""})}}function Fs(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Gs(e){Fs(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Ks(e),js(e)}function qs(e){function t(o,i){return new RegExp(Ee(o),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(i?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,c){c.position=this.position++,this.matchIndexes[this.matchAt]=c,this.regexes.push([c,i]),this.matchAt+=qt(i)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const i=this.regexes.map(c=>c[1]);this.matcherRe=t(at(i,{joinWith:"|"}),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;const c=this.matcherRe.exec(i);if(!c)return null;const d=c.findIndex((g,h)=>h>0&&g!==void 0),u=this.matchIndexes[d];return c.splice(0,d),Object.assign(c,u)}}class s{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return this.multiRegexes[i];const c=new n;return this.rules.slice(i).forEach(([d,u])=>c.addRule(d,u)),c.compile(),this.multiRegexes[i]=c,c}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(i,c){this.rules.push([i,c]),c.type==="begin"&&this.count++}exec(i){const c=this.getMatcher(this.regexIndex);c.lastIndex=this.lastIndex;let d=c.exec(i);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const u=this.getMatcher(0);u.lastIndex=this.lastIndex+1,d=u.exec(i)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function r(o){const i=new s;return o.contains.forEach(c=>i.addRule(c.begin,{rule:c,type:"begin"})),o.terminatorEnd&&i.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&i.addRule(o.illegal,{type:"illegal"}),i}function l(o,i){const c=o;if(o.isCompiled)return c;[$s,Ls,Gs,zs].forEach(u=>u(o,i)),e.compilerExtensions.forEach(u=>u(o,i)),o.__beforeBegin=null,[Os,Is,Ds].forEach(u=>u(o,i)),o.isCompiled=!0;let d=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),d=o.keywords.$pattern,delete o.keywords.$pattern),d=d||/\w+/,o.keywords&&(o.keywords=Jt(o.keywords,e.case_insensitive)),c.keywordPatternRe=t(d,!0),i&&(o.begin||(o.begin=/\B|\b/),c.beginRe=t(c.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(c.endRe=t(c.end)),c.terminatorEnd=Ee(c.end)||"",o.endsWithParent&&i.terminatorEnd&&(c.terminatorEnd+=(o.end?"|":"")+i.terminatorEnd)),o.illegal&&(c.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(u){return Zs(u==="self"?o:u)})),o.contains.forEach(function(u){l(u,c)}),o.starts&&l(o.starts,i),c.matcher=r(c),c}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ue(e.classNameAliases||{}),l(e)}function nn(e){return e?e.endsWithParent||nn(e.starts):!1}function Zs(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return ue(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:nn(e)?ue(e,{starts:e.starts?ue(e.starts):null}):Object.isFrozen(e)?ue(e):e}var Ws="11.11.1";class Xs extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ot=Kt,sn=ue,rn=Symbol("nomatch"),Qs=7,an=function(e){const t=Object.create(null),n=Object.create(null),s=[];let r=!0;const l="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let i={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:us};function c(p){return i.noHighlightRe.test(p)}function d(p){let k=p.className+" ";k+=p.parentNode?p.parentNode.className:"";const y=i.languageDetectRe.exec(k);if(y){const T=_(y[1]);return T||(en(l.replace("{}",y[1])),en("Falling back to no-highlight mode for this block.",p)),T?y[1]:"no-highlight"}return k.split(/\s+/).find(T=>c(T)||_(T))}function u(p,k,y){let T="",z="";typeof k=="object"?(T=p,y=k.ignoreIllegals,z=k.language):(me("10.7.0","highlight(lang, code, ...args) has been deprecated."),me("10.7.0",`Please use highlight(code, options) instead.
https://github.com/highlightjs/highlight.js/issues/2277`),z=p,T=k),y===void 0&&(y=!0);const F={code:T,language:z};q("before:highlight",F);const Y=F.result?F.result:g(F.language,F.code,y);return Y.code=F.code,q("after:highlight",Y),Y}function g(p,k,y,T){const z=Object.create(null);function F(m,x){return m.keywords[x]}function Y(){if(!S.keywords){Z.addText(H);return}let m=0;S.keywordPatternRe.lastIndex=0;let x=S.keywordPatternRe.exec(H),R="";for(;x;){R+=H.substring(m,x.index);const I=re.case_insensitive?x[0].toLowerCase():x[0],X=F(S,I);if(X){const[le,$a]=X;if(Z.addText(R),R="",z[I]=(z[I]||0)+1,z[I]<=Qs&&(Ge+=$a),le.startsWith("_"))R+=x[0];else{const Oa=re.classNameAliases[le]||le;D(x[0],Oa)}}else R+=x[0];m=S.keywordPatternRe.lastIndex,x=S.keywordPatternRe.exec(H)}R+=H.substring(m),Z.addText(R)}function se(){if(H==="")return;let m=null;if(typeof S.subLanguage=="string"){if(!t[S.subLanguage]){Z.addText(H);return}m=g(S.subLanguage,H,!0,kn[S.subLanguage]),kn[S.subLanguage]=m._top}else m=E(H,S.subLanguage.length?S.subLanguage:null);S.relevance>0&&(Ge+=m.relevance),Z.__addSublanguage(m._emitter,m.language)}function K(){S.subLanguage!=null?se():Y(),H=""}function D(m,x){m!==""&&(Z.startScope(x),Z.addText(m),Z.endScope())}function Ce(m,x){let R=1;const I=x.length-1;for(;R<=I;){if(!m._emit[R]){R++;continue}const X=re.classNameAliases[m[R]]||m[R],le=x[R];X?D(le,X):(H=le,Y(),H=""),R++}}function fn(m,x){return m.scope&&typeof m.scope=="string"&&Z.openNode(re.classNameAliases[m.scope]||m.scope),m.beginScope&&(m.beginScope._wrap?(D(H,re.classNameAliases[m.beginScope._wrap]||m.beginScope._wrap),H=""):m.beginScope._multi&&(Ce(m.beginScope,x),H="")),S=Object.create(m,{parent:{value:S}}),S}function mn(m,x,R){let I=ps(m.endRe,R);if(I){if(m["on:end"]){const X=new Ut(m);m["on:end"](x,X),X.isMatchIgnored&&(I=!1)}if(I){for(;m.endsParent&&m.parent;)m=m.parent;return m}}if(m.endsWithParent)return mn(m.parent,x,R)}function Ra(m){return S.matcher.regexIndex===0?(H+=m[0],1):(ht=!0,0)}function Ca(m){const x=m[0],R=m.rule,I=new Ut(R),X=[R.__beforeBegin,R["on:begin"]];for(const le of X)if(le&&(le(m,I),I.isMatchIgnored))return Ra(x);return R.skip?H+=x:(R.excludeBegin&&(H+=x),K(),!R.returnBegin&&!R.excludeBegin&&(H=x)),fn(R,m),R.returnBegin?0:x.length}function va(m){const x=m[0],R=k.substring(m.index),I=mn(S,m,R);if(!I)return rn;const X=S;S.endScope&&S.endScope._wrap?(K(),D(x,S.endScope._wrap)):S.endScope&&S.endScope._multi?(K(),Ce(S.endScope,m)):X.skip?H+=x:(X.returnEnd||X.excludeEnd||(H+=x),K(),X.excludeEnd&&(H=x));do S.scope&&Z.closeNode(),!S.skip&&!S.subLanguage&&(Ge+=S.relevance),S=S.parent;while(S!==I.parent);return I.starts&&fn(I.starts,m),X.returnEnd?0:x.length}function Ma(){const m=[];for(let x=S;x!==re;x=x.parent)x.scope&&m.unshift(x.scope);m.forEach(x=>Z.openNode(x))}let Fe={};function bn(m,x){const R=x&&x[0];if(H+=m,R==null)return K(),0;if(Fe.type==="begin"&&x.type==="end"&&Fe.index===x.index&&R===""){if(H+=k.slice(x.index,x.index+1),!r){const I=new Error(`0 width match regex (${p})`);throw I.languageName=p,I.badRule=Fe.rule,I}return 1}if(Fe=x,x.type==="begin")return Ca(x);if(x.type==="illegal"&&!y){const I=new Error('Illegal lexeme "'+R+'" for mode "'+(S.scope||"<unnamed>")+'"');throw I.mode=S,I}else if(x.type==="end"){const I=va(x);if(I!==rn)return I}if(x.type==="illegal"&&R==="")return H+=`
`,1;if(dt>1e5&&dt>x.index*3)throw new Error("potential infinite loop, way more iterations than matches");return H+=R,R.length}const re=_(p);if(!re)throw pe(l.replace("{}",p)),new Error('Unknown language: "'+p+'"');const Ba=qs(re);let ut="",S=T||Ba;const kn={},Z=new i.__emitter(i);Ma();let H="",Ge=0,fe=0,dt=0,ht=!1;try{if(re.__emitTokens)re.__emitTokens(k,Z);else{for(S.matcher.considerAll();;){dt++,ht?ht=!1:S.matcher.considerAll(),S.matcher.lastIndex=fe;const m=S.matcher.exec(k);if(!m)break;const x=k.substring(fe,m.index),R=bn(x,m);fe=m.index+R}bn(k.substring(fe))}return Z.finalize(),ut=Z.toHTML(),{language:p,value:ut,relevance:Ge,illegal:!1,_emitter:Z,_top:S}}catch(m){if(m.message&&m.message.includes("Illegal"))return{language:p,value:ot(k),illegal:!0,relevance:0,_illegalBy:{message:m.message,index:fe,context:k.slice(fe-100,fe+100),mode:m.mode,resultSoFar:ut},_emitter:Z};if(r)return{language:p,value:ot(k),illegal:!1,relevance:0,errorRaised:m,_emitter:Z,_top:S};throw m}}function h(p){const k={value:ot(p),illegal:!1,relevance:0,_top:o,_emitter:new i.__emitter(i)};return k._emitter.addText(p),k}function E(p,k){k=k||i.languages||Object.keys(t);const y=h(p),T=k.filter(_).filter(A).map(K=>g(K,p,!1));T.unshift(y);const z=T.sort((K,D)=>{if(K.relevance!==D.relevance)return D.relevance-K.relevance;if(K.language&&D.language){if(_(K.language).supersetOf===D.language)return 1;if(_(D.language).supersetOf===K.language)return-1}return 0}),[F,Y]=z,se=F;return se.secondBest=Y,se}function f(p,k,y){const T=k&&n[k]||y;p.classList.add("hljs"),p.classList.add(`language-${T}`)}function b(p){let k=null;const y=d(p);if(c(y))return;if(q("before:highlightElement",{el:p,language:y}),p.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",p);return}if(p.children.length>0&&(i.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(p)),i.throwUnescapedHTML))throw new Xs("One of your code blocks includes unescaped HTML.",p.innerHTML);k=p;const T=k.textContent,z=y?u(T,{language:y,ignoreIllegals:!0}):E(T);p.innerHTML=z.value,p.dataset.highlighted="yes",f(p,y,z.language),p.result={language:z.language,re:z.relevance,relevance:z.relevance},z.secondBest&&(p.secondBest={language:z.secondBest.language,relevance:z.secondBest.relevance}),q("after:highlightElement",{el:p,result:z,text:T})}function v(p){i=sn(i,p)}const $=()=>{L(),me("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function V(){L(),me("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let j=!1;function L(){function p(){L()}if(document.readyState==="loading"){j||window.addEventListener("DOMContentLoaded",p,!1),j=!0;return}document.querySelectorAll(i.cssSelector).forEach(b)}function J(p,k){let y=null;try{y=k(e)}catch(T){if(pe("Language definition for '{}' could not be registered.".replace("{}",p)),r)pe(T);else throw T;y=o}y.name||(y.name=p),t[p]=y,y.rawDefinition=k.bind(null,e),y.aliases&&N(y.aliases,{languageName:p})}function O(p){delete t[p];for(const k of Object.keys(n))n[k]===p&&delete n[k]}function w(){return Object.keys(t)}function _(p){return p=(p||"").toLowerCase(),t[p]||t[n[p]]}function N(p,{languageName:k}){typeof p=="string"&&(p=[p]),p.forEach(y=>{n[y.toLowerCase()]=k})}function A(p){const k=_(p);return k&&!k.disableAutodetect}function W(p){p["before:highlightBlock"]&&!p["before:highlightElement"]&&(p["before:highlightElement"]=k=>{p["before:highlightBlock"](Object.assign({block:k.el},k))}),p["after:highlightBlock"]&&!p["after:highlightElement"]&&(p["after:highlightElement"]=k=>{p["after:highlightBlock"](Object.assign({block:k.el},k))})}function G(p){W(p),s.push(p)}function U(p){const k=s.indexOf(p);k!==-1&&s.splice(k,1)}function q(p,k){const y=p;s.forEach(function(T){T[y]&&T[y](k)})}function je(p){return me("10.7.0","highlightBlock will be removed entirely in v12.0"),me("10.7.0","Please use highlightElement now."),b(p)}Object.assign(e,{highlight:u,highlightAuto:E,highlightAll:L,highlightElement:b,highlightBlock:je,configure:v,initHighlighting:$,initHighlightingOnLoad:V,registerLanguage:J,unregisterLanguage:O,listLanguages:w,getLanguage:_,registerAliases:N,autoDetection:A,inherit:sn,addPlugin:G,removePlugin:U}),e.debugMode=function(){r=!1},e.safeMode=function(){r=!0},e.versionString=Ws,e.regex={concat:ge,lookahead:Gt,either:rt,optional:hs,anyNumberOfTimes:ds};for(const p in ze)typeof ze[p]=="object"&&Vt(ze[p]);return Object.assign(e,ze),e},be=an({});be.newInstance=()=>an({});var Js=be;be.HighlightJS=be,be.default=be;const oe=is(Js),on="[A-Za-z$_][0-9A-Za-z$_]*",Ys=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],er=["true","false","null","undefined","NaN","Infinity"],ln=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],cn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],un=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],tr=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],nr=[].concat(un,ln,cn);function dn(e){const t=e.regex,n=(y,{after:T})=>{const z="</"+y[0].slice(1);return y.input.indexOf(z,T)!==-1},s=on,r={begin:"<>",end:"</>"},l=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(y,T)=>{const z=y[0].length+y.index,F=y.input[z];if(F==="<"||F===","){T.ignoreMatch();return}F===">"&&(n(y,{after:z})||T.ignoreMatch());let Y;const se=y.input.substring(z);if(Y=se.match(/^\s*=/)){T.ignoreMatch();return}if((Y=se.match(/^\s+extends\s+/))&&Y.index===0){T.ignoreMatch();return}}},i={$pattern:on,keyword:Ys,literal:er,built_in:nr,"variable.language":tr},c="[0-9](_?[0-9])*",d=`\\.(${c})`,u="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",g={className:"number",variants:[{begin:`(\\b(${u})((${d})|\\.)?|(${d}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},h={className:"subst",begin:"\\$\\{",end:"\\}",keywords:i,contains:[]},E={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"xml"}},f={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"css"}},b={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,h],subLanguage:"graphql"}},v={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,h]},V={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:s+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},j=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,E,f,b,v,{match:/\$\d+/},g];h.contains=j.concat({begin:/\{/,end:/\}/,keywords:i,contains:["self"].concat(j)});const L=[].concat(V,h.contains),J=L.concat([{begin:/(\s*)\(/,end:/\)/,keywords:i,contains:["self"].concat(L)}]),O={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:J},w={variants:[{match:[/class/,/\s+/,s,/\s+/,/extends/,/\s+/,t.concat(s,"(",t.concat(/\./,s),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,s],scope:{1:"keyword",3:"title.class"}}]},_={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...ln,...cn]}},N={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},A={variants:[{match:[/function/,/\s+/,s,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[O],illegal:/%/},W={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function G(y){return t.concat("(?!",y.join("|"),")")}const U={match:t.concat(/\b/,G([...un,"super","import"].map(y=>`${y}\\s*\\(`)),s,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},q={begin:t.concat(/\./,t.lookahead(t.concat(s,/(?![0-9A-Za-z$_(])/))),end:s,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},je={match:[/get|set/,/\s+/,s,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},O]},p="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",k={match:[/const|var|let/,/\s+/,s,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(p)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[O]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{PARAMS_CONTAINS:J,CLASS_REFERENCE:_},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),N,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,E,f,b,v,V,{match:/\$\d+/},g,_,{scope:"attr",match:s+t.lookahead(":"),relevance:0},k,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[V,e.REGEXP_MODE,{className:"function",begin:p,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:J}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:l},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,contains:["self"]}]}]},A,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[O,e.inherit(e.TITLE_MODE,{begin:s,className:"title.function"})]},{match:/\.\.\./,relevance:0},q,{match:"\\$"+s,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[O]},U,W,w,je,{match:/\$[(.]/}]}}function hn(e){const t=e.regex,n=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),s=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:s,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},d={className:"subst",begin:/\{/,end:/\}/,keywords:i,illegal:/#/},u={begin:/\{\{/,relevance:0},g={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,c,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,c,u,d]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,u,d]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,u,d]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},h="[0-9](_?[0-9])*",E=`(\\b(${h}))?\\.(${h})|\\b(${h})\\.`,f=`\\b|${s.join("|")}`,b={className:"number",relevance:0,variants:[{begin:`(\\b(${h})|(${E}))[eE][+-]?(${h})[jJ]?(?=${f})`},{begin:`(${E})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${f})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${f})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${f})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${f})`},{begin:`\\b(${h})[jJ](?=${f})`}]},v={className:"comment",begin:t.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},$={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",c,b,g,e.HASH_COMMENT_MODE]}]};return d.contains=[g,b,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[c,b,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},g,v,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[$]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[b,$,g]}]}}function sr(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},s=["true","false","null"],r={scope:"literal",beginKeywords:s.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:s},contains:[t,n,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function gn(e){const t=e.regex,n={},s={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},s]});const r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},l=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},i={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,r]};r.contains.push(i);const c={match:/\\"/},d={className:"string",begin:/'/,end:/'/},u={match:/\\'/},g={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,n]},h=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],E=e.SHEBANG({binary:`(${h.join("|")})`,relevance:10}),f={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},b=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],v=["true","false"],$={match:/(\/[a-z._-]+)+/},V=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],j=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],L=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],J=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:b,literal:v,built_in:[...V,...j,"set","shopt",...L,...J]},contains:[E,e.SHEBANG(),f,g,l,o,$,i,c,d,u,n]}}oe.registerLanguage("javascript",dn),oe.registerLanguage("js",dn),oe.registerLanguage("python",hn),oe.registerLanguage("py",hn),oe.registerLanguage("json",sr),oe.registerLanguage("bash",gn),oe.registerLanguage("shell",gn),B.setOptions({gfm:!0,breaks:!0,highlight:function(e,t){if(t&&oe.getLanguage(t))try{return oe.highlight(e,{language:t}).value}catch(n){console.warn("代码高亮失败:",n)}return e}});function rr(e){return e.replace(/<a href="([^"]*)"([^>]*)>/g,'<a href="$1" class="text-blue-600 hover:text-blue-800 underline" target="_blank" rel="noopener noreferrer"$2>').replace(/<table>/g,'<div class="overflow-x-auto my-4"><table class="min-w-full border-collapse border border-gray-300 rounded-lg">').replace(/<\/table>/g,"</table></div>").replace(/<thead>/g,'<thead class="bg-gray-50">').replace(/<th>/g,'<th class="px-4 py-2 text-left font-semibold border-b">').replace(/<td>/g,'<td class="px-4 py-2 border-b">').replace(/<pre><code([^>]*)>/g,'<pre class="bg-gray-100 rounded-lg p-4 overflow-x-auto my-4"><code$1>').replace(/<code>/g,'<code class="bg-gray-100 px-1 py-0.5 rounded text-sm font-mono">').replace(/<blockquote>/g,'<blockquote class="border-l-4 border-blue-500 pl-4 py-2 my-4 bg-blue-50 italic">').replace(/<p>/g,'<p class="mb-4 leading-relaxed">')}function ar(e){if(!e)return"";try{const t=String(e||""),n=B.parse(t);return rr(n)}catch(t){return console.error("Markdown解析失败:",t),`<p class="text-red-500">解析失败</p><pre class="bg-gray-100 p-4 rounded">${String(e||"")}</pre>`}}const Se=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},ir={class:"stream-markdown prose prose-sm max-w-none dark:prose-invert"},or=["innerHTML"],lr={key:0,class:"streaming-cursor"},Ne=Se({__name:"StreamMarkdown",props:{content:{type:String,default:""},streaming:{type:Boolean,default:!1}},setup(e){const t=e,n=a.computed(()=>{if(!t.content)return"";try{const r=String(t.content||"");return ar(r)}catch(r){return console.warn("Markdown渲染失败:",r),`<p class="text-red-500">渲染失败: ${r.message||r.toString()}</p>`}}),s=a.computed(()=>t.streaming);return a.watch(n,async()=>{await a.nextTick()}),a.onMounted(async()=>{await a.nextTick()}),(r,l)=>(a.openBlock(),a.createElementBlock("div",ir,[a.createElementVNode("div",{innerHTML:n.value},null,8,or),s.value?(a.openBlock(),a.createElementBlock("span",lr,"|")):a.createCommentVNode("",!0)]))}},[["__scopeId","data-v-54a0e455"]]),cr={key:0,class:"tool-calls-display mb-3"},ur={class:"bg-blue-50/80 backdrop-blur-sm rounded-xl p-3 border border-blue-200/50 shadow-sm animate-fade-in"},dr={class:"flex items-center mb-2"},hr={class:"ml-2 text-xs text-blue-600 bg-blue-100 px-2 py-0.5 rounded-lg"},gr={class:"space-y-2"},pr={class:"flex items-center justify-between"},fr={class:"flex items-center space-x-3"},mr={class:"relative"},br={class:"text-sm font-medium text-gray-900"},kr={class:"text-xs text-gray-500"},xr=["title","onClick"],yr={key:0,class:"mt-3 pt-3 border-t border-gray-200/50 dark:border-gray-700/50 animate-fade-in"},wr={key:0,class:"mb-3"},Er={class:"bg-gray-50 dark:bg-gray-900/50 border border-gray-200/50 dark:border-gray-700/50",style:{"border-radius":"8px",padding:"8px"}},_r={class:"text-xs text-gray-700 dark:text-gray-300 whitespace-pre-wrap overflow-x-auto"},Sr={key:1,class:"mb-3"},Te=Se({__name:"ToolCallsDisplay",props:{toolCalls:{type:Array,default:()=>[]}},setup(e){const t=e,n=a.computed(()=>t.toolCalls&&t.toolCalls.length>0),s=a.ref(new Set);function r(d){s.value.has(d)?s.value.delete(d):s.value.add(d)}function l(d){var u;return d.name||((u=d.function)==null?void 0:u.name)||"未知工具"}function o(d){return{running:"bg-blue-500",completed:"bg-green-500",error:"bg-red-500"}[d]||"bg-gray-400"}function i(d){switch(d){case"running":return"执行中...";case"completed":return"已完成";case"error":return"执行失败";default:return"等待中"}}function c(d){var g;const u=d.arguments||((g=d.function)==null?void 0:g.arguments);if(!u)return"无参数";try{const h=typeof u=="string"?JSON.parse(u):u;return JSON.stringify(h,null,2)}catch{return String(u)}}return(d,u)=>n.value?(a.openBlock(),a.createElementBlock("div",cr,[a.createElementVNode("div",ur,[a.createElementVNode("div",dr,[u[0]||(u[0]=a.createStaticVNode('<div class="w-6 h-6 rounded-full bg-blue-500 flex items-center justify-center mr-3" data-v-b2177ba1><svg class="w-3.5 h-3.5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-b2177ba1><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" data-v-b2177ba1></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" data-v-b2177ba1></path></svg></div><span class="text-sm font-medium text-blue-800" data-v-b2177ba1>工具调用</span>',2)),a.createElementVNode("span",hr,a.toDisplayString(e.toolCalls.length),1)]),a.createElementVNode("div",gr,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(e.toolCalls,(g,h)=>(a.openBlock(),a.createElementBlock("div",{key:g.id||h,class:"tool-call-item bg-white/70 backdrop-blur-sm rounded-lg p-2.5 border border-gray-200/50 transition-all duration-200 hover:shadow-sm animate-slide-in"},[a.createElementVNode("div",pr,[a.createElementVNode("div",fr,[a.createElementVNode("div",mr,[a.createElementVNode("div",{class:a.normalizeClass(["w-3 h-3 rounded-full transition-colors duration-200",o(g.status)])},null,2)]),a.createElementVNode("div",null,[a.createElementVNode("div",br,a.toDisplayString(l(g)),1),a.createElementVNode("div",kr,a.toDisplayString(i(g.status)),1)])]),a.createElementVNode("button",{class:"p-1.5 rounded-lg hover:bg-gray-100 transition-colors",title:s.value.has(h)?"收起详情":"查看详情",onClick:E=>r(h)},[(a.openBlock(),a.createElementBlock("svg",{class:a.normalizeClass(["w-4 h-4 text-gray-400 transition-transform duration-200",{"rotate-180":s.value.has(h)}]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},u[1]||(u[1]=[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)]),2))],8,xr)]),s.value.has(h)?(a.openBlock(),a.createElementBlock("div",yr,[g.arguments?(a.openBlock(),a.createElementBlock("div",wr,[u[2]||(u[2]=a.createElementVNode("div",{class:"text-xs font-medium text-gray-600 dark:text-gray-400 mb-2"},"参数:",-1)),a.createElementVNode("div",Er,[a.createElementVNode("pre",_r,a.toDisplayString(c(g)),1)])])):a.createCommentVNode("",!0),g.result?(a.openBlock(),a.createElementBlock("div",Sr,[u[3]||(u[3]=a.createElementVNode("div",{class:"text-xs font-medium text-gray-600 dark:text-gray-400 mb-2"},"结果:",-1)),a.createElementVNode("div",{class:a.normalizeClass(["rounded-lg p-3 border",g.status==="error"?"bg-red-50 dark:bg-red-900/20 border-red-200/50 dark:border-red-800/50":"bg-green-50 dark:bg-green-900/20 border-green-200/50 dark:border-green-800/50"])},[a.createElementVNode("pre",{class:a.normalizeClass(["text-xs whitespace-pre-wrap overflow-x-auto",g.status==="error"?"text-red-700 dark:text-red-300":"text-green-700 dark:text-green-300"])},a.toDisplayString(g.result),3)],2)])):a.createCommentVNode("",!0)])):a.createCommentVNode("",!0)]))),128))])])])):a.createCommentVNode("",!0)}},[["__scopeId","data-v-b2177ba1"]]),Nr={key:0,class:"empty-state flex justify-center items-center h-full min-h-[300px]"},Tr={key:0,class:"flex justify-center my-2 sm:my-4"},Ar={class:"bg-black/5 text-gray-500 text-xs px-2 py-1 sm:px-3 rounded-lg backdrop-blur-sm"},Rr={key:1,class:"flex items-start gap-2 sm:gap-3 animate-fade-in"},Cr={class:"flex-shrink-0"},vr={key:0,class:"w-7 h-7 sm:w-10 sm:h-10 rounded-full shadow-sm overflow-hidden"},Mr=["src"],Br={key:1,class:"w-7 h-7 sm:w-10 sm:h-10 rounded-full bg-gradient-to-br from-gray-100 via-gray-200 to-gray-300 flex items-center justify-center shadow-sm relative"},$r={class:"group max-w-[85%] sm:max-w-sm lg:max-w-md min-w-0"},Or={key:1,class:"relative"},Ir={key:2,class:"relative"},Lr={class:"bg-gray-100/90 rounded-xl px-3 py-2 sm:px-4 sm:py-3 shadow-md border border-gray-200/30 backdrop-blur-xl transition-all duration-200"},Dr={key:0,class:"flex items-center mt-2 sm:mt-3 pt-2 sm:pt-3 border-t border-gray-200/40"},zr={class:"flex items-center mt-1 ml-2 sm:ml-3 opacity-60 sm:opacity-0 sm:group-hover:opacity-100 transition-all duration-300"},Pr={class:"text-xs text-gray-500"},Hr={key:2,class:"flex justify-end"},Vr={class:"group max-w-[85%] sm:max-w-sm lg:max-w-md"},Ur={class:"relative"},Kr={class:"bg-gradient-to-br from-blue-500 to-blue-600 text-white rounded-xl px-3 py-2 sm:px-4 sm:py-3 shadow-lg transition-all duration-200 backdrop-blur-sm"},jr={class:"text-sm sm:text-base whitespace-pre-wrap leading-5 sm:leading-relaxed"},Fr={class:"flex items-center justify-end mt-1 mr-1 opacity-60 sm:opacity-0 sm:group-hover:opacity-100 transition-all duration-300"},Gr={class:"text-xs text-gray-500 mr-1 sm:mr-2"},qr={key:3,class:"flex justify-center my-4"},Zr={class:"bg-yellow-50 text-yellow-800 rounded-full px-4 py-2 text-sm shadow-sm"},Wr={key:1,class:"flex items-start gap-2 sm:gap-3 animate-fade-in"},Ae=Se({__name:"MessageList",props:{messages:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},streaming:{type:Boolean,default:!1},showToolCalls:{type:Boolean,default:!0},agentAvatar:{type:String,default:null}},setup(e){const t=e,n=a.ref(null);function s(d){const u=new Date(d),h=new Date-u;return h<24*60*60*1e3?u.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):h<48*60*60*1e3?"昨天":h<7*24*60*60*1e3?u.toLocaleDateString("zh-CN",{weekday:"short"}):u.toLocaleDateString("zh-CN",{month:"numeric",day:"numeric"})}function r(d){return t.messages.length>0&&t.messages[t.messages.length-1].id===d.id}function l(d){return d.tool_calls&&d.tool_calls.length>0}function o(d,u){if(u===0)return!0;const g=t.messages[u-1],h=new Date(d.timestamp),E=new Date(g.timestamp);return h-E>5*60*1e3}function i(d){const u=new Date(d),h=new Date-u;return h<24*60*60*1e3?u.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):h<48*60*60*1e3?"昨天 "+u.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):u.toLocaleDateString("zh-CN",{month:"short",day:"numeric"})}function c(){a.nextTick(()=>{var g;const u=document.querySelector(".chat-messages")||((g=n.value)==null?void 0:g.parentElement);u&&setTimeout(()=>{u.scrollTo({top:u.scrollHeight+50,behavior:"smooth"})},10)})}return a.watch(()=>{var u,g;return{messageCount:t.messages.length,loading:t.loading,streaming:t.streaming,lastMessageState:t.messages.length>0?{content:t.messages[t.messages.length-1].content,toolCallsCount:((u=t.messages[t.messages.length-1].tool_calls)==null?void 0:u.length)||0,toolCallsStatus:((g=t.messages[t.messages.length-1].tool_calls)==null?void 0:g.map(h=>h.status).join(","))||""}:null}},()=>{c()},{deep:!0}),a.onMounted(()=>{c()}),(d,u)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"messageListRef",ref:n,class:"message-list space-y-2 sm:space-y-4 pb-2 sm:pb-4"},[e.messages.length===0?(a.openBlock(),a.createElementBlock("div",Nr,u[0]||(u[0]=[a.createStaticVNode('<div class="text-center animate-fade-in" data-v-b4c603a8><div class="w-20 h-20 mx-auto mb-6 bg-gradient-to-br from-gray-100 via-gray-200 to-gray-300 rounded-full flex items-center justify-center shadow-xl ring-8 ring-gray-100/50" data-v-b4c603a8><svg class="w-10 h-10 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-b4c603a8><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" data-v-b4c603a8></path></svg></div><h3 class="text-2xl font-bold text-gray-900 mb-3" data-v-b4c603a8>开始对话</h3><p class="text-gray-600 text-lg" data-v-b4c603a8>发送消息开始与AI助手对话</p></div>',1)]))):a.createCommentVNode("",!0),(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(e.messages,(g,h)=>{var E,f,b;return a.openBlock(),a.createElementBlock(a.Fragment,{key:g.id},[o(g,h)?(a.openBlock(),a.createElementBlock("div",Tr,[a.createElementVNode("span",Ar,a.toDisplayString(i(g.timestamp)),1)])):a.createCommentVNode("",!0),g.role==="assistant"?(a.openBlock(),a.createElementBlock("div",Rr,[a.createElementVNode("div",Cr,[e.agentAvatar?(a.openBlock(),a.createElementBlock("div",vr,[a.createElementVNode("img",{src:e.agentAvatar,alt:"AI助手",class:"w-full h-full object-cover"},null,8,Mr)])):(a.openBlock(),a.createElementBlock("div",Br,u[1]||(u[1]=[a.createElementVNode("div",{class:"absolute inset-0 rounded-full bg-gradient-to-br from-white/20 to-transparent"},null,-1),a.createElementVNode("svg",{class:"w-3.5 h-3.5 sm:w-5 sm:h-5 text-gray-600 relative z-10",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})],-1)])))]),a.createElementVNode("div",$r,[e.showToolCalls&&l(g)?(a.openBlock(),a.createBlock(Te,{key:0,"tool-calls":g.tool_calls,class:"mb-2"},null,8,["tool-calls"])):a.createCommentVNode("",!0),!((E=g.content)!=null&&E.trim())&&!l(g)&&g.streaming?(a.openBlock(),a.createElementBlock("div",Or,u[2]||(u[2]=[a.createStaticVNode('<div class="bg-gray-100/90 rounded-lg px-6 py-4 shadow-lg border border-gray-200/30 backdrop-blur-xl transition-all duration-300 hover:shadow-xl" data-v-b4c603a8><div class="flex items-center space-x-4" data-v-b4c603a8><div class="flex space-x-1.5" data-v-b4c603a8><div class="w-3 h-3 bg-blue-500 rounded-full animate-bounce shadow-sm" style="animation-delay:0ms;" data-v-b4c603a8></div><div class="w-3 h-3 bg-blue-500 rounded-full animate-bounce shadow-sm" style="animation-delay:150ms;" data-v-b4c603a8></div><div class="w-3 h-3 bg-blue-500 rounded-full animate-bounce shadow-sm" style="animation-delay:300ms;" data-v-b4c603a8></div></div><span class="text-base text-gray-700 font-medium" data-v-b4c603a8>AI正在思考</span></div></div>',1)]))):a.createCommentVNode("",!0),(f=g.content)!=null&&f.trim()?(a.openBlock(),a.createElementBlock("div",Ir,[a.createElementVNode("div",Lr,[a.createVNode(Ne,{content:g.content,streaming:e.streaming&&r(g),class:"text-sm sm:text-base text-gray-900 leading-5 sm:leading-relaxed"},null,8,["content","streaming"]),e.streaming&&r(g)&&((b=g.content)!=null&&b.trim())?(a.openBlock(),a.createElementBlock("div",Dr,u[3]||(u[3]=[a.createStaticVNode('<div class="flex space-x-1" data-v-b4c603a8><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-500 rounded-full" data-v-b4c603a8></div><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-400 rounded-full" data-v-b4c603a8></div><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-300 rounded-full" data-v-b4c603a8></div></div><span class="text-xs sm:text-sm text-blue-600 ml-2 sm:ml-3 font-medium" data-v-b4c603a8>正在输入...</span>',2)]))):a.createCommentVNode("",!0)])])):a.createCommentVNode("",!0),a.createElementVNode("div",zr,[a.createElementVNode("span",Pr,a.toDisplayString(s(g.timestamp)),1)])])])):g.role==="user"?(a.openBlock(),a.createElementBlock("div",Hr,[a.createElementVNode("div",Vr,[a.createElementVNode("div",Ur,[a.createElementVNode("div",Kr,[a.createElementVNode("p",jr,a.toDisplayString(g.content),1)])]),a.createElementVNode("div",Fr,[a.createElementVNode("span",Gr,a.toDisplayString(s(g.timestamp)),1),u[4]||(u[4]=a.createElementVNode("div",{class:"flex items-center"},[a.createElementVNode("svg",{class:"w-3 h-3 sm:w-3.5 sm:h-3.5 text-white/80",fill:"currentColor",viewBox:"0 0 20 20"},[a.createElementVNode("path",{"fill-rule":"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z","clip-rule":"evenodd"})]),a.createElementVNode("span",{class:"hidden sm:inline text-xs text-white/80 ml-1"},"已送达")],-1))])])])):g.role==="system"?(a.openBlock(),a.createElementBlock("div",qr,[a.createElementVNode("div",Zr,a.toDisplayString(g.content),1)])):a.createCommentVNode("",!0)],64)}),128)),e.loading?(a.openBlock(),a.createElementBlock("div",Wr,u[5]||(u[5]=[a.createStaticVNode('<div class="w-7 h-7 sm:w-10 sm:h-10 rounded-full bg-gradient-to-br from-gray-100 via-gray-200 to-gray-300 flex items-center justify-center shadow-sm" data-v-b4c603a8><svg class="w-3.5 h-3.5 sm:w-5 sm:h-5 text-gray-600 animate-pulse" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-b4c603a8><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" data-v-b4c603a8></path></svg></div><div class="max-w-[85%] sm:max-w-sm lg:max-w-md" data-v-b4c603a8><div class="relative" data-v-b4c603a8><div class="bg-gray-100/90 rounded-xl px-3 py-2 sm:px-4 sm:py-3 shadow-md border border-gray-200/30 backdrop-blur-xl" data-v-b4c603a8><div class="flex items-center space-x-2 sm:space-x-3" data-v-b4c603a8><div class="flex space-x-1" data-v-b4c603a8><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-500 rounded-full animate-bounce" style="animation-delay:0ms;" data-v-b4c603a8></div><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-500 rounded-full animate-bounce" style="animation-delay:150ms;" data-v-b4c603a8></div><div class="w-2 h-2 sm:w-2.5 sm:h-2.5 bg-blue-500 rounded-full animate-bounce" style="animation-delay:300ms;" data-v-b4c603a8></div></div><span class="text-sm sm:text-base text-gray-700" data-v-b4c603a8>AI正在思考</span></div></div></div></div>',2)]))):a.createCommentVNode("",!0),u[6]||(u[6]=a.createElementVNode("div",{class:"h-2 sm:h-4"},null,-1))],512))}},[["__scopeId","data-v-b4c603a8"]]),Xr={class:"message-input"},Qr={key:0,class:"input-actions-left"},Jr=["disabled"],Yr={class:"input-field-container"},ea=["placeholder","disabled"],ta={class:"input-actions-right"},na=["disabled"],sa={key:0,class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ra={key:1,class:"loading-dots"},aa={key:0,class:"error-message"},He=24,Ve=8,Re=Se({__name:"MessageInput",props:{placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},maxLength:{type:Number,default:4e3},showHint:{type:Boolean,default:!0},autoFocus:{type:Boolean,default:!0},minRows:{type:Number,default:1},maxRows:{type:Number,default:6},showVoiceButton:{type:Boolean,default:!0},showFileButton:{type:Boolean,default:!0}},emits:["send","clear","input","voice-click","file-click"],setup(e,{expose:t,emit:n}){const s=e,r=n,l=a.ref(""),o=a.ref(null),i=a.ref("auto"),c=a.ref(""),d=a.ref(!1),u=a.ref(`${He+Ve}px`),g=a.ref(`${He*3+Ve}px`),h=a.ref(!1),E=a.computed(()=>!s.disabled&&!s.loading&&l.value.trim().length>0&&(!s.maxLength||l.value.length<=s.maxLength)),f=a.computed(()=>!!c.value||s.maxLength&&l.value.length>s.maxLength),b=a.computed(()=>{const q={minHeight:"24px",maxHeight:"72px",overflowY:l.value.split(`
`).length>1?"auto":"hidden"};return l.value.split(`
`).length===1&&l.value.length<50?q:{...q,height:"auto"}});function v(){if(!E.value)return;const N=l.value.trim();if(N){if(s.maxLength&&N.length>s.maxLength){c.value=`消息长度不能超过 ${s.maxLength} 个字符`;return}c.value="",r("send",N),l.value="",_()}}function $(){l.value="",c.value="",_(),r("clear")}function V(N){if(N.key==="Enter"&&!N.shiftKey){N.preventDefault(),v();return}N.shiftKey&&N.key}function j(){d.value=!0}function L(){d.value=!1}function J(){c.value&&(c.value=""),_(),r("input",l.value)}function O(){r("voice-click")}function w(){r("file-click")}function _(){a.nextTick(()=>{const N=o.value;if(!N)return;N.style.height=u.value;const A=N.scrollHeight,W=He*3+Ve;A<=He+Ve?(i.value=u.value,h.value=!1):A<=W?(i.value=`${A}px`,h.value=!1):(i.value=g.value,h.value=!0)})}return a.watch(l,()=>{_()}),a.onMounted(()=>{s.autoFocus&&a.nextTick(()=>{var N;(N=o.value)==null||N.focus()}),_()}),t({focus:()=>{var N;return(N=o.value)==null?void 0:N.focus()},blur:()=>{var N;return(N=o.value)==null?void 0:N.blur()},clear:$,setValue:N=>{l.value=N,_()}}),(N,A)=>(a.openBlock(),a.createElementBlock("div",Xr,[a.createElementVNode("div",{class:a.normalizeClass(["input-compound",{"input-compound--focused":d.value,"input-compound--error":f.value,"input-compound--disabled":e.disabled}])},[e.showFileButton?(a.openBlock(),a.createElementBlock("div",Qr,[a.createElementVNode("button",{class:"btn-base btn-icon btn-ghost",title:"附件",disabled:e.disabled,onClick:w},A[1]||(A[1]=[a.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"})],-1)]),8,Jr)])):a.createCommentVNode("",!0),a.createElementVNode("div",Yr,[a.withDirectives(a.createElementVNode("textarea",{ref_key:"textareaRef",ref:o,"onUpdate:modelValue":A[0]||(A[0]=W=>l.value=W),placeholder:e.placeholder,disabled:e.disabled,rows:"1",class:"input-field",style:a.normalizeStyle(b.value),onFocus:j,onBlur:L,onKeydown:V,onInput:J},null,44,ea),[[a.vModelText,l.value]])]),a.createElementVNode("div",ta,[e.showVoiceButton&&!l.value.trim()?(a.openBlock(),a.createElementBlock("button",{key:0,class:"chat-button-icon",title:"语音输入",onClick:O},A[2]||(A[2]=[a.createElementVNode("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z"})],-1)]))):a.createCommentVNode("",!0),l.value.trim()||!e.showVoiceButton?(a.openBlock(),a.createElementBlock("button",{key:1,disabled:!E.value,class:"chat-button-send",title:"发送消息 (Enter)",onClick:v},[e.loading?(a.openBlock(),a.createElementBlock("div",ra,A[4]||(A[4]=[a.createElementVNode("div",{class:"loading-dot"},null,-1),a.createElementVNode("div",{class:"loading-dot"},null,-1),a.createElementVNode("div",{class:"loading-dot"},null,-1)]))):(a.openBlock(),a.createElementBlock("svg",sa,A[3]||(A[3]=[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19l9 2-9-18-9 18 9-2zm0 0v-8"},null,-1)])))],8,na)):a.createCommentVNode("",!0)])],2),c.value?(a.openBlock(),a.createElementBlock("div",aa,a.toDisplayString(c.value),1)):a.createCommentVNode("",!0)]))}},[["__scopeId","data-v-37359f28"]]),ne={LIGHT:"light",DARK:"dark",AUTO:"auto"},ee={primary:{light:"from-indigo-500 to-purple-600",dark:"from-indigo-400 to-purple-500"},background:{light:"from-gray-50 to-white",dark:"from-gray-900 to-gray-800"},container:{light:"bg-white/80 backdrop-blur-sm",dark:"bg-gray-800/80 backdrop-blur-sm"},border:{light:"border-gray-200/50",dark:"border-gray-700/50"},text:{primary:{light:"text-gray-900",dark:"text-white"},secondary:{light:"text-gray-500",dark:"text-gray-400"}},status:{online:"bg-green-500",loading:"bg-yellow-500",streaming:"bg-blue-500",error:"bg-red-500"}};function ia(){return typeof window>"u"?ne.LIGHT:window.matchMedia("(prefers-color-scheme: dark)").matches?ne.DARK:ne.LIGHT}function oa(e){return e===ne.AUTO?ia():e||ne.LIGHT}function la(e,t="container"){const n=oa(e);return{container:n===ne.DARK?"dark":"",background:ee.background[n],containerBg:ee.container[n],border:ee.border[n],textPrimary:ee.text.primary[n],textSecondary:ee.text.secondary[n],primary:ee.primary[n]}[t]||""}function ca(e){if(typeof window>"u")return()=>{};const t=window.matchMedia("(prefers-color-scheme: dark)"),n=s=>{e(s.matches?ne.DARK:ne.LIGHT)};return t.addEventListener("change",n),()=>{t.removeEventListener("change",n)}}const Ue={streaming:{indicator:ee.status.streaming,text:"正在生成..."},loading:{indicator:ee.status.loading,text:"连接中..."},error:{indicator:ee.status.error,text:"连接错误"},online:{indicator:ee.status.online,text:"在线"}};function ua(e,t,n){return t?Ue.streaming:e?Ue.loading:n?Ue.error:Ue.online}const da={class:"chat-container flex flex-col bg-white rounded-lg border border-gray-200 shadow-lg overflow-hidden h-full"},ha={class:"chat-header"},ga={class:"flex items-center justify-between"},pa={class:"flex items-center space-x-3 sm:space-x-4"},fa={class:"relative"},ma={class:"text-xs text-gray-600"},ba={class:"flex items-center space-x-1"},ka=["disabled"],xa={class:"chat-messages flex-1 overflow-y-auto p-4"},ya={key:0,class:"error-message mx-4 mb-4"},wa={class:"flex items-start space-x-3"},Ea={class:"flex-1"},_a={class:"text-sm text-red-700 mt-1"},Sa={class:"flex items-center space-x-2"},Na=["disabled"],Ta={class:"chat-input p-3 bg-gray-50 border-t border-gray-200"},Ke=Se({__name:"ChatContainer",props:{agentId:{type:String,default:null},config:{type:Object,default:()=>({})},userKey:{type:String,default:null},placeholder:{type:String,default:"输入消息..."},showToolCalls:{type:Boolean,default:!0},showVoiceButton:{type:Boolean,default:!0},showFileButton:{type:Boolean,default:!0}},emits:["message-sent","message-received","error","clear","chunk-received","voice-click","file-click"],setup(e,{emit:t}){const n=e,s=t,{messages:r,loading:l,streaming:o,error:i,sendMessage:c,clearMessages:d,stopStream:u,retry:g}=St(n.agentId,{...n.config,userKey:n.userKey}),h=a.computed(()=>ua(l.value,o.value,i.value)),E=a.computed(()=>h.value.indicator),f=a.computed(()=>h.value.text),b=a.computed(()=>null);async function v(w){try{s("message-sent",w),await c(w,{onChunk:_=>{s("chunk-received",_)},onComplete:()=>{if(r.value.length>0){const _=r.value[r.value.length-1];s("message-received",_)}},onError:_=>{s("error",_)}})}catch(_){s("error",_)}}function $(){d(),s("clear")}function V(){u()}async function j(){try{await g()}catch(w){s("error",w)}}function L(){s("voice-click")}function J(){s("file-click")}let O=null;return a.onMounted(()=>{n.theme===ne.AUTO&&(O=ca(w=>{console.log("系统主题已切换:",w)}))}),a.onUnmounted(()=>{O&&O()}),(w,_)=>(a.openBlock(),a.createElementBlock("div",da,[a.createElementVNode("div",ha,[a.createElementVNode("div",ga,[a.createElementVNode("div",pa,[a.createElementVNode("div",fa,[_[1]||(_[1]=a.createElementVNode("div",{class:"w-8 h-8 sm:w-10 sm:h-10 rounded-full bg-gray-100 flex items-center justify-center"},[a.createElementVNode("svg",{class:"w-4 h-4 sm:w-5 sm:h-5 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})])],-1)),a.createElementVNode("div",{class:a.normalizeClass(["absolute -bottom-0.5 -right-0.5 w-3 h-3 rounded-full border-2 border-white",E.value])},null,2)]),a.createElementVNode("div",null,[_[2]||(_[2]=a.createElementVNode("h2",{class:"text-sm sm:text-base font-semibold text-gray-900"},"AI助手",-1)),a.createElementVNode("p",ma,a.toDisplayString(f.value),1)])]),a.createElementVNode("div",ba,[a.unref(o)?(a.openBlock(),a.createElementBlock("button",{key:0,class:"chat-button chat-button-secondary p-2 text-red-500",title:"停止生成",onClick:V},_[3]||(_[3]=[a.createElementVNode("svg",{class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})],-1)]))):a.createCommentVNode("",!0),a.createElementVNode("button",{disabled:a.unref(l)||a.unref(o),class:"btn-base btn-icon btn-ghost",title:"新会话",onClick:$},_[4]||(_[4]=[a.createElementVNode("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 4v16m8-8H4"})],-1)]),8,ka)])])]),a.createElementVNode("div",xa,[a.createVNode(Ae,{messages:a.unref(r),loading:a.unref(l),streaming:a.unref(o),"show-tool-calls":e.showToolCalls,"agent-avatar":b.value},null,8,["messages","loading","streaming","show-tool-calls","agent-avatar"])]),a.unref(i)?(a.openBlock(),a.createElementBlock("div",ya,[a.createElementVNode("div",wa,[_[7]||(_[7]=a.createElementVNode("div",{class:"flex-shrink-0"},[a.createElementVNode("svg",{class:"w-5 h-5 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),a.createElementVNode("div",Ea,[_[5]||(_[5]=a.createElementVNode("h4",{class:"text-sm font-semibold text-red-800"},"发送失败",-1)),a.createElementVNode("p",_a,a.toDisplayString(a.unref(i)),1)]),a.createElementVNode("div",Sa,[a.createElementVNode("button",{disabled:a.unref(l)||a.unref(o),class:"btn-base btn-sm btn-secondary",onClick:j}," 重试 ",8,Na),a.createElementVNode("button",{class:"btn-base btn-icon btn-ghost",title:"关闭错误",onClick:_[0]||(_[0]=N=>i.value=null)},_[6]||(_[6]=[a.createElementVNode("svg",{class:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[a.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)]))])])])):a.createCommentVNode("",!0),a.createElementVNode("div",Ta,[a.createVNode(Re,{placeholder:"",disabled:a.unref(l)||a.unref(o),loading:a.unref(l)||a.unref(o),"show-voice-button":e.showVoiceButton,"show-file-button":e.showFileButton,onSend:v,onVoiceClick:L,onFileClick:J},null,8,["disabled","loading","show-voice-button","show-file-button"])])]))}},[["__scopeId","data-v-7b92d011"]]),pn={baseURL:"",apiKey:null,defaultAgentId:null,timeout:3e4,getHeaders:null,getUserKey:null},lt={install(e,t={}){const n={...pn,...t};e.component("ChatContainer",Ke),e.component("MessageList",Ae),e.component("MessageInput",Re),e.component("ToolCallsDisplay",Te),e.component("StreamMarkdown",Ne),e.mixin({beforeCreate(){if(this.$parent===null){const s=kt(n);e.config.globalProperties.$chatConfig=s.config,e.config.globalProperties.$updateChatConfig=s.updateConfig,e.config.globalProperties.$getChatHeaders=s.getEffectiveHeaders,e.config.globalProperties.$getChatUserKey=s.getEffectiveUserKey}}}),e.provide("think-apps-chat-sdk",{version:"1.0.0",config:n,components:{ChatContainer:Ke,MessageList:Ae,MessageInput:Re,ToolCallsDisplay:Te,StreamMarkdown:Ne}})}};function Aa(e={}){const t={...pn,...e};return{config:t,components:{ChatContainer:Ke,MessageList:Ae,MessageInput:Re,ToolCallsDisplay:Te,StreamMarkdown:Ne},install(n){lt.install(n,t)}}}C.ChatContainer=Ke,C.MessageInput=Re,C.MessageList=Ae,C.StreamMarkdown=Ne,C.THEME_COLORS=ee,C.THEME_MODES=ne,C.ThinkAppsChatSDK=lt,C.ToolCallsDisplay=Te,C.createChatApi=Et,C.createChatSDK=Aa,C.default=lt,C.extractContentFromChunk=wn,C.extractToolCallsFromChunk=En,C.fixVwUnits=ce,C.formatMessage=_t,C.getThemeClasses=la,C.initVwUnitFixer=ft,C.isChunkComplete=_n,C.parseStreamResponse=yn,C.provideConfig=kt,C.startVwUnitWatcher=xn,C.useChat=St,C.useConfig=xt,Object.defineProperties(C,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});