lke-component 2.0.0-beta.18 → 2.0.0-beta.20
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/dist/lke-component.cjs.js +2 -2
- package/dist/lke-component.es.js +67 -11
- package/dist/lke-component.umd.js +60 -60
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -46,7 +46,7 @@ https://github.com/highlightjs/highlight.js/issues/2277`),B=L,R=O),P===void 0&&(
|
|
|
46
46
|
|
|
47
47
|
<div class="video-placeholder"></div>
|
|
48
48
|
|
|
49
|
-
`))}return t=qN(t),t=WN(t),r&&(t=JN(t,n)),YN(t)||(t=XN(t),t=KN.clean(t)),t=EN(t),t=kN(t),t=CN(t),t=MN(t),t=wN(t),t=SN(t),t=UN(t),i||(t=AN(t)),t=TN(t),a&&(t=FN(t)),o&&(t=BN(t,s)),u?t=PN(t,l):t=RN(t),c&&c.length>0?t=NN(t,c):t=ON(t),f?t=zN(t):t=VN(t),h?t=$N(t):t=GN(t),t=DN(t),t=jN.process(dE(t)),t}function JN(t,e){if(!t||Gb(window.location.hash,"from"))return t;let n=["lke.cloud.tencent.com","qidian"];e&&(n=e.concat(n));const i=HN(t);i.forEach((u,l)=>{t=t.replace(u,`IMG_URL${l}`)});const a=`${window.location.protocol}//${window.location.host}/lke#/link-info/redirect?target=`,o=n.map(u=>`(?!.*${u})`).join(""),s=new RegExp(`(\\[([^\\]]+)\\]\\((https?:\\/\\/${o}[^\\s)]+)\\))|(<a\\s+[^>]*href="(${o}[^"]+)"[^>]*>(.*?)<\\/a>)`,"gi");return t=t.replace(s,(u,l,c,f,h,d,p)=>l&&c?`[${c}](${a}${encodeURIComponent(f)})`:d&&!d.startsWith("#")?`<a href="${a}${encodeURIComponent(d)}">${p}</a>`:u),i.forEach((u,l)=>{t=t.replace(`IMG_URL${l}`,u)}),t}function af(t,e={}){return LN(t,r=>QN(r,e))}const eO={data(){return{currentTimer:null,currentIndex:0}},methods:{clearTimer(){this.currentTimer&&(clearTimeout(this.currentTimer),this.currentTimer=null)},startCurrentTimer(t={}){const{printCount:e=1,printCountTime:r=16,hideCursorPoint:n=!1,isFinal:i=!1}=t;this.clearTimer(),this.currentTimer=setTimeout(()=>{const a=e;this.currentIndex+=a,this.renderText=n?this.currentText.substring(0,this.currentIndex):this.currentText.substring(0,this.currentIndex)+"CURSOR_POINT",(this.currentIndex<this.currentText.length||!i)&&this.startCurrentTimer(t)},r)}},beforeDestroy(){this.clearTimer()}};function tO(t,e={}){const{type:r="text/javascript",crossOrigin:n}=e;return new Promise((i,a)=>{if(document.querySelector(`script[src="${t}"]`)){i();return}const o=document.createElement("script");o.src=t,o.type=r,n&&(o.crossOrigin=n),o.onload=i,o.onerror=()=>a(new Error(`Failed to load: ${t}`)),document.head.appendChild(o)})}function rO(){const t=Date.now(),e=5*60*1e3;return Math.floor(t/e)*e}async function nO(){try{window.tdWidgetSrc="/cdn-proxy/webim/assets/static/widget/release/lib/js/";const t=window.tdWidgetSrc||"https://cdn.xiaowei.qq.com/webim/assets/static/widget/release/lib/js/",e=rO();return await tO(`${t}adp-widget.js?nounce=${e}`,{type:"module"}),!0}catch(t){throw console.error("Failed to load adp-widget:",t),t}}Ia.config&&!Ia.config.ignoredElements.includes("adp-widget")&&Ia.config.ignoredElements.push("adp-widget");const iO={name:"MsgWidget",props:{output:{type:String,default:""},locale:{type:String,default:"zh-CN"},disable:{type:Boolean,default:!1}},data(){return{loaded:!1}},async mounted(){try{await nO(),this.loaded=!0}catch(t){console.error("[MsgWidget] 加载 adp-widget 失败:",t)}},methods:{handleAction(t){const{action:e}=t.detail||{};this.$emit("widget-action",e),this.$emit("widget-event",t)},handleRendered(t){const{success:e,config:r,error:n,timestamp:i}=t.detail||{};this.$emit("widget-rendered",{success:e,config:r,error:n,timestamp:i})}}};var aO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"lke__widget-container"},[e.output&&e.loaded?r("adp-widget",{ref:"widget",attrs:{locale:e.locale,"widget-json":e.output,disable:e.disable},on:{"widget-rendered":e.handleRendered,"widget-action":e.handleAction}}):e._e()],1)},oO=[],sO=pr(iO,aO,oO,!1,null,"c152fdb4",null,null);const Hb=sO.exports,Y=(...t)=>{console.log("[StreamAudioPlayer24]",...t)};let Ub=class{constructor(){this.playMode=null,this.audioContext=null,this.audioQueue=[],this.pendingChunks=[],this.isPlaying=!1,this.totalDuration=0,this.estimatedDuration=0,this.pausedAt=0,this.startedAt=0,this.timeUpdateInterval=null,this.scheduledSources=[],this.nextScheduleTime=0,this.scheduledCount=0,this.autoPlayCheckInterval=null,this.autoPlayCheckWaitTime=0,this.processedChunkCount=0,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.decodeAheadCount=1;const e=this.isMobileDevice();this.maxDecodedBuffers=e?8:20,this.playedBufferCount=0,this.audioElement=null,this.iosUnlockAudio=null,this.mediaStreamDestination=null,this.wasPlayingBeforeHidden=!1,this.handleVisibilityChange=null,this.onPlayCallback=null,this.onPauseCallback=null,this.onEndCallback=null,this.onErrorCallback=null,this.onTimeUpdateCallback=null,this.onDurationChangeCallback=null,this.onUrlReadyCallback=null,this.generationComplete=!1,this.durationFromUrlSet=!1,this.urlReady=!1,this.fullAudioUrl=null,this.preloadedAudioElement=null}isMobileDevice(){return typeof navigator>"u"?!1:/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}initAudioContext(){if(!this.audioContext)try{const e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e,Y("[initAudioContext] AudioContext 创建成功",{state:this.audioContext.state,sampleRate:this.audioContext.sampleRate,isIOS:/iPhone|iPad|iPod/i.test(navigator.userAgent)}),this.audioContext.onstatechange=()=>{if(Y("[AudioContext.onstatechange] 状态变化:",this.audioContext.state),(this.audioContext.state==="interrupted"||this.audioContext.state==="suspended")&&this.isPlaying&&this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[AudioContext.onstatechange] iOS audio 元素已暂停")}catch{}},this.handleVisibilityChange=()=>{var r,n,i,a;document.hidden?(this.wasPlayingBeforeHidden=this.isPlaying,Y("[visibilitychange] 页面隐藏,记录播放状态:",this.wasPlayingBeforeHidden)):(Y("[visibilitychange] 页面可见",{wasPlayingBeforeHidden:this.wasPlayingBeforeHidden,isPlaying:this.isPlaying,audioContextState:(r=this.audioContext)==null?void 0:r.state}),this.wasPlayingBeforeHidden&&(((n=this.audioContext)==null?void 0:n.state)==="suspended"||((i=this.audioContext)==null?void 0:i.state)==="interrupted"?this.audioContext.resume().then(()=>{Y("[visibilitychange] AudioContext 已恢复"),this.isPlaying&&this.iosUnlockAudio&&this.iosUnlockAudio.play().catch(o=>{Y("[visibilitychange] iOS audio 恢复播放失败:",o)})}).catch(o=>{Y("[visibilitychange] AudioContext 恢复失败:",o),this.isPlaying&&(this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback())}):((a=this.audioContext)==null?void 0:a.state)==="running"&&this.isPlaying&&this.iosUnlockAudio&&this.iosUnlockAudio.play().catch(o=>{Y("[visibilitychange] iOS audio 恢复播放失败:",o)})),this.wasPlayingBeforeHidden=!1)},document.addEventListener("visibilitychange",this.handleVisibilityChange),/iPhone|iPad|iPod/i.test(navigator.userAgent)&&this.setupIOSAudioRoute()}catch(e){console.error("[initAudioContext] 创建 AudioContext 失败:",e),this.onErrorCallback&&this.onErrorCallback(new Error("浏览器不支持音频播放"))}}setupIOSAudioRoute(){if(this.audioContext)try{if(typeof this.audioContext.createMediaStreamDestination!="function"){Y("[setupIOSAudioRoute] 浏览器不支持 createMediaStreamDestination");return}this.mediaStreamDestination=this.audioContext.createMediaStreamDestination(),this.iosUnlockAudio=document.createElement("audio"),this.iosUnlockAudio.srcObject=this.mediaStreamDestination.stream,this.iosUnlockAudio.setAttribute("playsinline","true"),this.iosUnlockAudio.setAttribute("webkit-playsinline","true"),this.iosUnlockAudio.onerror=e=>{Y("[setupIOSAudioRoute] iOS audio 元素错误:",e)},Y("[setupIOSAudioRoute] iOS 音频路由设置完成")}catch(e){console.error("[setupIOSAudioRoute] 设置失败:",e),this.mediaStreamDestination=null,this.iosUnlockAudio=null}}getAudioDestination(){return this.mediaStreamDestination?this.mediaStreamDestination:this.audioContext?this.audioContext.destination:null}async startIOSAudioElement(){if(this.iosUnlockAudio)try{await this.iosUnlockAudio.play(),Y("[startIOSAudioElement] iOS audio 元素播放启动成功")}catch(e){Y("[startIOSAudioElement] iOS audio 元素播放失败:",e)}}initAudioElement(){this.audioElement||(this.audioElement=new Audio,this.audioElement.preload="metadata",this.audioElement.addEventListener("play",()=>{this.isPlaying=!0,this.onPlayCallback&&this.onPlayCallback()}),this.audioElement.addEventListener("pause",()=>{this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback()}),this.audioElement.addEventListener("ended",()=>{this.isPlaying=!1,this.onEndCallback&&this.onEndCallback()}),this.audioElement.addEventListener("timeupdate",()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime,this.audioElement.duration||0)}),this.audioElement.addEventListener("durationchange",()=>{this.totalDuration=this.audioElement.duration||0,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}),this.audioElement.addEventListener("error",e=>{this.onErrorCallback&&this.onErrorCallback(new Error("音频加载失败: "+(e.message||"未知错误")))}),this.audioElement.addEventListener("loadedmetadata",()=>{this.totalDuration=this.audioElement.duration||0,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}))}setPlayMode(e){this.playMode!==e&&(this.playMode==="stream"?this.clearStreamMode():this.playMode==="url"&&this.clearUrlMode(),this.playMode=e,e==="stream"?this.initAudioContext():e==="url"&&this.initAudioElement())}clearStreamMode(){this.stop(),this.audioQueue=[],this.pendingChunks=[],this.totalDuration=0,this.estimatedDuration=0,this.scheduledCount=0,this.nextScheduleTime=0,this.processedChunkCount=0,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.playedBufferCount=0,this.generationComplete=!1,this.fullAudioUrl=null,this.urlReady=!1,this.preloadedAudioElement=null,this.iosUnlockAudio&&(this.iosUnlockAudio.pause(),this.iosUnlockAudio.srcObject=null,this.iosUnlockAudio=null),this.mediaStreamDestination=null,this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.handleVisibilityChange=null),this.audioContext&&(this.audioContext.onstatechange=null,this.audioContext.close().catch(()=>{}),this.audioContext=null),this.wasPlayingBeforeHidden=!1}clearUrlMode(){this.audioElement&&(this.audioElement.pause(),this.audioElement.src="")}setAudioUrl(e){e&&(this.setPlayMode("url"),this.audioElement.src=e,this.audioElement.load())}async ensureAudioContextRunning(){if(!this.audioContext)throw new Error("AudioContext not initialized");if(Y("[ensureAudioContextRunning] 当前状态:",this.audioContext.state),this.audioContext.state==="suspended")try{await this.audioContext.resume(),Y("[ensureAudioContextRunning] resume 成功,新状态:",this.audioContext.state),/iPhone|iPad|iPod/i.test(navigator.userAgent)&&await this.playUnlockSound()}catch(e){throw console.error("[ensureAudioContextRunning] resume 失败:",e),new Error("无法激活音频上下文")}else if(this.audioContext.state==="interrupted")try{await this.audioContext.resume(),Y("[ensureAudioContextRunning] 从 interrupted 状态恢复")}catch(e){throw console.error("[ensureAudioContextRunning] 从 interrupted 恢复失败:",e),new Error("无法恢复音频上下文")}}async playUnlockSound(){if(this.audioContext)try{const e=this.audioContext.createBuffer(1,1,this.audioContext.sampleRate),r=this.audioContext.createBufferSource();r.buffer=e,r.connect(this.getAudioDestination()),r.start(0),Y("[playUnlockSound] 播放解锁音频完成")}catch(e){Y("[playUnlockSound] 播放解锁音频失败(可忽略):",e)}}addBase64ChunkLazy(e,r=1){if(!e)return;this.setPlayMode("stream"),this.pendingChunks.push(e);const n=(e.length*.75/1024).toFixed(2);Y(`[addBase64ChunkLazy] 添加第 ${this.pendingChunks.length+this.processedChunkCount} 个chunk`,{chunkSize:`${n} KB`,pendingChunks:this.pendingChunks.length,processedChunkCount:this.processedChunkCount,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,isPlaying:this.isPlaying,totalDuration:this.totalDuration.toFixed(2),estimatedDuration:this.estimatedDuration.toFixed(2)}),this.estimatedDuration+=r,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration()),this.autoPlayCheckWaitTime>0&&(Y("[addBase64ChunkLazy] 重置等待超时时间"),this.autoPlayCheckWaitTime=0),this.isPlaying?(Y("[addBase64ChunkLazy] 正在播放,触发 decodeAhead"),this.decodeAhead()):Y("[addBase64ChunkLazy] 未在播放状态,不触发解码")}async addBase64Chunk(e){e&&this.addBase64ChunkLazy(e)}getDisplayDuration(){return Math.floor(this.totalDuration+this.estimatedDuration)}async decodeAhead(){let e=0;if(this.audioQueue.forEach(i=>{e+=i.duration}),Y("[decodeAhead] 开始",{decodingInProgress:this.decodingInProgress,pendingChunks:this.pendingChunks.length,audioQueueLength:this.audioQueue.length,currentQueueDuration:e.toFixed(2),scheduledCount:this.scheduledCount,isPlaying:this.isPlaying,generationComplete:this.generationComplete,totalDuration:this.totalDuration.toFixed(2)}),this.decodingInProgress){Y("[decodeAhead] 已在解码中,跳过");return}if(this.pendingChunks.length===0){Y("[decodeAhead] 没有待解码的 chunk,跳过");return}const r=this.audioQueue.length-this.scheduledCount;if(Y("[decodeAhead] 未调度数量检查",{unscheduledCount:r,decodeAheadCount:this.decodeAheadCount,needMoreDecode:r<this.decodeAheadCount}),r>=this.decodeAheadCount&&this.pendingChunks.length>0){Y("[decodeAhead] 已有足够预解码 buffer,100ms 后再检查"),setTimeout(()=>this.decodeAhead(),100);return}this.decodingInProgress=!0;const n=this.processedChunkCount+1;try{const i=this.pendingChunks.shift(),a=(i.length*.75/1024).toFixed(2);Y(`[decodeAhead] 开始解码第 ${n} 个chunk`,{size:`${a} KB`});const o=window.atob(i),s=new Uint8Array(o.length);for(let l=0;l<o.length;l++)s[l]=o.charCodeAt(l);const u=s.buffer;await this.addAudioChunkInternal(u),Y(`[decodeAhead] 第 ${n} 个chunk 解码完成`,{audioQueueLength:this.audioQueue.length,totalDuration:this.totalDuration.toFixed(2),durationFromUrlSet:this.durationFromUrlSet}),this.durationFromUrlSet||(this.estimatedDuration>0&&(this.estimatedDuration=Math.max(0,this.estimatedDuration-1)),this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration()))}catch(i){console.error(`[decodeAhead] 解码第 ${n} 个chunk 失败:`,i),this.onErrorCallback&&this.onErrorCallback(i)}finally{this.decodingInProgress=!1}this.pendingChunks.length>0&&this.isPlaying?(Y("[decodeAhead] 继续解码下一个chunk"),setTimeout(()=>this.decodeAhead(),0)):Y("[decodeAhead] 解码结束",{pendingChunks:this.pendingChunks.length,isPlaying:this.isPlaying})}async processAudioDataArray(e){if(!e||!Array.isArray(e))return;const r=e.slice(this.processedChunkCount);Y("[processAudioDataArray] 处理音频数据数组",{totalLength:e.length,processedChunkCount:this.processedChunkCount,newChunksCount:r.length});for(const n of r)await this.addBase64Chunk(n),this.processedChunkCount++;Y("[processAudioDataArray] 处理完成",{processedChunkCount:this.processedChunkCount})}decodeAudioDataCompat(e){const r=(e.byteLength/1024).toFixed(2);return Y("[decodeAudioDataCompat] 开始解码",{size:`${r} KB`}),new Promise((n,i)=>{const a=this.audioContext.decodeAudioData(e,o=>{Y("[decodeAudioDataCompat] 解码成功",{duration:o.duration.toFixed(2),sampleRate:o.sampleRate,channels:o.numberOfChannels}),n(o)},o=>{console.error("[decodeAudioDataCompat] 解码失败",{error:(o==null?void 0:o.message)||o,bufferSize:`${r} KB`}),i(o||new Error("解码音频数据失败"))});a&&typeof a.then=="function"&&a.then(n).catch(o=>{console.error("[decodeAudioDataCompat] Promise 解码失败",{error:(o==null?void 0:o.message)||o,bufferSize:`${r} KB`}),i(o)})})}async addAudioChunk(e){return this.addAudioChunkInternal(e)}async addAudioChunkInternal(e){if(this.setPlayMode("stream"),!this.audioContext)throw new Error("AudioContext not initialized");try{let r;e instanceof Blob?r=await e.arrayBuffer():r=e;const n=(r.byteLength/1024).toFixed(2);Y("[addAudioChunkInternal] 开始解码 ArrayBuffer",{size:`${n} KB`});const i=r.slice(0),a=await this.decodeAudioDataCompat(i),o=this.audioQueue.length,s=this.totalDuration;this.audioQueue.push(a),this.durationFromUrlSet||(this.totalDuration+=a.duration),Y("[addAudioChunkInternal] 解码成功",{bufferDuration:a.duration.toFixed(2),sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,length:a.length,audioQueueLength:`${o} -> ${this.audioQueue.length}`,totalDuration:`${s.toFixed(2)} -> ${this.totalDuration.toFixed(2)}`,durationFromUrlSet:this.durationFromUrlSet}),this.isPlaying&&!this.isSchedulingFromPosition?(Y("[addAudioChunkInternal] 正在播放,调用 scheduleNewChunks"),this.scheduleNewChunks()):this.isSchedulingFromPosition?Y("[addAudioChunkInternal] 正在执行 scheduleFromPosition,跳过 scheduleNewChunks"):Y("[addAudioChunkInternal] 未在播放状态,不调度"),this.onDurationChangeCallback&&!this.durationFromUrlSet&&this.onDurationChangeCallback(this.getDisplayDuration())}catch(r){console.error("[addAudioChunkInternal] 解码音频数据失败:",r),this.onErrorCallback&&this.onErrorCallback(r)}}async addPCMChunk(e,r=24e3,n=1,i=16){if(this.setPlayMode("stream"),!this.audioContext)throw new Error("AudioContext not initialized");try{const a=i/8,o=e.byteLength/(a*n),s=this.audioContext.createBuffer(n,o,r),u=new DataView(e);for(let l=0;l<n;l++){const c=s.getChannelData(l);for(let f=0;f<o;f++){let h;if(i===16)h=u.getInt16((f*n+l)*2,!0)/32768;else if(i===8)h=(u.getUint8(f*n+l)-128)/128;else if(i===32)h=u.getFloat32((f*n+l)*4,!0);else throw new Error(`Unsupported bits per sample: ${i}`);c[f]=h}}this.audioQueue.push(s),this.totalDuration+=s.duration,this.isPlaying&&this.audioContext&&this.scheduleNewChunks(),this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}catch(a){this.onErrorCallback&&this.onErrorCallback(a)}}scheduleNewChunks(){if(!this.audioContext||!this.isPlaying){Y("[scheduleNewChunks] 跳过",{hasAudioContext:!!this.audioContext,isPlaying:this.isPlaying});return}const e=this.audioContext.currentTime,r=this.scheduledCount;this.scheduledCount>this.audioQueue.length&&(Y("[scheduleNewChunks] 警告:scheduledCount 超出 audioQueue 长度!",{scheduledCount:this.scheduledCount,audioQueueLength:this.audioQueue.length,playedBufferCount:this.playedBufferCount}),this.scheduledCount=this.audioQueue.length),Y("[scheduleNewChunks] 开始调度",{audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,toSchedule:this.audioQueue.length-this.scheduledCount,currentTime:e.toFixed(3),nextScheduleTime:this.nextScheduleTime.toFixed(3),pendingChunks:this.pendingChunks.length});for(let n=this.scheduledCount;n<this.audioQueue.length;n++){const i=this.audioQueue[n],a=this.audioContext.createBufferSource();a.buffer=i,a.connect(this.getAudioDestination());const o=Math.max(e,this.nextScheduleTime);Y(`[scheduleNewChunks] 调度第 ${n+1} 个buffer`,{bufferDuration:i.duration.toFixed(2),scheduleTime:o.toFixed(3),currentTime:e.toFixed(3)}),a.start(o,0,i.duration),this.nextScheduleTime=o+i.duration,this.scheduledCount++,this.scheduledSources.push(a),a.onended=()=>{const s=this.scheduledSources.indexOf(a);if(s===-1){Y(`[sourceNode.onended] 第 ${n+1} 个buffer 被手动停止,跳过后续逻辑`);return}if(this.scheduledSources.splice(s,1),this.playedBufferCount++,this.cleanupOldBuffers(),Y(`[sourceNode.onended] 第 ${n+1} 个buffer 播放结束`,{scheduledSourcesLength:this.scheduledSources.length,isPlaying:this.isPlaying,pendingChunks:this.pendingChunks.length,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,generationComplete:this.generationComplete,playedBufferCount:this.playedBufferCount}),this.decodeAhead(),this.scheduledSources.length===0&&this.isPlaying){let u=0;this.audioQueue.forEach(l=>{u+=l.duration}),Y("[sourceNode.onended] 所有已调度片段播放完毕,尝试调度新片段",{audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledCount:this.audioQueue.length-this.scheduledCount,remainingQueueDuration:u.toFixed(2),pendingChunks:this.pendingChunks.length}),this.scheduleNewChunks(),this.scheduledSources.length===0&&(Y("[sourceNode.onended] 调度后仍无片段",{pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledBuffers:this.audioQueue.length-this.scheduledCount}),this.pendingChunks.length>0?(Y("[sourceNode.onended] 还有待解码chunk,启动 autoPlayCheck"),this.startAutoPlayCheck()):this.audioQueue.length>this.scheduledCount?(Y("[sourceNode.onended] 还有未调度的buffer,重新调度"),this.scheduleNewChunks()):this.generationComplete?(Y("[sourceNode.onended] 生成完成,结束播放"),this.handlePlaybackEnd()):(Y("[sourceNode.onended] 等待新数据,启动 autoPlayCheck"),this.startAutoPlayCheck()))}}}Y("[scheduleNewChunks] 调度完成",{scheduledCount:`${r} -> ${this.scheduledCount}`,scheduledSourcesLength:this.scheduledSources.length,nextScheduleTime:this.nextScheduleTime.toFixed(3)})}async play(){if(this.playMode==="url"&&this.audioElement){try{await this.audioElement.play()}catch(e){this.onErrorCallback&&this.onErrorCallback(e)}return}if(!this.audioContext){this.onErrorCallback&&this.onErrorCallback(new Error("AudioContext not initialized"));return}if(!this.isPlaying){try{await this.ensureAudioContextRunning(),await this.startIOSAudioElement()}catch(e){this.onErrorCallback&&this.onErrorCallback(e);return}if(this.audioQueue.length===0&&this.pendingChunks.length>0&&await this.decodeFirstChunk(),this.audioQueue.length===0){Y("[play] 没有可播放的音频数据");return}this.isPlaying=!0,this.startedAt=this.audioContext.currentTime-this.pausedAt,this.pausedAt===0&&(this.scheduledCount=0,this.nextScheduleTime=this.audioContext.currentTime),this.pausedAt===0?this.scheduleNewChunks():this.scheduleFromPosition(this.pausedAt),this.decodeAhead(),this.onPlayCallback&&this.onPlayCallback(),this.startTimeUpdate(),Y("[play] 播放开始",{audioContextState:this.audioContext.state,audioQueueLength:this.audioQueue.length,pausedAt:this.pausedAt,isIOS:/iPhone|iPad|iPod/i.test(navigator.userAgent)})}}async decodeFirstChunk(){if(this.pendingChunks.length===0)return;const e=this.pendingChunks.shift();try{const r=window.atob(e),n=new Uint8Array(r.length);for(let a=0;a<r.length;a++)n[a]=r.charCodeAt(a);const i=n.buffer;await this.addAudioChunkInternal(i),this.estimatedDuration>0&&(this.estimatedDuration=Math.max(0,this.estimatedDuration-1))}catch(r){console.error("解码首个 chunk 失败:",r)}}scheduleFromPosition(e){if(!this.audioContext)return;this.isSchedulingFromPosition=!0;let r=0;const n=this.audioContext.currentTime;let i=n,a=0;for(let o=0;o<this.audioQueue.length;o++){const s=this.audioQueue[o],u=r,l=r+s.duration;if(l>e){const c=this.audioContext.createBufferSource();c.buffer=s,c.connect(this.getAudioDestination());let f=0,h=s.duration;e>u&&(f=e-u,h=s.duration-f,i=n),c.start(i,f,h),i+=h,this.scheduledSources.push(c),a++,c.onended=()=>{const d=this.scheduledSources.indexOf(c);if(d===-1){Y("[scheduleFromPosition.onended] sourceNode 被手动停止,跳过后续逻辑");return}this.scheduledSources.splice(d,1),this.playedBufferCount++,this.cleanupOldBuffers(),this.decodeAhead(),this.scheduledSources.length===0&&this.isPlaying&&(this.scheduleNewChunks(),this.scheduledSources.length===0&&(Y("[scheduleFromPosition.onended] 调度后仍无片段",{pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledBuffers:this.audioQueue.length-this.scheduledCount}),this.pendingChunks.length>0?(Y("[scheduleFromPosition.onended] 还有待解码chunk,启动 autoPlayCheck"),this.startAutoPlayCheck()):this.audioQueue.length>this.scheduledCount?(Y("[scheduleFromPosition.onended] 还有未调度的buffer,重新调度"),this.scheduleNewChunks()):this.generationComplete?(Y("[scheduleFromPosition.onended] 生成完成,结束播放"),this.handlePlaybackEnd()):(Y("[scheduleFromPosition.onended] 等待新数据,启动 autoPlayCheck"),this.startAutoPlayCheck())))}}r=l}this.scheduledCount=this.audioQueue.length,this.nextScheduleTime=i,this.isSchedulingFromPosition=!1,Y("[scheduleFromPosition] 调度完成",{startPosition:e.toFixed(2),scheduledInThisCall:a,scheduledCount:this.scheduledCount,nextScheduleTime:this.nextScheduleTime.toFixed(3),scheduledSourcesLength:this.scheduledSources.length})}pause(){if(this.playMode==="url"&&this.audioElement){this.audioElement.pause();return}if(!(!this.isPlaying||!this.audioContext)){this.pausedAt=this.audioContext.currentTime-this.startedAt;for(const e of this.scheduledSources)try{e.stop()}catch{}if(this.scheduledSources=[],this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[pause] iOS audio 元素已暂停")}catch{}this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback(),this.stopTimeUpdate(),this.stopAutoPlayCheck()}}stop(){if(this.playMode==="url"&&this.audioElement){this.audioElement.pause(),this.audioElement.currentTime=0,this.isPlaying=!1;return}this.pause(),this.pausedAt=0,this.startedAt=0,this.scheduledCount=0,this.nextScheduleTime=0,this.stopTimeUpdate(),this.stopAutoPlayCheck()}clear(){this.stop(),this.audioQueue=[],this.pendingChunks=[],this.totalDuration=0,this.estimatedDuration=0,this.scheduledCount=0,this.nextScheduleTime=0,this.processedChunkCount=0,this.generationComplete=!1,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.durationFromUrlSet=!1}handlePlaybackEnd(){let e=0;if(this.audioQueue.forEach(r=>{e+=r.duration}),Y("[handlePlaybackEnd] 播放结束",{totalDuration:this.totalDuration.toFixed(2),actualDecodedDuration:e.toFixed(2),audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,processedChunkCount:this.processedChunkCount,scheduledCount:this.scheduledCount,playedBufferCount:this.playedBufferCount,generationComplete:this.generationComplete,durationFromUrlSet:this.durationFromUrlSet}),this.isPlaying=!1,this.pausedAt=0,this.startedAt=0,this.stopTimeUpdate(),this.stopAutoPlayCheck(),this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[handlePlaybackEnd] iOS audio 元素已暂停")}catch{}this.onEndCallback&&this.onEndCallback()}async markGenerationComplete(e){let r=0;this.audioQueue.forEach(n=>{r+=n.duration}),Y("[markGenerationComplete] 标记生成完成",{audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,scheduledSourcesLength:this.scheduledSources.length,totalDuration:this.totalDuration.toFixed(2),currentDecodedDuration:r.toFixed(2),estimatedDuration:this.estimatedDuration.toFixed(2),isPlaying:this.isPlaying,hasAudioUrl:!!e,processedChunkCount:this.processedChunkCount}),this.generationComplete=!0,e&&(this.fullAudioUrl=e),this.isPlaying&&this.pendingChunks.length>0&&(Y("[markGenerationComplete] 正在播放,触发按需解码"),this.decodeAhead()),this.autoPlayCheckInterval&&this.scheduledSources.length===0&&this.pendingChunks.length===0&&(Y("[markGenerationComplete] 正在等待且无剩余片段,立即结束"),this.handlePlaybackEnd()),e?this.getDurationFromUrl(e):this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration())}getDurationFromUrl(e){Y("[getDurationFromUrl] 开始从 URL 获取时长并预加载",{audioUrl:e}),this.preloadedAudioElement=new Audio,this.preloadedAudioElement.preload="auto";const r=this.preloadedAudioElement;let n=!1;const i=()=>{if(n)return;n=!0;const s=r.duration;Y("[getDurationFromUrl] 获取时长成功",{duration:s.toFixed(2)}),this.totalDuration=s,this.estimatedDuration=0,this.durationFromUrlSet=!0,this.onDurationChangeCallback&&this.onDurationChangeCallback(Math.floor(s))},a=()=>{Y("[getDurationFromUrl] URL 预加载完成,可以 seek"),this.urlReady=!0,this.onUrlReadyCallback&&this.onUrlReadyCallback()},o=s=>{Y("[getDurationFromUrl] 获取时长/预加载失败",s),this.urlReady=!0,this.preloadedAudioElement=null,this.onDurationChangeCallback&&!n&&this.onDurationChangeCallback(this.getDisplayDuration()),this.onUrlReadyCallback&&this.onUrlReadyCallback()};r.addEventListener("loadedmetadata",i),r.addEventListener("canplay",a),r.addEventListener("canplaythrough",a),r.addEventListener("error",o),r.src=e,r.load()}async decodeAllPendingChunks(){for(Y("[decodeAllPendingChunks] 开始解码所有待解码 chunk",{pendingChunks:this.pendingChunks.length});this.pendingChunks.length>0;){const e=this.pendingChunks.shift(),r=this.processedChunkCount+1;try{const n=(e.length*.75/1024).toFixed(2);Y(`[decodeAllPendingChunks] 解码第 ${r} 个chunk`,{size:`${n} KB`});const i=window.atob(e),a=new Uint8Array(i.length);for(let s=0;s<i.length;s++)a[s]=i.charCodeAt(s);const o=a.buffer;await this.addAudioChunkInternal(o),this.processedChunkCount++,Y(`[decodeAllPendingChunks] 第 ${r} 个chunk 解码完成`,{totalDuration:this.totalDuration.toFixed(2)})}catch(n){console.error(`[decodeAllPendingChunks] 解码第 ${r} 个chunk 失败:`,n)}}Y("[decodeAllPendingChunks] 所有 chunk 解码完成",{audioQueueLength:this.audioQueue.length,totalDuration:this.totalDuration.toFixed(2)})}cleanupOldBuffers(){const e=this.audioQueue.length;if(Y("[cleanupOldBuffers] 检查",{currentQueueLength:e,maxDecodedBuffers:this.maxDecodedBuffers,playedBufferCount:this.playedBufferCount,scheduledCount:this.scheduledCount,pendingChunks:this.pendingChunks.length,totalDuration:this.totalDuration.toFixed(2)}),e>this.maxDecodedBuffers&&this.playedBufferCount>0){const r=Math.min(e-this.maxDecodedBuffers,this.playedBufferCount);if(r>0){let n=0;for(let o=0;o<r;o++)n+=this.audioQueue[o].duration;const i=this.audioQueue.splice(0,r);this.scheduledCount=Math.max(0,this.scheduledCount-r),this.playedBufferCount=Math.max(0,this.playedBufferCount-r);let a=0;i.forEach(o=>{a+=o.length*o.numberOfChannels*4/1024}),Y("[cleanupOldBuffers] 内存回收",{cleanedCount:r,cleanedDuration:n.toFixed(2),freedMemoryKB:a.toFixed(2),remainingQueueLength:this.audioQueue.length,newScheduledCount:this.scheduledCount,newPlayedBufferCount:this.playedBufferCount,isMobile:this.isMobileDevice()})}}}startAutoPlayCheck(){if(this.autoPlayCheckInterval){Y("[startAutoPlayCheck] 已有检查定时器,跳过");return}Y("[startAutoPlayCheck] 启动等待新数据检查"),this.autoPlayCheckWaitTime=0;const e=180*1e3;this.autoPlayCheckInterval=window.setInterval(()=>{this.autoPlayCheckWaitTime+=200,Y("[autoPlayCheck] 检查",{waitTime:this.autoPlayCheckWaitTime,scheduledCount:this.scheduledCount,audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,scheduledSourcesLength:this.scheduledSources.length}),this.scheduledCount<this.audioQueue.length?(Y("[autoPlayCheck] 发现新片段,调度"),this.scheduleNewChunks(),this.scheduledSources.length>0&&(Y("[autoPlayCheck] 调度成功,停止检查"),this.stopAutoPlayCheck())):this.scheduledSources.length>0?(Y("[autoPlayCheck] 还有片段在播放中,停止检查"),this.stopAutoPlayCheck()):this.pendingChunks.length>0?(Y("[autoPlayCheck] 还有待解码chunk,触发解码"),this.decodeAhead()):this.generationComplete?(Y("[autoPlayCheck] 生成完成且无播放片段和待解码chunk,结束播放"),this.handlePlaybackEnd()):this.autoPlayCheckWaitTime>=e&&(Y("[autoPlayCheck] 等待超时,结束播放"),this.handlePlaybackEnd())},200)}stopAutoPlayCheck(){this.autoPlayCheckInterval&&(clearInterval(this.autoPlayCheckInterval),this.autoPlayCheckInterval=null)}startTimeUpdate(){this.timeUpdateInterval||(this.timeUpdateInterval=window.setInterval(()=>{if(this.isPlaying&&this.audioContext){const e=this.audioContext.currentTime-this.startedAt;this.onTimeUpdateCallback&&this.onTimeUpdateCallback(e,this.totalDuration)}},100))}stopTimeUpdate(){this.timeUpdateInterval&&(clearInterval(this.timeUpdateInterval),this.timeUpdateInterval=null)}seek(e){if(Y("[seek] 开始",{time:e,playMode:this.playMode,generationComplete:this.generationComplete,urlReady:this.urlReady,hasPreloadedAudio:!!this.preloadedAudioElement,isPlaying:this.isPlaying}),this.playMode==="url"&&this.audioElement){this.audioElement.currentTime=Math.max(0,Math.min(e,this.audioElement.duration||0));return}if(this.playMode==="stream"){if(this.generationComplete&&this.urlReady&&this.preloadedAudioElement){Y("[seek] 切换到 URL 模式(使用预加载的 audio 元素)");const n=this.isPlaying;this.stopTimeUpdate();for(const i of this.scheduledSources)try{i.stop()}catch{}this.scheduledSources=[],this.isPlaying=!1,this.audioElement=this.preloadedAudioElement,this.preloadedAudioElement=null,this.playMode="url",this.bindAudioElementEvents(),this.audioElement.currentTime=Math.max(0,Math.min(e,this.audioElement.duration||0)),n&&this.audioElement.play().catch(i=>{Y("[seek] 播放失败:",i)});return}const r=this.isPlaying;r&&this.pause(),this.pausedAt=Math.max(0,Math.min(e,this.totalDuration)),r&&this.play()}}bindAudioElementEvents(){this.audioElement&&(this.audioElement.addEventListener("play",()=>{this.isPlaying=!0,this.onPlayCallback&&this.onPlayCallback()}),this.audioElement.addEventListener("pause",()=>{this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback()}),this.audioElement.addEventListener("ended",()=>{this.isPlaying=!1,this.onEndCallback&&this.onEndCallback()}),this.audioElement.addEventListener("timeupdate",()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime,this.audioElement.duration||0)}),this.audioElement.addEventListener("error",e=>{this.onErrorCallback&&this.onErrorCallback(new Error("音频加载失败: "+(e.message||"未知错误")))}))}getPlayState(){return this.isPlaying}getDuration(){return this.playMode==="url"&&this.audioElement?this.audioElement.duration||0:this.getDisplayDuration()}getCurrentTime(){return this.playMode==="url"&&this.audioElement?this.audioElement.currentTime||0:this.isPlaying&&this.audioContext?this.audioContext.currentTime-this.startedAt:this.pausedAt}getAudioQueue(){return[...this.audioQueue]}async getAudioData(){const e=[];for(const r of this.audioQueue){const n=r.numberOfChannels,i=r.length,a=new ArrayBuffer(i*n*2),o=new DataView(a);for(let s=0;s<n;s++){const u=r.getChannelData(s);for(let l=0;l<i;l++){const c=Math.max(-1,Math.min(1,u[l])),f=c<0?c*32768:c*32767;o.setInt16((l*n+s)*2,f,!0)}}e.push(a)}return e}onPlay(e){this.onPlayCallback=e}onPause(e){this.onPauseCallback=e}onEnd(e){this.onEndCallback=e}onError(e){this.onErrorCallback=e}onTimeUpdate(e){this.onTimeUpdateCallback=e}onDurationChange(e){this.onDurationChangeCallback=e}onUrlReady(e){this.onUrlReadyCallback=e}isUrlReady(){return this.urlReady}destroy(){this.stop(),this.stopTimeUpdate(),this.stopAutoPlayCheck(),this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.handleVisibilityChange=null),this.audioContext&&(this.audioContext.onstatechange=null,this.audioContext.close(),this.audioContext=null),this.audioQueue=[],this.iosUnlockAudio&&(this.iosUnlockAudio.pause(),this.iosUnlockAudio.srcObject=null,this.iosUnlockAudio=null),this.mediaStreamDestination=null,this.audioElement&&(this.audioElement.pause(),this.audioElement.src="",this.audioElement=null),this.playMode=null}},of="https://cdn.xiaowei.qq.com/adp/assets/static/iconfont-XzKaDZdEa7j2GPL-1201.js",zu={};function uO(t){const e={};return t.props.size&&(e.width=`${t.props.size}px`,e.height=`${t.props.size}px`),t.props.valign&&(e.verticalAlign=`${t.props.valign}px`),t.props.rotate&&(e.transform=`rotate(${t.props.rotate}deg)`),e}function lO(t){const e=t.props;return{"v-icon":!0,"is-horizontal":e.flip==="horizontal","is-vertical":e.flip==="vertical","v-icon--stroke":e.useStroke,"v-icon--fill":!e.useStroke}}function Wb(t){let e=document.createElement("script");e.type="text/javascript",e.src=t,document.getElementsByTagName("head")[0].appendChild(e)}const cO=t=>{let e=!1,r=Object.keys(zu);r.forEach(n=>{zu[n]===t&&(e=!0)}),e||(zu[r.length]=t,Wb(t))},fO={name:"VIcon",functional:!0,props:{name:{type:String,required:!0},remote:{type:Boolean,default:!1},remoteSrc:{type:String,default:""},remotePrefix:{type:String,default:"v-"},loadDefaultRemoteIcons:{type:Boolean,default:!0},label:String,rotate:[Number,String],size:[Number,String],valign:[Number,String],flip:String,useStroke:Boolean,clazz:String,scoped:String},render(t,e){const r=uO(e);if(e.data.style)for(let n in e.data.style)r[n]=e.data.style[n];return!zu.defaultRemoteSrc&&of&&e.props.loadDefaultRemoteIcons&&(zu.defaultRemoteSrc=of,Wb(of)),e.props.remoteSrc&&cO(e.props.remoteSrc),t("svg",{class:lO(e),style:r,attrs:{role:e.props.label?"img":"presentation","aria-label":e.props.label},on:e.data.nativeOn},[t("use",{attrs:{"xlink:href":"#"+e.props.remotePrefix+e.props.name,class:e.props.clazz},style:{pointerEvents:"none"}})])}},hO=fO,dO=null,pO=null;var vO=pr(hO,dO,pO,!1,null,null,null,null);const t2=vO.exports;const gO={name:"StreamAudioPlayer",components:{VIcon:t2},props:{audioData:{type:Object,required:!0}},data(){return{player:null,internalStatus:"pending",currentTime:0,duration:0,isDragging:!1,isHoveringProgress:!1,lastProcessedChunkCount:0,playModeDecided:!1,lastKnownIsComplete:!1,urlReady:!1,dragCleanup:null}},computed:{isGenerating(){return!this.audioData.isComplete},hasPlayableContent(){const t=!!this.audioData.audio_url,e=this.audioData.audio_data&&this.audioData.audio_data.length>0;return t||e},isDisabled(){return!this.hasPlayableContent},canSeek(){return!this.isGenerating&&this.urlReady},displayFileName(){return this.audioData.title?this.audioData.title:this.isGenerating?"音频生成中...":"音频文件"},statusText(){if(this.isDisabled)return"暂无音频";if(this.isGenerating&&this.duration===0)return"生成中...";const t=this.formatTime(this.currentTime),e=this.isGenerating?"生成中":this.formatTime(this.duration);return`${t} / ${e}`},statusClass(){return{generating:this.isGenerating,completed:this.internalStatus==="completed",playing:this.internalStatus==="playing",paused:this.internalStatus==="paused",disabled:this.isDisabled}},cardClass(){return{generating:this.isGenerating,completed:this.internalStatus==="completed",playing:this.internalStatus==="playing",paused:this.internalStatus==="paused",disabled:this.isDisabled,hoverable:!this.isDisabled&&!this.isGenerating}},progressPercentage(){return this.duration===0?0:this.currentTime/this.duration*100},showHandle(){return(this.isHoveringProgress||this.isDragging)&&!this.isDisabled&&!this.isGenerating},canPlay(){return!(this.isDisabled||this.isGenerating&&this.duration===0)},canDownload(){return!!this.audioData.audio_url},playButtonTitle(){return this.isDisabled?"暂无音频":this.isGenerating&&this.duration===0?"等待音频生成":this.internalStatus==="playing"?"暂停":"播放"},downloadButtonTitle(){return this.canDownload?"下载":this.isGenerating?"生成中,暂不可下载":"暂无可下载的音频"}},watch:{audioData:{handler(t){var r;if(!t||!this.player)return;console.log("[StreamAudioPlayer] audioData watch 触发:",{hasAudioUrl:!!t.audio_url,audioDataLength:(r=t.audio_data)==null?void 0:r.length,isComplete:t.isComplete,playModeDecided:this.playModeDecided,lastProcessedChunkCount:this.lastProcessedChunkCount,lastKnownIsComplete:this.lastKnownIsComplete,internalStatus:this.internalStatus}),!this.playModeDecided&&t.audio_url&&(console.log("[StreamAudioPlayer] 切换到 URL 模式"),this.handleAudioUrlChange(t.audio_url)),t.audio_data&&Array.isArray(t.audio_data)&&t.audio_data.length>this.lastProcessedChunkCount&&(!this.playModeDecided||this.player.playMode==="stream")&&(console.log("[StreamAudioPlayer] 处理新的音频片段"),this.handleAudioDataChange(t.audio_data)),!!t.isComplete&&!this.lastKnownIsComplete&&(this.lastKnownIsComplete=!0,this.handleGenerationComplete())},deep:!0,immediate:!1}},mounted(){this.initPlayer(),this.audioData&&(this.audioData.audio_data&&this.audioData.audio_data.length>0?this.handleAudioDataChange(this.audioData.audio_data):this.audioData.audio_url&&this.handleAudioUrlChange(this.audioData.audio_url),this.audioData.isComplete&&(this.lastKnownIsComplete=!0,this.handleGenerationComplete()))},beforeDestroy(){this.destroyPlayer()},beforeUnmount(){this.destroyPlayer()},methods:{initPlayer(){this.player=new Ub,this.player.onPlay(()=>{this.internalStatus="playing",this.$emit("play",this.audioData)}),this.player.onPause(()=>{this.internalStatus="paused",this.$emit("pause",this.audioData)}),this.player.onEnd(()=>{this.player.playMode==="url"?this.internalStatus="completed":this.isGenerating?this.internalStatus="paused":this.internalStatus="completed",this.currentTime=0,this.$emit("end",this.audioData)}),this.player.onTimeUpdate((t,e)=>{this.isDragging||(this.currentTime=t),this.duration=e,t>=e&&e>0&&!this.isGenerating&&(this.player.pause(),this.internalStatus="completed",this.currentTime=e)}),this.player.onDurationChange(t=>{this.duration=t}),this.player.onError(t=>{console.error("音频播放错误:",t),this.$emit("error",t)}),this.player.onUrlReady(()=>{console.log("[StreamAudioPlayer.vue] URL 预加载完成回调"),this.urlReady=!0}),this.checkInitialState()},checkInitialState(){this.isDisabled?this.internalStatus="disabled":this.isGenerating?this.internalStatus="generating":this.internalStatus="completed"},handleAudioUrlChange(t){!this.player||!t||this.playModeDecided&&this.player.playMode!=="url"||(this.player.setAudioUrl(t),this.playModeDecided=!0,this.internalStatus="completed")},handleAudioDataChange(t){var r,n,i,a,o;if(!this.player||!t)return;this.playModeDecided=!0;const e=t.length-this.lastProcessedChunkCount;if(console.log("[StreamAudioPlayer.vue] handleAudioDataChange",{totalChunks:t.length,lastProcessedChunkCount:this.lastProcessedChunkCount,newChunksCount:e,playerPendingChunks:(r=this.player.pendingChunks)==null?void 0:r.length,playerAudioQueueLength:(n=this.player.audioQueue)==null?void 0:n.length,playerScheduledCount:this.player.scheduledCount,playerIsPlaying:this.player.isPlaying,internalStatus:this.internalStatus}),e<=0){console.log("[StreamAudioPlayer.vue] 没有新片段,跳过");return}(this.internalStatus==="disabled"||this.internalStatus==="pending")&&(this.internalStatus="generating");for(let s=this.lastProcessedChunkCount;s<t.length;s++){const u=t[s];console.log(`[StreamAudioPlayer.vue] 添加第 ${s+1} 个chunk,大小: ${(u.length*.75/1024).toFixed(2)} KB`),this.player.addBase64Chunk(u),this.lastProcessedChunkCount++,this.$emit("chunk-added",{duration:this.duration,queueLength:((i=this.player.pendingChunks)==null?void 0:i.length)||0})}console.log("[StreamAudioPlayer.vue] handleAudioDataChange 完成",{lastProcessedChunkCount:this.lastProcessedChunkCount,playerPendingChunks:(a=this.player.pendingChunks)==null?void 0:a.length,playerAudioQueueLength:(o=this.player.audioQueue)==null?void 0:o.length})},handleGenerationComplete(){var t,e,r,n,i,a,o;console.log("[StreamAudioPlayer.vue] handleGenerationComplete",{playerAudioQueueLength:(e=(t=this.player)==null?void 0:t.audioQueue)==null?void 0:e.length,playerPendingChunks:(n=(r=this.player)==null?void 0:r.pendingChunks)==null?void 0:n.length,playerTotalDuration:(a=(i=this.player)==null?void 0:i.totalDuration)==null?void 0:a.toFixed(2),playerScheduledCount:(o=this.player)==null?void 0:o.scheduledCount,internalStatus:this.internalStatus,hasAudioUrl:!!this.audioData.audio_url}),this.player&&this.player.markGenerationComplete(this.audioData.audio_url),this.player&&(this.duration=this.player.getDuration(),console.log("[StreamAudioPlayer.vue] 最终时长:",this.duration.toFixed(2))),this.internalStatus!=="playing"&&(this.internalStatus="completed"),this.audioData.audio_url||(this.urlReady=!0)},async addAudioChunk(t){var e;if(!this.player){console.warn("播放器未初始化");return}try{typeof t=="string"?await this.player.addBase64Chunk(t):await this.player.addAudioChunk(t),this.$emit("chunk-added",{duration:this.duration,queueLength:((e=this.player.audioQueue)==null?void 0:e.length)||0})}catch(r){console.error("添加音频片段失败:",r),this.$emit("error",r)}},markGenerationComplete(){this.handleGenerationComplete()},async handlePlayPause(){if(!(!this.player||!this.canPlay))try{this.internalStatus==="playing"?this.player.pause():(this.currentTime>=this.duration&&this.duration>0&&(this.currentTime=0,this.player.pausedAt=0),await this.player.play())}catch(t){console.error("播放控制错误:",t)}},handleDownload(){if(!this.canDownload)return;const t=this.audioData.audio_url,e=this.audioData.title||"音频文件",r=document.createElement("a");r.href=t,r.download=e,r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r),this.$emit("audio-download",{url:t,fileName:e})},formatTime(t){if(!t||isNaN(t))return"00:00";const e=Math.floor(t/60),r=Math.floor(t%60);return`${e.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`},handleMouseEnter(){},handleMouseLeave(){},handleProgressMouseEnter(){!this.isDisabled&&!this.isGenerating&&(this.isHoveringProgress=!0)},handleProgressMouseLeave(){this.isDragging||(this.isHoveringProgress=!1)},handleProgressMouseDown(t){this.isDisabled||!this.canSeek||this.seekToPosition(t)},handleDragStart(t){if(this.isDisabled||!this.canSeek)return;this.isDragging=!0,t.preventDefault();const e=n=>{this.seekToPosition(n)},r=()=>{this.isDragging=!1,this.isHoveringProgress||(this.isHoveringProgress=!1),document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r),this.dragCleanup=null};this.dragCleanup=()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r)},document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)},seekToPosition(t){if(!this.player||!this.$refs.progressTrack)return;const r=this.$refs.progressTrack.getBoundingClientRect(),n=t.clientX-r.left,a=Math.max(0,Math.min(1,n/r.width))*this.duration;this.currentTime=a,this.player.seek(a)},destroyPlayer(){this.dragCleanup&&(this.dragCleanup(),this.dragCleanup=null),this.player&&(this.player.destroy(),this.player=null),this.internalStatus="pending",this.currentTime=0,this.duration=0,this.lastProcessedChunkCount=0,this.playModeDecided=!1,this.urlReady=!1,this.lastKnownIsComplete=!1}}};var mO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"stream-audio-player-card",class:e.cardClass,on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave}},[r("div",{staticClass:"audio-content"},[r("div",{staticClass:"audio-icon"},[r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"30",height:"34",viewBox:"0 0 30 34",fill:"none"}},[r("path",{staticStyle:{fill:"color(display-p3 0.9569 0.9333 0.9882)","fill-opacity":"1"},attrs:{d:"M1.55782e-06 5.33333C1.66168e-06 3.46649 1.71361e-06 2.53307 0.363313 1.82003C0.682891 1.19282 1.19283 0.682889 1.82003 0.363312C2.53307 1.40931e-07 3.46649 1.92863e-07 5.33334 2.96727e-07L21.1242 1.17527e-06C21.9395 1.22063e-06 22.3472 1.24331e-06 22.7308 0.0921015C23.0709 0.173757 23.396 0.308438 23.6943 0.491201C24.0307 0.69734 24.3189 0.985593 24.8954 1.5621L28.4379 5.10457C29.0144 5.68108 29.3027 5.96933 29.5088 6.30572C29.6916 6.60396 29.8262 6.92911 29.9079 7.26923C30 7.65285 30 8.0605 30 8.87581L30 28C30 29.8668 30 30.8003 29.6367 31.5133C29.3171 32.1405 28.8072 32.6504 28.18 32.97C27.4669 33.3333 26.5335 33.3333 24.6667 33.3333L5.33333 33.3333C3.46649 33.3333 2.53307 33.3333 1.82003 32.97C1.19282 32.6504 0.68289 32.1405 0.363312 31.5133C1.40931e-07 30.8003 1.92863e-07 29.8668 2.96727e-07 28L1.55782e-06 5.33333Z",fill:"#F4EEFC"}}),r("path",{staticStyle:{fill:"color(display-p3 0.8863 0.8353 0.9725)","fill-opacity":"1"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M29.1667 28L29.1667 8.87581C29.1667 8.02084 29.1613 7.72918 29.0976 7.46377C29.0364 7.20868 28.9353 6.96481 28.7983 6.74113C28.6557 6.5084 28.4532 6.29838 27.8487 5.69383L24.3062 2.15135C23.7016 1.5468 23.4916 1.34435 23.2589 1.20173C23.0352 1.06466 22.7913 0.963651 22.5362 0.90241C22.2708 0.83869 21.9792 0.833334 21.1242 0.833334L5.33334 0.833333C4.38616 0.833333 3.7259 0.833981 3.21187 0.87598C2.70756 0.917183 2.41782 0.993995 2.19836 1.10582C1.72795 1.3455 1.3455 1.72795 1.10582 2.19836C0.993997 2.41782 0.917185 2.70756 0.875981 3.21187C0.833983 3.7259 0.833335 4.38616 0.833335 5.33333L0.833334 28C0.833334 28.9472 0.833982 29.6074 0.87598 30.1215C0.917183 30.6258 0.993995 30.9155 1.10582 31.135C1.3455 31.6054 1.72795 31.9878 2.19836 32.2275C2.41782 32.3393 2.70756 32.4161 3.21187 32.4573C3.7259 32.4993 4.38616 32.5 5.33333 32.5L24.6667 32.5C25.6138 32.5 26.2741 32.4993 26.7881 32.4573C27.2924 32.4161 27.5822 32.3393 27.8016 32.2275C28.2721 31.9878 28.6545 31.6054 28.8942 31.135C29.006 30.9155 29.0828 30.6258 29.124 30.1215C29.166 29.6074 29.1667 28.9472 29.1667 28ZM0.363313 1.82003C1.71361e-06 2.53307 1.66168e-06 3.46649 1.55782e-06 5.33333L2.96727e-07 28C1.92863e-07 29.8668 1.40931e-07 30.8003 0.363312 31.5133C0.68289 32.1405 1.19282 32.6504 1.82003 32.97C2.53307 33.3333 3.46649 33.3333 5.33333 33.3333L24.6667 33.3333C26.5335 33.3333 27.4669 33.3333 28.18 32.97C28.8072 32.6504 29.3171 32.1405 29.6367 31.5133C30 30.8003 30 29.8668 30 28L30 8.87581C30 8.0605 30 7.65285 29.9079 7.26923C29.8262 6.92911 29.6916 6.60396 29.5088 6.30572C29.3027 5.96933 29.0144 5.68108 28.4379 5.10457L24.8954 1.5621C24.3189 0.985593 24.0307 0.69734 23.6943 0.491201C23.396 0.308438 23.0709 0.173757 22.7308 0.0921015C22.3472 1.24331e-06 21.9395 1.22063e-06 21.1242 1.17527e-06L5.33334 2.96727e-07C3.46649 1.92863e-07 2.53307 1.40931e-07 1.82003 0.363312C1.19283 0.682889 0.682891 1.19282 0.363313 1.82003Z",fill:"#E2D5F8"}}),r("path",{staticStyle:{fill:"color(display-p3 0.4157 0.2706 0.8980)","fill-opacity":"1"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M22.1277 22.689L22.129 8.92249L10.0345 10.5529L10.0335 22.0895C9.69971 21.9846 9.34054 21.9276 8.96638 21.9276C7.19825 21.9276 5.76489 23.2017 5.76489 24.7734C5.76489 26.345 7.19825 27.6191 8.96638 27.6191C10.7157 27.6191 12.1374 26.3719 12.1674 24.8233L12.1676 24.8233L12.1676 24.8123L12.1679 24.7734L12.1676 24.7347L12.168 13.7622L19.9939 12.5435L19.9935 19.9543C19.6596 19.8493 19.3001 19.7922 18.9257 19.7922C17.1576 19.7922 15.7242 21.0663 15.7242 22.6379C15.7242 24.2096 17.1576 25.4837 18.9257 25.4837C20.6746 25.4837 22.096 24.2371 22.1267 22.689L22.1277 22.689Z",fill:"#6A45E5"}})])]),r("div",{staticClass:"file-info"},[r("div",{staticClass:"file-name",attrs:{title:e.displayFileName}},[e._v(e._s(e.displayFileName))]),r("div",{staticClass:"file-status"},[r("span",{staticClass:"status-text",class:e.statusClass},[e._v(" "+e._s(e.statusText)+" ")])])]),r("div",{staticClass:"audio-controls"},[r("button",{staticClass:"control-btn download-btn",attrs:{disabled:!e.canDownload,title:e.downloadButtonTitle},on:{click:e.handleDownload}},[r("v-icon",{attrs:{name:"basic_download2_line",size:18}})],1),r("button",{staticClass:"control-btn play-btn",attrs:{disabled:!e.canPlay,title:e.playButtonTitle},on:{click:e.handlePlayPause}},[e.internalStatus==="playing"?r("v-icon",{attrs:{name:"basic_pause_line",size:18}}):r("v-icon",{attrs:{name:"basic_play_line",size:18}})],1)])]),r("div",{staticClass:"progress-container"},[r("div",{ref:"progressTrack",staticClass:"progress-track",on:{mousedown:e.handleProgressMouseDown,mouseenter:e.handleProgressMouseEnter,mouseleave:e.handleProgressMouseLeave}},[e.isGenerating?e._e():r("div",{staticClass:"progress-played",class:{"no-transition":e.isDragging},style:{width:e.progressPercentage+"%"}}),e.showHandle?r("div",{staticClass:"progress-handle",class:{"no-transition":e.isDragging},style:{left:e.progressPercentage+"%"},on:{mousedown:function(n){return n.stopPropagation(),e.handleDragStart.apply(null,arguments)}}}):e._e()])])])},yO=[],_O=pr(gO,mO,yO,!1,null,"c74077bd",null,null);const qb=_O.exports;const bO={name:"ClassifyTag",props:{title:{type:String,default:"问题澄清"},questions:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},defaultAnswers:{type:Array,default:()=>[]}},data(){return{collapsed:!1,selectedAnswers:{},submitted:!1}},watch:{defaultAnswers:{handler(t){t&&t.length>0&&this._applyDefaultAnswers(t)},immediate:!0}},computed:{normalizedQuestions(){return!this.questions||!this.questions.length?[]:this.questions.map((t,e)=>({id:t.id!==void 0?t.id:e,text:t.text||t.question||"",options:(t.options||[]).map(r=>typeof r=="string"?{label:r,description:""}:{label:r.label||r.Label||"",description:r.description||r.Description||""})}))},allAnswered(){return!this.normalizedQuestions||this.normalizedQuestions.length===0?!1:this.normalizedQuestions.every(t=>{const e=t.id;return this.selectedAnswers[e]!==void 0})}},methods:{_applyDefaultAnswers(t){t.forEach(e=>{e.questionId!==void 0&&e.selectedIndex!==void 0&&this.$set(this.selectedAnswers,e.questionId,e.selectedIndex)}),this.submitted=!0},toggleCollapse(){this.collapsed=!this.collapsed},selectOption(t,e){this.submitted||this.disabled||this.$set(this.selectedAnswers,t,e)},handleSubmit(){if(!this.allAnswered||this.submitted)return;this.submitted=!0;const t=this.normalizedQuestions.map(e=>{const r=this.selectedAnswers[e.id],n=e.options[r];return{questionId:String(e.id),questionText:e.text,selectedOption:n?n.label:"",selectedIndex:r}});this.$emit("submit",t)},handleSkip(){this.submitted||this.disabled||this.$emit("skip")}}};var xO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"classify-tag",class:{"classify-tag--collapsed":e.collapsed}},[r("div",{staticClass:"classify-tag__header",on:{click:e.toggleCollapse}},[r("svg",{staticClass:"classify-tag__icon",attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15C11.866 15 8 15 8 15",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round",fill:"none"}}),r("path",{attrs:{d:"M8 5V8.5",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round"}}),r("circle",{attrs:{cx:"8",cy:"11",r:"0.75",fill:"#4A70FF"}}),r("path",{attrs:{d:"M8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1Z",stroke:"#4A70FF","stroke-width":"1.5",fill:"none"}})]),r("span",{staticClass:"classify-tag__title"},[e._v(e._s(e.title))]),r("svg",{staticClass:"classify-tag__arrow",class:{"classify-tag__arrow--up":!e.collapsed},attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M4 6L8 10L12 6",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"classify-tag__content"},e._l(e.normalizedQuestions,function(n,i){return r("div",{key:n.id||i,staticClass:"classify-tag__question-group"},[r("div",{staticClass:"classify-tag__question-text"},[e._v(" "+e._s(i+1)+"、"+e._s(n.text)+" ")]),r("div",{staticClass:"classify-tag__options"},e._l(n.options,function(a,o){return r("label",{key:o,staticClass:"classify-tag__radio",class:{"classify-tag__radio--checked":e.selectedAnswers[n.id||i]===o,"classify-tag__radio--rich":a.description},on:{click:function(s){return e.selectOption(n.id||i,o)}}},[r("span",{staticClass:"classify-tag__radio-circle"},[e.selectedAnswers[n.id||i]===o?r("span",{staticClass:"classify-tag__radio-dot"}):e._e()]),r("span",{staticClass:"classify-tag__radio-content"},[r("span",{staticClass:"classify-tag__radio-label"},[e._v(e._s(a.label))]),a.description?r("span",{staticClass:"classify-tag__radio-desc"},[e._v(e._s(a.description))]):e._e()])])}),0)])}),0),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"classify-tag__footer"},[r("div",{staticClass:"classify-tag__footer-divider"}),r("div",{staticClass:"classify-tag__footer-actions"},[r("button",{staticClass:"classify-tag__btn classify-tag__btn--primary",attrs:{disabled:!e.allAnswered||e.submitted},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.submitted?"已提交":"提交")+" ")]),e.submitted?e._e():r("button",{staticClass:"classify-tag__btn classify-tag__btn--secondary",on:{click:e.handleSkip}},[e._v(" 跳过 ")])])])])},wO=[],SO=pr(bO,xO,wO,!1,null,"72e3b349",null,null);const r2=SO.exports;const CO={name:"PlanConfirm",props:{title:{type:String,default:"计划确认"},planText:{type:String,default:""},disabled:{type:Boolean,default:!1}},data(){return{collapsed:!1,confirmed:!1,skipped:!1}},methods:{toggleCollapse(){this.collapsed=!this.collapsed},handleConfirm(){this.confirmed||this.skipped||this.disabled||(this.confirmed=!0,this.$emit("confirm",this.planText))},handleSkip(){this.confirmed||this.skipped||this.disabled||(this.skipped=!0,this.$emit("skip",this.planText))}}};var AO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"plan-confirm",class:{"plan-confirm--collapsed":e.collapsed}},[r("div",{staticClass:"plan-confirm__header",on:{click:e.toggleCollapse}},[r("svg",{staticClass:"plan-confirm__icon",attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M13.5 5.5L6.5 12.5L2.5 8.5",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}}),r("rect",{attrs:{x:"1",y:"1",width:"14",height:"14",rx:"2",stroke:"#4A70FF","stroke-width":"1.5",fill:"none"}})]),r("span",{staticClass:"plan-confirm__title"},[e._v(e._s(e.title))]),r("svg",{staticClass:"plan-confirm__arrow",class:{"plan-confirm__arrow--up":!e.collapsed},attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M4 6L8 10L12 6",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"plan-confirm__content"},[r("div",{staticClass:"plan-confirm__text"},[e._v(e._s(e.planText))])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"plan-confirm__footer"},[r("div",{staticClass:"plan-confirm__footer-divider"}),r("div",{staticClass:"plan-confirm__footer-actions"},[!e.confirmed&&!e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--primary",on:{click:e.handleConfirm}},[e._v(" 确定 ")]):e._e(),e.confirmed?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--primary",attrs:{disabled:""}},[e._v(" 已确定 ")]):e._e(),!e.confirmed&&!e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--secondary",on:{click:e.handleSkip}},[e._v(" 跳过 ")]):e._e(),e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--secondary",attrs:{disabled:""}},[e._v(" 已跳过 ")]):e._e()])])])},TO=[],DO=pr(CO,AO,TO,!1,null,"99c3033c",null,null);const EO=DO.exports;let v1;const kO=new Uint8Array(16);function MO(){if(!v1&&(v1=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!v1))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return v1(kO)}const St=[];for(let t=0;t<256;++t)St.push((t+256).toString(16).slice(1));function LO(t,e=0){return St[t[e+0]]+St[t[e+1]]+St[t[e+2]]+St[t[e+3]]+"-"+St[t[e+4]]+St[t[e+5]]+"-"+St[t[e+6]]+St[t[e+7]]+"-"+St[t[e+8]]+St[t[e+9]]+"-"+St[t[e+10]]+St[t[e+11]]+St[t[e+12]]+St[t[e+13]]+St[t[e+14]]+St[t[e+15]]}const IO=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),iv={randomUUID:IO};function Zb(t,e,r){if(iv.randomUUID&&!e&&!t)return iv.randomUUID();t=t||{};const n=t.random||(t.rng||MO)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let i=0;i<16;++i)e[r+i]=n[i];return e}return LO(n)}const PO=["Basic","Card","ListView","ListViewItem","Badge","Box","Row","Col","Button","Caption","Chart","Checkbox","DatePicker","Divider","Form","Icon","Image","Input","Label","Markdown","RadioGroup","Select","Spacer","Text","Textarea","Title","Transition","Video","Audio","Countdown","Clickable","ImageSelect"];class RO{constructor(){this.worker=null,this.callbacks=new Map,this.initializing=!1,this.initPromise=null,this.blobUrl=null}async init(){return this.worker?Promise.resolve():this.initializing&&this.initPromise?this.initPromise:(this.initializing=!0,this.initPromise=new Promise((e,r)=>{try{const n=window.tsxToJsonWorkerSrc||"https://cdn.xiaowei.qq.com/adp/assets/static/tsxToJSON.worker.js",i=new Blob([`importScripts('${n}')`],{type:"application/javascript"});this.blobUrl=URL.createObjectURL(i),this.worker=new Worker(this.blobUrl),this.worker.onmessage=a=>{const{ok:o,out:s,error:u,nonce:l}=a.data,c=this.callbacks.get(l);c&&(this.callbacks.delete(l),o?c.resolve(s):c.reject(new Error(u||"Worker Parse error")))},this.worker.onerror=a=>{console.error("tsxToJSON Worker 错误:",a)},this.initializing=!1,e()}catch(n){this.initializing=!1,console.error("初始化 tsxToJSON Worker 失败:",n),r(n)}}),this.initPromise)}destroy(){this.worker&&(this.worker.terminate(),this.worker=null),this.blobUrl&&(URL.revokeObjectURL(this.blobUrl),this.blobUrl=null),this.callbacks.forEach(e=>{e.reject(new Error("Worker destroy"))}),this.callbacks.clear(),this.initializing=!1,this.initPromise=null}async parse({view:e,state:r,keyMap:n,componentNames:i=PO}){return await this.init(),new Promise((a,o)=>{if(!this.worker){o(new Error("Worker not init"));return}const s=Zb();this.callbacks.set(s,{resolve:a,reject:o}),this.worker.postMessage({type:"parse",view:e,state:r||{},keyMap:n,componentNames:i||[],nonce:s})})}isInitialized(){return!!this.worker}}let g1=null;async function Vh(){return g1||(g1=new RO),await g1.init(),g1}class NO{constructor(){this.worker=null,this.callbacks=new Map,this.initializing=!1,this.initPromise=null,this.blobUrl=null}async init(){return this.worker?Promise.resolve():this.initializing&&this.initPromise?this.initPromise:(this.initializing=!0,this.initPromise=new Promise((e,r)=>{try{const n=window.schemaWorkerSrc||"https://cdn.xiaowei.qq.com/adp/assets/static/schemaWorker.js",i=new Blob([`importScripts('${n}')`],{type:"application/javascript"});this.blobUrl=URL.createObjectURL(i),this.worker=new Worker(this.blobUrl),this.worker.onmessage=a=>{const{ok:o,keyMap:s,jsonSchema:u,error:l,nonce:c}=a.data,f=this.callbacks.get(c);f&&(this.callbacks.delete(c),o?f.resolve({keyMap:s,jsonSchema:u}):f.reject(new Error(l||"Worker parse failed")))},this.worker.onerror=a=>{console.error("zodSchema Worker 错误:",a)},this.initializing=!1,e()}catch(n){this.initializing=!1,console.error("初始化 zodSchema Worker 失败:",n),r(n)}}),this.initPromise)}destroy(){this.worker&&(this.worker.terminate(),this.worker=null),this.blobUrl&&(URL.revokeObjectURL(this.blobUrl),this.blobUrl=null),this.callbacks.forEach(e=>{e.reject(new Error("Worker destroyed"))}),this.callbacks.clear(),this.initializing=!1,this.initPromise=null}async zodToJsonSchema({src:e,includeJSONSchema:r=!0}){return await this.init(),new Promise((n,i)=>{if(!this.worker){i(new Error("Worker not init"));return}const a=Zb();this.callbacks.set(a,{resolve:n,reject:i}),this.worker.postMessage({type:"parse",src:e,includeJSONSchema:r,nonce:a})})}async zodToJsonSchemaAsync(e){return await this.zodToJsonSchema({src:e,includeJSONSchema:!0})}isInitialized(){return!!this.worker}}let m1=null;async function Yb(){return m1||(m1=new NO),await m1.init(),m1}async function Y0(t){const r=await(await Yb()).zodToJsonSchemaAsync(t);return{keyMap:r.keyMap,jsonSchema:JSON.stringify(r.jsonSchema,null,2)}}function OO(t,e){let r;try{r=JSON.parse(t)}catch(i){return console.warn(`unmarshal view failed, err: ${i}`),t}let n;try{n=JSON.parse(e)}catch(i){return console.warn(`unmarshal payload failed, err: ${i}`),t}$h(r,n);try{return JSON.stringify(r)}catch(i){return console.warn(`marshal view failed, err: ${i}`),t}}function $h(t,e){if(Array.isArray(t))for(let r=0;r<t.length;r++)$h(t[r],e);else if(t!==null&&typeof t=="object"){const r=t.name;if(typeof r=="string"){const n=typeof t.type=="string"?t.type:"unknown",i=BO(r,e);if(i.exists){const a=i.value;switch(n){case"DatePicker":t.defaultValue=a;break;case"Select":t.defaultValue=a;break;case"Checkbox":t.defaultChecked=a;break;case"RadioGroup":t.defaultValue=a;break;case"Input":t.defaultValue=a;break;case"Textarea":t.defaultValue=a;break;default:t.defaultValue=a}}}if(Array.isArray(t.children))for(let n=0;n<t.children.length;n++)$h(t.children[n],e)}}function BO(t,e){const r=t.split(".");let n=e;for(const i of r){if(n===null||typeof n!="object"||Array.isArray(n))return{value:null,exists:!1};if(!(i in n))return{value:null,exists:!1};n=n[i]}return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?{value:n,exists:!0}:{value:String(n),exists:!0}}class n2{constructor(){this.initPromise=null,this.initialized=!1,this._preload()}_preload(){return this.initPromise?this.initPromise:(this.initPromise=Promise.all([Vh(),Yb()]).then(()=>{this.initialized=!0,console.log("WidgetHelper: Workers 预加载完成")}).catch(e=>{console.warn("WidgetHelper: Workers 预加载失败:",e.message)}),this.initPromise)}async waitForReady(){this.initPromise&&await this.initPromise}isReady(){return this.initialized}async getTemplate(e){try{return""}catch(r){return console.warn("getTemplate 执行出错:",r.message),""}}async getPreview({view:e,schema:r,defaultState:n}){try{if(await this.waitForReady(),n!=null&&n!==""){const s=typeof n=="string"?JSON.parse(n):n;if(typeof s!="object"||s===null)throw new Error("defaultState 必须是一个有效的 JSON 对象")}const{keyMap:i}=await Y0(r);return await(await Vh()).parse({view:e,state:JSON.parse(n),keyMap:i})}catch(i){return console.warn("getPreview 执行出错:",i.message),""}}async getJsonSchema(e){try{await this.waitForReady();const{jsonSchema:r}=await Y0(e);return r}catch(r){return console.warn("getJsonSchema 执行出错:",r.message),""}}genarateSnapshot(...e){return OO(...e)}decodeWidget(e){try{return JSON.parse(Buffer.from(e,"base64").toString()||"")}catch{return""}}}function FO(){return new n2}function zO(t){try{return jsxToJinja(t)}catch(e){return console.warn("getTemplate 执行出错:",e.message),""}}async function VO({view:t,schema:e,defaultState:r}){try{if(r!=null&&r!==""){const o=typeof r=="string"?JSON.parse(r):r;if(typeof o!="object"||o===null)throw new Error("defaultState 必须是一个有效的 JSON 对象")}const{keyMap:n}=await Y0(e);return await(await Vh()).parse({view:t,state:JSON.parse(r),keyMap:n})}catch(n){return console.warn("getPreview 执行出错:",n.message),""}}async function $O(t){try{const{jsonSchema:e}=await Y0(t);return e}catch(e){return console.warn("getJsonSchema 执行出错:",e.message),""}}const GO={data(){return{_widgetHelper:null}},created(){this._widgetHelper=new n2,this._widgetInstancesMap={},this._audioInstancesMap={},this._classifyTagInstancesMap={},this._planConfirmInstancesMap={},this._audioStateCache={}},methods:{_scaleWidgetIfNeeded(t,e){const r=this.widgetList&&this.widgetList.find(s=>s.widget_run_id===e),n=r&&r.scale,i=this._widgetInstancesMap[e],a=i&&i.instance&&i.instance.$el;if(!a)return;if(!n){t.style.width="",t.style.height="",a.style.transform="",a.style.transformOrigin="";return}let o;if(typeof n=="number")o=n;else if(n===!0){const s=this.$refs.containerRef&&(this.$refs.containerRef.$el||this.$refs.containerRef);if(!s)return;const u=s.clientWidth,l=a.style.transform;a.style.transform="";const c=a.scrollWidth||a.offsetWidth;if(a.style.transform=l,u<=0||c<=u){t.style.width="",t.style.height="",a.style.transform="",a.style.transformOrigin="";return}o=u/c}if(o&&o>0){a.style.transform="";const s=a.scrollWidth||a.offsetWidth,u=a.scrollHeight||a.offsetHeight;t.style.width=`${s*o}px`,t.style.height=`${u*o}px`,a.style.transform=`scale(${o})`,a.style.transformOrigin="top left"}},async _mountWidgets(t){if(!this.showWidget)return;const e=t.querySelectorAll(".widget-container");for(const r of e){if(r._widgetMounted||r._widgetMounting)continue;r._widgetMounting=!0;const n=r.getAttribute("data-widget-run-id"),i=r.getAttribute("data-widget-id"),a=r.getAttribute("data-widget-view"),o=r.getAttribute("data-widget-encoded-widget"),s=r.getAttribute("data-widget-state"),u=r.getAttribute("data-widget-payload"),l=r.getAttribute("data-widget-disable")==="true";if(!a&&!o){r._widgetMounting=!1;continue}const c=s?decodeURIComponent(escape(atob(s))):"",f=u?decodeURIComponent(escape(atob(u))):"",h=a?decodeURIComponent(escape(atob(a))):"";let d="";if(h)d=h;else try{const{view:b,schema:x}=this._widgetHelper.decodeWidget(o);d=await this._widgetHelper.getPreview({view:b,schema:x,defaultState:c}),d=JSON.stringify(d),f&&(d=this._widgetHelper.genarateSnapshot(d,f))}catch(b){console.error("[MsgContent] decodeWidget error",b),r._widgetMounting=!1;continue}const p=Ia.extend(Hb),v=new p({propsData:{output:d,disable:l,locale:this.locale}});v.$on("widget-action",b=>this.$emit("widget-action",b,n,i)),v.$on("widget-event",b=>this.$emit("widget-event",b,n,i)),v.$on("widget-rendered",b=>{this.$emit("widget-rendered",b,n,i),this.$nextTick(()=>this._scaleWidgetIfNeeded(r,n))}),v.$mount(),r.appendChild(v.$el),r._widgetMounted=!0,r._widgetMounting=!1;const g=r.getAttribute("data-widget-view")||"",m=r.getAttribute("data-widget-payload")||"",y=r.getAttribute("data-widget-state")||"",_=r.getAttribute("data-widget-encoded-widget")||"";this._widgetInstancesMap[n]={instance:v,container:r,_lastDataKey:`${g}|${m}|${y}|${_}`}}},_mountAudioPlayers(t){if(!this.audioList||this.audioList.length===0)return;t.querySelectorAll(".audio-stream-container").forEach(r=>{const n=r.getAttribute("data-audio-symbol-id");if(this._audioInstancesMap[n]){r.children.length===0&&r.appendChild(this._audioInstancesMap[n].instance.$el);return}if(r.children.length>0)return;const i=this.audioList&&this.audioList.find(a=>a.audioSymbolId===n);if(i)try{const a=Ia.extend(qb),o=new a({propsData:{audioData:i}});o.$on("play",s=>this.$emit("audio-play",s,n)),o.$on("pause",s=>this.$emit("audio-pause",s,n)),o.$on("end",s=>this.$emit("audio-end",s,n)),o.$on("audio-download",s=>this.$emit("audio-download",s,n)),o.$on("chunk-added",s=>this.$emit("audio-chunk-added",s,n)),o.$on("error",s=>this.$emit("audio-error",s,n)),o.$mount(),r.appendChild(o.$el),this._audioInstancesMap[n]={instance:o,container:r}}catch(a){console.error("[MsgContent] 创建音频播放器失败:",a)}})},_mountClassifyTags(t){if(!this.showClassifyTag)return;t.querySelectorAll(".classify-tag-container").forEach((r,n)=>{if(r._classifyTagMounted)return;const i=r.getAttribute("data-classify-tag");if(i)try{const a=decodeURIComponent(escape(atob(i))),o=JSON.parse(a),s=Ia.extend(r2),u=new s({propsData:{title:o.title||"问题澄清",questions:o.questions||[],disabled:!1}});u.$on("submit",l=>this.$emit("classify-tag-submit",l,o)),u.$on("skip",()=>this.$emit("classify-tag-skip",o)),u.$mount(),r.appendChild(u.$el),r._classifyTagMounted=!0,this._classifyTagInstancesMap[n]={instance:u,container:r}}catch(a){console.error("[MsgContent] ClassifyTag mount error:",a)}})},_mountPlanConfirms(t){if(!this.showPlanConfirm)return;t.querySelectorAll(".plan-confirm-container").forEach((r,n)=>{if(r._planConfirmMounted)return;const i=r.getAttribute("data-plan-confirm");if(i)try{const a=decodeURIComponent(escape(atob(i))),o=JSON.parse(a),s=Ia.extend(EO),u=new s({propsData:{title:o.title||"计划确认",planText:o.planText||"",disabled:!1}});u.$on("confirm",l=>this.$emit("plan-confirm",l,o)),u.$on("skip",l=>this.$emit("plan-skip",l,o)),u.$mount(),r.appendChild(u.$el),r._planConfirmMounted=!0,this._planConfirmInstancesMap[n]={instance:u,container:r}}catch(a){console.error("[MsgContent] PlanConfirm mount error:",a)}})},_mountAll(t){this.$nextTick(()=>{this._mountWidgets(t),this._mountAudioPlayers(t),this._mountClassifyTags(t),this._mountPlanConfirms(t)})},async _updateWidgets(t){if(!t)return;const e=this.$refs.containerRef,r=e&&(e.$el||e);if(!r)return;await this.$nextTick();const n=r.querySelectorAll(".widget-container");for(const i of n){const a=i.getAttribute("data-widget-run-id"),o=this._widgetInstancesMap[a];if(!a||!o)continue;const s=i.getAttribute("data-widget-view")||"",u=i.getAttribute("data-widget-payload")||"",l=i.getAttribute("data-widget-state")||"",c=i.getAttribute("data-widget-encoded-widget")||"",f=i.getAttribute("data-widget-disable")==="true",h=`${s}|${u}|${l}|${c}`;if(o._lastDataKey!==h){o._lastDataKey=h;const d=s?decodeURIComponent(escape(atob(s))):"",p=u?decodeURIComponent(escape(atob(u))):"";let v="";if(d)v=d;else if(c){const g=l?decodeURIComponent(escape(atob(l))):"";try{const{view:m,schema:y}=this._widgetHelper.decodeWidget(c);v=await this._widgetHelper.getPreview({view:m,schema:y,defaultState:g}),v=JSON.stringify(v),p&&(v=this._widgetHelper.genarateSnapshot(v,p))}catch{}}o.instance&&(o.instance.output=v)}o.instance&&(o.instance.disable=f),this._scaleWidgetIfNeeded(i,a)}},_updateAudioPlayers(t){t&&Object.keys(this._audioInstancesMap).forEach(e=>{const r=this._audioInstancesMap[e];if(!r||!r.instance)return;const n=t.find(s=>s.audioSymbolId===e);if(!n)return;const i=n.audio_data&&n.audio_data.length||0,a=!!n.isComplete,o=this._audioStateCache[e]||{length:0,isComplete:!1};(i!==o.length||a!==o.isComplete)&&(this._audioStateCache[e]={length:i,isComplete:a},r.instance.audioData=n)})},_destroyAllEmbedded(){Object.keys(this._widgetInstancesMap).forEach(t=>{try{this._widgetInstancesMap[t].instance.$destroy()}catch{}delete this._widgetInstancesMap[t]}),Object.keys(this._audioInstancesMap).forEach(t=>{try{this._audioInstancesMap[t].instance.$destroy()}catch{}delete this._audioInstancesMap[t]}),Object.keys(this._classifyTagInstancesMap).forEach(t=>{try{this._classifyTagInstancesMap[t].instance.$destroy()}catch{}delete this._classifyTagInstancesMap[t]}),Object.keys(this._planConfirmInstancesMap).forEach(t=>{try{this._planConfirmInstancesMap[t].instance.$destroy()}catch{}delete this._planConfirmInstancesMap[t]}),this._audioStateCache={}}},beforeDestroy(){this._destroyAllEmbedded()}},HO={methods:{_postrender(t){let e=t.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace("CURSOR_POINT",'<span class="cursor"></span>');const r=document.createElement("div");return r.innerHTML=e,r.querySelectorAll("img").forEach(n=>{const i=Gb(n.src,"size"),a=i&&i.split("|")||[];let o,s;if(a[1]){const u=a[1].split("*");o=u[0],u[1]&&(s=u[0]/u[1])}a[0]&&(a[0]==="min"&&(!o||o<24)?o=this.imgMinWidth||"24":a[0]==="mid"&&o>320?o=this.imgMaxWidth||"320":a[0]==="max"&&(o=this.imgMaxWidth||"320")),o&&(n.style.width=o===this.imgMaxWidth||o===this.imgMinWidth?o:`${o}px`),s&&(n.style.height=`${o/s}px`)}),r.querySelectorAll("pre code:not(.language-mermaid)").forEach((n,i,a)=>{if(Array.from(n.classList).some(s=>s.startsWith("language-"))?this.incremental||nf(n):n.classList.add("hljs"),this.isFinal){this.incremental||nv(n);const s=n.parentNode.querySelector(".cursor");s&&s.remove()}else if(this.isPrintAnimate&&!r.querySelector(".cursor")&&i===a.length-1&&!this.isFinal&&n.parentElement===r.lastElementChild){const s=document.createElement("span");s.className="cursor",n.append(s)}if(!this.incremental&&!n.parentNode.querySelector(".code-language-label")&&n.result&&n.result.language){const s=document.createElement("div");s.className="code-language-label",this.codeHeaderRender?s.innerHTML=this.codeHeaderRender(n.result.language,this.content,i):s.textContent=n.result.language,n.parentNode.insertBefore(s,n)}}),Cb(r),this.$emit("postrender",this.currentIndex,this.$refs.containerRef&&(this.$refs.containerRef.$el||this.$refs.containerRef),this.recordId),r.innerHTML.replace(/-->/g,"-->")},_onImageClick(t){this.$emit("imageClick",t)},_onDownloadCardClick(t,e){this.$emit("downloadCardClick",t,e)},_onMDRendered(t){t&&(this.incremental&&t.querySelectorAll("pre code:not(.language-mermaid)").forEach((e,r,n)=>{if(Array.from(e.classList).some(a=>a.startsWith("language-"))&&!e._highlighted&&(r===n.length-1&&!this.isFinal?nf(e):(nf(e),e._highlighted=!0)),this.isFinal&&!e._lineNumbered&&(nv(e),e._lineNumbered=!0),!e.parentNode.querySelector(".code-language-label")&&e.result&&e.result.language){const a=document.createElement("div");a.className="code-language-label",this.codeHeaderRender?a.innerHTML=this.codeHeaderRender(e.result.language,this.content,r):a.textContent=e.result.language,e.parentNode.insertBefore(a,e)}}),this.isFinal?(this.incremental?t.querySelectorAll(".question-text img, .answer-md img").forEach(e=>{e._imgClickBound||(e.addEventListener("click",this._onImageClick),e._imgClickBound=!0)}):(t.querySelectorAll(".question-text img").forEach(e=>{e.removeEventListener("click",this._onImageClick),e.addEventListener("click",this._onImageClick)}),t.querySelectorAll(".answer-md img").forEach(e=>{e.removeEventListener("click",this._onImageClick),e.addEventListener("click",this._onImageClick)})),t.querySelectorAll(`.${this.clazzMd||"answer-md"} a`).forEach(e=>{e.setAttribute("target","_blank")}),t.querySelectorAll(".video-placeholder").forEach(e=>e.remove()),t.querySelectorAll("video").forEach(e=>{e.style.display="block"})):t.querySelectorAll(".video-placeholder").forEach(e=>{this.incremental&&e._videoPlaceholderSet||(e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" style="animation: video-placeholder-spin 1s linear infinite; flex-shrink: 0;"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.36131 2.32604C0.902925 3.77517 0 5.78264 0 8.00101C0 12.4193 3.58172 16.001 8 16.001C12.4183 16.001 16 12.4193 16 8.00101C16 3.58326 12.4191 0.00187492 8.00161 0.00100708L8.85183 1.6572C11.9837 2.07373 14.4 4.7552 14.4 8.00101C14.4 11.5356 11.5346 14.401 8 14.401C4.46538 14.401 1.6 11.5356 1.6 8.00101C1.6 6.40633 2.18324 4.94787 3.14803 3.82731L2.36131 2.32604Z" fill="currentColor"/></svg>视频加载中...',this.incremental&&(e._videoPlaceholderSet=!0))}),this.showTags&&t.querySelectorAll(".tags-container").forEach(e=>{this.incremental&&e._tagClickBound||(this.incremental?(e.addEventListener("click",()=>this.$emit("littleTagClick",e,this.recordId)),e._tagClickBound=!0):(e.removeEventListener("click",this._tagClickHandler),e.addEventListener("click",()=>this.$emit("littleTagClick",e,this.recordId))))}),this.showDownloadCard&&t.querySelectorAll(".download-card").forEach(e=>{this.incremental&&e._downloadClickBound||(e.addEventListener("click",r=>{const n=r.currentTarget.getAttribute("data-file-id");this._onDownloadCardClick(n,r);try{r&&r.preventDefault&&r.preventDefault()}catch{}}),this.incremental&&(e._downloadClickBound=!0))}),this.isMermaidRenderAfterOutput?this.isFinal&&setTimeout(()=>{f1.onMermaidLoaded(()=>{f1.renderAll(t)})},0):setTimeout(()=>{f1.onMermaidLoaded(()=>{f1.renderAll(t)})},0),this._mountAll(t))}}};const UO={name:"MsgContent",components:{MDRender:PP},mixins:[eO,GO,HO],props:{showDownloadCard:{type:Boolean,default:!1},showTags:{type:Boolean,default:!1},fullFiles:{type:Array,default:()=>[]},recordId:String,content:{type:String,default:""},isFinal:{type:Boolean,default:!1},loadingMessage:{type:Boolean,default:!1},isMdExpand:{type:[Boolean,void 0],default:void 0},isReplaceLinks:{type:Boolean,default:!1},isPrintAnimate:{type:Boolean,default:!1},styleObj:Object,clazzTable:String,clazzMd:String,anchorAttributes:Object,linkify:{type:Boolean,default:!1},imgMinWidth:[Number,String],imgMaxWidth:[Number,String],printCount:Number,printCountTime:Number,hideCursorPoint:Boolean,chartDataArr:Array,codeHeaderRender:Function,replaceLinksWhitelist:Array,isMermaidRenderAfterOutput:{type:Boolean,default:!1},showWidget:{type:Boolean,default:!1},widgetList:{type:Array,default:()=>[]},audioList:{type:Array,default:()=>[]},locale:{type:String,default:"zh-CN"},incremental:{type:Boolean,default:!0},showClassifyTag:{type:Boolean,default:!1},showPlanConfirm:{type:Boolean,default:!1}},data(){return{currentText:"",renderText:""}},computed:{processOptions(){return{isReplaceLinks:this.isReplaceLinks,replaceLinksWhitelist:this.replaceLinksWhitelist,isFinal:this.isFinal,showTags:this.showTags,showDownloadCard:this.showDownloadCard,fullFiles:this.fullFiles,showWidget:this.showWidget,widgetList:this.widgetList,audioList:this.audioList,showClassifyTag:this.showClassifyTag,showPlanConfirm:this.showPlanConfirm}}},watch:{content(t){this.clearTimer(),this.currentIndex=this.currentText.length,this.currentText=this._getProcessedContent(t),this.isPrintAnimate?this._startPrint():this.renderText=this.currentText},isFinal(t){t&&this.content&&(this.clearTimer(),this.currentText=this._getProcessedContent(this.content),this.renderText=this.currentText,this.currentIndex=this.currentText.length)},isMdExpand(t){t?this.currentText=af(this.content,this.processOptions):this.currentText=af((this.content||"").substr(0,3e3),this.processOptions),this.renderText=this.currentText,this.clearTimer(),this.currentIndex=this.currentText.length},widgetList:{handler(t){this._updateWidgets(t)},deep:!0},audioList:{handler(t){this._updateAudioPlayers(t)},deep:!0}},created(){this._init()},mounted(){xN()},beforeDestroy(){this.clearTimer(),this._destroyAllEmbedded()},methods:{_getProcessedContent(t){if(!t)return"";const e=this.isMdExpand===void 0||this.isMdExpand?1e6:1e4;return af(t.substr(0,e),this.processOptions)},_startPrint(){this.startCurrentTimer({printCount:this.printCount||1,printCountTime:this.printCountTime||16,hideCursorPoint:this.hideCursorPoint,isFinal:this.isFinal})},_init(){const t=this._getProcessedContent(this.content||"");this.currentText=t,!this.isPrintAnimate||this.isFinal?(this.renderText=t,this.currentIndex=t.length,this.clearTimer()):this._startPrint()}}};var WO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"msg-content"},[e.loadingMessage?e._e():[r("MDRender",{ref:"containerRef",class:e.clazzMd||"answer-md",style:e.styleObj,attrs:{highlight:!0,"table-class":e.clazzTable||(e.isFinal?"table-style":"table"),source:e.renderText,"anchor-attributes":e.anchorAttributes||{target:"_blank"},linkify:e.linkify,incremental:e.incremental,postrender:e._postrender},on:{rendered:e._onMDRendered}})]],2)},qO=[],ZO=pr(UO,WO,qO,!1,null,null,null,null);const Xb=ZO.exports,Z4=An(Xb);const YO={name:"MsgThought",components:{VIcon:t2},props:{titleRender:{type:[Object,Function],default:null},isMobile:Boolean,content:String,title:String,titleIcon:String,nodeName:String,status:String,elapsed:{type:Number,default:0},detailVisible:{type:Boolean,default:!0}},data(){return{THOUGHT_STATUS:gP,innerDetailVisible:this.detailVisible,renderedContent:"",xssHandler:new Un.FilterXSS(vP)}},computed:{elapsedSeconds(){return this.elapsed?(this.elapsed/1e3).toFixed(1):0}},watch:{content:{immediate:!0,handler(t){const e=(t||"").replace(/^\n+/,"").replace(/\n/g,"<br>");this.renderedContent=this.xssHandler.process(e)}},detailVisible(t){this.innerDetailVisible=t}},methods:{onTitleClick(){const t=!this.innerDetailVisible;this.innerDetailVisible=t,this.$emit("update:detailVisible",t)}}};var XO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"thought-clps-content"},[e.titleRender?r(e.titleRender,{tag:"component"}):e._e(),e.titleRender?e._e():r("div",{staticClass:"thought-title",on:{click:e.onTitleClick}},[r("div",{staticClass:"thought-title-container"},[r("img",{staticClass:"thought-title-icon",attrs:{src:e.titleIcon}}),r("span",{staticClass:"thought-title-name"},[e._v(" "+e._s(e.title)+" "),e.nodeName?r("span",{staticClass:"thought-clps-modellabel"},[e._v(" -"+e._s(e.nodeName)+" ")]):e._e()]),e.status===e.THOUGHT_STATUS.failed?r("v-icon",{style:{color:"#FF8345"},attrs:{name:"basic_warning_line",size:"16"}}):e._e(),e.status===e.THOUGHT_STATUS.success?r("v-icon",{style:{color:"#0FB87F"},attrs:{name:"basic_finish_line",size:"16"}}):e._e(),e.status===e.THOUGHT_STATUS.stop?r("v-icon",{style:{color:"rgba(1,11,50,0.41)"},attrs:{name:"basic_stop_line",size:"16"}}):e._e()],1),r("div",{staticClass:"thought-title-container thought-title-elapsed"},[r("span",[e._v(e._s(e.elapsedSeconds)+"s")]),r("v-icon",{staticClass:"thought__header__icon",attrs:{name:"arrow_down_small_line",rotate:e.innerDetailVisible?180:0,size:"12"}})],1)]),e.innerDetailVisible?r("div",{staticClass:"thought-detail"},[r("div",{staticClass:"question-text",class:{"question-text-mobile":e.isMobile},domProps:{innerHTML:e._s(e.renderedContent)}})]):e._e()],1)},jO=[],KO=pr(YO,XO,jO,!1,null,"60c16159",null,null);const QO=KO.exports,Y4=An(QO);/*! *****************************************************************************
|
|
49
|
+
`))}return t=qN(t),t=WN(t),r&&(t=JN(t,n)),YN(t)||(t=XN(t),t=KN.clean(t)),t=EN(t),t=kN(t),t=CN(t),t=MN(t),t=wN(t),t=SN(t),t=UN(t),i||(t=AN(t)),t=TN(t),a&&(t=FN(t)),o&&(t=BN(t,s)),u?t=PN(t,l):t=RN(t),c&&c.length>0?t=NN(t,c):t=ON(t),f?t=zN(t):t=VN(t),h?t=$N(t):t=GN(t),t=DN(t),t=jN.process(dE(t)),t}function JN(t,e){if(!t||Gb(window.location.hash,"from"))return t;let n=["lke.cloud.tencent.com","qidian"];e&&(n=e.concat(n));const i=HN(t);i.forEach((u,l)=>{t=t.replace(u,`IMG_URL${l}`)});const a=`${window.location.protocol}//${window.location.host}/lke#/link-info/redirect?target=`,o=n.map(u=>`(?!.*${u})`).join(""),s=new RegExp(`(\\[([^\\]]+)\\]\\((https?:\\/\\/${o}[^\\s)]+)\\))|(<a\\s+[^>]*href="(${o}[^"]+)"[^>]*>(.*?)<\\/a>)`,"gi");return t=t.replace(s,(u,l,c,f,h,d,p)=>l&&c?`[${c}](${a}${encodeURIComponent(f)})`:d&&!d.startsWith("#")?`<a href="${a}${encodeURIComponent(d)}">${p}</a>`:u),i.forEach((u,l)=>{t=t.replace(`IMG_URL${l}`,u)}),t}function af(t,e={}){return LN(t,r=>QN(r,e))}const eO={data(){return{currentTimer:null,currentIndex:0}},methods:{clearTimer(){this.currentTimer&&(clearTimeout(this.currentTimer),this.currentTimer=null)},startCurrentTimer(t={}){const{printCount:e=1,printCountTime:r=16,hideCursorPoint:n=!1,isFinal:i=!1}=t;this.clearTimer(),this.currentTimer=setTimeout(()=>{const a=e;this.currentIndex+=a,this.renderText=n?this.currentText.substring(0,this.currentIndex):this.currentText.substring(0,this.currentIndex)+"CURSOR_POINT",(this.currentIndex<this.currentText.length||!i)&&this.startCurrentTimer(t)},r)}},beforeDestroy(){this.clearTimer()}};function tO(t,e={}){const{type:r="text/javascript",crossOrigin:n}=e;return new Promise((i,a)=>{if(document.querySelector(`script[src="${t}"]`)){i();return}const o=document.createElement("script");o.src=t,o.type=r,n&&(o.crossOrigin=n),o.onload=i,o.onerror=()=>a(new Error(`Failed to load: ${t}`)),document.head.appendChild(o)})}function rO(){const t=Date.now(),e=5*60*1e3;return Math.floor(t/e)*e}async function nO(){try{window.tdWidgetSrc="/cdn-proxy/webim/assets/static/widget/release/lib/js/";const t=window.tdWidgetSrc||"https://cdn.xiaowei.qq.com/webim/assets/static/widget/release/lib/js/",e=rO();return await tO(`${t}adp-widget.js?nounce=${e}`,{type:"module"}),!0}catch(t){throw console.error("Failed to load adp-widget:",t),t}}Ia.config&&!Ia.config.ignoredElements.includes("adp-widget")&&Ia.config.ignoredElements.push("adp-widget");const iO={name:"MsgWidget",props:{output:{type:String,default:""},locale:{type:String,default:"zh-CN"},disable:{type:Boolean,default:!1}},data(){return{loaded:!1}},async mounted(){try{await nO(),this.loaded=!0}catch(t){console.error("[MsgWidget] 加载 adp-widget 失败:",t)}},methods:{handleAction(t){const{action:e}=t.detail||{};this.$emit("widget-action",e),this.$emit("widget-event",t)},handleRendered(t){const{success:e,config:r,error:n,timestamp:i}=t.detail||{};this.$emit("widget-rendered",{success:e,config:r,error:n,timestamp:i})}}};var aO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"lke__widget-container"},[e.output&&e.loaded?r("adp-widget",{ref:"widget",attrs:{locale:e.locale,"widget-json":e.output,disable:e.disable},on:{"widget-rendered":e.handleRendered,"widget-action":e.handleAction}}):e._e()],1)},oO=[],sO=pr(iO,aO,oO,!1,null,"c152fdb4",null,null);const Hb=sO.exports,Y=(...t)=>{console.log("[StreamAudioPlayer24]",...t)};let Ub=class{constructor(){this.playMode=null,this.audioContext=null,this.audioQueue=[],this.pendingChunks=[],this.isPlaying=!1,this.totalDuration=0,this.estimatedDuration=0,this.pausedAt=0,this.startedAt=0,this.timeUpdateInterval=null,this.scheduledSources=[],this.nextScheduleTime=0,this.scheduledCount=0,this.autoPlayCheckInterval=null,this.autoPlayCheckWaitTime=0,this.processedChunkCount=0,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.decodeAheadCount=1;const e=this.isMobileDevice();this.maxDecodedBuffers=e?8:20,this.playedBufferCount=0,this.audioElement=null,this.iosUnlockAudio=null,this.mediaStreamDestination=null,this.wasPlayingBeforeHidden=!1,this.handleVisibilityChange=null,this.onPlayCallback=null,this.onPauseCallback=null,this.onEndCallback=null,this.onErrorCallback=null,this.onTimeUpdateCallback=null,this.onDurationChangeCallback=null,this.onUrlReadyCallback=null,this.generationComplete=!1,this.durationFromUrlSet=!1,this.urlReady=!1,this.fullAudioUrl=null,this.preloadedAudioElement=null}isMobileDevice(){return typeof navigator>"u"?!1:/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}initAudioContext(){if(!this.audioContext)try{const e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e,Y("[initAudioContext] AudioContext 创建成功",{state:this.audioContext.state,sampleRate:this.audioContext.sampleRate,isIOS:/iPhone|iPad|iPod/i.test(navigator.userAgent)}),this.audioContext.onstatechange=()=>{if(Y("[AudioContext.onstatechange] 状态变化:",this.audioContext.state),(this.audioContext.state==="interrupted"||this.audioContext.state==="suspended")&&this.isPlaying&&this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[AudioContext.onstatechange] iOS audio 元素已暂停")}catch{}},this.handleVisibilityChange=()=>{var r,n,i,a;document.hidden?(this.wasPlayingBeforeHidden=this.isPlaying,Y("[visibilitychange] 页面隐藏,记录播放状态:",this.wasPlayingBeforeHidden)):(Y("[visibilitychange] 页面可见",{wasPlayingBeforeHidden:this.wasPlayingBeforeHidden,isPlaying:this.isPlaying,audioContextState:(r=this.audioContext)==null?void 0:r.state}),this.wasPlayingBeforeHidden&&(((n=this.audioContext)==null?void 0:n.state)==="suspended"||((i=this.audioContext)==null?void 0:i.state)==="interrupted"?this.audioContext.resume().then(()=>{Y("[visibilitychange] AudioContext 已恢复"),this.isPlaying&&this.iosUnlockAudio&&this.iosUnlockAudio.play().catch(o=>{Y("[visibilitychange] iOS audio 恢复播放失败:",o)})}).catch(o=>{Y("[visibilitychange] AudioContext 恢复失败:",o),this.isPlaying&&(this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback())}):((a=this.audioContext)==null?void 0:a.state)==="running"&&this.isPlaying&&this.iosUnlockAudio&&this.iosUnlockAudio.play().catch(o=>{Y("[visibilitychange] iOS audio 恢复播放失败:",o)})),this.wasPlayingBeforeHidden=!1)},document.addEventListener("visibilitychange",this.handleVisibilityChange),/iPhone|iPad|iPod/i.test(navigator.userAgent)&&this.setupIOSAudioRoute()}catch(e){console.error("[initAudioContext] 创建 AudioContext 失败:",e),this.onErrorCallback&&this.onErrorCallback(new Error("浏览器不支持音频播放"))}}setupIOSAudioRoute(){if(this.audioContext)try{if(typeof this.audioContext.createMediaStreamDestination!="function"){Y("[setupIOSAudioRoute] 浏览器不支持 createMediaStreamDestination");return}this.mediaStreamDestination=this.audioContext.createMediaStreamDestination(),this.iosUnlockAudio=document.createElement("audio"),this.iosUnlockAudio.srcObject=this.mediaStreamDestination.stream,this.iosUnlockAudio.setAttribute("playsinline","true"),this.iosUnlockAudio.setAttribute("webkit-playsinline","true"),this.iosUnlockAudio.onerror=e=>{Y("[setupIOSAudioRoute] iOS audio 元素错误:",e)},Y("[setupIOSAudioRoute] iOS 音频路由设置完成")}catch(e){console.error("[setupIOSAudioRoute] 设置失败:",e),this.mediaStreamDestination=null,this.iosUnlockAudio=null}}getAudioDestination(){return this.mediaStreamDestination?this.mediaStreamDestination:this.audioContext?this.audioContext.destination:null}async startIOSAudioElement(){if(this.iosUnlockAudio)try{await this.iosUnlockAudio.play(),Y("[startIOSAudioElement] iOS audio 元素播放启动成功")}catch(e){Y("[startIOSAudioElement] iOS audio 元素播放失败:",e)}}initAudioElement(){this.audioElement||(this.audioElement=new Audio,this.audioElement.preload="metadata",this.audioElement.addEventListener("play",()=>{this.isPlaying=!0,this.onPlayCallback&&this.onPlayCallback()}),this.audioElement.addEventListener("pause",()=>{this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback()}),this.audioElement.addEventListener("ended",()=>{this.isPlaying=!1,this.onEndCallback&&this.onEndCallback()}),this.audioElement.addEventListener("timeupdate",()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime,this.audioElement.duration||0)}),this.audioElement.addEventListener("durationchange",()=>{this.totalDuration=this.audioElement.duration||0,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}),this.audioElement.addEventListener("error",e=>{this.onErrorCallback&&this.onErrorCallback(new Error("音频加载失败: "+(e.message||"未知错误")))}),this.audioElement.addEventListener("loadedmetadata",()=>{this.totalDuration=this.audioElement.duration||0,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}))}setPlayMode(e){this.playMode!==e&&(this.playMode==="stream"?this.clearStreamMode():this.playMode==="url"&&this.clearUrlMode(),this.playMode=e,e==="stream"?this.initAudioContext():e==="url"&&this.initAudioElement())}clearStreamMode(){this.stop(),this.audioQueue=[],this.pendingChunks=[],this.totalDuration=0,this.estimatedDuration=0,this.scheduledCount=0,this.nextScheduleTime=0,this.processedChunkCount=0,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.playedBufferCount=0,this.generationComplete=!1,this.fullAudioUrl=null,this.urlReady=!1,this.preloadedAudioElement=null,this.iosUnlockAudio&&(this.iosUnlockAudio.pause(),this.iosUnlockAudio.srcObject=null,this.iosUnlockAudio=null),this.mediaStreamDestination=null,this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.handleVisibilityChange=null),this.audioContext&&(this.audioContext.onstatechange=null,this.audioContext.close().catch(()=>{}),this.audioContext=null),this.wasPlayingBeforeHidden=!1}clearUrlMode(){this.audioElement&&(this.audioElement.pause(),this.audioElement.src="")}setAudioUrl(e){e&&(this.setPlayMode("url"),this.audioElement.src=e,this.audioElement.load())}async ensureAudioContextRunning(){if(!this.audioContext)throw new Error("AudioContext not initialized");if(Y("[ensureAudioContextRunning] 当前状态:",this.audioContext.state),this.audioContext.state==="suspended")try{await this.audioContext.resume(),Y("[ensureAudioContextRunning] resume 成功,新状态:",this.audioContext.state),/iPhone|iPad|iPod/i.test(navigator.userAgent)&&await this.playUnlockSound()}catch(e){throw console.error("[ensureAudioContextRunning] resume 失败:",e),new Error("无法激活音频上下文")}else if(this.audioContext.state==="interrupted")try{await this.audioContext.resume(),Y("[ensureAudioContextRunning] 从 interrupted 状态恢复")}catch(e){throw console.error("[ensureAudioContextRunning] 从 interrupted 恢复失败:",e),new Error("无法恢复音频上下文")}}async playUnlockSound(){if(this.audioContext)try{const e=this.audioContext.createBuffer(1,1,this.audioContext.sampleRate),r=this.audioContext.createBufferSource();r.buffer=e,r.connect(this.getAudioDestination()),r.start(0),Y("[playUnlockSound] 播放解锁音频完成")}catch(e){Y("[playUnlockSound] 播放解锁音频失败(可忽略):",e)}}addBase64ChunkLazy(e,r=1){if(!e)return;this.setPlayMode("stream"),this.pendingChunks.push(e);const n=(e.length*.75/1024).toFixed(2);Y(`[addBase64ChunkLazy] 添加第 ${this.pendingChunks.length+this.processedChunkCount} 个chunk`,{chunkSize:`${n} KB`,pendingChunks:this.pendingChunks.length,processedChunkCount:this.processedChunkCount,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,isPlaying:this.isPlaying,totalDuration:this.totalDuration.toFixed(2),estimatedDuration:this.estimatedDuration.toFixed(2)}),this.estimatedDuration+=r,this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration()),this.autoPlayCheckWaitTime>0&&(Y("[addBase64ChunkLazy] 重置等待超时时间"),this.autoPlayCheckWaitTime=0),this.isPlaying?(Y("[addBase64ChunkLazy] 正在播放,触发 decodeAhead"),this.decodeAhead()):Y("[addBase64ChunkLazy] 未在播放状态,不触发解码")}async addBase64Chunk(e){e&&this.addBase64ChunkLazy(e)}getDisplayDuration(){return Math.floor(this.totalDuration+this.estimatedDuration)}async decodeAhead(){let e=0;if(this.audioQueue.forEach(i=>{e+=i.duration}),Y("[decodeAhead] 开始",{decodingInProgress:this.decodingInProgress,pendingChunks:this.pendingChunks.length,audioQueueLength:this.audioQueue.length,currentQueueDuration:e.toFixed(2),scheduledCount:this.scheduledCount,isPlaying:this.isPlaying,generationComplete:this.generationComplete,totalDuration:this.totalDuration.toFixed(2)}),this.decodingInProgress){Y("[decodeAhead] 已在解码中,跳过");return}if(this.pendingChunks.length===0){Y("[decodeAhead] 没有待解码的 chunk,跳过");return}const r=this.audioQueue.length-this.scheduledCount;if(Y("[decodeAhead] 未调度数量检查",{unscheduledCount:r,decodeAheadCount:this.decodeAheadCount,needMoreDecode:r<this.decodeAheadCount}),r>=this.decodeAheadCount&&this.pendingChunks.length>0){Y("[decodeAhead] 已有足够预解码 buffer,100ms 后再检查"),setTimeout(()=>this.decodeAhead(),100);return}this.decodingInProgress=!0;const n=this.processedChunkCount+1;try{const i=this.pendingChunks.shift(),a=(i.length*.75/1024).toFixed(2);Y(`[decodeAhead] 开始解码第 ${n} 个chunk`,{size:`${a} KB`});const o=window.atob(i),s=new Uint8Array(o.length);for(let l=0;l<o.length;l++)s[l]=o.charCodeAt(l);const u=s.buffer;await this.addAudioChunkInternal(u),Y(`[decodeAhead] 第 ${n} 个chunk 解码完成`,{audioQueueLength:this.audioQueue.length,totalDuration:this.totalDuration.toFixed(2),durationFromUrlSet:this.durationFromUrlSet}),this.durationFromUrlSet||(this.estimatedDuration>0&&(this.estimatedDuration=Math.max(0,this.estimatedDuration-1)),this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration()))}catch(i){console.error(`[decodeAhead] 解码第 ${n} 个chunk 失败:`,i),this.onErrorCallback&&this.onErrorCallback(i)}finally{this.decodingInProgress=!1}this.pendingChunks.length>0&&this.isPlaying?(Y("[decodeAhead] 继续解码下一个chunk"),setTimeout(()=>this.decodeAhead(),0)):Y("[decodeAhead] 解码结束",{pendingChunks:this.pendingChunks.length,isPlaying:this.isPlaying})}async processAudioDataArray(e){if(!e||!Array.isArray(e))return;const r=e.slice(this.processedChunkCount);Y("[processAudioDataArray] 处理音频数据数组",{totalLength:e.length,processedChunkCount:this.processedChunkCount,newChunksCount:r.length});for(const n of r)await this.addBase64Chunk(n),this.processedChunkCount++;Y("[processAudioDataArray] 处理完成",{processedChunkCount:this.processedChunkCount})}decodeAudioDataCompat(e){const r=(e.byteLength/1024).toFixed(2);return Y("[decodeAudioDataCompat] 开始解码",{size:`${r} KB`}),new Promise((n,i)=>{const a=this.audioContext.decodeAudioData(e,o=>{Y("[decodeAudioDataCompat] 解码成功",{duration:o.duration.toFixed(2),sampleRate:o.sampleRate,channels:o.numberOfChannels}),n(o)},o=>{console.error("[decodeAudioDataCompat] 解码失败",{error:(o==null?void 0:o.message)||o,bufferSize:`${r} KB`}),i(o||new Error("解码音频数据失败"))});a&&typeof a.then=="function"&&a.then(n).catch(o=>{console.error("[decodeAudioDataCompat] Promise 解码失败",{error:(o==null?void 0:o.message)||o,bufferSize:`${r} KB`}),i(o)})})}async addAudioChunk(e){return this.addAudioChunkInternal(e)}async addAudioChunkInternal(e){if(this.setPlayMode("stream"),!this.audioContext)throw new Error("AudioContext not initialized");try{let r;e instanceof Blob?r=await e.arrayBuffer():r=e;const n=(r.byteLength/1024).toFixed(2);Y("[addAudioChunkInternal] 开始解码 ArrayBuffer",{size:`${n} KB`});const i=r.slice(0),a=await this.decodeAudioDataCompat(i),o=this.audioQueue.length,s=this.totalDuration;this.audioQueue.push(a),this.durationFromUrlSet||(this.totalDuration+=a.duration),Y("[addAudioChunkInternal] 解码成功",{bufferDuration:a.duration.toFixed(2),sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,length:a.length,audioQueueLength:`${o} -> ${this.audioQueue.length}`,totalDuration:`${s.toFixed(2)} -> ${this.totalDuration.toFixed(2)}`,durationFromUrlSet:this.durationFromUrlSet}),this.isPlaying&&!this.isSchedulingFromPosition?(Y("[addAudioChunkInternal] 正在播放,调用 scheduleNewChunks"),this.scheduleNewChunks()):this.isSchedulingFromPosition?Y("[addAudioChunkInternal] 正在执行 scheduleFromPosition,跳过 scheduleNewChunks"):Y("[addAudioChunkInternal] 未在播放状态,不调度"),this.onDurationChangeCallback&&!this.durationFromUrlSet&&this.onDurationChangeCallback(this.getDisplayDuration())}catch(r){console.error("[addAudioChunkInternal] 解码音频数据失败:",r),this.onErrorCallback&&this.onErrorCallback(r)}}async addPCMChunk(e,r=24e3,n=1,i=16){if(this.setPlayMode("stream"),!this.audioContext)throw new Error("AudioContext not initialized");try{const a=i/8,o=e.byteLength/(a*n),s=this.audioContext.createBuffer(n,o,r),u=new DataView(e);for(let l=0;l<n;l++){const c=s.getChannelData(l);for(let f=0;f<o;f++){let h;if(i===16)h=u.getInt16((f*n+l)*2,!0)/32768;else if(i===8)h=(u.getUint8(f*n+l)-128)/128;else if(i===32)h=u.getFloat32((f*n+l)*4,!0);else throw new Error(`Unsupported bits per sample: ${i}`);c[f]=h}}this.audioQueue.push(s),this.totalDuration+=s.duration,this.isPlaying&&this.audioContext&&this.scheduleNewChunks(),this.onDurationChangeCallback&&this.onDurationChangeCallback(this.totalDuration)}catch(a){this.onErrorCallback&&this.onErrorCallback(a)}}scheduleNewChunks(){if(!this.audioContext||!this.isPlaying){Y("[scheduleNewChunks] 跳过",{hasAudioContext:!!this.audioContext,isPlaying:this.isPlaying});return}const e=this.audioContext.currentTime,r=this.scheduledCount;this.scheduledCount>this.audioQueue.length&&(Y("[scheduleNewChunks] 警告:scheduledCount 超出 audioQueue 长度!",{scheduledCount:this.scheduledCount,audioQueueLength:this.audioQueue.length,playedBufferCount:this.playedBufferCount}),this.scheduledCount=this.audioQueue.length),Y("[scheduleNewChunks] 开始调度",{audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,toSchedule:this.audioQueue.length-this.scheduledCount,currentTime:e.toFixed(3),nextScheduleTime:this.nextScheduleTime.toFixed(3),pendingChunks:this.pendingChunks.length});for(let n=this.scheduledCount;n<this.audioQueue.length;n++){const i=this.audioQueue[n],a=this.audioContext.createBufferSource();a.buffer=i,a.connect(this.getAudioDestination());const o=Math.max(e,this.nextScheduleTime);Y(`[scheduleNewChunks] 调度第 ${n+1} 个buffer`,{bufferDuration:i.duration.toFixed(2),scheduleTime:o.toFixed(3),currentTime:e.toFixed(3)}),a.start(o,0,i.duration),this.nextScheduleTime=o+i.duration,this.scheduledCount++,this.scheduledSources.push(a),a.onended=()=>{const s=this.scheduledSources.indexOf(a);if(s===-1){Y(`[sourceNode.onended] 第 ${n+1} 个buffer 被手动停止,跳过后续逻辑`);return}if(this.scheduledSources.splice(s,1),this.playedBufferCount++,this.cleanupOldBuffers(),Y(`[sourceNode.onended] 第 ${n+1} 个buffer 播放结束`,{scheduledSourcesLength:this.scheduledSources.length,isPlaying:this.isPlaying,pendingChunks:this.pendingChunks.length,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,generationComplete:this.generationComplete,playedBufferCount:this.playedBufferCount}),this.decodeAhead(),this.scheduledSources.length===0&&this.isPlaying){let u=0;this.audioQueue.forEach(l=>{u+=l.duration}),Y("[sourceNode.onended] 所有已调度片段播放完毕,尝试调度新片段",{audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledCount:this.audioQueue.length-this.scheduledCount,remainingQueueDuration:u.toFixed(2),pendingChunks:this.pendingChunks.length}),this.scheduleNewChunks(),this.scheduledSources.length===0&&(Y("[sourceNode.onended] 调度后仍无片段",{pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledBuffers:this.audioQueue.length-this.scheduledCount}),this.pendingChunks.length>0?(Y("[sourceNode.onended] 还有待解码chunk,启动 autoPlayCheck"),this.startAutoPlayCheck()):this.audioQueue.length>this.scheduledCount?(Y("[sourceNode.onended] 还有未调度的buffer,重新调度"),this.scheduleNewChunks()):this.generationComplete?(Y("[sourceNode.onended] 生成完成,结束播放"),this.handlePlaybackEnd()):(Y("[sourceNode.onended] 等待新数据,启动 autoPlayCheck"),this.startAutoPlayCheck()))}}}Y("[scheduleNewChunks] 调度完成",{scheduledCount:`${r} -> ${this.scheduledCount}`,scheduledSourcesLength:this.scheduledSources.length,nextScheduleTime:this.nextScheduleTime.toFixed(3)})}async play(){if(this.playMode==="url"&&this.audioElement){try{await this.audioElement.play()}catch(e){this.onErrorCallback&&this.onErrorCallback(e)}return}if(!this.audioContext){this.onErrorCallback&&this.onErrorCallback(new Error("AudioContext not initialized"));return}if(!this.isPlaying){try{await this.ensureAudioContextRunning(),await this.startIOSAudioElement()}catch(e){this.onErrorCallback&&this.onErrorCallback(e);return}if(this.audioQueue.length===0&&this.pendingChunks.length>0&&await this.decodeFirstChunk(),this.audioQueue.length===0){Y("[play] 没有可播放的音频数据");return}this.isPlaying=!0,this.startedAt=this.audioContext.currentTime-this.pausedAt,this.pausedAt===0&&(this.scheduledCount=0,this.nextScheduleTime=this.audioContext.currentTime),this.pausedAt===0?this.scheduleNewChunks():this.scheduleFromPosition(this.pausedAt),this.decodeAhead(),this.onPlayCallback&&this.onPlayCallback(),this.startTimeUpdate(),Y("[play] 播放开始",{audioContextState:this.audioContext.state,audioQueueLength:this.audioQueue.length,pausedAt:this.pausedAt,isIOS:/iPhone|iPad|iPod/i.test(navigator.userAgent)})}}async decodeFirstChunk(){if(this.pendingChunks.length===0)return;const e=this.pendingChunks.shift();try{const r=window.atob(e),n=new Uint8Array(r.length);for(let a=0;a<r.length;a++)n[a]=r.charCodeAt(a);const i=n.buffer;await this.addAudioChunkInternal(i),this.estimatedDuration>0&&(this.estimatedDuration=Math.max(0,this.estimatedDuration-1))}catch(r){console.error("解码首个 chunk 失败:",r)}}scheduleFromPosition(e){if(!this.audioContext)return;this.isSchedulingFromPosition=!0;let r=0;const n=this.audioContext.currentTime;let i=n,a=0;for(let o=0;o<this.audioQueue.length;o++){const s=this.audioQueue[o],u=r,l=r+s.duration;if(l>e){const c=this.audioContext.createBufferSource();c.buffer=s,c.connect(this.getAudioDestination());let f=0,h=s.duration;e>u&&(f=e-u,h=s.duration-f,i=n),c.start(i,f,h),i+=h,this.scheduledSources.push(c),a++,c.onended=()=>{const d=this.scheduledSources.indexOf(c);if(d===-1){Y("[scheduleFromPosition.onended] sourceNode 被手动停止,跳过后续逻辑");return}this.scheduledSources.splice(d,1),this.playedBufferCount++,this.cleanupOldBuffers(),this.decodeAhead(),this.scheduledSources.length===0&&this.isPlaying&&(this.scheduleNewChunks(),this.scheduledSources.length===0&&(Y("[scheduleFromPosition.onended] 调度后仍无片段",{pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,audioQueueLength:this.audioQueue.length,scheduledCount:this.scheduledCount,unscheduledBuffers:this.audioQueue.length-this.scheduledCount}),this.pendingChunks.length>0?(Y("[scheduleFromPosition.onended] 还有待解码chunk,启动 autoPlayCheck"),this.startAutoPlayCheck()):this.audioQueue.length>this.scheduledCount?(Y("[scheduleFromPosition.onended] 还有未调度的buffer,重新调度"),this.scheduleNewChunks()):this.generationComplete?(Y("[scheduleFromPosition.onended] 生成完成,结束播放"),this.handlePlaybackEnd()):(Y("[scheduleFromPosition.onended] 等待新数据,启动 autoPlayCheck"),this.startAutoPlayCheck())))}}r=l}this.scheduledCount=this.audioQueue.length,this.nextScheduleTime=i,this.isSchedulingFromPosition=!1,Y("[scheduleFromPosition] 调度完成",{startPosition:e.toFixed(2),scheduledInThisCall:a,scheduledCount:this.scheduledCount,nextScheduleTime:this.nextScheduleTime.toFixed(3),scheduledSourcesLength:this.scheduledSources.length})}pause(){if(this.playMode==="url"&&this.audioElement){this.audioElement.pause();return}if(!(!this.isPlaying||!this.audioContext)){this.pausedAt=this.audioContext.currentTime-this.startedAt;for(const e of this.scheduledSources)try{e.stop()}catch{}if(this.scheduledSources=[],this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[pause] iOS audio 元素已暂停")}catch{}this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback(),this.stopTimeUpdate(),this.stopAutoPlayCheck()}}stop(){if(this.playMode==="url"&&this.audioElement){this.audioElement.pause(),this.audioElement.currentTime=0,this.isPlaying=!1;return}this.pause(),this.pausedAt=0,this.startedAt=0,this.scheduledCount=0,this.nextScheduleTime=0,this.stopTimeUpdate(),this.stopAutoPlayCheck()}clear(){this.stop(),this.audioQueue=[],this.pendingChunks=[],this.totalDuration=0,this.estimatedDuration=0,this.scheduledCount=0,this.nextScheduleTime=0,this.processedChunkCount=0,this.generationComplete=!1,this.decodingInProgress=!1,this.isSchedulingFromPosition=!1,this.durationFromUrlSet=!1}handlePlaybackEnd(){let e=0;if(this.audioQueue.forEach(r=>{e+=r.duration}),Y("[handlePlaybackEnd] 播放结束",{totalDuration:this.totalDuration.toFixed(2),actualDecodedDuration:e.toFixed(2),audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,processedChunkCount:this.processedChunkCount,scheduledCount:this.scheduledCount,playedBufferCount:this.playedBufferCount,generationComplete:this.generationComplete,durationFromUrlSet:this.durationFromUrlSet}),this.isPlaying=!1,this.pausedAt=0,this.startedAt=0,this.stopTimeUpdate(),this.stopAutoPlayCheck(),this.iosUnlockAudio)try{this.iosUnlockAudio.pause(),Y("[handlePlaybackEnd] iOS audio 元素已暂停")}catch{}this.onEndCallback&&this.onEndCallback()}async markGenerationComplete(e){let r=0;this.audioQueue.forEach(n=>{r+=n.duration}),Y("[markGenerationComplete] 标记生成完成",{audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,scheduledSourcesLength:this.scheduledSources.length,totalDuration:this.totalDuration.toFixed(2),currentDecodedDuration:r.toFixed(2),estimatedDuration:this.estimatedDuration.toFixed(2),isPlaying:this.isPlaying,hasAudioUrl:!!e,processedChunkCount:this.processedChunkCount}),this.generationComplete=!0,e&&(this.fullAudioUrl=e),this.isPlaying&&this.pendingChunks.length>0&&(Y("[markGenerationComplete] 正在播放,触发按需解码"),this.decodeAhead()),this.autoPlayCheckInterval&&this.scheduledSources.length===0&&this.pendingChunks.length===0&&(Y("[markGenerationComplete] 正在等待且无剩余片段,立即结束"),this.handlePlaybackEnd()),e?this.getDurationFromUrl(e):this.onDurationChangeCallback&&this.onDurationChangeCallback(this.getDisplayDuration())}getDurationFromUrl(e){Y("[getDurationFromUrl] 开始从 URL 获取时长并预加载",{audioUrl:e}),this.preloadedAudioElement=new Audio,this.preloadedAudioElement.preload="auto";const r=this.preloadedAudioElement;let n=!1;const i=()=>{if(n)return;n=!0;const s=r.duration;Y("[getDurationFromUrl] 获取时长成功",{duration:s.toFixed(2)}),this.totalDuration=s,this.estimatedDuration=0,this.durationFromUrlSet=!0,this.onDurationChangeCallback&&this.onDurationChangeCallback(Math.floor(s))},a=()=>{Y("[getDurationFromUrl] URL 预加载完成,可以 seek"),this.urlReady=!0,this.onUrlReadyCallback&&this.onUrlReadyCallback()},o=s=>{Y("[getDurationFromUrl] 获取时长/预加载失败",s),this.urlReady=!0,this.preloadedAudioElement=null,this.onDurationChangeCallback&&!n&&this.onDurationChangeCallback(this.getDisplayDuration()),this.onUrlReadyCallback&&this.onUrlReadyCallback()};r.addEventListener("loadedmetadata",i),r.addEventListener("canplay",a),r.addEventListener("canplaythrough",a),r.addEventListener("error",o),r.src=e,r.load()}async decodeAllPendingChunks(){for(Y("[decodeAllPendingChunks] 开始解码所有待解码 chunk",{pendingChunks:this.pendingChunks.length});this.pendingChunks.length>0;){const e=this.pendingChunks.shift(),r=this.processedChunkCount+1;try{const n=(e.length*.75/1024).toFixed(2);Y(`[decodeAllPendingChunks] 解码第 ${r} 个chunk`,{size:`${n} KB`});const i=window.atob(e),a=new Uint8Array(i.length);for(let s=0;s<i.length;s++)a[s]=i.charCodeAt(s);const o=a.buffer;await this.addAudioChunkInternal(o),this.processedChunkCount++,Y(`[decodeAllPendingChunks] 第 ${r} 个chunk 解码完成`,{totalDuration:this.totalDuration.toFixed(2)})}catch(n){console.error(`[decodeAllPendingChunks] 解码第 ${r} 个chunk 失败:`,n)}}Y("[decodeAllPendingChunks] 所有 chunk 解码完成",{audioQueueLength:this.audioQueue.length,totalDuration:this.totalDuration.toFixed(2)})}cleanupOldBuffers(){const e=this.audioQueue.length;if(Y("[cleanupOldBuffers] 检查",{currentQueueLength:e,maxDecodedBuffers:this.maxDecodedBuffers,playedBufferCount:this.playedBufferCount,scheduledCount:this.scheduledCount,pendingChunks:this.pendingChunks.length,totalDuration:this.totalDuration.toFixed(2)}),e>this.maxDecodedBuffers&&this.playedBufferCount>0){const r=Math.min(e-this.maxDecodedBuffers,this.playedBufferCount);if(r>0){let n=0;for(let o=0;o<r;o++)n+=this.audioQueue[o].duration;const i=this.audioQueue.splice(0,r);this.scheduledCount=Math.max(0,this.scheduledCount-r),this.playedBufferCount=Math.max(0,this.playedBufferCount-r);let a=0;i.forEach(o=>{a+=o.length*o.numberOfChannels*4/1024}),Y("[cleanupOldBuffers] 内存回收",{cleanedCount:r,cleanedDuration:n.toFixed(2),freedMemoryKB:a.toFixed(2),remainingQueueLength:this.audioQueue.length,newScheduledCount:this.scheduledCount,newPlayedBufferCount:this.playedBufferCount,isMobile:this.isMobileDevice()})}}}startAutoPlayCheck(){if(this.autoPlayCheckInterval){Y("[startAutoPlayCheck] 已有检查定时器,跳过");return}Y("[startAutoPlayCheck] 启动等待新数据检查"),this.autoPlayCheckWaitTime=0;const e=180*1e3;this.autoPlayCheckInterval=window.setInterval(()=>{this.autoPlayCheckWaitTime+=200,Y("[autoPlayCheck] 检查",{waitTime:this.autoPlayCheckWaitTime,scheduledCount:this.scheduledCount,audioQueueLength:this.audioQueue.length,pendingChunks:this.pendingChunks.length,generationComplete:this.generationComplete,scheduledSourcesLength:this.scheduledSources.length}),this.scheduledCount<this.audioQueue.length?(Y("[autoPlayCheck] 发现新片段,调度"),this.scheduleNewChunks(),this.scheduledSources.length>0&&(Y("[autoPlayCheck] 调度成功,停止检查"),this.stopAutoPlayCheck())):this.scheduledSources.length>0?(Y("[autoPlayCheck] 还有片段在播放中,停止检查"),this.stopAutoPlayCheck()):this.pendingChunks.length>0?(Y("[autoPlayCheck] 还有待解码chunk,触发解码"),this.decodeAhead()):this.generationComplete?(Y("[autoPlayCheck] 生成完成且无播放片段和待解码chunk,结束播放"),this.handlePlaybackEnd()):this.autoPlayCheckWaitTime>=e&&(Y("[autoPlayCheck] 等待超时,结束播放"),this.handlePlaybackEnd())},200)}stopAutoPlayCheck(){this.autoPlayCheckInterval&&(clearInterval(this.autoPlayCheckInterval),this.autoPlayCheckInterval=null)}startTimeUpdate(){this.timeUpdateInterval||(this.timeUpdateInterval=window.setInterval(()=>{if(this.isPlaying&&this.audioContext){const e=this.audioContext.currentTime-this.startedAt;this.onTimeUpdateCallback&&this.onTimeUpdateCallback(e,this.totalDuration)}},100))}stopTimeUpdate(){this.timeUpdateInterval&&(clearInterval(this.timeUpdateInterval),this.timeUpdateInterval=null)}seek(e){if(Y("[seek] 开始",{time:e,playMode:this.playMode,generationComplete:this.generationComplete,urlReady:this.urlReady,hasPreloadedAudio:!!this.preloadedAudioElement,isPlaying:this.isPlaying}),this.playMode==="url"&&this.audioElement){this.audioElement.currentTime=Math.max(0,Math.min(e,this.audioElement.duration||0));return}if(this.playMode==="stream"){if(this.generationComplete&&this.urlReady&&this.preloadedAudioElement){Y("[seek] 切换到 URL 模式(使用预加载的 audio 元素)");const n=this.isPlaying;this.stopTimeUpdate();for(const i of this.scheduledSources)try{i.stop()}catch{}this.scheduledSources=[],this.isPlaying=!1,this.audioElement=this.preloadedAudioElement,this.preloadedAudioElement=null,this.playMode="url",this.bindAudioElementEvents(),this.audioElement.currentTime=Math.max(0,Math.min(e,this.audioElement.duration||0)),n&&this.audioElement.play().catch(i=>{Y("[seek] 播放失败:",i)});return}const r=this.isPlaying;r&&this.pause(),this.pausedAt=Math.max(0,Math.min(e,this.totalDuration)),r&&this.play()}}bindAudioElementEvents(){this.audioElement&&(this.audioElement.addEventListener("play",()=>{this.isPlaying=!0,this.onPlayCallback&&this.onPlayCallback()}),this.audioElement.addEventListener("pause",()=>{this.isPlaying=!1,this.onPauseCallback&&this.onPauseCallback()}),this.audioElement.addEventListener("ended",()=>{this.isPlaying=!1,this.onEndCallback&&this.onEndCallback()}),this.audioElement.addEventListener("timeupdate",()=>{this.onTimeUpdateCallback&&this.onTimeUpdateCallback(this.audioElement.currentTime,this.audioElement.duration||0)}),this.audioElement.addEventListener("error",e=>{this.onErrorCallback&&this.onErrorCallback(new Error("音频加载失败: "+(e.message||"未知错误")))}))}getPlayState(){return this.isPlaying}getDuration(){return this.playMode==="url"&&this.audioElement?this.audioElement.duration||0:this.getDisplayDuration()}getCurrentTime(){return this.playMode==="url"&&this.audioElement?this.audioElement.currentTime||0:this.isPlaying&&this.audioContext?this.audioContext.currentTime-this.startedAt:this.pausedAt}getAudioQueue(){return[...this.audioQueue]}async getAudioData(){const e=[];for(const r of this.audioQueue){const n=r.numberOfChannels,i=r.length,a=new ArrayBuffer(i*n*2),o=new DataView(a);for(let s=0;s<n;s++){const u=r.getChannelData(s);for(let l=0;l<i;l++){const c=Math.max(-1,Math.min(1,u[l])),f=c<0?c*32768:c*32767;o.setInt16((l*n+s)*2,f,!0)}}e.push(a)}return e}onPlay(e){this.onPlayCallback=e}onPause(e){this.onPauseCallback=e}onEnd(e){this.onEndCallback=e}onError(e){this.onErrorCallback=e}onTimeUpdate(e){this.onTimeUpdateCallback=e}onDurationChange(e){this.onDurationChangeCallback=e}onUrlReady(e){this.onUrlReadyCallback=e}isUrlReady(){return this.urlReady}destroy(){this.stop(),this.stopTimeUpdate(),this.stopAutoPlayCheck(),this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),this.handleVisibilityChange=null),this.audioContext&&(this.audioContext.onstatechange=null,this.audioContext.close(),this.audioContext=null),this.audioQueue=[],this.iosUnlockAudio&&(this.iosUnlockAudio.pause(),this.iosUnlockAudio.srcObject=null,this.iosUnlockAudio=null),this.mediaStreamDestination=null,this.audioElement&&(this.audioElement.pause(),this.audioElement.src="",this.audioElement=null),this.playMode=null}},of="https://cdn.xiaowei.qq.com/adp/assets/static/iconfont-XzKaDZdEa7j2GPL-1201.js",zu={};function uO(t){const e={};return t.props.size&&(e.width=`${t.props.size}px`,e.height=`${t.props.size}px`),t.props.valign&&(e.verticalAlign=`${t.props.valign}px`),t.props.rotate&&(e.transform=`rotate(${t.props.rotate}deg)`),e}function lO(t){const e=t.props;return{"v-icon":!0,"is-horizontal":e.flip==="horizontal","is-vertical":e.flip==="vertical","v-icon--stroke":e.useStroke,"v-icon--fill":!e.useStroke}}function Wb(t){let e=document.createElement("script");e.type="text/javascript",e.src=t,document.getElementsByTagName("head")[0].appendChild(e)}const cO=t=>{let e=!1,r=Object.keys(zu);r.forEach(n=>{zu[n]===t&&(e=!0)}),e||(zu[r.length]=t,Wb(t))},fO={name:"VIcon",functional:!0,props:{name:{type:String,required:!0},remote:{type:Boolean,default:!1},remoteSrc:{type:String,default:""},remotePrefix:{type:String,default:"v-"},loadDefaultRemoteIcons:{type:Boolean,default:!0},label:String,rotate:[Number,String],size:[Number,String],valign:[Number,String],flip:String,useStroke:Boolean,clazz:String,scoped:String},render(t,e){const r=uO(e);if(e.data.style)for(let n in e.data.style)r[n]=e.data.style[n];return!zu.defaultRemoteSrc&&of&&e.props.loadDefaultRemoteIcons&&(zu.defaultRemoteSrc=of,Wb(of)),e.props.remoteSrc&&cO(e.props.remoteSrc),t("svg",{class:lO(e),style:r,attrs:{role:e.props.label?"img":"presentation","aria-label":e.props.label},on:e.data.nativeOn},[t("use",{attrs:{"xlink:href":"#"+e.props.remotePrefix+e.props.name,class:e.props.clazz},style:{pointerEvents:"none"}})])}},hO=fO,dO=null,pO=null;var vO=pr(hO,dO,pO,!1,null,null,null,null);const t2=vO.exports;const gO={name:"StreamAudioPlayer",components:{VIcon:t2},props:{audioData:{type:Object,required:!0}},data(){return{player:null,internalStatus:"pending",currentTime:0,duration:0,isDragging:!1,isHoveringProgress:!1,lastProcessedChunkCount:0,playModeDecided:!1,lastKnownIsComplete:!1,urlReady:!1,dragCleanup:null}},computed:{isGenerating(){return!this.audioData.isComplete},hasPlayableContent(){const t=!!this.audioData.audio_url,e=this.audioData.audio_data&&this.audioData.audio_data.length>0;return t||e},isDisabled(){return!this.hasPlayableContent},canSeek(){return!this.isGenerating&&this.urlReady},displayFileName(){return this.audioData.title?this.audioData.title:this.isGenerating?"音频生成中...":"音频文件"},statusText(){if(this.isDisabled)return"暂无音频";if(this.isGenerating&&this.duration===0)return"生成中...";const t=this.formatTime(this.currentTime),e=this.isGenerating?"生成中":this.formatTime(this.duration);return`${t} / ${e}`},statusClass(){return{generating:this.isGenerating,completed:this.internalStatus==="completed",playing:this.internalStatus==="playing",paused:this.internalStatus==="paused",disabled:this.isDisabled}},cardClass(){return{generating:this.isGenerating,completed:this.internalStatus==="completed",playing:this.internalStatus==="playing",paused:this.internalStatus==="paused",disabled:this.isDisabled,hoverable:!this.isDisabled&&!this.isGenerating}},progressPercentage(){return this.duration===0?0:this.currentTime/this.duration*100},showHandle(){return(this.isHoveringProgress||this.isDragging)&&!this.isDisabled&&!this.isGenerating},canPlay(){return!(this.isDisabled||this.isGenerating&&this.duration===0)},canDownload(){return!!this.audioData.audio_url},playButtonTitle(){return this.isDisabled?"暂无音频":this.isGenerating&&this.duration===0?"等待音频生成":this.internalStatus==="playing"?"暂停":"播放"},downloadButtonTitle(){return this.canDownload?"下载":this.isGenerating?"生成中,暂不可下载":"暂无可下载的音频"}},watch:{audioData:{handler(t){var r;if(!t||!this.player)return;console.log("[StreamAudioPlayer] audioData watch 触发:",{hasAudioUrl:!!t.audio_url,audioDataLength:(r=t.audio_data)==null?void 0:r.length,isComplete:t.isComplete,playModeDecided:this.playModeDecided,lastProcessedChunkCount:this.lastProcessedChunkCount,lastKnownIsComplete:this.lastKnownIsComplete,internalStatus:this.internalStatus}),!this.playModeDecided&&t.audio_url&&(console.log("[StreamAudioPlayer] 切换到 URL 模式"),this.handleAudioUrlChange(t.audio_url)),t.audio_data&&Array.isArray(t.audio_data)&&t.audio_data.length>this.lastProcessedChunkCount&&(!this.playModeDecided||this.player.playMode==="stream")&&(console.log("[StreamAudioPlayer] 处理新的音频片段"),this.handleAudioDataChange(t.audio_data)),!!t.isComplete&&!this.lastKnownIsComplete&&(this.lastKnownIsComplete=!0,this.handleGenerationComplete())},deep:!0,immediate:!1}},mounted(){this.initPlayer(),this.audioData&&(this.audioData.audio_data&&this.audioData.audio_data.length>0?this.handleAudioDataChange(this.audioData.audio_data):this.audioData.audio_url&&this.handleAudioUrlChange(this.audioData.audio_url),this.audioData.isComplete&&(this.lastKnownIsComplete=!0,this.handleGenerationComplete()))},beforeDestroy(){this.destroyPlayer()},beforeUnmount(){this.destroyPlayer()},methods:{initPlayer(){this.player=new Ub,this.player.onPlay(()=>{this.internalStatus="playing",this.$emit("play",this.audioData)}),this.player.onPause(()=>{this.internalStatus="paused",this.$emit("pause",this.audioData)}),this.player.onEnd(()=>{this.player.playMode==="url"?this.internalStatus="completed":this.isGenerating?this.internalStatus="paused":this.internalStatus="completed",this.currentTime=0,this.$emit("end",this.audioData)}),this.player.onTimeUpdate((t,e)=>{this.isDragging||(this.currentTime=t),this.duration=e,t>=e&&e>0&&!this.isGenerating&&(this.player.pause(),this.internalStatus="completed",this.currentTime=e)}),this.player.onDurationChange(t=>{this.duration=t}),this.player.onError(t=>{console.error("音频播放错误:",t),this.$emit("error",t)}),this.player.onUrlReady(()=>{console.log("[StreamAudioPlayer.vue] URL 预加载完成回调"),this.urlReady=!0}),this.checkInitialState()},checkInitialState(){this.isDisabled?this.internalStatus="disabled":this.isGenerating?this.internalStatus="generating":this.internalStatus="completed"},handleAudioUrlChange(t){!this.player||!t||this.playModeDecided&&this.player.playMode!=="url"||(this.player.setAudioUrl(t),this.playModeDecided=!0,this.internalStatus="completed")},handleAudioDataChange(t){var r,n,i,a,o;if(!this.player||!t)return;this.playModeDecided=!0;const e=t.length-this.lastProcessedChunkCount;if(console.log("[StreamAudioPlayer.vue] handleAudioDataChange",{totalChunks:t.length,lastProcessedChunkCount:this.lastProcessedChunkCount,newChunksCount:e,playerPendingChunks:(r=this.player.pendingChunks)==null?void 0:r.length,playerAudioQueueLength:(n=this.player.audioQueue)==null?void 0:n.length,playerScheduledCount:this.player.scheduledCount,playerIsPlaying:this.player.isPlaying,internalStatus:this.internalStatus}),e<=0){console.log("[StreamAudioPlayer.vue] 没有新片段,跳过");return}(this.internalStatus==="disabled"||this.internalStatus==="pending")&&(this.internalStatus="generating");for(let s=this.lastProcessedChunkCount;s<t.length;s++){const u=t[s];console.log(`[StreamAudioPlayer.vue] 添加第 ${s+1} 个chunk,大小: ${(u.length*.75/1024).toFixed(2)} KB`),this.player.addBase64Chunk(u),this.lastProcessedChunkCount++,this.$emit("chunk-added",{duration:this.duration,queueLength:((i=this.player.pendingChunks)==null?void 0:i.length)||0})}console.log("[StreamAudioPlayer.vue] handleAudioDataChange 完成",{lastProcessedChunkCount:this.lastProcessedChunkCount,playerPendingChunks:(a=this.player.pendingChunks)==null?void 0:a.length,playerAudioQueueLength:(o=this.player.audioQueue)==null?void 0:o.length})},handleGenerationComplete(){var t,e,r,n,i,a,o;console.log("[StreamAudioPlayer.vue] handleGenerationComplete",{playerAudioQueueLength:(e=(t=this.player)==null?void 0:t.audioQueue)==null?void 0:e.length,playerPendingChunks:(n=(r=this.player)==null?void 0:r.pendingChunks)==null?void 0:n.length,playerTotalDuration:(a=(i=this.player)==null?void 0:i.totalDuration)==null?void 0:a.toFixed(2),playerScheduledCount:(o=this.player)==null?void 0:o.scheduledCount,internalStatus:this.internalStatus,hasAudioUrl:!!this.audioData.audio_url}),this.player&&this.player.markGenerationComplete(this.audioData.audio_url),this.player&&(this.duration=this.player.getDuration(),console.log("[StreamAudioPlayer.vue] 最终时长:",this.duration.toFixed(2))),this.internalStatus!=="playing"&&(this.internalStatus="completed"),this.audioData.audio_url||(this.urlReady=!0)},async addAudioChunk(t){var e;if(!this.player){console.warn("播放器未初始化");return}try{typeof t=="string"?await this.player.addBase64Chunk(t):await this.player.addAudioChunk(t),this.$emit("chunk-added",{duration:this.duration,queueLength:((e=this.player.audioQueue)==null?void 0:e.length)||0})}catch(r){console.error("添加音频片段失败:",r),this.$emit("error",r)}},markGenerationComplete(){this.handleGenerationComplete()},async handlePlayPause(){if(!(!this.player||!this.canPlay))try{this.internalStatus==="playing"?this.player.pause():(this.currentTime>=this.duration&&this.duration>0&&(this.currentTime=0,this.player.pausedAt=0),await this.player.play())}catch(t){console.error("播放控制错误:",t)}},handleDownload(){if(!this.canDownload)return;const t=this.audioData.audio_url,e=this.audioData.title||"音频文件",r=document.createElement("a");r.href=t,r.download=e,r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r),this.$emit("audio-download",{url:t,fileName:e})},formatTime(t){if(!t||isNaN(t))return"00:00";const e=Math.floor(t/60),r=Math.floor(t%60);return`${e.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`},handleMouseEnter(){},handleMouseLeave(){},handleProgressMouseEnter(){!this.isDisabled&&!this.isGenerating&&(this.isHoveringProgress=!0)},handleProgressMouseLeave(){this.isDragging||(this.isHoveringProgress=!1)},handleProgressMouseDown(t){this.isDisabled||!this.canSeek||this.seekToPosition(t)},handleDragStart(t){if(this.isDisabled||!this.canSeek)return;this.isDragging=!0,t.preventDefault();const e=n=>{this.seekToPosition(n)},r=()=>{this.isDragging=!1,this.isHoveringProgress||(this.isHoveringProgress=!1),document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r),this.dragCleanup=null};this.dragCleanup=()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r)},document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)},seekToPosition(t){if(!this.player||!this.$refs.progressTrack)return;const r=this.$refs.progressTrack.getBoundingClientRect(),n=t.clientX-r.left,a=Math.max(0,Math.min(1,n/r.width))*this.duration;this.currentTime=a,this.player.seek(a)},destroyPlayer(){this.dragCleanup&&(this.dragCleanup(),this.dragCleanup=null),this.player&&(this.player.destroy(),this.player=null),this.internalStatus="pending",this.currentTime=0,this.duration=0,this.lastProcessedChunkCount=0,this.playModeDecided=!1,this.urlReady=!1,this.lastKnownIsComplete=!1}}};var mO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"stream-audio-player-card",class:e.cardClass,on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave}},[r("div",{staticClass:"audio-content"},[r("div",{staticClass:"audio-icon"},[r("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"30",height:"34",viewBox:"0 0 30 34",fill:"none"}},[r("path",{staticStyle:{fill:"color(display-p3 0.9569 0.9333 0.9882)","fill-opacity":"1"},attrs:{d:"M1.55782e-06 5.33333C1.66168e-06 3.46649 1.71361e-06 2.53307 0.363313 1.82003C0.682891 1.19282 1.19283 0.682889 1.82003 0.363312C2.53307 1.40931e-07 3.46649 1.92863e-07 5.33334 2.96727e-07L21.1242 1.17527e-06C21.9395 1.22063e-06 22.3472 1.24331e-06 22.7308 0.0921015C23.0709 0.173757 23.396 0.308438 23.6943 0.491201C24.0307 0.69734 24.3189 0.985593 24.8954 1.5621L28.4379 5.10457C29.0144 5.68108 29.3027 5.96933 29.5088 6.30572C29.6916 6.60396 29.8262 6.92911 29.9079 7.26923C30 7.65285 30 8.0605 30 8.87581L30 28C30 29.8668 30 30.8003 29.6367 31.5133C29.3171 32.1405 28.8072 32.6504 28.18 32.97C27.4669 33.3333 26.5335 33.3333 24.6667 33.3333L5.33333 33.3333C3.46649 33.3333 2.53307 33.3333 1.82003 32.97C1.19282 32.6504 0.68289 32.1405 0.363312 31.5133C1.40931e-07 30.8003 1.92863e-07 29.8668 2.96727e-07 28L1.55782e-06 5.33333Z",fill:"#F4EEFC"}}),r("path",{staticStyle:{fill:"color(display-p3 0.8863 0.8353 0.9725)","fill-opacity":"1"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M29.1667 28L29.1667 8.87581C29.1667 8.02084 29.1613 7.72918 29.0976 7.46377C29.0364 7.20868 28.9353 6.96481 28.7983 6.74113C28.6557 6.5084 28.4532 6.29838 27.8487 5.69383L24.3062 2.15135C23.7016 1.5468 23.4916 1.34435 23.2589 1.20173C23.0352 1.06466 22.7913 0.963651 22.5362 0.90241C22.2708 0.83869 21.9792 0.833334 21.1242 0.833334L5.33334 0.833333C4.38616 0.833333 3.7259 0.833981 3.21187 0.87598C2.70756 0.917183 2.41782 0.993995 2.19836 1.10582C1.72795 1.3455 1.3455 1.72795 1.10582 2.19836C0.993997 2.41782 0.917185 2.70756 0.875981 3.21187C0.833983 3.7259 0.833335 4.38616 0.833335 5.33333L0.833334 28C0.833334 28.9472 0.833982 29.6074 0.87598 30.1215C0.917183 30.6258 0.993995 30.9155 1.10582 31.135C1.3455 31.6054 1.72795 31.9878 2.19836 32.2275C2.41782 32.3393 2.70756 32.4161 3.21187 32.4573C3.7259 32.4993 4.38616 32.5 5.33333 32.5L24.6667 32.5C25.6138 32.5 26.2741 32.4993 26.7881 32.4573C27.2924 32.4161 27.5822 32.3393 27.8016 32.2275C28.2721 31.9878 28.6545 31.6054 28.8942 31.135C29.006 30.9155 29.0828 30.6258 29.124 30.1215C29.166 29.6074 29.1667 28.9472 29.1667 28ZM0.363313 1.82003C1.71361e-06 2.53307 1.66168e-06 3.46649 1.55782e-06 5.33333L2.96727e-07 28C1.92863e-07 29.8668 1.40931e-07 30.8003 0.363312 31.5133C0.68289 32.1405 1.19282 32.6504 1.82003 32.97C2.53307 33.3333 3.46649 33.3333 5.33333 33.3333L24.6667 33.3333C26.5335 33.3333 27.4669 33.3333 28.18 32.97C28.8072 32.6504 29.3171 32.1405 29.6367 31.5133C30 30.8003 30 29.8668 30 28L30 8.87581C30 8.0605 30 7.65285 29.9079 7.26923C29.8262 6.92911 29.6916 6.60396 29.5088 6.30572C29.3027 5.96933 29.0144 5.68108 28.4379 5.10457L24.8954 1.5621C24.3189 0.985593 24.0307 0.69734 23.6943 0.491201C23.396 0.308438 23.0709 0.173757 22.7308 0.0921015C22.3472 1.24331e-06 21.9395 1.22063e-06 21.1242 1.17527e-06L5.33334 2.96727e-07C3.46649 1.92863e-07 2.53307 1.40931e-07 1.82003 0.363312C1.19283 0.682889 0.682891 1.19282 0.363313 1.82003Z",fill:"#E2D5F8"}}),r("path",{staticStyle:{fill:"color(display-p3 0.4157 0.2706 0.8980)","fill-opacity":"1"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M22.1277 22.689L22.129 8.92249L10.0345 10.5529L10.0335 22.0895C9.69971 21.9846 9.34054 21.9276 8.96638 21.9276C7.19825 21.9276 5.76489 23.2017 5.76489 24.7734C5.76489 26.345 7.19825 27.6191 8.96638 27.6191C10.7157 27.6191 12.1374 26.3719 12.1674 24.8233L12.1676 24.8233L12.1676 24.8123L12.1679 24.7734L12.1676 24.7347L12.168 13.7622L19.9939 12.5435L19.9935 19.9543C19.6596 19.8493 19.3001 19.7922 18.9257 19.7922C17.1576 19.7922 15.7242 21.0663 15.7242 22.6379C15.7242 24.2096 17.1576 25.4837 18.9257 25.4837C20.6746 25.4837 22.096 24.2371 22.1267 22.689L22.1277 22.689Z",fill:"#6A45E5"}})])]),r("div",{staticClass:"file-info"},[r("div",{staticClass:"file-name",attrs:{title:e.displayFileName}},[e._v(e._s(e.displayFileName))]),r("div",{staticClass:"file-status"},[r("span",{staticClass:"status-text",class:e.statusClass},[e._v(" "+e._s(e.statusText)+" ")])])]),r("div",{staticClass:"audio-controls"},[r("button",{staticClass:"control-btn download-btn",attrs:{disabled:!e.canDownload,title:e.downloadButtonTitle},on:{click:e.handleDownload}},[r("v-icon",{attrs:{name:"basic_download2_line",size:18}})],1),r("button",{staticClass:"control-btn play-btn",attrs:{disabled:!e.canPlay,title:e.playButtonTitle},on:{click:e.handlePlayPause}},[e.internalStatus==="playing"?r("v-icon",{attrs:{name:"basic_pause_line",size:18}}):r("v-icon",{attrs:{name:"basic_play_line",size:18}})],1)])]),r("div",{staticClass:"progress-container"},[r("div",{ref:"progressTrack",staticClass:"progress-track",on:{mousedown:e.handleProgressMouseDown,mouseenter:e.handleProgressMouseEnter,mouseleave:e.handleProgressMouseLeave}},[e.isGenerating?e._e():r("div",{staticClass:"progress-played",class:{"no-transition":e.isDragging},style:{width:e.progressPercentage+"%"}}),e.showHandle?r("div",{staticClass:"progress-handle",class:{"no-transition":e.isDragging},style:{left:e.progressPercentage+"%"},on:{mousedown:function(n){return n.stopPropagation(),e.handleDragStart.apply(null,arguments)}}}):e._e()])])])},yO=[],_O=pr(gO,mO,yO,!1,null,"c74077bd",null,null);const qb=_O.exports;const bO={name:"ClassifyTag",props:{title:{type:String,default:"问题澄清"},questions:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},defaultAnswers:{type:Array,default:()=>[]}},data(){return{collapsed:!1,selectedAnswers:{},submitted:!1}},watch:{defaultAnswers:{handler(t){t&&t.length>0&&this._applyDefaultAnswers(t)},immediate:!0}},computed:{normalizedQuestions(){return!this.questions||!this.questions.length?[]:this.questions.map((t,e)=>({id:t.id!==void 0?t.id:e,text:t.text||t.question||"",isMulti:t.type===2,options:(t.options||[]).map(r=>typeof r=="string"?{label:r,description:""}:{label:r.label||r.Label||"",description:r.description||r.Description||""})}))},allAnswered(){return!this.normalizedQuestions||this.normalizedQuestions.length===0?!1:this.normalizedQuestions.every(t=>{const e=this.selectedAnswers[t.id];return t.isMulti?Array.isArray(e)&&e.length>0:e!==void 0})}},methods:{_applyDefaultAnswers(t){t.forEach(e=>{if(e.questionId!==void 0){if(e.selectedIndices&&Array.isArray(e.selectedIndices))this.$set(this.selectedAnswers,e.questionId,[...e.selectedIndices]);else if(e.selectedIndex!==void 0){const r=this.normalizedQuestions.find(n=>n.id===e.questionId);r&&r.isMulti?this.$set(this.selectedAnswers,e.questionId,[e.selectedIndex]):this.$set(this.selectedAnswers,e.questionId,e.selectedIndex)}}}),this.submitted=!0},toggleCollapse(){this.collapsed=!this.collapsed},selectOption(t,e){this.submitted||this.disabled||this.$set(this.selectedAnswers,t,e)},isChecked(t,e){const r=this.selectedAnswers[t];return Array.isArray(r)&&r.includes(e)},toggleCheckbox(t,e){if(this.submitted||this.disabled)return;let r=this.selectedAnswers[t];Array.isArray(r)?r=[...r]:r=[];const n=r.indexOf(e);n!==-1?r.splice(n,1):r.push(e),this.$set(this.selectedAnswers,t,r)},handleSubmit(){if(!this.allAnswered||this.submitted)return;this.submitted=!0;const t=this.normalizedQuestions.map(e=>{const r=this.selectedAnswers[e.id];if(e.isMulti){const i=Array.isArray(r)?r:[],a=i.map(o=>e.options[o]?e.options[o].label:"");return{questionId:String(e.id),questionText:e.text,isMulti:!0,selectedOptions:a,selectedOption:a[0]||"",selectedIndices:i,selectedIndex:i[0]!==void 0?i[0]:-1}}const n=e.options[r];return{questionId:String(e.id),questionText:e.text,isMulti:!1,selectedOption:n?n.label:"",selectedOptions:[n?n.label:""],selectedIndex:r,selectedIndices:[r]}});this.$emit("submit",t)},handleSkip(){this.submitted||this.disabled||this.$emit("skip")}}};var xO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"classify-tag",class:{"classify-tag--collapsed":e.collapsed}},[r("div",{staticClass:"classify-tag__header",on:{click:e.toggleCollapse}},[r("svg",{staticClass:"classify-tag__icon",attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15C11.866 15 8 15 8 15",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round",fill:"none"}}),r("path",{attrs:{d:"M8 5V8.5",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round"}}),r("circle",{attrs:{cx:"8",cy:"11",r:"0.75",fill:"#4A70FF"}}),r("path",{attrs:{d:"M8 1C11.866 1 15 4.13401 15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1Z",stroke:"#4A70FF","stroke-width":"1.5",fill:"none"}})]),r("span",{staticClass:"classify-tag__title"},[e._v(e._s(e.title))]),r("svg",{staticClass:"classify-tag__arrow",class:{"classify-tag__arrow--up":!e.collapsed},attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M4 6L8 10L12 6",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"classify-tag__content"},e._l(e.normalizedQuestions,function(n,i){return r("div",{key:n.id||i,staticClass:"classify-tag__question-group"},[r("div",{staticClass:"classify-tag__question-text"},[e._v(" "+e._s(i+1)+"、"+e._s(n.text)+" "),n.isMulti?r("span",{staticClass:"classify-tag__multi-hint"},[e._v("(支持多选)")]):e._e()]),r("div",{staticClass:"classify-tag__options"},[n.isMulti?e._l(n.options,function(a,o){return r("label",{key:o,staticClass:"classify-tag__checkbox",class:{"classify-tag__checkbox--checked":e.isChecked(n.id||i,o),"classify-tag__checkbox--rich":a.description},on:{click:function(s){return e.toggleCheckbox(n.id||i,o)}}},[r("span",{staticClass:"classify-tag__checkbox-box"},[e.isChecked(n.id||i,o)?r("svg",{staticClass:"classify-tag__checkbox-tick",attrs:{width:"10",height:"8",viewBox:"0 0 10 8",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M1 4L3.5 6.5L9 1",stroke:"#fff","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}})]):e._e()]),r("span",{staticClass:"classify-tag__radio-content"},[r("span",{staticClass:"classify-tag__radio-label"},[e._v(e._s(a.label))]),a.description?r("span",{staticClass:"classify-tag__radio-desc"},[e._v(e._s(a.description))]):e._e()])])}):e._l(n.options,function(a,o){return r("label",{key:o,staticClass:"classify-tag__radio",class:{"classify-tag__radio--checked":e.selectedAnswers[n.id||i]===o,"classify-tag__radio--rich":a.description},on:{click:function(s){return e.selectOption(n.id||i,o)}}},[r("span",{staticClass:"classify-tag__radio-circle"},[e.selectedAnswers[n.id||i]===o?r("span",{staticClass:"classify-tag__radio-dot"}):e._e()]),r("span",{staticClass:"classify-tag__radio-content"},[r("span",{staticClass:"classify-tag__radio-label"},[e._v(e._s(a.label))]),a.description?r("span",{staticClass:"classify-tag__radio-desc"},[e._v(e._s(a.description))]):e._e()])])})],2)])}),0),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"classify-tag__footer"},[r("div",{staticClass:"classify-tag__footer-divider"}),r("div",{staticClass:"classify-tag__footer-actions"},[r("button",{staticClass:"classify-tag__btn classify-tag__btn--primary",attrs:{disabled:!e.allAnswered||e.submitted},on:{click:e.handleSubmit}},[e._v(" "+e._s(e.submitted?"已提交":"提交")+" ")]),e.submitted?e._e():r("button",{staticClass:"classify-tag__btn classify-tag__btn--secondary",on:{click:e.handleSkip}},[e._v(" 跳过 ")])])])])},wO=[],SO=pr(bO,xO,wO,!1,null,"f8313f19",null,null);const r2=SO.exports;const CO={name:"PlanConfirm",props:{title:{type:String,default:"计划确认"},planText:{type:String,default:""},disabled:{type:Boolean,default:!1}},data(){return{collapsed:!1,confirmed:!1,skipped:!1}},methods:{toggleCollapse(){this.collapsed=!this.collapsed},handleConfirm(){this.confirmed||this.skipped||this.disabled||(this.confirmed=!0,this.$emit("confirm",this.planText))},handleSkip(){this.confirmed||this.skipped||this.disabled||(this.skipped=!0,this.$emit("skip",this.planText))}}};var AO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"plan-confirm",class:{"plan-confirm--collapsed":e.collapsed}},[r("div",{staticClass:"plan-confirm__header",on:{click:e.toggleCollapse}},[r("svg",{staticClass:"plan-confirm__icon",attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M13.5 5.5L6.5 12.5L2.5 8.5",stroke:"#4A70FF","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}}),r("rect",{attrs:{x:"1",y:"1",width:"14",height:"14",rx:"2",stroke:"#4A70FF","stroke-width":"1.5",fill:"none"}})]),r("span",{staticClass:"plan-confirm__title"},[e._v(e._s(e.title))]),r("svg",{staticClass:"plan-confirm__arrow",class:{"plan-confirm__arrow--up":!e.collapsed},attrs:{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M4 6L8 10L12 6",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"plan-confirm__content"},[r("div",{staticClass:"plan-confirm__text"},[e._v(e._s(e.planText))])]),r("div",{directives:[{name:"show",rawName:"v-show",value:!e.collapsed,expression:"!collapsed"}],staticClass:"plan-confirm__footer"},[r("div",{staticClass:"plan-confirm__footer-divider"}),r("div",{staticClass:"plan-confirm__footer-actions"},[!e.confirmed&&!e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--primary",on:{click:e.handleConfirm}},[e._v(" 确定 ")]):e._e(),e.confirmed?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--primary",attrs:{disabled:""}},[e._v(" 已确定 ")]):e._e(),!e.confirmed&&!e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--secondary",on:{click:e.handleSkip}},[e._v(" 跳过 ")]):e._e(),e.skipped?r("button",{staticClass:"plan-confirm__btn plan-confirm__btn--secondary",attrs:{disabled:""}},[e._v(" 已跳过 ")]):e._e()])])])},TO=[],DO=pr(CO,AO,TO,!1,null,"99c3033c",null,null);const EO=DO.exports;let v1;const kO=new Uint8Array(16);function MO(){if(!v1&&(v1=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!v1))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return v1(kO)}const St=[];for(let t=0;t<256;++t)St.push((t+256).toString(16).slice(1));function LO(t,e=0){return St[t[e+0]]+St[t[e+1]]+St[t[e+2]]+St[t[e+3]]+"-"+St[t[e+4]]+St[t[e+5]]+"-"+St[t[e+6]]+St[t[e+7]]+"-"+St[t[e+8]]+St[t[e+9]]+"-"+St[t[e+10]]+St[t[e+11]]+St[t[e+12]]+St[t[e+13]]+St[t[e+14]]+St[t[e+15]]}const IO=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),iv={randomUUID:IO};function Zb(t,e,r){if(iv.randomUUID&&!e&&!t)return iv.randomUUID();t=t||{};const n=t.random||(t.rng||MO)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let i=0;i<16;++i)e[r+i]=n[i];return e}return LO(n)}const PO=["Basic","Card","ListView","ListViewItem","Badge","Box","Row","Col","Button","Caption","Chart","Checkbox","DatePicker","Divider","Form","Icon","Image","Input","Label","Markdown","RadioGroup","Select","Spacer","Text","Textarea","Title","Transition","Video","Audio","Countdown","Clickable","ImageSelect"];class RO{constructor(){this.worker=null,this.callbacks=new Map,this.initializing=!1,this.initPromise=null,this.blobUrl=null}async init(){return this.worker?Promise.resolve():this.initializing&&this.initPromise?this.initPromise:(this.initializing=!0,this.initPromise=new Promise((e,r)=>{try{const n=window.tsxToJsonWorkerSrc||"https://cdn.xiaowei.qq.com/adp/assets/static/tsxToJSON.worker.js",i=new Blob([`importScripts('${n}')`],{type:"application/javascript"});this.blobUrl=URL.createObjectURL(i),this.worker=new Worker(this.blobUrl),this.worker.onmessage=a=>{const{ok:o,out:s,error:u,nonce:l}=a.data,c=this.callbacks.get(l);c&&(this.callbacks.delete(l),o?c.resolve(s):c.reject(new Error(u||"Worker Parse error")))},this.worker.onerror=a=>{console.error("tsxToJSON Worker 错误:",a)},this.initializing=!1,e()}catch(n){this.initializing=!1,console.error("初始化 tsxToJSON Worker 失败:",n),r(n)}}),this.initPromise)}destroy(){this.worker&&(this.worker.terminate(),this.worker=null),this.blobUrl&&(URL.revokeObjectURL(this.blobUrl),this.blobUrl=null),this.callbacks.forEach(e=>{e.reject(new Error("Worker destroy"))}),this.callbacks.clear(),this.initializing=!1,this.initPromise=null}async parse({view:e,state:r,keyMap:n,componentNames:i=PO}){return await this.init(),new Promise((a,o)=>{if(!this.worker){o(new Error("Worker not init"));return}const s=Zb();this.callbacks.set(s,{resolve:a,reject:o}),this.worker.postMessage({type:"parse",view:e,state:r||{},keyMap:n,componentNames:i||[],nonce:s})})}isInitialized(){return!!this.worker}}let g1=null;async function Vh(){return g1||(g1=new RO),await g1.init(),g1}class NO{constructor(){this.worker=null,this.callbacks=new Map,this.initializing=!1,this.initPromise=null,this.blobUrl=null}async init(){return this.worker?Promise.resolve():this.initializing&&this.initPromise?this.initPromise:(this.initializing=!0,this.initPromise=new Promise((e,r)=>{try{const n=window.schemaWorkerSrc||"https://cdn.xiaowei.qq.com/adp/assets/static/schemaWorker.js",i=new Blob([`importScripts('${n}')`],{type:"application/javascript"});this.blobUrl=URL.createObjectURL(i),this.worker=new Worker(this.blobUrl),this.worker.onmessage=a=>{const{ok:o,keyMap:s,jsonSchema:u,error:l,nonce:c}=a.data,f=this.callbacks.get(c);f&&(this.callbacks.delete(c),o?f.resolve({keyMap:s,jsonSchema:u}):f.reject(new Error(l||"Worker parse failed")))},this.worker.onerror=a=>{console.error("zodSchema Worker 错误:",a)},this.initializing=!1,e()}catch(n){this.initializing=!1,console.error("初始化 zodSchema Worker 失败:",n),r(n)}}),this.initPromise)}destroy(){this.worker&&(this.worker.terminate(),this.worker=null),this.blobUrl&&(URL.revokeObjectURL(this.blobUrl),this.blobUrl=null),this.callbacks.forEach(e=>{e.reject(new Error("Worker destroyed"))}),this.callbacks.clear(),this.initializing=!1,this.initPromise=null}async zodToJsonSchema({src:e,includeJSONSchema:r=!0}){return await this.init(),new Promise((n,i)=>{if(!this.worker){i(new Error("Worker not init"));return}const a=Zb();this.callbacks.set(a,{resolve:n,reject:i}),this.worker.postMessage({type:"parse",src:e,includeJSONSchema:r,nonce:a})})}async zodToJsonSchemaAsync(e){return await this.zodToJsonSchema({src:e,includeJSONSchema:!0})}isInitialized(){return!!this.worker}}let m1=null;async function Yb(){return m1||(m1=new NO),await m1.init(),m1}async function Y0(t){const r=await(await Yb()).zodToJsonSchemaAsync(t);return{keyMap:r.keyMap,jsonSchema:JSON.stringify(r.jsonSchema,null,2)}}function OO(t,e){let r;try{r=JSON.parse(t)}catch(i){return console.warn(`unmarshal view failed, err: ${i}`),t}let n;try{n=JSON.parse(e)}catch(i){return console.warn(`unmarshal payload failed, err: ${i}`),t}$h(r,n);try{return JSON.stringify(r)}catch(i){return console.warn(`marshal view failed, err: ${i}`),t}}function $h(t,e){if(Array.isArray(t))for(let r=0;r<t.length;r++)$h(t[r],e);else if(t!==null&&typeof t=="object"){const r=t.name;if(typeof r=="string"){const n=typeof t.type=="string"?t.type:"unknown",i=BO(r,e);if(i.exists){const a=i.value;switch(n){case"DatePicker":t.defaultValue=a;break;case"Select":t.defaultValue=a;break;case"Checkbox":t.defaultChecked=a;break;case"RadioGroup":t.defaultValue=a;break;case"Input":t.defaultValue=a;break;case"Textarea":t.defaultValue=a;break;default:t.defaultValue=a}}}if(Array.isArray(t.children))for(let n=0;n<t.children.length;n++)$h(t.children[n],e)}}function BO(t,e){const r=t.split(".");let n=e;for(const i of r){if(n===null||typeof n!="object"||Array.isArray(n))return{value:null,exists:!1};if(!(i in n))return{value:null,exists:!1};n=n[i]}return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?{value:n,exists:!0}:{value:String(n),exists:!0}}class n2{constructor(){this.initPromise=null,this.initialized=!1,this._preload()}_preload(){return this.initPromise?this.initPromise:(this.initPromise=Promise.all([Vh(),Yb()]).then(()=>{this.initialized=!0,console.log("WidgetHelper: Workers 预加载完成")}).catch(e=>{console.warn("WidgetHelper: Workers 预加载失败:",e.message)}),this.initPromise)}async waitForReady(){this.initPromise&&await this.initPromise}isReady(){return this.initialized}async getTemplate(e){try{return""}catch(r){return console.warn("getTemplate 执行出错:",r.message),""}}async getPreview({view:e,schema:r,defaultState:n}){try{if(await this.waitForReady(),n!=null&&n!==""){const s=typeof n=="string"?JSON.parse(n):n;if(typeof s!="object"||s===null)throw new Error("defaultState 必须是一个有效的 JSON 对象")}const{keyMap:i}=await Y0(r);return await(await Vh()).parse({view:e,state:JSON.parse(n),keyMap:i})}catch(i){return console.warn("getPreview 执行出错:",i.message),""}}async getJsonSchema(e){try{await this.waitForReady();const{jsonSchema:r}=await Y0(e);return r}catch(r){return console.warn("getJsonSchema 执行出错:",r.message),""}}genarateSnapshot(...e){return OO(...e)}decodeWidget(e){try{return JSON.parse(Buffer.from(e,"base64").toString()||"")}catch{return""}}}function FO(){return new n2}function zO(t){try{return jsxToJinja(t)}catch(e){return console.warn("getTemplate 执行出错:",e.message),""}}async function VO({view:t,schema:e,defaultState:r}){try{if(r!=null&&r!==""){const o=typeof r=="string"?JSON.parse(r):r;if(typeof o!="object"||o===null)throw new Error("defaultState 必须是一个有效的 JSON 对象")}const{keyMap:n}=await Y0(e);return await(await Vh()).parse({view:t,state:JSON.parse(r),keyMap:n})}catch(n){return console.warn("getPreview 执行出错:",n.message),""}}async function $O(t){try{const{jsonSchema:e}=await Y0(t);return e}catch(e){return console.warn("getJsonSchema 执行出错:",e.message),""}}const GO={data(){return{_widgetHelper:null}},created(){this._widgetHelper=new n2,this._widgetInstancesMap={},this._audioInstancesMap={},this._classifyTagInstancesMap={},this._planConfirmInstancesMap={},this._audioStateCache={}},methods:{_scaleWidgetIfNeeded(t,e){const r=this.widgetList&&this.widgetList.find(s=>s.widget_run_id===e),n=r&&r.scale,i=this._widgetInstancesMap[e],a=i&&i.instance&&i.instance.$el;if(!a)return;if(!n){t.style.width="",t.style.height="",a.style.transform="",a.style.transformOrigin="";return}let o;if(typeof n=="number")o=n;else if(n===!0){const s=this.$refs.containerRef&&(this.$refs.containerRef.$el||this.$refs.containerRef);if(!s)return;const u=s.clientWidth,l=a.style.transform;a.style.transform="";const c=a.scrollWidth||a.offsetWidth;if(a.style.transform=l,u<=0||c<=u){t.style.width="",t.style.height="",a.style.transform="",a.style.transformOrigin="";return}o=u/c}if(o&&o>0){a.style.transform="";const s=a.scrollWidth||a.offsetWidth,u=a.scrollHeight||a.offsetHeight;t.style.width=`${s*o}px`,t.style.height=`${u*o}px`,a.style.transform=`scale(${o})`,a.style.transformOrigin="top left"}},async _mountWidgets(t){if(!this.showWidget)return;const e=t.querySelectorAll(".widget-container");for(const r of e){if(r._widgetMounted||r._widgetMounting)continue;r._widgetMounting=!0;const n=r.getAttribute("data-widget-run-id"),i=r.getAttribute("data-widget-id"),a=r.getAttribute("data-widget-view"),o=r.getAttribute("data-widget-encoded-widget"),s=r.getAttribute("data-widget-state"),u=r.getAttribute("data-widget-payload"),l=r.getAttribute("data-widget-disable")==="true";if(!a&&!o){r._widgetMounting=!1;continue}const c=s?decodeURIComponent(escape(atob(s))):"",f=u?decodeURIComponent(escape(atob(u))):"",h=a?decodeURIComponent(escape(atob(a))):"";let d="";if(h)d=h;else try{const{view:b,schema:x}=this._widgetHelper.decodeWidget(o);d=await this._widgetHelper.getPreview({view:b,schema:x,defaultState:c}),d=JSON.stringify(d),f&&(d=this._widgetHelper.genarateSnapshot(d,f))}catch(b){console.error("[MsgContent] decodeWidget error",b),r._widgetMounting=!1;continue}const p=Ia.extend(Hb),v=new p({propsData:{output:d,disable:l,locale:this.locale}});v.$on("widget-action",b=>this.$emit("widget-action",b,n,i)),v.$on("widget-event",b=>this.$emit("widget-event",b,n,i)),v.$on("widget-rendered",b=>{this.$emit("widget-rendered",b,n,i),this.$nextTick(()=>this._scaleWidgetIfNeeded(r,n))}),v.$mount(),r.appendChild(v.$el),r._widgetMounted=!0,r._widgetMounting=!1;const g=r.getAttribute("data-widget-view")||"",m=r.getAttribute("data-widget-payload")||"",y=r.getAttribute("data-widget-state")||"",_=r.getAttribute("data-widget-encoded-widget")||"";this._widgetInstancesMap[n]={instance:v,container:r,_lastDataKey:`${g}|${m}|${y}|${_}`}}},_mountAudioPlayers(t){if(!this.audioList||this.audioList.length===0)return;t.querySelectorAll(".audio-stream-container").forEach(r=>{const n=r.getAttribute("data-audio-symbol-id");if(this._audioInstancesMap[n]){r.children.length===0&&r.appendChild(this._audioInstancesMap[n].instance.$el);return}if(r.children.length>0)return;const i=this.audioList&&this.audioList.find(a=>a.audioSymbolId===n);if(i)try{const a=Ia.extend(qb),o=new a({propsData:{audioData:i}});o.$on("play",s=>this.$emit("audio-play",s,n)),o.$on("pause",s=>this.$emit("audio-pause",s,n)),o.$on("end",s=>this.$emit("audio-end",s,n)),o.$on("audio-download",s=>this.$emit("audio-download",s,n)),o.$on("chunk-added",s=>this.$emit("audio-chunk-added",s,n)),o.$on("error",s=>this.$emit("audio-error",s,n)),o.$mount(),r.appendChild(o.$el),this._audioInstancesMap[n]={instance:o,container:r}}catch(a){console.error("[MsgContent] 创建音频播放器失败:",a)}})},_mountClassifyTags(t){if(!this.showClassifyTag)return;t.querySelectorAll(".classify-tag-container").forEach((r,n)=>{if(r._classifyTagMounted)return;const i=r.getAttribute("data-classify-tag");if(i)try{const a=decodeURIComponent(escape(atob(i))),o=JSON.parse(a),s=Ia.extend(r2),u=new s({propsData:{title:o.title||"问题澄清",questions:o.questions||[],disabled:!1}});u.$on("submit",l=>this.$emit("classify-tag-submit",l,o)),u.$on("skip",()=>this.$emit("classify-tag-skip",o)),u.$mount(),r.appendChild(u.$el),r._classifyTagMounted=!0,this._classifyTagInstancesMap[n]={instance:u,container:r}}catch(a){console.error("[MsgContent] ClassifyTag mount error:",a)}})},_mountPlanConfirms(t){if(!this.showPlanConfirm)return;t.querySelectorAll(".plan-confirm-container").forEach((r,n)=>{if(r._planConfirmMounted)return;const i=r.getAttribute("data-plan-confirm");if(i)try{const a=decodeURIComponent(escape(atob(i))),o=JSON.parse(a),s=Ia.extend(EO),u=new s({propsData:{title:o.title||"计划确认",planText:o.planText||"",disabled:!1}});u.$on("confirm",l=>this.$emit("plan-confirm",l,o)),u.$on("skip",l=>this.$emit("plan-skip",l,o)),u.$mount(),r.appendChild(u.$el),r._planConfirmMounted=!0,this._planConfirmInstancesMap[n]={instance:u,container:r}}catch(a){console.error("[MsgContent] PlanConfirm mount error:",a)}})},_mountAll(t){this.$nextTick(()=>{this._mountWidgets(t),this._mountAudioPlayers(t),this._mountClassifyTags(t),this._mountPlanConfirms(t)})},async _updateWidgets(t){if(!t)return;const e=this.$refs.containerRef,r=e&&(e.$el||e);if(!r)return;await this.$nextTick();const n=r.querySelectorAll(".widget-container");for(const i of n){const a=i.getAttribute("data-widget-run-id"),o=this._widgetInstancesMap[a];if(!a||!o)continue;const s=i.getAttribute("data-widget-view")||"",u=i.getAttribute("data-widget-payload")||"",l=i.getAttribute("data-widget-state")||"",c=i.getAttribute("data-widget-encoded-widget")||"",f=i.getAttribute("data-widget-disable")==="true",h=`${s}|${u}|${l}|${c}`;if(o._lastDataKey!==h){o._lastDataKey=h;const d=s?decodeURIComponent(escape(atob(s))):"",p=u?decodeURIComponent(escape(atob(u))):"";let v="";if(d)v=d;else if(c){const g=l?decodeURIComponent(escape(atob(l))):"";try{const{view:m,schema:y}=this._widgetHelper.decodeWidget(c);v=await this._widgetHelper.getPreview({view:m,schema:y,defaultState:g}),v=JSON.stringify(v),p&&(v=this._widgetHelper.genarateSnapshot(v,p))}catch{}}o.instance&&(o.instance.output=v)}o.instance&&(o.instance.disable=f),this._scaleWidgetIfNeeded(i,a)}},_updateAudioPlayers(t){t&&Object.keys(this._audioInstancesMap).forEach(e=>{const r=this._audioInstancesMap[e];if(!r||!r.instance)return;const n=t.find(s=>s.audioSymbolId===e);if(!n)return;const i=n.audio_data&&n.audio_data.length||0,a=!!n.isComplete,o=this._audioStateCache[e]||{length:0,isComplete:!1};(i!==o.length||a!==o.isComplete)&&(this._audioStateCache[e]={length:i,isComplete:a},r.instance.audioData=n)})},_destroyAllEmbedded(){Object.keys(this._widgetInstancesMap).forEach(t=>{try{this._widgetInstancesMap[t].instance.$destroy()}catch{}delete this._widgetInstancesMap[t]}),Object.keys(this._audioInstancesMap).forEach(t=>{try{this._audioInstancesMap[t].instance.$destroy()}catch{}delete this._audioInstancesMap[t]}),Object.keys(this._classifyTagInstancesMap).forEach(t=>{try{this._classifyTagInstancesMap[t].instance.$destroy()}catch{}delete this._classifyTagInstancesMap[t]}),Object.keys(this._planConfirmInstancesMap).forEach(t=>{try{this._planConfirmInstancesMap[t].instance.$destroy()}catch{}delete this._planConfirmInstancesMap[t]}),this._audioStateCache={}}},beforeDestroy(){this._destroyAllEmbedded()}},HO={methods:{_postrender(t){let e=t.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace("CURSOR_POINT",'<span class="cursor"></span>');const r=document.createElement("div");return r.innerHTML=e,r.querySelectorAll("img").forEach(n=>{const i=Gb(n.src,"size"),a=i&&i.split("|")||[];let o,s;if(a[1]){const u=a[1].split("*");o=u[0],u[1]&&(s=u[0]/u[1])}a[0]&&(a[0]==="min"&&(!o||o<24)?o=this.imgMinWidth||"24":a[0]==="mid"&&o>320?o=this.imgMaxWidth||"320":a[0]==="max"&&(o=this.imgMaxWidth||"320")),o&&(n.style.width=o===this.imgMaxWidth||o===this.imgMinWidth?o:`${o}px`),s&&(n.style.height=`${o/s}px`)}),r.querySelectorAll("pre code:not(.language-mermaid)").forEach((n,i,a)=>{if(Array.from(n.classList).some(s=>s.startsWith("language-"))?this.incremental||nf(n):n.classList.add("hljs"),this.isFinal){this.incremental||nv(n);const s=n.parentNode.querySelector(".cursor");s&&s.remove()}else if(this.isPrintAnimate&&!r.querySelector(".cursor")&&i===a.length-1&&!this.isFinal&&n.parentElement===r.lastElementChild){const s=document.createElement("span");s.className="cursor",n.append(s)}if(!this.incremental&&!n.parentNode.querySelector(".code-language-label")&&n.result&&n.result.language){const s=document.createElement("div");s.className="code-language-label",this.codeHeaderRender?s.innerHTML=this.codeHeaderRender(n.result.language,this.content,i):s.textContent=n.result.language,n.parentNode.insertBefore(s,n)}}),Cb(r),this.$emit("postrender",this.currentIndex,this.$refs.containerRef&&(this.$refs.containerRef.$el||this.$refs.containerRef),this.recordId),r.innerHTML.replace(/-->/g,"-->")},_onImageClick(t){this.$emit("imageClick",t)},_onDownloadCardClick(t,e){this.$emit("downloadCardClick",t,e)},_onMDRendered(t){t&&(this.incremental&&t.querySelectorAll("pre code:not(.language-mermaid)").forEach((e,r,n)=>{if(Array.from(e.classList).some(a=>a.startsWith("language-"))&&!e._highlighted&&(r===n.length-1&&!this.isFinal?nf(e):(nf(e),e._highlighted=!0)),this.isFinal&&!e._lineNumbered&&(nv(e),e._lineNumbered=!0),!e.parentNode.querySelector(".code-language-label")&&e.result&&e.result.language){const a=document.createElement("div");a.className="code-language-label",this.codeHeaderRender?a.innerHTML=this.codeHeaderRender(e.result.language,this.content,r):a.textContent=e.result.language,e.parentNode.insertBefore(a,e)}}),this.isFinal?(this.incremental?t.querySelectorAll(".question-text img, .answer-md img").forEach(e=>{e._imgClickBound||(e.addEventListener("click",this._onImageClick),e._imgClickBound=!0)}):(t.querySelectorAll(".question-text img").forEach(e=>{e.removeEventListener("click",this._onImageClick),e.addEventListener("click",this._onImageClick)}),t.querySelectorAll(".answer-md img").forEach(e=>{e.removeEventListener("click",this._onImageClick),e.addEventListener("click",this._onImageClick)})),t.querySelectorAll(`.${this.clazzMd||"answer-md"} a`).forEach(e=>{e.setAttribute("target","_blank")}),t.querySelectorAll(".video-placeholder").forEach(e=>e.remove()),t.querySelectorAll("video").forEach(e=>{e.style.display="block"})):t.querySelectorAll(".video-placeholder").forEach(e=>{this.incremental&&e._videoPlaceholderSet||(e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" style="animation: video-placeholder-spin 1s linear infinite; flex-shrink: 0;"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.36131 2.32604C0.902925 3.77517 0 5.78264 0 8.00101C0 12.4193 3.58172 16.001 8 16.001C12.4183 16.001 16 12.4193 16 8.00101C16 3.58326 12.4191 0.00187492 8.00161 0.00100708L8.85183 1.6572C11.9837 2.07373 14.4 4.7552 14.4 8.00101C14.4 11.5356 11.5346 14.401 8 14.401C4.46538 14.401 1.6 11.5356 1.6 8.00101C1.6 6.40633 2.18324 4.94787 3.14803 3.82731L2.36131 2.32604Z" fill="currentColor"/></svg>视频加载中...',this.incremental&&(e._videoPlaceholderSet=!0))}),this.showTags&&t.querySelectorAll(".tags-container").forEach(e=>{this.incremental&&e._tagClickBound||(this.incremental?(e.addEventListener("click",()=>this.$emit("littleTagClick",e,this.recordId)),e._tagClickBound=!0):(e.removeEventListener("click",this._tagClickHandler),e.addEventListener("click",()=>this.$emit("littleTagClick",e,this.recordId))))}),this.showDownloadCard&&t.querySelectorAll(".download-card").forEach(e=>{this.incremental&&e._downloadClickBound||(e.addEventListener("click",r=>{const n=r.currentTarget.getAttribute("data-file-id");this._onDownloadCardClick(n,r);try{r&&r.preventDefault&&r.preventDefault()}catch{}}),this.incremental&&(e._downloadClickBound=!0))}),this.isMermaidRenderAfterOutput?this.isFinal&&setTimeout(()=>{f1.onMermaidLoaded(()=>{f1.renderAll(t)})},0):setTimeout(()=>{f1.onMermaidLoaded(()=>{f1.renderAll(t)})},0),this._mountAll(t))}}};const UO={name:"MsgContent",components:{MDRender:PP},mixins:[eO,GO,HO],props:{showDownloadCard:{type:Boolean,default:!1},showTags:{type:Boolean,default:!1},fullFiles:{type:Array,default:()=>[]},recordId:String,content:{type:String,default:""},isFinal:{type:Boolean,default:!1},loadingMessage:{type:Boolean,default:!1},isMdExpand:{type:[Boolean,void 0],default:void 0},isReplaceLinks:{type:Boolean,default:!1},isPrintAnimate:{type:Boolean,default:!1},styleObj:Object,clazzTable:String,clazzMd:String,anchorAttributes:Object,linkify:{type:Boolean,default:!1},imgMinWidth:[Number,String],imgMaxWidth:[Number,String],printCount:Number,printCountTime:Number,hideCursorPoint:Boolean,chartDataArr:Array,codeHeaderRender:Function,replaceLinksWhitelist:Array,isMermaidRenderAfterOutput:{type:Boolean,default:!1},showWidget:{type:Boolean,default:!1},widgetList:{type:Array,default:()=>[]},audioList:{type:Array,default:()=>[]},locale:{type:String,default:"zh-CN"},incremental:{type:Boolean,default:!0},showClassifyTag:{type:Boolean,default:!1},showPlanConfirm:{type:Boolean,default:!1}},data(){return{currentText:"",renderText:""}},computed:{processOptions(){return{isReplaceLinks:this.isReplaceLinks,replaceLinksWhitelist:this.replaceLinksWhitelist,isFinal:this.isFinal,showTags:this.showTags,showDownloadCard:this.showDownloadCard,fullFiles:this.fullFiles,showWidget:this.showWidget,widgetList:this.widgetList,audioList:this.audioList,showClassifyTag:this.showClassifyTag,showPlanConfirm:this.showPlanConfirm}}},watch:{content(t){this.clearTimer(),this.currentIndex=this.currentText.length,this.currentText=this._getProcessedContent(t),this.isPrintAnimate?this._startPrint():this.renderText=this.currentText},isFinal(t){t&&this.content&&(this.clearTimer(),this.currentText=this._getProcessedContent(this.content),this.renderText=this.currentText,this.currentIndex=this.currentText.length)},isMdExpand(t){t?this.currentText=af(this.content,this.processOptions):this.currentText=af((this.content||"").substr(0,3e3),this.processOptions),this.renderText=this.currentText,this.clearTimer(),this.currentIndex=this.currentText.length},widgetList:{handler(t){this._updateWidgets(t)},deep:!0},audioList:{handler(t){this._updateAudioPlayers(t)},deep:!0}},created(){this._init()},mounted(){xN()},beforeDestroy(){this.clearTimer(),this._destroyAllEmbedded()},methods:{_getProcessedContent(t){if(!t)return"";const e=this.isMdExpand===void 0||this.isMdExpand?1e6:1e4;return af(t.substr(0,e),this.processOptions)},_startPrint(){this.startCurrentTimer({printCount:this.printCount||1,printCountTime:this.printCountTime||16,hideCursorPoint:this.hideCursorPoint,isFinal:this.isFinal})},_init(){const t=this._getProcessedContent(this.content||"");this.currentText=t,!this.isPrintAnimate||this.isFinal?(this.renderText=t,this.currentIndex=t.length,this.clearTimer()):this._startPrint()}}};var WO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"msg-content"},[e.loadingMessage?e._e():[r("MDRender",{ref:"containerRef",class:e.clazzMd||"answer-md",style:e.styleObj,attrs:{highlight:!0,"table-class":e.clazzTable||(e.isFinal?"table-style":"table"),source:e.renderText,"anchor-attributes":e.anchorAttributes||{target:"_blank"},linkify:e.linkify,incremental:e.incremental,postrender:e._postrender},on:{rendered:e._onMDRendered}})]],2)},qO=[],ZO=pr(UO,WO,qO,!1,null,null,null,null);const Xb=ZO.exports,Z4=An(Xb);const YO={name:"MsgThought",components:{VIcon:t2},props:{titleRender:{type:[Object,Function],default:null},isMobile:Boolean,content:String,title:String,titleIcon:String,nodeName:String,status:String,elapsed:{type:Number,default:0},detailVisible:{type:Boolean,default:!0}},data(){return{THOUGHT_STATUS:gP,innerDetailVisible:this.detailVisible,renderedContent:"",xssHandler:new Un.FilterXSS(vP)}},computed:{elapsedSeconds(){return this.elapsed?(this.elapsed/1e3).toFixed(1):0}},watch:{content:{immediate:!0,handler(t){const e=(t||"").replace(/^\n+/,"").replace(/\n/g,"<br>");this.renderedContent=this.xssHandler.process(e)}},detailVisible(t){this.innerDetailVisible=t}},methods:{onTitleClick(){const t=!this.innerDetailVisible;this.innerDetailVisible=t,this.$emit("update:detailVisible",t)}}};var XO=function(){var e=this,r=e._self._c;return r("div",{staticClass:"thought-clps-content"},[e.titleRender?r(e.titleRender,{tag:"component"}):e._e(),e.titleRender?e._e():r("div",{staticClass:"thought-title",on:{click:e.onTitleClick}},[r("div",{staticClass:"thought-title-container"},[r("img",{staticClass:"thought-title-icon",attrs:{src:e.titleIcon}}),r("span",{staticClass:"thought-title-name"},[e._v(" "+e._s(e.title)+" "),e.nodeName?r("span",{staticClass:"thought-clps-modellabel"},[e._v(" -"+e._s(e.nodeName)+" ")]):e._e()]),e.status===e.THOUGHT_STATUS.failed?r("v-icon",{style:{color:"#FF8345"},attrs:{name:"basic_warning_line",size:"16"}}):e._e(),e.status===e.THOUGHT_STATUS.success?r("v-icon",{style:{color:"#0FB87F"},attrs:{name:"basic_finish_line",size:"16"}}):e._e(),e.status===e.THOUGHT_STATUS.stop?r("v-icon",{style:{color:"rgba(1,11,50,0.41)"},attrs:{name:"basic_stop_line",size:"16"}}):e._e()],1),r("div",{staticClass:"thought-title-container thought-title-elapsed"},[r("span",[e._v(e._s(e.elapsedSeconds)+"s")]),r("v-icon",{staticClass:"thought__header__icon",attrs:{name:"arrow_down_small_line",rotate:e.innerDetailVisible?180:0,size:"12"}})],1)]),e.innerDetailVisible?r("div",{staticClass:"thought-detail"},[r("div",{staticClass:"question-text",class:{"question-text-mobile":e.isMobile},domProps:{innerHTML:e._s(e.renderedContent)}})]):e._e()],1)},jO=[],KO=pr(YO,XO,jO,!1,null,"60c16159",null,null);const QO=KO.exports,Y4=An(QO);/*! *****************************************************************************
|
|
50
50
|
Copyright (c) Microsoft Corporation.
|
|
51
51
|
|
|
52
52
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -119,4 +119,4 @@ echarts.use([`+k+"]);":"Unknown series "+D))}return}if(f==="tooltip"){if(_){proc
|
|
|
119
119
|
`,"Illegal config:",c,`.
|
|
120
120
|
`)),Re(n));var y=d?CS(d):null;d&&!y&&(process.env.NODE_ENV!=="production"&&(n=Yt("Invalid parser name "+d+`.
|
|
121
121
|
`,"Illegal config:",c,`.
|
|
122
|
-
`)),Re(n)),a.push({dimIdx:m.index,parser:y,comparator:new TS(h,p)})});var o=e.sourceFormat;o!==Vt&&o!==Fr&&(process.env.NODE_ENV!=="production"&&(n='sourceFormat "'+o+'" is not supported yet'),Re(n));for(var s=[],u=0,l=e.count();u<l;u++)s.push(e.getRawDataItem(u));return s.sort(function(c,f){for(var h=0;h<a.length;h++){var d=a[h],p=e.retrieveValueFromItem(c,d.dimIdx),v=e.retrieveValueFromItem(f,d.dimIdx);d.parser&&(p=d.parser(p),v=d.parser(v));var g=d.comparator.evaluate(p,v);if(g!==0)return g}return 0}),{data:s}}};function Qse(t){t.registerTransform(jse),t.registerTransform(Kse)}var Jse=function(t){F(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.type="dataset",r}return e.prototype.init=function(r,n,i){t.prototype.init.call(this,r,n,i),this._sourceManager=new MS(this),K3(this)},e.prototype.mergeOption=function(r,n){t.prototype.mergeOption.call(this,r,n),K3(this)},e.prototype.optionUpdated=function(){this._sourceManager.dirty()},e.prototype.getSourceManager=function(){return this._sourceManager},e.type="dataset",e.defaultOption={seriesLayoutBy:_n},e}(Ce),eue=function(t){F(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.type="dataset",r}return e.type="dataset",e}(et);function tue(t){t.registerComponentModel(Jse),t.registerComponentView(eue)}var on=Cn.CMD;function is(t,e){return Math.abs(t-e)<1e-5}function E4(t){var e=t.data,r=t.len(),n=[],i,a=0,o=0,s=0,u=0;function l(M,I){i&&i.length>2&&n.push(i),i=[M,I]}function c(M,I,N,L){is(M,N)&&is(I,L)||i.push(M,I,N,L,N,L)}function f(M,I,N,L,O,P){var R=Math.abs(I-M),B=Math.tan(R/4)*4/3,z=I<M?-1:1,V=Math.cos(M),U=Math.sin(M),q=Math.cos(I),K=Math.sin(I),xe=V*O+N,Ve=U*P+L,ue=q*O+N,ee=K*P+L,he=O*B*z,Q=P*B*z;i.push(xe-he*U,Ve+Q*V,ue+he*K,ee-Q*q,ue,ee)}for(var h,d,p,v,g=0;g<r;){var m=e[g++],y=g===1;switch(y&&(a=e[g],o=e[g+1],s=a,u=o,(m===on.L||m===on.C||m===on.Q)&&(i=[s,u])),m){case on.M:a=s=e[g++],o=u=e[g++],l(s,u);break;case on.L:h=e[g++],d=e[g++],c(a,o,h,d),a=h,o=d;break;case on.C:i.push(e[g++],e[g++],e[g++],e[g++],a=e[g++],o=e[g++]);break;case on.Q:h=e[g++],d=e[g++],p=e[g++],v=e[g++],i.push(a+2/3*(h-a),o+2/3*(d-o),p+2/3*(h-p),v+2/3*(d-v),p,v),a=p,o=v;break;case on.A:var _=e[g++],b=e[g++],x=e[g++],w=e[g++],S=e[g++],C=e[g++]+S;g+=1;var A=!e[g++];h=Math.cos(S)*x+_,d=Math.sin(S)*w+b,y?(s=h,u=d,l(s,u)):c(a,o,h,d),a=Math.cos(C)*x+_,o=Math.sin(C)*w+b;for(var T=(A?-1:1)*Math.PI/2,D=S;A?D>C:D<C;D+=T){var k=A?Math.max(D+T,C):Math.min(D+T,C);f(D,k,_,b,x,w)}break;case on.R:s=a=e[g++],u=o=e[g++],h=s+e[g++],d=u+e[g++],l(h,u),c(h,u,h,d),c(h,d,s,d),c(s,d,s,u),c(s,u,h,u);break;case on.Z:i&&c(a,o,s,u),a=s,o=u;break}}return i&&i.length>2&&n.push(i),n}function k4(t,e,r,n,i,a,o,s,u,l){if(is(t,r)&&is(e,n)&&is(i,o)&&is(a,s)){u.push(o,s);return}var c=2/l,f=c*c,h=o-t,d=s-e,p=Math.sqrt(h*h+d*d);h/=p,d/=p;var v=r-t,g=n-e,m=i-o,y=a-s,_=v*v+g*g,b=m*m+y*y;if(_<f&&b<f){u.push(o,s);return}var x=h*v+d*g,w=-h*m-d*y,S=_-x*x,C=b-w*w;if(S<f&&x>=0&&C<f&&w>=0){u.push(o,s);return}var A=[],T=[];Fi(t,r,i,o,.5,A),Fi(e,n,a,s,.5,T),k4(A[0],T[0],A[1],T[1],A[2],T[2],A[3],T[3],u,l),k4(A[4],T[4],A[5],T[5],A[6],T[6],A[7],T[7],u,l)}function rue(t,e){var r=E4(t),n=[];e=e||1;for(var i=0;i<r.length;i++){var a=r[i],o=[],s=a[0],u=a[1];o.push(s,u);for(var l=2;l<a.length;){var c=a[l++],f=a[l++],h=a[l++],d=a[l++],p=a[l++],v=a[l++];k4(s,u,c,f,h,d,p,v,o,e),s=p,u=v}n.push(o)}return n}function JD(t,e,r){var n=t[e],i=t[1-e],a=Math.abs(n/i),o=Math.ceil(Math.sqrt(a*r)),s=Math.floor(r/o);s===0&&(s=1,o=r);for(var u=[],l=0;l<o;l++)u.push(s);var c=o*s,f=r-c;if(f>0)for(var l=0;l<f;l++)u[l%o]+=1;return u}function t_(t,e,r){for(var n=t.r0,i=t.r,a=t.startAngle,o=t.endAngle,s=Math.abs(o-a),u=s*i,l=i-n,c=u>Math.abs(l),f=JD([u,l],c?0:1,e),h=(c?s:l)/f.length,d=0;d<f.length;d++)for(var p=(c?l:s)/f[d],v=0;v<f[d];v++){var g={};c?(g.startAngle=a+h*d,g.endAngle=a+h*(d+1),g.r0=n+p*v,g.r=n+p*(v+1)):(g.startAngle=a+p*v,g.endAngle=a+p*(v+1),g.r0=n+h*d,g.r=n+h*(d+1)),g.clockwise=t.clockwise,g.cx=t.cx,g.cy=t.cy,r.push(g)}}function nue(t,e,r){for(var n=t.width,i=t.height,a=n>i,o=JD([n,i],a?0:1,e),s=a?"width":"height",u=a?"height":"width",l=a?"x":"y",c=a?"y":"x",f=t[s]/o.length,h=0;h<o.length;h++)for(var d=t[u]/o[h],p=0;p<o[h];p++){var v={};v[l]=h*f,v[c]=p*d,v[s]=f,v[u]=d,v.x+=t.x,v.y+=t.y,r.push(v)}}function r_(t,e,r,n){return t*n-r*e}function iue(t,e,r,n,i,a,o,s){var u=r-t,l=n-e,c=o-i,f=s-a,h=r_(c,f,u,l);if(Math.abs(h)<1e-6)return null;var d=t-i,p=e-a,v=r_(d,p,c,f)/h;return v<0||v>1?null:new me(v*u+t,v*l+e)}function aue(t,e,r){var n=new me;me.sub(n,r,e),n.normalize();var i=new me;me.sub(i,t,e);var a=i.dot(n);return a}function qo(t,e){var r=t[t.length-1];r&&r[0]===e[0]&&r[1]===e[1]||t.push(e)}function oue(t,e,r){for(var n=t.length,i=[],a=0;a<n;a++){var o=t[a],s=t[(a+1)%n],u=iue(o[0],o[1],s[0],s[1],e.x,e.y,r.x,r.y);u&&i.push({projPt:aue(u,e,r),pt:u,idx:a})}if(i.length<2)return[{points:t},{points:t}];i.sort(function(g,m){return g.projPt-m.projPt});var l=i[0],c=i[i.length-1];if(c.idx<l.idx){var f=l;l=c,c=f}for(var h=[l.pt.x,l.pt.y],d=[c.pt.x,c.pt.y],p=[h],v=[d],a=l.idx+1;a<=c.idx;a++)qo(p,t[a].slice());qo(p,d),qo(p,h);for(var a=c.idx+1;a<=l.idx+n;a++)qo(v,t[a%n].slice());return qo(v,h),qo(v,d),[{points:p},{points:v}]}function n_(t){var e=t.points,r=[],n=[];v2(e,r,n);var i=new ye(r[0],r[1],n[0]-r[0],n[1]-r[1]),a=i.width,o=i.height,s=i.x,u=i.y,l=new me,c=new me;return a>o?(l.x=c.x=s+a/2,l.y=u,c.y=u+o):(l.y=c.y=u+o/2,l.x=s,c.x=s+a),oue(e,l,c)}function Uc(t,e,r,n){if(r===1)n.push(e);else{var i=Math.floor(r/2),a=t(e);Uc(t,a[0],i,n),Uc(t,a[1],r-i,n)}return n}function sue(t,e){for(var r=[],n=0;n<e;n++)r.push(_5(t));return r}function uue(t,e){e.setStyle(t.style),e.z=t.z,e.z2=t.z2,e.zlevel=t.zlevel}function lue(t){for(var e=[],r=0;r<t.length;)e.push([t[r++],t[r++]]);return e}function cue(t,e){var r=[],n=t.shape,i;switch(t.type){case"rect":nue(n,e,r),i=Ee;break;case"sector":t_(n,e,r),i=rr;break;case"circle":t_({r0:0,r:n.r,startAngle:0,endAngle:Math.PI*2,cx:n.cx,cy:n.cy},e,r),i=rr;break;default:var a=t.getComputedTransform(),o=a?Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1],a[2]*a[2]+a[3]*a[3])):1,s=H(rue(t.getUpdatedPathProxy(),o),function(m){return lue(m)}),u=s.length;if(u===0)Uc(n_,{points:s[0]},e,r);else if(u===e)for(var l=0;l<u;l++)r.push({points:s[l]});else{var c=0,f=H(s,function(m){var y=[],_=[];v2(m,y,_);var b=(_[1]-y[1])*(_[0]-y[0]);return c+=b,{poly:m,area:b}});f.sort(function(m,y){return y.area-m.area});for(var h=e,l=0;l<u;l++){var d=f[l];if(h<=0)break;var p=l===u-1?h:Math.ceil(d.area/c*e);p<0||(Uc(n_,{points:d.poly},p,r),h-=p)}}i=nr;break}if(!i)return sue(t,e);for(var v=[],l=0;l<r.length;l++){var g=new i;g.setShape(r[l]),uue(t,g),v.push(g)}return v}function fue(t,e){var r=t.length,n=e.length;if(r===n)return[t,e];for(var i=[],a=[],o=r<n?t:e,s=Math.min(r,n),u=Math.abs(n-r)/6,l=(s-2)/6,c=Math.ceil(u/l)+1,f=[o[0],o[1]],h=u,d=2;d<s;){var p=o[d-2],v=o[d-1],g=o[d++],m=o[d++],y=o[d++],_=o[d++],b=o[d++],x=o[d++];if(h<=0){f.push(g,m,y,_,b,x);continue}for(var w=Math.min(h,c-1)+1,S=1;S<=w;S++){var C=S/w;Fi(p,g,y,b,C,i),Fi(v,m,_,x,C,a),p=i[3],v=a[3],f.push(i[1],a[1],i[2],a[2],p,v),g=i[5],m=a[5],y=i[6],_=a[6]}h-=w-1}return o===t?[f,e]:[t,f]}function i_(t,e){for(var r=t.length,n=t[r-2],i=t[r-1],a=[],o=0;o<e.length;)a[o++]=n,a[o++]=i;return a}function hue(t,e){for(var r,n,i,a=[],o=[],s=0;s<Math.max(t.length,e.length);s++){var u=t[s],l=e[s],c=void 0,f=void 0;u?l?(r=fue(u,l),c=r[0],f=r[1],n=c,i=f):(f=i_(i||u,u),c=u):(c=i_(n||l,l),f=l),a.push(c),o.push(f)}return[a,o]}function a_(t){for(var e=0,r=0,n=0,i=t.length,a=0,o=i-2;a<i;o=a,a+=2){var s=t[o],u=t[o+1],l=t[a],c=t[a+1],f=s*c-l*u;e+=f,r+=(s+l)*f,n+=(u+c)*f}return e===0?[t[0]||0,t[1]||0]:[r/e/3,n/e/3,e]}function due(t,e,r,n){for(var i=(t.length-2)/6,a=1/0,o=0,s=t.length,u=s-2,l=0;l<i;l++){for(var c=l*6,f=0,h=0;h<s;h+=2){var d=h===0?c:(c+h-2)%u+2,p=t[d]-r[0],v=t[d+1]-r[1],g=e[h]-n[0],m=e[h+1]-n[1],y=g-p,_=m-v;f+=y*y+_*_}f<a&&(a=f,o=l)}return o}function pue(t){for(var e=[],r=t.length,n=0;n<r;n+=2)e[n]=t[r-n-2],e[n+1]=t[r-n-1];return e}function vue(t,e,r,n){for(var i=[],a,o=0;o<t.length;o++){var s=t[o],u=e[o],l=a_(s),c=a_(u);a==null&&(a=l[2]<0!=c[2]<0);var f=[],h=[],d=0,p=1/0,v=[],g=s.length;a&&(s=pue(s));for(var m=due(s,u,l,c)*6,y=g-2,_=0;_<y;_+=2){var b=(m+_)%y+2;f[_+2]=s[b]-l[0],f[_+3]=s[b+1]-l[1]}if(f[0]=s[m]-l[0],f[1]=s[m+1]-l[1],r>0)for(var x=n/r,w=-n/2;w<=n/2;w+=x){for(var S=Math.sin(w),C=Math.cos(w),A=0,_=0;_<s.length;_+=2){var T=f[_],D=f[_+1],k=u[_]-c[0],M=u[_+1]-c[1],I=k*C-M*S,N=k*S+M*C;v[_]=I,v[_+1]=N;var L=I-T,O=N-D;A+=L*L+O*O}if(A<p){p=A,d=w;for(var P=0;P<v.length;P++)h[P]=v[P]}}else for(var R=0;R<g;R+=2)h[R]=u[R]-c[0],h[R+1]=u[R+1]-c[1];i.push({from:f,to:h,fromCp:l,toCp:c,rotation:-d})}return i}function Wc(t){return t.__isCombineMorphing}var eE="__mOriginal_";function qc(t,e,r){var n=eE+e,i=t[n]||t[e];t[n]||(t[n]=t[e]);var a=r.replace,o=r.after,s=r.before;t[e]=function(){var u=arguments,l;return s&&s.apply(this,u),a?l=a.apply(this,u):l=i.apply(this,u),o&&o.apply(this,u),l}}function tl(t,e){var r=eE+e;t[r]&&(t[e]=t[r],t[r]=null)}function o_(t,e){for(var r=0;r<t.length;r++)for(var n=t[r],i=0;i<n.length;){var a=n[i],o=n[i+1];n[i++]=e[0]*a+e[2]*o+e[4],n[i++]=e[1]*a+e[3]*o+e[5]}}function tE(t,e){var r=t.getUpdatedPathProxy(),n=e.getUpdatedPathProxy(),i=hue(E4(r),E4(n)),a=i[0],o=i[1],s=t.getComputedTransform(),u=e.getComputedTransform();function l(){this.transform=null}s&&o_(a,s),u&&o_(o,u),qc(e,"updateTransform",{replace:l}),e.transform=null;var c=vue(a,o,10,Math.PI),f=[];qc(e,"buildPath",{replace:function(h){for(var d=e.__morphT,p=1-d,v=[],g=0;g<c.length;g++){var m=c[g],y=m.from,_=m.to,b=m.rotation*d,x=m.fromCp,w=m.toCp,S=Math.sin(b),C=Math.cos(b);S0(v,x,w,d);for(var A=0;A<y.length;A+=2){var T=y[A],D=y[A+1],k=_[A],M=_[A+1],I=T*p+k*d,N=D*p+M*d;f[A]=I*C-N*S+v[0],f[A+1]=I*S+N*C+v[1]}var L=f[0],O=f[1];h.moveTo(L,O);for(var A=2;A<y.length;){var k=f[A++],M=f[A++],P=f[A++],R=f[A++],B=f[A++],z=f[A++];L===k&&O===M&&P===B&&R===z?h.lineTo(B,z):h.bezierCurveTo(k,M,P,R,B,z),L=B,O=z}}}})}function op(t,e,r){if(!t||!e)return e;var n=r.done,i=r.during;tE(t,e),e.__morphT=0;function a(){tl(e,"buildPath"),tl(e,"updateTransform"),e.__morphT=-1,e.createPathProxy(),e.dirtyShape()}return e.animateTo({__morphT:1},ae({during:function(o){e.dirtyShape(),i&&i(o)},done:function(){a(),n&&n()}},r)),e}function gue(t,e,r,n,i,a){var o=16;t=i===r?0:Math.round(32767*(t-r)/(i-r)),e=a===n?0:Math.round(32767*(e-n)/(a-n));for(var s=0,u,l=(1<<o)/2;l>0;l/=2){var c=0,f=0;(t&l)>0&&(c=1),(e&l)>0&&(f=1),s+=l*l*(3*c^f),f===0&&(c===1&&(t=l-1-t,e=l-1-e),u=t,t=e,e=u)}return s}function Zc(t){var e=1/0,r=1/0,n=-1/0,i=-1/0,a=H(t,function(s){var u=s.getBoundingRect(),l=s.getComputedTransform(),c=u.x+u.width/2+(l?l[4]:0),f=u.y+u.height/2+(l?l[5]:0);return e=Math.min(c,e),r=Math.min(f,r),n=Math.max(c,n),i=Math.max(f,i),[c,f]}),o=H(a,function(s,u){return{cp:s,z:gue(s[0],s[1],e,r,n,i),path:t[u]}});return o.sort(function(s,u){return s.z-u.z}).map(function(s){return s.path})}function rE(t){return cue(t.path,t.count)}function M4(){return{fromIndividuals:[],toIndividuals:[],count:0}}function mue(t,e,r){var n=[];function i(x){for(var w=0;w<x.length;w++){var S=x[w];Wc(S)?i(S.childrenRef()):S instanceof we&&n.push(S)}}i(t);var a=n.length;if(!a)return M4();var o=r.dividePath||rE,s=o({path:e,count:a});if(s.length!==a)return console.error("Invalid morphing: unmatched splitted path"),M4();n=Zc(n),s=Zc(s);for(var u=r.done,l=r.during,c=r.individualDelay,f=new On,h=0;h<a;h++){var d=n[h],p=s[h];p.parent=e,p.copyTransform(f),c||tE(d,p)}e.__isCombineMorphing=!0,e.childrenRef=function(){return s};function v(x){for(var w=0;w<s.length;w++)s[w].addSelfToZr(x)}qc(e,"addSelfToZr",{after:function(x){v(x)}}),qc(e,"removeSelfFromZr",{after:function(x){for(var w=0;w<s.length;w++)s[w].removeSelfFromZr(x)}});function g(){e.__isCombineMorphing=!1,e.__morphT=-1,e.childrenRef=null,tl(e,"addSelfToZr"),tl(e,"removeSelfFromZr")}var m=s.length;if(c)for(var y=m,_=function(){y--,y===0&&(g(),u&&u())},h=0;h<m;h++){var b=c?ae({delay:(r.delay||0)+c(h,m,n[h],s[h]),done:_},r):r;op(n[h],s[h],b)}else e.__morphT=0,e.animateTo({__morphT:1},ae({during:function(x){for(var w=0;w<m;w++){var S=s[w];S.__morphT=e.__morphT,S.dirtyShape()}l&&l(x)},done:function(){g();for(var x=0;x<t.length;x++)tl(t[x],"updateTransform");u&&u()}},r));return e.__zr&&v(e.__zr),{fromIndividuals:n,toIndividuals:s,count:m}}function yue(t,e,r){var n=e.length,i=[],a=r.dividePath||rE;function o(d){for(var p=0;p<d.length;p++){var v=d[p];Wc(v)?o(v.childrenRef()):v instanceof we&&i.push(v)}}if(Wc(t)){o(t.childrenRef());var s=i.length;if(s<n)for(var u=0,l=s;l<n;l++)i.push(_5(i[u++%s]));i.length=n}else{i=a({path:t,count:n});for(var c=t.getComputedTransform(),l=0;l<i.length;l++)i[l].setLocalTransform(c);if(i.length!==n)return console.error("Invalid morphing: unmatched splitted path"),M4()}i=Zc(i),e=Zc(e);for(var f=r.individualDelay,l=0;l<n;l++){var h=f?ae({delay:(r.delay||0)+f(l,n,i[l],e[l])},r):r;op(i[l],e[l],h)}return{fromIndividuals:i,toIndividuals:e,count:e.length}}function s_(t){return G(t[0])}function u_(t,e){for(var r=[],n=t.length,i=0;i<n;i++)r.push({one:t[i],many:[]});for(var i=0;i<e.length;i++){var a=e[i].length,o=void 0;for(o=0;o<a;o++)r[o%n].many.push(e[i][o])}for(var s=0,i=n-1;i>=0;i--)if(!r[i].many.length){var u=r[s].many;if(u.length<=1)if(s)s=0;else return r;var a=u.length,l=Math.ceil(a/2);r[i].many=u.slice(l,a),r[s].many=u.slice(0,l),s++}return r}var _ue={clone:function(t){for(var e=[],r=1-Math.pow(1-t.path.style.opacity,1/t.count),n=0;n<t.count;n++){var i=_5(t.path);i.setStyle("opacity",r),e.push(i)}return e},split:null};function Mh(t,e,r,n,i,a){if(!t.length||!e.length)return;var o=Is("update",n,i);if(!(o&&o.duration>0))return;var s=n.getModel("universalTransition").get("delay"),u=Object.assign({setToFinal:!0},o),l,c;s_(t)&&(l=t,c=e),s_(e)&&(l=e,c=t);function f(m,y,_,b,x){var w=m.many,S=m.one;if(w.length===1&&!x){var C=y?w[0]:S,A=y?S:w[0];if(Wc(C))f({many:[C],one:A},!0,_,b,!0);else{var T=s?ae({delay:s(_,b)},u):u;op(C,A,T),a(C,A,C,A,T)}}else for(var D=ae({dividePath:_ue[r],individualDelay:s&&function(O,P,R,B){return s(O+_,b)}},u),k=y?mue(w,S,D):yue(S,w,D),M=k.fromIndividuals,I=k.toIndividuals,N=M.length,L=0;L<N;L++){var T=s?ae({delay:s(L,N)},u):u;a(M[L],I[L],y?w[L]:m.one,y?m.one:w[L],T)}}for(var h=l?l===t:t.length>e.length,d=l?u_(c,l):u_(h?e:t,[h?t:e]),p=0,v=0;v<d.length;v++)p+=d[v].many.length;for(var g=0,v=0;v<d.length;v++)f(d[v],h,g,p),g+=d[v].many.length}function Da(t){if(!t)return[];if(G(t)){for(var e=[],r=0;r<t.length;r++)e.push(Da(t[r]));return e}var n=[];return t.traverse(function(i){i instanceof we&&!i.disableMorphing&&!i.invisible&&!i.ignore&&n.push(i)}),n}var nE=1e4,bue=0,l_=1,c_=2,xue=Ae();function wue(t,e){for(var r=t.dimensions,n=0;n<r.length;n++){var i=t.getDimensionInfo(r[n]);if(i&&i.otherDims[e]===0)return r[n]}}function Sue(t,e,r){var n=t.getDimensionInfo(r),i=n&&n.ordinalMeta;if(n){var a=t.get(n.name,e);return i&&i.categories[a]||a+""}}function f_(t,e,r,n){var i=n?"itemChildGroupId":"itemGroupId",a=wue(t,i);if(a){var o=Sue(t,e,a);return o}var s=t.getRawDataItem(e),u=n?"childGroupId":"groupId";if(s&&s[u])return s[u]+"";if(!n)return r||t.getId(e)}function h_(t){var e=[];return E(t,function(r){var n=r.data,i=r.dataGroupId;if(n.count()>nE){process.env.NODE_ENV!=="production"&&Qe("Universal transition is disabled on large data > 10k.");return}for(var a=n.getIndices(),o=0;o<a.length;o++)e.push({data:n,groupId:f_(n,o,i,!1),childGroupId:f_(n,o,i,!0),divide:r.divide,dataIndex:o})}),e}function Lh(t,e,r){t.traverse(function(n){n instanceof we&&Ye(n,{style:{opacity:0}},e,{dataIndex:r,isFrom:!0})})}function Ih(t){if(t.parent){var e=t.getComputedTransform();t.setLocalTransform(e),t.parent.remove(t)}}function Zo(t){t.stopAnimation(),t.isGroup&&t.traverse(function(e){e.stopAnimation()})}function Cue(t,e,r){var n=Is("update",r,e);n&&t.traverse(function(i){if(i instanceof Rr){var a=t$(i);a&&i.animateFrom({style:a},n)}})}function Aue(t,e){var r=t.length;if(r!==e.length)return!1;for(var n=0;n<r;n++){var i=t[n],a=e[n];if(i.data.getId(i.dataIndex)!==a.data.getId(a.dataIndex))return!1}return!0}function iE(t,e,r){var n=h_(t),i=h_(e);function a(_,b,x,w,S){(x||_)&&b.animateFrom({style:x&&x!==_?$($({},x.style),_.style):_.style},S)}var o=!1,s=bue,u=J(),l=J();n.forEach(function(_){_.groupId&&u.set(_.groupId,!0),_.childGroupId&&l.set(_.childGroupId,!0)});for(var c=0;c<i.length;c++){var f=i[c].groupId;if(l.get(f)){s=l_;break}var h=i[c].childGroupId;if(h&&u.get(h)){s=c_;break}}function d(_,b){return function(x){var w=x.data,S=x.dataIndex;return b?w.getId(S):_?s===l_?x.childGroupId:x.groupId:s===c_?x.childGroupId:x.groupId}}var p=Aue(n,i),v={};if(!p)for(var c=0;c<i.length;c++){var g=i[c],m=g.data.getItemGraphicEl(g.dataIndex);m&&(v[m.id]=!0)}function y(_,b){var x=n[b],w=i[_],S=w.data.hostModel,C=x.data.getItemGraphicEl(x.dataIndex),A=w.data.getItemGraphicEl(w.dataIndex);if(C===A){A&&Cue(A,w.dataIndex,S);return}C&&v[C.id]||A&&(Zo(A),C?(Zo(C),Ih(C),o=!0,Mh(Da(C),Da(A),w.divide,S,_,a)):Lh(A,S,_))}new Xn(n,i,d(!0,p),d(!1,p),null,"multiple").update(y).updateManyToOne(function(_,b){var x=i[_],w=x.data,S=w.hostModel,C=w.getItemGraphicEl(x.dataIndex),A=Ne(H(b,function(T){return n[T].data.getItemGraphicEl(n[T].dataIndex)}),function(T){return T&&T!==C&&!v[T.id]});C&&(Zo(C),A.length?(E(A,function(T){Zo(T),Ih(T)}),o=!0,Mh(Da(A),Da(C),x.divide,S,_,a)):Lh(C,S,x.dataIndex))}).updateOneToMany(function(_,b){var x=n[b],w=x.data.getItemGraphicEl(x.dataIndex);if(!(w&&v[w.id])){var S=Ne(H(_,function(A){return i[A].data.getItemGraphicEl(i[A].dataIndex)}),function(A){return A&&A!==w}),C=i[_[0]].data.hostModel;S.length&&(E(S,function(A){return Zo(A)}),w?(Zo(w),Ih(w),o=!0,Mh(Da(w),Da(S),x.divide,C,_[0],a)):E(S,function(A){return Lh(A,C,_[0])}))}}).updateManyToMany(function(_,b){new Xn(b,_,function(x){return n[x].data.getId(n[x].dataIndex)},function(x){return i[x].data.getId(i[x].dataIndex)}).update(function(x,w){y(_[x],b[w])}).execute()}).execute(),o&&E(e,function(_){var b=_.data,x=b.hostModel,w=x&&r.getViewOfSeriesModel(x),S=Is("update",x,0);w&&x.isAnimationEnabled()&&S&&S.duration>0&&w.group.traverse(function(C){C instanceof we&&!C.animators.length&&C.animateFrom({style:{opacity:0}},S)})})}function d_(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function p_(t){return G(t)?t.sort().join(","):t}function mi(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function Tue(t,e){var r=J(),n=J(),i=J();E(t.oldSeries,function(o,s){var u=t.oldDataGroupIds[s],l=t.oldData[s],c=d_(o),f=p_(c);n.set(f,{dataGroupId:u,data:l}),G(c)&&E(c,function(h){i.set(h,{key:f,dataGroupId:u,data:l})})});function a(o){r.get(o)&&Qe("Duplicated seriesKey in universalTransition "+o)}return E(e.updatedSeries,function(o){if(o.isUniversalTransitionEnabled()&&o.isAnimationEnabled()){var s=o.get("dataGroupId"),u=o.getData(),l=d_(o),c=p_(l),f=n.get(c);if(f)process.env.NODE_ENV!=="production"&&a(c),r.set(c,{oldSeries:[{dataGroupId:f.dataGroupId,divide:mi(f.data),data:f.data}],newSeries:[{dataGroupId:s,divide:mi(u),data:u}]});else if(G(l)){process.env.NODE_ENV!=="production"&&a(c);var h=[];E(l,function(v){var g=n.get(v);g.data&&h.push({dataGroupId:g.dataGroupId,divide:mi(g.data),data:g.data})}),h.length&&r.set(c,{oldSeries:h,newSeries:[{dataGroupId:s,data:u,divide:mi(u)}]})}else{var d=i.get(l);if(d){var p=r.get(d.key);p||(p={oldSeries:[{dataGroupId:d.dataGroupId,data:d.data,divide:mi(d.data)}],newSeries:[]},r.set(d.key,p)),p.newSeries.push({dataGroupId:s,data:u,divide:mi(u)})}}}}),r}function v_(t,e){for(var r=0;r<t.length;r++){var n=e.seriesIndex!=null&&e.seriesIndex===t[r].seriesIndex||e.seriesId!=null&&e.seriesId===t[r].id;if(n)return r}}function Due(t,e,r,n){var i=[],a=[];E(ze(t.from),function(o){var s=v_(e.oldSeries,o);s>=0&&i.push({dataGroupId:e.oldDataGroupIds[s],data:e.oldData[s],divide:mi(e.oldData[s]),groupIdDim:o.dimension})}),E(ze(t.to),function(o){var s=v_(r.updatedSeries,o);if(s>=0){var u=r.updatedSeries[s].getData();a.push({dataGroupId:e.oldDataGroupIds[s],data:u,divide:mi(u),groupIdDim:o.dimension})}}),i.length>0&&a.length>0&&iE(i,a,n)}function Eue(t){t.registerUpdateLifecycle("series:beforeupdate",function(e,r,n){E(ze(n.seriesTransition),function(i){E(ze(i.to),function(a){for(var o=n.updatedSeries,s=0;s<o.length;s++)(a.seriesIndex!=null&&a.seriesIndex===o[s].seriesIndex||a.seriesId!=null&&a.seriesId===o[s].id)&&(o[s][R0]=!0)})})}),t.registerUpdateLifecycle("series:transition",function(e,r,n){var i=xue(r);if(i.oldSeries&&n.updatedSeries&&n.optionChanged){var a=n.seriesTransition;if(a)E(ze(a),function(d){Due(d,i,n,r)});else{var o=Tue(i,n);E(o.keys(),function(d){var p=o.get(d);iE(p.oldSeries,p.newSeries,r)})}E(n.updatedSeries,function(d){d[R0]&&(d[R0]=!1)})}for(var s=e.getSeries(),u=i.oldSeries=[],l=i.oldDataGroupIds=[],c=i.oldData=[],f=0;f<s.length;f++){var h=s[f].getData();h.count()<nE&&(u.push(s[f]),l.push(s[f].get("dataGroupId")),c.push(h))}})}be([Uq]);be([Bq]);be([pZ,IZ,WZ,IY,XY,HX,bj,oK,RK,HK,eQ,iJ,LJ,UJ,cee,mee,Nee,Wee,ite,hte,Ate,lre]);be(Ire);be(hne);be(QA);be(kne);be(FT);be(One);be(Wne);be(qie);be(vae);be(t1);be(Nae);be(Fae);be(Jae);be(loe);be(moe);be(Aoe);be(zoe);be(sse);be(UD);be(WD);be(Rse);be(jD);be(KD);be(zse);be(Qse);be(tue);be(Eue);be(tq);const kue={name:"MsgChart",props:{clazz:{type:String,default:"lke-chat-chart"},chartContainerId:{type:String,default:"lke-chat-chart-id"},chartDataArr:{type:Array,default:()=>[]},height:{type:Number,default:400}},data(){return{width:600,chart:[]}},watch:{chartDataArr:{handler(){this.chartDataArr.length>0&&this.initChart()},deep:!0}},mounted(){this.$nextTick(()=>{const t=document.querySelector(`#chart-${this.chartContainerId}`);t&&(this.width=t.offsetWidth-50),window.addEventListener("resize",this.resizeDebounce),this.initChart()})},beforeDestroy(){window.removeEventListener("resize",this.resizeDebounce),this.chart.forEach(t=>t.dispose()),this.chart=[]},methods:{initChart(){this.chart.forEach(t=>t.dispose()),this.chart=[],this.$nextTick(()=>{this.chartDataArr.forEach((t,e)=>{const r=document.querySelector(`#chart-${this.chartContainerId} > #chart-${e}`);if(!r)return;const n=gU(r,"light",{renderer:"canvas"});this.chart.push(n);try{typeof t=="string"?n.setOption(JSON.parse(t)):n.setOption(t)}catch(i){console.log("图表数据json格式解析出错",i)}n.resize({width:this.width})})})},updateChart(t,e){if(this.chart[e])try{typeof t=="string"?this.chart[e].setOption(JSON.parse(t)):this.chart[e].setOption(t)}catch(r){console.log("图表数据json格式解析出错",r)}},resizeDebounce(){const t=document.querySelector(`#chart-${this.chartContainerId}`);t&&(this.width=t.offsetWidth-50,this.chart.forEach(e=>{e.resize({width:this.width})}))}}};var Mue=function(){var e=this,r=e._self._c;return r("div",{class:e.clazz,attrs:{id:`chart-${e.chartContainerId}`}},e._l(e.chartDataArr,function(n,i){return r("div",{key:`${e.chartContainerId}-chart-${i}`,style:{width:`${e.width}px`,height:`${e.height}px`},attrs:{id:`chart-${i}`}})}),0)},Lue=[],Iue=pr(kue,Mue,Lue,!1,null,"e50f6d7c",null,null);const Pue=Iue.exports,sp=An(Pue),aE=An(t2),oE=An(qb),up=An(Hb);const Rue={name:"MsgLoading",props:{loadingIcon:String,loadingMessage:Boolean,loadingText:String,transferStatus:Boolean},data(){return{defaultIcon:"https://bqq.gtimg.com/CDN/source/images/webim/markdown-loading.gif"}}};var Nue=function(){var e=this,r=e._self._c;return e.loadingMessage&&!e.transferStatus?r("div",{class:e.loadingIcon?"loading":"loadingWithoutIcon",style:{"--bgurl":e.loadingIcon?"url("+e.loadingIcon+")":"url("+e.defaultIcon+")"}},[e._v(e._s(e.loadingText?e.loadingText:"正在思考中"))]):e._e()},Oue=[],Bue=pr(Rue,Nue,Oue,!1,null,"5c1bbe0d",null,null);const sE=Bue.exports,Fue={name:"LkeMsg",components:{MsgContent:Xb,MsgLoading:sE},props:{loadingIcon:String,type:String,isReplaceLinks:Boolean,showProcedures:Boolean,isPrintAnimate:Boolean,transferStatus:Boolean,clazz:String,item:Object,styleObj:Object,clazzTable:String,clazzMd:String,anchorAttributes:Object,imgMinWidth:[Number,String],imgMaxWidth:[Number,String],linkify:Boolean,isMermaidRenderAfterOutput:Boolean},data(){return{currentIndex:0}},computed:{loadingText(){return this.item.text?this.item.text:this.showProcedures&&this.type==="token_stat"&&this.item.procedures&&this.item.procedures.length>0?this.item.procedures[this.item.procedures.length-1].title||"思考着":""},loadingMessage(){return this.item.loading_message||this.item.is_from_self||this.type==="token_stat"&&this.currentIndex===0||this.type==="show_search_engine"&&this.currentIndex===0}},methods:{postrender(t){this.currentIndex=t,this.$emit("postrender",t)},imageClick(t){this.$emit("imageClick",t)}}};var zue=function(){var e=this,r=e._self._c;return r("div",{class:e.clazz},[r("MsgLoading",{attrs:{loadingIcon:e.loadingIcon,loadingMessage:e.loadingMessage,loadingText:e.loadingText,transferStatus:e.transferStatus}}),e.loadingMessage?e._e():r("MsgContent",{attrs:{isReplaceLinks:e.isReplaceLinks,isPrintAnimate:e.isPrintAnimate,linkify:e.linkify,loadingMessage:e.loadingMessage,content:e.item.content,isFinal:e.item.is_final,isMdExpand:e.item.isMdExpand,clazzTable:e.clazzTable||(e.item.is_final?"table-style":"table"),clazzMd:e.clazzMd?e.clazzMd:"answer-md",styleObj:e.styleObj,anchorAttributes:e.anchorAttributes,imgMinWidth:e.imgMinWidth,imgMaxWidth:e.imgMaxWidth,isMermaidRenderAfterOutput:e.isMermaidRenderAfterOutput},on:{postrender:e.postrender,imageClick:e.imageClick}})],1)},Vue=[],$ue=pr(Fue,zue,Vue,!1,null,null,null,null);const Gue=$ue.exports,lp=An(Gue),cp=An(sE);const Hue={name:"StreamAudioPlayerCard",components:{VIcon:t2},props:{audioItem:{type:Object,required:!0},isGenerating:{type:Boolean,default:!1}},data(){return{player:null,showDragTip:!1,isDragging:!1,isHoveringProgress:!1}},computed:{cardClass(){return{generating:this.audioItem.status==="generating",completed:this.audioItem.status==="completed",playing:this.audioItem.status==="playing",paused:this.audioItem.status==="paused",hoverable:this.audioItem.status!=="generating"}},progressPercentage(){return this.audioItem.duration===0?0:this.audioItem.currentTime/this.audioItem.duration*100},showHandle(){return(this.isHoveringProgress||this.isDragging)&&this.audioItem.status!=="generating"}},mounted(){this.initPlayer()},beforeUnmount(){this.player&&this.player.destroy()},methods:{initPlayer(){this.player=new Ub,this.player.onPlay(()=>{this.audioItem.status="playing",this.$emit("play",this.audioItem)}),this.player.onPause(()=>{this.audioItem.status="paused",this.$emit("pause",this.audioItem)}),this.player.onEnd(()=>{this.isGenerating||(this.audioItem.status="completed",this.audioItem.currentTime=0,this.$emit("end",this.audioItem))}),this.player.onTimeUpdate((t,e)=>{this.audioItem.currentTime=t,this.isGenerating||(this.audioItem.duration=e),t>=e&&e>0&&!this.isGenerating&&(this.player.pause(),this.audioItem.status="completed",this.audioItem.currentTime=e)}),this.player.onError(t=>{console.error("音频播放错误:",t),this.$emit("error",t)}),this.audioItem.player=this.player},async addAudioChunk(t){if(!this.player){console.warn("播放器未初始化");return}try{let e;if(typeof t=="string"){const r=t.replace(/^data:.*?;base64,/,""),n=window.atob(r),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);e=i.buffer}else if(t instanceof ArrayBuffer)e=t;else if(t instanceof Blob)e=await t.arrayBuffer();else{console.error("不支持的音频数据格式");return}await this.player.addAudioChunk(e),this.$emit("chunk-added",{duration:this.audioItem.duration,queueLength:this.player.audioQueue.length})}catch(e){console.error("添加音频片段失败:",e),this.$emit("error",e)}},markGenerationComplete(){this.player&&(this.audioItem.duration=this.player.totalDuration),this.audioItem.status!=="playing"&&(this.audioItem.status="completed")},async handlePlayPause(){if(this.player)try{this.audioItem.status==="playing"?this.player.pause():(this.audioItem.currentTime>=this.audioItem.duration&&this.audioItem.duration>0&&(this.audioItem.currentTime=0,this.player.pausedAt=0),await this.player.play())}catch(t){console.error("播放控制错误:",t)}},handleDownload(){this.$emit("download",this.audioItem)},getPlayButtonTitle(){return this.isGenerating&&this.audioItem.duration===0?"等待音频生成":this.audioItem.status==="playing"?"暂停":"播放"},formatTime(t){if(!t||isNaN(t))return"00:00";const e=Math.floor(t/60),r=Math.floor(t%60);return`${e.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`},handleMouseEnter(){this.audioItem.status==="playing"&&(this.showDragTip=!0)},handleMouseLeave(){this.showDragTip=!1},handleProgressMouseEnter(){this.audioItem.status!=="generating"&&(this.isHoveringProgress=!0)},handleProgressMouseLeave(){this.isDragging||(this.isHoveringProgress=!1)},handleProgressMouseDown(t){this.audioItem.status!=="generating"&&this.seekToPosition(t)},handleDragStart(t){if(this.audioItem.status==="generating")return;this.isDragging=!0,t.preventDefault();const e=n=>{this.seekToPosition(n)},r=()=>{this.isDragging=!1,this.isHoveringProgress||(this.isHoveringProgress=!1),document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)},seekToPosition(t){if(!this.player||!this.$refs.progressTrack)return;const r=this.$refs.progressTrack.getBoundingClientRect(),n=t.clientX-r.left,a=Math.max(0,Math.min(1,n/r.width))*this.audioItem.duration,o=this.audioItem.status==="playing";o&&this.player.pause(),this.audioItem.currentTime=a,this.player.pausedAt=a,o&&this.player.play()}}};var Uue=function(){var e=this,r=e._self._c;return r("div",{staticClass:"stream-audio-player-card",class:e.cardClass,on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave}},[r("div",{staticClass:"audio-content"},[r("div",{staticClass:"audio-icon"},[r("v-icon",{attrs:{name:"file_icon_audio_light",size:30}})],1),r("div",{staticClass:"file-info"},[r("div",{staticClass:"file-name"},[e._v(e._s(e.audioItem.fileName))]),r("div",{staticClass:"file-status"},[r("span",{staticClass:"status-text",class:{generating:e.isGenerating,completed:e.audioItem.status==="completed",playing:e.audioItem.status==="playing",paused:e.audioItem.status==="paused"}},[e._v(" "+e._s(e.formatTime(e.audioItem.currentTime))+" / "+e._s(e.isGenerating?"生成中":e.formatTime(e.audioItem.duration))+" ")])])]),r("div",{staticClass:"audio-controls"},[r("button",{staticClass:"control-btn download-btn",attrs:{disabled:e.audioItem.status==="generating",title:e.audioItem.status==="generating"?"生成中,暂不可下载":"下载"},on:{click:e.handleDownload}},[r("v-icon",{attrs:{name:"basic_download2_line",size:18}})],1),r("button",{staticClass:"control-btn play-btn",attrs:{disabled:e.isGenerating&&e.audioItem.duration===0,title:e.getPlayButtonTitle()},on:{click:e.handlePlayPause}},[e.audioItem.status==="playing"?r("v-icon",{attrs:{name:"basic_pause_line",size:18}}):r("v-icon",{attrs:{name:"basic_play_line",size:18}})],1)])]),r("div",{staticClass:"progress-container"},[r("div",{ref:"progressTrack",staticClass:"progress-track",on:{mousedown:e.handleProgressMouseDown,mouseenter:e.handleProgressMouseEnter,mouseleave:e.handleProgressMouseLeave}},[r("div",{staticClass:"progress-played",class:{"no-transition":e.isDragging},style:{width:e.progressPercentage+"%"}}),e.showHandle?r("div",{staticClass:"progress-handle",class:{"no-transition":e.isDragging},style:{left:e.progressPercentage+"%"},on:{mousedown:function(n){return n.stopPropagation(),e.handleDragStart.apply(null,arguments)}}}):e._e()])])])},Wue=[],que=pr(Hue,Uue,Wue,!1,null,"439cf304",null,null);const Zue=que.exports,uE=An(Zue);const Yue={in_progress:"running",running:"running",pending:"pending",completed:"completed",stop:"stopped",stopped:"stopped"},Xue={name:"MsgTaskList",props:{tasks:{type:Array,default:()=>[]},defaultExpanded:{type:Boolean,default:!1}},data(){return{isExpanded:this.defaultExpanded}},computed:{normalizedTasks(){return this.tasks.map(t=>({name:t.name||t.content||"",status:Yue[t.status]||"pending",priority:t.priority||"medium"}))},completedCount(){return this.normalizedTasks.filter(t=>t.status==="completed").length},allCompleted(){return this.normalizedTasks.length>0&&this.normalizedTasks.every(t=>t.status==="completed")},hasStopped(){return this.normalizedTasks.some(t=>t.status==="stopped")},allDone(){return this.normalizedTasks.length>0&&this.normalizedTasks.every(t=>t.status==="completed"||t.status==="stopped")},stoppedSummary(){const t=this.normalizedTasks.filter(e=>e.status==="stopped");return t.length>0?t[t.length-1].name:""},currentTaskName(){const t=this.normalizedTasks.find(r=>r.status==="running");if(t)return t.name;const e=this.normalizedTasks.find(r=>r.status==="pending");return e?e.name:""}},methods:{toggleExpand(){this.isExpanded=!this.isExpanded}}};var jue=function(){var e=this,r=e._self._c;return e.normalizedTasks.length?r("div",{staticClass:"msg-task-list"},[r("div",{staticClass:"task-card"},[r("div",{staticClass:"task-header",on:{click:e.toggleExpand}},[r("div",{staticClass:"task-header-left"},[e.allCompleted?r("svg",{staticClass:"header-icon icon-finish",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#34D399"}}),r("path",{attrs:{d:"M3.5 6L5.5 8L8.5 4.5",stroke:"#fff","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})]):e.hasStopped?r("svg",{staticClass:"header-icon icon-stopped",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#F59E0B"}}),r("rect",{attrs:{x:"3.5",y:"3.5",width:"5",height:"5",rx:"0.5",fill:"#fff"}})]):r("svg",{staticClass:"header-icon icon-spinner",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#E5E7EB","stroke-width":"1.5"}}),r("path",{attrs:{d:"M6 1C8.76 1 11 3.24 11 6",stroke:"#3B82F6","stroke-width":"1.5","stroke-linecap":"round"}})]),r("span",{staticClass:"task-progress-text"},[e.allCompleted?[e._v("已完成所有任务")]:e.hasStopped?[e._v("已停止 "+e._s(e.completedCount)+"/"+e._s(e.normalizedTasks.length)+":"+e._s(e.stoppedSummary))]:[e._v("任务进度 "+e._s(e.completedCount)+"/"+e._s(e.normalizedTasks.length)+":"+e._s(e.currentTaskName))]],2)]),r("svg",{staticClass:"header-arrow",class:{expanded:e.isExpanded},attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M3 4.5L6 7.5L9 4.5",stroke:"rgba(3,10,38,0.4)","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:e.isExpanded,expression:"isExpanded"}],staticClass:"task-list-wrapper"},[r("div",{staticClass:"task-list-divider"}),r("div",{staticClass:"task-list"},e._l(e.normalizedTasks,function(n,i){return r("div",{key:i,staticClass:"task-item",class:{"task-completed":n.status==="completed","task-stopped":n.status==="stopped"}},[n.status==="completed"?r("svg",{staticClass:"task-icon icon-finish",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#34D399"}}),r("path",{attrs:{d:"M3.5 6L5.5 8L8.5 4.5",stroke:"#fff","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})]):n.status==="stopped"?r("svg",{staticClass:"task-icon icon-stopped",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#F59E0B"}}),r("rect",{attrs:{x:"3.5",y:"3.5",width:"5",height:"5",rx:"0.5",fill:"#fff"}})]):n.status==="running"?r("svg",{staticClass:"task-icon icon-spinner",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#E5E7EB","stroke-width":"1.5"}}),r("path",{attrs:{d:"M6 1C8.76 1 11 3.24 11 6",stroke:"#3B82F6","stroke-width":"1.5","stroke-linecap":"round"}})]):r("svg",{staticClass:"task-icon icon-pending",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#D1D5DB","stroke-width":"1.2"}})]),r("span",{staticClass:"task-name"},[e._v(e._s(n.name))])])}),0)])])]):e._e()},Kue=[],Que=pr(Xue,jue,Kue,!1,null,"4ffba358",null,null);const Jue=Que.exports,fp=An(Jue),lE=(t={})=>(t=Object.assign({},{watches:["source","show","toc"],source:"",show:!0,highlight:!0,html:!0,xhtmlOut:!0,breaks:!0,linkify:!1,emoji:!0,typographer:!0,langPrefix:"language-",quotes:"“”‘’",tableClass:"table",taskLists:!0,toc:!1,tocId:"",tocClass:"table-of-contents",tocFirstLevel:2,tocLastLevel:0,tocAnchorLink:!0,tocAnchorClass:"toc-anchor",tocAnchorLinkSymbol:"#",tocAnchorLinkSpace:!0,tocAnchorLinkClass:"toc-anchor-link",anchorAttributes:()=>({}),prerender:r=>r,postrender:r=>r},t),new Promise((r,n)=>{t.source?_b({},()=>{const i=document.createElement("div"),{replacedString:a,videoTags:o}=rb(t.source),{modifiedMdString:s,codeBlocks:u}=eb(a),l=Q_(s),{transformed:c,extracted:f}=xb(l);i.innerHTML=c;const h=()=>{const d=wb(J_(nb(tb(i.innerHTML,u),o)),f),p=K_({html:t.html,xhtmlOut:t.xhtmlOut,breaks:t.breaks,linkify:t.linkify,emoji:t.emoji,typographer:t.typographer,langPrefix:t.langPrefix,quotes:t.quotes,taskLists:t.taskLists,tableClass:t.tableClass,anchorAttributes:typeof t.anchorAttributes=="function"?t.anchorAttributes():t.anchorAttributes,toc:t.toc,tocClass:t.tocClass,tocFirstLevel:t.tocFirstLevel,tocLastLevel:t.tocLastLevel>t.tocFirstLevel?t.tocLastLevel:t.tocFirstLevel+1,tocAnchorLink:t.tocAnchorLink,tocAnchorLinkSymbol:t.tocAnchorLinkSymbol,tocAnchorLinkSpace:t.tocAnchorLinkSpace,tocAnchorClass:t.tocAnchorClass,tocAnchorLinkClass:t.tocAnchorLinkClass,tocId:t.tocId,onTocRendered:g=>{t.$emit&&t.$emit("toc-rendered",g)}});let v=t.show?p.render((t.prerender?t.prerender(d):d).replace(/(^|[^~\\])~([^~]|$)/g,"$1\\~$2")):"";v=t.postrender?t.postrender(v):v,r(v)};bb(i).then(h).catch(h)}):r("")})),ele=[Z4,Y4,sp,aE,oE,up,lp,cp,uE,fp,r2],cE=t=>{ele.forEach(e=>{e.install&&e.install(t)})};typeof window<"u"&&window.Vue&&cE(window.Vue);const tle={install:cE,markdownToHtml:lE,WidgetHelper:n2,MsgChart:sp,MsgContent:Z4,MsgLoading:cp,LkeMsg:lp,MsgThought:Y4,MsgWidget:up,MsgTaskList:fp,ClassifyTag:r2};exports.ClassifyTag=r2;exports.Icon=aE;exports.LkeMsg=lp;exports.MsgChart=sp;exports.MsgContent=Z4;exports.MsgLoading=cp;exports.MsgTaskList=fp;exports.MsgThought=Y4;exports.MsgWidget=up;exports.StreamAudioPlayer=oE;exports.StreamAudioPlayerCard=uE;exports.WidgetHelper=n2;exports.createWidgetHelper=FO;exports.default=tle;exports.getJsonSchema=$O;exports.getPreview=VO;exports.getTemplate=zO;exports.markdownToHtml=lE;
|
|
122
|
+
`)),Re(n)),a.push({dimIdx:m.index,parser:y,comparator:new TS(h,p)})});var o=e.sourceFormat;o!==Vt&&o!==Fr&&(process.env.NODE_ENV!=="production"&&(n='sourceFormat "'+o+'" is not supported yet'),Re(n));for(var s=[],u=0,l=e.count();u<l;u++)s.push(e.getRawDataItem(u));return s.sort(function(c,f){for(var h=0;h<a.length;h++){var d=a[h],p=e.retrieveValueFromItem(c,d.dimIdx),v=e.retrieveValueFromItem(f,d.dimIdx);d.parser&&(p=d.parser(p),v=d.parser(v));var g=d.comparator.evaluate(p,v);if(g!==0)return g}return 0}),{data:s}}};function Qse(t){t.registerTransform(jse),t.registerTransform(Kse)}var Jse=function(t){F(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.type="dataset",r}return e.prototype.init=function(r,n,i){t.prototype.init.call(this,r,n,i),this._sourceManager=new MS(this),K3(this)},e.prototype.mergeOption=function(r,n){t.prototype.mergeOption.call(this,r,n),K3(this)},e.prototype.optionUpdated=function(){this._sourceManager.dirty()},e.prototype.getSourceManager=function(){return this._sourceManager},e.type="dataset",e.defaultOption={seriesLayoutBy:_n},e}(Ce),eue=function(t){F(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.type="dataset",r}return e.type="dataset",e}(et);function tue(t){t.registerComponentModel(Jse),t.registerComponentView(eue)}var on=Cn.CMD;function is(t,e){return Math.abs(t-e)<1e-5}function E4(t){var e=t.data,r=t.len(),n=[],i,a=0,o=0,s=0,u=0;function l(M,I){i&&i.length>2&&n.push(i),i=[M,I]}function c(M,I,N,L){is(M,N)&&is(I,L)||i.push(M,I,N,L,N,L)}function f(M,I,N,L,O,P){var R=Math.abs(I-M),B=Math.tan(R/4)*4/3,z=I<M?-1:1,V=Math.cos(M),U=Math.sin(M),q=Math.cos(I),K=Math.sin(I),xe=V*O+N,Ve=U*P+L,ue=q*O+N,ee=K*P+L,he=O*B*z,Q=P*B*z;i.push(xe-he*U,Ve+Q*V,ue+he*K,ee-Q*q,ue,ee)}for(var h,d,p,v,g=0;g<r;){var m=e[g++],y=g===1;switch(y&&(a=e[g],o=e[g+1],s=a,u=o,(m===on.L||m===on.C||m===on.Q)&&(i=[s,u])),m){case on.M:a=s=e[g++],o=u=e[g++],l(s,u);break;case on.L:h=e[g++],d=e[g++],c(a,o,h,d),a=h,o=d;break;case on.C:i.push(e[g++],e[g++],e[g++],e[g++],a=e[g++],o=e[g++]);break;case on.Q:h=e[g++],d=e[g++],p=e[g++],v=e[g++],i.push(a+2/3*(h-a),o+2/3*(d-o),p+2/3*(h-p),v+2/3*(d-v),p,v),a=p,o=v;break;case on.A:var _=e[g++],b=e[g++],x=e[g++],w=e[g++],S=e[g++],C=e[g++]+S;g+=1;var A=!e[g++];h=Math.cos(S)*x+_,d=Math.sin(S)*w+b,y?(s=h,u=d,l(s,u)):c(a,o,h,d),a=Math.cos(C)*x+_,o=Math.sin(C)*w+b;for(var T=(A?-1:1)*Math.PI/2,D=S;A?D>C:D<C;D+=T){var k=A?Math.max(D+T,C):Math.min(D+T,C);f(D,k,_,b,x,w)}break;case on.R:s=a=e[g++],u=o=e[g++],h=s+e[g++],d=u+e[g++],l(h,u),c(h,u,h,d),c(h,d,s,d),c(s,d,s,u),c(s,u,h,u);break;case on.Z:i&&c(a,o,s,u),a=s,o=u;break}}return i&&i.length>2&&n.push(i),n}function k4(t,e,r,n,i,a,o,s,u,l){if(is(t,r)&&is(e,n)&&is(i,o)&&is(a,s)){u.push(o,s);return}var c=2/l,f=c*c,h=o-t,d=s-e,p=Math.sqrt(h*h+d*d);h/=p,d/=p;var v=r-t,g=n-e,m=i-o,y=a-s,_=v*v+g*g,b=m*m+y*y;if(_<f&&b<f){u.push(o,s);return}var x=h*v+d*g,w=-h*m-d*y,S=_-x*x,C=b-w*w;if(S<f&&x>=0&&C<f&&w>=0){u.push(o,s);return}var A=[],T=[];Fi(t,r,i,o,.5,A),Fi(e,n,a,s,.5,T),k4(A[0],T[0],A[1],T[1],A[2],T[2],A[3],T[3],u,l),k4(A[4],T[4],A[5],T[5],A[6],T[6],A[7],T[7],u,l)}function rue(t,e){var r=E4(t),n=[];e=e||1;for(var i=0;i<r.length;i++){var a=r[i],o=[],s=a[0],u=a[1];o.push(s,u);for(var l=2;l<a.length;){var c=a[l++],f=a[l++],h=a[l++],d=a[l++],p=a[l++],v=a[l++];k4(s,u,c,f,h,d,p,v,o,e),s=p,u=v}n.push(o)}return n}function JD(t,e,r){var n=t[e],i=t[1-e],a=Math.abs(n/i),o=Math.ceil(Math.sqrt(a*r)),s=Math.floor(r/o);s===0&&(s=1,o=r);for(var u=[],l=0;l<o;l++)u.push(s);var c=o*s,f=r-c;if(f>0)for(var l=0;l<f;l++)u[l%o]+=1;return u}function t_(t,e,r){for(var n=t.r0,i=t.r,a=t.startAngle,o=t.endAngle,s=Math.abs(o-a),u=s*i,l=i-n,c=u>Math.abs(l),f=JD([u,l],c?0:1,e),h=(c?s:l)/f.length,d=0;d<f.length;d++)for(var p=(c?l:s)/f[d],v=0;v<f[d];v++){var g={};c?(g.startAngle=a+h*d,g.endAngle=a+h*(d+1),g.r0=n+p*v,g.r=n+p*(v+1)):(g.startAngle=a+p*v,g.endAngle=a+p*(v+1),g.r0=n+h*d,g.r=n+h*(d+1)),g.clockwise=t.clockwise,g.cx=t.cx,g.cy=t.cy,r.push(g)}}function nue(t,e,r){for(var n=t.width,i=t.height,a=n>i,o=JD([n,i],a?0:1,e),s=a?"width":"height",u=a?"height":"width",l=a?"x":"y",c=a?"y":"x",f=t[s]/o.length,h=0;h<o.length;h++)for(var d=t[u]/o[h],p=0;p<o[h];p++){var v={};v[l]=h*f,v[c]=p*d,v[s]=f,v[u]=d,v.x+=t.x,v.y+=t.y,r.push(v)}}function r_(t,e,r,n){return t*n-r*e}function iue(t,e,r,n,i,a,o,s){var u=r-t,l=n-e,c=o-i,f=s-a,h=r_(c,f,u,l);if(Math.abs(h)<1e-6)return null;var d=t-i,p=e-a,v=r_(d,p,c,f)/h;return v<0||v>1?null:new me(v*u+t,v*l+e)}function aue(t,e,r){var n=new me;me.sub(n,r,e),n.normalize();var i=new me;me.sub(i,t,e);var a=i.dot(n);return a}function qo(t,e){var r=t[t.length-1];r&&r[0]===e[0]&&r[1]===e[1]||t.push(e)}function oue(t,e,r){for(var n=t.length,i=[],a=0;a<n;a++){var o=t[a],s=t[(a+1)%n],u=iue(o[0],o[1],s[0],s[1],e.x,e.y,r.x,r.y);u&&i.push({projPt:aue(u,e,r),pt:u,idx:a})}if(i.length<2)return[{points:t},{points:t}];i.sort(function(g,m){return g.projPt-m.projPt});var l=i[0],c=i[i.length-1];if(c.idx<l.idx){var f=l;l=c,c=f}for(var h=[l.pt.x,l.pt.y],d=[c.pt.x,c.pt.y],p=[h],v=[d],a=l.idx+1;a<=c.idx;a++)qo(p,t[a].slice());qo(p,d),qo(p,h);for(var a=c.idx+1;a<=l.idx+n;a++)qo(v,t[a%n].slice());return qo(v,h),qo(v,d),[{points:p},{points:v}]}function n_(t){var e=t.points,r=[],n=[];v2(e,r,n);var i=new ye(r[0],r[1],n[0]-r[0],n[1]-r[1]),a=i.width,o=i.height,s=i.x,u=i.y,l=new me,c=new me;return a>o?(l.x=c.x=s+a/2,l.y=u,c.y=u+o):(l.y=c.y=u+o/2,l.x=s,c.x=s+a),oue(e,l,c)}function Uc(t,e,r,n){if(r===1)n.push(e);else{var i=Math.floor(r/2),a=t(e);Uc(t,a[0],i,n),Uc(t,a[1],r-i,n)}return n}function sue(t,e){for(var r=[],n=0;n<e;n++)r.push(_5(t));return r}function uue(t,e){e.setStyle(t.style),e.z=t.z,e.z2=t.z2,e.zlevel=t.zlevel}function lue(t){for(var e=[],r=0;r<t.length;)e.push([t[r++],t[r++]]);return e}function cue(t,e){var r=[],n=t.shape,i;switch(t.type){case"rect":nue(n,e,r),i=Ee;break;case"sector":t_(n,e,r),i=rr;break;case"circle":t_({r0:0,r:n.r,startAngle:0,endAngle:Math.PI*2,cx:n.cx,cy:n.cy},e,r),i=rr;break;default:var a=t.getComputedTransform(),o=a?Math.sqrt(Math.max(a[0]*a[0]+a[1]*a[1],a[2]*a[2]+a[3]*a[3])):1,s=H(rue(t.getUpdatedPathProxy(),o),function(m){return lue(m)}),u=s.length;if(u===0)Uc(n_,{points:s[0]},e,r);else if(u===e)for(var l=0;l<u;l++)r.push({points:s[l]});else{var c=0,f=H(s,function(m){var y=[],_=[];v2(m,y,_);var b=(_[1]-y[1])*(_[0]-y[0]);return c+=b,{poly:m,area:b}});f.sort(function(m,y){return y.area-m.area});for(var h=e,l=0;l<u;l++){var d=f[l];if(h<=0)break;var p=l===u-1?h:Math.ceil(d.area/c*e);p<0||(Uc(n_,{points:d.poly},p,r),h-=p)}}i=nr;break}if(!i)return sue(t,e);for(var v=[],l=0;l<r.length;l++){var g=new i;g.setShape(r[l]),uue(t,g),v.push(g)}return v}function fue(t,e){var r=t.length,n=e.length;if(r===n)return[t,e];for(var i=[],a=[],o=r<n?t:e,s=Math.min(r,n),u=Math.abs(n-r)/6,l=(s-2)/6,c=Math.ceil(u/l)+1,f=[o[0],o[1]],h=u,d=2;d<s;){var p=o[d-2],v=o[d-1],g=o[d++],m=o[d++],y=o[d++],_=o[d++],b=o[d++],x=o[d++];if(h<=0){f.push(g,m,y,_,b,x);continue}for(var w=Math.min(h,c-1)+1,S=1;S<=w;S++){var C=S/w;Fi(p,g,y,b,C,i),Fi(v,m,_,x,C,a),p=i[3],v=a[3],f.push(i[1],a[1],i[2],a[2],p,v),g=i[5],m=a[5],y=i[6],_=a[6]}h-=w-1}return o===t?[f,e]:[t,f]}function i_(t,e){for(var r=t.length,n=t[r-2],i=t[r-1],a=[],o=0;o<e.length;)a[o++]=n,a[o++]=i;return a}function hue(t,e){for(var r,n,i,a=[],o=[],s=0;s<Math.max(t.length,e.length);s++){var u=t[s],l=e[s],c=void 0,f=void 0;u?l?(r=fue(u,l),c=r[0],f=r[1],n=c,i=f):(f=i_(i||u,u),c=u):(c=i_(n||l,l),f=l),a.push(c),o.push(f)}return[a,o]}function a_(t){for(var e=0,r=0,n=0,i=t.length,a=0,o=i-2;a<i;o=a,a+=2){var s=t[o],u=t[o+1],l=t[a],c=t[a+1],f=s*c-l*u;e+=f,r+=(s+l)*f,n+=(u+c)*f}return e===0?[t[0]||0,t[1]||0]:[r/e/3,n/e/3,e]}function due(t,e,r,n){for(var i=(t.length-2)/6,a=1/0,o=0,s=t.length,u=s-2,l=0;l<i;l++){for(var c=l*6,f=0,h=0;h<s;h+=2){var d=h===0?c:(c+h-2)%u+2,p=t[d]-r[0],v=t[d+1]-r[1],g=e[h]-n[0],m=e[h+1]-n[1],y=g-p,_=m-v;f+=y*y+_*_}f<a&&(a=f,o=l)}return o}function pue(t){for(var e=[],r=t.length,n=0;n<r;n+=2)e[n]=t[r-n-2],e[n+1]=t[r-n-1];return e}function vue(t,e,r,n){for(var i=[],a,o=0;o<t.length;o++){var s=t[o],u=e[o],l=a_(s),c=a_(u);a==null&&(a=l[2]<0!=c[2]<0);var f=[],h=[],d=0,p=1/0,v=[],g=s.length;a&&(s=pue(s));for(var m=due(s,u,l,c)*6,y=g-2,_=0;_<y;_+=2){var b=(m+_)%y+2;f[_+2]=s[b]-l[0],f[_+3]=s[b+1]-l[1]}if(f[0]=s[m]-l[0],f[1]=s[m+1]-l[1],r>0)for(var x=n/r,w=-n/2;w<=n/2;w+=x){for(var S=Math.sin(w),C=Math.cos(w),A=0,_=0;_<s.length;_+=2){var T=f[_],D=f[_+1],k=u[_]-c[0],M=u[_+1]-c[1],I=k*C-M*S,N=k*S+M*C;v[_]=I,v[_+1]=N;var L=I-T,O=N-D;A+=L*L+O*O}if(A<p){p=A,d=w;for(var P=0;P<v.length;P++)h[P]=v[P]}}else for(var R=0;R<g;R+=2)h[R]=u[R]-c[0],h[R+1]=u[R+1]-c[1];i.push({from:f,to:h,fromCp:l,toCp:c,rotation:-d})}return i}function Wc(t){return t.__isCombineMorphing}var eE="__mOriginal_";function qc(t,e,r){var n=eE+e,i=t[n]||t[e];t[n]||(t[n]=t[e]);var a=r.replace,o=r.after,s=r.before;t[e]=function(){var u=arguments,l;return s&&s.apply(this,u),a?l=a.apply(this,u):l=i.apply(this,u),o&&o.apply(this,u),l}}function tl(t,e){var r=eE+e;t[r]&&(t[e]=t[r],t[r]=null)}function o_(t,e){for(var r=0;r<t.length;r++)for(var n=t[r],i=0;i<n.length;){var a=n[i],o=n[i+1];n[i++]=e[0]*a+e[2]*o+e[4],n[i++]=e[1]*a+e[3]*o+e[5]}}function tE(t,e){var r=t.getUpdatedPathProxy(),n=e.getUpdatedPathProxy(),i=hue(E4(r),E4(n)),a=i[0],o=i[1],s=t.getComputedTransform(),u=e.getComputedTransform();function l(){this.transform=null}s&&o_(a,s),u&&o_(o,u),qc(e,"updateTransform",{replace:l}),e.transform=null;var c=vue(a,o,10,Math.PI),f=[];qc(e,"buildPath",{replace:function(h){for(var d=e.__morphT,p=1-d,v=[],g=0;g<c.length;g++){var m=c[g],y=m.from,_=m.to,b=m.rotation*d,x=m.fromCp,w=m.toCp,S=Math.sin(b),C=Math.cos(b);S0(v,x,w,d);for(var A=0;A<y.length;A+=2){var T=y[A],D=y[A+1],k=_[A],M=_[A+1],I=T*p+k*d,N=D*p+M*d;f[A]=I*C-N*S+v[0],f[A+1]=I*S+N*C+v[1]}var L=f[0],O=f[1];h.moveTo(L,O);for(var A=2;A<y.length;){var k=f[A++],M=f[A++],P=f[A++],R=f[A++],B=f[A++],z=f[A++];L===k&&O===M&&P===B&&R===z?h.lineTo(B,z):h.bezierCurveTo(k,M,P,R,B,z),L=B,O=z}}}})}function op(t,e,r){if(!t||!e)return e;var n=r.done,i=r.during;tE(t,e),e.__morphT=0;function a(){tl(e,"buildPath"),tl(e,"updateTransform"),e.__morphT=-1,e.createPathProxy(),e.dirtyShape()}return e.animateTo({__morphT:1},ae({during:function(o){e.dirtyShape(),i&&i(o)},done:function(){a(),n&&n()}},r)),e}function gue(t,e,r,n,i,a){var o=16;t=i===r?0:Math.round(32767*(t-r)/(i-r)),e=a===n?0:Math.round(32767*(e-n)/(a-n));for(var s=0,u,l=(1<<o)/2;l>0;l/=2){var c=0,f=0;(t&l)>0&&(c=1),(e&l)>0&&(f=1),s+=l*l*(3*c^f),f===0&&(c===1&&(t=l-1-t,e=l-1-e),u=t,t=e,e=u)}return s}function Zc(t){var e=1/0,r=1/0,n=-1/0,i=-1/0,a=H(t,function(s){var u=s.getBoundingRect(),l=s.getComputedTransform(),c=u.x+u.width/2+(l?l[4]:0),f=u.y+u.height/2+(l?l[5]:0);return e=Math.min(c,e),r=Math.min(f,r),n=Math.max(c,n),i=Math.max(f,i),[c,f]}),o=H(a,function(s,u){return{cp:s,z:gue(s[0],s[1],e,r,n,i),path:t[u]}});return o.sort(function(s,u){return s.z-u.z}).map(function(s){return s.path})}function rE(t){return cue(t.path,t.count)}function M4(){return{fromIndividuals:[],toIndividuals:[],count:0}}function mue(t,e,r){var n=[];function i(x){for(var w=0;w<x.length;w++){var S=x[w];Wc(S)?i(S.childrenRef()):S instanceof we&&n.push(S)}}i(t);var a=n.length;if(!a)return M4();var o=r.dividePath||rE,s=o({path:e,count:a});if(s.length!==a)return console.error("Invalid morphing: unmatched splitted path"),M4();n=Zc(n),s=Zc(s);for(var u=r.done,l=r.during,c=r.individualDelay,f=new On,h=0;h<a;h++){var d=n[h],p=s[h];p.parent=e,p.copyTransform(f),c||tE(d,p)}e.__isCombineMorphing=!0,e.childrenRef=function(){return s};function v(x){for(var w=0;w<s.length;w++)s[w].addSelfToZr(x)}qc(e,"addSelfToZr",{after:function(x){v(x)}}),qc(e,"removeSelfFromZr",{after:function(x){for(var w=0;w<s.length;w++)s[w].removeSelfFromZr(x)}});function g(){e.__isCombineMorphing=!1,e.__morphT=-1,e.childrenRef=null,tl(e,"addSelfToZr"),tl(e,"removeSelfFromZr")}var m=s.length;if(c)for(var y=m,_=function(){y--,y===0&&(g(),u&&u())},h=0;h<m;h++){var b=c?ae({delay:(r.delay||0)+c(h,m,n[h],s[h]),done:_},r):r;op(n[h],s[h],b)}else e.__morphT=0,e.animateTo({__morphT:1},ae({during:function(x){for(var w=0;w<m;w++){var S=s[w];S.__morphT=e.__morphT,S.dirtyShape()}l&&l(x)},done:function(){g();for(var x=0;x<t.length;x++)tl(t[x],"updateTransform");u&&u()}},r));return e.__zr&&v(e.__zr),{fromIndividuals:n,toIndividuals:s,count:m}}function yue(t,e,r){var n=e.length,i=[],a=r.dividePath||rE;function o(d){for(var p=0;p<d.length;p++){var v=d[p];Wc(v)?o(v.childrenRef()):v instanceof we&&i.push(v)}}if(Wc(t)){o(t.childrenRef());var s=i.length;if(s<n)for(var u=0,l=s;l<n;l++)i.push(_5(i[u++%s]));i.length=n}else{i=a({path:t,count:n});for(var c=t.getComputedTransform(),l=0;l<i.length;l++)i[l].setLocalTransform(c);if(i.length!==n)return console.error("Invalid morphing: unmatched splitted path"),M4()}i=Zc(i),e=Zc(e);for(var f=r.individualDelay,l=0;l<n;l++){var h=f?ae({delay:(r.delay||0)+f(l,n,i[l],e[l])},r):r;op(i[l],e[l],h)}return{fromIndividuals:i,toIndividuals:e,count:e.length}}function s_(t){return G(t[0])}function u_(t,e){for(var r=[],n=t.length,i=0;i<n;i++)r.push({one:t[i],many:[]});for(var i=0;i<e.length;i++){var a=e[i].length,o=void 0;for(o=0;o<a;o++)r[o%n].many.push(e[i][o])}for(var s=0,i=n-1;i>=0;i--)if(!r[i].many.length){var u=r[s].many;if(u.length<=1)if(s)s=0;else return r;var a=u.length,l=Math.ceil(a/2);r[i].many=u.slice(l,a),r[s].many=u.slice(0,l),s++}return r}var _ue={clone:function(t){for(var e=[],r=1-Math.pow(1-t.path.style.opacity,1/t.count),n=0;n<t.count;n++){var i=_5(t.path);i.setStyle("opacity",r),e.push(i)}return e},split:null};function Mh(t,e,r,n,i,a){if(!t.length||!e.length)return;var o=Is("update",n,i);if(!(o&&o.duration>0))return;var s=n.getModel("universalTransition").get("delay"),u=Object.assign({setToFinal:!0},o),l,c;s_(t)&&(l=t,c=e),s_(e)&&(l=e,c=t);function f(m,y,_,b,x){var w=m.many,S=m.one;if(w.length===1&&!x){var C=y?w[0]:S,A=y?S:w[0];if(Wc(C))f({many:[C],one:A},!0,_,b,!0);else{var T=s?ae({delay:s(_,b)},u):u;op(C,A,T),a(C,A,C,A,T)}}else for(var D=ae({dividePath:_ue[r],individualDelay:s&&function(O,P,R,B){return s(O+_,b)}},u),k=y?mue(w,S,D):yue(S,w,D),M=k.fromIndividuals,I=k.toIndividuals,N=M.length,L=0;L<N;L++){var T=s?ae({delay:s(L,N)},u):u;a(M[L],I[L],y?w[L]:m.one,y?m.one:w[L],T)}}for(var h=l?l===t:t.length>e.length,d=l?u_(c,l):u_(h?e:t,[h?t:e]),p=0,v=0;v<d.length;v++)p+=d[v].many.length;for(var g=0,v=0;v<d.length;v++)f(d[v],h,g,p),g+=d[v].many.length}function Da(t){if(!t)return[];if(G(t)){for(var e=[],r=0;r<t.length;r++)e.push(Da(t[r]));return e}var n=[];return t.traverse(function(i){i instanceof we&&!i.disableMorphing&&!i.invisible&&!i.ignore&&n.push(i)}),n}var nE=1e4,bue=0,l_=1,c_=2,xue=Ae();function wue(t,e){for(var r=t.dimensions,n=0;n<r.length;n++){var i=t.getDimensionInfo(r[n]);if(i&&i.otherDims[e]===0)return r[n]}}function Sue(t,e,r){var n=t.getDimensionInfo(r),i=n&&n.ordinalMeta;if(n){var a=t.get(n.name,e);return i&&i.categories[a]||a+""}}function f_(t,e,r,n){var i=n?"itemChildGroupId":"itemGroupId",a=wue(t,i);if(a){var o=Sue(t,e,a);return o}var s=t.getRawDataItem(e),u=n?"childGroupId":"groupId";if(s&&s[u])return s[u]+"";if(!n)return r||t.getId(e)}function h_(t){var e=[];return E(t,function(r){var n=r.data,i=r.dataGroupId;if(n.count()>nE){process.env.NODE_ENV!=="production"&&Qe("Universal transition is disabled on large data > 10k.");return}for(var a=n.getIndices(),o=0;o<a.length;o++)e.push({data:n,groupId:f_(n,o,i,!1),childGroupId:f_(n,o,i,!0),divide:r.divide,dataIndex:o})}),e}function Lh(t,e,r){t.traverse(function(n){n instanceof we&&Ye(n,{style:{opacity:0}},e,{dataIndex:r,isFrom:!0})})}function Ih(t){if(t.parent){var e=t.getComputedTransform();t.setLocalTransform(e),t.parent.remove(t)}}function Zo(t){t.stopAnimation(),t.isGroup&&t.traverse(function(e){e.stopAnimation()})}function Cue(t,e,r){var n=Is("update",r,e);n&&t.traverse(function(i){if(i instanceof Rr){var a=t$(i);a&&i.animateFrom({style:a},n)}})}function Aue(t,e){var r=t.length;if(r!==e.length)return!1;for(var n=0;n<r;n++){var i=t[n],a=e[n];if(i.data.getId(i.dataIndex)!==a.data.getId(a.dataIndex))return!1}return!0}function iE(t,e,r){var n=h_(t),i=h_(e);function a(_,b,x,w,S){(x||_)&&b.animateFrom({style:x&&x!==_?$($({},x.style),_.style):_.style},S)}var o=!1,s=bue,u=J(),l=J();n.forEach(function(_){_.groupId&&u.set(_.groupId,!0),_.childGroupId&&l.set(_.childGroupId,!0)});for(var c=0;c<i.length;c++){var f=i[c].groupId;if(l.get(f)){s=l_;break}var h=i[c].childGroupId;if(h&&u.get(h)){s=c_;break}}function d(_,b){return function(x){var w=x.data,S=x.dataIndex;return b?w.getId(S):_?s===l_?x.childGroupId:x.groupId:s===c_?x.childGroupId:x.groupId}}var p=Aue(n,i),v={};if(!p)for(var c=0;c<i.length;c++){var g=i[c],m=g.data.getItemGraphicEl(g.dataIndex);m&&(v[m.id]=!0)}function y(_,b){var x=n[b],w=i[_],S=w.data.hostModel,C=x.data.getItemGraphicEl(x.dataIndex),A=w.data.getItemGraphicEl(w.dataIndex);if(C===A){A&&Cue(A,w.dataIndex,S);return}C&&v[C.id]||A&&(Zo(A),C?(Zo(C),Ih(C),o=!0,Mh(Da(C),Da(A),w.divide,S,_,a)):Lh(A,S,_))}new Xn(n,i,d(!0,p),d(!1,p),null,"multiple").update(y).updateManyToOne(function(_,b){var x=i[_],w=x.data,S=w.hostModel,C=w.getItemGraphicEl(x.dataIndex),A=Ne(H(b,function(T){return n[T].data.getItemGraphicEl(n[T].dataIndex)}),function(T){return T&&T!==C&&!v[T.id]});C&&(Zo(C),A.length?(E(A,function(T){Zo(T),Ih(T)}),o=!0,Mh(Da(A),Da(C),x.divide,S,_,a)):Lh(C,S,x.dataIndex))}).updateOneToMany(function(_,b){var x=n[b],w=x.data.getItemGraphicEl(x.dataIndex);if(!(w&&v[w.id])){var S=Ne(H(_,function(A){return i[A].data.getItemGraphicEl(i[A].dataIndex)}),function(A){return A&&A!==w}),C=i[_[0]].data.hostModel;S.length&&(E(S,function(A){return Zo(A)}),w?(Zo(w),Ih(w),o=!0,Mh(Da(w),Da(S),x.divide,C,_[0],a)):E(S,function(A){return Lh(A,C,_[0])}))}}).updateManyToMany(function(_,b){new Xn(b,_,function(x){return n[x].data.getId(n[x].dataIndex)},function(x){return i[x].data.getId(i[x].dataIndex)}).update(function(x,w){y(_[x],b[w])}).execute()}).execute(),o&&E(e,function(_){var b=_.data,x=b.hostModel,w=x&&r.getViewOfSeriesModel(x),S=Is("update",x,0);w&&x.isAnimationEnabled()&&S&&S.duration>0&&w.group.traverse(function(C){C instanceof we&&!C.animators.length&&C.animateFrom({style:{opacity:0}},S)})})}function d_(t){var e=t.getModel("universalTransition").get("seriesKey");return e||t.id}function p_(t){return G(t)?t.sort().join(","):t}function mi(t){if(t.hostModel)return t.hostModel.getModel("universalTransition").get("divideShape")}function Tue(t,e){var r=J(),n=J(),i=J();E(t.oldSeries,function(o,s){var u=t.oldDataGroupIds[s],l=t.oldData[s],c=d_(o),f=p_(c);n.set(f,{dataGroupId:u,data:l}),G(c)&&E(c,function(h){i.set(h,{key:f,dataGroupId:u,data:l})})});function a(o){r.get(o)&&Qe("Duplicated seriesKey in universalTransition "+o)}return E(e.updatedSeries,function(o){if(o.isUniversalTransitionEnabled()&&o.isAnimationEnabled()){var s=o.get("dataGroupId"),u=o.getData(),l=d_(o),c=p_(l),f=n.get(c);if(f)process.env.NODE_ENV!=="production"&&a(c),r.set(c,{oldSeries:[{dataGroupId:f.dataGroupId,divide:mi(f.data),data:f.data}],newSeries:[{dataGroupId:s,divide:mi(u),data:u}]});else if(G(l)){process.env.NODE_ENV!=="production"&&a(c);var h=[];E(l,function(v){var g=n.get(v);g.data&&h.push({dataGroupId:g.dataGroupId,divide:mi(g.data),data:g.data})}),h.length&&r.set(c,{oldSeries:h,newSeries:[{dataGroupId:s,data:u,divide:mi(u)}]})}else{var d=i.get(l);if(d){var p=r.get(d.key);p||(p={oldSeries:[{dataGroupId:d.dataGroupId,data:d.data,divide:mi(d.data)}],newSeries:[]},r.set(d.key,p)),p.newSeries.push({dataGroupId:s,data:u,divide:mi(u)})}}}}),r}function v_(t,e){for(var r=0;r<t.length;r++){var n=e.seriesIndex!=null&&e.seriesIndex===t[r].seriesIndex||e.seriesId!=null&&e.seriesId===t[r].id;if(n)return r}}function Due(t,e,r,n){var i=[],a=[];E(ze(t.from),function(o){var s=v_(e.oldSeries,o);s>=0&&i.push({dataGroupId:e.oldDataGroupIds[s],data:e.oldData[s],divide:mi(e.oldData[s]),groupIdDim:o.dimension})}),E(ze(t.to),function(o){var s=v_(r.updatedSeries,o);if(s>=0){var u=r.updatedSeries[s].getData();a.push({dataGroupId:e.oldDataGroupIds[s],data:u,divide:mi(u),groupIdDim:o.dimension})}}),i.length>0&&a.length>0&&iE(i,a,n)}function Eue(t){t.registerUpdateLifecycle("series:beforeupdate",function(e,r,n){E(ze(n.seriesTransition),function(i){E(ze(i.to),function(a){for(var o=n.updatedSeries,s=0;s<o.length;s++)(a.seriesIndex!=null&&a.seriesIndex===o[s].seriesIndex||a.seriesId!=null&&a.seriesId===o[s].id)&&(o[s][R0]=!0)})})}),t.registerUpdateLifecycle("series:transition",function(e,r,n){var i=xue(r);if(i.oldSeries&&n.updatedSeries&&n.optionChanged){var a=n.seriesTransition;if(a)E(ze(a),function(d){Due(d,i,n,r)});else{var o=Tue(i,n);E(o.keys(),function(d){var p=o.get(d);iE(p.oldSeries,p.newSeries,r)})}E(n.updatedSeries,function(d){d[R0]&&(d[R0]=!1)})}for(var s=e.getSeries(),u=i.oldSeries=[],l=i.oldDataGroupIds=[],c=i.oldData=[],f=0;f<s.length;f++){var h=s[f].getData();h.count()<nE&&(u.push(s[f]),l.push(s[f].get("dataGroupId")),c.push(h))}})}be([Uq]);be([Bq]);be([pZ,IZ,WZ,IY,XY,HX,bj,oK,RK,HK,eQ,iJ,LJ,UJ,cee,mee,Nee,Wee,ite,hte,Ate,lre]);be(Ire);be(hne);be(QA);be(kne);be(FT);be(One);be(Wne);be(qie);be(vae);be(t1);be(Nae);be(Fae);be(Jae);be(loe);be(moe);be(Aoe);be(zoe);be(sse);be(UD);be(WD);be(Rse);be(jD);be(KD);be(zse);be(Qse);be(tue);be(Eue);be(tq);const kue={name:"MsgChart",props:{clazz:{type:String,default:"lke-chat-chart"},chartContainerId:{type:String,default:"lke-chat-chart-id"},chartDataArr:{type:Array,default:()=>[]},height:{type:Number,default:400}},data(){return{width:600,chart:[]}},watch:{chartDataArr:{handler(){this.chartDataArr.length>0&&this.initChart()},deep:!0}},mounted(){this.$nextTick(()=>{const t=document.querySelector(`#chart-${this.chartContainerId}`);t&&(this.width=t.offsetWidth-50),window.addEventListener("resize",this.resizeDebounce),this.initChart()})},beforeDestroy(){window.removeEventListener("resize",this.resizeDebounce),this.chart.forEach(t=>t.dispose()),this.chart=[]},methods:{initChart(){this.chart.forEach(t=>t.dispose()),this.chart=[],this.$nextTick(()=>{this.chartDataArr.forEach((t,e)=>{const r=document.querySelector(`#chart-${this.chartContainerId} > #chart-${e}`);if(!r)return;const n=gU(r,"light",{renderer:"canvas"});this.chart.push(n);try{typeof t=="string"?n.setOption(JSON.parse(t)):n.setOption(t)}catch(i){console.log("图表数据json格式解析出错",i)}n.resize({width:this.width})})})},updateChart(t,e){if(this.chart[e])try{typeof t=="string"?this.chart[e].setOption(JSON.parse(t)):this.chart[e].setOption(t)}catch(r){console.log("图表数据json格式解析出错",r)}},resizeDebounce(){const t=document.querySelector(`#chart-${this.chartContainerId}`);t&&(this.width=t.offsetWidth-50,this.chart.forEach(e=>{e.resize({width:this.width})}))}}};var Mue=function(){var e=this,r=e._self._c;return r("div",{class:e.clazz,attrs:{id:`chart-${e.chartContainerId}`}},e._l(e.chartDataArr,function(n,i){return r("div",{key:`${e.chartContainerId}-chart-${i}`,style:{width:`${e.width}px`,height:`${e.height}px`},attrs:{id:`chart-${i}`}})}),0)},Lue=[],Iue=pr(kue,Mue,Lue,!1,null,"e50f6d7c",null,null);const Pue=Iue.exports,sp=An(Pue),aE=An(t2),oE=An(qb),up=An(Hb);const Rue={name:"MsgLoading",props:{loadingIcon:String,loadingMessage:Boolean,loadingText:String,transferStatus:Boolean},data(){return{defaultIcon:"https://bqq.gtimg.com/CDN/source/images/webim/markdown-loading.gif"}}};var Nue=function(){var e=this,r=e._self._c;return e.loadingMessage&&!e.transferStatus?r("div",{class:e.loadingIcon?"loading":"loadingWithoutIcon",style:{"--bgurl":e.loadingIcon?"url("+e.loadingIcon+")":"url("+e.defaultIcon+")"}},[e._v(e._s(e.loadingText?e.loadingText:"正在思考中"))]):e._e()},Oue=[],Bue=pr(Rue,Nue,Oue,!1,null,"5c1bbe0d",null,null);const sE=Bue.exports,Fue={name:"LkeMsg",components:{MsgContent:Xb,MsgLoading:sE},props:{loadingIcon:String,type:String,isReplaceLinks:Boolean,showProcedures:Boolean,isPrintAnimate:Boolean,transferStatus:Boolean,clazz:String,item:Object,styleObj:Object,clazzTable:String,clazzMd:String,anchorAttributes:Object,imgMinWidth:[Number,String],imgMaxWidth:[Number,String],linkify:Boolean,isMermaidRenderAfterOutput:Boolean},data(){return{currentIndex:0}},computed:{loadingText(){return this.item.text?this.item.text:this.showProcedures&&this.type==="token_stat"&&this.item.procedures&&this.item.procedures.length>0?this.item.procedures[this.item.procedures.length-1].title||"思考着":""},loadingMessage(){return this.item.loading_message||this.item.is_from_self||this.type==="token_stat"&&this.currentIndex===0||this.type==="show_search_engine"&&this.currentIndex===0}},methods:{postrender(t){this.currentIndex=t,this.$emit("postrender",t)},imageClick(t){this.$emit("imageClick",t)}}};var zue=function(){var e=this,r=e._self._c;return r("div",{class:e.clazz},[r("MsgLoading",{attrs:{loadingIcon:e.loadingIcon,loadingMessage:e.loadingMessage,loadingText:e.loadingText,transferStatus:e.transferStatus}}),e.loadingMessage?e._e():r("MsgContent",{attrs:{isReplaceLinks:e.isReplaceLinks,isPrintAnimate:e.isPrintAnimate,linkify:e.linkify,loadingMessage:e.loadingMessage,content:e.item.content,isFinal:e.item.is_final,isMdExpand:e.item.isMdExpand,clazzTable:e.clazzTable||(e.item.is_final?"table-style":"table"),clazzMd:e.clazzMd?e.clazzMd:"answer-md",styleObj:e.styleObj,anchorAttributes:e.anchorAttributes,imgMinWidth:e.imgMinWidth,imgMaxWidth:e.imgMaxWidth,isMermaidRenderAfterOutput:e.isMermaidRenderAfterOutput},on:{postrender:e.postrender,imageClick:e.imageClick}})],1)},Vue=[],$ue=pr(Fue,zue,Vue,!1,null,null,null,null);const Gue=$ue.exports,lp=An(Gue),cp=An(sE);const Hue={name:"StreamAudioPlayerCard",components:{VIcon:t2},props:{audioItem:{type:Object,required:!0},isGenerating:{type:Boolean,default:!1}},data(){return{player:null,showDragTip:!1,isDragging:!1,isHoveringProgress:!1}},computed:{cardClass(){return{generating:this.audioItem.status==="generating",completed:this.audioItem.status==="completed",playing:this.audioItem.status==="playing",paused:this.audioItem.status==="paused",hoverable:this.audioItem.status!=="generating"}},progressPercentage(){return this.audioItem.duration===0?0:this.audioItem.currentTime/this.audioItem.duration*100},showHandle(){return(this.isHoveringProgress||this.isDragging)&&this.audioItem.status!=="generating"}},mounted(){this.initPlayer()},beforeUnmount(){this.player&&this.player.destroy()},methods:{initPlayer(){this.player=new Ub,this.player.onPlay(()=>{this.audioItem.status="playing",this.$emit("play",this.audioItem)}),this.player.onPause(()=>{this.audioItem.status="paused",this.$emit("pause",this.audioItem)}),this.player.onEnd(()=>{this.isGenerating||(this.audioItem.status="completed",this.audioItem.currentTime=0,this.$emit("end",this.audioItem))}),this.player.onTimeUpdate((t,e)=>{this.audioItem.currentTime=t,this.isGenerating||(this.audioItem.duration=e),t>=e&&e>0&&!this.isGenerating&&(this.player.pause(),this.audioItem.status="completed",this.audioItem.currentTime=e)}),this.player.onError(t=>{console.error("音频播放错误:",t),this.$emit("error",t)}),this.audioItem.player=this.player},async addAudioChunk(t){if(!this.player){console.warn("播放器未初始化");return}try{let e;if(typeof t=="string"){const r=t.replace(/^data:.*?;base64,/,""),n=window.atob(r),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);e=i.buffer}else if(t instanceof ArrayBuffer)e=t;else if(t instanceof Blob)e=await t.arrayBuffer();else{console.error("不支持的音频数据格式");return}await this.player.addAudioChunk(e),this.$emit("chunk-added",{duration:this.audioItem.duration,queueLength:this.player.audioQueue.length})}catch(e){console.error("添加音频片段失败:",e),this.$emit("error",e)}},markGenerationComplete(){this.player&&(this.audioItem.duration=this.player.totalDuration),this.audioItem.status!=="playing"&&(this.audioItem.status="completed")},async handlePlayPause(){if(this.player)try{this.audioItem.status==="playing"?this.player.pause():(this.audioItem.currentTime>=this.audioItem.duration&&this.audioItem.duration>0&&(this.audioItem.currentTime=0,this.player.pausedAt=0),await this.player.play())}catch(t){console.error("播放控制错误:",t)}},handleDownload(){this.$emit("download",this.audioItem)},getPlayButtonTitle(){return this.isGenerating&&this.audioItem.duration===0?"等待音频生成":this.audioItem.status==="playing"?"暂停":"播放"},formatTime(t){if(!t||isNaN(t))return"00:00";const e=Math.floor(t/60),r=Math.floor(t%60);return`${e.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`},handleMouseEnter(){this.audioItem.status==="playing"&&(this.showDragTip=!0)},handleMouseLeave(){this.showDragTip=!1},handleProgressMouseEnter(){this.audioItem.status!=="generating"&&(this.isHoveringProgress=!0)},handleProgressMouseLeave(){this.isDragging||(this.isHoveringProgress=!1)},handleProgressMouseDown(t){this.audioItem.status!=="generating"&&this.seekToPosition(t)},handleDragStart(t){if(this.audioItem.status==="generating")return;this.isDragging=!0,t.preventDefault();const e=n=>{this.seekToPosition(n)},r=()=>{this.isDragging=!1,this.isHoveringProgress||(this.isHoveringProgress=!1),document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)},seekToPosition(t){if(!this.player||!this.$refs.progressTrack)return;const r=this.$refs.progressTrack.getBoundingClientRect(),n=t.clientX-r.left,a=Math.max(0,Math.min(1,n/r.width))*this.audioItem.duration,o=this.audioItem.status==="playing";o&&this.player.pause(),this.audioItem.currentTime=a,this.player.pausedAt=a,o&&this.player.play()}}};var Uue=function(){var e=this,r=e._self._c;return r("div",{staticClass:"stream-audio-player-card",class:e.cardClass,on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave}},[r("div",{staticClass:"audio-content"},[r("div",{staticClass:"audio-icon"},[r("v-icon",{attrs:{name:"file_icon_audio_light",size:30}})],1),r("div",{staticClass:"file-info"},[r("div",{staticClass:"file-name"},[e._v(e._s(e.audioItem.fileName))]),r("div",{staticClass:"file-status"},[r("span",{staticClass:"status-text",class:{generating:e.isGenerating,completed:e.audioItem.status==="completed",playing:e.audioItem.status==="playing",paused:e.audioItem.status==="paused"}},[e._v(" "+e._s(e.formatTime(e.audioItem.currentTime))+" / "+e._s(e.isGenerating?"生成中":e.formatTime(e.audioItem.duration))+" ")])])]),r("div",{staticClass:"audio-controls"},[r("button",{staticClass:"control-btn download-btn",attrs:{disabled:e.audioItem.status==="generating",title:e.audioItem.status==="generating"?"生成中,暂不可下载":"下载"},on:{click:e.handleDownload}},[r("v-icon",{attrs:{name:"basic_download2_line",size:18}})],1),r("button",{staticClass:"control-btn play-btn",attrs:{disabled:e.isGenerating&&e.audioItem.duration===0,title:e.getPlayButtonTitle()},on:{click:e.handlePlayPause}},[e.audioItem.status==="playing"?r("v-icon",{attrs:{name:"basic_pause_line",size:18}}):r("v-icon",{attrs:{name:"basic_play_line",size:18}})],1)])]),r("div",{staticClass:"progress-container"},[r("div",{ref:"progressTrack",staticClass:"progress-track",on:{mousedown:e.handleProgressMouseDown,mouseenter:e.handleProgressMouseEnter,mouseleave:e.handleProgressMouseLeave}},[r("div",{staticClass:"progress-played",class:{"no-transition":e.isDragging},style:{width:e.progressPercentage+"%"}}),e.showHandle?r("div",{staticClass:"progress-handle",class:{"no-transition":e.isDragging},style:{left:e.progressPercentage+"%"},on:{mousedown:function(n){return n.stopPropagation(),e.handleDragStart.apply(null,arguments)}}}):e._e()])])])},Wue=[],que=pr(Hue,Uue,Wue,!1,null,"439cf304",null,null);const Zue=que.exports,uE=An(Zue);const Yue={in_progress:"running",running:"running",processing:"running",pending:"pending",completed:"completed",success:"completed",done:"completed",stop:"stopped",stopped:"stopped"},Xue={name:"MsgTaskList",props:{tasks:{type:Array,default:()=>[]},defaultExpanded:{type:Boolean,default:!1}},data(){return{isExpanded:this.defaultExpanded}},computed:{normalizedTasks(){return this.tasks.map(t=>({name:t.name||t.content||"",status:Yue[t.status]||"pending",priority:t.priority||"medium"}))},completedCount(){return this.normalizedTasks.filter(t=>t.status==="completed").length},allCompleted(){return this.normalizedTasks.length>0&&this.normalizedTasks.every(t=>t.status==="completed")},hasStopped(){return this.normalizedTasks.some(t=>t.status==="stopped")},allDone(){return this.normalizedTasks.length>0&&this.normalizedTasks.every(t=>t.status==="completed"||t.status==="stopped")},stoppedSummary(){const t=this.normalizedTasks.filter(e=>e.status==="stopped");return t.length>0?t[t.length-1].name:""},currentTaskName(){const t=this.normalizedTasks.find(r=>r.status==="running");if(t)return t.name;const e=this.normalizedTasks.find(r=>r.status==="pending");return e?e.name:""}},methods:{toggleExpand(){this.isExpanded=!this.isExpanded}}};var jue=function(){var e=this,r=e._self._c;return e.normalizedTasks.length?r("div",{staticClass:"msg-task-list"},[r("div",{staticClass:"task-card"},[r("div",{staticClass:"task-header",on:{click:e.toggleExpand}},[r("div",{staticClass:"task-header-left"},[e.allCompleted?r("svg",{staticClass:"header-icon icon-finish",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#34D399"}}),r("path",{attrs:{d:"M3.5 6L5.5 8L8.5 4.5",stroke:"#fff","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})]):e.hasStopped?r("svg",{staticClass:"header-icon icon-stopped",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#F59E0B"}}),r("rect",{attrs:{x:"3.5",y:"3.5",width:"5",height:"5",rx:"0.5",fill:"#fff"}})]):r("svg",{staticClass:"header-icon icon-spinner",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#E5E7EB","stroke-width":"1.5"}}),r("path",{attrs:{d:"M6 1C8.76 1 11 3.24 11 6",stroke:"#3B82F6","stroke-width":"1.5","stroke-linecap":"round"}})]),r("span",{staticClass:"task-progress-text"},[e.allCompleted?[e._v("已完成所有任务")]:e.hasStopped?[e._v("已停止 "+e._s(e.completedCount)+"/"+e._s(e.normalizedTasks.length)+":"+e._s(e.stoppedSummary))]:[e._v("任务进度 "+e._s(e.completedCount)+"/"+e._s(e.normalizedTasks.length)+":"+e._s(e.currentTaskName))]],2)]),r("svg",{staticClass:"header-arrow",class:{expanded:e.isExpanded},attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("path",{attrs:{d:"M3 4.5L6 7.5L9 4.5",stroke:"rgba(3,10,38,0.4)","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})])]),r("div",{directives:[{name:"show",rawName:"v-show",value:e.isExpanded,expression:"isExpanded"}],staticClass:"task-list-wrapper"},[r("div",{staticClass:"task-list-divider"}),r("div",{staticClass:"task-list"},e._l(e.normalizedTasks,function(n,i){return r("div",{key:i,staticClass:"task-item",class:{"task-completed":n.status==="completed","task-stopped":n.status==="stopped"}},[n.status==="completed"?r("svg",{staticClass:"task-icon icon-finish",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#34D399"}}),r("path",{attrs:{d:"M3.5 6L5.5 8L8.5 4.5",stroke:"#fff","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"}})]):n.status==="stopped"?r("svg",{staticClass:"task-icon icon-stopped",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"6",fill:"#F59E0B"}}),r("rect",{attrs:{x:"3.5",y:"3.5",width:"5",height:"5",rx:"0.5",fill:"#fff"}})]):n.status==="running"?r("svg",{staticClass:"task-icon icon-spinner",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#E5E7EB","stroke-width":"1.5"}}),r("path",{attrs:{d:"M6 1C8.76 1 11 3.24 11 6",stroke:"#3B82F6","stroke-width":"1.5","stroke-linecap":"round"}})]):r("svg",{staticClass:"task-icon icon-pending",attrs:{viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[r("circle",{attrs:{cx:"6",cy:"6",r:"5",stroke:"#D1D5DB","stroke-width":"1.2"}})]),r("span",{staticClass:"task-name"},[e._v(e._s(n.name))])])}),0)])])]):e._e()},Kue=[],Que=pr(Xue,jue,Kue,!1,null,"1d9ef275",null,null);const Jue=Que.exports,fp=An(Jue),lE=(t={})=>(t=Object.assign({},{watches:["source","show","toc"],source:"",show:!0,highlight:!0,html:!0,xhtmlOut:!0,breaks:!0,linkify:!1,emoji:!0,typographer:!0,langPrefix:"language-",quotes:"“”‘’",tableClass:"table",taskLists:!0,toc:!1,tocId:"",tocClass:"table-of-contents",tocFirstLevel:2,tocLastLevel:0,tocAnchorLink:!0,tocAnchorClass:"toc-anchor",tocAnchorLinkSymbol:"#",tocAnchorLinkSpace:!0,tocAnchorLinkClass:"toc-anchor-link",anchorAttributes:()=>({}),prerender:r=>r,postrender:r=>r},t),new Promise((r,n)=>{t.source?_b({},()=>{const i=document.createElement("div"),{replacedString:a,videoTags:o}=rb(t.source),{modifiedMdString:s,codeBlocks:u}=eb(a),l=Q_(s),{transformed:c,extracted:f}=xb(l);i.innerHTML=c;const h=()=>{const d=wb(J_(nb(tb(i.innerHTML,u),o)),f),p=K_({html:t.html,xhtmlOut:t.xhtmlOut,breaks:t.breaks,linkify:t.linkify,emoji:t.emoji,typographer:t.typographer,langPrefix:t.langPrefix,quotes:t.quotes,taskLists:t.taskLists,tableClass:t.tableClass,anchorAttributes:typeof t.anchorAttributes=="function"?t.anchorAttributes():t.anchorAttributes,toc:t.toc,tocClass:t.tocClass,tocFirstLevel:t.tocFirstLevel,tocLastLevel:t.tocLastLevel>t.tocFirstLevel?t.tocLastLevel:t.tocFirstLevel+1,tocAnchorLink:t.tocAnchorLink,tocAnchorLinkSymbol:t.tocAnchorLinkSymbol,tocAnchorLinkSpace:t.tocAnchorLinkSpace,tocAnchorClass:t.tocAnchorClass,tocAnchorLinkClass:t.tocAnchorLinkClass,tocId:t.tocId,onTocRendered:g=>{t.$emit&&t.$emit("toc-rendered",g)}});let v=t.show?p.render((t.prerender?t.prerender(d):d).replace(/(^|[^~\\])~([^~]|$)/g,"$1\\~$2")):"";v=t.postrender?t.postrender(v):v,r(v)};bb(i).then(h).catch(h)}):r("")})),ele=[Z4,Y4,sp,aE,oE,up,lp,cp,uE,fp,r2],cE=t=>{ele.forEach(e=>{e.install&&e.install(t)})};typeof window<"u"&&window.Vue&&cE(window.Vue);const tle={install:cE,markdownToHtml:lE,WidgetHelper:n2,MsgChart:sp,MsgContent:Z4,MsgLoading:cp,LkeMsg:lp,MsgThought:Y4,MsgWidget:up,MsgTaskList:fp,ClassifyTag:r2};exports.ClassifyTag=r2;exports.Icon=aE;exports.LkeMsg=lp;exports.MsgChart=sp;exports.MsgContent=Z4;exports.MsgLoading=cp;exports.MsgTaskList=fp;exports.MsgThought=Y4;exports.MsgWidget=up;exports.StreamAudioPlayer=oE;exports.StreamAudioPlayerCard=uE;exports.WidgetHelper=n2;exports.createWidgetHelper=FO;exports.default=tle;exports.getJsonSchema=$O;exports.getPreview=VO;exports.getTemplate=zO;exports.markdownToHtml=lE;
|