1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8650],{49078:(e,t,n)=>{n.d(t,{A:()=>ey});var r=n(98887),a=n(56505),l=n.n(a),s=n(49711),o=n(20403),i=n(25012),d=n(86544),c=n(51469),u=n(12267),p=n(50096),h=n(30191),m=n(1031),g=n(52614),f=n(8080);let x=["section.slide","div.slide-container","div.slide"],b=['div[class~="slide"],div[class~="slide-container"]'],v=()=>"hds_".concat(Date.now().toString(36),"_").concat(Math.random().toString(36).slice(2,8)),y=e=>e.replace(/<\/script/gi,"<\\/script"),w=e=>String(e||"").replace(/\\/g,"/").replace(/^\/+/,""),j=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=String(e||"").match(/page_(\d+)\.html?/i);return n?Number(n[1]):t},E=(e,t)=>{var n;let r=w(e),a=Number(t);if(!r||!Number.isFinite(a)||a<=1)return[];let l=r.match(/^(.*\/)?page_(\d+)(\.html?)$/i);if(!l)return[];let s=l[1]||"",o=(null===(n=l[2])||void 0===n?void 0:n.length)||3,i=l[3]||".html";return Array.from({length:a},(e,t)=>{let n=String(t+1).padStart(o,"0");return"".concat(s,"page_").concat(n).concat(i)})},k=e=>{let t=w(e),n=t.lastIndexOf("/");return n>=0?t.slice(0,n+1):""},N=(e,t)=>{var n;let r=new DOMParser().parseFromString(e,"text/html").querySelector("h1,h2,h3,h4,h5,h6");return(null==r?void 0:null===(n=r.textContent)||void 0===n?void 0:n.trim())||"第 ".concat(t," 页")},S=e=>e.filter(t=>!e.some(e=>e!==t&&e.contains(t))),A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"internal";for(let n of"import"===t?x:b){let t=S(Array.from(e.querySelectorAll(n)));if(t.length)return t}return[]},C=(e,t)=>1!==t.length?[]:Array.from(e.body.children).filter(e=>{if(t.some(t=>t===e||t.contains(e)||e.contains(t)))return!1;let n=e.tagName.toLowerCase();return"script"===n||"style"===n||"template"===n}),R=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=e.createElement("div");for(let e of Array.from(t.attributes))a.setAttribute(e.name,e.value);let l=new Set(String(t.getAttribute("class")||"").split(/\s+/).filter(Boolean));for(let e of(l.add("slide"),a.setAttribute("class",Array.from(l).join(" ")),a.setAttribute("data-page",String(n)),a.getAttribute("data-page-id")||a.setAttribute("data-page-id",v()),a.innerHTML=t.innerHTML,r))a.appendChild(e.cloneNode(!0));return a},L=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"import",n=new DOMParser().parseFromString(e,"text/html"),r=A(n,t),a=C(n,r),l=r.map((e,t)=>{let r=t+1,l=R(n,e,r,a),s=l.getAttribute("data-page-id")||v();return l.getAttribute("data-page-id")||l.setAttribute("data-page-id",s),{id:s,ordinal:r,title:N(l.outerHTML,r),html:l.outerHTML}});return{headHtml:n.head.innerHTML,slides:l}},D=e=>{var t,n;let r=e.map(e=>({...e,doc:new DOMParser().parseFromString(e.html,"text/html")})).map(e=>({...e,roots:A(e.doc,"import")})).filter(e=>e.roots.length>0);if(!r.length)throw Error("æªè¯å«å° PPT 页é¢");let a=F(r.map(e=>e.doc)),l=[];r.forEach(e=>{let t=C(e.doc,e.roots);e.roots.forEach((n,r)=>{let a=l.length+1,s=R(e.doc,n,a,t),o=s.getAttribute("data-page-id")||v();s.getAttribute("data-page-id")||s.setAttribute("data-page-id",o);let i=s.outerHTML;l.push({id:o,ordinal:a,title:N(i,a),html:i,sourcePath:e.fileName,sourceHtml:e.html,sourceSlideIndex:r,originalHtml:i})})});let s=B(e);if(!s)throw Error("æªè¯å«å° PPT 页é¢");return{headHtml:a,slides:l,rawHtml:s,assetPath:(null===(t=r[0])||void 0===t?void 0:t.fileName)||(null===(n=e[0])||void 0===n?void 0:n.fileName)||""}},_=(e,t,n)=>({...e,slides:e.slides.map(e=>({...e,sourcePath:n,sourceHtml:t,sourceSlideIndex:e.ordinal-1,originalHtml:e.html}))}),T=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=new DOMParser().parseFromString(e,"text/html"),a=A(r,"import"),l=a[n]||a[0];if(!(null==l?void 0:l.parentElement))return e;let s=r.createElement("div");s.innerHTML=t;let o=s.firstElementChild;return o?(l.replaceWith(o),"<!doctype html>\n".concat(r.documentElement.outerHTML)):e},M=(e,t)=>'<!doctype html>\n<html>\n<head>\n<meta charset="UTF-8">\n<meta name="viewport" content="width='.concat(1280,", height=").concat(720,'">\n').concat(e,"\n</head>\n<body>\n").concat(t,"\n</body>\n</html>"),P=e=>{let t=new DOMParser().parseFromString(e,"text/html");return t.querySelectorAll("[data-goagent-active-slide]").forEach(e
1=>{e.removeAttribute("data-goagent-active-slide")}),t.querySelectorAll("[contenteditable]").forEach(e=>{e.removeAttribute("contenteditable")}),"<!doctype html>\n".concat(t.documentElement.outerHTML)},I=e=>"img_tmp_".concat(String(e).padStart(3,"0")),H=e=>{var t;let n=new DOMParser().parseFromString(e,"text/html");return n.querySelectorAll("[data-hds-asset-id]").forEach(e=>{var t;let n=null===(t=e.getAttribute("data-hds-asset-id"))||void 0===t?void 0:t.trim();n&&e instanceof HTMLImageElement&&e.setAttribute("src","".concat("hds-asset://").concat(n))}),(null===(t=n.body.firstElementChild)||void 0===t?void 0:t.outerHTML)||e},z=e=>{let t,n=new Set,r=/hds-asset:\/\/([a-zA-Z0-9_-]+)/g;for(;t=r.exec(e);)t[1]&&n.add(t[1]);return n},O=(e,t)=>{let n=new DOMParser().parseFromString(e,"text/html"),r=A(n,"internal"),a=r.length?r:A(n,"import"),l=a[0];if(!(null==l?void 0:l.parentElement))return e;let s=C(n,a),o=l.parentElement,i=[];for(let e of t){let t=n.createElement("div");t.innerHTML=e.html;let r=t.firstElementChild;r&&i.push(r)}for(let e of i)o.insertBefore(e,l);return a.forEach(e=>e.remove()),s.forEach(e=>e.remove()),"<!doctype html>\n".concat(n.documentElement.outerHTML)},F=e=>{let t=new Set,n=[];for(let r of e)for(let e of Array.from(r.head.children)){if("title"===e.tagName.toLowerCase())continue;let r=e.outerHTML;t.has(r)||(t.add(r),n.push(r))}return n.join("\n")},B=e=>{var t,n,r;let a=e.map(e=>({...e,doc:new DOMParser().parseFromString(e.html,"text/html")})).map(e=>({...e,count:A(e.doc,"import").length})).filter(e=>e.count>0);if(!a.length)return null;let l=a.find(e=>e.count>1);if(l)return l.html;if(1===a.length)return(null===(t=a[0])||void 0===t?void 0:t.html)||null;let s=a[0].doc,o=(null===(r=s.querySelector("title"))||void 0===r?void 0:null===(n=r.textContent)||void 0===n?void 0:n.trim())||"HTML Deck",i=s.documentElement.getAttribute("lang")||"zh-CN",d=1,c=[];for(let e of a){let t=A(e.doc,"import"),n=C(e.doc,t);t.forEach(t=>{let r=R(e.doc,t,d,n);c.push(r.outerHTML),d+=1})}return'<!doctype html>\n<html lang="'.concat(i,'">\n<head>\n<meta charset="UTF-8">\n<meta name="viewport" content="width=1280, height=720">\n<title>').concat(o,"</title>\n").concat(F(a.map(e=>e.doc)),"\n</head>\n<body>\n").concat(c.join("\n"),"\n</body>\n</html>")},W=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>
1n(r.error),r.readAsDataURL(e)}),U=e=>new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>{t({width:r.naturalWidth||1,height:r.naturalHeight||1}),URL.revokeObjectURL(n)},r.onerror=()=>{t({width:1,height:1}),URL.revokeObjectURL(n)},r.src=n}),q=(e,t)=>Math.max(0,Math.min(Math.max(0,t-1),e)),X=(e,t,n)=>e?"".concat(e.id,":").concat(t,":").concat(n):"",Z={text:"",mode:"tiled",opacity:.14},Y='[data-hds-watermark="true"]',G="data-hds-watermark-text",K="data-hds-watermark-mode",V="data-hds-watermark-opacity",$=e=>Number.isFinite(e)?Math.max(.04,Math.min(.32,e)):Z.opacity,Q=e=>({text:e.text.trim(),mode:e.mode,opacity:$(e.opacity)}),J=e=>{e.querySelectorAll(Y).forEach(e=>e.remove())},ee=e=>{var t,n,r,a,l;let s=new DOMParser().parseFromString(e,"text/html").querySelector(Y);if(!s)return null;let o=(null===(t=s.getAttribute(G))||void 0===t?void 0:t.trim())||(null===(r=s.querySelector("span"))||void 0===r?void 0:null===(n=r.textContent)||void 0===n?void 0:n.trim())||"";if(!o)return null;let i=Array.from(s.querySelectorAll("span")),d="center"!==s.getAttribute(K)&&(s.hasAttribute(K)||1!==i.length)?"tiled":"center",c=s.getAttribute(V);if(null!==c&&Number.isFinite(Number(c)))return Q({text:o,mode:d,opacity:Number(c)});let u=Number(null===(l=i[0])||void 0===l?void 0:null===(a=l.style.color.match(/rgba?\([^,]+,[^,]+,[^,]+,\s*([0-9.]+)\)/i))||void 0===a?void 0:a[1]),p=Number.isFinite(u)&&u>0?"tiled"===d?u/.85:u:Z.opacity;return Q({text:o,mode:d,opacity:p})},et=e=>{for(let t of e){let e=ee(t.html);if(e)return e}return null},en=(e,t)=>{e.setAttribute("data-hds-watermark","true"),e.setAttribute(G,t.text),e.setAttribute(K,t.mode),e.setAttribute(V,String(t.opacity)),e.setAttribute("aria-hidden","true"),Object.assign(e.style,{position:"absolute",inset:"0",zIndex:"2147483647",overflow:"hidden",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",contain:"layout paint"})},er=(e,t)=>{let n=Q(t),r=e.createElement("div");if(en(r,n),"center"===n.mode){let t=e.createElement("span");return t.textContent=n.text,Object.assign(t.style,{position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%) rotate(-24deg)",font:'700 52px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',letterSpacing:"0",lineHeight:"1",color:"rgba(255, 255, 255, ".concat(n.opacity,")"),textShadow:"0 1px 8px rgba(0, 0, 0, ".concat(Math.min(.35,2*n.opacity),")"),whiteSpace:"nowrap"}),r.appendChild(t),r}for(let t=-80;t<=800;t+=160)for(let a=-180;a<=1460;a+=320){let l=e.createElement("span");l.textContent=n.text,Object.assign(l.style,{position:"absolute",left:"".concat(a,"px"),top:"".concat(t,"px"),width:"".concat(320,"px"),transform:"rotate(-24deg)",transformOrigin:"center",textAlign:"center",font:'700 28px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',letterSpacing:"0",lineHeight:"1",color:"rgba(255, 255, 255, ".concat(Math.max(.04,.85*n.opacity),")"),textShadow:"0 1px 6px rgba(0, 0, 0, ".concat(Math.min(.3,1.8*n.opacity),")"),whiteSpace:"nowrap"}),r.appendChild(l)}return r},ea=(e,t)=>{let n=Q(t),r=new DOMParser().parseFromString(e,"text/html"),a=r.body.firstElementChild;return a?(J(a),n.text&&(a.style.position||(a.style.position="relative"),a.appendChild(er(r,n))),a.outerHTML):e},el="flex h-6 w-6 items-center justify-center rounded-md border border-white/10 bg-black/55 text-white/80 shadow-sm backdrop-blur transition-colors hover:border-white/20 hover:bg-white/15 hover:text-white disabled:pointer-events-none disabled:opacity-30",es="flex h-8 shrink-0 items-center gap-1 whitespace-nowrap rounded-md px-2.5 text-[12px] font-medium text-white/75 transition-colors hover:bg-white/10 hover:text-white disabled:pointer-events-none disabled:opacity-35",eo="rounded-md border border-white/10 bg-[#2A2A2A] p-3",ei="mb-3 flex items-center gap-1.5 text-[12px] font-medium text-white",ed="h-8 w-full rounded-md border border-white/10 bg-[#1D1D1D] px-2 text-[12px] text-white outline-none focus:border-[#5EA0FF]",ec="flex h-7 items-center justify-center rounded-md border border-white/10 text-[#ADADAD] transition-colors hover:bg-white/10 hover:text-white",eu=["#ffffff","#0d1117","#475569","#1d4ed8","#ef4444","#22c55e","#f59e0b","#bc8cff","#f78166"],ep=["transparent","#ffffff","#0d1117","#161b22","#eff6ff","#fef9c3","#fce7f3","#ecfdf5"],eh=new Set(["p","h1","h2","h3","h4","h5","h6","
1span","li","td","th","label","a","button","strong","em","code","pre","figcaption","blockquote","div"]),em="\n(() => {\n const TARGET = window.parent;\n const SLIDE_W = ".concat(1280,";\n const SLIDE_H = ").concat(720,";\n const SLIDE_ROOT_SELECTOR = '[data-goagent-active-slide=\"true\"],section[class~=\"slide\"],div[class~=\"slide\"],div[class~=\"slide-container\"]';\n const WATERMARK_SELECTOR = '[data-hds-watermark]';\n const LAYER_ROLE_ATTR = 'data-hds-layer-role';\n const ROLE_ORDER = ['background', 'content', 'foreground'];\n const ROLE_Z_BASE = { background: 1000, content: 5000, foreground: 9000 };\n const RESIZE_HANDLES = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];\n const HANDLE_CURSOR = { nw: 'nwse-resize', se: 'nwse-resize', ne: 'nesw-resize', sw: 'nesw-resize', n: 'ns-resize', s: 'ns-resize', e: 'ew-resize', w: 'ew-resize' };\n const REPLACED_TAGS = new Set(['img', 'svg', 'video', 'canvas', 'figure', 'picture', 'iframe', 'object', 'embed']);\n const ATOMIC_TAGS = new Set(['canvas', 'iframe', 'object', 'embed']);\n const TEXT_TAGS = new Set(['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'li', 'td', 'th', 'label', 'a', 'button', 'strong', 'em', 'code', 'figcaption', 'blockquote', 'div']);\n const REGION_AREA = 0.22;\n const MIN_SIZE = 24;\n\n let interactionMode = 'edit';\n let overlay = null;\n let handleEls = null;\n let selectedEl = null;\n let editingEl = null;\n let editingOriginal = '';\n let drag = null;\n let suppressNextClick = false;\n let mermaidLoading = null;\n const scriptMap = new WeakMap();\n\n function send(msg) {\n TARGET.postMessage(msg, '*');\n }\n\n function cssEscape(value) {\n if (window.CSS && CSS.escape) return CSS.escape(String(value));\n return String(value).replace(/[\"\\\\]/g, '\\\\$&');\n }\n\n function round2(n) {\n return Math.round(n * 100) / 100;\n }\n\n function buildSelector(el) {\n if (el === document.body) return 'body';\n const hid = el.getAttribute('data-hds-id');\n if (hid) return '[data-hds-id=\"' + cssEscape(hid) + '\"]';\n const parts = [];\n let cur = el;\n while (cur && cur !== document.body) {\n const tag = cur.tagName.toLowerCase();\n const parentEl = cur.parentElement;\n if (!parentEl) break;\n const curTag = cur.tagName;\n const siblings = Array.from(parentEl.children).filter(c => c.tagName === curTag && !c.hasAttribute('data-hds-placeholder'));\n const idx = siblings.indexOf(cur) + 1;\n parts.unshift(siblings.length === 1 ? tag : tag + ':nth-of-type(' + idx + ')');\n cur = parentEl;\n }\n return parts.join(' > ');\n }\n\n function styleSnapshot(el) {\n const cs = getComputedStyle(el);\n return {\n fontSize: cs.fontSize,\n fontWeight: cs.fontWeight,\n color: cs.color,\n textAlign: cs.textAlign,\n textDecoration: cs.textDecoration,\n backgroundColor: cs.backgroundColor,\n opacity: cs.opacity,\n };\n }\n\n function sectionEl() {\n return document.querySelector(SLIDE_ROOT_SELECTOR) || document.body;\n }\n\n function freeParent(el) {\n return el.offsetParent || sectionEl();\n }\n\n function commitPercentPosition(el) {\n const p = freeParent(el);\n const pw = p.clientWidth || SLIDE_W;\n const ph = p.clientHeight || SLIDE_H;\n el.style.left = round2((el.offsetLeft / pw) * 100) + '%';\n el.style.top = round2((el.offsetTop / ph) * 100) + '%';\n }\n\n function genId() {\n return 'h' + Date.now().toString(36) + Math.random().toString(36).slice(2, 8);\n }\n\n function isPositioned(el) {\n return el instanceof HTMLElement && el.hasAttribute('data-hds-id');\n }\n\n function freeShapes() {\n return Array.from(document.querySelectorAll('[data-hds-id]'));\n }\n\n function watermarkRoot(start) {\n return start instanceof Element ? start.closest(WATERMARK_SELECTOR) : null;\n }\n\n function isLayerRole(value) {\n return value === 'background' || value === 'content' || value === 'foreground';\n }\n\n function manualLayerRole(el) {\n const role = el.getAttribute(LAYER_ROLE_ATTR);\n return isLayerRole(role) ? role : null;\n }\n\n function layerRoleSource(el) {\n return manualLayerRole(el) ? 'manual' : 'auto';\n }\n\n function inferLayerRole(el) {\n const manual = manualLayerRole(el);\n if (manual) return manual;\n const tag = el.tagName.toLowerCase();\n const cs = getComputedStyle(el);\n const rect = el.getBoundingClientRect();\n const slideArea = SLIDE_W * SLIDE_H;\n const areaRatio = (rect.width * rect.height) / slideArea;\n const nearLeft = rect.left <= 32;\n const nearTop = rect.top <= 32;\n const nearRight = rect.right >= SLIDE_W - 32;\n const nearBottom = rect.bottom >= SLIDE_H - 32;
1\n const edgeHits = [nearLeft, nearTop, nearRight, nearBottom].filter(Boolean).length;\n const hasBackgroundPaint = cs.backgroundImage !== 'none' || cs.backgroundColor !== 'rgba(0, 0, 0, 0)';\n const classHint = String(el.id || '') + ' ' + String(el.className || '');\n const backgroundHint = /(^|[-_\\s])(bg|background|backdrop|wallpaper|cover|hero|texture|frame)([-_\\s]|$)/.test(classHint.toLowerCase());\n if (areaRatio >= 0.72 && edgeHits >= 3) return 'background';\n if ((tag === 'img' || tag === 'picture') && areaRatio >= 0.55 && edgeHits >= 2) return 'background';\n if (hasBackgroundPaint && areaRatio >= 0.55 && edgeHits >= 2) return 'background';\n if (backgroundHint && areaRatio >= 0.35) return 'background';\n const nearCorner = (nearLeft || nearRight) && (nearTop || nearBottom);\n if (areaRatio <= 0.04 && nearCorner && (tag === 'img' || tag === 'svg' || backgroundHint)) return 'foreground';\n return 'content';\n }\n\n function layerRole(el) {\n return inferLayerRole(el);\n }\n\n function compareByZThenDom(shapes) {\n const domOrder = new Map();\n shapes.forEach((el, i) => domOrder.set(el, i));\n return shapes.sort((a, b) => {\n const za = parseInt(a.style.zIndex || '0', 10) || 0;\n const zb = parseInt(b.style.zIndex || '0', 10) || 0;\n if (za !== zb) return za - zb;\n return (domOrder.get(a) || 0) - (domOrder.get(b) || 0);\n });\n }\n\n function normalizeZ(role) {\n const roles = role ? [role] : ROLE_ORDER;\n let selectedOrder = [];\n roles.forEach(r => {\n const order = compareByZThenDom(freeShapes().filter(el => layerRole(el) === r));\n order.forEach((el, i) => {\n el.style.zIndex = String(ROLE_Z_BASE[r] + i);\n });\n if (role === r) selectedOrder = order;\n });\n return role ? selectedOrder : compareByZThenDom(freeShapes());\n }\n\n function nextZ(role) {\n const order = normalizeZ(role);\n return ROLE_Z_BASE[role] + order.length;\n }\n\n function layerInfo(el) {\n if (!isPositioned(el)) return undefined;\n const role = layerRole(el);\n const order = compareByZThenDom(freeShapes());\n const idx = order.indexOf(el);\n if (idx === -1) return undefined;\n return { index: idx + 1, count: order.length, role, roleSource: layerRoleSource(el) };\n }\n\n function slideRect(el) {\n return {\n left: Math.round(el.offsetLeft),\n top: Math.round(el.offsetTop),\n width: Math.round(el.offsetWidth),\n height: Math.round(el.offsetHeight),\n };\n }\n\n function ensureOverlay() {\n if (overlay) return;\n overlay = document.createElement('div');\n overlay.setAttribute('data-hds-overlay', '');\n Object.assign(overlay.style, {\n position: 'fixed',\n border: '2px solid #007aff',\n borderRadius: '3px',\n pointerEvents: 'none',\n zIndex: '99999',\n boxSizing: 'border-box',\n boxShadow: '0 0 0 1px rgba(255,255,255,0.6)',\n display: 'none',\n });\n document.body.appendChild(overlay);\n handleEls = {};\n RESIZE_HANDLES.forEach(corner => {\n const h = document.createElement('div');\n h.setAttribute('data-hds-handle', corner);\n Object.assign(h.style, {\n position: 'fixed',\n width: (corner.length === 1 ? '18px' : '12px'),\n height: (corner.length === 1 ? '18px' : '12px'),\n margin: (corner.length === 1 ? '-9px 0 0 -9px' : '-7px 0 0 -7px'),\n borderRadius: '50%',\n background: '#fff',\n border: '2px solid #007aff',\n boxSizing: 'border-box',\n zIndex: '100000',\n display: 'none',\n cursor: HANDLE_CURSOR[corner],\n touchAction: 'none',\n });\n document.body.appendChild(h);\n handleEls[corner] = h;\n });\n }\n\n function showOverlay(el) {\n ensureOverlay();\n const r = el.getBoundingClientRect();\n const role = el instanceof HTMLElement ? layerRole(el) : 'content';\n const accent = role === 'background' ? '#7a8797' : role === 'foreground' ? '#f59e0b' : '#007aff';\n Object.assign(overlay.style, {\n left: r.left + 'px',\n top: r.top + 'px',\n width: r.width + 'px',\n height: r.height + 'px',\n borderColor: accent,\n boxShadow: role === 'background' ? '0 0 0 1px rgba(255,255,255,0.35)' : '0 0 0 1px rgba(255,255,255,0.6)',\n display: 'block',\n });\n const showHandles = interactionMode === 'drag';\n const corners = {\n nw: [r.left, r.top],\n n: [r.left + r.width / 2, r.top],\n ne: [r.right, r.top],\n e: [r.right, r.top + r.height / 2],\n se: [r.right, r.bottom],\n s: [r.left + r.width / 2, r.bottom],\n sw: [r.left, r.bottom],\n w: [r.left, r.top + r.height / 2],\n };\n RESIZE_HANDLES.forEach(corner => {\n const h = handleEls[corner];\n if (showHandles) {\n h.style.display = 'block';\n h.style.left = corners[corner][0] + 'px';\n h.style.top = corners[corner][1] + 'px';\n h.style.borderColor = accent;
1\n } else {\n h.style.display = 'none';\n }\n });\n }\n\n function clearOverlay() {\n if (overlay) overlay.style.display = 'none';\n if (handleEls) RESIZE_HANDLES.forEach(c => { handleEls[c].style.display = 'none'; });\n }\n\n function selectElement(el) {\n selectedEl = el instanceof HTMLElement ? el : null;\n showOverlay(el);\n const bbox = el.getBoundingClientRect();\n const attrs = {};\n ['href', 'target', 'src', 'alt', 'data-hds-asset-id'].forEach(name => {\n const v = el.getAttribute(name);\n if (v !== null) attrs[name] = v;\n });\n const elh = el instanceof HTMLElement ? el : null;\n send({\n type: 'select',\n selector: buildSelector(el),\n tagName: el.tagName.toLowerCase(),\n text: el.textContent || '',\n attrs,\n style: styleSnapshot(el),\n rect: elh ? slideRect(elh) : { left: Math.round(bbox.left), top: Math.round(bbox.top), width: Math.round(bbox.width), height: Math.round(bbox.height) },\n layer: elh ? layerInfo(elh) : undefined,\n });\n }\n\n function deselect() {\n clearOverlay();\n selectedEl = null;\n send({ type: 'clear-select' });\n }\n\n function atomicComponent(start) {\n if (!(start instanceof HTMLElement)) return null;\n const marked = start.closest('[data-hds-atomic]');\n if (marked && marked !== sectionEl() && marked !== document.body) return marked;\n const tag = start.tagName.toLowerCase();\n if (ATOMIC_TAGS.has(tag)) return start;\n return null;\n }\n\n function resolveShape(start) {\n const atomic = atomicComponent(start);\n if (atomic) return atomic;\n const sec = sectionEl();\n let el = start instanceof HTMLElement ? start : null;\n while (el && el !== sec && el !== document.body) {\n if (el.hasAttribute('data-hds-id')) return el;\n if (REPLACED_TAGS.has(el.tagName.toLowerCase())) return el;\n const d = getComputedStyle(el).display;\n if (d !== 'inline' && d !== 'contents') return el;\n el = el.parentElement;\n }\n return el && el !== document.body ? el : (start instanceof HTMLElement ? start : null);\n }\n\n function shapeHitScore(el, domIndex) {\n const r = el.getBoundingClientRect();\n const area = Math.max(1, r.width * r.height);\n const areaRatio = area / (SLIDE_W * SLIDE_H);\n const role = layerRole(el);\n const roleRank = role === 'foreground' ? 2 : role === 'content' ? 1 : 0;\n const largeSurfacePenalty = role === 'background' || areaRatio >= 0.45 ? 1 : 0;\n const z = parseInt(el.style.zIndex || '0', 10) || 0;\n return [largeSurfacePenalty, -roleRank, -z, area, -domIndex];\n }\n\n function resolveShapeAtPoint(start, x, y) {\n const fallback = resolveShape(start);\n const domOrder = new Map();\n const candidates = freeShapes().filter((el, i) => {\n domOrder.set(el, i);\n if (watermarkRoot(el)) return false;\n if (el === sectionEl() || el === document.body) return false;\n const r = el.getBoundingClientRect();\n return r.width > 0 && r.height > 0 && x >= r.left && x <= r.right && y >= r.top && y <= r.bottom;\n });\n if (!candidates.length) return fallback;\n candidates.sort((a, b) => {\n const as = shapeHitScore(a, domOrder.get(a) || 0);\n const bs = shapeHitScore(b, domOrder.get(b) || 0);\n for (let i = 0; i < as.length; i += 1) {\n if (as[i] !== bs[i]) return as[i] - bs[i];\n }\n return 0;\n });\n return candidates[0] || fallback;\n }\n\n function shapeKind(el) {\n const tag = el.tagName.toLowerCase();\n if (tag === 'img' || tag === 'svg' || tag === 'video' || tag === 'canvas' || tag === 'picture') return 'image';\n if (el.childElementCount === 0) return 'text';\n return 'block';\n }\n\n function insertPlaceholder(el, id) {\n const cs = getComputedStyle(el);\n const ph = document.createElement('div');\n ph.setAttribute('data-hds-placeholder', '');\n ph.setAttribute('data-hds-ph-for', id);\n Object.assign(ph.style, {\n width: el.offsetWidth + 'px',\n height: el.offsetHeight + 'px',\n marginTop: cs.marginTop,\n marginRight: cs.marginRight,\n marginBottom: cs.marginBottom,\n marginLeft: cs.marginLeft,\n alignSelf: cs.alignSelf,\n flex: '0 0 auto',\n boxSizing: 'border-box',\n visibility: 'hidden',\n pointerEvents: 'none',\n });\n if (el.parentElement) el.parentElement.insertBefore(ph, el);\n }\n\n function gcPlaceholders() {\n document.querySelectorAll('[data-hds-placeholder]').forEach(ph =>
1 {\n const id = ph.getAttribute('data-hds-ph-for');\n if (!id || !document.querySelector('[data-hds-id=\"' + cssEscape(id) + '\"]')) ph.remove();\n });\n }\n\n function detach(el) {\n if (el.hasAttribute('data-hds-id')) {\n const secEarly = sectionEl();\n if (getComputedStyle(secEarly).position === 'static') secEarly.style.position = 'relative';\n return;\n }\n const sec = sectionEl();\n if (getComputedStyle(sec).position === 'static') sec.style.position = 'relative';\n const r = el.getBoundingClientRect();\n const id = genId();\n el.setAttribute('data-hds-id', id);\n el.setAttribute('data-hds-free', '');\n insertPlaceholder(el, id);\n el.style.position = 'absolute';\n el.style.margin = '0';\n el.style.zIndex = String(nextZ(layerRole(el)));\n const p = freeParent(el);\n const pr = p.getBoundingClientRect();\n el.style.left = round2(r.left - pr.left - p.clientLeft) + 'px';\n el.style.top = round2(r.top - pr.top - p.clientTop) + 'px';\n el.style.width = round2(r.width) + 'px';\n if (shapeKind(el) !== 'image') el.style.height = 'auto';\n }\n\n function isLayoutBlock(el) {\n if (!(el instanceof HTMLElement)) return false;\n const tag = el.tagName.toLowerCase();\n if (tag === 'script' || tag === 'style' || tag === 'template') return false;\n if (watermarkRoot(el)) return false;\n if (el.hasAttribute('data-hds-placeholder')) return false;\n const d = getComputedStyle(el).display;\n if (d === 'none' || d === 'contents' || d.startsWith('inline')) return false;\n return true;\n }\n\n function collectFrom(node, boxes) {\n if (watermarkRoot(node)) return;\n if (node.hasAttribute('data-hds-id') || node.hasAttribute('data-hds-atomic') || REPLACED_TAGS.has(node.tagName.toLowerCase())) {\n boxes.push(node);\n return;\n }\n const blockKids = Array.from(node.children).filter(isLayoutBlock);\n if (blockKids.length === 0) {\n boxes.push(node);\n return;\n }\n if (blockKids.length === 1) {\n collectFrom(blockKids[0], boxes);\n return;\n }\n const area = (node.offsetWidth * node.offsetHeight) / (SLIDE_W * SLIDE_H);\n if (area >= REGION_AREA) blockKids.forEach(k => collectFrom(k, boxes));\n else boxes.push(node);\n }\n\n function collectContentBoxes() {\n const boxes = [];\n collectFrom(sectionEl(), boxes);\n return boxes.filter(el => el !== sectionEl() && el !== document.body);\n }\n\n function nearestContainingBlock(el) {\n let p = el.parentElement;\n while (p && p !== document.body) {\n if (getComputedStyle(p).position !== 'static') return p;\n p = p.parentElement;\n }\n return sectionEl();\n }\n\n function detachAll() {\n const targets = collectContentBoxes().filter(el => !el.hasAttribute('data-hds-id'));\n if (!targets.length) return false;\n const sec = sectionEl();\n if (getComputedStyle(sec).position === 'static') sec.style.position = 'relative';\n const plans = targets.map(el => {\n const cs = getComputedStyle(el);\n const cb = nearestContainingBlock(el);\n const pos = cs.position;\n return {\n el,\n cb,\n rect: el.getBoundingClientRect(),\n cbRect: cb.getBoundingClientRect(),\n offsetW: el.offsetWidth,\n offsetH: el.offsetHeight,\n marginTop: cs.marginTop,\n marginRight: cs.marginRight,\n marginBottom: cs.marginBottom,\n marginLeft: cs.marginLeft,\n alignSelf: cs.alignSelf,\n inFlow: pos === 'static' || pos === 'relative' || pos === 'sticky',\n isImage: shapeKind(el) === 'image',\n };\n });\n plans.forEach(p => {\n const id = genId();\n p.el.setAttribute('data-hds-id', id);\n p.el.setAttribute('data-hds-free', '');\n if (p.inFlow) {\n const ph = document.createElement('div');\n ph.setAttribute('data-hds-placeholder', '');\n ph.setAttribute('data-hds-ph-for', id);\n Object.assign(ph.style, {\n width: p.offsetW + 'px',\n height: p.offsetH + 'px',\n marginTop: p.marginTop,\n marginRight: p.marginRight,\n marginBottom: p.marginBottom,\n marginLeft: p.marginLeft,\n alignSelf: p.alignSelf,\n flex: '0 0 auto',\n boxSizing: 'border-box',\n visibility: 'hidden',\n pointerEvents: 'none',\n });\n if (p.el.parentElement) p.el.parentElement.insertBefore(ph, p.el);\n }\n p.el.style.position = 'absolute';\n p.el.style.margin = '0';\n });\n plans.forEach(p => {\n p.el.style.left = round2(p.rect.left - p.cbRect.left - p.cb.clientLeft) + 'px';\n p.el.style.top = round2(p.rect.top - p.cbRect.top - p.cb.clientTop) + 'px';\n p.el.style.right = 'auto';\n p.el.style.bottom = 'auto';\n p.el.style.width = round2(p.rect.width) + 'px';\n if (!p.isImage) p.el.style.minHeight = round2(p.rect.height) + 'px';\n });\n normalizeZ();\n return true;\n }\n\n async function renderMermaid() {\n const nodes = document.querySelectorAll('pre.mermaid:not([data-mermaid-rendered]), div.mermaid:not([data-mermaid-rendered]), [data-mermaid]:not([data-mermaid-rendered])');\n if (!nodes.length) return;\n try {\n if (!mermaidLoading) mermaidLoading = import('https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs');\n const mod = await mermaidLoading;\n const mermaid = mod.default;\n mermaid.initialize({ startOnLoad: false, theme: 'default', securityLevel: 'strict' });\n await mermaid.run({ nodes: Array.from(nodes) });
1\n nodes.forEach(n => n.setAttribute('data-mermaid-rendered', 'true'));\n } catch (err) {\n nodes.forEach(n => {\n n.setAttribute('data-mermaid-error', String(err));\n n.style.outline = '2px solid #fca5a5';\n });\n }\n }\n\n function find(selector) {\n try {\n return document.querySelector(selector);\n } catch {\n return null;\n }\n }\n\n function applyPatch(selector, ops) {\n const el = find(selector);\n if (!el || watermarkRoot(el)) return false;\n ops.forEach(op => {\n if (op.kind === 'text') {\n el.textContent = op.value;\n } else if (op.kind === 'attr') {\n if (op.value === null) el.removeAttribute(op.name);\n else el.setAttribute(op.name, op.value);\n } else if (op.kind === 'style') {\n if (op.value === null) el.style.removeProperty(op.name);\n else el.style.setProperty(op.name, op.value);\n } else if (op.kind === 'class') {\n (op.add || []).forEach(c => el.classList.add(c));\n (op.remove || []).forEach(c => el.classList.remove(c));\n }\n });\n return true;\n }\n\n function disableScripts() {\n document.querySelectorAll('script').forEach(s => {\n if (s.hasAttribute('data-hds-runtime')) return;\n const tpl = document.createElement('template');\n tpl.setAttribute('data-hds-disabled', '');\n const html = s.outerHTML;\n scriptMap.set(tpl, html);\n tpl.setAttribute('data-hds-script-html', encodeURIComponent(html));\n s.replaceWith(tpl);\n });\n }\n\n function restoreScripts() {\n document.querySelectorAll('template[data-hds-disabled]').forEach(tpl => {\n const encoded = tpl.getAttribute('data-hds-script-html');\n const original = scriptMap.get(tpl) || (encoded ? decodeURIComponent(encoded) : '');\n if (!original) return;\n const div = document.createElement('div');\n div.innerHTML = original;\n const node = div.firstElementChild;\n if (node) tpl.replaceWith(node);\n });\n }\n\n function restoreScriptsIn(root) {\n root.querySelectorAll('template[data-hds-disabled]').forEach(tpl => {\n const encoded = tpl.getAttribute('data-hds-script-html');\n if (!encoded) return;\n const div = document.createElement('div');\n div.innerHTML = decodeURIComponent(encoded);\n const node = div.firstElementChild;\n if (node) tpl.replaceWith(node);\n });\n }\n\n function cleanup(root) {\n root.querySelectorAll('[data-hds-overlay], [data-hds-handle]').forEach(n => n.remove());\n }\n\n function serializeSection() {\n const sec = sectionEl();\n const clone = sec.cloneNode(true);\n cleanup(clone);\n restoreScriptsIn(clone);\n clone.removeAttribute('data-goagent-active-slide');\n clone.querySelectorAll('[contenteditable]').forEach(n => n.removeAttribute('contenteditable'));\n return clone.outerHTML;\n }\n\n function placeCaretFromPoint(el, x, y) {\n const sel = window.getSelection();\n if (!sel) return false;\n let range = null;\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(x, y);\n } else if (document.caretPositionFromPoint) {\n const pos = document.caretPositionFromPoint(x, y);\n if (pos) {\n range = document.createRange();\n range.setStart(pos.offsetNode, pos.offset);\n }\n }\n if (!range) return false;\n const container = range.startContainer;\n const owner = container.nodeType === Node.ELEMENT_NODE ? container : container.parentElement;\n if (owner && !el.contains(owner) && owner !== el) return false;\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n return true;\n }\n\n function beginInlineEdit(el, point) {\n if (editingEl) finishInlineEdit(true);\n editingEl = el;\n editingOriginal = el.innerHTML;\n el.setAttribute('contenteditable', 'true');\n el.setAttribute('spellcheck', 'false');\n el.focus();\n if (!point || !placeCaretFromPoint(el, point.x, point.y)) {\n const range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n const sel = window.getSelection();\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n\n function finishInlineEdit(commit) {\n if (!editingEl) return;\n const el = editingEl;\n editingEl = null;\n el.removeAttribute('contenteditable');\n el.removeAttribute('spellcheck');\n if (!commit) {\n el.innerHTML = editingOriginal;\n return;\n }\n send({ type: 'patched', html: serializeSection() });\n }\n\n function isTextEditTarget(el) {\n if (watermarkRoot(el)) return false;\n if (atomicComponent(el)) return false;\n if (!TEXT_TAGS.has(el.tagName.toLowerCase())) return false;\n if (!(el.textContent || '').trim()) return false;\n if (el.tagName.toLowerCase() === 'div') {\n const hasBlockChild = Array.from(el.children).some(isLayoutBlock);\n if (hasBlockChild) return false;\n }\n return true;\n }\n\n function resolveTextEditTarget(start, x, y) {\n const direct = start instanceof HTMLElement ? start : null;\n if (direct && isTextEditTarget(direct)) return direct;\n const scope = direct ? (direct.closest('[data-hds-id]') || direct) : null;\n if (!scope) return null;\n const selector = Array.from(TEXT_TAGS).join(',');\n const candidates = Array.from(scope.querySelectorAll(selector))\n .filter(isTextEditTarget)\n .filter(el => {\n const r = el.getBoundingClientRect();\n return r.width > 0 && r.height > 0 && x >= r.left && x <= r.right && y >= r.top && y <= r.bottom;\n })\n .sort((a, b) => {\n const ar = a.getBoundingClientRect();\n const br = b.getBoundingClientRect();\n return ar.width * ar.height - br.width * br.height;\n });\n return candidates[0] || null;\n }\n\n function defaultSelectableElement() {\n const sec = sectionEl();\n const textSelector = Array.from(TEXT_TAGS).join(',');\n const textCandidate = Array.from(sec.querySelectorAll(textSelector))\n .filter(isTextEditTarget)\n .find(el => {\n const r = el.getBoundingClientRect();\n return r.width > 0 && r.height > 0;\n });\n if (textCandidate) return textCandidate;\n\n const shapeCandidate = collectContentBoxes().find(el => {\n if (watermarkRoot(el)) return false;\n if (el === sec || el === document.body) return false;\n const r = el.getBoundingClientRect();\n return r.width > 0 && r.height > 0;\n });\n return shapeCandidate || null;\n }\n\n function selectDefaultElement() {\n const el = defaultSelectableElement();\n if (el) selectElement(el);\n else deselect();\n }
1\n\n function clampWatermarkOpacity(value) {\n const n = Number(value);\n if (!Number.isFinite(n)) return 0.14;\n return Math.max(0.04, Math.min(0.32, n));\n }\n\n function applyWatermarkBaseStyles(el) {\n el.setAttribute('data-hds-watermark', 'true');\n el.setAttribute('aria-hidden', 'true');\n Object.assign(el.style, {\n position: 'absolute',\n inset: '0',\n zIndex: '2147483647',\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n WebkitUserSelect: 'none',\n contain: 'layout paint',\n });\n }\n\n function createWatermarkNode(config) {\n const text = String(config && config.text ? config.text : '').trim();\n const mode = config && config.mode === 'center' ? 'center' : 'tiled';\n const opacity = clampWatermarkOpacity(config && config.opacity);\n const root = document.createElement('div');\n applyWatermarkBaseStyles(root);\n if (!text) return root;\n\n if (mode === 'center') {\n const mark = document.createElement('span');\n mark.textContent = text;\n Object.assign(mark.style, {\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%) rotate(-24deg)',\n font: '700 52px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n letterSpacing: '0',\n lineHeight: '1',\n color: 'rgba(255, 255, 255, ' + opacity + ')',\n textShadow: '0 1px 8px rgba(0, 0, 0, ' + Math.min(0.35, opacity * 2) + ')',\n whiteSpace: 'nowrap',\n });\n root.appendChild(mark);\n return root;\n }\n\n const tileW = 320;\n const tileH = 160;\n for (let y = -80; y <= 800; y += tileH) {\n for (let x = -180; x <= 1460; x += tileW) {\n const mark = document.createElement('span');\n mark.textContent = text;\n Object.assign(mark.style, {\n position: 'absolute',\n left: x + 'px',\n top: y + 'px',\n width: tileW + 'px',\n transform: 'rotate(-24deg)',\n transformOrigin: 'center',\n textAlign: 'center',\n font: '700 28px system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n letterSpacing: '0',\n lineHeight: '1',\n color: 'rgba(255, 255, 255, ' + Math.max(0.04, opacity * 0.85) + ')',\n textShadow: '0 1px 6px rgba(0, 0, 0, ' + Math.min(0.3, opacity * 1.8) + ')',\n whiteSpace: 'nowrap',\n });\n root.appendChild(mark);\n }\n }\n return root;\n }\n\n function setWatermark(config) {\n const sec = sectionEl();\n sec.querySelectorAll(WATERMARK_SELECTOR).forEach(node => node.remove());\n const text = String(config && config.text ? config.text : '').trim();\n if (text) {\n if (getComputedStyle(sec).position === 'static') sec.style.position = 'relative';\n sec.appendChild(createWatermarkNode(config));\n }\n if (selectedEl && watermarkRoot(selectedEl)) {\n selectedEl = null;\n clearOverlay();\n send({ type: 'clear-select' });\n } else if (selectedEl) {\n selectElement(selectedEl);\n }\n send({ type: 'patched', html: serializeSection() });\n }\n\n async function patchAndEmit(selector, ops) {\n const ok = applyPatch(selector, ops);\n if (!ok) return;\n gcPlaceholders();\n await renderMermaid();\n const el = find(selector);\n if (el) selectElement(el);\n send({ type: 'patched', html: serializeSection() });\n }\n\n function zOrder(selector, op) {\n const el = find(selector);\n if (!(el instanceof HTMLElement)) return;\n if (!isPositioned(el)) detach(el);\n const order = compareByZThenDom(freeShapes());\n const i = order.indexOf(el);\n if (i === -1) return;\n const last = order.length - 1;\n let target = i;\n if (op === 'front') target = last;\n else if (op === 'back') target = 0;\n else if (op === 'forward') target = Math.min(last, i + 1);\n else if (op === 'backward') target = Math.max(0, i - 1);\n if (target !== i) {\n order.splice(i, 1);\n order.splice(target, 0, el);\n order.forEach((node, idx) => {\n node.removeAttribute(LAYER_ROLE_ATTR);\n node.style.zIndex = String(1000 + idx);\n });\n }\n selectElement(el);\n send({ type: 'patched', html: serializeSection() });\n }\n\n function setLayerRole(selector, role) {\n const el = find(selector);\n if (!(el instanceof HTMLElement)) return;\n if (!isPositioned(el)) detach(el);\n if (role === 'auto') el.removeAttribute(LAYER_ROLE_ATTR);\n else if (isLayerRole(role)) el.setAttribute(LAYER_ROLE_ATTR, role);\n normalizeZ();\n selectElement(el);\n send({ type: 'patched', html: serializeSection() });\n }\n\n function restoreAutoLayout(selector) {\n const el = find(selector);\n if (!(el instanceof HTMLElement)) return;\n const id = el.getAttribute('data-hds-id');\n if (id) {\n document.querySelectorAll('[data-hds-ph-for=\"' + cssEscape(id) + '\"]').forEach(ph => ph.remove());\n }\n el.removeAttribute('data-hds-id');\n el.removeAttribute('data-hds-free');\n el.removeAttribute(LAYER_ROLE_ATTR);\n ['position', 'left', 'top', 'right', 'bottom', 'width', 'height', 'min-height', 'max-width', 'margin', 'z-index', 'transform', 'transform-origin', 'user-select'].forEach(name => {\n el.style.removeProperty(name);\n });\n gcPlaceholders();\n normalizeZ();\n selectElement(el);\n send({ type: 'patched', html: serializeSection() });\n }\n\n function insertImage(msg) {\n const sec = sectionEl();\n if (getComputedStyle(sec).position === 'static') sec.style.position = 'relative';\n const img = document.createElement('img');\n img.setAttribute('data-hds-id', msg.id || genId());\n img.setAttribute(LAYER_ROLE_ATTR, 'foreground');\n if (msg.assetId) img.setAttribute('data-hds-asset-id', msg.assetId);\n img.src = msg.src;\n img.draggable = false;\n Object.assign(img.style, {\n position: 'absolute',\n left: (typeof msg.leftPct === 'number' ? round2(msg.leftPct) : 33) + '%',\n top: (typeof msg.topPct === 'number' ? round2(msg.topPct) : 31) + '%',\n width: (typeof msg.widthPct === 'number' ? round2(msg.widthPct) : 25) + '%',\n height: 'auto',\n zIndex: String(nextZ('foreground')),\n userSelect: 'none',\n });\n sec.appendChild(img);\n selectElement(img);\n send({ type: 'patched', html: serializeSection() });\n }\n\n window.addEventListener('message', async event => {\n const msg = event.data || {};\n if (!msg.type) return;\n if (msg.type === 'patch') {\n await patchAndEmit(msg.
1selector, msg.ops || []);\n return;\n }\n if (msg.type === 'insert-image') {\n insertImage(msg);\n return;\n }\n if (msg.type === 'set-watermark') {\n setWatermark(msg.config || {});\n return;\n }\n if (msg.type === 'set-mode') {\n if (msg.mode === interactionMode) return;\n interactionMode = msg.mode === 'drag' ? 'drag' : 'edit';\n document.body.setAttribute('data-hds-mode', interactionMode);\n suppressNextClick = false;\n if (editingEl) finishInlineEdit(true);\n if (interactionMode === 'drag' && detachAll()) send({ type: 'patched', html: serializeSection() });\n deselect();\n return;\n }\n if (msg.type === 'z-order') {\n zOrder(msg.selector, msg.op);\n return;\n }\n if (msg.type === 'set-layer-role') {\n setLayerRole(msg.selector, msg.role);\n return;\n }\n if (msg.type === 'restore-auto-layout') {\n restoreAutoLayout(msg.selector);\n return;\n }\n if (msg.type === 'select-element') {\n const el = find(msg.selector);\n if (el) selectElement(el);\n return;\n }\n if (msg.type === 'select-default') {\n selectDefaultElement();\n return;\n }\n if (msg.type === 'delete-element') {\n const el = find(msg.selector);\n if (el) {\n if (el === selectedEl) selectedEl = null;\n el.remove();\n gcPlaceholders();\n clearOverlay();\n send({ type: 'clear-select' });\n send({ type: 'patched', html: serializeSection() });\n }\n return;\n }\n if (msg.type === 'disable-scripts') {\n if (msg.disabled) disableScripts();\n else restoreScripts();\n }\n });\n\n document.addEventListener('click', e => {\n const target = e.target;\n if (editingEl) return;\n if (suppressNextClick) {\n suppressNextClick = false;\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (target instanceof Element && (target.hasAttribute('data-hds-handle') || target.hasAttribute('data-hds-overlay'))) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (!target || target === document.body || target === document.documentElement) {\n deselect();\n return;\n }\n if (watermarkRoot(target)) {\n deselect();\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const atomic = atomicComponent(target);\n if (atomic) {\n selectElement(atomic);\n return;\n }\n if (interactionMode === 'drag') {\n const shape = resolveShapeAtPoint(target, e.clientX, e.clientY);\n if (shape && shape !== sectionEl() && shape !== document.body) selectElement(shape);\n else deselect();\n } else {\n const textTarget = resolveTextEditTarget(target, e.clientX, e.clientY);\n if (textTarget) {\n selectElement(textTarget);\n clearOverlay();\n beginInlineEdit(textTarget, { x: e.clientX, y: e.clientY });\n } else {\n selectElement(target);\n }\n }\n }, true);\n\n document.addEventListener('dblclick', e => {\n if (interactionMode !== 'edit') return;\n const target = e.target;\n if (!(target instanceof HTMLElement)) return;\n if (watermarkRoot(target) || atomicComponent(target)) return;\n const textTarget = resolveTextEditTarget(target, e.clientX, e.clientY);\n if (!textTarget) return;\n e.preventDefault();\n e.stopPropagation();\n clearOverlay();\n beginInlineEdit(textTarget, { x: e.clientX, y: e.clientY });\n }, true);\n\n function beginDrag(kind, el, e, corner) {\n drag = {\n mode: kind,\n el,\n corner,\n kind: shapeKind(el),\n startX: e.clientX,\n startY: e.clientY,\n started: false,\n left: 0,\n top: 0,\n offsetW: 0,\n offsetH: 0,\n visW: 0,\n visH: 0,\n aspect: 1,\n secLeft: 0,\n secTop: 0,\n moved: false,\n };\n }\n\n function captureBaseline(d) {\n const el = d.el;\n d.left = el.offsetLeft;\n d.top = el.offsetTop;\n d.offsetW = el.offsetWidth;\n d.offsetH = el.offsetHeight;\n const r = el.getBoundingClientRect();\n d.visW = r.width;\n d.visH = r.height;\n d.aspect = r.width / Math.max(1, r.height);\n const sr = sectionEl().getBoundingClientRect();\n d.secLeft = sr.left;\n d.secTop = sr.top;\n }\n\n function resizeShape(e) {\n const d = drag;\n const el = d.el;\n const corner = d.corner;\n const px = e.clientX - d.secLeft;\n const py = e.clientY - d.secTop;\n const west = corner === 'nw' || corner === 'sw' || corner === 'w';\n const east = corner === 'ne' || corner === 'se' || corner === 'e';\n const north = corner === 'nw' || corner === 'ne' || corner === 'n';\n const south = corner === 'sw' || corner === 'se' || corner === 's';\n const right0 = d.left + d.visW;\n const bottom0 = d.top + d.visH;\n let w = west ? right0 - px : east ? px - d.left : d.visW;\n let h = north ? bottom0 - py : south ? py - d.top : d.visH;\n w = Math.max(MIN_SIZE, w);\n h = Math.max(MIN_SIZE, h);\n const edgeOnly = corner.length === 1;\n if (d.kind === 'image' && !edgeOnly) {\n h = w / d.aspect;\n el.style.left = (west ? right0 - w : d.left) + 'px';\n el.style.top = (north ? bottom0 - h : d.top) + 'px';\n el.style.width = w + 'px';\n el.style.height = 'auto';\n } else if (d.kind === 'text') {\n el.style.left = (west ? right0 - w : d.left) + 'px';\n el.style.top = (north ? bottom0 - h : d.top) + 'px';\n el.style.width = w + 'px';\n if (north || south) el.style.minHeight = h + 'px';\n } else {\n el.style.transform = 'none';\n el.style.transformOrigin = '';\n el.style.left = (west ? right0 - w : d.left) + 'px';\n el.style.top = (north ? bottom0 - h : d.top) + 'px';\n if (east || west) el.style.width = w + 'px';\n if (north || south) el.style.height = h + 'px';\n }\n }\n\n function applyDrag(e) {\n if (!drag) return;\n const dx = e.clientX - drag.startX;\n const dy = e.clientY - drag.startY;\n if (!drag.started) {\n if (Math.hypot(dx, dy) < 3) return;\n if (!isPositioned(drag.el)) detach(drag.el);\n captureBaseline(drag);\n drag.started = true;\n }\n drag.moved = true;\n const el = drag.el;\n if (drag.mode === 'move') {\n let nl = drag.left + dx;\n let nt = drag.top + dy;\n nl = Math.max(MIN_SIZE - drag.visW, Math.min(SLIDE_W - MIN_SIZE, nl));\n nt = Math.max(MIN_SIZE - drag.visH, Math.min(SLIDE_H - MIN_SIZE, nt));\n el.style.left = nl + 'px';\n el.style.top = nt + 'px';\n } else {\n resizeShape(e);\n }\n showOverlay(el);\n }
1\n\n function endDrag() {\n if (!drag) return;\n const el = drag.el;\n if (drag.moved) {\n const p = freeParent(el);\n const pw = p.clientWidth || SLIDE_W;\n commitPercentPosition(el);\n if (drag.mode === 'resize' && drag.kind !== 'block') {\n el.style.width = round2((el.offsetWidth / pw) * 100) + '%';\n if (drag.kind === 'image' && drag.corner.length !== 1) {\n el.style.height = 'auto';\n } else if (drag.corner && /n|s/.test(drag.corner)) {\n const ph = p.clientHeight || SLIDE_H;\n const h = el.offsetHeight;\n if (drag.kind === 'text') {\n el.style.minHeight = round2((h / ph) * 100) + '%';\n el.style.height = 'auto';\n } else {\n el.style.height = round2((h / ph) * 100) + '%';\n }\n }\n }\n showOverlay(el);\n suppressNextClick = true;\n send({ type: 'patched', html: serializeSection() });\n }\n drag = null;\n }\n\n function deleteSelected() {\n if (!selectedEl) return;\n selectedEl.remove();\n selectedEl = null;\n gcPlaceholders();\n clearOverlay();\n send({ type: 'clear-select' });\n send({ type: 'patched', html: serializeSection() });\n }\n\n function nudgeSelected(key, shift) {\n if (!selectedEl) return;\n if (!isPositioned(selectedEl)) detach(selectedEl);\n const el = selectedEl;\n const step = shift ? 10 : 1;\n let dx = 0;\n let dy = 0;\n if (key === 'ArrowLeft') dx = -step;\n else if (key === 'ArrowRight') dx = step;\n else if (key === 'ArrowUp') dy = -step;\n else if (key === 'ArrowDown') dy = step;\n el.style.left = el.offsetLeft + dx + 'px';\n el.style.top = el.offsetTop + dy + 'px';\n commitPercentPosition(el);\n showOverlay(el);\n send({ type: 'patched', html: serializeSection() });\n }\n\n document.addEventListener('pointerdown', e => {\n if (editingEl) return;\n if (interactionMode !== 'drag') return;\n const target = e.target;\n if (watermarkRoot(target)) return;\n const handle = target && target.closest ? target.closest('[data-hds-handle]') : null;\n if (handle && selectedEl) {\n e.preventDefault();\n e.stopPropagation();\n beginDrag('resize', selectedEl, e, handle.getAttribute('data-hds-handle'));\n return;\n }\n const shape = resolveShape(target);\n const hitShape = resolveShapeAtPoint(target, e.clientX, e.clientY);\n const resolved = hitShape || shape;\n if (resolved && resolved !== sectionEl() && resolved !== document.body) {\n e.preventDefault();\n if (selectedEl !== resolved) selectElement(resolved);\n beginDrag('move', resolved, e);\n }\n }, true);\n\n document.addEventListener('pointermove', e => {\n if (drag) applyDrag(e);\n }, true);\n\n document.addEventListener('pointerup', () => {\n if (drag) endDrag();\n }, true);\n\n document.addEventListener('keydown', e => {\n if (editingEl) {\n if (e.key === 'Escape') {\n e.preventDefault();\n finishInlineEdit(false);\n } else if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n finishInlineEdit(true);\n }\n return;\n }\n if (!selectedEl) return;\n if (interactionMode === 'drag') {\n if (e.key === 'Delete' || e.key === 'Backspace') {\n e.preventDefault();\n deleteSelected();\n } else if (e.key.startsWith('Arrow')) {\n e.preventDefault();\n nudgeSelected(e.key, e.shiftKey);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n const parent = selectedEl.parentElement;\n const up = parent ? resolveShape(parent) : null;\n if (up && up !== selectedEl && up !== sectionEl() && up !== document.body) selectElement(up);\n else deselect();\n }\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n deselect();\n }\n }, true);\n\n document.addEventListener('blur', () => {\n if (editingEl) finishInlineEdit(true);\n }, true);\n\n (async function startup() {\n const style = document.createElement('style');\n style.setAttribute('data-hds-style', '');\n style.textContent =\n '[data-hds-id]{touch-action:none;-webkit-user-drag:none;}' +\n '[data-hds-watermark]{pointer-events:none!important;user-select:none!important;-webkit-user-select:none!important;}' +\n '[data-hds-mode=\"drag\"] [data-hds-id]{cursor:move;}' +\n '[data-hds-mode=\"drag\"] [data-hds-id]:hover{outline:1px dashed rgba(0,122,255,0.5);outline-offset:1px;}';\n document.head.appendChild(style);\n document.body.setAttribute('data-hds-mode', interactionMode);\n disableScripts();\n await renderMermaid();\n send({ type: 'ready' });\n })();\n})();\n"),eg=(e,t,n)=>ex({headHtml:e,slideHtml:ef(t,!0),assetsBaseUrl:n,runtimeScript:em}),ef=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=new DOMParser().parseFromString(e,"text/html").body.firstElementChild;return n?(t?n.setAttribute("data-goagent-active-slide","true"):n.removeAttribute("data-goagent-active-slide"),n.outerHTML):e},ex=e=>{let{headHtml:t,slideHtml:n,assetsBaseUrl:r,runtimeScript:a}=e;return'<!doctype html>\n<html>\n<head>\n<meta charset="UTF-8">\n<base href="'.concat(r,'">\n<meta name="viewport" content="width=').concat(1280,", height=").concat(720,'">\n').concat(t,"\n<style>\nhtml,body{\n width:").concat(1280,"px;\n height:").concat(720,'px;\n overflow:hidden;\n margin:0;\n padding:0;\n scroll-snap-type:none !important;\n}
1\nbody{display:block !important;gap:0 !important;padding:0 !important;}\ndiv.slide,div[class~="slide"],div[class~="slide-container"]{\n width:').concat(1280,"px !important;\n min-height:").concat(720,"px !important;\n max-height:").concat(720,'px !important;\n flex-shrink:0 !important;\n scroll-snap-align:none !important;\n}\n[data-hds-mode="drag"] *{user-select:none;}\n</style>\n</head>\n<body>\n').concat(n,"\n").concat(a?"<script data-hds-runtime>".concat(y(a),"<\/script>"):"","\n</body>\n</html>")},eb=(e,t,n)=>'<!doctype html><html><head>\n<meta charset="UTF-8">\n<base href="'.concat(n,'">\n').concat(e,"\n<style>\n html,body{width:").concat(1280,"px;height:").concat(720,'px;overflow:hidden;margin:0;padding:0;display:block;}\n div[class~="slide"],div[class~="slide-container"]{width:').concat(1280,"px!important;min-height:").concat(720,"px!important;max-height:").concat(720,"px!important;}\n</style>\n</head><body>").concat(ef(t),"</body></html>"),ev=(0,s.memo)(function(e){let{headHtml:t,slideHtml:n,assetsBaseUrl:a,title:l}=e,o=(0,s.useMemo)(()=>eb(t,n,a),[a,t,n]);return(0,r.jsx)("div",{className:"relative aspect-video overflow-hidden rounded-md bg-[#1A1A1A] [container-type:inline-size]",children:(0,r.jsx)("div",{className:"pointer-events-none absolute left-0 top-0 h-[720px] w-[1280px] origin-top-left [transform:scale(calc(100cqw/1280px))]",children:(0,r.jsx)("iframe",{title:l,className:"block h-[720px] w-[1280px] border-0",srcDoc:o,sandbox:"allow-scripts"})})})});function ey(e){let{open:t,sessionId:n,file:a,role:x,version:b,onClose:y,onCommitted:S}=e,{t:A}=(0,f.o)(),C=(0,s.useRef)(null),R=(0,s.useRef)(null),F=(0,s.useRef)(null),Y=(0,s.useRef)(null),G=(0,s.useRef)(null),K=(0,s.useRef)(""),V=(0,s.useRef)(null),$=(0,s.useRef)(null),J=(0,s.useRef)(null),ee=(0,s.useRef)(null),en=(0,s.useRef)(null),er=(0,s.useRef)(!1),em=(0,s.useRef)(null),ef=(0,s.useRef)("edit"),ex=(0,s.useRef)(new Map),eb=(0,s.useRef)(1),ey=(0,s.useRef)([]),ew=(0,s.useRef)(new Map),[ej,eE]=(0,s.useState)(!1),[ek,eN]=(0,s.useState)(!1),[eS,eA]=(0,s.useState)(A(g.g["æ£å¨æ¸²æé¡µé¢"])),[eC,eR]=(0,s.useState)(!1),[eL,eD]=(0,s.useState)(null),[e_,eT]=(0,s.useState)(null),[eM,eP]=(0,s.useState)(""),[eI,eH]=(0,s.use
1State)(""),[ez,eO]=(0,s.useState)(""),[eF,eB]=(0,s.useState)([]),[eW,eU]=(0,s.useState)(""),[eq,eX]=(0,s.useState)(0),[eZ,eY]=(0,s.useState)("edit"),[eG,eK]=(0,s.useState)(null),[eV,e$]=(0,s.useState)(!1),[eQ,eJ]=(0,s.useState)(""),[e0,e1]=(0,s.useState)(""),[e2,e4]=(0,s.useState)(!1),[e5,e3]=(0,s.useState)(!1),[e6,e7]=(0,s.useState)(Z),[e9,e8]=(0,s.useState)(!1),[te,tt]=(0,s.useState)([]),[tn,tr]=(0,s.useState)([]),[ta,tl]=(0,s.useState)({active:!1,over:!1}),ts=eF[eq]||null;G.current=ts;let to=!!(eG&&eh.has(eG.tagName)),ti=(null==eG?void 0:eG.style.textDecoration)||"",td=ti.includes("underline"),tc=ti.includes("line-through"),tu=(null==a?void 0:a.name)||w(null==a?void 0:a.path).split("/").pop()||"deck.html",tp=(null==a?void 0:a.version)||b||w(null==a?void 0:a.path).split("/")[0]||"",th=eW||tp,tm=(0,s.useCallback)(e=>{if(!n)return"./";let t=k(e);if(!t)return"./";try{let e=u.Lo.getState()[u.pB.getPreviewFileUrl]({sessionId:n,filePath:t,currentViewingRole:x,version:th,isTeamMode:!!x});return e.endsWith("/")?e:"".concat(e,"/")}catch(e){return"./"}},[th,x,n]),tg=tm(ez||(null==a?void 0:a.path)),tf=(0,s.useCallback)(()=>{em.current&&(clearTimeout(em.current),em.current=null)},[]),tx=(0,s.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:A(g.g["æ£å¨æ¸²æé¡µé¢"]);tf(),eA(e),eN(!0),em.current=setTimeout(()=>{eN(!1),em.current=null},2200)},[tf,A]),tb=(0,s.useCallback)((e,t)=>e instanceof Error?"æªè¯å«å° PPT 页é¢"===e.message?A(g.g["æªè¯å«å° PPT 页é¢"]):"缺å°å¯è¯»åç PPT HTML æä»¶"===e.message?A(g.g["缺å°å¯è¯»åç PPT HTML æä»¶"]):e.message||A(t):A(t),[A]),tv=(0,s.useCallback)(()=>{tf(),em.current=setTimeout(()=>{eN(!1),em.current=null},140)},[tf]),ty=(0,s.useCallback)((e,t)=>{eB(n=>{let r="function"==typeof e?e(n):e;return(null==t?void 0:t.keepHistory)||(tt(e=>[...e.slice(-29),n]),tr([])),(null==t?void 0:t.dirty)!==!1&&e8(!0),r.map((e,t)=>{let n=t+1,r=N(e.html,n);return e.ordinal===n&&e.title===r?e:{...e,ordinal:n,title:r}})})},[]),tw=(0,s.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eq,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:eI,r=arguments.length>3?arguments[3]:void 0;eK(null),eJ((null==e?void 0:e.html)||""),r?tx(r):(tf(),eN(!1)),e1(eg(n,(null==e?void 0:e.html)||"",tg)),K.current=X(e,t,n),V.current=null,$.current=null,J.current=null},[eq,tg,tf,eI,tx]),tj=(0,s.useCallback)(e=>{let t=eF[e];t&&(eX(e),tw(t,e,eI))},[eI,eF,tw]),tE=(0,s.useCallback)(e=>{V.current=e,eB(t=>{let n=t[eq];return n&&n.html!==e?(tt(e=>[...e.slice(-29),t]),tr([]),e8(!0),t.map((t,n)=>n===eq?{...t,html:e,title:N(e,n+1)}:t)):t})},[eq]),tk=(0,s.useCallback)(()=>O(eM,eF),[eM,eF]),tN=(0,s.useCallback)(e=>{let t=I(eb.current),n="asset_".concat(eb.current);eb.current+=1;let r={tempId:t,fileField:n,originalName:e.name||void 0,file:e};return ex.current.set(t,r),r},[]),tS=(0,s.useCallback)(()=>{let e=[],t=[],n=[],r=new Set,a=new Set(eF.map(e=>e.sourcePath).filter(Boolean)),l=ey.current.filter(e=>e&&!a.has(e)),s=eF.length!==ey.current.length;eF.forEach(a=>{let l=H(a.html);if(a.sourcePath){if(n.push({path:a.sourcePath}),a.sourcePath!==ey.current[n.length-1]&&(s=!0),!a.sourceHtml)return;let t=ew.current.get(a.sourcePath)||a.originalHtml;if(t&&a.html===t)return;let o=P(T(a.sourceHtml,l,a.sourceSlideIndex||0));z(o).forEach(e=>r.add(e)),e.push({path:a.sourcePath,html:o});return}let o=a.id||v();n.push({temp_page_id:o}),s=!0;let i=P(M(eI,l));z(i).forEach(e=>r.add(e)),t.push({temp_page_id:o,html:i})});let o=Array.from(r).map(e=>ex.current.get(e)).filter(e=>!!e);return{changedPages:e,addedPages:t,deletedPages:l,pageOrder:n,pageOrderChanged:s,uploadedAssets:o.map(e=>({temp_id:e.tempId,file_field:e.fileField,original_name:e.originalName})),files:o.map(e=>({field:e.fileField,file:e.file}))}},[eI,eF]),tA=(0,s.useCallback)(e=>{var t,n;null===(n=C.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage(e,"*")},[]),tC=(0,s.useCallback)(e=>{let t=Q({...e6,...e});e7(t),ty(e=>e.map(e=>({...e,html:ea(e.html,t)})),{keepHistory:!0}),tA({type:"set-watermark",config:t})},[ty,tA,e6]),tR=(0,s.useCallback)(async(e,t)=>{if(e.content)return{html:e.content,assetPath:e.path||e.name||""};let r=(Array.isArray(e.list)?e.list:[]).filter(e=>{let t="string"==typeof e?e:String((null==e?void 0:e.path)||(null==e?void 0:e.name)||"");return/\.html?$/i.test(t)}),a=E(e.path||e.name,e.total_pages),l=a.length>r.length?a.filter(e=>{let t=w(e);return!r.some(e=>w("string"==typeof e?e:String(e.path||e.name||""))===t)}):[],s=[...r,...l];if(s.length>0){var o;let r=await Promise.all(s.slice().sort((e,t)=>
1{let n="string"==typeof e?e:e.path||e.name,r="string"==typeof t?t:t.path||t.name;return j(n)-j(r)}).map(async(r,a)=>{let l="string"==typeof r?r:String(r.path||r.name||"");if("string"!=typeof r&&r.content)return{fileName:l,html:r.content};let s=await (0,i.wS)({workspaceId:n||"",filePath:l,fileName:w(l).split("/").pop(),sessionId:n||void 0,version:e.version||b||void 0,currentViewingRole:e.agentRole||e.role||x||null,isTeamMode:!!(x||e.agentRole||e.role),signal:t}).catch(e=>{if(e instanceof Error&&"AbortError"===e.name)throw e;throw Error("第 ".concat(a+1," 页读å失败"))});return{fileName:l,html:s}})),a=B(r);if(!a)throw Error("æªè¯å«å° PPT 页é¢");return{html:a,assetPath:(null===(o=r[0])||void 0===o?void 0:o.fileName)||e.path||"",pageFiles:r}}let d=e.path||e.name||"";if(!n||!d)throw Error("缺å°å¯è¯»åç PPT HTML æä»¶");return{html:await (0,i.wS)({workspaceId:n,filePath:d,fileName:e.name||w(d).split("/").pop(),sessionId:n,version:e.version||b||void 0,currentViewingRole:e.agentRole||e.role||x||null,isTeamMode:!!(x||e.agentRole||e.role),signal:t}),assetPath:d}},[x,n,b]);(0,s.useEffect)(()=>{if(!t||!a)return;if(er.current){er.current=!1;return}let e=new AbortController;return(async()=>{eE(!0),eT(null),tx(A(g.g["æ£å¨å è½½ PPT"])),eK(null),e8(!1),tt([]),tr([]),eU(a.version||b||w(a.path).split("/")[0]||""),e$(!1),e4(!1),e3(!1),e7(Z),en.current=null;try{var t,n,r;let l=await tR(a,e.signal);ex.current.clear(),eb.current=1;let s=(null===(t=l.pageFiles)||void 0===t?void 0:t.length)?D(l.pageFiles):_(L(l.html,"import"),l.html,l.assetPath);if(!s.slides.length)throw Error("æªè¯å«å° PPT 页é¢");e7(et(s.slides)||Z),eP("rawHtml"in s?s.rawHtml:l.html),eH(s.headHtml),eO("assetPath"in s?s.assetPath:l.assetPath),ey.current=s.slides.map(e=>e.sourcePath||""),ew.current=new Map(s.slides.filter(e=>e.sourcePath).map(e=>[e.sourcePath,e.originalHtml||e.html]));let o=tm("assetPath"in s?s.assetPath:l.assetPath);eB(s.slides),eX(0),eK(null),eJ((null===(n=s.slides[0])||void 0===n?void 0:n.html)||""),tx(A(g.g["æ£å¨æ¸²æé¡µé¢"])),e1(eg(s.headHtml,(null===(r=s.slides[0])||void 0===r?void 0:r.html)||"",o)),K.current=s.slides[0]?X(s.slides[0],0,s.headHtml):"",V.current=null,$.current=null,J.current=null}catch(e){if(e instanceof Error&&"AbortError"===e.name)return;eT(tb(e,g.g["PPT 读å失败"])),eB([]),eN(!1)}finally{eE(!1)}})(),()=>e.abort()},[tm,a,tb,tR,t,tx,A]),(0,s.useEffect)(()=>{t||(tf(),eN(!1))},[tf,t]),(0,s.useEffect)(()=>{if(!t)return;let e=e=>{var t,n,r,a,l,s,o,i,d,c;if(e.source!==(null===(t=C.current)||void 0===t?void 0:t.contentWindow))return;let u=e.data;if(u&&"object"==typeof u){if("ready"===u.type){tv(),null===(r=C.current)||void 0===r||null===(n=r.contentWindow)||void 0===n||n.postMessage({type:"set-mode",mode:eZ},"*");let e=J.current;J.current=null,e&&e.slideId===(null==ts?void 0:ts.id)?null===(l=C.current)||void 0===l||null===(a=l.contentWindow)||void 0===a||a.postMessage({type:"select-element",selector:e.selector},"*"):null===(o=C.current)||void 0===o||null===(s=o.contentWindow)||void 0===s||s.postMessage({type:"select-default"},"*");return}if("select"===u.type){ee.current=null,$.current=u.selector,eK(u);return}if("clear-select"===u.type){let e=ee.current;if(e&&e.slideId===(null==ts?void 0:ts.id)&&Date.now()<e.until)return;$.current=null,eK(null);return}if("patched"===u.type){let e=((null===(i=ee.current)||void 0===i?void 0:i.slideId)===(null==ts?void 0:ts.id)?ee.current.selector:null)||$.current;e&&(null==ts?void 0:ts.id)&&(J.current={slideId:ts.id,selector:e},null===(c=C.current)||void 0===c||null===(d=c.contentWindow)||void 0===d||d.postMessage({type:"select-element",selector:e},"*")),tE(u.html)}}};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[eq,null==ts?void 0:ts.id,eZ,t,tE]),(0,s.useEffect)(()=>{let e=G.current,t=X(e,eq,eI);K.current!==t&&tw(e,eq,eI)},[eq,null==ts?void 0:ts.id,eI,tw]),(0,s.useEffect)(()=>{var e,t;ef.current=eZ,null===(t=C.current)||void 0===t||null===(e=t.contentWindow)||void 0===e||e.postMessage({type:"set-mode",mode:eZ},"*")},[null==ts?void 0:ts.id,eZ]);let tL=(0,s.useCallback)(e=>{eG&&(ee.current={slideId:(null==ts?void 0:ts.id)||"",selector:eG.selector,until:Date.now()+1200},$.current=eG.selector,eK(t=>{if(!t||t.selector!==eG.selector)return t;let n={...t,attrs:{...t.attrs},style:{...t.style}};
1return e.forEach(e=>{"text"===e.kind?n.text=e.value:"attr"===e.kind?null===e.value?delete n.attrs[e.name]:n.attrs[e.name]=e.value:"style"===e.kind&&(null===e.value?delete n.style[e.name]:n.style[e.name]=e.value)}),n}),tA({type:"patch",selector:eG.selector,ops:e}))},[null==ts?void 0:ts.id,tA,eG]),tD=(0,s.useCallback)((e,t)=>tL([{kind:"style",name:e,value:t}]),[tL]),t_=(0,s.useCallback)(()=>{ts&&(ty(e=>e.map((e,t)=>t===eq?{...e,html:eQ}:e)),tx(A(g.g["æ£å¨åºç¨é¡µé¢"])),e1(eg(eI,eQ,tg)),ts&&(K.current=X(ts,eq,eI)),m.o.success(A(g.g["å·²åºç¨å½å页 HTML"])))},[eq,ts,tg,eQ,ty,eI,tx,A]),tT=(0,s.useCallback)(()=>{tt(e=>{var t;let n=e[e.length-1];if(!n)return e;tr(e=>[eF,...e]),eB(n),eX(e=>q(e,n.length)),tx(A(g.g["æ£å¨æ¢å¤é¡µé¢"])),e1(eg(eI,(null===(t=n[q(eq,n.length)])||void 0===t?void 0:t.html)||"",tg));let r=q(eq,n.length);return K.current=X(n[r],r,eI),e8(!0),e.slice(0,-1)})},[eq,tg,eI,tx,eF,A]),tM=(0,s.useCallback)(()=>{tr(e=>{var t;let n=e[0];if(!n)return e;tt(e=>[...e.slice(-29),eF]),eB(n),eX(e=>q(e,n.length)),tx(A(g.g["æ£å¨æ¢å¤é¡µé¢"])),e1(eg(eI,(null===(t=n[q(eq,n.length)])||void 0===t?void 0:t.html)||"",tg));let r=q(eq,n.length);return K.current=X(n[r],r,eI),e8(!0),e.slice(1)})},[eq,tg,eI,tx,eF,A]),tP=((0,s.useCallback)(e=>{let t=eF[e];if(!t)return;let n=v();ty(r=>{let a={...t,id:n,html:t.html.replace(/data-page-id="[^"]*"/,'data-page-id="'.concat(n,'"')),sourcePath:void 0,sourceHtml:void 0,sourceSlideIndex:void 0,originalHtml:void 0},l=[...r];return l.splice(e+1,0,a),l}),eX(e+1)},[ty,eF]),(0,s.useCallback)(e=>{if(eF.length<=1){m.o.warning(A(g.g["è³å°ä¿ç 1 页"]));return}ty(t=>t.filter((t,n)=>n!==e)),eX(t=>q(t>=e?t-1:t,eF.length-1))},[ty,eF.length,A]),(0,s.useCallback)((e,t)=>{let n=e+t;n<0||n>=eF.length||(ty(t=>{let r=[...t],[a]=r.splice(e,1);return r.splice(n,0,a),r}),eX(n))},[ty,eF.length])),tI=(0,s.useCallback)(async(e,t)=>{var n;let r=e instanceof File?e:null===(n=e.target.files)||void 0===n?void 0:n[0];if(e instanceof File||(e.target.value=""),!r)return;let a=tN(r),l=await W(r),{width:s,height:o}=await U(r),i=s/Math.max(1,o),d=460.79999999999995,c=460.79999999999995/i;c>648&&(d=(c=648)*i);let u=Y.current,p=null==u?void 0:u.getBoundingClientRect(),h=(null==p?void 0:p.width)?p.width/1280:1,m=t&&p?(t.clientX-p.left)/h:640,g=t&&p?(t.clientY-p.top)/h:360,f=Math.max(0,Math.min(1280-d,m-d/2)),x=Math.max(0,Math.min(720-c,g-c/2));eY("drag"),tA({type:"set-mode",mode:"drag"}),tA({type:"insert-image",id:v(),assetId:a.tempId,src:l,leftPct:f/1280*100,topPct:x/720*100,widthPct:d/1280*100})},[tN,tA]),tH=(0,s.useCallback)(async e=>{var t;let n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(e.target.value="",!n||!eG)return;let r=tN(n);tL([{kind:"attr",name:"src",value:await W(n)},{kind:"attr",name:"data-hds-asset-id",value:r.tempId}])},[tN,eG,tL]),tz=(0,s.useCallback)(async e=>{let t=Array.from(e.dataTransfer.files).find(e=>e.type.startsWith("image/"));t&&(e.preventDefault(),e.stopPropagation(),tl({active:!1,over:!1}),await tI(t,{clientX:e.clientX,clientY:e.clientY}))},[tI]),tO=(0,s.useCallback)(async function(){let e,t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];if(!n)return m.o.warning(A(g.g["缺å°ä¼è¯ä¿¡æ¯æä¸è½ä¿åå°å端"])),!1;if(!th)return m.o.warning(A(g.g["缺å°åºåçæ¬å·æä¸è½ä¿åå°å端"])),!1;try{e=tS()}catch(e){return m.o.warning(tb(e,g.g["å½å PPT æä¸è½ä¿å"])),!1}if(!e.changedPages.length&&!e.addedPages.length&&!e.deletedPages.length&&!e.pageOrderChanged)return t&&m.o.info(A(g.g["没æéè¦ä¿åçæ¹å¨"])),e8(!1),ew.current=new Map(eF.map(e=>[e.sourcePath||e.id,e.html])),en.current=a?{name:a.name||tu,path:a.path||tu,relative_path:a.path||tu,size:0,extension:".html",content:a.content,type:a.type||"show",version:th,list:a.list,total_pages:a.total_pages||eF.length,agentRole:a.agentRole||a.role||x||void 0,role:a.role||a.agentRole||x||void 0}:null,er.current=!0,!0;eR(!0);try{let r=await (0,d.o)({sessionId:n,baseVersion:th,changedPages:e.changedPages,addedPages:e.addedPages,deletedPages:e.deletedPages,pageOrder:e.pageOrder,uploadedAssets:e.uploadedAssets,files:e.files}),l=(null==r?void 0:r.result_file)||{},s=new Blob([tk()]).size,o={name:String(l.name||"").trim()||tu,path:String(l.path||l.relative_path||"").trim()||(null==a?void 0:a.path)||tu,relative_path:String(l.relative_path||l.path||"").trim()||(null==a?void 0:a.path)||tu,size:"number"==typeof l.size?l.size:s,extension:l.extension||".html",modified:l.modified||new Date().toISOString(),content:l.content,type:l.type||"show",version:l.version||(null==r?void 0:r.latest_version)||th,list:l.list||(null==a?void 0:a.list),total_pages:"number"==typeof l.total_pages?l.total_pages:(null==a?void 0:a.total_pages)||eF.length,agentRole:l.agentRole||(null==a?void 0:a.agentRole)||x||void 0,role:l.role||(null==a?void 0:a.role)||x||void 0};if(en.current=o,Array.isArray(o.list)&&o.list.length){let e=o.list.map(e=>"string"==typeof e?e:String((null==e?void 0:e.path)||(null==e?void 0:e.name)||"")).filter(
1Boolean);e.length===eF.length?(ey.current=eF.map(e=>e.sourcePath||""),ew.current=new Map(eF.flatMap((t,n)=>[[t.sourcePath||t.id,t.html],[e[n]||t.sourcePath||t.id,t.html]]))):(ey.current=eF.map(e=>e.sourcePath||"").filter(Boolean),ew.current=new Map(eF.map(e=>[e.sourcePath||e.id,e.html])))}else ey.current=eF.map(e=>e.sourcePath||"").filter(Boolean),ew.current=new Map(eF.map(e=>[e.sourcePath||e.id,e.html]));return eU(o.version||th),e8(!1),er.current=!0,null==S||S(o),t&&m.o.success(A(g.g["å·²ä¿å PPT ç¼è¾ç»æ"])),!0}catch(e){return m.o.error(tb(e,g.g["ä¿å失败"])),!1}finally{eR(!1)}},[th,tS,tk,null==a?void 0:a.agentRole,null==a?void 0:a.content,null==a?void 0:a.list,null==a?void 0:a.path,null==a?void 0:a.role,null==a?void 0:a.type,null==a?void 0:a.total_pages,null==a?void 0:a.version,S,x,n,eI,eF,eF.length,tu,A,tb]),tF=(0,s.useCallback)(()=>{let e=en.current;return(null==e?void 0:e.version)||th||(null==a?void 0:a.version)||b||(null==e?void 0:e.name)||(null==a?void 0:a.name)||tu},[th,null==a?void 0:a.name,null==a?void 0:a.version,tu,b]),tB=(0,s.useCallback)(async()=>!e9||!!await tO(!1),[e9,tO]),tW=(0,s.useCallback)(async e=>{if(!eC&&!eL){if(!n){m.o.warning(A(g.g["缺å°ä¼è¯ä¿¡æ¯æä¸è½ä¸è½½"]));return}eD(e);try{if(!await tB())return;let t=tF();if(!t){m.o.warning(A(g.g["没æå¯ä¸è½½çæä»¶"]));return}if(!await (0,c.r9)({session_id:n,file_name:t,target_format:e,landscape:"zip"!==e||void 0}))return;e4(!1)}finally{eD(null)}}},[tB,eL,tF,eC,n,A]),tU=(0,s.useCallback)(async()=>{await tO(!0)},[tO]),tq=(0,s.useCallback)(()=>{if(e9){e3(!0);return}y()},[e9,y]),tX=(0,s.useCallback)(async()=>{await tO(!1)&&(e3(!1),y())},[y,tO]),tZ=(0,s.useCallback)(()=>{e3(!1),y()},[y]);return t?(0,r.jsx)("div",{className:"fixed inset-0 z-[1060] flex bg-black/70 text-[#E7E7E7]",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 relative m-4 flex min-h-0 flex-1 overflow-hidden rounded-lg border border-white/10 bg-[#050505] shadow-2xl",children:[(0,r.jsxs)("aside",{className:"jsx-a6d7652413021943 z-10 flex w-[220px] min-w-[220px] flex-col gap-2 overflow-y-auto border-r border-white/10 bg-[rgba(28,29,33,0.82)] p-3 backdrop-blur-xl",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-1 min-w-0 px-1",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 truncate text-[13px] font-medium text-white",children:A(g.g["PPT å¨çº¿ç¼è¾"])}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 truncate text-[11px] text-[#8F8F8F]",children:tu})]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 min-h-0 flex-1 space-y-2 overflow-y-auto p-2",children:[ej&&(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex h-32 items-center justify-center text-[12px] text-[#ADADAD]",children:[(0,r.jsx)(o.Fat,{className:"mr-2 h-4 w-4 animate-spin"}),A(g.g["读å PPT"])]}),!ej&&e_&&(0,r.jsx)("div",{className:"jsx-a6d7652413021943 rounded-md border border-[#704343] bg-[#3A2727] p-3 text-[12px] text-[#F0B0B0]",children:e_}),!ej&&!e_&&eF.map((e,t)=>(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+((0,h.cn)("group relative rounded-lg border p-1 transition-all",t===eq?"border-[#7E14FF] ring-2 ring-[rgba(126,20,255,0.35)]":"border-white/10 hover:border-[rgba(126,20,255,0.6)]")||""),children:[(0,r.jsx)("button",{type:"button",onClick:()=>tj(t),className:"jsx-a6d7652413021943 block w-full cursor-pointer text-left",children:(0,r.jsx)(ev,{title:"slide-".concat(t+1),headHtml:eI,slideHtml:e.html,assetsBaseUrl:tg})}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 absolute left-2 top-2 rounded bg-black/55 px-1.5 py-0.5 font-mono text-[10px] leading-none text-white",children:t+1}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 absolute bottom-2 left-2 max-w-[calc(100%-16px)] truncate rounded bg-black/45 px-1.5 py-0.5 text-[10px] text-white/75 opacity-0 transition-opacity group-hover:opacity-100",children:e.title}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 absolute right-1.5 top-1.5 flex gap-1 rounded-md bg-black/35 p-0.5 opacity-0 shadow-sm backdrop-blur-md transition-opacity group-hover:opacity-100",children:[(0,r.jsx)("button",{type:"button",disabled:0===t,onClick:()=>tP(t,-1),"aria-label":A(g.g["ä¸ç§»"]),className:"jsx-a6d7652413021943 "+(el||""),children:(0,r.jsx)(o.avw,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("button",{type:"button",disabled:t===eF.length-1,onClick:()=>tP(t,1),"aria-label":A(g.g["ä¸ç§»"]),className:"jsx-a6d7652413021943 "+(el||""),children:(0,r.jsx)(o.RFQ,{className:"h-3.5 w-3.5"})}),null]})]},"".concat(e.id,":").concat(t)))]})]}),(0,r.jsxs)("main",{className:"jsx-a6d7652413021943 relative flex min-w-0 flex-1 flex-col bg-[radial-gradient(900px_560px_at_50%_-10%,rgba(255,255,255,0.08),transparent_62%),radial-gradient(980px_620px_at_50%_118%,rgba(255,255,255,0.05),transparent_64%),linear-gradient(180deg,#151515_0%,#050505_100%)]",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute left-1/2 top-4 z-20 -translate-x-1/2 xl:left-[calc(50%-160px)]",children:(0,r.jsx)("div",{className:"jsx-a6d7652413021943 inline-flex items-center gap-2.5 rounded-full border border-white/10 bg-[rgba(12,12,14,0.82)] px-2 py-2 text-white/90 shadow-[0_1px_0_rgba(255,255,255,0.08)_inset,0_10px_30px_rgba(0,0,0,0.4)] backdrop-blur-xl",children:(0,r.jsxs)("div",{role:"tablist",className:"jsx-a6d7652413021943 flex rounded-full border border-white/10 bg-black/35 p-1.5",children:[(0,r.jsxs)("button",{type:"button",role:"tab","aria-selected":"edit"===eZ,onClick:()=>eY("edit"),className:"jsx-a6d7652413021943 "+((0,h.cn)("flex h-10 items-center gap-2 rounded-full px-4 text-[14px] font-semibold transition-all","edit"===eZ?"bg-white !text-[#111111] shadow-[0_8px_22px_rgba(255,255,255,0.16)] [&_*]:!text-[#111111]":"text-white/62 hover:bg-white/10 hover:text-white")||""),children:[(0,r.jsx)(o.Ics,{className:"h-4.5 w-4.5"}),A(g.g["ç¼è¾æ¨¡å¼"])]}),(0,r.jsxs)("button",{type:"button",role:"tab","aria-selected":"drag"===eZ,onClick:()=>eY("drag"),className:"jsx-a6d7652413021943 "+((0,h.cn)("flex h-10 items-center gap-2 rounded-full px-4 text-[14px] font-semibold transition-all","drag"===eZ?"bg-white !text-[#111111] shadow-[0_8px_22px_rgba(255,255,255,0.16)] [&_*]:!text-[#111111]":"text-white/62 hover:bg-white/10 hover:text-white")||""),children:[(0,r.jsx)(o.vXC,{className:"h-4.5 w-4.5"}),A(g.g["ææ½æ¨¡å¼"])]})]})})}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute right-4 top-[88px] z-20 max-w-[calc(100%-32px)] xl:top-4 xl:max-w-[calc(50%-24px)]",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 inline-flex max-w-full items-center gap-2.5 overflow-x-auto rounded-full border border-white/10 bg-[rgba(12,12,14,0.76)] px-2.5 py-1.5 text-white/90 shadow-[0_1px_0_rgba(255,255,255,0.08)_inset,0_10px_30px_rgba(0,0,0,0.4)] backdrop-blur-xl [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:[(0,r.jsx)("button",{type:"button",onClick:()=>{eV||eJ((null==ts?void 0:ts.html)||""),e$(e=>!e)},"aria-label":"HTML",className:"jsx-a6d7652413021943 "+((0,h.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-white/60 hover:bg-white/10 hover:text-white",eV&&"bg-white/15 text-white")||""),children:(0,r.jsx)(o.LLk,{className:"h-4 w-4"})}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 h-4 w-px shrink-0 bg-white/15"}),(0,r.jsxs)("button",{type:"button",onClick:tT,disabled:!te.length,className:"jsx-a6d7652413021943 "+(es||""),children:[(0,r.jsx)(o.Ll9,{className:"h-4 w-4 -scale-x-100"}),A(g.g["æ¤é"])]}),(0,r.jsxs)("button",{type:"button",onClick:tM,disabled:!tn.length,className:"jsx-a6d7652413021943 "+(es||""),children:[(0,r.jsx)(o.Ll9,{className:"h-4 w-4"}),A(g.g["éå"])]}),(0,r.jsx)("input",{ref:R,type:"file",accept:"image/*",onChange:tI,className:"jsx-a6d7652413021943 hidden"}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 h-4 w-px shrink-0 bg-white/15"}),(0,r.jsxs)("button",{type:"button",onClick:tU,disabled:!e9||!eF.length||e
1C,className:"jsx-a6d7652413021943 "+((0,h.cn)(es,e9&&"border border-[#5EA0FF]/70 bg-[#5EA0FF] px-3 text-white shadow-[0_0_0_1px_rgba(94,160,255,0.2),0_8px_20px_rgba(94,160,255,0.28)] hover:bg-[#75AEFF]")||""),children:[eC?(0,r.jsx)(o.Fat,{className:"h-4 w-4 animate-spin"}):(0,r.jsx)(o.S8A,{className:"h-4 w-4"}),e9?A(g.g.ä¿åä¿®æ¹):A(g.g["å·²ä¿å"])]}),(0,r.jsxs)("button",{type:"button",onClick:()=>e4(!0),disabled:!eF.length,className:"jsx-a6d7652413021943 flex h-8 shrink-0 items-center gap-1 rounded-md border border-white/12 bg-white/[0.08] px-2.5 text-[12px] font-medium text-white/85 transition-colors hover:border-white/20 hover:bg-white/[0.14] hover:text-white disabled:pointer-events-none disabled:opacity-35",children:[(0,r.jsx)(o.U3X,{className:"h-4 w-4"}),e9?A(g.g["ä¿åå¹¶ä¸è½½"]):A(g.g.ä¸è½½)]}),(0,r.jsx)("button",{type:"button",onClick:tq,"aria-label":A(g.g["å
³é"]),className:"jsx-a6d7652413021943 flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-white/60 hover:bg-white/10 hover:text-white",children:(0,r.jsx)(o.Qks,{className:"h-5 w-5"})})]})}),e9&&(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute left-4 top-[92px] z-20 rounded-full bg-black/45 px-3 py-1 text-[12px] text-white/55 backdrop-blur xl:top-4",children:A(g.g["æªä¿å"])}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute bottom-4 left-4 z-20 rounded-full bg-black/45 px-3 py-1 font-mono text-[12px] text-white/55 backdrop-blur",children:eF.length?"".concat(eq+1," / ").concat(eF.length):"0 / 0"}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex min-h-0 flex-1 pt-36 xl:pt-16",children:[(0,r.jsx)("div",{onDragEnter:e=>{Array.from(e.dataTransfer.items).some(e=>"file"===e.kind)&&tl({active:!0,over:!1})},onDragOver:e=>{Array.from(e.dataTransfer.items).some(e=>"file"===e.kind)&&(e.preventDefault(),tl({active:!0,over:!0}))},onDragLeave:()=>tl({active:!1,over:!1}),onDrop:tz,className:"jsx-a6d7652413021943 flex min-w-0 flex-1 items-center justify-center overflow-auto p-6",children:(0,r.jsxs)("div",{ref:Y,className:"jsx-a6d7652413021943 relative aspect-video w-full max-w-[1280px] overflow-hidden rounded-md bg-[#101012] shadow-[0_20px_60px_rgba(0,0,0,0.45)] [container-type:inline-size]",children:[ts?(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute left-0 top-0 h-[720px] w-[1280px] origin-top-left [transform:scale(calc(100cqw/1280px))]",children:(0,r.jsx)("iframe",{ref:C,title:"PPT editor canvas",srcDoc:e0,sandbox:"allow-scripts",onLoad:tv,className:"jsx-a6d7652413021943 "+((0,h.cn)("block h-[720px] w-[1280px] border-0 bg-[#101012] transition-opacity duration-150",ek&&"opacity-0")||"")},"".concat(ts.id,":").concat(eq))}):ej?(0,r.jsx)("div",{className:"jsx-a6d7652413021943 flex h-full items-center justify-center bg-[#101012] text-[13px] text-white/70",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex w-full max-w-[320px] flex-col items-center text-center",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-white/[0.06] ring-1 ring-white/[0.08]",children:(0,r.jsx)(o.Fat,{className:"h-6 w-6 animate-spin text-white/78 motion-reduce:animate-none"})}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[14px] font-medium leading-6 text-white/88",children:A(g.g["æ£å¨å è½½ PPT"])}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-1 text-[12px] leading-5 text-white/45",children:A(g.g["æ£å¨è¯»å并渲æ HTML 页é¢"])})]})}):(0,r.jsx)("div",{className:"jsx-a6d7652413021943 flex h-full items-center justify-center bg-[#242424] text-[13px] text-[#ADADAD]",children:A(g.g["ææ å¯ç¼è¾é¡µé¢"])}),ts&&ek&&(0,r.jsx)("div",{className:"jsx-a6d7652413021943 pointer-events-none absolute inset-0 z-10 flex items-center justify-center bg-[#101012] text-white",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex w-full max-w-[320px] flex-col items-center text-center",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-white/[0.06] ring-1 ring-white/[0.08]",children:(0,r.jsx)(o.Fat,{className:"h-6 w-6 animate-spin text-white/78 motion-reduce:animate-none"})}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[14px] font-medium leading-6 text-white/88",children:eS}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-1 text-[12px] leading-5 text-white/45",children:A(g.g["æ£å¨åå¤å½åå¹»ç¯ç"])}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mt-5 w-full",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 relative h-1.5 w-full overflow-hidden rounded-full bg-white/[0.08]",children:(0,r.jsx)("div",{className:"jsx-a6d7652413021943 ppt-editor-loading-progress absolute inset-y-0 left-0 w-[42%] rounded-full bg-white/55 motion-reduce:animate-none"})}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mt-3 flex items-center justify-center gap-1.5",children:[(0,r.jsx)("span",{className:"jsx-a6d7652413021943 ppt-editor-loading-dot h-1.5 w-1.5 rounded-full bg-white/25"}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 ppt-editor-loading-dot h-1.5 w-1.5 rounded-full bg-white/25 [animation-delay:160m
1s]"}),(0,r.jsx)("span",{className:"jsx-a6d7652413021943 ppt-editor-loading-dot h-1.5 w-1.5 rounded-full bg-white/25 [animation-delay:320ms]"})]})]})]})}),ta.active&&(0,r.jsx)("div",{className:"jsx-a6d7652413021943 "+((0,h.cn)("pointer-events-none absolute inset-0 z-10 flex items-center justify-center border-2 border-dashed text-[13px] font-medium backdrop-blur-[1px] transition-colors",ta.over?"border-[#8A5CFF] bg-[#7E14FF]/18 text-white":"border-white/30 bg-black/20 text-white/75")||""),children:A(g.g["ææ¾å¾çå°å½å页"])})]})}),(0,r.jsxs)("aside",{className:"jsx-a6d7652413021943 mr-4 mt-12 flex h-[calc(100%-64px)] w-[320px] min-w-[320px] flex-col overflow-hidden rounded-2xl border border-white/10 bg-[rgba(28,29,33,0.82)] shadow-[0_18px_48px_rgba(0,0,0,0.42)] backdrop-blur-xl",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex h-12 items-center justify-between border-b border-white/10 px-3",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[13px] font-medium text-white",children:A(g.g["屿§"])}),(0,r.jsxs)("button",{type:"button",onClick:()=>{eV||eJ((null==ts?void 0:ts.html)||""),e$(e=>!e)},className:"jsx-a6d7652413021943 "+((0,h.cn)("flex h-7 items-center gap-1 rounded-md px-2 text-[12px]",eV?"bg-[#3A3A3A] text-white":"text-[#ADADAD] hover:bg-white/10 hover:text-white")||""),children:[(0,r.jsx)(o.LLk,{className:"h-4 w-4"}),"HTML"]})]}),eV?(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex min-h-0 flex-1 flex-col p-3",children:[(0,r.jsx)("textarea",{value:eQ,onChange:e=>eJ(e.target.value),spellCheck:!1,className:"jsx-a6d7652413021943 min-h-0 flex-1 resize-none rounded-md border border-white/10 bg-[#1D1D1D] p-3 font-mono text-[12px] leading-5 text-[#E7E7E7] outline-none focus:border-[#5EA0FF]"}),(0,r.jsx)(p.$,{className:"mt-3 h-8 rounded-md bg-white text-[#1F1F1F] hover:bg-[#EDEDED]",onClick:t_,disabled:!ts,children:A(g.g["åºç¨å½å页 HTML"])})]}):(0,r.jsx)("div",{className:"jsx-a6d7652413021943 min-h-0 flex-1 overflow-y-auto p-3",children:eG?(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 space-y-4",children:[(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.Fwt,{className:"h-4 w-4"}),A(g.g["æ°´å°"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 space-y-3",children:[(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["æ°´å°æå"]),(0,r.jsx)("input",{value:e6.text,placeholder:A(g.g["è¾å
¥ååºç¨å°å
¨é¨é¡µé¢"]),onChange:e=>tC({text:e.target.value}),className:"jsx-a6d7652413021943 "+(ed||"")})]}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 grid grid-cols-2 gap-1 rounded-md border border-white/10 bg-[#1D1D1D] p-1",children:[["center",A(g.g["å±
ä¸"])],["tiled",A(g.g["å¹³éº"])]].map(e=>{let[t,n]=e;return(0,r.jsx)("button",{type:"button",onClick:()=>tC({mode:t}),className:"jsx-a6d7652413021943 "+((0,h.cn)("h-8 rounded text-[12px] font-medium transition-colors",e6.mode===t?"bg-white !text-[#111111] [&_*]:!text-[#111111]":"text-[#ADADAD] hover:bg-white/10 hover:text-white")||""),children:n},t)})}),(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 block space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["æ°´å°éæåº¦"])," ",Math.round(100*e6.opacity),"%",(0,r.jsx)("input",{type:"range",min:.04,max:.32,step:.01,value:e6.opacity,onChange:e=>tC({opacity:Number(e.target.value)}),className:"jsx-a6d7652413021943 w-full"})]})]})]}),(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-2 flex items-center justify-between",children:[(0,r.jsx)("code",{className:"jsx-a6d7652413021943 rounded-md border border-emerald-300/25 bg-[#0d2a19] px-2 py-0.5 font-mono text-[11px] font-semibold text-emerald-100",children:"<".concat(eG.tagName,">")}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 text-[11px] text-[#8F8F8F]",children:[eG.rect.width," x ",eG.rect.height]})]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-3 grid grid-cols-4 gap-1 text-[11px] text-[#9B9B9B]",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 rounded border border-white/10 bg-[#1D1D1D] px-2 py-1",children:["X ",eG.rect.left]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 rounded border border-white/10 bg-[#1D1D1D] px-2 py-1",children:["Y ",eG.rect.top]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 rounded border border-white/10 bg-[#1D1D1D] px-2 py-1",children:["W ",eG.rect.width]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 rounded border border-white/10 bg-[#1D1D1D] px-2 py-1",children:["H ",eG.rect.height]})]}),(0,r.jsx)("div",{title:eG.selector,className:"jsx-a6d7652413021943 truncate font-mono text-[10px] text-[#777]",children:eG.selector})]}),"edit"===eZ&&to&&(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.NtT,{className:"h-4 w-4"}),A(g.g["ææ¬"])]}),(0,r.jsx)("textarea",{value:eG.text,onChange:e=>tL([{kind:"text",value:e.target.value}]),className:"jsx-a6d7652413021943 h-24 w-full resize-none rounded-md border border-white/10 bg-[#1D1D1D] p-2 text-[12px] leading-5 text-[#E7E7E7] outline-none focus:border-[#5EA0FF]"})]}),"edit"===eZ&&(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.v9_,{className:"h-4 w-4"}),A(g.g["æå䏿ç"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 grid grid-cols-2 gap-2",children:[(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["åå·"]),(0,r.jsx)("input",{value:eG.style.fontSize,onChange:e=>tD("font-size",e.target.value),className:"jsx-a6d7652413021943 "+(ed||"")})]}),(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["åé"]),(0,r.jsxs)("select",{value:eG.style.fontWeight,onChange:e=>tD("font-weight",e.target.value),className:"jsx-a6d7652413021943 "+(ed||""),children:[(0,r.jsx)("option",{value:"300",className:"jsx-a6d7652413021943",children:"Light 300"}),(0,r.jsx)("option",{value:"400",className:"jsx-a6d7652413021943",children:"Regular 400"}),(0,r.jsx)("option",{value:"500",className:"jsx-a6d7652413021943",children:"Medium 500"}),(0,r.jsx)("option",{value:"600",className:"jsx-a6d7652413021943",children:"SemiBold 600"}),(0,r.jsx)("option",{value:"700",className:"jsx-a6d7652413021943",children:"Bold 700"}),(0,r.jsx)("option",{value:"800",className:"jsx-a6d7652413021943",children:"Heavy 800"}),(0,r.jsx)("option",{value:"900",className:"jsx-a6d7652413021943",children:"Black 900"})]})]})]}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-3 grid grid-cols-4 gap-1",children:[["left",o.eih],["center",o.svU],["right",o.fzT],["justify",o.J9e]].map(e=>{let[t,n]=e;return(0,r.jsx)("button",{type:"button",onClick:()=>tD("text-align",t),"aria-label":"left"===t?A(g.g["对é½å·¦ä¾§"]):"center"===t?A(g.g["对é½å±
ä¸"]):"right"===t?A(g.g["对é½å³ä¾§"]):A(g.g["两端对é½"]),className:"jsx-a6d7652413021943 "+((0,h.cn)(ec,eG.style.textAlign===t&&"border-white/20 bg-white/15 text-white")||""),children:(0,r.jsx)(n,{className:"jsx-a6d7652413021943 h-4 w-4"})},t)})}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mt-3 grid grid-cols-4 gap-1",children:[(0,r.jsx)("button",{type:"button",onClick:()=>tD("font-weight",Number.parseInt(eG.style.fontWeight,10)>=700?"400":"700"),"aria-label":A(g.g["ç²ä½"]),className:"jsx-a6d7652413021943 "+((0,h.cn)(ec,Number.parseInt(eG.style.fontWeight,10)>=700&&"border-white/20 bg-white/15 text-white")||""),children:(0,r.jsx)(o.L0M,{className:"h-4 w-4"})}),(0,r.jsx)("button",{type:"button",onClick:()=>
1tD("font-style","italic"),"aria-label":A(g.g["æä½"]),className:"jsx-a6d7652413021943 "+(ec||""),children:(0,r.jsx)(o.Adp,{className:"h-4 w-4"})}),(0,r.jsx)("button",{type:"button",onClick:()=>tD("text-decoration",td?"none":"underline"),"aria-label":A(g.g["ä¸å线"]),className:"jsx-a6d7652413021943 "+((0,h.cn)(ec,td&&"border-white/20 bg-white/15 text-white")||""),children:(0,r.jsx)(o.UtK,{className:"h-4 w-4"})}),(0,r.jsx)("button",{type:"button",onClick:()=>tD("text-decoration",tc?"none":"line-through"),"aria-label":A(g.g["å é¤çº¿"]),className:"jsx-a6d7652413021943 "+((0,h.cn)(ec,tc&&"border-white/20 bg-white/15 text-white")||""),children:(0,r.jsx)(o.zUW,{className:"h-4 w-4"})})]})]}),"edit"===eZ&&(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.LrS,{className:"h-4 w-4"}),A(g.g["å¤è§"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 space-y-3",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-2 flex items-center gap-1.5 text-[11px] text-[#ADADAD]",children:[(0,r.jsx)(o.y2Y,{className:"h-3.5 w-3.5"}),A(g.g["åè²"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex flex-wrap items-center gap-1.5",children:[(0,r.jsx)("input",{type:"color",onChange:e=>tD("color",e.target.value),className:"jsx-a6d7652413021943 h-7 w-8 cursor-pointer rounded border border-white/10 bg-transparent p-0"}),eu.map(e=>(0,r.jsx)("button",{type:"button",style:{backgroundColor:e},onClick:()=>tD("color",e),"aria-label":"".concat(A(g.g["åè²"])," ").concat(e),className:"jsx-a6d7652413021943 h-6 w-6 rounded border border-white/15 shadow-sm"},e))]})]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-2 flex items-center gap-1.5 text-[11px] text-[#ADADAD]",children:[(0,r.jsx)(o.Fwt,{className:"h-3.5 w-3.5"}),A(g.g["èæ¯"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex flex-wrap items-center gap-1.5",children:[(0,r.jsx)("input",{type:"color",onChange:e=>tD("background-color",e.target.value),className:"jsx-a6d7652413021943 h-7 w-8 cursor-pointer rounded border border-white/10 bg-transparent p-0"}),ep.map(e=>(0,r.jsx)("button",{type:"button",style:{background:"transparent"===e?"repeating-conic-gradient(#bdbdbd 0% 25%, #fff 0% 50%) 0 0/8px 8px":e},onClick:()=>tD("background-color",e),"aria-label":"".concat(A(g.g["èæ¯"])," ").concat(e),className:"jsx-a6d7652413021943 h-6 w-6 rounded border border-white/15 shadow-sm"},e))]})]}),(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 block space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["éæåº¦"])," ",Math.round(100*Number(eG.style.opacity||1)),"%",(0,r.jsx)("input",{type:"range",min:0,max:1,step:.05,value:Number(eG.style.opacity||1),onChange:e=>tD("opacity",e.target.value),className:"jsx-a6d7652413021943 w-full"})]})]})]}),"img"===eG.tagName&&(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.vOu,{className:"h-4 w-4"}),A(g.g["å¾ç"])]}),(0,r.jsx)("input",{value:eG.attrs.src||"",onChange:e=>tL([{kind:"attr",name:"src",value:e.target.value}]),className:"jsx-a6d7652413021943 "+(ed||"")}),(0,r.jsx)("input",{ref:F,type:"file",accept:"image/*",onChange:tH,className:"jsx-a6d7652413021943 hidden"}),(0,r.jsx)(p.$,{variant:"ghost",className:"mt-2 h-8 w-full rounded-md text-[12px] text-[#DCDCDC] hover:bg-white/10 hover:text-white",onClick:()=>{var e;return null===(e=F.current)||void 0===e?void 0:e.click()},children:A(g.g["æ¿æ¢å¾ç"])})]}),"a"===eG.tagName&&(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:A(g.g["龿¥"])}),(0,r.jsx)("input",{placeholder:"https://",value:eG.attrs.href||"",onChange:e=>tL([{kind:"attr",name:"href",value:e.target.value||null}]),className:"jsx-a6d7652413021943 "+(ed||"")}),(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 mt-2 flex items-center gap-2 text-[12px] text-[#ADADAD]",children:[(0,r.jsx)("input",{type:"checkbox",checked:"_blank"===eG.attrs.target,onCh
1ange:e=>tL([{kind:"attr",name:"target",value:e.target.checked?"_blank":null}]),className:"jsx-a6d7652413021943"}),A(g.g["æ°çªå£æå¼"])]})]}),(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mb-3 flex items-center justify-between",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[12px] font-medium text-white",children:A(g.g["å±çº§"])}),eG.layer&&(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 text-[11px] text-[#8F8F8F]",children:[eG.layer.index,"/",eG.layer.count]})]}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 grid grid-cols-2 gap-2",children:[["front",A(g.g["置顶"])],["forward",A(g.g["ä¸ä¸çº§"])],["backward",A(g.g["ä¸ä¸çº§"])],["back",A(g.g["ç½®åº"])]].map(e=>{let[t,n]=e;return(0,r.jsx)("button",{type:"button",onClick:()=>tA({type:"z-order",selector:eG.selector,op:t}),className:"jsx-a6d7652413021943 h-8 rounded-md border border-white/10 bg-[#1D1D1D] text-[12px] font-medium text-[#DCDCDC] transition-colors hover:border-white/20 hover:bg-white/10 hover:text-white",children:n},t)})})]})]}):(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 space-y-4",children:[(0,r.jsxs)("section",{className:"jsx-a6d7652413021943 "+(eo||""),children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 "+(ei||""),children:[(0,r.jsx)(o.Fwt,{className:"h-4 w-4"}),A(g.g["æ°´å°"])]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 space-y-3",children:[(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["æ°´å°æå"]),(0,r.jsx)("input",{value:e6.text,placeholder:A(g.g["è¾å
¥ååºç¨å°å
¨é¨é¡µé¢"]),onChange:e=>tC({text:e.target.value}),className:"jsx-a6d7652413021943 "+(ed||"")})]}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 grid grid-cols-2 gap-1 rounded-md border border-white/10 bg-[#1D1D1D] p-1",children:[["center",A(g.g["å±
ä¸"])],["tiled",A(g.g["å¹³éº"])]].map(e=>{let[t,n]=e;return(0,r.jsx)("button",{type:"button",onClick:()=>tC({mode:t}),className:"jsx-a6d7652413021943 "+((0,h.cn)("h-8 rounded text-[12px] font-medium transition-colors",e6.mode===t?"bg-white !text-[#111111] [&_*]:!text-[#111111]":"text-[#ADADAD] hover:bg-white/10 hover:text-white")||""),children:n},t)})}),(0,r.jsxs)("label",{className:"jsx-a6d7652413021943 block space-y-1 text-[11px] text-[#ADADAD]",children:[A(g.g["æ°´å°éæåº¦"])," ",Math.round(100*e6.opacity),"%",(0,r.jsx)("input",{type:"range",min:.04,max:.32,step:.01,value:e6.opacity,onChange:e=>tC({opacity:Number(e.target.value)}),className:"jsx-a6d7652413021943 w-full"})]})]})]}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 rounded-md border border-white/10 bg-[#2A2A2A] p-3 text-[12px] leading-5 text-[#ADADAD]",children:A(g.g["éæ©ç»å¸ä¸çææ¬å¾çæå½¢ç¶åå¯ç¼è¾å±æ§å廿æ¬å¯ç´æ¥æ¹ååå°ææ½æ¨¡å¼å¯ç§»å¨å缩æ¾å
ç´ "])})]})})]})]})]}),e2&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{type:"button","aria-label":A(g.g["å
³é"]),onClick:()=>e4(!1),className:"jsx-a6d7652413021943 absolute inset-0 z-30 bg-black/35"}),(0,r.jsxs)("aside",{className:"jsx-a6d7652413021943 absolute right-0 top-0 z-40 flex h-full w-[360px] flex-col border-l border-white/10 bg-[rgba(20,20,22,0.96)] text-white shadow-[-18px_0_48px_rgba(0,0,0,0.46)] backdrop-blur-xl",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex items-center justify-between border-b border-white/10 px-5 py-4",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[15px] font-semibold text-white",children:e9?A(g.g["ä¿åå¹¶ä¸è½½"]):A(g.g.ä¸è½½)}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-1 text-[12px] text-[#8F8F8F]",children:A(g.g["éæ©å¯¼åºæ ¼å¼"])})]}),(0,r.jsx)("button",{type:"button",onClick:()=>e4(!1),"aria-label":A(g.g["å
³é"]),className:"jsx-a6d7652413021943 flex h-8 w-8 items-center justify-center rounded-full text-white/60 hover:bg-white/10 hover:text-white",children:(0,r.jsx)(o.Qks,{className:"h-5 w-5"})})]}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex-1 space-y-3 overflow-y-auto p-5",children:[(0,r.jsx)("button",{type:"button",onClick:()=>tW("zip"),disabled:eC||null!==eL,className:"jsx-a6d7652413021943 group w-full rounded-md border border-white/10 bg-[#242424] p-4 text-left transition-colors hover:border-white/20 hover:bg-[#2E2E2E] disabled:pointer-events-none disabled:opacity-45",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex items-center justify-between gap-3",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[14px] font-semibold text-white",children:A(g.g["Web æºç ä¸è½½"])}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-1 text-[12px] leading-5 text-[#9B9B9B]",children:e9?A(g.g["å°å
ä¿åå½åä¿®æ¹åæå¤å±ä¸è½½æ¥å£å¯¼åº"]):A(g.g["æå¤å±ä¸è½½æ¥å£å¯¼åºå½åå·²ä¿åçæ¬"])})]}),"zip"===eL?(0,r.jsx)(o.Fat,{className:"h-5 w-5 shrink-0 animate-spin text-white/70"}):(0,r.jsx)(o.U3X,{className:"h-5 w-5 shrink-0 text-white/70 group-hover:text-white"})]})}),[["ppt","PPTX",A(g.g["PowerPoint æä»¶å¯¼åº"])],["pdf","PDF",A(g.g["PDF æä»¶å¯¼åº"])]].map(e=>{let[t,n,a]=e;return(0,r.jsx)("button",{type:"button",onClick:()=>tW(t),disabled:eC||null!==eL,className:"jsx-a6d7652413021943 group w-full rounded-md border border-white/10 bg-[#202020] p-4 text-left transition-colors hover:border-white/20 hover:bg-[#2E2E2E] disabled:pointer-events-none disabled:opacity-45",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 flex items-center justify-between gap-3",children:[(0,r.jsxs)("div",{className:"jsx-a6d7652413021943",children:[(0,r.jsx)("div",{className:"jsx-a6d7652413021943 text-[14px] font-semibold text-white",children:n}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-1 text-[12px] leading-5 text-[#8F8F8F]",children:e9?A(g.g["å°å
ä¿åå½åä¿®æ¹å导åº"],{title:a}):A(g.g["ä¸å¤å±ä¸è½½å
¥å£ä¿æä¸è´"],{title:a})})]}),eL===t?(0,r.jsx)(o.Fat,{className:"h-5 w-5 shrink-0 animate-spin text-white/70"}):(0,r.jsx)(o.U3X,{className:"h-5 w-5 shrink-0 text-white/70 group-hover:text-white"})]})},n)})]})]})]}),e5&&(0,r.jsx)("div",{className:"jsx-a6d7652413021943 absolute inset-0 z-50 flex items-center justify-center bg-black/55 px-4 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 relative w-full max-w-[420px] rounded-lg border border-white/12 bg-[#1E1E20] p-5 text-white shadow-[0_24px_80px_rgba(0,0,0,0.55)]",children:[(0,r.jsx)("button",{type:"button",onClick:()=>e3(!1),disabled:eC,"aria-label":A(g.g["å
³é"]),className:"jsx-a6d7652413021943 absolute right-3 top-3 flex h-8 w-8 items-center justify-center rounded-full text-white/55 transition-colors hover:bg-white/10 hover:text-white disabled:pointer-events-none disabled:opacity-45",children:(0,r.jsx)(o.Qks,{className:"h-5 w-5"})}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 pr-9 text-[16px] font-semibold",children:A(g.g["ææªä¿åçä¿®æ¹"])}),(0,r.jsx)("div",{className:"jsx-a6d7652413021943 mt-2 text-[13px] leading-6 text-white/62",children:A(g.g["å
³éç¼è¾å¨åå¯ä»¥å
ä¿åå½åä¿®æ¹ææ¾å¼æ¬æ¬¡æªä¿åå
å®¹ç´æ¥éåº"])}),(0,r.jsxs)("div",{className:"jsx-a6d7652413021943 mt-5 flex flex-wrap justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:tZ,disabled:eC,className:"jsx-a6d7652413021943 h-9 rounded-md border border-white/12 bg-white/[0.08] px-3 text-[13px] font-medium text-white/82 transition-colors hover:bg-white/[0.14] hover:text-white disabled:pointer-events-none disabled:opacity-45",children:A(g.g["ä¸ä¿åç´æ¥éåº"])}),(0,r.jsxs)("button",{type:"button",onClick:tX,disabled:eC,className:"jsx-a6d7652413021943 flex h-9 items-center gap-1.5 rounded-md bg-[#5EA0FF] px-3 text-[13px] font-semibold text-white shadow-[0_8px_22px_rgba(94,160,255,0.28)] transition-colors hover:bg-[#75AEFF] disabled:pointer-events-none disabled:opacity-60",children:[eC&&(0,r.jsx)(o.Fat,{className:"h-4 w-4 animate-spin"}),A(g.g["ä¿åä¿®æ¹å¹¶éåº"])]})]})]})}),(0,r.jsx)(l(),{id:"a6d7652413021943",children:".ppt-editor-loading-progress.jsx-a6d7652413021943{-webkit-animation:ppt-editor-loading-progress 1.35s ease-in-out infinite;-moz-animation:ppt-editor-loading-progress 1.35s ease-in-out infinite;-o-animation:ppt-editor-loading-progress 1.35s ease-in-out infinite;animation:ppt-editor-loading-progress 1.35s ease-in-out infinite}.ppt-editor-loading-dot.jsx-a6d7652413021943{-webkit-animation:ppt-editor-loading-dot 1.2s ease-in-out infinite;-moz-animation:ppt-editor-loading-dot 1.2s ease-in-out infinite;-o-animation:ppt-editor-loading-dot 1.2s ease-in-out infinite;animation:ppt-editor-loading-dot 1.2s ease-in-out infinite}@-webkit-keyframes ppt-editor-loading-progress{0%{-webkit-transform:translatex(-115%);transform:translatex(-115%)}55%{-webkit-transform:translatex(85%);transform:translatex(85%)}100%{-webkit-transform:translatex(245%);transform:translatex(245%)}}@-moz-keyframes ppt-editor-loading-progress{0%{-moz-transform:translatex(-115%);transform:translatex(-115%)}55%{-moz-transform:translatex(85%);transform:translatex(85%)}100%{-moz-transform:translatex(245%);transform:translatex(245%)}}@-o-keyframes ppt-editor-loading-progress{0%{-o-transform:translatex(-115%);transform:translatex(-115%)}55%{-o-transform:translatex(85%);transform:translatex(85%)}100%{-o-transform:translatex(245%);transform:translatex(245%)}}@keyframes ppt-editor-loading-progress{0%{-webkit-transform:translatex(-115%);-moz-transform:translatex(-115%);-o-transform:translatex(-115%);transform:translatex(-115%)}55%{-webkit-transform:translatex(85%);-moz-transform:translatex(85%);-o-transform:translatex(85%);transform:translatex(85%)}100%{-webkit-transform:translatex(245%);-moz-transform:translatex(245%);-o-transform:translatex(245%);transform:translatex(245%)}}@-webkit-keyframes ppt-editor-loading-dot{0%,100%{opacity:.35;-webkit-transform:translatey(0);transform:translatey(0)}45%{opacity:.95;-webkit-transform:translatey(-2px);transform:translatey(-2px)}}@-moz-keyframes ppt-editor-loading-dot{0%,100%{opacity:.35;-moz-transform:translatey(0);transform:translatey(0)}45%{opacity:.95;-moz-transform:translatey(-2px);transform:translatey(-2px)}}@-o-keyframes ppt-editor-loading-dot{0%,100%{opacity:.35;-o-transform:translatey(0);transform:translatey(0)}45%{opacity:.95;-o-transform:translatey(-2px);transform:translatey(-2px)}}@keyframes ppt-editor-loading-dot{0%,100%{opacity:.35;-webkit-transform:translatey(0);-moz-transform:translatey(0);-o-transform:translatey(0);transform:translatey(0)}45%{opacity:.95;-webkit-transform:translatey(-2px);-moz-transform:translatey(-2px);-o-transform:translatey(-2px);transform:translatey(-2px)}}"})]})}):null}},68821:(e,t,n)=>{n.d(t,{Dx:()=>o,SN:()=>i});let r=new Map,a=e=>String(e||"").replace(/\\/g,"/").replace(/^\/+/,""),l=e=>String(e||"").replace(/^agent_/,"").trim(),s=(e,t)=>{if(!e)return"";let n=a(e.path||e.name);return n?[l(e.agentRole||e.role||t),String(e.version||""),n].join("|"):""},o=(e,t,n)=>{if(!(null==t?void 0:t.content))return;let a=s(e||t,n);a&&r.set(a,{...e,...t,path:(null==e?void 0:e.path)||t.path,name:t.name||(null==e?void 0:e.name),content:t.content,localOnly:!0})},i=(e,t)=>{if(!e)return e;let n=r.get(s(e,t));return(null==n?void 0:n.content)?{...e,size:n.size||e.size,modified:n.modified||e.modified,content:n.content,localOnly:!0}:e}},70357:(e,t,n)=>{n.d(t,{A:()=>x});var r=n(98887),a=n(49711),l=n(20403),s=n(25012),o=n(12267),i=n(8080),d=n(52614),c=n(20077),u=n(59960);let p=220/c.GK,h=c.dV*p,m=e=>{let t=String(e||"").trim();return/<(?:!doctype\s+html|html|head|body|style|script|section|div)\b/i.test(t)},g=(e,t)=>m(e)?e||"":m(t)&&t||"";function f(e){let t=o.Lo.getState()[o.pB.finalResult],n=Array.isArray(t)?t[0]:t;if(!n||"show"!==n.type||!Array.isArray(n.list))return null;let r=n.list.find(t=>{var n;return Number(null!==(n=t.page_index)&&void 0!==n?n:0)===Number(e)});return r?{content:r.content,path:r.path}:null}function x(e){let{pages:t,onClickPage:n,workspaceAgentRole:x=null}=e,{t:b}=(0,i.o)(),v=(0,o.Lo)(e=>e[o.pB.sessionId]),y=(0,o.Lo)(e=>e[o.pB.finalResult]),[w,j]=(0,a.useState)({}),[E,k]=(0,a.useState)({}),[N,S]=(0,a.useState)(()=>(0,c.ep)().reduce((e,t)=>
1(e[t]=!0,e),{})),A=(0,a.useRef)(new Set),C=(0,a.useRef)(new Set),R=(0,a.useRef)(t);R.current=t;let L=(0,a.useMemo)(()=>[null!=x?x:"",...t.map(e=>{var t,n;return"".concat(e.pageIndex,":").concat(null!==(t=e.version)&&void 0!==t?t:"",":").concat(null!==(n=e.toolCallId)&&void 0!==n?n:"")})].sort().join("|"),[t,x]),D=(0,a.useMemo)(()=>[...t].sort((e,t)=>e.pageIndex-t.pageIndex),[t]),_=(0,a.useMemo)(()=>{let e={};return D.forEach(t=>{let n=f(t.pageIndex),r=(null==n?void 0:n.path)||"",a=g(null==n?void 0:n.content,t.result);e[t.pageIndex]=(0,c.j5)({sessionId:v||"",version:t.version,role:x,path:r,pageIndex:t.pageIndex,content:r?"":a})}),e},[v,D,x]),T=(0,a.useCallback)(e=>{(0,c.LJ)(e),S(t=>t[e]?t:{...t,[e]:!0})},[]);(0,a.useEffect)(()=>{[...R.current].sort((e,t)=>e.pageIndex-t.pageIndex).forEach(e=>{var t;let n=f(e.pageIndex),r=null==n?void 0:null===(t=n.content)||void 0===t?void 0:t.trim();if(!r||!m(r))return;let a=(0,c.j5)({sessionId:v||"",version:e.version,role:x,path:(null==n?void 0:n.path)||"",pageIndex:e.pageIndex,content:(null==n?void 0:n.path)?"":r});(0,c.GX)(a,r),(0,u.w_)(a,r),A.current.add(e.pageIndex),j(t=>t[e.pageIndex]?t:{...t,[e.pageIndex]:r}),k(t=>({...t,[e.pageIndex]:!1}))})},[y,L,v,x]);let M=(0,a.useCallback)(async e=>{var t,n;let r;if(!v||A.current.has(e.pageIndex))return;let a=f(e.pageIndex);if(null==a?void 0:null===(t=a.content)||void 0===t?void 0:t.trim()){if(!m(a.content))return;let t=(0,c.j5)({sessionId:v,version:e.version,role:x,path:a.path||"",pageIndex:e.pageIndex,content:a.path?"":a.content});(0,c.GX)(t,a.content),(0,u.w_)(t,a.content),A.current.add(e.pageIndex),j(t=>({...t,[e.pageIndex]:a.content}));return}let l=String(e.pageIndex).padStart(3,"0"),o=e.version;r=(null==a?void 0:null===(n=a.path)||void 0===n?void 0:n.trim())?a.path.trim():o&&/^\d+$/.test(String(o))?"".concat(o,"/pages/page_").concat(l,".html"):"ppt_project/pages/page_".concat(l,".html"),x&&(r=(0,c.Mj)(r,x));let i="".concat(v,"::").concat(r);if(!C.current.has(i)){C.current.add(i),k(t=>({...t,[e.pageIndex]:!0}));try{let t=(0,c.Cq)({workspaceId:v,filePath:r,version:o,currentViewingRole:x,isTeamMode:!!x}),n=(0,c.c0)(t),a=null!=n?n:await (0,s.wS)({workspaceId:v,filePath:r,version:o,currentViewingRole:x,isTeamMode:!!x});if(null==a?void 0:a.trim()){let n=(0,c.j5)({sessionId:v,version:o,role:x,path:r,pageIndex:e.pageIndex,content:r?"":a});(0,c.GX)(t,a),(0,c.GX)(n,a),(0,u.w_)(n,a),A.current.add(e.pageIndex),j(t=>({...t,[e.pageIndex]:a}))}}catch(e){}finally{C.current.delete(i),k(t=>({...t,[e.pageIndex]:!1}))}}},[v,x]);return((0,a.useEffect)(()=>{[...R.current].sort((e,t)=>e.pageIndex-t.pageIndex).forEach(e=>{M(e)})},[L,v,M]),0===D.length)?null:(0,r.jsx)("div",{className:"flex flex-wrap gap-[8px] max-w-[536px] pt-4",children:D.map(e=>{var t,a;let s=w[e.pageIndex],o=E[e.pageIndex],i=_[e.pageIndex],m=s?(0,u.Br)(i,s):"",x=!!i&&(N[i]||(0,c.yl)(i));return(0,r.jsxs)("div",{className:"group relative cursor-pointer rounded-[8px] overflow-hidden border border-goagent-natural-grey-border-20 bg-goagent-natural-grey-background-8 hover:border-goagent-primary transition-colors",style:{width:220,height:h+28},onClick:()=>{var t;return null==n?void 0:n(e.pageIndex,{...e,content:g(s||e.content,e.result),path:(null===(t=f(e.pageIndex))||void 0===t?void 0:t.path)||e.path})},children:[(0,r.jsxs)("div",{className:"overflow-hidden relative bg-goagent-natural-grey-background-8",style:{width:220,height:h},children:[o||!s?(0,r.jsx)("div",{className:"flex justify-center items-center w-full h-full bg-goagent-natural-grey-background-8",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-[4px]",children:[(0,r.jsx)(l.upj,{className:"w-5 h-5 animate-pulse text-goagent-natural-grey-secondary-45"}),(0,r.jsx)("span",{className:"fz12-w400-goagent-natural-grey-secondary-45",children:b(d.g["æ£å¨å 载幻ç¯ç"])})]})}):m?(0,r.jsx)("div",{className:"absolute inset-0",style:{pointerEvents:"none"},children:(0,r.jsx)("div",{style:{width:c.GK,height:c.dV,transform:"scale(".concat(p,")"),transformOrigin:"top left"},children:(0,r.jsx)("iframe",{srcDoc:m,className:"w-full h-full border-0 bg-goagent-natural-grey-background-8",style:{width:c.GK,height:c.dV},title:"Slide ".concat(e.pageIndex),sandbox:"allow-same-origin allow-scripts",tabIndex:-1,loading:x?"eager":"lazy",onLoad:()=>T(i),onError:()=>T(i)})})}):(0,r.jsx)("div",{className:"flex justify-center items-center w-full h-full bg-goagent-natural-grey-background-8",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-[4px]",children:[(0,r.jsx)(l.upj,{className:"w-5 h-5 text-goagent-natural-grey-secondary-45"}),(0,r.jsx)("span",{className:"fz12-w400-goagent-natural-grey-secondary-45",children:b(d.g["第{{n}}页"],{n:e.pageIndex})})]})}),(0,r.jsx)("div",{className:"flex absolute inset-0 justify-center items-center opacity-0 transition-colors bg-black/0 group-hover:bg-black/10 group-hover:opacity-100",children:(0,r.jsx)("span",{className:"fz12-w400-goagent-natural-grey-secondary-45 bg-white/90 px-2 py-1 rounded-[4px] shadow-sm",children:b(d.g["ç¹å»é¢è§"])})})]}),(0,r.jsx)("div",{className:"flex items-center justify-center h-[28px] fz12-w400-goagent-natural-grey-secondary-45",children:b(d.g["第{{n}}页"],{n:e.pageIndex})})]},"slide-".concat(e.pageIndex,"-").concat(null!==(t=e.version)&&void 0!==t?t:"","-").concat(null!==(a=e.toolCallId)&&void 0!==a?a:""))})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.