dsh-plugin-beyond-simulator 1.0.10 → 2.0.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
|
|
1
|
+
(()=>{function Oe(u,{api:B,playUrl:ne,saveToWorkspace:D=!1}){let e=u.createElement,U="qxqy-simulator-style",se=`
|
|
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{--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}
|
|
4
4
|
.qxsim[data-theme=dark]{--bg:#20242e;--panel:#181d27;--panel2:#202632;--input:#151b25;--line:#363e4d;--lineSoft:#2b3240;--text:#edf1f7;--muted:#929baa;--hover:#252c37;--workspace:#383d47;--toolbarA:#242a35;--toolbarB:#1e232d;--status:#242a33;--button:#1d2430;--shadow:#0004}
|
|
@@ -22,5 +22,6 @@
|
|
|
22
22
|
@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}}
|
|
23
23
|
@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}}
|
|
24
24
|
@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}}
|
|
25
|
-
`,M={"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"]},G=[["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"]],Fe={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["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:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId"],fullscreen:["animationId"]};function Be(){if(document.getElementById(U))return;let t=document.createElement("style");t.id=U,t.textContent=se,document.head.appendChild(t)}function he(){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 De(){let[t,s]=u.useState(he);return u.useEffect(()=>{let i=()=>s(he()),n=new MutationObserver(i);n.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&n.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let o=window.matchMedia?.("(prefers-color-scheme: dark)");return o?.addEventListener?.("change",i),()=>{n.disconnect(),o?.removeEventListener?.("change",i)}},[]),t}function X(t,s){let i=Number(t??s)>>>0;return`rgba(${i>>>16&255},${i>>>8&255},${i&255},${(i>>>24&255)/255})`}function J(t){return`#${(Number(t)>>>0).toString(16).padStart(8,"0").toUpperCase()}`}function Ue(t,s){return 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 z=B;function ve(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 c=0;c<s.length;c+=1)i[c]=s.charCodeAt(c);let n=URL.createObjectURL(new Blob([i],{type:t.mimeType||"application/octet-stream"})),o=document.createElement("a");o.href=n,o.download=t.filename||"qxqy-export",o.rel="noopener",o.style.display="none",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}async function Ge(t){let s=new Uint8Array(await t.arrayBuffer()),i="",n=32768;for(let o=0;o<s.length;o+=n)i+=String.fromCharCode(...s.subarray(o,o+n));return btoa(i)}let Y=t=>typeof t=="object"?t.value:t,qe=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 ye(t){return String(t.id||"").split("-").slice(1).join(":")}function Ve(t,s){let i=(o,c)=>c?i(c,o%c):o,n=i(Math.round(t),Math.round(s))||1;return`${Math.round(t)/n}:${Math.round(s)/n}`}function $({field:t,commit:s,axis:i}){let n=t.type==="color"?J(t.value):t.value==null?"":String(t.value),[o,c]=u.useState(n);if(u.useEffect(()=>c(t.type==="color"?J(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:l=>s(t.key,l.target.checked)}),e("span",{className:"qxsim-switch-track"})));if(t.type==="enum"){let l=[...t.options||[]],g=String(t.value??"");return l.some(q=>String(Y(q))===g)||l.unshift({value:t.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${t.unknownValue??(g||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("select",{value:g,disabled:!!t.readonly,onChange:q=>s(t.key,q.target.value)},l.map(q=>e("option",{key:String(Y(q)),value:Y(q)},qe(q)))))}if(t.type==="percent"){let l=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:l,onInput:g=>s(t.key,Number(g.target.value)/100)}),e("output",null,`${l}%`)))}if(t.type==="color"){let l=/^#[0-9a-f]{8}$/i.test(o)?o:J(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:`#${l.slice(3)}`,onInput:g=>{let q=`#${l.slice(1,3)}${g.target.value.slice(1).toUpperCase()}`;c(q),s(t.key,q)}})),e("input",{type:"text",value:o,spellCheck:!1,"aria-label":`${t.label} ARGB`,onChange:g=>c(g.target.value),onBlur:()=>s(t.key,o),onKeyDown:g=>{g.key==="Enter"&&g.currentTarget.blur(),g.key==="Escape"&&c(J(t.value))}})))}let m={value:o,disabled:!!t.readonly,readOnly:!!t.readonly,onChange:l=>c(l.target.value),onBlur:()=>{t.readonly||s(t.key,o)},onKeyDown:l=>{l.key==="Enter"&&t.type!=="text"&&l.currentTarget.blur(),l.key==="Escape"&&c(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",{...m,rows:4}):e("input",{...m,type:t.type==="number"?"number":"text",step:t.type==="number"?"any":void 0}))}function A({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 _e(t){let s={};for(let i of t||[])s[i.key]=i;return s}function E({label:t,x:s,y:i,xAxis:n="X",yAxis:o="Y",commit:c}){return e("div",{className:"qxsim-pair"},e("div",{className:"qxsim-pair-name"},t),e($,{field:s,axis:n,commit:c}),e($,{field:i,axis:o,commit:c}))}function Re({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:n=>s(t.key,n.target.value)},(t.options||[]).map(n=>e("option",{key:String(Y(n)),value:Y(n)},qe(n))))))}function He({inspector:t,commit:s,createStateChild:i}){let n=_e(t.fields),o=g=>g?.type==="node"?e(Re,{key:g.key,field:g,commit:s,createStateChild:i}):g?e($,{key:g.key,field:g,commit:s}):null,c=(Fe[t.kind]||[]).map(g=>n[g]).filter(Boolean).map(o),m=null;if(t.kind==="image"){let g=n.fillType?.value==="Horizontal"?n.fillHorizontalType:n.fillType?.value==="Vertical"?n.fillVerticalType:n.fillType?.value==="Radial90"?n.fillRadial90Type:n.fillRadialType,q=[o(n.enableMask),o(n.enableSoftEdge),n.enableSoftEdge?.value?e("div",{className:"qxsim-subfields",key:"soft-fields"},o(n.softEdgeMode),e(E,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:n.softEdgeWidthX,y:n.softEdgeWidthY,commit:s}),e(E,{label:"\u7FBD\u5316\u8303\u56F4",x:n.horizontalSoftRange,y:n.verticalSoftRange,commit:s})):null,o(n.enableFill),n.enableFill?.value?e("div",{className:"qxsim-subfields",key:"fill-fields"},o(n.fillType),o(g),o(n.fillAmount)):null,o(n.reverseMaskArea)];m=e(u.Fragment,null,e(A,{title:"\u56FE\u7247\u8BBE\u7F6E"},o(n.imageSource),o(n.imageId),o(n.imageColor)),e(A,{title:"\u906E\u7F69\u8BBE\u7F6E"},q))}let l=t.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":t.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${t.label}\u8BBE\u7F6E`;return e(u.Fragment,null,e(A,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},e($,{field:n.name,commit:s})),e(A,{title:"\u53D8\u6362"},n.posX?e(E,{label:"\u4F4D\u7F6E",x:n.posX,y:n.posY,commit:s}):null,n.width?e(E,{label:"\u5927\u5C0F",x:n.width,y:n.height,xAxis:"W",yAxis:"H",commit:s}):null,n.rotationZ?e($,{field:n.rotationZ,commit:s}):null,n.syncAllDevices?e($,{field:n.syncAllDevices,commit:s}):null,n.anchorType?e($,{field:n.anchorType,commit:s}):null,n.anchorMinX?e(E,{label:"Min",x:n.anchorMinX,y:n.anchorMinY,commit:s}):null,n.anchorMaxX?e(E,{label:"Max",x:n.anchorMaxX,y:n.anchorMaxY,commit:s}):null,n.pivotX?e(E,{label:"\u4E2D\u5FC3",x:n.pivotX,y:n.pivotY,commit:s}):null),e(A,{title:"\u521B\u5EFA\u8BBE\u7F6E"},n.active?e($,{field:n.active,commit:s}):null,n.visible?e($,{field:n.visible,commit:s}):null),m||(c.length?e(A,{title:l},c):null),n.canControllerFocus?e(A,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},e($,{field:n.canControllerFocus,commit:s})):null,n.incomplete?e(A,{title:"\u5B9E\u73B0\u72B6\u6001"},e($,{field:n.incomplete,commit:s})):null)}function Xe({snap:t,selectedScriptId:s,selectScript:i,draft:n,updateDraft:o,saveScript:c,addScript:m,removeScript:l,exportLua:g,exportScripts:q,exportScriptsGia:S,notice:L}){let b=t.scripts||[],p=b.find(f=>f.id===s)||null,v=t.mountTargets||[],y=v.filter(f=>f.assetType==="server-control-template"),h=v.filter(f=>f.assetType==="client-control-template"),C=f=>{let P=v.find(T=>T.id===f);return P?`${P.assetLabel} \xB7 ${P.name}`:""};return e("div",{className:"qxsim-script-page"},e("aside",{className:"qxsim-script-assets"},e("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${b.length}\uFF09`),e("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:m},"\uFF0B \u65B0\u5EFA\u811A\u672C"),b.length?b.map(f=>e("div",{key:f.id,className:"qxsim-script-list-row"},e("button",{className:`qxsim-script-asset${f.id===s?" active":""}`,onClick:()=>i(f.id)},e("strong",null,f.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,f.mounted?`\u6302\u8F7D\uFF1A${f.assetLabel} \xB7 ${f.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),e("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>g(f.id)},"\u21E9"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>l(f.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"},p&&n?e(u.Fragment,null,e("div",{className:"qxsim-script-title"},e("div",null,e("h2",null,n.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 ${p.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:n.path,placeholder:"lua/example.lua",onChange:f=>o({path:f.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:n.controlId?`${n.controlAsset||"server-control-template"}|${n.controlId}`:"",onChange:f=>{let[P,T]=f.target.value.split("|");o(T?{controlId:T,controlAsset:P}:{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"},y.map(f=>e("option",{key:f.id,value:`${f.assetType}|${f.id}`},`${f.name} \xB7 ${f.id}`))),h.length?e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},h.map(f=>e("option",{key:f.id,value:`${f.assetType}|${f.id}`},`${f.name} \xB7 ${f.id}`))):null))),e("label",null,"Lua \u6E90\u7801",e("textarea",{value:n.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:f=>o({source:f.target.value})})),e("div",{className:"qxsim-script-footer"},e("span",null,n.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":L||(p.mounted?`\u5DF2\u6302\u8F7D\uFF1A${C(p.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:q},"\u21E9 \u811A\u672C\u5305 JSON"),e("button",{className:"qxsim-action",onClick:S},"\u21E9 \u811A\u672C\u5305 GIA"),e("button",{className:"qxsim-action primary",disabled:!n.dirty,onClick:c},"\u4FDD\u5B58\u811A\u672C"))):e("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function we(t){if(t===void 0)return"null";try{return JSON.stringify(t)}catch{return String(t)}}function ke(t){let s=String(t??"").trim();if(!s)return null;try{return JSON.parse(s)}catch{return s}}function Ne(t){return!!(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"fromSignalParam"))}function Se(t){return{version:1,dirty:!1,rules:(Array.isArray(t?.rules)?t.rules:[]).map((i,n)=>({id:String(i.id||`signal-${n+1}`),signalName:String(i.signalName||""),actions:Array.isArray(i.actions)&&i.actions.length?i.actions.map(o=>Ke(o)):[V("setCustomVariable")]}))}}let Ce=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],$e=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ae={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(t){return $e.includes(t)&&t!=="AllPlayers"?t:t==="Level"?"Level":"PlayerSelf"}function oe(t){return Ce.includes(t)?t:"PlayerSelf"}function V(t){return t==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function Je(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:oe(i.target),signalName:String(i.signalName||"").trim(),params:Array.isArray(i.params)?i.params:[]}:{kind:"setCustomVariable",entityType:re(i?.entityType),name:String(i?.name||"").trim(),value:i&&Object.prototype.hasOwnProperty.call(i,"value")?i.value:0})}))}}function We(t){let s=[];for(let[i,n]of(t?.rules||[]).entries()){String(n.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let o=n.actions||[];o.length||s.push(`\u89C4\u5219 ${i+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[c,m]of o.entries())m?.kind==="sendClientScriptSignal"?String(m.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(m?.name||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u53D8\u91CF\u540D`)}return s}function Ke(t){if(t?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:oe(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:re(t?.entityType),name:String(t?.name||""),value:s}}function Pe({label:t,value:s,onChange:i}){let n=Ne(s),[o,c]=u.useState(()=>n?"":we(s));return u.useEffect(()=>{Ne(s)||c(we(s))},[s]),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t),e("select",{value:n?"param":"literal","aria-label":`${t}\u6765\u6E90`,onChange:m=>{m.target.value==="param"?i({fromSignalParam:Number(s?.fromSignalParam)||0}):i(ke(o||"0"))}},e("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),e("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),n?e("input",{type:"number",min:0,step:1,value:Number(s.fromSignalParam)||0,"aria-label":`${t}\u53C2\u6570\u5E8F\u53F7`,onChange:m=>i({fromSignalParam:Math.max(0,Math.trunc(Number(m.target.value)||0))})}):e("textarea",{className:"qxsim-logic-json",value:o,spellCheck:!1,"aria-label":`${t}\u5B57\u9762\u91CF`,onBlur:()=>i(ke(o)),onChange:m=>c(m.target.value)}))}function Ze({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((n,o)=>e("div",{key:o,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},e("div",{style:{flex:1,minWidth:0}},e(Pe,{label:`\u53C2\u6570 ${o}`,value:n,onChange:c=>s(i.map((m,l)=>l===o?c:m))})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>s(i.filter((c,m)=>m!==o))},"\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 Qe({snap:t,draft:s,setDraft:i,saveLogic:n,notice:o,error:c}){let m=s?.rules||[];function l(b){i({version:1,rules:b,dirty:!0})}function g(){l(m.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[V("setCustomVariable")]}]))}function q(b,p){l(m.map((v,y)=>y===b?{...v,...p}:v))}function S(b,p,v){let y=m[b];y&&q(b,{actions:y.actions.map((h,C)=>C===p?{...h,...v}:h)})}function L(b,p,v){S(b,p,V(v))}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:n},"\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"),c?e("div",{className:"qxsim-logic-error"},c):null,m.length?m.map((b,p)=>e("section",{key:b.id||p,className:"qxsim-logic-rule"},e("div",{className:"qxsim-logic-rule-head"},e("strong",null,`\u89C4\u5219 ${p+1}`),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),e("input",{type:"text",value:b.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${p+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:v=>q(p,{signalName:v.target.value})})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>l(m.filter((v,y)=>y!==p))},"\u2715")),e("div",{className:"qxsim-logic-actions"},(b.actions||[]).map((v,y)=>e("div",{key:y,className:"qxsim-logic-action"},e("div",{className:"qxsim-logic-action-head"},e("strong",null,`\u52A8\u4F5C ${y+1}`),e("select",{value:v.kind,"aria-label":`\u89C4\u5219 ${p+1} \u52A8\u4F5C ${y+1} \u7C7B\u578B`,onChange:h=>L(p,y,h.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,v.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:(b.actions||[]).length<=1,onClick:()=>q(p,{actions:b.actions.filter((h,C)=>C!==y)})},"\u2715")),v.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:oe(v.target),onChange:h=>S(p,y,{target:h.target.value})},Ce.map(h=>e("option",{key:h,value:h},Ae[h])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),e("input",{type:"text",value:v.signalName,placeholder:"GoldChanged",onChange:h=>S(p,y,{signalName:h.target.value})})),e(Ze,{params:v.params,onChange:h=>S(p,y,{params:h})})):e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),e("select",{value:re(v.entityType),onChange:h=>S(p,y,{entityType:h.target.value})},$e.map(h=>e("option",{key:h,value:h},Ae[h])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),e("input",{type:"text",value:v.name,placeholder:"Gold",onChange:h=>S(p,y,{name:h.target.value})})),e("div",{className:"wide"},e(Pe,{label:"\u53D8\u91CF\u503C",value:v.value,onChange:h=>S(p,y,{value:h})}))))),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:()=>q(p,{actions:(b.actions||[]).concat([V("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("button",{className:"qxsim-action",onClick:()=>q(p,{actions:(b.actions||[]).concat([V("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:g},"\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":o||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),e("span",{className:"spacer"}))))}function et({snap:t,addScriptMounted:s,mountScriptTo:i,unmountScript:n,openScript:o}){let c=(t.scripts||[]).filter(l=>l.controlId===t.selectedId),m=(t.scripts||[]).filter(l=>l.controlId!==t.selectedId);return e(u.Fragment,null,e(A,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},c.length?c.map(l=>e("div",{key:l.id,className:"qxsim-script-list-row"},e("button",{className:"qxsim-script-asset",onClick:()=>o(l.id)},e("strong",null,l.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,`\u811A\u672C ${l.id}`)),e("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>n(l.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(A,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},m.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:l=>{let g=l.target.value;l.target.value="",g&&i(g)}},e("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),m.map(l=>e("option",{key:l.id,value:l.id},`${l.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${l.id}${l.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${l.assetLabel} \xB7 ${l.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 tt(t,s){let i=null,n=null;function o(c,m){c.id===s&&(i=c,n=m);for(let l of c.children||[])o(l,c)}if(o(t,null),i?.kind==="container")return i.id;if(i?.kind==="server-container")return i.children?.find(c=>c.kind==="container")?.id||i.id;for(;n&&n.kind!=="container";){let m=function(l){for(let g of l.children||[])g===n&&(c=l),m(g)},c=null;m(t),n=c}return n?.id||t.children?.find(c=>c.kind==="container")?.id}function at(t,s){let i=null;function n(o){o.id===s&&(i=o);for(let c of o.children||[])n(c)}return n(t),i&&i.kind!=="server-container"?i.id:tt(t,s)}function it(t,s,i,n){let o=t,c=t.kind,m=c==="textbox"||c==="textwindow",l=o.renderLeft??o.left,g=o.renderBottom??o.bottom,q=o.renderWidth??o.width,S=o.renderHeight??o.height,L=o.renderRotationZ??t.rotationZ??0,b={left:`${l/i*100}%`,bottom:`${g/n*100}%`,width:`${q/i*100}%`,height:`${S/n*100}%`,"--rotation":`${-Number(L)}deg`,fontSize:Math.max(8,Math.min(40,Number(t.fontSize||12))),color:m?X(t.fontColor,4294967295):"#fff"};c==="image"?Object.assign(b,Ue(t.primitive,X(t.imageColor,4294967295))):m?(b.background=X(t.bgColor,16777215),b.justifyContent=t.horizontalAlignment==="Right"?"flex-end":t.horizontalAlignment==="Middle"?"center":"flex-start",b.alignItems=t.verticalAlignment==="Bottom"?"flex-end":t.verticalAlignment==="Middle"?"center":"flex-start",b.textShadow=t.enableOutline===!1?"none":`0 0 2px ${X(t.outlineColor,4278190080)}`):c==="container"&&(b.background="transparent");let p=t.id===s.selectedId,v=m?t.text||"":c==="image"&&t.primitive==="missing"?e("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${t.imageId||""}`):c!=="container"&&c!=="image"?e("span",{className:"qxsim-box-label"},t.name||M[c]?.[1]||c):null;return e("div",{key:t.id,className:`qxsim-box ${c}${p?" selected":""}${t.instantiated?" dynamic":""}${t.pressed?" pressed":""}`,style:b},v,p&&c!=="container"?["tl","tr","bl","br"].map(y=>e("i",{key:y,className:`qxsim-handle ${y}`})):null)}function nt({sessionId:t}){let s=De(),[i,n]=u.useState(null),o=u.useRef(null),c=u.useRef(Promise.resolve()),[m,l]=u.useState(""),[g,q]=u.useState(null),[S,L]=u.useState(!1),[b,p]=u.useState(""),v=u.useRef(null),[y,h]=u.useState([]),[C,f]=u.useState("ui"),[P,T]=u.useState("base"),[le,st]=u.useState("fit"),[ce,rt]=u.useState({}),[W,de]=u.useState(""),[O,pe]=u.useState("template"),[me,K]=u.useState(""),[xe,_]=u.useState(null),[ze,ue]=u.useState({version:1,rules:[],dirty:!1}),Le=u.useRef(null),[Z,ot]=u.useState({width:0,height:0});u.useEffect(()=>{let a=Le.current;if(!a||typeof ResizeObserver>"u")return;let r=new ResizeObserver(d=>{let x=d[0]?.contentRect;x&&x.width>0&&ot({width:x.width,height:x.height})});return r.observe(a),()=>r.disconnect()},[i?.canvas?.id]);function R(a,{keepLogicDraft:r=!0}={}){return o.current=a,n(a),a?.scripts&&K(d=>a.scripts.some(x=>x.id===d)?d:a.scripts[0]?.id||""),ue(d=>r&&d?.dirty?d:Se(a?.serverLogic)),a}let Q=u.useCallback(async()=>{try{l(""),R(await z(t,"get"),{keepLogicDraft:!1})}catch(a){l(a?.message||String(a))}},[t]),ee=u.useCallback(async()=>{try{let a=await z(t,"archives");h(a?.archives||[])}catch{h([])}},[t]);u.useEffect(()=>{Q(),ee()},[Q,ee]);function N(a){let r=async()=>{let d=o.current;if(!d)throw new Error("editor is not ready");try{let x=await z(t,"patch",{op:{...a,expectedRevision:d.version}});return l(""),R(x)}catch(x){throw l(x?.message||String(x)),/revision conflict/.test(String(x?.message||x))&&await Q(),x}};return c.current=c.current.then(r,r),c.current}let lt=(a,r)=>void N({op:"set",key:a,value:r}).catch(()=>{});async function ct(a,r){let d=o.current?.inspector?.id;if(d)try{let x=await N({op:"add",kind:"image",parentId:d,name:`${r}\u56FE\u7247`});await N({op:"set",id:d,key:a,value:x.selectedId}),p(`${r}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}u.useEffect(()=>{let a=i?.scripts?.find(r=>r.id===me);_(r=>r&&a&&r.id===a.id&&r.dirty?r:a?{id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset,dirty:!1}:null)},[i,me]);function dt(a){_(r=>r&&{...r,...a,dirty:!0})}async function te(){let a=xe;!a||!a.dirty||(await N({op:"updateScript",id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset}),_(r=>r&&r.id===a.id?{...r,dirty:!1}:r))}function Te(){te().then(()=>p("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function ae({silent:a=!1}={}){let r=ze;if(!r||!r.dirty)return;let d=We(r);if(d.length){let F=d[0];throw a||l(F),new Error(F)}let x=await N({op:"setServerLogic",logic:Je(r)});ue(Se(x.serverLogic)),p("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function pt(){ae({silent:!0}).catch(()=>{})}function H(a){Te(),pt(),f(a)}async function Ee(a={}){let r=await N({op:"addScript",...a}),d=r.scripts?.[r.scripts.length-1];return d&&K(d.id),p(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"),d}function mt(a){xe?.id===a&&_(null),N({op:"removeScript",id:a}).then(()=>p("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function xt(a){N({op:"updateScript",id:a,controlId:""}).then(()=>p("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function ut(a){let r=o.current?.selectedId||"",d=o.current?.asset?.type||"";r&&(_(x=>x&&x.id===a?{...x,controlId:r,controlAsset:d}:x),N({op:"updateScript",id:a,controlId:r,controlAsset:d}).then(()=>p("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function Ie(a){if(o.current?.asset?.type!==a)try{let r=await N({op:"selectAsset",assetType:a});de(""),pe(a==="client-control-template"?"template":"child"),p(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${r.asset.label}`)}catch{}}function gt(a,r){let d=o.current;if(!d)return;let x=d.asset?.type==="client-control-template"&&O==="template",F=x?{op:"addTemplate",kind:a,name:`${r}\u6A21\u677F`}:{op:"add",kind:a,parentId:at(d.root,d.selectedId),name:r};N(F).then(()=>p(x?`\u5DF2\u65B0\u589E${r}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${r}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function ie(a,r=""){try{await c.current.catch(()=>{});let d=await z(t,"export",{format:a,assetType:r});if(Array.isArray(d?.files)&&d.files.length){for(let x of d.files)ve(x);l(""),p(`\u5DF2\u5BFC\u51FA ${d.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${d.files.map(x=>x.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}ve(d),l(""),p(d.warnings?.length?`\u5DF2\u5BFC\u51FA ${d.filename}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301 GIA\u3002`:`\u5DF2\u5BFC\u51FA ${d.filename}`)}catch(d){l(d?.message||String(d))}}async function ft(a){if(a)try{await c.current.catch(()=>{});let r=await z(t,"load-archive",{path:a});R(r.snapshot,{keepLogicDraft:!1}),l(""),p(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${a}`)}catch(r){l(r?.message||String(r))}}async function bt(a){if(!a)return;let r=a.name.toLowerCase().endsWith(".gia")?"gia":a.name.toLowerCase().endsWith(".json")?"json":a.name.toLowerCase().endsWith(".lua")?"lua":"";if(!r){l("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await c.current.catch(()=>{});let d=await z(t,"import",{format:r,filename:a.name,data:await Ge(a)});R(d.snapshot,{keepLogicDraft:!1}),l(""),p(d.warnings?.length?`\u5DF2\u5BFC\u5165 ${a.name}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301\u7F16\u8F91\u3002`:`\u5DF2\u5BFC\u5165 ${a.name}`)}catch(d){l(d?.message||String(d))}finally{v.current&&(v.current.value="")}}async function ht(){let a=window.open("about:blank","_blank");if(!a){l("\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u8BD5\u73A9\u6807\u7B7E\u9875\uFF0C\u8BF7\u5141\u8BB8\u6B64\u7AD9\u70B9\u6253\u5F00\u65B0\u6807\u7B7E\u9875\u540E\u91CD\u8BD5\u3002");return}a.document.write('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><style>html{color-scheme:light dark;font:14px system-ui}body{min-height:100vh;margin:0;display:grid;place-items:center;background:Canvas;color:CanvasText}</style><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>');try{await te(),await ae(),a.location.replace(ne(t))}catch(r){a.close(),l(r?.message||String(r))}}async function vt(){if(!(S||!g?.trim())){L(!0);try{await te(),await ae(),await c.current.catch(()=>{});let a=o.current,r=await z(t,"save",{path:g.trim(),expectedRevision:a.version});R(await z(t,"get")),p(`\u5DF2\u4FDD\u5B58\u5230 ${r.path}`),l(""),q(null),ee()}catch(a){l(a?.message||String(a))}finally{L(!1)}}}if(u.useEffect(()=>{i?.inspector?.kind==="server-container"&&T("base")},[i?.inspector?.kind]),!i)return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},e("div",{className:"qxsim-status error"},m||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let I=i.canvas.width,j=i.canvas.height,ge=Z.width>0&&Z.height>0?Math.min((Z.width-44)/I,(Z.height-54)/j):NaN,qt=Number.isFinite(ge)&&ge>0?Math.min(2,Math.round(ge*1e3)/1e3):.5,yt=le==="fit"?qt:Number(le)||.5,Me=Ve(I,j),wt=(i.canvas.presets||[]).filter(a=>a.platform===i.canvas.platform);function kt(a){if(!i||i.canvas.platform===a)return;let r=(i.canvas.presets||[]).filter(x=>x.platform===a);if(!r.length)return;let d=r.find(x=>ye(x)===Me)||r[0];N({op:"setCanvas",canvasId:d.id}).then(()=>p(`\u5DF2\u5207\u6362\u5230${d.label}`)).catch(()=>{})}let k=i.asset?.type==="client-control-template",fe=!!(i.inspector&&i.inspector.kind!=="server-container"),be=new Set;for(let a of i.tree||[])(ce[a.id]||(a.ancestorIds||[]).some(r=>ce[r]))&&be.add(a.id);let Nt=(i.boxes||[]).filter(a=>a.kind!=="server-container"&&a.visible&&!be.has(a.id));function St(a,r){a.stopPropagation(),rt(d=>{let x={...d};return x[r]?delete x[r]:x[r]=!0,x})}let Oe=i.tree.filter(a=>!W.trim()||`${a.name} ${a.label}`.toLowerCase().includes(W.trim().toLowerCase())),w=i.tree.find(a=>a.id===i.selectedId),Ct=k&&w?i.tree.filter(a=>a.id!==w.id&&!(a.ancestorIds||[]).includes(w.id)):[],$t=w?.parentId||i.root.id;return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},g!==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(),vt()}},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:g,disabled:S,onChange:a=>q(a.target.value)})),m?e("div",{role:"alert"},m):null,e("footer",null,e("button",{className:"qxsim-action",type:"button",disabled:S,onClick:()=>q(null)},"\u53D6\u6D88"),e("button",{className:"qxsim-action primary",type:"submit",disabled:S||!g.trim()},S?"\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"}
|
|
26
|
-
${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"},C==="ui"?e(u.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:()=>kt(a.key)},a.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:i.canvasId,onChange:a=>void N({op:"setCanvas",canvasId:a.target.value}).catch(()=>{})},wt.map(a=>e("option",{key:a.id,value:a.id},`${ye(a)} \xB7 ${a.width}\xD7${a.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:le,onChange:a=>st(a.target.value)},[["fit","\u9002\u5E94"],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([a,r])=>e("option",{key:a,value:a},r)))):e("span",{className:"qxsim-muted"},C==="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"},D?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{l(""),q(o.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:v,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:a=>void bt(a.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void ee(),onChange:a=>{let r=a.target.value;a.target.value="",r&&ft(r)}},e("option",{value:"",disabled:!0},i.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...y.length?y.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:()=>v.current?.click()},"\u21E7 \u5BFC\u5165"),e("select",{className:"qxsim-control zoom","aria-label":"\u5BFC\u51FA\u683C\u5F0F",defaultValue:"",onChange:a=>{let[r,d=""]=a.target.value.split("|");a.target.value="",r&&ie(r,d)}},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:"\u5728\u72EC\u7ACB\u6807\u7B7E\u9875\u4E2D\u8BD5\u73A9",onClick:ht},"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:Q},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:C==="ui"?"active":"",onClick:()=>H("ui")},"UI \u7F16\u8F91"),e("button",{className:C==="script"?"active":"",onClick:()=>H("script")},"Lua \u811A\u672C"),e("button",{className:C==="logic"?"active":"",onClick:()=>H("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")),C==="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:k?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void Ie("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:k?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void Ie("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},k?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},k?`${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:W,placeholder:k?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:a=>de(a.target.value)}),W?e("button",{onClick:()=>de("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},Oe.length?Oe.map(a=>{let r=M[a.kind]||["\u25C7",a.label],d=be.has(a.id),x=!!ce[a.id];return e("div",{key:a.id,className:`qxsim-row${k&&a.depth===0?" template-root":""}${a.id===i.selectedId?" active":""}${d?" canvas-hidden":""}`,style:{paddingLeft:8+a.depth*18,"--depth":a.depth},title:`${r[1]} \xB7 ${a.name} \xB7 GUID ${a.guid??a.id}`,onClick:()=>void N({op:"select",id:a.id}).catch(()=>{})},e("span",{className:"qxsim-chevron"},a.childCount?"\u25BC":""),e("span",{className:"qxsim-kind"},r[0]),e("span",{className:"qxsim-row-label"},a.name),e("span",{className:"qxsim-row-end"},k&&a.depth===0?e(u.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${x?" off":""}`,type:"button",title:x?"\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":!x,onClick:F=>St(F,a.id)},x?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},k&&w?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,w.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:$t,onChange:a=>void N({op:"reparent",id:w.id,parentId:a.target.value}).then(()=>p(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"),Ct.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:w.siblingIndex<=0,onClick:()=>void N({op:"moveSibling",id:w.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:w.siblingIndex>=w.siblingCount-1,onClick:()=>void N({op:"moveSibling",id:w.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},w.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${w.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:k&&O==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${w?w.name:"\u5F53\u524D\u63A7\u4EF6"}`},k&&O==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${w?`\u201C${w.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),k?e("span",{className:"qxsim-add-mode"},e("button",{className:O==="template"?"active":"",onClick:()=>pe("template")},"\u9876\u5C42"),e("button",{className:O==="child"?"active":"",onClick:()=>pe("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},G.filter(([a])=>k||a!=="container").map(([a,r])=>e("button",{key:a,title:`${k&&O==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${r}`,onClick:()=>gt(a,r)},`\uFF0B ${r}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:Le},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(I*yt))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,k?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},i.canvas.platform),e("span",null,`${Me} \xB7 ${I}\xD7${j} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${I} / ${j}`},onClick:a=>{let r=a.currentTarget.getBoundingClientRect();N({op:"pick",x:(a.clientX-r.left)*I/r.width,y:(r.bottom-a.clientY)*j/r.height}).catch(()=>{})}},Nt.map(a=>it(a,i,I,j))))),m?e("div",{className:"qxsim-status error"},"\u26A0 ",m):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${i.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,b||(w?`\u5F53\u524D\uFF1A${w.name}`:"")),e("span",{className:"spacer"}),e("span",null,k?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"))),e("aside",{className:"qxsim-inspector"},i.inspector?e(u.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(M[i.inspector.kind]||["\u25C7"])[0]),e("strong",null,i.inspector.label),k&&w?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},k&&w?.depth===0?"\u5BFC\u51FA prefabId ":"\u63A7\u4EF6 GUID ",e("code",null,i.inspector.guid??i.inspector.id)," \xB7 ",w?.name||"\u8282\u70B9",k&&w?.depth===0?e("small",null,"\uFF08\u771F\u5B9E\u7F16\u8F91\u5668\u5BFC\u5165\u540E\u53EF\u80FD\u91CD\u6620\u5C04\uFF09"):null)),e("div",{className:"qxsim-tabs",style:fe?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:P==="base"?"active":"",onClick:()=>T("base")},"\u57FA\u7840\u5C5E\u6027"),fe?e("button",{className:P==="script"?"active":"",onClick:()=>T("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},fe&&P==="script"?e(et,{snap:i,addScriptMounted:a=>void Ee({controlId:a,controlAsset:i.asset?.type}).then(()=>H("script")),mountScriptTo:ut,unmountScript:xt,openScript:a=>{K(a),H("script")}}):e(He,{inspector:i.inspector,commit:lt,createStateChild:ct})),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void N({op:"remove"}).catch(()=>{})},k&&w?.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"))):C==="script"?e(Xe,{snap:i,selectedScriptId:me,selectScript:a=>{Te(),K(a)},draft:xe,updateDraft:dt,saveScript:()=>void te().then(()=>p("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void Ee(),removeScript:mt,exportLua:a=>void ie("lua",a),exportScripts:()=>void ie("scripts"),exportScriptsGia:()=>void ie("scripts-gia"),notice:b}):e(Qe,{snap:i,draft:ze,setDraft:ue,saveLogic:()=>void ae().catch(()=>{}),notice:b,error:m}))}return{SimulatorView:nt,ensureStyle:Be,removeStyle:()=>document.getElementById(U)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:u=>{let B={},ne=u("react"),D=je(ne,{async api(e,U,se){let M=await fetch("/qxqy-simulator/api/"+U,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...se||{}})}),G=await M.json();if(!M.ok||!G.ok)throw new Error(G.error||"Request failed");return G.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return B.inject=["slots"],B.apply=e=>{D.ensureStyle(),e.effect(()=>D.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"},D.SimulatorView))},B}});})();
|
|
25
|
+
`,M={"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"]},G=[["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"]],Fe={container:["isolateNavigation","disableKeyEventPassthrough","disableCursorEventPassthrough","showCursor"],textbox:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],cursor:[],reference:["referencedPrefabId"],grid:["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:["fontSize","adaptiveFontSize","minimumFontSize","fontColor","bgColor","enableOutline","outlineColor","horizontalAlignment","verticalAlignment","text"],keyhint:["keyboardKeyCode","controllerKeyCode"],animation:["animationId"],fullscreen:["animationId"]};function Be(){if(document.getElementById(U))return;let t=document.createElement("style");t.id=U,t.textContent=se,document.head.appendChild(t)}function he(){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 De(){let[t,s]=u.useState(he);return u.useEffect(()=>{let i=()=>s(he()),n=new MutationObserver(i);n.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&n.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let o=window.matchMedia?.("(prefers-color-scheme: dark)");return o?.addEventListener?.("change",i),()=>{n.disconnect(),o?.removeEventListener?.("change",i)}},[]),t}function X(t,s){let i=Number(t??s)>>>0;return`rgba(${i>>>16&255},${i>>>8&255},${i&255},${(i>>>24&255)/255})`}function J(t){return`#${(Number(t)>>>0).toString(16).padStart(8,"0").toUpperCase()}`}function Ue(t,s){return 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 z=B;function ve(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 c=0;c<s.length;c+=1)i[c]=s.charCodeAt(c);let n=URL.createObjectURL(new Blob([i],{type:t.mimeType||"application/octet-stream"})),o=document.createElement("a");o.href=n,o.download=t.filename||"qxqy-export",o.rel="noopener",o.style.display="none",document.body.appendChild(o),o.click(),o.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}async function Ge(t){let s=new Uint8Array(await t.arrayBuffer()),i="",n=32768;for(let o=0;o<s.length;o+=n)i+=String.fromCharCode(...s.subarray(o,o+n));return btoa(i)}let Y=t=>typeof t=="object"?t.value:t,qe=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 ye(t){return String(t.id||"").split("-").slice(1).join(":")}function Ve(t,s){let i=(o,c)=>c?i(c,o%c):o,n=i(Math.round(t),Math.round(s))||1;return`${Math.round(t)/n}:${Math.round(s)/n}`}function $({field:t,commit:s,axis:i}){let n=t.type==="color"?J(t.value):t.value==null?"":String(t.value),[o,c]=u.useState(n);if(u.useEffect(()=>c(t.type==="color"?J(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:l=>s(t.key,l.target.checked)}),e("span",{className:"qxsim-switch-track"})));if(t.type==="enum"){let l=[...t.options||[]],g=String(t.value??"");return l.some(q=>String(Y(q))===g)||l.unshift({value:t.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${t.unknownValue??(g||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("select",{value:g,disabled:!!t.readonly,onChange:q=>s(t.key,q.target.value)},l.map(q=>e("option",{key:String(Y(q)),value:Y(q)},qe(q)))))}if(t.type==="percent"){let l=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:l,onInput:g=>s(t.key,Number(g.target.value)/100)}),e("output",null,`${l}%`)))}if(t.type==="color"){let l=/^#[0-9a-f]{8}$/i.test(o)?o:J(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:`#${l.slice(3)}`,onInput:g=>{let q=`#${l.slice(1,3)}${g.target.value.slice(1).toUpperCase()}`;c(q),s(t.key,q)}})),e("input",{type:"text",value:o,spellCheck:!1,"aria-label":`${t.label} ARGB`,onChange:g=>c(g.target.value),onBlur:()=>s(t.key,o),onKeyDown:g=>{g.key==="Enter"&&g.currentTarget.blur(),g.key==="Escape"&&c(J(t.value))}})))}let m={value:o,disabled:!!t.readonly,readOnly:!!t.readonly,onChange:l=>c(l.target.value),onBlur:()=>{t.readonly||s(t.key,o)},onKeyDown:l=>{l.key==="Enter"&&t.type!=="text"&&l.currentTarget.blur(),l.key==="Escape"&&c(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",{...m,rows:4}):e("input",{...m,type:t.type==="number"?"number":"text",step:t.type==="number"?"any":void 0}))}function A({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 _e(t){let s={};for(let i of t||[])s[i.key]=i;return s}function E({label:t,x:s,y:i,xAxis:n="X",yAxis:o="Y",commit:c}){return e("div",{className:"qxsim-pair"},e("div",{className:"qxsim-pair-name"},t),e($,{field:s,axis:n,commit:c}),e($,{field:i,axis:o,commit:c}))}function Re({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:n=>s(t.key,n.target.value)},(t.options||[]).map(n=>e("option",{key:String(Y(n)),value:Y(n)},qe(n))))))}function He({inspector:t,commit:s,createStateChild:i}){let n=_e(t.fields),o=g=>g?.type==="node"?e(Re,{key:g.key,field:g,commit:s,createStateChild:i}):g?e($,{key:g.key,field:g,commit:s}):null,c=(Fe[t.kind]||[]).map(g=>n[g]).filter(Boolean).map(o),m=null;if(t.kind==="image"){let g=n.fillType?.value==="Horizontal"?n.fillHorizontalType:n.fillType?.value==="Vertical"?n.fillVerticalType:n.fillType?.value==="Radial90"?n.fillRadial90Type:n.fillRadialType,q=[o(n.enableMask),o(n.enableSoftEdge),n.enableSoftEdge?.value?e("div",{className:"qxsim-subfields",key:"soft-fields"},o(n.softEdgeMode),e(E,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:n.softEdgeWidthX,y:n.softEdgeWidthY,commit:s}),e(E,{label:"\u7FBD\u5316\u8303\u56F4",x:n.horizontalSoftRange,y:n.verticalSoftRange,commit:s})):null,o(n.enableFill),n.enableFill?.value?e("div",{className:"qxsim-subfields",key:"fill-fields"},o(n.fillType),o(g),o(n.fillAmount)):null,o(n.reverseMaskArea)];m=e(u.Fragment,null,e(A,{title:"\u56FE\u7247\u8BBE\u7F6E"},o(n.imageSource),o(n.imageId),o(n.imageColor)),e(A,{title:"\u906E\u7F69\u8BBE\u7F6E"},q))}let l=t.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":t.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${t.label}\u8BBE\u7F6E`;return e(u.Fragment,null,e(A,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},e($,{field:n.name,commit:s})),e(A,{title:"\u53D8\u6362"},n.posX?e(E,{label:"\u4F4D\u7F6E",x:n.posX,y:n.posY,commit:s}):null,n.width?e(E,{label:"\u5927\u5C0F",x:n.width,y:n.height,xAxis:"W",yAxis:"H",commit:s}):null,n.rotationZ?e($,{field:n.rotationZ,commit:s}):null,n.syncAllDevices?e($,{field:n.syncAllDevices,commit:s}):null,n.anchorType?e($,{field:n.anchorType,commit:s}):null,n.anchorMinX?e(E,{label:"Min",x:n.anchorMinX,y:n.anchorMinY,commit:s}):null,n.anchorMaxX?e(E,{label:"Max",x:n.anchorMaxX,y:n.anchorMaxY,commit:s}):null,n.pivotX?e(E,{label:"\u4E2D\u5FC3",x:n.pivotX,y:n.pivotY,commit:s}):null),e(A,{title:"\u521B\u5EFA\u8BBE\u7F6E"},n.active?e($,{field:n.active,commit:s}):null,n.visible?e($,{field:n.visible,commit:s}):null),m||(c.length?e(A,{title:l},c):null),n.canControllerFocus?e(A,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},e($,{field:n.canControllerFocus,commit:s})):null,n.incomplete?e(A,{title:"\u5B9E\u73B0\u72B6\u6001"},e($,{field:n.incomplete,commit:s})):null)}function Xe({snap:t,selectedScriptId:s,selectScript:i,draft:n,updateDraft:o,saveScript:c,addScript:m,removeScript:l,exportLua:g,exportScripts:q,exportScriptsGia:S,notice:L}){let b=t.scripts||[],p=b.find(f=>f.id===s)||null,v=t.mountTargets||[],y=v.filter(f=>f.assetType==="server-control-template"),h=v.filter(f=>f.assetType==="client-control-template"),C=f=>{let P=v.find(T=>T.id===f);return P?`${P.assetLabel} \xB7 ${P.name}`:""};return e("div",{className:"qxsim-script-page"},e("aside",{className:"qxsim-script-assets"},e("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${b.length}\uFF09`),e("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:m},"\uFF0B \u65B0\u5EFA\u811A\u672C"),b.length?b.map(f=>e("div",{key:f.id,className:"qxsim-script-list-row"},e("button",{className:`qxsim-script-asset${f.id===s?" active":""}`,onClick:()=>i(f.id)},e("strong",null,f.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,f.mounted?`\u6302\u8F7D\uFF1A${f.assetLabel} \xB7 ${f.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),e("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>g(f.id)},"\u21E9"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>l(f.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"},p&&n?e(u.Fragment,null,e("div",{className:"qxsim-script-title"},e("div",null,e("h2",null,n.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 ${p.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:n.path,placeholder:"lua/example.lua",onChange:f=>o({path:f.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:n.controlId?`${n.controlAsset||"server-control-template"}|${n.controlId}`:"",onChange:f=>{let[P,T]=f.target.value.split("|");o(T?{controlId:T,controlAsset:P}:{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"},y.map(f=>e("option",{key:f.id,value:`${f.assetType}|${f.id}`},`${f.name} \xB7 ${f.id}`))),h.length?e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},h.map(f=>e("option",{key:f.id,value:`${f.assetType}|${f.id}`},`${f.name} \xB7 ${f.id}`))):null))),e("label",null,"Lua \u6E90\u7801",e("textarea",{value:n.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:f=>o({source:f.target.value})})),e("div",{className:"qxsim-script-footer"},e("span",null,n.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":L||(p.mounted?`\u5DF2\u6302\u8F7D\uFF1A${C(p.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:q},"\u21E9 \u811A\u672C\u5305 JSON"),e("button",{className:"qxsim-action",onClick:S},"\u21E9 \u811A\u672C\u5305 GIA"),e("button",{className:"qxsim-action primary",disabled:!n.dirty,onClick:c},"\u4FDD\u5B58\u811A\u672C"))):e("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function we(t){if(t===void 0)return"null";try{return JSON.stringify(t)}catch{return String(t)}}function ke(t){let s=String(t??"").trim();if(!s)return null;try{return JSON.parse(s)}catch{return s}}function Ne(t){return!!(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"fromSignalParam"))}function Se(t){return{version:1,dirty:!1,rules:(Array.isArray(t?.rules)?t.rules:[]).map((i,n)=>({id:String(i.id||`signal-${n+1}`),signalName:String(i.signalName||""),actions:Array.isArray(i.actions)&&i.actions.length?i.actions.map(o=>Ke(o)):[V("setCustomVariable")]}))}}let Ce=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],$e=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ae={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(t){return $e.includes(t)&&t!=="AllPlayers"?t:t==="Level"?"Level":"PlayerSelf"}function oe(t){return Ce.includes(t)?t:"PlayerSelf"}function V(t){return t==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function Je(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:oe(i.target),signalName:String(i.signalName||"").trim(),params:Array.isArray(i.params)?i.params:[]}:{kind:"setCustomVariable",entityType:re(i?.entityType),name:String(i?.name||"").trim(),value:i&&Object.prototype.hasOwnProperty.call(i,"value")?i.value:0})}))}}function We(t){let s=[];for(let[i,n]of(t?.rules||[]).entries()){String(n.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let o=n.actions||[];o.length||s.push(`\u89C4\u5219 ${i+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[c,m]of o.entries())m?.kind==="sendClientScriptSignal"?String(m.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(m?.name||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u53D8\u91CF\u540D`)}return s}function Ke(t){if(t?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:oe(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:re(t?.entityType),name:String(t?.name||""),value:s}}function Pe({label:t,value:s,onChange:i}){let n=Ne(s),[o,c]=u.useState(()=>n?"":we(s));return u.useEffect(()=>{Ne(s)||c(we(s))},[s]),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t),e("select",{value:n?"param":"literal","aria-label":`${t}\u6765\u6E90`,onChange:m=>{m.target.value==="param"?i({fromSignalParam:Number(s?.fromSignalParam)||0}):i(ke(o||"0"))}},e("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),e("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),n?e("input",{type:"number",min:0,step:1,value:Number(s.fromSignalParam)||0,"aria-label":`${t}\u53C2\u6570\u5E8F\u53F7`,onChange:m=>i({fromSignalParam:Math.max(0,Math.trunc(Number(m.target.value)||0))})}):e("textarea",{className:"qxsim-logic-json",value:o,spellCheck:!1,"aria-label":`${t}\u5B57\u9762\u91CF`,onBlur:()=>i(ke(o)),onChange:m=>c(m.target.value)}))}function Ze({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((n,o)=>e("div",{key:o,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},e("div",{style:{flex:1,minWidth:0}},e(Pe,{label:`\u53C2\u6570 ${o}`,value:n,onChange:c=>s(i.map((m,l)=>l===o?c:m))})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>s(i.filter((c,m)=>m!==o))},"\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 Qe({snap:t,draft:s,setDraft:i,saveLogic:n,notice:o,error:c}){let m=s?.rules||[];function l(b){i({version:1,rules:b,dirty:!0})}function g(){l(m.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[V("setCustomVariable")]}]))}function q(b,p){l(m.map((v,y)=>y===b?{...v,...p}:v))}function S(b,p,v){let y=m[b];y&&q(b,{actions:y.actions.map((h,C)=>C===p?{...h,...v}:h)})}function L(b,p,v){S(b,p,V(v))}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:n},"\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"),c?e("div",{className:"qxsim-logic-error"},c):null,m.length?m.map((b,p)=>e("section",{key:b.id||p,className:"qxsim-logic-rule"},e("div",{className:"qxsim-logic-rule-head"},e("strong",null,`\u89C4\u5219 ${p+1}`),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),e("input",{type:"text",value:b.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${p+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:v=>q(p,{signalName:v.target.value})})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>l(m.filter((v,y)=>y!==p))},"\u2715")),e("div",{className:"qxsim-logic-actions"},(b.actions||[]).map((v,y)=>e("div",{key:y,className:"qxsim-logic-action"},e("div",{className:"qxsim-logic-action-head"},e("strong",null,`\u52A8\u4F5C ${y+1}`),e("select",{value:v.kind,"aria-label":`\u89C4\u5219 ${p+1} \u52A8\u4F5C ${y+1} \u7C7B\u578B`,onChange:h=>L(p,y,h.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,v.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:(b.actions||[]).length<=1,onClick:()=>q(p,{actions:b.actions.filter((h,C)=>C!==y)})},"\u2715")),v.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:oe(v.target),onChange:h=>S(p,y,{target:h.target.value})},Ce.map(h=>e("option",{key:h,value:h},Ae[h])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),e("input",{type:"text",value:v.signalName,placeholder:"GoldChanged",onChange:h=>S(p,y,{signalName:h.target.value})})),e(Ze,{params:v.params,onChange:h=>S(p,y,{params:h})})):e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),e("select",{value:re(v.entityType),onChange:h=>S(p,y,{entityType:h.target.value})},$e.map(h=>e("option",{key:h,value:h},Ae[h])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),e("input",{type:"text",value:v.name,placeholder:"Gold",onChange:h=>S(p,y,{name:h.target.value})})),e("div",{className:"wide"},e(Pe,{label:"\u53D8\u91CF\u503C",value:v.value,onChange:h=>S(p,y,{value:h})}))))),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:()=>q(p,{actions:(b.actions||[]).concat([V("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("button",{className:"qxsim-action",onClick:()=>q(p,{actions:(b.actions||[]).concat([V("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:g},"\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":o||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),e("span",{className:"spacer"}))))}function et({snap:t,addScriptMounted:s,mountScriptTo:i,unmountScript:n,openScript:o}){let c=(t.scripts||[]).filter(l=>l.controlId===t.selectedId),m=(t.scripts||[]).filter(l=>l.controlId!==t.selectedId);return e(u.Fragment,null,e(A,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},c.length?c.map(l=>e("div",{key:l.id,className:"qxsim-script-list-row"},e("button",{className:"qxsim-script-asset",onClick:()=>o(l.id)},e("strong",null,l.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,`\u811A\u672C ${l.id}`)),e("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>n(l.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(A,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},m.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:l=>{let g=l.target.value;l.target.value="",g&&i(g)}},e("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),m.map(l=>e("option",{key:l.id,value:l.id},`${l.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${l.id}${l.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${l.assetLabel} \xB7 ${l.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 tt(t,s){let i=null,n=null;function o(c,m){c.id===s&&(i=c,n=m);for(let l of c.children||[])o(l,c)}if(o(t,null),i?.kind==="container")return i.id;if(i?.kind==="server-container")return i.children?.find(c=>c.kind==="container")?.id||i.id;for(;n&&n.kind!=="container";){let m=function(l){for(let g of l.children||[])g===n&&(c=l),m(g)},c=null;m(t),n=c}return n?.id||t.children?.find(c=>c.kind==="container")?.id}function at(t,s){let i=null;function n(o){o.id===s&&(i=o);for(let c of o.children||[])n(c)}return n(t),i&&i.kind!=="server-container"?i.id:tt(t,s)}function it(t,s,i,n){let o=t,c=t.kind,m=c==="textbox"||c==="textwindow",l=o.renderLeft??o.left,g=o.renderBottom??o.bottom,q=o.renderWidth??o.width,S=o.renderHeight??o.height,L=o.renderRotationZ??t.rotationZ??0,b={left:`${l/i*100}%`,bottom:`${g/n*100}%`,width:`${q/i*100}%`,height:`${S/n*100}%`,"--rotation":`${-Number(L)}deg`,fontSize:Math.max(8,Math.min(40,Number(t.fontSize||12))),color:m?X(t.fontColor,4294967295):"#fff"};c==="image"?Object.assign(b,Ue(t.primitive,X(t.imageColor,4294967295))):m?(b.background=X(t.bgColor,16777215),b.justifyContent=t.horizontalAlignment==="Right"?"flex-end":t.horizontalAlignment==="Middle"?"center":"flex-start",b.alignItems=t.verticalAlignment==="Bottom"?"flex-end":t.verticalAlignment==="Middle"?"center":"flex-start",b.textShadow=t.enableOutline===!1?"none":`0 0 2px ${X(t.outlineColor,4278190080)}`):c==="container"&&(b.background="transparent");let p=t.id===s.selectedId,v=m?t.text||"":c==="image"&&t.primitive==="missing"?e("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${t.imageId||""}`):c!=="container"&&c!=="image"?e("span",{className:"qxsim-box-label"},t.name||M[c]?.[1]||c):null;return e("div",{key:t.id,className:`qxsim-box ${c}${p?" selected":""}${t.instantiated?" dynamic":""}${t.pressed?" pressed":""}`,style:b},v,p&&c!=="container"?["tl","tr","bl","br"].map(y=>e("i",{key:y,className:`qxsim-handle ${y}`})):null)}function nt({sessionId:t}){let s=De(),[i,n]=u.useState(null),o=u.useRef(null),c=u.useRef(Promise.resolve()),[m,l]=u.useState(""),[g,q]=u.useState(null),[S,L]=u.useState(!1),[b,p]=u.useState(""),v=u.useRef(null),[y,h]=u.useState([]),[C,f]=u.useState("ui"),[P,T]=u.useState("base"),[le,st]=u.useState("fit"),[ce,rt]=u.useState({}),[W,de]=u.useState(""),[j,pe]=u.useState("template"),[me,K]=u.useState(""),[xe,_]=u.useState(null),[ze,ue]=u.useState({version:1,rules:[],dirty:!1}),Le=u.useRef(null),[Z,ot]=u.useState({width:0,height:0});u.useEffect(()=>{let a=Le.current;if(!a||typeof ResizeObserver>"u")return;let r=new ResizeObserver(d=>{let x=d[0]?.contentRect;x&&x.width>0&&ot({width:x.width,height:x.height})});return r.observe(a),()=>r.disconnect()},[i?.canvas?.id]);function R(a,{keepLogicDraft:r=!0}={}){return o.current=a,n(a),a?.scripts&&K(d=>a.scripts.some(x=>x.id===d)?d:a.scripts[0]?.id||""),ue(d=>r&&d?.dirty?d:Se(a?.serverLogic)),a}let Q=u.useCallback(async()=>{try{l(""),R(await z(t,"get"),{keepLogicDraft:!1})}catch(a){l(a?.message||String(a))}},[t]),ee=u.useCallback(async()=>{try{let a=await z(t,"archives");h(a?.archives||[])}catch{h([])}},[t]);u.useEffect(()=>{Q(),ee()},[Q,ee]);function N(a){let r=async()=>{let d=o.current;if(!d)throw new Error("editor is not ready");try{let x=await z(t,"patch",{op:{...a,expectedRevision:d.version}});return l(""),R(x)}catch(x){throw l(x?.message||String(x)),/revision conflict/.test(String(x?.message||x))&&await Q(),x}};return c.current=c.current.then(r,r),c.current}let lt=(a,r)=>void N({op:"set",key:a,value:r}).catch(()=>{});async function ct(a,r){let d=o.current?.inspector?.id;if(d)try{let x=await N({op:"add",kind:"image",parentId:d,name:`${r}\u56FE\u7247`});await N({op:"set",id:d,key:a,value:x.selectedId}),p(`${r}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}u.useEffect(()=>{let a=i?.scripts?.find(r=>r.id===me);_(r=>r&&a&&r.id===a.id&&r.dirty?r:a?{id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset,dirty:!1}:null)},[i,me]);function dt(a){_(r=>r&&{...r,...a,dirty:!0})}async function te(){let a=xe;!a||!a.dirty||(await N({op:"updateScript",id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset}),_(r=>r&&r.id===a.id?{...r,dirty:!1}:r))}function Te(){te().then(()=>p("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function ae({silent:a=!1}={}){let r=ze;if(!r||!r.dirty)return;let d=We(r);if(d.length){let F=d[0];throw a||l(F),new Error(F)}let x=await N({op:"setServerLogic",logic:Je(r)});ue(Se(x.serverLogic)),p("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function pt(){ae({silent:!0}).catch(()=>{})}function H(a){Te(),pt(),f(a)}async function Ee(a={}){let r=await N({op:"addScript",...a}),d=r.scripts?.[r.scripts.length-1];return d&&K(d.id),p(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"),d}function mt(a){xe?.id===a&&_(null),N({op:"removeScript",id:a}).then(()=>p("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function xt(a){N({op:"updateScript",id:a,controlId:""}).then(()=>p("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function ut(a){let r=o.current?.selectedId||"",d=o.current?.asset?.type||"";r&&(_(x=>x&&x.id===a?{...x,controlId:r,controlAsset:d}:x),N({op:"updateScript",id:a,controlId:r,controlAsset:d}).then(()=>p("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function Ie(a){if(o.current?.asset?.type!==a)try{let r=await N({op:"selectAsset",assetType:a});de(""),pe(a==="client-control-template"?"template":"child"),p(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${r.asset.label}`)}catch{}}function gt(a,r){let d=o.current;if(!d)return;let x=d.asset?.type==="client-control-template"&&j==="template",F=x?{op:"addTemplate",kind:a,name:`${r}\u6A21\u677F`}:{op:"add",kind:a,parentId:at(d.root,d.selectedId),name:r};N(F).then(()=>p(x?`\u5DF2\u65B0\u589E${r}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${r}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function ie(a,r=""){try{await c.current.catch(()=>{});let d=await z(t,"export",{format:a,assetType:r});if(Array.isArray(d?.files)&&d.files.length){for(let x of d.files)ve(x);l(""),p(`\u5DF2\u5BFC\u51FA ${d.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${d.files.map(x=>x.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}ve(d),l(""),p(d.warnings?.length?`\u5DF2\u5BFC\u51FA ${d.filename}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301 GIA\u3002`:`\u5DF2\u5BFC\u51FA ${d.filename}`)}catch(d){l(d?.message||String(d))}}async function ft(a){if(a)try{await c.current.catch(()=>{});let r=await z(t,"load-archive",{path:a});R(r.snapshot,{keepLogicDraft:!1}),l(""),p(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${a}`)}catch(r){l(r?.message||String(r))}}async function bt(a){if(!a)return;let r=a.name.toLowerCase().endsWith(".gia")?"gia":a.name.toLowerCase().endsWith(".json")?"json":a.name.toLowerCase().endsWith(".lua")?"lua":"";if(!r){l("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await c.current.catch(()=>{});let d=await z(t,"import",{format:r,filename:a.name,data:await Ge(a)});R(d.snapshot,{keepLogicDraft:!1}),l(""),p([`\u5DF2\u5BFC\u5165 ${a.name}`,...d.warnings||[]].join(`
|
|
26
|
+
`))}catch(d){l(d?.message||String(d))}finally{v.current&&(v.current.value="")}}async function ht(){let a=window.open("about:blank","_blank");if(!a){l("\u6D4F\u89C8\u5668\u963B\u6B62\u4E86\u8BD5\u73A9\u6807\u7B7E\u9875\uFF0C\u8BF7\u5141\u8BB8\u6B64\u7AD9\u70B9\u6253\u5F00\u65B0\u6807\u7B7E\u9875\u540E\u91CD\u8BD5\u3002");return}a.document.write('<!doctype html><meta charset="utf-8"><title>\u6B63\u5728\u51C6\u5907\u8BD5\u73A9\u2026</title><style>html{color-scheme:light dark;font:14px system-ui}body{min-height:100vh;margin:0;display:grid;place-items:center;background:Canvas;color:CanvasText}</style><p>\u6B63\u5728\u4FDD\u5B58\u9879\u76EE\u5E76\u51C6\u5907\u8BD5\u73A9\u2026</p>');try{await te(),await ae(),a.location.replace(ne(t))}catch(r){a.close(),l(r?.message||String(r))}}async function vt(){if(!(S||!g?.trim())){L(!0);try{await te(),await ae(),await c.current.catch(()=>{});let a=o.current,r=await z(t,"save",{path:g.trim(),expectedRevision:a.version});R(await z(t,"get")),p(`\u5DF2\u4FDD\u5B58\u5230 ${r.path}`),l(""),q(null),ee()}catch(a){l(a?.message||String(a))}finally{L(!1)}}}if(u.useEffect(()=>{i?.inspector?.kind==="server-container"&&T("base")},[i?.inspector?.kind]),!i)return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},e("div",{className:"qxsim-status error"},m||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let I=i.canvas.width,O=i.canvas.height,ge=Z.width>0&&Z.height>0?Math.min((Z.width-44)/I,(Z.height-54)/O):NaN,qt=Number.isFinite(ge)&&ge>0?Math.min(2,Math.round(ge*1e3)/1e3):.5,yt=le==="fit"?qt:Number(le)||.5,Me=Ve(I,O),wt=(i.canvas.presets||[]).filter(a=>a.platform===i.canvas.platform);function kt(a){if(!i||i.canvas.platform===a)return;let r=(i.canvas.presets||[]).filter(x=>x.platform===a);if(!r.length)return;let d=r.find(x=>ye(x)===Me)||r[0];N({op:"setCanvas",canvasId:d.id}).then(()=>p(`\u5DF2\u5207\u6362\u5230${d.label}`)).catch(()=>{})}let k=i.asset?.type==="client-control-template",fe=!!(i.inspector&&i.inspector.kind!=="server-container"),be=new Set;for(let a of i.tree||[])(ce[a.id]||(a.ancestorIds||[]).some(r=>ce[r]))&&be.add(a.id);let Nt=(i.boxes||[]).filter(a=>a.kind!=="server-container"&&a.visible&&!be.has(a.id));function St(a,r){a.stopPropagation(),rt(d=>{let x={...d};return x[r]?delete x[r]:x[r]=!0,x})}let je=i.tree.filter(a=>!W.trim()||`${a.name} ${a.label}`.toLowerCase().includes(W.trim().toLowerCase())),w=i.tree.find(a=>a.id===i.selectedId),Ct=k&&w?i.tree.filter(a=>a.id!==w.id&&!(a.ancestorIds||[]).includes(w.id)):[],$t=w?.parentId||i.root.id;return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},g!==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(),vt()}},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:g,disabled:S,onChange:a=>q(a.target.value)})),m?e("div",{role:"alert"},m):null,e("footer",null,e("button",{className:"qxsim-action",type:"button",disabled:S,onClick:()=>q(null)},"\u53D6\u6D88"),e("button",{className:"qxsim-action primary",type:"submit",disabled:S||!g.trim()},S?"\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"}
|
|
27
|
+
${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"},C==="ui"?e(u.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:()=>kt(a.key)},a.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:i.canvasId,onChange:a=>void N({op:"setCanvas",canvasId:a.target.value}).catch(()=>{})},wt.map(a=>e("option",{key:a.id,value:a.id},`${ye(a)} \xB7 ${a.width}\xD7${a.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:le,onChange:a=>st(a.target.value)},[["fit","\u9002\u5E94"],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([a,r])=>e("option",{key:a,value:a},r)))):e("span",{className:"qxsim-muted"},C==="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"},D?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{l(""),q(o.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:v,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:a=>void bt(a.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void ee(),onChange:a=>{let r=a.target.value;a.target.value="",r&&ft(r)}},e("option",{value:"",disabled:!0},i.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...y.length?y.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:()=>v.current?.click()},"\u21E7 \u5BFC\u5165"),e("select",{className:"qxsim-control zoom","aria-label":"\u5BFC\u51FA\u683C\u5F0F",defaultValue:"",onChange:a=>{let[r,d=""]=a.target.value.split("|");a.target.value="",r&&ie(r,d)}},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:"\u5728\u72EC\u7ACB\u6807\u7B7E\u9875\u4E2D\u8BD5\u73A9",onClick:ht},"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:Q},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:C==="ui"?"active":"",onClick:()=>H("ui")},"UI \u7F16\u8F91"),e("button",{className:C==="script"?"active":"",onClick:()=>H("script")},"Lua \u811A\u672C"),e("button",{className:C==="logic"?"active":"",onClick:()=>H("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")),C==="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:k?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void Ie("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:k?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void Ie("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},k?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},k?`${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:W,placeholder:k?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:a=>de(a.target.value)}),W?e("button",{onClick:()=>de("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},je.length?je.map(a=>{let r=M[a.kind]||["\u25C7",a.label],d=be.has(a.id),x=!!ce[a.id];return e("div",{key:a.id,className:`qxsim-row${k&&a.depth===0?" template-root":""}${a.id===i.selectedId?" active":""}${d?" canvas-hidden":""}`,style:{paddingLeft:8+a.depth*18,"--depth":a.depth},title:`${r[1]} \xB7 ${a.name} \xB7 GUID ${a.guid??a.id}`,onClick:()=>void N({op:"select",id:a.id}).catch(()=>{})},e("span",{className:"qxsim-chevron"},a.childCount?"\u25BC":""),e("span",{className:"qxsim-kind"},r[0]),e("span",{className:"qxsim-row-label"},a.name),e("span",{className:"qxsim-row-end"},k&&a.depth===0?e(u.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${x?" off":""}`,type:"button",title:x?"\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":!x,onClick:F=>St(F,a.id)},x?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},k&&w?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,w.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:$t,onChange:a=>void N({op:"reparent",id:w.id,parentId:a.target.value}).then(()=>p(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"),Ct.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:w.siblingIndex<=0,onClick:()=>void N({op:"moveSibling",id:w.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:w.siblingIndex>=w.siblingCount-1,onClick:()=>void N({op:"moveSibling",id:w.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},w.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${w.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:k&&j==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${w?w.name:"\u5F53\u524D\u63A7\u4EF6"}`},k&&j==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${w?`\u201C${w.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),k?e("span",{className:"qxsim-add-mode"},e("button",{className:j==="template"?"active":"",onClick:()=>pe("template")},"\u9876\u5C42"),e("button",{className:j==="child"?"active":"",onClick:()=>pe("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},G.filter(([a])=>k||a!=="container").map(([a,r])=>e("button",{key:a,title:`${k&&j==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${r}`,onClick:()=>gt(a,r)},`\uFF0B ${r}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:Le},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(I*yt))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,k?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},i.canvas.platform),e("span",null,`${Me} \xB7 ${I}\xD7${O} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${I} / ${O}`},onClick:a=>{let r=a.currentTarget.getBoundingClientRect();N({op:"pick",x:(a.clientX-r.left)*I/r.width,y:(r.bottom-a.clientY)*O/r.height}).catch(()=>{})}},Nt.map(a=>it(a,i,I,O))))),m?e("div",{className:"qxsim-status error"},"\u26A0 ",m):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${i.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,b||(w?`\u5F53\u524D\uFF1A${w.name}`:"")),e("span",{className:"spacer"}),e("span",null,k?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"))),e("aside",{className:"qxsim-inspector"},i.inspector?e(u.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(M[i.inspector.kind]||["\u25C7"])[0]),e("strong",null,i.inspector.label),k&&w?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},k&&w?.depth===0?"\u5BFC\u51FA prefabId ":"\u63A7\u4EF6 GUID ",e("code",null,i.inspector.guid??i.inspector.id)," \xB7 ",w?.name||"\u8282\u70B9",k&&w?.depth===0?e("small",null,"\uFF08\u771F\u5B9E\u7F16\u8F91\u5668\u5BFC\u5165\u540E\u53EF\u80FD\u91CD\u6620\u5C04\uFF09"):null)),e("div",{className:"qxsim-tabs",style:fe?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:P==="base"?"active":"",onClick:()=>T("base")},"\u57FA\u7840\u5C5E\u6027"),fe?e("button",{className:P==="script"?"active":"",onClick:()=>T("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},fe&&P==="script"?e(et,{snap:i,addScriptMounted:a=>void Ee({controlId:a,controlAsset:i.asset?.type}).then(()=>H("script")),mountScriptTo:ut,unmountScript:xt,openScript:a=>{K(a),H("script")}}):e(He,{inspector:i.inspector,commit:lt,createStateChild:ct})),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void N({op:"remove"}).catch(()=>{})},k&&w?.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"))):C==="script"?e(Xe,{snap:i,selectedScriptId:me,selectScript:a=>{Te(),K(a)},draft:xe,updateDraft:dt,saveScript:()=>void te().then(()=>p("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void Ee(),removeScript:mt,exportLua:a=>void ie("lua",a),exportScripts:()=>void ie("scripts"),exportScriptsGia:()=>void ie("scripts-gia"),notice:b}):e(Qe,{snap:i,draft:ze,setDraft:ue,saveLogic:()=>void ae().catch(()=>{}),notice:b,error:m}))}return{SimulatorView:nt,ensureStyle:Be,removeStyle:()=>document.getElementById(U)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:u=>{let B={},ne=u("react"),D=Oe(ne,{async api(e,U,se){let M=await fetch("/qxqy-simulator/api/"+U,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...se||{}})}),G=await M.json();if(!M.ok||!G.ok)throw new Error(G.error||"Request failed");return G.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return B.inject=["slots"],B.apply=e=>{D.ensureStyle(),e.effect(()=>D.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"},D.SimulatorView))},B}});})();
|