\n \n
\n
\n ${e.retryCount>0?` 重试 ${e.retryCount}/3`:""}\n ${e.error?`${e.error}`:""}\n ${a>0?a.toFixed(1)+"s":""}\n
\n
`}e.innerHTML=t,e.querySelectorAll(".mm-btn-stop-task").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.dataset.taskId;this.stopTask(n)})})}}getStatusText(e){return{pending:"等待中",running:"处理中",retrying:"重试中",success:"完成",error:"失败"}[e]||e}showProgressUI(e){const t=document.getElementById("mm-progress-list"),n=document.getElementById("mm-status-summary"),o=document.getElementById("mm-stop-btn"),s=document.getElementById("mm-status-panel");t&&t.classList.toggle("mm-hidden",!e),n&&n.classList.toggle("mm-hidden",!e),o&&o.classList.toggle("mm-hidden",!e),s&&s.classList.toggle("processing",e)}finish(){this.clearAllIntervals();const e=document.getElementById("mm-stop-btn");e&&e.classList.add("mm-hidden");const t=(Date.now()-this.startTime)/1e3,n=document.getElementById("mm-process-time"),o=document.getElementById("mm-last-process");n&&(n.textContent=`${t.toFixed(1)}s`),o&&(o.textContent=(new Date).toLocaleTimeString()),setTimeout(()=>{const e=document.getElementById("mm-progress-list"),t=document.getElementById("mm-status-summary"),n=document.getElementById("mm-status-panel"),o=document.getElementById("mm-status-text"),s=document.getElementById("mm-status-indicator");e&&e.classList.add("mm-hidden"),t&&t.classList.add("mm-hidden"),n&&n.classList.remove("processing"),o&&(o.textContent="就绪"),s&&(s.className="mm-status-indicator mm-status-ready")},5e3)}reset(){this.clearAllIntervals(),this.tasks.clear(),this.taskAbortControllers.clear(),this.startTime=null,this.completedCount=0,this.totalCount=0,this.showProgressUI(!1)}}let f=null;function h(){return f}class v{constructor(){this.container=null,this.tasks=new Map,this.isCollapsed=!0,this.isVisible=!1,this.hideTimeout=null,this.isDragging=!1,this.dragOffset={x:0,y:0},this.position=null,this.taskColors=new Map,this.fadingTasks=new Set,this.displayProgress=new Map,this.animationFrames=new Map}static NEON_COLORS=[{main:"#ff6b9d",glow:"rgba(255, 107, 157, 0.6)"},{main:"#00d4ff",glow:"rgba(0, 212, 255, 0.6)"},{main:"#ffd93d",glow:"rgba(255, 217, 61, 0.6)"},{main:"#6bcb77",glow:"rgba(107, 203, 119, 0.6)"},{main:"#a855f7",glow:"rgba(168, 85, 247, 0.6)"},{main:"#ff8c42",glow:"rgba(255, 140, 66, 0.6)"},{main:"#4ecdc4",glow:"rgba(78, 205, 196, 0.6)"},{main:"#f638dc",glow:"rgba(246, 56, 220, 0.6)"}];init(){this.tasks.clear(),this.taskColors=new Map,this.fadingTasks=new Set;for(const e of this.animationFrames.values())cancelAnimationFrame(e);if(this.displayProgress.clear(),this.animationFrames.clear(),this.container){const e=this.container.querySelector(".mm-msg-panel-content");e&&(e.innerHTML="");const t=this.container.querySelector(".mm-msg-panel-preview");return void(t&&(t.innerHTML=""))}this.createDOM(),this.bindEvents(),this.loadPosition()}getRandomColor(){const e=v.NEON_COLORS;return e[Math.floor(Math.random()*e.length)]}createDOM(){this.container=document.createElement("div"),this.container.id="mm-progress-panel",this.container.className="mm-message-progress-panel mm-collapsed",this.container.innerHTML='\n \n