@dcl-regenesislabs/web-editor 0.1.1-37488485379.commit-740cc2a → 0.1.1-37517974772.commit-b9847a1

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/editor.js CHANGED
@@ -6648,7 +6648,7 @@ function isRegistry(value: unknown): value is ZoneRegistry<Entity> {
6648
6648
  typeof value.subscribe === 'function'
6649
6649
  )
6650
6650
  }
6651
- `,uDn=Object.assign({"../../../desktop/runtime-modules/asset-packs.d.ts":INn,"../../../desktop/runtime-modules/game.ts":NNn,"../../../desktop/runtime-modules/outcomes.ts":DNn,"../../../desktop/runtime-modules/playerPositions.ts":RNn,"../../../desktop/runtime-modules/playerStore.ts":MNn,"../../../desktop/runtime-modules/protectedSync.ts":LNn,"../../../desktop/runtime-modules/pure/countdown.ts":FNn,"../../../desktop/runtime-modules/pure/gameCore.ts":jNn,"../../../desktop/runtime-modules/pure/liveness.ts":BNn,"../../../desktop/runtime-modules/pure/membership.ts":UNn,"../../../desktop/runtime-modules/pure/normalize.ts":$Nn,"../../../desktop/runtime-modules/pure/outcomeLedger.ts":zNn,"../../../desktop/runtime-modules/pure/pending.ts":VNn,"../../../desktop/runtime-modules/pure/phase.ts":WNn,"../../../desktop/runtime-modules/pure/poolState.ts":qNn,"../../../desktop/runtime-modules/pure/protectedFields.ts":GNn,"../../../desktop/runtime-modules/pure/rng.ts":JNn,"../../../desktop/runtime-modules/pure/scriptInit.ts":HNn,"../../../desktop/runtime-modules/pure/serverStore.ts":QNn,"../../../desktop/runtime-modules/pure/spawnPlan.ts":YNn,"../../../desktop/runtime-modules/pure/spawnScatter.ts":XNn,"../../../desktop/runtime-modules/pure/time-math.ts":ZNn,"../../../desktop/runtime-modules/pure/worldTransform.ts":KNn,"../../../desktop/runtime-modules/pure/zoneRegistry.ts":eDn,"../../../desktop/runtime-modules/rng.ts":tDn,"../../../desktop/runtime-modules/rpc.ts":nDn,"../../../desktop/runtime-modules/schedule.ts":rDn,"../../../desktop/runtime-modules/serverLife.ts":iDn,"../../../desktop/runtime-modules/serverState.ts":aDn,"../../../desktop/runtime-modules/spawnPoints.ts":sDn,"../../../desktop/runtime-modules/spawner.ts":oDn,"../../../desktop/runtime-modules/timeSync.ts":cDn,"../../../desktop/runtime-modules/zoneBus.ts":lDn}),N1t="runtime-modules/",zIt={};for(const[t,n]of Object.entries(uDn)){const r=t.lastIndexOf(N1t);r<0||(zIt[t.slice(r+N1t.length)]=n)}function VIt(t){return zIt[t]??null}const Are="src/scripts/runtime",WIt="src/scripts/",fDn=/^custom\/[^/]+\/scripts\/.+\.tsx?$/,qIt="import { registerSpawnables } from './runtime/spawner'",dDn=WWe(qIt)[0],GIt="0";function Ane(){return{written:!1,attached:!1,vendored:[],problems:[],blocked:!1}}async function Mie(t){try{return await A_(t)}catch{return null}}function pDn(t,n){const r=[];for(const a of n.components)if(a.name===bp)for(const c of Object.values(a.data)){const l=js(c.json)?c.json.value:void 0;if(Array.isArray(l))for(const d of l){if(!js(d)||typeof d.path!="string")continue;const m={path:d.path};VM(m,t),r.includes(m.path)||r.push(m.path)}}return r}async function JIt(t){const n=[];for(const a of JG(t))try{const c=await TE(a);n.push({folder:a,data:c.data,composite:c.composite})}catch(c){au.warn("spawnables: prefab folder unreadable",a,c)}const r={};for(const a of n)for(const c of pDn(a.folder,a.composite)){if(c in r)continue;const l=await Mie(c);l!==null&&(r[c]=l)}return{prefabs:n,scripts:r}}function HIt(t){const n={},r=[...t];for(;r.length>0;){const a=r.shift();if(a in n)continue;const c=VIt(a);if(c!==null){n[a]=c;for(const l of Rie(c)){const d=LIt(a,l);d!==null&&!(d in n)&&r.push(d)}}}return n}function nbe(){return{vendored:[],shadowed:[]}}function Lie(t){const n=WIt.replace(/\/$/,"");return`Everything in ${Are}/ is written by the editor, so your own ${t} blocks the runtime module of that name — move your file into ${n} and update the imports that point at it.`}async function QIt(t,n,r){const a=await Mie(t);return a===null?r?(await Ew(t,n),"written"):"absent":a===n?"unchanged":cNn(a)?(await Ew(t,n),"written"):"shadowed"}const D1t=new Set;async function YIt(t,n){const r=[],a=[];for(const c of t){const l=`${Are}/${c}`,d=await QIt(l,n(c),!0);d==="written"?r.push(l):d==="shadowed"&&a.push(l)}for(const c of a)D1t.has(c)||(D1t.add(c),au.warn(Lie(c)));return{vendored:r,shadowed:a}}const R1t=new Set;async function mDn(t){const n=[];for(const r of t){if(!r.startsWith(`${Are}/`))continue;const a=VIt(r.slice(Are.length+1));a!==null&&await QIt(r,a,!1)==="written"&&n.push(r)}return n}async function hDn(t){const n=MPt()??"";if(R1t.has(n))return[];R1t.add(n);const r=await mDn(t);return r.length>0&&au.warn("runtime modules updated from this build",r),r}async function _Dn(t){if(t.includes(T1t)){const a=await Mie(T1t);if(a!==null&&a.includes(nIn))return nbe()}const n=HIt([dDn]),r=dNn(qIt,a=>n[a]??null);return await YIt(r,a=>n[a])}function gDn(t){return t.filter(n=>/\.tsx?$/.test(n)?n.startsWith(WIt)?!n.startsWith(`${Are}/`):fDn.test(n):!1)}async function yDn(t){const n=[];for(const r of gDn(t)){const a=await Mie(r);if(a!==null)for(const c of WWe(a))n.includes(c)||n.push(c)}return n}async function GWe(t){const n=await yDn(t);if(n.length===0)return nbe();const r=HIt(n);return await YIt(Object.keys(r).sort(),a=>r[a])}async function JWe(){if(FA()!==!0)return nbe();try{return await GWe(await Pw())}catch(t){return au.warn("vendoring the script runtime failed",t),nbe()}}function vDn(){return{path:bq,priority:iIn,layout:aIn}}function bDn(){var r;const t=(r=ht.snapshot[GIt])==null?void 0:r[bp],n=js(t)?t.value:void 0;return Array.isArray(n)?n.filter(js).map(a=>({path:typeof a.path=="string"?a.path:"",priority:typeof a.priority=="number"?a.priority:0,...typeof a.layout=="string"?{layout:a.layout}:{}})):[]}async function xDn(){const t=bDn(),n=vDn(),r=t.find(c=>c.path===bq);if(r!==void 0&&r.priority===n.priority&&r.layout===n.layout)return!1;const a=r===void 0?[...t,n]:t.map(c=>c.path===bq?n:c);return await Ad(GIt,bp,JSON.stringify({value:a})),!0}async function SDn(){if(FA()!==!0)return Ane();const t=await Pw(),n=await wDn(t),r=await GWe(t);return await hDn(t),r.vendored.length===0&&r.shadowed.length===0?n:{...n,vendored:[...n.vendored,...r.vendored],problems:[...new Set([...n.problems,...r.shadowed.map(Lie)])]}}async function wDn(t){const n=t.includes(bq);if(!n&&JG(t).length===0)return Ane();const{prefabs:r,scripts:a}=await JIt(t);if(await $It(r,t),!n&&r.length===0)return Ane();const c=bIn({prefabs:r,scripts:a,gameConfig:t.includes(rne)});if(c.blocking)return{...Ane(),problems:c.problems,blocked:!0};const l=await _Dn(t);let d=!1;await Mie(bq)!==c.text&&(await Ew(bq,c.text),d=!0);const m=await xDn();return{written:d,attached:m,vendored:l.vendored,problems:[...c.problems,...l.shadowed.map(Lie)],blocked:!1}}let rbe=null,Sge=null;function M1t(){const t=SDn().catch(n=>(au.warn("spawnables regeneration failed",n),{...Ane(),problems:[String(n)]})).finally(()=>{rbe=null});return rbe=t,t}function Cxe(){return rbe===null?M1t():(Sge===null&&(Sge=rbe.then(()=>(Sge=null,M1t()))),Sge)}zEn(()=>{(async()=>{try{const t=await Pw(),{prefabs:n}=await JIt(t);n.length>0&&await $It(n,t),await GWe(t)}catch(t){au.warn("open-time heal failed",t)}})()});const TDn=/\x1b?\[[0-9;]*m/g;function IJ(t){return t.replace(TDn,"")}let Kd=null;const $Be=new Set;function g7(t){Kd=t;for(const n of $Be)n()}function zBe(t){if((Kd==null?void 0:Kd.kind)==="build"){const n=Kd.lines;if(t.length<=n.length&&t.every((a,c)=>a===n[c]))return}g7({kind:"build",lines:t})}const XIt=/(?:^|[\s(/])((?:[\w.-]+\/)*[\w.-]+\.tsx?):(\d+)(?::(\d+))?/;function ZIt(t){for(const n of t.lines){const r=XIt.exec(n);if(r===null)continue;const a=r[1].replace(/^\.\//,"");if(!a.includes("node_modules"))return{path:a,line:Number(r[2]),column:r[3]===void 0?null:Number(r[3])}}return null}let K2=[],wM=!1,Axe=!1,Fie=!1;function kDn(){return Axe}function Oxe(){Axe=!0}function EDn(){Fie=!0}const CDn=4e3,ADn=3e4,L1t=200;function F1t(t){return new Promise(n=>setTimeout(n,t))}async function KIt(){const t=Date.now()+CDn,n=Date.now()+ADn;for(;Fie&&Date.now()<t;)await F1t(L1t);for(;wM&&Date.now()<n;)await F1t(L1t)}function HWe(){Axe=!1}function eNt(){K2=[],wM=!1,Axe=!1,Fie=!1,Kd!==null&&g7(null)}function ODn(t){return t.file===void 0?t.message:`${t.file}:${t.line??1}:${t.column??0}: ERROR: ${t.message}`}function PDn(t){var n,r;switch(t.type){case"sessionStarted":eNt();return;case"buildStarted":K2=[],wM=!0,Fie=!1,t.changed.some(a=>!a.endsWith(".composite"))&&Oxe();return;case"diagnostics":for(const a of t.diagnostics)a.severity==="error"&&K2.push(ODn(a));return;case"bundleSaved":wM=!1,(r=(n=q3())==null?void 0:n.previewChanged)==null||r.call(n),(Kd==null?void 0:Kd.kind)==="build"&&g7(null);return;case"failed":wM=!1,zBe(K2.length>0?K2.slice(-8):[t.message])}}function j1t(t){for(const n of t.split(/\r?\n/))IDn(n)}function IDn(t){const n=IJ(t).trim();if(/■ scene closed|▶ port \d+: starting/.test(n)){eNt();return}if(/File change detected|Starting compilation|rebuilding\.\.\.|Bundling file/.test(n)){K2=[],wM=!0,Fie=!1;const l=/^File (.+) changed,|Bundling file (\S+)/.exec(n),d=(l==null?void 0:l[1])??(l==null?void 0:l[2]);d!==void 0&&!d.endsWith(".composite")&&Oxe();return}if(/Bundle saved/.test(n)){wM=!1;return}if(/error TS\d+:|\[ERROR\]|:\d+:\d+: ERROR: /.test(n)){K2.includes(n)||(K2.push(n),(Kd==null?void 0:Kd.kind)==="build"&&zBe(K2.slice(-8)));return}const r=/Found (\d+) errors?\./.exec(n),a=/Build failed with \d+ errors?/.test(n);if(r!==null||a){wM=!1,(a?1:Number(r==null?void 0:r[1]))>0?zBe(K2.length>0?K2.slice(-8):[n]):(Kd==null?void 0:Kd.kind)==="build"&&g7(null);return}const c=/terminated with error: (.+)/.exec(n);if(c!==null){const l=(Kd==null?void 0:Kd.kind)==="build"?Kd.lines:K2,d=[c[1],...l.filter(_=>_!==c[1])];(Kd==null?void 0:Kd.kind)==="runtime"&&Kd.lines.length===d.length&&Kd.lines.every((_,S)=>_===d[S])||g7({kind:"runtime",lines:d});return}if((Kd==null?void 0:Kd.kind)==="runtime"&&Kd.lines.length<6&&/^\s*at\s/.test(n)&&XIt.test(n)){g7({kind:"runtime",lines:[...Kd.lines,n]});return}(Kd==null?void 0:Kd.kind)==="runtime"&&/Change detected for scene.*reloading/.test(n)&&g7(null)}let B1t=null;function QWe(){const t=window.editorShell;if(!(t===void 0||B1t===t)){if(B1t=t,t.onBuildEvent!==void 0){t.onBuildEvent(PDn);return}t.getState().then(n=>{for(const r of n.logs)j1t(r)}),t.onStackLog(j1t)}}function YWe(){return Ct.useSyncExternalStore(t=>(QWe(),$Be.add(t),()=>$Be.delete(t)),()=>Kd)}const tNt=t=>`eui:${t}`,NDn="dcl-editor",Ore="prefs",DDn=/^(eui:|dcl-editor[.:]|dcl-auth-env$|auth-server-provider-address$)/,U1t="__migrated-from-local-storage",xq=new Map;let $j=null,nNt=!1;const rNt=new Set;function VBe(t){return new Promise((n,r)=>{t.onsuccess=()=>n(t.result),t.onerror=()=>r(t.error)})}function RDn(){const t=indexedDB.open(NDn,1);return t.onupgradeneeded=()=>t.result.createObjectStore(Ore),VBe(t)}function iNt(t,n){if($j!==null)try{const r=$j.transaction(Ore,"readwrite").objectStore(Ore);n===null?r.delete(t):r.put(n,t)}catch{}}function MDn(){try{const t=[];for(let n=0;n<localStorage.length;n++){const r=localStorage.key(n),a=r===null?null:localStorage.getItem(r);r!==null&&a!==null&&DDn.test(r)&&t.push([r,a])}return t}catch{return[]}}async function LDn(){try{if(typeof indexedDB>"u")return;$j=await RDn();const t=$j.transaction(Ore,"readonly").objectStore(Ore),[n,r]=await Promise.all([VBe(t.getAllKeys()),VBe(t.getAll())]);if(n.forEach((a,c)=>{typeof a=="string"&&typeof r[c]=="string"&&xq.set(a,r[c])}),nNt=!0,!xq.has(U1t)){for(const[a,c]of MDn())xq.has(a)||N3(a,c);N3(U1t,"1")}}catch{$j=null}finally{for(const t of rNt)t()}}const aNt=LDn();function XWe(t){rNt.add(t)}function G3(t){if(nNt)return xq.get(t)??null;try{return localStorage.getItem(t)}catch{return null}}function N3(t,n){if(xq.set(t,n),$j!==null)return iNt(t,n);try{localStorage.setItem(t,n)}catch{}}function FDn(t){if(xq.delete(t),$j!==null)return iNt(t,null);try{localStorage.removeItem(t)}catch{}}function Pxe(t){return G3(tNt(t))}function ZWe(t,n){N3(tNt(t),n)}function sL(t,n){const r=Pxe(t);return r===null?n:r==="1"}function Ixe(t,n){ZWe(t,n?"1":"0")}function WBe(t,n){const[r,a]=Ct.useState(()=>sL(t,n));return[r,c=>{Ixe(t,c),a(c)}]}function One(t,n){const[r,a]=Ct.useState(()=>{const c=Number(Pxe(t));return Number.isFinite(c)&&c>0?c:n});return[r,c=>{ZWe(t,String(c)),a(c)}]}function jDn(t,n,r){const[a,c]=Ct.useState(()=>{const l=Pxe(t);return l!==null&&r(l)?l:n});return[a,l=>{ZWe(t,l),c(l)}]}const BDn=1200,$1t="assets/scene/main.composite";let ibe="off",sE=null,qBe=Promise.resolve(),UW=0,GBe=0;function UDn(){return ibe}function Sq(t){ibe!==t&&(ibe=t,z0())}function sNt(){return FA()===!0&&W0e()}async function z1t(){const t=await LPt();t&&LCn(async n=>(await Ew($1t,n),$1t)),Sq(t?"idle":"off")}const oNt="eui:play-edit-warned";function ave(){if(!ht.frozen){!ht.playEditWarn&&G3(oNt)!=="1"&&(ht.playEditWarn=!0);return}sNt()&&(Sq("dirty"),sE!==null&&clearTimeout(sE),sE=setTimeout(()=>{sE=null,cNt()},BDn))}function $Dn(t){ht.playEditWarn=!1,t&&N3(oNt,"1")}function zDn(){return sE!==null||UW>0}async function J3(){const t=sE!==null;if(sE!==null&&(clearTimeout(sE),sE=null),!t&&UW===0)return{pending:!1,ok:!0};const n=GBe;return t&&cNt(),await qBe,{pending:!0,ok:GBe===n}}async function VDn(){let t=!1;try{(await AIt()).written&&(t=!0)}catch(n){au.error("game-config generation failed",n)}try{const n=await Cxe();(n.written||n.vendored.length>0)&&(t=!0),n.blocked&&au.warn("spawn registry left as it was",n.problems)}catch(n){au.error("spawnables generation failed",n)}t&&Oxe()}function cNt(){UW++,Sq("saving"),qBe=qBe.then(async()=>{try{await nPt(),EDn(),sPt(),await VDn(),UW--,UW===0&&Sq("saved")}catch{GBe++,UW--,Sq("error")}})}function lNt(){sE!==null&&(clearTimeout(sE),sE=null),ibe==="dirty"&&Sq("idle")}var jie={},bA={};Object.defineProperty(bA,"__esModule",{value:!0});bA.localStorageClearIdentity=bA.localStorageStoreIdentity=bA.localStorageGetIdentity=void 0;bA.getIdentity=uNt;bA.storeIdentity=fNt;bA.clearIdentity=abe;function KWe(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error("User must be a valid ethereum address");return`single-sign-on-${t.toLowerCase()}`}function uNt(t){const n=localStorage.getItem(KWe(t));if(!n)return null;let r;try{r=JSON.parse(n)}catch{return abe(t),null}return r.expiration=new Date(r.expiration),r.expiration.getTime()<=Date.now()?(abe(t),null):r}function fNt(t,n){new Date(n.expiration).getTime()>Date.now()&&localStorage.setItem(KWe(t),JSON.stringify(n))}function abe(t){localStorage.removeItem(KWe(t))}bA.localStorageGetIdentity=uNt;bA.localStorageStoreIdentity=fNt;bA.localStorageClearIdentity=abe;(function(t){var n=Zi&&Zi.__createBinding||(Object.create?function(a,c,l,d){d===void 0&&(d=l);var m=Object.getOwnPropertyDescriptor(c,l);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[l]}}),Object.defineProperty(a,d,m)}:function(a,c,l,d){d===void 0&&(d=l),a[d]=c[l]}),r=Zi&&Zi.__exportStar||function(a,c){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(c,l)&&n(c,a,l)};Object.defineProperty(t,"__esModule",{value:!0}),r(bA,t)})(jie);const eqe="auth-server-provider-address",WDn="creator-hub",V1t={prod:{server:"https://auth-api.decentraland.org",dapp:"https://decentraland.org/auth"},zone:{server:"https://auth-api.decentraland.zone",dapp:"https://decentraland.zone/auth"}};function dNt(){return G3("dcl-auth-env")==="zone"?V1t.zone:V1t.prod}class s3 extends Error{constructor(n,r){super(r),this.reason=n,this.name="SignInError"}}function qDn(t,n){const r=new URLSearchParams({targetConfigId:WDn,flow:"deeplink",authRequestId:n});return`${dNt().dapp}/requests/${encodeURIComponent(t)}?${r.toString()}`}const GDn=/^0x[a-f0-9]{40}$/;async function JDn(t){var c,l;const n=await fetch(`${dNt().server}/identities/${encodeURIComponent(t)}`);if(n.status===404)throw new s3("not_found","Sign-in identity not found");if(n.status===410)throw new s3("expired","The sign-in expired — try again");if(n.status===403)throw new s3("network","Sign-in network mismatch");if(!n.ok)throw new s3("unknown",`Failed to fetch the identity (${n.status})`);const{identity:r}=await n.json(),a=(l=(c=r==null?void 0:r.authChain)==null?void 0:c[0])==null?void 0:l.payload;if(typeof a!="string"||!GDn.test(a.toLowerCase()))throw new s3("unknown","Malformed identity response");return{identity:r,signer:a.toLowerCase()}}async function HDn(t){const{identity:n,signer:r}=await JDn(t);return jie.localStorageStoreIdentity(r,n),N3(eqe,r),r}let ck=null;function tqe(){const t=ck==null?void 0:ck();return t===void 0||t.isGuest||t.address===null?null:t.address.toLowerCase()}function pNt(t){ck=t,mNt()}function mNt(){if(ck===null)return;const t=tqe();t!==HG.wallet&&ZP({wallet:t,profile:null,phase:"idle",error:null,errorReason:null})}function H3(){return ck!==null?tqe():G3(eqe)}function Nxe(){if(ck!==null)return!1;const t=H3();if(t===null)return!1;try{const n=jie.localStorageGetIdentity(t);return n!=null}catch{return!1}}function nqe(){return ck!==null?tqe()!==null:Nxe()}function hNt(){if(ck!==null)return null;const t=H3();if(t===null)return null;try{return jie.localStorageGetIdentity(t)??null}catch{return null}}function QDn(){if(ck!==null)return;const t=H3();if(t!==null)try{jie.localStorageClearIdentity(t)}catch{}FDn(eqe)}const YDn=15*60*1e3;let HG={wallet:Nxe()?H3():null,profile:null,phase:"idle",error:null,errorReason:null};const JBe=new Set;function ZP(t){HG={...HG,...t};for(const n of JBe)n()}let hFe=!1,Pne=null,Ine=null;async function _Nt(t){const n=await i3n(t);HG.wallet===t&&ZP({profile:n})}function XDn(){if(hFe||ck!==null)return;const t=window.editorShell;if((t==null?void 0:t.openExternal)===void 0||t.onSignIn===void 0){ZP({phase:"error",error:"Sign-in needs the desktop app",errorReason:"unknown"});return}hFe=!0,Ine=null,ZP({phase:"opening",error:null,errorReason:null});const n=crypto.randomUUID();let r=!1;const a=_=>{r||(r=!0,d(),clearTimeout(m),Pne=null,hFe=!1,"signer"in _?(ZP({wallet:_.signer,phase:"idle",error:null,errorReason:null}),_Nt(_.signer)):_.error.reason==="cancelled"?ZP({phase:"idle",error:null,errorReason:null}):ZP({phase:"error",error:_.error.message,errorReason:_.error.reason}))},c=_=>_ instanceof s3?_:new s3("unknown",_ instanceof Error?_.message:String(_)),l=crypto.randomUUID(),d=t.onSignIn(({identityId:_,authRequestId:S})=>{if(S!==null&&S!==n&&S!==l){console.warn(`[auth] ignoring sign-in callback for another request (got ${S}, waiting for ${n} or ${l})`);return}HDn(_).then(E=>a({signer:E})).catch(E=>a({error:c(E)}))}),m=setTimeout(()=>a({error:new s3("expired","Sign-in timed out — try again")}),YDn);Pne=()=>a({error:new s3("cancelled","Sign-in cancelled")}),Ine=qDn(l,n),ZP({phase:"waiting"}),t.openExternal(Ine).catch(_=>a({error:c(_)}))}function ZDn(){Pne==null||Pne()}function KDn(){var t,n;Ine!==null&&((n=(t=window.editorShell)==null?void 0:t.openExternal)==null||n.call(t,Ine))}function e3n(){HG.phase==="error"&&ZP({phase:"idle",error:null,errorReason:null})}function t3n(t){var n,r;return((r=(n=window.editorShell)==null?void 0:n.submitSignInLink)==null?void 0:r.call(n,t.trim()))??Promise.resolve(!1)}function n3n(){ck===null&&(QDn(),ZP({wallet:null,profile:null,phase:"idle",error:null,errorReason:null}))}const r3n="https://peer.decentraland.org";async function i3n(t){var n,r,a;try{const c=await fetch(`${r3n}/lambdas/profiles/${t}`);if(!c.ok)return null;const d=(n=(await c.json()).avatars)==null?void 0:n[0];return d===void 0?null:{name:d.name??"",hasClaimedName:d.hasClaimedName===!0,face256:((a=(r=d.avatar)==null?void 0:r.snapshots)==null?void 0:a.face256)??null}}catch{return null}}function NJ(){var r;const t=Ct.useSyncExternalStore(a=>(JBe.add(a),()=>JBe.delete(a)),()=>HG);Ct.useEffect(()=>{t.wallet!==null&&t.profile===null&&_Nt(t.wallet)},[t.wallet,t.profile]);const n=ck!==null;return Ct.useEffect(()=>{if(!n)return;const a=setInterval(mNt,3e3);return()=>clearInterval(a)},[n]),{wallet:t.wallet,profile:t.profile,phase:t.phase,signingIn:t.phase==="opening"||t.phase==="waiting",error:t.error,errorReason:t.errorReason,signIn:XDn,signOut:n3n,cancel:ZDn,reopen:KDn,dismissError:e3n,external:n,isDev:((r=window.editorShell)==null?void 0:r.isDev)===!0,submitLink:t3n}}const a3n=["init","set-tool","set-flags","spawn-points","set-selection","set-camera","set-frozen","focus","frame","refresh","pointer-up","pick-at-pointer","fly-speed","resync","component-written","component-deleted","entity-deleted","rpc","pointer-space","scene-ready","scene-found","selection","drag-start","drag-update","drag-end","tool","rpc-reply","hover","cursor-lock","zones","boot-trace"],s3n=["storage.decentraland.org","storage.decentraland.zone","creators-data.decentraland.org"];function gNt(t){return`(copy, ${t.toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})})`}const yNt=30,W1t=256*1024,q1t=2*1024*1024,o3n=/^[a-zA-Z0-9-]{1,80}$/,c3n="dcl-assistant-v1",l3n="dcl-ticket.";function hy(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function HBe(t){return t.length===0||t.length>512||/[\\\x00-\x1f\x7f:]/.test(t)||t.split("/").some(r=>r===""||r===".."||r.startsWith(".")||r==="node_modules"||r==="bin")?!1:/\.(ts|tsx|js|jsx|json|md|txt)$/i.test(t)}function u3n(t){return HBe(t)&&/^src\//.test(t)&&/\.(ts|tsx|js|jsx)$/.test(t)&&!t.split("/").includes("runtime")}function Sm(...t){return t.filter(Boolean).join(" ")}const f3n=".eui-ds-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:var(--z-overlay);margin:0;padding:6px;list-style:none;background:var(--panel);border:1px solid var(--divider);border-radius:var(--r-card);box-shadow:var(--shadow-panel);max-height:260px;overflow-y:auto;scrollbar-width:thin;animation:eui-pop var(--dur-fast) var(--ease-out)}.eui-ds-pop[data-density=compact]{padding:4px;max-height:220px}.eui-ds-pop-row{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:var(--r-control);background:transparent;color:var(--ink-7);font-family:inherit;font-size:13px;text-align:left;cursor:pointer}.eui-ds-pop-row .hint{margin-left:auto;padding-left:10px;flex:none;color:var(--text-3);font-size:.85em}.eui-ds-pop-row:hover{background:var(--white-10);color:var(--text)}.eui-ds-pop-row.active{background:var(--fill-3);color:var(--text)}.eui-ds-pop[data-density=compact] .eui-ds-pop-row{padding:5px 8px;font-size:11px}",G1t={tokens:0,base:1,primitives:2,features:3,app:4},QBe=new Map;let d3n=0;function $d(t,n,r){var a;QBe.set(t,{layer:n,css:r,seq:((a=QBe.get(t))==null?void 0:a.seq)??d3n++})}function p3n(){return[...QBe.values()].sort((t,n)=>G1t[t.layer]-G1t[n.layer]||t.seq-n.seq).map(t=>t.css).join("")}$d("ds/Popover","primitives",f3n);function vNt(t){const n=t.density??"default";return P.jsx("div",{className:["eui-ds-pop",t.className].filter(Boolean).join(" "),"data-density":n==="compact"?"compact":void 0,role:t.role,children:t.children})}function ep(t){return{"aria-label":t,"data-tip":t}}function kE(t,n){const[r,a]=Ct.useState(void 0),[c,l]=Ct.useState(null),[d,m]=Ct.useState(0);return Ct.useEffect(()=>{let _=!0;return a(void 0),l(null),t().then(S=>_&&a(S),S=>_&&l(S instanceof Error?S.message:String(S))),()=>{_=!1}},[...n,d]),{data:r,err:c,reload:()=>m(_=>_+1)}}function Dxe(t,n,r,a=50){Ct.useEffect(()=>{t!==void 0&&t.items.length===0&&t.total>0&&n>0&&r(Math.max(0,Math.floor((t.total-1)/a)*a))},[t])}function Rxe(t){const n=t.page,r=t.pageSize??50;if(n===void 0||n.total<=r)return null;const a=n.offset+1,c=n.offset+n.items.length;return P.jsxs("div",{className:"eui-pager",children:[P.jsx("button",{className:"eui-link",disabled:n.offset===0,onClick:()=>t.onOffset(Math.max(0,n.offset-r)),children:"‹ Prev"}),P.jsxs("span",{className:"rng",children:[a,"–",c," of ",n.total]}),P.jsx("button",{className:"eui-link",disabled:c>=n.total,onClick:()=>t.onOffset(n.offset+r),children:"Next ›"})]})}function _E(t){const[n,r]=Ct.useState(!1);return Ct.useEffect(()=>{if(!n)return;const a=setTimeout(()=>r(!1),3e3);return()=>clearTimeout(a)},[n]),P.jsx(ps,{variant:n?"danger":"ghost",size:"sm",disabled:t.disabled,onClick:()=>{n?(r(!1),t.onConfirm()):r(!0)},children:n?t.confirm??"Sure?":t.label})}function YBe(t,n){var r;(r=navigator.clipboard)==null||r.writeText(t).then(n)}function XBe(t){const[n,r]=Ct.useState(!1),[a,c]=Ct.useState(!1),l=t.secret===!0&&!n,d=()=>{var m;(m=navigator.clipboard)==null||m.writeText(t.value).then(()=>{c(!0),setTimeout(()=>c(!1),1400)})};return P.jsxs("div",{className:"eui-copyfield",children:[P.jsx("span",{className:"k",children:t.label}),P.jsx("span",{className:"v",children:l?"••••••••••••••••":t.value}),t.secret===!0&&P.jsx(ps,{variant:"ghost",size:"sm",onClick:()=>r(m=>!m),children:n?"Hide":"Reveal"}),P.jsx(ps,{variant:"ghost",size:"sm",onClick:d,children:a?"Copied ✓":"Copy"})]})}function Q3(t){return t.err!==null?P.jsxs("p",{className:"eui-world-hint",children:[t.err," ",P.jsx("button",{className:"eui-link",onClick:t.onRetry,children:"Retry"})]}):t.loading?P.jsxs("div",{className:"eui-world-hint",children:[P.jsx(sg,{size:"sm"})," Loading…"]}):null}const m3n=".eui-ds-state{display:flex;flex-direction:column;align-items:stretch;gap:10px;text-align:center;padding:10px 0}.eui-ds-state-icon{width:46px;height:46px;border-radius:50%;flex:none;margin:0 auto 4px;display:flex;align-items:center;justify-content:center;background:var(--primary-selected);color:var(--primary);font-size:20px}.eui-ds-state-icon.success{background:#44b60024;color:var(--success)}.eui-ds-state-icon.error{background:var(--error-hover);color:var(--error);font-weight:800}.eui-ds-state-t{font-size:var(--fs-lg);font-weight:700;margin:0}.eui-ds-state-note{font-size:var(--fs-sm);color:var(--text-3);margin:0 auto;line-height:1.5;max-width:360px}.eui-ds-state.start{text-align:left;padding:0}.eui-ds-state.start .eui-ds-state-icon{margin-left:0}.eui-ds-state.start .eui-ds-state-note{max-width:none;margin:0}";$d("ds/StateBlock","primitives",m3n);function h3n(t){const n=t.tone??"neutral",r=["eui-ds-state",t.align==="start"?"start":""].filter(Boolean).join(" "),a=["eui-ds-state-icon",n==="neutral"?"":n].filter(Boolean).join(" ");return P.jsxs("div",{className:r,children:[t.icon!==void 0&&P.jsx("div",{className:a,children:t.icon}),P.jsx("p",{className:"eui-ds-state-t",children:t.headline}),t.note!==void 0&&P.jsx("p",{className:"eui-ds-state-note",children:t.note}),t.children]})}const _3n=".eui-modal-x{border:0;background:none;color:var(--text-3);cursor:pointer;font-size:13px;padding:4px 6px;border-radius:var(--r-control)}.eui-modal-x:hover{color:var(--text);background:var(--paper-hi)}.eui-modal{outline:none}.eui-modal-body{-webkit-user-select:text;user-select:text}.eui-modal-body>*{min-width:0;overflow-wrap:break-word}.eui-modal-body code{overflow-wrap:anywhere;-webkit-user-drag:none}",g3n='a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function bNt(t){return[...t.querySelectorAll(g3n)].filter(n=>n.closest("[hidden], [inert]")===null)}function y3n(t,n){if(t.key!=="Tab")return;const r=bNt(n),c=n.getRootNode().activeElement;if(r.length===0){t.preventDefault(),n.focus();return}const l=r[0],d=r[r.length-1];t.shiftKey&&(c===l||c===n)?(t.preventDefault(),d.focus()):!t.shiftKey&&c===d&&(t.preventDefault(),l.focus())}$d("ds/Modal","primitives",_3n);function Bp(t){const{onClose:n}=t,r=Ct.useRef(null);Ct.useEffect(()=>{const _=r.current,S=_==null?void 0:_.getRootNode(),E=S==null?void 0:S.activeElement;return _==null||_.focus(),()=>{E instanceof HTMLElement&&E.isConnected&&E.focus()}},[]);const a=Ct.useId(),c=Ct.useRef(n);c.current=n,Ct.useEffect(()=>{const _=S=>{S.key!=="Escape"||c.current===void 0||(S.stopPropagation(),c.current())};return window.addEventListener("keydown",_,!0),()=>window.removeEventListener("keydown",_,!0)},[]);const l=Ct.useRef(!1),d=n!==void 0&&t.scrimClose!==!1,m=()=>{l.current&&(n==null||n())};return P.jsx("div",{className:"eui-modal-backdrop",onMouseDown:_=>{l.current=_.target===_.currentTarget},onClick:d?m:void 0,children:P.jsxs("div",{ref:r,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":t.title!==void 0?a:void 0,className:Sm("eui-modal",t.size,t.className),onClick:_=>_.stopPropagation(),onKeyDown:_=>{r.current!==null&&y3n(_,r.current)},children:[t.title!==void 0&&P.jsxs("div",{className:"eui-modal-head",children:[P.jsx("span",{id:a,style:{display:"contents"},children:t.title}),t.closeX===!0&&P.jsxs(P.Fragment,{children:[P.jsx("span",{style:{flex:1}}),P.jsx("button",{className:"eui-modal-x","data-tip":t.closeTip,"aria-label":t.closeTip??"Close",onClick:t.onClose,children:"✕"})]})]}),P.jsx("div",{className:Sm("eui-modal-body",t.bodyClassName),children:t.children}),t.footer!==void 0&&P.jsx("div",{className:"eui-modal-foot",children:t.footer})]})})}const v3n=".eui-ds-chip{font:600 10px/1 var(--font-family);letter-spacing:.04em;color:var(--text-2);background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-pill);padding:4px 8px;flex:none;max-width:100%}.eui-ds-chip.live{color:var(--success);border-color:var(--success)}.eui-ds-chip.soon{color:var(--text-3);border-style:dashed}.eui-ds-chip.primary{color:var(--text);border-color:var(--primary-border);background:var(--primary-selected);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.eui-ds-chip.danger{color:var(--error);border-color:currentColor}.eui-ds-chip.info{color:var(--lavender);border-color:#c640cd80;background:#c640cd24}.eui-ds-chip.server{color:var(--success);border-color:#44b60080;background:#44b6001f}.eui-ds-chip.client{color:var(--client-blue);border-color:#4ea3ff80;background:#4ea3ff1f}.eui-ds-chip.xs{font-size:9.5px;font-weight:700;letter-spacing:.06em;line-height:1;padding:3px 7px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;max-width:100%}.eui-ds-chip .txt{min-width:0;overflow:hidden;text-overflow:ellipsis}.eui-ds-chip .ico{display:inline-flex;flex:none}.eui-ds-chip.xs .ico svg{width:9px;height:9px}";$d("ds/Chip","primitives",v3n);function U0(t){const n=t.tone??"default",r=t.size??"md",a=["eui-ds-chip",n==="default"?"":n,r==="xs"?"xs":""].filter(Boolean).join(" ");return P.jsxs("span",{className:a,"data-tip":t.tip,children:[t.icon!==void 0&&P.jsx("span",{className:"ico",children:t.icon}),P.jsx("span",{className:"txt",children:t.children})]})}const b3n=".eui-ds-map{display:flex;flex-direction:column;gap:3px;padding:10px;background:var(--input);border:1px solid var(--divider-soft);border-radius:10px;max-width:100%;overflow:auto}.eui-ds-map .eui-ds-map-row{display:flex;gap:3px}.eui-ds-map .eui-ds-map-cell{width:var(--map-cell, 22px);height:var(--map-cell, 22px);flex:none;border-radius:min(4px,calc(var(--map-cell, 22px) / 4));border:1px solid var(--divider);background:none;padding:0}.eui-ds-map .eui-ds-map-cell.act{cursor:pointer}.eui-ds-map .eui-ds-map-cell.act:hover{border-color:var(--primary-border)}.eui-ds-map .eui-ds-map-cell.on{background:var(--map-tone);border-color:var(--map-tone-line)}.eui-ds-map .eui-ds-map-cell.base{box-shadow:inset 0 0 0 2px var(--map-tone-line)}.eui-ds-map .eui-ds-map-cell.lit{border-color:var(--text)}.eui-ds-map .eui-ds-map-cell.dim{opacity:.45}.eui-ds-map .eui-ds-map-gap{flex:none;width:var(--map-cell, 22px);height:var(--map-cell, 22px);border-radius:3px;background:repeating-linear-gradient(135deg,var(--divider-soft) 0 3px,transparent 3px 6px)}.eui-ds-map .eui-ds-map-gap.rowgap{width:auto;align-self:stretch;height:10px}.eui-ds-map:focus-visible,.eui-ds-map .eui-ds-map-cell:focus-visible{outline:2px solid var(--primary-border);outline-offset:1px}",x3n=3;function J1t(t,n=x3n){if(t.length===0)return[];const r=new Set(t),a=Math.min(...t)-1,c=Math.max(...t)+1,l=[];let d=[];const m=()=>{if(d.length!==0){if(d.length>=n)l.push({kind:"gap",span:d.length});else for(const _ of d)l.push({kind:"coord",at:_});d=[]}};for(let _=a;_<=c;_++)r.has(_)?(m(),l.push({kind:"coord",at:_})):d.push(_);return m(),l}function S3n(t){const n=[],r=[];for(const a of t){const[c,l]=a.split(",").map(Number);Number.isFinite(c)&&Number.isFinite(l)&&(n.push(c),r.push(l))}return{cols:J1t(n),rows:J1t(r).reverse()}}$d("ds/ParcelMap","primitives",b3n);const wge=[222,158,28,288,190,344],w3n={mine:{"--map-tone":"var(--primary-selected)","--map-tone-line":"var(--primary)"},replaced:{"--map-tone":"var(--error-hover)","--map-tone-line":"var(--error)"},staying:{"--map-tone":"var(--divider)","--map-tone-line":"var(--text-3)"}};function Nne(t){if(typeof t=="string")return w3n[t];const n=wge[(t%wge.length+wge.length)%wge.length];return{"--map-tone":`hsl(${n} 55% 52% / .5)`,"--map-tone-line":`hsl(${n} 62% 58%)`}}function T3n(t,n,r){if(r===void 0)return n;const a=Math.floor(r.width/(t.cols.length+1))-3,c=Math.floor(r.height/(t.rows.length+1))-3;return Math.max(3,Math.min(n,a,c))}function Mxe(t){const{regions:n,selected:r=null,onSelect:a,onContext:c,onToggle:l}=t,d=Ct.useMemo(()=>{const S=new Map;for(const E of n)for(const A of E.parcels)S.set(A,E);return S},[n]),m=Ct.useMemo(()=>S3n(n.flatMap(S=>S.parcels)),[n]),_={"--map-cell":`${T3n(m,t.cell??22,t.fit)}px`};return P.jsx("div",{className:"eui-ds-map",style:_,children:m.rows.map((S,E)=>S.kind==="gap"?P.jsx("div",{className:"eui-ds-map-gap rowgap","data-tip":`${S.span} empty rows`},`g${E}`):P.jsx("div",{className:"eui-ds-map-row",children:m.cols.map((A,L)=>{if(A.kind==="gap")return P.jsx("div",{className:"eui-ds-map-gap","data-tip":`${A.span} empty columns`},`g${L}`);const j=`${A.at},${S.at}`,z=d.get(j)??null,Q=r!==null&&z!==null&&z.key!==r,ne=r!==null&&z!==null&&z.key===r,ie=["eui-ds-map-cell",z!==null?"on":"",z!==null&&z.base===j?"base":"",ne?"lit":"",Q?"dim":"",l!==void 0||z!==null?"act":""].filter(Boolean).join(" "),Z=z!==null?`${z.label} · ${j}`:j,he=z!==null?Nne(z.tone):void 0;return l===void 0&&z===null?P.jsx("div",{className:ie,"data-tip":Z},j):P.jsx("button",{type:"button",className:ie,style:he,"data-tip":Z,"aria-label":Z,onClick:()=>{l!==void 0?l(j):z!==null&&a!==void 0&&a(z.key)},onContextMenu:de=>{z===null||c===void 0||(de.preventDefault(),c(z.key,de))}},j)})},S.at))})}const k3n=".eui-ds-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--space-2);max-height:320px;overflow-y:auto}.eui-ds-pick{display:flex;align-items:center;gap:10px;width:100%;padding:var(--space-2);cursor:pointer;text-align:left;font:inherit;color:var(--text);background:var(--paper);border:1px solid var(--divider-soft);border-radius:var(--r-control)}.eui-ds-pick:hover:not([disabled]){border-color:var(--primary-border)}.eui-ds-pick[aria-pressed=true],.eui-ds-pick.on{border-color:var(--primary);background:var(--primary-selected)}.eui-ds-pick[disabled]{opacity:.55;cursor:default}.eui-ds-pick img,.eui-ds-pick .ph{width:40px;height:28px;border-radius:5px;object-fit:cover;background:var(--input);display:flex;align-items:center;justify-content:center;color:var(--text-3);flex:none}.eui-ds-pick .meta{display:flex;flex-direction:column;gap:1px;min-width:0}.eui-ds-pick .nm{font-weight:600;font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-ds-pick .num{font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums}.eui-ds-pick .box{flex:none}";$d("ds/CardPicker","primitives",k3n);function xNt(t){const n=t.mode==="many",r=new Set(t.selected);return P.jsx("div",{className:"eui-ds-picks",role:"group","aria-label":t.ariaLabel,children:t.items.map(a=>{const c=r.has(a.key),l=a.disabledReason??null,d=a.image??null,m=a.note??null,_=l??a.tip,S=P.jsxs(P.Fragment,{children:[d===null?P.jsx("span",{className:"ph",children:"⛶"}):P.jsx("img",{src:d,alt:"",crossOrigin:"anonymous",loading:"lazy"}),P.jsxs("span",{className:"meta",children:[P.jsx("span",{className:"nm",children:a.label}),m!==null&&P.jsx("span",{className:"num",children:m})]})]});return n?P.jsxs("label",{className:`eui-ds-pick${c?" on":""}`,"data-tip":_,children:[P.jsx("span",{className:"box",children:P.jsx(Fxe,{checked:c,disabled:l!==null,onChange:()=>t.onSelect(a.key)})}),S]},a.key):P.jsx("button",{type:"button",className:"eui-ds-pick","aria-pressed":c,disabled:l!==null,"data-tip":_,onClick:()=>t.onSelect(a.key),children:S},a.key)})})}const E3n=".eui-ds-notice{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-2) var(--space-3) var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--r-control);background:var(--fill-1);border:1px solid var(--divider-soft);color:var(--text-2);font-size:11.5px;line-height:1.5}.eui-ds-notice.attention{background:#ff743a1a;border-color:#ff743a6b;color:var(--text)}.eui-ds-notice.attention strong{color:var(--accent);font-weight:600}.eui-ds-notice>.body{flex:1;min-width:0}.eui-ds-notice>.x{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;margin:-1px -4px 0 0;border:none;background:none;cursor:pointer;border-radius:var(--r-control);color:var(--text-3);font-size:11px;line-height:1}.eui-ds-notice>.x:hover{color:var(--text);background:var(--hover)}";$d("ds/Notice","primitives",E3n);function u3(t){const n=t.tone??"info";return P.jsxs("div",{className:`eui-ds-notice${n==="info"?"":` ${n}`}`,children:[P.jsx("div",{className:"body",children:t.children}),t.onDismiss!==void 0&&P.jsx("button",{className:"x",...ep(t.dismissTip??"Dismiss"),onClick:t.onDismiss,children:"✕"})]})}const Tge=8;function rqe(t){const n=Ct.useRef(null),[r,a]=Ct.useState({left:t.x,top:t.y});return oL(!0,n,t.onClose),Ct.useEffect(()=>{const c=l=>{l.key==="Escape"&&(l.stopPropagation(),t.onClose())};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[t.onClose]),Ct.useLayoutEffect(()=>{const c=n.current;if(c===null)return;const{width:l,height:d}=c.getBoundingClientRect();a({left:Math.max(Tge,Math.min(t.x,window.innerWidth-l-Tge)),top:Math.max(Tge,Math.min(t.y,window.innerHeight-d-Tge))})},[t.x,t.y]),P.jsx("div",{ref:n,className:t.className===void 0?"eui-ctx":`eui-ctx ${t.className}`,style:{left:r.left,top:r.top},role:"menu",children:t.children})}const C3n='.eui-ds-splitter{position:relative;flex:none;height:20px;margin:-10px 0;z-index:6;cursor:ns-resize;pointer-events:auto;outline:none;touch-action:none}.eui-ds-splitter:after{content:"";position:absolute;left:50%;top:50%;width:36px;height:3px;transform:translate(-50%,-50%);border-radius:3px;background:var(--divider);transition:background var(--dur-fast),width var(--dur-fast)}.eui-ds-splitter:hover:after,.eui-ds-splitter:focus-visible:after,.eui-ds-splitter[data-dragging]:after{width:100%;background:var(--primary)}';$d("ds/Splitter","primitives",C3n);const A3n=16,O3n=64;function P3n(t){const{value:n,min:r,max:a,onChange:c}=t,l=_=>Math.round(Math.max(r,Math.min(a,_))),d=_=>{_.preventDefault();const S=_.currentTarget,E=_.clientY;S.setPointerCapture(_.pointerId),S.dataset.dragging="";const A=j=>c(l(n+(E-j.clientY))),L=()=>{S.releasePointerCapture(_.pointerId),delete S.dataset.dragging,S.removeEventListener("pointermove",A),S.removeEventListener("pointerup",L),S.removeEventListener("pointercancel",L)};S.addEventListener("pointermove",A),S.addEventListener("pointerup",L),S.addEventListener("pointercancel",L)},m=_=>{const S=_.shiftKey?O3n:A3n,E=_.key==="ArrowUp"?n+S:_.key==="ArrowDown"?n-S:_.key==="Home"?a:_.key==="End"?r:null;E!==null&&(_.preventDefault(),c(l(E)))};return P.jsx("div",{className:"eui-ds-splitter",role:"separator","aria-orientation":"horizontal","aria-label":t.label,"aria-valuenow":n,"aria-valuemin":r,"aria-valuemax":a,tabIndex:0,"data-tip":`${t.label} — drag, or focus and use ↑ ↓`,onPointerDown:d,onKeyDown:m})}const I3n=".eui-ds-table{display:flex;flex-direction:column;gap:var(--space-1);margin:0 0 var(--space-3);border:1px solid var(--divider);border-radius:var(--r-control);background:var(--fill-1);overflow:hidden}.eui-ds-table-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--divider-soft)}.eui-ds-table-head>*{flex:none}.eui-ds-table-head>.t{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;color:var(--text)}.eui-ds-table-head>.n{font-size:10px;color:var(--text-3);font-variant-numeric:tabular-nums}.eui-ds-table-head>.sp{flex:1}.eui-ds-table-note{margin:0 var(--space-2) var(--space-1);color:var(--text-3);font-size:10.5px;line-height:1.45}.eui-ds-table-cols{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);border-bottom:1px solid var(--divider-soft);background:var(--fill-2)}.eui-ds-table-col{display:flex;align-items:center;gap:var(--space-1)}.eui-ds-table-col>.eui-input{flex:1;min-width:0}.eui-ds-table-grid{overflow-x:auto}.eui-ds-table-rows{display:grid;align-items:stretch;min-width:100%}.eui-ds-table-cell{display:flex;align-items:center;gap:var(--space-1);padding:2px var(--space-1);min-width:0;border-bottom:1px solid var(--divider-soft)}.eui-ds-table-cell>.eui-input,.eui-ds-table-cell>.eui-num{width:100%;min-width:0}.eui-ds-table-cell.head{padding:var(--space-1);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);background:var(--fill-2);border-bottom-color:var(--divider);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.eui-ds-table-cell.key{position:sticky;left:0;z-index:1;background:var(--paper)}.eui-ds-table-cell.key.head{background:var(--paper-hi)}.eui-ds-table-cell.on,.eui-ds-table-cell.key.on{background:var(--primary-selected)}.eui-ds-table-cell.more{justify-content:center;padding:2px 0}.eui-ds-table-cell.bad>.eui-input,.eui-ds-table-cell.bad>.eui-num{box-shadow:inset 0 0 0 1px var(--error);color:var(--error-text)}.eui-ds-table-empty{margin:0;padding:var(--space-3) var(--space-2);color:var(--text-3);font-size:11px;text-align:center}.eui-ds-table-detail{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);border-top:1px solid var(--divider);background:var(--fill-2)}.eui-ds-table-detail .eui-group-label{margin:0 0 var(--space-1)}.eui-ds-table-detail-foot{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.eui-ds-table-err{color:var(--error-text);font-size:10px;line-height:1.4}";$d("ds/TableEditor","primitives",I3n);const N3n=["number","boolean","string"],D3n=N3n.map(t=>({value:t,label:t})),R3n=t=>t==="number"?"0":t==="boolean"?"false":"";function SNt(t){return t.column.kind==="boolean"?P.jsx(DB,{size:"sm",checked:t.value.trim().toLowerCase()==="true","aria-label":t.label,onChange:n=>t.onSet(n?"true":"false",!0)}):t.column.kind==="number"?P.jsx(Pre,{value:t.value,"aria-label":t.label,min:t.column.min,max:t.column.max,onChange:n=>t.onSet(n.target.value,!1),onBlur:n=>t.onSet(n.target.value,!0),onKeyDown:n=>{n.key==="Enter"&&n.target.blur()}}):P.jsx(Bh,{value:t.value,"aria-label":t.label,onChange:n=>t.onSet(n.target.value,!1),onBlur:n=>t.onSet(n.target.value,!0),onKeyDown:n=>{n.key==="Enter"&&n.target.blur()}})}function M3n(t){const{columns:n,onChange:r,problemOf:a}=t,c=t.pageSize??25,l=t.blankCell??R3n,d=JSON.stringify(t.rows),[m,_]=Ct.useState(t.rows),[S,E]=Ct.useState(0),[A,L]=Ct.useState(null),[j,z]=Ct.useState(!1);Ct.useEffect(()=>{_(t.rows)},[d]);const Q=Dt=>{_(Dt),r(Dt)},ne=(Dt,_t,Ve,Xt)=>{const He=m.map((ze,Wt)=>Wt===Dt?{...ze,cells:ze.cells.map((mt,Pt)=>Pt===_t?Ve:mt)}:ze);Xt?Q(He):_(He)},ie=(Dt,_t,Ve)=>{const Xt=m.map((He,ze)=>ze===Dt?{...He,key:_t}:He);Ve?Q(Xt):_(Xt)},Z=Ct.useMemo(()=>{if(a===void 0)return new Map;const Dt=new Map;return m.forEach((_t,Ve)=>{n.forEach((Xt,He)=>{const ze=a(_t.cells[He]??"",Xt);ze!==null&&Dt.set(`${Ve}:${He}`,ze)})}),Dt},[m,n,a]),he=m.slice(S,S+c),de={items:he,total:m.length,offset:S};Dxe(de,S,E,c);const Te=`minmax(120px, 0.8fr)${n.length===0?"":` repeat(${n.length}, minmax(84px, 1fr))`} 30px`,Me=A!==null&&A<m.length?m[A]:null,It=()=>{Q([...m,{key:"",cells:n.map(Dt=>l(Dt.kind))}]),L(m.length),E(Math.floor(m.length/c)*c)},Ut=Dt=>{Q(m.filter((_t,Ve)=>Ve!==Dt)),L(null)},bt=(Dt,_t)=>{var Xt;const Ve=m.map(He=>({...He,cells:_t(He.cells)}));_(Ve),(Xt=t.onColumnsChange)==null||Xt.call(t,Dt,Ve)};return P.jsxs("section",{className:"eui-ds-table",children:[P.jsxs("header",{className:"eui-ds-table-head",children:[P.jsx("span",{className:"t",children:t.title}),P.jsx("span",{className:"n",children:m.length}),Z.size>0&&P.jsxs(U0,{tone:"danger",size:"xs",tip:"Cells your game cannot read as values",children:[Z.size," ",Z.size===1?"error":"errors"]}),P.jsx("span",{className:"sp"}),t.actions,t.onColumnsChange!==void 0&&P.jsx(ps,{size:"xs",variant:"ghost",active:j,onClick:()=>z(!j),children:"Columns"}),P.jsx(ps,{size:"xs",variant:"ghost",onClick:It,children:"+ Row"})]}),t.note!==void 0&&P.jsx("p",{className:"eui-ds-table-note",children:t.note}),t.onColumnsChange!==void 0&&j&&P.jsxs("div",{className:"eui-ds-table-cols",children:[n.map((Dt,_t)=>P.jsxs("div",{className:"eui-ds-table-col",children:[P.jsx(Bh,{defaultValue:Dt.name,"aria-label":`column ${_t+1} name`,onBlur:Ve=>{const Xt=Ve.target.value;Xt!==Dt.name&&bt(n.map((He,ze)=>ze===_t?{...He,name:Xt}:He),He=>He)},onKeyDown:Ve=>{Ve.key==="Enter"&&Ve.target.blur()}},`${_t}:${Dt.name}`),P.jsx(Kx,{density:"compact",value:Dt.kind,options:D3n,"aria-label":`column ${_t+1} type`,onChange:Ve=>bt(n.map((Xt,He)=>He===_t?{...Xt,kind:Ve}:Xt),Xt=>Xt.map((He,ze)=>ze===_t?l(Ve):He))}),P.jsx(Lxe,{size:"sm",tip:"Remove this column","aria-label":`remove column ${_t+1}`,onClick:()=>bt(n.filter((Ve,Xt)=>Xt!==_t),Ve=>Ve.filter((Xt,He)=>He!==_t)),children:"✕"})]},_t)),P.jsx(ps,{size:"xs",variant:"ghost",onClick:()=>bt([...n,{name:`field${n.length+1}`,kind:"number"}],Dt=>[...Dt,l("number")]),children:"+ Column"})]}),P.jsxs("div",{className:"eui-ds-table-grid",children:[P.jsxs("div",{className:"eui-ds-table-rows",style:{gridTemplateColumns:Te},children:[P.jsx("div",{className:"eui-ds-table-cell head key",children:t.keyLabel??"row"}),n.map((Dt,_t)=>P.jsx("div",{className:"eui-ds-table-cell head",children:Dt.name===""?"—":Dt.name},_t)),P.jsx("div",{className:"eui-ds-table-cell head"}),he.map((Dt,_t)=>{const Ve=S+_t;return P.jsx(L3n,{row:Dt,index:Ve,columns:n,problems:Z,selected:A===Ve,keyPlaceholder:t.keyPlaceholder??"unnamed",onSetKey:(Xt,He)=>ie(Ve,Xt,He),onSetCell:(Xt,He,ze)=>ne(Ve,Xt,He,ze),onSelect:()=>L(A===Ve?null:Ve)},Ve)})]}),m.length===0&&P.jsx("p",{className:"eui-ds-table-empty",children:"No rows yet — add one to start."})]}),P.jsx(Rxe,{page:de,pageSize:c,onOffset:E}),Me!==null&&A!==null&&P.jsxs("div",{className:"eui-ds-table-detail",children:[P.jsx(Ire,{children:Me.key===""?`Row ${A+1}`:Me.key}),P.jsx(y7,{label:t.keyLabel??"row",children:P.jsx(Bh,{value:Me.key,"aria-label":"row name",placeholder:t.keyPlaceholder??"unnamed",onChange:Dt=>ie(A,Dt.target.value,!1),onBlur:Dt=>ie(A,Dt.target.value,!0)})}),n.map((Dt,_t)=>P.jsxs(y7,{label:Dt.name===""?`field ${_t+1}`:Dt.name,children:[P.jsx(SNt,{column:Dt,value:Me.cells[_t]??"",label:`${Dt.name} detail`,onSet:(Ve,Xt)=>ne(A,_t,Ve,Xt)}),Z.get(`${A}:${_t}`)!==void 0&&P.jsx("span",{className:"eui-ds-table-err",children:Z.get(`${A}:${_t}`)})]},_t)),P.jsxs("div",{className:"eui-ds-table-detail-foot",children:[P.jsx(_E,{label:"Delete row",confirm:"Delete this row?",onConfirm:()=>Ut(A)}),P.jsx(ps,{size:"xs",variant:"ghost",onClick:()=>L(null),children:"Close"})]})]})]})}function L3n(t){return P.jsxs(P.Fragment,{children:[P.jsx("div",{className:Sm("eui-ds-table-cell","key",t.selected&&"on"),children:P.jsx(Bh,{value:t.row.key,"aria-label":`row ${t.index+1} name`,placeholder:t.keyPlaceholder,onChange:n=>t.onSetKey(n.target.value,!1),onBlur:n=>t.onSetKey(n.target.value,!0)})}),t.columns.map((n,r)=>{const a=t.problems.get(`${t.index}:${r}`);return P.jsx("div",{className:Sm("eui-ds-table-cell",t.selected&&"on",a!==void 0&&"bad"),"data-tip":a,children:P.jsx(SNt,{column:n,value:t.row.cells[r]??"",label:`row ${t.index+1} ${n.name}`,onSet:(c,l)=>t.onSetCell(r,c,l)})},r)}),P.jsx("div",{className:Sm("eui-ds-table-cell","more",t.selected&&"on"),children:P.jsx(Lxe,{size:"sm",active:t.selected,tip:"Row details","aria-label":`row ${t.index+1} details`,onClick:t.onSelect,children:"⋯"})})]})}function ps(t){const{variant:n="default",size:r="sm",icon:a,active:c,tip:l,className:d,type:m="button",children:_,...S}=t,E=n==="default"||a===!0?Sm("eui-btn",n==="primary"&&"primary",a&&"icon",c&&"active",d):Sm("eui-ds-btn",n,r,d);return P.jsx("button",{type:m,className:E,"data-tip":l,"aria-label":a===!0?l:void 0,...S,children:_})}function xA(t){return P.jsx(ps,{icon:!0,...t})}function F0(t){const{className:n,tone:r,...a}=t;return P.jsx("button",{className:Sm("eui-link",r==="danger"&&"danger",r==="inline"&&"inline",n),...a})}function Lxe(t){const{variant:n="ghost",shape:r="square",size:a="md",active:c=!1,tip:l,className:d,type:m="button",..._}=t;return P.jsx("button",{type:m,className:Sm("eui-ds-ctl",n,r,a,c&&"active",d),"aria-pressed":c,"data-tip":l,"aria-label":r==="pill"?void 0:l,..._})}function D3(t){return P.jsx("div",{role:"group","aria-label":t["aria-label"],className:Sm("eui-seg",t.size==="lg"&&"lg",t.disabled===!0&&"off",t.className),children:t.options.map(n=>P.jsx("button",{type:"button","aria-pressed":t.value===n.value,disabled:t.disabled,className:Sm("eui-seg-btn",t.value===n.value&&"active"),onClick:()=>t.onChange(n.value),children:n.label},n.value))})}function DB(t){const n=t.size??"md",r=Sm("eui-ds-toggle",n==="sm"&&"sm",t.checked&&"on");return t.presentation===!0?P.jsx("span",{className:r,"aria-hidden":"true",children:P.jsx("span",{className:"knob"})}):P.jsx("button",{type:"button",role:"switch","aria-checked":t.checked,"aria-label":t["aria-label"],disabled:t.disabled,"data-tip":t.tip,className:r,onClick:()=>{var a;return(a=t.onChange)==null?void 0:a.call(t,!t.checked)},children:P.jsx("span",{className:"knob"})})}function Fxe(t){const[n,r]=Ct.useState(t.defaultChecked??!1),a=t.checked!==void 0,c=a?t.checked===!0:n,l=()=>{var d;a||r(!c),(d=t.onChange)==null||d.call(t,!c)};return P.jsxs("label",{className:"eui-ds-check",children:[P.jsx("input",{type:"checkbox",checked:c,disabled:t.disabled,"aria-label":t["aria-label"],onChange:l}),P.jsx("span",{className:Sm("box",c&&"checked"),children:c&&P.jsx("svg",{viewBox:"0 0 16 16",width:"12",height:"12","aria-hidden":"true",children:P.jsx("path",{d:"M3 8.5l3 3 7-7",fill:"none",stroke:"var(--accent)",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})}),P.jsx("span",{className:"label",children:t.children})]})}function Bh(t){const{className:n,size:r,...a}=t;return P.jsx("input",{className:Sm("eui-input",r,n),spellCheck:!1,...a})}function Pre(t){const{dirty:n,className:r,...a}=t;return P.jsx("input",{type:"number",className:Sm("eui-num",n&&"dirty",r),...a})}function oL(t,n,r){Ct.useEffect(()=>{if(!t)return;const a=c=>{n.current!==null&&!c.composedPath().includes(n.current)&&r()};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[t])}function iqe(t){const{label:n,open:r,onToggle:a,disabled:c=!1,variant:l="dark",density:d="default"}=t;return P.jsxs("button",{type:"button",ref:t.buttonRef,className:Sm("eui-ds-select-field",l==="light"&&"light",d==="compact"&&"compact",d==="row"&&"row",d==="large"&&"large"),disabled:c,"aria-label":t["aria-label"],"aria-haspopup":"listbox","aria-expanded":r,onClick:a,children:[P.jsx("span",{className:"value",children:n}),P.jsx("svg",{className:Sm("chev",r&&"open"),viewBox:"0 0 12 12","aria-hidden":"true",children:P.jsx("path",{d:"M2.5 4.5L6 8l3.5-3.5",stroke:"currentColor",strokeWidth:"1.6",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})]})}function Kx(t){const{options:n,onChange:r,disabled:a=!1,variant:c="dark"}=t,l=t.density??(t.compact===!0?"compact":"default"),d=t.value!==void 0,[m,_]=Ct.useState(t.defaultValue??""),S=d?t.value:m,[E,A]=Ct.useState(!1),[L,j]=Ct.useState(-1),z=Ct.useRef(null),Q=Ct.useRef(null),ne=Ct.useRef("sel"+Math.random().toString(36).slice(2,8)).current;oL(E,z,()=>A(!1)),Ct.useEffect(()=>{E&&j(Math.max(0,n.findIndex(de=>de.value===S)))},[E]);function ie(de){var K;d||_(de.value),r(de.value),A(!1),(K=Q.current)==null||K.focus()}function Z(de){var K;if(de.key==="Escape"){E&&(de.preventDefault(),A(!1),(K=Q.current)==null||K.focus());return}if(de.key==="Enter"||de.key===" "){de.preventDefault(),E?L>=0&&ie(n[L]):A(!0);return}if(de.key==="ArrowDown"||de.key==="ArrowUp"||de.key==="Home"||de.key==="End"){if(de.preventDefault(),!E){A(!0);return}de.key==="Home"?j(0):de.key==="End"?j(n.length-1):de.key==="ArrowDown"?j(Te=>Math.min(n.length-1,Te+1)):j(Te=>Math.max(0,Te-1))}}const he=n.find(de=>de.value===S);return P.jsxs("div",{className:Sm("eui-ds-select",l==="compact"&&"compact",l==="row"&&"row",t.className),ref:z,onKeyDown:Z,children:[P.jsx(iqe,{label:(he==null?void 0:he.label)??S,open:E,onToggle:()=>A(de=>!de),disabled:a,variant:c,density:l,buttonRef:Q,"aria-label":t["aria-label"]}),E&&P.jsx(vNt,{density:l==="compact"||l==="row"?"compact":"default",role:"listbox",children:n.map((de,K)=>P.jsxs("button",{type:"button",id:`${ne}-${K}`,role:"option","aria-selected":de.value===S,className:Sm("eui-ds-pop-row",(de.value===S||K===L)&&"active"),onMouseEnter:()=>j(K),onClick:()=>ie(de),children:[de.label,de.hint!==void 0&&P.jsx("span",{className:"hint",children:de.hint})]},de.value))})]})}function aqe(t){const{value:n,options:r,onChange:a,disabled:c=!1}=t,l=t.density??"default",[d,m]=Ct.useState(!1),_=Ct.useRef(null);oL(d,_,()=>m(!1));const S=r.filter(L=>n.includes(L.value)),E=t.summary??(L=>L.length===0?"none":L.length<=2?L.map(j=>j.label).join(", "):`${L.length} selected`);function A(L){a(n.includes(L.value)?n.filter(j=>j!==L.value):[...n,L.value])}return P.jsxs("div",{className:Sm("eui-ds-select",l==="compact"&&"compact",l==="row"&&"row",t.className),ref:_,children:[P.jsx(iqe,{label:E(S),open:d,onToggle:()=>m(L=>!L),disabled:c,density:l,"aria-label":t["aria-label"]}),d&&P.jsx(vNt,{density:l==="compact"||l==="row"?"compact":"default",role:"group",children:r.map(L=>{const j=n.includes(L.value);return P.jsxs("button",{type:"button",role:"checkbox","aria-checked":j,className:"eui-ds-pop-row",onClick:()=>A(L),children:[P.jsx(DB,{size:"sm",presentation:!0,checked:j}),L.label]},L.value)})})]})}function wNt(t){const{className:n,...r}=t;return P.jsx("textarea",{className:Sm("eui-raw",n),spellCheck:!1,...r})}function K6(t){const n=P.jsxs("label",{htmlFor:t.htmlFor,className:Sm("eui-ds-fieldlabel",t.className),children:[t.children,t.notice!==void 0&&P.jsx("sup",{className:"notice",children:t.notice})]});return t.sublabel===void 0?n:P.jsxs("span",{className:"eui-ds-fieldgroup",children:[n,P.jsx("span",{className:"sub",children:t.sublabel})]})}function DJ(t){const{value:n,defaultValue:r="",placeholder:a="Search",onChange:c}=t,[l,d]=Ct.useState(r),m=n!==void 0,_=m?n:l;return P.jsxs("label",{className:Sm("eui-ds-search",t.size==="lg"&&"lg",t.size==="sm"&&"sm",t.className),children:[P.jsxs("svg",{viewBox:"0 0 16 16",width:"15",height:"15","aria-hidden":"true",className:"icon",children:[P.jsx("circle",{cx:"7",cy:"7",r:"5",fill:"none",stroke:"currentColor",strokeWidth:"1.6"}),P.jsx("path",{d:"M11 11l3.5 3.5",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]}),P.jsx("input",{type:"text","aria-label":a,placeholder:a,value:_,autoFocus:t.autoFocus,onKeyDown:t.onKeyDown,onChange:S=>{m||d(S.target.value),c==null||c(S.target.value)}})]})}function Ire(t){return P.jsx("div",{className:"eui-group-label",children:t.children})}function QG(t){const[n,r]=Ct.useState(t.defaultOpen??!0),a=t.open??n,c=()=>{var l;t.open===void 0&&r(!a),(l=t.onToggle)==null||l.call(t)};return P.jsxs("div",{className:"eui-shelf",children:[P.jsxs("button",{className:"eui-shelf-head",onClick:c,children:[P.jsx("span",{className:Sm("caret",a&&"open"),children:P.jsx("svg",{width:"8",height:"8",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",children:P.jsx("path",{d:"M4 2.5L8.5 6L4 9.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),P.jsx("span",{className:"t",children:t.title}),t.count!==void 0&&P.jsx("span",{className:"n",children:t.count})]}),a&&t.note!==void 0&&P.jsx("p",{className:"eui-shelf-note",children:t.note}),a&&t.children]})}function y7(t){return P.jsxs("div",{className:"eui-prop",children:[P.jsx("span",{className:Sm("plabel",t.wrapLabel===!0&&"wrap"),children:t.label}),P.jsx("div",{className:"pvalue",children:t.children})]})}function xm(t){const n=t.sub;return P.jsxs("button",{className:Sm("eui-menu-item",t.danger&&"danger",n!==void 0&&n!==""&&"has-sub"),disabled:t.disabled,"data-tip":t.tip,onClick:t.onClick,children:[t.icon,n===void 0||n===""?t.children:P.jsxs("span",{className:"txt",children:[P.jsx("span",{className:"lbl",children:t.children}),P.jsx("span",{className:"sub",children:n})]}),t.hint!==void 0&&t.hint!==""&&P.jsx("span",{className:"hint",children:t.hint})]})}function sg(t){const{size:n="lg",color:r}=t,a=r!==void 0?{"--spinner-arc":r}:void 0;return P.jsx("span",{className:Sm("eui-ds-spinner",n),style:a,role:"status","aria-label":"Loading",children:P.jsxs("svg",{viewBox:"0 0 50 50",children:[P.jsx("circle",{className:"track",cx:"25",cy:"25",r:"20",fill:"none",strokeWidth:"5"}),P.jsx("circle",{className:"arc",cx:"25",cy:"25",r:"20",fill:"none",strokeWidth:"5",strokeLinecap:"round",strokeDasharray:"90 160"})]})})}function Nre(t){return P.jsx("div",{className:Sm("eui-toast",t.alert===!0&&"err"),role:t.alert===!0?"alert":"status",children:t.children})}function TNt(t){return P.jsxs("span",{className:Sm("eui-autosave",t.state),"data-tip":t.tip,role:t.role,children:[P.jsx("span",{className:"dot"}),t.children]})}function ha(t){return Ct.useSyncExternalStore(o2n,t)}const F3n=/^(-?\d+),(-?\d+)$/;function dB(t){if(t===null)return null;const n=F3n.exec(t);return n===null?null:{x:Number(n[1]),y:Number(n[2])}}function sqe(t){const n=dB(t.replace(/\s+/g,""));return n===null?null:`${n.x},${n.y}`}function kNt(){var t;return((t=q3())==null?void 0:t.services.worldsContent.replace(/\/+$/,""))??null}function jxe(t){var n,r;return((r=(n=q3())==null?void 0:n.services.signed)==null?void 0:r[t].replace(/\/+$/,""))??null}function RB(){const t=kNt();return t!==null?new URL(t).hostname.endsWith(".decentraland.zone"):G3("dcl-auth-env")==="zone"}function eS(){const t=kNt();return t!==null?t:RB()?"https://worlds-content-server.decentraland.zone":"https://worlds-content-server.decentraland.org"}function j3n(){return RB()?"https://places.decentraland.zone/api":"https://places.decentraland.org/api"}function B3n(){return RB()?"https://subgraph.decentraland.org/marketplace-sepolia":"https://subgraph.decentraland.org/marketplace"}function MB(){const t=jxe("commsGatekeeper");return t!==null?t:RB()?"https://comms-gatekeeper.decentraland.zone":"https://comms-gatekeeper.decentraland.org"}function U3n(){const t=jxe("storage");return t!==null?t:RB()?"https://storage.decentraland.zone":"https://storage.decentraland.org"}function $3n(t){return t==="zone"?"https://multiplayer-server.decentraland.zone":"https://multiplayer-server.decentraland.org"}function z3n(){const t=jxe("multiplayer");return t!==null?t:$3n(RB()?"zone":"org")}function V3n(){const t=jxe("creatorsData");return t!==null?t:"https://creators-data.decentraland.org/v2"}function ENt(){var t;return Hy()?((t=q3())==null?void 0:t.services.signed)===void 0||["localhost","127.0.0.1","[::1]"].includes(location.hostname):!1}function W3n(){return RB()?11155111:1}function oqe(t){const n=q3();if(n!==null){const r=t.toLowerCase(),a=eS(),c=/\.decentraland\.(org|zone)$/.test(new URL(a).hostname);return`${n.pageDir}?realm=${encodeURIComponent(c?r:`${a}/world/${r}`)}`}return`https://decentraland.org/bevy-web/?realm=${encodeURIComponent(t.toLowerCase())}`}var cqe={},CNt={},ZBe={exports:{}};/*! eth-connect {
6651
+ `,uDn=Object.assign({"../../../desktop/runtime-modules/asset-packs.d.ts":INn,"../../../desktop/runtime-modules/game.ts":NNn,"../../../desktop/runtime-modules/outcomes.ts":DNn,"../../../desktop/runtime-modules/playerPositions.ts":RNn,"../../../desktop/runtime-modules/playerStore.ts":MNn,"../../../desktop/runtime-modules/protectedSync.ts":LNn,"../../../desktop/runtime-modules/pure/countdown.ts":FNn,"../../../desktop/runtime-modules/pure/gameCore.ts":jNn,"../../../desktop/runtime-modules/pure/liveness.ts":BNn,"../../../desktop/runtime-modules/pure/membership.ts":UNn,"../../../desktop/runtime-modules/pure/normalize.ts":$Nn,"../../../desktop/runtime-modules/pure/outcomeLedger.ts":zNn,"../../../desktop/runtime-modules/pure/pending.ts":VNn,"../../../desktop/runtime-modules/pure/phase.ts":WNn,"../../../desktop/runtime-modules/pure/poolState.ts":qNn,"../../../desktop/runtime-modules/pure/protectedFields.ts":GNn,"../../../desktop/runtime-modules/pure/rng.ts":JNn,"../../../desktop/runtime-modules/pure/scriptInit.ts":HNn,"../../../desktop/runtime-modules/pure/serverStore.ts":QNn,"../../../desktop/runtime-modules/pure/spawnPlan.ts":YNn,"../../../desktop/runtime-modules/pure/spawnScatter.ts":XNn,"../../../desktop/runtime-modules/pure/time-math.ts":ZNn,"../../../desktop/runtime-modules/pure/worldTransform.ts":KNn,"../../../desktop/runtime-modules/pure/zoneRegistry.ts":eDn,"../../../desktop/runtime-modules/rng.ts":tDn,"../../../desktop/runtime-modules/rpc.ts":nDn,"../../../desktop/runtime-modules/schedule.ts":rDn,"../../../desktop/runtime-modules/serverLife.ts":iDn,"../../../desktop/runtime-modules/serverState.ts":aDn,"../../../desktop/runtime-modules/spawnPoints.ts":sDn,"../../../desktop/runtime-modules/spawner.ts":oDn,"../../../desktop/runtime-modules/timeSync.ts":cDn,"../../../desktop/runtime-modules/zoneBus.ts":lDn}),N1t="runtime-modules/",zIt={};for(const[t,n]of Object.entries(uDn)){const r=t.lastIndexOf(N1t);r<0||(zIt[t.slice(r+N1t.length)]=n)}function VIt(t){return zIt[t]??null}const Are="src/scripts/runtime",WIt="src/scripts/",fDn=/^custom\/[^/]+\/scripts\/.+\.tsx?$/,qIt="import { registerSpawnables } from './runtime/spawner'",dDn=WWe(qIt)[0],GIt="0";function Ane(){return{written:!1,attached:!1,vendored:[],problems:[],blocked:!1}}async function Mie(t){try{return await A_(t)}catch{return null}}function pDn(t,n){const r=[];for(const a of n.components)if(a.name===bp)for(const c of Object.values(a.data)){const l=js(c.json)?c.json.value:void 0;if(Array.isArray(l))for(const d of l){if(!js(d)||typeof d.path!="string")continue;const m={path:d.path};VM(m,t),r.includes(m.path)||r.push(m.path)}}return r}async function JIt(t){const n=[];for(const a of JG(t))try{const c=await TE(a);n.push({folder:a,data:c.data,composite:c.composite})}catch(c){au.warn("spawnables: prefab folder unreadable",a,c)}const r={};for(const a of n)for(const c of pDn(a.folder,a.composite)){if(c in r)continue;const l=await Mie(c);l!==null&&(r[c]=l)}return{prefabs:n,scripts:r}}function HIt(t){const n={},r=[...t];for(;r.length>0;){const a=r.shift();if(a in n)continue;const c=VIt(a);if(c!==null){n[a]=c;for(const l of Rie(c)){const d=LIt(a,l);d!==null&&!(d in n)&&r.push(d)}}}return n}function nbe(){return{vendored:[],shadowed:[]}}function Lie(t){const n=WIt.replace(/\/$/,"");return`Everything in ${Are}/ is written by the editor, so your own ${t} blocks the runtime module of that name — move your file into ${n} and update the imports that point at it.`}async function QIt(t,n,r){const a=await Mie(t);return a===null?r?(await Ew(t,n),"written"):"absent":a===n?"unchanged":cNn(a)?(await Ew(t,n),"written"):"shadowed"}const D1t=new Set;async function YIt(t,n){const r=[],a=[];for(const c of t){const l=`${Are}/${c}`,d=await QIt(l,n(c),!0);d==="written"?r.push(l):d==="shadowed"&&a.push(l)}for(const c of a)D1t.has(c)||(D1t.add(c),au.warn(Lie(c)));return{vendored:r,shadowed:a}}const R1t=new Set;async function mDn(t){const n=[];for(const r of t){if(!r.startsWith(`${Are}/`))continue;const a=VIt(r.slice(Are.length+1));a!==null&&await QIt(r,a,!1)==="written"&&n.push(r)}return n}async function hDn(t){const n=MPt()??"";if(R1t.has(n))return[];R1t.add(n);const r=await mDn(t);return r.length>0&&au.warn("runtime modules updated from this build",r),r}async function _Dn(t){if(t.includes(T1t)){const a=await Mie(T1t);if(a!==null&&a.includes(nIn))return nbe()}const n=HIt([dDn]),r=dNn(qIt,a=>n[a]??null);return await YIt(r,a=>n[a])}function gDn(t){return t.filter(n=>/\.tsx?$/.test(n)?n.startsWith(WIt)?!n.startsWith(`${Are}/`):fDn.test(n):!1)}async function yDn(t){const n=[];for(const r of gDn(t)){const a=await Mie(r);if(a!==null)for(const c of WWe(a))n.includes(c)||n.push(c)}return n}async function GWe(t){const n=await yDn(t);if(n.length===0)return nbe();const r=HIt(n);return await YIt(Object.keys(r).sort(),a=>r[a])}async function JWe(){if(FA()!==!0)return nbe();try{return await GWe(await Pw())}catch(t){return au.warn("vendoring the script runtime failed",t),nbe()}}function vDn(){return{path:bq,priority:iIn,layout:aIn}}function bDn(){var r;const t=(r=ht.snapshot[GIt])==null?void 0:r[bp],n=js(t)?t.value:void 0;return Array.isArray(n)?n.filter(js).map(a=>({path:typeof a.path=="string"?a.path:"",priority:typeof a.priority=="number"?a.priority:0,...typeof a.layout=="string"?{layout:a.layout}:{}})):[]}async function xDn(){const t=bDn(),n=vDn(),r=t.find(c=>c.path===bq);if(r!==void 0&&r.priority===n.priority&&r.layout===n.layout)return!1;const a=r===void 0?[...t,n]:t.map(c=>c.path===bq?n:c);return await Ad(GIt,bp,JSON.stringify({value:a})),!0}async function SDn(){if(FA()!==!0)return Ane();const t=await Pw(),n=await wDn(t),r=await GWe(t);return await hDn(t),r.vendored.length===0&&r.shadowed.length===0?n:{...n,vendored:[...n.vendored,...r.vendored],problems:[...new Set([...n.problems,...r.shadowed.map(Lie)])]}}async function wDn(t){const n=t.includes(bq);if(!n&&JG(t).length===0)return Ane();const{prefabs:r,scripts:a}=await JIt(t);if(await $It(r,t),!n&&r.length===0)return Ane();const c=bIn({prefabs:r,scripts:a,gameConfig:t.includes(rne)});if(c.blocking)return{...Ane(),problems:c.problems,blocked:!0};const l=await _Dn(t);let d=!1;await Mie(bq)!==c.text&&(await Ew(bq,c.text),d=!0);const m=await xDn();return{written:d,attached:m,vendored:l.vendored,problems:[...c.problems,...l.shadowed.map(Lie)],blocked:!1}}let rbe=null,Sge=null;function M1t(){const t=SDn().catch(n=>(au.warn("spawnables regeneration failed",n),{...Ane(),problems:[String(n)]})).finally(()=>{rbe=null});return rbe=t,t}function Cxe(){return rbe===null?M1t():(Sge===null&&(Sge=rbe.then(()=>(Sge=null,M1t()))),Sge)}zEn(()=>{(async()=>{try{const t=await Pw(),{prefabs:n}=await JIt(t);n.length>0&&await $It(n,t),await GWe(t)}catch(t){au.warn("open-time heal failed",t)}})()});const TDn=/\x1b?\[[0-9;]*m/g;function IJ(t){return t.replace(TDn,"")}let Kd=null;const $Be=new Set;function g7(t){Kd=t;for(const n of $Be)n()}function zBe(t){if((Kd==null?void 0:Kd.kind)==="build"){const n=Kd.lines;if(t.length<=n.length&&t.every((a,c)=>a===n[c]))return}g7({kind:"build",lines:t})}const XIt=/(?:^|[\s(/])((?:[\w.-]+\/)*[\w.-]+\.tsx?):(\d+)(?::(\d+))?/;function ZIt(t){for(const n of t.lines){const r=XIt.exec(n);if(r===null)continue;const a=r[1].replace(/^\.\//,"");if(!a.includes("node_modules"))return{path:a,line:Number(r[2]),column:r[3]===void 0?null:Number(r[3])}}return null}let K2=[],wM=!1,Axe=!1,Fie=!1;function kDn(){return Axe}function Oxe(){Axe=!0}function EDn(){Fie=!0}const CDn=4e3,ADn=3e4,L1t=200;function F1t(t){return new Promise(n=>setTimeout(n,t))}async function KIt(){const t=Date.now()+CDn,n=Date.now()+ADn;for(;Fie&&Date.now()<t;)await F1t(L1t);for(;wM&&Date.now()<n;)await F1t(L1t)}function HWe(){Axe=!1}function eNt(){K2=[],wM=!1,Axe=!1,Fie=!1,Kd!==null&&g7(null)}function ODn(t){return t.file===void 0?t.message:`${t.file}:${t.line??1}:${t.column??0}: ERROR: ${t.message}`}function PDn(t){var n,r;switch(t.type){case"sessionStarted":eNt();return;case"buildStarted":K2=[],wM=!0,Fie=!1,t.changed.some(a=>!a.endsWith(".composite"))&&Oxe();return;case"diagnostics":for(const a of t.diagnostics)a.severity==="error"&&K2.push(ODn(a));return;case"bundleSaved":wM=!1,(r=(n=q3())==null?void 0:n.previewChanged)==null||r.call(n),(Kd==null?void 0:Kd.kind)==="build"&&g7(null);return;case"failed":wM=!1,zBe(K2.length>0?K2.slice(-8):[t.message])}}function j1t(t){for(const n of t.split(/\r?\n/))IDn(n)}function IDn(t){const n=IJ(t).trim();if(/■ scene closed|▶ port \d+: starting/.test(n)){eNt();return}if(/File change detected|Starting compilation|rebuilding\.\.\.|Bundling file/.test(n)){K2=[],wM=!0,Fie=!1;const l=/^File (.+) changed,|Bundling file (\S+)/.exec(n),d=(l==null?void 0:l[1])??(l==null?void 0:l[2]);d!==void 0&&!d.endsWith(".composite")&&Oxe();return}if(/Bundle saved/.test(n)){wM=!1;return}if(/error TS\d+:|\[ERROR\]|:\d+:\d+: ERROR: /.test(n)){K2.includes(n)||(K2.push(n),(Kd==null?void 0:Kd.kind)==="build"&&zBe(K2.slice(-8)));return}const r=/Found (\d+) errors?\./.exec(n),a=/Build failed with \d+ errors?/.test(n);if(r!==null||a){wM=!1,(a?1:Number(r==null?void 0:r[1]))>0?zBe(K2.length>0?K2.slice(-8):[n]):(Kd==null?void 0:Kd.kind)==="build"&&g7(null);return}const c=/terminated with error: (.+)/.exec(n);if(c!==null){const l=(Kd==null?void 0:Kd.kind)==="build"?Kd.lines:K2,d=[c[1],...l.filter(_=>_!==c[1])];(Kd==null?void 0:Kd.kind)==="runtime"&&Kd.lines.length===d.length&&Kd.lines.every((_,S)=>_===d[S])||g7({kind:"runtime",lines:d});return}if((Kd==null?void 0:Kd.kind)==="runtime"&&Kd.lines.length<6&&/^\s*at\s/.test(n)&&XIt.test(n)){g7({kind:"runtime",lines:[...Kd.lines,n]});return}(Kd==null?void 0:Kd.kind)==="runtime"&&/Change detected for scene.*reloading/.test(n)&&g7(null)}let B1t=null;function QWe(){const t=window.editorShell;if(!(t===void 0||B1t===t)){if(B1t=t,t.onBuildEvent!==void 0){t.onBuildEvent(PDn);return}t.getState().then(n=>{for(const r of n.logs)j1t(r)}),t.onStackLog(j1t)}}function YWe(){return Ct.useSyncExternalStore(t=>(QWe(),$Be.add(t),()=>$Be.delete(t)),()=>Kd)}const tNt=t=>`eui:${t}`,NDn="dcl-editor-prefs",Ore="prefs",DDn=/^(eui:|dcl-editor[.:]|dcl-auth-env$|auth-server-provider-address$)/,U1t="__migrated-from-local-storage",xq=new Map;let $j=null,nNt=!1;const rNt=new Set;function VBe(t){return new Promise((n,r)=>{t.onsuccess=()=>n(t.result),t.onerror=()=>r(t.error)})}function RDn(){const t=indexedDB.open(NDn,1);return t.onupgradeneeded=()=>t.result.createObjectStore(Ore),VBe(t)}function iNt(t,n){if($j!==null)try{const r=$j.transaction(Ore,"readwrite").objectStore(Ore);n===null?r.delete(t):r.put(n,t)}catch{}}function MDn(){try{const t=[];for(let n=0;n<localStorage.length;n++){const r=localStorage.key(n),a=r===null?null:localStorage.getItem(r);r!==null&&a!==null&&DDn.test(r)&&t.push([r,a])}return t}catch{return[]}}async function LDn(){try{if(typeof indexedDB>"u")return;$j=await RDn();const t=$j.transaction(Ore,"readonly").objectStore(Ore),[n,r]=await Promise.all([VBe(t.getAllKeys()),VBe(t.getAll())]);if(n.forEach((a,c)=>{typeof a=="string"&&typeof r[c]=="string"&&xq.set(a,r[c])}),nNt=!0,!xq.has(U1t)){for(const[a,c]of MDn())xq.has(a)||N3(a,c);N3(U1t,"1")}}catch{$j=null}finally{for(const t of rNt)t()}}const aNt=LDn();function XWe(t){rNt.add(t)}function G3(t){if(nNt)return xq.get(t)??null;try{return localStorage.getItem(t)}catch{return null}}function N3(t,n){if(xq.set(t,n),$j!==null)return iNt(t,n);try{localStorage.setItem(t,n)}catch{}}function FDn(t){if(xq.delete(t),$j!==null)return iNt(t,null);try{localStorage.removeItem(t)}catch{}}function Pxe(t){return G3(tNt(t))}function ZWe(t,n){N3(tNt(t),n)}function sL(t,n){const r=Pxe(t);return r===null?n:r==="1"}function Ixe(t,n){ZWe(t,n?"1":"0")}function WBe(t,n){const[r,a]=Ct.useState(()=>sL(t,n));return[r,c=>{Ixe(t,c),a(c)}]}function One(t,n){const[r,a]=Ct.useState(()=>{const c=Number(Pxe(t));return Number.isFinite(c)&&c>0?c:n});return[r,c=>{ZWe(t,String(c)),a(c)}]}function jDn(t,n,r){const[a,c]=Ct.useState(()=>{const l=Pxe(t);return l!==null&&r(l)?l:n});return[a,l=>{ZWe(t,l),c(l)}]}const BDn=1200,$1t="assets/scene/main.composite";let ibe="off",sE=null,qBe=Promise.resolve(),UW=0,GBe=0;function UDn(){return ibe}function Sq(t){ibe!==t&&(ibe=t,z0())}function sNt(){return FA()===!0&&W0e()}async function z1t(){const t=await LPt();t&&LCn(async n=>(await Ew($1t,n),$1t)),Sq(t?"idle":"off")}const oNt="eui:play-edit-warned";function ave(){if(!ht.frozen){!ht.playEditWarn&&G3(oNt)!=="1"&&(ht.playEditWarn=!0);return}sNt()&&(Sq("dirty"),sE!==null&&clearTimeout(sE),sE=setTimeout(()=>{sE=null,cNt()},BDn))}function $Dn(t){ht.playEditWarn=!1,t&&N3(oNt,"1")}function zDn(){return sE!==null||UW>0}async function J3(){const t=sE!==null;if(sE!==null&&(clearTimeout(sE),sE=null),!t&&UW===0)return{pending:!1,ok:!0};const n=GBe;return t&&cNt(),await qBe,{pending:!0,ok:GBe===n}}async function VDn(){let t=!1;try{(await AIt()).written&&(t=!0)}catch(n){au.error("game-config generation failed",n)}try{const n=await Cxe();(n.written||n.vendored.length>0)&&(t=!0),n.blocked&&au.warn("spawn registry left as it was",n.problems)}catch(n){au.error("spawnables generation failed",n)}t&&Oxe()}function cNt(){UW++,Sq("saving"),qBe=qBe.then(async()=>{try{await nPt(),EDn(),sPt(),await VDn(),UW--,UW===0&&Sq("saved")}catch{GBe++,UW--,Sq("error")}})}function lNt(){sE!==null&&(clearTimeout(sE),sE=null),ibe==="dirty"&&Sq("idle")}var jie={},bA={};Object.defineProperty(bA,"__esModule",{value:!0});bA.localStorageClearIdentity=bA.localStorageStoreIdentity=bA.localStorageGetIdentity=void 0;bA.getIdentity=uNt;bA.storeIdentity=fNt;bA.clearIdentity=abe;function KWe(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error("User must be a valid ethereum address");return`single-sign-on-${t.toLowerCase()}`}function uNt(t){const n=localStorage.getItem(KWe(t));if(!n)return null;let r;try{r=JSON.parse(n)}catch{return abe(t),null}return r.expiration=new Date(r.expiration),r.expiration.getTime()<=Date.now()?(abe(t),null):r}function fNt(t,n){new Date(n.expiration).getTime()>Date.now()&&localStorage.setItem(KWe(t),JSON.stringify(n))}function abe(t){localStorage.removeItem(KWe(t))}bA.localStorageGetIdentity=uNt;bA.localStorageStoreIdentity=fNt;bA.localStorageClearIdentity=abe;(function(t){var n=Zi&&Zi.__createBinding||(Object.create?function(a,c,l,d){d===void 0&&(d=l);var m=Object.getOwnPropertyDescriptor(c,l);(!m||("get"in m?!c.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return c[l]}}),Object.defineProperty(a,d,m)}:function(a,c,l,d){d===void 0&&(d=l),a[d]=c[l]}),r=Zi&&Zi.__exportStar||function(a,c){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(c,l)&&n(c,a,l)};Object.defineProperty(t,"__esModule",{value:!0}),r(bA,t)})(jie);const eqe="auth-server-provider-address",WDn="creator-hub",V1t={prod:{server:"https://auth-api.decentraland.org",dapp:"https://decentraland.org/auth"},zone:{server:"https://auth-api.decentraland.zone",dapp:"https://decentraland.zone/auth"}};function dNt(){return G3("dcl-auth-env")==="zone"?V1t.zone:V1t.prod}class s3 extends Error{constructor(n,r){super(r),this.reason=n,this.name="SignInError"}}function qDn(t,n){const r=new URLSearchParams({targetConfigId:WDn,flow:"deeplink",authRequestId:n});return`${dNt().dapp}/requests/${encodeURIComponent(t)}?${r.toString()}`}const GDn=/^0x[a-f0-9]{40}$/;async function JDn(t){var c,l;const n=await fetch(`${dNt().server}/identities/${encodeURIComponent(t)}`);if(n.status===404)throw new s3("not_found","Sign-in identity not found");if(n.status===410)throw new s3("expired","The sign-in expired — try again");if(n.status===403)throw new s3("network","Sign-in network mismatch");if(!n.ok)throw new s3("unknown",`Failed to fetch the identity (${n.status})`);const{identity:r}=await n.json(),a=(l=(c=r==null?void 0:r.authChain)==null?void 0:c[0])==null?void 0:l.payload;if(typeof a!="string"||!GDn.test(a.toLowerCase()))throw new s3("unknown","Malformed identity response");return{identity:r,signer:a.toLowerCase()}}async function HDn(t){const{identity:n,signer:r}=await JDn(t);return jie.localStorageStoreIdentity(r,n),N3(eqe,r),r}let ck=null;function tqe(){const t=ck==null?void 0:ck();return t===void 0||t.isGuest||t.address===null?null:t.address.toLowerCase()}function pNt(t){ck=t,mNt()}function mNt(){if(ck===null)return;const t=tqe();t!==HG.wallet&&ZP({wallet:t,profile:null,phase:"idle",error:null,errorReason:null})}function H3(){return ck!==null?tqe():G3(eqe)}function Nxe(){if(ck!==null)return!1;const t=H3();if(t===null)return!1;try{const n=jie.localStorageGetIdentity(t);return n!=null}catch{return!1}}function nqe(){return ck!==null?tqe()!==null:Nxe()}function hNt(){if(ck!==null)return null;const t=H3();if(t===null)return null;try{return jie.localStorageGetIdentity(t)??null}catch{return null}}function QDn(){if(ck!==null)return;const t=H3();if(t!==null)try{jie.localStorageClearIdentity(t)}catch{}FDn(eqe)}const YDn=15*60*1e3;let HG={wallet:Nxe()?H3():null,profile:null,phase:"idle",error:null,errorReason:null};const JBe=new Set;function ZP(t){HG={...HG,...t};for(const n of JBe)n()}let hFe=!1,Pne=null,Ine=null;async function _Nt(t){const n=await i3n(t);HG.wallet===t&&ZP({profile:n})}function XDn(){if(hFe||ck!==null)return;const t=window.editorShell;if((t==null?void 0:t.openExternal)===void 0||t.onSignIn===void 0){ZP({phase:"error",error:"Sign-in needs the desktop app",errorReason:"unknown"});return}hFe=!0,Ine=null,ZP({phase:"opening",error:null,errorReason:null});const n=crypto.randomUUID();let r=!1;const a=_=>{r||(r=!0,d(),clearTimeout(m),Pne=null,hFe=!1,"signer"in _?(ZP({wallet:_.signer,phase:"idle",error:null,errorReason:null}),_Nt(_.signer)):_.error.reason==="cancelled"?ZP({phase:"idle",error:null,errorReason:null}):ZP({phase:"error",error:_.error.message,errorReason:_.error.reason}))},c=_=>_ instanceof s3?_:new s3("unknown",_ instanceof Error?_.message:String(_)),l=crypto.randomUUID(),d=t.onSignIn(({identityId:_,authRequestId:S})=>{if(S!==null&&S!==n&&S!==l){console.warn(`[auth] ignoring sign-in callback for another request (got ${S}, waiting for ${n} or ${l})`);return}HDn(_).then(E=>a({signer:E})).catch(E=>a({error:c(E)}))}),m=setTimeout(()=>a({error:new s3("expired","Sign-in timed out — try again")}),YDn);Pne=()=>a({error:new s3("cancelled","Sign-in cancelled")}),Ine=qDn(l,n),ZP({phase:"waiting"}),t.openExternal(Ine).catch(_=>a({error:c(_)}))}function ZDn(){Pne==null||Pne()}function KDn(){var t,n;Ine!==null&&((n=(t=window.editorShell)==null?void 0:t.openExternal)==null||n.call(t,Ine))}function e3n(){HG.phase==="error"&&ZP({phase:"idle",error:null,errorReason:null})}function t3n(t){var n,r;return((r=(n=window.editorShell)==null?void 0:n.submitSignInLink)==null?void 0:r.call(n,t.trim()))??Promise.resolve(!1)}function n3n(){ck===null&&(QDn(),ZP({wallet:null,profile:null,phase:"idle",error:null,errorReason:null}))}const r3n="https://peer.decentraland.org";async function i3n(t){var n,r,a;try{const c=await fetch(`${r3n}/lambdas/profiles/${t}`);if(!c.ok)return null;const d=(n=(await c.json()).avatars)==null?void 0:n[0];return d===void 0?null:{name:d.name??"",hasClaimedName:d.hasClaimedName===!0,face256:((a=(r=d.avatar)==null?void 0:r.snapshots)==null?void 0:a.face256)??null}}catch{return null}}function NJ(){var r;const t=Ct.useSyncExternalStore(a=>(JBe.add(a),()=>JBe.delete(a)),()=>HG);Ct.useEffect(()=>{t.wallet!==null&&t.profile===null&&_Nt(t.wallet)},[t.wallet,t.profile]);const n=ck!==null;return Ct.useEffect(()=>{if(!n)return;const a=setInterval(mNt,3e3);return()=>clearInterval(a)},[n]),{wallet:t.wallet,profile:t.profile,phase:t.phase,signingIn:t.phase==="opening"||t.phase==="waiting",error:t.error,errorReason:t.errorReason,signIn:XDn,signOut:n3n,cancel:ZDn,reopen:KDn,dismissError:e3n,external:n,isDev:((r=window.editorShell)==null?void 0:r.isDev)===!0,submitLink:t3n}}const a3n=["init","set-tool","set-flags","spawn-points","set-selection","set-camera","set-frozen","focus","frame","refresh","pointer-up","pick-at-pointer","fly-speed","resync","component-written","component-deleted","entity-deleted","rpc","pointer-space","scene-ready","scene-found","selection","drag-start","drag-update","drag-end","tool","rpc-reply","hover","cursor-lock","zones","boot-trace"],s3n=["storage.decentraland.org","storage.decentraland.zone","creators-data.decentraland.org"];function gNt(t){return`(copy, ${t.toLocaleString(void 0,{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})})`}const yNt=30,W1t=256*1024,q1t=2*1024*1024,o3n=/^[a-zA-Z0-9-]{1,80}$/,c3n="dcl-assistant-v1",l3n="dcl-ticket.";function hy(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function HBe(t){return t.length===0||t.length>512||/[\\\x00-\x1f\x7f:]/.test(t)||t.split("/").some(r=>r===""||r===".."||r.startsWith(".")||r==="node_modules"||r==="bin")?!1:/\.(ts|tsx|js|jsx|json|md|txt)$/i.test(t)}function u3n(t){return HBe(t)&&/^src\//.test(t)&&/\.(ts|tsx|js|jsx)$/.test(t)&&!t.split("/").includes("runtime")}function Sm(...t){return t.filter(Boolean).join(" ")}const f3n=".eui-ds-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:var(--z-overlay);margin:0;padding:6px;list-style:none;background:var(--panel);border:1px solid var(--divider);border-radius:var(--r-card);box-shadow:var(--shadow-panel);max-height:260px;overflow-y:auto;scrollbar-width:thin;animation:eui-pop var(--dur-fast) var(--ease-out)}.eui-ds-pop[data-density=compact]{padding:4px;max-height:220px}.eui-ds-pop-row{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;border-radius:var(--r-control);background:transparent;color:var(--ink-7);font-family:inherit;font-size:13px;text-align:left;cursor:pointer}.eui-ds-pop-row .hint{margin-left:auto;padding-left:10px;flex:none;color:var(--text-3);font-size:.85em}.eui-ds-pop-row:hover{background:var(--white-10);color:var(--text)}.eui-ds-pop-row.active{background:var(--fill-3);color:var(--text)}.eui-ds-pop[data-density=compact] .eui-ds-pop-row{padding:5px 8px;font-size:11px}",G1t={tokens:0,base:1,primitives:2,features:3,app:4},QBe=new Map;let d3n=0;function $d(t,n,r){var a;QBe.set(t,{layer:n,css:r,seq:((a=QBe.get(t))==null?void 0:a.seq)??d3n++})}function p3n(){return[...QBe.values()].sort((t,n)=>G1t[t.layer]-G1t[n.layer]||t.seq-n.seq).map(t=>t.css).join("")}$d("ds/Popover","primitives",f3n);function vNt(t){const n=t.density??"default";return P.jsx("div",{className:["eui-ds-pop",t.className].filter(Boolean).join(" "),"data-density":n==="compact"?"compact":void 0,role:t.role,children:t.children})}function ep(t){return{"aria-label":t,"data-tip":t}}function kE(t,n){const[r,a]=Ct.useState(void 0),[c,l]=Ct.useState(null),[d,m]=Ct.useState(0);return Ct.useEffect(()=>{let _=!0;return a(void 0),l(null),t().then(S=>_&&a(S),S=>_&&l(S instanceof Error?S.message:String(S))),()=>{_=!1}},[...n,d]),{data:r,err:c,reload:()=>m(_=>_+1)}}function Dxe(t,n,r,a=50){Ct.useEffect(()=>{t!==void 0&&t.items.length===0&&t.total>0&&n>0&&r(Math.max(0,Math.floor((t.total-1)/a)*a))},[t])}function Rxe(t){const n=t.page,r=t.pageSize??50;if(n===void 0||n.total<=r)return null;const a=n.offset+1,c=n.offset+n.items.length;return P.jsxs("div",{className:"eui-pager",children:[P.jsx("button",{className:"eui-link",disabled:n.offset===0,onClick:()=>t.onOffset(Math.max(0,n.offset-r)),children:"‹ Prev"}),P.jsxs("span",{className:"rng",children:[a,"–",c," of ",n.total]}),P.jsx("button",{className:"eui-link",disabled:c>=n.total,onClick:()=>t.onOffset(n.offset+r),children:"Next ›"})]})}function _E(t){const[n,r]=Ct.useState(!1);return Ct.useEffect(()=>{if(!n)return;const a=setTimeout(()=>r(!1),3e3);return()=>clearTimeout(a)},[n]),P.jsx(ps,{variant:n?"danger":"ghost",size:"sm",disabled:t.disabled,onClick:()=>{n?(r(!1),t.onConfirm()):r(!0)},children:n?t.confirm??"Sure?":t.label})}function YBe(t,n){var r;(r=navigator.clipboard)==null||r.writeText(t).then(n)}function XBe(t){const[n,r]=Ct.useState(!1),[a,c]=Ct.useState(!1),l=t.secret===!0&&!n,d=()=>{var m;(m=navigator.clipboard)==null||m.writeText(t.value).then(()=>{c(!0),setTimeout(()=>c(!1),1400)})};return P.jsxs("div",{className:"eui-copyfield",children:[P.jsx("span",{className:"k",children:t.label}),P.jsx("span",{className:"v",children:l?"••••••••••••••••":t.value}),t.secret===!0&&P.jsx(ps,{variant:"ghost",size:"sm",onClick:()=>r(m=>!m),children:n?"Hide":"Reveal"}),P.jsx(ps,{variant:"ghost",size:"sm",onClick:d,children:a?"Copied ✓":"Copy"})]})}function Q3(t){return t.err!==null?P.jsxs("p",{className:"eui-world-hint",children:[t.err," ",P.jsx("button",{className:"eui-link",onClick:t.onRetry,children:"Retry"})]}):t.loading?P.jsxs("div",{className:"eui-world-hint",children:[P.jsx(sg,{size:"sm"})," Loading…"]}):null}const m3n=".eui-ds-state{display:flex;flex-direction:column;align-items:stretch;gap:10px;text-align:center;padding:10px 0}.eui-ds-state-icon{width:46px;height:46px;border-radius:50%;flex:none;margin:0 auto 4px;display:flex;align-items:center;justify-content:center;background:var(--primary-selected);color:var(--primary);font-size:20px}.eui-ds-state-icon.success{background:#44b60024;color:var(--success)}.eui-ds-state-icon.error{background:var(--error-hover);color:var(--error);font-weight:800}.eui-ds-state-t{font-size:var(--fs-lg);font-weight:700;margin:0}.eui-ds-state-note{font-size:var(--fs-sm);color:var(--text-3);margin:0 auto;line-height:1.5;max-width:360px}.eui-ds-state.start{text-align:left;padding:0}.eui-ds-state.start .eui-ds-state-icon{margin-left:0}.eui-ds-state.start .eui-ds-state-note{max-width:none;margin:0}";$d("ds/StateBlock","primitives",m3n);function h3n(t){const n=t.tone??"neutral",r=["eui-ds-state",t.align==="start"?"start":""].filter(Boolean).join(" "),a=["eui-ds-state-icon",n==="neutral"?"":n].filter(Boolean).join(" ");return P.jsxs("div",{className:r,children:[t.icon!==void 0&&P.jsx("div",{className:a,children:t.icon}),P.jsx("p",{className:"eui-ds-state-t",children:t.headline}),t.note!==void 0&&P.jsx("p",{className:"eui-ds-state-note",children:t.note}),t.children]})}const _3n=".eui-modal-x{border:0;background:none;color:var(--text-3);cursor:pointer;font-size:13px;padding:4px 6px;border-radius:var(--r-control)}.eui-modal-x:hover{color:var(--text);background:var(--paper-hi)}.eui-modal{outline:none}.eui-modal-body{-webkit-user-select:text;user-select:text}.eui-modal-body>*{min-width:0;overflow-wrap:break-word}.eui-modal-body code{overflow-wrap:anywhere;-webkit-user-drag:none}",g3n='a[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';function bNt(t){return[...t.querySelectorAll(g3n)].filter(n=>n.closest("[hidden], [inert]")===null)}function y3n(t,n){if(t.key!=="Tab")return;const r=bNt(n),c=n.getRootNode().activeElement;if(r.length===0){t.preventDefault(),n.focus();return}const l=r[0],d=r[r.length-1];t.shiftKey&&(c===l||c===n)?(t.preventDefault(),d.focus()):!t.shiftKey&&c===d&&(t.preventDefault(),l.focus())}$d("ds/Modal","primitives",_3n);function Bp(t){const{onClose:n}=t,r=Ct.useRef(null);Ct.useEffect(()=>{const _=r.current,S=_==null?void 0:_.getRootNode(),E=S==null?void 0:S.activeElement;return _==null||_.focus(),()=>{E instanceof HTMLElement&&E.isConnected&&E.focus()}},[]);const a=Ct.useId(),c=Ct.useRef(n);c.current=n,Ct.useEffect(()=>{const _=S=>{S.key!=="Escape"||c.current===void 0||(S.stopPropagation(),c.current())};return window.addEventListener("keydown",_,!0),()=>window.removeEventListener("keydown",_,!0)},[]);const l=Ct.useRef(!1),d=n!==void 0&&t.scrimClose!==!1,m=()=>{l.current&&(n==null||n())};return P.jsx("div",{className:"eui-modal-backdrop",onMouseDown:_=>{l.current=_.target===_.currentTarget},onClick:d?m:void 0,children:P.jsxs("div",{ref:r,tabIndex:-1,role:"dialog","aria-modal":"true","aria-labelledby":t.title!==void 0?a:void 0,className:Sm("eui-modal",t.size,t.className),onClick:_=>_.stopPropagation(),onKeyDown:_=>{r.current!==null&&y3n(_,r.current)},children:[t.title!==void 0&&P.jsxs("div",{className:"eui-modal-head",children:[P.jsx("span",{id:a,style:{display:"contents"},children:t.title}),t.closeX===!0&&P.jsxs(P.Fragment,{children:[P.jsx("span",{style:{flex:1}}),P.jsx("button",{className:"eui-modal-x","data-tip":t.closeTip,"aria-label":t.closeTip??"Close",onClick:t.onClose,children:"✕"})]})]}),P.jsx("div",{className:Sm("eui-modal-body",t.bodyClassName),children:t.children}),t.footer!==void 0&&P.jsx("div",{className:"eui-modal-foot",children:t.footer})]})})}const v3n=".eui-ds-chip{font:600 10px/1 var(--font-family);letter-spacing:.04em;color:var(--text-2);background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-pill);padding:4px 8px;flex:none;max-width:100%}.eui-ds-chip.live{color:var(--success);border-color:var(--success)}.eui-ds-chip.soon{color:var(--text-3);border-style:dashed}.eui-ds-chip.primary{color:var(--text);border-color:var(--primary-border);background:var(--primary-selected);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.eui-ds-chip.danger{color:var(--error);border-color:currentColor}.eui-ds-chip.info{color:var(--lavender);border-color:#c640cd80;background:#c640cd24}.eui-ds-chip.server{color:var(--success);border-color:#44b60080;background:#44b6001f}.eui-ds-chip.client{color:var(--client-blue);border-color:#4ea3ff80;background:#4ea3ff1f}.eui-ds-chip.xs{font-size:9.5px;font-weight:700;letter-spacing:.06em;line-height:1;padding:3px 7px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;max-width:100%}.eui-ds-chip .txt{min-width:0;overflow:hidden;text-overflow:ellipsis}.eui-ds-chip .ico{display:inline-flex;flex:none}.eui-ds-chip.xs .ico svg{width:9px;height:9px}";$d("ds/Chip","primitives",v3n);function U0(t){const n=t.tone??"default",r=t.size??"md",a=["eui-ds-chip",n==="default"?"":n,r==="xs"?"xs":""].filter(Boolean).join(" ");return P.jsxs("span",{className:a,"data-tip":t.tip,children:[t.icon!==void 0&&P.jsx("span",{className:"ico",children:t.icon}),P.jsx("span",{className:"txt",children:t.children})]})}const b3n=".eui-ds-map{display:flex;flex-direction:column;gap:3px;padding:10px;background:var(--input);border:1px solid var(--divider-soft);border-radius:10px;max-width:100%;overflow:auto}.eui-ds-map .eui-ds-map-row{display:flex;gap:3px}.eui-ds-map .eui-ds-map-cell{width:var(--map-cell, 22px);height:var(--map-cell, 22px);flex:none;border-radius:min(4px,calc(var(--map-cell, 22px) / 4));border:1px solid var(--divider);background:none;padding:0}.eui-ds-map .eui-ds-map-cell.act{cursor:pointer}.eui-ds-map .eui-ds-map-cell.act:hover{border-color:var(--primary-border)}.eui-ds-map .eui-ds-map-cell.on{background:var(--map-tone);border-color:var(--map-tone-line)}.eui-ds-map .eui-ds-map-cell.base{box-shadow:inset 0 0 0 2px var(--map-tone-line)}.eui-ds-map .eui-ds-map-cell.lit{border-color:var(--text)}.eui-ds-map .eui-ds-map-cell.dim{opacity:.45}.eui-ds-map .eui-ds-map-gap{flex:none;width:var(--map-cell, 22px);height:var(--map-cell, 22px);border-radius:3px;background:repeating-linear-gradient(135deg,var(--divider-soft) 0 3px,transparent 3px 6px)}.eui-ds-map .eui-ds-map-gap.rowgap{width:auto;align-self:stretch;height:10px}.eui-ds-map:focus-visible,.eui-ds-map .eui-ds-map-cell:focus-visible{outline:2px solid var(--primary-border);outline-offset:1px}",x3n=3;function J1t(t,n=x3n){if(t.length===0)return[];const r=new Set(t),a=Math.min(...t)-1,c=Math.max(...t)+1,l=[];let d=[];const m=()=>{if(d.length!==0){if(d.length>=n)l.push({kind:"gap",span:d.length});else for(const _ of d)l.push({kind:"coord",at:_});d=[]}};for(let _=a;_<=c;_++)r.has(_)?(m(),l.push({kind:"coord",at:_})):d.push(_);return m(),l}function S3n(t){const n=[],r=[];for(const a of t){const[c,l]=a.split(",").map(Number);Number.isFinite(c)&&Number.isFinite(l)&&(n.push(c),r.push(l))}return{cols:J1t(n),rows:J1t(r).reverse()}}$d("ds/ParcelMap","primitives",b3n);const wge=[222,158,28,288,190,344],w3n={mine:{"--map-tone":"var(--primary-selected)","--map-tone-line":"var(--primary)"},replaced:{"--map-tone":"var(--error-hover)","--map-tone-line":"var(--error)"},staying:{"--map-tone":"var(--divider)","--map-tone-line":"var(--text-3)"}};function Nne(t){if(typeof t=="string")return w3n[t];const n=wge[(t%wge.length+wge.length)%wge.length];return{"--map-tone":`hsl(${n} 55% 52% / .5)`,"--map-tone-line":`hsl(${n} 62% 58%)`}}function T3n(t,n,r){if(r===void 0)return n;const a=Math.floor(r.width/(t.cols.length+1))-3,c=Math.floor(r.height/(t.rows.length+1))-3;return Math.max(3,Math.min(n,a,c))}function Mxe(t){const{regions:n,selected:r=null,onSelect:a,onContext:c,onToggle:l}=t,d=Ct.useMemo(()=>{const S=new Map;for(const E of n)for(const A of E.parcels)S.set(A,E);return S},[n]),m=Ct.useMemo(()=>S3n(n.flatMap(S=>S.parcels)),[n]),_={"--map-cell":`${T3n(m,t.cell??22,t.fit)}px`};return P.jsx("div",{className:"eui-ds-map",style:_,children:m.rows.map((S,E)=>S.kind==="gap"?P.jsx("div",{className:"eui-ds-map-gap rowgap","data-tip":`${S.span} empty rows`},`g${E}`):P.jsx("div",{className:"eui-ds-map-row",children:m.cols.map((A,L)=>{if(A.kind==="gap")return P.jsx("div",{className:"eui-ds-map-gap","data-tip":`${A.span} empty columns`},`g${L}`);const j=`${A.at},${S.at}`,z=d.get(j)??null,Q=r!==null&&z!==null&&z.key!==r,ne=r!==null&&z!==null&&z.key===r,ie=["eui-ds-map-cell",z!==null?"on":"",z!==null&&z.base===j?"base":"",ne?"lit":"",Q?"dim":"",l!==void 0||z!==null?"act":""].filter(Boolean).join(" "),Z=z!==null?`${z.label} · ${j}`:j,he=z!==null?Nne(z.tone):void 0;return l===void 0&&z===null?P.jsx("div",{className:ie,"data-tip":Z},j):P.jsx("button",{type:"button",className:ie,style:he,"data-tip":Z,"aria-label":Z,onClick:()=>{l!==void 0?l(j):z!==null&&a!==void 0&&a(z.key)},onContextMenu:de=>{z===null||c===void 0||(de.preventDefault(),c(z.key,de))}},j)})},S.at))})}const k3n=".eui-ds-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--space-2);max-height:320px;overflow-y:auto}.eui-ds-pick{display:flex;align-items:center;gap:10px;width:100%;padding:var(--space-2);cursor:pointer;text-align:left;font:inherit;color:var(--text);background:var(--paper);border:1px solid var(--divider-soft);border-radius:var(--r-control)}.eui-ds-pick:hover:not([disabled]){border-color:var(--primary-border)}.eui-ds-pick[aria-pressed=true],.eui-ds-pick.on{border-color:var(--primary);background:var(--primary-selected)}.eui-ds-pick[disabled]{opacity:.55;cursor:default}.eui-ds-pick img,.eui-ds-pick .ph{width:40px;height:28px;border-radius:5px;object-fit:cover;background:var(--input);display:flex;align-items:center;justify-content:center;color:var(--text-3);flex:none}.eui-ds-pick .meta{display:flex;flex-direction:column;gap:1px;min-width:0}.eui-ds-pick .nm{font-weight:600;font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-ds-pick .num{font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums}.eui-ds-pick .box{flex:none}";$d("ds/CardPicker","primitives",k3n);function xNt(t){const n=t.mode==="many",r=new Set(t.selected);return P.jsx("div",{className:"eui-ds-picks",role:"group","aria-label":t.ariaLabel,children:t.items.map(a=>{const c=r.has(a.key),l=a.disabledReason??null,d=a.image??null,m=a.note??null,_=l??a.tip,S=P.jsxs(P.Fragment,{children:[d===null?P.jsx("span",{className:"ph",children:"⛶"}):P.jsx("img",{src:d,alt:"",crossOrigin:"anonymous",loading:"lazy"}),P.jsxs("span",{className:"meta",children:[P.jsx("span",{className:"nm",children:a.label}),m!==null&&P.jsx("span",{className:"num",children:m})]})]});return n?P.jsxs("label",{className:`eui-ds-pick${c?" on":""}`,"data-tip":_,children:[P.jsx("span",{className:"box",children:P.jsx(Fxe,{checked:c,disabled:l!==null,onChange:()=>t.onSelect(a.key)})}),S]},a.key):P.jsx("button",{type:"button",className:"eui-ds-pick","aria-pressed":c,disabled:l!==null,"data-tip":_,onClick:()=>t.onSelect(a.key),children:S},a.key)})})}const E3n=".eui-ds-notice{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-2) var(--space-3) var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--r-control);background:var(--fill-1);border:1px solid var(--divider-soft);color:var(--text-2);font-size:11.5px;line-height:1.5}.eui-ds-notice.attention{background:#ff743a1a;border-color:#ff743a6b;color:var(--text)}.eui-ds-notice.attention strong{color:var(--accent);font-weight:600}.eui-ds-notice>.body{flex:1;min-width:0}.eui-ds-notice>.x{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;margin:-1px -4px 0 0;border:none;background:none;cursor:pointer;border-radius:var(--r-control);color:var(--text-3);font-size:11px;line-height:1}.eui-ds-notice>.x:hover{color:var(--text);background:var(--hover)}";$d("ds/Notice","primitives",E3n);function u3(t){const n=t.tone??"info";return P.jsxs("div",{className:`eui-ds-notice${n==="info"?"":` ${n}`}`,children:[P.jsx("div",{className:"body",children:t.children}),t.onDismiss!==void 0&&P.jsx("button",{className:"x",...ep(t.dismissTip??"Dismiss"),onClick:t.onDismiss,children:"✕"})]})}const Tge=8;function rqe(t){const n=Ct.useRef(null),[r,a]=Ct.useState({left:t.x,top:t.y});return oL(!0,n,t.onClose),Ct.useEffect(()=>{const c=l=>{l.key==="Escape"&&(l.stopPropagation(),t.onClose())};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[t.onClose]),Ct.useLayoutEffect(()=>{const c=n.current;if(c===null)return;const{width:l,height:d}=c.getBoundingClientRect();a({left:Math.max(Tge,Math.min(t.x,window.innerWidth-l-Tge)),top:Math.max(Tge,Math.min(t.y,window.innerHeight-d-Tge))})},[t.x,t.y]),P.jsx("div",{ref:n,className:t.className===void 0?"eui-ctx":`eui-ctx ${t.className}`,style:{left:r.left,top:r.top},role:"menu",children:t.children})}const C3n='.eui-ds-splitter{position:relative;flex:none;height:20px;margin:-10px 0;z-index:6;cursor:ns-resize;pointer-events:auto;outline:none;touch-action:none}.eui-ds-splitter:after{content:"";position:absolute;left:50%;top:50%;width:36px;height:3px;transform:translate(-50%,-50%);border-radius:3px;background:var(--divider);transition:background var(--dur-fast),width var(--dur-fast)}.eui-ds-splitter:hover:after,.eui-ds-splitter:focus-visible:after,.eui-ds-splitter[data-dragging]:after{width:100%;background:var(--primary)}';$d("ds/Splitter","primitives",C3n);const A3n=16,O3n=64;function P3n(t){const{value:n,min:r,max:a,onChange:c}=t,l=_=>Math.round(Math.max(r,Math.min(a,_))),d=_=>{_.preventDefault();const S=_.currentTarget,E=_.clientY;S.setPointerCapture(_.pointerId),S.dataset.dragging="";const A=j=>c(l(n+(E-j.clientY))),L=()=>{S.releasePointerCapture(_.pointerId),delete S.dataset.dragging,S.removeEventListener("pointermove",A),S.removeEventListener("pointerup",L),S.removeEventListener("pointercancel",L)};S.addEventListener("pointermove",A),S.addEventListener("pointerup",L),S.addEventListener("pointercancel",L)},m=_=>{const S=_.shiftKey?O3n:A3n,E=_.key==="ArrowUp"?n+S:_.key==="ArrowDown"?n-S:_.key==="Home"?a:_.key==="End"?r:null;E!==null&&(_.preventDefault(),c(l(E)))};return P.jsx("div",{className:"eui-ds-splitter",role:"separator","aria-orientation":"horizontal","aria-label":t.label,"aria-valuenow":n,"aria-valuemin":r,"aria-valuemax":a,tabIndex:0,"data-tip":`${t.label} — drag, or focus and use ↑ ↓`,onPointerDown:d,onKeyDown:m})}const I3n=".eui-ds-table{display:flex;flex-direction:column;gap:var(--space-1);margin:0 0 var(--space-3);border:1px solid var(--divider);border-radius:var(--r-control);background:var(--fill-1);overflow:hidden}.eui-ds-table-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--divider-soft)}.eui-ds-table-head>*{flex:none}.eui-ds-table-head>.t{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;color:var(--text)}.eui-ds-table-head>.n{font-size:10px;color:var(--text-3);font-variant-numeric:tabular-nums}.eui-ds-table-head>.sp{flex:1}.eui-ds-table-note{margin:0 var(--space-2) var(--space-1);color:var(--text-3);font-size:10.5px;line-height:1.45}.eui-ds-table-cols{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2);border-bottom:1px solid var(--divider-soft);background:var(--fill-2)}.eui-ds-table-col{display:flex;align-items:center;gap:var(--space-1)}.eui-ds-table-col>.eui-input{flex:1;min-width:0}.eui-ds-table-grid{overflow-x:auto}.eui-ds-table-rows{display:grid;align-items:stretch;min-width:100%}.eui-ds-table-cell{display:flex;align-items:center;gap:var(--space-1);padding:2px var(--space-1);min-width:0;border-bottom:1px solid var(--divider-soft)}.eui-ds-table-cell>.eui-input,.eui-ds-table-cell>.eui-num{width:100%;min-width:0}.eui-ds-table-cell.head{padding:var(--space-1);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);background:var(--fill-2);border-bottom-color:var(--divider);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.eui-ds-table-cell.key{position:sticky;left:0;z-index:1;background:var(--paper)}.eui-ds-table-cell.key.head{background:var(--paper-hi)}.eui-ds-table-cell.on,.eui-ds-table-cell.key.on{background:var(--primary-selected)}.eui-ds-table-cell.more{justify-content:center;padding:2px 0}.eui-ds-table-cell.bad>.eui-input,.eui-ds-table-cell.bad>.eui-num{box-shadow:inset 0 0 0 1px var(--error);color:var(--error-text)}.eui-ds-table-empty{margin:0;padding:var(--space-3) var(--space-2);color:var(--text-3);font-size:11px;text-align:center}.eui-ds-table-detail{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);border-top:1px solid var(--divider);background:var(--fill-2)}.eui-ds-table-detail .eui-group-label{margin:0 0 var(--space-1)}.eui-ds-table-detail-foot{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-1)}.eui-ds-table-err{color:var(--error-text);font-size:10px;line-height:1.4}";$d("ds/TableEditor","primitives",I3n);const N3n=["number","boolean","string"],D3n=N3n.map(t=>({value:t,label:t})),R3n=t=>t==="number"?"0":t==="boolean"?"false":"";function SNt(t){return t.column.kind==="boolean"?P.jsx(DB,{size:"sm",checked:t.value.trim().toLowerCase()==="true","aria-label":t.label,onChange:n=>t.onSet(n?"true":"false",!0)}):t.column.kind==="number"?P.jsx(Pre,{value:t.value,"aria-label":t.label,min:t.column.min,max:t.column.max,onChange:n=>t.onSet(n.target.value,!1),onBlur:n=>t.onSet(n.target.value,!0),onKeyDown:n=>{n.key==="Enter"&&n.target.blur()}}):P.jsx(Bh,{value:t.value,"aria-label":t.label,onChange:n=>t.onSet(n.target.value,!1),onBlur:n=>t.onSet(n.target.value,!0),onKeyDown:n=>{n.key==="Enter"&&n.target.blur()}})}function M3n(t){const{columns:n,onChange:r,problemOf:a}=t,c=t.pageSize??25,l=t.blankCell??R3n,d=JSON.stringify(t.rows),[m,_]=Ct.useState(t.rows),[S,E]=Ct.useState(0),[A,L]=Ct.useState(null),[j,z]=Ct.useState(!1);Ct.useEffect(()=>{_(t.rows)},[d]);const Q=Dt=>{_(Dt),r(Dt)},ne=(Dt,_t,Ve,Xt)=>{const He=m.map((ze,Wt)=>Wt===Dt?{...ze,cells:ze.cells.map((mt,Pt)=>Pt===_t?Ve:mt)}:ze);Xt?Q(He):_(He)},ie=(Dt,_t,Ve)=>{const Xt=m.map((He,ze)=>ze===Dt?{...He,key:_t}:He);Ve?Q(Xt):_(Xt)},Z=Ct.useMemo(()=>{if(a===void 0)return new Map;const Dt=new Map;return m.forEach((_t,Ve)=>{n.forEach((Xt,He)=>{const ze=a(_t.cells[He]??"",Xt);ze!==null&&Dt.set(`${Ve}:${He}`,ze)})}),Dt},[m,n,a]),he=m.slice(S,S+c),de={items:he,total:m.length,offset:S};Dxe(de,S,E,c);const Te=`minmax(120px, 0.8fr)${n.length===0?"":` repeat(${n.length}, minmax(84px, 1fr))`} 30px`,Me=A!==null&&A<m.length?m[A]:null,It=()=>{Q([...m,{key:"",cells:n.map(Dt=>l(Dt.kind))}]),L(m.length),E(Math.floor(m.length/c)*c)},Ut=Dt=>{Q(m.filter((_t,Ve)=>Ve!==Dt)),L(null)},bt=(Dt,_t)=>{var Xt;const Ve=m.map(He=>({...He,cells:_t(He.cells)}));_(Ve),(Xt=t.onColumnsChange)==null||Xt.call(t,Dt,Ve)};return P.jsxs("section",{className:"eui-ds-table",children:[P.jsxs("header",{className:"eui-ds-table-head",children:[P.jsx("span",{className:"t",children:t.title}),P.jsx("span",{className:"n",children:m.length}),Z.size>0&&P.jsxs(U0,{tone:"danger",size:"xs",tip:"Cells your game cannot read as values",children:[Z.size," ",Z.size===1?"error":"errors"]}),P.jsx("span",{className:"sp"}),t.actions,t.onColumnsChange!==void 0&&P.jsx(ps,{size:"xs",variant:"ghost",active:j,onClick:()=>z(!j),children:"Columns"}),P.jsx(ps,{size:"xs",variant:"ghost",onClick:It,children:"+ Row"})]}),t.note!==void 0&&P.jsx("p",{className:"eui-ds-table-note",children:t.note}),t.onColumnsChange!==void 0&&j&&P.jsxs("div",{className:"eui-ds-table-cols",children:[n.map((Dt,_t)=>P.jsxs("div",{className:"eui-ds-table-col",children:[P.jsx(Bh,{defaultValue:Dt.name,"aria-label":`column ${_t+1} name`,onBlur:Ve=>{const Xt=Ve.target.value;Xt!==Dt.name&&bt(n.map((He,ze)=>ze===_t?{...He,name:Xt}:He),He=>He)},onKeyDown:Ve=>{Ve.key==="Enter"&&Ve.target.blur()}},`${_t}:${Dt.name}`),P.jsx(Kx,{density:"compact",value:Dt.kind,options:D3n,"aria-label":`column ${_t+1} type`,onChange:Ve=>bt(n.map((Xt,He)=>He===_t?{...Xt,kind:Ve}:Xt),Xt=>Xt.map((He,ze)=>ze===_t?l(Ve):He))}),P.jsx(Lxe,{size:"sm",tip:"Remove this column","aria-label":`remove column ${_t+1}`,onClick:()=>bt(n.filter((Ve,Xt)=>Xt!==_t),Ve=>Ve.filter((Xt,He)=>He!==_t)),children:"✕"})]},_t)),P.jsx(ps,{size:"xs",variant:"ghost",onClick:()=>bt([...n,{name:`field${n.length+1}`,kind:"number"}],Dt=>[...Dt,l("number")]),children:"+ Column"})]}),P.jsxs("div",{className:"eui-ds-table-grid",children:[P.jsxs("div",{className:"eui-ds-table-rows",style:{gridTemplateColumns:Te},children:[P.jsx("div",{className:"eui-ds-table-cell head key",children:t.keyLabel??"row"}),n.map((Dt,_t)=>P.jsx("div",{className:"eui-ds-table-cell head",children:Dt.name===""?"—":Dt.name},_t)),P.jsx("div",{className:"eui-ds-table-cell head"}),he.map((Dt,_t)=>{const Ve=S+_t;return P.jsx(L3n,{row:Dt,index:Ve,columns:n,problems:Z,selected:A===Ve,keyPlaceholder:t.keyPlaceholder??"unnamed",onSetKey:(Xt,He)=>ie(Ve,Xt,He),onSetCell:(Xt,He,ze)=>ne(Ve,Xt,He,ze),onSelect:()=>L(A===Ve?null:Ve)},Ve)})]}),m.length===0&&P.jsx("p",{className:"eui-ds-table-empty",children:"No rows yet — add one to start."})]}),P.jsx(Rxe,{page:de,pageSize:c,onOffset:E}),Me!==null&&A!==null&&P.jsxs("div",{className:"eui-ds-table-detail",children:[P.jsx(Ire,{children:Me.key===""?`Row ${A+1}`:Me.key}),P.jsx(y7,{label:t.keyLabel??"row",children:P.jsx(Bh,{value:Me.key,"aria-label":"row name",placeholder:t.keyPlaceholder??"unnamed",onChange:Dt=>ie(A,Dt.target.value,!1),onBlur:Dt=>ie(A,Dt.target.value,!0)})}),n.map((Dt,_t)=>P.jsxs(y7,{label:Dt.name===""?`field ${_t+1}`:Dt.name,children:[P.jsx(SNt,{column:Dt,value:Me.cells[_t]??"",label:`${Dt.name} detail`,onSet:(Ve,Xt)=>ne(A,_t,Ve,Xt)}),Z.get(`${A}:${_t}`)!==void 0&&P.jsx("span",{className:"eui-ds-table-err",children:Z.get(`${A}:${_t}`)})]},_t)),P.jsxs("div",{className:"eui-ds-table-detail-foot",children:[P.jsx(_E,{label:"Delete row",confirm:"Delete this row?",onConfirm:()=>Ut(A)}),P.jsx(ps,{size:"xs",variant:"ghost",onClick:()=>L(null),children:"Close"})]})]})]})}function L3n(t){return P.jsxs(P.Fragment,{children:[P.jsx("div",{className:Sm("eui-ds-table-cell","key",t.selected&&"on"),children:P.jsx(Bh,{value:t.row.key,"aria-label":`row ${t.index+1} name`,placeholder:t.keyPlaceholder,onChange:n=>t.onSetKey(n.target.value,!1),onBlur:n=>t.onSetKey(n.target.value,!0)})}),t.columns.map((n,r)=>{const a=t.problems.get(`${t.index}:${r}`);return P.jsx("div",{className:Sm("eui-ds-table-cell",t.selected&&"on",a!==void 0&&"bad"),"data-tip":a,children:P.jsx(SNt,{column:n,value:t.row.cells[r]??"",label:`row ${t.index+1} ${n.name}`,onSet:(c,l)=>t.onSetCell(r,c,l)})},r)}),P.jsx("div",{className:Sm("eui-ds-table-cell","more",t.selected&&"on"),children:P.jsx(Lxe,{size:"sm",active:t.selected,tip:"Row details","aria-label":`row ${t.index+1} details`,onClick:t.onSelect,children:"⋯"})})]})}function ps(t){const{variant:n="default",size:r="sm",icon:a,active:c,tip:l,className:d,type:m="button",children:_,...S}=t,E=n==="default"||a===!0?Sm("eui-btn",n==="primary"&&"primary",a&&"icon",c&&"active",d):Sm("eui-ds-btn",n,r,d);return P.jsx("button",{type:m,className:E,"data-tip":l,"aria-label":a===!0?l:void 0,...S,children:_})}function xA(t){return P.jsx(ps,{icon:!0,...t})}function F0(t){const{className:n,tone:r,...a}=t;return P.jsx("button",{className:Sm("eui-link",r==="danger"&&"danger",r==="inline"&&"inline",n),...a})}function Lxe(t){const{variant:n="ghost",shape:r="square",size:a="md",active:c=!1,tip:l,className:d,type:m="button",..._}=t;return P.jsx("button",{type:m,className:Sm("eui-ds-ctl",n,r,a,c&&"active",d),"aria-pressed":c,"data-tip":l,"aria-label":r==="pill"?void 0:l,..._})}function D3(t){return P.jsx("div",{role:"group","aria-label":t["aria-label"],className:Sm("eui-seg",t.size==="lg"&&"lg",t.disabled===!0&&"off",t.className),children:t.options.map(n=>P.jsx("button",{type:"button","aria-pressed":t.value===n.value,disabled:t.disabled,className:Sm("eui-seg-btn",t.value===n.value&&"active"),onClick:()=>t.onChange(n.value),children:n.label},n.value))})}function DB(t){const n=t.size??"md",r=Sm("eui-ds-toggle",n==="sm"&&"sm",t.checked&&"on");return t.presentation===!0?P.jsx("span",{className:r,"aria-hidden":"true",children:P.jsx("span",{className:"knob"})}):P.jsx("button",{type:"button",role:"switch","aria-checked":t.checked,"aria-label":t["aria-label"],disabled:t.disabled,"data-tip":t.tip,className:r,onClick:()=>{var a;return(a=t.onChange)==null?void 0:a.call(t,!t.checked)},children:P.jsx("span",{className:"knob"})})}function Fxe(t){const[n,r]=Ct.useState(t.defaultChecked??!1),a=t.checked!==void 0,c=a?t.checked===!0:n,l=()=>{var d;a||r(!c),(d=t.onChange)==null||d.call(t,!c)};return P.jsxs("label",{className:"eui-ds-check",children:[P.jsx("input",{type:"checkbox",checked:c,disabled:t.disabled,"aria-label":t["aria-label"],onChange:l}),P.jsx("span",{className:Sm("box",c&&"checked"),children:c&&P.jsx("svg",{viewBox:"0 0 16 16",width:"12",height:"12","aria-hidden":"true",children:P.jsx("path",{d:"M3 8.5l3 3 7-7",fill:"none",stroke:"var(--accent)",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})})}),P.jsx("span",{className:"label",children:t.children})]})}function Bh(t){const{className:n,size:r,...a}=t;return P.jsx("input",{className:Sm("eui-input",r,n),spellCheck:!1,...a})}function Pre(t){const{dirty:n,className:r,...a}=t;return P.jsx("input",{type:"number",className:Sm("eui-num",n&&"dirty",r),...a})}function oL(t,n,r){Ct.useEffect(()=>{if(!t)return;const a=c=>{n.current!==null&&!c.composedPath().includes(n.current)&&r()};return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[t])}function iqe(t){const{label:n,open:r,onToggle:a,disabled:c=!1,variant:l="dark",density:d="default"}=t;return P.jsxs("button",{type:"button",ref:t.buttonRef,className:Sm("eui-ds-select-field",l==="light"&&"light",d==="compact"&&"compact",d==="row"&&"row",d==="large"&&"large"),disabled:c,"aria-label":t["aria-label"],"aria-haspopup":"listbox","aria-expanded":r,onClick:a,children:[P.jsx("span",{className:"value",children:n}),P.jsx("svg",{className:Sm("chev",r&&"open"),viewBox:"0 0 12 12","aria-hidden":"true",children:P.jsx("path",{d:"M2.5 4.5L6 8l3.5-3.5",stroke:"currentColor",strokeWidth:"1.6",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})]})}function Kx(t){const{options:n,onChange:r,disabled:a=!1,variant:c="dark"}=t,l=t.density??(t.compact===!0?"compact":"default"),d=t.value!==void 0,[m,_]=Ct.useState(t.defaultValue??""),S=d?t.value:m,[E,A]=Ct.useState(!1),[L,j]=Ct.useState(-1),z=Ct.useRef(null),Q=Ct.useRef(null),ne=Ct.useRef("sel"+Math.random().toString(36).slice(2,8)).current;oL(E,z,()=>A(!1)),Ct.useEffect(()=>{E&&j(Math.max(0,n.findIndex(de=>de.value===S)))},[E]);function ie(de){var K;d||_(de.value),r(de.value),A(!1),(K=Q.current)==null||K.focus()}function Z(de){var K;if(de.key==="Escape"){E&&(de.preventDefault(),A(!1),(K=Q.current)==null||K.focus());return}if(de.key==="Enter"||de.key===" "){de.preventDefault(),E?L>=0&&ie(n[L]):A(!0);return}if(de.key==="ArrowDown"||de.key==="ArrowUp"||de.key==="Home"||de.key==="End"){if(de.preventDefault(),!E){A(!0);return}de.key==="Home"?j(0):de.key==="End"?j(n.length-1):de.key==="ArrowDown"?j(Te=>Math.min(n.length-1,Te+1)):j(Te=>Math.max(0,Te-1))}}const he=n.find(de=>de.value===S);return P.jsxs("div",{className:Sm("eui-ds-select",l==="compact"&&"compact",l==="row"&&"row",t.className),ref:z,onKeyDown:Z,children:[P.jsx(iqe,{label:(he==null?void 0:he.label)??S,open:E,onToggle:()=>A(de=>!de),disabled:a,variant:c,density:l,buttonRef:Q,"aria-label":t["aria-label"]}),E&&P.jsx(vNt,{density:l==="compact"||l==="row"?"compact":"default",role:"listbox",children:n.map((de,K)=>P.jsxs("button",{type:"button",id:`${ne}-${K}`,role:"option","aria-selected":de.value===S,className:Sm("eui-ds-pop-row",(de.value===S||K===L)&&"active"),onMouseEnter:()=>j(K),onClick:()=>ie(de),children:[de.label,de.hint!==void 0&&P.jsx("span",{className:"hint",children:de.hint})]},de.value))})]})}function aqe(t){const{value:n,options:r,onChange:a,disabled:c=!1}=t,l=t.density??"default",[d,m]=Ct.useState(!1),_=Ct.useRef(null);oL(d,_,()=>m(!1));const S=r.filter(L=>n.includes(L.value)),E=t.summary??(L=>L.length===0?"none":L.length<=2?L.map(j=>j.label).join(", "):`${L.length} selected`);function A(L){a(n.includes(L.value)?n.filter(j=>j!==L.value):[...n,L.value])}return P.jsxs("div",{className:Sm("eui-ds-select",l==="compact"&&"compact",l==="row"&&"row",t.className),ref:_,children:[P.jsx(iqe,{label:E(S),open:d,onToggle:()=>m(L=>!L),disabled:c,density:l,"aria-label":t["aria-label"]}),d&&P.jsx(vNt,{density:l==="compact"||l==="row"?"compact":"default",role:"group",children:r.map(L=>{const j=n.includes(L.value);return P.jsxs("button",{type:"button",role:"checkbox","aria-checked":j,className:"eui-ds-pop-row",onClick:()=>A(L),children:[P.jsx(DB,{size:"sm",presentation:!0,checked:j}),L.label]},L.value)})})]})}function wNt(t){const{className:n,...r}=t;return P.jsx("textarea",{className:Sm("eui-raw",n),spellCheck:!1,...r})}function K6(t){const n=P.jsxs("label",{htmlFor:t.htmlFor,className:Sm("eui-ds-fieldlabel",t.className),children:[t.children,t.notice!==void 0&&P.jsx("sup",{className:"notice",children:t.notice})]});return t.sublabel===void 0?n:P.jsxs("span",{className:"eui-ds-fieldgroup",children:[n,P.jsx("span",{className:"sub",children:t.sublabel})]})}function DJ(t){const{value:n,defaultValue:r="",placeholder:a="Search",onChange:c}=t,[l,d]=Ct.useState(r),m=n!==void 0,_=m?n:l;return P.jsxs("label",{className:Sm("eui-ds-search",t.size==="lg"&&"lg",t.size==="sm"&&"sm",t.className),children:[P.jsxs("svg",{viewBox:"0 0 16 16",width:"15",height:"15","aria-hidden":"true",className:"icon",children:[P.jsx("circle",{cx:"7",cy:"7",r:"5",fill:"none",stroke:"currentColor",strokeWidth:"1.6"}),P.jsx("path",{d:"M11 11l3.5 3.5",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]}),P.jsx("input",{type:"text","aria-label":a,placeholder:a,value:_,autoFocus:t.autoFocus,onKeyDown:t.onKeyDown,onChange:S=>{m||d(S.target.value),c==null||c(S.target.value)}})]})}function Ire(t){return P.jsx("div",{className:"eui-group-label",children:t.children})}function QG(t){const[n,r]=Ct.useState(t.defaultOpen??!0),a=t.open??n,c=()=>{var l;t.open===void 0&&r(!a),(l=t.onToggle)==null||l.call(t)};return P.jsxs("div",{className:"eui-shelf",children:[P.jsxs("button",{className:"eui-shelf-head",onClick:c,children:[P.jsx("span",{className:Sm("caret",a&&"open"),children:P.jsx("svg",{width:"8",height:"8",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",children:P.jsx("path",{d:"M4 2.5L8.5 6L4 9.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),P.jsx("span",{className:"t",children:t.title}),t.count!==void 0&&P.jsx("span",{className:"n",children:t.count})]}),a&&t.note!==void 0&&P.jsx("p",{className:"eui-shelf-note",children:t.note}),a&&t.children]})}function y7(t){return P.jsxs("div",{className:"eui-prop",children:[P.jsx("span",{className:Sm("plabel",t.wrapLabel===!0&&"wrap"),children:t.label}),P.jsx("div",{className:"pvalue",children:t.children})]})}function xm(t){const n=t.sub;return P.jsxs("button",{className:Sm("eui-menu-item",t.danger&&"danger",n!==void 0&&n!==""&&"has-sub"),disabled:t.disabled,"data-tip":t.tip,onClick:t.onClick,children:[t.icon,n===void 0||n===""?t.children:P.jsxs("span",{className:"txt",children:[P.jsx("span",{className:"lbl",children:t.children}),P.jsx("span",{className:"sub",children:n})]}),t.hint!==void 0&&t.hint!==""&&P.jsx("span",{className:"hint",children:t.hint})]})}function sg(t){const{size:n="lg",color:r}=t,a=r!==void 0?{"--spinner-arc":r}:void 0;return P.jsx("span",{className:Sm("eui-ds-spinner",n),style:a,role:"status","aria-label":"Loading",children:P.jsxs("svg",{viewBox:"0 0 50 50",children:[P.jsx("circle",{className:"track",cx:"25",cy:"25",r:"20",fill:"none",strokeWidth:"5"}),P.jsx("circle",{className:"arc",cx:"25",cy:"25",r:"20",fill:"none",strokeWidth:"5",strokeLinecap:"round",strokeDasharray:"90 160"})]})})}function Nre(t){return P.jsx("div",{className:Sm("eui-toast",t.alert===!0&&"err"),role:t.alert===!0?"alert":"status",children:t.children})}function TNt(t){return P.jsxs("span",{className:Sm("eui-autosave",t.state),"data-tip":t.tip,role:t.role,children:[P.jsx("span",{className:"dot"}),t.children]})}function ha(t){return Ct.useSyncExternalStore(o2n,t)}const F3n=/^(-?\d+),(-?\d+)$/;function dB(t){if(t===null)return null;const n=F3n.exec(t);return n===null?null:{x:Number(n[1]),y:Number(n[2])}}function sqe(t){const n=dB(t.replace(/\s+/g,""));return n===null?null:`${n.x},${n.y}`}function kNt(){var t;return((t=q3())==null?void 0:t.services.worldsContent.replace(/\/+$/,""))??null}function jxe(t){var n,r;return((r=(n=q3())==null?void 0:n.services.signed)==null?void 0:r[t].replace(/\/+$/,""))??null}function RB(){const t=kNt();return t!==null?new URL(t).hostname.endsWith(".decentraland.zone"):G3("dcl-auth-env")==="zone"}function eS(){const t=kNt();return t!==null?t:RB()?"https://worlds-content-server.decentraland.zone":"https://worlds-content-server.decentraland.org"}function j3n(){return RB()?"https://places.decentraland.zone/api":"https://places.decentraland.org/api"}function B3n(){return RB()?"https://subgraph.decentraland.org/marketplace-sepolia":"https://subgraph.decentraland.org/marketplace"}function MB(){const t=jxe("commsGatekeeper");return t!==null?t:RB()?"https://comms-gatekeeper.decentraland.zone":"https://comms-gatekeeper.decentraland.org"}function U3n(){const t=jxe("storage");return t!==null?t:RB()?"https://storage.decentraland.zone":"https://storage.decentraland.org"}function $3n(t){return t==="zone"?"https://multiplayer-server.decentraland.zone":"https://multiplayer-server.decentraland.org"}function z3n(){const t=jxe("multiplayer");return t!==null?t:$3n(RB()?"zone":"org")}function V3n(){const t=jxe("creatorsData");return t!==null?t:"https://creators-data.decentraland.org/v2"}function ENt(){var t;return Hy()?((t=q3())==null?void 0:t.services.signed)===void 0||["localhost","127.0.0.1","[::1]"].includes(location.hostname):!1}function W3n(){return RB()?11155111:1}function oqe(t){const n=q3();if(n!==null){const r=t.toLowerCase(),a=eS(),c=/\.decentraland\.(org|zone)$/.test(new URL(a).hostname);return`${n.pageDir}?realm=${encodeURIComponent(c?r:`${a}/world/${r}`)}`}return`https://decentraland.org/bevy-web/?realm=${encodeURIComponent(t.toLowerCase())}`}var cqe={},CNt={},ZBe={exports:{}};/*! eth-connect {
6652
6652
  "date": "2026-06-24T17:52:08.327Z",
6653
6653
  "commit": "ce27c1e701a995e4e480d96fed8a8fad8e8c29fa",
6654
6654
  "ref": "refs/tags/6.4.0"
@@ -33889,4 +33889,4 @@ ${n}
33889
33889
  ${r}`));return"w"+Array.from(new Uint8Array(a).slice(0,16),c=>c.toString(16).padStart(2,"0")).join("")}function Lyr(t){return`${t.file===void 0?"":`${t.file}:${t.line??1}:${t.column??0}: `}${t.severity==="error"?"ERROR":"WARNING"}: ${t.message}`}function Fyr(t){return t.length<=3?t.join(", "):`${t.slice(0,3).join(", ")} and ${t.length-3} more`}function jyr(t,n){const r=Bx(t.get("package.json"));for(const a of[r==null?void 0:r.devDependencies,r==null?void 0:r.dependencies]){const c=typeof a=="object"&&a!==null?a["@dcl/sdk"]:void 0;if(typeof c=="string"&&c!==n)return`⚠ This project asks for @dcl/sdk ${c}; the editor builds it with ${n}.`}return null}function Byr(t){const{emit:n,log:r}=t;let a=null,c=!1,l=null,d=Promise.resolve();const m=A=>{const L=d.then(A,A);return d=L.catch(()=>{}),L};async function _(){if(c)throw new Error("The editor was closed");a===null&&(l=null);const A=a??whr(t.urls);a=A;try{const L=await A.ready;return{builder:A,sdkVersion:L.sdkVersion,info:L}}catch(L){throw A.dispose(),a===A&&(a=null),L}}async function S(A,L,j){const{builder:z,info:Q}=await _();let ne=!1;const ie=await Nyr(L,t.packages,Q.snapshot,he=>{t.onPackages(A,he),j&&!ne&&r("Downloading packages from npm…"),ne=!0});ie.lockFile!==void 0&&(L.set(hM,ie.lockFile),await t.saveLock(A,ie.lockFile));const Z=ie.lock===null?"":G9t(ie.lock);if(Z!==l)try{await z.setPackages(ie.lock,t.packages),l=Z}catch(he){j&&r(`⚠ ${iCt(he)}`),await z.setPackages(null),l=""}if(t.onPackages(A,ie.status),!(!j||ie.status===null)){if(ie.status.state==="error")r(`✖ ${ie.status.message??"The packages could not be installed"}`);else if(ie.downloaded>0){const he=Object.entries(ie.status.installed).map(([de,K])=>`${de} ${K}`);r(`✔ Packages frozen into the scene: ${he.join(", ")} (${ie.status.total} in all)`)}for(const he of ie.status.warnings)r(`⚠ ${he}`)}}function E(A,L,j=A){const z=Vze(t.pageDir,j),Q=new Set;let ne=null,ie=!1,Z=!1,he=null;const de=Me=>(n({type:"failed",message:Me}),r(`✖ Build failed: ${Me.split(`
33890
33890
  `)[0]}`),!1);async function K(Me){const It=performance.now();n({type:"buildStarted",changed:Me}),r(Me.length===0?"Building the scene…":`Rebuilding: ${Fyr(Me)}`);try{const{builder:Ut,sdkVersion:bt}=await _(),Dt=Me.length===0?jyr(L,bt):null;Dt!==null&&r(Dt);const _t=Me.length===0||Me.includes("package.json")||Me.includes(hM),{snapshot:Ve,result:Xt}=await m(async()=>{(_t||l!==he)&&(await S(A,L,!0),he=l);const Wt=new Map(L);return{snapshot:Wt,result:await Ut.build(Wt)}});if(Z)return!1;const He=Xt.diagnostics.filter(Wt=>Wt.severity==="error"||Wt.file===void 0||Ve.has(Wt.file));n({type:"diagnostics",diagnostics:He.map(({severity:Wt,message:mt,file:Pt,line:Tt,column:zt})=>({severity:Wt,message:mt,file:Pt,line:Tt,column:zt}))});for(const Wt of He)r(Lyr(Wt));if(!Xt.ok){const Wt=Xt.events.find(mt=>mt.type==="failed");return de((Wt==null?void 0:Wt.type)==="failed"?Wt.message:"The build produced no bundle")}const ze=Bx(Ve.get("scene.json"));return ze===null?de("scene.json is missing or is not valid JSON"):(await N_r({realmUrl:z,projectId:j,files:Ve,buildOutputs:Xt.outputs,sceneJson:ze,sdkVersion:bt,machineId:await t.machineId(j)}),Z?!1:(n({type:"bundleSaved"}),r(`✔ Built in ${Math.round(performance.now()-It)} ms`),!0))}catch(Ut){return Z?!1:de(iCt(Ut))}}async function Te(){if(!(ie||Z)){ie=!0;try{for(;Q.size>0&&!Z;){const Me=[...Q];Q.clear(),await K(Me)}}finally{ie=!1}}}return{id:A,files:L,async start(){ie=!0;try{return await K([])}finally{ie=!1,Q.size>0&&Te()}},async published(){const Me=await(await caches.open(j1e)).match(Wze(z)),It=await(Me==null?void 0:Me.json().catch(()=>{})),Ut=It==null?void 0:It.entity;return(Ut==null?void 0:Ut.id)===X9t(j,await t.machineId(j))},changed(Me){Z||(Q.add(Me),ne!==null&&clearTimeout(ne),ne=setTimeout(()=>{ne=null,Te()},Dyr))},stop(){Z=!0,ne!==null&&clearTimeout(ne)}}}return{realmUrl:A=>Vze(t.pageDir,A),open:E,async build(A,L,j){const{builder:z,sdkVersion:Q}=await _();return m(async()=>(await S(A,L,!1),{...await z.build(L,j),sdkVersion:Q}))},install:(A,L)=>m(()=>S(A,L,!1)),dispose(){c=!0,a==null||a.dispose(),a=null}}}const Uyr=200,$yr=2e3,zyr=/^\((?:no logs|\+\d+ older entries not retained)\)$/;function Vyr(t,n){for(let r=Math.min(t.length,n.length);r>0;r--){const a=t.length-r;if(n.slice(0,r).every((c,l)=>c===t[a+l]))return n.slice(r)}return[...n]}function Wyr(t,n){let r=[],a=!1,c;const l=async()=>{try{const d=await t(`scene_logs ${Uyr} --server`);if(a)return;const m=d.split(`
33891
33891
  `).filter(_=>_.trim()!==""&&!zyr.test(_.trim()));for(const _ of Vyr(r,m))n(_);r=m}catch{}a||(c=setTimeout(()=>void l(),$yr))};return l(),()=>{a=!0,clearTimeout(c)}}const qyr=new Set(["node_modules",".git","bin","dist"]),Gyr=300*1024,Jyr=56,Hyr=5;function Qyr(t){const n=t.origin,r=typeof n=="object"&&n!==null&&!Array.isArray(n)?n:null;return r!==null&&(r.source==="import"||r.source==="github")?r:{...r??{},source:"user"}}function Yyr(t,n){const r=new Map;let a=new Map;function c(m,_){if(_.size>Gyr)return t.blob(m,_.hash);let S=r.get(_.hash);return S===void 0&&(S=t.blob(m,_.hash),r.set(_.hash,S),S.catch(()=>r.delete(_.hash))),S}const l={async folders(){const m=await t.list();return a=new Map(m.map(S=>[S.name,S])),(await Promise.all(m.map(async S=>{const E=S.files["data.json"];if(E===void 0)return null;const A=await c(S.name,E).then(j=>new TextDecoder().decode(j),()=>null);if(A===null)return null;const L=Object.fromEntries(Object.entries(S.files).map(([j,z])=>[j,z.size]));return{name:S.name,data:A,files:L}}))).filter(S=>S!==null)},async read(m,_){var E;const S=(E=a.get(m.name))==null?void 0:E.files[_];if(S===void 0)throw new Error(`${m.name}/${_} is not in your library`);return c(m.name,S)}};async function d(m,_){const S={},E=new Map;for(const[L,j]of _){const z=await n(j);S[L]={hash:z,size:j.length},E.set(z,j)}const A=[...E].map(([L,j])=>({hash:L,size:j.length}));for(const L of await t.uploads(m,A)){const j=E.get(L.hash);j!==void 0&&await t.putBlob(L,j)}await t.put(m,S)}return{tree:l,async copyOut(m,_){const[S,E,A]=_.split("/");if(S!=="custom"||E===void 0||A!==void 0||!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(E))throw new Error(`not a prefab folder: ${_}`);const L=`${_}/`,j=new Map;for(const[K,Te]of m.files()){const Me=K.slice(L.length);K.startsWith(L)&&!Me.split("/").some(It=>qyr.has(It))&&j.set(Me,Te)}const z=j.get("data.json"),Q=z===void 0?null:fq(new TextDecoder().decode(z));if(Q===null)throw new Error(`${_} has no readable data.json`);const ne={...Q,id:typeof Q.id=="string"?Q.id:crypto.randomUUID(),origin:Qyr(Q)},ie=`${JSON.stringify(ne,null,2)}
33892
- `;j.set("data.json",new TextEncoder().encode(ie));const Z=eVe(SUt(Q,E)).slice(0,Jyr).replace(/_+$/,"")||"prefab",he=new Set((await t.list()).map(K=>K.name));let de=1;for(let K=0;K<Hyr;K++){let Te=Z;for(;he.has(Te);)Te=`${Z}_${++de}`;try{return await d(Te,j),{ref:`user:${Te}`,scope:"user",data:ie}}catch(Me){if(!(Me instanceof uUt))throw Me;he.add(Te)}}throw new Error("could not find a free name in your library — try again")},remove:m=>t.remove(m)}}function ure(t){const n={"web-build/worker.js":"sha384-ifej6zgLpr5r83XEO56nt4ZXOzQlxTmShy+nL+opSlQHaMKSawtrTn/Ty7zDTJbF","web-build/esbuild.wasm":"sha384-V8Ml7eHSlgGTb/TR1IYB6LtWwAW1NXLDPRjL2FjxwIfqDkSZ/hp+zmfvXDHqu8NV","web-build/sdk-snapshot.json":"sha384-W6PmOgO8Kk3JU+1ah/OJqTTxScfb4+BnVuC25NhYFKIjb5WnUUCE3O4BuPC7NLvg","prefabs/catalog.json":"sha384-rxpF/AYN1NtzvtLqUzjnnLFSv4aNP7+QCxWsLLr5hksKAsRLuI849rQNzDwJAT5t","editor.css":"sha384-UtVv2Sy+fO5029No4SyC1iW7hUXbIfy4nqF1QP2S8A7M1rUOv5qoJPnxdiNzAF60"}[t];if(n===void 0)throw new Error(`${t} is not one of the editor's published files`);return n}function Xyr(t){const n=r=>new URL(`web-build/${r}`,t).href;return{workerUrl:n("worker.js"),wasmUrl:n("esbuild.wasm"),snapshotUrl:n("sdk-snapshot.json"),integrity:{worker:ure("web-build/worker.js"),wasm:ure("web-build/esbuild.wasm"),snapshot:ure("web-build/sdk-snapshot.json")}}}const aCt=4e3,Zyr=4e6,Kyr=yNt*24*60*60*1e3,evr="assets/images",tvr=3e3,nvr=100,rvr="Sign in to keep prefabs in your own library. The built-in prefabs work without it.",ivr=t=>t instanceof Error?t.message:String(t),avr=({host:t,webBuild:n})=>{const r=new Tgr(ygr()),a=q3(t),c=a===null||a.services.projects===null?null:lUt(a.services.projects,(Xn,Fr)=>a.signedFetch(Xn,Fr)),l=()=>{const{address:Xn,isGuest:Fr}=t.identity();return Fr||Xn===null?null:Xn.toLowerCase()},d=[],m=[],_=[],S=[],E=[],A=Xn=>{d.push(Xn),d.length>aCt&&d.splice(0,d.length-aCt);for(const Fr of m)Fr(Xn)},L=Xn=>{for(const Fr of _)Fr(Xn)},j=new Map,z=new Set,Q=aNt.then(Ryr),ne=Byr({pageDir:t.pageDir,urls:n,machineId:async Xn=>Myr(await Q,l()??"guest",Xn),emit:L,log:A,packages:r.packages,saveLock:async(Xn,Fr)=>{await r.write(Xn,hM,Fr),mt.touched(Xn,hM),(Z==null?void 0:Z.id)===Xn&&Z.files.set(hM,Fr)},onPackages:(Xn,Fr)=>{if(Fr===null){j.delete(Xn);return}j.set(Xn,Fr);for(const ea of z)ea(Xn,Fr)}});let ie=null,Z=null,he=null,de=null;async function K(Xn){var ra;const Fr=(ra=(await r.list()).find(gs=>gs.id===Xn))==null?void 0:ra.previewId;if(Fr!==void 0)return Fr;const ea="p"+Array.from(crypto.getRandomValues(new Uint8Array(16)),gs=>gs.toString(16).padStart(2,"0")).join("");return await r.patch(Xn,{previewId:ea}),ea}async function Te(Xn){const Fr=new URL("preview/",t.pageDir).href,ea=await caches.open(j1e);for(const ra of await ea.keys())ra.url.startsWith(Fr)&&(Xn===null||!ra.url.startsWith(Xn))&&await ea.delete(ra)}let Me=0,It=Promise.resolve(),Ut=Promise.resolve();const bt=B_r({service:(a==null?void 0:a.services.projects)??null,fetch:(Xn,Fr)=>a===null?Promise.reject(new Error("The assistant service is not configured.")):a.signedFetch(Xn,Fr),wallet:l,project:()=>{const Xn=ui();return{id:Xn.id,tools:{files:()=>Xn.files,write:(Fr,ea,ra,gs)=>Ve(Xn.id,Fr,ea,{expected:ra,signal:gs}),scene:(Fr,ea)=>nUt(Fr,ea,async ra=>{await st(Xn.id,Bo=>Q_r(Bo,ra));const gs=Bx(await _t(Xn.id,"scene.json"));return{requiredPermissions:(gs==null?void 0:gs.requiredPermissions)??[],spawnPoints:(gs==null?void 0:gs.spawnPoints)??[]}}),written:U_r(),build:async Fr=>{Fr.throwIfAborted(),await Ut;const ea=await ne.build(Xn.id,new Map(Xn.files));return Fr.throwIfAborted(),{ok:ea.ok,diagnostics:ea.diagnostics}}}}}});function Dt(){bt.reset(),de==null||de(),de=null,Z!==null&&(Z.stop(),r.close(Z.id),mt.flush(Z.id),Z=null,he=null)}async function _t(Xn,Fr){return(Z==null?void 0:Z.id)===Xn?Z.files.get(Fr):r.read(Xn,Fr).catch(ea=>{if(!XP(ea))throw ea})}function Ve(Xn,Fr,ea,ra){const gs=Ut.then(async()=>{if(ra==null||ra.signal.throwIfAborted(),ra!==void 0&&((Z==null?void 0:Z.id)!==Xn||!L_r(Z.files.get(Fr),ra.expected)))throw new Error("This file changed. Read it again before writing.");await r.write(Xn,Fr,ea),mt.touched(Xn,Fr),(Z==null?void 0:Z.id)===Xn&&(Z.files.set(Fr,ea),Z.changed(Fr))});return Ut=gs.catch(Bo=>console.error("[editor] file write failed",Bo)),gs}function Xt(Xn,Fr){const ea=Ut.then(async()=>{const ra=await r.remove(Xn,Fr);return ra&&mt.touched(Xn,Fr),ra&&(Z==null?void 0:Z.id)===Xn&&Z.files.delete(Fr)&&Z.changed(Fr),ra});return Ut=ea.catch(ra=>console.error("[editor] file removal failed",ra)),ea}function He(Xn){const Fr=ui();if(Fr.id!==Xn)throw new Error("that scene is not the one open");return{files:()=>Fr.files,write:(ea,ra)=>Ve(Xn,ea,ra),remove:async ea=>{await Xt(Xn,ea)}}}async function ze(Xn){var ra;const Fr=Bx(await _t(Xn,"scene.json").catch(()=>{})),ea=(((ra=Fr==null?void 0:Fr.display)==null?void 0:ra.title)??"").replace(/[\x00-\x1f\x7f]/g,"").replace(new RegExp(cUt.source,"g"),"").trim().slice(0,nvr);return ea===""?Xn:ea}async function Wt(Xn,Fr){const ea=(await r.list()).find(gs=>gs.id===Xn);if(ea===void 0)return null;const ra=await r.duplicate(Xn,`${ea.name} ${Fr}`,mt.remoteIds());return await st(ra.id,gs=>{var Bo;return{...gs,display:{...gs.display??{},title:`${((Bo=gs.display)==null?void 0:Bo.title)||ea.name} ${Fr}`}}}),ra.id}const mt=Igr({store:r,session:()=>{const Xn=l();return c===null||Xn===null?null:{api:c,wallet:Xn}},account:()=>c===null?"unavailable":l()===null?"guest":"on",hash:M1e,title:ze,duplicate:async Xn=>{const Fr=await Wt(Xn,gNt(new Date));if(Fr===null)throw new Error("The scene is no longer on this device");return Fr}});let Pt=!1,Tt=0;async function zt(){const Xn=++Tt,Fr=l()!==null&&(await bt.shell.aiProviders()).some(ea=>ea.available);Xn!==Tt||Fr===Pt||(Pt=Fr,z0())}zt();let Qt=l();const Gt=setInterval(()=>{const Xn=l();Xn!==Qt&&(Qt=Xn,bt.reset(),z0(),zt(),mt.refresh(!0),Te(he).catch(Fr=>console.warn("[editor] could not clear the previews",Fr)))},tvr),Le=()=>{document.visibilityState==="hidden"&&mt.flush()};document.addEventListener("visibilitychange",Le);const Ze=new Set;async function st(Xn,Fr){const ea=Bx(await _t(Xn,"scene.json"));if(ea===null)throw new Error("scene.json is missing or is not valid JSON");await Ve(Xn,"scene.json",IEt(Fr(ea)))}async function sn(Xn,Fr){if(Fr==null||Fr==="")return null;const ea=await _t(Xn,Fr).catch(()=>{});return ea===void 0||ea.length>Zyr?null:NEt(Fr,ea)}async function Mn(Xn,Fr=mt.status().projects){var ra,gs,Bo,ef;const ea=Bx(await _t(Xn.id,"scene.json").catch(()=>{}));return{sync:Fr[Xn.id],path:Xn.id,name:Xn.name,title:((ra=ea==null?void 0:ea.display)==null?void 0:ra.title)||Xn.name,world:((gs=ea==null?void 0:ea.worldConfiguration)==null?void 0:gs.name)||null,parcels:Array.isArray((Bo=ea==null?void 0:ea.scene)==null?void 0:Bo.parcels)?ea.scene.parcels.length:0,thumbnail:await sn(Xn.id,(ef=ea==null?void 0:ea.display)==null?void 0:ef.navmapThumbnail),favourite:Xn.favourite,lastOpened:Xn.lastOpened,published:Xn.published,deletedAt:Xn.deletedAt??void 0}}async function dn(Xn,Fr){var ra,gs,Bo,ef,Qm;Dt(),d.length=0,L({type:"sessionStarted"});const ea=xr=>{if(Dt(),Fr===Me){A(`✖ ${xr}`);for(const Pc of E)Pc(xr)}};try{if(await mt.prepareOpen(Xn,(wu,Vv)=>A(`Downloading from your account… ${wu}/${Vv}`)),Fr!==Me)return;if(!await r.open(Xn)){ea("This scene is open in another tab. Close it there to edit it here.");return}const xr=await r.readAll(Xn).catch(wu=>{throw r.close(Xn),wu});if(Fr!==Me){r.close(Xn);return}const Pc=await K(Xn);if(Fr!==Me){r.close(Xn);return}const sd=ne.open(Xn,xr,Pc);Z=sd;const xi=ne.realmUrl(Pc);if(he=xi,A(`▶ Opening ${((gs=(ra=Bx(sd.files.get("scene.json")))==null?void 0:ra.display)==null?void 0:gs.title)||Xn}`),!await sd.start()&&!await sd.published()){if(Fr!==Me)return;A("✖ The scene did not build.");for(const wu of E)wu("The scene did not build.");return}if(await r.patch(Xn,{lastOpened:Date.now()}),Fr!==Me){Dt();return}const dl=Bx(sd.files.get("scene.json"))??{};ie={realm:xi.replace(/\/$/,""),systemScene:"",position:((Bo=dl.scene)==null?void 0:Bo.base)??((Qm=(ef=dl.scene)==null?void 0:ef.parcels)==null?void 0:Qm[0])??"0,0",spawn:G_r(dl),spawnPoints:JSON.stringify(Array.isArray(dl.spawnPoints)?dl.spawnPoints:[])},de=Wyr(wu=>t.engineConsole(wu),A);for(const wu of S)wu(ie)}catch(xr){ea(ivr(xr))}}function kn(Xn){ie=null;const Fr=++Me,ea=bt.reset(),ra=It.then(async()=>{await ea,await Ut,Fr===Me&&await Xn(Fr)});return It=ra.catch(gs=>console.error("[editor] project transition failed",gs)),ra}function ui(){if(Z===null)throw new Error("no project is open");return Z}const vt={saveFile:async({path:Xn,content:Fr})=>Ve(ui().id,Xn,Fr),getFile:async({path:Xn})=>{const Fr=ui().files.get(Xn)??byr(Xn);if(Fr===void 0)throw new Error(`no such file: ${Xn}`);return{content:Fr}},removeFiles:async({filePaths:Xn})=>{const Fr=ui(),ea=[],ra=[];for(const gs of Xn)(await Xt(Fr.id,gs).catch(()=>!1)?ea:ra).push(gs);return{success:ea,failed:ra}},getFilesSizes:async({path:Xn,ignore:Fr})=>{const ea=Xn===""?"":`${Xn.replace(/\/+$/,"")}/`;return{files:[...ui().files.keys()].filter(gs=>gs.startsWith(ea)&&!gs.split("/").some(Bo=>Fr.includes(Bo))).sort().map(gs=>({path:gs}))}}},zi={async find(Xn){return(await r.list()).some(Fr=>Fr.id===Xn)?!0:(await mt.refresh(!0),mt.remoteOnly().some(Fr=>Fr.id===Xn))},files:async Xn=>(Z==null?void 0:Z.id)===Xn?new Map(Z.files):r.readAll(Xn),manifest:Xn=>mt.manifest(Xn),build:async(Xn,Fr)=>ne.build(Xn,await zi.files(Xn),Fr),dependencies:async Xn=>iUt(await _t(Xn,"package.json")),onImported:Xn=>(Ze.add(Xn),()=>Ze.delete(Xn))},Br=a===null?null:ggr({host:a,setWorld:async(Xn,Fr)=>{var ra,gs;((gs=(ra=Bx(await _t(Xn,"scene.json")))==null?void 0:ra.worldConfiguration)==null?void 0:gs.name)!==Fr&&await st(Xn,Bo=>({...Bo,worldConfiguration:{...Bo.worldConfiguration??{},name:Fr}}))},files:Xn=>zi.files(Xn),build:(Xn,Fr)=>ne.build(Xn,Fr,{production:!0}),published:(Xn,Fr)=>r.patch(Xn,{published:Fr})}),_o=(a==null?void 0:a.services.projects)==null?null:Yyr(Cgr(a.services.projects,(Xn,Fr)=>a.signedFetch(Xn,Fr)),M1e),Bs=Oyr({builtin:Ggr(t.editorBase,ure("prefabs/catalog.json"),U9t),user:()=>_o!==null&&l()!==null?_o.tree:null}),xs={...(a==null?void 0:a.services.projects)==null?{}:{...bt.shell,aiOffered:()=>Pt,aiTranscript:()=>{const Xn=Qt;if(Xn===null||Z===null)return null;const Fr=Z.id;return{owner:`${Fr}@${Xn.toLowerCase()}`,load:()=>r.transcript(Fr,Xn),save:ea=>r.setTranscript(Fr,Xn,ea)}}},pickProject:async()=>{},openProject:Xn=>kn(Fr=>dn(Xn,Fr)),closeProject:()=>kn(async()=>{Dt(),L({type:"sessionStarted"}),A("■ Scene closed"),await Te(null).catch(Xn=>console.warn("[editor] could not clear the previews",Xn))}),getState:async()=>{const Xn=await r.list(),Fr=mt.status().projects,ea=mt.remoteOnly().map(ra=>({path:ra.id,name:ra.name,title:ra.name,world:null,parcels:0,thumbnail:null,remoteOnly:!0}));return{recentProjects:[...Xn].sort((ra,gs)=>gs.lastOpened-ra.lastOpened).map(ra=>ra.id),projects:[...await Promise.all(Xn.map(ra=>Mn(ra,Fr))),...ea],logs:[...d],bevyWebDir:"",editorSceneDir:"",webPort:0,scenePort:0,editorScenePort:0,favourites:Xn.filter(ra=>ra.favourite).map(ra=>ra.id)}},onStackLog:Xn=>{m.push(Xn)},onBuildEvent:Xn=>{_.push(Xn)},onServersReady:Xn=>{S.push(Xn)},requestReady:async()=>ie,onServersError:Xn=>{E.push(Xn)},toggleFavourite:async Xn=>{const Fr=(await r.list()).find(ea=>ea.id===Xn);Fr!==void 0&&await r.patch(Xn,{favourite:!Fr.favourite})},deleteProject:async Xn=>{const Fr=await r.trash(Xn);return Fr&&mt.trashed(Xn),Fr},trashedProjects:async()=>Promise.all((await r.trashed()).map(Xn=>Mn(Xn))),restoreProject:async Xn=>{const Fr=await r.restore(Xn);return Fr&&mt.restored(Xn),Fr},syncStatus:async()=>(mt.refresh(),mt.status()),onSyncStatus:Xn=>mt.subscribe(Xn),resolveSyncConflict:(Xn,Fr)=>mt.resolve(Xn,Fr),exportProject:async Xn=>Vgr(await ze(Xn),await zi.files(Xn)),importProject:async Xn=>{const Fr=await qgr(Xn,async(ea,ra)=>{const gs=await r.create(ea,ra,{taken:mt.remoteIds()});return mt.touched(gs.id,"scene.json"),gs.id});if((Fr==null?void 0:Fr.ok)===!0){const{id:ea,needsPackages:ra}=Fr.report;Object.keys(ra).length>0&&r.readAll(ea).then(gs=>ne.install(ea,gs)).catch(gs=>console.warn("[editor] could not install the packages of",ea,gs));for(const gs of Ze)gs(Fr.report)}return Fr},projectPackages:async Xn=>j.get(Xn)??null,onProjectPackages:Xn=>(z.add(Xn),()=>z.delete(Xn)),...Br===null||a===null?{}:{publishScene:(Xn,Fr,ea)=>Br.publish(Xn,Fr,ea),publishStop:async()=>Br.stop(),publishWorlds:async()=>{const Xn=l();return Xn===null?[]:hgr(Xn,a.services.worldsContent.replace(/\/+$/,""))}},canImportFolder:zgr(),renameProject:(Xn,Fr)=>st(Xn,ea=>({...ea,display:{...ea.display??{},title:Fr.trim()}})),duplicateProject:Xn=>Wt(Xn,"copy"),sceneTemplates:async()=>gyr(),createScene:async(Xn,Fr,ea)=>{const ra=bUt(ea),gs=Bx(ra.get("scene.json"));if(gs===null)throw new Error(`template not found: ${ea}`);ra.set("scene.json",IEt({...gs,display:{...gs.display??{},title:Fr.trim()}}));const Bo=await r.create(Fr,ra,{taken:mt.remoteIds()});return mt.touched(Bo.id,"scene.json"),Bo.id},openExternal:async Xn=>{/^https?:$/.test(new URL(Xn).protocol)&&window.open(Xn,"_blank","noopener,noreferrer")},compositeEntityIds:async Xn=>{for(const Fr of J_r){const ea=await _t(Xn,Fr);if(ea!==void 0)return H_r(new TextDecoder().decode(ea))}return[]},sceneSettings:async Xn=>{const Fr=Bx(await _t(Xn,"scene.json"));if(Fr===null)throw new Error("scene.json is missing or is not valid JSON");const ea=z_r(Fr);return{...ea,thumbnail:await sn(Xn,ea.thumbnailPath)}},saveSceneSettings:async(Xn,Fr)=>{const ea=W_r(Fr);return ea!==null?ea:(await st(Xn,ra=>q_r(ra,Fr)),null)},pickSceneThumbnail:async Xn=>{const Fr=await vUt(Object.values(qze).join(","));if(Fr===null)return null;const ea=rUt(Fr.name);if(qze[ea]===void 0)throw new Error("not a supported image (png, jpg, gif, webp)");const ra=`${evr}/scene-thumbnail${ea}`,gs=new Uint8Array(await Fr.arrayBuffer());return await Ve(Xn,ra,gs),{path:ra,dataUrl:NEt(ra,gs)}},appVersion:async()=>D_r,prefabLibraryList:()=>Bs.list(),prefabLibraryCopyIn:async(Xn,Fr)=>Bs.copyIn(Xn,He(Fr)),prefabLibraryUpdateCopy:async(Xn,Fr)=>Bs.updateCopy(Xn,He(Fr)),prefabUserLibrary:()=>_o===null?"unavailable":l()===null?"guest":"on",..._o===null?{}:{prefabLibraryCopyOut:async(Xn,Fr)=>{if(l()===null)throw new Error(rvr);return _o.copyOut(He(Xn),Fr)},prefabLibraryDelete:async Xn=>{const Fr=xUt(Xn);return(Fr==null?void 0:Fr.scope)==="user"&&l()!==null?_o.remove(Fr.name):!1}}};async function vc(){const Xn=new Set;for(const Fr of[...await r.list(),...await r.trashed()]){const ea=q9t(await _t(Fr.id,hM).catch(()=>{}));for(const ra of Object.keys((ea==null?void 0:ea.packages)??{}))Xn.add(ra);for(const[ra,gs]of Object.entries((ea==null?void 0:ea.dependencies)??{}))Xn.add(E7(ra,gs))}for(const Fr of await r.packages.keys())Xn.has(Fr)||await r.packages.remove(Fr)}return r.purge(Date.now()-Kyr).then(async Xn=>{const Fr=await caches.open(j1e),ea=Xn.map(({id:gs,previewId:Bo})=>ne.realmUrl(Bo??gs));for(const gs of await Fr.keys())ea.some(Bo=>gs.url.startsWith(Bo))&&await Fr.delete(gs);const ra=await caches.open(I_r);for(const gs of ea)await ra.delete(`${gs}__storage`);Xn.length>0&&await vc()}).catch(Xn=>console.warn("[editor] could not empty the trash",Xn)),{shell:xs,projects:zi,dataLayer:vt,dispose:()=>{bt.dispose(),Me++,Dt(),ne.dispose(),clearInterval(Gt),document.removeEventListener("visibilitychange",Le),mt.flush().finally(()=>mt.dispose())}}};let C7=null,Hq=null,xne=null,sCt=!1;function svr(){if(C7!==null)return C7;const t=window.__dclEditorHost;if(t===void 0||t.version!==0&&t.version!==1)return console.error("[editor] window.__dclEditorHost (contract v0 or v1) is missing: nothing to mount into"),null;console.log("[editor] web build 2026-10-06T15:34:17.262Z"),cOt(t),rOt(a=>t.engineConsole(a)),pNt(()=>t.identity()),lzn.needed=!1;const n=avr({host:t,webBuild:Xyr(t.editorBase)});window.editorShell=ovr(n.shell,t),DPt(n.dataLayer??null),QWe();const r=document.createElement("link");return r.rel="stylesheet",r.href=new URL("editor.css",t.editorBase).href,r.integrity=ure("editor.css"),r.crossOrigin="anonymous",r.onerror=()=>console.error("[editor] editor.css did not load or does not match the hash this editor was published with: its fonts are not applied"),document.head.appendChild(r),CA.project=null,CA.notice=null,C7={host:t,web:n,fonts:r},C7}function z1e(){const t=Hq;Hq=null,t==null||t.unmount()}function ovr(t,n){return{...t,openProject:async r=>{const a=Hq;z1e(),a==null||a.api.close(),xne??(xne=KLt(n.container,P.jsx(fhr,{}))),n.setMode("edit"),CA.project=r,CA.opens++,await t.openProject(r)}}}function cvr(t,n){var m;const r=svr();if(r===null)return()=>{};z1e();const a=document.createElement("div");a.style.cssText="position:relative;width:100%;height:100%",V$n(a),t.appendChild(a);const c=KLt(a,P.jsx(G$n,{}),"eui-create-root"),l={api:n,unmount:()=>{c(),a.remove()}};Hq=l;const d=sCt?null:((m=q3(r.host))==null?void 0:m.openProject)??null;return sCt=!0,d!==null&&r.web.projects.find(d).catch(()=>!1).then(_=>{var S;Hq===l&&(_?(S=window.editorShell)==null||S.openProject(d):CA.notice=`“${d}” is not on this device or on your account. Here are your scenes.`)}),()=>{Hq===l&&z1e()}}function lvr(){z1e();const t=C7;if(t===null)return;C7=null;const n=J3();xne==null||xne(),xne=null,t.fonts.remove(),CA.project=null,delete window.editorShell,pNt(null),rOt(null),cOt(null),t.host.setMode("off"),n.finally(()=>{var r,a;(a=(r=t.web).dispose)==null||a.call(r),C7===null&&DPt(null)})}window.__dclEditor={mountHome:cvr,unmount:lvr};
33892
+ `;j.set("data.json",new TextEncoder().encode(ie));const Z=eVe(SUt(Q,E)).slice(0,Jyr).replace(/_+$/,"")||"prefab",he=new Set((await t.list()).map(K=>K.name));let de=1;for(let K=0;K<Hyr;K++){let Te=Z;for(;he.has(Te);)Te=`${Z}_${++de}`;try{return await d(Te,j),{ref:`user:${Te}`,scope:"user",data:ie}}catch(Me){if(!(Me instanceof uUt))throw Me;he.add(Te)}}throw new Error("could not find a free name in your library — try again")},remove:m=>t.remove(m)}}function ure(t){const n={"web-build/worker.js":"sha384-ifej6zgLpr5r83XEO56nt4ZXOzQlxTmShy+nL+opSlQHaMKSawtrTn/Ty7zDTJbF","web-build/esbuild.wasm":"sha384-V8Ml7eHSlgGTb/TR1IYB6LtWwAW1NXLDPRjL2FjxwIfqDkSZ/hp+zmfvXDHqu8NV","web-build/sdk-snapshot.json":"sha384-W6PmOgO8Kk3JU+1ah/OJqTTxScfb4+BnVuC25NhYFKIjb5WnUUCE3O4BuPC7NLvg","prefabs/catalog.json":"sha384-rxpF/AYN1NtzvtLqUzjnnLFSv4aNP7+QCxWsLLr5hksKAsRLuI849rQNzDwJAT5t","editor.css":"sha384-UtVv2Sy+fO5029No4SyC1iW7hUXbIfy4nqF1QP2S8A7M1rUOv5qoJPnxdiNzAF60"}[t];if(n===void 0)throw new Error(`${t} is not one of the editor's published files`);return n}function Xyr(t){const n=r=>new URL(`web-build/${r}`,t).href;return{workerUrl:n("worker.js"),wasmUrl:n("esbuild.wasm"),snapshotUrl:n("sdk-snapshot.json"),integrity:{worker:ure("web-build/worker.js"),wasm:ure("web-build/esbuild.wasm"),snapshot:ure("web-build/sdk-snapshot.json")}}}const aCt=4e3,Zyr=4e6,Kyr=yNt*24*60*60*1e3,evr="assets/images",tvr=3e3,nvr=100,rvr="Sign in to keep prefabs in your own library. The built-in prefabs work without it.",ivr=t=>t instanceof Error?t.message:String(t),avr=({host:t,webBuild:n})=>{const r=new Tgr(ygr()),a=q3(t),c=a===null||a.services.projects===null?null:lUt(a.services.projects,(Xn,Fr)=>a.signedFetch(Xn,Fr)),l=()=>{const{address:Xn,isGuest:Fr}=t.identity();return Fr||Xn===null?null:Xn.toLowerCase()},d=[],m=[],_=[],S=[],E=[],A=Xn=>{d.push(Xn),d.length>aCt&&d.splice(0,d.length-aCt);for(const Fr of m)Fr(Xn)},L=Xn=>{for(const Fr of _)Fr(Xn)},j=new Map,z=new Set,Q=aNt.then(Ryr),ne=Byr({pageDir:t.pageDir,urls:n,machineId:async Xn=>Myr(await Q,l()??"guest",Xn),emit:L,log:A,packages:r.packages,saveLock:async(Xn,Fr)=>{await r.write(Xn,hM,Fr),mt.touched(Xn,hM),(Z==null?void 0:Z.id)===Xn&&Z.files.set(hM,Fr)},onPackages:(Xn,Fr)=>{if(Fr===null){j.delete(Xn);return}j.set(Xn,Fr);for(const ea of z)ea(Xn,Fr)}});let ie=null,Z=null,he=null,de=null;async function K(Xn){var ra;const Fr=(ra=(await r.list()).find(gs=>gs.id===Xn))==null?void 0:ra.previewId;if(Fr!==void 0)return Fr;const ea="p"+Array.from(crypto.getRandomValues(new Uint8Array(16)),gs=>gs.toString(16).padStart(2,"0")).join("");return await r.patch(Xn,{previewId:ea}),ea}async function Te(Xn){const Fr=new URL("preview/",t.pageDir).href,ea=await caches.open(j1e);for(const ra of await ea.keys())ra.url.startsWith(Fr)&&(Xn===null||!ra.url.startsWith(Xn))&&await ea.delete(ra)}let Me=0,It=Promise.resolve(),Ut=Promise.resolve();const bt=B_r({service:(a==null?void 0:a.services.projects)??null,fetch:(Xn,Fr)=>a===null?Promise.reject(new Error("The assistant service is not configured.")):a.signedFetch(Xn,Fr),wallet:l,project:()=>{const Xn=ui();return{id:Xn.id,tools:{files:()=>Xn.files,write:(Fr,ea,ra,gs)=>Ve(Xn.id,Fr,ea,{expected:ra,signal:gs}),scene:(Fr,ea)=>nUt(Fr,ea,async ra=>{await st(Xn.id,Bo=>Q_r(Bo,ra));const gs=Bx(await _t(Xn.id,"scene.json"));return{requiredPermissions:(gs==null?void 0:gs.requiredPermissions)??[],spawnPoints:(gs==null?void 0:gs.spawnPoints)??[]}}),written:U_r(),build:async Fr=>{Fr.throwIfAborted(),await Ut;const ea=await ne.build(Xn.id,new Map(Xn.files));return Fr.throwIfAborted(),{ok:ea.ok,diagnostics:ea.diagnostics}}}}}});function Dt(){bt.reset(),de==null||de(),de=null,Z!==null&&(Z.stop(),r.close(Z.id),mt.flush(Z.id),Z=null,he=null)}async function _t(Xn,Fr){return(Z==null?void 0:Z.id)===Xn?Z.files.get(Fr):r.read(Xn,Fr).catch(ea=>{if(!XP(ea))throw ea})}function Ve(Xn,Fr,ea,ra){const gs=Ut.then(async()=>{if(ra==null||ra.signal.throwIfAborted(),ra!==void 0&&((Z==null?void 0:Z.id)!==Xn||!L_r(Z.files.get(Fr),ra.expected)))throw new Error("This file changed. Read it again before writing.");await r.write(Xn,Fr,ea),mt.touched(Xn,Fr),(Z==null?void 0:Z.id)===Xn&&(Z.files.set(Fr,ea),Z.changed(Fr))});return Ut=gs.catch(Bo=>console.error("[editor] file write failed",Bo)),gs}function Xt(Xn,Fr){const ea=Ut.then(async()=>{const ra=await r.remove(Xn,Fr);return ra&&mt.touched(Xn,Fr),ra&&(Z==null?void 0:Z.id)===Xn&&Z.files.delete(Fr)&&Z.changed(Fr),ra});return Ut=ea.catch(ra=>console.error("[editor] file removal failed",ra)),ea}function He(Xn){const Fr=ui();if(Fr.id!==Xn)throw new Error("that scene is not the one open");return{files:()=>Fr.files,write:(ea,ra)=>Ve(Xn,ea,ra),remove:async ea=>{await Xt(Xn,ea)}}}async function ze(Xn){var ra;const Fr=Bx(await _t(Xn,"scene.json").catch(()=>{})),ea=(((ra=Fr==null?void 0:Fr.display)==null?void 0:ra.title)??"").replace(/[\x00-\x1f\x7f]/g,"").replace(new RegExp(cUt.source,"g"),"").trim().slice(0,nvr);return ea===""?Xn:ea}async function Wt(Xn,Fr){const ea=(await r.list()).find(gs=>gs.id===Xn);if(ea===void 0)return null;const ra=await r.duplicate(Xn,`${ea.name} ${Fr}`,mt.remoteIds());return await st(ra.id,gs=>{var Bo;return{...gs,display:{...gs.display??{},title:`${((Bo=gs.display)==null?void 0:Bo.title)||ea.name} ${Fr}`}}}),ra.id}const mt=Igr({store:r,session:()=>{const Xn=l();return c===null||Xn===null?null:{api:c,wallet:Xn}},account:()=>c===null?"unavailable":l()===null?"guest":"on",hash:M1e,title:ze,duplicate:async Xn=>{const Fr=await Wt(Xn,gNt(new Date));if(Fr===null)throw new Error("The scene is no longer on this device");return Fr}});let Pt=!1,Tt=0;async function zt(){const Xn=++Tt,Fr=l()!==null&&(await bt.shell.aiProviders()).some(ea=>ea.available);Xn!==Tt||Fr===Pt||(Pt=Fr,z0())}zt();let Qt=l();const Gt=setInterval(()=>{const Xn=l();Xn!==Qt&&(Qt=Xn,bt.reset(),z0(),zt(),mt.refresh(!0),Te(he).catch(Fr=>console.warn("[editor] could not clear the previews",Fr)))},tvr),Le=()=>{document.visibilityState==="hidden"&&mt.flush()};document.addEventListener("visibilitychange",Le);const Ze=new Set;async function st(Xn,Fr){const ea=Bx(await _t(Xn,"scene.json"));if(ea===null)throw new Error("scene.json is missing or is not valid JSON");await Ve(Xn,"scene.json",IEt(Fr(ea)))}async function sn(Xn,Fr){if(Fr==null||Fr==="")return null;const ea=await _t(Xn,Fr).catch(()=>{});return ea===void 0||ea.length>Zyr?null:NEt(Fr,ea)}async function Mn(Xn,Fr=mt.status().projects){var ra,gs,Bo,ef;const ea=Bx(await _t(Xn.id,"scene.json").catch(()=>{}));return{sync:Fr[Xn.id],path:Xn.id,name:Xn.name,title:((ra=ea==null?void 0:ea.display)==null?void 0:ra.title)||Xn.name,world:((gs=ea==null?void 0:ea.worldConfiguration)==null?void 0:gs.name)||null,parcels:Array.isArray((Bo=ea==null?void 0:ea.scene)==null?void 0:Bo.parcels)?ea.scene.parcels.length:0,thumbnail:await sn(Xn.id,(ef=ea==null?void 0:ea.display)==null?void 0:ef.navmapThumbnail),favourite:Xn.favourite,lastOpened:Xn.lastOpened,published:Xn.published,deletedAt:Xn.deletedAt??void 0}}async function dn(Xn,Fr){var ra,gs,Bo,ef,Qm;Dt(),d.length=0,L({type:"sessionStarted"});const ea=xr=>{if(Dt(),Fr===Me){A(`✖ ${xr}`);for(const Pc of E)Pc(xr)}};try{if(await mt.prepareOpen(Xn,(wu,Vv)=>A(`Downloading from your account… ${wu}/${Vv}`)),Fr!==Me)return;if(!await r.open(Xn)){ea("This scene is open in another tab. Close it there to edit it here.");return}const xr=await r.readAll(Xn).catch(wu=>{throw r.close(Xn),wu});if(Fr!==Me){r.close(Xn);return}const Pc=await K(Xn);if(Fr!==Me){r.close(Xn);return}const sd=ne.open(Xn,xr,Pc);Z=sd;const xi=ne.realmUrl(Pc);if(he=xi,A(`▶ Opening ${((gs=(ra=Bx(sd.files.get("scene.json")))==null?void 0:ra.display)==null?void 0:gs.title)||Xn}`),!await sd.start()&&!await sd.published()){if(Fr!==Me)return;A("✖ The scene did not build.");for(const wu of E)wu("The scene did not build.");return}if(await r.patch(Xn,{lastOpened:Date.now()}),Fr!==Me){Dt();return}const dl=Bx(sd.files.get("scene.json"))??{};ie={realm:xi.replace(/\/$/,""),systemScene:"",position:((Bo=dl.scene)==null?void 0:Bo.base)??((Qm=(ef=dl.scene)==null?void 0:ef.parcels)==null?void 0:Qm[0])??"0,0",spawn:G_r(dl),spawnPoints:JSON.stringify(Array.isArray(dl.spawnPoints)?dl.spawnPoints:[])},de=Wyr(wu=>t.engineConsole(wu),A);for(const wu of S)wu(ie)}catch(xr){ea(ivr(xr))}}function kn(Xn){ie=null;const Fr=++Me,ea=bt.reset(),ra=It.then(async()=>{await ea,await Ut,Fr===Me&&await Xn(Fr)});return It=ra.catch(gs=>console.error("[editor] project transition failed",gs)),ra}function ui(){if(Z===null)throw new Error("no project is open");return Z}const vt={saveFile:async({path:Xn,content:Fr})=>Ve(ui().id,Xn,Fr),getFile:async({path:Xn})=>{const Fr=ui().files.get(Xn)??byr(Xn);if(Fr===void 0)throw new Error(`no such file: ${Xn}`);return{content:Fr}},removeFiles:async({filePaths:Xn})=>{const Fr=ui(),ea=[],ra=[];for(const gs of Xn)(await Xt(Fr.id,gs).catch(()=>!1)?ea:ra).push(gs);return{success:ea,failed:ra}},getFilesSizes:async({path:Xn,ignore:Fr})=>{const ea=Xn===""?"":`${Xn.replace(/\/+$/,"")}/`;return{files:[...ui().files.keys()].filter(gs=>gs.startsWith(ea)&&!gs.split("/").some(Bo=>Fr.includes(Bo))).sort().map(gs=>({path:gs}))}}},zi={async find(Xn){return(await r.list()).some(Fr=>Fr.id===Xn)?!0:(await mt.refresh(!0),mt.remoteOnly().some(Fr=>Fr.id===Xn))},files:async Xn=>(Z==null?void 0:Z.id)===Xn?new Map(Z.files):r.readAll(Xn),manifest:Xn=>mt.manifest(Xn),build:async(Xn,Fr)=>ne.build(Xn,await zi.files(Xn),Fr),dependencies:async Xn=>iUt(await _t(Xn,"package.json")),onImported:Xn=>(Ze.add(Xn),()=>Ze.delete(Xn))},Br=a===null?null:ggr({host:a,setWorld:async(Xn,Fr)=>{var ra,gs;((gs=(ra=Bx(await _t(Xn,"scene.json")))==null?void 0:ra.worldConfiguration)==null?void 0:gs.name)!==Fr&&await st(Xn,Bo=>({...Bo,worldConfiguration:{...Bo.worldConfiguration??{},name:Fr}}))},files:Xn=>zi.files(Xn),build:(Xn,Fr)=>ne.build(Xn,Fr,{production:!0}),published:(Xn,Fr)=>r.patch(Xn,{published:Fr})}),_o=(a==null?void 0:a.services.projects)==null?null:Yyr(Cgr(a.services.projects,(Xn,Fr)=>a.signedFetch(Xn,Fr)),M1e),Bs=Oyr({builtin:Ggr(t.editorBase,ure("prefabs/catalog.json"),U9t),user:()=>_o!==null&&l()!==null?_o.tree:null}),xs={...(a==null?void 0:a.services.projects)==null?{}:{...bt.shell,aiOffered:()=>Pt,aiTranscript:()=>{const Xn=Qt;if(Xn===null||Z===null)return null;const Fr=Z.id;return{owner:`${Fr}@${Xn.toLowerCase()}`,load:()=>r.transcript(Fr,Xn),save:ea=>r.setTranscript(Fr,Xn,ea)}}},pickProject:async()=>{},openProject:Xn=>kn(Fr=>dn(Xn,Fr)),closeProject:()=>kn(async()=>{Dt(),L({type:"sessionStarted"}),A("■ Scene closed"),await Te(null).catch(Xn=>console.warn("[editor] could not clear the previews",Xn))}),getState:async()=>{const Xn=await r.list(),Fr=mt.status().projects,ea=mt.remoteOnly().map(ra=>({path:ra.id,name:ra.name,title:ra.name,world:null,parcels:0,thumbnail:null,remoteOnly:!0}));return{recentProjects:[...Xn].sort((ra,gs)=>gs.lastOpened-ra.lastOpened).map(ra=>ra.id),projects:[...await Promise.all(Xn.map(ra=>Mn(ra,Fr))),...ea],logs:[...d],bevyWebDir:"",editorSceneDir:"",webPort:0,scenePort:0,editorScenePort:0,favourites:Xn.filter(ra=>ra.favourite).map(ra=>ra.id)}},onStackLog:Xn=>{m.push(Xn)},onBuildEvent:Xn=>{_.push(Xn)},onServersReady:Xn=>{S.push(Xn)},requestReady:async()=>ie,onServersError:Xn=>{E.push(Xn)},toggleFavourite:async Xn=>{const Fr=(await r.list()).find(ea=>ea.id===Xn);Fr!==void 0&&await r.patch(Xn,{favourite:!Fr.favourite})},deleteProject:async Xn=>{const Fr=await r.trash(Xn);return Fr&&mt.trashed(Xn),Fr},trashedProjects:async()=>Promise.all((await r.trashed()).map(Xn=>Mn(Xn))),restoreProject:async Xn=>{const Fr=await r.restore(Xn);return Fr&&mt.restored(Xn),Fr},syncStatus:async()=>(mt.refresh(),mt.status()),onSyncStatus:Xn=>mt.subscribe(Xn),resolveSyncConflict:(Xn,Fr)=>mt.resolve(Xn,Fr),exportProject:async Xn=>Vgr(await ze(Xn),await zi.files(Xn)),importProject:async Xn=>{const Fr=await qgr(Xn,async(ea,ra)=>{const gs=await r.create(ea,ra,{taken:mt.remoteIds()});return mt.touched(gs.id,"scene.json"),gs.id});if((Fr==null?void 0:Fr.ok)===!0){const{id:ea,needsPackages:ra}=Fr.report;Object.keys(ra).length>0&&r.readAll(ea).then(gs=>ne.install(ea,gs)).catch(gs=>console.warn("[editor] could not install the packages of",ea,gs));for(const gs of Ze)gs(Fr.report)}return Fr},projectPackages:async Xn=>j.get(Xn)??null,onProjectPackages:Xn=>(z.add(Xn),()=>z.delete(Xn)),...Br===null||a===null?{}:{publishScene:(Xn,Fr,ea)=>Br.publish(Xn,Fr,ea),publishStop:async()=>Br.stop(),publishWorlds:async()=>{const Xn=l();return Xn===null?[]:hgr(Xn,a.services.worldsContent.replace(/\/+$/,""))}},canImportFolder:zgr(),renameProject:(Xn,Fr)=>st(Xn,ea=>({...ea,display:{...ea.display??{},title:Fr.trim()}})),duplicateProject:Xn=>Wt(Xn,"copy"),sceneTemplates:async()=>gyr(),createScene:async(Xn,Fr,ea)=>{const ra=bUt(ea),gs=Bx(ra.get("scene.json"));if(gs===null)throw new Error(`template not found: ${ea}`);ra.set("scene.json",IEt({...gs,display:{...gs.display??{},title:Fr.trim()}}));const Bo=await r.create(Fr,ra,{taken:mt.remoteIds()});return mt.touched(Bo.id,"scene.json"),Bo.id},openExternal:async Xn=>{/^https?:$/.test(new URL(Xn).protocol)&&window.open(Xn,"_blank","noopener,noreferrer")},compositeEntityIds:async Xn=>{for(const Fr of J_r){const ea=await _t(Xn,Fr);if(ea!==void 0)return H_r(new TextDecoder().decode(ea))}return[]},sceneSettings:async Xn=>{const Fr=Bx(await _t(Xn,"scene.json"));if(Fr===null)throw new Error("scene.json is missing or is not valid JSON");const ea=z_r(Fr);return{...ea,thumbnail:await sn(Xn,ea.thumbnailPath)}},saveSceneSettings:async(Xn,Fr)=>{const ea=W_r(Fr);return ea!==null?ea:(await st(Xn,ra=>q_r(ra,Fr)),null)},pickSceneThumbnail:async Xn=>{const Fr=await vUt(Object.values(qze).join(","));if(Fr===null)return null;const ea=rUt(Fr.name);if(qze[ea]===void 0)throw new Error("not a supported image (png, jpg, gif, webp)");const ra=`${evr}/scene-thumbnail${ea}`,gs=new Uint8Array(await Fr.arrayBuffer());return await Ve(Xn,ra,gs),{path:ra,dataUrl:NEt(ra,gs)}},appVersion:async()=>D_r,prefabLibraryList:()=>Bs.list(),prefabLibraryCopyIn:async(Xn,Fr)=>Bs.copyIn(Xn,He(Fr)),prefabLibraryUpdateCopy:async(Xn,Fr)=>Bs.updateCopy(Xn,He(Fr)),prefabUserLibrary:()=>_o===null?"unavailable":l()===null?"guest":"on",..._o===null?{}:{prefabLibraryCopyOut:async(Xn,Fr)=>{if(l()===null)throw new Error(rvr);return _o.copyOut(He(Xn),Fr)},prefabLibraryDelete:async Xn=>{const Fr=xUt(Xn);return(Fr==null?void 0:Fr.scope)==="user"&&l()!==null?_o.remove(Fr.name):!1}}};async function vc(){const Xn=new Set;for(const Fr of[...await r.list(),...await r.trashed()]){const ea=q9t(await _t(Fr.id,hM).catch(()=>{}));for(const ra of Object.keys((ea==null?void 0:ea.packages)??{}))Xn.add(ra);for(const[ra,gs]of Object.entries((ea==null?void 0:ea.dependencies)??{}))Xn.add(E7(ra,gs))}for(const Fr of await r.packages.keys())Xn.has(Fr)||await r.packages.remove(Fr)}return r.purge(Date.now()-Kyr).then(async Xn=>{const Fr=await caches.open(j1e),ea=Xn.map(({id:gs,previewId:Bo})=>ne.realmUrl(Bo??gs));for(const gs of await Fr.keys())ea.some(Bo=>gs.url.startsWith(Bo))&&await Fr.delete(gs);const ra=await caches.open(I_r);for(const gs of ea)await ra.delete(`${gs}__storage`);Xn.length>0&&await vc()}).catch(Xn=>console.warn("[editor] could not empty the trash",Xn)),{shell:xs,projects:zi,dataLayer:vt,dispose:()=>{bt.dispose(),Me++,Dt(),ne.dispose(),clearInterval(Gt),document.removeEventListener("visibilitychange",Le),mt.flush().finally(()=>mt.dispose())}}};let C7=null,Hq=null,xne=null,sCt=!1;function svr(){if(C7!==null)return C7;const t=window.__dclEditorHost;if(t===void 0||t.version!==0&&t.version!==1)return console.error("[editor] window.__dclEditorHost (contract v0 or v1) is missing: nothing to mount into"),null;console.log("[editor] web build 2026-10-06T19:19:12.550Z"),cOt(t),rOt(a=>t.engineConsole(a)),pNt(()=>t.identity()),lzn.needed=!1;const n=avr({host:t,webBuild:Xyr(t.editorBase)});window.editorShell=ovr(n.shell,t),DPt(n.dataLayer??null),QWe();const r=document.createElement("link");return r.rel="stylesheet",r.href=new URL("editor.css",t.editorBase).href,r.integrity=ure("editor.css"),r.crossOrigin="anonymous",r.onerror=()=>console.error("[editor] editor.css did not load or does not match the hash this editor was published with: its fonts are not applied"),document.head.appendChild(r),CA.project=null,CA.notice=null,C7={host:t,web:n,fonts:r},C7}function z1e(){const t=Hq;Hq=null,t==null||t.unmount()}function ovr(t,n){return{...t,openProject:async r=>{const a=Hq;z1e(),a==null||a.api.close(),xne??(xne=KLt(n.container,P.jsx(fhr,{}))),n.setMode("edit"),CA.project=r,CA.opens++,await t.openProject(r)}}}function cvr(t,n){var m;const r=svr();if(r===null)return()=>{};z1e();const a=document.createElement("div");a.style.cssText="position:relative;width:100%;height:100%",V$n(a),t.appendChild(a);const c=KLt(a,P.jsx(G$n,{}),"eui-create-root"),l={api:n,unmount:()=>{c(),a.remove()}};Hq=l;const d=sCt?null:((m=q3(r.host))==null?void 0:m.openProject)??null;return sCt=!0,d!==null&&r.web.projects.find(d).catch(()=>!1).then(_=>{var S;Hq===l&&(_?(S=window.editorShell)==null||S.openProject(d):CA.notice=`“${d}” is not on this device or on your account. Here are your scenes.`)}),()=>{Hq===l&&z1e()}}function lvr(){z1e();const t=C7;if(t===null)return;C7=null;const n=J3();xne==null||xne(),xne=null,t.fonts.remove(),CA.project=null,delete window.editorShell,pNt(null),rOt(null),cOt(null),t.host.setMode("off"),n.finally(()=>{var r,a;(a=(r=t.web).dispose)==null||a.call(r),C7===null&&DPt(null)})}window.__dclEditor={mountHome:cvr,unmount:lvr};
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/web-editor",
3
- "version": "0.1.1-37488485379.commit-740cc2a",
3
+ "version": "0.1.1-37517974772.commit-b9847a1",
4
4
  "description": "The Decentraland scene editor for the web explorer: editor.js plus the files it loads beside it. Served by version, not installed.",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/dcl-regenesislabs/bevy-editor.git",
8
8
  "directory": "packages/web"
9
9
  },
10
- "commit": "740cc2ae0278748f27b436b422fef6e2162807a8"
10
+ "commit": "b9847a1334ed688a86f5f66fe9a6e75eaf43fd32"
11
11
  }