@szjy/ai-coms 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -13
- package/dist/index.mjs +268 -266
- package/dist/index.umd.js +2 -2
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(E,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(E=typeof globalThis<"u"?globalThis:E||self,e(E["szjy-ai-coms"]={},E.Vue))})(this,function(E,e){"use strict";const Z="/images/ai-round.png",G="/images/ai-sqrt.png",ee="/images/bars-loading.svg";function $(n){return n.startsWith("http://")||n.startsWith("https://")?n:`${location.protocol}//${location.host}${n}`}async function te(n,r,l,i="",
|
|
2
|
-
`)).getReader();console.log("reader from response:",t),i({error:0,reader:t})}else i({error:1,reader:null})}).catch(a=>{i({error:1,reader:null})})}):{error:1,reader:null}}let z=null;function ue(){return z||(window.markdownit?z=new window.markdownit({html:!0,linkify:!0,typographer:!0}):console.log("markdownit is not loaded"),z)}const F=(n,r)=>{const l=n.__vccOpts||n;for(const[i,a]of r)l[i]=a;return l},fe=["src","alt"],U=F({__name:"SvgIcon",props:{name:{type:String,required:!0},size:{type:[Number,String],default:16},color:{type:String,default:""},className:{type:String,default:""},basePath:{type:String,default:"/icons/"}},setup(n){const r=n,l=e.computed(()=>{if(r.name.startsWith("http://")||r.name.startsWith("https://")||r.name.startsWith("/"))return r.name;const t=r.name.endsWith(".svg")?r.name:`${r.name}.svg`;return`${r.basePath}${t}`}),i=e.computed(()=>{const t=typeof r.size=="number"?`${r.size}px`:r.size;return{width:t,height:t,display:"inline-flex",justifyContent:"center",alignItems:"center"}}),a=e.computed(()=>{const t={width:"100%",height:"100%"};return r.color&&(t.filter=`drop-shadow(0 0 0 ${r.color})`),t});return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:"svg-icon-wrapper",style:e.normalizeStyle(i.value)},[e.createElementVNode("img",{src:l.value,alt:n.name,class:e.normalizeClass(["svg-icon",n.className]),style:e.normalizeStyle(a.value)},null,14,fe)],4))}},[["__scopeId","data-v-490b11c1"]]),me=async n=>{if(navigator.clipboard&&navigator.permissions)await navigator.clipboard.writeText(n);else{const r=document.createElement("textArea");r.value=n,r.style.width=0,r.style.position="fixed",r.style.left="-999px",r.style.top="10px",r.setAttribute("readonly","readonly"),document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r)}},pe=["innerHTML"],he={__name:"Previewer",props:{reader:null,model:"szjy",scrollToBottomFn:null,displayText:"",messagePostRender:{type:Function,default:null}},emits:["failed","completed","updating"],setup(n,{expose:r,emit:l}){const{appContext:i}=e.getCurrentInstance(),{$message:a}=i.config.globalProperties,t=n,o=e.ref(t.displayText||""),u=e.ref(""),f=e.ref(!0),w=e.ref(!1),C=e.ref(!!t.displayText),B=l,T=e.ref(null);let N=null;const j=e.computed(()=>z?z.render(o.value):o.value),O=()=>{t.reader&&t.reader.cancel(),w.value=!0,d.value=!1,p(),C.value=!0,B("completed",o.value),f.value=!1,N&&(cancelAnimationFrame(N),N=null)},P=e.computed(()=>`${j.value}`),h=e.ref(!1),m=()=>{h.value=!0},p=()=>{h.value=!1},d=e.ref(!1),c=async()=>{if(!t.reader)return;const k=new TextDecoder("utf-8");for(f.value=!0;!w.value;)try{if(!t.reader){d.value=!0;break}const{value:s,done:b}=await t.reader.read();if(!t.reader){d.value=!0;break}if(b){d.value=!0;break}const S=q[t.model];if(!S)break;const R=S.call(q,s,k);if(R.done){d.value=!0;break}u.value+=R.content,N===null&&v()}catch(s){d.value=!0,console.log(3333,s),B("failed",s),O();break}finally{p()}},g=async()=>{t.scrollToBottomFn&&t.scrollToBottomFn()},y=(k=()=>{},s=()=>{})=>{if(u.value.length>0){const b=u.value.substring(0,10);o.value+=b,u.value=u.value.substring(10),k()}else s()},v=()=>{if(w.value&&N){cancelAnimationFrame(N),N=null,f.value=!1;return}d.value?y(()=>{N=requestAnimationFrame(v),B("updating",null)},()=>{B("completed",o.value),f.value=!1,C.value=!0,e.nextTick(()=>{if(d.value=!1,t.messagePostRender&&T.value)try{t.messagePostRender(T.value,o.value)}catch(k){console.error("messagePostRender 执行失败:",k)}}),N=null}):(y(),N=requestAnimationFrame(v)),g()};e.watch(()=>t.reader,()=>{t.reader&&c()},{immediate:!0,deep:!0}),e.onUnmounted(()=>{O()}),r({abortReader:O,initializeStart:m,initializeEnd:p}),e.computed(()=>h.value?!0:(!t.reader||!f||o.value,!1));const x=async()=>{try{const k=o.value;await me(k),a.success("复制成功")}catch(k){console.error("复制失败:",k),a.error("复制失败")}};return(k,s)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[P.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"refWrapperContent",ref:T,"text-16":"",class:"w-full h-full overflow-y-auto relative","p-24px":""},[e.createElementVNode("div",{class:"markdown-wrapper",innerHTML:P.value},null,8,pe),C.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ai-copy-btn-wrapper",onClick:x},[e.createVNode(U,{name:"/images/svg/copy.svg",color:"#666666"}),s[0]||(s[0]=e.createElementVNode("span",{class:"copy-text"},"复制",-1))])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0)]),_:1}))}},ge={class:"panel-header"},ye={class:"header-actions"},be={class:"header-title"},ke={class:"action-icons"},we={class:"body-content"},xe={key:0,class:"welcome-content"},ve={class:"subtitle"},Se={class:"highlight"},Ce={class:"quick-questions"},Ne=["onClick"],_e={key:1,class:"message-content user-content"},Ee={class:"panel-footer"},Te={key:0,src:ee,alt:"加载中",class:"loading-icon"},Re={class:"input-box"},Pe=["src"],Ve={__name:"ChatPanel",props:{modelValue:{type:Boolean,default:!1},token:{type:String,default:""},identifier:{type:String,default:""},baseUrl:{type:String,default:""},title:{type:String,default:"数智AI助理"},llmName:{type:String,default:"szjy"},messagePostRender:{type:Function,default:null},extraConfig:{type:Object,default:()=>({})}},emits:["update:modelValue","submit"],setup(n,{emit:r}){const{appContext:l}=e.getCurrentInstance(),{$message:i}=l.config.globalProperties,a=n,t=e.computed(()=>A.find(s=>s.modelName===a.llmName)??A.find(s=>s.modelName==="szjy")),o=r,u=e.ref(""),f=e.ref(null),w=e.ref(!1),C=e.ref([]),B=e.ref(["什么是AI助理,能做什么?","当前项目的基本情况?","当前项目的进度情况?","当前项目的参建方有哪些?","数智建管平台有哪些功能?能做什么?"]),T=e.ref([]),N=e.ref(!1),j=e.ref(null),O=()=>{e.nextTick(()=>{if(j.value){const s=j.value,b=s.scrollHeight,S=s.scrollTop,R=s.clientHeight;b-S-R<100?s.scrollTop=b:s.scrollTo({top:b})}})},P=e.ref(!1),h=e.computed(()=>P.value?"/images/ai-stop.png":"/images/ai-send.png"),m=(s,b)=>{console.log("onFailedReader",s,b),N.value=!1;const S=x();S&&S.initializeEnd(),i.error("转换失败,请重试"),P.value=!1,setTimeout(()=>{f.value&&f.value.focus()})},p=(s,b)=>{N.value=!1,P.value=!1,O(),b&&C.value[s]&&(C.value[s].displayText=b),setTimeout(()=>{f.value&&f.value.focus()})},d=s=>{P.value=!0},c=()=>{P.value=!1,o("update:modelValue",!1),w.value=!1,C.value=[]},g=e.ref(!1),y=()=>{g.value=!g.value},v=s=>{u.value=s,k()},x=()=>{for(let s=T.value.length-1;s>=0;s--)if(T.value[s])return T.value[s];return null},k=async()=>{if(console.log("stylizingLoading:",N.value),N.value){const _=x();console.log("lastPreviewer:",_),_&&(console.log("abortReader"),_.abortReader());return}if(!u.value.trim()){console.log("no input, return"),f.value.focus();return}C.value.push({type:"user",content:u.value}),P.value=!0,w.value=!0,o("submit",u.value),O();const s=u.value;u.value="";const b=C.value.length;T.value[b]&&T.value[b].initializeStart(),N.value=!0,C.value.push({type:"ai"});const{error:S,reader:R}=await de(t.value,{text:s,token:a.token,identifier:a.identifier,baseUrl:a.baseUrl,extraConfig:a.extraConfig});if(S){console.log(45455,S),m(b,S);return}R&&(C.value[b].reader=R)};return(s,b)=>{const S=e.resolveComponent("el-icon"),R=e.resolveComponent("el-input");return e.openBlock(),e.createBlock(e.Transition,{name:"slide"},{default:e.withCtx(()=>[n.modelValue?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ai-panel",{"drawer-mode":g.value}])},[e.createElementVNode("div",ge,[e.createElementVNode("div",ye,[e.createElementVNode("div",be,e.toDisplayString(n.title),1),e.createElementVNode("div",ke,[e.createVNode(S,{class:"action-icon",onClick:y},{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/drawer-layout.svg",color:"#999999"})]),_:1}),e.createVNode(S,{class:"action-icon",onClick:c},{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/close.svg",color:"#999999"})]),_:1})])])]),e.createElementVNode("div",we,[w.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"chat-messages",ref_key:"messageContainerRef",ref:j},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(_,L)=>(e.openBlock(),e.createElementBlock("div",{key:L,class:e.normalizeClass(["message-item",_.type==="user"?"user-message":"ai-message"])},[_.type==="ai"?(e.openBlock(),e.createBlock(he,{key:0,ref_for:!0,ref:V=>T.value[L]=V,reader:_.reader,"onUpdate:reader":V=>_.reader=V,model:a.llmName,displayText:_.displayText,scrollToBottomFn:O,messagePostRender:n.messagePostRender,onFailed:V=>m(L,V),onCompleted:V=>p(L,V),onUpdating:()=>d()},null,8,["reader","onUpdate:reader","model","displayText","messagePostRender","onFailed","onCompleted","onUpdating"])):(e.openBlock(),e.createElementBlock("div",_e,e.toDisplayString(_.content),1))],2))),128))],512)):(e.openBlock(),e.createElementBlock("div",xe,[b[2]||(b[2]=e.createElementVNode("div",{class:"title"},[e.createElementVNode("img",{src:G,alt:"AI助手",class:"panel-icon"}),e.createElementVNode("h3",{class:"title-text"},"Hi, 您好")],-1)),e.createElementVNode("div",ve,[b[1]||(b[1]=e.createTextVNode(" 我是",-1)),e.createElementVNode("span",Se,e.toDisplayString(n.title),1)]),e.createElementVNode("div",Ce,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(_,L)=>(e.openBlock(),e.createElementBlock("div",{key:L,class:"question-item",onClick:V=>v(_)},[e.createElementVNode("span",null,e.toDisplayString(_),1),e.createVNode(S,null,{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/arrow-right.svg",color:"#999999"})]),_:1})],8,Ne))),128))])]))]),e.createElementVNode("div",Ee,[P.value?(e.openBlock(),e.createElementBlock("img",Te)):e.createCommentVNode("",!0),e.createElementVNode("div",Re,[e.createVNode(R,{modelValue:u.value,"onUpdate:modelValue":b[0]||(b[0]=_=>u.value=_),ref_key:"refInputTextString",ref:f,placeholder:"请输入您的问题",autofocus:"",onKeyup:e.withKeys(k,["enter"])},{append:e.withCtx(()=>[e.createElementVNode("div",{class:"send-icon-box",onClick:k},[e.createElementVNode("img",{src:h.value,alt:"发送",class:"send-icon"},null,8,Pe)])]),_:1},8,["modelValue"])])])],2)):e.createCommentVNode("",!0)]),_:1})}}};var D={exports:{}};(function(n,r){(function(l,i){n.exports=i()})(window,function(){return function(l){var i={};function a(t){if(i[t])return i[t].exports;var o=i[t]={i:t,l:!1,exports:{}};return l[t].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=l,a.c=i,a.d=function(t,o,u){a.o(t,o)||Object.defineProperty(t,o,{enumerable:!0,get:u})},a.r=function(t){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,o){if(1&o&&(t=a(t)),8&o||4&o&&typeof t=="object"&&t&&t.__esModule)return t;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:t}),2&o&&typeof t!="string")for(var f in t)a.d(u,f,(function(w){return t[w]}).bind(null,f));return u},a.n=function(t){var o=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(o,"a",o),o},a.o=function(t,o){return Object.prototype.hasOwnProperty.call(t,o)},a.p="",a(a.s=0)}([function(l,i,a){function t(h,m,p,d){p.push(h),d.push([].concat(m[h]||[]))}function o(h,m){if(!h)throw new Error("[getMaxDepsChain] dep 参数不能为空");var p=[],d=[],c=[];for(t(h,m,d,c);d.length;){var g=c.pop();if(g&&g.length){var y=g.shift();if(c.push(g),~d.indexOf(y))throw new Error("[getMaxDepsChain][loop] 存在循环依赖,请检查依赖关系; nextName: "+y+", mainStack: "+d);t(y,m,d,c)}else p.push([].concat(d)),d.pop()}return p.reduce(function(v,x){return x.length>v.length?x:v},[])}function u(h){if(!h)throw new Error("[depsParser] 入参不能为空");var m={};h.forEach(function(d){m[d.name]=d.deps||[]});var p=[];return h.forEach(function(d){var c=o(d.name,m).length-1;d.priority=c,p[c]=(p[c]||[]).concat(d)}),p}a.r(i),a.d(i,"loadScript",function(){return T}),a.d(i,"loadScripts",function(){return N}),a.d(i,"dynamicLoadScripts",function(){return j}),a.d(i,"createScriptsLoadIterator",function(){return O}),a.d(i,"loadScriptsQueue",function(){return P}),a.d(i,"getMaxDepsChain",function(){return o}),a.d(i,"depsParser",function(){return u});var f=function(){return(f=Object.assign||function(h){for(var m,p=1,d=arguments.length;p<d;p++)for(var c in m=arguments[p])Object.prototype.hasOwnProperty.call(m,c)&&(h[c]=m[c]);return h}).apply(this,arguments)},w=function(h,m,p,d){return new(p||(p=Promise))(function(c,g){function y(k){try{x(d.next(k))}catch(s){g(s)}}function v(k){try{x(d.throw(k))}catch(s){g(s)}}function x(k){var s;k.done?c(k.value):(s=k.value,s instanceof p?s:new p(function(b){b(s)})).then(y,v)}x((d=d.apply(h,[])).next())})},C=function(h,m){var p,d,c,g,y={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return g={next:v(0),throw:v(1),return:v(2)},typeof Symbol=="function"&&(g[Symbol.iterator]=function(){return this}),g;function v(x){return function(k){return function(s){if(p)throw new TypeError("Generator is already executing.");for(;y;)try{if(p=1,d&&(c=2&s[0]?d.return:s[0]?d.throw||((c=d.return)&&c.call(d),0):d.next)&&!(c=c.call(d,s[1])).done)return c;switch(d=0,c&&(s=[2&s[0],c.value]),s[0]){case 0:case 1:c=s;break;case 4:return y.label++,{value:s[1],done:!1};case 5:y.label++,d=s[1],s=[0];continue;case 7:s=y.ops.pop(),y.trys.pop();continue;default:if(c=y.trys,!((c=c.length>0&&c[c.length-1])||s[0]!==6&&s[0]!==2)){y=0;continue}if(s[0]===3&&(!c||s[1]>c[0]&&s[1]<c[3])){y.label=s[1];break}if(s[0]===6&&y.label<c[1]){y.label=c[1],c=s;break}if(c&&y.label<c[2]){y.label=c[2],y.ops.push(s);break}c[2]&&y.ops.pop(),y.trys.pop();continue}s=m.call(h,y)}catch(b){s=[6,b],d=0}finally{p=c=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([x,k])}}},B=function(h){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m,p=h[Symbol.asyncIterator];return p?p.call(h):(h=typeof __values=="function"?__values(h):h[Symbol.iterator](),m={},d("next"),d("throw"),d("return"),m[Symbol.asyncIterator]=function(){return this},m);function d(c){m[c]=h[c]&&function(g){return new Promise(function(y,v){(function(x,k,s,b){Promise.resolve(b).then(function(S){x({value:S,done:s})},k)})(y,v,(g=h[c](g)).done,g.value)})}}};function T(h,m){return m===void 0&&(m=!1),new Promise(function(p,d){var c=m?document.head:document.body,g=document.createElement("script");g.type="text/javascript",g.src=h,g.crossOrigin="anonymous",g.onreadystatechange=p,g.onload=p,g.onerror=d,c.appendChild(g)})}var N=function(h,m){return m===void 0&&(m={}),w(void 0,void 0,void 0,function(){var p,d,c,g,y;return C(this,function(v){switch(v.label){case 0:return p=m.baseUrl,d=p===void 0?"":p,c=m.lastLoadResult,g=m.inHead,y=g!==void 0&&g,[4,Promise.all(h.map(function(x){return w(void 0,void 0,void 0,function(){var k,s,b,S,R,_,L,V;return C(this,function(Y){switch(Y.label){case 0:return k=x.name,s=x.path,b=x.deps,(L={})[k]=!0,S=L,(V={})[k]=!1,R=V,window[k]?[2,S]:[3,1];case 1:return _=!0,b&&c&&[].concat(b).forEach(function(Fe){c[Fe]!==!1&&(_=!0)}),_?[4,T(s.indexOf("http")===0||s.indexOf("//:")===0?s:d+s,y).then(function(){return S}).catch(function(){return R})]:[3,3];case 2:return[2,Y.sent()];case 3:return[2,R]}})})}))];case 1:return[2,v.sent()]}})})},j=function(h,m){return m===void 0&&(m={}),function(){var p=[].concat(u(h));return{next:function(){if(p.length){var d=p.shift();return N(d,m).then(function(c){return{value:c,done:!1}})}return Promise.resolve({done:!0})}}}},O=function(h,m){var p;return m===void 0&&(m={}),(p={})[Symbol.asyncIterator]=j(h,m),p},P=function(h,m){return m===void 0&&(m={}),w(void 0,void 0,void 0,function(){var p,d,c,g,y,v;return C(this,function(x){switch(x.label){case 0:x.trys.push([0,5,6,11]),p=B(O(h,m)),x.label=1;case 1:return[4,p.next()];case 2:if((d=x.sent()).done)return[3,4];c=d.value,m.lastLoadResult=m.lastLoadResult||{},console.log("current load: ",c),c.forEach(function(k){m.lastLoadResult=f(f({},m.lastLoadResult),k)}),x.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return g=x.sent(),y={error:g},[3,11];case 6:return x.trys.push([6,,9,10]),d&&!d.done&&(v=p.return)?[4,v.call(p)]:[3,8];case 7:x.sent(),x.label=8;case 8:return[3,10];case 9:if(y)throw y.error;return[7];case 10:return[7];case 11:return[2,m.lastLoadResult]}})})}}])})})(D);var Be=D.exports;const Oe={key:0,class:"ai-assistant"},Le={name:"AiChat"},je=e.defineComponent({...Le,props:{token:{type:String,default:""},identifier:{type:String,default:""},baseUrl:{type:String,default:""},title:{type:String,default:"数智AI助理"},llmName:{type:String,default:"szjy"},messagePostRender:{type:Function,default:null},extraConfig:{type:Object,default:()=>({})}},setup(n){const r=e.ref(!1),l=e.ref(!1),i=()=>{r.value=!r.value},a=()=>{l.value=!0,r.value=!1},t=f=>{console.log("用户输入:",f)},o=[{name:"markdownit",path:"markdown-it.min.js"},{name:"hljs",path:"highlight.11.11.1.min.js"}];let u={};return Be.loadScriptsQueue(o,{baseUrl:"/scripts/ai/",lastLoadResult:u,inHead:!1}).then(f=>{if(console.log("load ai deps: ",f),window.markdownit){const w=window.markdownit();console.log("markdownit: ",w),ue()}}),(f,w)=>l.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(Ve,{modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=C=>r.value=C),onSubmit:t,token:n.token,identifier:n.identifier,baseUrl:n.baseUrl,title:n.title,llmName:n.llmName,messagePostRender:n.messagePostRender,extraConfig:n.extraConfig},null,8,["modelValue","token","identifier","baseUrl","title","llmName","messagePostRender","extraConfig"]),e.createElementVNode("div",{class:"ai-icon",onClick:i},[e.createElementVNode("div",{class:"close-icon",onClick:e.withModifiers(a,["stop"])},[...w[1]||(w[1]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"8",height:"8"},[e.createElementVNode("path",{d:"M512 456.310154L94.247385 38.557538a39.384615 39.384615 0 0 0-55.689847 55.689847L456.310154 512 38.557538 929.752615a39.384615 39.384615 0 0 0 55.689847 55.689847L512 567.689846l417.752615 417.752616c15.163077 15.163077 40.526769 15.163077 55.689847 0s15.163077-40.526769 0-55.689847L567.689846 512l417.752616-417.752615a39.384615 39.384615 0 0 0-55.689847-55.689847L512 456.310154z",fill:"currentColor"})],-1)])]),w[2]||(w[2]=e.createElementVNode("img",{src:Z,alt:"AI助手"},null,-1)),w[3]||(w[3]=e.createElementVNode("span",{class:"ai-icon-text"},"AI助手",-1))])]))}}),W=F(je,[["__scopeId","data-v-33f89960"]]),J=Object.freeze(Object.defineProperty({__proto__:null,SzAiChat:W},Symbol.toStringTag,{value:"Module"})),I=function(n){if(!I.installed){I.installed=!0;for(let r in J){const l=Reflect.get(J,r);n.component(l.name,l)}}},ze=(n,r)=>{const l=r?`?${new URLSearchParams(r).toString()}`:"";console.log(`点击了路由链接: ${n}${l}`)},H=n=>{const r=n.indexOf("?");if(r===-1)return{routeName:n};const l=n.substring(0,r),i=n.substring(r+1),a={};return new URLSearchParams(i).forEach((o,u)=>{a[u]=o}),{routeName:l,queryParams:Object.keys(a).length>0?a:void 0}},Ue={color:"#536fec",fontWeight:"bold",textDecoration:"underline",cursor:"pointer",padding:"0 3px"},Q=n=>{const r=/#router:([^#]+)#/g,l=[];let i=0,a;for(;(a=r.exec(n))!==null;){a.index>i&&l.push({text:n.substring(i,a.index)});const t=a[1],{routeName:o,queryParams:u}=H(t);l.push({text:o,routeName:o,queryParams:u}),i=r.lastIndex}return i<n.length&&l.push({text:n.substring(i)}),l},K=(n,r,l={},i)=>{const{onRouteClick:a=ze,linkStyle:t={}}=l,o=document.createElement("a");o.href="#",o.textContent=n;const u={...Ue,...t};return Object.assign(o.style,u),o.addEventListener("click",f=>{f.preventDefault(),a(r,i)}),o},X=n=>{const r=/#router:([^#]+)#/g,l=[],i=document.createTreeWalker(n,NodeFilter.SHOW_TEXT,null);let a=i.nextNode();for(;a;){const t=a,o=t.textContent||"";if(r.test(o)){r.lastIndex=0;const u=Q(o);u.length>0&&l.push({node:t,replacements:u})}a=i.nextNode()}return l},Ie=(n,r,l={})=>{const i=X(n);i.forEach(({node:a,replacements:t})=>{var u;const o=document.createDocumentFragment();t.forEach(({text:f,routeName:w,queryParams:C})=>{if(w){const B=K(f,w,l,C);o.appendChild(B)}else o.appendChild(document.createTextNode(f))}),(u=a.parentNode)==null||u.replaceChild(o,a)}),l!=null&&l.nodeCallback&&i.forEach(({node:a,replacements:t})=>{var o;(o=l.nodeCallback)==null||o.call(l,a,t)})},$e="0.1.7",Ae="Sz";function qe({componentPrefix:n=Ae,components:r=[]}={}){const l=[];function i(t,o,u){t.component(n+o)||t.component(n+o,u)}function a(t){l.includes(t)||(l.push(t),r.forEach(o=>{const{name:u,alias:f}=o;i(t,u,o),f&&f.forEach(w=>{i(t,w,o)})}))}return{version:$e,componentPrefix:n,install:a}}const Me={install(n){I(n)}};E.SzAiChat=W,E.create=qe,E.createRouteLink=K,E.default=Me,E.findRouteTextNodes=X,E.parseRouteMarkerContent=H,E.parseRouteMarkers=Q,E.routeLinkRender=Ie,Object.defineProperties(E,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
1
|
+
(function(E,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(E=typeof globalThis<"u"?globalThis:E||self,e(E["szjy-ai-coms"]={},E.Vue))})(this,function(E,e){"use strict";const Z="/images/ai-round.png",G="/images/ai-sqrt.png",ee="/images/bars-loading.svg";function $(n){return n.startsWith("http://")||n.startsWith("https://")?n:`${location.protocol}//${location.host}${n}`}async function te(n,r,l,i="",o={}){const{projectId:t}=o,a=$(i),u=new URL(`${a}/v1/chat/completions`),f=(o==null?void 0:o.authToken)||"app-oLZVFFdYyJX2QK3rdOLWsC2u";o!=null&&o.authToken||console.error("缺少 authToken!现在默认使用内网的 authToken");const b=new Request(u,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`},body:JSON.stringify({model:"dify",stream:!0,inputs:{token:r,projectCode:l,...t?{projectId:t}:{}},messages:[{role:"system",content:"你是一个专业的AI助手,请用中文回答问题。"},{role:"user",content:n}]})});return fetch(b)}async function ne(n,r,l,i="",o={}){const t=new URL("http://localhost:11434/api/chat"),a={};Object.keys(a).forEach(f=>{t.searchParams.append(f,a[f])});const u=new Request(t,{mode:"cors",method:"post",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:"llama3",stream:!0,messages:[{role:"system",content:"全程使用中文回答问题。"},{role:"user",content:n}]})});return fetch(u)}async function re(n,r,l,i="",o={}){const t=new URL(`${location.origin}/spark/v1/chat/completions`),a={};Object.keys(a).forEach(f=>{t.searchParams.append(f,a[f])});const u=new Request(t,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({model:"generalv4.0Ultra",stream:!0,messages:[{role:"user",content:n}]})});return fetch(u)}async function oe(n,r,l,i="",o={}){const t=new URL(`${location.origin}/siliconflow/v1/chat/completions`),a={};Object.keys(a).forEach(f=>{t.searchParams.append(f,a[f])});const u=new Request(t,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({model:"Qwen/Qwen1.5-110B-Chat",stream:!0,messages:[{role:"user",content:n}]})});return fetch(u)}async function ae(n,r,l,i="",o={}){const t=new URL(`${location.origin}/moonshot/v1/chat/completions`),a={};Object.keys(a).forEach(f=>{t.searchParams.append(f,a[f])});const u=new Request(t,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({model:"moonshot-v1-8k",stream:!0,messages:[{role:"system",content:"你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},{role:"user",content:n}]})});return fetch(u)}async function se(n,r,l,i="",o={}){const t=new URL(`${location.origin}/dashscope/compatible-mode/v1/chat/completions`),a={};Object.keys(a).forEach(f=>{t.searchParams.append(f,a[f])});const u=new Request(t,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({model:"qwq-32b-preview",stream:!0,messages:[{role:"system",content:"全程使用中文回答问题"},{role:"user",content:n}]})});return fetch(u)}async function le(n,r,l,i="",o={}){const t=$(i),a=new URL(`${t}/support/${l}/a`),u={};Object.keys(u).forEach(b=>{a.searchParams.append(b,u[b])});const f=new Request(a,{method:"post",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({content:n})});return fetch(f)}const ie=n=>{if(n.startsWith("data:")){const r=n.substring(5).trim();if(r==="[DONE]")return{done:!0};try{return JSON.parse(r)}catch(l){console.error("JSON parsing error:",l)}}return null},A=[{label:"模拟数据模型",modelName:"standard",api:null},{label:"Spark 星火大模型",modelName:"spark",api:re},{label:"Ollama 3 大模型",modelName:"ollama3",api:ne},{label:"SiliconFlow 硅基流动大模型",modelName:"siliconflow",api:oe},{label:"Kimi Moonshot 月之暗面大模型",modelName:"moonshot",api:ae},{label:"通义千问大模型",modelName:"dashscope",api:se},{label:"数智建管大模型",modelName:"szjy",api:le},{label:"Dify (OpenAI 兼容)",modelName:"dify-openai",api:te}],q={standard(n,r){let l="";return n instanceof Uint8Array?l=r.decode(n,{stream:!0}):l=n,{content:l}},spark(n){const r=ie(n);return r.done?{done:!0}:{content:r.choices[0].delta.content||""}},siliconflow(n){return this.spark(n)},moonshot(n){return this.spark(n)},dashscope(n){return this.spark(n)},szjy(n){return this.spark(n)},"dify-openai"(n){return this.spark(n)},ollama3(n){return{content:JSON.parse(n).message.content}}},M=(n,r,l)=>{const i=n.split(l);return i.slice(0,-1).forEach(o=>{o.trim()!==""&&r.enqueue(o)}),i[i.length-1]},ce=n=>{let r="";return new TransformStream({transform(l,i){if(r+=l,r.trim().startsWith("data:"))r=M(r,i,n);else try{JSON.parse(r),r=M(r,i,n)}catch{i.enqueue(l),r=""}},flush(l){r.trim()!==""&&l.enqueue(r)}})};async function de(n,r){const l=n.api;return l?new Promise(i=>{l(r.text,r.token,r.identifier,r.baseUrl,r.extraConfig).then(o=>{if(o.body){const t=o.body.pipeThrough(new TextDecoderStream).pipeThrough(ce(`
|
|
2
|
+
`)).getReader();console.log("reader from response:",t),i({error:0,reader:t})}else i({error:1,reader:null})}).catch(o=>{i({error:1,reader:null})})}):{error:1,reader:null}}let z=null;function ue(){return z||(window.markdownit?z=new window.markdownit({html:!0,linkify:!0,typographer:!0}):console.log("markdownit is not loaded"),z)}const F=(n,r)=>{const l=n.__vccOpts||n;for(const[i,o]of r)l[i]=o;return l},fe=["src","alt"],U=F({__name:"SvgIcon",props:{name:{type:String,required:!0},size:{type:[Number,String],default:16},color:{type:String,default:""},className:{type:String,default:""},basePath:{type:String,default:"/icons/"}},setup(n){const r=n,l=e.computed(()=>{if(r.name.startsWith("http://")||r.name.startsWith("https://")||r.name.startsWith("/"))return r.name;const t=r.name.endsWith(".svg")?r.name:`${r.name}.svg`;return`${r.basePath}${t}`}),i=e.computed(()=>{const t=typeof r.size=="number"?`${r.size}px`:r.size;return{width:t,height:t,display:"inline-flex",justifyContent:"center",alignItems:"center"}}),o=e.computed(()=>{const t={width:"100%",height:"100%"};return r.color&&(t.filter=`drop-shadow(0 0 0 ${r.color})`),t});return(t,a)=>(e.openBlock(),e.createElementBlock("div",{class:"svg-icon-wrapper",style:e.normalizeStyle(i.value)},[e.createElementVNode("img",{src:l.value,alt:n.name,class:e.normalizeClass(["svg-icon",n.className]),style:e.normalizeStyle(o.value)},null,14,fe)],4))}},[["__scopeId","data-v-490b11c1"]]),me=async n=>{if(navigator.clipboard&&navigator.permissions)await navigator.clipboard.writeText(n);else{const r=document.createElement("textArea");r.value=n,r.style.width=0,r.style.position="fixed",r.style.left="-999px",r.style.top="10px",r.setAttribute("readonly","readonly"),document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r)}},pe=["innerHTML"],he={__name:"Previewer",props:{reader:null,model:"szjy",scrollToBottomFn:null,displayText:"",messagePostRender:{type:Function,default:null}},emits:["failed","completed","updating"],setup(n,{expose:r,emit:l}){const{appContext:i}=e.getCurrentInstance(),{$message:o}=i.config.globalProperties,t=n,a=e.ref(t.displayText||""),u=e.ref(""),f=e.ref(!0),b=e.ref(!1),N=e.ref(!!t.displayText),B=l,T=e.ref(null);let C=null;const j=e.computed(()=>z?z.render(a.value):a.value),O=()=>{t.reader&&t.reader.cancel(),b.value=!0,d.value=!1,p(),N.value=!0,B("completed",a.value),f.value=!1,C&&(cancelAnimationFrame(C),C=null)},P=e.computed(()=>`${j.value}`),h=e.ref(!1),m=()=>{h.value=!0},p=()=>{h.value=!1},d=e.ref(!1),c=async()=>{if(!t.reader)return;const w=new TextDecoder("utf-8");for(f.value=!0;!b.value;)try{if(!t.reader){d.value=!0;break}const{value:s,done:k}=await t.reader.read();if(!t.reader){d.value=!0;break}if(k){d.value=!0;break}const x=q[t.model];if(!x)break;const R=x.call(q,s,w);if(R.done){d.value=!0;break}u.value+=R.content,C===null&&S()}catch(s){d.value=!0,console.log(3333,s),B("failed",s),O();break}finally{p()}},y=async()=>{t.scrollToBottomFn&&t.scrollToBottomFn()},g=(w=()=>{},s=()=>{})=>{if(u.value.length>0){const k=u.value.substring(0,10);a.value+=k,u.value=u.value.substring(10),w()}else s()},S=()=>{if(b.value&&C){cancelAnimationFrame(C),C=null,f.value=!1;return}d.value?g(()=>{C=requestAnimationFrame(S),B("updating",null)},()=>{B("completed",a.value),f.value=!1,N.value=!0,e.nextTick(()=>{if(d.value=!1,t.messagePostRender&&T.value)try{t.messagePostRender(T.value,a.value)}catch(w){console.error("messagePostRender 执行失败:",w)}}),C=null}):(g(),C=requestAnimationFrame(S)),y()};e.watch(()=>t.reader,()=>{t.reader&&c()},{immediate:!0,deep:!0}),e.onUnmounted(()=>{O()}),r({abortReader:O,initializeStart:m,initializeEnd:p}),e.computed(()=>h.value?!0:(!t.reader||!f||a.value,!1));const v=async()=>{try{const w=a.value;await me(w),o.success("复制成功")}catch(w){console.error("复制失败:",w),o.error("复制失败")}};return(w,s)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade"},{default:e.withCtx(()=>[P.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"refWrapperContent",ref:T,"text-16":"",class:"w-full h-full overflow-y-auto relative","p-24px":""},[e.createElementVNode("div",{class:"markdown-wrapper",innerHTML:P.value},null,8,pe),N.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ai-copy-btn-wrapper",onClick:v},[e.createVNode(U,{name:"/images/svg/copy.svg",color:"#666666"}),s[0]||(s[0]=e.createElementVNode("span",{class:"copy-text"},"复制",-1))])):e.createCommentVNode("",!0)],512)):e.createCommentVNode("",!0)]),_:1}))}},ye={class:"panel-header"},ge={class:"header-actions"},be={class:"header-title"},ke={class:"action-icons"},we={class:"body-content"},ve={key:0,class:"welcome-content"},Se={class:"subtitle"},xe={class:"highlight"},Ne={class:"quick-questions"},Ce=["onClick"],_e={key:1,class:"message-content user-content"},Ee={class:"panel-footer"},Te={key:0,src:ee,alt:"加载中",class:"loading-icon"},Re={class:"input-box"},Pe=["src"],Ve={__name:"ChatPanel",props:{modelValue:{type:Boolean,default:!1},token:{type:String,default:""},identifier:{type:String,default:""},baseUrl:{type:String,default:""},title:{type:String,default:"数智AI助理"},llmName:{type:String,default:"szjy"},messagePostRender:{type:Function,default:null},extraConfig:{type:Object,default:()=>({})}},emits:["update:modelValue","submit"],setup(n,{emit:r}){const{appContext:l}=e.getCurrentInstance(),{$message:i}=l.config.globalProperties,o=n,t=e.computed(()=>A.find(s=>s.modelName===o.llmName)??A.find(s=>s.modelName==="szjy")),a=r,u=e.ref(""),f=e.ref(null),b=e.ref(!1),N=e.ref([]),B=e.ref(["什么是AI助理,能做什么?","当前项目的基本情况?","当前项目的进度情况?","当前项目的参建方有哪些?","数智建管平台有哪些功能?能做什么?"]),T=e.ref([]),C=e.ref(!1),j=e.ref(null),O=()=>{e.nextTick(()=>{if(j.value){const s=j.value,k=s.scrollHeight,x=s.scrollTop,R=s.clientHeight;k-x-R<100?s.scrollTop=k:s.scrollTo({top:k})}})},P=e.ref(!1),h=e.computed(()=>P.value?"/images/ai-stop.png":"/images/ai-send.png"),m=(s,k)=>{console.log("onFailedReader",s,k),C.value=!1;const x=v();x&&x.initializeEnd(),i.error("转换失败,请重试"),P.value=!1,setTimeout(()=>{f.value&&f.value.focus()})},p=(s,k)=>{C.value=!1,P.value=!1,O(),k&&N.value[s]&&(N.value[s].displayText=k),setTimeout(()=>{f.value&&f.value.focus()})},d=s=>{P.value=!0},c=()=>{P.value=!1,a("update:modelValue",!1),b.value=!1,N.value=[]},y=e.ref(!1),g=()=>{y.value=!y.value},S=s=>{u.value=s,w()},v=()=>{for(let s=T.value.length-1;s>=0;s--)if(T.value[s])return T.value[s];return null},w=async()=>{if(console.log("stylizingLoading:",C.value),C.value){const _=v();console.log("lastPreviewer:",_),_&&(console.log("abortReader"),_.abortReader());return}if(!u.value.trim()){console.log("no input, return"),f.value.focus();return}N.value.push({type:"user",content:u.value}),P.value=!0,b.value=!0,a("submit",u.value),O();const s=u.value;u.value="";const k=N.value.length;T.value[k]&&T.value[k].initializeStart(),C.value=!0,N.value.push({type:"ai"});const{error:x,reader:R}=await de(t.value,{text:s,token:o.token,identifier:o.identifier,baseUrl:o.baseUrl,extraConfig:o.extraConfig});if(x){console.log(45455,x),m(k,x);return}R&&(N.value[k].reader=R)};return(s,k)=>{const x=e.resolveComponent("el-icon"),R=e.resolveComponent("el-input");return e.openBlock(),e.createBlock(e.Transition,{name:"slide"},{default:e.withCtx(()=>[n.modelValue?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ai-panel",{"drawer-mode":y.value}])},[e.createElementVNode("div",ye,[e.createElementVNode("div",ge,[e.createElementVNode("div",be,e.toDisplayString(n.title),1),e.createElementVNode("div",ke,[e.createVNode(x,{class:"action-icon",onClick:g},{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/drawer-layout.svg",color:"#999999"})]),_:1}),e.createVNode(x,{class:"action-icon",onClick:c},{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/close.svg",color:"#999999"})]),_:1})])])]),e.createElementVNode("div",we,[b.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:"chat-messages",ref_key:"messageContainerRef",ref:j},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,(_,L)=>(e.openBlock(),e.createElementBlock("div",{key:L,class:e.normalizeClass(["message-item",_.type==="user"?"user-message":"ai-message"])},[_.type==="ai"?(e.openBlock(),e.createBlock(he,{key:0,ref_for:!0,ref:V=>T.value[L]=V,reader:_.reader,"onUpdate:reader":V=>_.reader=V,model:o.llmName,displayText:_.displayText,scrollToBottomFn:O,messagePostRender:n.messagePostRender,onFailed:V=>m(L,V),onCompleted:V=>p(L,V),onUpdating:()=>d()},null,8,["reader","onUpdate:reader","model","displayText","messagePostRender","onFailed","onCompleted","onUpdating"])):(e.openBlock(),e.createElementBlock("div",_e,e.toDisplayString(_.content),1))],2))),128))],512)):(e.openBlock(),e.createElementBlock("div",ve,[k[2]||(k[2]=e.createElementVNode("div",{class:"title"},[e.createElementVNode("img",{src:G,alt:"AI助手",class:"panel-icon"}),e.createElementVNode("h3",{class:"title-text"},"Hi, 您好")],-1)),e.createElementVNode("div",Se,[k[1]||(k[1]=e.createTextVNode(" 我是",-1)),e.createElementVNode("span",xe,e.toDisplayString(n.title),1)]),e.createElementVNode("div",Ne,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(_,L)=>(e.openBlock(),e.createElementBlock("div",{key:L,class:"question-item",onClick:V=>S(_)},[e.createElementVNode("span",null,e.toDisplayString(_),1),e.createVNode(x,null,{default:e.withCtx(()=>[e.createVNode(U,{name:"/images/svg/arrow-right.svg",color:"#999999"})]),_:1})],8,Ce))),128))])]))]),e.createElementVNode("div",Ee,[P.value?(e.openBlock(),e.createElementBlock("img",Te)):e.createCommentVNode("",!0),e.createElementVNode("div",Re,[e.createVNode(R,{modelValue:u.value,"onUpdate:modelValue":k[0]||(k[0]=_=>u.value=_),ref_key:"refInputTextString",ref:f,placeholder:"请输入您的问题",autofocus:"",onKeyup:e.withKeys(w,["enter"])},{append:e.withCtx(()=>[e.createElementVNode("div",{class:"send-icon-box",onClick:w},[e.createElementVNode("img",{src:h.value,alt:"发送",class:"send-icon"},null,8,Pe)])]),_:1},8,["modelValue"])])])],2)):e.createCommentVNode("",!0)]),_:1})}}};var D={exports:{}};(function(n,r){(function(l,i){n.exports=i()})(window,function(){return function(l){var i={};function o(t){if(i[t])return i[t].exports;var a=i[t]={i:t,l:!1,exports:{}};return l[t].call(a.exports,a,a.exports,o),a.l=!0,a.exports}return o.m=l,o.c=i,o.d=function(t,a,u){o.o(t,a)||Object.defineProperty(t,a,{enumerable:!0,get:u})},o.r=function(t){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,a){if(1&a&&(t=o(t)),8&a||4&a&&typeof t=="object"&&t&&t.__esModule)return t;var u=Object.create(null);if(o.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:t}),2&a&&typeof t!="string")for(var f in t)o.d(u,f,(function(b){return t[b]}).bind(null,f));return u},o.n=function(t){var a=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(a,"a",a),a},o.o=function(t,a){return Object.prototype.hasOwnProperty.call(t,a)},o.p="",o(o.s=0)}([function(l,i,o){function t(h,m,p,d){p.push(h),d.push([].concat(m[h]||[]))}function a(h,m){if(!h)throw new Error("[getMaxDepsChain] dep 参数不能为空");var p=[],d=[],c=[];for(t(h,m,d,c);d.length;){var y=c.pop();if(y&&y.length){var g=y.shift();if(c.push(y),~d.indexOf(g))throw new Error("[getMaxDepsChain][loop] 存在循环依赖,请检查依赖关系; nextName: "+g+", mainStack: "+d);t(g,m,d,c)}else p.push([].concat(d)),d.pop()}return p.reduce(function(S,v){return v.length>S.length?v:S},[])}function u(h){if(!h)throw new Error("[depsParser] 入参不能为空");var m={};h.forEach(function(d){m[d.name]=d.deps||[]});var p=[];return h.forEach(function(d){var c=a(d.name,m).length-1;d.priority=c,p[c]=(p[c]||[]).concat(d)}),p}o.r(i),o.d(i,"loadScript",function(){return T}),o.d(i,"loadScripts",function(){return C}),o.d(i,"dynamicLoadScripts",function(){return j}),o.d(i,"createScriptsLoadIterator",function(){return O}),o.d(i,"loadScriptsQueue",function(){return P}),o.d(i,"getMaxDepsChain",function(){return a}),o.d(i,"depsParser",function(){return u});var f=function(){return(f=Object.assign||function(h){for(var m,p=1,d=arguments.length;p<d;p++)for(var c in m=arguments[p])Object.prototype.hasOwnProperty.call(m,c)&&(h[c]=m[c]);return h}).apply(this,arguments)},b=function(h,m,p,d){return new(p||(p=Promise))(function(c,y){function g(w){try{v(d.next(w))}catch(s){y(s)}}function S(w){try{v(d.throw(w))}catch(s){y(s)}}function v(w){var s;w.done?c(w.value):(s=w.value,s instanceof p?s:new p(function(k){k(s)})).then(g,S)}v((d=d.apply(h,[])).next())})},N=function(h,m){var p,d,c,y,g={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]};return y={next:S(0),throw:S(1),return:S(2)},typeof Symbol=="function"&&(y[Symbol.iterator]=function(){return this}),y;function S(v){return function(w){return function(s){if(p)throw new TypeError("Generator is already executing.");for(;g;)try{if(p=1,d&&(c=2&s[0]?d.return:s[0]?d.throw||((c=d.return)&&c.call(d),0):d.next)&&!(c=c.call(d,s[1])).done)return c;switch(d=0,c&&(s=[2&s[0],c.value]),s[0]){case 0:case 1:c=s;break;case 4:return g.label++,{value:s[1],done:!1};case 5:g.label++,d=s[1],s=[0];continue;case 7:s=g.ops.pop(),g.trys.pop();continue;default:if(c=g.trys,!((c=c.length>0&&c[c.length-1])||s[0]!==6&&s[0]!==2)){g=0;continue}if(s[0]===3&&(!c||s[1]>c[0]&&s[1]<c[3])){g.label=s[1];break}if(s[0]===6&&g.label<c[1]){g.label=c[1],c=s;break}if(c&&g.label<c[2]){g.label=c[2],g.ops.push(s);break}c[2]&&g.ops.pop(),g.trys.pop();continue}s=m.call(h,g)}catch(k){s=[6,k],d=0}finally{p=c=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([v,w])}}},B=function(h){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var m,p=h[Symbol.asyncIterator];return p?p.call(h):(h=typeof __values=="function"?__values(h):h[Symbol.iterator](),m={},d("next"),d("throw"),d("return"),m[Symbol.asyncIterator]=function(){return this},m);function d(c){m[c]=h[c]&&function(y){return new Promise(function(g,S){(function(v,w,s,k){Promise.resolve(k).then(function(x){v({value:x,done:s})},w)})(g,S,(y=h[c](y)).done,y.value)})}}};function T(h,m){return m===void 0&&(m=!1),new Promise(function(p,d){var c=m?document.head:document.body,y=document.createElement("script");y.type="text/javascript",y.src=h,y.crossOrigin="anonymous",y.onreadystatechange=p,y.onload=p,y.onerror=d,c.appendChild(y)})}var C=function(h,m){return m===void 0&&(m={}),b(void 0,void 0,void 0,function(){var p,d,c,y,g;return N(this,function(S){switch(S.label){case 0:return p=m.baseUrl,d=p===void 0?"":p,c=m.lastLoadResult,y=m.inHead,g=y!==void 0&&y,[4,Promise.all(h.map(function(v){return b(void 0,void 0,void 0,function(){var w,s,k,x,R,_,L,V;return N(this,function(Y){switch(Y.label){case 0:return w=v.name,s=v.path,k=v.deps,(L={})[w]=!0,x=L,(V={})[w]=!1,R=V,window[w]?[2,x]:[3,1];case 1:return _=!0,k&&c&&[].concat(k).forEach(function(Fe){c[Fe]!==!1&&(_=!0)}),_?[4,T(s.indexOf("http")===0||s.indexOf("//:")===0?s:d+s,g).then(function(){return x}).catch(function(){return R})]:[3,3];case 2:return[2,Y.sent()];case 3:return[2,R]}})})}))];case 1:return[2,S.sent()]}})})},j=function(h,m){return m===void 0&&(m={}),function(){var p=[].concat(u(h));return{next:function(){if(p.length){var d=p.shift();return C(d,m).then(function(c){return{value:c,done:!1}})}return Promise.resolve({done:!0})}}}},O=function(h,m){var p;return m===void 0&&(m={}),(p={})[Symbol.asyncIterator]=j(h,m),p},P=function(h,m){return m===void 0&&(m={}),b(void 0,void 0,void 0,function(){var p,d,c,y,g,S;return N(this,function(v){switch(v.label){case 0:v.trys.push([0,5,6,11]),p=B(O(h,m)),v.label=1;case 1:return[4,p.next()];case 2:if((d=v.sent()).done)return[3,4];c=d.value,m.lastLoadResult=m.lastLoadResult||{},console.log("current load: ",c),c.forEach(function(w){m.lastLoadResult=f(f({},m.lastLoadResult),w)}),v.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return y=v.sent(),g={error:y},[3,11];case 6:return v.trys.push([6,,9,10]),d&&!d.done&&(S=p.return)?[4,S.call(p)]:[3,8];case 7:v.sent(),v.label=8;case 8:return[3,10];case 9:if(g)throw g.error;return[7];case 10:return[7];case 11:return[2,m.lastLoadResult]}})})}}])})})(D);var Be=D.exports;const Oe={key:0,class:"ai-assistant"},Le={name:"AiChat"},je=e.defineComponent({...Le,props:{token:{type:String,default:""},identifier:{type:String,default:""},baseUrl:{type:String,default:""},title:{type:String,default:"数智AI助理"},llmName:{type:String,default:"szjy"},messagePostRender:{type:Function,default:null},extraConfig:{type:Object,default:()=>({})}},setup(n){const r=e.ref(!1),l=e.ref(!1),i=()=>{r.value=!r.value},o=()=>{l.value=!0,r.value=!1},t=f=>{console.log("用户输入:",f)},a=[{name:"markdownit",path:"markdown-it.min.js"},{name:"hljs",path:"highlight.11.11.1.min.js"}];let u={};return Be.loadScriptsQueue(a,{baseUrl:"/scripts/ai/",lastLoadResult:u,inHead:!1}).then(f=>{if(console.log("load ai deps: ",f),window.markdownit){const b=window.markdownit();console.log("markdownit: ",b),ue()}}),(f,b)=>l.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(Ve,{modelValue:r.value,"onUpdate:modelValue":b[0]||(b[0]=N=>r.value=N),onSubmit:t,token:n.token,identifier:n.identifier,baseUrl:n.baseUrl,title:n.title,llmName:n.llmName,messagePostRender:n.messagePostRender,extraConfig:n.extraConfig},null,8,["modelValue","token","identifier","baseUrl","title","llmName","messagePostRender","extraConfig"]),e.createElementVNode("div",{class:"ai-icon",onClick:i},[e.createElementVNode("div",{class:"close-icon",onClick:e.withModifiers(o,["stop"])},[...b[1]||(b[1]=[e.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"8",height:"8"},[e.createElementVNode("path",{d:"M512 456.310154L94.247385 38.557538a39.384615 39.384615 0 0 0-55.689847 55.689847L456.310154 512 38.557538 929.752615a39.384615 39.384615 0 0 0 55.689847 55.689847L512 567.689846l417.752615 417.752616c15.163077 15.163077 40.526769 15.163077 55.689847 0s15.163077-40.526769 0-55.689847L567.689846 512l417.752616-417.752615a39.384615 39.384615 0 0 0-55.689847-55.689847L512 456.310154z",fill:"currentColor"})],-1)])]),b[2]||(b[2]=e.createElementVNode("img",{src:Z,alt:"AI助手"},null,-1)),b[3]||(b[3]=e.createElementVNode("span",{class:"ai-icon-text"},"AI助手",-1))])]))}}),W=F(je,[["__scopeId","data-v-33f89960"]]),J=Object.freeze(Object.defineProperty({__proto__:null,SzAiChat:W},Symbol.toStringTag,{value:"Module"})),I=function(n){if(!I.installed){I.installed=!0;for(let r in J){const l=Reflect.get(J,r);n.component(l.name,l)}}},ze=(n,r)=>{const l=r?`?${new URLSearchParams(r).toString()}`:"";console.log(`点击了路由链接: ${n}${l}`)},H=n=>{const r=n.indexOf("?");if(r===-1)return{routeName:n};const l=n.substring(0,r),i=n.substring(r+1),o={};return new URLSearchParams(i).forEach((a,u)=>{o[u]=a}),{routeName:l,queryParams:Object.keys(o).length>0?o:void 0}},Ue={color:"#536fec",fontWeight:"bold",textDecoration:"underline",cursor:"pointer",padding:"0 3px"},Q=n=>{const r=/#router:([^#]+)#/g,l=[];let i=0,o;for(;(o=r.exec(n))!==null;){o.index>i&&l.push({text:n.substring(i,o.index)});const t=o[1],{routeName:a,queryParams:u}=H(t);l.push({text:a,routeName:a,queryParams:u}),i=r.lastIndex}return i<n.length&&l.push({text:n.substring(i)}),l},K=(n,r,l={},i)=>{const{onRouteClick:o=ze,linkStyle:t={}}=l,a=document.createElement("a");a.href="#",a.textContent=n;const u={...Ue,...t};return Object.assign(a.style,u),a.addEventListener("click",f=>{f.preventDefault(),o(r,i)}),a},X=n=>{const r=/#router:([^#]+)#/g,l=[],i=document.createTreeWalker(n,NodeFilter.SHOW_TEXT,null);let o=i.nextNode();for(;o;){const t=o,a=t.textContent||"";if(r.test(a)){r.lastIndex=0;const u=Q(a);u.length>0&&l.push({node:t,replacements:u})}o=i.nextNode()}return l},Ie=(n,r,l={})=>{const i=X(n);i.forEach(({node:o,replacements:t})=>{var u;const a=document.createDocumentFragment();t.forEach(({text:f,routeName:b,queryParams:N})=>{if(b){const B=K(f,b,l,N);a.appendChild(B)}else a.appendChild(document.createTextNode(f))}),(u=o.parentNode)==null||u.replaceChild(a,o)}),l!=null&&l.nodeCallback&&i.forEach(({node:o,replacements:t})=>{var a;(a=l.nodeCallback)==null||a.call(l,o,t)})},$e="0.1.8",Ae="Sz";function qe({componentPrefix:n=Ae,components:r=[]}={}){const l=[];function i(t,a,u){t.component(n+a)||t.component(n+a,u)}function o(t){l.includes(t)||(l.push(t),r.forEach(a=>{const{name:u,alias:f}=a;i(t,u,a),f&&f.forEach(b=>{i(t,b,a)})}))}return{version:$e,componentPrefix:n,install:o}}const Me={install(n){I(n)}};E.SzAiChat=W,E.create=qe,E.createRouteLink=K,E.default=Me,E.findRouteTextNodes=X,E.parseRouteMarkerContent=H,E.parseRouteMarkers=Q,E.routeLinkRender=Ie,Object.defineProperties(E,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|