dsh-plugin-beyond-simulator 2.0.11 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (()=>{function lt(n){let c=n.createElement;return function({snap:g,request:e,patch:b,prepare:P,refresh:j}){let M={version:1,workspaceDir:"",clientImportRoot:"",clientSubdir:""},[C,S]=n.useState(g.scriptSync||M),[L,F]=n.useState(g.storage?.path||"qxqy-simulator.save.json"),[ee,se]=n.useState([]),[J,v]=n.useState(null),[q,U]=n.useState([]),[k,H]=n.useState(null),[Z,V]=n.useState(""),[E,ye]=n.useState(!1);n.useEffect(()=>{S(g.scriptSync||M),v(null)},[JSON.stringify(g.scriptSync),g.storage?.path]),n.useEffect(()=>{v(null)},[g.version,g.asset?.type]),n.useEffect(()=>{g.storage?.path&&F(g.storage.path)},[g.storage?.path]);let qe=async u=>{ye(!0),V("");try{await u()}catch(_){V(_.message||String(_))}finally{ye(!1)}},we=(u,_={})=>e("script-sync",{action:u,args:_});async function X(){v(null),H(null);let u=await P();await e("save",{path:L,expectedRevision:u.version}),await j();let _=await we("preview");v(_),U(_.rows.filter(K=>!K.error&&K.status!=="\u672A\u53D8\u5316").map(K=>K.id))}let W=JSON.stringify(C)!==JSON.stringify(g.scriptSync||M),xe=(u,_)=>c("label",{className:"qxsim-field",key:u},c("span",null,_),c("input",{type:"text",value:C[u],disabled:E,onChange:K=>{S({...C,[u]:K.target.value}),v(null)}})),Q=C.clientImportRoot.replaceAll("\\","/").match(/BeyondLocal\/([^/]+)\/Beyond_Local_Save_Level\/([^/]+)/),ie=(u,_,K=!1)=>c("button",{type:"button",className:"qxsim-action",disabled:E||K,onClick:()=>void qe(_)},u);return c("details",{className:"qxsim-section",style:{flexShrink:0,maxHeight:"55%",overflow:"auto",margin:"5px 10px"}},c("summary",null,`\u5B9E\u673A\u811A\u672C\u540C\u6B65 \xB7 ${g.scriptSync?"\u5DF2\u914D\u7F6E\uFF08\u624B\u52A8\u590D\u5236\uFF09":"\u672A\u914D\u7F6E"}`),c("div",{className:"qxsim-section-body"},c("p",null,"\u76EE\u5F55\u4F4D\u4E8E\u6A21\u62DF\u5668\u5BBF\u4E3B\u673A\u5668\u3002\u4FDD\u5B58\u5B58\u6863\u540E\u68C0\u67E5\u5DEE\u5F02\uFF0C\u786E\u8BA4\u624D\u590D\u5236\uFF1B\u4E4B\u540E\u8BF7\u5728\u5343\u661F\u6C99\u7BB1\u4FDD\u5B58\u5E76\u8BD5\u73A9\u3002\u65B0\u589E\u811A\u672C\u4ECD\u9700\u5EFA\u7ACB\u6620\u5C04\u3002"),xe("workspaceDir","\u5DE5\u4F5C\u533A\u811A\u672C\u76EE\u5F55\uFF08\u76F8\u5BF9\u8DEF\u5F84\uFF1B\u7559\u7A7A\u8868\u793A\u5DE5\u4F5C\u533A\u6839\u76EE\u5F55\uFF09"),xe("clientImportRoot","\u5B9E\u673A\u5BFC\u5165\u6839\u76EE\u5F55\uFF08default_import_file \u7684\u5B8C\u6574\u8DEF\u5F84\uFF09"),xe("clientSubdir","\u5B9E\u673A\u5BF9\u5E94\u5B50\u76EE\u5F55\uFF08\u901A\u5E38\u4E0E\u5DE5\u4F5C\u533A\u811A\u672C\u76EE\u5F55\u76F8\u540C\uFF0C\u4FDD\u7559 GIA \u8DEF\u5F84\uFF09"),Q?c("p",null,`UID\uFF1A${Q[1]} \xB7 \u7F16\u8F91\u5668 ID\uFF1A${Q[2]}`):null,c("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},ie("\u53D1\u73B0\u672C\u673A\u76EE\u5F55",async()=>{let u=await we("discover");se(u.candidates),u.candidates.length||V("\u672A\u53D1\u73B0\u76EE\u5F55\uFF0C\u53EF\u7C98\u8D34\u5B8C\u6574\u8DEF\u5F84\u3002")}),ie("\u4FDD\u5B58\u76EE\u5F55\u914D\u7F6E",async()=>{await P();let u=await b({op:"setScriptSync",config:C});await e("save",{path:L,expectedRevision:u.version}),await j(),v(null)},!C.clientImportRoot||!L.trim()),ie("\u6E05\u9664\u914D\u7F6E",async()=>{await P();let u=await b({op:"setScriptSync",config:null});await e("save",{path:L,expectedRevision:u.version}),await j(),v(null)},!g.scriptSync||!L.trim())),ee.length?c("label",{className:"qxsim-field"},"\u53D1\u73B0\u7684\u76EE\u5F55",c("select",{value:"",disabled:E,onChange:u=>{S({...C,clientImportRoot:u.target.value}),v(null)}},c("option",{value:""},"\u9009\u62E9 UID / \u7F16\u8F91\u5668\u2026"),ee.map(u=>c("option",{key:u.path,value:u.path},`${u.uid} / ${u.editorId} \xB7 ${u.path}`)))):null,c("label",{className:"qxsim-field",style:{marginTop:8}},c("span",null,"\u5B8C\u6574\u5B58\u6863\u4FDD\u5B58\u8DEF\u5F84"),c("input",{type:"text",value:L,disabled:E,onChange:u=>{F(u.target.value),v(null)}})),ie("\u4FDD\u5B58\u5B58\u6863\u5E76\u68C0\u67E5\u5DEE\u5F02",X,!g.scriptSync||W||!L.trim()),W?c("p",null,"\u76EE\u5F55\u914D\u7F6E\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u5148\u4FDD\u5B58\u76EE\u5F55\u914D\u7F6E\u3002"):null,Z?c("p",{role:"alert",style:{color:"var(--danger)"}},Z):null,J?c("section",{"aria-label":"\u811A\u672C\u540C\u6B65\u786E\u8BA4"},c("p",null,`\u76EE\u6807\u76EE\u5F55\uFF1A${J.root}`),J.pendingGuidChanges?c("p",{role:"alert"},"\u5C1A\u6709\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\u5F85\u6838\u5BF9\uFF0C\u8BF7\u5904\u7406\u5E76\u786E\u8BA4\u8BB0\u5F55\u540E\u518D\u540C\u6B65\u3002"):null,J.rows.map(u=>c("div",{key:u.id,style:{borderTop:"1px solid var(--line)",padding:6}},c("label",null,c("input",{type:"checkbox",disabled:E||!!u.error||u.status==="\u672A\u53D8\u5316",checked:q.includes(u.id),onChange:_=>U(_.target.checked?[...q,u.id]:q.filter(K=>K!==u.id))}),` ${u.path} \xB7 ${u.sourceKind} \xB7 ${u.status}`),c("div",{style:{overflowWrap:"anywhere"}},u.error||`\u2192 ${u.target}`),u.sourceMismatch?c("div",{className:"qxsim-note"},"\u5B58\u6863\u6E90\u7801\u4E0E\u5DE5\u4F5C\u533A\u6587\u4EF6\u4E0D\u540C\uFF1B\u5F53\u524D\u4F7F\u7528\u5B58\u6863\u6E90\u7801\u3002",c("details",null,c("summary",null,"\u67E5\u770B\u5DE5\u4F5C\u533A\u6587\u4EF6"),c("pre",{style:{maxHeight:200,overflow:"auto"}},u.diskSource)),ie("\u4ECE\u5DE5\u4F5C\u533A\u6587\u4EF6\u66F4\u65B0\u5B58\u6863\u6E90\u7801",async()=>{await P(),await b({op:"updateScript",id:u.id,source:u.diskSource}),v(null)})):null,!u.error&&u.status!=="\u672A\u53D8\u5316"?c("details",null,c("summary",null,"\u67E5\u770B\u590D\u5236\u524D\u540E\u5185\u5BB9"),c("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8}},c("div",null,"\u5B9E\u673A\u5F53\u524D\u5185\u5BB9",c("pre",{style:{maxHeight:240,overflow:"auto"}},u.beforeSource)),c("div",null,"\u5C06\u5199\u5165\u7684\u5185\u5BB9",c("pre",{style:{maxHeight:240,overflow:"auto"}},u.source)))):null)),c("p",null,`\u786E\u8BA4\u590D\u5236 ${q.length} \u4E2A\u811A\u672C\uFF0C\u5176\u4E2D\u8986\u76D6 ${J.rows.filter(u=>q.includes(u.id)&&u.status==="\u8986\u76D6").length} \u4E2A\u3002\u8986\u76D6\u524D\u5907\u4EFD\uFF0C\u4E0D\u5220\u9664\u5B9E\u673A\u989D\u5916\u6587\u4EF6\u3002`),c("div",{style:{display:"flex",gap:6}},ie("\u53D6\u6D88",async()=>v(null)),ie(`\u786E\u8BA4\u590D\u5236 ${q.length} \u4E2A\u811A\u672C`,async()=>{let u=J;v(null),await P(),H(await e("script-sync-apply",{planId:u.id,scriptIds:q,confirmed:!0}))},!q.length||!!J.pendingGuidChanges))):null,k?c("div",{role:"status"},c("strong",null,k.completed?"\u540C\u6B65\u5B8C\u6210":"\u90E8\u5206\u6587\u4EF6\u540C\u6B65\u5931\u8D25"),c("p",null,`${k.at} \xB7 \u5907\u4EFD\u4F4D\u7F6E\uFF1A${k.backupRoot}`),c("ul",null,k.results.map(u=>c("li",{key:u.id},`${u.target}\uFF1A${u.status}${u.error?` \xB7 ${u.error}`:""}`)))):null))}}function Pe(n){try{n?.close()}catch{}}function ra(){if(window.location.protocol==="dsh-app:")return null;let n;try{return n=window.open("about:blank","_blank"),!n||n.closed?null:(n.document.write('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>'),n)}catch{return Pe(n),null}}function ct(n){let c=n.createElement,N=new Map;function g({entry:e,api:b,onClosed:P}){let j=n.useRef(null),M=n.useRef(null),[C,S]=n.useState(!1),[L,F]=n.useState(""),[ee,se]=n.useState(!1);n.useLayoutEffect(()=>{let v={closing:!1,stopped:!1,pending:null,controller:null,requests:new Set};M.current=v;let q=j.current,U=q.querySelector("iframe"),k=!0,H=()=>{if(v.stopped)return Promise.resolve();if(v.closing=!0,!v.controller)return v.stopped=!0,Promise.resolve();if(!v.pending){let E=(async()=>{v.controller?.quiesce(),await Promise.allSettled([...v.requests]),await b(e.sessionId,"play",{action:"stop",args:{}}),v.stopped=!0})().finally(()=>{v.pending=null,N.get(e.sessionId)===E&&N.delete(e.sessionId)});v.pending=E,N.set(e.sessionId,E)}return v.pending};v.close=async()=>{if(!(v.pending||v.stopped)){S(!0),F("");try{await H(),k&&P()}catch(E){k&&(F(`\u505C\u6B62\u8BD5\u73A9\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\uFF1A${E?.message||E}`),S(!1))}}};let Z=E=>{E.source!==U.contentWindow||E.data?.type!=="qxqy-play-close"||E.data.sessionId!==e.sessionId||v.close()},V=E=>{E.preventDefault(),v.close()};return window.addEventListener("message",Z),q.addEventListener("cancel",V),q.showModal(),()=>{k=!1,window.removeEventListener("message",Z),q.removeEventListener("cancel",V),q.close(),H().catch(E=>console.error("Embedded play cleanup failed",E)),e.returnFocus?.isConnected&&e.returnFocus.focus()}},[e,b,P]);function J(v){let q=M.current;if(!q.closing)try{let U=v.currentTarget,k=U.contentWindow?.qxqyEmbeddedPlay;if(!k)throw new Error("\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002");q.controller=k,se(!0),U.focus(),k.focus();let H=(Z,V={})=>{if(q.closing)return Promise.reject(new Error("\u8BD5\u73A9\u6B63\u5728\u5173\u95ED"));let E=b(e.sessionId,"play",{action:Z,args:V});return q.requests.add(E),E.then(()=>q.requests.delete(E),()=>q.requests.delete(E)),E};k.start(H).catch(Z=>{q.closing||F(Z?.message||String(Z))})}catch(U){F(U?.message||String(U))}}return c("dialog",{ref:j,className:"qxsim-play-overlay","aria-label":"\u5185\u5D4C\u8BD5\u73A9","aria-modal":!0},c("header",{className:"qxsim-play-header"},c("span",{role:"status"},C?"\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026":ee?"\u5185\u5D4C\u8BD5\u73A9":"\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026"),c("button",{className:"qxsim-action",type:"button",disabled:C,onClick:()=>void M.current?.close?.()},"\u5173\u95ED\u8BD5\u73A9")),L?c("div",{className:"qxsim-play-error",role:"alert"},L):null,c("iframe",{title:"\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9",src:e.url,onLoad:J,tabIndex:0}))}return function({sessionId:b,api:P,playUrl:j,onError:M}){let C=n.useRef(null),[S,L]=n.useState(!1),[F,ee]=n.useState(null),se=n.useCallback(()=>ee(null),[]);n.useEffect(()=>{let v={active:!0,pending:!1,popup:null};return C.current=v,L(!1),ee(null),()=>{v.active=!1,Pe(v.popup)}},[b]);async function J(v){let q=C.current;if(!q?.active||q.pending||F)return;q.pending=!0;let U=document.activeElement;L(!0);try{let k=ra();if(q.popup=k,await N.get(b),!q.active||(await v(),!q.active))return;let H=new URL(j(b),window.location.href);if(k){try{if(k.closed)throw new Error("Play window closed");k.location.replace(H.href)}catch{Pe(k),k=null}q.popup=null}k||(H.searchParams.set("embedded","1"),ee({sessionId:b,url:H.href,returnFocus:U}))}catch(k){Pe(q.popup),q.popup=null,q.active&&M(k?.message||String(k))}finally{q.pending=!1,q.active&&L(!1)}}return{open:J,opening:S,overlay:F?.sessionId===b?c(g,{key:b,entry:F,api:P,onClosed:se}):null}}}var sa="sprite-v1",oa="/qxqy-assets/",la=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function be(n){return Number.isSafeInteger(n)&&n>100006&&la.some(([c,N])=>n>=c&&n<=N)}function dt(n,c=0){return`${oa}${sa}/${n}.png${c?`?refresh=${c}`:""}`}var He="qxqy-image-refresh",re=new Map,ve=new Map,Ve=new Set,ca=16777216,pt=!1;function mt(n,c){ve.set(n,c),re.delete(n);for(let N of Ve)N(n)}function Ye(){if(!(pt||typeof window>"u")){pt=!0;try{for(let[n,c]of Object.entries(JSON.parse(localStorage.getItem(He)||"{}")))ve.set(Number(n),c)}catch{}window.addEventListener("storage",n=>{if(n.key===He)try{for(let[c,N]of Object.entries(JSON.parse(n.newValue||"{}")))ve.get(Number(c))!==N&&mt(Number(c),N)}catch{}})}}function ut(n){return Ye(),Ve.add(n),()=>Ve.delete(n)}function xt(n){Ye(),mt(n,Date.now());try{localStorage.setItem(He,JSON.stringify(Object.fromEntries(ve)))}catch{}}function gt(n){if(Ye(),!be(n))return Promise.reject(new Error("Image ID is not in the preview allowlist"));let c=re.get(n);if(c&&(!c.failed||Date.now()<c.retryAt))return re.delete(n),re.set(n,c),c.promise;let N={pixels:0,failed:!1};return N.promise=new Promise((g,e)=>{let b=new Image,P=setTimeout(()=>{b.src="",j(new Error("\u56FE\u7247\u52A0\u8F7D\u8D85\u65F6"))},45e3);function j(M){if(clearTimeout(P),b.onload=b.onerror=null,M){N.failed=!0,N.retryAt=Date.now()+6e4,e(M);return}N.pixels=b.width*b.height;let C=[...re.values()].reduce((S,L)=>S+L.pixels,0);for(let[S,L]of re){if(C<=ca&&re.size<=128)break;S!==n&&(!L.pixels&&!L.failed||(re.delete(S),C-=L.pixels))}g(b)}b.onload=()=>j(),b.onerror=()=>j(new Error(`\u56FE\u7247 ${n} \u52A0\u8F7D\u5931\u8D25\uFF0C\u53EF\u5728\u5C5E\u6027\u9762\u677F\u5237\u65B0\u7D20\u6750`)),b.src=dt(n,ve.get(n))}),re.set(n,N),N.promise}function ft(n,c,N){let g=Number(c??4294967295)>>>0;if((g&16777215)===16777215)return n;let e=N(n.width,n.height),b=e.getContext("2d");b.drawImage(n,0,0);let P=b.getImageData(0,0,e.width,e.height),j=g>>>16&255,M=g>>>8&255,C=g&255;for(let S=0;S<P.data.length;S+=4)P.data[S]=Math.round(P.data[S]*j/255),P.data[S+1]=Math.round(P.data[S+1]*M/255),P.data[S+2]=Math.round(P.data[S+2]*C/255);return b.putImageData(P,0,0),e}function ht(n,c,N){if(n.fillType!=="Horizontal"&&n.fillType!=="Vertical")return null;let g=Number(n.fillAmount??1),e=Number.isFinite(g)?Math.max(0,Math.min(1,g)):1;if(n.fillType==="Horizontal"){let P=c*e;return{x:n.fillHorizontalType==="Right"?c/2-P:-c/2,y:-N/2,width:P,height:N}}let b=N*e;return{x:-c/2,y:n.fillVerticalType==="Top"?-N/2:N/2-b,width:c,height:b}}function da(n,c){let N=document.createElement("canvas");return N.width=n,N.height=c,N}function bt(n){let c=n.createElement;return function({item:g}){let e=n.useRef(null),[b,P]=n.useState({image:null,error:""}),[j,M]=n.useState(0);return n.useEffect(()=>ut(C=>{C===g.imageId&&M(S=>S+1)}),[g.imageId]),n.useEffect(()=>{let C=!0;return P({image:null,error:""}),gt(g.imageId).then(S=>{C&&P({image:S,error:""})},S=>{C&&P({image:null,error:S.message})}),()=>{C=!1}},[g.imageId,j]),n.useEffect(()=>{let C=e.current;if(!b.image||!C)return;let S=ft(b.image,g.imageColor,da);C.width=S.width,C.height=S.height;let L=C.getContext("2d"),F=g.enableFill?ht(g,C.width,C.height):null;F&&(L.beginPath(),L.rect(F.x+C.width/2,F.y+C.height/2,F.width,F.height),L.clip()),L.globalAlpha=(Number(g.imageColor??4294967295)>>>24&255)/255,L.drawImage(S,0,0)},[b.image,g.imageColor,g.enableFill,g.fillType,g.fillHorizontalType,g.fillVerticalType,g.fillAmount]),b.image?c("canvas",{ref:e,"data-image-id":g.imageId,"aria-label":`\u56FE\u7247 ${g.imageId}`,style:{display:"block",position:"absolute",inset:0,width:"100%",height:"100%"}}):c("span",{className:"qxsim-box-label",title:b.error,role:b.error?"status":void 0},b.error?`\u56FE\u7247 ${g.imageId} \u52A0\u8F7D\u5931\u8D25`:`\u52A0\u8F7D\u56FE\u7247 ${g.imageId}\u2026`)}}function vt(n,{api:c,playUrl:N,saveToWorkspace:g=!1}){let e=n.createElement,b=lt(n),P=ct(n),j=bt(n),M="qxqy-simulator-style",C=`
1
+ (()=>{function vt(t){let n=t.createElement;return function({snap:o,request:e,patch:h,prepare:y,refresh:N}){let P={version:1,workspaceDir:"",clientImportRoot:"",clientSubdir:""},[$,v]=t.useState(o.scriptSync||P),[I,A]=t.useState(o.storage?.path||"qxqy-simulator.save.json"),[L,E]=t.useState([]),[B,q]=t.useState(null),[C,_]=t.useState([]),[S,H]=t.useState(null),[g,j]=t.useState(""),[M,R]=t.useState(""),[F,K]=t.useState(!1),ae=t.useId();t.useEffect(()=>{v(o.scriptSync||P),q(null)},[JSON.stringify(o.scriptSync),o.storage?.path]),t.useEffect(()=>{q(null)},[o.version,o.asset?.type]),t.useEffect(()=>{o.storage?.path&&A(o.storage.path)},[o.storage?.path]);let le=async u=>{K(!0),R(""),j("");try{await u()}catch(te){R(te.message||String(te))}finally{K(!1)}},V=(u,te={})=>e("script-sync",{action:u,args:te});async function ee(){q(null),H(null);let u=await y();await e("save",{path:I,expectedRevision:u.version}),await N();let te=await V("preview");q(te),_(te.rows.filter(re=>!re.error&&re.status!=="\u672A\u53D8\u5316").map(re=>re.id))}let ce=JSON.stringify($)!==JSON.stringify(o.scriptSync||P),Q=(u,te,re,Ee)=>n("label",{className:"qxsim-field",key:u},n("span",null,te),n("input",{type:"text",value:$[u],placeholder:re,"aria-label":te,"aria-describedby":`${ae}-${u}`,disabled:F,onChange:ve=>{v({...$,[u]:ve.target.value}),q(null),j("")}}),n("small",{id:`${ae}-${u}`},Ee)),he=$.clientImportRoot.replaceAll("\\","/").match(/BeyondLocal\/([^/]+)\/Beyond_Local_Save_Level\/([^/]+)/),me=u=>u.trim().replaceAll("\\","/").replace(/^\.$/,""),be=me($.workspaceDir)?`${me($.workspaceDir)}/`:"",oe=o.scripts?.find(u=>u.path.replaceAll("\\","/").startsWith(be)&&u.path.toLowerCase().endsWith(".lua"))?.path.replaceAll("\\","/")||`${be}main.lua`,Te=[$.clientImportRoot.trim().replaceAll("\\","/").replace(/\/+$/,"")||"\u3010\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3011",me($.clientSubdir),oe.slice(be.length)].filter(Boolean).join("/"),Me={\u65B0\u589E:"\u65B0\u589E\u6587\u4EF6",\u8986\u76D6:"\u66F4\u65B0\u5DF2\u6709\u6587\u4EF6",\u672A\u53D8\u5316:"\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u66F4\u65B0",\u9519\u8BEF:"\u65E0\u6CD5\u590D\u5236"},ze={\u5B58\u6863\u6E90\u7801:"\u5B58\u6863\u91CC\u7F16\u8F91\u7684\u4EE3\u7801",\u5DE5\u4F5C\u533A\u6587\u4EF6:"\u9879\u76EE\u4E2D\u7684 .lua \u6587\u4EF6"},de=(u,te,re=!1)=>n("button",{type:"button",className:"qxsim-action",disabled:F||re,onClick:()=>void le(te)},u);return n("details",{className:"qxsim-section",style:{flexShrink:0,maxHeight:"55%",overflow:"auto",margin:"5px 10px"}},n("summary",null,`\u5B9E\u673A\u811A\u672C\u540C\u6B65 \xB7 ${o.scriptSync?"\u5DF2\u8BBE\u7F6E\u6587\u4EF6\u5939":"\u5148\u8BBE\u7F6E\u6587\u4EF6\u5939"}`),n("div",{className:"qxsim-section-body"},n("p",null,"\u628A\u5F53\u524D\u5B58\u6863\u91CC\u7684 Lua \u811A\u672C\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u7528\u4E8E\u6E38\u620F\u5185\u6D4B\u8BD5\u3002\u64CD\u4F5C\u987A\u5E8F\uFF1A\u586B\u5199\u811A\u672C\u4F4D\u7F6E \u2192 \u4FDD\u5B58\u8BBE\u7F6E \u2192 \u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0 \u2192 \u786E\u8BA4\u590D\u5236\u3002"),Q("workspaceDir","\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939","\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A","\u586B\u5199\u5728\u5DE5\u4F5C\u533A\u91CC\u7684\u4F4D\u7F6E\uFF0C\u4F8B\u5982 workspace/my-game\uFF1B\u7559\u7A7A\u8868\u793A\u4F7F\u7528\u5DE5\u4F5C\u533A\u672C\u8EAB\u3002"),Q("clientImportRoot","\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939","\u7C98\u8D34\u4EE5 default_import_file \u7ED3\u5C3E\u7684\u5B8C\u6574\u8DEF\u5F84","\u5173\u5361\u5B58\u653E\u5916\u90E8 Lua \u811A\u672C\u7684\u6587\u4EF6\u5939\uFF0C\u53EF\u70B9\u51FB\u300C\u53D1\u73B0\u672C\u673A\u76EE\u5F55\u300D\u67E5\u627E\u3002\u8BF7\u586B\u5199\u8FD0\u884C\u6A21\u62DF\u5668\u90A3\u53F0\u7535\u8111\u4E0A\u7684\u5B8C\u6574\u8DEF\u5F84\u3002"),Q("clientSubdir","\u6E38\u620F\u91CC\u7684\u9879\u76EE\u5B50\u6587\u4EF6\u5939","\u4F8B\u5982 workspace/my-game\uFF1B\u4E5F\u53EF\u4EE5\u7559\u7A7A",n(t.Fragment,null,"\u4E00\u822C\u548C\u201C\u9879\u76EE\u811A\u672C\u6587\u4EF6\u5939\u201D\u586B\u4E00\u6837\u7684\u5185\u5BB9\uFF0C\u4FDD\u7559\u539F\u6765\u7684\u6587\u4EF6\u4F4D\u7F6E\u3002\u7559\u7A7A\u5219\u76F4\u63A5\u653E\u8FDB\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\u3002",n("span",{"aria-label":"\u590D\u5236\u8DEF\u5F84\u793A\u4F8B",style:{display:"block",overflowWrap:"anywhere"}},"\u590D\u5236\u793A\u4F8B\uFF1A",n("code",null,oe)," \u2192 ",n("code",null,Te)))),he?n("p",null,`\u6E38\u620F\u8D26\u53F7 UID\uFF1A${he[1]} \xB7 \u5173\u5361\u76EE\u5F55\u7F16\u53F7\uFF1A${he[2]}`):null,n("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},de("\u53D1\u73B0\u672C\u673A\u76EE\u5F55",async()=>{let u=await V("discover");E(u.candidates),u.candidates.length?j(`\u627E\u5230 ${u.candidates.length} \u4E2A\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u8BF7\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361\u3002`):R("\u6CA1\u6709\u627E\u5230\u6E38\u620F\u811A\u672C\u6587\u4EF6\u5939\u3002\u53EF\u4EE5\u624B\u52A8\u7C98\u8D34 default_import_file \u6587\u4EF6\u5939\u7684\u5B8C\u6574\u8DEF\u5F84\uFF1B\u5982\u679C\u8FD8\u6CA1\u5BFC\u5165\u811A\u672C\uFF0C\u8BF7\u5148\u5728\u5343\u661F\u6C99\u7BB1\u5B8C\u6210\u5BFC\u5165\u3002")}),de("\u4FDD\u5B58\u8BBE\u7F6E",async()=>{await y();let u=await h({op:"setScriptSync",config:$});await e("save",{path:I,expectedRevision:u.version}),await N(),q(null),H(null),j("\u811A\u672C\u4F4D\u7F6E\u5DF2\u4FDD\u5B58\u3002\u4E0B\u4E00\u6B65\u70B9\u51FB\u300C\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0\u300D\u3002")},!$.clientImportRoot.trim()||!I.trim()),de("\u6E05\u9664\u8BBE\u7F6E",async()=>{await y();let u=await h({op:"setScriptSync",config:null});await e("save",{path:I,expectedRevision:u.version}),await N(),q(null),H(null),j("\u5DF2\u6E05\u9664\u811A\u672C\u4F4D\u7F6E\u8BBE\u7F6E\u3002\u6E38\u620F\u91CC\u7684\u811A\u672C\u6587\u4EF6\u4ECD\u7136\u4FDD\u7559\u3002")},!o.scriptSync||!I.trim())),L.length?n("label",{className:"qxsim-field"},"\u9009\u62E9\u8981\u66F4\u65B0\u7684\u8D26\u53F7\u548C\u5173\u5361",n("select",{value:"",disabled:F,onChange:u=>{v({...$,clientImportRoot:u.target.value}),q(null),j("")}},n("option",{value:""},"\u8BF7\u9009\u62E9\u6E38\u620F\u8D26\u53F7\u548C\u5173\u5361\u6587\u4EF6\u5939\u2026"),L.map(u=>n("option",{key:u.path,value:u.path},`\u8D26\u53F7 ${u.uid} / \u5173\u5361\u76EE\u5F55 ${u.editorId} \xB7 ${u.path}`)))):null,n("label",{className:"qxsim-field",style:{marginTop:8}},n("span",null,"\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6"),n("input",{type:"text",value:I,placeholder:"\u4F8B\u5982 my-game.save.json","aria-label":"\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6","aria-describedby":`${ae}-archive`,disabled:F,onChange:u=>{A(u.target.value),q(null),j("")}}),n("small",{id:`${ae}-archive`},"\u586B\u5199\u5DE5\u4F5C\u533A\u91CC\u7684\u5B58\u6863\u6587\u4EF6\u540D\u6216\u8DEF\u5F84\u3002\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u4F1A\u4E00\u8D77\u4FDD\u5B58\u9879\u76EE\uFF0C\u4E0B\u6B21\u6253\u5F00\u5B58\u6863\u5373\u53EF\u590D\u7528\u3002")),de("\u4FDD\u5B58\u5B58\u6863\u5E76\u67E5\u770B\u66F4\u65B0",ee,!o.scriptSync||ce||!I.trim()),o.scriptSync?ce?n("p",null,"\u811A\u672C\u4F4D\u7F6E\u5DF2\u6539\u52A8\uFF0C\u8BF7\u5148\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002"):I.trim()?null:n("p",null,"\u8BF7\u5148\u586B\u5199\u6A21\u62DF\u5668\u5B58\u6863\u6587\u4EF6\u540D\u3002"):n("p",null,"\u8BF7\u5148\u586B\u5199\u5343\u661F\u6C99\u7BB1\u811A\u672C\u6587\u4EF6\u5939\uFF0C\u5E76\u70B9\u51FB\u300C\u4FDD\u5B58\u8BBE\u7F6E\u300D\u3002"),F?n("p",{role:"status"},"\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u7A0D\u5019\u2026"):g?n("p",{role:"status"},g):null,M?n("p",{role:"alert",style:{color:"var(--danger)"}},M):null,B?n("section",{"aria-label":"\u811A\u672C\u540C\u6B65\u786E\u8BA4"},n("p",{style:{overflowWrap:"anywhere"}},`\u672C\u6B21\u66F4\u65B0\u5230\uFF1A${B.root}`),B.rows.length?B.rows.every(u=>u.status==="\u672A\u53D8\u5316")?n("p",{role:"status"},"\u6240\u6709\u811A\u672C\u90FD\u4E0E\u6E38\u620F\u6587\u4EF6\u5939\u91CC\u7684\u5185\u5BB9\u76F8\u540C\uFF0C\u65E0\u9700\u590D\u5236\u3002"):null:n("p",null,"\u8FD9\u4E2A\u5B58\u6863\u8FD8\u6CA1\u6709 Lua \u811A\u672C\u3002\u8BF7\u5148\u5728\u4E0B\u65B9\u6DFB\u52A0\u811A\u672C\uFF0C\u518D\u67E5\u770B\u66F4\u65B0\u3002"),B.pendingGuidChanges?n("p",{role:"alert"},"\u6709\u63A7\u4EF6\u7D22\u5F15\u5C1A\u672A\u540C\u6B65\u5230 Lua\u3002\u8BF7\u5148\u5728\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\uFF0C\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\uFF1B\u5904\u7406\u5B8C\u6210\u540E\u518D\u67E5\u770B\u6E38\u620F\u811A\u672C\u66F4\u65B0\u3002"):null,B.rows.map(u=>n("div",{key:u.id,style:{borderTop:"1px solid var(--line)",padding:6}},n("label",{style:{overflowWrap:"anywhere"}},n("input",{type:"checkbox",disabled:F||!!u.error||u.status==="\u672A\u53D8\u5316",checked:C.includes(u.id),onChange:te=>_(te.target.checked?[...C,u.id]:C.filter(re=>re!==u.id))}),` ${u.path} \xB7 ${Me[u.status]||u.status}`),n("div",null,`\u590D\u5236\u7684\u4EE3\u7801\u6765\u81EA\uFF1A${ze[u.sourceKind]||u.sourceKind}`),n("div",{style:{overflowWrap:"anywhere"}},u.error?`\u65E0\u6CD5\u590D\u5236\uFF1A${u.error}`:`\u590D\u5236\u5230\uFF1A${u.target}`),u.sourceMismatch?n("div",{className:"qxsim-note"},"\u8FD9\u4E2A\u811A\u672C\u5728\u5B58\u6863\u91CC\u548C\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u4E0D\u540C\u3002\u672C\u6B21\u4F1A\u590D\u5236\u5B58\u6863\u91CC\u7684\u4EE3\u7801\uFF1B\u5982\u679C\u8981\u4F7F\u7528\u9879\u76EE\u6587\u4EF6\uFF0C\u8BF7\u70B9\u51FB\u300C\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801\u300D\uFF0C\u7136\u540E\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u3002",n("details",null,n("summary",null,"\u67E5\u770B\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801"),n("pre",{style:{maxHeight:200,overflow:"auto"}},u.diskSource)),de("\u6539\u7528\u9879\u76EE\u6587\u4EF6\u91CC\u7684\u4EE3\u7801",async()=>{await y(),await h({op:"updateScript",id:u.id,source:u.diskSource}),q(null)})):null,!u.error&&u.status!=="\u672A\u53D8\u5316"?n("details",null,n("summary",null,"\u5BF9\u6BD4\u66F4\u65B0\u524D\u540E\u7684\u4EE3\u7801"),n("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8}},n("div",{style:{minWidth:0}},"\u6E38\u620F\u91CC\u73B0\u5728\u7684\u4EE3\u7801",n("pre",{style:{maxHeight:240,overflow:"auto"}},u.status==="\u65B0\u589E"?"\uFF08\u6E38\u620F\u91CC\u8FD8\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6\uFF09":u.beforeSource)),n("div",{style:{minWidth:0}},"\u672C\u6B21\u8981\u590D\u5236\u7684\u4EE3\u7801",n("pre",{style:{maxHeight:240,overflow:"auto"}},u.source)))):null)),B.rows.some(u=>u.status==="\u65B0\u589E")?n("p",null,"\u65B0\u589E\u811A\u672C\u590D\u5236\u540E\uFF0C\u8FD8\u9700\u8981\u5728\u5343\u661F\u6C99\u7BB1\u91CC\u5173\u8054\u5BF9\u5E94\u7684\u811A\u672C\u6587\u4EF6\uFF1B\u9700\u8981\u76F4\u63A5\u8FD0\u884C\u7684\u811A\u672C\u8FD8\u8981\u6302\u5230\u63A7\u4EF6\u4E0A\u3002"):null,C.length?n("p",null,`\u5DF2\u9009 ${C.length} \u4E2A\u811A\u672C\uFF0C\u5176\u4E2D ${B.rows.filter(u=>C.includes(u.id)&&u.status==="\u8986\u76D6").length} \u4E2A\u4F1A\u66FF\u6362\u6E38\u620F\u91CC\u7684\u65E7\u6587\u4EF6\u3002\u66FF\u6362\u524D\u4F1A\u81EA\u52A8\u5907\u4EFD\u65E7\u6587\u4EF6\uFF0C\u6E38\u620F\u91CC\u7684\u5176\u4ED6\u6587\u4EF6\u4F1A\u4FDD\u7559\u3002`):null,n("div",{style:{display:"flex",gap:6}},de("\u6682\u4E0D\u590D\u5236",async()=>q(null)),de(`\u786E\u8BA4\u590D\u5236 ${C.length} \u4E2A\u811A\u672C`,async()=>{let u=B;q(null),await y(),H(await e("script-sync-apply",{planId:u.id,scriptIds:C,confirmed:!0}))},!C.length||!!B.pendingGuidChanges))):null,S?n("div",{role:"status"},n("strong",null,S.completed?"\u811A\u672C\u5DF2\u590D\u5236\u5230\u5343\u661F\u6C99\u7BB1":"\u6709\u4E9B\u811A\u672C\u672A\u590D\u5236\u6210\u529F"),n("p",null,S.completed?"\u4E0B\u4E00\u6B65\uFF1A\u56DE\u5230\u5343\u661F\u6C99\u7BB1\uFF0C\u4FDD\u5B58\u5173\u5361\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF0C\u8BA9\u6E38\u620F\u52A0\u8F7D\u66F4\u65B0\u540E\u7684\u811A\u672C\u3002":"\u8BF7\u6309\u4E0B\u65B9\u63D0\u793A\u5904\u7406\u5931\u8D25\u7684\u6587\u4EF6\uFF0C\u518D\u91CD\u65B0\u67E5\u770B\u66F4\u65B0\u5E76\u590D\u5236\u3002"),n("p",{style:{overflowWrap:"anywhere"}},`\u590D\u5236\u65F6\u95F4\uFF1A${new Date(S.at).toLocaleString()} \xB7 \u65E7\u6587\u4EF6\u5907\u4EFD\u4FDD\u5B58\u5728\uFF1A${S.backupRoot}`),n("ul",{style:{overflowWrap:"anywhere"}},S.results.map(u=>n("li",{key:u.id},`${u.target}\uFF1A${u.status==="\u6210\u529F"?"\u5DF2\u590D\u5236":"\u672A\u590D\u5236"}${u.error?` \xB7 ${u.error}`:""}`)))):null))}}function yt(t){let n=t.createElement;return function({snap:o,prepare:e,patch:h,copy:y,onScripts:N,onError:P,reloadArchive:$}){let[v,I]=t.useState(!1),[A,L]=t.useState(null),[E,B]=t.useState(null),[q,C]=t.useState(""),[_,S]=t.useState(!1),H=t.useRef(null),g=o.controlGuidChanges||[],j=g.at(-1)?.id||"";t.useEffect(()=>{L(null),C("")},[o.version,o.save?.name]),t.useEffect(()=>{S(!1)},[j,o.save?.name]),t.useLayoutEffect(()=>{q&&H.current&&(H.current.scrollTop=0)},[q]);let M=F=>async()=>{I(!0);try{await F()}catch(K){P(K?.message||String(K))}finally{I(!1)}},R=M(async()=>{C(await y()),L(null),H.current&&(H.current.scrollTop=0)});return!g.length&&!E?null:_?n("div",{style:{flexShrink:0,padding:"2px 10px"}},n("button",{className:"qxsim-action",onClick:()=>S(!1)},`Lua \u7D22\u5F15\u5F85\u540C\u6B65\uFF08${g.length} \u9879\uFF09\xB7 \u5C55\u5F00`)):n("section",{ref:H,className:"qxsim-note","aria-label":"Lua \u7D22\u5F15\u540C\u6B65",style:{flexShrink:0,maxHeight:270,overflow:"auto",overflowWrap:"anywhere"}},n("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}},n("strong",null,g.length?`\u4E0B\u4E00\u6B65\uFF1A\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08${g.length} \u9879\uFF09`:"\u811A\u672C\u5168\u91CF\u66FF\u6362\u5DF2\u5B8C\u6210"),n("button",{className:"qxsim-action","aria-label":"\u5173\u95ED\u7D22\u5F15\u540C\u6B65\u63D0\u793A",title:"\u6536\u8D77\u63D0\u793A\uFF0C\u4FDD\u7559\u5F85\u540C\u6B65\u8BB0\u5F55",disabled:v,onClick:()=>{g.length?S(!0):B(null)}},"\u5173\u95ED")),q?n("details",{open:!0},n("summary",null,"\u540C\u6B65\u4EFB\u52A1\uFF08\u7C98\u8D34\u7ED9\u5F53\u524D\u9879\u76EE\u7684 AI\uFF09"),n("textarea",{"aria-label":"AI \u7D22\u5F15\u540C\u6B65\u4EFB\u52A1",readOnly:!0,value:q,rows:5,style:{width:"100%",boxSizing:"border-box"}}),n("button",{className:"qxsim-action",disabled:v,onClick:M($)},"AI \u5DF2\u5904\u7406\uFF0C\u91CD\u65B0\u8F7D\u5165\u5B58\u6863")):null,n("div",null,g.length?"\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF0C\u8BF7\u9009\u62E9\u4E00\u79CD\u65B9\u5F0F\u540C\u6B65\u811A\u672C\u3002":"\u8BF7\u68C0\u67E5\u66FF\u6362\u7ED3\u679C\u5E76\u4FDD\u5B58\u5B58\u6863\uFF0C\u518D\u5230\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u91CC\u7684\u6587\u4EF6\u5E76\u91CD\u65B0\u8BD5\u73A9\u3002"),g.length?n(t.Fragment,null,n("div",{role:"group","aria-label":"\u7D22\u5F15\u540C\u6B65\u65B9\u5F0F",style:{display:"flex",gap:12,flexWrap:"wrap",marginTop:5}},n("div",{style:{flex:"1 1 280px"}},n("button",{className:"qxsim-action",disabled:v,onClick:M(async()=>{await e();let K=(await h({op:"previewControlGuidSync"})).controlGuidSyncPreview;if(B(null),C(""),!K.canApply){L(K);return}let ae=await h({op:"syncControlGuidReferences",planId:K.id});B(ae.controlGuidSyncResult),L(null)})},"\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15"),n("div",null,n("strong",null,"\u53EF\u80FD\u9519\u8BEF\u5730\u66FF\u6362\u975E\u7D22\u5F15\u5185\u5BB9\u3002"),"\u6309\u5B8C\u6574\u5341\u8FDB\u5236\u6570\u5B57\u66FF\u6362\u6240\u6709\u5DF2\u767B\u8BB0\u811A\u672C\uFF0C\u5305\u62EC\u914D\u7F6E\u8868\u3001\u5B57\u7B26\u4E32\u548C\u6CE8\u91CA\uFF1B\u540C\u65F6\u66F4\u65B0\u5185\u5BB9\u4E00\u81F4\u7684\u5DE5\u4F5C\u533A\u6E90\u6587\u4EF6\uFF0C\u66FF\u6362\u524D\u81EA\u52A8\u5907\u4EFD\u3002")),n("div",{style:{flex:"1 1 280px"}},n("button",{className:"qxsim-action",disabled:v,onClick:R},"\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI"),n("div",null,"\u5148\u4FDD\u5B58\u6700\u65B0\u5B58\u6863\uFF0C\u518D\u590D\u5236\u5305\u542B\u6620\u5C04\u8BFB\u53D6\u65B9\u5F0F\u548C\u811A\u672C\u4F4D\u7F6E\u7684\u63D0\u793A\u8BCD\uFF0C\u7531 AI \u5224\u65AD\u54EA\u4E9B\u5F15\u7528\u9700\u8981\u66F4\u65B0\u3002"))),n("details",null,n("summary",null,`\u67E5\u770B\u7D22\u5F15\u53D8\u66F4\uFF08${g.length} \u9879\uFF09`),n("ul",null,g.slice(0,20).map(F=>n("li",{key:F.id},`${F.controlName}\uFF1A${F.oldGuid} \u2192 ${F.newGuid}`))),g.length>20?n("div",null,"\u8FD9\u91CC\u663E\u793A\u524D 20 \u9879\uFF1B\u5B8C\u6574\u6620\u5C04\u968F\u5B58\u6863\u4FDD\u5B58\uFF0C\u590D\u5236\u7684\u4EFB\u52A1\u4F1A\u5F15\u5BFC AI \u8BFB\u53D6\u5168\u90E8\u3002"):null)):null,A?n("div",{"aria-label":"Lua \u7D22\u5F15\u540C\u6B65\u95EE\u9898"},n("p",null,"\u6E90\u7801\u6587\u4EF6\u6216\u7D22\u5F15\u6620\u5C04\u5B58\u5728\u51B2\u7A81\uFF0C\u672C\u6B21\u6CA1\u6709\u4FEE\u6539\u811A\u672C\u3002\u53EF\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI \u5904\u7406\u3002"),A.issues.map((F,K)=>n("div",{key:K},F)),A.rows.filter(F=>F.issues.length).map(F=>n("details",{key:F.id,open:!0},n("summary",null,F.path||"\u5185\u8054\u811A\u672C"),F.issues.slice(0,12).map((K,ae)=>n("div",{key:`i${ae}`},`${K.line?`\u7B2C ${K.line} \u884C\uFF1A`:""}${K.reason}`)),F.issues.length>12?n("div",null,"\u5176\u4F59\u95EE\u9898\u8BF7\u7531 AI \u6838\u5BF9\u3002"):null))):null,E&&!g.length?n(t.Fragment,null,n("div",null,`\u5DF2\u66FF\u6362 ${E.scripts} \u4E2A\u811A\u672C\u7684 ${E.replacements} \u5904\u6587\u672C\uFF0C\u66F4\u65B0 ${E.projectFiles} \u4E2A\u9879\u76EE\u6587\u4EF6\u3002\u5907\u4EFD\uFF1A${E.backupRoot}`),n("button",{className:"qxsim-action",onClick:N},"\u524D\u5F80 Lua \u811A\u672C")):null)}}function _e(t){try{t?.close()}catch{}}function ka(){if(window.location.protocol==="dsh-app:")return null;let t;try{return t=window.open("about:blank","_blank"),!t||t.closed?null:(t.document.write('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>'),t)}catch{return _e(t),null}}function qt(t){let n=t.createElement,f=new Map;function o({entry:e,api:h,onClosed:y}){let N=t.useRef(null),P=t.useRef(null),[$,v]=t.useState(!1),[I,A]=t.useState(""),[L,E]=t.useState(!1);t.useLayoutEffect(()=>{let q={closing:!1,stopped:!1,pending:null,controller:null,requests:new Set};P.current=q;let C=N.current,_=C.querySelector("iframe"),S=!0,H=()=>{if(q.stopped)return Promise.resolve();if(q.closing=!0,!q.controller)return q.stopped=!0,Promise.resolve();if(!q.pending){let M=(async()=>{q.controller?.quiesce(),await Promise.allSettled([...q.requests]),await h(e.sessionId,"play",{action:"stop",args:{}}),q.stopped=!0})().finally(()=>{q.pending=null,f.get(e.sessionId)===M&&f.delete(e.sessionId)});q.pending=M,f.set(e.sessionId,M)}return q.pending};q.close=async()=>{if(!(q.pending||q.stopped)){v(!0),A("");try{await H(),S&&y()}catch(M){S&&(A(`\u505C\u6B62\u8BD5\u73A9\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\uFF1A${M?.message||M}`),v(!1))}}};let g=M=>{M.source!==_.contentWindow||M.data?.type!=="qxqy-play-close"||M.data.sessionId!==e.sessionId||q.close()},j=M=>{M.preventDefault(),q.close()};return window.addEventListener("message",g),C.addEventListener("cancel",j),C.showModal(),()=>{S=!1,window.removeEventListener("message",g),C.removeEventListener("cancel",j),C.close(),H().catch(M=>console.error("Embedded play cleanup failed",M)),e.returnFocus?.isConnected&&e.returnFocus.focus()}},[e,h,y]);function B(q){let C=P.current;if(!C.closing)try{let _=q.currentTarget,S=_.contentWindow?.qxqyEmbeddedPlay;if(!S)throw new Error("\u8BD5\u73A9\u9875\u672A\u80FD\u52A0\u8F7D\uFF0C\u8BF7\u8FD4\u56DE\u7F16\u8F91\u540E\u91CD\u8BD5\u3002");C.controller=S,E(!0),_.focus(),S.focus();let H=(g,j={})=>{if(C.closing)return Promise.reject(new Error("\u8BD5\u73A9\u6B63\u5728\u5173\u95ED"));let M=h(e.sessionId,"play",{action:g,args:j});return C.requests.add(M),M.then(()=>C.requests.delete(M),()=>C.requests.delete(M)),M};S.start(H).catch(g=>{C.closing||A(g?.message||String(g))})}catch(_){A(_?.message||String(_))}}return n("dialog",{ref:N,className:"qxsim-play-overlay","aria-label":"\u5185\u5D4C\u8BD5\u73A9","aria-modal":!0},n("header",{className:"qxsim-play-header"},n("span",{role:"status"},$?"\u6B63\u5728\u505C\u6B62\u8BD5\u73A9\u2026":L?"\u5185\u5D4C\u8BD5\u73A9":"\u6B63\u5728\u8F7D\u5165\u8BD5\u73A9\u2026"),n("button",{className:"qxsim-action",type:"button",disabled:$,onClick:()=>void P.current?.close?.()},"\u5173\u95ED\u8BD5\u73A9")),I?n("div",{className:"qxsim-play-error",role:"alert"},I):null,n("iframe",{title:"\u5343\u661F\u6C99\u7BB1\u8BD5\u73A9",src:e.url,onLoad:B,tabIndex:0}))}return function({sessionId:h,api:y,playUrl:N,onError:P}){let $=t.useRef(null),[v,I]=t.useState(!1),[A,L]=t.useState(null),E=t.useCallback(()=>L(null),[]);t.useEffect(()=>{let q={active:!0,pending:!1,popup:null};return $.current=q,I(!1),L(null),()=>{q.active=!1,_e(q.popup)}},[h]);async function B(q){let C=$.current;if(!C?.active||C.pending||A)return;C.pending=!0;let _=document.activeElement;I(!0);try{let S=ka();if(C.popup=S,await f.get(h),!C.active||(await q(),!C.active))return;let H=new URL(N(h),window.location.href);if(S){try{if(S.closed)throw new Error("Play window closed");S.location.replace(H.href)}catch{_e(S),S=null}C.popup=null}S||(H.searchParams.set("embedded","1"),L({sessionId:h,url:H.href,returnFocus:_}))}catch(S){_e(C.popup),C.popup=null,C.active&&P(S?.message||String(S))}finally{C.pending=!1,C.active&&I(!1)}}return{open:B,opening:v,overlay:A?.sessionId===h?n(o,{key:h,entry:A,api:y,onClosed:E}):null}}}var wt="prefab-v1",Na=[[10003004,10003004],[10005001,10005142],[10006001,10006002],[10007002,10007002],[10008001,10008001],[10009001,10009011],[20001001,20001074],[20001076,20001121],[20001123,20001156],[20001158,20001302],[20001304,20001568],[20001570,20001999],[20002001,20002755],[20002757,20002999],[20003001,20003455],[30001001,30001016],[30002001,30002017],[30003001,30003011],[30004001,30004001],[30005001,30005020],[30006001,30006026],[30007001,30007013],[30008001,30008011]];function St(t){return!Number.isSafeInteger(t)||!Na.some(([n,f])=>t>=n&&t<=f)?null:t===10003004||t===10008001?128:256}var Ca="sprite-v1",$a="/qxqy-assets/",Ia=[[100001,100006],[100101,100213],[101001,101018],[101020,101028],[101030,101046],[101048,101048],[101050,101054],[101056,101080],[102001,102052],[103001,103148],[104001,104010],[105001,105140],[105142,105219],[105221,105317],[106001,106047],[106049,106096],[107001,107007],[107010,107020],[107031,107092],[107094,107180],[107183,107201],[107203,107205],[107207,107228],[107231,107278],[107280,107402],[108001,108017],[108019,108020],[109001,109031],[109033,109034],[109036,109075],[110001,110053],[111001,111139],[112001,112042]];function Se(t){return t==null||t===""?"StaticReference":typeof t=="string"?t:typeof t.Name=="string"?t.Name:"Unknown"}function ue(t,n){return`${Se(n)}:${t}`}function Ie(t,n){let f=Se(n);return f==="Prefab"?St(t)!==null:f==="StaticReference"&&Number.isSafeInteger(t)&&t>100006&&Ia.some(([o,e])=>t>=o&&t<=e)}function it(t,n=0,f){let o=Se(f);if(!["StaticReference","Prefab"].includes(o))throw new Error(`Unsupported image source: ${o}`);return`${$a}${o==="Prefab"?wt:Ca}/${t}.png${n?`?refresh=${n}`:""}`}function kt(t,n=0,f){return it(t,n,f).replace(".png",".json")}var nt="qxqy-image-refresh",ge=new Map,Le=new Map,Ae=new Map,rt=new Set,Aa=16777216,Nt=!1;function $t(t,n){Ae.set(t,n),ge.delete(t),Le.delete(t);for(let f of rt)f(t)}var Ct=t=>/^\d+$/.test(t)?ue(Number(t)):t;function Ue(){if(!(Nt||typeof window>"u")){Nt=!0;try{for(let[t,n]of Object.entries(JSON.parse(localStorage.getItem(nt)||"{}")))Ae.set(Ct(t),n)}catch{}window.addEventListener("storage",t=>{if(t.key===nt)try{for(let[n,f]of Object.entries(JSON.parse(t.newValue||"{}"))){let o=Ct(n);Ae.get(o)!==f&&$t(o,f)}}catch{}})}}function st(t){return Ue(),rt.add(t),()=>rt.delete(t)}function It(t,n){Ue(),$t(ue(t,n),Date.now());try{localStorage.setItem(nt,JSON.stringify(Object.fromEntries(Ae)))}catch{}}function ot(t,n){if(Ue(),Se(n)!=="StaticReference"||!Ie(t,n))return Promise.resolve(null);let f=ue(t,n),o=Le.get(f);if(o)return o;let e=fetch(kt(t,Ae.get(f),n),{signal:AbortSignal.timeout(3e4)}).then(async h=>{if(!h.ok)throw new Error(`\u56FE\u7247 ${t} \u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25\uFF1AHTTP ${h.status}`);return h.json()}).catch(h=>{throw Le.get(f)===e&&Le.delete(f),h});return Le.set(f,e),e}async function At(t,n){let[f,o]=await Promise.all([Ea(t,n),ot(t,n).then(e=>({meta:e,error:""}),e=>({meta:void 0,error:e.message}))]);return{image:f,...o}}function Ea(t,n){if(Ue(),!Ie(t,n))return Promise.reject(new Error("Image source/ID is not in the preview allowlist"));let f=ue(t,n),o=ge.get(f);if(o&&(!o.failed||Date.now()<o.retryAt))return ge.delete(f),ge.set(f,o),o.promise;let e={pixels:0,failed:!1};return e.promise=new Promise((h,y)=>{let N=new Image,P=setTimeout(()=>{N.src="",$(new Error("\u56FE\u7247\u52A0\u8F7D\u8D85\u65F6"))},45e3);function $(v){if(clearTimeout(P),N.onload=N.onerror=null,v){e.failed=!0,e.retryAt=Date.now()+6e4,y(v);return}e.pixels=N.width*N.height;let I=[...ge.values()].reduce((A,L)=>A+L.pixels,0);for(let[A,L]of ge){if(I<=Aa&&ge.size<=128)break;A!==f&&(!L.pixels&&!L.failed||(ge.delete(A),I-=L.pixels))}h(N)}N.onload=()=>$(),N.onerror=()=>$(new Error(`\u56FE\u7247 ${t} \u52A0\u8F7D\u5931\u8D25\uFF0C\u53EF\u5728\u5C5E\u6027\u9762\u677F\u5237\u65B0\u7D20\u6750`)),N.src=it(t,Ae.get(f),n)}),ge.set(f,e),e.promise}function Et(t,n,f){let o=Number(n??4294967295)>>>0;if((o&16777215)===16777215)return t;let e=f(t.width,t.height),h=e.getContext("2d");h.drawImage(t,0,0);let y=h.getImageData(0,0,e.width,e.height),N=o>>>16&255,P=o>>>8&255,$=o&255;for(let v=0;v<y.data.length;v+=4)y.data[v]=Math.round(y.data[v]*N/255),y.data[v+1]=Math.round(y.data[v+1]*P/255),y.data[v+2]=Math.round(y.data[v+2]*$/255);return h.putImageData(y,0,0),e}function lt(t){return!!t?.border&&Object.values(t.border).some(n=>Number.isFinite(n)&&n>0)}function He(t,n){let f=typeof n=="object"?n?.Name:n;return lt(t)&&f!=="Basic"?"Stretch":"Basic"}function Pa(t,n,f,o){n=Number.isFinite(n)?Math.max(0,n):0,f=Number.isFinite(f)?Math.max(0,f):0;let e=Math.min(1,t/(n+f||1));n*=e,f*=e;let h=Math.min(1,o/(n+f||1));return{source:[0,n,t-f,t],target:[0,n*h,o-f*h,o]}}var Pt=new WeakMap;function Lt(t,n,f,o,e){let h=Math.max(0,f),y=Math.max(0,o),N=Math.min(1,4096/Math.max(1,h),4096/Math.max(1,y)),P=Math.max(1,Math.round(h*N)),$=Math.max(1,Math.round(y*N)),v=e(P,$),I=v.getContext("2d");if(!h||!y)return v;let A=Pt.get(t);if(!A){let _=e(t.width,t.height),S=_.getContext("2d");S.drawImage(t,0,0),A=S.getImageData(0,0,t.width,t.height),Pt.set(t,A)}let L=I.createImageData(P,$),E=A.data,B=(_,S,H,g,j,M)=>{let{source:R,target:F}=Pa(S,H,g,j);return Array.from({length:M},(K,ae)=>{let le=(ae+.5)*j/M,V=le<F[1]?0:le<F[2]?1:2,ee=F[V+1]>F[V]?(le-F[V])/(F[V+1]-F[V]):0,ce=Math.max(0,Math.min(_-1,(R[V]+ee*(R[V+1]-R[V]))*_/S-.5)),Q=Math.floor(ce);return[Q,Math.min(_-1,Q+1),ce-Q]})},q=B(t.width,n.width,n.border.left,n.border.right,h,P),C=B(t.height,n.height,n.border.top,n.border.bottom,y,$);for(let _=0;_<$;_++)for(let S=0;S<P;S++){let[H,g,j]=q[S],[M,R,F]=C[_],K=(M*t.width+H)*4,ae=(M*t.width+g)*4,le=(R*t.width+H)*4,V=(R*t.width+g)*4,ee=E[K+3]*(1-j)*(1-F),ce=E[ae+3]*j*(1-F),Q=E[le+3]*(1-j)*F,he=E[V+3]*j*F,me=ee+ce+Q+he,be=(_*P+S)*4;L.data[be+3]=Math.round(me);for(let oe=0;oe<3;oe++)L.data[be+oe]=me?Math.round((E[K+oe]*ee+E[ae+oe]*ce+E[le+oe]*Q+E[V+oe]*he)/me):0}return I.putImageData(L,0,0),v}function Tt(t,n,f){if(t.fillType!=="Horizontal"&&t.fillType!=="Vertical")return null;let o=Number(t.fillAmount??1),e=Number.isFinite(o)?Math.max(0,Math.min(1,o)):1;if(t.fillType==="Horizontal"){let y=n*e;return{x:t.fillHorizontalType==="Right"?n/2-y:-n/2,y:-f/2,width:y,height:f}}let h=f*e;return{x:-n/2,y:t.fillVerticalType==="Top"?-f/2:f/2-h,width:n,height:h}}function Mt(t,n){let f=document.createElement("canvas");return f.width=t,f.height=n,f}function zt(t){let n=t.createElement;return function({item:o}){let e=ue(o.imageId,o.imageSource),h=t.useRef(null),[y,N]=t.useState({image:null,meta:null,error:""}),[P,$]=t.useState(0);return t.useEffect(()=>st(v=>{v===e&&$(I=>I+1)}),[e]),t.useEffect(()=>{let v=!0;return N({image:null,error:""}),At(o.imageId,o.imageSource).then(({image:I,meta:A,error:L})=>{v&&N({image:I,meta:A,error:L})},I=>{v&&N({image:null,error:I.message})}),()=>{v=!1}},[e,P]),t.useEffect(()=>{let v=h.current;if(!y.image||!v)return;let I=He(y.meta,o.imageType)==="Stretch"?Lt(y.image,y.meta,o.width,o.height,Mt):y.image,A=Et(I,o.imageColor,Mt);v.width=A.width,v.height=A.height;let L=v.getContext("2d"),E=o.enableFill?Tt(o,v.width,v.height):null;E&&(L.beginPath(),L.rect(E.x+v.width/2,E.y+v.height/2,E.width,E.height),L.clip()),L.globalAlpha=(Number(o.imageColor??4294967295)>>>24&255)/255,L.drawImage(A,0,0)},[y.image,y.meta,o.imageType,o.width,o.height,o.imageColor,o.enableFill,o.fillType,o.fillHorizontalType,o.fillVerticalType,o.fillAmount]),y.image?n("canvas",{ref:h,title:y.error,"data-image-id":o.imageId,"data-image-source":Se(o.imageSource),"data-image-type":He(y.meta,o.imageType),"aria-label":`\u56FE\u7247 ${o.imageId}`,style:{display:"block",position:"absolute",inset:0,width:"100%",height:"100%"}}):n("span",{className:"qxsim-box-label",title:y.error,role:y.error?"status":void 0},y.error?`\u56FE\u7247 ${o.imageId} \u52A0\u8F7D\u5931\u8D25`:`\u52A0\u8F7D\u56FE\u7247 ${o.imageId}\u2026`)}}function Ft(t){let n=t.createElement;return function({imageId:o,imageSource:e,value:h,commit:y}){let N=ue(o,e),[P,$]=t.useState({key:"",meta:void 0,error:""}),[v,I]=t.useState(0);t.useEffect(()=>st(E=>{E===N&&I(B=>B+1)}),[N]),t.useEffect(()=>{let E=!0;return $({key:N,meta:void 0,error:""}),ot(o,e).then(B=>{E&&$({key:N,meta:B,error:""})},B=>{E&&$({key:N,meta:void 0,error:B.message})}),()=>{E=!1}},[N,v]);let A=P.key===N&&P.meta!==void 0,L=A&&lt(P.meta);return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u56FE\u7247\u7C7B\u578B"),n("select",{"aria-label":"\u56FE\u7247\u7C7B\u578B",disabled:!L,value:A?He(P.meta,h):"",onChange:E=>y("imageType",E.target.value)},A?n("option",{value:"Basic"},"\u57FA\u7840"):n("option",{value:""},P.error?"\u5143\u6570\u636E\u52A0\u8F7D\u5931\u8D25":"\u8BFB\u53D6\u7D20\u6750\u8FB9\u754C\u2026"),L?n("option",{value:"Stretch"},"\u62C9\u4F38"):null),P.error?n("small",{role:"status"},P.error):null)}}var La=t=>`#${(Number(t)&16777215).toString(16).padStart(6,"0").toUpperCase()}`,Ot=t=>String(Math.round(t/255*100));function Dt(t){let n=t.createElement;return function({field:o,commit:e}){let h=La(o.value),y=Number(o.value)>>>24,N=Ot(y),[P,$]=t.useState(h),[v,I]=t.useState(N),A=t.useRef(!1),[L,E]=t.useState(""),[B,q]=t.useState("");t.useEffect(()=>{$(h),E("")},[h]),t.useEffect(()=>{A.current||(I(N),q(""))},[N]);function C(g){let j=g.trim().replace(/^#/,"");if(!/^[0-9a-f]{6}$/i.test(j)){E("\u8BF7\u8F93\u5165\u516D\u4F4D\u989C\u8272\uFF0C\u4F8B\u5982 #FF8800");return}let M=`#${j.toUpperCase()}`;$(M),E(""),e(o.key,R=>(Number(R)&4278190080|parseInt(j,16))>>>0)}function _(g){let j=Number(g);if(!String(g).trim()||!Number.isInteger(j)||j<0||j>100){q("\u900F\u660E\u5EA6\u8BF7\u8F93\u5165 0\u2013100 \u7684\u6574\u6570");return}let M=Math.round(j/100*255);A.current=!1,I(Ot(M)),q(""),e(o.key,R=>(M<<24|Number(R)&16777215)>>>0)}let S="Alpha\uFF1A0% \u5B8C\u5168\u900F\u660E\uFF0C100% \u5B8C\u5168\u4E0D\u900F\u660E",H=v.trim()&&Number.isFinite(Number(v))?Math.max(0,Math.min(100,Number(v))):Number(N);return n("div",{className:"qxsim-color-editor",role:"group","aria-label":`${o.label}\u4E0E\u900F\u660E\u5EA6`},n("div",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},o.label),n("span",{className:"qxsim-color-row"},n("span",{className:"qxsim-color-swatch",title:"\u6253\u5F00\u53D6\u8272\u5668"},n("input",{type:"color",value:/^#[0-9a-f]{6}$/i.test(P)?P:h,disabled:!!o.readonly,"aria-label":`${o.label}\u53D6\u8272\u5668`,onInput:g=>C(g.target.value)})),n("input",{type:"text",value:P,spellCheck:!1,disabled:!!o.readonly,placeholder:"#RRGGBB","aria-label":`${o.label} RGB`,"aria-invalid":!!L,onChange:g=>{$(g.target.value),E("")},onBlur:()=>C(P),onKeyDown:g=>{g.key==="Enter"&&g.currentTarget.blur(),g.key==="Escape"&&($(h),E(""))}})),L?n("small",{className:"qxsim-color-error",role:"alert"},L):null),n("div",{className:"qxsim-field"},n("span",{className:"qxsim-field-label",title:S},"\u900F\u660E\u5EA6"),n("span",{className:"qxsim-alpha-row"},n("input",{type:"range",min:0,max:100,step:1,value:H,disabled:!!o.readonly,title:S,"aria-label":`${o.label}\u900F\u660E\u5EA6\u6ED1\u5757`,onInput:g=>_(g.target.value)}),n("span",{className:"qxsim-alpha-value"},n("input",{type:"number",min:0,max:100,step:1,inputMode:"numeric",value:v,disabled:!!o.readonly,title:S,"aria-label":`${o.label}\u900F\u660E\u5EA6`,"aria-invalid":!!B,onChange:g=>{A.current=!0,I(g.target.value),q("")},onBlur:()=>{A.current&&_(v)},onKeyDown:g=>{g.key==="Enter"&&g.currentTarget.blur(),g.key==="Escape"&&(A.current=!1,I(N),q(""))}}),n("span",{"aria-hidden":!0},"%"))),B?n("small",{className:"qxsim-color-error",role:"alert"},B):null))}}function jt(t,n,f){let o=t.renderMatrix;if(!o)return{};let e=o.a*t.centerX+o.c*t.centerY+o.tx,h=o.b*t.centerX+o.d*t.centerY+o.ty;return{left:`${(e-t.width/2)/n*100}%`,bottom:`${(h-t.height/2)/f*100}%`,width:`${t.width/n*100}%`,height:`${t.height/f*100}%`,transform:`matrix(${o.a},${-o.b},${-o.c},${o.d},0,0)`}}function Bt(t,{api:n,playUrl:f,saveToWorkspace:o=!1}){let e=t.createElement,h=vt(t),y=yt(t),N=qt(t),P=zt(t),$=Ft(t),v=Dt(t),I="qxqy-simulator-style",A=`
2
2
  .qxsim-save-overlay{position:absolute;inset:0;z-index:30;display:grid;place-items:center;background:#0006}.qxsim-save-dialog{width:min(440px,90%);padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 12px 48px #0005}.qxsim-save-dialog h2{margin:0 0 16px;font-size:17px}.qxsim-save-dialog input{width:100%;margin:8px 0 16px;padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--input)}.qxsim-save-dialog footer{display:flex;justify-content:flex-end;gap:8px}.qxsim-save-dialog [role=alert]{color:var(--danger);margin-bottom:12px;overflow-wrap:anywhere}
3
3
  .qxsim-play-overlay{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--bg);color:var(--text)}.qxsim-play-overlay[open]{display:flex;flex-direction:column}.qxsim-play-overlay::backdrop{background:#0008}.qxsim-play-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px;padding:4px 12px;border-bottom:1px solid var(--line);background:var(--panel)}.qxsim-play-overlay iframe{display:block;flex:1;width:100%;min-height:0;border:0;background:var(--bg)}.qxsim-play-error{padding:8px 12px;color:var(--danger);overflow-wrap:anywhere}html[data-windows-titlebar] .qxsim-play-overlay{top:40px;height:calc(100% - 40px)}
4
4
  .qxsim{--blue:#477cf0;--danger:#e75a6a;position:relative;display:flex;flex:1 1 0;align-self:stretch;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;max-height:none;container-type:inline-size;color:var(--text);background:var(--bg);font:13px/1.4 Inter,"Microsoft YaHei UI","Microsoft YaHei",sans-serif;overflow:hidden;color-scheme:inherit}
@@ -8,7 +8,7 @@
8
8
  .qxsim-toolbar{height:50px;flex:0 0 50px;display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(280px,1fr);align-items:center;padding:0 10px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--toolbarA),var(--toolbarB));box-shadow:0 1px 8px var(--shadow);z-index:3}.qxsim-brand,.qxsim-toolbar-center,.qxsim-actions{display:flex;align-items:center}.qxsim-brand{gap:8px;min-width:0}.qxsim-appicon{width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;font-size:11px;background:var(--input)}.qxsim-brand-text{min-width:0}.qxsim-brand-text strong,.qxsim-brand-text span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qxsim-brand-text strong{font-size:13px}.qxsim-brand-text span{color:var(--muted);font-size:10px}.qxsim-toolbar-center{gap:6px}.qxsim-actions{justify-content:flex-end;gap:6px}.qxsim-io{display:flex;align-items:center;gap:4px;padding-right:6px;margin-right:2px;border-right:1px solid var(--line)}
9
9
  .qxsim-editor-nav{height:40px;flex:0 0 40px;display:flex;align-items:stretch;padding:0 10px;border-bottom:1px solid var(--line);background:var(--panel)}.qxsim-editor-nav button{min-width:116px;padding:0 18px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-weight:650}.qxsim-editor-nav button.active{border-bottom-color:var(--blue);color:var(--text);background:color-mix(in srgb,var(--blue) 8%,transparent)}.qxsim-editor-nav .save-summary{display:flex;align-items:center;margin-left:auto;color:var(--muted);font-size:10px}
10
10
  .qxsim-control,.qxsim-iconbtn,.qxsim-action{height:32px;border:1px solid var(--line);background:var(--input);border-radius:6px}.qxsim-control{min-width:156px;padding:0 28px 0 9px}.qxsim-control.zoom{min-width:78px}.qxsim-iconbtn{width:32px}.qxsim-action{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 11px;white-space:nowrap}.qxsim-action.primary{color:#fff;border-color:#3265d8;background:linear-gradient(#5388fa,#376ad8)}.qxsim-action.danger{color:var(--danger)}.qxsim-action:hover,.qxsim-iconbtn:hover{border-color:var(--blue);background:var(--hover)}
11
- .qxsim-main{display:grid;grid-template-columns:clamp(220px,17cqi,280px) minmax(360px,1fr) clamp(310px,22cqi,356px);flex:1;min-height:0}.qxsim-tree,.qxsim-inspector{min-height:0;background:var(--panel)}.qxsim-tree{display:flex;flex-direction:column;border-right:1px solid var(--line)}.qxsim-inspector{display:flex;flex-direction:column;border-left:1px solid var(--line)}.qxsim-pane-head{height:44px;flex:0 0 44px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;border-bottom:1px solid var(--lineSoft)}.qxsim-pane-title{font-weight:650;font-size:13px}.qxsim-muted{color:var(--muted);font-size:10px}.qxsim-asset-switch{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:8px 8px 0;padding:3px;border:1px solid var(--line);border-radius:18px;background:var(--input)}.qxsim-asset-switch button{height:29px;min-width:0;border:0;border-radius:15px;background:transparent;color:var(--muted);font-weight:600;white-space:nowrap}.qxsim-asset-switch button.active{color:#fff;background:linear-gradient(#4f86ff,#3c6ed8);box-shadow:0 2px 7px #1d4b9f55}.qxsim-template-tag{padding:1px 5px;border:1px solid currentColor;border-radius:8px;color:#9cc2ff;font-size:9px}.qxsim-template-id{color:var(--muted);font:9px ui-monospace,Consolas,monospace}.qxsim-palette-head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:0 0 4px;color:var(--muted);font-size:10px}.qxsim-palette-head>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qxsim-add-mode{display:flex;flex:0 0 auto;gap:2px;padding:1px;border:1px solid var(--line);border-radius:10px;background:var(--input)}.qxsim-add-mode button{height:18px;padding:0 6px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:9px}.qxsim-add-mode button.active{color:var(--text);background:var(--hover)}
11
+ .qxsim-main{position:relative;display:grid;grid-template-columns:clamp(220px,17cqi,280px) minmax(360px,1fr) clamp(310px,22cqi,356px);flex:1;min-height:0}.qxsim-tree,.qxsim-inspector{min-height:0;background:var(--panel)}.qxsim-tree{display:flex;flex-direction:column;border-right:1px solid var(--line)}.qxsim-inspector{display:flex;flex-direction:column;border-left:1px solid var(--line)}.qxsim-pane-head{height:44px;flex:0 0 44px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;border-bottom:1px solid var(--lineSoft)}.qxsim-pane-title{font-weight:650;font-size:13px}.qxsim-muted{color:var(--muted);font-size:10px}.qxsim-asset-switch{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:8px 8px 0;padding:3px;border:1px solid var(--line);border-radius:18px;background:var(--input)}.qxsim-asset-switch button{height:29px;min-width:0;border:0;border-radius:15px;background:transparent;color:var(--muted);font-weight:600;white-space:nowrap}.qxsim-asset-switch button.active{color:#fff;background:linear-gradient(#4f86ff,#3c6ed8);box-shadow:0 2px 7px #1d4b9f55}.qxsim-template-tag{padding:1px 5px;border:1px solid currentColor;border-radius:8px;color:#9cc2ff;font-size:9px}.qxsim-template-id{color:var(--muted);font:9px ui-monospace,Consolas,monospace}.qxsim-palette-head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:0 0 4px;color:var(--muted);font-size:10px}.qxsim-palette-head>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qxsim-add-mode{display:flex;flex:0 0 auto;gap:2px;padding:1px;border:1px solid var(--line);border-radius:10px;background:var(--input)}.qxsim-add-mode button{height:18px;padding:0 6px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:9px}.qxsim-add-mode button.active{color:var(--text);background:var(--hover)}
12
12
  .qxsim-search{height:32px;margin:8px;display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid var(--line);border-radius:16px;background:var(--input);color:var(--muted)}.qxsim-search input{min-width:0;flex:1;border:0;outline:0;background:transparent}.qxsim-search button{border:0;background:transparent;color:var(--muted)}.qxsim-tree-scroll{flex:1;min-height:0;overflow:auto;padding:3px 6px 8px}.qxsim-row{position:relative;height:32px;display:flex;align-items:center;gap:6px;padding-right:7px;border:1px solid transparent;border-radius:4px;cursor:pointer;white-space:nowrap;overflow:hidden}.qxsim-row.template-root{height:38px;margin-top:5px;border-top-color:var(--lineSoft);background:color-mix(in srgb,var(--blue) 5%,transparent)}.qxsim-row.template-root:first-child{margin-top:0}.qxsim-row:not(.template-root):before{content:"";position:absolute;left:13px;top:-6px;bottom:16px;border-left:1px solid var(--lineSoft);pointer-events:none}.qxsim-row:hover{background:var(--hover)}.qxsim-row.active{background:linear-gradient(90deg,#3569cf,#315a9f);border-color:#4d7ee4;color:#fff}.qxsim-chevron{width:9px;color:var(--muted);font-size:9px}.qxsim-kind{width:19px;height:19px;display:inline-grid;place-items:center;flex:0 0 19px;border:1px solid currentColor;border-radius:3px;font-size:9px}.qxsim-row-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.qxsim-row-end{margin-left:auto;display:flex;align-items:center;gap:4px;flex:0 0 auto}.qxsim-row.canvas-hidden .qxsim-row-label{opacity:.45}.qxsim-eye{width:20px;height:20px;display:grid;place-items:center;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:12px;line-height:1}.qxsim-eye:hover{background:var(--hover);color:var(--text)}.qxsim-row.active .qxsim-eye{color:#d7e6ff}.qxsim-row.active .qxsim-eye:hover{background:#ffffff24;color:#fff}.qxsim-eye.off{opacity:.55}.qxsim-incomplete{color:#e4a743;font-size:9px}.qxsim-tree-foot{flex:0 0 auto;padding:5px;border-top:1px solid var(--lineSoft)}.qxsim-hierarchy{margin-bottom:5px;padding:5px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--input) 78%,transparent)}.qxsim-hierarchy-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;font-size:10px}.qxsim-hierarchy-head strong{font-weight:650}.qxsim-hierarchy-head span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.qxsim-parent-row{display:grid;grid-template-columns:minmax(0,1fr) 24px 24px;gap:3px}.qxsim-parent-row select,.qxsim-parent-row button{height:24px;min-width:0;border:1px solid var(--line);border-radius:4px;background:var(--button)}.qxsim-parent-row select{padding:0 5px}.qxsim-hierarchy-note{margin-top:3px;color:var(--muted);font-size:9px;line-height:1.3}.qxsim-add{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}.qxsim-add button{height:22px;padding:0 4px;border:1px solid var(--line);border-radius:4px;background:var(--button);color:var(--muted);font-size:11px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qxsim-add button:hover{color:var(--text);border-color:var(--blue)}
13
13
  .qxsim-center{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--workspace)}.qxsim-workspace{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:34px 22px 20px;overflow:auto;background-color:var(--workspace);background-image:radial-gradient(#ffffff0b 1px,transparent 1px),linear-gradient(135deg,#ffffff09 25%,transparent 25%,transparent 75%,#00000008 75%);background-size:4px 4px,24px 24px}.qxsim-stage-shell{position:relative;flex:0 0 auto;max-width:100%;filter:drop-shadow(0 12px 24px #0004)}.qxsim-stage-label{position:absolute;left:0;right:0;top:-27px;display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.qxsim-stage-label b{padding:2px 7px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);font-weight:600}.qxsim-stage{position:relative;max-width:100%;background-color:#28313e;background-image:linear-gradient(45deg,#ffffff08 25%,transparent 25%),linear-gradient(-45deg,#ffffff08 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ffffff08 75%),linear-gradient(-45deg,transparent 75%,#ffffff08 75%),radial-gradient(circle at 50% 45%,#466f9b38,transparent 48%);background-position:0 0,0 8px,8px -8px,-8px 0,0 0;background-size:16px 16px,16px 16px,16px 16px,16px 16px,100% 100%;border:1px solid #40b8cf;outline:1px solid #1f2732b3;overflow:hidden;touch-action:none;user-select:none}.qxsim-stage:before,.qxsim-stage:after{content:"";position:absolute;pointer-events:none;opacity:.12}.qxsim-stage:before{left:50%;top:0;bottom:0;border-left:1px dashed #cfe9ff}.qxsim-stage:after{top:50%;left:0;right:0;border-top:1px dashed #cfe9ff}
14
14
  .qxsim-box{position:absolute;box-sizing:border-box;border:1px solid #cbdaged80;overflow:visible;display:flex;align-items:center;justify-content:center;white-space:pre-wrap;pointer-events:none;transform:rotate(var(--rotation,0deg));transform-origin:center}.qxsim-box.container{border-color:#4ea5e66b;background:transparent}.qxsim-box.textbox,.qxsim-box.textwindow{overflow:hidden}.qxsim-box.cursor{border-style:dashed;background:#4a8eb519}.qxsim-box.reference{border-style:dashed;background:#7365c219}.qxsim-box.grid{background-image:linear-gradient(#6a92bd26 1px,transparent 1px),linear-gradient(90deg,#6a92bd26 1px,transparent 1px);background-size:20px 20px}.qxsim-box.keyhint{border-radius:4px;background:#2b3441b8}.qxsim-box.animation,.qxsim-box.fullscreen{border-style:dotted}.qxsim-box.button{border-radius:6px;background:linear-gradient(#465467e6,#28313ee6);box-shadow:inset 0 0 0 1px #ffffff14}.qxsim-box.selected{z-index:2;border-color:#61b9ff;box-shadow:inset 0 0 0 1px #3a76ff,0 0 0 1px #0006}.qxsim-box.dynamic{border-style:dashed}.qxsim-box.pressed{filter:brightness(.72);transform:rotate(var(--rotation,0deg)) scale(.98)}.qxsim-box-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 4px;border-radius:3px;color:#e7edf5;background:#111925a8;text-shadow:0 1px 2px #000;font-size:10px}.qxsim-box.fullscreen>.qxsim-box-label{position:absolute;left:5px;top:5px}.qxsim-handle{position:absolute;width:7px;height:7px;border:1px solid #fff;background:#4388ff;box-shadow:0 0 0 1px #2d4e88}.qxsim-handle.tl{left:-4px;top:-4px}.qxsim-handle.tr{right:-4px;top:-4px}.qxsim-handle.bl{left:-4px;bottom:-4px}.qxsim-handle.br{right:-4px;bottom:-4px}
@@ -18,12 +18,13 @@
18
18
  .qxsim-switch-row{min-height:32px;display:flex;align-items:center;gap:8px;margin-bottom:4px}.qxsim-switch{position:relative;width:40px;height:22px;margin-left:auto;flex:0 0 40px}.qxsim-switch input{position:absolute;opacity:0}.qxsim-switch-track{position:absolute;inset:0;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--muted) 28%,var(--input))}.qxsim-switch-track:after{content:"";position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px #0006;transition:.15s}.qxsim-switch input:checked+.qxsim-switch-track{border-color:#5688f4;background:#477cec}.qxsim-switch input:checked+.qxsim-switch-track:after{left:21px;background:#fff}.qxsim-pair{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(0,1fr);gap:5px;align-items:end;margin-bottom:7px}.qxsim-pair-name{padding-bottom:7px;color:var(--muted);font-size:11px}.qxsim-pair .qxsim-field{margin:0}.qxsim-pair .qxsim-field-label{font-size:10px}.qxsim-axis{display:grid;place-items:center;width:17px;height:17px;border-radius:3px;font-size:10px}.qxsim-axis.x{color:#ff9aa6;background:#6c2733}.qxsim-axis.y{color:#a9e178;background:#2f5726}.qxsim-axis.w,.qxsim-axis.h{color:#8bc7ff;background:#294762}.qxsim-color-row{display:grid;grid-template-columns:34px 1fr;gap:6px}.qxsim-color-swatch{position:relative;width:34px;height:31px;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#fff}.qxsim-color-swatch input{position:absolute;inset:-8px;width:50px;height:47px;padding:0;border:0;cursor:pointer}.qxsim-percent{display:grid;grid-template-columns:minmax(0,1fr) 58px;gap:7px;align-items:center}.qxsim-percent input[type=range]{width:100%;accent-color:var(--blue)}.qxsim-percent output{height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;background:var(--input)}.qxsim-subfields{margin:2px 0 8px 8px;padding:7px 0 2px 9px;border-left:2px solid color-mix(in srgb,var(--blue) 55%,var(--line))}.qxsim-state-field{margin:8px 0}.qxsim-state-label{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--muted);font-size:11px}.qxsim-unsupported{min-height:31px;display:flex;align-items:center;padding:5px 8px;border:1px dashed var(--line);border-radius:5px;background:color-mix(in srgb,var(--muted) 8%,var(--input));color:var(--muted)}.qxsim-state-ref{display:grid;grid-template-columns:32px minmax(0,1fr);height:54px;border:1px dashed var(--line);border-radius:6px;background:color-mix(in srgb,var(--input) 72%,transparent);overflow:hidden}.qxsim-state-ref button{border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);font-size:22px}.qxsim-state-ref button:hover{color:var(--blue);background:var(--hover)}.qxsim-state-ref select{min-width:0;border:0;outline:0;background:transparent;padding:0 7px}.qxsim-script-actions{display:flex;justify-content:flex-end}.qxsim-script-actions button{height:30px;padding:0 10px;border:1px solid #4779e6;border-radius:5px;color:#fff;background:#2e5cab}.qxsim-empty{padding:22px 10px;text-align:center;color:var(--muted)}
19
19
  .qxsim-script-page{display:grid;grid-template-columns:280px minmax(420px,1fr);flex:1;min-height:0;background:var(--workspace)}.qxsim-script-assets{min-height:0;padding:12px;border-right:1px solid var(--line);background:var(--panel);overflow:auto}.qxsim-script-assets h3{margin:2px 4px 10px;font-size:13px}.qxsim-script-asset{width:100%;margin-bottom:7px;padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--button);text-align:left}.qxsim-script-asset.active{border-color:var(--blue);background:color-mix(in srgb,var(--blue) 14%,var(--button))}.qxsim-script-asset strong,.qxsim-script-asset small{display:block}.qxsim-script-asset small{margin-top:3px;color:var(--muted)}.qxsim-script-list-row{display:flex;gap:4px;align-items:stretch;margin-bottom:7px}.qxsim-script-list-row .qxsim-script-asset{flex:1;min-width:0;margin-bottom:0}.qxsim-script-list-row .qxsim-iconbtn{flex:0 0 30px;width:30px;min-height:30px;height:auto;align-self:stretch}.qxsim-script-editor{min-width:0;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:10px;padding:18px 22px}.qxsim-script-title{display:flex;align-items:end;justify-content:space-between;gap:16px}.qxsim-script-title h2{margin:0;font-size:18px}.qxsim-script-title span{color:var(--muted);font-size:11px}.qxsim-script-fields{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr);gap:10px}.qxsim-script-editor label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:11px}.qxsim-script-editor input,.qxsim-script-editor select,.qxsim-script-editor textarea{min-width:0;border:1px solid var(--line);border-radius:6px;outline:0;background:var(--input);color:var(--text)}.qxsim-script-editor input,.qxsim-script-editor select{height:34px;padding:0 9px}.qxsim-script-editor textarea{width:100%;height:100%;min-height:220px;padding:12px;resize:none;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:2}.qxsim-script-editor textarea:focus,.qxsim-script-editor input:focus,.qxsim-script-editor select:focus{border-color:var(--blue);box-shadow:0 0 0 2px #4075e52e}.qxsim-script-footer{display:flex;align-items:center;gap:8px}.qxsim-script-footer span{color:var(--muted);font-size:10px}.qxsim-script-footer .spacer{flex:1}
20
20
  .qxsim-server-logic{flex:1;min-height:0;overflow:auto;padding:18px 22px;background:var(--workspace)}.qxsim-logic-wrap{max-width:900px;margin:0 auto}.qxsim-logic-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:10px}.qxsim-logic-title h2{margin:0;font-size:18px}.qxsim-logic-title p{margin:3px 0 0;color:var(--muted);font-size:11px}.qxsim-logic-rule{margin:12px 0;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}.qxsim-logic-rule-head,.qxsim-logic-action-head{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--lineSoft)}.qxsim-logic-rule-head strong,.qxsim-logic-action-head strong{font-size:12px}.qxsim-logic-rule-head .qxsim-field{flex:1;margin:0}.qxsim-logic-rule-head .qxsim-field input{height:30px}.qxsim-logic-actions{padding:10px}.qxsim-logic-action{margin-bottom:9px;border:1px solid var(--line);border-radius:6px;background:var(--panel2);overflow:hidden}.qxsim-logic-action:last-child{margin-bottom:0}.qxsim-logic-action-head{min-height:36px;padding:6px 8px}.qxsim-logic-action-head span{color:var(--muted);font-size:10px}.qxsim-logic-action-head .qxsim-iconbtn{width:28px;height:28px;margin-left:auto}.qxsim-logic-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px}.qxsim-logic-fields .wide{grid-column:1 / -1}.qxsim-logic-actions-foot{display:flex;gap:7px;margin-top:10px}.qxsim-logic-actions-foot .qxsim-action{flex:0 0 auto}.qxsim-logic-json{min-height:58px;font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}.qxsim-logic-target{height:31px;display:flex;align-items:center;padding:0 7px;border:1px solid var(--line);border-radius:5px;background:color-mix(in srgb,var(--input) 75%,var(--muted));color:var(--muted)}.qxsim-logic-error{margin:10px 0;color:var(--danger);font-size:11px}.qxsim-logic-empty{padding:24px 12px;border:1px dashed var(--line);border-radius:8px;text-align:center;color:var(--muted);background:color-mix(in srgb,var(--panel) 70%,transparent)}
21
+ .qxsim-color-editor{margin-bottom:8px}.qxsim-color-editor:last-child{margin-bottom:0}.qxsim-alpha-row{display:grid;grid-template-columns:minmax(0,1fr) 88px;gap:7px;align-items:center}.qxsim-alpha-row input[type=range]{width:100%;min-width:0;margin:0;accent-color:var(--blue)}.qxsim-alpha-value{position:relative}.qxsim-alpha-value input[type=number]{padding-right:23px;appearance:textfield;-moz-appearance:textfield}.qxsim-alpha-value input::-webkit-inner-spin-button,.qxsim-alpha-value input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.qxsim-alpha-value>span{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.qxsim-field .qxsim-color-error{color:var(--danger)}
21
22
  .qxsim-toolbar-center{min-width:0}.qxsim-device-switch{display:flex;flex:0 0 auto;gap:2px;padding:2px;border:1px solid var(--line);border-radius:9px;background:var(--input)}.qxsim-device-switch button{height:26px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:11px;font-weight:600;white-space:nowrap}.qxsim-device-switch button:hover{color:var(--text)}.qxsim-device-switch button.active{color:#fff;background:linear-gradient(#4f86ff,#3c6ed8);box-shadow:0 1px 5px #1d4b9f44}.qxsim-control.ratio{width:150px;min-width:0;padding-right:22px;text-overflow:ellipsis}.qxsim-io .qxsim-control{width:118px;min-width:0;padding-right:22px;text-overflow:ellipsis}.qxsim-platform-tag{padding:2px 7px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);font-weight:600;font-size:10px}
22
23
  .qxsim-toolbar{grid-template-columns:minmax(170px,1fr) auto auto;column-gap:12px}.qxsim-toolbar-center .zoom{width:78px;min-width:78px}.qxsim-actions{min-width:0}
23
24
  @container(max-width:1180px){.qxsim-toolbar{grid-template-columns:minmax(130px,1fr) auto auto;column-gap:8px}.qxsim-action{padding:0 8px}.qxsim-main{grid-template-columns:200px minmax(300px,1fr) 292px}.qxsim-control{min-width:132px}.qxsim-control.ratio{width:128px}.qxsim-io .qxsim-control{width:96px}.qxsim-device-switch button{padding:0 7px}.qxsim-workspace{padding-left:12px;padding-right:12px}.qxsim-brand-text span{display:none}.qxsim-asset-switch button{font-size:11px}}
24
25
  @container(max-width:1000px){.qxsim-toolbar{height:90px;flex-basis:90px;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:42px 42px}.qxsim-toolbar-center{justify-self:end}.qxsim-actions{grid-column:1 / -1}.qxsim-editor-nav .save-summary{display:none}.qxsim-inspector{top:130px}}
25
- @container(max-width:820px){.qxsim-main{grid-template-columns:180px minmax(280px,1fr)}.qxsim-inspector{position:absolute;right:0;top:130px;bottom:0;width:285px;z-index:5;box-shadow:-10px 0 24px var(--shadow)}.qxsim-script-page{grid-template-columns:190px minmax(320px,1fr)}.qxsim-script-editor{padding:12px}.qxsim-script-fields{grid-template-columns:1fr}}
26
- `,S={"server-container":["\u25A3","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"],container:["\u25A1","\u5BB9\u5668\u8282\u70B9"],textbox:["T","\u6587\u672C\u6846"],cursor:["\u2301","\u5149\u6807\u68C0\u6D4B\u533A\u57DF"],reference:["\u2197","\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"],grid:["\u25A6","\u7F51\u683C\u89C6\u7A97"],image:["\u25A7","\u56FE\u7247"],button:["Btn","\u9884\u8BBE\u6309\u94AE"],textwindow:["T\u2195","\u6587\u672C\u89C6\u7A97"],keyhint:["1","\u6309\u952E\u63D0\u793A"],animation:["\u2726","\u754C\u9762\u52A8\u6548"],fullscreen:["\u2725","\u5168\u5C4F\u52A8\u6548"]},L=[["container","\u5BB9\u5668\u8282\u70B9"],["textbox","\u6587\u672C\u6846"],["cursor","\u5149\u6807\u68C0\u6D4B"],["reference","\u6A21\u677F\u5F15\u7528"],["grid","\u7F51\u683C\u89C6\u7A97"],["button","\u9884\u8BBE\u6309\u94AE"],["textwindow","\u6587\u672C\u89C6\u7A97"],["keyhint","\u6309\u952E\u63D0\u793A"],["image","\u56FE\u7247"],["animation","\u754C\u9762\u52A8\u6548"],["fullscreen","\u5168\u5C4F\u52A8\u6548"]],F={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["itemPrefabId","raycastTarget","interactable","showScrollBar","scrollDirection","layoutConstraint","layoutConstraintFixedCount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount"],image:["imageSource","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea"],button:["raycastTarget","interactable","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","clickAudioId"],textwindow:["interactable","showScrollBar","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId"],fullscreen:["animationId"]};function ee(){if(document.getElementById(M))return;let t=document.createElement("style");t.id=M,t.textContent=C,document.head.appendChild(t)}function se(){let t=document.documentElement,s=document.body,i=[t.dataset.theme,t.className,t.getAttribute("style"),s?.dataset?.theme,s?.className,s?.getAttribute("style"),getComputedStyle(t).colorScheme].filter(Boolean).join(" ").toLowerCase();return i.includes("dark")?"dark":i.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function J(){let[t,s]=n.useState(se);return n.useEffect(()=>{let i=()=>s(se()),r=new MutationObserver(i);r.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&r.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let l=window.matchMedia?.("(prefers-color-scheme: dark)");return l?.addEventListener?.("change",i),()=>{r.disconnect(),l?.removeEventListener?.("change",i)}},[]),t}function v(t,s){let i=Number(t??s)>>>0;return`rgba(${i>>>16&255},${i>>>8&255},${i&255},${(i>>>24&255)/255})`}function q(t){return`#${(Number(t)>>>0).toString(16).padStart(8,"0").toUpperCase()}`}function U(t,s){return t==="sprite"?{background:"transparent"}:t==="circle"?{borderRadius:"50%",background:s}:t==="ring"?{borderRadius:"50%",border:`7px solid ${s}`,background:"transparent"}:t==="triangle"?{background:s,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:t==="fourstar"?{background:s,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:t==="fivestar"?{background:s,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:t==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:s}}let k=c;function H(t){let s;try{s=atob(t.data)}catch{throw new Error("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762")}let i=new Uint8Array(s.length);for(let p=0;p<s.length;p+=1)i[p]=s.charCodeAt(p);let r=URL.createObjectURL(new Blob([i],{type:t.mimeType||"application/octet-stream"})),l=document.createElement("a");l.href=r,l.download=t.filename||"qxqy-export",l.rel="noopener",l.style.display="none",document.body.appendChild(l),l.click(),l.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}async function Z(t){let s=new Uint8Array(await t.arrayBuffer()),i="",r=32768;for(let l=0;l<s.length;l+=r)i+=String.fromCharCode(...s.subarray(l,l+r));return btoa(i)}let V=t=>typeof t=="object"?t.value:t,E=t=>typeof t=="object"?t.label:t,ye=[{key:"KEYBOARD",label:"PC",title:"PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900"},{key:"TOUCHSCREEN",label:"\u624B\u673A",title:"\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960"}];function qe(t){return String(t.id||"").split("-").slice(1).join(":")}function we(t,s){let i=(l,p)=>p?i(p,l%p):l,r=i(Math.round(t),Math.round(s))||1;return`${Math.round(t)/r}:${Math.round(s)/r}`}function X({field:t,commit:s,axis:i}){let r=t.type==="color"?q(t.value):t.value==null?"":String(t.value),[l,p]=n.useState(r);if(n.useEffect(()=>p(t.type==="color"?q(t.value):t.value==null?"":String(t.value)),[t.value,t.type]),t.type==="note")return e("div",{className:"qxsim-note"},t.value||t.label);if(t.readonly&&(t.evidence==="N"||t.evidence==="U"))return e("div",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("div",{className:"qxsim-unsupported"},t.value==null?"\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C":String(t.value)));if(t.type==="bool")return e("div",{className:"qxsim-switch-row"},e("span",null,t.label),e("label",{className:"qxsim-switch"},e("input",{type:"checkbox",checked:!!t.value,disabled:!!t.readonly,onChange:d=>s(t.key,d.target.checked)}),e("span",{className:"qxsim-switch-track"})));if(t.type==="enum"){let d=[...t.options||[]],y=String(t.value??"");return d.some($=>String(V($))===y)||d.unshift({value:t.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${t.unknownValue??(y||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("select",{value:y,disabled:!!t.readonly,onChange:$=>s(t.key,$.target.value)},d.map($=>e("option",{key:String(V($)),value:V($)},E($)))))}if(t.type==="percent"){let d=Math.round(Number(t.value||0)*100);return e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("span",{className:"qxsim-percent"},e("input",{type:"range",min:0,max:100,value:d,onInput:y=>s(t.key,Number(y.target.value)/100)}),e("output",null,`${d}%`)))}if(t.type==="color"){let d=/^#[0-9a-f]{8}$/i.test(l)?l:q(t.value);return e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label,e("small",null,"ARGB")),e("span",{className:"qxsim-color-row"},e("span",{className:"qxsim-color-swatch",title:"\u6253\u5F00\u53D6\u8272\u5668"},e("input",{type:"color",value:`#${d.slice(3)}`,onInput:y=>{let $=`#${d.slice(1,3)}${y.target.value.slice(1).toUpperCase()}`;p($),s(t.key,$)}})),e("input",{type:"text",value:l,spellCheck:!1,"aria-label":`${t.label} ARGB`,onChange:y=>p(y.target.value),onBlur:()=>s(t.key,l),onKeyDown:y=>{y.key==="Enter"&&y.currentTarget.blur(),y.key==="Escape"&&p(q(t.value))}})))}let x={value:l,disabled:!!t.readonly,readOnly:!!t.readonly,onChange:d=>p(d.target.value),onBlur:()=>{t.readonly||s(t.key,l)},onKeyDown:d=>{d.key==="Enter"&&t.type!=="text"&&d.currentTarget.blur(),d.key==="Escape"&&p(t.value==null?"":String(t.value))}};return e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},i?e("b",{className:`qxsim-axis ${i.toLowerCase()}`},i):null,t.label),t.type==="text"?e("textarea",{...x,rows:4}):e("input",{...x,type:t.type==="number"?"number":"text",step:t.type==="number"?"any":void 0}))}function W({title:t,open:s=!0,children:i}){return e("details",{className:"qxsim-section",open:s},e("summary",null,t),e("div",{className:"qxsim-section-body"},i))}function xe(t){let s={};for(let i of t||[])s[i.key]=i;return s}function Q({label:t,x:s,y:i,xAxis:r="X",yAxis:l="Y",commit:p}){return e("div",{className:"qxsim-pair"},e("div",{className:"qxsim-pair-name"},t),e(X,{field:s,axis:r,commit:p}),e(X,{field:i,axis:l,commit:p}))}function ie({field:t,commit:s,createStateChild:i}){return e("div",{className:"qxsim-state-field"},e("div",{className:"qxsim-state-label"},t.label),e("div",{className:"qxsim-state-ref"},e("button",{title:`\u65B0\u5EFA\u5E76\u7ED1\u5B9A${t.label}\u56FE\u7247`,onClick:()=>i(t.key,t.label)},"+"),e("select",{value:String(t.value??""),"aria-label":t.label,onChange:r=>s(t.key,r.target.value)},(t.options||[]).map(r=>e("option",{key:String(V(r)),value:V(r)},E(r))))))}function u({inspector:t,commit:s,createStateChild:i}){let r=xe(t.fields),l=y=>y?.type==="node"?e(ie,{key:y.key,field:y,commit:s,createStateChild:i}):y?e(X,{key:y.key,field:y,commit:s}):null,p=(F[t.kind]||[]).map(y=>r[y]).filter(Boolean).map(l),x=null;if(t.kind==="image"){let y=r.fillType?.value==="Horizontal"?r.fillHorizontalType:r.fillType?.value==="Vertical"?r.fillVerticalType:r.fillType?.value==="Radial90"?r.fillRadial90Type:r.fillRadialType,$=[l(r.enableMask),l(r.enableSoftEdge),r.enableSoftEdge?.value?e("div",{className:"qxsim-subfields",key:"soft-fields"},l(r.softEdgeMode),e(Q,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:r.softEdgeWidthX,y:r.softEdgeWidthY,commit:s}),e(Q,{label:"\u7FBD\u5316\u8303\u56F4",x:r.horizontalSoftRange,y:r.verticalSoftRange,commit:s})):null,l(r.enableFill),r.enableFill?.value?e("div",{className:"qxsim-subfields",key:"fill-fields"},l(r.fillType),l(y),l(r.fillAmount)):null,l(r.reverseMaskArea)];x=e(n.Fragment,null,e(W,{title:"\u56FE\u7247\u8BBE\u7F6E"},l(r.imageSource),l(r.imageId),l(r.imageColor)),e(W,{title:"\u906E\u7F69\u8BBE\u7F6E"},$))}let d=t.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":t.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${t.label}\u8BBE\u7F6E`;return e(n.Fragment,null,e(W,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},e(X,{field:r.name,commit:s})),e(W,{title:"\u53D8\u6362"},r.posX?e(Q,{label:"\u4F4D\u7F6E",x:r.posX,y:r.posY,commit:s}):null,r.width?e(Q,{label:"\u5927\u5C0F",x:r.width,y:r.height,xAxis:"W",yAxis:"H",commit:s}):null,r.rotationZ?e(X,{field:r.rotationZ,commit:s}):null,r.syncAllDevices?e(X,{field:r.syncAllDevices,commit:s}):null,r.anchorType?e(X,{field:r.anchorType,commit:s}):null,r.anchorMinX?e(Q,{label:"Min",x:r.anchorMinX,y:r.anchorMinY,commit:s}):null,r.anchorMaxX?e(Q,{label:"Max",x:r.anchorMaxX,y:r.anchorMaxY,commit:s}):null,r.pivotX?e(Q,{label:"\u4E2D\u5FC3",x:r.pivotX,y:r.pivotY,commit:s}):null),e(W,{title:"\u521B\u5EFA\u8BBE\u7F6E"},r.active?e(X,{field:r.active,commit:s}):null,r.visible?e(X,{field:r.visible,commit:s}):null),x||(p.length?e(W,{title:d},p):null),r.canControllerFocus?e(W,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},e(X,{field:r.canControllerFocus,commit:s})):null,r.incomplete?e(W,{title:"\u5B9E\u73B0\u72B6\u6001"},e(X,{field:r.incomplete,commit:s})):null)}function _({snap:t,selectedScriptId:s,selectScript:i,draft:r,updateDraft:l,saveScript:p,addScript:x,removeScript:d,exportLua:y,exportScripts:$,exportScriptsGia:G,notice:Y}){let A=t.scripts||[],I=A.find(w=>w.id===s)||null,z=t.mountTargets||[],T=z.filter(w=>w.assetType==="server-control-template"),f=z.filter(w=>w.assetType==="client-control-template"),te=w=>{let ae=z.find(oe=>oe.id===w);return ae?`${ae.assetLabel} \xB7 ${ae.name}`:""};return e("div",{className:"qxsim-script-page"},e("aside",{className:"qxsim-script-assets"},e("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${A.length}\uFF09`),e("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:x},"\uFF0B \u65B0\u5EFA\u811A\u672C"),A.length?A.map(w=>e("div",{key:w.id,className:"qxsim-script-list-row"},e("button",{className:`qxsim-script-asset${w.id===s?" active":""}`,onClick:()=>i(w.id)},e("strong",null,w.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,w.mounted?`\u6302\u8F7D\uFF1A${w.assetLabel} \xB7 ${w.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),e("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>y(w.id)},"\u21E9"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>d(w.id)},"\u2715"))):e("div",{className:"qxsim-empty"},"\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB")),e("main",{className:"qxsim-script-editor"},I&&r?e(n.Fragment,null,e("div",{className:"qxsim-script-title"},e("div",null,e("h2",null,r.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("span",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${t.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7`)),e("span",null,`\u811A\u672C ${I.id}`)),e("div",{className:"qxsim-script-fields"},e("label",null,"\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09",e("input",{type:"text",value:r.path,placeholder:"lua/example.lua",onChange:w=>l({path:w.target.value})})),e("label",null,"\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09",e("select",{value:r.controlId?`${r.controlAsset||"server-control-template"}|${r.controlId}`:"",onChange:w=>{let[ae,oe]=w.target.value.split("|");l(oe?{controlId:oe,controlAsset:ae}:{controlId:"",controlAsset:""})}},e("option",{value:""},"\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09"),e("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185"},T.map(w=>e("option",{key:w.id,value:`${w.assetType}|${w.id}`},`${w.name} \xB7 ${w.id}`))),f.length?e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},f.map(w=>e("option",{key:w.id,value:`${w.assetType}|${w.id}`},`${w.name} \xB7 ${w.id}`))):null))),e("label",null,"Lua \u6E90\u7801",e("textarea",{value:r.source,spellCheck:!1,placeholder:"-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548",onChange:w=>l({source:w.target.value})})),e("div",{className:"qxsim-script-footer"},e("span",null,r.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":Y||(I.mounted?`\u5DF2\u6302\u8F7D\uFF1A${te(I.controlId)}`:"\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C")),e("span",{className:"spacer"}),e("button",{className:"qxsim-action",onClick:$},"\u21E9 \u811A\u672C\u5305 JSON"),e("button",{className:"qxsim-action",onClick:G},"\u21E9 \u811A\u672C\u5305 GIA"),e("button",{className:"qxsim-action primary",disabled:!r.dirty,onClick:p},"\u4FDD\u5B58\u811A\u672C"))):e("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function K(t){if(t===void 0)return"null";try{return JSON.stringify(t)}catch{return String(t)}}function Re(t){let s=String(t??"").trim();if(!s)return null;try{return JSON.parse(s)}catch{return s}}function Je(t){return!!(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"fromSignalParam"))}function Xe(t){return{version:1,dirty:!1,rules:(Array.isArray(t?.rules)?t.rules:[]).map((i,r)=>({id:String(i.id||`signal-${r+1}`),signalName:String(i.signalName||""),actions:Array.isArray(i.actions)&&i.actions.length?i.actions.map(l=>wt(l)):[ge("setCustomVariable")]}))}}let We=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ke=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ze={PlayerSelf:"PlayerSelf \u5F53\u524D\u73A9\u5BB6",AllPlayers:"AllPlayers \u5168\u90E8\u73A9\u5BB6",Level:"Level \u5173\u5361",Player1:"Player1 \u73A9\u5BB61",Player2:"Player2 \u73A9\u5BB62",Player3:"Player3 \u73A9\u5BB63",Player4:"Player4 \u73A9\u5BB64",Player5:"Player5 \u73A9\u5BB65",Player6:"Player6 \u73A9\u5BB66",Player7:"Player7 \u73A9\u5BB67",Player8:"Player8 \u73A9\u5BB68"};function Ae(t){return Ke.includes(t)&&t!=="AllPlayers"?t:t==="Level"?"Level":"PlayerSelf"}function Ee(t){return We.includes(t)?t:"PlayerSelf"}function ge(t){return t==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function yt(t){return{version:1,rules:(t?.rules||[]).map(s=>({id:String(s.id||""),signalName:String(s.signalName||"").trim(),actions:(s.actions||[]).map(i=>i?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:Ee(i.target),signalName:String(i.signalName||"").trim(),params:Array.isArray(i.params)?i.params:[]}:{kind:"setCustomVariable",entityType:Ae(i?.entityType),name:String(i?.name||"").trim(),value:i&&Object.prototype.hasOwnProperty.call(i,"value")?i.value:0})}))}}function qt(t){let s=[];for(let[i,r]of(t?.rules||[]).entries()){String(r.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let l=r.actions||[];l.length||s.push(`\u89C4\u5219 ${i+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[p,x]of l.entries())x?.kind==="sendClientScriptSignal"?String(x.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${p+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(x?.name||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${p+1} \u9700\u8981\u53D8\u91CF\u540D`)}return s}function wt(t){if(t?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:Ee(t.target),signalName:String(t.signalName||""),params:Array.isArray(t.params)?t.params.map(i=>{try{return JSON.parse(JSON.stringify(i))}catch{return i}}):[]};let s=0;if(t&&Object.prototype.hasOwnProperty.call(t,"value"))try{s=JSON.parse(JSON.stringify(t.value))}catch{s=t.value}return{kind:"setCustomVariable",entityType:Ae(t?.entityType),name:String(t?.name||""),value:s}}function Qe({label:t,value:s,onChange:i}){let r=Je(s),[l,p]=n.useState(()=>r?"":K(s));return n.useEffect(()=>{Je(s)||p(K(s))},[s]),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t),e("select",{value:r?"param":"literal","aria-label":`${t}\u6765\u6E90`,onChange:x=>{x.target.value==="param"?i({fromSignalParam:Number(s?.fromSignalParam)||0}):i(Re(l||"0"))}},e("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),e("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),r?e("input",{type:"number",min:0,step:1,value:Number(s.fromSignalParam)||0,"aria-label":`${t}\u53C2\u6570\u5E8F\u53F7`,onChange:x=>i({fromSignalParam:Math.max(0,Math.trunc(Number(x.target.value)||0))})}):e("textarea",{className:"qxsim-logic-json",value:l,spellCheck:!1,"aria-label":`${t}\u5B57\u9762\u91CF`,onBlur:()=>i(Re(l)),onChange:x=>p(x.target.value)}))}function kt({params:t,onChange:s}){let i=Array.isArray(t)?t:[];return e("div",{className:"qxsim-field wide"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09"),i.length?i.map((r,l)=>e("div",{key:l,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},e("div",{style:{flex:1,minWidth:0}},e(Qe,{label:`\u53C2\u6570 ${l}`,value:r,onChange:p=>s(i.map((x,d)=>d===l?p:x))})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>s(i.filter((p,x)=>x!==l))},"\u2715"))):e("div",{className:"qxsim-muted"},"\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868"),e("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>s(i.concat([0]))},"\uFF0B \u6DFB\u52A0\u53C2\u6570"))}function Nt({snap:t,draft:s,setDraft:i,saveLogic:r,notice:l,error:p}){let x=s?.rules||[];function d(A){i({version:1,rules:A,dirty:!0})}function y(){d(x.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[ge("setCustomVariable")]}]))}function $(A,I){d(x.map((z,T)=>T===A?{...z,...I}:z))}function G(A,I,z){let T=x[A];T&&$(A,{actions:T.actions.map((f,te)=>te===I?{...f,...z}:f)})}function Y(A,I,z){G(A,I,ge(z))}return e("div",{className:"qxsim-server-logic"},e("div",{className:"qxsim-logic-wrap"},e("div",{className:"qxsim-logic-title"},e("div",null,e("h2",null,"\u670D\u52A1\u7AEF\u903B\u8F91"),e("p",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${t.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 \u76D1\u542C\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540E\u8BBE\u7F6E Level / \u73A9\u5BB6\u53D8\u91CF\uFF0C\u6216\u5411\u6307\u5B9A\u73A9\u5BB6\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7`)),e("button",{className:"qxsim-action primary",disabled:!s?.dirty,onClick:r},"\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91")),e("div",{className:"qxsim-note"},"\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002"),p?e("div",{className:"qxsim-logic-error"},p):null,x.length?x.map((A,I)=>e("section",{key:A.id||I,className:"qxsim-logic-rule"},e("div",{className:"qxsim-logic-rule-head"},e("strong",null,`\u89C4\u5219 ${I+1}`),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),e("input",{type:"text",value:A.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${I+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:z=>$(I,{signalName:z.target.value})})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>d(x.filter((z,T)=>T!==I))},"\u2715")),e("div",{className:"qxsim-logic-actions"},(A.actions||[]).map((z,T)=>e("div",{key:T,className:"qxsim-logic-action"},e("div",{className:"qxsim-logic-action-head"},e("strong",null,`\u52A8\u4F5C ${T+1}`),e("select",{value:z.kind,"aria-label":`\u89C4\u5219 ${I+1} \u52A8\u4F5C ${T+1} \u7C7B\u578B`,onChange:f=>Y(I,T,f.target.value)},e("option",{value:"setCustomVariable"},"\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("option",{value:"sendClientScriptSignal"},"\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")),e("span",null,z.kind==="sendClientScriptSignal"?"\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6":"\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u52A8\u4F5C",disabled:(A.actions||[]).length<=1,onClick:()=>$(I,{actions:A.actions.filter((f,te)=>te!==T)})},"\u2715")),z.kind==="sendClientScriptSignal"?e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D1\u9001\u76EE\u6807"),e("select",{value:Ee(z.target),onChange:f=>G(I,T,{target:f.target.value})},We.map(f=>e("option",{key:f,value:f},Ze[f])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),e("input",{type:"text",value:z.signalName,placeholder:"GoldChanged",onChange:f=>G(I,T,{signalName:f.target.value})})),e(kt,{params:z.params,onChange:f=>G(I,T,{params:f})})):e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),e("select",{value:Ae(z.entityType),onChange:f=>G(I,T,{entityType:f.target.value})},Ke.map(f=>e("option",{key:f,value:f},Ze[f])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),e("input",{type:"text",value:z.name,placeholder:"Gold",onChange:f=>G(I,T,{name:f.target.value})})),e("div",{className:"wide"},e(Qe,{label:"\u53D8\u91CF\u503C",value:z.value,onChange:f=>G(I,T,{value:f})}))))),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:()=>$(I,{actions:(A.actions||[]).concat([ge("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("button",{className:"qxsim-action",onClick:()=>$(I,{actions:(A.actions||[]).concat([ge("sendClientScriptSignal")])})},"\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))))):e("div",{className:"qxsim-logic-empty"},"\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002"),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:y},"\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219")),e("div",{className:"qxsim-script-footer",style:{marginTop:16}},e("span",null,s?.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":l||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),e("span",{className:"spacer"}))))}function St({inspector:t,onSave:s}){let[i,r]=n.useState(String(t.guid??"")),[l,p]=n.useState(!1),[x,d]=n.useState("");n.useEffect(()=>{r(String(t.guid??"")),d("")},[t.guid]);async function y($){$.preventDefault();let G=i.trim();if(!/^[0-9]+$/.test(G)||Number(G)<1||Number(G)>2147483647){d("\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002");return}p(!0),d("");try{await s(t.id,Number(G))}catch(Y){d(Y?.message||String(Y))}finally{p(!1)}}return e("form",{onSubmit:y,style:{marginTop:8}},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15"),e("div",{style:{display:"flex",gap:6}},e("input",{type:"text",inputMode:"numeric","aria-label":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15",value:i,disabled:l,onChange:$=>{r($.target.value),d("")},onKeyDown:$=>{$.key==="Escape"&&(r(String(t.guid)),d(""))}}),e("button",{type:"submit",className:"qxsim-action",disabled:l||i.trim()===String(t.guid)},l?"\u4FDD\u5B58\u4E2D":"\u4FEE\u6539"))),x?e("div",{role:"alert",className:"qxsim-note"},x):null,e("div",{className:"qxsim-muted",style:{lineHeight:1.5}},"\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u987B\u8BA9 AI \u540C\u6B65 Lua \u811A\u672C\u4E2D\u7684\u5F15\u7528\u3002"))}function Ct({snap:t,addScriptMounted:s,mountScriptTo:i,unmountScript:r,openScript:l}){let p=(t.scripts||[]).filter(d=>d.controlId===t.selectedId),x=(t.scripts||[]).filter(d=>d.controlId!==t.selectedId);return e(n.Fragment,null,e(W,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},p.length?p.map(d=>e("div",{key:d.id,className:"qxsim-script-list-row"},e("button",{className:"qxsim-script-asset",onClick:()=>l(d.id)},e("strong",null,d.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,`\u811A\u672C ${d.id}`)),e("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>r(d.id)},"\u292B"))):e("div",{className:"qxsim-note"},"\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002")),e(W,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},x.length?e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),e("select",{value:"","aria-label":"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6",onChange:d=>{let y=d.target.value;d.target.value="",y&&i(y)}},e("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),x.map(d=>e("option",{key:d.id,value:d.id},`${d.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${d.id}${d.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${d.assetLabel} \xB7 ${d.controlName}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09`:"\uFF08\u672A\u6302\u8F7D\uFF09"}`)))):e("div",{className:"qxsim-note"},"\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002"),e("div",{className:"qxsim-script-actions",style:{marginTop:8}},e("button",{onClick:()=>s(t.selectedId)},"\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6"))))}function $t(t,s){let i=null,r=null;function l(p,x){p.id===s&&(i=p,r=x);for(let d of p.children||[])l(d,p)}if(l(t,null),i?.kind==="container")return i.id;if(i?.kind==="server-container")return i.children?.find(p=>p.kind==="container")?.id||i.id;for(;r&&r.kind!=="container";){let x=function(d){for(let y of d.children||[])y===r&&(p=d),x(y)},p=null;x(t),r=p}return r?.id||t.children?.find(p=>p.kind==="container")?.id}function It(t,s){let i=null;function r(l){l.id===s&&(i=l);for(let p of l.children||[])r(p)}return r(t),i&&i.kind!=="server-container"?i.id:$t(t,s)}function Pt(t,s,i,r){let l=t,p=t.kind,x=p==="textbox"||p==="textwindow",d=l.renderLeft??l.left,y=l.renderBottom??l.bottom,$=l.renderWidth??l.width,G=l.renderHeight??l.height,Y=l.renderRotationZ??t.rotationZ??0,A={left:`${d/i*100}%`,bottom:`${y/r*100}%`,width:`${$/i*100}%`,height:`${G/r*100}%`,"--rotation":`${-Number(Y)}deg`,fontSize:Math.max(8,Math.min(40,Number(t.fontSize||12))),color:x?v(t.fontColor,4294967295):"#fff"};p==="image"?Object.assign(A,U(t.primitive,v(t.imageColor,4294967295))):x?(A.background=v(t.bgColor,16777215),A.justifyContent=t.horizontalAlignment==="Right"?"flex-end":t.horizontalAlignment==="Middle"?"center":"flex-start",A.alignItems=t.verticalAlignment==="Bottom"?"flex-end":t.verticalAlignment==="Middle"?"center":"flex-start",A.textShadow=t.enableOutline===!1?"none":`0 0 2px ${v(t.outlineColor,4278190080)}`):p==="container"&&(A.background="transparent");let I=t.id===s.selectedId,z=p==="image"&&t.primitive==="sprite"?e(j,{key:t.imageId,item:t}):x?t.text||"":p==="image"&&t.primitive==="missing"?e("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${t.imageId||""}`):p!=="container"&&p!=="image"?e("span",{className:"qxsim-box-label"},t.name||S[p]?.[1]||p):null;return e("div",{key:t.id,className:`qxsim-box ${p}${I?" selected":""}${t.instantiated?" dynamic":""}${t.pressed?" pressed":""}`,style:A},z,I&&p!=="container"?["tl","tr","bl","br"].map(T=>e("i",{key:T,className:`qxsim-handle ${T}`})):null)}function At({sessionId:t}){let s=J(),[i,r]=n.useState(null),l=n.useRef(null),p=n.useRef(Promise.resolve()),[x,d]=n.useState(""),y=P({sessionId:t,api:k,playUrl:N,onError:d}),[$,G]=n.useState(null),[Y,A]=n.useState(!1),[I,z]=n.useState(!1),[T,f]=n.useState(""),te=n.useRef(null),[w,ae]=n.useState([]),[oe,et]=n.useState([]),[ne,Et]=n.useState("ui"),[Le,ze]=n.useState("base"),[Te,Lt]=n.useState("fit"),[Me,zt]=n.useState({}),[ke,Oe]=n.useState(""),[de,De]=n.useState("template"),[je,Ne]=n.useState(""),[Ge,fe]=n.useState(null),[tt,Fe]=n.useState({version:1,rules:[],dirty:!1}),at=n.useRef(null),[Se,Tt]=n.useState({width:0,height:0});n.useEffect(()=>{let a=at.current;if(!a||typeof ResizeObserver>"u")return;let o=new ResizeObserver(m=>{let h=m[0]?.contentRect;h&&h.width>0&&Tt({width:h.width,height:h.height})});return o.observe(a),()=>o.disconnect()},[i?.canvas?.id]);function pe(a,{keepLogicDraft:o=!0}={}){return l.current=a,r(a),a?.scripts&&Ne(m=>a.scripts.some(h=>h.id===m)?m:a.scripts[0]?.id||""),Fe(m=>o&&m?.dirty?m:Xe(a?.serverLogic)),a}let Ce=n.useCallback(async()=>{try{d(""),pe(await k(t,"get"),{keepLogicDraft:!1})}catch(a){d(a?.message||String(a))}},[t]),$e=n.useCallback(async()=>{try{let a=await k(t,"archives");et(a?.archives||[])}catch{et([])}},[t]);n.useEffect(()=>{Ce(),$e()},[Ce,$e]);function D(a,o=""){let m=async()=>{let h=l.current;if(!h)throw new Error("editor is not ready");try{if(o&&h.asset?.type!==o)throw new Error("\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15");let R=await k(t,"patch",{op:{...a,expectedRevision:h.version}});return d(""),pe(R)}catch(R){throw d(R?.message||String(R)),/revision conflict/.test(String(R?.message||R))&&await Ce(),R}};return p.current=p.current.then(m,m),p.current}async function Mt(a,o,m){await D({op:"setControlGuid",id:a,guid:o},m),f("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF1B\u8BF7\u8BA9 AI \u6839\u636E\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u540C\u6B65 Lua \u811A\u672C\u5F15\u7528\u3002")}async function Ot(){let m=["\u8BF7\u540C\u6B65\u5F53\u524D\u6A21\u62DF\u5668\u5DE5\u7A0B\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF1A",...(l.current?.controlGuidChanges||[]).map(h=>`${h.controlAsset} / ${h.controlName}\uFF08${h.controlId}\uFF09\uFF1A${h.oldGuid} \u2192 ${h.newGuid}\uFF1B\u8BB0\u5F55 ${h.id}`),"\u5148\u8BFB\u53D6\u6700\u65B0\u5FEB\u7167\u7684 controlGuidChanges\uFF0C\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002","\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u786E\u8BA4\u5B8C\u6210\u540E\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u518D\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002"].join(`
27
- `);try{await navigator.clipboard.writeText(m),f("\u5DF2\u590D\u5236\u7D22\u5F15\u53D8\u66F4\u53CA\u811A\u672C\u540C\u6B65\u8981\u6C42\uFF0C\u53EF\u7C98\u8D34\u7ED9 AI\u3002")}catch{d("\u65E0\u6CD5\u8BBF\u95EE\u526A\u8D34\u677F\uFF0C\u8BF7\u5C06\u4E0A\u65B9\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u4EA4\u7ED9 AI\uFF0C\u5E76\u8981\u6C42\u540C\u6B65 Lua \u811A\u672C\u5F15\u7528\u3002")}}async function Dt(){let a=(l.current?.controlGuidChanges||[]).map(o=>o.id);try{await le(),await D({op:"acknowledgeControlGuidChanges",changeIds:a}),f("\u5DF2\u786E\u8BA4\u811A\u672C\u7D22\u5F15\u5F15\u7528\u5B8C\u6210\u540C\u6B65\uFF1B\u8BF7\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002")}catch{}}let jt=(a,o)=>void D({op:"set",key:a,value:o}).catch(()=>{});async function Gt(){let a=l.current?.boxes?.find(o=>o.id===l.current.selectedId)?.imageId;if(be(a)){z(!0);try{await k(t,"image-refresh",{imageId:a}),xt(a),f(`\u56FE\u7247 ${a} \u5DF2\u91CD\u65B0\u4E0B\u8F7D\uFF1B\u540C\u6E90\u8BD5\u73A9\u9875\u4F1A\u540C\u6B65\u5237\u65B0\u3002`)}catch(o){d(o.message)}finally{z(!1)}}}async function Ft(a,o){let m=l.current?.inspector?.id;if(m)try{let h=await D({op:"add",kind:"image",parentId:m,name:`${o}\u56FE\u7247`});await D({op:"set",id:m,key:a,value:h.selectedId}),f(`${o}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}n.useEffect(()=>{let a=i?.scripts?.find(o=>o.id===je);fe(o=>o&&a&&o.id===a.id&&o.dirty?o:a?{id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset,dirty:!1}:null)},[i,je]);function Bt(a){fe(o=>o&&{...o,...a,dirty:!0})}async function le(){let a=Ge;!a||!a.dirty||(await D({op:"updateScript",id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset}),fe(o=>o&&o.id===a.id?{...o,dirty:!1}:o))}function it(){le().then(()=>f("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function me({silent:a=!1}={}){let o=tt;if(!o||!o.dirty)return;let m=qt(o);if(m.length){let R=m[0];throw a||d(R),new Error(R)}let h=await D({op:"setServerLogic",logic:yt(o)});Fe(Xe(h.serverLogic)),f("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function _t(){me({silent:!0}).catch(()=>{})}function he(a){it(),_t(),Et(a)}async function nt(a={}){let o=await D({op:"addScript",...a}),m=o.scripts?.[o.scripts.length-1];return m&&Ne(m.id),f(a.controlId?"\u5DF2\u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6":"\u5DF2\u65B0\u5EFA\u811A\u672C\uFF0C\u53EF\u7F16\u8F91\u8DEF\u5F84\u3001\u6E90\u7801\u548C\u6302\u8F7D\u76EE\u6807"),m}function Ut(a){Ge?.id===a&&fe(null),D({op:"removeScript",id:a}).then(()=>f("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function Ht(a){D({op:"updateScript",id:a,controlId:""}).then(()=>f("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function Vt(a){let o=l.current?.selectedId||"",m=l.current?.asset?.type||"";o&&(fe(h=>h&&h.id===a?{...h,controlId:o,controlAsset:m}:h),D({op:"updateScript",id:a,controlId:o,controlAsset:m}).then(()=>f("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function rt(a){if(l.current?.asset?.type!==a)try{let o=await D({op:"selectAsset",assetType:a});Oe(""),De(a==="client-control-template"?"template":"child"),f(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${o.asset.label}`)}catch{}}function Yt(a,o){let m=l.current;if(!m)return;let h=m.asset?.type==="client-control-template"&&de==="template",R=h?{op:"addTemplate",kind:a,name:`${o}\u6A21\u677F`}:{op:"add",kind:a,parentId:It(m.root,m.selectedId),name:o};D(R).then(()=>f(h?`\u5DF2\u65B0\u589E${o}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${o}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function Ie(a,o=""){try{await p.current.catch(()=>{}),await le(),await me();let m=await k(t,"export",{format:a,assetType:o});if(ae([...new Set([...m.warnings||[],...(m.files||[]).flatMap(h=>h.warnings||[])])]),Array.isArray(m?.files)&&m.files.length){for(let h of m.files)H(h);d(""),f(`\u5DF2\u5BFC\u51FA ${m.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${m.files.map(h=>h.filename).join("\u3001")}\uFF09\uFF1B\u82E5\u6D4F\u89C8\u5668\u62E6\u622A\u591A\u6587\u4EF6\u4E0B\u8F7D\uFF0C\u8BF7\u5141\u8BB8\u540E\u91CD\u8BD5\u3002`);return}H(m),d(""),f(m.warnings?.length?`\u5DF2\u5BFC\u51FA ${m.filename}\uFF1B\u8BF7\u67E5\u770B\u4E0A\u65B9\u5BFC\u51FA\u8BF4\u660E\u3002`:`\u5DF2\u5BFC\u51FA ${m.filename}`)}catch(m){d(m?.message||String(m))}}async function Rt(a){if(a)try{await p.current.catch(()=>{});let o=await k(t,"load-archive",{path:a});pe(o.snapshot,{keepLogicDraft:!1}),d(""),f(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${a}`),ae([])}catch(o){d(o?.message||String(o))}}async function Jt(a){if(!a)return;let o=a.name.toLowerCase().endsWith(".gia")?"gia":a.name.toLowerCase().endsWith(".json")?"json":a.name.toLowerCase().endsWith(".lua")?"lua":"";if(!o){d("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await p.current.catch(()=>{});let m=await k(t,"import",{format:o,filename:a.name,data:await Z(a)});pe(m.snapshot,{keepLogicDraft:!1}),d(""),f([`\u5DF2\u5BFC\u5165 ${a.name}`,...m.warnings||[]].join(`
28
- `)),ae([])}catch(m){d(m?.message||String(m))}finally{te.current&&(te.current.value="")}}function Xt(){y.open(async()=>{await p.current.catch(()=>{}),await le(),await me(),await p.current,d("")})}async function Wt(){if(!(Y||!$?.trim())){A(!0);try{await le(),await me(),await p.current.catch(()=>{});let a=l.current,o=await k(t,"save",{path:$.trim(),expectedRevision:a.version});pe(await k(t,"get")),f(`\u5DF2\u4FDD\u5B58\u5230 ${o.path}`),d(""),G(null),$e()}catch(a){d(a?.message||String(a))}finally{A(!1)}}}if(n.useEffect(()=>{i?.inspector?.kind==="server-container"&&ze("base")},[i?.inspector?.kind]),!i)return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},e("div",{className:"qxsim-status error"},x||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let ce=i.canvas.width,ue=i.canvas.height,Be=Se.width>0&&Se.height>0?Math.min((Se.width-44)/ce,(Se.height-54)/ue):NaN,Kt=Number.isFinite(Be)&&Be>0?Math.min(2,Math.round(Be*1e3)/1e3):.5,Zt=Te==="fit"?Kt:Number(Te)||.5,st=we(ce,ue),Qt=(i.canvas.presets||[]).filter(a=>a.platform===i.canvas.platform);function ea(a){if(!i||i.canvas.platform===a)return;let o=(i.canvas.presets||[]).filter(h=>h.platform===a);if(!o.length)return;let m=o.find(h=>qe(h)===st)||o[0];D({op:"setCanvas",canvasId:m.id}).then(()=>f(`\u5DF2\u5207\u6362\u5230${m.label}`)).catch(()=>{})}let B=i.asset?.type==="client-control-template",_e=!!(i.inspector&&i.inspector.kind!=="server-container"),Ue=new Set;for(let a of i.tree||[])(Me[a.id]||(a.ancestorIds||[]).some(o=>Me[o]))&&Ue.add(a.id);let ta=(i.boxes||[]).filter(a=>a.kind!=="server-container"&&a.visible&&!Ue.has(a.id));function aa(a,o){a.stopPropagation(),zt(m=>{let h={...m};return h[o]?delete h[o]:h[o]=!0,h})}let ot=i.tree.filter(a=>!ke.trim()||`${a.name} ${a.label}`.toLowerCase().includes(ke.trim().toLowerCase())),O=i.tree.find(a=>a.id===i.selectedId),ia=B&&O?i.tree.filter(a=>a.id!==O.id&&!(a.ancestorIds||[]).includes(O.id)):[],na=O?.parentId||i.root.id;return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},y.overlay,ne==="script"&&x?e("div",{className:"qxsim-status error",role:"alert"},x):null,$!==null?e("div",{className:"qxsim-save-overlay"},e("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A",onSubmit:a=>{a.preventDefault(),Wt()}},e("h2",null,"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),e("label",null,"\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84",e("input",{autoFocus:!0,required:!0,value:$,disabled:Y,onChange:a=>G(a.target.value)})),x?e("div",{role:"alert"},x):null,e("footer",null,e("button",{className:"qxsim-action",type:"button",disabled:Y,onClick:()=>G(null)},"\u53D6\u6D88"),e("button",{className:"qxsim-action primary",type:"submit",disabled:Y||!$.trim()},Y?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58")))):null,e("header",{className:"qxsim-toolbar"},e("div",{className:"qxsim-brand",title:`${i.workspace?.bound?i.workspace.path:"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"}
29
- ${i.meta?.sourceFile||"\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6"}`},e("span",{className:"qxsim-appicon"},"UI"),e("span",{className:"qxsim-brand-text"},e("strong",null,`\u5B58\u6863\uFF1A${i.save?.name||i.meta?.name||"\u672A\u547D\u540D\u5B58\u6863"}`),e("span",null,`\u5DE5\u4F5C\u533A\uFF1A${i.workspace?.bound?i.workspace.name:"\u672A\u7ED1\u5B9A"} \xB7 \u5F53\u524D\u8D44\u4EA7\uFF1A${i.asset?.label||"UI\u63A7\u4EF6"}`))),e("div",{className:"qxsim-toolbar-center"},ne==="ui"?e(n.Fragment,null,e("div",{className:"qxsim-device-switch",role:"group","aria-label":"\u76EE\u6807\u8BBE\u5907"},ye.map(a=>e("button",{key:a.key,className:i.canvas.platform===a.key?"active":"",title:a.title,onClick:()=>ea(a.key)},a.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:i.canvasId,onChange:a=>void D({op:"setCanvas",canvasId:a.target.value}).catch(()=>{})},Qt.map(a=>e("option",{key:a.id,value:a.id},`${qe(a)} \xB7 ${a.width}\xD7${a.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:Te,onChange:a=>Lt(a.target.value)},[["fit","\u9002\u5E94"],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([a,o])=>e("option",{key:a,value:a},o)))):e("span",{className:"qxsim-muted"},ne==="logic"?"\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20":"Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91")),e("div",{className:"qxsim-actions"},g?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{d(""),G(l.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:te,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:a=>void Jt(a.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void $e(),onChange:a=>{let o=a.target.value;a.target.value="",o&&Rt(o)}},e("option",{value:"",disabled:!0},i.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...oe.length?oe.map(a=>e("option",{key:a.path,value:a.path},`${a.name} \xB7 ${a.path}`)):[e("option",{value:"",disabled:!0},i.workspace?.bound?"\u672A\u53D1\u73B0 qxqy-simulator-save":"\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A")]),e("button",{className:"qxsim-action",title:"\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua",onClick:()=>te.current?.click()},"\u21E7 \u5BFC\u5165"),e("select",{className:"qxsim-control zoom","aria-label":"\u5BFC\u51FA\u683C\u5F0F",defaultValue:"",onChange:a=>{let[o,m=""]=a.target.value.split("|");a.target.value="",o&&Ie(o,m)}},e("option",{value:"",disabled:!0},"\u21E9 \u5BFC\u51FA"),e("option",{value:"save"},"\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09"),e("option",{value:"save-gia"},"\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09"),e("option",{value:"gia-combined"},"\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09"),e("optgroup",{label:"\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09"},e("option",{value:"json"},"\u5F53\u524D\u754C\u9762 Authoring JSON"),e("option",{value:"gia"},"\u5F53\u524D\u754C\u9762 GIA")),e("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F"},e("option",{value:"json|server-control-template"},"Authoring JSON"),e("option",{value:"gia|server-control-template"},"GIA")),e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09"},e("option",{value:"json|client-control-template"},"Authoring JSON"),e("option",{value:"gia|client-control-template"},"GIA")),e("optgroup",{label:"Lua \u811A\u672C"},e("option",{value:"scripts"},"\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09"),e("option",{value:"scripts-gia"},"\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09")))),e("button",{className:"qxsim-action primary",title:"\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9",disabled:y.opening,onClick:Xt},y.opening?"\u6B63\u5728\u51C6\u5907\u2026":"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:Ce},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:ne==="ui"?"active":"",onClick:()=>he("ui")},"UI \u7F16\u8F91"),e("button",{className:ne==="script"?"active":"",onClick:()=>he("script")},"Lua \u811A\u672C"),e("button",{className:ne==="logic"?"active":"",onClick:()=>he("logic")},"\u670D\u52A1\u7AEF\u903B\u8F91"),e("span",{className:"save-summary"},"\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91")),ne==="script"?e(b,{snap:i,patch:D,request:(a,o)=>k(t,a,o),refresh:async()=>pe(await k(t,"get")),prepare:async()=>(await p.current,await le(),await me(),l.current)}):null,i.controlGuidChanges?.length?e("details",{className:"qxsim-note",open:!0,style:{flexShrink:0,maxHeight:170,overflow:"auto"}},e("summary",{style:{cursor:"pointer"}},`\u5F85\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08${i.controlGuidChanges.length} \u9879\uFF09`),e("div",null,"\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u8BA9 AI \u66F4\u65B0\u5B58\u6863\u811A\u672C\u548C\u76F8\u5173 Lua \u6E90\u6587\u4EF6\uFF0C\u5E76\u91CD\u65B0\u8BD5\u73A9\u6838\u5BF9\u3002"),e("ul",{style:{margin:"5px 0"}},i.controlGuidChanges.map(a=>e("li",{key:a.id},`${a.controlAsset==="client-control-template"?"\u5BA2\u6237\u7AEF\u6A21\u677F":"\u670D\u52A1\u7AEF\u754C\u9762"} \xB7 ${a.controlName}\uFF1A${a.oldGuid} \u2192 ${a.newGuid}`))),e("div",{style:{display:"flex",gap:6}},e("button",{className:"qxsim-action",onClick:Ot},"\u590D\u5236\u7ED9 AI"),e("button",{className:"qxsim-action",title:"\u4EC5\u5728\u5DF2\u4FEE\u6539\u6216\u786E\u8BA4\u4E0D\u6D89\u53CA\u811A\u672C\u5F15\u7528\uFF0C\u5E76\u5B8C\u6210\u6838\u5BF9\u540E\u4F7F\u7528",onClick:Dt},"\u5DF2\u5B8C\u6210\u811A\u672C\u540C\u6B65"))):null,w.length?e("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},e("summary",{style:{cursor:"pointer"}},`\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08${w.length} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09`),e("button",{className:"qxsim-action",onClick:()=>ae([])},"\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E"),e("ul",null,w.map((a,o)=>e("li",{key:o},a)))):null,ne==="ui"?e("div",{className:"qxsim-main"},e("aside",{className:"qxsim-tree"},e("div",{className:"qxsim-asset-switch","aria-label":"\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B"},e("button",{className:B?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void rt("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:B?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void rt("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},B?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},B?`${i.asset.templateCount} \u4E2A\u6A21\u677F \xB7 ${i.tree.length} \u4E2A\u63A7\u4EF6`:`${i.tree.length} \u4E2A\u8282\u70B9`)),e("label",{className:"qxsim-search"},"\u2315",e("input",{value:ke,placeholder:B?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:a=>Oe(a.target.value)}),ke?e("button",{onClick:()=>Oe("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},ot.length?ot.map(a=>{let o=S[a.kind]||["\u25C7",a.label],m=Ue.has(a.id),h=!!Me[a.id];return e("div",{key:a.id,className:`qxsim-row${B&&a.depth===0?" template-root":""}${a.id===i.selectedId?" active":""}${m?" canvas-hidden":""}`,style:{paddingLeft:8+a.depth*18,"--depth":a.depth},title:`${o[1]} \xB7 ${a.name} \xB7 GUID ${a.guid??a.id}`,onClick:()=>void D({op:"select",id:a.id}).catch(()=>{})},e("span",{className:"qxsim-chevron"},a.childCount?"\u25BC":""),e("span",{className:"qxsim-kind"},o[0]),e("span",{className:"qxsim-row-label"},a.name),e("span",{className:"qxsim-row-end"},B&&a.depth===0?e(n.Fragment,null,e("span",{className:"qxsim-template-tag"},"\u6A21\u677F"),e("span",{className:"qxsim-template-id"},`#${a.guid??a.id}`)):a.incomplete?e("span",{className:"qxsim-incomplete"},"\u6682\u4E0D\u652F\u6301"):null,e("button",{className:`qxsim-eye${h?" off":""}`,type:"button",title:h?"\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09","aria-label":`${a.name}\u753B\u5E03\u53EF\u89C1\u6027`,"aria-pressed":!h,onClick:R=>aa(R,a.id)},h?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},B&&O?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,O.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:na,onChange:a=>void D({op:"reparent",id:O.id,parentId:a.target.value}).then(()=>f(a.target.value===i.root.id?"\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F":"\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7")).catch(()=>{})},e("option",{value:i.root.id},"\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09"),ia.map(a=>e("option",{key:a.id,value:a.id},`${"\u3000".repeat(a.depth)}${a.name}`))),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB",disabled:O.siblingIndex<=0,onClick:()=>void D({op:"moveSibling",id:O.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:O.siblingIndex>=O.siblingCount-1,onClick:()=>void D({op:"moveSibling",id:O.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},O.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${O.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:B&&de==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${O?O.name:"\u5F53\u524D\u63A7\u4EF6"}`},B&&de==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${O?`\u201C${O.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),B?e("span",{className:"qxsim-add-mode"},e("button",{className:de==="template"?"active":"",onClick:()=>De("template")},"\u9876\u5C42"),e("button",{className:de==="child"?"active":"",onClick:()=>De("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},L.filter(([a])=>B||a!=="container").map(([a,o])=>e("button",{key:a,title:`${B&&de==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${o}`,onClick:()=>Yt(a,o)},`\uFF0B ${o}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:at},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(ce*Zt))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,B?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},i.canvas.platform),e("span",null,`${st} \xB7 ${ce}\xD7${ue} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${ce} / ${ue}`},onClick:a=>{let o=a.currentTarget.getBoundingClientRect();D({op:"pick",x:(a.clientX-o.left)*ce/o.width,y:(o.bottom-a.clientY)*ue/o.height}).catch(()=>{})}},ta.map(a=>Pt(a,i,ce,ue))))),x?e("div",{className:"qxsim-status error"},"\u26A0 ",x):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${i.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,T||(O?`\u5F53\u524D\uFF1A${O.name}`:"")),e("span",{className:"spacer"}),e("span",null,B?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"),e("a",{className:"qxsim-community",href:"https://space.bilibili.com/23358791",target:"_blank",rel:"noreferrer",title:"\u4F5C\u8005 B\u7AD9\u4E3B\u9875"},"\u4F5C\u8005B\u7AD9"),e("a",{className:"qxsim-community",href:"https://qm.qq.com/q/DpuMvxAfhm",target:"_blank",rel:"noreferrer",title:"\u52A0\u5165 QQ \u7FA4 1007538100"},"QQ\u7FA4 1007538100"))),e("aside",{className:"qxsim-inspector"},i.inspector?e(n.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(S[i.inspector.kind]||["\u25C7"])[0]),e("strong",null,i.inspector.label),B&&O?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},B&&O?.depth===0?"\u6A21\u677F\u7D22\u5F15 ":"\u63A7\u4EF6 GUID ",e("code",null,i.inspector.guid??i.inspector.id)," \xB7 ",O?.name||"\u8282\u70B9"),i.inspector.kind!=="server-container"?e(St,{key:`${i.asset.type}:${i.inspector.id}`,inspector:i.inspector,onSave:(a,o)=>Mt(a,o,i.asset.type)}):null),e("div",{className:"qxsim-tabs",style:_e?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:Le==="base"?"active":"",onClick:()=>ze("base")},"\u57FA\u7840\u5C5E\u6027"),_e?e("button",{className:Le==="script"?"active":"",onClick:()=>ze("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},_e&&Le==="script"?e(Ct,{snap:i,addScriptMounted:a=>void nt({controlId:a,controlAsset:i.asset?.type}).then(()=>he("script")),mountScriptTo:Vt,unmountScript:Ht,openScript:a=>{Ne(a),he("script")}}):e(n.Fragment,null,e(u,{inspector:i.inspector,commit:jt,createStateChild:Ft}),be(i.boxes?.find(a=>a.id===i.selectedId)?.imageId)?e("div",{className:"qxsim-section-body"},e("button",{className:"qxsim-action",disabled:I,onClick:Gt},I?"\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026":"\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750"),e("p",{className:"qxsim-muted"},"\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002")):null)),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void D({op:"remove"}).catch(()=>{})},B&&O?.depth===0?"\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F":"\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6"))):e("div",{className:"qxsim-empty"},"\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6"))):ne==="script"?e(_,{snap:i,selectedScriptId:je,selectScript:a=>{it(),Ne(a)},draft:Ge,updateDraft:Bt,saveScript:()=>void le().then(()=>f("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void nt(),removeScript:Ut,exportLua:a=>void Ie("lua",a),exportScripts:()=>void Ie("scripts"),exportScriptsGia:()=>void Ie("scripts-gia"),notice:T}):e(Nt,{snap:i,draft:tt,setDraft:Fe,saveLogic:()=>void me().catch(()=>{}),notice:T,error:x}))}return{SimulatorView:At,ensureStyle:ee,removeStyle:()=>document.getElementById(M)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:n=>{let c={},N=n("react"),g=vt(N,{async api(e,b,P){let j=await fetch("/qxqy-simulator/api/"+b,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...P||{}}),...b==="play"?{signal:AbortSignal.timeout(15e3)}:{}}),M=await j.json();if(!j.ok||!M.ok)throw new Error(M.error||"Request failed");return M.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return c.inject=["slots"],c.apply=e=>{g.ensureStyle(),e.effect(()=>g.removeStyle,"qxqy-simulator: style cleanup"),e.slots.inject("conversation.view",()=>e.slots.register({name:"conversation.view",id:"qxqy-simulator",order:20,label:()=>"\u6A21\u62DF\u5668"},g.SimulatorView))},c}});})();
26
+ @container(max-width:820px){.qxsim-main{grid-template-columns:180px minmax(280px,1fr)}.qxsim-inspector{position:absolute;right:0;top:0;bottom:0;width:285px;z-index:5;box-shadow:-10px 0 24px var(--shadow)}.qxsim-script-page{grid-template-columns:190px minmax(320px,1fr)}.qxsim-script-editor{padding:12px}.qxsim-script-fields{grid-template-columns:1fr}}
27
+ `,L={"server-container":["\u25A3","\u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668"],container:["\u25A1","\u5BB9\u5668\u8282\u70B9"],textbox:["T","\u6587\u672C\u6846"],cursor:["\u2301","\u5149\u6807\u68C0\u6D4B\u533A\u57DF"],reference:["\u2197","\u6A21\u677F\u5F15\u7528\u63A7\u4EF6"],grid:["\u25A6","\u7F51\u683C\u89C6\u7A97"],image:["\u25A7","\u56FE\u7247"],button:["Btn","\u9884\u8BBE\u6309\u94AE"],textwindow:["T\u2195","\u6587\u672C\u89C6\u7A97"],keyhint:["1","\u6309\u952E\u63D0\u793A"],animation:["\u2726","\u754C\u9762\u52A8\u6548"],fullscreen:["\u2725","\u5168\u5C4F\u52A8\u6548"]},E=[["container","\u5BB9\u5668\u8282\u70B9"],["textbox","\u6587\u672C\u6846"],["cursor","\u5149\u6807\u68C0\u6D4B"],["reference","\u6A21\u677F\u5F15\u7528"],["grid","\u7F51\u683C\u89C6\u7A97"],["button","\u9884\u8BBE\u6309\u94AE"],["textwindow","\u6587\u672C\u89C6\u7A97"],["keyhint","\u6309\u952E\u63D0\u793A"],["image","\u56FE\u7247"],["animation","\u754C\u9762\u52A8\u6548"],["fullscreen","\u5168\u5C4F\u52A8\u6548"]],B={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["itemPrefabId","raycastTarget","interactable","showScrollBar","scrollDirection","layoutConstraint","layoutConstraintFixedCount","cellSizeX","cellSizeY","spacingX","spacingY","padding1X","padding1Y","padding2X","padding2Y","previewCount"],image:["imageSource","imageId","imageColor","enableMask","enableSoftEdge","softEdgeMode","softEdgeWidthX","softEdgeWidthY","horizontalSoftRange","verticalSoftRange","enableFill","fillType","fillHorizontalType","fillVerticalType","fillRadial90Type","fillRadialType","fillAmount","reverseMaskArea"],button:["raycastTarget","interactable","unavailableChildId","hoverChildId","pressedChildId","selectedChildId","clickAudioId"],textwindow:["interactable","showScrollBar","fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId"],fullscreen:["animationId"]};function q(){if(document.getElementById(I))return;let a=document.createElement("style");a.id=I,a.textContent=A,document.head.appendChild(a)}function C(){let a=document.documentElement,l=document.body,r=[a.dataset.theme,a.className,a.getAttribute("style"),l?.dataset?.theme,l?.className,l?.getAttribute("style"),getComputedStyle(a).colorScheme].filter(Boolean).join(" ").toLowerCase();return r.includes("dark")?"dark":r.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function _(){let[a,l]=t.useState(C);return t.useEffect(()=>{let r=()=>l(C()),s=new MutationObserver(r);s.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&s.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let d=window.matchMedia?.("(prefers-color-scheme: dark)");return d?.addEventListener?.("change",r),()=>{s.disconnect(),d?.removeEventListener?.("change",r)}},[]),a}function S(a,l){let r=Number(a??l)>>>0;return`rgba(${r>>>16&255},${r>>>8&255},${r&255},${(r>>>24&255)/255})`}function H(a,l){return a==="sprite"?{background:"transparent"}:a==="circle"?{borderRadius:"50%",background:l}:a==="ring"?{borderRadius:"50%",border:`7px solid ${l}`,background:"transparent"}:a==="triangle"?{background:l,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:a==="fourstar"?{background:l,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:a==="fivestar"?{background:l,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:a==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:l}}let g=n;function j(a){let l;try{l=atob(a.data)}catch{throw new Error("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762")}let r=new Uint8Array(l.length);for(let p=0;p<l.length;p+=1)r[p]=l.charCodeAt(p);let s=URL.createObjectURL(new Blob([r],{type:a.mimeType||"application/octet-stream"})),d=document.createElement("a");d.href=s,d.download=a.filename||"qxqy-export",d.rel="noopener",d.style.display="none",document.body.appendChild(d),d.click(),d.remove(),setTimeout(()=>URL.revokeObjectURL(s),1e3)}async function M(a){let l=new Uint8Array(await a.arrayBuffer()),r="",s=32768;for(let d=0;d<l.length;d+=s)r+=String.fromCharCode(...l.subarray(d,d+s));return btoa(r)}let R=a=>typeof a=="object"?a.value:a,F=a=>typeof a=="object"?a.label:a,K=[{key:"KEYBOARD",label:"PC",title:"PC KEYBOARD \u753B\u5E03\uFF1A1600\xD7900 / 2100\xD7900"},{key:"TOUCHSCREEN",label:"\u624B\u673A",title:"\u624B\u673A TOUCHSCREEN \u753B\u5E03\uFF1A1280\xD7720 / 1560\xD7720 / 1280\xD7960"}];function ae(a){return String(a.id||"").split("-").slice(1).join(":")}function le(a,l){let r=(d,p)=>p?r(p,d%p):d,s=r(Math.round(a),Math.round(l))||1;return`${Math.round(a)/s}:${Math.round(l)/s}`}function V({field:a,commit:l,axis:r}){let s=a.value==null?"":String(a.value),[d,p]=t.useState(s);if(t.useEffect(()=>p(a.value==null?"":String(a.value)),[a.value,a.type]),a.type==="note")return e("div",{className:"qxsim-note"},a.value||a.label);if(a.readonly&&(a.evidence==="N"||a.evidence==="U"))return e("div",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},a.label),e("div",{className:"qxsim-unsupported"},a.value==null?"\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C":String(a.value)));if(a.type==="bool")return e("div",{className:"qxsim-switch-row"},e("span",null,a.label),e("label",{className:"qxsim-switch"},e("input",{type:"checkbox",checked:!!a.value,disabled:!!a.readonly,onChange:m=>l(a.key,m.target.checked)}),e("span",{className:"qxsim-switch-track"})));if(a.type==="enum"){let m=[...a.options||[]],z=String(a.value??"");return m.some(W=>String(R(W))===z)||m.unshift({value:a.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${a.unknownValue??(z||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},a.label),e("select",{value:z,disabled:!!a.readonly,onChange:W=>l(a.key,W.target.value)},m.map(W=>e("option",{key:String(R(W)),value:R(W)},F(W)))))}if(a.type==="percent"){let m=Math.round(Number(a.value||0)*100);return e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},a.label),e("span",{className:"qxsim-percent"},e("input",{type:"range",min:0,max:100,value:m,onInput:z=>l(a.key,Number(z.target.value)/100)}),e("output",null,`${m}%`)))}if(a.type==="color")return e(v,{field:a,commit:l});let w={value:d,disabled:!!a.readonly,readOnly:!!a.readonly,onChange:m=>p(m.target.value),onBlur:()=>{a.readonly||l(a.key,d)},onKeyDown:m=>{m.key==="Enter"&&a.type!=="text"&&m.currentTarget.blur(),m.key==="Escape"&&p(a.value==null?"":String(a.value))}};return e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},r?e("b",{className:`qxsim-axis ${r.toLowerCase()}`},r):null,a.label),a.type==="text"?e("textarea",{...w,rows:4}):e("input",{...w,type:a.type==="number"?"number":"text",step:a.type==="number"?"any":void 0}))}function ee({title:a,open:l=!0,children:r}){return e("details",{className:"qxsim-section",open:l},e("summary",null,a),e("div",{className:"qxsim-section-body"},r))}function ce(a){let l={};for(let r of a||[])l[r.key]=r;return l}function Q({label:a,x:l,y:r,xAxis:s="X",yAxis:d="Y",commit:p}){return e("div",{className:"qxsim-pair"},e("div",{className:"qxsim-pair-name"},a),e(V,{field:l,axis:s,commit:p}),e(V,{field:r,axis:d,commit:p}))}function he({field:a,commit:l,createStateChild:r}){return e("div",{className:"qxsim-state-field"},e("div",{className:"qxsim-state-label"},a.label),e("div",{className:"qxsim-state-ref"},e("button",{title:`\u65B0\u5EFA\u5E76\u7ED1\u5B9A${a.label}\u56FE\u7247`,onClick:()=>r(a.key,a.label)},"+"),e("select",{value:String(a.value??""),"aria-label":a.label,onChange:s=>l(a.key,s.target.value)},(a.options||[]).map(s=>e("option",{key:String(R(s)),value:R(s)},F(s))))))}function me({inspector:a,commit:l,createStateChild:r}){let s=ce(a.fields),d=z=>z?.type==="node"?e(he,{key:z.key,field:z,commit:l,createStateChild:r}):z?e(V,{key:z.key,field:z,commit:l}):null,p=(B[a.kind]||[]).map(z=>s[z]).filter(Boolean).map(d),w=null;if(a.kind==="image"){let z=s.fillType?.value==="Horizontal"?s.fillHorizontalType:s.fillType?.value==="Vertical"?s.fillVerticalType:s.fillType?.value==="Radial90"?s.fillRadial90Type:s.fillRadialType,W=[d(s.enableMask),d(s.enableSoftEdge),s.enableSoftEdge?.value?e("div",{className:"qxsim-subfields",key:"soft-fields"},d(s.softEdgeMode),e(Q,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:s.softEdgeWidthX,y:s.softEdgeWidthY,commit:l}),e(Q,{label:"\u7FBD\u5316\u8303\u56F4",x:s.horizontalSoftRange,y:s.verticalSoftRange,commit:l})):null,d(s.enableFill),s.enableFill?.value?e("div",{className:"qxsim-subfields",key:"fill-fields"},d(s.fillType),d(z),d(s.fillAmount)):null,d(s.reverseMaskArea)];w=e(t.Fragment,null,e(ee,{title:"\u56FE\u7247\u8BBE\u7F6E"},d(s.imageSource),d(s.imageId),e($,{imageId:s.imageId?.value,imageSource:s.imageSource?.value,value:s.imageType?.value,commit:l}),d(s.imageColor)),e(ee,{title:"\u906E\u7F69\u8BBE\u7F6E"},W))}let m=a.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":a.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${a.label}\u8BBE\u7F6E`;return e(t.Fragment,null,e(ee,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},e(V,{field:s.name,commit:l})),e(ee,{title:"\u53D8\u6362"},s.posX?e(Q,{label:"\u4F4D\u7F6E",x:s.posX,y:s.posY,commit:l}):null,s.width?e(Q,{label:"\u5927\u5C0F",x:s.width,y:s.height,xAxis:"W",yAxis:"H",commit:l}):null,...["rotationX","rotationY","rotationZ"].map(z=>s[z]?e(V,{key:z,field:s[z],commit:l}):null),s.syncAllDevices?e(V,{field:s.syncAllDevices,commit:l}):null,s.anchorType?e(V,{field:s.anchorType,commit:l}):null,s.anchorMinX?e(Q,{label:"Min",x:s.anchorMinX,y:s.anchorMinY,commit:l}):null,s.anchorMaxX?e(Q,{label:"Max",x:s.anchorMaxX,y:s.anchorMaxY,commit:l}):null,s.pivotX?e(Q,{label:"\u4E2D\u5FC3",x:s.pivotX,y:s.pivotY,commit:l}):null),e(ee,{title:"\u521B\u5EFA\u8BBE\u7F6E"},s.active?e(V,{field:s.active,commit:l}):null,s.visible?e(V,{field:s.visible,commit:l}):null),w||(p.length?e(ee,{title:m},p):null),s.canControllerFocus?e(ee,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},e(V,{field:s.canControllerFocus,commit:l})):null,s.incomplete?e(ee,{title:"\u5B9E\u73B0\u72B6\u6001"},e(V,{field:s.incomplete,commit:l})):null)}function be({snap:a,selectedScriptId:l,selectScript:r,draft:s,updateDraft:d,saveScript:p,addScript:w,removeScript:m,exportLua:z,exportScripts:W,exportScriptsGia:Y,notice:ie}){let O=a.scripts||[],D=O.find(T=>T.id===l)||null,G=a.mountTargets||[],U=G.filter(T=>T.assetType==="server-control-template"),b=G.filter(T=>T.assetType==="client-control-template"),ne=T=>{let pe=G.find(ye=>ye.id===T);return pe?`${pe.assetLabel} \xB7 ${pe.name}`:""};return e("div",{className:"qxsim-script-page"},e("aside",{className:"qxsim-script-assets"},e("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${O.length}\uFF09`),e("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:w},"\uFF0B \u65B0\u5EFA\u811A\u672C"),O.length?O.map(T=>e("div",{key:T.id,className:"qxsim-script-list-row"},e("button",{className:`qxsim-script-asset${T.id===l?" active":""}`,onClick:()=>r(T.id)},e("strong",null,T.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,T.mounted?`\u6302\u8F7D\uFF1A${T.assetLabel} \xB7 ${T.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),e("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>z(T.id)},"\u21E9"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>m(T.id)},"\u2715"))):e("div",{className:"qxsim-empty"},"\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB")),e("main",{className:"qxsim-script-editor"},D&&s?e(t.Fragment,null,e("div",{className:"qxsim-script-title"},e("div",null,e("h2",null,s.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("span",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${a.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7`)),e("span",null,`\u811A\u672C ${D.id}`)),e("div",{className:"qxsim-script-fields"},e("label",null,"\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09",e("input",{type:"text",value:s.path,placeholder:"lua/example.lua",onChange:T=>d({path:T.target.value})})),e("label",null,"\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09",e("select",{value:s.controlId?`${s.controlAsset||"server-control-template"}|${s.controlId}`:"",onChange:T=>{let[pe,ye]=T.target.value.split("|");d(ye?{controlId:ye,controlAsset:pe}:{controlId:"",controlAsset:""})}},e("option",{value:""},"\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09"),e("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185"},U.map(T=>e("option",{key:T.id,value:`${T.assetType}|${T.id}`},`${T.name} \xB7 ${T.id}`))),b.length?e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},b.map(T=>e("option",{key:T.id,value:`${T.assetType}|${T.id}`},`${T.name} \xB7 ${T.id}`))):null))),e("label",null,"Lua \u6E90\u7801",e("textarea",{value:s.source,spellCheck:!1,placeholder:"-- \u5728\u8FD9\u91CC\u8F93\u5165\u5BA2\u6237\u7AEF Lua\uFF1B\u811A\u672C\u53EA\u6709\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548",onChange:T=>d({source:T.target.value})})),e("div",{className:"qxsim-script-footer"},e("span",null,s.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":ie||(D.mounted?`\u5DF2\u6302\u8F7D\uFF1A${ne(D.controlId)}`:"\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C")),e("span",{className:"spacer"}),e("button",{className:"qxsim-action",onClick:W},"\u21E9 \u811A\u672C\u5305 JSON"),e("button",{className:"qxsim-action",onClick:Y},"\u21E9 \u811A\u672C\u5305 GIA"),e("button",{className:"qxsim-action primary",disabled:!s.dirty,onClick:p},"\u4FDD\u5B58\u811A\u672C"))):e("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function oe(a){if(a===void 0)return"null";try{return JSON.stringify(a)}catch{return String(a)}}function Te(a){let l=String(a??"").trim();if(!l)return null;try{return JSON.parse(l)}catch{return l}}function Me(a){return!!(a&&typeof a=="object"&&!Array.isArray(a)&&Object.prototype.hasOwnProperty.call(a,"fromSignalParam"))}function ze(a){return{version:1,dirty:!1,rules:(Array.isArray(a?.rules)?a.rules:[]).map((r,s)=>({id:String(r.id||`signal-${s+1}`),signalName:String(r.signalName||""),actions:Array.isArray(r.actions)&&r.actions.length?r.actions.map(d=>Ut(d)):[ve("setCustomVariable")]}))}}let de=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],u=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],te={PlayerSelf:"PlayerSelf \u5F53\u524D\u73A9\u5BB6",AllPlayers:"AllPlayers \u5168\u90E8\u73A9\u5BB6",Level:"Level \u5173\u5361",Player1:"Player1 \u73A9\u5BB61",Player2:"Player2 \u73A9\u5BB62",Player3:"Player3 \u73A9\u5BB63",Player4:"Player4 \u73A9\u5BB64",Player5:"Player5 \u73A9\u5BB65",Player6:"Player6 \u73A9\u5BB66",Player7:"Player7 \u73A9\u5BB67",Player8:"Player8 \u73A9\u5BB68"};function re(a){return u.includes(a)&&a!=="AllPlayers"?a:a==="Level"?"Level":"PlayerSelf"}function Ee(a){return de.includes(a)?a:"PlayerSelf"}function ve(a){return a==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function Gt(a){return{version:1,rules:(a?.rules||[]).map(l=>({id:String(l.id||""),signalName:String(l.signalName||"").trim(),actions:(l.actions||[]).map(r=>r?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:Ee(r.target),signalName:String(r.signalName||"").trim(),params:Array.isArray(r.params)?r.params:[]}:{kind:"setCustomVariable",entityType:re(r?.entityType),name:String(r?.name||"").trim(),value:r&&Object.prototype.hasOwnProperty.call(r,"value")?r.value:0})}))}}function _t(a){let l=[];for(let[r,s]of(a?.rules||[]).entries()){String(s.signalName||"").trim()||l.push(`\u89C4\u5219 ${r+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let d=s.actions||[];d.length||l.push(`\u89C4\u5219 ${r+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[p,w]of d.entries())w?.kind==="sendClientScriptSignal"?String(w.signalName||"").trim()||l.push(`\u89C4\u5219 ${r+1} \u52A8\u4F5C ${p+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(w?.name||"").trim()||l.push(`\u89C4\u5219 ${r+1} \u52A8\u4F5C ${p+1} \u9700\u8981\u53D8\u91CF\u540D`)}return l}function Ut(a){if(a?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:Ee(a.target),signalName:String(a.signalName||""),params:Array.isArray(a.params)?a.params.map(r=>{try{return JSON.parse(JSON.stringify(r))}catch{return r}}):[]};let l=0;if(a&&Object.prototype.hasOwnProperty.call(a,"value"))try{l=JSON.parse(JSON.stringify(a.value))}catch{l=a.value}return{kind:"setCustomVariable",entityType:re(a?.entityType),name:String(a?.name||""),value:l}}function ct({label:a,value:l,onChange:r}){let s=Me(l),[d,p]=t.useState(()=>s?"":oe(l));return t.useEffect(()=>{Me(l)||p(oe(l))},[l]),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},a),e("select",{value:s?"param":"literal","aria-label":`${a}\u6765\u6E90`,onChange:w=>{w.target.value==="param"?r({fromSignalParam:Number(l?.fromSignalParam)||0}):r(Te(d||"0"))}},e("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),e("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),s?e("input",{type:"number",min:0,step:1,value:Number(l.fromSignalParam)||0,"aria-label":`${a}\u53C2\u6570\u5E8F\u53F7`,onChange:w=>r({fromSignalParam:Math.max(0,Math.trunc(Number(w.target.value)||0))})}):e("textarea",{className:"qxsim-logic-json",value:d,spellCheck:!1,"aria-label":`${a}\u5B57\u9762\u91CF`,onBlur:()=>r(Te(d)),onChange:w=>p(w.target.value)}))}function Ht({params:a,onChange:l}){let r=Array.isArray(a)?a:[];return e("div",{className:"qxsim-field wide"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09"),r.length?r.map((s,d)=>e("div",{key:d,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},e("div",{style:{flex:1,minWidth:0}},e(ct,{label:`\u53C2\u6570 ${d}`,value:s,onChange:p=>l(r.map((w,m)=>m===d?p:w))})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>l(r.filter((p,w)=>w!==d))},"\u2715"))):e("div",{className:"qxsim-muted"},"\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868"),e("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>l(r.concat([0]))},"\uFF0B \u6DFB\u52A0\u53C2\u6570"))}function Wt({snap:a,draft:l,setDraft:r,saveLogic:s,notice:d,error:p}){let w=l?.rules||[];function m(O){r({version:1,rules:O,dirty:!0})}function z(){m(w.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[ve("setCustomVariable")]}]))}function W(O,D){m(w.map((G,U)=>U===O?{...G,...D}:G))}function Y(O,D,G){let U=w[O];U&&W(O,{actions:U.actions.map((b,ne)=>ne===D?{...b,...G}:b)})}function ie(O,D,G){Y(O,D,ve(G))}return e("div",{className:"qxsim-server-logic"},e("div",{className:"qxsim-logic-wrap"},e("div",{className:"qxsim-logic-title"},e("div",null,e("h2",null,"\u670D\u52A1\u7AEF\u903B\u8F91"),e("p",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${a.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 \u76D1\u542C\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540E\u8BBE\u7F6E Level / \u73A9\u5BB6\u53D8\u91CF\uFF0C\u6216\u5411\u6307\u5B9A\u73A9\u5BB6\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7`)),e("button",{className:"qxsim-action primary",disabled:!l?.dirty,onClick:s},"\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91")),e("div",{className:"qxsim-note"},"\u8FD9\u662F\u6A21\u62DF\u5668\u5B58\u6863\u683C\u5F0F\uFF0C\u4E0D\u662F\u5B98\u65B9\u8282\u70B9\u56FE\u3002PlayerSelf \u8868\u793A\u53D1\u4FE1\u53F7\u7684\u90A3\u4F4D\u73A9\u5BB6\uFF1BPlayer1\u20138 \u662F\u56FA\u5B9A\u5EA7\u4F4D\uFF1BAllPlayers \u5411\u672C\u5C40\u5168\u90E8\u8BD5\u73A9\u73A9\u5BB6\u5E7F\u64AD\u3002"),p?e("div",{className:"qxsim-logic-error"},p):null,w.length?w.map((O,D)=>e("section",{key:O.id||D,className:"qxsim-logic-rule"},e("div",{className:"qxsim-logic-rule-head"},e("strong",null,`\u89C4\u5219 ${D+1}`),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),e("input",{type:"text",value:O.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${D+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:G=>W(D,{signalName:G.target.value})})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>m(w.filter((G,U)=>U!==D))},"\u2715")),e("div",{className:"qxsim-logic-actions"},(O.actions||[]).map((G,U)=>e("div",{key:U,className:"qxsim-logic-action"},e("div",{className:"qxsim-logic-action-head"},e("strong",null,`\u52A8\u4F5C ${U+1}`),e("select",{value:G.kind,"aria-label":`\u89C4\u5219 ${D+1} \u52A8\u4F5C ${U+1} \u7C7B\u578B`,onChange:b=>ie(D,U,b.target.value)},e("option",{value:"setCustomVariable"},"\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("option",{value:"sendClientScriptSignal"},"\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")),e("span",null,G.kind==="sendClientScriptSignal"?"\u53D1\u7ED9\u5F53\u524D\u73A9\u5BB6\u3001\u6307\u5B9A\u73A9\u5BB6\u6216\u5168\u90E8\u73A9\u5BB6":"\u5199\u5165 Level / \u5F53\u524D\u73A9\u5BB6 / \u73A9\u5BB61-8"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u52A8\u4F5C",disabled:(O.actions||[]).length<=1,onClick:()=>W(D,{actions:O.actions.filter((b,ne)=>ne!==U)})},"\u2715")),G.kind==="sendClientScriptSignal"?e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D1\u9001\u76EE\u6807"),e("select",{value:Ee(G.target),onChange:b=>Y(D,U,{target:b.target.value})},de.map(b=>e("option",{key:b,value:b},te[b])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),e("input",{type:"text",value:G.signalName,placeholder:"GoldChanged",onChange:b=>Y(D,U,{signalName:b.target.value})})),e(Ht,{params:G.params,onChange:b=>Y(D,U,{params:b})})):e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),e("select",{value:re(G.entityType),onChange:b=>Y(D,U,{entityType:b.target.value})},u.map(b=>e("option",{key:b,value:b},te[b])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),e("input",{type:"text",value:G.name,placeholder:"Gold",onChange:b=>Y(D,U,{name:b.target.value})})),e("div",{className:"wide"},e(ct,{label:"\u53D8\u91CF\u503C",value:G.value,onChange:b=>Y(D,U,{value:b})}))))),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:()=>W(D,{actions:(O.actions||[]).concat([ve("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("button",{className:"qxsim-action",onClick:()=>W(D,{actions:(O.actions||[]).concat([ve("sendClientScriptSignal")])})},"\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))))):e("div",{className:"qxsim-logic-empty"},"\u8FD8\u6CA1\u6709\u76D1\u542C\u89C4\u5219\u3002\u8BD5\u73A9\u65F6\u5BA2\u6237\u7AEF SendSignal \u4E0D\u4F1A\u81EA\u52A8\u6539\u53D8\u91CF\u6216\u56DE\u4F20\u4FE1\u53F7\u3002"),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:z},"\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219")),e("div",{className:"qxsim-script-footer",style:{marginTop:16}},e("span",null,l?.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":d||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),e("span",{className:"spacer"}))))}function Vt({inspector:a,autofill:l,onSave:r}){let[s,d]=t.useState(String(a.guid??"")),[p,w]=t.useState(!1),[m,z]=t.useState(!1),[W,Y]=t.useState("");t.useEffect(()=>{d(String(a.guid??"")),w(!1),Y("")},[a.id,a.guid]);let ie=l?.count>1&&l.selectedOffset>=0,O=/^[0-9]+$/.test(s.trim())?Number(s)-(l?.selectedOffset||0):NaN,D=O+(l?.count||0)-1,G=Number.isSafeInteger(O)&&O>=1&&D<=2147483647;async function U(b){b.preventDefault();let ne=s.trim();if(!/^[0-9]+$/.test(ne)||Number(ne)<1||Number(ne)>2147483647){Y("\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002");return}z(!0),Y("");try{await r(a.id,Number(ne),p&&ie)}catch(T){Y(T?.message||String(T))}finally{z(!1)}}return e("form",{onSubmit:U,style:{marginTop:8}},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15"),e("div",{style:{display:"flex",gap:6}},e("input",{type:"text",inputMode:"numeric","aria-label":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15",value:s,disabled:m,onChange:b=>{d(b.target.value),Y("")},onKeyDown:b=>{b.key==="Escape"&&(d(String(a.guid)),Y(""))}}),e("button",{type:"submit",className:"qxsim-action",disabled:m||!p&&s.trim()===String(a.guid)||p&&!G},m?"\u4FDD\u5B58\u4E2D":"\u4FEE\u6539"))),ie?e("label",{style:{display:"flex",gap:6,alignItems:"center",margin:"6px 0"}},e("input",{type:"checkbox",checked:p,disabled:m,onChange:b=>w(b.target.checked)}),"\u81EA\u52A8\u4FEE\u6539\u5176\u4ED6\u5BA2\u6237\u7AEF\u7D22\u5F15\u503C"):null,p&&ie?e("div",{className:"qxsim-note","aria-label":"\u81EA\u52A8\u586B\u5145\u7D22\u5F15\u9884\u89C8"},`\u4EE5\u5F53\u524D\u63A7\u4EF6\u4E3A\u57FA\u51C6\uFF0C\u6309 GIA \u5BFC\u5165\u987A\u5E8F\u586B\u5145 ${l.count} \u4E2A\u63A7\u4EF6\uFF08${l.templateCount} \u4E2A\u6A21\u677F\u53CA\u5176\u5B50\u63A7\u4EF6\uFF09\u3002`,e("div",null,G?`\u7D22\u5F15\u8303\u56F4\uFF1A${O}\u2013${D}`:"\u7D22\u5F15\u8303\u56F4\u8D85\u51FA\u6709\u6548\u8303\u56F4\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u3002"),e("div",null,"\u9002\u7528\u4E8E\u6574\u6279\u5BFC\u5165\u540E\u672A\u589E\u5220\u3001\u91CD\u6392\u7684\u6A21\u677F\u3002\u670D\u52A1\u7AEF\u754C\u9762\u548C\u811A\u672C\u7D22\u5F15\u9700\u5355\u72EC\u586B\u5199\u3002")):null,W?e("div",{role:"alert",className:"qxsim-note"},W):null,e("div",{className:"qxsim-muted",style:{lineHeight:1.5}},"\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u4ECE\u9875\u9762\u4E0A\u65B9\u7EE7\u7EED\u540C\u6B65 Lua\u3002"))}function Yt({snap:a,addScriptMounted:l,mountScriptTo:r,unmountScript:s,openScript:d}){let p=(a.scripts||[]).filter(m=>m.controlId===a.selectedId),w=(a.scripts||[]).filter(m=>m.controlId!==a.selectedId);return e(t.Fragment,null,e(ee,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},p.length?p.map(m=>e("div",{key:m.id,className:"qxsim-script-list-row"},e("button",{className:"qxsim-script-asset",onClick:()=>d(m.id)},e("strong",null,m.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,`\u811A\u672C ${m.id}`)),e("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>s(m.id)},"\u292B"))):e("div",{className:"qxsim-note"},"\u8BE5\u63A7\u4EF6\u5C1A\u672A\u6302\u8F7D\u811A\u672C\u3002\u811A\u672C\u6302\u8F7D\u5230\u5BA2\u6237\u7AEF\u63A7\u4EF6\u540E\u624D\u4F1A\u5728\u8BD5\u73A9\u65F6\u751F\u6548\u3002")),e(ee,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},w.length?e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),e("select",{value:"","aria-label":"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6",onChange:m=>{let z=m.target.value;m.target.value="",z&&r(z)}},e("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),w.map(m=>e("option",{key:m.id,value:m.id},`${m.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${m.id}${m.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${m.assetLabel} \xB7 ${m.controlName}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09`:"\uFF08\u672A\u6302\u8F7D\uFF09"}`)))):e("div",{className:"qxsim-note"},"\u5B58\u6863\u5185\u8FD8\u6CA1\u6709\u5176\u4ED6\u811A\u672C\uFF0C\u53EF\u70B9\u51FB\u4E0B\u65B9\u6309\u94AE\u65B0\u5EFA\u3002"),e("div",{className:"qxsim-script-actions",style:{marginTop:8}},e("button",{onClick:()=>l(a.selectedId)},"\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6"))))}function Xt(a,l){let r=null,s=null;function d(p,w){p.id===l&&(r=p,s=w);for(let m of p.children||[])d(m,p)}if(d(a,null),r?.kind==="container")return r.id;if(r?.kind==="server-container")return r.children?.find(p=>p.kind==="container")?.id||r.id;for(;s&&s.kind!=="container";){let w=function(m){for(let z of m.children||[])z===s&&(p=m),w(z)},p=null;w(a),s=p}return s?.id||a.children?.find(p=>p.kind==="container")?.id}function Rt(a,l){let r=null;function s(d){d.id===l&&(r=d);for(let p of d.children||[])s(p)}return s(a),r&&r.kind!=="server-container"?r.id:Xt(a,l)}function Jt(a,l,r,s){let d=a,p=a.kind,w=p==="textbox"||p==="textwindow",m=d.renderLeft??d.left,z=d.renderBottom??d.bottom,W=d.renderWidth??d.width,Y=d.renderHeight??d.height,ie=d.renderRotationZ??a.rotationZ??0,O={left:`${m/r*100}%`,bottom:`${z/s*100}%`,width:`${W/r*100}%`,height:`${Y/s*100}%`,"--rotation":`${-Number(ie)}deg`,fontSize:Math.max(8,Math.min(40,Number(a.fontSize||12))),color:w?S(a.fontColor,4294967295):"#fff"};Object.assign(O,jt(d,r,s)),p==="image"?Object.assign(O,H(a.primitive,S(a.imageColor,4294967295))):w?(O.background=S(a.bgColor,16777215),O.justifyContent=a.horizontalAlignment==="Right"?"flex-end":a.horizontalAlignment==="Middle"?"center":"flex-start",O.alignItems=a.verticalAlignment==="Bottom"?"flex-end":a.verticalAlignment==="Middle"?"center":"flex-start",O.textShadow=a.enableOutline===!1?"none":`0 0 2px ${S(a.outlineColor,4278190080)}`):p==="container"&&(O.background="transparent");let D=a.id===l.selectedId,G=p==="image"&&a.primitive==="sprite"?e(P,{key:ue(a.imageId,a.imageSource),item:a}):w?a.text||"":p==="image"&&a.primitive==="missing"?e("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${a.imageId||""}`):p!=="container"&&p!=="image"?e("span",{className:"qxsim-box-label"},a.name||L[p]?.[1]||p):null;return e("div",{key:a.id,className:`qxsim-box ${p}${D?" selected":""}${a.instantiated?" dynamic":""}${a.pressed?" pressed":""}`,style:O},G,D&&p!=="container"?["tl","tr","bl","br"].map(U=>e("i",{key:U,className:`qxsim-handle ${U}`})):null)}function Kt({sessionId:a}){let l=_(),[r,s]=t.useState(null),d=t.useRef(null),p=t.useRef(Promise.resolve()),[w,m]=t.useState(""),z=N({sessionId:a,api:g,playUrl:f,onError:m}),[W,Y]=t.useState(null),[ie,O]=t.useState(!1),[D,G]=t.useState(!1),[U,b]=t.useState(""),ne=t.useRef(null),[T,pe]=t.useState([]),[ye,dt]=t.useState([]),[xe,Zt]=t.useState("ui"),[We,Ve]=t.useState("base"),[Ye,Qt]=t.useState("fit"),[Xe,ea]=t.useState({}),[Fe,Re]=t.useState(""),[ke,Je]=t.useState("template"),[Ke,Oe]=t.useState(""),[Ze,Pe]=t.useState(null),[pt,Qe]=t.useState({version:1,rules:[],dirty:!1}),ut=t.useRef(null),[De,ta]=t.useState({width:0,height:0});t.useEffect(()=>{let i=ut.current;if(!i||typeof ResizeObserver>"u")return;let c=new ResizeObserver(x=>{let k=x[0]?.contentRect;k&&k.width>0&&ta({width:k.width,height:k.height})});return c.observe(i),()=>c.disconnect()},[r?.canvas?.id]);function Ne(i,{keepLogicDraft:c=!0}={}){return d.current=i,s(i),i?.scripts&&Oe(x=>i.scripts.some(k=>k.id===x)?x:i.scripts[0]?.id||""),Qe(x=>c&&x?.dirty?x:ze(i?.serverLogic)),i}let je=t.useCallback(async()=>{try{m(""),Ne(await g(a,"get"),{keepLogicDraft:!1})}catch(i){m(i?.message||String(i))}},[a]),Be=t.useCallback(async()=>{try{let i=await g(a,"archives");dt(i?.archives||[])}catch{dt([])}},[a]);t.useEffect(()=>{je(),Be()},[je,Be]);function J(i,c=""){let x=async()=>{let k=d.current;if(!k)throw new Error("editor is not ready");try{if(c&&k.asset?.type!==c)throw new Error("\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15");let se=await g(a,"patch",{op:{...typeof i=="function"?i(k):i,expectedRevision:k.version}});return m(""),Ne(se)}catch(se){throw m(se?.message||String(se)),/revision conflict/.test(String(se?.message||se))&&await je(),se}};return p.current=p.current.then(x,x),p.current}async function aa(i,c,x,k=!1){await fe(),await J({op:"setControlGuid",id:i,guid:c,autoFillClientGuids:k},x),b("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u9009\u62E9\u4E0A\u65B9\u300C\u5168\u91CF\u66FF\u6362\u811A\u672C\u7D22\u5F15\u300D\u6216\u300C\u590D\u5236\u63D0\u793A\u8BCD\u7ED9 AI\u300D\u3002")}async function ia(){await fe(),await qe(),await p.current;let i=d.current;if(!i.storage?.path)throw o&&Y(`${i.save?.name||"project"}.save.json`),new Error("\u8BF7\u5148\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\uFF0C\u518D\u590D\u5236\u63D0\u793A\u8BCD\uFF1BAI \u9700\u8981\u8BFB\u53D6\u8FD9\u6B21\u5B9E\u9645\u4FEE\u6539\u7684\u5B58\u6863\u3002");await g(a,"save",{path:i.storage.path,expectedRevision:i.version});let c=i.controlGuidChanges||[],x=["\u8BF7\u5B8C\u6210\u6A21\u62DF\u5668\u63A7\u4EF6\u7D22\u5F15\u4E0E Lua \u5F15\u7528\u540C\u6B65\u3002",`\u5DE5\u4F5C\u533A\uFF1A${i.workspace?.path||"\u8BF7\u5148\u6838\u5BF9\u5DE5\u4F5C\u533A"}`,`\u6700\u65B0\u5B8C\u6574\u5B58\u6863\uFF1A${i.storage.path}\uFF08\u7F16\u8F91\u5668\u5DF2\u4FDD\u5B58\uFF09`,`Lua \u6587\u4EF6\uFF1A${(i.scripts||[]).map(k=>k.path||`\u5185\u8054\u811A\u672C ${k.id}`).join("\u3001")||"\u6682\u65E0"}`,"\u5148\u4ECE\u4E0A\u8FF0\u6587\u4EF6\u91CD\u65B0\u52A0\u8F7D\u6700\u65B0\u5B58\u6863\uFF0C\u4E0D\u8981\u4F7F\u7528\u53E6\u4E00\u4E2A MCP/Web \u8FDB\u7A0B\u91CC\u7684\u65E7\u5DE5\u7A0B\u3002",`\u83B7\u53D6\u65B0\u65E7\u6620\u5C04\uFF1A\u8BFB\u53D6\u8BE5 JSON \u9876\u5C42\u7684 controlGuidChanges \u6570\u7EC4\uFF0C\u5F53\u524D\u5171 ${c.length} \u6761\uFF0C\u5FC5\u987B\u8BFB\u53D6\u5168\u90E8\u8BB0\u5F55\u3002oldGuid \u662F\u65E7\u7D22\u5F15\uFF0CnewGuid \u662F\u65B0\u7D22\u5F15\uFF1BcontrolAsset + controlId \u6807\u8BC6\u63A7\u4EF6\uFF0CcontrolName \u662F\u540D\u79F0\uFF0Cid \u662F\u8BB0\u5F55\u7F16\u53F7\uFF0CbatchId \u662F\u6279\u6B21\u3002`,"\u83B7\u53D6\u811A\u672C\uFF1A\u8BFB\u53D6 assets.scripts \u6570\u7EC4\uFF1B\u6BCF\u9879\u7684 source \u662F\u5B58\u6863\u5185\u6E90\u7801\uFF0Cpath \u662F\u811A\u672C\u6587\u4EF6\u8DEF\u5F84\uFF08\u76F8\u5BF9\u8DEF\u5F84\u4EE5\u5DE5\u4F5C\u533A\u4E3A\u57FA\u51C6\uFF09\u3002","\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u548C\u751F\u6210\u5668\u6620\u5C04\uFF0C\u907F\u514D\u91CD\u5EFA\u540E\u8986\u76D6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002","\u540C\u4E00 batchId \u662F\u540C\u65F6\u6620\u5C04\uFF0C\u987B\u6309\u539F\u503C\u4E00\u6B21\u6027\u5E94\u7528\uFF0C\u4E0D\u80FD\u9010\u6761\u66FF\u6362\u5BFC\u81F4\u7D22\u5F15\u4E32\u6539\u3002","\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u4EC5\u5728\u5F15\u7528\u5168\u90E8\u540C\u6B65\u6216\u660E\u786E\u6CA1\u6709\u5F15\u7528\u540E\uFF0C\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002\u672A\u5224\u65AD\u7684\u8BB0\u5F55\u7EE7\u7EED\u4FDD\u7559\u3002","\u5B8C\u6210\u540E\u544A\u77E5\u7528\u6237\u91CD\u65B0\u8F7D\u5165\u8FD9\u4E2A\u5B58\u6863\uFF0C\u518D\u901A\u8FC7\u300CLua \u811A\u672C \u2192 \u5B9E\u673A\u811A\u672C\u540C\u6B65\u300D\u66F4\u65B0\u6E38\u620F\u6587\u4EF6\uFF1B\u4E0D\u8981\u91CD\u65B0\u5BFC\u5165 GIA\uFF0C\u4E5F\u4E0D\u8981\u64C5\u81EA\u590D\u5236\u5230\u6E38\u620F\u76EE\u5F55\u3002"].join(`
28
+ `);try{await navigator.clipboard.writeText(x),b("\u5B58\u6863\u5DF2\u4FDD\u5B58\uFF0C\u63D0\u793A\u8BCD\u5DF2\u590D\u5236\uFF0C\u5305\u542B\u5B8C\u6574\u6620\u5C04\u7684\u8BFB\u53D6\u65B9\u5F0F\u3002\u7C98\u8D34\u7ED9 AI\uFF1B\u5904\u7406\u540E\u91CD\u65B0\u8F7D\u5165\u5B58\u6863\u3002")}catch{b("\u5B58\u6863\u5DF2\u4FDD\u5B58\u3002\u526A\u8D34\u677F\u4E0D\u53EF\u7528\uFF0C\u53EF\u4ECE\u4E0B\u65B9\u6587\u672C\u6846\u624B\u52A8\u590D\u5236\u63D0\u793A\u8BCD\u3002")}return x}let na=(i,c)=>void J(x=>({op:"set",key:i,value:typeof c=="function"?c(x.inspector.fields.find(k=>k.key===i)?.value):c})).catch(()=>{});async function ra(){let{imageId:i,imageSource:c}=d.current?.boxes?.find(x=>x.id===d.current.selectedId)||{};if(Ie(i,c)){G(!0);try{await g(a,"image-refresh",{imageId:i,imageSource:c}),It(i,c),b(`\u56FE\u7247 ${i} \u5DF2\u91CD\u65B0\u4E0B\u8F7D\uFF1B\u540C\u6E90\u8BD5\u73A9\u9875\u4F1A\u540C\u6B65\u5237\u65B0\u3002`)}catch(x){m(x.message)}finally{G(!1)}}}async function sa(i,c){let x=d.current?.inspector?.id;if(x)try{let k=await J({op:"add",kind:"image",parentId:x,name:`${c}\u56FE\u7247`});await J({op:"set",id:x,key:i,value:k.selectedId}),b(`${c}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}t.useEffect(()=>{let i=r?.scripts?.find(c=>c.id===Ke);Pe(c=>c&&i&&c.id===i.id&&c.dirty?c:i?{id:i.id,path:i.path,source:i.source,controlId:i.controlId,controlAsset:i.controlAsset,dirty:!1}:null)},[r,Ke]);function oa(i){Pe(c=>c&&{...c,...i,dirty:!0})}async function fe(){let i=Ze;!i||!i.dirty||(await J({op:"updateScript",id:i.id,path:i.path,source:i.source,controlId:i.controlId,controlAsset:i.controlAsset}),Pe(c=>c&&c.id===i.id?{...c,dirty:!1}:c))}function mt(){fe().then(()=>b("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function qe({silent:i=!1}={}){let c=pt;if(!c||!c.dirty)return;let x=_t(c);if(x.length){let se=x[0];throw i||m(se),new Error(se)}let k=await J({op:"setServerLogic",logic:Gt(c)});Qe(ze(k.serverLogic)),b("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function la(){qe({silent:!0}).catch(()=>{})}function Ce(i){mt(),la(),Zt(i)}async function xt(i={}){let c=await J({op:"addScript",...i}),x=c.scripts?.[c.scripts.length-1];return x&&Oe(x.id),b(i.controlId?"\u5DF2\u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6":"\u5DF2\u65B0\u5EFA\u811A\u672C\uFF0C\u53EF\u7F16\u8F91\u8DEF\u5F84\u3001\u6E90\u7801\u548C\u6302\u8F7D\u76EE\u6807"),x}function ca(i){Ze?.id===i&&Pe(null),J({op:"removeScript",id:i}).then(()=>b("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function da(i){J({op:"updateScript",id:i,controlId:""}).then(()=>b("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function pa(i){let c=d.current?.selectedId||"",x=d.current?.asset?.type||"";c&&(Pe(k=>k&&k.id===i?{...k,controlId:c,controlAsset:x}:k),J({op:"updateScript",id:i,controlId:c,controlAsset:x}).then(()=>b("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function ft(i){if(d.current?.asset?.type!==i)try{let c=await J({op:"selectAsset",assetType:i});Re(""),Je(i==="client-control-template"?"template":"child"),b(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${c.asset.label}`)}catch{}}function ua(i,c){let x=d.current;if(!x)return;let k=x.asset?.type==="client-control-template"&&ke==="template",se=k?{op:"addTemplate",kind:i,name:`${c}\u6A21\u677F`}:{op:"add",kind:i,parentId:Rt(x.root,x.selectedId),name:c};J(se).then(()=>b(k?`\u5DF2\u65B0\u589E${c}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${c}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function Ge(i,c=""){try{await p.current.catch(()=>{}),await fe(),await qe();let x=await g(a,"export",{format:i,assetType:c});if(pe([...new Set([...x.warnings||[],...(x.files||[]).flatMap(k=>k.warnings||[])])]),Array.isArray(x?.files)&&x.files.length){for(let k of x.files)j(k);m(""),b(`\u5DF2\u5BFC\u51FA ${x.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${x.files.map(k=>k.filename).join("\u3001")}\uFF09\uFF1B\u82E5\u6D4F\u89C8\u5668\u62E6\u622A\u591A\u6587\u4EF6\u4E0B\u8F7D\uFF0C\u8BF7\u5141\u8BB8\u540E\u91CD\u8BD5\u3002`);return}j(x),m(""),b(x.warnings?.length?`\u5DF2\u5BFC\u51FA ${x.filename}\uFF1B\u8BF7\u67E5\u770B\u4E0A\u65B9\u5BFC\u51FA\u8BF4\u660E\u3002`:`\u5DF2\u5BFC\u51FA ${x.filename}`)}catch(x){m(x?.message||String(x))}}async function gt(i){if(i)try{await p.current.catch(()=>{});let c=await g(a,"load-archive",{path:i});Ne(c.snapshot,{keepLogicDraft:!1}),m(""),b(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${i}`),pe([])}catch(c){m(c?.message||String(c))}}async function ma(i){if(!i)return;let c=i.name.toLowerCase().endsWith(".gia")?"gia":i.name.toLowerCase().endsWith(".json")?"json":i.name.toLowerCase().endsWith(".lua")?"lua":"";if(!c){m("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await p.current.catch(()=>{});let x=await g(a,"import",{format:c,filename:i.name,data:await M(i)});Ne(x.snapshot,{keepLogicDraft:!1}),m(""),b([`\u5DF2\u5BFC\u5165 ${i.name}`,...x.warnings||[]].join(`
29
+ `)),pe([])}catch(x){m(x?.message||String(x))}finally{ne.current&&(ne.current.value="")}}function xa(){z.open(async()=>{await p.current.catch(()=>{}),await fe(),await qe(),await p.current,m("")})}async function fa(){if(!(ie||!W?.trim())){O(!0);try{await fe(),await qe(),await p.current.catch(()=>{});let i=d.current,c=await g(a,"save",{path:W.trim(),expectedRevision:i.version});Ne(await g(a,"get")),b(`\u5DF2\u4FDD\u5B58\u5230 ${c.path}`),m(""),Y(null),Be()}catch(i){m(i?.message||String(i))}finally{O(!1)}}}if(t.useEffect(()=>{r?.inspector?.kind==="server-container"&&Ve("base")},[r?.inspector?.kind]),!r)return e("div",{className:"qxsim","data-theme":l,"data-qxsim-session-id":a},e("div",{className:"qxsim-status error"},w||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let we=r.canvas.width,$e=r.canvas.height,et=De.width>0&&De.height>0?Math.min((De.width-44)/we,(De.height-54)/$e):NaN,ga=Number.isFinite(et)&&et>0?Math.min(2,Math.round(et*1e3)/1e3):.5,ha=Ye==="fit"?ga:Number(Ye)||.5,ht=le(we,$e),ba=(r.canvas.presets||[]).filter(i=>i.platform===r.canvas.platform);function va(i){if(!r||r.canvas.platform===i)return;let c=(r.canvas.presets||[]).filter(k=>k.platform===i);if(!c.length)return;let x=c.find(k=>ae(k)===ht)||c[0];J({op:"setCanvas",canvasId:x.id}).then(()=>b(`\u5DF2\u5207\u6362\u5230${x.label}`)).catch(()=>{})}let Z=r.asset?.type==="client-control-template",tt=!!(r.inspector&&r.inspector.kind!=="server-container"),at=new Set;for(let i of r.tree||[])(Xe[i.id]||(i.ancestorIds||[]).some(c=>Xe[c]))&&at.add(i.id);let ya=(r.boxes||[]).filter(i=>i.kind!=="server-container"&&i.visible&&!at.has(i.id));function qa(i,c){i.stopPropagation(),ea(x=>{let k={...x};return k[c]?delete k[c]:k[c]=!0,k})}let bt=r.tree.filter(i=>!Fe.trim()||`${i.name} ${i.label}`.toLowerCase().includes(Fe.trim().toLowerCase())),X=r.tree.find(i=>i.id===r.selectedId),wa=Z&&X?r.tree.filter(i=>i.id!==X.id&&!(i.ancestorIds||[]).includes(X.id)):[],Sa=X?.parentId||r.root.id;return e("div",{className:"qxsim","data-theme":l,"data-qxsim-session-id":a},z.overlay,xe==="script"&&w?e("div",{className:"qxsim-status error",role:"alert"},w):null,W!==null?e("div",{className:"qxsim-save-overlay"},e("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A",onSubmit:i=>{i.preventDefault(),fa()}},e("h2",null,"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),e("label",null,"\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84",e("input",{autoFocus:!0,required:!0,value:W,disabled:ie,onChange:i=>Y(i.target.value)})),w?e("div",{role:"alert"},w):null,e("footer",null,e("button",{className:"qxsim-action",type:"button",disabled:ie,onClick:()=>Y(null)},"\u53D6\u6D88"),e("button",{className:"qxsim-action primary",type:"submit",disabled:ie||!W.trim()},ie?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58")))):null,e("header",{className:"qxsim-toolbar"},e("div",{className:"qxsim-brand",title:`${r.workspace?.bound?r.workspace.path:"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"}
30
+ ${r.meta?.sourceFile||"\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6"}`},e("span",{className:"qxsim-appicon"},"UI"),e("span",{className:"qxsim-brand-text"},e("strong",null,`\u5B58\u6863\uFF1A${r.save?.name||r.meta?.name||"\u672A\u547D\u540D\u5B58\u6863"}`),e("span",null,`\u5DE5\u4F5C\u533A\uFF1A${r.workspace?.bound?r.workspace.name:"\u672A\u7ED1\u5B9A"} \xB7 \u5F53\u524D\u8D44\u4EA7\uFF1A${r.asset?.label||"UI\u63A7\u4EF6"}`))),e("div",{className:"qxsim-toolbar-center"},xe==="ui"?e(t.Fragment,null,e("div",{className:"qxsim-device-switch",role:"group","aria-label":"\u76EE\u6807\u8BBE\u5907"},K.map(i=>e("button",{key:i.key,className:r.canvas.platform===i.key?"active":"",title:i.title,onClick:()=>va(i.key)},i.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:r.canvasId,onChange:i=>void J({op:"setCanvas",canvasId:i.target.value}).catch(()=>{})},ba.map(i=>e("option",{key:i.id,value:i.id},`${ae(i)} \xB7 ${i.width}\xD7${i.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:Ye,onChange:i=>Qt(i.target.value)},[["fit","\u9002\u5E94"],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([i,c])=>e("option",{key:i,value:i},c)))):e("span",{className:"qxsim-muted"},xe==="logic"?"\u670D\u52A1\u7AEF\u903B\u8F91\uFF1A\u76D1\u542C\u4FE1\u53F7 / \u81EA\u5B9A\u4E49\u53D8\u91CF / \u73A9\u5BB61-8 \u56DE\u4F20":"Lua \u811A\u672C\u8D44\u4EA7\u7F16\u8F91")),e("div",{className:"qxsim-actions"},o?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{m(""),Y(d.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:ne,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:i=>void ma(i.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void Be(),onChange:i=>{let c=i.target.value;i.target.value="",c&&gt(c)}},e("option",{value:"",disabled:!0},r.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...ye.length?ye.map(i=>e("option",{key:i.path,value:i.path},`${i.name} \xB7 ${i.path}`)):[e("option",{value:"",disabled:!0},r.workspace?.bound?"\u672A\u53D1\u73B0 qxqy-simulator-save":"\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A")]),e("button",{className:"qxsim-action",title:"\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua",onClick:()=>ne.current?.click()},"\u21E7 \u5BFC\u5165"),e("select",{className:"qxsim-control zoom","aria-label":"\u5BFC\u51FA\u683C\u5F0F",defaultValue:"",onChange:i=>{let[c,x=""]=i.target.value.split("|");i.target.value="",c&&Ge(c,x)}},e("option",{value:"",disabled:!0},"\u21E9 \u5BFC\u51FA"),e("option",{value:"save"},"\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09"),e("option",{value:"save-gia"},"\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09"),e("option",{value:"gia-combined"},"\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09"),e("optgroup",{label:"\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09"},e("option",{value:"json"},"\u5F53\u524D\u754C\u9762 Authoring JSON"),e("option",{value:"gia"},"\u5F53\u524D\u754C\u9762 GIA")),e("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F"},e("option",{value:"json|server-control-template"},"Authoring JSON"),e("option",{value:"gia|server-control-template"},"GIA")),e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF08\u4EC5\u5F53\u5DE6\u680F\u5207\u5230\u300CUI\u63A7\u4EF6-\u5BA2\u6237\u7AEF\u300D\u65F6\u624D\u662F\u9875\u9762\u5185\u5BB9\uFF09"},e("option",{value:"json|client-control-template"},"Authoring JSON"),e("option",{value:"gia|client-control-template"},"GIA")),e("optgroup",{label:"Lua \u811A\u672C"},e("option",{value:"scripts"},"\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09"),e("option",{value:"scripts-gia"},"\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09")))),e("button",{className:"qxsim-action primary",title:"\u6253\u5F00\u8BD5\u73A9\uFF1B\u65B0\u7A97\u53E3\u4E0D\u53EF\u7528\u65F6\u5728\u5E94\u7528\u5185\u8BD5\u73A9",disabled:z.opening,onClick:xa},z.opening?"\u6B63\u5728\u51C6\u5907\u2026":"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:je},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:xe==="ui"?"active":"",onClick:()=>Ce("ui")},"UI \u7F16\u8F91"),e("button",{className:xe==="script"?"active":"",onClick:()=>Ce("script")},"Lua \u811A\u672C"),e("button",{className:xe==="logic"?"active":"",onClick:()=>Ce("logic")},"\u670D\u52A1\u7AEF\u903B\u8F91"),e("span",{className:"save-summary"},"\u4E00\u4E2A\u5B58\u6863 \xB7 \u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F + \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F + Lua \u811A\u672C + \u670D\u52A1\u7AEF\u903B\u8F91")),xe==="script"?e(h,{snap:r,patch:J,request:(i,c)=>g(a,i,c),refresh:async()=>Ne(await g(a,"get")),prepare:async()=>(await p.current,await fe(),await qe(),d.current)}):null,e(y,{snap:r,patch:J,prepare:fe,copy:ia,onScripts:()=>Ce("script"),onError:m,reloadArchive:()=>gt(d.current.storage?.path)}),T.length?e("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},e("summary",{style:{cursor:"pointer"}},`\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08${T.length} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09`),e("button",{className:"qxsim-action",onClick:()=>pe([])},"\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E"),e("ul",null,T.map((i,c)=>e("li",{key:c},i)))):null,xe==="ui"?e("div",{className:"qxsim-main"},e("aside",{className:"qxsim-tree"},e("div",{className:"qxsim-asset-switch","aria-label":"\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B"},e("button",{className:Z?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void ft("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:Z?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void ft("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},Z?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},Z?`${r.asset.templateCount} \u4E2A\u6A21\u677F \xB7 ${r.tree.length} \u4E2A\u63A7\u4EF6`:`${r.tree.length} \u4E2A\u8282\u70B9`)),e("label",{className:"qxsim-search"},"\u2315",e("input",{value:Fe,placeholder:Z?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:i=>Re(i.target.value)}),Fe?e("button",{onClick:()=>Re("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},bt.length?bt.map(i=>{let c=L[i.kind]||["\u25C7",i.label],x=at.has(i.id),k=!!Xe[i.id];return e("div",{key:i.id,className:`qxsim-row${Z&&i.depth===0?" template-root":""}${i.id===r.selectedId?" active":""}${x?" canvas-hidden":""}`,style:{paddingLeft:8+i.depth*18,"--depth":i.depth},title:`${c[1]} \xB7 ${i.name} \xB7 GUID ${i.guid??i.id}`,onClick:()=>void J({op:"select",id:i.id}).catch(()=>{})},e("span",{className:"qxsim-chevron"},i.childCount?"\u25BC":""),e("span",{className:"qxsim-kind"},c[0]),e("span",{className:"qxsim-row-label"},i.name),e("span",{className:"qxsim-row-end"},Z&&i.depth===0?e(t.Fragment,null,e("span",{className:"qxsim-template-tag"},"\u6A21\u677F"),e("span",{className:"qxsim-template-id"},`#${i.guid??i.id}`)):i.incomplete?e("span",{className:"qxsim-incomplete"},"\u6682\u4E0D\u652F\u6301"):null,e("button",{className:`qxsim-eye${k?" off":""}`,type:"button",title:k?"\u5728\u753B\u5E03\u4E0A\u663E\u793A\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09":"\u5728\u753B\u5E03\u4E0A\u9690\u85CF\uFF08\u4E0D\u5F71\u54CD\u63A7\u4EF6\u521D\u59CB\u53EF\u89C1\u6027\uFF09","aria-label":`${i.name}\u753B\u5E03\u53EF\u89C1\u6027`,"aria-pressed":!k,onClick:se=>qa(se,i.id)},k?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},Z&&X?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,X.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:Sa,onChange:i=>void J({op:"reparent",id:X.id,parentId:i.target.value}).then(()=>b(i.target.value===r.root.id?"\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F":"\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7")).catch(()=>{})},e("option",{value:r.root.id},"\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09"),wa.map(i=>e("option",{key:i.id,value:i.id},`${"\u3000".repeat(i.depth)}${i.name}`))),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB",disabled:X.siblingIndex<=0,onClick:()=>void J({op:"moveSibling",id:X.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:X.siblingIndex>=X.siblingCount-1,onClick:()=>void J({op:"moveSibling",id:X.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},X.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${X.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:Z&&ke==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${X?X.name:"\u5F53\u524D\u63A7\u4EF6"}`},Z&&ke==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${X?`\u201C${X.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),Z?e("span",{className:"qxsim-add-mode"},e("button",{className:ke==="template"?"active":"",onClick:()=>Je("template")},"\u9876\u5C42"),e("button",{className:ke==="child"?"active":"",onClick:()=>Je("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},E.filter(([i])=>Z||i!=="container").map(([i,c])=>e("button",{key:i,title:`${Z&&ke==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${c}`,onClick:()=>ua(i,c)},`\uFF0B ${c}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:ut},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(we*ha))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,Z?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},r.canvas.platform),e("span",null,`${ht} \xB7 ${we}\xD7${$e} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${we} / ${$e}`},onClick:i=>{let c=i.currentTarget.getBoundingClientRect();J({op:"pick",x:(i.clientX-c.left)*we/c.width,y:(c.bottom-i.clientY)*$e/c.height}).catch(()=>{})}},ya.map(i=>Jt(i,r,we,$e))))),w?e("div",{className:"qxsim-status error"},"\u26A0 ",w):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${r.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,U||(X?`\u5F53\u524D\uFF1A${X.name}`:"")),e("span",{className:"spacer"}),e("span",null,Z?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"),e("a",{className:"qxsim-community",href:"https://space.bilibili.com/23358791",target:"_blank",rel:"noreferrer",title:"\u4F5C\u8005 B\u7AD9\u4E3B\u9875"},"\u4F5C\u8005B\u7AD9"),e("a",{className:"qxsim-community",href:"https://qm.qq.com/q/DpuMvxAfhm",target:"_blank",rel:"noreferrer",title:"\u52A0\u5165 QQ \u7FA4 1007538100"},"QQ\u7FA4 1007538100"))),e("aside",{className:"qxsim-inspector"},r.inspector?e(t.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(L[r.inspector.kind]||["\u25C7"])[0]),e("strong",null,r.inspector.label),Z&&X?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},Z&&X?.depth===0?"\u6A21\u677F\u7D22\u5F15 ":"\u63A7\u4EF6 GUID ",e("code",null,r.inspector.guid??r.inspector.id)," \xB7 ",X?.name||"\u8282\u70B9"),r.inspector.kind!=="server-container"?e(Vt,{key:`${r.asset.type}:${r.inspector.id}`,inspector:r.inspector,autofill:r.clientGuidAutofill,onSave:(i,c,x)=>aa(i,c,r.asset.type,x)}):null),e("div",{className:"qxsim-tabs",style:tt?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:We==="base"?"active":"",onClick:()=>Ve("base")},"\u57FA\u7840\u5C5E\u6027"),tt?e("button",{className:We==="script"?"active":"",onClick:()=>Ve("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},tt&&We==="script"?e(Yt,{snap:r,addScriptMounted:i=>void xt({controlId:i,controlAsset:r.asset?.type}).then(()=>Ce("script")),mountScriptTo:pa,unmountScript:da,openScript:i=>{Oe(i),Ce("script")}}):e(t.Fragment,null,e(me,{key:`${r.asset.type}:${r.inspector.id}`,inspector:r.inspector,commit:na,createStateChild:sa}),r.boxes?.some(i=>i.id===r.selectedId&&Ie(i.imageId,i.imageSource))?e("div",{className:"qxsim-section-body"},e("button",{className:"qxsim-action",disabled:D,onClick:ra},D?"\u6B63\u5728\u5237\u65B0\u7D20\u6750\u2026":"\u21BB \u91CD\u65B0\u4E0B\u8F7D\u6B64\u7D20\u6750"),e("p",{className:"qxsim-muted"},"\u767D\u540D\u5355\u56FE\u7247\u6309\u9700\u7F13\u5B58\uFF1B\u5237\u65B0\u4F1A\u91CD\u65B0\u8BBF\u95EE\u7D20\u6750\u6E90\u3002")):null)),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void J({op:"remove"}).catch(()=>{})},Z&&X?.depth===0?"\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F":"\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6"))):e("div",{className:"qxsim-empty"},"\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6"))):xe==="script"?e(be,{snap:r,selectedScriptId:Ke,selectScript:i=>{mt(),Oe(i)},draft:Ze,updateDraft:oa,saveScript:()=>void fe().then(()=>b("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void xt(),removeScript:ca,exportLua:i=>void Ge("lua",i),exportScripts:()=>void Ge("scripts"),exportScriptsGia:()=>void Ge("scripts-gia"),notice:U}):e(Wt,{snap:r,draft:pt,setDraft:Qe,saveLogic:()=>void qe().catch(()=>{}),notice:U,error:w}))}return{SimulatorView:Kt,ensureStyle:q,removeStyle:()=>document.getElementById(I)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:t=>{let n={},f=t("react"),o=Bt(f,{async api(e,h,y){let N=await fetch("/qxqy-simulator/api/"+h,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...y||{}}),...h==="play"?{signal:AbortSignal.timeout(15e3)}:{}}),P=await N.json();if(!N.ok||!P.ok)throw new Error(P.error||"Request failed");return P.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return n.inject=["slots"],n.apply=e=>{o.ensureStyle(),e.effect(()=>o.removeStyle,"qxqy-simulator: style cleanup"),e.slots.inject("conversation.view",()=>e.slots.register({name:"conversation.view",id:"qxqy-simulator",order:20,label:()=>"\u6A21\u62DF\u5668"},o.SimulatorView))},n}});})();