beyond-simulator-web 0.1.4 → 0.2.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.
- package/dist/public/editor.js +2 -1
- package/dist/public/play-renderer.js +1 -1
- package/dist/server.js +13 -12
- package/dist/worker.js +6 -5
- package/package.json +1 -1
package/dist/public/editor.js
CHANGED
|
@@ -30,7 +30,8 @@ Error generating stack: `+a.message+`
|
|
|
30
30
|
@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}}
|
|
31
31
|
@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}}
|
|
32
32
|
@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}}
|
|
33
|
-
`,c={"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"]},f=[["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"]],p={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 x(){if(document.getElementById(i))return;let s=document.createElement("style");s.id=i,s.textContent=u,document.head.appendChild(s)}function S(){let s=document.documentElement,q=document.body,h=[s.dataset.theme,s.className,s.getAttribute("style"),q?.dataset?.theme,q?.className,q?.getAttribute("style"),getComputedStyle(s).colorScheme].filter(Boolean).join(" ").toLowerCase();return h.includes("dark")?"dark":h.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function g(){let[s,q]=t.useState(S);return t.useEffect(()=>{let h=()=>q(S()),b=new MutationObserver(h);b.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&b.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let N=window.matchMedia?.("(prefers-color-scheme: dark)");return N?.addEventListener?.("change",h),()=>{b.disconnect(),N?.removeEventListener?.("change",h)}},[]),s}function v(s,q){let h=Number(s??q)>>>0;return`rgba(${h>>>16&255},${h>>>8&255},${h&255},${(h>>>24&255)/255})`}function U(s){return`#${(Number(s)>>>0).toString(16).padStart(8,"0").toUpperCase()}`}function C(s,q){return s==="circle"?{borderRadius:"50%",background:q}:s==="ring"?{borderRadius:"50%",border:`7px solid ${q}`,background:"transparent"}:s==="triangle"?{background:q,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:s==="fourstar"?{background:q,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:s==="fivestar"?{background:q,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:s==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:q}}let j=l;function d(s){let q;try{q=atob(s.data)}catch{throw new Error("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762")}let h=new Uint8Array(q.length);for(let z=0;z<q.length;z+=1)h[z]=q.charCodeAt(z);let b=URL.createObjectURL(new Blob([h],{type:s.mimeType||"application/octet-stream"})),N=document.createElement("a");N.href=b,N.download=s.filename||"qxqy-export",N.rel="noopener",N.style.display="none",document.body.appendChild(N),N.click(),N.remove(),setTimeout(()=>URL.revokeObjectURL(b),1e3)}async function o(s){let q=new Uint8Array(await s.arrayBuffer()),h="",b=32768;for(let N=0;N<q.length;N+=b)h+=String.fromCharCode(...q.subarray(N,N+b));return btoa(h)}let m=s=>typeof s=="object"?s.value:s,y=s=>typeof s=="object"?s.label:s,O=[{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 G(s){return String(s.id||"").split("-").slice(1).join(":")}function D(s,q){let h=(N,z)=>z?h(z,N%z):N,b=h(Math.round(s),Math.round(q))||1;return`${Math.round(s)/b}:${Math.round(q)/b}`}function M({field:s,commit:q,axis:h}){let b=s.type==="color"?U(s.value):s.value==null?"":String(s.value),[N,z]=t.useState(b);if(t.useEffect(()=>z(s.type==="color"?U(s.value):s.value==null?"":String(s.value)),[s.value,s.type]),s.type==="note")return n("div",{className:"qxsim-note"},s.value||s.label);if(s.readonly&&(s.evidence==="N"||s.evidence==="U"))return n("div",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("div",{className:"qxsim-unsupported"},s.value==null?"\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C":String(s.value)));if(s.type==="bool")return n("div",{className:"qxsim-switch-row"},n("span",null,s.label),n("label",{className:"qxsim-switch"},n("input",{type:"checkbox",checked:!!s.value,disabled:!!s.readonly,onChange:E=>q(s.key,E.target.checked)}),n("span",{className:"qxsim-switch-track"})));if(s.type==="enum"){let E=[...s.options||[]],w=String(s.value??"");return E.some(nt=>String(m(nt))===w)||E.unshift({value:s.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${s.unknownValue??(w||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("select",{value:w,disabled:!!s.readonly,onChange:nt=>q(s.key,nt.target.value)},E.map(nt=>n("option",{key:String(m(nt)),value:m(nt)},y(nt)))))}if(s.type==="percent"){let E=Math.round(Number(s.value||0)*100);return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("span",{className:"qxsim-percent"},n("input",{type:"range",min:0,max:100,value:E,onInput:w=>q(s.key,Number(w.target.value)/100)}),n("output",null,`${E}%`)))}if(s.type==="color"){let E=/^#[0-9a-f]{8}$/i.test(N)?N:U(s.value);return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label,n("small",null,"ARGB")),n("span",{className:"qxsim-color-row"},n("span",{className:"qxsim-color-swatch",title:"\u6253\u5F00\u53D6\u8272\u5668"},n("input",{type:"color",value:`#${E.slice(3)}`,onInput:w=>{let nt=`#${E.slice(1,3)}${w.target.value.slice(1).toUpperCase()}`;z(nt),q(s.key,nt)}})),n("input",{type:"text",value:N,spellCheck:!1,"aria-label":`${s.label} ARGB`,onChange:w=>z(w.target.value),onBlur:()=>q(s.key,N),onKeyDown:w=>{w.key==="Enter"&&w.currentTarget.blur(),w.key==="Escape"&&z(U(s.value))}})))}let Y={value:N,disabled:!!s.readonly,readOnly:!!s.readonly,onChange:E=>z(E.target.value),onBlur:()=>{s.readonly||q(s.key,N)},onKeyDown:E=>{E.key==="Enter"&&s.type!=="text"&&E.currentTarget.blur(),E.key==="Escape"&&z(s.value==null?"":String(s.value))}};return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},h?n("b",{className:`qxsim-axis ${h.toLowerCase()}`},h):null,s.label),s.type==="text"?n("textarea",{...Y,rows:4}):n("input",{...Y,type:s.type==="number"?"number":"text",step:s.type==="number"?"any":void 0}))}function I({title:s,open:q=!0,children:h}){return n("details",{className:"qxsim-section",open:q},n("summary",null,s),n("div",{className:"qxsim-section-body"},h))}function k(s){let q={};for(let h of s||[])q[h.key]=h;return q}function Rt({label:s,x:q,y:h,xAxis:b="X",yAxis:N="Y",commit:z}){return n("div",{className:"qxsim-pair"},n("div",{className:"qxsim-pair-name"},s),n(M,{field:q,axis:b,commit:z}),n(M,{field:h,axis:N,commit:z}))}function Ou({field:s,commit:q,createStateChild:h}){return n("div",{className:"qxsim-state-field"},n("div",{className:"qxsim-state-label"},s.label),n("div",{className:"qxsim-state-ref"},n("button",{title:`\u65B0\u5EFA\u5E76\u7ED1\u5B9A${s.label}\u56FE\u7247`,onClick:()=>h(s.key,s.label)},"+"),n("select",{value:String(s.value??""),"aria-label":s.label,onChange:b=>q(s.key,b.target.value)},(s.options||[]).map(b=>n("option",{key:String(m(b)),value:m(b)},y(b))))))}function E0({inspector:s,commit:q,createStateChild:h}){let b=k(s.fields),N=w=>w?.type==="node"?n(Ou,{key:w.key,field:w,commit:q,createStateChild:h}):w?n(M,{key:w.key,field:w,commit:q}):null,z=(p[s.kind]||[]).map(w=>b[w]).filter(Boolean).map(N),Y=null;if(s.kind==="image"){let w=b.fillType?.value==="Horizontal"?b.fillHorizontalType:b.fillType?.value==="Vertical"?b.fillVerticalType:b.fillType?.value==="Radial90"?b.fillRadial90Type:b.fillRadialType,nt=[N(b.enableMask),N(b.enableSoftEdge),b.enableSoftEdge?.value?n("div",{className:"qxsim-subfields",key:"soft-fields"},N(b.softEdgeMode),n(Rt,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:b.softEdgeWidthX,y:b.softEdgeWidthY,commit:q}),n(Rt,{label:"\u7FBD\u5316\u8303\u56F4",x:b.horizontalSoftRange,y:b.verticalSoftRange,commit:q})):null,N(b.enableFill),b.enableFill?.value?n("div",{className:"qxsim-subfields",key:"fill-fields"},N(b.fillType),N(w),N(b.fillAmount)):null,N(b.reverseMaskArea)];Y=n(t.Fragment,null,n(I,{title:"\u56FE\u7247\u8BBE\u7F6E"},N(b.imageSource),N(b.imageId),N(b.imageColor)),n(I,{title:"\u906E\u7F69\u8BBE\u7F6E"},nt))}let E=s.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":s.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${s.label}\u8BBE\u7F6E`;return n(t.Fragment,null,n(I,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},n(M,{field:b.name,commit:q})),n(I,{title:"\u53D8\u6362"},b.posX?n(Rt,{label:"\u4F4D\u7F6E",x:b.posX,y:b.posY,commit:q}):null,b.width?n(Rt,{label:"\u5927\u5C0F",x:b.width,y:b.height,xAxis:"W",yAxis:"H",commit:q}):null,b.rotationZ?n(M,{field:b.rotationZ,commit:q}):null,b.syncAllDevices?n(M,{field:b.syncAllDevices,commit:q}):null,b.anchorType?n(M,{field:b.anchorType,commit:q}):null,b.anchorMinX?n(Rt,{label:"Min",x:b.anchorMinX,y:b.anchorMinY,commit:q}):null,b.anchorMaxX?n(Rt,{label:"Max",x:b.anchorMaxX,y:b.anchorMaxY,commit:q}):null,b.pivotX?n(Rt,{label:"\u4E2D\u5FC3",x:b.pivotX,y:b.pivotY,commit:q}):null),n(I,{title:"\u521B\u5EFA\u8BBE\u7F6E"},b.active?n(M,{field:b.active,commit:q}):null,b.visible?n(M,{field:b.visible,commit:q}):null),Y||(z.length?n(I,{title:E},z):null),b.canControllerFocus?n(I,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},n(M,{field:b.canControllerFocus,commit:q})):null,b.incomplete?n(I,{title:"\u5B9E\u73B0\u72B6\u6001"},n(M,{field:b.incomplete,commit:q})):null)}function z0({snap:s,selectedScriptId:q,selectScript:h,draft:b,updateDraft:N,saveScript:z,addScript:Y,removeScript:E,exportLua:w,exportScripts:nt,exportScriptsGia:Dt,notice:jl}){let J=s.scripts||[],R=J.find(L=>L.id===q)||null,P=s.mountTargets||[],ut=P.filter(L=>L.assetType==="server-control-template"),$=P.filter(L=>L.assetType==="client-control-template"),kt=L=>{let Al=P.find(Ll=>Ll.id===L);return Al?`${Al.assetLabel} \xB7 ${Al.name}`:""};return n("div",{className:"qxsim-script-page"},n("aside",{className:"qxsim-script-assets"},n("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${J.length}\uFF09`),n("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:Y},"\uFF0B \u65B0\u5EFA\u811A\u672C"),J.length?J.map(L=>n("div",{key:L.id,className:"qxsim-script-list-row"},n("button",{className:`qxsim-script-asset${L.id===q?" active":""}`,onClick:()=>h(L.id)},n("strong",null,L.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("small",null,L.mounted?`\u6302\u8F7D\uFF1A${L.assetLabel} \xB7 ${L.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),n("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>w(L.id)},"\u21E9"),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>E(L.id)},"\u2715"))):n("div",{className:"qxsim-empty"},"\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB")),n("main",{className:"qxsim-script-editor"},R&&b?n(t.Fragment,null,n("div",{className:"qxsim-script-title"},n("div",null,n("h2",null,b.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("span",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${s.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7`)),n("span",null,`\u811A\u672C ${R.id}`)),n("div",{className:"qxsim-script-fields"},n("label",null,"\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09",n("input",{type:"text",value:b.path,placeholder:"lua/example.lua",onChange:L=>N({path:L.target.value})})),n("label",null,"\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09",n("select",{value:b.controlId?`${b.controlAsset||"server-control-template"}|${b.controlId}`:"",onChange:L=>{let[Al,Ll]=L.target.value.split("|");N(Ll?{controlId:Ll,controlAsset:Al}:{controlId:"",controlAsset:""})}},n("option",{value:""},"\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09"),n("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185"},ut.map(L=>n("option",{key:L.id,value:`${L.assetType}|${L.id}`},`${L.name} \xB7 ${L.id}`))),$.length?n("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},$.map(L=>n("option",{key:L.id,value:`${L.assetType}|${L.id}`},`${L.name} \xB7 ${L.id}`))):null))),n("label",null,"Lua \u6E90\u7801",n("textarea",{value:b.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:L=>N({source:L.target.value})})),n("div",{className:"qxsim-script-footer"},n("span",null,b.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":jl||(R.mounted?`\u5DF2\u6302\u8F7D\uFF1A${kt(R.controlId)}`:"\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C")),n("span",{className:"spacer"}),n("button",{className:"qxsim-action",onClick:nt},"\u21E9 \u811A\u672C\u5305 JSON"),n("button",{className:"qxsim-action",onClick:Dt},"\u21E9 \u811A\u672C\u5305 GIA"),n("button",{className:"qxsim-action primary",disabled:!b.dirty,onClick:z},"\u4FDD\u5B58\u811A\u672C"))):n("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function Ts(s){if(s===void 0)return"null";try{return JSON.stringify(s)}catch{return String(s)}}function As(s){let q=String(s??"").trim();if(!q)return null;try{return JSON.parse(q)}catch{return q}}function Ns(s){return!!(s&&typeof s=="object"&&!Array.isArray(s)&&Object.prototype.hasOwnProperty.call(s,"fromSignalParam"))}function Es(s){return{version:1,dirty:!1,rules:(Array.isArray(s?.rules)?s.rules:[]).map((h,b)=>({id:String(h.id||`signal-${b+1}`),signalName:String(h.signalName||""),actions:Array.isArray(h.actions)&&h.actions.length?h.actions.map(N=>D0(N)):[Re("setCustomVariable")]}))}}let zs=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Os=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ms={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 Mu(s){return Os.includes(s)&&s!=="AllPlayers"?s:s==="Level"?"Level":"PlayerSelf"}function Du(s){return zs.includes(s)?s:"PlayerSelf"}function Re(s){return s==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function O0(s){return{version:1,rules:(s?.rules||[]).map(q=>({id:String(q.id||""),signalName:String(q.signalName||"").trim(),actions:(q.actions||[]).map(h=>h?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:Du(h.target),signalName:String(h.signalName||"").trim(),params:Array.isArray(h.params)?h.params:[]}:{kind:"setCustomVariable",entityType:Mu(h?.entityType),name:String(h?.name||"").trim(),value:h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:0})}))}}function M0(s){let q=[];for(let[h,b]of(s?.rules||[]).entries()){String(b.signalName||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let N=b.actions||[];N.length||q.push(`\u89C4\u5219 ${h+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[z,Y]of N.entries())Y?.kind==="sendClientScriptSignal"?String(Y.signalName||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u52A8\u4F5C ${z+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(Y?.name||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u52A8\u4F5C ${z+1} \u9700\u8981\u53D8\u91CF\u540D`)}return q}function D0(s){if(s?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:Du(s.target),signalName:String(s.signalName||""),params:Array.isArray(s.params)?s.params.map(h=>{try{return JSON.parse(JSON.stringify(h))}catch{return h}}):[]};let q=0;if(s&&Object.prototype.hasOwnProperty.call(s,"value"))try{q=JSON.parse(JSON.stringify(s.value))}catch{q=s.value}return{kind:"setCustomVariable",entityType:Mu(s?.entityType),name:String(s?.name||""),value:q}}function Ds({label:s,value:q,onChange:h}){let b=Ns(q),[N,z]=t.useState(()=>b?"":Ts(q));return t.useEffect(()=>{Ns(q)||z(Ts(q))},[q]),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s),n("select",{value:b?"param":"literal","aria-label":`${s}\u6765\u6E90`,onChange:Y=>{Y.target.value==="param"?h({fromSignalParam:Number(q?.fromSignalParam)||0}):h(As(N||"0"))}},n("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),n("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),b?n("input",{type:"number",min:0,step:1,value:Number(q.fromSignalParam)||0,"aria-label":`${s}\u53C2\u6570\u5E8F\u53F7`,onChange:Y=>h({fromSignalParam:Math.max(0,Math.trunc(Number(Y.target.value)||0))})}):n("textarea",{className:"qxsim-logic-json",value:N,spellCheck:!1,"aria-label":`${s}\u5B57\u9762\u91CF`,onBlur:()=>h(As(N)),onChange:Y=>z(Y.target.value)}))}function _0({params:s,onChange:q}){let h=Array.isArray(s)?s:[];return n("div",{className:"qxsim-field wide"},n("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09"),h.length?h.map((b,N)=>n("div",{key:N,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},n("div",{style:{flex:1,minWidth:0}},n(Ds,{label:`\u53C2\u6570 ${N}`,value:b,onChange:z=>q(h.map((Y,E)=>E===N?z:Y))})),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>q(h.filter((z,Y)=>Y!==N))},"\u2715"))):n("div",{className:"qxsim-muted"},"\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868"),n("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>q(h.concat([0]))},"\uFF0B \u6DFB\u52A0\u53C2\u6570"))}function U0({snap:s,draft:q,setDraft:h,saveLogic:b,notice:N,error:z}){let Y=q?.rules||[];function E(J){h({version:1,rules:J,dirty:!0})}function w(){E(Y.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[Re("setCustomVariable")]}]))}function nt(J,R){E(Y.map((P,ut)=>ut===J?{...P,...R}:P))}function Dt(J,R,P){let ut=Y[J];ut&&nt(J,{actions:ut.actions.map(($,kt)=>kt===R?{...$,...P}:$)})}function jl(J,R,P){Dt(J,R,Re(P))}return n("div",{className:"qxsim-server-logic"},n("div",{className:"qxsim-logic-wrap"},n("div",{className:"qxsim-logic-title"},n("div",null,n("h2",null,"\u670D\u52A1\u7AEF\u903B\u8F91"),n("p",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${s.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`)),n("button",{className:"qxsim-action primary",disabled:!q?.dirty,onClick:b},"\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91")),n("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"),z?n("div",{className:"qxsim-logic-error"},z):null,Y.length?Y.map((J,R)=>n("section",{key:J.id||R,className:"qxsim-logic-rule"},n("div",{className:"qxsim-logic-rule-head"},n("strong",null,`\u89C4\u5219 ${R+1}`),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),n("input",{type:"text",value:J.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${R+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:P=>nt(R,{signalName:P.target.value})})),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>E(Y.filter((P,ut)=>ut!==R))},"\u2715")),n("div",{className:"qxsim-logic-actions"},(J.actions||[]).map((P,ut)=>n("div",{key:ut,className:"qxsim-logic-action"},n("div",{className:"qxsim-logic-action-head"},n("strong",null,`\u52A8\u4F5C ${ut+1}`),n("select",{value:P.kind,"aria-label":`\u89C4\u5219 ${R+1} \u52A8\u4F5C ${ut+1} \u7C7B\u578B`,onChange:$=>jl(R,ut,$.target.value)},n("option",{value:"setCustomVariable"},"\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),n("option",{value:"sendClientScriptSignal"},"\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")),n("span",null,P.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"),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u52A8\u4F5C",disabled:(J.actions||[]).length<=1,onClick:()=>nt(R,{actions:J.actions.filter(($,kt)=>kt!==ut)})},"\u2715")),P.kind==="sendClientScriptSignal"?n("div",{className:"qxsim-logic-fields"},n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u53D1\u9001\u76EE\u6807"),n("select",{value:Du(P.target),onChange:$=>Dt(R,ut,{target:$.target.value})},zs.map($=>n("option",{key:$,value:$},Ms[$])))),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),n("input",{type:"text",value:P.signalName,placeholder:"GoldChanged",onChange:$=>Dt(R,ut,{signalName:$.target.value})})),n(_0,{params:P.params,onChange:$=>Dt(R,ut,{params:$})})):n("div",{className:"qxsim-logic-fields"},n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),n("select",{value:Mu(P.entityType),onChange:$=>Dt(R,ut,{entityType:$.target.value})},Os.map($=>n("option",{key:$,value:$},Ms[$])))),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),n("input",{type:"text",value:P.name,placeholder:"Gold",onChange:$=>Dt(R,ut,{name:$.target.value})})),n("div",{className:"wide"},n(Ds,{label:"\u53D8\u91CF\u503C",value:P.value,onChange:$=>Dt(R,ut,{value:$})}))))),n("div",{className:"qxsim-logic-actions-foot"},n("button",{className:"qxsim-action",onClick:()=>nt(R,{actions:(J.actions||[]).concat([Re("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),n("button",{className:"qxsim-action",onClick:()=>nt(R,{actions:(J.actions||[]).concat([Re("sendClientScriptSignal")])})},"\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))))):n("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"),n("div",{className:"qxsim-logic-actions-foot"},n("button",{className:"qxsim-action",onClick:w},"\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219")),n("div",{className:"qxsim-script-footer",style:{marginTop:16}},n("span",null,q?.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":N||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),n("span",{className:"spacer"}))))}function C0({snap:s,addScriptMounted:q,mountScriptTo:h,unmountScript:b,openScript:N}){let z=(s.scripts||[]).filter(E=>E.controlId===s.selectedId),Y=(s.scripts||[]).filter(E=>E.controlId!==s.selectedId);return n(t.Fragment,null,n(I,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},z.length?z.map(E=>n("div",{key:E.id,className:"qxsim-script-list-row"},n("button",{className:"qxsim-script-asset",onClick:()=>N(E.id)},n("strong",null,E.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("small",null,`\u811A\u672C ${E.id}`)),n("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>b(E.id)},"\u292B"))):n("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")),n(I,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},Y.length?n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),n("select",{value:"","aria-label":"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6",onChange:E=>{let w=E.target.value;E.target.value="",w&&h(w)}},n("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),Y.map(E=>n("option",{key:E.id,value:E.id},`${E.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${E.id}${E.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${E.assetLabel} \xB7 ${E.controlName}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09`:"\uFF08\u672A\u6302\u8F7D\uFF09"}`)))):n("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"),n("div",{className:"qxsim-script-actions",style:{marginTop:8}},n("button",{onClick:()=>q(s.selectedId)},"\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6"))))}function R0(s,q){let h=null,b=null;function N(z,Y){z.id===q&&(h=z,b=Y);for(let E of z.children||[])N(E,z)}if(N(s,null),h?.kind==="container")return h.id;if(h?.kind==="server-container")return h.children?.find(z=>z.kind==="container")?.id||h.id;for(;b&&b.kind!=="container";){let Y=function(E){for(let w of E.children||[])w===b&&(z=E),Y(w)},z=null;Y(s),b=z}return b?.id||s.children?.find(z=>z.kind==="container")?.id}function H0(s,q){let h=null;function b(N){N.id===q&&(h=N);for(let z of N.children||[])b(z)}return b(s),h&&h.kind!=="server-container"?h.id:R0(s,q)}function Y0(s,q,h,b){let N=s,z=s.kind,Y=z==="textbox"||z==="textwindow",E=N.renderLeft??N.left,w=N.renderBottom??N.bottom,nt=N.renderWidth??N.width,Dt=N.renderHeight??N.height,jl=N.renderRotationZ??s.rotationZ??0,J={left:`${E/h*100}%`,bottom:`${w/b*100}%`,width:`${nt/h*100}%`,height:`${Dt/b*100}%`,"--rotation":`${-Number(jl)}deg`,fontSize:Math.max(8,Math.min(40,Number(s.fontSize||12))),color:Y?v(s.fontColor,4294967295):"#fff"};z==="image"?Object.assign(J,C(s.primitive,v(s.imageColor,4294967295))):Y?(J.background=v(s.bgColor,16777215),J.justifyContent=s.horizontalAlignment==="Right"?"flex-end":s.horizontalAlignment==="Middle"?"center":"flex-start",J.alignItems=s.verticalAlignment==="Bottom"?"flex-end":s.verticalAlignment==="Middle"?"center":"flex-start",J.textShadow=s.enableOutline===!1?"none":`0 0 2px ${v(s.outlineColor,4278190080)}`):z==="container"&&(J.background="transparent");let R=s.id===q.selectedId,P=Y?s.text||"":z==="image"&&s.primitive==="missing"?n("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${s.imageId||""}`):z!=="container"&&z!=="image"?n("span",{className:"qxsim-box-label"},s.name||c[z]?.[1]||z):null;return n("div",{key:s.id,className:`qxsim-box ${z}${R?" selected":""}${s.instantiated?" dynamic":""}${s.pressed?" pressed":""}`,style:J},P,R&&z!=="container"?["tl","tr","bl","br"].map(ut=>n("i",{key:ut,className:`qxsim-handle ${ut}`})):null)}function B0({sessionId:s}){let q=g(),[h,b]=t.useState(null),N=t.useRef(null),z=t.useRef(Promise.resolve()),[Y,E]=t.useState(""),[w,nt]=t.useState(null),[Dt,jl]=t.useState(!1),[J,R]=t.useState(""),P=t.useRef(null),[ut,$]=t.useState([]),[kt,L]=t.useState("ui"),[Al,Ll]=t.useState("base"),[_u,w0]=t.useState("fit"),[Uu,G0]=t.useState({}),[Vn,Cu]=t.useState(""),[wa,Ru]=t.useState("template"),[Hu,kn]=t.useState(""),[Yu,He]=t.useState(null),[_s,Bu]=t.useState({version:1,rules:[],dirty:!1}),Us=t.useRef(null),[Kn,X0]=t.useState({width:0,height:0});t.useEffect(()=>{let r=Us.current;if(!r||typeof ResizeObserver>"u")return;let A=new ResizeObserver(_=>{let B=_[0]?.contentRect;B&&B.width>0&&X0({width:B.width,height:B.height})});return A.observe(r),()=>A.disconnect()},[h?.canvas?.id]);function Ye(r,{keepLogicDraft:A=!0}={}){return N.current=r,b(r),r?.scripts&&kn(_=>r.scripts.some(B=>B.id===_)?_:r.scripts[0]?.id||""),Bu(_=>A&&_?.dirty?_:Es(r?.serverLogic)),r}let Jn=t.useCallback(async()=>{try{E(""),Ye(await j(s,"get"),{keepLogicDraft:!1})}catch(r){E(r?.message||String(r))}},[s]),$n=t.useCallback(async()=>{try{let r=await j(s,"archives");$(r?.archives||[])}catch{$([])}},[s]);t.useEffect(()=>{Jn(),$n()},[Jn,$n]);function qt(r){let A=async()=>{let _=N.current;if(!_)throw new Error("editor is not ready");try{let B=await j(s,"patch",{op:{...r,expectedRevision:_.version}});return E(""),Ye(B)}catch(B){throw E(B?.message||String(B)),/revision conflict/.test(String(B?.message||B))&&await Jn(),B}};return z.current=z.current.then(A,A),z.current}let Q0=(r,A)=>void qt({op:"set",key:r,value:A}).catch(()=>{});async function j0(r,A){let _=N.current?.inspector?.id;if(_)try{let B=await qt({op:"add",kind:"image",parentId:_,name:`${A}\u56FE\u7247`});await qt({op:"set",id:_,key:r,value:B.selectedId}),R(`${A}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}t.useEffect(()=>{let r=h?.scripts?.find(A=>A.id===Hu);He(A=>A&&r&&A.id===r.id&&A.dirty?A:r?{id:r.id,path:r.path,source:r.source,controlId:r.controlId,controlAsset:r.controlAsset,dirty:!1}:null)},[h,Hu]);function L0(r){He(A=>A&&{...A,...r,dirty:!0})}async function Wn(){let r=Yu;!r||!r.dirty||(await qt({op:"updateScript",id:r.id,path:r.path,source:r.source,controlId:r.controlId,controlAsset:r.controlAsset}),He(A=>A&&A.id===r.id?{...A,dirty:!1}:A))}function Cs(){Wn().then(()=>R("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function Fn({silent:r=!1}={}){let A=_s;if(!A||!A.dirty)return;let _=M0(A);if(_.length){let Xa=_[0];throw r||E(Xa),new Error(Xa)}let B=await qt({op:"setServerLogic",logic:O0(A)});Bu(Es(B.serverLogic)),R("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function Z0(){Fn({silent:!0}).catch(()=>{})}function Be(r){Cs(),Z0(),L(r)}async function Rs(r={}){let A=await qt({op:"addScript",...r}),_=A.scripts?.[A.scripts.length-1];return _&&kn(_.id),R(r.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"),_}function V0(r){Yu?.id===r&&He(null),qt({op:"removeScript",id:r}).then(()=>R("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function k0(r){qt({op:"updateScript",id:r,controlId:""}).then(()=>R("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function K0(r){let A=N.current?.selectedId||"",_=N.current?.asset?.type||"";A&&(He(B=>B&&B.id===r?{...B,controlId:A,controlAsset:_}:B),qt({op:"updateScript",id:r,controlId:A,controlAsset:_}).then(()=>R("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function Hs(r){if(N.current?.asset?.type!==r)try{let A=await qt({op:"selectAsset",assetType:r});Cu(""),Ru(r==="client-control-template"?"template":"child"),R(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${A.asset.label}`)}catch{}}function J0(r,A){let _=N.current;if(!_)return;let B=_.asset?.type==="client-control-template"&&wa==="template",Xa=B?{op:"addTemplate",kind:r,name:`${A}\u6A21\u677F`}:{op:"add",kind:r,parentId:H0(_.root,_.selectedId),name:A};qt(Xa).then(()=>R(B?`\u5DF2\u65B0\u589E${A}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${A}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function Pn(r,A=""){try{await z.current.catch(()=>{});let _=await j(s,"export",{format:r,assetType:A});if(Array.isArray(_?.files)&&_.files.length){for(let B of _.files)d(B);E(""),R(`\u5DF2\u5BFC\u51FA ${_.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${_.files.map(B=>B.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}d(_),E(""),R(_.warnings?.length?`\u5DF2\u5BFC\u51FA ${_.filename}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301 GIA\u3002`:`\u5DF2\u5BFC\u51FA ${_.filename}`)}catch(_){E(_?.message||String(_))}}async function $0(r){if(r)try{await z.current.catch(()=>{});let A=await j(s,"load-archive",{path:r});Ye(A.snapshot,{keepLogicDraft:!1}),E(""),R(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${r}`)}catch(A){E(A?.message||String(A))}}async function W0(r){if(!r)return;let A=r.name.toLowerCase().endsWith(".gia")?"gia":r.name.toLowerCase().endsWith(".json")?"json":r.name.toLowerCase().endsWith(".lua")?"lua":"";if(!A){E("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await z.current.catch(()=>{});let _=await j(s,"import",{format:A,filename:r.name,data:await o(r)});Ye(_.snapshot,{keepLogicDraft:!1}),E(""),R(_.warnings?.length?`\u5DF2\u5BFC\u5165 ${r.name}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301\u7F16\u8F91\u3002`:`\u5DF2\u5BFC\u5165 ${r.name}`)}catch(_){E(_?.message||String(_))}finally{P.current&&(P.current.value="")}}async function F0(){let r=window.open("about:blank","_blank");if(!r){E("\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}r.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 Wn(),await Fn(),r.location.replace(a(s))}catch(A){r.close(),E(A?.message||String(A))}}async function P0(){if(!(Dt||!w?.trim())){jl(!0);try{await Wn(),await Fn(),await z.current.catch(()=>{});let r=N.current,A=await j(s,"save",{path:w.trim(),expectedRevision:r.version});Ye(await j(s,"get")),R(`\u5DF2\u4FDD\u5B58\u5230 ${A.path}`),E(""),nt(null),$n()}catch(r){E(r?.message||String(r))}finally{jl(!1)}}}if(t.useEffect(()=>{h?.inspector?.kind==="server-container"&&Ll("base")},[h?.inspector?.kind]),!h)return n("div",{className:"qxsim","data-theme":q,"data-qxsim-session-id":s},n("div",{className:"qxsim-status error"},Y||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let xa=h.canvas.width,Ga=h.canvas.height,wu=Kn.width>0&&Kn.height>0?Math.min((Kn.width-44)/xa,(Kn.height-54)/Ga):NaN,I0=Number.isFinite(wu)&&wu>0?Math.min(2,Math.round(wu*1e3)/1e3):.5,tp=_u==="fit"?I0:Number(_u)||.5,Ys=D(xa,Ga),lp=(h.canvas.presets||[]).filter(r=>r.platform===h.canvas.platform);function ap(r){if(!h||h.canvas.platform===r)return;let A=(h.canvas.presets||[]).filter(B=>B.platform===r);if(!A.length)return;let _=A.find(B=>G(B)===Ys)||A[0];qt({op:"setCanvas",canvasId:_.id}).then(()=>R(`\u5DF2\u5207\u6362\u5230${_.label}`)).catch(()=>{})}let yt=h.asset?.type==="client-control-template",Gu=!!(h.inspector&&h.inspector.kind!=="server-container"),Xu=new Set;for(let r of h.tree||[])(Uu[r.id]||(r.ancestorIds||[]).some(A=>Uu[A]))&&Xu.add(r.id);let ep=(h.boxes||[]).filter(r=>r.kind!=="server-container"&&r.visible&&!Xu.has(r.id));function np(r,A){r.stopPropagation(),G0(_=>{let B={..._};return B[A]?delete B[A]:B[A]=!0,B})}let Bs=h.tree.filter(r=>!Vn.trim()||`${r.name} ${r.label}`.toLowerCase().includes(Vn.trim().toLowerCase())),ft=h.tree.find(r=>r.id===h.selectedId),ip=yt&&ft?h.tree.filter(r=>r.id!==ft.id&&!(r.ancestorIds||[]).includes(ft.id)):[],up=ft?.parentId||h.root.id;return n("div",{className:"qxsim","data-theme":q,"data-qxsim-session-id":s},w!==null?n("div",{className:"qxsim-save-overlay"},n("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A",onSubmit:r=>{r.preventDefault(),P0()}},n("h2",null,"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),n("label",null,"\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84",n("input",{autoFocus:!0,required:!0,value:w,disabled:Dt,onChange:r=>nt(r.target.value)})),Y?n("div",{role:"alert"},Y):null,n("footer",null,n("button",{className:"qxsim-action",type:"button",disabled:Dt,onClick:()=>nt(null)},"\u53D6\u6D88"),n("button",{className:"qxsim-action primary",type:"submit",disabled:Dt||!w.trim()},Dt?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58")))):null,n("header",{className:"qxsim-toolbar"},n("div",{className:"qxsim-brand",title:`${h.workspace?.bound?h.workspace.path:"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"}
|
|
33
|
+
`,c={"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"]},f=[["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"]],p={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 x(){if(document.getElementById(i))return;let s=document.createElement("style");s.id=i,s.textContent=u,document.head.appendChild(s)}function S(){let s=document.documentElement,q=document.body,h=[s.dataset.theme,s.className,s.getAttribute("style"),q?.dataset?.theme,q?.className,q?.getAttribute("style"),getComputedStyle(s).colorScheme].filter(Boolean).join(" ").toLowerCase();return h.includes("dark")?"dark":h.includes("light")?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"}function g(){let[s,q]=t.useState(S);return t.useEffect(()=>{let h=()=>q(S()),b=new MutationObserver(h);b.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),document.body&&b.observe(document.body,{attributes:!0,attributeFilter:["class","style","data-theme"]});let N=window.matchMedia?.("(prefers-color-scheme: dark)");return N?.addEventListener?.("change",h),()=>{b.disconnect(),N?.removeEventListener?.("change",h)}},[]),s}function v(s,q){let h=Number(s??q)>>>0;return`rgba(${h>>>16&255},${h>>>8&255},${h&255},${(h>>>24&255)/255})`}function U(s){return`#${(Number(s)>>>0).toString(16).padStart(8,"0").toUpperCase()}`}function C(s,q){return s==="circle"?{borderRadius:"50%",background:q}:s==="ring"?{borderRadius:"50%",border:`7px solid ${q}`,background:"transparent"}:s==="triangle"?{background:q,clipPath:"polygon(50% 0,100% 100%,0 100%)"}:s==="fourstar"?{background:q,clipPath:"polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)"}:s==="fivestar"?{background:q,clipPath:"polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)"}:s==="missing"?{background:"#4822285c",border:"1px dashed #ff7481"}:{background:q}}let j=l;function d(s){let q;try{q=atob(s.data)}catch{throw new Error("\u5BFC\u51FA\u5185\u5BB9\u89E3\u7801\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u6216\u5237\u65B0\u9875\u9762")}let h=new Uint8Array(q.length);for(let z=0;z<q.length;z+=1)h[z]=q.charCodeAt(z);let b=URL.createObjectURL(new Blob([h],{type:s.mimeType||"application/octet-stream"})),N=document.createElement("a");N.href=b,N.download=s.filename||"qxqy-export",N.rel="noopener",N.style.display="none",document.body.appendChild(N),N.click(),N.remove(),setTimeout(()=>URL.revokeObjectURL(b),1e3)}async function o(s){let q=new Uint8Array(await s.arrayBuffer()),h="",b=32768;for(let N=0;N<q.length;N+=b)h+=String.fromCharCode(...q.subarray(N,N+b));return btoa(h)}let m=s=>typeof s=="object"?s.value:s,y=s=>typeof s=="object"?s.label:s,O=[{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 G(s){return String(s.id||"").split("-").slice(1).join(":")}function D(s,q){let h=(N,z)=>z?h(z,N%z):N,b=h(Math.round(s),Math.round(q))||1;return`${Math.round(s)/b}:${Math.round(q)/b}`}function M({field:s,commit:q,axis:h}){let b=s.type==="color"?U(s.value):s.value==null?"":String(s.value),[N,z]=t.useState(b);if(t.useEffect(()=>z(s.type==="color"?U(s.value):s.value==null?"":String(s.value)),[s.value,s.type]),s.type==="note")return n("div",{className:"qxsim-note"},s.value||s.label);if(s.readonly&&(s.evidence==="N"||s.evidence==="U"))return n("div",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("div",{className:"qxsim-unsupported"},s.value==null?"\u5C1A\u65E0\u53EF\u7F16\u8F91\u503C":String(s.value)));if(s.type==="bool")return n("div",{className:"qxsim-switch-row"},n("span",null,s.label),n("label",{className:"qxsim-switch"},n("input",{type:"checkbox",checked:!!s.value,disabled:!!s.readonly,onChange:E=>q(s.key,E.target.checked)}),n("span",{className:"qxsim-switch-track"})));if(s.type==="enum"){let E=[...s.options||[]],w=String(s.value??"");return E.some(nt=>String(m(nt))===w)||E.unshift({value:s.value??"",label:`\u672A\u8BC6\u522B\u9009\u9879 ${s.unknownValue??(w||"\u7A7A")}\uFF08\u4FDD\u7559\u539F\u503C\uFF09`}),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("select",{value:w,disabled:!!s.readonly,onChange:nt=>q(s.key,nt.target.value)},E.map(nt=>n("option",{key:String(m(nt)),value:m(nt)},y(nt)))))}if(s.type==="percent"){let E=Math.round(Number(s.value||0)*100);return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label),n("span",{className:"qxsim-percent"},n("input",{type:"range",min:0,max:100,value:E,onInput:w=>q(s.key,Number(w.target.value)/100)}),n("output",null,`${E}%`)))}if(s.type==="color"){let E=/^#[0-9a-f]{8}$/i.test(N)?N:U(s.value);return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s.label,n("small",null,"ARGB")),n("span",{className:"qxsim-color-row"},n("span",{className:"qxsim-color-swatch",title:"\u6253\u5F00\u53D6\u8272\u5668"},n("input",{type:"color",value:`#${E.slice(3)}`,onInput:w=>{let nt=`#${E.slice(1,3)}${w.target.value.slice(1).toUpperCase()}`;z(nt),q(s.key,nt)}})),n("input",{type:"text",value:N,spellCheck:!1,"aria-label":`${s.label} ARGB`,onChange:w=>z(w.target.value),onBlur:()=>q(s.key,N),onKeyDown:w=>{w.key==="Enter"&&w.currentTarget.blur(),w.key==="Escape"&&z(U(s.value))}})))}let Y={value:N,disabled:!!s.readonly,readOnly:!!s.readonly,onChange:E=>z(E.target.value),onBlur:()=>{s.readonly||q(s.key,N)},onKeyDown:E=>{E.key==="Enter"&&s.type!=="text"&&E.currentTarget.blur(),E.key==="Escape"&&z(s.value==null?"":String(s.value))}};return n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},h?n("b",{className:`qxsim-axis ${h.toLowerCase()}`},h):null,s.label),s.type==="text"?n("textarea",{...Y,rows:4}):n("input",{...Y,type:s.type==="number"?"number":"text",step:s.type==="number"?"any":void 0}))}function I({title:s,open:q=!0,children:h}){return n("details",{className:"qxsim-section",open:q},n("summary",null,s),n("div",{className:"qxsim-section-body"},h))}function k(s){let q={};for(let h of s||[])q[h.key]=h;return q}function Rt({label:s,x:q,y:h,xAxis:b="X",yAxis:N="Y",commit:z}){return n("div",{className:"qxsim-pair"},n("div",{className:"qxsim-pair-name"},s),n(M,{field:q,axis:b,commit:z}),n(M,{field:h,axis:N,commit:z}))}function Ou({field:s,commit:q,createStateChild:h}){return n("div",{className:"qxsim-state-field"},n("div",{className:"qxsim-state-label"},s.label),n("div",{className:"qxsim-state-ref"},n("button",{title:`\u65B0\u5EFA\u5E76\u7ED1\u5B9A${s.label}\u56FE\u7247`,onClick:()=>h(s.key,s.label)},"+"),n("select",{value:String(s.value??""),"aria-label":s.label,onChange:b=>q(s.key,b.target.value)},(s.options||[]).map(b=>n("option",{key:String(m(b)),value:m(b)},y(b))))))}function E0({inspector:s,commit:q,createStateChild:h}){let b=k(s.fields),N=w=>w?.type==="node"?n(Ou,{key:w.key,field:w,commit:q,createStateChild:h}):w?n(M,{key:w.key,field:w,commit:q}):null,z=(p[s.kind]||[]).map(w=>b[w]).filter(Boolean).map(N),Y=null;if(s.kind==="image"){let w=b.fillType?.value==="Horizontal"?b.fillHorizontalType:b.fillType?.value==="Vertical"?b.fillVerticalType:b.fillType?.value==="Radial90"?b.fillRadial90Type:b.fillRadialType,nt=[N(b.enableMask),N(b.enableSoftEdge),b.enableSoftEdge?.value?n("div",{className:"qxsim-subfields",key:"soft-fields"},N(b.softEdgeMode),n(Rt,{label:"\u7FBD\u5316\u5BBD\u5EA6",x:b.softEdgeWidthX,y:b.softEdgeWidthY,commit:q}),n(Rt,{label:"\u7FBD\u5316\u8303\u56F4",x:b.horizontalSoftRange,y:b.verticalSoftRange,commit:q})):null,N(b.enableFill),b.enableFill?.value?n("div",{className:"qxsim-subfields",key:"fill-fields"},N(b.fillType),N(w),N(b.fillAmount)):null,N(b.reverseMaskArea)];Y=n(t.Fragment,null,n(I,{title:"\u56FE\u7247\u8BBE\u7F6E"},N(b.imageSource),N(b.imageId),N(b.imageColor)),n(I,{title:"\u906E\u7F69\u8BBE\u7F6E"},nt))}let E=s.kind==="textbox"?"\u6587\u672C\u6846\u8BBE\u7F6E":s.kind==="button"?"\u6309\u94AE\u8BBE\u7F6E":`${s.label}\u8BBE\u7F6E`;return n(t.Fragment,null,n(I,{title:"\u8282\u70B9\u4FE1\u606F",open:!1},n(M,{field:b.name,commit:q})),n(I,{title:"\u53D8\u6362"},b.posX?n(Rt,{label:"\u4F4D\u7F6E",x:b.posX,y:b.posY,commit:q}):null,b.width?n(Rt,{label:"\u5927\u5C0F",x:b.width,y:b.height,xAxis:"W",yAxis:"H",commit:q}):null,b.rotationZ?n(M,{field:b.rotationZ,commit:q}):null,b.syncAllDevices?n(M,{field:b.syncAllDevices,commit:q}):null,b.anchorType?n(M,{field:b.anchorType,commit:q}):null,b.anchorMinX?n(Rt,{label:"Min",x:b.anchorMinX,y:b.anchorMinY,commit:q}):null,b.anchorMaxX?n(Rt,{label:"Max",x:b.anchorMaxX,y:b.anchorMaxY,commit:q}):null,b.pivotX?n(Rt,{label:"\u4E2D\u5FC3",x:b.pivotX,y:b.pivotY,commit:q}):null),n(I,{title:"\u521B\u5EFA\u8BBE\u7F6E"},b.active?n(M,{field:b.active,commit:q}):null,b.visible?n(M,{field:b.visible,commit:q}):null),Y||(z.length?n(I,{title:E},z):null),b.canControllerFocus?n(I,{title:"\u624B\u67C4\u5BFC\u822A",open:!1},n(M,{field:b.canControllerFocus,commit:q})):null,b.incomplete?n(I,{title:"\u5B9E\u73B0\u72B6\u6001"},n(M,{field:b.incomplete,commit:q})):null)}function z0({snap:s,selectedScriptId:q,selectScript:h,draft:b,updateDraft:N,saveScript:z,addScript:Y,removeScript:E,exportLua:w,exportScripts:nt,exportScriptsGia:Dt,notice:jl}){let J=s.scripts||[],R=J.find(L=>L.id===q)||null,P=s.mountTargets||[],ut=P.filter(L=>L.assetType==="server-control-template"),$=P.filter(L=>L.assetType==="client-control-template"),kt=L=>{let Al=P.find(Ll=>Ll.id===L);return Al?`${Al.assetLabel} \xB7 ${Al.name}`:""};return n("div",{className:"qxsim-script-page"},n("aside",{className:"qxsim-script-assets"},n("h3",null,`\u5B58\u6863\u5185 Lua \u811A\u672C\uFF08${J.length}\uFF09`),n("button",{className:"qxsim-action",style:{width:"100%",marginBottom:8},onClick:Y},"\uFF0B \u65B0\u5EFA\u811A\u672C"),J.length?J.map(L=>n("div",{key:L.id,className:"qxsim-script-list-row"},n("button",{className:`qxsim-script-asset${L.id===q?" active":""}`,onClick:()=>h(L.id)},n("strong",null,L.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("small",null,L.mounted?`\u6302\u8F7D\uFF1A${L.assetLabel} \xB7 ${L.controlName}`:"\u672A\u6302\u8F7D\uFF08\u4EC5\u53EF\u88AB require\uFF09")),n("button",{className:"qxsim-iconbtn",title:"\u4E0B\u8F7D\u8BE5\u811A\u672C .lua",onClick:()=>w(L.id)},"\u21E9"),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u8BE5\u811A\u672C",onClick:()=>E(L.id)},"\u2715"))):n("div",{className:"qxsim-empty"},"\u8FD8\u6CA1\u6709\u811A\u672C\uFF0C\u70B9\u51FB\u201C\u65B0\u5EFA\u811A\u672C\u201D\u5F00\u59CB")),n("main",{className:"qxsim-script-editor"},R&&b?n(t.Fragment,null,n("div",{className:"qxsim-script-title"},n("div",null,n("h2",null,b.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("span",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${s.save?.name||"\u672A\u547D\u540D\u5B58\u6863"}\u201D \xB7 Lua \u811A\u672C\u662F\u5B58\u6863\u5185\u72EC\u7ACB\u8D44\u4EA7`)),n("span",null,`\u811A\u672C ${R.id}`)),n("div",{className:"qxsim-script-fields"},n("label",null,"\u811A\u672C\u8DEF\u5F84\uFF08\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF09",n("input",{type:"text",value:b.path,placeholder:"lua/example.lua",onChange:L=>N({path:L.target.value})})),n("label",null,"\u6302\u8F7D\u76EE\u6807\uFF08\u5BA2\u6237\u7AEF\u63A7\u4EF6 / \u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F\uFF09",n("select",{value:b.controlId?`${b.controlAsset||"server-control-template"}|${b.controlId}`:"",onChange:L=>{let[Al,Ll]=L.target.value.split("|");N(Ll?{controlId:Ll,controlAsset:Al}:{controlId:"",controlAsset:""})}},n("option",{value:""},"\u672A\u6302\u8F7D\uFF08\u4E0D\u751F\u6548\uFF0C\u4EC5\u53EF\u88AB require\uFF09"),n("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F \xB7 \u5BA2\u6237\u7AEF\u63A7\u4EF6\u5BB9\u5668\u5185"},ut.map(L=>n("option",{key:L.id,value:`${L.assetType}|${L.id}`},`${L.name} \xB7 ${L.id}`))),$.length?n("optgroup",{label:"\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F"},$.map(L=>n("option",{key:L.id,value:`${L.assetType}|${L.id}`},`${L.name} \xB7 ${L.id}`))):null))),n("label",null,"Lua \u6E90\u7801",n("textarea",{value:b.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:L=>N({source:L.target.value})})),n("div",{className:"qxsim-script-footer"},n("span",null,b.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":jl||(R.mounted?`\u5DF2\u6302\u8F7D\uFF1A${kt(R.controlId)}`:"\u5F53\u524D\u672A\u6302\u8F7D\uFF0C\u8BD5\u73A9\u65F6\u4E0D\u4F1A\u81EA\u52A8\u8FD0\u884C")),n("span",{className:"spacer"}),n("button",{className:"qxsim-action",onClick:nt},"\u21E9 \u811A\u672C\u5305 JSON"),n("button",{className:"qxsim-action",onClick:Dt},"\u21E9 \u811A\u672C\u5305 GIA"),n("button",{className:"qxsim-action primary",disabled:!b.dirty,onClick:z},"\u4FDD\u5B58\u811A\u672C"))):n("div",{className:"qxsim-empty"},"\u8BF7\u65B0\u5EFA\u6216\u9009\u62E9\u4E00\u4E2A\u811A\u672C")))}function Ts(s){if(s===void 0)return"null";try{return JSON.stringify(s)}catch{return String(s)}}function As(s){let q=String(s??"").trim();if(!q)return null;try{return JSON.parse(q)}catch{return q}}function Ns(s){return!!(s&&typeof s=="object"&&!Array.isArray(s)&&Object.prototype.hasOwnProperty.call(s,"fromSignalParam"))}function Es(s){return{version:1,dirty:!1,rules:(Array.isArray(s?.rules)?s.rules:[]).map((h,b)=>({id:String(h.id||`signal-${b+1}`),signalName:String(h.signalName||""),actions:Array.isArray(h.actions)&&h.actions.length?h.actions.map(N=>D0(N)):[Re("setCustomVariable")]}))}}let zs=["PlayerSelf","AllPlayers","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Os=["PlayerSelf","Level","Player1","Player2","Player3","Player4","Player5","Player6","Player7","Player8"],Ms={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 Mu(s){return Os.includes(s)&&s!=="AllPlayers"?s:s==="Level"?"Level":"PlayerSelf"}function Du(s){return zs.includes(s)?s:"PlayerSelf"}function Re(s){return s==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:"PlayerSelf",signalName:"",params:[]}:{kind:"setCustomVariable",entityType:"PlayerSelf",name:"",value:0}}function O0(s){return{version:1,rules:(s?.rules||[]).map(q=>({id:String(q.id||""),signalName:String(q.signalName||"").trim(),actions:(q.actions||[]).map(h=>h?.kind==="sendClientScriptSignal"?{kind:"sendClientScriptSignal",target:Du(h.target),signalName:String(h.signalName||"").trim(),params:Array.isArray(h.params)?h.params:[]}:{kind:"setCustomVariable",entityType:Mu(h?.entityType),name:String(h?.name||"").trim(),value:h&&Object.prototype.hasOwnProperty.call(h,"value")?h.value:0})}))}}function M0(s){let q=[];for(let[h,b]of(s?.rules||[]).entries()){String(b.signalName||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u9700\u8981\u76D1\u542C\u4FE1\u53F7\u540D`);let N=b.actions||[];N.length||q.push(`\u89C4\u5219 ${h+1} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u52A8\u4F5C`);for(let[z,Y]of N.entries())Y?.kind==="sendClientScriptSignal"?String(Y.signalName||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u52A8\u4F5C ${z+1} \u9700\u8981\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D`):String(Y?.name||"").trim()||q.push(`\u89C4\u5219 ${h+1} \u52A8\u4F5C ${z+1} \u9700\u8981\u53D8\u91CF\u540D`)}return q}function D0(s){if(s?.kind==="sendClientScriptSignal")return{kind:"sendClientScriptSignal",target:Du(s.target),signalName:String(s.signalName||""),params:Array.isArray(s.params)?s.params.map(h=>{try{return JSON.parse(JSON.stringify(h))}catch{return h}}):[]};let q=0;if(s&&Object.prototype.hasOwnProperty.call(s,"value"))try{q=JSON.parse(JSON.stringify(s.value))}catch{q=s.value}return{kind:"setCustomVariable",entityType:Mu(s?.entityType),name:String(s?.name||""),value:q}}function Ds({label:s,value:q,onChange:h}){let b=Ns(q),[N,z]=t.useState(()=>b?"":Ts(q));return t.useEffect(()=>{Ns(q)||z(Ts(q))},[q]),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},s),n("select",{value:b?"param":"literal","aria-label":`${s}\u6765\u6E90`,onChange:Y=>{Y.target.value==="param"?h({fromSignalParam:Number(q?.fromSignalParam)||0}):h(As(N||"0"))}},n("option",{value:"literal"},"\u5B57\u9762\u91CF\uFF08JSON\uFF09"),n("option",{value:"param"},"\u5F15\u7528\u76D1\u542C\u4FE1\u53F7\u53C2\u6570")),b?n("input",{type:"number",min:0,step:1,value:Number(q.fromSignalParam)||0,"aria-label":`${s}\u53C2\u6570\u5E8F\u53F7`,onChange:Y=>h({fromSignalParam:Math.max(0,Math.trunc(Number(Y.target.value)||0))})}):n("textarea",{className:"qxsim-logic-json",value:N,spellCheck:!1,"aria-label":`${s}\u5B57\u9762\u91CF`,onBlur:()=>h(As(N)),onChange:Y=>z(Y.target.value)}))}function _0({params:s,onChange:q}){let h=Array.isArray(s)?s:[];return n("div",{className:"qxsim-field wide"},n("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u53C2\u6570\uFF08\u6309\u6DFB\u52A0\u987A\u5E8F\uFF09"),h.length?h.map((b,N)=>n("div",{key:N,style:{display:"flex",gap:6,alignItems:"flex-start",marginBottom:6}},n("div",{style:{flex:1,minWidth:0}},n(Ds,{label:`\u53C2\u6570 ${N}`,value:b,onChange:z=>q(h.map((Y,E)=>E===N?z:Y))})),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u53C2\u6570",onClick:()=>q(h.filter((z,Y)=>Y!==N))},"\u2715"))):n("div",{className:"qxsim-muted"},"\u6682\u65E0\u53C2\u6570\uFF0C\u53EF\u53D1\u9001\u7A7A\u53C2\u6570\u5217\u8868"),n("button",{className:"qxsim-action",style:{marginTop:4},onClick:()=>q(h.concat([0]))},"\uFF0B \u6DFB\u52A0\u53C2\u6570"))}function U0({snap:s,draft:q,setDraft:h,saveLogic:b,notice:N,error:z}){let Y=q?.rules||[];function E(J){h({version:1,rules:J,dirty:!0})}function w(){E(Y.concat([{id:`signal-${Date.now().toString(36)}`,signalName:"",actions:[Re("setCustomVariable")]}]))}function nt(J,R){E(Y.map((P,ut)=>ut===J?{...P,...R}:P))}function Dt(J,R,P){let ut=Y[J];ut&&nt(J,{actions:ut.actions.map(($,kt)=>kt===R?{...$,...P}:$)})}function jl(J,R,P){Dt(J,R,Re(P))}return n("div",{className:"qxsim-server-logic"},n("div",{className:"qxsim-logic-wrap"},n("div",{className:"qxsim-logic-title"},n("div",null,n("h2",null,"\u670D\u52A1\u7AEF\u903B\u8F91"),n("p",null,`\u5C5E\u4E8E\u5B58\u6863\u201C${s.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`)),n("button",{className:"qxsim-action primary",disabled:!q?.dirty,onClick:b},"\u4FDD\u5B58\u670D\u52A1\u7AEF\u903B\u8F91")),n("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"),z?n("div",{className:"qxsim-logic-error"},z):null,Y.length?Y.map((J,R)=>n("section",{key:J.id||R,className:"qxsim-logic-rule"},n("div",{className:"qxsim-logic-rule-head"},n("strong",null,`\u89C4\u5219 ${R+1}`),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u76D1\u542C\u4FE1\u53F7\u540D"),n("input",{type:"text",value:J.signalName,placeholder:"EarnGold","aria-label":`\u89C4\u5219 ${R+1} \u76D1\u542C\u4FE1\u53F7\u540D`,onChange:P=>nt(R,{signalName:P.target.value})})),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u89C4\u5219",onClick:()=>E(Y.filter((P,ut)=>ut!==R))},"\u2715")),n("div",{className:"qxsim-logic-actions"},(J.actions||[]).map((P,ut)=>n("div",{key:ut,className:"qxsim-logic-action"},n("div",{className:"qxsim-logic-action-head"},n("strong",null,`\u52A8\u4F5C ${ut+1}`),n("select",{value:P.kind,"aria-label":`\u89C4\u5219 ${R+1} \u52A8\u4F5C ${ut+1} \u7C7B\u578B`,onChange:$=>jl(R,ut,$.target.value)},n("option",{value:"setCustomVariable"},"\u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),n("option",{value:"sendClientScriptSignal"},"\u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7")),n("span",null,P.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"),n("button",{className:"qxsim-iconbtn",title:"\u5220\u9664\u52A8\u4F5C",disabled:(J.actions||[]).length<=1,onClick:()=>nt(R,{actions:J.actions.filter(($,kt)=>kt!==ut)})},"\u2715")),P.kind==="sendClientScriptSignal"?n("div",{className:"qxsim-logic-fields"},n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u53D1\u9001\u76EE\u6807"),n("select",{value:Du(P.target),onChange:$=>Dt(R,ut,{target:$.target.value})},zs.map($=>n("option",{key:$,value:$},Ms[$])))),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u5BA2\u6237\u7AEF\u4FE1\u53F7\u540D"),n("input",{type:"text",value:P.signalName,placeholder:"GoldChanged",onChange:$=>Dt(R,ut,{signalName:$.target.value})})),n(_0,{params:P.params,onChange:$=>Dt(R,ut,{params:$})})):n("div",{className:"qxsim-logic-fields"},n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u5B9E\u4F53"),n("select",{value:Mu(P.entityType),onChange:$=>Dt(R,ut,{entityType:$.target.value})},Os.map($=>n("option",{key:$,value:$},Ms[$])))),n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u53D8\u91CF\u540D"),n("input",{type:"text",value:P.name,placeholder:"Gold",onChange:$=>Dt(R,ut,{name:$.target.value})})),n("div",{className:"wide"},n(Ds,{label:"\u53D8\u91CF\u503C",value:P.value,onChange:$=>Dt(R,ut,{value:$})}))))),n("div",{className:"qxsim-logic-actions-foot"},n("button",{className:"qxsim-action",onClick:()=>nt(R,{actions:(J.actions||[]).concat([Re("setCustomVariable")])})},"\uFF0B \u8BBE\u7F6E\u81EA\u5B9A\u4E49\u53D8\u91CF"),n("button",{className:"qxsim-action",onClick:()=>nt(R,{actions:(J.actions||[]).concat([Re("sendClientScriptSignal")])})},"\uFF0B \u53D1\u9001\u5BA2\u6237\u7AEF\u811A\u672C\u4FE1\u53F7"))))):n("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"),n("div",{className:"qxsim-logic-actions-foot"},n("button",{className:"qxsim-action",onClick:w},"\uFF0B \u6DFB\u52A0\u76D1\u542C\u89C4\u5219")),n("div",{className:"qxsim-script-footer",style:{marginTop:16}},n("span",null,q?.dirty?"\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539":N||"\u4FDD\u5B58\u540E\u4F1A\u5199\u5165\u5F53\u524D\u5B58\u6863\uFF0C\u4E0B\u6B21\u8BD5\u73A9\u751F\u6548"),n("span",{className:"spacer"}))))}function C0({snap:s,addScriptMounted:q,mountScriptTo:h,unmountScript:b,openScript:N}){let z=(s.scripts||[]).filter(E=>E.controlId===s.selectedId),Y=(s.scripts||[]).filter(E=>E.controlId!==s.selectedId);return n(t.Fragment,null,n(I,{title:"\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6\u7684\u811A\u672C"},z.length?z.map(E=>n("div",{key:E.id,className:"qxsim-script-list-row"},n("button",{className:"qxsim-script-asset",onClick:()=>N(E.id)},n("strong",null,E.path||"(\u672A\u547D\u540D\u811A\u672C)"),n("small",null,`\u811A\u672C ${E.id}`)),n("button",{className:"qxsim-iconbtn",title:"\u89E3\u9664\u6302\u8F7D\uFF08\u4FDD\u7559\u811A\u672C\uFF09",onClick:()=>b(E.id)},"\u292B"))):n("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")),n(I,{title:"\u6302\u8F7D\u5DF2\u6709\u811A\u672C",open:!1},Y.length?n("label",{className:"qxsim-field"},n("span",{className:"qxsim-field-label"},"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6"),n("select",{value:"","aria-label":"\u9009\u62E9\u811A\u672C\u6302\u8F7D\u5230\u8BE5\u63A7\u4EF6",onChange:E=>{let w=E.target.value;E.target.value="",w&&h(w)}},n("option",{value:""},"\u9009\u62E9\u811A\u672C\u2026"),Y.map(E=>n("option",{key:E.id,value:E.id},`${E.path||"(\u672A\u547D\u540D\u811A\u672C)"} \xB7 ${E.id}${E.mounted?`\uFF08\u5F53\u524D\u6302\u8F7D\u4E8E ${E.assetLabel} \xB7 ${E.controlName}\uFF0C\u5C06\u79FB\u52A8\u5230\u6B64\u63A7\u4EF6\uFF09`:"\uFF08\u672A\u6302\u8F7D\uFF09"}`)))):n("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"),n("div",{className:"qxsim-script-actions",style:{marginTop:8}},n("button",{onClick:()=>q(s.selectedId)},"\uFF0B \u65B0\u5EFA\u811A\u672C\u5E76\u6302\u8F7D\u5230\u6B64\u63A7\u4EF6"))))}function R0(s,q){let h=null,b=null;function N(z,Y){z.id===q&&(h=z,b=Y);for(let E of z.children||[])N(E,z)}if(N(s,null),h?.kind==="container")return h.id;if(h?.kind==="server-container")return h.children?.find(z=>z.kind==="container")?.id||h.id;for(;b&&b.kind!=="container";){let Y=function(E){for(let w of E.children||[])w===b&&(z=E),Y(w)},z=null;Y(s),b=z}return b?.id||s.children?.find(z=>z.kind==="container")?.id}function H0(s,q){let h=null;function b(N){N.id===q&&(h=N);for(let z of N.children||[])b(z)}return b(s),h&&h.kind!=="server-container"?h.id:R0(s,q)}function Y0(s,q,h,b){let N=s,z=s.kind,Y=z==="textbox"||z==="textwindow",E=N.renderLeft??N.left,w=N.renderBottom??N.bottom,nt=N.renderWidth??N.width,Dt=N.renderHeight??N.height,jl=N.renderRotationZ??s.rotationZ??0,J={left:`${E/h*100}%`,bottom:`${w/b*100}%`,width:`${nt/h*100}%`,height:`${Dt/b*100}%`,"--rotation":`${-Number(jl)}deg`,fontSize:Math.max(8,Math.min(40,Number(s.fontSize||12))),color:Y?v(s.fontColor,4294967295):"#fff"};z==="image"?Object.assign(J,C(s.primitive,v(s.imageColor,4294967295))):Y?(J.background=v(s.bgColor,16777215),J.justifyContent=s.horizontalAlignment==="Right"?"flex-end":s.horizontalAlignment==="Middle"?"center":"flex-start",J.alignItems=s.verticalAlignment==="Bottom"?"flex-end":s.verticalAlignment==="Middle"?"center":"flex-start",J.textShadow=s.enableOutline===!1?"none":`0 0 2px ${v(s.outlineColor,4278190080)}`):z==="container"&&(J.background="transparent");let R=s.id===q.selectedId,P=Y?s.text||"":z==="image"&&s.primitive==="missing"?n("span",{className:"qxsim-box-label"},`\u7F3A\u5C11\u56FE\u7247 ${s.imageId||""}`):z!=="container"&&z!=="image"?n("span",{className:"qxsim-box-label"},s.name||c[z]?.[1]||z):null;return n("div",{key:s.id,className:`qxsim-box ${z}${R?" selected":""}${s.instantiated?" dynamic":""}${s.pressed?" pressed":""}`,style:J},P,R&&z!=="container"?["tl","tr","bl","br"].map(ut=>n("i",{key:ut,className:`qxsim-handle ${ut}`})):null)}function B0({sessionId:s}){let q=g(),[h,b]=t.useState(null),N=t.useRef(null),z=t.useRef(Promise.resolve()),[Y,E]=t.useState(""),[w,nt]=t.useState(null),[Dt,jl]=t.useState(!1),[J,R]=t.useState(""),P=t.useRef(null),[ut,$]=t.useState([]),[kt,L]=t.useState("ui"),[Al,Ll]=t.useState("base"),[_u,w0]=t.useState("fit"),[Uu,G0]=t.useState({}),[Vn,Cu]=t.useState(""),[wa,Ru]=t.useState("template"),[Hu,kn]=t.useState(""),[Yu,He]=t.useState(null),[_s,Bu]=t.useState({version:1,rules:[],dirty:!1}),Us=t.useRef(null),[Kn,X0]=t.useState({width:0,height:0});t.useEffect(()=>{let r=Us.current;if(!r||typeof ResizeObserver>"u")return;let A=new ResizeObserver(_=>{let B=_[0]?.contentRect;B&&B.width>0&&X0({width:B.width,height:B.height})});return A.observe(r),()=>A.disconnect()},[h?.canvas?.id]);function Ye(r,{keepLogicDraft:A=!0}={}){return N.current=r,b(r),r?.scripts&&kn(_=>r.scripts.some(B=>B.id===_)?_:r.scripts[0]?.id||""),Bu(_=>A&&_?.dirty?_:Es(r?.serverLogic)),r}let Jn=t.useCallback(async()=>{try{E(""),Ye(await j(s,"get"),{keepLogicDraft:!1})}catch(r){E(r?.message||String(r))}},[s]),$n=t.useCallback(async()=>{try{let r=await j(s,"archives");$(r?.archives||[])}catch{$([])}},[s]);t.useEffect(()=>{Jn(),$n()},[Jn,$n]);function qt(r){let A=async()=>{let _=N.current;if(!_)throw new Error("editor is not ready");try{let B=await j(s,"patch",{op:{...r,expectedRevision:_.version}});return E(""),Ye(B)}catch(B){throw E(B?.message||String(B)),/revision conflict/.test(String(B?.message||B))&&await Jn(),B}};return z.current=z.current.then(A,A),z.current}let Q0=(r,A)=>void qt({op:"set",key:r,value:A}).catch(()=>{});async function j0(r,A){let _=N.current?.inspector?.id;if(_)try{let B=await qt({op:"add",kind:"image",parentId:_,name:`${A}\u56FE\u7247`});await qt({op:"set",id:_,key:r,value:B.selectedId}),R(`${A}\u5DF2\u521B\u5EFA\u5E76\u7ED1\u5B9A\uFF1B\u53EF\u5728\u63A7\u4EF6\u6811\u4E2D\u7EE7\u7EED\u7F16\u8F91\u56FE\u7247\u3002`)}catch{}}t.useEffect(()=>{let r=h?.scripts?.find(A=>A.id===Hu);He(A=>A&&r&&A.id===r.id&&A.dirty?A:r?{id:r.id,path:r.path,source:r.source,controlId:r.controlId,controlAsset:r.controlAsset,dirty:!1}:null)},[h,Hu]);function L0(r){He(A=>A&&{...A,...r,dirty:!0})}async function Wn(){let r=Yu;!r||!r.dirty||(await qt({op:"updateScript",id:r.id,path:r.path,source:r.source,controlId:r.controlId,controlAsset:r.controlAsset}),He(A=>A&&A.id===r.id?{...A,dirty:!1}:A))}function Cs(){Wn().then(()=>R("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{})}async function Fn({silent:r=!1}={}){let A=_s;if(!A||!A.dirty)return;let _=M0(A);if(_.length){let Xa=_[0];throw r||E(Xa),new Error(Xa)}let B=await qt({op:"setServerLogic",logic:O0(A)});Bu(Es(B.serverLogic)),R("\u670D\u52A1\u7AEF\u903B\u8F91\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")}function Z0(){Fn({silent:!0}).catch(()=>{})}function Be(r){Cs(),Z0(),L(r)}async function Rs(r={}){let A=await qt({op:"addScript",...r}),_=A.scripts?.[A.scripts.length-1];return _&&kn(_.id),R(r.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"),_}function V0(r){Yu?.id===r&&He(null),qt({op:"removeScript",id:r}).then(()=>R("\u811A\u672C\u5DF2\u5220\u9664")).catch(()=>{})}function k0(r){qt({op:"updateScript",id:r,controlId:""}).then(()=>R("\u5DF2\u89E3\u9664\u6302\u8F7D\uFF0C\u811A\u672C\u4ECD\u4FDD\u7559\u5728\u5B58\u6863\u4E2D")).catch(()=>{})}function K0(r){let A=N.current?.selectedId||"",_=N.current?.asset?.type||"";A&&(He(B=>B&&B.id===r?{...B,controlId:A,controlAsset:_}:B),qt({op:"updateScript",id:r,controlId:A,controlAsset:_}).then(()=>R("\u5DF2\u6302\u8F7D\u5230\u5F53\u524D\u63A7\u4EF6")).catch(()=>{}))}async function Hs(r){if(N.current?.asset?.type!==r)try{let A=await qt({op:"selectAsset",assetType:r});Cu(""),Ru(r==="client-control-template"?"template":"child"),R(`\u5DF2\u5207\u6362\u5230\u5B58\u6863\u5185\u7684${A.asset.label}`)}catch{}}function J0(r,A){let _=N.current;if(!_)return;let B=_.asset?.type==="client-control-template"&&wa==="template",Xa=B?{op:"addTemplate",kind:r,name:`${A}\u6A21\u677F`}:{op:"add",kind:r,parentId:H0(_.root,_.selectedId),name:A};qt(Xa).then(()=>R(B?`\u5DF2\u65B0\u589E${A}\u6A21\u677F`:`\u5DF2\u6DFB\u52A0${A}\u5B50\u63A7\u4EF6`)).catch(()=>{})}async function Pn(r,A=""){try{await z.current.catch(()=>{});let _=await j(s,"export",{format:r,assetType:A});if(Array.isArray(_?.files)&&_.files.length){for(let B of _.files)d(B);E(""),R(`\u5DF2\u5BFC\u51FA ${_.files.length} \u4E2A GIA \u6587\u4EF6\uFF08${_.files.map(B=>B.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}d(_),E(""),R(_.warnings?.length?`\u5DF2\u5BFC\u51FA ${_.filename}\uFF1B\u90E8\u5206\u5185\u5BB9\u6682\u4E0D\u652F\u6301 GIA\u3002`:`\u5DF2\u5BFC\u51FA ${_.filename}`)}catch(_){E(_?.message||String(_))}}async function $0(r){if(r)try{await z.current.catch(()=>{});let A=await j(s,"load-archive",{path:r});Ye(A.snapshot,{keepLogicDraft:!1}),E(""),R(`\u5DF2\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6 ${r}`)}catch(A){E(A?.message||String(A))}}async function W0(r){if(!r)return;let A=r.name.toLowerCase().endsWith(".gia")?"gia":r.name.toLowerCase().endsWith(".json")?"json":r.name.toLowerCase().endsWith(".lua")?"lua":"";if(!A){E("\u4EC5\u652F\u6301 .json\u3001.gia \u6216 .lua \u6587\u4EF6");return}try{await z.current.catch(()=>{});let _=await j(s,"import",{format:A,filename:r.name,data:await o(r)});Ye(_.snapshot,{keepLogicDraft:!1}),E(""),R([`\u5DF2\u5BFC\u5165 ${r.name}`,..._.warnings||[]].join(`
|
|
34
|
+
`))}catch(_){E(_?.message||String(_))}finally{P.current&&(P.current.value="")}}async function F0(){let r=window.open("about:blank","_blank");if(!r){E("\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}r.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 Wn(),await Fn(),r.location.replace(a(s))}catch(A){r.close(),E(A?.message||String(A))}}async function P0(){if(!(Dt||!w?.trim())){jl(!0);try{await Wn(),await Fn(),await z.current.catch(()=>{});let r=N.current,A=await j(s,"save",{path:w.trim(),expectedRevision:r.version});Ye(await j(s,"get")),R(`\u5DF2\u4FDD\u5B58\u5230 ${A.path}`),E(""),nt(null),$n()}catch(r){E(r?.message||String(r))}finally{jl(!1)}}}if(t.useEffect(()=>{h?.inspector?.kind==="server-container"&&Ll("base")},[h?.inspector?.kind]),!h)return n("div",{className:"qxsim","data-theme":q,"data-qxsim-session-id":s},n("div",{className:"qxsim-status error"},Y||"\u6B63\u5728\u8F7D\u5165\u5343\u661F\u6C99\u7BB1\u2026"));let xa=h.canvas.width,Ga=h.canvas.height,wu=Kn.width>0&&Kn.height>0?Math.min((Kn.width-44)/xa,(Kn.height-54)/Ga):NaN,I0=Number.isFinite(wu)&&wu>0?Math.min(2,Math.round(wu*1e3)/1e3):.5,tp=_u==="fit"?I0:Number(_u)||.5,Ys=D(xa,Ga),lp=(h.canvas.presets||[]).filter(r=>r.platform===h.canvas.platform);function ap(r){if(!h||h.canvas.platform===r)return;let A=(h.canvas.presets||[]).filter(B=>B.platform===r);if(!A.length)return;let _=A.find(B=>G(B)===Ys)||A[0];qt({op:"setCanvas",canvasId:_.id}).then(()=>R(`\u5DF2\u5207\u6362\u5230${_.label}`)).catch(()=>{})}let yt=h.asset?.type==="client-control-template",Gu=!!(h.inspector&&h.inspector.kind!=="server-container"),Xu=new Set;for(let r of h.tree||[])(Uu[r.id]||(r.ancestorIds||[]).some(A=>Uu[A]))&&Xu.add(r.id);let ep=(h.boxes||[]).filter(r=>r.kind!=="server-container"&&r.visible&&!Xu.has(r.id));function np(r,A){r.stopPropagation(),G0(_=>{let B={..._};return B[A]?delete B[A]:B[A]=!0,B})}let Bs=h.tree.filter(r=>!Vn.trim()||`${r.name} ${r.label}`.toLowerCase().includes(Vn.trim().toLowerCase())),ft=h.tree.find(r=>r.id===h.selectedId),ip=yt&&ft?h.tree.filter(r=>r.id!==ft.id&&!(r.ancestorIds||[]).includes(ft.id)):[],up=ft?.parentId||h.root.id;return n("div",{className:"qxsim","data-theme":q,"data-qxsim-session-id":s},w!==null?n("div",{className:"qxsim-save-overlay"},n("form",{className:"qxsim-save-dialog",role:"dialog","aria-modal":!0,"aria-label":"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A",onSubmit:r=>{r.preventDefault(),P0()}},n("h2",null,"\u4FDD\u5B58\u5230\u5DE5\u4F5C\u533A"),n("label",null,"\u5B58\u6863\u76F8\u5BF9\u8DEF\u5F84",n("input",{autoFocus:!0,required:!0,value:w,disabled:Dt,onChange:r=>nt(r.target.value)})),Y?n("div",{role:"alert"},Y):null,n("footer",null,n("button",{className:"qxsim-action",type:"button",disabled:Dt,onClick:()=>nt(null)},"\u53D6\u6D88"),n("button",{className:"qxsim-action primary",type:"submit",disabled:Dt||!w.trim()},Dt?"\u4FDD\u5B58\u4E2D\u2026":"\u4FDD\u5B58")))):null,n("header",{className:"qxsim-toolbar"},n("div",{className:"qxsim-brand",title:`${h.workspace?.bound?h.workspace.path:"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"}
|
|
34
35
|
${h.meta?.sourceFile||"\u5C1A\u672A\u5BFC\u5165\u6587\u4EF6"}`},n("span",{className:"qxsim-appicon"},"UI"),n("span",{className:"qxsim-brand-text"},n("strong",null,`\u5B58\u6863\uFF1A${h.save?.name||h.meta?.name||"\u672A\u547D\u540D\u5B58\u6863"}`),n("span",null,`\u5DE5\u4F5C\u533A\uFF1A${h.workspace?.bound?h.workspace.name:"\u672A\u7ED1\u5B9A"} \xB7 \u5F53\u524D\u8D44\u4EA7\uFF1A${h.asset?.label||"UI\u63A7\u4EF6"}`))),n("div",{className:"qxsim-toolbar-center"},kt==="ui"?n(t.Fragment,null,n("div",{className:"qxsim-device-switch",role:"group","aria-label":"\u76EE\u6807\u8BBE\u5907"},O.map(r=>n("button",{key:r.key,className:h.canvas.platform===r.key?"active":"",title:r.title,onClick:()=>ap(r.key)},r.label))),n("select",{className:"qxsim-control ratio","aria-label":"\u5C4F\u5E55\u6BD4\u4F8B",value:h.canvasId,onChange:r=>void qt({op:"setCanvas",canvasId:r.target.value}).catch(()=>{})},lp.map(r=>n("option",{key:r.id,value:r.id},`${G(r)} \xB7 ${r.width}\xD7${r.height}`))),n("select",{className:"qxsim-control zoom","aria-label":"\u753B\u5E03\u7F29\u653E",value:_u,onChange:r=>w0(r.target.value)},[["fit","\u9002\u5E94"],["0.25","25%"],["0.5","50%"],["0.75","75%"],["1","100%"]].map(([r,A])=>n("option",{key:r,value:r},A)))):n("span",{className:"qxsim-muted"},kt==="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")),n("div",{className:"qxsim-actions"},e?n("button",{className:"qxsim-action",title:"\u4FDD\u5B58\u5B8C\u6574\u5B58\u6863\u5230\u5DE5\u4F5C\u533A",onClick:()=>{E(""),nt(N.current?.storage?.path||"qxqy-simulator.save.json")}},"\u4FDD\u5B58\u5B58\u6863"):null,n("div",{className:"qxsim-io"},n("input",{ref:P,hidden:!0,type:"file",accept:".json,.gia,.lua,application/json,application/octet-stream,text/plain",onChange:r=>void W0(r.target.files?.[0])}),n("select",{className:"qxsim-control zoom","aria-label":"\u4ECE\u5DE5\u4F5C\u533A\u62C9\u53D6\u5B58\u6863",defaultValue:"",onFocus:()=>void $n(),onChange:r=>{let A=r.target.value;r.target.value="",A&&$0(A)}},n("option",{value:"",disabled:!0},h.workspace?.bound?"\u2913 \u5DE5\u4F5C\u533A\u5B58\u6863":"\u5DE5\u4F5C\u533A\u672A\u7ED1\u5B9A"),...ut.length?ut.map(r=>n("option",{key:r.path,value:r.path},`${r.name} \xB7 ${r.path}`)):[n("option",{value:"",disabled:!0},h.workspace?.bound?"\u672A\u53D1\u73B0 qxqy-simulator-save":"\u5148\u7ED1\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u533A")]),n("button",{className:"qxsim-action",title:"\u5BFC\u5165\u5B58\u6863\u3001\u5355\u9879 UI \u8D44\u4EA7\u6216 Lua",onClick:()=>P.current?.click()},"\u21E7 \u5BFC\u5165"),n("select",{className:"qxsim-control zoom","aria-label":"\u5BFC\u51FA\u683C\u5F0F",defaultValue:"",onChange:r=>{let[A,_=""]=r.target.value.split("|");r.target.value="",A&&Pn(A,_)}},n("option",{value:"",disabled:!0},"\u21E9 \u5BFC\u51FA"),n("option",{value:"save"},"\u8D44\u4EA7\u5305 JSON\uFF08\u4E09\u7C7B\u5408\u4E00\uFF09"),n("option",{value:"save-gia"},"\u8D44\u4EA7\u5305 GIA\uFF08\u5DF2\u6539\u52A8\u9879\uFF09"),n("option",{value:"gia-combined"},"\u8D44\u4EA7\u5305 GIA \u6574\u5408\u5305\uFF08\u63A7\u4EF6+\u811A\u672C\uFF09"),n("optgroup",{label:"\u5F53\u524D\u754C\u9762\uFF08\u5DE6\u680F\u6B63\u5728\u770B\u7684\u90A3\u68F5\u6811\uFF09"},n("option",{value:"json"},"\u5F53\u524D\u754C\u9762 Authoring JSON"),n("option",{value:"gia"},"\u5F53\u524D\u754C\u9762 GIA")),n("optgroup",{label:"\u670D\u52A1\u5668\u63A7\u4EF6\u6A21\u677F"},n("option",{value:"json|server-control-template"},"Authoring JSON"),n("option",{value:"gia|server-control-template"},"GIA")),n("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"},n("option",{value:"json|client-control-template"},"Authoring JSON"),n("option",{value:"gia|client-control-template"},"GIA")),n("optgroup",{label:"Lua \u811A\u672C"},n("option",{value:"scripts"},"\u811A\u672C\u5305 JSON\uFF08\u5168\u90E8\u811A\u672C\uFF09"),n("option",{value:"scripts-gia"},"\u811A\u672C\u5305 GIA\uFF08\u5168\u90E8\u811A\u672C\uFF09")))),n("button",{className:"qxsim-action primary",title:"\u5728\u72EC\u7ACB\u6807\u7B7E\u9875\u4E2D\u8BD5\u73A9",onClick:F0},"\u25B7 \u8BD5\u73A9 \u2197"),n("button",{className:"qxsim-iconbtn",title:"\u91CD\u65B0\u8F7D\u5165",onClick:Jn},"\u21BB"))),n("nav",{className:"qxsim-editor-nav","aria-label":"\u7F16\u8F91\u9875\u9762"},n("button",{className:kt==="ui"?"active":"",onClick:()=>Be("ui")},"UI \u7F16\u8F91"),n("button",{className:kt==="script"?"active":"",onClick:()=>Be("script")},"Lua \u811A\u672C"),n("button",{className:kt==="logic"?"active":"",onClick:()=>Be("logic")},"\u670D\u52A1\u7AEF\u903B\u8F91"),n("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")),kt==="ui"?n("div",{className:"qxsim-main"},n("aside",{className:"qxsim-tree"},n("div",{className:"qxsim-asset-switch","aria-label":"\u7F16\u8F91\u8D44\u6E90\u7C7B\u578B"},n("button",{className:yt?"":"active",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u670D\u52A1\u7AEF UI \u63A7\u4EF6",onClick:()=>void Hs("server-control-template")},"UI\u63A7\u4EF6-\u670D\u52A1\u7AEF"),n("button",{className:yt?"active":"",title:"\u7F16\u8F91\u5B58\u6863\u5185\u7684\u5BA2\u6237\u7AEF\u63A7\u4EF6\u6A21\u677F",onClick:()=>void Hs("client-control-template")},"UI\u63A7\u4EF6-\u5BA2\u6237\u7AEF")),n("div",{className:"qxsim-pane-head"},n("div",{className:"qxsim-pane-title"},yt?"\u6A21\u677F\u4E0E\u5B50\u63A7\u4EF6":"\u63A7\u4EF6\u6811"),n("span",{className:"qxsim-muted"},yt?`${h.asset.templateCount} \u4E2A\u6A21\u677F \xB7 ${h.tree.length} \u4E2A\u63A7\u4EF6`:`${h.tree.length} \u4E2A\u8282\u70B9`)),n("label",{className:"qxsim-search"},"\u2315",n("input",{value:Vn,placeholder:yt?"\u641C\u7D22\u6A21\u677F\u6216\u63A7\u4EF6":"\u641C\u7D22\u63A7\u4EF6",onChange:r=>Cu(r.target.value)}),Vn?n("button",{onClick:()=>Cu("")},"\xD7"):n("span",null,"\u2301")),n("div",{className:"qxsim-tree-scroll"},Bs.length?Bs.map(r=>{let A=c[r.kind]||["\u25C7",r.label],_=Xu.has(r.id),B=!!Uu[r.id];return n("div",{key:r.id,className:`qxsim-row${yt&&r.depth===0?" template-root":""}${r.id===h.selectedId?" active":""}${_?" canvas-hidden":""}`,style:{paddingLeft:8+r.depth*18,"--depth":r.depth},title:`${A[1]} \xB7 ${r.name} \xB7 GUID ${r.guid??r.id}`,onClick:()=>void qt({op:"select",id:r.id}).catch(()=>{})},n("span",{className:"qxsim-chevron"},r.childCount?"\u25BC":""),n("span",{className:"qxsim-kind"},A[0]),n("span",{className:"qxsim-row-label"},r.name),n("span",{className:"qxsim-row-end"},yt&&r.depth===0?n(t.Fragment,null,n("span",{className:"qxsim-template-tag"},"\u6A21\u677F"),n("span",{className:"qxsim-template-id"},`#${r.guid??r.id}`)):r.incomplete?n("span",{className:"qxsim-incomplete"},"\u6682\u4E0D\u652F\u6301"):null,n("button",{className:`qxsim-eye${B?" off":""}`,type:"button",title:B?"\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":`${r.name}\u753B\u5E03\u53EF\u89C1\u6027`,"aria-pressed":!B,onClick:Xa=>np(Xa,r.id)},B?"\u25CC":"\u25C9")))}):n("div",{className:"qxsim-empty"},"\u6CA1\u6709\u5339\u914D\u7684\u63A7\u4EF6")),n("div",{className:"qxsim-tree-foot"},yt&&ft?n("div",{className:"qxsim-hierarchy"},n("div",{className:"qxsim-hierarchy-head"},n("strong",null,"\u5C42\u7EA7\u4E0E\u6A21\u677F\u8FB9\u754C"),n("span",null,ft.name)),n("div",{className:"qxsim-parent-row"},n("select",{"aria-label":"\u7236\u7EA7\u63A7\u4EF6",value:up,onChange:r=>void qt({op:"reparent",id:ft.id,parentId:r.target.value}).then(()=>R(r.target.value===h.root.id?"\u5DF2\u63D0\u5347\u4E3A\u53EF\u5B9E\u4F8B\u5316\u9876\u5C42\u6A21\u677F":"\u5DF2\u8C03\u6574\u63A7\u4EF6\u7236\u7EA7")).catch(()=>{})},n("option",{value:h.root.id},"\u9876\u5C42\u6A21\u677F\uFF08\u53EF\u5B9E\u4F8B\u5316\uFF09"),ip.map(r=>n("option",{key:r.id,value:r.id},`${"\u3000".repeat(r.depth)}${r.name}`))),n("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0A\u79FB",disabled:ft.siblingIndex<=0,onClick:()=>void qt({op:"moveSibling",id:ft.id,direction:"up"}).catch(()=>{})},"\u2191"),n("button",{title:"\u5728\u540C\u7EA7\u4E2D\u4E0B\u79FB",disabled:ft.siblingIndex>=ft.siblingCount-1,onClick:()=>void qt({op:"moveSibling",id:ft.id,direction:"down"}).catch(()=>{})},"\u2193")),n("div",{className:"qxsim-hierarchy-note"},ft.depth===0?"\u8BE5\u8282\u70B9\u4F1A\u5199\u5165\u72EC\u7ACB UIControlTemplate\uFF0C\u53EF\u76F4\u63A5\u4F5C\u4E3A prefabId\u3002":`\u5F53\u524D\u4E3A\u7B2C ${ft.depth} \u5C42\u5B50\u63A7\u4EF6\uFF0C\u4E0D\u4F1A\u5355\u72EC\u6210\u4E3A prefabId\u3002`)):null,n("div",{className:"qxsim-palette-head"},n("span",{title:yt&&wa==="template"?"\u65B0\u589E\u72EC\u7ACB\u53EF\u5B9E\u4F8B\u5316\u6A21\u677F":`\u6DFB\u52A0\u5230${ft?ft.name:"\u5F53\u524D\u63A7\u4EF6"}`},yt&&wa==="template"?"\u65B0\u589E\u9876\u5C42\u6A21\u677F":`\u6DFB\u52A0\u5230${ft?`\u201C${ft.name}\u201D`:"\u5F53\u524D\u63A7\u4EF6"}`),yt?n("span",{className:"qxsim-add-mode"},n("button",{className:wa==="template"?"active":"",onClick:()=>Ru("template")},"\u9876\u5C42"),n("button",{className:wa==="child"?"active":"",onClick:()=>Ru("child")},"\u5B50\u63A7\u4EF6")):null),n("div",{className:"qxsim-add"},f.filter(([r])=>yt||r!=="container").map(([r,A])=>n("button",{key:r,title:`${yt&&wa==="template"?"\u65B0\u589E":"\u6DFB\u52A0"}${A}`,onClick:()=>J0(r,A)},`\uFF0B ${A}`))))),n("main",{className:"qxsim-center"},n("div",{className:"qxsim-workspace",ref:Us},n("div",{className:"qxsim-stage-shell",style:{width:`${Math.max(40,Math.round(xa*tp))}px`}},n("div",{className:"qxsim-stage-label"},n("b",null,yt?"Lua \u6A21\u677F\u9884\u89C8":"\u754C\u9762\u63A7\u4EF6\u7EC4"),n("span",{className:"qxsim-platform-tag"},h.canvas.platform),n("span",null,`${Ys} \xB7 ${xa}\xD7${Ga} \xB7 \u5DE6\u4E0B\u539F\u70B9`)),n("div",{className:"qxsim-stage",style:{width:"100%",aspectRatio:`${xa} / ${Ga}`},onClick:r=>{let A=r.currentTarget.getBoundingClientRect();qt({op:"pick",x:(r.clientX-A.left)*xa/A.width,y:(A.bottom-r.clientY)*Ga/A.height}).catch(()=>{})}},ep.map(r=>Y0(r,h,xa,Ga))))),Y?n("div",{className:"qxsim-status error"},"\u26A0 ",Y):n("div",{className:"qxsim-status"},n("span",null,`\u25CF ${h.asset?.label||"\u63A7\u4EF6"}\u7F16\u8F91`),n("span",null,J||(ft?`\u5F53\u524D\uFF1A${ft.name}`:"")),n("span",{className:"spacer"}),n("span",null,yt?"GIA \u5BFC\u51FA\u540E\u53EF\u5728 Lua \u4E2D\u6309 prefabId \u5B9E\u4F8B\u5316":"\u5B57\u6BB5\u5728\u5931\u7126\u6216 Enter \u65F6\u63D0\u4EA4"))),n("aside",{className:"qxsim-inspector"},h.inspector?n(t.Fragment,null,n("div",{className:"qxsim-inspector-head"},n("div",{className:"qxsim-inspector-line"},n("span",{className:"qxsim-kind"},(c[h.inspector.kind]||["\u25C7"])[0]),n("strong",null,h.inspector.label),yt&&ft?.depth===0?n("span",{className:"qxsim-template-tag"},"\u53EF\u5B9E\u4F8B\u5316"):null),n("div",{className:"qxsim-node-id"},yt&&ft?.depth===0?"\u5BFC\u51FA prefabId ":"\u63A7\u4EF6 GUID ",n("code",null,h.inspector.guid??h.inspector.id)," \xB7 ",ft?.name||"\u8282\u70B9",yt&&ft?.depth===0?n("small",null,"\uFF08\u771F\u5B9E\u7F16\u8F91\u5668\u5BFC\u5165\u540E\u53EF\u80FD\u91CD\u6620\u5C04\uFF09"):null)),n("div",{className:"qxsim-tabs",style:Gu?void 0:{gridTemplateColumns:"1fr"}},n("button",{className:Al==="base"?"active":"",onClick:()=>Ll("base")},"\u57FA\u7840\u5C5E\u6027"),Gu?n("button",{className:Al==="script"?"active":"",onClick:()=>Ll("script")},"\u811A\u672C"):null),n("div",{className:"qxsim-inspector-scroll"},Gu&&Al==="script"?n(C0,{snap:h,addScriptMounted:r=>void Rs({controlId:r,controlAsset:h.asset?.type}).then(()=>Be("script")),mountScriptTo:K0,unmountScript:k0,openScript:r=>{kn(r),Be("script")}}):n(E0,{inspector:h.inspector,commit:Q0,createStateChild:j0})),n("div",{className:"qxsim-tree-foot"},n("button",{className:"qxsim-action danger",style:{width:"100%"},onClick:()=>void qt({op:"remove"}).catch(()=>{})},yt&&ft?.depth===0?"\u232B \u5220\u9664\u5F53\u524D\u6A21\u677F":"\u232B \u5220\u9664\u5F53\u524D\u63A7\u4EF6"))):n("div",{className:"qxsim-empty"},"\u8BF7\u9009\u62E9\u4E00\u4E2A\u63A7\u4EF6"))):kt==="script"?n(z0,{snap:h,selectedScriptId:Hu,selectScript:r=>{Cs(),kn(r)},draft:Yu,updateDraft:L0,saveScript:()=>void Wn().then(()=>R("Lua \u811A\u672C\u5DF2\u4FDD\u5B58\u5230\u5F53\u524D\u5B58\u6863")).catch(()=>{}),addScript:()=>void Rs(),removeScript:V0,exportLua:r=>void Pn("lua",r),exportScripts:()=>void Pn("scripts"),exportScriptsGia:()=>void Pn("scripts-gia"),notice:J}):n(U0,{snap:h,draft:_s,setDraft:Bu,saveLogic:()=>void Fn().catch(()=>{}),notice:J,error:Y}))}return{SimulatorView:B0,ensureStyle:x,removeStyle:()=>document.getElementById(i)?.remove()}}var A0="qxqy-editor-session",zu=sessionStorage.getItem(A0);zu||(zu=Array.from(crypto.getRandomValues(new Uint8Array(16)),t=>t.toString(16).padStart(2,"0")).join(""),sessionStorage.setItem(A0,zu));var N0=q0(qs.default,{async api(t,l,a={}){let e=await fetch(`/editor/api/${l}`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:t,...a})}),n=await e.json();if(!e.ok||!n.ok)throw new Error(n.error||"\u8BF7\u6C42\u5931\u8D25");return n.value},playUrl:t=>`/editor/play#${encodeURIComponent(t)}`,saveToWorkspace:!0});N0.ensureStyle();(0,T0.createRoot)(document.getElementById("editor")).render(qs.default.createElement(N0.SimulatorView,{sessionId:zu}));
|
|
35
36
|
/*! Bundled license information:
|
|
36
37
|
|
|
@@ -922,7 +922,7 @@ fn mainFragment(
|
|
|
922
922
|
`),e.unshift(`
|
|
923
923
|
var stride = ${r};
|
|
924
924
|
`);let s=e.join(`
|
|
925
|
-
`);return new Function("ps","f32v","u32v",s)}var Ja=class{constructor(t){this._size=0,this._generateParticleUpdateCache={};let e=this._size=t.size??1e3,r=t.properties,s=0,n=0;for(let h in r){let u=r[h],d=Wt(u.format);u.dynamic?n+=d.stride:s+=d.stride}this._dynamicStride=n/4,this._staticStride=s/4,this.staticAttributeBuffer=new Ge(e*4*s),this.dynamicAttributeBuffer=new Ge(e*4*n),this.indexBuffer=Xu(e);let o=new Be,a=0,l=0;this._staticBuffer=new Ft({data:new Float32Array(1),label:"static-particle-buffer",shrinkToFit:!1,usage:it.VERTEX|it.COPY_DST}),this._dynamicBuffer=new Ft({data:new Float32Array(1),label:"dynamic-particle-buffer",shrinkToFit:!1,usage:it.VERTEX|it.COPY_DST});for(let h in r){let u=r[h],d=Wt(u.format);u.dynamic?(o.addAttribute(u.attributeName,{buffer:this._dynamicBuffer,stride:this._dynamicStride*4,offset:a*4,format:u.format}),a+=d.size):(o.addAttribute(u.attributeName,{buffer:this._staticBuffer,stride:this._staticStride*4,offset:l*4,format:u.format}),l+=d.size)}o.addIndex(this.indexBuffer);let c=this.getParticleUpdate(r);this._dynamicUpload=c.dynamicUpdate,this._staticUpload=c.staticUpdate,this.geometry=o}getParticleUpdate(t){let e=NE(t);return this._generateParticleUpdateCache[e]?this._generateParticleUpdateCache[e]:(this._generateParticleUpdateCache[e]=this.generateParticleUpdate(t),this._generateParticleUpdateCache[e])}generateParticleUpdate(t){return Y0(t)}update(t,e){t.length>this._size&&(e=!0,this._size=Math.max(t.length,this._size*1.5|0),this.staticAttributeBuffer=new Ge(this._size*this._staticStride*4*4),this.dynamicAttributeBuffer=new Ge(this._size*this._dynamicStride*4*4),this.indexBuffer=Xu(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));let r=this.dynamicAttributeBuffer;if(this._dynamicUpload(t,r.float32View,r.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,t.length*this._dynamicStride*4,!0),e){let s=this.staticAttributeBuffer;this._staticUpload(t,s.float32View,s.uint32View),this._staticBuffer.setDataWithSize(s.float32View,t.length*this._staticStride*4,!0)}}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}};function NE(i){let t=[];for(let e in i){let r=i[e];t.push(e,r.code,r.dynamic?"d":"s")}return t.join("_")}dt();et();rr();mt();rc();xe();Iu();fo();Za();Gt();H.add(_m,bm);function j0(i,t,e){if(i.fillType!=="Horizontal"&&i.fillType!=="Vertical")return null;let r=Number(i.fillAmount??1),s=Number.isFinite(r)?Math.max(0,Math.min(1,r)):1;if(i.fillType==="Horizontal"){let o=t*s;return{x:i.fillHorizontalType==="Right"?t/2-o:-t/2,y:-e/2,width:o,height:e}}let n=e*s;return{x:-t/2,y:i.fillVerticalType==="Top"?-e/2:e/2-n,width:t,height:n}}Nh();jh();$h();Mh();ca();kr();sr();var $0={aVertex:(i,t,e,r,s)=>{let n=0,o=0,a=0,l=0;for(let c=0;c<i.length;++c){let h=i[c],u=h.texture,d=h.scaleX,f=h.scaleY,m=h.anchorX,g=h.anchorY,y=u.trim,x=u.orig;y?(o=y.x-m*x.width,n=o+y.width,l=y.y-g*x.height,a=l+y.height):(n=x.width*(1-m),o=x.width*-m,a=x.height*(1-g),l=x.height*-g),t[r]=o*d,t[r+1]=l*f,t[r+s]=n*d,t[r+s+1]=l*f,t[r+s*2]=n*d,t[r+s*2+1]=a*f,t[r+s*3]=o*d,t[r+s*3+1]=a*f,r+=s*4}},aPosition:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n],a=o.x,l=o.y;t[r]=a,t[r+1]=l,t[r+s]=a,t[r+s+1]=l,t[r+s*2]=a,t[r+s*2+1]=l,t[r+s*3]=a,t[r+s*3+1]=l,r+=s*4}},aRotation:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].rotation;t[r]=o,t[r+s]=o,t[r+s*2]=o,t[r+s*3]=o,r+=s*4}},aUV:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].texture.uvs;t[r]=o.x0,t[r+1]=o.y0,t[r+s]=o.x1,t[r+s+1]=o.y1,t[r+s*2]=o.x2,t[r+s*2+1]=o.y2,t[r+s*3]=o.x3,t[r+s*3+1]=o.y3,r+=s*4}},aColor:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].color;e[r]=o,e[r+s]=o,e[r+s*2]=o,e[r+s*3]=o,r+=s*4}}};function q0(i){let t=Object.values(i),e=t.filter(s=>s.dynamic),r=t.filter(s=>!s.dynamic);return{dynamicUpdate:K0(e),staticUpdate:K0(r)}}function K0(i){let t=0,e=[];for(let r=0;r<i.length;r++){let s=i[r],n=Wt(s.format).stride/4;t+=n,e.push({stride:n,updateFunction:s.updateFunction||$0[s.attributeName]})}return(r,s,n)=>{let o=0;for(let a=0;a<e.length;a++){let l=e[a];l.updateFunction(r,s,n,o,t),o+=l.stride}}}Js();ce();Ot();xr();Hh();function Z0(){return HE}function HE(i,t,e){let r=i.gl,s=i.shader,n=s._getProgramData(t.glProgram);for(let o in t.groups){let a=t.groups[o];for(let l in a.resources){let c=a.resources[l];if(c instanceof St)c.ubo?s.bindUniformBlock(c,t._uniformBindMap[o][l],e.blockIndex++):s.updateUniformGroup(c);else if(c instanceof ke)s.bindUniformBlock(c,t._uniformBindMap[o][l],e.blockIndex++);else if(c instanceof J||c instanceof Gi){i.texture.bind(c,e.textureCount);let h=t._uniformBindMap[o][l],u=n.uniformData[h];u&&(u.value!==e.textureCount&&r.uniform1i(u.location,e.textureCount),e.textureCount++)}else c instanceof Qt}}}va();ha();Qs();var Q0=[(i,t,e,r,s)=>{let n=r[i].toArray(!0);t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+4]=n[3],t[e+5]=n[4],t[e+6]=n[5],t[e+8]=n[6],t[e+9]=n[7],t[e+10]=n[8]},(i,t,e,r,s)=>{s=r[i],t[e]=s.x,t[e+1]=s.y,t[e+2]=s.width,t[e+3]=s.height},(i,t,e,r,s)=>{s=r[i],t[e]=s.x,t[e+1]=s.y},(i,t,e,r,s)=>{s=r[i],t[e]=s.red,t[e+1]=s.green,t[e+2]=s.blue,t[e+3]=s.alpha},(i,t,e,r,s)=>{s=r[i],t[e]=s.red,t[e+1]=s.green,t[e+2]=s.blue}],J0={f32:(i,t,e,r,s)=>{t[e]=s},i32:(i,t,e,r,s)=>{t[e]=s},"vec2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1]},"vec3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2]},"vec4<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat2x2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat3x3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+4]=s[3],t[e+5]=s[4],t[e+6]=s[5],t[e+8]=s[6],t[e+9]=s[7],t[e+10]=s[8]},"mat4x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<16;n++)t[e+n]=s[n]},"mat3x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/3|0)*4+n%3]=s[n]},"mat4x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat4x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat3x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/3|0)*4+n%3]=s[n]}},tv={f32:(i,t,e,r,s)=>{t[e]=s},i32:(i,t,e,r,s)=>{t[e]=s},"vec2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1]},"vec3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2]},"vec4<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat2x2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+4]=s[2],t[e+5]=s[3]},"mat3x3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+4]=s[3],t[e+5]=s[4],t[e+6]=s[5],t[e+8]=s[6],t[e+9]=s[7],t[e+10]=s[8]},"mat4x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<16;n++)t[e+n]=s[n]},"mat3x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/3|0)*4+n%3]=s[n]},"mat4x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat4x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat3x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/3|0)*4+n%3]=s[n]}};function ev(i){return iv(i,tv,t=>{let e=Math.max(_n[t.data.type]/16,1),r=t.data.value.length/t.data.size,s=(4-r%4)%4;return(n,o,a,l,c)=>{let h=0;for(let u=0;u<t.data.size*e;u++){for(let d=0;d<r;d++)o[a++]=c[h++];a+=s}}})}function rv(i){return iv(i,J0,t=>{let{size:e,align:r}=Nr[t.data.type],s=(e-r)/4;return(n,o,a,l,c)=>{let h=0;for(let u=0;u<t.data.size*(e/4);u++){for(let d=0;d<e/4;d++)o[a++]=c[h++];a+=s}}})}function iv(i,t,e){let r={};for(let s in i){let n=i[s],o=n.data,a=!1;r[o.name]={offset:n.offset/4,func:null};for(let l=0;l<Jt.length;l++){let c=Jt[l];if(o.type===c.type&&c.test(o)){r[o.name].func=Q0[l],a=!0;break}}a||(o.size===1?r[o.name].func=t[o.type]:r[o.name].func=e(n))}return(s,n,o)=>{for(let a in r)r[a].func(a,n,o+r[a].offset,s,s[a])}}Qs();var sv={f32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1f(s[i].location,r))},"vec2<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2f(s[i].location,r[0],r[1]))},"vec3<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3f(s[i].location,r[0],r[1],r[2]))},"vec4<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4f(s[i].location,r[0],r[1],r[2],r[3]))},i32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1i(s[i].location,r))},"vec2<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2i(s[i].location,r[0],r[1]))},"vec3<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3i(s[i].location,r[0],r[1],r[2]))},"vec4<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4i(s[i].location,r[0],r[1],r[2],r[3]))},u32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1ui(s[i].location,r))},"vec2<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2ui(s[i].location,r[0],r[1]))},"vec3<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3ui(s[i].location,r[0],r[1],r[2]))},"vec4<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4ui(s[i].location,r[0],r[1],r[2],r[3]))},bool(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1i(s[i].location,r))},"vec2<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2i(s[i].location,r[0],r[1]))},"vec3<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3i(s[i].location,r[0],r[1],r[2]))},"vec4<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4i(s[i].location,r[0],r[1],r[2],r[3]))},"mat2x2<f32>"(i,t,e,r,s,n,o){o.uniformMatrix2fv(s[i].location,!1,r)},"mat3x3<f32>"(i,t,e,r,s,n,o){o.uniformMatrix3fv(s[i].location,!1,r)},"mat4x4<f32>"(i,t,e,r,s,n,o){o.uniformMatrix4fv(s[i].location,!1,r)}},nv={f32(i,t,e,r,s,n,o){o.uniform1fv(s[i].location,r)},"vec2<f32>"(i,t,e,r,s,n,o){o.uniform2fv(s[i].location,r)},"vec3<f32>"(i,t,e,r,s,n,o){o.uniform3fv(s[i].location,r)},"vec4<f32>"(i,t,e,r,s,n,o){o.uniform4fv(s[i].location,r)},"mat2x2<f32>"(i,t,e,r,s,n,o){o.uniformMatrix2fv(s[i].location,!1,r)},"mat3x3<f32>"(i,t,e,r,s,n,o){o.uniformMatrix3fv(s[i].location,!1,r)},"mat4x4<f32>"(i,t,e,r,s,n,o){o.uniformMatrix4fv(s[i].location,!1,r)},i32(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<i32>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<i32>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<i32>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)},u32(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<u32>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<u32>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<u32>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)},bool(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<bool>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<bool>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<bool>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)}},ov=[(i,t,e,r,s,n,o)=>{o.uniformMatrix3fv(s[i].location,!1,n[i].toArray(!0))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.x||e[1]!==r.y||e[2]!==r.width||e[3]!==r.height)&&(e[0]=r.x,e[1]=r.y,e[2]=r.width,e[3]=r.height,o.uniform4f(s[i].location,r.x,r.y,r.width,r.height))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.x||e[1]!==r.y)&&(e[0]=r.x,e[1]=r.y,o.uniform2f(s[i].location,r.x,r.y))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.red||e[1]!==r.green||e[2]!==r.blue||e[3]!==r.alpha)&&(e[0]=r.red,e[1]=r.green,e[2]=r.blue,e[3]=r.alpha,o.uniform4f(s[i].location,r.red,r.green,r.blue,r.alpha))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.red||e[1]!==r.green||e[2]!==r.blue)&&(e[0]=r.red,e[1]=r.green,e[2]=r.blue,o.uniform3f(s[i].location,r.red,r.green,r.blue))}];function av(i,t){let e={};for(let r in i.uniformStructures){if(!t[r])continue;let s=i.uniformStructures[r],n=!1;for(let o=0;o<Jt.length;o++){let a=Jt[o];if(s.type===a.type&&a.test(s)){e[r]=ov[o],n=!0;break}}if(!n){let o=s.size===1?sv:nv;e[r]=o[s.type]}}return(r,s,n)=>{let o=n.gl;for(let a in e){let l=s[a],c=r[a],h=r[a].value;e[a](a,c,h,l,r,s,o)}}}function WE(){Object.assign(ue.prototype,{_unsafeEvalCheck(){}}),Object.assign(cr.prototype,{_systemCheck(){}}),Object.assign(zr.prototype,{_generateUniformsSync:av}),Object.assign(Wr.prototype,{_generateUboSync:ev}),Object.assign(Hr.prototype,{_generateUboSync:rv}),Object.assign(Vr.prototype,{_generateShaderSync:Z0}),Object.assign(Ja.prototype,{generateParticleUpdate:q0})}WE();var VE=33,zE=60;function Yu(i,t){let e=i.code&&String(i.code).startsWith("Digit")?String(i.code).slice(5):"";return e&&Number(e)>=1&&Number(e)<=9?`KeyboardCraftspersonKey${e}${t}`:""}function lv(i,t,e,r){return{x:(i.clientX-t.left)*e/t.width,y:(t.bottom-i.clientY)*r/t.height}}function XE({renderer:i,api:t,onSnapshot:e,onStatus:r,onError:s,isActive:n}={}){let o=null,a=!1,l=!1,c=null,h=null,u=0,d=null,f=null,m=[];function g(F){s&&s(F)}async function y(F){o=F,a=F?.running!==!1,F?.scene&&F.scene.format==="tree-v1"?(F.scene.reset&&(u=0),await i.applyScene(F.scene,F.canvasWidth,F.canvasHeight),u=F.scene.revision||u):Array.isArray(F?.paint)&&await i.render(F.paint,F.canvasWidth,F.canvasHeight),e&&await e(F)}async function x(){if(!(!a||l)&&!(n&&!n())){l=!0;try{await y(await t("get",{view:!0,sceneRev:u,compact:!0}))}catch(F){a=!1,v(),g(F)}finally{l=!1}}}function b(){c||(c=setInterval(()=>{x()},33))}function v(){c&&clearInterval(c),c=null,h&&clearTimeout(h),h=null}function T(F=30){h||(h=setTimeout(()=>{h=null,x()},F))}function S(){a=!1,u=0,v()}async function E(F,A){if(n&&!n())return null;try{let k=await t(F,{light:!0,...A||{}});return k&&typeof k=="object"&&k.frame!==void 0&&r&&r(k),T(30),k}catch(k){return g(k),null}}async function w(F={}){u=0;let A=await t("start",{view:!0,compact:!0,...F});return await y({...A,running:!0}),a=!0,v(),b(),A}async function I(){u=0,v();let F=await t("get",{view:!0,compact:!0,sceneRev:0});return await y(F),a&&b(),F}async function G(F={}){u=0,v();let A=await t("device",{view:!0,compact:!0,...F});return await y({...A,running:!0}),a=!0,b(),A}async function M(F={}){u=0;let A=await t("view",{view:!0,compact:!0,...F});return await y({...A,running:!0}),A}async function C(){return S(),t("stop")}function R(F,A){return lv(F,A.getBoundingClientRect(),o.canvasWidth,o.canvasHeight)}function L(F,{keysOn:A}={}){let k=A||F,X=z=>{!o||!a||n&&!n()||(F.setPointerCapture?.(z.pointerId),E("pointer",{type:"down",...R(z,F)}))},D=z=>{!o||!a||n&&!n()||E("pointer",{type:"up",...R(z,F)})},Z=z=>{!o||!a||n&&!n()||(f=R(z,F),!d&&(d=setTimeout(()=>{d=null,f&&E("pointer",{type:"move",...f})},60)))},ht=()=>{o&&a&&(!n||n())&&E("pointer",{type:"move",x:-1,y:-1})},xt=z=>{if(!o||!a||n&&!n())return;let Dt=Yu(z,"Down");Dt&&(z.preventDefault(),E("key",{key:Dt}))},st=z=>{if(!o||!a||n&&!n())return;let Dt=Yu(z,"Up");Dt&&(z.preventDefault(),E("key",{key:Dt}))};F.addEventListener("pointerdown",X),F.addEventListener("pointerup",D),F.addEventListener("pointermove",Z),F.addEventListener("pointerleave",ht),k.addEventListener("keydown",xt),k.addEventListener("keyup",st);let at=()=>{F.removeEventListener("pointerdown",X),F.removeEventListener("pointerup",D),F.removeEventListener("pointermove",Z),F.removeEventListener("pointerleave",ht),k.removeEventListener("keydown",xt),k.removeEventListener("keyup",st),d&&clearTimeout(d),d=null};return m.push(at),at}function V(){for(S();m.length;)m.pop()();i?.destroy?.()}return{get snapshot(){return o},get running(){return a},get sceneRev(){return u},applyScene:y,poll:x,pollSoon:T,startPolling:b,stopPolling:v,reset:S,act:E,start:w,attach:I,device:G,view:M,stop:C,bindInput:L,destroy:V}}var YE=[0,-.5,.5,.5,-.5,.5],jE=[0,-.5,.12,-.12,.5,0,.12,.12,0,.5,-.12,.12,-.5,0,-.12,-.12],$E=[0,-.5,.11,-.15,.48,-.15,.18,.07,.29,.41,0,.2,-.29,.41,-.18,.07,-.48,-.15,-.11,-.15],KE=new Set(["image","textbox","textwindow","button"]);function Ln(i,t=4294967295){let e=Number(i??t)>>>0;return{color:e&16777215,alpha:(e>>>24&255)/255}}function Zt(i,t=0){let e=Number(i);return Number.isFinite(e)?e:t}function qE(i){let t=i?.matrix;if(!t||typeof t!="object")return null;let e=[t.a,t.b,t.c,t.d,t.tx,t.ty].map(Number);return e.every(Number.isFinite)?e:null}function ZE(i){let t=i.horizontalAlignment==="Right"?1:i.horizontalAlignment==="Middle"?.5:0,e=i.verticalAlignment==="Bottom"?1:i.verticalAlignment==="Middle"?.5:0;return{x:t,y:e}}function QE(i,t,e){let r=i.primitive==="triangle"?YE:i.primitive==="fourstar"?jE:$E,s=[];for(let n=0;n<r.length;n+=2)s.push(r[n]*t,r[n+1]*e);return s}function JE(i,t,e){return hv(i)?[i.kind,i.primitive,i.imageId,"sprite"].join(" "):[i.kind,i.primitive,t,e,i.imageColor,i.imageId,i.fillType,i.fillHorizontalType,i.fillVerticalType,i.fillAmount,i.text,i.fontSize,i.fontColor,i.bgColor,i.enableOutline,i.outlineColor,i.horizontalAlignment,i.verticalAlignment,i.pressed].join(" ")}function hv(i){return i.kind==="image"&&i.primitive==="circle"&&(!i.fillType||i.fillType==="Unused")}function tC(i){let t=W.get().createCanvas(i,i);t.width=t.height=i;let e=t.getContext("2d");return e.fillStyle="#ffffff",e.beginPath(),e.arc(i/2,i/2,i/2,0,Math.PI*2),e.fill(),new U({source:new vt({resource:t,width:i,height:i,resolution:1})})}var cv=class{constructor(t){this.canvas=t,this.app=null,this.nodes=new Map,this.circleTextures=new Map,this.canvasWidth=0,this.canvasHeight=0,this.scratch=new B,this.ready=this.initialize()}async initialize(){let t=new za;await t.init({canvas:this.canvas,width:1,height:1,autoStart:!1,autoDensity:!1,resolution:Math.min(2,window.devicePixelRatio||1),antialias:!0,backgroundAlpha:0,preference:"webgl",powerPreference:"high-performance"}),t.ticker.stop(),t.stage.eventMode="none",t.stage.sortableChildren=!0,this.app=t}resize(t,e){let r=Math.max(1,Math.round(Zt(t,1))),s=Math.max(1,Math.round(Zt(e,1)));r===this.canvasWidth&&s===this.canvasHeight||(this.canvasWidth=r,this.canvasHeight=s,this.app.renderer.resize(r,s))}createNode(t,{group:e=!1}={}){let r=new ut({isRenderGroup:!!e});return r.label=`runtime:${t.id}`,r.eventMode="none",r.sortableChildren=!0,r.__runtimeId=t.id,r.__group=!!e,this.nodes.set(t.id,r),this.app.stage.addChild(r),r}clearVisual(t){t.__visual&&(t.removeChild(t.__visual),t.__visual.destroy({children:!0,context:!0}),t.__visual=null,t.__visualKey="")}circleTexture(t){let e=this.app?.renderer.resolution||2,r=Math.min(4096,Math.max(256,2**Math.ceil(Math.log2(Math.max(1,t*e)))));this.circleTextures||=new Map;let s=this.circleTextures.get(r);return s||(s=tC(r),this.circleTextures.set(r,s)),s}replaceVisual(t,e,r,s){if(this.clearVisual(t),!KE.has(e.kind))return;let n=new ut;if(n.eventMode="none",n.label=`visual:${e.id}`,e.kind==="textbox"||e.kind==="textwindow"){let o=new Se,a=Ln(e.bgColor,16777215);o.rect(-r/2,-s/2,r,s).fill(a),n.addChild(o);let l=Math.max(8,Zt(e.fontSize,12)),c=ZE(e),h=new On({text:String(e.text||""),style:new qe({fontFamily:'Inter, "Microsoft YaHei UI", "Microsoft YaHei", sans-serif',fontSize:l,fill:Ln(e.fontColor,4294967295),stroke:e.enableOutline?{color:Ln(e.outlineColor,4278190080).color,width:Math.max(2,l*.12),join:"round"}:void 0,wordWrap:!0,wordWrapWidth:Math.max(4,r-4),breakWords:!0,align:c.x===1?"right":c.x===.5?"center":"left",lineHeight:l*1.2})});h.anchor.set(c.x,c.y),h.x=c.x===0?-r/2+2:c.x===1?r/2-2:0,h.y=c.y===0?-s/2:c.y===1?s/2:0;let u=new Se().rect(-r/2,-s/2,r,s).fill({color:16777215,alpha:1});h.mask=u,n.addChild(u,h)}else if(e.kind==="button"){let o=new Se;o.roundRect(-r/2,-s/2,r,s,6).fill({color:3303631,alpha:1}),o.roundRect(-r/2,-s/2,r,s,6).stroke({color:7381247,alpha:.8,width:1}),e.pressed&&o.roundRect(-r/2,-s/2,r,s,6).fill({color:0,alpha:.28}),n.addChild(o)}else if(hv(e)){let o=new Me({texture:this.circleTexture(Math.min(r,s)),anchor:.5});n.__circle=o,n.addChild(o)}else{let o=new Se,a=Ln(e.imageColor,4294967295);e.primitive==="missing"?(o.rect(-r/2,-s/2,r,s).fill({color:4727336,alpha:.36}),o.rect(-r/2+.5,-s/2+.5,Math.max(0,r-1),Math.max(0,s-1)).stroke({color:16741505,alpha:1,width:1})):e.primitive==="circle"?o.circle(0,0,Math.min(r,s)/2).fill(a):e.primitive==="ring"?o.circle(0,0,Math.max(1,Math.min(r,s)/2-3.5)).stroke({...a,width:7}):e.primitive==="triangle"||e.primitive==="fourstar"||e.primitive==="fivestar"?o.poly(QE(e,r,s)).fill(a):o.rect(-r/2,-s/2,r,s).fill(a);let l=j0(e,r,s);if(l&&(o.visible=l.width>0&&l.height>0,o.visible)){let c=new Se().rect(l.x,l.y,l.width,l.height).fill({color:16777215,alpha:1});o.mask=c,n.addChild(c)}n.addChild(o)}n.scale.set(e.pressed?.98:1),t.addChildAt(n,0),t.__visual=n}applyMatrix(t,e,r){let s=qE(e);if(!s){let u=Math.max(0,Zt(e.sourceWidth,Zt(e.width))),d=Math.max(0,Zt(e.sourceHeight,Zt(e.height)));t.x=Zt(e.left)+u/2,t.y=this.canvasHeight-Zt(e.bottom)-d/2,t.rotation=-Zt(e.rotationZ)*Math.PI/180,t.scale.set(1);return}let[n,o,a,l,c,h]=s;this.scratch.set(n,-o,-a,l,c,r?-h:this.canvasHeight-h),t.setFromMatrix(this.scratch)}updateNode(t,e,{nested:r=!1}={}){let s=Math.max(0,Zt(e.sourceWidth,Zt(e.width))),n=Math.max(0,Zt(e.sourceHeight,Zt(e.height))),o=JE(e,s,n);t.__visualKey!==o&&(this.replaceVisual(t,e,s,n),t.__visualKey=o),t.__visual&&t.__visual.scale.set(e.pressed?.98:1);let a=t.__visual?.__circle;if(a){let l=Math.min(s,n),c=Ln(e.imageColor,4294967295);a.texture=this.circleTexture(l),a.width=a.height=l,a.tint=c.color,a.alpha=c.alpha,a.visible=l>0}this.applyMatrix(t,e,r)}attachNode(t,e){let r=e.parent,n=(r==null?this.app.stage:this.nodes.get(r))||this.app.stage;t.parent!==n&&n.addChild(t),n.sortableChildren=!0,t.zIndex=-Zt(e.z)}upsertSceneNode(t){if(!t||t.id===void 0||t.id===null)return;let e=t.group===!0,r=this.nodes.get(t.id);r?r.__group!==e&&(e?r.enableRenderGroup?.():r.disableRenderGroup?.(),r.__group=e):r=this.createNode(t,{group:e}),this.updateNode(r,t,{nested:t.parent!=null}),this.attachNode(r,t)}removeNode(t){let e=this.nodes.get(t);if(e){for(let r of[...e.children])r.__runtimeId!=null&&e.removeChild(r);e.parent?.removeChild(e),this.clearVisual(e),e.destroy({children:!1}),this.nodes.delete(t)}}clearNodes(){for(let t of[...this.nodes.keys()])this.removeNode(t)}async applyScene(t,e,r){if(await this.ready,this.resize(e,r),!t||t.format!=="tree-v1"){this.app.render();return}t.reset&&this.clearNodes();for(let n of t.removed||[])this.removeNode(n);let s=t.reset?t.nodes:t.changed;for(let n=0;n<(s||[]).length;n+=1){let o=s[n];!o||o.id===void 0||o.id===null||this.nodes.has(o.id)||this.createNode(o,{group:o.group===!0})}for(let n=0;n<(s||[]).length;n+=1)this.upsertSceneNode(s[n]);this.app.render()}async render(t,e,r){await this.ready,this.resize(e,r);let s=new Set,n=Array.isArray(t)?t:[];for(let o=0;o<n.length;o+=1){let a=n[o];if(!a||a.id===void 0||a.id===null)continue;s.add(a.id);let l=this.nodes.get(a.id)||this.createNode(a);this.updateNode(l,a),l.zIndex=o,l.parent!==this.app.stage&&this.app.stage.addChild(l)}for(let[o]of this.nodes)s.has(o)||this.removeNode(o);this.app.render()}destroy(){this.clearNodes();for(let t of this.circleTextures.values())t.destroy(!0);this.circleTextures.clear(),this.app?.destroy({removeView:!1},{children:!0,texture:!0,textureSource:!0}),this.app=null}};export{zE as PLAY_MOVE_THROTTLE_MS,VE as PLAY_POLL_INTERVAL_MS,cv as PixiPlayRenderer,tC as createCircleTexture,XE as createPlaySession,Yu as keyEventName,lv as stagePoint};
|
|
925
|
+
`);return new Function("ps","f32v","u32v",s)}var Ja=class{constructor(t){this._size=0,this._generateParticleUpdateCache={};let e=this._size=t.size??1e3,r=t.properties,s=0,n=0;for(let h in r){let u=r[h],d=Wt(u.format);u.dynamic?n+=d.stride:s+=d.stride}this._dynamicStride=n/4,this._staticStride=s/4,this.staticAttributeBuffer=new Ge(e*4*s),this.dynamicAttributeBuffer=new Ge(e*4*n),this.indexBuffer=Xu(e);let o=new Be,a=0,l=0;this._staticBuffer=new Ft({data:new Float32Array(1),label:"static-particle-buffer",shrinkToFit:!1,usage:it.VERTEX|it.COPY_DST}),this._dynamicBuffer=new Ft({data:new Float32Array(1),label:"dynamic-particle-buffer",shrinkToFit:!1,usage:it.VERTEX|it.COPY_DST});for(let h in r){let u=r[h],d=Wt(u.format);u.dynamic?(o.addAttribute(u.attributeName,{buffer:this._dynamicBuffer,stride:this._dynamicStride*4,offset:a*4,format:u.format}),a+=d.size):(o.addAttribute(u.attributeName,{buffer:this._staticBuffer,stride:this._staticStride*4,offset:l*4,format:u.format}),l+=d.size)}o.addIndex(this.indexBuffer);let c=this.getParticleUpdate(r);this._dynamicUpload=c.dynamicUpdate,this._staticUpload=c.staticUpdate,this.geometry=o}getParticleUpdate(t){let e=NE(t);return this._generateParticleUpdateCache[e]?this._generateParticleUpdateCache[e]:(this._generateParticleUpdateCache[e]=this.generateParticleUpdate(t),this._generateParticleUpdateCache[e])}generateParticleUpdate(t){return Y0(t)}update(t,e){t.length>this._size&&(e=!0,this._size=Math.max(t.length,this._size*1.5|0),this.staticAttributeBuffer=new Ge(this._size*this._staticStride*4*4),this.dynamicAttributeBuffer=new Ge(this._size*this._dynamicStride*4*4),this.indexBuffer=Xu(this._size),this.geometry.indexBuffer.setDataWithSize(this.indexBuffer,this.indexBuffer.byteLength,!0));let r=this.dynamicAttributeBuffer;if(this._dynamicUpload(t,r.float32View,r.uint32View),this._dynamicBuffer.setDataWithSize(this.dynamicAttributeBuffer.float32View,t.length*this._dynamicStride*4,!0),e){let s=this.staticAttributeBuffer;this._staticUpload(t,s.float32View,s.uint32View),this._staticBuffer.setDataWithSize(s.float32View,t.length*this._staticStride*4,!0)}}destroy(){this._staticBuffer.destroy(),this._dynamicBuffer.destroy(),this.geometry.destroy()}};function NE(i){let t=[];for(let e in i){let r=i[e];t.push(e,r.code,r.dynamic?"d":"s")}return t.join("_")}dt();et();rr();mt();rc();xe();Iu();fo();Za();Gt();H.add(_m,bm);function j0(i,t,e){if(i.fillType!=="Horizontal"&&i.fillType!=="Vertical")return null;let r=Number(i.fillAmount??1),s=Number.isFinite(r)?Math.max(0,Math.min(1,r)):1;if(i.fillType==="Horizontal"){let o=t*s;return{x:i.fillHorizontalType==="Right"?t/2-o:-t/2,y:-e/2,width:o,height:e}}let n=e*s;return{x:-t/2,y:i.fillVerticalType==="Top"?-e/2:e/2-n,width:t,height:n}}Nh();jh();$h();Mh();ca();kr();sr();var $0={aVertex:(i,t,e,r,s)=>{let n=0,o=0,a=0,l=0;for(let c=0;c<i.length;++c){let h=i[c],u=h.texture,d=h.scaleX,f=h.scaleY,m=h.anchorX,g=h.anchorY,y=u.trim,x=u.orig;y?(o=y.x-m*x.width,n=o+y.width,l=y.y-g*x.height,a=l+y.height):(n=x.width*(1-m),o=x.width*-m,a=x.height*(1-g),l=x.height*-g),t[r]=o*d,t[r+1]=l*f,t[r+s]=n*d,t[r+s+1]=l*f,t[r+s*2]=n*d,t[r+s*2+1]=a*f,t[r+s*3]=o*d,t[r+s*3+1]=a*f,r+=s*4}},aPosition:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n],a=o.x,l=o.y;t[r]=a,t[r+1]=l,t[r+s]=a,t[r+s+1]=l,t[r+s*2]=a,t[r+s*2+1]=l,t[r+s*3]=a,t[r+s*3+1]=l,r+=s*4}},aRotation:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].rotation;t[r]=o,t[r+s]=o,t[r+s*2]=o,t[r+s*3]=o,r+=s*4}},aUV:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].texture.uvs;t[r]=o.x0,t[r+1]=o.y0,t[r+s]=o.x1,t[r+s+1]=o.y1,t[r+s*2]=o.x2,t[r+s*2+1]=o.y2,t[r+s*3]=o.x3,t[r+s*3+1]=o.y3,r+=s*4}},aColor:(i,t,e,r,s)=>{for(let n=0;n<i.length;++n){let o=i[n].color;e[r]=o,e[r+s]=o,e[r+s*2]=o,e[r+s*3]=o,r+=s*4}}};function q0(i){let t=Object.values(i),e=t.filter(s=>s.dynamic),r=t.filter(s=>!s.dynamic);return{dynamicUpdate:K0(e),staticUpdate:K0(r)}}function K0(i){let t=0,e=[];for(let r=0;r<i.length;r++){let s=i[r],n=Wt(s.format).stride/4;t+=n,e.push({stride:n,updateFunction:s.updateFunction||$0[s.attributeName]})}return(r,s,n)=>{let o=0;for(let a=0;a<e.length;a++){let l=e[a];l.updateFunction(r,s,n,o,t),o+=l.stride}}}Js();ce();Ot();xr();Hh();function Z0(){return HE}function HE(i,t,e){let r=i.gl,s=i.shader,n=s._getProgramData(t.glProgram);for(let o in t.groups){let a=t.groups[o];for(let l in a.resources){let c=a.resources[l];if(c instanceof St)c.ubo?s.bindUniformBlock(c,t._uniformBindMap[o][l],e.blockIndex++):s.updateUniformGroup(c);else if(c instanceof ke)s.bindUniformBlock(c,t._uniformBindMap[o][l],e.blockIndex++);else if(c instanceof J||c instanceof Gi){i.texture.bind(c,e.textureCount);let h=t._uniformBindMap[o][l],u=n.uniformData[h];u&&(u.value!==e.textureCount&&r.uniform1i(u.location,e.textureCount),e.textureCount++)}else c instanceof Qt}}}va();ha();Qs();var Q0=[(i,t,e,r,s)=>{let n=r[i].toArray(!0);t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+4]=n[3],t[e+5]=n[4],t[e+6]=n[5],t[e+8]=n[6],t[e+9]=n[7],t[e+10]=n[8]},(i,t,e,r,s)=>{s=r[i],t[e]=s.x,t[e+1]=s.y,t[e+2]=s.width,t[e+3]=s.height},(i,t,e,r,s)=>{s=r[i],t[e]=s.x,t[e+1]=s.y},(i,t,e,r,s)=>{s=r[i],t[e]=s.red,t[e+1]=s.green,t[e+2]=s.blue,t[e+3]=s.alpha},(i,t,e,r,s)=>{s=r[i],t[e]=s.red,t[e+1]=s.green,t[e+2]=s.blue}],J0={f32:(i,t,e,r,s)=>{t[e]=s},i32:(i,t,e,r,s)=>{t[e]=s},"vec2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1]},"vec3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2]},"vec4<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat2x2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat3x3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+4]=s[3],t[e+5]=s[4],t[e+6]=s[5],t[e+8]=s[6],t[e+9]=s[7],t[e+10]=s[8]},"mat4x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<16;n++)t[e+n]=s[n]},"mat3x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/3|0)*4+n%3]=s[n]},"mat4x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat4x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat3x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/3|0)*4+n%3]=s[n]}},tv={f32:(i,t,e,r,s)=>{t[e]=s},i32:(i,t,e,r,s)=>{t[e]=s},"vec2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1]},"vec3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2]},"vec4<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3]},"mat2x2<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+4]=s[2],t[e+5]=s[3]},"mat3x3<f32>":(i,t,e,r,s)=>{t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+4]=s[3],t[e+5]=s[4],t[e+6]=s[5],t[e+8]=s[6],t[e+9]=s[7],t[e+10]=s[8]},"mat4x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<16;n++)t[e+n]=s[n]},"mat3x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/3|0)*4+n%3]=s[n]},"mat4x2<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<6;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat4x3<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/4|0)*4+n%4]=s[n]},"mat2x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<8;n++)t[e+(n/2|0)*4+n%2]=s[n]},"mat3x4<f32>":(i,t,e,r,s)=>{for(let n=0;n<12;n++)t[e+(n/3|0)*4+n%3]=s[n]}};function ev(i){return iv(i,tv,t=>{let e=Math.max(_n[t.data.type]/16,1),r=t.data.value.length/t.data.size,s=(4-r%4)%4;return(n,o,a,l,c)=>{let h=0;for(let u=0;u<t.data.size*e;u++){for(let d=0;d<r;d++)o[a++]=c[h++];a+=s}}})}function rv(i){return iv(i,J0,t=>{let{size:e,align:r}=Nr[t.data.type],s=(e-r)/4;return(n,o,a,l,c)=>{let h=0;for(let u=0;u<t.data.size*(e/4);u++){for(let d=0;d<e/4;d++)o[a++]=c[h++];a+=s}}})}function iv(i,t,e){let r={};for(let s in i){let n=i[s],o=n.data,a=!1;r[o.name]={offset:n.offset/4,func:null};for(let l=0;l<Jt.length;l++){let c=Jt[l];if(o.type===c.type&&c.test(o)){r[o.name].func=Q0[l],a=!0;break}}a||(o.size===1?r[o.name].func=t[o.type]:r[o.name].func=e(n))}return(s,n,o)=>{for(let a in r)r[a].func(a,n,o+r[a].offset,s,s[a])}}Qs();var sv={f32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1f(s[i].location,r))},"vec2<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2f(s[i].location,r[0],r[1]))},"vec3<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3f(s[i].location,r[0],r[1],r[2]))},"vec4<f32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4f(s[i].location,r[0],r[1],r[2],r[3]))},i32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1i(s[i].location,r))},"vec2<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2i(s[i].location,r[0],r[1]))},"vec3<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3i(s[i].location,r[0],r[1],r[2]))},"vec4<i32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4i(s[i].location,r[0],r[1],r[2],r[3]))},u32(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1ui(s[i].location,r))},"vec2<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2ui(s[i].location,r[0],r[1]))},"vec3<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3ui(s[i].location,r[0],r[1],r[2]))},"vec4<u32>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4ui(s[i].location,r[0],r[1],r[2],r[3]))},bool(i,t,e,r,s,n,o){e!==r&&(t.value=r,o.uniform1i(s[i].location,r))},"vec2<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1])&&(e[0]=r[0],e[1]=r[1],o.uniform2i(s[i].location,r[0],r[1]))},"vec3<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],o.uniform3i(s[i].location,r[0],r[1],r[2]))},"vec4<bool>"(i,t,e,r,s,n,o){(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]||e[3]!==r[3])&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],o.uniform4i(s[i].location,r[0],r[1],r[2],r[3]))},"mat2x2<f32>"(i,t,e,r,s,n,o){o.uniformMatrix2fv(s[i].location,!1,r)},"mat3x3<f32>"(i,t,e,r,s,n,o){o.uniformMatrix3fv(s[i].location,!1,r)},"mat4x4<f32>"(i,t,e,r,s,n,o){o.uniformMatrix4fv(s[i].location,!1,r)}},nv={f32(i,t,e,r,s,n,o){o.uniform1fv(s[i].location,r)},"vec2<f32>"(i,t,e,r,s,n,o){o.uniform2fv(s[i].location,r)},"vec3<f32>"(i,t,e,r,s,n,o){o.uniform3fv(s[i].location,r)},"vec4<f32>"(i,t,e,r,s,n,o){o.uniform4fv(s[i].location,r)},"mat2x2<f32>"(i,t,e,r,s,n,o){o.uniformMatrix2fv(s[i].location,!1,r)},"mat3x3<f32>"(i,t,e,r,s,n,o){o.uniformMatrix3fv(s[i].location,!1,r)},"mat4x4<f32>"(i,t,e,r,s,n,o){o.uniformMatrix4fv(s[i].location,!1,r)},i32(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<i32>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<i32>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<i32>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)},u32(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<u32>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<u32>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<u32>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)},bool(i,t,e,r,s,n,o){o.uniform1iv(s[i].location,r)},"vec2<bool>"(i,t,e,r,s,n,o){o.uniform2iv(s[i].location,r)},"vec3<bool>"(i,t,e,r,s,n,o){o.uniform3iv(s[i].location,r)},"vec4<bool>"(i,t,e,r,s,n,o){o.uniform4iv(s[i].location,r)}},ov=[(i,t,e,r,s,n,o)=>{o.uniformMatrix3fv(s[i].location,!1,n[i].toArray(!0))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.x||e[1]!==r.y||e[2]!==r.width||e[3]!==r.height)&&(e[0]=r.x,e[1]=r.y,e[2]=r.width,e[3]=r.height,o.uniform4f(s[i].location,r.x,r.y,r.width,r.height))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.x||e[1]!==r.y)&&(e[0]=r.x,e[1]=r.y,o.uniform2f(s[i].location,r.x,r.y))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.red||e[1]!==r.green||e[2]!==r.blue||e[3]!==r.alpha)&&(e[0]=r.red,e[1]=r.green,e[2]=r.blue,e[3]=r.alpha,o.uniform4f(s[i].location,r.red,r.green,r.blue,r.alpha))},(i,t,e,r,s,n,o)=>{e=s[i].value,r=n[i],(e[0]!==r.red||e[1]!==r.green||e[2]!==r.blue)&&(e[0]=r.red,e[1]=r.green,e[2]=r.blue,o.uniform3f(s[i].location,r.red,r.green,r.blue))}];function av(i,t){let e={};for(let r in i.uniformStructures){if(!t[r])continue;let s=i.uniformStructures[r],n=!1;for(let o=0;o<Jt.length;o++){let a=Jt[o];if(s.type===a.type&&a.test(s)){e[r]=ov[o],n=!0;break}}if(!n){let o=s.size===1?sv:nv;e[r]=o[s.type]}}return(r,s,n)=>{let o=n.gl;for(let a in e){let l=s[a],c=r[a],h=r[a].value;e[a](a,c,h,l,r,s,o)}}}function WE(){Object.assign(ue.prototype,{_unsafeEvalCheck(){}}),Object.assign(cr.prototype,{_systemCheck(){}}),Object.assign(zr.prototype,{_generateUniformsSync:av}),Object.assign(Wr.prototype,{_generateUboSync:ev}),Object.assign(Hr.prototype,{_generateUboSync:rv}),Object.assign(Vr.prototype,{_generateShaderSync:Z0}),Object.assign(Ja.prototype,{generateParticleUpdate:q0})}WE();var VE=33,zE=60;function Yu(i,t){let e=i.code&&String(i.code).startsWith("Digit")?String(i.code).slice(5):"";return e&&Number(e)>=1&&Number(e)<=9?`KeyboardCraftspersonKey${e}${t}`:""}function lv(i,t,e,r){return{x:(i.clientX-t.left)*e/t.width,y:(t.bottom-i.clientY)*r/t.height}}function XE({renderer:i,api:t,onSnapshot:e,onStatus:r,onError:s,isActive:n}={}){let o=null,a=!1,l=!1,c=null,h=null,u=0,d=null,f=null,m=[];function g(F){s&&s(F)}async function y(F){o=F,a=F?.running!==!1,F?.scene&&F.scene.format==="tree-v1"?(F.scene.reset&&(u=0),await i.applyScene(F.scene,F.canvasWidth,F.canvasHeight),u=F.scene.revision||u):Array.isArray(F?.paint)&&await i.render(F.paint,F.canvasWidth,F.canvasHeight),e&&await e(F)}async function x(){if(!(!a||l)&&!(n&&!n())){l=!0;try{await y(await t("get",{view:!0,sceneRev:u,compact:!0}))}catch(F){a=!1,v(),g(F)}finally{l=!1}}}function b(){c||(c=setInterval(()=>{x()},33))}function v(){c&&clearInterval(c),c=null,h&&clearTimeout(h),h=null}function T(F=30){h||(h=setTimeout(()=>{h=null,x()},F))}function S(){a=!1,u=0,v()}async function E(F,A){if(n&&!n())return null;try{let k=await t(F,{light:!0,...A||{}});return k&&typeof k=="object"&&k.frame!==void 0&&r&&r(k),T(30),k}catch(k){return g(k),null}}async function w(F={}){u=0;let A=await t("start",{view:!0,compact:!0,...F});return await y({...A,running:!0}),a=!0,v(),b(),A}async function I(){u=0,v();let F=await t("get",{view:!0,compact:!0,sceneRev:0});return await y(F),a&&b(),F}async function G(F={}){u=0,v();let A=await t("device",{view:!0,compact:!0,...F});return await y({...A,running:!0}),a=!0,b(),A}async function M(F={}){u=0;let A=await t("view",{view:!0,compact:!0,...F});return await y({...A,running:!0}),A}async function C(){return S(),t("stop")}function R(F,A){return lv(F,A.getBoundingClientRect(),o.canvasWidth,o.canvasHeight)}function L(F,{keysOn:A}={}){let k=A||F,X=z=>{!o||!a||n&&!n()||(F.setPointerCapture?.(z.pointerId),E("pointer",{type:"down",...R(z,F)}))},D=z=>{!o||!a||n&&!n()||E("pointer",{type:"up",...R(z,F)})},Z=z=>{!o||!a||n&&!n()||(f=R(z,F),!d&&(d=setTimeout(()=>{d=null,f&&E("pointer",{type:"move",...f})},60)))},ht=()=>{o&&a&&(!n||n())&&E("pointer",{type:"move",x:-1,y:-1})},xt=z=>{if(!o||!a||n&&!n())return;let Dt=Yu(z,"Down");Dt&&(z.preventDefault(),E("key",{key:Dt}))},st=z=>{if(!o||!a||n&&!n())return;let Dt=Yu(z,"Up");Dt&&(z.preventDefault(),E("key",{key:Dt}))};F.addEventListener("pointerdown",X),F.addEventListener("pointerup",D),F.addEventListener("pointermove",Z),F.addEventListener("pointerleave",ht),k.addEventListener("keydown",xt),k.addEventListener("keyup",st);let at=()=>{F.removeEventListener("pointerdown",X),F.removeEventListener("pointerup",D),F.removeEventListener("pointermove",Z),F.removeEventListener("pointerleave",ht),k.removeEventListener("keydown",xt),k.removeEventListener("keyup",st),d&&clearTimeout(d),d=null};return m.push(at),at}function V(){for(S();m.length;)m.pop()();i?.destroy?.()}return{get snapshot(){return o},get running(){return a},get sceneRev(){return u},applyScene:y,poll:x,pollSoon:T,startPolling:b,stopPolling:v,reset:S,act:E,start:w,attach:I,device:G,view:M,stop:C,bindInput:L,destroy:V}}var YE=[0,-.5,.5,.5,-.5,.5],jE=[0,-.5,.12,-.12,.5,0,.12,.12,0,.5,-.12,.12,-.5,0,-.12,-.12],$E=[0,-.5,.11,-.15,.48,-.15,.18,.07,.29,.41,0,.2,-.29,.41,-.18,.07,-.48,-.15,-.11,-.15],KE=new Set(["image","textbox","textwindow","button"]);function Ln(i,t=4294967295){let e=Number(i??t)>>>0;return{color:e&16777215,alpha:(e>>>24&255)/255}}function Zt(i,t=0){let e=Number(i);return Number.isFinite(e)?e:t}function qE(i){let t=i?.matrix;if(!t||typeof t!="object")return null;let e=[t.a,t.b,t.c,t.d,t.tx,t.ty].map(Number);return e.every(Number.isFinite)?e:null}function ZE(i){let t=i.horizontalAlignment==="Right"?1:i.horizontalAlignment==="Middle"?.5:0,e=i.verticalAlignment==="Bottom"?1:i.verticalAlignment==="Middle"?.5:0;return{x:t,y:e}}function QE(i,t,e){let r=i.primitive==="triangle"?YE:i.primitive==="fourstar"?jE:$E,s=[];for(let n=0;n<r.length;n+=2)s.push(r[n]*t,r[n+1]*e);return s}function JE(i,t,e){return hv(i)?[i.kind,i.primitive,i.imageId,"sprite"].join(" "):[i.kind,i.primitive,t,e,i.imageColor,i.imageId,i.fillType,i.fillHorizontalType,i.fillVerticalType,i.fillAmount,i.text,i.fontSize,i.fontColor,i.bgColor,i.enableOutline,i.outlineColor,i.horizontalAlignment,i.verticalAlignment,i.pressed].join(" ")}function hv(i){return i.kind==="image"&&i.primitive==="circle"&&(!i.fillType||i.fillType==="Unused")}function tC(i){let t=W.get().createCanvas(i,i);t.width=t.height=i;let e=t.getContext("2d");return e.fillStyle="#ffffff",e.beginPath(),e.arc(i/2,i/2,i/2,0,Math.PI*2),e.fill(),new U({source:new vt({resource:t,width:i,height:i,resolution:1})})}var cv=class{constructor(t){this.canvas=t,this.app=null,this.nodes=new Map,this.circleTextures=new Map,this.canvasWidth=0,this.canvasHeight=0,this.scratch=new B,this.ready=this.initialize()}async initialize(){let t=new za;await t.init({canvas:this.canvas,width:1,height:1,autoStart:!1,autoDensity:!1,resolution:Math.min(2,window.devicePixelRatio||1),antialias:!0,backgroundAlpha:0,preference:"webgl",powerPreference:"high-performance"}),t.ticker.stop(),t.stage.eventMode="none",t.stage.sortableChildren=!0,this.app=t}resize(t,e){let r=Math.max(1,Math.round(Zt(t,1))),s=Math.max(1,Math.round(Zt(e,1)));r===this.canvasWidth&&s===this.canvasHeight||(this.canvasWidth=r,this.canvasHeight=s,this.app.renderer.resize(r,s))}createNode(t,{group:e=!1}={}){let r=new ut({isRenderGroup:!!e});return r.label=`runtime:${t.id}`,r.eventMode="none",r.sortableChildren=!0,r.__runtimeId=t.id,r.__group=!!e,this.nodes.set(t.id,r),this.app.stage.addChild(r),r}clearVisual(t){t.__visual&&(t.removeChild(t.__visual),t.__visual.destroy({children:!0,context:!0}),t.__visual=null,t.__visualKey="")}circleTexture(t){let e=this.app?.renderer.resolution||2,r=Math.min(4096,Math.max(256,2**Math.ceil(Math.log2(Math.max(1,t*e)))));this.circleTextures||=new Map;let s=this.circleTextures.get(r);return s||(s=tC(r),this.circleTextures.set(r,s)),s}replaceVisual(t,e,r,s){if(this.clearVisual(t),!KE.has(e.kind))return;let n=new ut;if(n.eventMode="none",n.label=`visual:${e.id}`,e.kind==="textbox"||e.kind==="textwindow"){let o=new Se,a=Ln(e.bgColor,16777215);o.rect(-r/2,-s/2,r,s).fill(a),n.addChild(o);let l=Math.max(8,Zt(e.fontSize,12)),c=ZE(e),h=new On({text:String(e.text||""),style:new qe({fontFamily:'Inter, "Microsoft YaHei UI", "Microsoft YaHei", sans-serif',fontSize:l,fill:Ln(e.fontColor,4294967295),stroke:e.enableOutline?{color:Ln(e.outlineColor,4278190080).color,width:Math.max(2,l*.12),join:"round"}:void 0,wordWrap:!0,wordWrapWidth:Math.max(4,r-4),breakWords:!0,align:c.x===1?"right":c.x===.5?"center":"left",lineHeight:l*1.2})});h.anchor.set(c.x,c.y),h.x=c.x===0?-r/2+2:c.x===1?r/2-2:0,h.y=c.y===0?-s/2:c.y===1?s/2:0;let u=new Se().rect(-r/2,-s/2,r,s).fill({color:16777215,alpha:1});h.mask=u,n.addChild(u,h)}else if(e.kind==="button"){let o=new Se;o.roundRect(-r/2,-s/2,r,s,6).fill({color:3303631,alpha:1}),o.roundRect(-r/2,-s/2,r,s,6).stroke({color:7381247,alpha:.8,width:1}),e.pressed&&o.roundRect(-r/2,-s/2,r,s,6).fill({color:0,alpha:.28}),n.addChild(o)}else if(hv(e)){let o=new Me({texture:this.circleTexture(Math.max(r,s)),anchor:.5});n.__circle=o,n.addChild(o)}else{let o=new Se,a=Ln(e.imageColor,4294967295);e.primitive==="missing"?(o.rect(-r/2,-s/2,r,s).fill({color:4727336,alpha:.36}),o.rect(-r/2+.5,-s/2+.5,Math.max(0,r-1),Math.max(0,s-1)).stroke({color:16741505,alpha:1,width:1})):e.primitive==="circle"?o.ellipse(0,0,r/2,s/2).fill(a):e.primitive==="ring"?o.ellipse(0,0,Math.max(1,r/2-3.5),Math.max(1,s/2-3.5)).stroke({...a,width:7}):e.primitive==="triangle"||e.primitive==="fourstar"||e.primitive==="fivestar"?o.poly(QE(e,r,s)).fill(a):o.rect(-r/2,-s/2,r,s).fill(a);let l=j0(e,r,s);if(l&&(o.visible=l.width>0&&l.height>0,o.visible)){let c=new Se().rect(l.x,l.y,l.width,l.height).fill({color:16777215,alpha:1});o.mask=c,n.addChild(c)}n.addChild(o)}n.scale.set(e.pressed?.98:1),t.addChildAt(n,0),t.__visual=n}applyMatrix(t,e,r){let s=qE(e);if(!s){let u=Math.max(0,Zt(e.sourceWidth,Zt(e.width))),d=Math.max(0,Zt(e.sourceHeight,Zt(e.height)));t.x=Zt(e.left)+u/2,t.y=this.canvasHeight-Zt(e.bottom)-d/2,t.rotation=-Zt(e.rotationZ)*Math.PI/180,t.scale.set(1);return}let[n,o,a,l,c,h]=s;this.scratch.set(n,-o,-a,l,c,r?-h:this.canvasHeight-h),t.setFromMatrix(this.scratch)}updateNode(t,e,{nested:r=!1}={}){let s=Math.max(0,Zt(e.sourceWidth,Zt(e.width))),n=Math.max(0,Zt(e.sourceHeight,Zt(e.height))),o=JE(e,s,n);t.__visualKey!==o&&(this.replaceVisual(t,e,s,n),t.__visualKey=o),t.__visual&&t.__visual.scale.set(e.pressed?.98:1);let a=t.__visual?.__circle;if(a){let l=Math.max(s,n),c=Ln(e.imageColor,4294967295);a.texture=this.circleTexture(l),a.width=s,a.height=n,a.tint=c.color,a.alpha=c.alpha,a.visible=s>0&&n>0}this.applyMatrix(t,e,r)}attachNode(t,e){let r=e.parent,n=(r==null?this.app.stage:this.nodes.get(r))||this.app.stage;t.parent!==n&&n.addChild(t),n.sortableChildren=!0,t.zIndex=-Zt(e.z)}upsertSceneNode(t){if(!t||t.id===void 0||t.id===null)return;let e=t.group===!0,r=this.nodes.get(t.id);r?r.__group!==e&&(e?r.enableRenderGroup?.():r.disableRenderGroup?.(),r.__group=e):r=this.createNode(t,{group:e}),this.updateNode(r,t,{nested:t.parent!=null}),this.attachNode(r,t)}removeNode(t){let e=this.nodes.get(t);if(e){for(let r of[...e.children])r.__runtimeId!=null&&e.removeChild(r);e.parent?.removeChild(e),this.clearVisual(e),e.destroy({children:!1}),this.nodes.delete(t)}}clearNodes(){for(let t of[...this.nodes.keys()])this.removeNode(t)}async applyScene(t,e,r){if(await this.ready,this.resize(e,r),!t||t.format!=="tree-v1"){this.app.render();return}t.reset&&this.clearNodes();for(let n of t.removed||[])this.removeNode(n);let s=t.reset?t.nodes:t.changed;for(let n=0;n<(s||[]).length;n+=1){let o=s[n];!o||o.id===void 0||o.id===null||this.nodes.has(o.id)||this.createNode(o,{group:o.group===!0})}for(let n=0;n<(s||[]).length;n+=1)this.upsertSceneNode(s[n]);this.app.render()}async render(t,e,r){await this.ready,this.resize(e,r);let s=new Set,n=Array.isArray(t)?t:[];for(let o=0;o<n.length;o+=1){let a=n[o];if(!a||a.id===void 0||a.id===null)continue;s.add(a.id);let l=this.nodes.get(a.id)||this.createNode(a);this.updateNode(l,a),l.zIndex=o,l.parent!==this.app.stage&&this.app.stage.addChild(l)}for(let[o]of this.nodes)s.has(o)||this.removeNode(o);this.app.render()}destroy(){this.clearNodes();for(let t of this.circleTextures.values())t.destroy(!0);this.circleTextures.clear(),this.app?.destroy({removeView:!1},{children:!0,texture:!0,textureSource:!0}),this.app=null}};export{zE as PLAY_MOVE_THROTTLE_MS,VE as PLAY_POLL_INTERVAL_MS,cv as PixiPlayRenderer,tC as createCircleTexture,XE as createPlaySession,Yu as keyEventName,lv as stagePoint};
|
|
926
926
|
/*! Bundled license information:
|
|
927
927
|
|
|
928
928
|
tiny-lru/dist/tiny-lru.js:
|