dsh-plugin-beyond-simulator 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dsh-plugin/cordis.patch.yml +1 -1
- package/dsh-plugin/dist/client.js +2 -2
- package/dsh-plugin/dist/index.js +8 -8
- package/dsh-plugin/dist/play-renderer.js +38 -38
- package/dsh-plugin/dist/worker.js +6 -6
- package/dsh-plugin/presets/wonderland-lua-builder/skills/qxqy-game-studio/references/04-art-assets.md +1 -1
- package/dsh-plugin/presets/wonderland-lua-builder/skills/qxqy-game-studio/references/05-lua-implementation.md +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -87,13 +87,15 @@ MCP 可以独立使用。组合 Web 时,让两者的 `--workspace` 指向同
|
|
|
87
87
|
|
|
88
88
|
准备 Node.js 22+ 和 DeepSeek Harness,选择下面一种安装方式。GitHub 安装还需要 Git,会自动从源码构建;本地安装包路径以仓库根目录为基准,可按文末的[构建说明](#从源码构建)生成,文件名以 `release/manifest.json` 为准。
|
|
89
89
|
|
|
90
|
+
插件 2.0.7 起将 Harness **0.2 系列(含 `0.2.0-rc.1` 起的候选版本)**纳入安装范围,保留 0.1 系列支持;已验收 `0.2.0-rc.2`。版本检查、预设资源路径及验证范围见 [Harness 0.2 兼容说明](dsh-plugin/README.md#harness-02-兼容性)。
|
|
91
|
+
|
|
90
92
|
```sh
|
|
91
93
|
# 从 npm 安装
|
|
92
94
|
dsh plugin --profile web add dsh-plugin-beyond-simulator
|
|
93
95
|
# 或,从 GitHub 默认分支源码安装
|
|
94
96
|
dsh plugin --profile web add github:1475505/miliastra-beyond-simulator
|
|
95
97
|
# 或,从本地安装包安装
|
|
96
|
-
dsh plugin --profile web add ./release/dsh-plugin-beyond-simulator-
|
|
98
|
+
dsh plugin --profile web add ./release/dsh-plugin-beyond-simulator-2.0.7.tgz
|
|
97
99
|
|
|
98
100
|
dsh --profile web --dump-config
|
|
99
101
|
dsh web
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
99
99
|
config:
|
|
100
100
|
customSkillDirs:
|
|
101
|
-
- !!js "process.getBuiltinModule('node:
|
|
101
|
+
- !!js "process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('dsh-plugin-beyond-simulator/package.json')), 'dsh-plugin/presets/wonderland-lua-builder/skills')"
|
|
102
102
|
|
|
103
103
|
- id: tool-skill
|
|
104
104
|
name: '@deepseek-ai/dsh-tool-skill'
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
.qxsim-search{height:32px;margin:8px;display:flex;align-items:center;gap:7px;padding:0 9px;border:1px solid var(--line);border-radius:16px;background:var(--input);color:var(--muted)}.qxsim-search input{min-width:0;flex:1;border:0;outline:0;background:transparent}.qxsim-search button{border:0;background:transparent;color:var(--muted)}.qxsim-tree-scroll{flex:1;min-height:0;overflow:auto;padding:3px 6px 8px}.qxsim-row{position:relative;height:32px;display:flex;align-items:center;gap:6px;padding-right:7px;border:1px solid transparent;border-radius:4px;cursor:pointer;white-space:nowrap;overflow:hidden}.qxsim-row.template-root{height:38px;margin-top:5px;border-top-color:var(--lineSoft);background:color-mix(in srgb,var(--blue) 5%,transparent)}.qxsim-row.template-root:first-child{margin-top:0}.qxsim-row:not(.template-root):before{content:"";position:absolute;left:13px;top:-6px;bottom:16px;border-left:1px solid var(--lineSoft);pointer-events:none}.qxsim-row:hover{background:var(--hover)}.qxsim-row.active{background:linear-gradient(90deg,#3569cf,#315a9f);border-color:#4d7ee4;color:#fff}.qxsim-chevron{width:9px;color:var(--muted);font-size:9px}.qxsim-kind{width:19px;height:19px;display:inline-grid;place-items:center;flex:0 0 19px;border:1px solid currentColor;border-radius:3px;font-size:9px}.qxsim-row-label{min-width:0;overflow:hidden;text-overflow:ellipsis}.qxsim-row-end{margin-left:auto;display:flex;align-items:center;gap:4px;flex:0 0 auto}.qxsim-row.canvas-hidden .qxsim-row-label{opacity:.45}.qxsim-eye{width:20px;height:20px;display:grid;place-items:center;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:12px;line-height:1}.qxsim-eye:hover{background:var(--hover);color:var(--text)}.qxsim-row.active .qxsim-eye{color:#d7e6ff}.qxsim-row.active .qxsim-eye:hover{background:#ffffff24;color:#fff}.qxsim-eye.off{opacity:.55}.qxsim-incomplete{color:#e4a743;font-size:9px}.qxsim-tree-foot{flex:0 0 auto;padding:5px;border-top:1px solid var(--lineSoft)}.qxsim-hierarchy{margin-bottom:5px;padding:5px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--input) 78%,transparent)}.qxsim-hierarchy-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;font-size:10px}.qxsim-hierarchy-head strong{font-weight:650}.qxsim-hierarchy-head span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.qxsim-parent-row{display:grid;grid-template-columns:minmax(0,1fr) 24px 24px;gap:3px}.qxsim-parent-row select,.qxsim-parent-row button{height:24px;min-width:0;border:1px solid var(--line);border-radius:4px;background:var(--button)}.qxsim-parent-row select{padding:0 5px}.qxsim-hierarchy-note{margin-top:3px;color:var(--muted);font-size:9px;line-height:1.3}.qxsim-add{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}.qxsim-add button{height:22px;padding:0 4px;border:1px solid var(--line);border-radius:4px;background:var(--button);color:var(--muted);font-size:11px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qxsim-add button:hover{color:var(--text);border-color:var(--blue)}
|
|
12
12
|
.qxsim-center{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--workspace)}.qxsim-workspace{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:34px 22px 20px;overflow:auto;background-color:var(--workspace);background-image:radial-gradient(#ffffff0b 1px,transparent 1px),linear-gradient(135deg,#ffffff09 25%,transparent 25%,transparent 75%,#00000008 75%);background-size:4px 4px,24px 24px}.qxsim-stage-shell{position:relative;flex:0 0 auto;max-width:100%;filter:drop-shadow(0 12px 24px #0004)}.qxsim-stage-label{position:absolute;left:0;right:0;top:-27px;display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.qxsim-stage-label b{padding:2px 7px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);font-weight:600}.qxsim-stage{position:relative;max-width:100%;background-color:#28313e;background-image:linear-gradient(45deg,#ffffff08 25%,transparent 25%),linear-gradient(-45deg,#ffffff08 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ffffff08 75%),linear-gradient(-45deg,transparent 75%,#ffffff08 75%),radial-gradient(circle at 50% 45%,#466f9b38,transparent 48%);background-position:0 0,0 8px,8px -8px,-8px 0,0 0;background-size:16px 16px,16px 16px,16px 16px,16px 16px,100% 100%;border:1px solid #40b8cf;outline:1px solid #1f2732b3;overflow:hidden;touch-action:none;user-select:none}.qxsim-stage:before,.qxsim-stage:after{content:"";position:absolute;pointer-events:none;opacity:.12}.qxsim-stage:before{left:50%;top:0;bottom:0;border-left:1px dashed #cfe9ff}.qxsim-stage:after{top:50%;left:0;right:0;border-top:1px dashed #cfe9ff}
|
|
13
13
|
.qxsim-box{position:absolute;box-sizing:border-box;border:1px solid #cbdaged80;overflow:visible;display:flex;align-items:center;justify-content:center;white-space:pre-wrap;pointer-events:none;transform:rotate(var(--rotation,0deg));transform-origin:center}.qxsim-box.container{border-color:#4ea5e66b;background:transparent}.qxsim-box.textbox,.qxsim-box.textwindow{overflow:hidden}.qxsim-box.cursor{border-style:dashed;background:#4a8eb519}.qxsim-box.reference{border-style:dashed;background:#7365c219}.qxsim-box.grid{background-image:linear-gradient(#6a92bd26 1px,transparent 1px),linear-gradient(90deg,#6a92bd26 1px,transparent 1px);background-size:20px 20px}.qxsim-box.keyhint{border-radius:4px;background:#2b3441b8}.qxsim-box.animation,.qxsim-box.fullscreen{border-style:dotted}.qxsim-box.button{border-radius:6px;background:linear-gradient(#465467e6,#28313ee6);box-shadow:inset 0 0 0 1px #ffffff14}.qxsim-box.selected{z-index:2;border-color:#61b9ff;box-shadow:inset 0 0 0 1px #3a76ff,0 0 0 1px #0006}.qxsim-box.dynamic{border-style:dashed}.qxsim-box.pressed{filter:brightness(.72);transform:rotate(var(--rotation,0deg)) scale(.98)}.qxsim-box-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 4px;border-radius:3px;color:#e7edf5;background:#111925a8;text-shadow:0 1px 2px #000;font-size:10px}.qxsim-box.fullscreen>.qxsim-box-label{position:absolute;left:5px;top:5px}.qxsim-handle{position:absolute;width:7px;height:7px;border:1px solid #fff;background:#4388ff;box-shadow:0 0 0 1px #2d4e88}.qxsim-handle.tl{left:-4px;top:-4px}.qxsim-handle.tr{right:-4px;top:-4px}.qxsim-handle.bl{left:-4px;bottom:-4px}.qxsim-handle.br{right:-4px;bottom:-4px}
|
|
14
|
-
.qxsim-status{min-height:30px;display:flex;align-items:center;gap:10px;padding:5px 10px;border-top:1px solid var(--line);background:var(--status);color:var(--muted);font-size:10px}.qxsim-status .spacer{flex:1}.qxsim-status.error{color:var(--danger)}
|
|
14
|
+
.qxsim-status{min-height:30px;display:flex;align-items:center;gap:10px;padding:5px 10px;border-top:1px solid var(--line);background:var(--status);color:var(--muted);font-size:10px}.qxsim-status .spacer{flex:1}.qxsim-community{color:inherit;text-decoration:none;white-space:nowrap}.qxsim-community:hover{color:var(--text);text-decoration:underline}.qxsim-status.error{color:var(--danger)}
|
|
15
15
|
.qxsim-inspector-head{padding:9px 11px 8px;border-bottom:1px solid var(--lineSoft)}.qxsim-inspector-line{display:flex;align-items:center;gap:7px}.qxsim-inspector-line strong{font-size:15px}.qxsim-node-id{margin-top:2px;color:var(--muted);font-size:10px}.qxsim-node-id code{color:#4f7fe9}.qxsim-tabs{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin:7px 9px 5px;padding:3px;border:1px solid var(--line);border-radius:17px;background:var(--input)}.qxsim-tabs button{height:28px;border:0;border-radius:14px;background:transparent;color:var(--muted)}.qxsim-tabs button.active{color:#fff;background:linear-gradient(#4c83ff,#3d70dc)}.qxsim-inspector-scroll{flex:1;min-height:0;overflow:auto;padding:0 7px 9px;scrollbar-color:color-mix(in srgb,var(--muted) 55%,transparent) transparent}
|
|
16
16
|
.qxsim-section{margin:5px 0;border:1px solid var(--line);border-radius:6px;background:var(--panel2);overflow:hidden}.qxsim-section summary{height:34px;display:flex;align-items:center;gap:7px;padding:0 9px;font-weight:650;cursor:pointer;list-style:none}.qxsim-section summary::-webkit-details-marker{display:none}.qxsim-section summary:before{content:"\u203A";color:var(--muted)}.qxsim-section[open] summary:before{transform:rotate(90deg)}.qxsim-section summary:after{content:"\u2261";margin-left:auto;color:var(--muted)}.qxsim-section-body{padding:8px 9px 9px;border-top:1px solid var(--lineSoft)}.qxsim-field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.qxsim-field:last-child{margin-bottom:0}.qxsim-field-label{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:11px}.qxsim-field small{color:var(--muted)}.qxsim-field input[type=text],.qxsim-field input[type=number],.qxsim-field textarea,.qxsim-field select{width:100%;min-width:0;border:1px solid var(--line);border-radius:5px;outline:0;background:var(--input);padding:5px 7px}.qxsim-field input:focus,.qxsim-field textarea:focus,.qxsim-field select:focus{border-color:var(--blue);box-shadow:0 0 0 2px #4075e52e}.qxsim-field select,.qxsim-field input[type=number]{height:31px}.qxsim-field textarea{resize:vertical}.qxsim-note{padding:7px 8px;border-left:2px solid #dea943;background:color-mix(in srgb,#dea943 10%,var(--panel2));color:var(--muted)}
|
|
17
17
|
.qxsim-switch-row{min-height:32px;display:flex;align-items:center;gap:8px;margin-bottom:4px}.qxsim-switch{position:relative;width:40px;height:22px;margin-left:auto;flex:0 0 40px}.qxsim-switch input{position:absolute;opacity:0}.qxsim-switch-track{position:absolute;inset:0;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--muted) 28%,var(--input))}.qxsim-switch-track:after{content:"";position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:var(--muted);box-shadow:0 1px 3px #0006;transition:.15s}.qxsim-switch input:checked+.qxsim-switch-track{border-color:#5688f4;background:#477cec}.qxsim-switch input:checked+.qxsim-switch-track:after{left:21px;background:#fff}.qxsim-pair{display:grid;grid-template-columns:42px minmax(0,1fr) minmax(0,1fr);gap:5px;align-items:end;margin-bottom:7px}.qxsim-pair-name{padding-bottom:7px;color:var(--muted);font-size:11px}.qxsim-pair .qxsim-field{margin:0}.qxsim-pair .qxsim-field-label{font-size:10px}.qxsim-axis{display:grid;place-items:center;width:17px;height:17px;border-radius:3px;font-size:10px}.qxsim-axis.x{color:#ff9aa6;background:#6c2733}.qxsim-axis.y{color:#a9e178;background:#2f5726}.qxsim-axis.w,.qxsim-axis.h{color:#8bc7ff;background:#294762}.qxsim-color-row{display:grid;grid-template-columns:34px 1fr;gap:6px}.qxsim-color-swatch{position:relative;width:34px;height:31px;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#fff}.qxsim-color-swatch input{position:absolute;inset:-8px;width:50px;height:47px;padding:0;border:0;cursor:pointer}.qxsim-percent{display:grid;grid-template-columns:minmax(0,1fr) 58px;gap:7px;align-items:center}.qxsim-percent input[type=range]{width:100%;accent-color:var(--blue)}.qxsim-percent output{height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;background:var(--input)}.qxsim-subfields{margin:2px 0 8px 8px;padding:7px 0 2px 9px;border-left:2px solid color-mix(in srgb,var(--blue) 55%,var(--line))}.qxsim-state-field{margin:8px 0}.qxsim-state-label{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--muted);font-size:11px}.qxsim-unsupported{min-height:31px;display:flex;align-items:center;padding:5px 8px;border:1px dashed var(--line);border-radius:5px;background:color-mix(in srgb,var(--muted) 8%,var(--input));color:var(--muted)}.qxsim-state-ref{display:grid;grid-template-columns:32px minmax(0,1fr);height:54px;border:1px dashed var(--line);border-radius:6px;background:color-mix(in srgb,var(--input) 72%,transparent);overflow:hidden}.qxsim-state-ref button{border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);font-size:22px}.qxsim-state-ref button:hover{color:var(--blue);background:var(--hover)}.qxsim-state-ref select{min-width:0;border:0;outline:0;background:transparent;padding:0 7px}.qxsim-script-actions{display:flex;justify-content:flex-end}.qxsim-script-actions button{height:30px;padding:0 10px;border:1px solid #4779e6;border-radius:5px;color:#fff;background:#2e5cab}.qxsim-empty{padding:22px 10px;text-align:center;color:var(--muted)}
|
|
@@ -25,4 +25,4 @@
|
|
|
25
25
|
`,D={"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"]},U=[["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"]],se={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 _(){if(document.getElementById(G))return;let t=document.createElement("style");t.id=G,t.textContent=Y,document.head.appendChild(t)}function re(){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 fe(){let[t,s]=m.useState(re);return m.useEffect(()=>{let i=()=>s(re()),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 Q(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 L(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 A=x;function oe(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 R(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 V=t=>typeof t=="object"?t.value:t,le=t=>typeof t=="object"?t.label:t,ce=[{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 J(t){return String(t.id||"").split("-").slice(1).join(":")}function be(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 E({field:t,commit:s,axis:i}){let n=t.type==="color"?j(t.value):t.value==null?"":String(t.value),[o,c]=m.useState(n);if(m.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||[]],b=String(t.value??"");return l.some(v=>String(V(v))===b)||l.unshift({value:t.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${t.unknownValue??(b||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},t.label),e("select",{value:b,disabled:!!t.readonly,onChange:v=>s(t.key,v.target.value)},l.map(v=>e("option",{key:String(V(v)),value:V(v)},le(v)))))}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:b=>s(t.key,Number(b.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:b=>{let v=`#${l.slice(1,3)}${b.target.value.slice(1).toUpperCase()}`;c(v),s(t.key,v)}})),e("input",{type:"text",value:o,spellCheck:!1,"aria-label":`${t.label} ARGB`,onChange:b=>c(b.target.value),onBlur:()=>s(t.key,o),onKeyDown:b=>{b.key==="Enter"&&b.currentTarget.blur(),b.key==="Escape"&&c(j(t.value))}})))}let g={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",{...g,rows:4}):e("input",{...g,type:t.type==="number"?"number":"text",step:t.type==="number"?"any":void 0}))}function M({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 Ne(t){let s={};for(let i of t||[])s[i.key]=i;return s}function F({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(E,{field:s,axis:n,commit:c}),e(E,{field:i,axis:o,commit:c}))}function de({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(V(n)),value:V(n)},le(n))))))}function pe({inspector:t,commit:s,createStateChild:i}){let n=Ne(t.fields),o=b=>b?.type==="node"?e(de,{key:b.key,field:b,commit:s,createStateChild:i}):b?e(E,{key:b.key,field:b,commit:s}):null,c=(se[t.kind]||[]).map(b=>n[b]).filter(Boolean).map(o),g=null;if(t.kind==="image"){let b=n.fillType?.value==="Horizontal"?n.fillHorizontalType:n.fillType?.value==="Vertical"?n.fillVerticalType:n.fillType?.value==="Radial90"?n.fillRadial90Type:n.fillRadialType,v=[o(n.enableMask),o(n.enableSoftEdge),n.enableSoftEdge?.value?e("div",{className:"qxsim-subfields",key:"soft-fields"},o(n.softEdgeMode),e(F,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:n.softEdgeWidthX,y:n.softEdgeWidthY,commit:s}),e(F,{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(b),o(n.fillAmount)):null,o(n.reverseMaskArea)];g=e(m.Fragment,null,e(M,{title:"\u56FE\u7247\u8BBE\u7F6E"},o(n.imageSource),o(n.imageId),o(n.imageColor)),e(M,{title:"\u906E\u7F69\u8BBE\u7F6E"},v))}let l=t.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":t.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${t.label}\u8BBE\u7F6E`;return e(m.Fragment,null,e(M,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},e(E,{field:n.name,commit:s})),e(M,{title:"\u53D8\u6362"},n.posX?e(F,{label:"\u4F4D\u7F6E",x:n.posX,y:n.posY,commit:s}):null,n.width?e(F,{label:"\u5927\u5C0F",x:n.width,y:n.height,xAxis:"W",yAxis:"H",commit:s}):null,n.rotationZ?e(E,{field:n.rotationZ,commit:s}):null,n.syncAllDevices?e(E,{field:n.syncAllDevices,commit:s}):null,n.anchorType?e(E,{field:n.anchorType,commit:s}):null,n.anchorMinX?e(F,{label:"Min",x:n.anchorMinX,y:n.anchorMinY,commit:s}):null,n.anchorMaxX?e(F,{label:"Max",x:n.anchorMaxX,y:n.anchorMaxY,commit:s}):null,n.pivotX?e(F,{label:"\u4E2D\u5FC3",x:n.pivotX,y:n.pivotY,commit:s}):null),e(M,{title:"\u521B\u5EFA\u8BBE\u7F6E"},n.active?e(E,{field:n.active,commit:s}):null,n.visible?e(E,{field:n.visible,commit:s}):null),g||(c.length?e(M,{title:l},c):null),n.canControllerFocus?e(M,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},e(E,{field:n.canControllerFocus,commit:s})):null,n.incomplete?e(M,{title:"\u5B9E\u73B0\u72B6\u6001"},e(E,{field:n.incomplete,commit:s})):null)}function H({snap:t,selectedScriptId:s,selectScript:i,draft:n,updateDraft:o,saveScript:c,addScript:g,removeScript:l,exportLua:b,exportScripts:v,exportScriptsGia:S,notice:B}){let y=t.scripts||[],u=y.find(h=>h.id===s)||null,w=t.mountTargets||[],k=w.filter(h=>h.assetType==="server-control-template"),q=w.filter(h=>h.assetType==="client-control-template"),W=h=>{let I=w.find(ee=>ee.id===h);return I?`${I.assetLabel} \xB7 ${I.name}`:""};return e("div",{className:"qxsim-script-page"},e("aside",{className:"qxsim-script-assets"},e("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${y.length}\uFF09`),e("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:g},"\uFF0B \u65B0\u5EFA\u811A\u672C"),y.length?y.map(h=>e("div",{key:h.id,className:"qxsim-script-list-row"},e("button",{className:`qxsim-script-asset${h.id===s?" active":""}`,onClick:()=>i(h.id)},e("strong",null,h.path||"(\u672A\u547D\u540D\u811A\u672C)"),e("small",null,h.mounted?`\u6302\u8F7D\uFF1A${h.assetLabel} \xB7 ${h.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),e("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>b(h.id)},"\u21E9"),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>l(h.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"},u&&n?e(m.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 ${u.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:h=>o({path:h.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:h=>{let[I,ee]=h.target.value.split("|");o(ee?{controlId:ee,controlAsset:I}:{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"},k.map(h=>e("option",{key:h.id,value:`${h.assetType}|${h.id}`},`${h.name} \xB7 ${h.id}`))),q.length?e("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},q.map(h=>e("option",{key:h.id,value:`${h.assetType}|${h.id}`},`${h.name} \xB7 ${h.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:h=>o({source:h.target.value})})),e("div",{className:"qxsim-script-footer"},e("span",null,n.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":B||(u.mounted?`\u5DF2\u6302\u8F7D\uFF1A${W(u.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:v},"\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 p(t){if(t===void 0)return"null";try{return JSON.stringify(t)}catch{return String(t)}}function z(t){let s=String(t??"").trim();if(!s)return null;try{return JSON.parse(s)}catch{return s}}function O(t){return!!(t&&typeof t=="object"&&!Array.isArray(t)&&Object.prototype.hasOwnProperty.call(t,"fromSignalParam"))}function De(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=>tt(o)):[me("setCustomVariable")]}))}}let Be=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Fe=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ue={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 Se(t){return Fe.includes(t)&&t!=="AllPlayers"?t:t==="Level"?"Level":"PlayerSelf"}function Ce(t){return Be.includes(t)?t:"PlayerSelf"}function me(t){return t==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function Qe(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:Ce(i.target),signalName:String(i.signalName||"").trim(),params:Array.isArray(i.params)?i.params:[]}:{kind:"setCustomVariable",entityType:Se(i?.entityType),name:String(i?.name||"").trim(),value:i&&Object.prototype.hasOwnProperty.call(i,"value")?i.value:0})}))}}function et(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,g]of o.entries())g?.kind==="sendClientScriptSignal"?String(g.signalName||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(g?.name||"").trim()||s.push(`\u89C4\u5219 ${i+1} \u52A8\u4F5C ${c+1} \u9700\u8981\u53D8\u91CF\u540D`)}return s}function tt(t){if(t?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:Ce(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:Se(t?.entityType),name:String(t?.name||""),value:s}}function _e({label:t,value:s,onChange:i}){let n=O(s),[o,c]=m.useState(()=>n?"":p(s));return m.useEffect(()=>{O(s)||c(p(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:g=>{g.target.value==="param"?i({fromSignalParam:Number(s?.fromSignalParam)||0}):i(z(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:g=>i({fromSignalParam:Math.max(0,Math.trunc(Number(g.target.value)||0))})}):e("textarea",{className:"qxsim-logic-json",value:o,spellCheck:!1,"aria-label":`${t}\u5B57\u9762\u91CF`,onBlur:()=>i(z(o)),onChange:g=>c(g.target.value)}))}function at({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(_e,{label:`\u53C2\u6570 ${o}`,value:n,onChange:c=>s(i.map((g,l)=>l===o?c:g))})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>s(i.filter((c,g)=>g!==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 it({snap:t,draft:s,setDraft:i,saveLogic:n,notice:o,error:c}){let g=s?.rules||[];function l(y){i({version:1,rules:y,dirty:!0})}function b(){l(g.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[me("setCustomVariable")]}]))}function v(y,u){l(g.map((w,k)=>k===y?{...w,...u}:w))}function S(y,u,w){let k=g[y];k&&v(y,{actions:k.actions.map((q,W)=>W===u?{...q,...w}:q)})}function B(y,u,w){S(y,u,me(w))}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,g.length?g.map((y,u)=>e("section",{key:y.id||u,className:"qxsim-logic-rule"},e("div",{className:"qxsim-logic-rule-head"},e("strong",null,`\u89C4\u5219 ${u+1}`),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),e("input",{type:"text",value:y.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${u+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:w=>v(u,{signalName:w.target.value})})),e("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>l(g.filter((w,k)=>k!==u))},"\u2715")),e("div",{className:"qxsim-logic-actions"},(y.actions||[]).map((w,k)=>e("div",{key:k,className:"qxsim-logic-action"},e("div",{className:"qxsim-logic-action-head"},e("strong",null,`\u52A8\u4F5C ${k+1}`),e("select",{value:w.kind,"aria-label":`\u89C4\u5219 ${u+1} \u52A8\u4F5C ${k+1} \u7C7B\u578B`,onChange:q=>B(u,k,q.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,w.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:(y.actions||[]).length<=1,onClick:()=>v(u,{actions:y.actions.filter((q,W)=>W!==k)})},"\u2715")),w.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:Ce(w.target),onChange:q=>S(u,k,{target:q.target.value})},Be.map(q=>e("option",{key:q,value:q},Ue[q])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),e("input",{type:"text",value:w.signalName,placeholder:"GoldChanged",onChange:q=>S(u,k,{signalName:q.target.value})})),e(at,{params:w.params,onChange:q=>S(u,k,{params:q})})):e("div",{className:"qxsim-logic-fields"},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),e("select",{value:Se(w.entityType),onChange:q=>S(u,k,{entityType:q.target.value})},Fe.map(q=>e("option",{key:q,value:q},Ue[q])))),e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),e("input",{type:"text",value:w.name,placeholder:"Gold",onChange:q=>S(u,k,{name:q.target.value})})),e("div",{className:"wide"},e(_e,{label:"\u53D8\u91CF\u503C",value:w.value,onChange:q=>S(u,k,{value:q})}))))),e("div",{className:"qxsim-logic-actions-foot"},e("button",{className:"qxsim-action",onClick:()=>v(u,{actions:(y.actions||[]).concat([me("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),e("button",{className:"qxsim-action",onClick:()=>v(u,{actions:(y.actions||[]).concat([me("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:b},"\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 nt({inspector:t,onSave:s}){let[i,n]=m.useState(String(t.guid??"")),[o,c]=m.useState(!1),[g,l]=m.useState("");m.useEffect(()=>{n(String(t.guid??"")),l("")},[t.guid]);async function b(v){v.preventDefault();let S=i.trim();if(!/^[0-9]+$/.test(S)||Number(S)<1||Number(S)>2147483647){l("\u8BF7\u8F93\u5165 1\u20132147483647 \u4E4B\u95F4\u7684\u6574\u6570\u7D22\u5F15\u3002");return}c(!0),l("");try{await s(t.id,Number(S))}catch(B){l(B?.message||String(B))}finally{c(!1)}}return e("form",{onSubmit:b,style:{marginTop:8}},e("label",{className:"qxsim-field"},e("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15"),e("div",{style:{display:"flex",gap:6}},e("input",{type:"text",inputMode:"numeric","aria-label":"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15",value:i,disabled:o,onChange:v=>{n(v.target.value),l("")},onKeyDown:v=>{v.key==="Escape"&&(n(String(t.guid)),l(""))}}),e("button",{type:"submit",className:"qxsim-action",disabled:o||i.trim()===String(t.guid)},o?"\u4FDD\u5B58\u4E2D":"\u4FEE\u6539"))),g?e("div",{role:"alert",className:"qxsim-note"},g):null,e("div",{className:"qxsim-muted",style:{lineHeight:1.5}},"\u586B\u5199 GIA \u5BFC\u5165\u540E\u5B9E\u9645\u663E\u793A\u7684\u7D22\u5F15\uFF1B\u4FEE\u6539\u540E\u987B\u8BA9 AI \u540C\u6B65 Lua \u811A\u672C\u4E2D\u7684\u5F15\u7528\u3002"))}function st({snap:t,addScriptMounted:s,mountScriptTo:i,unmountScript:n,openScript:o}){let c=(t.scripts||[]).filter(l=>l.controlId===t.selectedId),g=(t.scripts||[]).filter(l=>l.controlId!==t.selectedId);return e(m.Fragment,null,e(M,{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(M,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},g.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 b=l.target.value;l.target.value="",b&&i(b)}},e("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),g.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 rt(t,s){let i=null,n=null;function o(c,g){c.id===s&&(i=c,n=g);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 g=function(l){for(let b of l.children||[])b===n&&(c=l),g(b)},c=null;g(t),n=c}return n?.id||t.children?.find(c=>c.kind==="container")?.id}function ot(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:rt(t,s)}function lt(t,s,i,n){let o=t,c=t.kind,g=c==="textbox"||c==="textwindow",l=o.renderLeft??o.left,b=o.renderBottom??o.bottom,v=o.renderWidth??o.width,S=o.renderHeight??o.height,B=o.renderRotationZ??t.rotationZ??0,y={left:`${l/i*100}%`,bottom:`${b/n*100}%`,width:`${v/i*100}%`,height:`${S/n*100}%`,"--rotation":`${-Number(B)}deg`,fontSize:Math.max(8,Math.min(40,Number(t.fontSize||12))),color:g?Q(t.fontColor,4294967295):"#fff"};c==="image"?Object.assign(y,L(t.primitive,Q(t.imageColor,4294967295))):g?(y.background=Q(t.bgColor,16777215),y.justifyContent=t.horizontalAlignment==="Right"?"flex-end":t.horizontalAlignment==="Middle"?"center":"flex-start",y.alignItems=t.verticalAlignment==="Bottom"?"flex-end":t.verticalAlignment==="Middle"?"center":"flex-start",y.textShadow=t.enableOutline===!1?"none":`0 0 2px ${Q(t.outlineColor,4278190080)}`):c==="container"&&(y.background="transparent");let u=t.id===s.selectedId,w=g?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||D[c]?.[1]||c):null;return e("div",{key:t.id,className:`qxsim-box ${c}${u?" selected":""}${t.instantiated?" dynamic":""}${t.pressed?" pressed":""}`,style:y},w,u&&c!=="container"?["tl","tr","bl","br"].map(k=>e("i",{key:k,className:`qxsim-handle ${k}`})):null)}function ct({sessionId:t}){let s=fe(),[i,n]=m.useState(null),o=m.useRef(null),c=m.useRef(Promise.resolve()),[g,l]=m.useState(""),[b,v]=m.useState(null),[S,B]=m.useState(!1),[y,u]=m.useState(""),w=m.useRef(null),[k,q]=m.useState([]),[W,h]=m.useState([]),[I,ee]=m.useState("ui"),[$e,Ae]=m.useState("base"),[Pe,dt]=m.useState("fit"),[ze,pt]=m.useState({}),[he,Le]=m.useState(""),[te,Ie]=m.useState("template"),[Te,ve]=m.useState(""),[Ee,ue]=m.useState(null),[He,Me]=m.useState({version:1,rules:[],dirty:!1}),Ye=m.useRef(null),[ye,mt]=m.useState({width:0,height:0});m.useEffect(()=>{let a=Ye.current;if(!a||typeof ResizeObserver>"u")return;let r=new ResizeObserver(d=>{let f=d[0]?.contentRect;f&&f.width>0&&mt({width:f.width,height:f.height})});return r.observe(a),()=>r.disconnect()},[i?.canvas?.id]);function ae(a,{keepLogicDraft:r=!0}={}){return o.current=a,n(a),a?.scripts&&ve(d=>a.scripts.some(f=>f.id===d)?d:a.scripts[0]?.id||""),Me(d=>r&&d?.dirty?d:De(a?.serverLogic)),a}let qe=m.useCallback(async()=>{try{l(""),ae(await A(t,"get"),{keepLogicDraft:!1})}catch(a){l(a?.message||String(a))}},[t]),we=m.useCallback(async()=>{try{let a=await A(t,"archives");h(a?.archives||[])}catch{h([])}},[t]);m.useEffect(()=>{qe(),we()},[qe,we]);function C(a,r=""){let d=async()=>{let f=o.current;if(!f)throw new Error("editor is not ready");try{if(r&&f.asset?.type!==r)throw new Error("\u5F53\u524D\u8D44\u4EA7\u5DF2\u5207\u6362\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u63A7\u4EF6\u540E\u4FEE\u6539\u7D22\u5F15");let T=await A(t,"patch",{op:{...a,expectedRevision:f.version}});return l(""),ae(T)}catch(T){throw l(T?.message||String(T)),/revision conflict/.test(String(T?.message||T))&&await qe(),T}};return c.current=c.current.then(d,d),c.current}async function ut(a,r,d){await C({op:"setControlGuid",id:a,guid:r},d),u("\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\uFF1B\u8BF7\u8BA9 AI \u6839\u636E\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u540C\u6B65 Lua \u811A\u672C\u5F15\u7528\u3002")}async function xt(){let d=["\u8BF7\u540C\u6B65\u5F53\u524D\u6A21\u62DF\u5668\u5DE5\u7A0B\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u7D22\u5F15\u5F15\u7528\uFF1A",...(o.current?.controlGuidChanges||[]).map(f=>`${f.controlAsset} / ${f.controlName}\uFF08${f.controlId}\uFF09\uFF1A${f.oldGuid} \u2192 ${f.newGuid}\uFF1B\u8BB0\u5F55 ${f.id}`),"\u5148\u8BFB\u53D6\u6700\u65B0\u5FEB\u7167\u7684 controlGuidChanges\uFF0C\u6309\u63A7\u4EF6\u8EAB\u4EFD\u548C\u53D8\u66F4\u987A\u5E8F\u6838\u5BF9\u5168\u90E8 Lua \u811A\u672C\u7684\u7D22\u5F15\u5E38\u91CF\u3001\u914D\u7F6E\u8868\u4E0E\u8C03\u7528\uFF0C\u4FEE\u6539\u5B58\u6863\u4E2D\u7684 source \u53CA\u76F8\u5173 Lua \u6E90\u6587\u4EF6\u3002\u4E0D\u8981\u5168\u5C40\u66FF\u6362\u540C\u503C\u6570\u5B57\uFF0C\u4E5F\u4E0D\u8981\u6539\u8FD0\u884C\u65F6\u5B9E\u4F8B ID \u6216\u56FE\u7247\u8D44\u6E90 ID\u3002","\u68C0\u67E5\u65E7\u7D22\u5F15\u5F15\u7528\u5E76\u91CD\u65B0\u8BD5\u73A9\uFF1B\u786E\u8BA4\u5B8C\u6210\u540E\u7528 acknowledgeControlGuidChanges \u7684 changeIds \u6E05\u9664\u5DF2\u6838\u5BF9\u8BB0\u5F55\uFF0C\u518D\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002"].join(`
|
|
26
26
|
`);try{await navigator.clipboard.writeText(d),u("\u5DF2\u590D\u5236\u7D22\u5F15\u53D8\u66F4\u53CA\u811A\u672C\u540C\u6B65\u8981\u6C42\uFF0C\u53EF\u7C98\u8D34\u7ED9 AI\u3002")}catch{l("\u65E0\u6CD5\u8BBF\u95EE\u526A\u8D34\u677F\uFF0C\u8BF7\u5C06\u4E0A\u65B9\u7D22\u5F15\u53D8\u66F4\u8BB0\u5F55\u4EA4\u7ED9 AI\uFF0C\u5E76\u8981\u6C42\u540C\u6B65 Lua \u811A\u672C\u5F15\u7528\u3002")}}async function gt(){let a=(o.current?.controlGuidChanges||[]).map(r=>r.id);try{await K(),await C({op:"acknowledgeControlGuidChanges",changeIds:a}),u("\u5DF2\u786E\u8BA4\u811A\u672C\u7D22\u5F15\u5F15\u7528\u5B8C\u6210\u540C\u6B65\uFF1B\u8BF7\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u3002")}catch{}}let ft=(a,r)=>void C({op:"set",key:a,value:r}).catch(()=>{});async function bt(a,r){let d=o.current?.inspector?.id;if(d)try{let f=await C({op:"add",kind:"image",parentId:d,name:`${r}\u56FE\u7247`});await C({op:"set",id:d,key:a,value:f.selectedId}),u(`${r}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}m.useEffect(()=>{let a=i?.scripts?.find(r=>r.id===Te);ue(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,Te]);function ht(a){ue(r=>r&&{...r,...a,dirty:!0})}async function K(){let a=Ee;!a||!a.dirty||(await C({op:"updateScript",id:a.id,path:a.path,source:a.source,controlId:a.controlId,controlAsset:a.controlAsset}),ue(r=>r&&r.id===a.id?{...r,dirty:!1}:r))}function Ve(){K().then(()=>u("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function ie({silent:a=!1}={}){let r=He;if(!r||!r.dirty)return;let d=et(r);if(d.length){let T=d[0];throw a||l(T),new Error(T)}let f=await C({op:"setServerLogic",logic:Qe(r)});Me(De(f.serverLogic)),u("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function vt(){ie({silent:!0}).catch(()=>{})}function xe(a){Ve(),vt(),ee(a)}async function Je(a={}){let r=await C({op:"addScript",...a}),d=r.scripts?.[r.scripts.length-1];return d&&ve(d.id),u(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 yt(a){Ee?.id===a&&ue(null),C({op:"removeScript",id:a}).then(()=>u("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function qt(a){C({op:"updateScript",id:a,controlId:""}).then(()=>u("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function wt(a){let r=o.current?.selectedId||"",d=o.current?.asset?.type||"";r&&(ue(f=>f&&f.id===a?{...f,controlId:r,controlAsset:d}:f),C({op:"updateScript",id:a,controlId:r,controlAsset:d}).then(()=>u("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function We(a){if(o.current?.asset?.type!==a)try{let r=await C({op:"selectAsset",assetType:a});Le(""),Ie(a==="client-control-template"?"template":"child"),u(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${r.asset.label}`)}catch{}}function kt(a,r){let d=o.current;if(!d)return;let f=d.asset?.type==="client-control-template"&&te==="template",T=f?{op:"addTemplate",kind:a,name:`${r}\u6A21\u677F`}:{op:"add",kind:a,parentId:ot(d.root,d.selectedId),name:r};C(T).then(()=>u(f?`\u5DF2\u65B0\u589E${r}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${r}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function ke(a,r=""){try{await c.current.catch(()=>{}),await K(),await ie();let d=await A(t,"export",{format:a,assetType:r});if(q([...new Set([...d.warnings||[],...(d.files||[]).flatMap(f=>f.warnings||[])])]),Array.isArray(d?.files)&&d.files.length){for(let f of d.files)oe(f);l(""),u(`\u5DF2\u5BFC\u51FA ${d.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${d.files.map(f=>f.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}oe(d),l(""),u(d.warnings?.length?`\u5DF2\u5BFC\u51FA ${d.filename}\uFF1B\u8BF7\u67E5\u770B\u4E0A\u65B9\u5BFC\u51FA\u8BF4\u660E\u3002`:`\u5DF2\u5BFC\u51FA ${d.filename}`)}catch(d){l(d?.message||String(d))}}async function Nt(a){if(a)try{await c.current.catch(()=>{});let r=await A(t,"load-archive",{path:a});ae(r.snapshot,{keepLogicDraft:!1}),l(""),u(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${a}`),q([])}catch(r){l(r?.message||String(r))}}async function St(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 A(t,"import",{format:r,filename:a.name,data:await R(a)});ae(d.snapshot,{keepLogicDraft:!1}),l(""),u([`\u5DF2\u5BFC\u5165 ${a.name}`,...d.warnings||[]].join(`
|
|
27
27
|
`)),q([])}catch(d){l(d?.message||String(d))}finally{w.current&&(w.current.value="")}}async function Ct(){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 K(),await ie(),a.location.replace(ge(t))}catch(r){a.close(),l(r?.message||String(r))}}async function $t(){if(!(S||!b?.trim())){B(!0);try{await K(),await ie(),await c.current.catch(()=>{});let a=o.current,r=await A(t,"save",{path:b.trim(),expectedRevision:a.version});ae(await A(t,"get")),u(`\u5DF2\u4FDD\u5B58\u5230 ${r.path}`),l(""),v(null),we()}catch(a){l(a?.message||String(a))}finally{B(!1)}}}if(m.useEffect(()=>{i?.inspector?.kind==="server-container"&&Ae("base")},[i?.inspector?.kind]),!i)return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},e("div",{className:"qxsim-status error"},g||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let Z=i.canvas.width,ne=i.canvas.height,Oe=ye.width>0&&ye.height>0?Math.min((ye.width-44)/Z,(ye.height-54)/ne):NaN,At=Number.isFinite(Oe)&&Oe>0?Math.min(2,Math.round(Oe*1e3)/1e3):.5,Pt=Pe==="fit"?At:Number(Pe)||.5,Xe=be(Z,ne),zt=(i.canvas.presets||[]).filter(a=>a.platform===i.canvas.platform);function Lt(a){if(!i||i.canvas.platform===a)return;let r=(i.canvas.presets||[]).filter(f=>f.platform===a);if(!r.length)return;let d=r.find(f=>J(f)===Xe)||r[0];C({op:"setCanvas",canvasId:d.id}).then(()=>u(`\u5DF2\u5207\u6362\u5230${d.label}`)).catch(()=>{})}let P=i.asset?.type==="client-control-template",je=!!(i.inspector&&i.inspector.kind!=="server-container"),Ge=new Set;for(let a of i.tree||[])(ze[a.id]||(a.ancestorIds||[]).some(r=>ze[r]))&&Ge.add(a.id);let It=(i.boxes||[]).filter(a=>a.kind!=="server-container"&&a.visible&&!Ge.has(a.id));function Tt(a,r){a.stopPropagation(),pt(d=>{let f={...d};return f[r]?delete f[r]:f[r]=!0,f})}let Re=i.tree.filter(a=>!he.trim()||`${a.name} ${a.label}`.toLowerCase().includes(he.trim().toLowerCase())),N=i.tree.find(a=>a.id===i.selectedId),Et=P&&N?i.tree.filter(a=>a.id!==N.id&&!(a.ancestorIds||[]).includes(N.id)):[],Mt=N?.parentId||i.root.id;return e("div",{className:"qxsim","data-theme":s,"data-qxsim-session-id":t},b!==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(),$t()}},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:b,disabled:S,onChange:a=>v(a.target.value)})),g?e("div",{role:"alert"},g):null,e("footer",null,e("button",{className:"qxsim-action",type:"button",disabled:S,onClick:()=>v(null)},"\u53D6\u6D88"),e("button",{className:"qxsim-action primary",type:"submit",disabled:S||!b.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"}
|
|
28
|
-
${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"},I==="ui"?e(m.Fragment,null,e("div",{className:"qxsim-device-switch",role:"group","aria-label":"\u76EE\u6807\u8BBE\u5907"},ce.map(a=>e("button",{key:a.key,className:i.canvas.platform===a.key?"active":"",title:a.title,onClick:()=>Lt(a.key)},a.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:i.canvasId,onChange:a=>void C({op:"setCanvas",canvasId:a.target.value}).catch(()=>{})},zt.map(a=>e("option",{key:a.id,value:a.id},`${J(a)} \xB7 ${a.width}\xD7${a.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:Pe,onChange:a=>dt(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"},I==="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"},$?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{l(""),v(o.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:w,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:a=>void St(a.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void we(),onChange:a=>{let r=a.target.value;a.target.value="",r&&Nt(r)}},e("option",{value:"",disabled:!0},i.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...W.length?W.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:()=>w.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&&ke(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:Ct},"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:qe},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:I==="ui"?"active":"",onClick:()=>xe("ui")},"UI \u7F16\u8F91"),e("button",{className:I==="script"?"active":"",onClick:()=>xe("script")},"Lua \u811A\u672C"),e("button",{className:I==="logic"?"active":"",onClick:()=>xe("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")),I==="script"?e(X,{snap:i,patch:C,request:(a,r)=>A(t,a,r),refresh:async()=>ae(await A(t,"get")),prepare:async()=>(await c.current,await K(),await ie(),o.current)}):null,i.controlGuidChanges?.length?e("details",{className:"qxsim-note",open:!0,style:{flexShrink:0,maxHeight:170,overflow:"auto"}},e("summary",{style:{cursor:"pointer"}},`\u5F85\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08${i.controlGuidChanges.length} \u9879\uFF09`),e("div",null,"\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u8BA9 AI \u66F4\u65B0\u5B58\u6863\u811A\u672C\u548C\u76F8\u5173 Lua \u6E90\u6587\u4EF6\uFF0C\u5E76\u91CD\u65B0\u8BD5\u73A9\u6838\u5BF9\u3002"),e("ul",{style:{margin:"5px 0"}},i.controlGuidChanges.map(a=>e("li",{key:a.id},`${a.controlAsset==="client-control-template"?"\u5BA2\u6237\u7AEF\u6A21\u677F":"\u670D\u52A1\u7AEF\u754C\u9762"} \xB7 ${a.controlName}\uFF1A${a.oldGuid} \u2192 ${a.newGuid}`))),e("div",{style:{display:"flex",gap:6}},e("button",{className:"qxsim-action",onClick:xt},"\u590D\u5236\u7ED9 AI"),e("button",{className:"qxsim-action",title:"\u4EC5\u5728\u5DF2\u4FEE\u6539\u6216\u786E\u8BA4\u4E0D\u6D89\u53CA\u811A\u672C\u5F15\u7528\uFF0C\u5E76\u5B8C\u6210\u6838\u5BF9\u540E\u4F7F\u7528",onClick:gt},"\u5DF2\u5B8C\u6210\u811A\u672C\u540C\u6B65"))):null,k.length?e("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},e("summary",{style:{cursor:"pointer"}},`\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08${k.length} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09`),e("button",{className:"qxsim-action",onClick:()=>q([])},"\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E"),e("ul",null,k.map((a,r)=>e("li",{key:r},a)))):null,I==="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:P?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void We("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:P?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void We("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},P?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},P?`${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:he,placeholder:P?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:a=>Le(a.target.value)}),he?e("button",{onClick:()=>Le("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},Re.length?Re.map(a=>{let r=D[a.kind]||["\u25C7",a.label],d=Ge.has(a.id),f=!!ze[a.id];return e("div",{key:a.id,className:`qxsim-row${P&&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 C({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"},P&&a.depth===0?e(m.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${f?" off":""}`,type:"button",title:f?"\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":!f,onClick:T=>Tt(T,a.id)},f?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},P&&N?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,N.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:Mt,onChange:a=>void C({op:"reparent",id:N.id,parentId:a.target.value}).then(()=>u(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"),Et.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:N.siblingIndex<=0,onClick:()=>void C({op:"moveSibling",id:N.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:N.siblingIndex>=N.siblingCount-1,onClick:()=>void C({op:"moveSibling",id:N.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},N.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${N.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:P&&te==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${N?N.name:"\u5F53\u524D\u63A7\u4EF6"}`},P&&te==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${N?`\u201C${N.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),P?e("span",{className:"qxsim-add-mode"},e("button",{className:te==="template"?"active":"",onClick:()=>Ie("template")},"\u9876\u5C42"),e("button",{className:te==="child"?"active":"",onClick:()=>Ie("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},U.filter(([a])=>P||a!=="container").map(([a,r])=>e("button",{key:a,title:`${P&&te==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${r}`,onClick:()=>kt(a,r)},`\uFF0B ${r}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:Ye},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(Z*Pt))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,P?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},i.canvas.platform),e("span",null,`${Xe} \xB7 ${Z}\xD7${ne} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${Z} / ${ne}`},onClick:a=>{let r=a.currentTarget.getBoundingClientRect();C({op:"pick",x:(a.clientX-r.left)*Z/r.width,y:(r.bottom-a.clientY)*ne/r.height}).catch(()=>{})}},It.map(a=>lt(a,i,Z,ne))))),g?e("div",{className:"qxsim-status error"},"\u26A0 ",g):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${i.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,y||(N?`\u5F53\u524D\uFF1A${N.name}`:"")),e("span",{className:"spacer"}),e("span",null,P?"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(m.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(D[i.inspector.kind]||["\u25C7"])[0]),e("strong",null,i.inspector.label),P&&N?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},P&&N?.depth===0?"\u6A21\u677F\u7D22\u5F15 ":"\u63A7\u4EF6 GUID ",e("code",null,i.inspector.guid??i.inspector.id)," \xB7 ",N?.name||"\u8282\u70B9"),i.inspector.kind!=="server-container"?e(nt,{key:`${i.asset.type}:${i.inspector.id}`,inspector:i.inspector,onSave:(a,r)=>ut(a,r,i.asset.type)}):null),e("div",{className:"qxsim-tabs",style:je?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:$e==="base"?"active":"",onClick:()=>Ae("base")},"\u57FA\u7840\u5C5E\u6027"),je?e("button",{className:$e==="script"?"active":"",onClick:()=>Ae("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},je&&$e==="script"?e(st,{snap:i,addScriptMounted:a=>void Je({controlId:a,controlAsset:i.asset?.type}).then(()=>xe("script")),mountScriptTo:wt,unmountScript:qt,openScript:a=>{ve(a),xe("script")}}):e(pe,{inspector:i.inspector,commit:ft,createStateChild:bt})),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void C({op:"remove"}).catch(()=>{})},P&&N?.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"))):I==="script"?e(H,{snap:i,selectedScriptId:Te,selectScript:a=>{Ve(),ve(a)},draft:Ee,updateDraft:ht,saveScript:()=>void K().then(()=>u("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void Je(),removeScript:yt,exportLua:a=>void ke("lua",a),exportScripts:()=>void ke("scripts"),exportScriptsGia:()=>void ke("scripts-gia"),notice:y}):e(it,{snap:i,draft:He,setDraft:Me,saveLogic:()=>void ie().catch(()=>{}),notice:y,error:g}))}return{SimulatorView:ct,ensureStyle:_,removeStyle:()=>document.getElementById(G)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:m=>{let x={},ge=m("react"),$=Ze(ge,{async api(e,X,G){let Y=await fetch("/qxqy-simulator/api/"+X,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...G||{}})}),D=await Y.json();if(!Y.ok||!D.ok)throw new Error(D.error||"Request failed");return D.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return x.inject=["slots"],x.apply=e=>{$.ensureStyle(),e.effect(()=>$.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"},$.SimulatorView))},x}});})();
|
|
28
|
+
${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"},I==="ui"?e(m.Fragment,null,e("div",{className:"qxsim-device-switch",role:"group","aria-label":"\u76EE\u6807\u8BBE\u5907"},ce.map(a=>e("button",{key:a.key,className:i.canvas.platform===a.key?"active":"",title:a.title,onClick:()=>Lt(a.key)},a.label))),e("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:i.canvasId,onChange:a=>void C({op:"setCanvas",canvasId:a.target.value}).catch(()=>{})},zt.map(a=>e("option",{key:a.id,value:a.id},`${J(a)} \xB7 ${a.width}\xD7${a.height}`))),e("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:Pe,onChange:a=>dt(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"},I==="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"},$?e("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{l(""),v(o.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,e("div",{className:"qxsim-io"},e("input",{ref:w,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:a=>void St(a.target.files?.[0])}),e("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void we(),onChange:a=>{let r=a.target.value;a.target.value="",r&&Nt(r)}},e("option",{value:"",disabled:!0},i.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...W.length?W.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:()=>w.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&&ke(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:Ct},"\u25B7 \u8BD5\u73A9 \u2197"),e("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:qe},"\u21BB"))),e("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},e("button",{className:I==="ui"?"active":"",onClick:()=>xe("ui")},"UI \u7F16\u8F91"),e("button",{className:I==="script"?"active":"",onClick:()=>xe("script")},"Lua \u811A\u672C"),e("button",{className:I==="logic"?"active":"",onClick:()=>xe("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")),I==="script"?e(X,{snap:i,patch:C,request:(a,r)=>A(t,a,r),refresh:async()=>ae(await A(t,"get")),prepare:async()=>(await c.current,await K(),await ie(),o.current)}):null,i.controlGuidChanges?.length?e("details",{className:"qxsim-note",open:!0,style:{flexShrink:0,maxHeight:170,overflow:"auto"}},e("summary",{style:{cursor:"pointer"}},`\u5F85\u540C\u6B65 Lua \u7D22\u5F15\u5F15\u7528\uFF08${i.controlGuidChanges.length} \u9879\uFF09`),e("div",null,"\u63A7\u4EF6\u7D22\u5F15\u5DF2\u4FEE\u6539\u3002\u8BF7\u8BA9 AI \u66F4\u65B0\u5B58\u6863\u811A\u672C\u548C\u76F8\u5173 Lua \u6E90\u6587\u4EF6\uFF0C\u5E76\u91CD\u65B0\u8BD5\u73A9\u6838\u5BF9\u3002"),e("ul",{style:{margin:"5px 0"}},i.controlGuidChanges.map(a=>e("li",{key:a.id},`${a.controlAsset==="client-control-template"?"\u5BA2\u6237\u7AEF\u6A21\u677F":"\u670D\u52A1\u7AEF\u754C\u9762"} \xB7 ${a.controlName}\uFF1A${a.oldGuid} \u2192 ${a.newGuid}`))),e("div",{style:{display:"flex",gap:6}},e("button",{className:"qxsim-action",onClick:xt},"\u590D\u5236\u7ED9 AI"),e("button",{className:"qxsim-action",title:"\u4EC5\u5728\u5DF2\u4FEE\u6539\u6216\u786E\u8BA4\u4E0D\u6D89\u53CA\u811A\u672C\u5F15\u7528\uFF0C\u5E76\u5B8C\u6210\u6838\u5BF9\u540E\u4F7F\u7528",onClick:gt},"\u5DF2\u5B8C\u6210\u811A\u672C\u540C\u6B65"))):null,k.length?e("details",{className:"qxsim-export-warnings",open:!0,role:"status",style:{flexShrink:0,maxHeight:180,overflow:"auto",padding:"8px 16px",borderBottom:"1px solid currentColor"}},e("summary",{style:{cursor:"pointer"}},`\u4E0A\u6B21\u5BFC\u51FA\u8BF4\u660E\uFF08${k.length} \u9879\uFF0C\u8BF7\u6838\u5BF9\u5BFC\u5165\u540E\u7684\u6548\u679C\uFF09`),e("button",{className:"qxsim-action",onClick:()=>q([])},"\u5173\u95ED\u5BFC\u51FA\u8BF4\u660E"),e("ul",null,k.map((a,r)=>e("li",{key:r},a)))):null,I==="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:P?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void We("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),e("button",{className:P?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void We("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),e("div",{className:"qxsim-pane-head"},e("div",{className:"qxsim-pane-title"},P?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),e("span",{className:"qxsim-muted"},P?`${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:he,placeholder:P?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:a=>Le(a.target.value)}),he?e("button",{onClick:()=>Le("")},"\xD7"):e("span",null,"\u2301")),e("div",{className:"qxsim-tree-scroll"},Re.length?Re.map(a=>{let r=D[a.kind]||["\u25C7",a.label],d=Ge.has(a.id),f=!!ze[a.id];return e("div",{key:a.id,className:`qxsim-row${P&&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 C({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"},P&&a.depth===0?e(m.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${f?" off":""}`,type:"button",title:f?"\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":!f,onClick:T=>Tt(T,a.id)},f?"\u25CC":"\u25C9")))}):e("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),e("div",{className:"qxsim-tree-foot"},P&&N?e("div",{className:"qxsim-hierarchy"},e("div",{className:"qxsim-hierarchy-head"},e("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),e("span",null,N.name)),e("div",{className:"qxsim-parent-row"},e("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:Mt,onChange:a=>void C({op:"reparent",id:N.id,parentId:a.target.value}).then(()=>u(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"),Et.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:N.siblingIndex<=0,onClick:()=>void C({op:"moveSibling",id:N.id,direction:"up"}).catch(()=>{})},"\u2191"),e("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:N.siblingIndex>=N.siblingCount-1,onClick:()=>void C({op:"moveSibling",id:N.id,direction:"down"}).catch(()=>{})},"\u2193")),e("div",{className:"qxsim-hierarchy-note"},N.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${N.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,e("div",{className:"qxsim-palette-head"},e("span",{title:P&&te==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${N?N.name:"\u5F53\u524D\u63A7\u4EF6"}`},P&&te==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${N?`\u201C${N.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),P?e("span",{className:"qxsim-add-mode"},e("button",{className:te==="template"?"active":"",onClick:()=>Ie("template")},"\u9876\u5C42"),e("button",{className:te==="child"?"active":"",onClick:()=>Ie("child")},"\u5B50\u63A7\u4EF6")):null),e("div",{className:"qxsim-add"},U.filter(([a])=>P||a!=="container").map(([a,r])=>e("button",{key:a,title:`${P&&te==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${r}`,onClick:()=>kt(a,r)},`\uFF0B ${r}`))))),e("main",{className:"qxsim-center"},e("div",{className:"qxsim-workspace",ref:Ye},e("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(Z*Pt))}px`}},e("div",{className:"qxsim-stage-label"},e("b",null,P?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),e("span",{className:"qxsim-platform-tag"},i.canvas.platform),e("span",null,`${Xe} \xB7 ${Z}\xD7${ne} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),e("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${Z} / ${ne}`},onClick:a=>{let r=a.currentTarget.getBoundingClientRect();C({op:"pick",x:(a.clientX-r.left)*Z/r.width,y:(r.bottom-a.clientY)*ne/r.height}).catch(()=>{})}},It.map(a=>lt(a,i,Z,ne))))),g?e("div",{className:"qxsim-status error"},"\u26A0 ",g):e("div",{className:"qxsim-status"},e("span",null,`\u25CF ${i.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),e("span",null,y||(N?`\u5F53\u524D\uFF1A${N.name}`:"")),e("span",{className:"spacer"}),e("span",null,P?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"),e("a",{className:"qxsim-community",href:"https://space.bilibili.com/23358791",target:"_blank",rel:"noreferrer",title:"\u4F5C\u8005 B\u7AD9\u4E3B\u9875"},"\u4F5C\u8005B\u7AD9"),e("a",{className:"qxsim-community",href:"https://qm.qq.com/q/DpuMvxAfhm",target:"_blank",rel:"noreferrer",title:"\u52A0\u5165 QQ \u7FA4 1007538100"},"QQ\u7FA4 1007538100"))),e("aside",{className:"qxsim-inspector"},i.inspector?e(m.Fragment,null,e("div",{className:"qxsim-inspector-head"},e("div",{className:"qxsim-inspector-line"},e("span",{className:"qxsim-kind"},(D[i.inspector.kind]||["\u25C7"])[0]),e("strong",null,i.inspector.label),P&&N?.depth===0?e("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),e("div",{className:"qxsim-node-id"},P&&N?.depth===0?"\u6A21\u677F\u7D22\u5F15 ":"\u63A7\u4EF6 GUID ",e("code",null,i.inspector.guid??i.inspector.id)," \xB7 ",N?.name||"\u8282\u70B9"),i.inspector.kind!=="server-container"?e(nt,{key:`${i.asset.type}:${i.inspector.id}`,inspector:i.inspector,onSave:(a,r)=>ut(a,r,i.asset.type)}):null),e("div",{className:"qxsim-tabs",style:je?void 0:{gridTemplateColumns:"1fr"}},e("button",{className:$e==="base"?"active":"",onClick:()=>Ae("base")},"\u57FA\u7840\u5C5E\u6027"),je?e("button",{className:$e==="script"?"active":"",onClick:()=>Ae("script")},"\u811A\u672C"):null),e("div",{className:"qxsim-inspector-scroll"},je&&$e==="script"?e(st,{snap:i,addScriptMounted:a=>void Je({controlId:a,controlAsset:i.asset?.type}).then(()=>xe("script")),mountScriptTo:wt,unmountScript:qt,openScript:a=>{ve(a),xe("script")}}):e(pe,{inspector:i.inspector,commit:ft,createStateChild:bt})),e("div",{className:"qxsim-tree-foot"},e("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void C({op:"remove"}).catch(()=>{})},P&&N?.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"))):I==="script"?e(H,{snap:i,selectedScriptId:Te,selectScript:a=>{Ve(),ve(a)},draft:Ee,updateDraft:ht,saveScript:()=>void K().then(()=>u("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void Je(),removeScript:yt,exportLua:a=>void ke("lua",a),exportScripts:()=>void ke("scripts"),exportScriptsGia:()=>void ke("scripts-gia"),notice:y}):e(it,{snap:i,draft:He,setDraft:Me,saveLogic:()=>void ie().catch(()=>{}),notice:y,error:g}))}return{SimulatorView:ct,ensureStyle:_,removeStyle:()=>document.getElementById(G)?.remove()}}window.__ModuleLoader__.load({id:"dsh-plugin-beyond-simulator",factory:m=>{let x={},ge=m("react"),$=Ze(ge,{async api(e,X,G){let Y=await fetch("/qxqy-simulator/api/"+X,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:e,...G||{}})}),D=await Y.json();if(!Y.ok||!D.ok)throw new Error(D.error||"Request failed");return D.value},playUrl:e=>"/qxqy-simulator/play#"+encodeURIComponent(e)});return x.inject=["slots"],x.apply=e=>{$.ensureStyle(),e.effect(()=>$.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"},$.SimulatorView))},x}});})();
|