vis-core 0.33.19 → 0.33.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/{dist-6e_r_Ils.js → dist-CBwlzuju.js} +1 -1
- package/dist/e--VPnb9WD.js +1 -0
- package/dist/index.d.ts +18 -12
- package/dist/index.js +1 -1
- package/dist/io.d.ts +14 -6
- package/dist/io.js +1 -1
- package/dist/resource-url-MTT03G1N.js +1 -0
- package/dist/runtimeImages-bGdtc9BO.js +1 -0
- package/dist/{schema-Brre1WzE.js → schema-DCtwlcYa.js} +1 -1
- package/dist/validation-ByK1cs9B.js +1 -0
- package/package.json +2 -2
- package/dist/e-BTBbEYEO.js +0 -1
- package/dist/runtimeImages-DCG8lEY9.js +0 -1
- package/dist/sha2-BCqd-su1.js +0 -1
- package/dist/validation-DDQJc7mH.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,A as t,At as n,B as r,C as i,Ct as o,D as s,Dt as a,E as c,Et as l,F as d,G as u,H as p,I as h,J as f,K as v,L as m,M as g,Mt as y,N as b,Nt as w,Ot as j,P as S,Q as A,S as O,St as x,T as I,Tt as M,U as E,V as P,W as D,X as C,Y as R,Z as L,_ as k,_t as B,a as T,at as U,b as _,bt as G,c as z,ct as $,d as W,dt as N,et as F,f as q,ft as V,g as H,gt as K,h as X,ht as Y,i as J,it as Z,j as Q,jt as ee,k as te,kt as ne,l as re,lt as ie,m as oe,mt as se,n as ae,nt as ce,o as le,ot as de,p as ue,pt as pe,q as he,r as fe,rt as ve,s as me,st as ge,t as ye,tt as be,ut as we,v as je,vt as Se,w as Ae,wt as Oe,x as xe,xt as Ie,y as Me,yt as Ee,z as Pe}from"./dist-6e_r_Ils.js";import{a as De,i as Ce,o as Re,r as Le}from"./sha2-BCqd-su1.js";import{a as ke,i as Be,n as Te,o as Ue,r as _e,s as Ge,t as ze}from"./schema-Brre1WzE.js";import{b as $e,c as We,d as Ne,l as Fe,m as qe,n as Ve,t as He,u as Ke,x as Xe}from"./e-BTBbEYEO.js";import{A as Ye,C as Je,D as Ze,E as Qe,F as et,I as tt,L as nt,M as rt,N as it,O as ot,P as st,R as at,S as ct,T as lt,_ as dt,a as ut,b as pt,c as ht,d as ft,f as vt,g as mt,h as gt,i as yt,j as bt,k as wt,l as jt,m as St,n as At,o as Ot,p as xt,s as It,t as Mt,u as Et,v as Pt,w as Dt,x as Ct,y as Rt}from"./validation-DDQJc7mH.js";import{i as Lt,n as kt,r as Bt,t as Tt}from"./runtimeImages-DCG8lEY9.js";import{EventEmitter as Ut}from"events";import _t from"geojson-cn/json-lite/all.json";import{booleanPointInPolygon as Gt,center as zt,centroid as $t,point as Wt,polygon as Nt}from"@turf/turf";if(!Array.prototype.at){function ts(e){if((e=Math.trunc(e)||0)<0&&(e+=this.length),!(e<0||e>=this.length))return this[e]}const ns=Reflect.getPrototypeOf(Int8Array);for(const rs of[Array,String,ns])Object.defineProperty(rs.prototype,"at",{value:ts,writable:!0,enumerable:!1,configurable:!0})}var Ft="0.33.19";function qt(e){var t;if(null==e?void 0:e.aborted)throw null!==(t=e.reason)&&void 0!==t?t:new DOMException("Operation cancelled","AbortError")}function Vt(e,t){return t?new Promise((n,r)=>{const i=()=>{var e;return r(null!==(e=t.reason)&&void 0!==e?e:new DOMException("Operation cancelled","AbortError"))};t.addEventListener("abort",i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener("abort",i)),t.aborted&&i()}):e}var Ht=class{constructor(){Re(this,"pending",Promise.resolve()),Re(this,"current",void 0),Re(this,"disposed",!1)}run(e,t){if(null==t?void 0:t.aborted)return Promise.reject(t.reason);if(this.disposed)return Promise.reject(new DOMException("Operation owner disposed","AbortError"));this.cancel();const n=new AbortController;this.current=n;const r=()=>n.abort(null==t?void 0:t.reason);null==t||t.addEventListener("abort",r,{once:!0});const i=this.pending.then(Ce(function*(){qt(n.signal);const t=yield e(n.signal);return qt(n.signal),t})).finally(()=>{null==t||t.removeEventListener("abort",r),this.current===n&&(this.current=void 0)});return this.pending=i.catch(()=>{}),Vt(i,n.signal)}cancel(){var e;null===(e=this.current)||void 0===e||e.abort()}dispose(){this.disposed=!0,this.cancel()}};function Kt(e){if(null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e;if(Array.isArray(e))return e.map(Kt).filter(e=>void 0!==e);if(!e||Object.getPrototypeOf(e)!==Object.prototype||e.isMaterial||e.isTexture||e.isObject3D||e.isBufferGeometry)return;const t={};for(const[n,r]of Object.entries(e)){const e=Kt(r);void 0!==e&&(t[n]=e)}return t}function Xt(e,t,n){return De(De({},structuredClone(e)),{},{scene:t,vis:De(De({},structuredClone(e.vis)),{},{options:De(De({},structuredClone(e.vis.options)),Kt(n.options))}),cs:structuredClone(n.cameraState),csa:n.cameraStateActive})}function Yt(e,t){var n;et(e);const r=e.scenes.find(e=>e.id===t);if(!r)throw new Error(`Scene ${t} was not found`);const i=S("decode"),o=e=>{const t=he(e,i),n=/* @__PURE__ */new Set,r=/* @__PURE__ */new WeakSet,o=e=>{if(Array.isArray(e))return e.map(o);if(e&&"object"==typeof e){if(r.has(e))return structuredClone(e);r.add(e)}if(!ArrayBuffer.isView(null==e?void 0:e.data))return e;const t=e.data.buffer;return n.has(t)?structuredClone(e):(n.add(t),e)};return t.images?De(De({},t),{},{images:t.images.map(e=>De(De({},e),{},{url:o(e.url)}))}):t},s=e.materialLibrary,a=pt(r,s,e.prefabLibrary).map(e=>De(De({},e),{},{material:o(e.material)})),c=De(De({},r),{},{scene:o(r.scene)}),l=null===(n=e.prefabLibrary)||void 0===n?void 0:n.map(e=>De(De({},e),{},{snapshot:o(e.snapshot)}));return De(De(De({},e),{},{scenes:[c]},s?{materialLibrary:a}:{}),l?{prefabLibrary:l}:{})}var Jt=["scene"];function Zt(e,t){if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof ArrayBuffer){if(e.byteLength!==t.byteLength)return!1;const n=new Uint8Array(t);return new Uint8Array(e).every((e,t)=>e===n[t])}if(e instanceof Date)return Object.is(e.getTime(),t.getTime());if(!Array.isArray(e)&&Object.getPrototypeOf(e)!==Object.prototype&&null!==Object.getPrototypeOf(e)&&(!ArrayBuffer.isView(e)||e instanceof DataView))return!1;const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&Zt(e[n],t[n]))}var Qt=["prefabLibrary"],en=["baseUrl"],tn=["data"],nn=["scene"],rn=["format","schemaVersion","scenes"];function on(e){return Mt(e),function(e){const{prefabLibrary:t}=e,n=Xe(e,Qt),r=null==t?void 0:t.filter(e=>void 0!==e.sdkKey),i=structuredClone(De(De({},n),(null==r?void 0:r.length)?{prefabLibrary:r}:{})),o=e=>{var t;for(const n of[e.userData,null===(t=e.userData)||void 0===t?void 0:t._baseObjectUserData])n&&(delete n._prefabLink,delete n._prefabNodeId,delete n._prefabPreview,delete n._templatePreviewContainer,delete n.prefab)},s=i.prefabLibrary,a=e=>{var t;if(e){o(e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])a(n)}};for(const f of null!=s?s:[])a(f.snapshot.object);for(const f of i.scenes){var c,l,d,u,p;const e=/* @__PURE__ */new Set,t=n=>{var r,i,o;for(const t of[n.uuid,null===(r=n.userData)||void 0===r?void 0:r._baseObjectUuid,null===(i=n.userData)||void 0===i?void 0:i._baseObjectKey])"string"==typeof t&&e.add(t);for(const e of null!==(o=n.children)&&void 0!==o?o:[])t(e)},n=e=>{var r,i,s,a,c;return!e||((null===(r=e.userData)||void 0===r?void 0:r._prefabPreview)||(null===(i=e.userData)||void 0===i||null===(i=i._baseObjectUserData)||void 0===i?void 0:i._prefabPreview)||(null===(s=e.userData)||void 0===s?void 0:s._templatePreviewContainer)||(null===(a=e.userData)||void 0===a||null===(a=a._baseObjectUserData)||void 0===a?void 0:a._templatePreviewContainer)||"@TemplatePreview"===(null===(c=e.userData)||void 0===c?void 0:c._baseObjectKeyType)?(t(e),!1):(o(e),e.children&&(e.children=e.children.filter(n)),!0))};if(!n(f.scene.object))throw new Error("A scene root cannot be a prefab preview");for(const i of null!==(c=f.interactions)&&void 0!==c?c:[]){var h;if(e.has(i.objectId)||(null===(h=i.filter)||void 0===h||null===(h=h.objectIds)||void 0===h?void 0:h.some(t=>e.has(t))))throw new Error(`Prefab preview is still referenced by an interaction in scene ${f.id}`)}const r=null===(l=f.vis.options)||void 0===l?void 0:l.sceneBindings;if((r?[r.container,r.continentsBackground,r.sphere,r.map,r.secondaryMap,null===(d=r.region)||void 0===d?void 0:d.object,...null!==(u=r.parentBackgrounds)&&void 0!==u?u:[],...null!==(p=r.cities)&&void 0!==p?p:[]]:[]).some(t=>e.has(t)))throw new Error(`Prefab preview is still referenced by scene bindings in scene ${f.id}`)}return i}(e)}function sn(e,t={}){const n=t.omitEditorAssets?on(e):e;t.omitEditorAssets||Mt(n);const r=jt(n);if(r.schemaVersion>=5){var i,o;const e=S("encode");for(const t of r.scenes)t.scene=he(t.scene,e);for(const t of null!==(i=r.materialLibrary)&&void 0!==i?i:[])t.material=he(t.material,e);for(const t of null!==(o=r.prefabLibrary)&&void 0!==o?o:[])t.snapshot=he(t.snapshot,e)}const s=Tt(r);if(r.runtimeAssets){const e=r.runtimeAssets,{baseUrl:t}=e,n=Xe(e,en);r.runtimeAssets=De(De({},n),{},{entries:n.entries.map(e=>{let{data:t}=e,n=Xe(e,tn);if(void 0===t)throw Error(`导出资源缺少文件内容:${n.path}`);return s[n.path]={data:qe(t),mimeType:n.mimeType},n})})}const a=r,c=(t.sceneDirectory||"scenes").replace(/^\/+|\/+$/g,""),l=t.extension||".json.gz",d={},u=a.scenes.map((e,t)=>{const n=`${c}/${t}-${r=e.id,encodeURIComponent(r).replaceAll("%","_")}${l}`;var r;d[n]=structuredClone(e);const{scene:i}=e;return De(De({},Xe(e,nn)),{},{source:n,bytes:(new TextEncoder).encode(JSON.stringify(e)).length})}),{format:p,schemaVersion:h,scenes:f}=a;return{manifest:De(De({},Xe(a,rn)),{},{format:_e,schemaVersion:5,scenes:u}),scenes:d,assets:s}}function an(e){var t,n,r,i;const o=structuredClone(e);if(o.userData){var s;o.uuid=(null===(s=o.userData._resourceSource)||void 0===s?void 0:s.materialUuid)||o.uuid,delete o.userData[it];for(const e of["_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete o.userData[e];Object.keys(o.userData).length||delete o.userData}const a=/* @__PURE__ */new Map,c=/* @__PURE__ */new Map;for(const h of null!==(t=o.textures)&&void 0!==t?t:[]){var l;const e=null===(l=h.userData)||void 0===l?void 0:l[it];a.set(h.uuid,(null==e?void 0:e.textureUuid)||h.uuid),[h.image].flat().forEach((t,n)=>{var r;"string"==typeof t&&c.set(t,(null==e||null===(r=e.imageUuids)||void 0===r?void 0:r[n])||t)}),h.userData&&(delete h.userData[it],Object.keys(h.userData).length||delete h.userData)}const d=(e,t)=>{var n;if("string"==typeof e)return null!==(n=t.get(e))&&void 0!==n?n:e;if(Array.isArray(e))return e.map(e=>d(e,t));if(e&&"object"==typeof e)for(const r of Object.keys(e))e[r]=d(e[r],t);return e};for(const h of null!==(n=o.textures)&&void 0!==n?n:[]){var u;h.uuid=null!==(u=a.get(h.uuid))&&void 0!==u?u:h.uuid,void 0!==h.image&&(h.image=d(h.image,c))}for(const h of null!==(r=o.images)&&void 0!==r?r:[])h.uuid=null!==(i=c.get(h.uuid))&&void 0!==i?i:h.uuid;for(const h of Object.keys(o))if(("map"===h||"matcap"===h||h.endsWith("Map"))&&"string"==typeof o[h]){var p;o[h]=null!==(p=a.get(o[h]))&&void 0!==p?p:o[h]}return o.uniforms&&(o.uniforms=d(o.uniforms,a)),Ae(o,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),o}var cn=["textures","images","metadata"],ln=["textures","images","metadata"],dn=oe;function un(e,t){if(!t.length)return e;const n=new Map(t.map(e=>[e.uuid,e])),r=(null!=e?e:[]).map(e=>{const t=n.get(e.uuid);return n.delete(e.uuid),t&&!dn(e,t)?t:e});return r.push(...n.values()),e&&r.length===e.length&&r.every((t,n)=>t===e[n])?e:r}function pn(e,t){const n=/* @__PURE__ */new Set;for(const[i,o]of Object.entries(e))("map"===i||"matcap"===i||/Map$/.test(i))&&"string"==typeof o&&t.has(o)&&n.add(o);const r=e=>{"string"==typeof e?t.has(e)&&n.add(e):Array.isArray(e)?e.forEach(r):e&&"object"==typeof e&&Object.values(e).forEach(r)};return r(e.uniforms),Ae(e,(e,t)=>r(e[t])),n}function hn(e,t){var n,r,i,o,s;if(!t.size)return e;const a=e.scene,c=/* @__PURE__ */new Set,l=(e,t,n,r=/* @__PURE__ */new Set)=>{var i;if("string"!=typeof e){if(e&&"object"==typeof e&&!ArrayBuffer.isView(e)&&!r.has(e))if(r.add(e),void 0!==e._sharedRef)l(null===(i=a._sharedOptionsPool)||void 0===i?void 0:i[e._sharedRef],t,n,r);else for(const o of Object.values(e))l(o,t,n,r)}else t.has(e)&&n.add(e)},d=e=>{var n,r,i;l(e.material,t,c),l(null===(n=e.userData)||void 0===n?void 0:n._baseObjectOptions,t,c),l(null===(r=e.userData)||void 0===r||null===(r=r._prefabLink)||void 0===r?void 0:r.baseline,t,c);for(const t of null!==(i=e.children)&&void 0!==i?i:[])d(t)};d(a.object),l(e.vis.options,t,c),l(a.materialAliases,t,c);const u=new Set(Object.values(null!==(n=e.materialAliases)&&void 0!==n?n:{}).map(e=>e.assetId)),p=(null!==(r=a.materials)&&void 0!==r?r:[]).filter(e=>{var n;return t.has(e.uuid)&&!c.has(e.uuid)&&!u.has(null===(n=e.userData)||void 0===n?void 0:n._materialAssetId)});if(!p.length)return e;const h=new Set(p.map(e=>e.uuid)),f=a.materials.filter(e=>!h.has(e.uuid)),v=new Set((null!==(i=a.textures)&&void 0!==i?i:[]).map(e=>e.uuid)),m=new Set(p.flatMap(e=>[...pn(e,v)])),g=new Set(f.flatMap(e=>[...pn(e,v)])),y=e=>{var t,n,r;l(e.background,v,g),l(e.environment,v,g),l(null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions,v,g),l(null===(n=e.userData)||void 0===n||null===(n=n._prefabLink)||void 0===n?void 0:n.baseline,v,g);for(const i of null!==(r=e.children)&&void 0!==r?r:[])y(i)};y(a.object),l(e.vis.options,v,g);const b=/* @__PURE__ */new Set,w=null===(o=a.textures)||void 0===o?void 0:o.filter(e=>{if(!m.has(e.uuid)||g.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&b.add(t);return!1}),j=new Set((null!=w?w:[]).flatMap(e=>[e.image].flat())),S=null===(s=a.images)||void 0===s?void 0:s.filter(e=>!b.has(e.uuid)||j.has(e.uuid)),A=De(De({},a),{},{materials:f});for(const[x,I]of[["materials",f],["textures",w],["images",S]]){var O;(null==I?void 0:I.length)!==(null===(O=a[x])||void 0===O?void 0:O.length)&&((null==I?void 0:I.length)?A[x]=I:delete A[x])}return De(De({},e),{},{scene:A})}function fn(e,t,n){const r=new Map(t.map(e=>[e.id,e])),i=/* @__PURE__ */new Map,o=e.scenes.map(e=>{var o,s,a,c,l,d;if(n&&!n.has(e.id)||!t.some(t=>((e,t)=>{var n,r;return(null!==(n=e.scene.materials)&&void 0!==n?n:[]).some(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n._materialAssetId)===t})||Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}).some(e=>e.assetId===t)})(e,t.id)))return e;const u=e.scene,p=/* @__PURE__ */new Set,h=new Set((null!==(o=u.textures)&&void 0!==o?o:[]).map(e=>e.uuid)),f=(null!==(s=u.materials)&&void 0!==s?s:[]).map(t=>{var n;const o=r.get(null===(n=t.userData)||void 0===n?void 0:n[ct]);if(!o)return t;if("scene"===o.scope.kind&&o.scope.sceneId!==e.id)throw Error("场景不能引用其他场景的材质");for(const e of pn(t,h))p.add(e);let s=i.get(o.id);s||(s=ot(o),i.set(o.id,s));const{textures:a,images:c,metadata:l}=s,d=De(De({},Xe(s,cn)),{},{uuid:t.uuid});return dn(t,d)?t:d});for(const[t,n]of Object.entries(null!==(a=e.materialAliases)&&void 0!==a?a:{})){const e=r.get(n.assetId);if(!e||f.some(n=>{var r;return n.uuid===t&&(null===(r=n.userData)||void 0===r?void 0:r._materialAssetId)===e.id}))continue;let o=i.get(e.id);o||(o=ot(e),i.set(e.id,o));const{textures:s,images:a,metadata:c}=o,l=Xe(o,ln);f.push(De(De({},l),{},{uuid:t}))}const v=new Set(f.map(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[ct]})),m=t.filter(e=>v.has(e.id)).map(e=>i.get(e.id));let g=un(u.textures,m.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.textures)&&void 0!==t?t:[]})),y=un(u.images,m.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.images)&&void 0!==t?t:[]}));const b=new Set((null!==(c=g)&&void 0!==c?c:[]).map(e=>e.uuid)),w=/* @__PURE__ */new Set;for(const t of f)for(const e of pn(t,b))w.add(e);const j=e=>{var t;for(const n of["background","environment"])"string"==typeof(null==e?void 0:e[n])&&w.add(e[n]);for(const n of null!==(t=null==e?void 0:e.children)&&void 0!==t?t:[])j(n)};j(u.object);const S=/* @__PURE__ */new Set;if(g){const e=g.filter(e=>{if(!p.has(e.uuid)||w.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&S.add(t);return!1});e.length!==g.length&&(g=e)}if(y&&S.size){var A;const e=new Set((null!==(A=g)&&void 0!==A?A:[]).flatMap(e=>[e.image].flat())),t=y.filter(t=>!S.has(t.uuid)||e.has(t.uuid));t.length!==y.length&&(y=t)}const O=De(De(De({},u),{},{materials:f},void 0!==g?{textures:g}:{}),void 0!==y?{images:y}:{});return(null===(l=u.textures)||void 0===l?void 0:l.length)&&!(null==g?void 0:g.length)&&delete O.textures,(null===(d=u.images)||void 0===d?void 0:d.length)&&!(null==y?void 0:y.length)&&delete O.images,De(De({},e),{},{scene:O})});return De(De({},e),{},{scenes:o})}function vn(e,t){var n,r,i;if(!t.id||(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t.id)))throw Error("材质标识重复");const o=De(De({id:t.id,name:t.name,revision:1,material:Ye(t.material),scope:structuredClone(null!==(r=t.scope)&&void 0!==r?r:{kind:"project"})},void 0!==t.locked?{locked:t.locked}:{}),void 0!==t.alwaysExport?{alwaysExport:t.alwaysExport}:{});return De(De({},e),{},{materialLibrary:[...null!==(i=e.materialLibrary)&&void 0!==i?i:[],o]})}function mn(e,t){var n;if(!(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t.id)))throw Error("材质已不存在");return De(De({},e),{},{materialLibrary:e.materialLibrary.map(e=>e.id===t.id?t:e)})}function gn(e,t){return fn(mn(e,t),[t])}function yn(e,t,n){var r,i,o;const s=e.scenes.findIndex(e=>e.id===t),a=e.scenes[s];if(!a)throw Error("资源场景已不存在");const c=(null!==(r=a.scene.materials)&&void 0!==r?r:[]).filter(e=>{var t;return void 0===(null===(t=e.userData)||void 0===t?void 0:t._materialAssetId)&&(!n||n.has(e.uuid))});if(!c.length)return e;const l=new Set((null!==(i=e.materialLibrary)&&void 0!==i?i:[]).map(e=>e.id)),d=Qe(a),u=[],p=/* @__PURE__ */new Map;for(const f of c){let e=0,n=st(t,"material-asset",f.uuid);for(;l.has(n);)n=st(t,"material-asset",`${f.uuid}:${++e}`);l.add(n);const r={id:n,revision:1,name:f.name||f.uuid,scope:{kind:"scene",sceneId:t},material:an(d(f.uuid))};u.push(r),p.set(f.uuid,De(De({},f),{},{userData:De(De({},f.userData),{},{[ct]:n,[Je]:1})}))}const h=e.scenes.slice();return h[s]=De(De({},a),{},{scene:De(De({},a.scene),{},{materials:a.scene.materials.map(e=>{var t;return null!==(t=p.get(e.uuid))&&void 0!==t?t:e})})}),fn(De(De({},e),{},{scenes:h,materialLibrary:[...null!==(o=e.materialLibrary)&&void 0!==o?o:[],...u]}),u,/* @__PURE__ */new Set([t]))}function bn(e,t){var n;const r=null===(n=e.children)||void 0===n?void 0:n.map(e=>bn(e,t));return t(r&&r.some((t,n)=>t!==e.children[n])?De(De({},e),{},{children:r}):e)}function wn(e,t,n,r,i){return jn(e,t,n,r,i,!1)}function jn(e,t,n,r,i,o){var s,a,l,d;const u=e.scenes.findIndex(e=>e.id===t),p=e.scenes[u];if(!p)throw Error("资源场景已不存在");const h=new Map((null!==(s=e.materialLibrary)&&void 0!==s?s:[]).map(e=>[e.id,e])),f=[...null!==(a=p.scene.materials)&&void 0!==a?a:[]],v=/* @__PURE__ */new Map,m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Set;for(const c of f)m.has(null===(l=c.userData)||void 0===l?void 0:l._materialAssetId)||m.set(null===(d=c.userData)||void 0===d?void 0:d[ct],c.uuid);const y=/* @__PURE__ */new Map;for(const c of/* @__PURE__ */new Set([...n.map(e=>e.assetId),...i?[i]:[]])){const e=h.get(c);if(!e||"scene"===e.scope.kind&&e.scope.sceneId!==t)throw Error("此材质仅属于其他场景");if(y.set(e.id,e),!m.has(e.id)){const t=st(e.id,"material",e.material.uuid);if(f.some(e=>e.uuid===t))throw Error("材质运行时标识重复");f.push({uuid:t,type:e.material.type,userData:{[ct]:e.id,[Je]:e.revision}}),m.set(e.id,t)}}for(const c of n){var b;const e=null!==(b=v.get(c.uuid))&&void 0!==b?b:[];e.push(c),v.set(c.uuid,e)}const w=/* @__PURE__ */new Set,j=bn(p.scene.object,e=>{var t;let n=e;for(const r of null!==(t=v.get(e.uuid))&&void 0!==t?t:[]){if(!Number.isInteger(r.slot)||r.slot<0||(Array.isArray(n.material)?r.slot>=n.material.length:0!==r.slot||(o?void 0===n.material:!n.material)))throw Error("材质部位已不存在");const t=m.get(r.assetId),i=Array.isArray(n.material)?n.material[r.slot]:n.material;"string"==typeof i&&i!==t&&g.add(i),n=De(De({},n),{},{material:Array.isArray(n.material)?n.material.map((e,n)=>n===r.slot?t:e):t}),w.add(e.uuid)}const i=null==r?void 0:r.get(e.uuid);for(const[r,o]of null!=i?i:[])r!==o&&g.add(r);return i?function(e,t,n){let r;const i=e=>e&&"object"==typeof e?1===Object.keys(e).length&&void 0!==e._sharedRef?i(null==t?void 0:t[e._sharedRef]):Array.isArray(e)?e.map(i):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,i(t)])):e;return c(e.userData,(t,o)=>{var s;n.has(t[o])&&(null!==(s=r)&&void 0!==s||(r=De(De({},e),{},{userData:De(De({},e.userData),{},{_baseObjectOptions:i(e.userData._baseObjectOptions)})})))},t),r?(c(r.userData,(e,t)=>{var r;e[t]=null!==(r=n.get(e[t]))&&void 0!==r?r:e[t]}),r):e}(n,p.scene._sharedOptionsPool,i):n});if([...v.keys()].some(e=>!w.has(e)))throw Error("目标对象已不存在");const S=e.scenes.slice();S[u]=De(De({},p),{},{scene:De(De({},p.scene),{},{object:j,materials:f})});const A=fn(De(De({},e),{},{scenes:S}),[...y.values()],/* @__PURE__ */new Set([t])),O=hn(A.scenes[u],g);return O===A.scenes[u]?A:De(De({},A),{},{scenes:A.scenes.map((e,t)=>t===u?O:e)})}function Sn(e,t,n,r,i,o,s=0){var a;const c=null===(a=e.materialLibrary)||void 0===a?void 0:a.find(e=>e.id===t);if(!c)throw Error("材质已不存在");if("scene"===r&&"scene"===c.scope.kind)return e;let l=vn(e,De(De({},c),{},{id:n,name:"scene"===r?c.name:`${c.name} 副本`,scope:"scene"===r?{kind:"scene",sceneId:i}:c.scope}));const d=l.materialLibrary.find(e=>e.id===n);if("asset"===r)return l;if("object"===r){var u,p,h;const r=[],a=/* @__PURE__ */new Map;let c=!1;const f=st(n,"material",d.material.uuid),v=new Set((null!==(u=null===(p=e.scenes.find(e=>e.id===i))||void 0===p?void 0:p.scene.materials)&&void 0!==u?u:[]).filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[ct])===t}).map(e=>e.uuid)),m=(e,t=!1)=>{var i;if(e){if(t||(t=e.uuid===o),t&&(c=!0),t){const t=new Map([...v].map(e=>[e,f]));if(void 0!==e.material){r.push({uuid:e.uuid,slot:s,assetId:n});const i=Array.isArray(e.material)?e.material[s]:e.material;"string"==typeof i&&t.set(i,f)}a.set(e.uuid,t)}for(const n of null!==(i=e.children)&&void 0!==i?i:[])m(n,t)}};if(m(null===(h=e.scenes.find(e=>e.id===i))||void 0===h?void 0:h.scene.object),!c||!r.length)throw Error("目标对象没有可编辑材质");return wn(l,i,r,a,n)}return l=De(De({},l),{},{scenes:l.scenes.map(e=>{var r;return e.id!==i?e:De(De(De({},e),e.materialAliases?{materialAliases:Object.fromEntries(Object.entries(e.materialAliases).map(([e,r])=>[e,r.assetId===t?De(De({},r),{},{assetId:n}):r]))}:{}),{},{scene:De(De({},e.scene),{},{materials:(null!==(r=e.scene.materials)&&void 0!==r?r:[]).map(e=>{var r;return(null===(r=e.userData)||void 0===r?void 0:r._materialAssetId)===t?De(De({},e),{},{userData:De(De({},e.userData),{},{[ct]:n,[Je]:d.revision})}):e})})})})}),fn(l,[d],/* @__PURE__ */new Set([i]))}function An(e,t){var n;const r=null===(n=e.materialLibrary)||void 0===n?void 0:n.find(e=>e.id===t);if(!r)throw Error("材质已不存在");return"project"===r.scope.kind?e:De(De({},e),{},{materialLibrary:e.materialLibrary.map(e=>e===r?De(De({},r),{},{scope:{kind:"project"}}):e)})}function On(e,t){var n;const r=null===(n=e.materialLibrary)||void 0===n?void 0:n.find(e=>e.id===t);if(!r)throw Error("材质已不存在");if(r.locked)throw Error("此材质由场景功能保留,不能删除");if(Rt(e,t).length)throw Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(dt(e,t).some(e=>!e.alias))throw Error("材质仍被对象或场景配置使用,请先替换后再删除");return De(De({},e),{},{materialLibrary:e.materialLibrary.filter(e=>e.id!==t),scenes:e.scenes.map(e=>{var n,r,i,o;const s=new Set((null!==(n=e.scene.materials)&&void 0!==n?n:[]).filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[ct])===t}).map(e=>e.uuid)),a=Object.fromEntries(Object.entries(null!==(r=e.materialAliases)&&void 0!==r?r:{}).filter(([,e])=>{if(e.assetId!==t)return!0;if(e.locked)throw Error("此材质由场景功能保留,不能删除");return!1})),c=Object.fromEntries(Object.entries(null!==(i=e.scene.materialAliases)&&void 0!==i?i:{}).filter(([,e])=>!s.has(e.materialUuid)));if(!s.size&&dn(a,null!==(o=e.materialAliases)&&void 0!==o?o:{}))return e;const l=De(De({},e),{},{scene:De({},e.scene)});return Object.keys(a).length?l.materialAliases=a:delete l.materialAliases,Object.keys(c).length?l.scene.materialAliases=c:delete l.scene.materialAliases,hn(l,s)})})}var xn=Object.freeze({materialize:fn,create:vn,replace:gn,registerSceneMaterials:yn,bindSlots:wn,duplicate:Sn,promote:An,remove:On});function In(e,t={},n=/* @__PURE__ */new WeakSet){const r=null==e?void 0:e.object;if(!r||n.has(r))return;n.add(r);const i=[],o=(n,r)=>{var s,a,c;if(!n)return;const l=n.userData;if(["PlaneMap","Countries"].includes(null==l?void 0:l._baseObjectObjectType)){var d,u,p,h;const t=void 0!==(null===(d=l._baseObjectOptions)||void 0===d?void 0:d._sharedRef)?null===(u=e._sharedOptionsPool)||void 0===u?void 0:u[l._baseObjectOptions._sharedRef]:l._baseObjectOptions,n=null!==(p=l._baseObjectUuid)&&void 0!==p?p:"string"==typeof l._baseObjectKey?l._baseObjectKey.split("#").slice(1).join("#"):void 0;r=null!==(h=null==t?void 0:t.uuid)&&void 0!==h?h:n?String(n):void 0}!function(e,t,n,r){var i,o,s,a,c,l;const d=e.userData;if(!d)return;const u="string"==typeof d._baseObjectKey?d._baseObjectKey:void 0,p=String(null!==(i=null!==(o=d._baseObjectUuid)&&void 0!==o?o:null==u?void 0:u.split("#").slice(1).join("#"))&&void 0!==i?i:""),h=d._baseObjectObjectType,f=null!==(s=d._baseObjectUserData)&&void 0!==s?s:{},v=null!==(a=null==u?void 0:u.split("#")[0])&&void 0!==a?a:d._baseObjectKeyType;var m,g;if("PlaneMap"===h)if(/^\d+$/.test(p))null!==(m=f.mapRole)&&void 0!==m||(f.mapRole="region"),null!==(g=f.adcode)&&void 0!==g||(f.adcode=Number(p));else if("bg-100000"===p||"bg-0"===p){var y,b;null!==(y=f.mapRole)&&void 0!==y||(f.mapRole="bg-0"===p?"worldBackground":"parentBackground"),null!==(b=f.adcode)&&void 0!==b||(f.adcode="bg-0"===p?0:1e5)}const w=p.match(/^city(\d+)(?:-(.+))?$/);if(w){var j,S,A;null!==(j=f.adcode)&&void 0!==j||(f.adcode=Number(w[1]));const e=w[2];null!==(S=f.mapRole)&&void 0!==S||(f.mapRole=void 0===e?"city":"building"===e?"cityBuilding":"road"===e?"cityRoad":"river"===e||"grassland"===e?e:e.startsWith("building-")?"buildingHeight":void 0),(null==e?void 0:e.startsWith("building-"))&&(null!==(A=f.mapFeatureId)&&void 0!==A||(f.mapFeatureId=e.slice(9)))}var O,x;if("chinaCopy"===p&&(null!==(c=f.mapRole)&&void 0!==c||(f.mapRole="chinaPlaneCopy")),"mapLabel"===p&&(null!==(l=f.mapRole)&&void 0!==l||(f.mapRole="labels")),p.startsWith("mapLabel-")&&(null!==(O=f.mapRole)&&void 0!==O||(f.mapRole="label"),null!==(x=f.mapFeatureId)&&void 0!==x||(f.mapFeatureId=p.slice(9))),r&&(f.mapGenerated||f.mapGeneratedId)){var I,M;const e=void 0!==(null===(I=d._baseObjectOptions)||void 0===I?void 0:I._sharedRef)?null===(M=n._sharedOptionsPool)||void 0===M?void 0:M[d._baseObjectOptions._sharedRef]:d._baseObjectOptions,r="extrudeLine"===v||"ExtrudeLine"===h?"extrudeLine":"ExtrudePolygon"===h?!1===(null==e?void 0:e.hasTop)?"mergedSide":"area":"Group"===h?"group":"Line"===h?"line":void 0;if(r){var E,P;const e="string"==typeof f.mapGeneratedId?f.mapGeneratedId:"",n=t?`${t}-`:"",i="extrudeLine"===r||"mergedSide"===r?"all":null!==(E=f.mapFeatureId)&&void 0!==E?E:e.includes(":")?e.slice(e.indexOf(":")+1):n&&p.startsWith(n)?p.slice(n.length):null!==(P=f.adcode)&&void 0!==P?P:p||"all";f.mapGenerated=!0,f.mapRole=r,f.mapFeatureId=String(i),f.mapGeneratedId=`${r}:${i}`}}Object.keys(f).length&&(d._baseObjectUserData=f)}(n,r,e,!1!==t.generated),(null==l||null===(s=l._prefabLink)||void 0===s?void 0:s.baseline)&&i.push(l._prefabLink.baseline);for(const e of null!==(a=n.children)&&void 0!==a?a:[])o(e,r);(null===(c=n.shadow)||void 0===c?void 0:c.camera)&&o(n.shadow.camera,r)};o(r);for(const s of i)In({object:s,_sharedOptionsPool:e._sharedOptionsPool},t,n)}function Mn(e,t,n){var r;if(!e)return;const i=(e,t)=>null==e?void 0:e.forEach((e,r)=>n([...t,r],e)),o=(e,t)=>null==e?void 0:e.forEach((e,r)=>{var i;return null==e||null===(i=e.tracks)||void 0===i?void 0:i.forEach((e,i)=>n([...t,r,"tracks",i,"name"],null==e?void 0:e.name,!0))});if(t){var s,a,c,l;const t=null===(s=e.vis)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.sceneBindings,r=["vis","options","sceneBindings"];if(t){for(const e of["container","continentsBackground","sphere","map","secondaryMap"])n([...r,e],t[e]);t.region&&n([...r,"region","object"],t.region.object);for(const e of["parentBackgrounds","cities"])i(t[e],[...r,e])}null===(a=e.interactions)||void 0===a||a.forEach((e,t)=>{var r;e&&(n(["interactions",t,"objectId"],e.objectId),i(null===(r=e.filter)||void 0===r?void 0:r.objectIds,["interactions",t,"filter","objectIds"]))}),null===(c=e.scene)||void 0===c||null===(c=c.skeletons)||void 0===c||c.forEach((e,t)=>i(null==e?void 0:e.bones,["scene","skeletons",t,"bones"])),o(null===(l=e.scene)||void 0===l?void 0:l.animations,["scene","animations"])}else{var d,u,p;const t=null===(d=e.vis)||void 0===d||null===(d=d.options)||void 0===d?void 0:d.materialBindings;if(t)for(const[e,r]of Object.entries(t))for(const t of Object.keys(null!=r?r:{}))n(["vis","options","materialBindings",e,t],r[t]);null===(u=e.vis)||void 0===u||null===(u=u.options)||void 0===u||null===(u=u.regionTextureRules)||void 0===u||u.forEach((e,t)=>n(["vis","options","regionTextureRules",t,"material"],null==e?void 0:e.material)),null===(p=e.scene)||void 0===p||null===(p=p.materials)||void 0===p||p.forEach((e,t)=>n(["scene","materials",t,"uuid"],null==e?void 0:e.uuid));for(const r of[["materialAliases"],["scene","materialAliases"]]){var h;let t=e;for(const e of r)t=null==t?void 0:t[e];for(const[e,i]of Object.entries(null!==(h=t)&&void 0!==h?h:{}))n([...r,e],e,!1,!0),n([...r,e,"materialUuid"],null==i?void 0:i.materialUuid)}}const f=(r,s)=>{var a,c,l;if(!r)return;if(t){var d,u;n([...s,"uuid"],r.uuid),n([...s,"target"],r.target);for(const e of[["userData"],["userData","_baseObjectUserData"]]){let t=r;for(const n of e)t=null==t?void 0:t[n];n([...s,...e,"copySource"],null==t?void 0:t.copySource)}const t=null===(d=r.userData)||void 0===d||null===(d=d._baseObjectOptions)||void 0===d?void 0:d.serializedClips;Array.isArray(t)?o(t,[...s,"userData","_baseObjectOptions","serializedClips"]):void 0!==(null==t?void 0:t._sharedRef)&&o(null===(u=e.scene)||void 0===u||null===(u=u._sharedOptionsPool)||void 0===u?void 0:u[t._sharedRef],["scene","_sharedOptionsPool",t._sharedRef])}else{var p,h;Array.isArray(r.material)?i(r.material,[...s,"material"]):n([...s,"material"],r.material);for(const t of null!==(p=null===(h=r.userData)||void 0===h?void 0:h._baseObjectMaterialRefs)&&void 0!==p?p:[]){var v;if(!Array.isArray(t)||!t.length||t.some(e=>"string"!=typeof e||["__proto__","prototype","constructor"].includes(e)))throw Error("Invalid object option material reference");let i=null===(v=r.userData)||void 0===v?void 0:v._baseObjectOptions,o=[...s,"userData","_baseObjectOptions"];for(const n of t){var m;if(void 0!==(null==i?void 0:i._sharedRef))o=["scene","_sharedOptionsPool",i._sharedRef],i=null===(m=e.scene)||void 0===m||null===(m=m._sharedOptionsPool)||void 0===m?void 0:m[i._sharedRef];if(!i||!Object.hasOwn(i,n))throw Error("Missing object option material reference");i=i[n],o=[...o,n]}n(o,i)}}const g=null===(a=r.userData)||void 0===a||null===(a=a._prefabLink)||void 0===a?void 0:a.baseline;g&&f(g,[...s,"userData","_prefabLink","baseline"]),null===(c=r.children)||void 0===c||c.forEach((e,t)=>f(e,[...s,"children",t])),(null===(l=r.shadow)||void 0===l?void 0:l.camera)&&f(r.shadow.camera,[...s,"shadow","camera"])};f(null===(r=e.scene)||void 0===r?void 0:r.object,["scene","object"])}function En(e,t,n,r){if(!e||!t||t===n)return e;const i=function(e){let t=e;const n=/* @__PURE__ */new WeakSet,r=e=>{if(n.has(e))return e;const t=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e)),r=Object.getOwnPropertyDescriptors(e);for(const[n,i]of Object.entries(r))Array.isArray(e)&&"length"===n||(i.configurable=!0,"value"in i&&(i.writable=!0));return Object.defineProperties(t,r),n.add(t),t};return{set(i,o,s=!1){let a=e;for(const e of i)a=null==a?void 0:a[e];if(!s&&Object.is(a,o))return;n.has(t)||(t=r(t));let c=t;for(const e of i.slice(0,-1)){const t=r(c[e]);Object.defineProperty(c,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),c=t}const l=i.at(-1);s?delete c[l]:Object.defineProperty(c,l,{value:o,enumerable:!0,configurable:!0,writable:!0})},result:()=>t}}(e),o=[];Mn(e,r,(e,r,s,a)=>{const c="string"==typeof r&&(r===t||s&&r.startsWith(t+"."))?n+r.slice(t.length):r;c!==r&&(a?o.push({path:e,value:r}):i.set(e,c))});for(const{path:s}of o){let e=i.result();for(const t of s)e=e[t];i.set([...s.slice(0,-1),n],e),i.set(s,void 0,!0)}return i.result()}var Pn=(e,t,n)=>En(e,t,n,!0),Dn=(e,t,n)=>En(e,t,n,!1);function Cn(e,t,n){var r,i,o,s,a,c;if(!e||!t||t===n)return;const l=e=>e===t?n:e,d=null===(r=e.vis)||void 0===r||null===(r=r.options)||void 0===r?void 0:r.sceneBindings;if(d){var u;for(const e of["container","continentsBackground","sphere","map","secondaryMap"])"string"==typeof d[e]&&(d[e]=l(d[e]));(null===(u=d.region)||void 0===u?void 0:u.object)&&(d.region.object=l(d.region.object));for(const e of["parentBackgrounds","cities"])Array.isArray(d[e])&&(d[e]=d[e].map(l))}for(const v of null!==(i=e.interactions)&&void 0!==i?i:[]){var p;v.objectId=l(v.objectId),(null===(p=v.filter)||void 0===p?void 0:p.objectIds)&&(v.filter.objectIds=v.filter.objectIds.map(l))}const h=e=>{var r;for(const i of null!=e?e:[])for(const e of null!==(r=i.tracks)&&void 0!==r?r:[])"string"==typeof e.name&&e.name.startsWith(`${t}.`)&&(e.name=n+e.name.slice(t.length))},f=r=>{var i,o,s,a,c,d;if(!r)return;r.uuid===t&&(r.uuid=n),r.target&&(r.target=l(r.target));for(const e of[r.userData,null===(i=r.userData)||void 0===i?void 0:i._baseObjectUserData])(null==e?void 0:e.copySource)&&(e.copySource=l(e.copySource));const u=null===(o=r.userData)||void 0===o||null===(o=o._baseObjectOptions)||void 0===o?void 0:o.serializedClips,p=void 0!==(null==u?void 0:u._sharedRef)?null===(s=e.scene)||void 0===s||null===(s=s._sharedOptionsPool)||void 0===s?void 0:s[u._sharedRef]:u;Array.isArray(p)&&h(p);const v=null===(a=r.userData)||void 0===a||null===(a=a._prefabLink)||void 0===a?void 0:a.baseline;v&&f(v);for(const e of null!==(c=r.children)&&void 0!==c?c:[])f(e);(null===(d=r.shadow)||void 0===d?void 0:d.camera)&&f(r.shadow.camera)};f(null===(o=e.scene)||void 0===o?void 0:o.object);for(const v of null!==(s=null===(a=e.scene)||void 0===a?void 0:a.skeletons)&&void 0!==s?s:[])Array.isArray(v.bones)&&(v.bones=v.bones.map(l));h(null===(c=e.scene)||void 0===c?void 0:c.animations)}function Rn(e,t,n){var r,i,o,s,a,l,d,u;if(!e||!t||t===n)return;const p=e=>e===t?n:e;for(const c of Object.values(null!==(r=null===(i=e.vis)||void 0===i||null===(i=i.options)||void 0===i?void 0:i.materialBindings)&&void 0!==r?r:{}))for(const e of Object.keys(c))c[e]=p(c[e]);for(const c of null!==(o=null===(s=e.vis)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.regionTextureRules)&&void 0!==o?o:[])c.material&&(c.material=p(c.material));for(const c of null!==(a=null===(l=e.scene)||void 0===l?void 0:l.materials)&&void 0!==a?a:[])c.uuid===t&&(c.uuid=n);for(const c of[e.materialAliases,null===(d=e.scene)||void 0===d?void 0:d.materialAliases])if(c){for(const e of Object.values(c))e.materialUuid&&(e.materialUuid=p(e.materialUuid));Object.hasOwn(c,t)&&(c[n]=c[t],delete c[t])}const h=t=>{var n,r,i;if(!t)return;Array.isArray(t.material)?t.material=t.material.map(p):t.material&&(t.material=p(t.material)),c(t.userData,(e,t)=>{e[t]=p(e[t])},null===(n=e.scene)||void 0===n?void 0:n._sharedOptionsPool);const o=null===(r=t.userData)||void 0===r||null===(r=r._prefabLink)||void 0===r?void 0:r.baseline;o&&h(o);for(const e of null!==(i=t.children)&&void 0!==i?i:[])h(e)};h(null===(u=e.scene)||void 0===u?void 0:u.object)}function Ln(e,t,n){var r;const i=lt(e),o=null===(r=i.materialLibrary)||void 0===r?void 0:r.find(e=>e.id===t);if(!o)throw new Error(`Material asset ${t} was not found`);return jt(mn(i,De(De(De(De({},o),{},{revision:o.revision+1},void 0!==n.name?{name:n.name}:{}),void 0!==n.material?{material:Ye(n.material)}:{}),void 0!==n.locked?{locked:n.locked}:{})))}function kn(e,t){var n;if(Rt(e,t).length)throw new Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(Pt(e,t).length)throw new Error(`Material asset ${t} is still in use`);if(dt(e,t).length)throw new Error(`Material asset ${t} is required by scene configuration`);if(!(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t)))throw new Error(`Material asset ${t} was not found`);return function(e,t){return De(De({},e),{},{materialLibrary:e.materialLibrary.filter(e=>e.id!==t),scenes:e.scenes.map(e=>{const n=e.scene.materials;if(!n)return e;const r=n.filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[ct])!==t});return r.length===n.length?e:De(De({},e),{},{scene:De(De({},e.scene),{},{materials:r})})})})}(lt(e),t)}function Bn(e,t){return Tn(lt(e),t)}function Tn(e,t){var n,r,i;mt(e);const o=e,s=/* @__PURE__ */new Map,a=/* @__PURE__ */new Set;null===(n=o.materialLibrary)||void 0===n||n.forEach((e,n)=>{var r;const i=null===(r=t(e,n))||void 0===r?void 0:r.trim();if(!i||a.has(i))throw new Error("Invalid remapped material asset id: ids must be non-empty and unique");a.add(i),s.set(e.id,i),e.id=i});for(const v of o.scenes){var c,l,d;for(const e of null!==(c=v.scene.materials)&&void 0!==c?c:[]){var u,p;const t=null===(u=e.userData)||void 0===u?void 0:u[ct];void 0!==t&&(e.userData[ct]=null!==(p=s.get(t))&&void 0!==p?p:t)}for(const e of Object.values(null!==(l=v.materialAliases)&&void 0!==l?l:{}))e.assetId=null!==(d=s.get(e.assetId))&&void 0!==d?d:e.assetId}for(const v of null!==(r=o.prefabLibrary)&&void 0!==r?r:[])for(const e of null!==(i=v.snapshot.materials)&&void 0!==i?i:[]){var h,f;const t=null===(h=e.userData)||void 0===h?void 0:h[ct];void 0!==t&&(e.userData[ct]=null!==(f=s.get(t))&&void 0!==f?f:t)}return{document:o,idMap:s}}function Un(e,t){const n=St(e),r=St(t),i=new Set(n.materialLibrary.map(e=>e.id)),o=Bn(r,e=>bt(e.id,i));return De(De({},o),{},{materialLibrary:[...n.materialLibrary,...o.document.materialLibrary]})}function _n(e,t){const n=St(e);if(n.materialLibrary.some(e=>e.id===t.id))throw new Error(`Material asset ${t.id} already exists`);const r=xn.create(n,t),i=mn(r,De(De({},lt(t)),r.materialLibrary.at(-1)));return mt(i),i}function Gn(e,t){var n;const r=St(e),i=r.scenes.find(e=>e.id===t.sceneId),o=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Scene ${t.sceneId} was not found`);if(!o)throw new Error(`Material asset ${t.assetId} was not found`);if(gt(o,i.id),!t.objectId&&!t.alias)throw new Error("A material object or alias target is required");const s=null!==(n=t.slot)&&void 0!==n?n:0;if(!Number.isInteger(s)||s<0)throw new Error("Invalid material slot");const a=[];if(t.objectId){let e;if(rt(i.scene.object,n=>{var r,i;n.uuid!==t.objectId&&(null===(r=n.userData)||void 0===r?void 0:r._baseObjectUuid)!==t.objectId||null!==(i=e)&&void 0!==i||(e=n)}),!e)throw new Error(`Object ${t.objectId} was not found in scene ${i.id}`);if(rt(e,e=>{if(void 0!==e.material){if(Array.isArray(e.material)?s>=e.material.length:0!==s)throw new Error(`Invalid material slot ${s} for object ${t.objectId}`);a.push({uuid:e.uuid,slot:s,assetId:o.id})}}),!a.length)throw new Error(`Object ${t.objectId} has no editable material`)}const c=function(e,t,n,r){return jn(e,t,n,void 0,r,!0)}(r,i.id,a,o.id),l=c.scenes.find(e=>e.id===t.sceneId),d=l.scene.materials.find(e=>{var t;return(null===(t=e.userData)||void 0===t?void 0:t[ct])===o.id});if(void 0!==t.alias){var u,p;if(!t.alias)throw new Error("Invalid material alias");const e=null!==(u=l.materialAliases)&&void 0!==u?u:l.materialAliases={};if(Object.defineProperty(e,d.uuid,{value:{assetId:o.id,locked:null!==(p=o.locked)&&void 0!==p&&p},enumerable:!0,configurable:!0,writable:!0}),t.alias!==d.uuid){if(l.scene.materials.some(e=>e!==d&&e.uuid===t.alias))throw new Error(`Duplicate material UUID ${t.alias}`);Rn(l,d.uuid,t.alias)}}return jt(c)}function zn(e,t,n){var r,i;for(const s of null!==(r=e.scene.materials)&&void 0!==r?r:[]){var o;(null===(o=s.userData)||void 0===o?void 0:o._materialAssetId)===t&&(s.userData[ct]=n.id,s.userData[Je]=n.revision)}for(const s of Object.values(null!==(i=e.materialAliases)&&void 0!==i?i:{}))s.assetId===t&&(s.assetId=n.id)}function $n(e,t,n,r){const i=St(e),o=i.materialLibrary.find(e=>e.id===t),s=i.scenes.find(e=>e.id===n);if(!o)throw new Error(`Material asset ${t} was not found`);if(!s)throw new Error(`Scene ${n} was not found`);if(gt(o,n),"scene"===o.scope.kind)return i;const a=_n(i,De(De({},o),{},{id:r,scope:{kind:"scene",sceneId:n}})),c=a.materialLibrary.find(e=>e.id===r);return zn(a.scenes.find(e=>e.id===n),t,c),jt(a)}function Wn(e,t){const n=St(e);if(!n.materialLibrary.some(e=>e.id===t))throw new Error(`Material asset ${t} was not found`);return xn.promote(n,t)}function Nn(e,t){var n;const r=St(e),i=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Material asset ${t.assetId} was not found`);return gt(i,t.sceneId),Gn(_n(r,De(De({},i),{},{id:t.newAssetId,name:null!==(n=t.name)&&void 0!==n?n:`${i.name} 副本`})),De(De({},t),{},{assetId:t.newAssetId}))}function Fn(e,t,n){var r;const i=St(e),o=i.scenes.find(e=>e.id===t);if(!o)throw new Error(`Scene ${t} was not found`);if(!n||i.scenes.some(e=>e.id===n))throw new Error(`Scene ${n} already exists or is invalid`);const s=lt(o);s.id=n;for(const d of null!==(r=s.interactions)&&void 0!==r?r:[])"sceneId"in d.action&&d.action.sceneId===t&&(d.action.sceneId=n);const a=new Set(i.materialLibrary.map(e=>e.id)),c=[],l=/* @__PURE__ */new Map;for(const d of i.materialLibrary){if("scene"!==d.scope.kind||d.scope.sceneId!==t)continue;const e=De(De({},lt(d)),{},{id:bt(`${d.id}:copy:${encodeURIComponent(n)}`,a),scope:{kind:"scene",sceneId:n}});l.set(d.id,e.id),c.push(e),zn(s,d.id,e)}return{scene:s,materialLibrary:c,idMap:l}}var qn=["scenes"];function Vn(e,t,n={}){var r,i,o,s;Mt(e);const a=/* @__PURE__ */new Map;e.scenes.forEach((e,n)=>{var r;const i=null===(r=t(e,n))||void 0===r?void 0:r.trim();if(!i||[...a.values()].includes(i))throw new Error("Invalid remapped scene id: ids must be non-empty and unique");a.set(e.id,i)});const{scenes:c}=e,l=Xe(e,qn),d=at(De(De({},structuredClone(l)),{},{scenes:c.map(e=>structuredClone(e))}));!1!==n.materialize&&It(d);const u=new Set((null!==(r=d.materialLibrary)&&void 0!==r?r:[]).map(e=>e.id)),p=new Set(n.occupiedMaterialIds);Tn(d,e=>{let t=e.id;if("scene"===e.scope.kind){const n=a.get(e.scope.sceneId),r=`${e.id}:copy:${encodeURIComponent(n)}`;t=r;let i=1;for(;u.has(t);)t=`${r}~${i++}`;u.add(t)}let n=t,r=1;for(;p.has(n);)n=`${t}~${r++}`;return p.add(n),n});for(const f of null!==(i=d.materialLibrary)&&void 0!==i?i:[])"scene"===f.scope.kind&&(f.scope.sceneId=a.get(f.scope.sceneId));const h=d.scenes.map(e=>Kn(e,a));return De(De(De({entrySceneId:a.get(e.entrySceneId),scenes:h,idMap:a},d.runtimeAssets?{runtimeAssets:De(De(De({},d.runtimeAssets),"dynamic"===(null===(o=d.runtimeAssets.mapNavigation)||void 0===o?void 0:o.mode)?{mapNavigation:De(De({},d.runtimeAssets.mapNavigation),{},{templates:Object.fromEntries(Object.entries(d.runtimeAssets.mapNavigation.templates).map(([e,t])=>{var n;return[e,null!==(n=a.get(t))&&void 0!==n?n:t]}))})}:{}),{},{regions:Object.fromEntries(Object.entries(null!==(s=d.runtimeAssets.regions)&&void 0!==s?s:{}).map(([e,t])=>{var n;return[null!==(n=a.get(e))&&void 0!==n?n:e,t]}))})}:{}),d.prefabLibrary?{prefabLibrary:d.prefabLibrary}:{}),d.materialLibrary?{materialLibrary:d.materialLibrary}:{})}function Hn(e,t){return Kn(structuredClone(e),t)}function Kn(e,t){var n,r;e.id=null!==(n=t.get(e.id))&&void 0!==n?n:e.id;for(const o of null!==(r=e.interactions)&&void 0!==r?r:[])if("switchScene"===o.action.type||"switchMapRegion"===o.action.type){var i;o.action.sceneId=null!==(i=t.get(o.action.sceneId))&&void 0!==i?i:o.action.sceneId}return e}var Xn=class{constructor(){Re(this,"event",new Ut),Re(this,"eventHandlers",{}),Re(this,"on",this.event.on.bind(this.event)),Re(this,"emit",this.event.emit.bind(this.event))}addListener(e,t,n,r=!1){t in this.eventHandlers||(this.eventHandlers[t]=[]),this.eventHandlers[t].push({node:e,handler:n,capture:r}),e.addEventListener(t,n,r)}removeListener(e,t){this.eventHandlers[t].filter(({node:t})=>!e||t===e).forEach(({node:e,handler:n,capture:r})=>{e.removeEventListener(t,n,r)}),this.eventHandlers[t]=this.eventHandlers[t].filter(({node:t})=>!!e&&t!==e)}removeAllListeners(){Object.keys(this.eventHandlers).forEach(e=>{this.removeListener("",e)}),this.eventHandlers={}}dispose(){this.removeAllListeners(),this.event.removeAllListeners()}};function Yn(e,t){const n={};for(const[r,i]of Object.entries(null!=t?t:{})){const t=e.get(i);t&&(n[r]=t)}return Object.keys(n).length?n:null}var Jn=/* @__PURE__ */new WeakSet;function Zn(e){return Jn.has(e)}function Qn(e,t=e.object3d.userData){var n;const r=e.lead,i=e.pencil;Object.hasOwn(t,"planarReflection")&&(null===(n=i.rendererController)||void 0===n||null===(n=n.surfaceEffects)||void 0===n||n.invalidate(r.scene.object3d));for(const[o,s]of Object.entries(t))if("bloom"===o)s?e.enableBloom():e.disableBloom();else if("animationDuration"===o&&"Arc"===e.objectType)e.animateIn({duration:s});else if("animationDuration"===o&&"Line"===e.objectType)e.animate({duration:s,repeat:1/0,lineLoop:!0,startShow:!0});else if("keepCamera"===o&&e.object3d.isLight){const t=e.object3d;s?(i.camera.attach(t),t.target&&i.camera.attach(t.target)):(r.scene.object3d.attach(t),t.target&&r.scene.object3d.attach(t.target))}else!0===e.object3d.userData.isMapLabelGroup&&e.traverse(e=>{if("Node"!==e.objectType)return;const t=e.options.children;t instanceof HTMLElement&&er(t,o,s)})}function er(e,t,n){if(null!=n)switch(t){case"color":{const t=`${n}`;e.style.color=/^[A-Fa-f0-9]{6}$/.test(t)?`#${t}`:t;break}case"fontFamily":e.style.fontFamily=`${n||""}`;break;case"fontSize":e.style.fontSize="number"==typeof n?`${n}px`:`${n}`;break;case"fontStyle":e.style.fontStyle=`${n}`;break;case"fontWeight":e.style.fontWeight=`${n}`;break;case"letterSpacing":e.style.letterSpacing="number"==typeof n?`${n}px`:`${n}`;break;case"lineHeight":e.style.lineHeight=`${n}`;break;case"textAlign":e.style.textAlign=`${n}`}}var tr=/* @__PURE__ */w({baseObjectBounce:()=>je,baseObjectBounceIn:()=>ae,baseObjectFadeIn:()=>_,baseObjectFadeOut:()=>v,sinusoidalInOut:()=>D,timeOut:()=>Z}),nr=/* @__PURE__ */w({AmbientLight:()=>ir,DirectionalLight:()=>or,HemisphereLight:()=>cr,PointLight:()=>sr,RectAreaLight:()=>lr,SpotLight:()=>ar}),rr=(e,t)=>{e.camera&&!0!==e.camera.userData._shadowProjectionEdited&&(e.camera.near!==t.camera.near&&(e.camera.near=t.camera.near),e.camera.far!==t.camera.far&&(e.camera.far=t.camera.far))},ir=class extends O{constructor(...e){g(e[0])&&(e=[e[0].color]),super(...e)}},or=class extends ye{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&rr(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},sr=class extends xe{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity,t.distance,t.decay]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&rr(n.shadow,this.pencil)}render(){super.render(),this.object3d}},ar=class extends J{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity,t.distance,t.angle,t.penumbra,t.decay]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&rr(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},cr=class extends Me{},lr=class extends z{},dr=class extends P{constructor(e){super(),Re(this,"radius",100),Re(this,"options",void 0),Re(this,"objectType","Sphere"),this.options=e}create(){var e;(null===(e=this.options)||void 0===e?void 0:e.radius)&&(this.radius=this.options.radius);const t=new l(this.radius,128,90);this.object3d.geometry=t,this.object3d.rotation.y=Math.PI/180*90}},ur=De(De({Node:E,ExtrudePolygon:e,Line:ve,Group:be},nr),{},{Point:class extends R{constructor(e){super(e.sprite?new j:new K(new Ie(1,1))),Re(this,"objectType","Point"),Re(this,"options",void 0),Re(this,"scaleValue",1),this.options=De({sprite:!0},e)}get material(){var e;return null===(e=this.object3d)||void 0===e?void 0:e.material}getMaterial(){const{sprite:e}=this.options,t=document.createElement("canvas");t.width=100,t.height=100;const n=t.getContext("2d");n.beginPath(),n.arc(50,50,50,0,2*Math.PI),n.fillStyle="#ffffff",n.fill(),n.closePath();const r=new we(t);return e?new ne({transparent:!0,map:r}):new B({color:16777215,transparent:!0,map:r})}create(){var e=this;return Ce(function*(){const{sprite:t}=e.options,n=e.getMaterial();e.object3d.material=n,e.setScale(1),e.object3d.scale.multiplyScalar(.1)})()}setScale(e){this.scaleValue=e;const t=this.material.map;(null==t?void 0:t.image)?this.object3d.scale.set(t.image.width*e,t.image.height*e,1):this.object3d.scale.set(e,e,1)}},Arc:t,Model:u,Plane:class extends P{constructor(...e){super(...e),Re(this,"objectType","Plane")}create(){const e=new Ie(1,1,2,2);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},PlaneShadow:class extends P{constructor(...e){super(...e),Re(this,"objectType","PlaneShadow")}create(){var e=this;return Ce(function*(){const t=new Ie(100,100,2,2),n=new M;n.opacity=.5,n.depthWrite=!1,e.object3d.geometry=t,e.object3d.material=n,e.object3d.receiveShadow=!0,e.position.z=.1,e.object3d.name="阴影接受"})()}},Sphere:dr,Sprite:class extends h{constructor(...e){super(...e),Re(this,"objectType","Sprite")}create(){this.scale.multiplyScalar(20)}setDesiredPixelSize(e){var t;const n=this.object3d;if(null===(t=n.material.map)||void 0===t?void 0:t.image){var r,i,o;const t=this.pencil.camera,s=new y;t.matrixWorld.decompose(s,new x,new y);const a=pe.degToRad(t.fov),c=e/((null!==(r=null===(i=(o=this.pencil).getViewViewport)||void 0===i?void 0:i.call(o))&&void 0!==r?r:this.pencil.getSize()).height*(1/(2*Math.tan(a/2)))),{width:l,height:d}=n.material.map.image;n.scale.set(l/d*c,c,1)}}},Box:class extends P{constructor(...e){super(...e),Re(this,"objectType","Box")}create(){const e=new $(1,1,1,1,1,1);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Circle:class extends P{constructor(...e){super(...e),Re(this,"objectType","Circle")}create(){const e=new N(1,32,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Tube:re,Ring:class extends P{constructor(...e){super(...e),Re(this,"objectType","Ring")}create(){const e=new Oe(.5,1,32,1,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}}}),pr=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"],hr=["intel","apple","amd","radeon","nvidia","geforce","adreno"],fr={apple:[],amd:["1","2","3","4","6","11","12","15","25","455","475","535","555","575","600","610","625","640","694","699","740","900","2000","2270","2600","3800","3900","4190","4250","4800","5130","5170","5400","5450","5470","5570","5650","5670","5730","5750","5850","5950","6100","6150","6230","6250","6290","6300","6310","6320","6350","6370","6380","6410","6450","6460","6470","6480","6490","6510","6520","6530","6540","6550","6570","6620","6630","6670","6730","6760","6770","6790","6980","7290","7310","7340","7400","7420","7450","7470","7480","7500","7520","7540","7550","7610","7620","7640","7670","7730","7820","8180","8210","8240","8250","8330","8350","8370","8400","8410","8450","8490","8500","8510","8530","8550","8570","8600","8610","8670","8690","8730","8750","8760","8800","8850","8860","9171","9173","9874","10000","v","9999999999","prom"],radeon:["1","2","3","4","6","11","25","455","475","500","535","555","575","610","625","640","740","1305","1605","2600","4250","5000","5400","5450","5470","5570","5650","5670","5730","5750","5770","5850","6230","6250","6290","6300","6310","6320","6350","6370","6380","6410","6450","6460","6470","6480","6490","6510","6520","6530","6540","6550","6570","6620","6630","6670","6730","6760","6770","6790","7290","7310","7340","7400","7420","7450","7470","7480","7500","7520","7540","7550","7610","7620","7640","7670","7730","8180","8210","8240","8250","8330","8350","8370","8400","8410","8450","8490","8500","8510","8530","8550","8570","8600","8610","8670","8690","8730","8750","8850","8860","9171","9173","prom"],nvidia:["1","6","15","16","110","120","140","160","180","210","220","260","280","295","310","315","320","410","415","420","425","430","435","440","510","525","530","540","545","555","590","605","610","615","625","630","635","645","705","710","720","730","735","755","765","775","800","810","820","830","840","910","940","1100","1800","2800","5010","5400","8000","8400","8600","9300","9400","9600","9800","gpu","gtxz","prexpe"],geforce:["10","110","120","210","240","280","295","320","410","415","420","425","430","435","440","510","520","525","530","540","545","555","590","605","610","615","620","625","630","635","645","705","710","720","730","735","755","765","775","800","810","820","830","840","910","940","2075","8400","8600","9300","9400","9600","9800","gpu","gtxz","prexpe"],adreno:["5","7","540","618","630","675","680","685","690"]},vr=class{constructor(e){Re(this,"renderer",void 0),this.renderer=e}query(){const e=this.renderer,t=this.getGpuType();if(!t)return this.queryFallback();if("intel"===t)return{tier:0,gpu:e};const n=fr[t],r=this.getGPUVersion();return n.includes(r)?{tier:0,renderer:e}:this.queryFallback()}getGpuType(){const e=this.renderer;for(const t of hr)if(e.includes(t))return t}getGPUVersion(){var e;const t=this.renderer.replace(/\([^)]+\)/,""),n=t.match(/\d+/)||t.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!==(e=null==n?void 0:n.join("").replace(/\W|amd/g,""))&&void 0!==e?e:""}queryFallback(){const e=this.renderer,t=pr.find(t=>e.includes(t));return t?{tier:0,gpu:t}:{tier:3,gpu:e}}};var mr=Object.freeze({tier:0}),gr=/* @__PURE__ */new WeakMap,yr=/* @__PURE__ */new WeakSet,br=/* @__PURE__ */new WeakSet;var wr=class extends Xn{constructor(...e){super(...e),Re(this,"container",void 0),Re(this,"pencil",void 0),Re(this,"cameraState",{}),Re(this,"cameraStateActive","visShow")}setSaveCamera(e){const t=this.pencil,n=t.cameraPositon,r=t.cameraTarget;this.cameraState[e]=[n.x,n.y,n.z,r.x,r.y,r.z]}useSaveCamera(e,t=!1,n=250){var r=this;return Ce(function*(){const i=r.cameraState[e];return!(!Array.isArray(i)||6!==i.length||!i.every(Number.isFinite))&&(yield r.lookAt(i[0],i[1],i[2],i[3],i[4],i[5],t,n),r.cameraStateActive=e,!0)})()}lookAt(e,t,n,r,i,o,s=!1,a=250){var c=this;return Ce(function*(){c.pencil.controls.smoothTime=a/1e3,yield c.pencil.controls.setLookAt(e,t,n,r,i,o,s),c.pencil.controls.smoothTime=.25})()}truck(e,t,n=!1,r=250){var i=this;return Ce(function*(){i.pencil.controls.smoothTime=r/1e3,i.pencil.controls.restThreshold=0,yield i.pencil.controls.truck(e,t,n),i.pencil.controls.restThreshold=.0025,i.pencil.controls.smoothTime=.25})()}moveTo(e,t,n,r=!1,i=250){var o=this;return Ce(function*(){o.pencil.controls.smoothTime=i/1e3,yield o.pencil.controls.moveTo(e,t,n,r),o.pencil.controls.smoothTime=.25})()}dollyTo(e,t=!1,n=250){var r=this;return Ce(function*(){let i=e;if("string"==typeof i){const[e,t]=i.split("=");"+"===e?i=r.pencil.controls.distance+ +t:"-"===e?i=r.pencil.controls.distance-+t:"*"===e?i=r.pencil.controls.distance*+t:"/"===e?i=r.pencil.controls.distance/+t:console.error("dollyTo distance error")}r.pencil.controls.smoothTime=n/1e3,yield r.pencil.controls.dollyTo(i,t),r.pencil.controls.smoothTime=.25})()}absoluteAngle(e,t){const n=2*Math.PI,r=e-t;return pe.euclideanModulo(r+Math.PI,n)-Math.PI}lookAtTarget(e,t=!1,n=250){var r=this;return Ce(function*(){r.pencil.controls.smoothTime=n/1e3;const i=r.pencil.controls.azimuthAngle,o=r.pencil.controls.polarAngle,s=r.pencil.controls.distance,a=r.pencil.cameraTarget.clone(),c=e.azimuthAngle||i,l=e.polarAngle||o,d=e.distance||s,u=e.target||a;yield Promise.all([r.pencil.controls.moveTo(u.x,u.y,u.z,t),r.pencil.controls.dollyTo(d,t),r.pencil.controls.rotateTo(i+r.absoluteAngle(c,i),o+r.absoluteAngle(l,o),t)]),r.pencil.controls.smoothTime=.25})()}paddingInCssPixel(e,t,n,r,i,o){var s,a,c;const{camera:l,controls:d}=this.pencil,u=l.fov*pe.DEG2RAD,p=(null!==(s=null===(a=(c=this.pencil).getViewViewport)||void 0===a?void 0:a.call(c))&&void 0!==s?s:this.pencil.getSize()).height,{size:h}=e.getSize(),f=h.x,v=h.y,m=h.z;let g=d.getDistanceToFitBox(f,v,m),y=0,b=0,w=0,j=0;for(let S=0;S<10;S++){const e=g-.5*m,o=2*Math.tan(.5*u)*Math.abs(e)/p;y=t*o,b=r*o,w=i*o,j=n*o,g=d.getDistanceToFitBox(f+w+j,v+y+b,m)}return d.fitToBox(e.object3d,o,{paddingLeft:w,paddingRight:j,paddingBottom:b,paddingTop:y})}resetCamera(e=!1,t=250){var n=this;return Ce(function*(){n.pencil.controls.smoothTime=t/1e3,yield n.pencil.controls.reset(e),n.pencil.controls.smoothTime=.25})()}unproject(e,t=0){const n=new y,r=new y,{x:i,y:o}=this.pencil.getPointerNDC(e.clientX,e.clientY),s=this.pencil.cameraPositon.clone();n.set(i,o,.5),n.unproject(this.pencil.camera),n.sub(s).normalize();const a=(t-s.z)/n.z;return r.copy(s).add(n.multiplyScalar(a)),r}dispose(){super.dispose(),this.cameraState={}}};function jr(e=[]){return structuredClone(e.filter(e=>!!e.sdkKey))}function Sr(e,t){const n=e.find(e=>e.sdkKey&&(e.id===t||e.sdkKey===t));if(!n)throw new Error(`SDK prefab "${t}" was not found`);return n}var Ar=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Or(e,t=[],n=!0){var r,i,o;const s=Ot(ht({id:"runtime-prefab",name:e.name,vis:{type:"base",options:{}},scene:structuredClone(e.snapshot)},t));if(!s.object)throw new Error(`SDK prefab "${e.sdkKey||e.id}" has no object snapshot`);L(s);const a=/* @__PURE__ */new Map,l=e=>(a.has(e)||a.set(e,pe.generateUUID()),a.get(e)),d=[],u=e=>{var t,n;if(e){!function(e){var t;for(const n of[e.userData,null===(t=e.userData)||void 0===t?void 0:t._baseObjectUserData])if(n){for(const e of Ar)delete n[e];delete n.copySource}}(e),d.push(e),e.uuid&&l(e.uuid);for(const n of null!==(t=e.children)&&void 0!==t?t:[])u(n);(null===(n=e.shadow)||void 0===n?void 0:n.camera)&&u(e.shadow.camera)}};u(s.object);for(const c of["geometries","materials","textures","images","shapes","skeletons","animations"])for(const e of null!==(r=s[c])&&void 0!==r?r:[])if(!e.uuid||"PMREM_PLACEHOLDER"===e.uuid||!n&&["materials","textures","images"].includes(c)||l(e.uuid),n&&e.userData)for(const t of["_resourceSource","_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete e.userData[t];const p=/* @__PURE__ */new Set(["uuid","image","material","geometry","skeleton","bones","animations","shapes","map","matcap","background","environment","target","materialUuid"]),h=(e,t="")=>{var n,r;if("string"==typeof e)return(p.has(t)||t.endsWith("Map"))&&null!==(n=a.get(e))&&void 0!==n?n:e;if(Array.isArray(e))return e.map(e=>h(e,t));if(!e||"object"!=typeof e)return e;for(const i of Object.keys(e))"userData"!==i&&(e[i]=h(e[i],i));return"t"===e.type&&(e.value=null!==(r=a.get(e.value))&&void 0!==r?r:e.value),"tv"===e.type&&Array.isArray(e.value)&&(e.value=e.value.map(e=>{var t;return null!==(t=a.get(e))&&void 0!==t?t:e})),Ae(e,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),e};h(s);const f=[...null!==(i=s.animations)&&void 0!==i?i:[]];for(const w of d){var v,m;c(w.userData,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]},s._sharedOptionsPool);const e=null===(v=w.userData)||void 0===v||null===(v=v._baseObjectOptions)||void 0===v?void 0:v.serializedClips,t=void 0!==(null==e?void 0:e._sharedRef)?null===(m=s._sharedOptionsPool)||void 0===m?void 0:m[e._sharedRef]:e;Array.isArray(t)&&f.push(...t)}for(const c of f)for(const e of null!==(o=c.tracks)&&void 0!==o?o:[]){var g,y,b;const t=null!==(g=null===(y=e.name)||void 0===y?void 0:y.indexOf("."))&&void 0!==g?g:-1;t>0&&(e.name=(null!==(b=a.get(e.name.slice(0,t)))&&void 0!==b?b:e.name.slice(0,t))+e.name.slice(t))}return delete s.materialAliases,s}function xr(e,t,n){return Ir.apply(this,arguments)}function Ir(){return(Ir=Ce(function*(e,t,n,r={},i){var o,s,a,c;null==i||i.throwIfAborted();const l=null!==(o=r.target)&&void 0!==o?o:e.lead.scene;if(l.lead!==e.lead||l.isDisposed)throw new Error("Prefab target must be a live object in the destination scene");for(let f=l;f;f=f.parent)if(f.object3d.userData._templatePreviewContainer||f.object3d.userData._prefabPreview||(null===(s=f.object3d.userData._baseObjectUserData)||void 0===s?void 0:s._templatePreviewContainer)||(null===(a=f.object3d.userData._baseObjectUserData)||void 0===a?void 0:a._prefabPreview))throw new Error("Runtime prefab instances cannot be added to the internal template preview container or a template descendant");const d=Or(t,n,null===(c=r.cloneMaterial)||void 0===c||c),u=yield e.restoreBaseObject(d,l,void 0,i);try{const e=[];u.traverse(t=>e.push(t));for(const t of e){var p;null==i||i.throwIfAborted(),yield null===(p=t.rebuildFromScene)||void 0===p?void 0:p.call(t)}if(null==i||i.throwIfAborted(),u.isDisposed||l.isDisposed)throw new Error("Prefab instantiation was cancelled because its scene or parent was disposed");return u.show(),u}catch(h){throw u.erase(),h}})).apply(this,arguments)}function Mr(){var e,t;const n=new URLSearchParams(null!==(e=null===(t=globalThis.window)||void 0===t||null===(t=t.location)||void 0===t?void 0:t.search)&&void 0!==e?e:""),r=e=>{const t=n.get(e);return t&&/^\d+$/.test(t)?Number.parseInt(t,10):void 0},i=r("v_ldb");return{logarithmicDepthBuffer:void 0===i?void 0:Boolean(i),tier:r("v_tier")}}function Er(e,t={}){var n;return De(De({alpha:!0,logarithmicDepthBuffer:e,reversedDepthBuffer:!1},t),{},{autoDepthBuffer:null!==(n=t.autoDepthBuffer)&&void 0!==n?n:void 0===t.logarithmicDepthBuffer&&void 0===t.reversedDepthBuffer&&e})}var Pr=["rendererWarmup"],Dr=class extends wr{static prewarmRenderer(e){var t,n,r;return b.prewarmRenderer(Er(null===(t=null!==(n=Mr().logarithmicDepthBuffer)&&void 0!==n?n:e.logarithmicDepthBuffer)||void 0===t||t,null===(r=e.pencilConfig)||void 0===r?void 0:r.renderer))}suspendRendering(){var e;if(this.disposed)return()=>{};const t={};this.renderingSuspensions.add(t);const n=null!==(e=this.pencil)&&void 0!==e?e:this.options.pencil;return n&&(t.releasePencil=n.suspendRendering()),()=>{if(!this.renderingSuspensions.delete(t))return;const e=t.releasePencil;t.releasePencil=void 0,null==e||e()}}acquireRenderingSuspensions(){for(const t of this.renderingSuspensions){var e;null!==(e=t.releasePencil)&&void 0!==e||(t.releasePencil=this.pencil.suspendRendering())}}getPrefabLibrary(){return jr(this.prefabAssets)}setPrefabLibrary(e=[],t=[]){var n;this.cancelPrefabOperations(),this.prefabAssets=jr(e);const r=/* @__PURE__ */new Set;for(const o of this.prefabAssets)for(const e of null!==(n=o.snapshot.materials)&&void 0!==n?n:[]){var i;const t=null===(i=e.userData)||void 0===i?void 0:i[ct];t&&r.add(t)}this.prefabMaterials=structuredClone(t.filter(e=>r.has(e.id))),this.assetResolver&&kt({prefabLibrary:this.prefabAssets,materialLibrary:this.prefabMaterials},this.assetResolver.catalog.entries.flatMap(e=>e.sources),this.resolveAssetUrl)}instantiatePrefab(e){var t=this;return Ce(function*(e,n={}){if(t.disposed)throw new Error("Vis has been disposed");const r=Sr(t.prefabAssets,e),i=new AbortController;t.prefabOperations.add(i);try{return yield xr(t,r,t.prefabMaterials,n,i.signal)}finally{t.prefabOperations.delete(i)}}).apply(this,arguments)}cancelPrefabOperations(){var e,t;for(const n of null!==(e=this.prefabOperations)&&void 0!==e?e:[])n.abort();null===(t=this.prefabOperations)||void 0===t||t.clear()}constructor(e){super(),Re(this,"runtimePolicy",{observeParentScale:!0,applyDisabledMouseButtons:!0,cacheCityGeometry:!0,includePrefabPreviews:!1,strictBundleAssets:!0}),Re(this,"leftTruck",!0),Re(this,"options",void 0),Re(this,"showState",!1),Re(this,"lead",void 0),Re(this,"sceneResources",void 0),Re(this,"tier0",!1),Re(this,"roomEnvMap",void 0),Re(this,"roomEnvLease",void 0),Re(this,"visName",void 0),Re(this,"ownsPencil",!1),Re(this,"rendererWarmup",void 0),Re(this,"renderingSuspensions",/* @__PURE__ */new Set),Re(this,"publicDir",{}),Re(this,"prefabAssets",[]),Re(this,"prefabMaterials",[]),Re(this,"prefabOperations",/* @__PURE__ */new Set),Re(this,"assetResolver",void 0),Re(this,"resolveAssetUrl",e=>{var t,n;return null!==(t=null===(n=this.assetResolver)||void 0===n?void 0:n.resolve(e))&&void 0!==t?t:Le(e,this.options.assetsPrefix)}),Re(this,"runtimeInitialization",void 0),Re(this,"disposed",!1),Re(this,"handleObjectIdentityChanged",({baseObject:e,key:t,oldKey:n})=>{var r;if(e.lead!==this.lead)return;Cn({vis:{options:this.options}},n,t);const i=/* @__PURE__ */new Set;for(const c of this.lead.objects.values()){var o,s;for(const i of[c.userData,c.object3d.userData]){var a;(null==i?void 0:i.copySource)===n&&(i.copySource=t),(null==i||null===(a=i._prefabLink)||void 0===a?void 0:a.baseline)&&Cn({scene:{object:i._prefabLink.baseline}},n,t)}const e=null===(o=c.options)||void 0===o?void 0:o.serializedClips,r=c.clips;for(const t of[...null!==(s=c.object3d.animations)&&void 0!==s?s:[],...Array.isArray(e)?e:[],...Array.isArray(r)?r:[]])i.add(t)}for(const c of i)for(const e of null!==(r=c.tracks)&&void 0!==r?r:[])e.name.startsWith(`${n}.`)&&(e.name=t+e.name.slice(n.length));this.emit("objectIdentityChanged",{baseObject:e,key:t,oldKey:n})}),Re(this,"handleMaterialIdentityChanged",({material:e,key:t,oldKey:n})=>{var r,i;if((null===(r=this.sceneResources)||void 0===r?void 0:r.getKey(e))===t){Rn({vis:{options:this.options}},n,t);for(const e of this.lead.objects.values())for(const r of[e.userData,e.object3d.userData])(null==r||null===(i=r._prefabLink)||void 0===i?void 0:i.baseline)&&Rn({scene:{object:r._prefabLink.baseline}},n,t);this.emit("materialIdentityChanged",{material:e,key:t,oldKey:n})}}),Re(this,"reportScriptError",e=>{this.showState&&!this.disposed&&(this.emit("scriptError",e)||console.error(e.error))}),Re(this,"sceneActive",-1),Re(this,"controlsInitialized",!1),Re(this,"temporaryControls",/* @__PURE__ */new Map),Re(this,"showing",void 0),Re(this,"sceneTemporarilyHidden",!1),Re(this,"authoredSceneVisible",!0),this.container=e.container;const{rendererWarmup:t}=e,n=Xe(e,Pr);if(this.rendererWarmup=t,this.options=De({assetsPrefix:"",logarithmicDepthBuffer:!0,observeParentScale:!0,createIfNeeded:!0},n),!this.options.assetsPrefix){let e="/";"/"===e&&(e=""),this.options.assetsPrefix=e}this.visName=this.constructor.VisName}getMaterialGroup(e){var t;return Yn(this.sceneResources,null===(t=this.options.materialBindings)||void 0===t?void 0:t[e])}registerMaterialGroup(e,t){var n,r,i;const o=null!==(r=(n=this.options).materialBindings)&&void 0!==r?r:n.materialBindings={},s=null!==(i=o[e])&&void 0!==i?i:o[e]={};for(const[a,c]of Object.entries(t))c&&(this.sceneResources.add(c),s[a]=c.uuid)}copyMaterialGroup(e,t){var n;const r={};for(const[i,o]of Object.entries(null!==(n=this.getMaterialGroup(e))&&void 0!==n?n:{})){const e=pe.generateUUID();r[i]=this.sceneResources.copy(o.uuid,e)}return this.registerMaterialGroup(t,r),r}getDetectRes(){var e,t;return function(e){var t;const n=null==e?void 0:e.backend,r=(null==n?void 0:n.isWebGLBackend)?n.gl:(null==n?void 0:n.isWebGPUBackend)?n.device:void 0;if(!n||!r||br.has(r))return mr;if(n.isWebGLBackend&&(null===(t=n.gl)||void 0===t?void 0:t.isContextLost()))return mr;const i=gr.get(n);if((null==i?void 0:i.device)===r)return i.result;try{let t="",i=!1;if(n.isWebGLBackend){const e=n.gl,r=e.getExtension("WEBGL_debug_renderer_info");t=r?e.getParameter(r.UNMASKED_RENDERER_WEBGL):"",i=n.extensions?n.extensions.has("EXT_clip_control"):!!e.getExtension("EXT_clip_control")}else{const e=n.device.adapterInfo;t=e?[e.vendor,e.architecture,e.device,e.description].filter(Boolean).join(" "):""}const a=!/swiftshader|llvmpipe|software/i.test(t),c=new vr(function(e){return e.toLowerCase().replace(/.*angle ?\((.+)\)(?: on vulkan [0-9.]+)?$/i,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"").replace(/(?:vulkan|opengl) \d+\.\d+(?:\.\d+)?(?: \((.*)\))?/,"$1")}(t)).query(),l=Object.freeze(De(De({},c),{},{tier:a?c.tier:0,WebGPU:!!n.isWebGPUBackend,WebGL:!!n.isWebGLBackend,WebGL2:!!n.isWebGLBackend,EXTClipControl:i,isGPUAcceleratorEnabled:a}));if(!yr.has(n)){var o,s;const t=()=>gr.delete(n);null==e||null===(o=e.domElement)||void 0===o||o.addEventListener("webglcontextlost",t),null==e||null===(s=e.domElement)||void 0===s||s.addEventListener("webglcontextrestored",t),yr.add(n)}return n.isWebGPUBackend&&n.device.lost.then(()=>{var e;br.add(r),(null===(e=gr.get(n))||void 0===e?void 0:e.device)===r&&gr.delete(n)}),gr.set(n,{device:r,result:l}),l}catch(a){return mr}}(null===(e=null!==(t=this.pencil)&&void 0!==t?t:this.options.pencil)||void 0===e?void 0:e.renderer)}getQueryOverrides(){return Mr()}getEffectiveLogarithmicDepthBuffer(){const{logarithmicDepthBuffer:e}=this.getQueryOverrides();return null!=e?e:!!this.options.logarithmicDepthBuffer}getEffectiveTier(){var e;const{tier:t}=this.getQueryOverrides();return null!==(e=null!=t?t:this.options.tier)&&void 0!==e?e:this.getDetectRes().tier}resolveRendererDepthBufferOptions(){return this.getEffectiveLogarithmicDepthBuffer()?{logarithmicDepthBuffer:!0,reversedDepthBuffer:!1,autoDepthBuffer:!0}:{logarithmicDepthBuffer:!1,reversedDepthBuffer:!1,autoDepthBuffer:!1}}showDetectRes(){var e;const t=this.getDetectRes(),n=null===(e=this.pencil)||void 0===e?void 0:e.renderer,r=this.getEffectiveTier();this.tier0=3!==r,console.info("vis-core:detect",Ft,JSON.stringify(De(De({},t),{},{ldb:null==n?void 0:n.logarithmicDepthBuffer,rdb:null==n?void 0:n.reversedDepthBuffer,tier0:this.tier0}),null,2))}setOptions(e){void 0!==e.controls&&this.validateControls(e.controls),this.options=De(De(De({},this.options),e),void 0!==e.controls?{controls:structuredClone(e.controls)}:{}),this.tier0=3!==this.getEffectiveTier()}setRuntimeAssets(e){var t;const n=e?new Ke(e,this.options.assetsPrefix,!1!==this.runtimePolicy.strictBundleAssets):void 0;null===(t=this.assetResolver)||void 0===t||t.dispose(),this.assetResolver=n}authorizeSceneOptions(e){return Ce(function*(){})()}fromJSON(e,t){var n=this;return Ce(function*(e,t,r={}){var i;n.cancelPrefabOperations(),n.prefabAssets=[],n.prefabMaterials=[];const o=De({},t),s=o.preprocessor;let a;delete o.preprocessor,"string"==typeof e?(console.time("vis-core:time.json-fetch"),a=yield $e(e,{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!1}}),console.timeEnd("vis-core:time.json-fetch")):a=e,s&&(a=yield s(a)),Mt(a),n.setRuntimeAssets(a.runtimeAssets);const c=r.consumeInput&&!s&&1===a.scenes.length,l=yt(a,a.entrySceneId,{resolveResources:!c});if(!l.vis)throw new Error("fromJSON: missing vis in scene document");if(l.vis.type!==n.visName)throw new Error(`fromJSON: scene ${l.id} requires ${l.vis.type}, received ${n.visName}`);let d=De({},l.vis.options);for(const n of["pencil","rendererWarmup","container","css2DContainer","controlsContainer"])delete d[n];var u,p;o.beforeSetVisOptions&&(d=null!==(u=yield o.beforeSetVisOptions(d,n))&&void 0!==u?u:d);(delete d.assetsPrefix,n.setOptions(d),o.afterSetVisOptions)&&(n.options=null!==(p=yield o.afterSetVisOptions(n.options,n))&&void 0!==p?p:n.options);let h;"map"===n.visName&&(yield n.authorizeSceneOptions(n.options)),n.cameraState=De({},l.cs),n.cameraStateActive=null!==(i=l.csa)&&void 0!==i?i:"visShow";try{var f,v;h=n.initializeRuntime();const e=Ot(l,{omitPrefabPreviews:!(null===(f=n.runtimePolicy)||void 0===f?void 0:f.includePrefabPreviews),consumeInput:!0});yield h,a.runtimeAssets&&kt({scene:e},a.runtimeAssets.entries.flatMap(e=>e.sources),n.resolveAssetUrl),yield n.restoreScene(e,n.objectTypes,De(De({},r),{},{consumeInput:!0})),n.setPrefabLibrary(a.prefabLibrary,null!==(v=a.materialLibrary)&&void 0!==v?v:[]),o.beforeShow&&(yield o.beforeShow(n)),yield n.show(),o.afterShow&&(yield o.afterShow(n))}catch(Le){throw yield null==h?void 0:h.catch(()=>{}),console.error(Le),Le}}).apply(this,arguments)}initializeRuntime(){var e,t=this;return this.disposed?Promise.reject(/* @__PURE__ */new Error("Vis has been disposed")):null!==(e=this.runtimeInitialization)&&void 0!==e?e:this.runtimeInitialization=Ce(function*(){var e,n;if(yield t.createRuntime(),t.disposed)throw new Error("Vis has been disposed");if(null===(e=t.pencil.event)||void 0===e||e.on("lead.updateKey",t.handleObjectIdentityChanged),null===(n=t.pencil.event)||void 0===n||n.on("sceneResources.updateKey",t.handleMaterialIdentityChanged),t.initializeControls(),yield t.onRuntimeReady(),t.disposed)throw new Error("Vis has been disposed");t.applyControls()})()}onRuntimeReady(){return Ce(function*(){})()}onSceneRestored(){return Ce(function*(){})()}onDispose(){}get objectTypes(){return ur}get defaultCameraUp(){return new y(0,1,0)}createRuntime(){var e=this;return Ce(function*(){var t;if(e.pencil)return;e.tier0=3!==e.getEffectiveTier();const n=De(De({},e.options.pencilConfig),{},{css2DRendererParams:{collision:{enabled:!0,fadeTime:0}}}),r=null===(t=n.camera)||void 0===t?void 0:t.up,i=Array.isArray(r)?(new y).fromArray(r):r?new y(r.x,r.y,r.z):e.defaultCameraUp;if(n.camera=De(De({near:.1,far:1e3,fov:45},n.camera),{},{up:i.normalize()}),e.options.css2DContainer&&(n.css2DRendererParams=De({container:e.options.css2DContainer},n.css2DRendererParams)),e.options.controlsContainer&&(n.controls={domElement:e.options.controlsContainer}),e.options.pencil){var o,s,a,c,l,d,u,p;e.pencil=e.options.pencil,e.ownsPencil=!1,e.acquireRenderingSuspensions(),e.renderingSuspensions.size||e.pencil.stop(),e.sceneActive=e.pencil.addPage({cameraOptions:{fov:null!==(o=null===(s=n.camera)||void 0===s?void 0:s.fov)&&void 0!==o?o:45,near:null!==(a=null===(c=n.camera)||void 0===c?void 0:c.near)&&void 0!==a?a:.1,far:null!==(l=null===(d=n.camera)||void 0===d?void 0:d.far)&&void 0!==l?l:1e3,up:null!==(u=null===(p=n.camera)||void 0===p?void 0:p.up)&&void 0!==u?u:new y(0,1,0)},sceneOptions:{background:new V(0)}}),e.setSceneActive()}else{const t=new b(De(De({container:e.container,helper:!1,css2DRenderer:!0,attributesWorkerVersion:Ft,camera:{near:.1,far:1e3,fov:45,up:new y(0,1,0)},bloom:!0,scene:{background:new V(0)},loader:{prefix:e.options.assetsPrefix,simpleTexture4deleted:!0}},n),{},{rendererWarmup:e.rendererWarmup,renderer:Er(e.resolveRendererDepthBufferOptions().autoDepthBuffer,n.renderer)}));e.rendererWarmup=void 0,e.pencil=t,e.ownsPencil=!0,e.acquireRenderingSuspensions(),e.sceneActive=1}const h=e.pencil;if(yield h.ready,e.disposed)throw new Error("Vis has been disposed");if(e.showDetectRes(),e.ownsPencil){if(e.tier0){var f,v,m;if(void 0===(null===(f=n.composer)||void 0===f?void 0:f.multisampling))h.options.composer=De(De({},h.options.composer),{},{multisampling:0}),null===(m=h.composerController)||void 0===m||m.synchronizeRendererCapabilities(0);if(void 0===(null===(v=n.loader)||void 0===v?void 0:v.anisotropy)){h.options.loader=De(De({},h.options.loader),{},{anisotropy:1}),h.loaderController.options.loaderParams.anisotropy=1;for(const e of h.loaderController.controllerMap.keys())e.options.anisotropy=1}}fe(h,{container:e.container,tier0:e.tier0,observeParentScale:!!e.options.observeParentScale&&e.runtimePolicy.observeParentScale})}e.lead=h.lead,e.sceneResources=h.sceneResources,h.loader.loadingManager.setURLModifier(e.resolveAssetUrl),h.loader.on("loadError",t=>e.emit("resourceLoadError",t)),h.event.on("scriptError",e.reportScriptError),h.loader.on("progress",(...t)=>{!0!==e.showState&&e.emit("loaderProgress",...t)}),e.leftTruck&&(h.controls.mouseButtons.left=T.TRUCK,h.controls.mouseButtons.right=T.ROTATE),e.hideSceneContent(),e.initSceneUserData()})()}setSceneActive(){this.pencil.showPage(this.sceneActive),this.pencil.controls.updateCameraUp(),this.applySceneRenderState(),this.applyControls()}applySceneRenderState(){var e;const t=this.pencil.scene,n=null==t?void 0:t.userData;if(!n)return;if("boolean"==typeof n.shadowMapEnabled){var r;const e=null===(r=this.pencil.renderer)||void 0===r?void 0:r.shadowMap;e&&e.enabled!==n.shadowMapEnabled&&(e.enabled=n.shadowMapEnabled,t.traverse(e=>{const t=e;t.receiveShadow&&t.material&&(Array.isArray(t.material)?t.material:[t.material]).forEach(e=>{e.needsUpdate=!0})}))}const i=null===(e=this.pencil.composerController)||void 0===e?void 0:e.bloomPass;i&&("number"==typeof n.bloomThreshold&&(i.threshold=n.bloomThreshold),"number"==typeof n.bloomRadius&&(i.radius=n.bloomRadius),"number"==typeof n.bloomStrength&&(i.strength=n.bloomStrength))}releasePencilOwnership(){this.ownsPencil=!1}initSceneUserData(){var e,t,r;const i=this.pencil,o=i.scene.background,s=o instanceof V?"Color":o instanceof n?"Texture":"None",a="Texture"===s?o:null,c=303===(null==a?void 0:a.mapping),l="Color"===s?o.getHexString():"000000";i.scene.userData=new Proxy({backgroundType:s,backgroundColor:l,backgroundTexture:a,backgroundEquirectangular:c,shadowMapEnabled:this.pencil.renderer.shadowMap.enabled,bloomThreshold:null===(e=this.pencil.composerController)||void 0===e||null===(e=e.bloomPass)||void 0===e?void 0:e.threshold,bloomRadius:null===(t=this.pencil.composerController)||void 0===t||null===(t=t.bloomPass)||void 0===t?void 0:t.radius,bloomStrength:null===(r=this.pencil.composerController)||void 0===r||null===(r=r.bloomPass)||void 0===r?void 0:r.strength},{set:(e,t,n)=>{if("shadowMapEnabled"===t)this.pencil.renderer.shadowMap.enabled=n,this.pencil.scene.traverse(e=>{const t=e;if(t.receiveShadow&&t.material){const e=t.material;Array.isArray(e)?e.forEach(e=>{e.needsUpdate=!0}):e.needsUpdate=!0}});else if("backgroundType"===t)if("None"===n)i.scene.background=null;else if(i.scene.userData.backgroundColor&&"Color"===n){const e=i.scene.userData.backgroundColor.replace("#","");i.scene.background=(new V).setHex(parseInt(e,16))}else i.scene.userData.backgroundTexture&&"Texture"===n&&(i.scene.background=i.scene.userData.backgroundTexture);else if("backgroundColor"===t&&"Color"===i.scene.userData.backgroundType){const e=n.replace("#","");i.scene.background=(new V).setHex(parseInt(e,16))}else if("backgroundTexture"===t&&"Texture"===i.scene.userData.backgroundType)i.scene.background=n,n&&(i.scene.userData.backgroundEquirectangular?n.mapping=303:n.mapping=300);else if("backgroundEquirectangular"===t){const e=i.scene.background;(null==e?void 0:e.mapping)&&(e.mapping=n?303:300,e.needsUpdate=!0)}else"bloomThreshold"===t?i.composerController.bloomPass&&(i.composerController.bloomPass.threshold=n):"bloomRadius"===t?i.composerController.bloomPass&&(i.composerController.bloomPass.radius=n):"bloomStrength"===t&&i.composerController.bloomPass&&(i.composerController.bloomPass.strength=n);return Reflect.set(e,t,n)}})}setObjectState(e,t){return function(e,t,n=Qn){const r=De({},t),i=Jn.has(e);Jn.add(e);try{return Object.assign(e.object3d.userData,r),n(e,r),e}finally{i||Jn.delete(e)}}(e,t,(e,t)=>this.applyObjectState(e,t))}applyObjectState(e,t=e.object3d.userData){Qn(e,t)}playEnterTransition({duration:e,onPrepared:t}){var n=this;return Ce(function*(){const r=_(n.lead.scene);null==t||t(),yield r.start({duration:e})})()}addCSS3DRenderer(e){var t;this.pencil&&!(null===(t=this.pencil.cssRendererController)||void 0===t?void 0:t.css3Drenderer)&&this.pencil.cssRendererController.addRenderer("css3d",{container:e,zIndex:"auto"})}getControls(){var e;return structuredClone(null!==(e=this.options.controls)&&void 0!==e?e:{})}setControls(e){this.validateControls(e),this.options.controls=De(De({},this.options.controls),structuredClone(e)),this.applyControls()}setTemporaryControls(e){var t;this.validateControls(e);const n={};return null!==(t=this.temporaryControls)&&void 0!==t||(this.temporaryControls=/* @__PURE__ */new Map),this.temporaryControls.set(n,structuredClone(e)),this.applyControls(),()=>{this.temporaryControls.delete(n)&&this.applyControls()}}validateControls(e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid scene controls");for(const[t,n]of Object.entries(e))if("mouseLeft"===t||"mouseRight"===t||"mouseWheel"===t){if(!Number.isInteger(n)||n<0)throw new Error(`Invalid control action ${t}`)}else if("mouseNone"===t){if("boolean"!=typeof n)throw new Error("Invalid mouseNone control")}else if("autoRotateSpeed"===t){if(!Number.isFinite(n))throw new Error("Invalid autoRotateSpeed control")}else{if("viewportPadding"!==t)throw new Error(`Unknown scene control ${t}`);if(!Array.isArray(n)||4!==n.length||![...n].every(e=>Number.isFinite(e)&&e>=0))throw new Error("Invalid viewportPadding control")}}initializeControls(){const e=this.pencil.controls.mouseButtons,t=De({mouseLeft:e.left,mouseRight:e.right,mouseWheel:e.wheel,mouseNone:!1,autoRotateSpeed:0},this.options.controls);this.validateControls(t),this.options.controls=structuredClone(t),this.controlsInitialized=!0,this.applyControls()}applyControls(){var e,t,n;if(this.disposed||!this.controlsInitialized||!(null===(e=this.pencil)||void 0===e?void 0:e.controls))return;if(this.pencil.lead&&this.lead!==this.pencil.lead)return;const r=De({},this.options.controls);for(const i of null!==(t=null===(n=this.temporaryControls)||void 0===n?void 0:n.values())&&void 0!==t?t:[])Object.assign(r,i);this.applyControlOptions(r)}applyControlOptions(e){var t,n,r;const i=this.pencil.controls.mouseButtons;for(const[o,s]of[["mouseLeft","left"],["mouseRight","right"],["mouseWheel","wheel"]]){const t=e[o];e.mouseNone?i[s]=T.NONE:void 0!==t&&(t||this.runtimePolicy.applyDisabledMouseButtons)&&(i[s]=t)}null===(t=(n=this.pencil).setViewPadding)||void 0===t||t.call(n,...null!==(r=e.viewportPadding)&&void 0!==r?r:[0,0,0,0])}prepareInitialCamera(){var e=this;return Ce(function*(){(yield e.useSaveCamera(e.cameraStateActive))||(yield e.restoreCameraControlTarget())})()}restoreCameraControlTarget(){var e=this;return Ce(function*(){const t=e.pencil.camera;if(!t||e.pencil.lead&&e.pencil.lead!==e.lead)return;let n=t.userData._cameraControlTarget;const r=t.getWorldPosition(new y);void 0===n&&(n=t.getWorldDirection(new y).multiplyScalar(Math.max(r.length(),1)).add(r).toArray()),Array.isArray(n)&&3===n.length&&n.every(Number.isFinite)&&(yield e.pencil.controls.setLookAt(...r.toArray(),...n,!1))})()}hideSceneContent(){this.sceneTemporarilyHidden||(this.authoredSceneVisible=this.lead.scene.object3d.visible),this.lead.scene.object3d.visible=!1,this.sceneTemporarilyHidden=!0}showSceneContent(){this.sceneTemporarilyHidden&&(this.lead.scene.object3d.visible=this.authoredSceneVisible),this.sceneTemporarilyHidden=!1}show(){var e=this;return Ce(function*(){if(e.disposed)throw new Error("Vis has been disposed");if(!e.showState){if(e.showing)return e.showing;e.showing=Ce(function*(){yield e.prepareInitialCamera(),e.disposed||e.options.disableInitShow||(e.showSceneContent(),e.pencil.start(),e.showState=!0,e.emit("show"))})();try{yield e.showing}finally{e.showing=void 0}}})()}hide(){this.showState&&(this.hideSceneContent(),this.showState=!1,this.emit("hide"))}exportScene(){this.pencil.render();const e=this.lead.exportBaseObject(this.lead.scene,{checkTextures:!1});return this.sceneTemporarilyHidden&&(this.authoredSceneVisible?delete e.object.visible:e.object.visible=!1),e}exportBaseObject(e){return this.pencil.render(),this.lead.exportBaseObject(e,{checkTextures:!1})}restoreBaseObject(e){var t=this;return Ce(function*(e,n=this.lead.scene,r=this.objectTypes,i,o={}){const s=yield t.lead.restoreBaseObject(n,e,r,t.getRoomEnvMap(),!0,i,o);try{return null==i||i.throwIfAborted(),s.traverse(e=>t.applyObjectState(e)),s}catch(a){throw s.erase(),a}}).apply(this,arguments)}restoreScene(e){var t=this;return Ce(function*(e,n=this.objectTypes,r={}){const i=function(e,t,n={}){const r="string"==typeof e?JSON.parse(e):e,i=e=>{var t,n,r,o;if(!e)return!1;const s=e.userData;return!!((null==s?void 0:s._baseObjectKey)||void 0!==(null==s?void 0:s._baseObjectUuid)&&1!==(null==s?void 0:s._baseObjectIdentityVersion)||(null==s||null===(t=s._baseObjectUserData)||void 0===t?void 0:t.mapGeneratedId)&&void 0===s._baseObjectUserData.mapFeatureId)||(null!==(n=e.children)&&void 0!==n?n:[]).some(i)||i(null===(r=e.shadow)||void 0===r?void 0:r.camera)||i(null==s||null===(o=s._prefabLink)||void 0===o?void 0:o.baseline)};if(!i(null==r?void 0:r.object))return{graph:e,bindings:t};const o="string"==typeof e||n.consumeInput?r:structuredClone(r);In(o);const s=L(o),a=t?structuredClone(t):void 0,c=e=>{var t;return null!==(t=s.get(e))&&void 0!==t?t:e};if(a){var l;for(const e of["container","continentsBackground","sphere","map","secondaryMap"])"string"==typeof a[e]&&(a[e]=c(a[e]));(null===(l=a.region)||void 0===l?void 0:l.object)&&(a.region.object=c(a.region.object));for(const e of["parentBackgrounds","cities"])Array.isArray(a[e])&&(a[e]=a[e].map(c))}return{graph:o,bindings:a}}(e,t.options.sceneBindings,{consumeInput:r.consumeInput});"map"===t.visName&&(yield t.authorizeSceneOptions(De(De({},t.options),i.bindings?{sceneBindings:i.bindings}:{})));const o="string"==typeof i.graph?JSON.parse(i.graph):i.graph,s=r.consumeInput||"string"==typeof e||i.graph!==e,a=f(o,t.options),c=a&&!s?structuredClone(o):o,l=a?structuredClone({materialBindings:t.options.materialBindings,regionTextureRules:t.options.regionTextureRules}):void 0;var u;a&&d(c,l),yield t.initializeRuntime(),t.setSceneActive(),yield t.lead.restoreBaseObject(t.lead.scene,c,n,t.getRoomEnvMap(),t.options.createIfNeeded,void 0,De(De({},r),{},{consumeInput:!!s||a,onResourceLoad:(u=Ce(function*(e){var n;const i=t.emit("sceneResourceLoad",e);yield null===(n=r.onResourceLoad)||void 0===n?void 0:n.call(r,e),i&&(yield new Promise(e=>setTimeout(e,0)))}),function(e){return u.apply(this,arguments)})})),t.authoredSceneVisible=t.lead.scene.object3d.visible,t.sceneTemporarilyHidden=!1,t.showState||t.hideSceneContent(),i.bindings&&(t.options.sceneBindings=i.bindings),l&&(t.options.materialBindings=l.materialBindings,t.options.regionTextureRules=l.regionTextureRules);for(const d of[...t.lead.objects.values()]){var p;t.applyObjectState(d),yield null===(p=d.rebuildFromScene)||void 0===p?void 0:p.call(d)}t.pencil.controls.updateCameraUp(),yield t.restoreCameraControlTarget(),t.pencil.refreshActiveView(),yield t.onSceneRestored(),t.applyControls()}).apply(this,arguments)}getClassRefByType(e){return this.objectTypes[e]}addGroup(){var e=this;return Ce(function*(){return yield e.lead.draw(ur.Group)})()}addCSS2D(e){var t=this;return Ce(function*(e,n={}){return t.addNode(e,n)}).apply(this,arguments)}addCSS3D(e){var t=this;return Ce(function*(e,n={}){return t.addNode(e,De(De({},n),{},{type:n.type||"3d"}))}).apply(this,arguments)}addNode(e){var t=this;return Ce(function*(e,n={}){n.display&&(e.style.display=n.display);let r=0;void 0!==n.onTop&&(r=n.onTop);let i="2d";void 0!==n.type&&(i=n.type);const o=n.target?yield n.target.draw(ur.Node,{children:e,type:i}):yield t.lead.draw(ur.Node,{children:e,type:i});return r&&o.setTop(r),o}).apply(this,arguments)}getRoomEnvMap(){if(this.roomEnvMap)return this.roomEnvMap;if(this.disposed)throw new Error("Vis has been disposed");const e=m(this.pencil.renderer,this.pencil.resources);return this.roomEnvLease=e,this.roomEnvMap=e.resource,e.resource}getScreenPosition(e,t,n){const r=new y(e,t,n);return r.project(this.pencil.camera),this.pencil.getScreenPositionFromNDC(r.x,r.y)}uuidByObject(e){const t=this.lead.objMap.get(e);return t?this.uuidByBaseObject(t):void 0}objectByUuid(e){var t;return null===(t=this.baseObjectByUuid(e))||void 0===t?void 0:t.object3d}uuidByBaseObject(e){return e.object3d.uuid}baseObjectByUuid(e){return this.lead.objectsByUuid.get(e)}baseObjectByKey(e){return this.baseObjectByUuid(e)}baseObjectByName(e){return[...this.lead.objects.values()].find(t=>t.name===e)}dispose(){var e;if(this.disposed)return;this.disposed=!0;const t=[],n=e=>{try{e()}catch(n){t.push(n)}};n(()=>this.cancelPrefabOperations()),this.prefabAssets=[],this.prefabMaterials=[],this.showState=!1,n(()=>{var e;return null===(e=this.assetResolver)||void 0===e?void 0:e.dispose()}),this.assetResolver=void 0,n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("scriptError",this.reportScriptError)}),n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("lead.updateKey",this.handleObjectIdentityChanged)}),n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("sceneResources.updateKey",this.handleMaterialIdentityChanged)}),n(()=>this.onDispose()),n(()=>{var e;return null===(e=this.temporaryControls)||void 0===e?void 0:e.clear()}),n(()=>super.dispose()),this.publicDir={},n(()=>{var e;return null===(e=this.roomEnvLease)||void 0===e?void 0:e.release()}),this.roomEnvLease=void 0,this.roomEnvMap=void 0,this.ownsPencil?n(()=>{var e;return null===(e=this.pencil)||void 0===e?void 0:e.dispose()}):this.sceneActive>=0&&n(()=>{var e;return null===(e=this.pencil)||void 0===e?void 0:e.removePage(this.sceneActive)});for(const r of null!==(e=this.renderingSuspensions)&&void 0!==e?e:[]){this.renderingSuspensions.delete(r);const e=r.releasePencil;r.releasePencil=void 0,n(()=>null==e?void 0:e())}if(1===t.length)throw t[0];if(t.length)throw new AggregateError(t,"Base disposal failed")}};Re(Dr,"VisName","base");var Cr=(e={})=>{var t,n,r,i,o,s;return String(null!==(t=null!==(n=null!==(r=null!==(i=null!==(o=null!==(s=e.adcode)&&void 0!==s?s:e.iso_a2)&&void 0!==o?o:e.DistrictID)&&void 0!==i?i:e.id)&&void 0!==r?r:e.name)&&void 0!==n?n:e.DistName)&&void 0!==t?t:"all")};function Rr(e,t,n){var r;const i=e.userData,o=null!==(r=null!=n?n:i.mapFeatureId)&&void 0!==r?r:Cr(i);i.mapGenerated=!0,i.mapRole=t,i.mapFeatureId=String(o),i.mapGeneratedId=`${t}:${o}`}var Lr=/* @__PURE__ */new WeakMap,kr=class extends be{getHideMaterial(){var e,t;const n=null===(e=this.pencil)||void 0===e?void 0:e.resources,r=()=>new B({colorWrite:!1,transparent:!0});if(!n)return null!==(t=this.standaloneHideMaterial)&&void 0!==t?t:this.standaloneHideMaterial=r();let i=Lr.get(n);return i&&!n.wasDisposed(i)||(i=r(),Lr.set(n,i)),i}constructor(e){var t;super(),Re(this,"objectType","PlaneMap"),Re(this,"options",void 0),Re(this,"isActive",!0),Re(this,"groupArr",[]),Re(this,"areaArr",[]),Re(this,"lineArr",void 0),Re(this,"mergeSideArea",null),Re(this,"extrudelineArr",void 0),Re(this,"splitPolygons",0),Re(this,"standaloneHideMaterial",void 0),this.options=De({areaGroup:!0,hasSide:!0,hasTop:!0,lineOffset:0,start:0,hasLine:!0,castShadow:!1,topSegments:0,bevelRatio:0,depth:2,bloom:!1,conic:!1,mergeSide:!1,hasExtrudeLine:!0,onTop:0,projection:{}},e),-160===(null===(t=this.options.projection.rotate)||void 0===t?void 0:t[0])&&("winkel3"===this.options.projection.projectionType?this.splitPolygons=100:this.splitPolygons=300)}create(){var e=this;return Ce(function*(){const{geojson:t,extrudeLineGeojson:n,bbox:r,areaGroup:i,materialOptions:o,hasSide:s,hasTop:a,hasLine:c,mergeSide:l,hasExtrudeLine:d}=e.options;var u;i&&(e.groupArr=yield Promise.all(t.features.map((u=Ce(function*(t){const{properties:n}=t,r=`${e.getPropertiesKey(n)}`,i=yield e.draw(be);return Rr(i,"group",r),i.object3d.name="100000_JD"===(null==n?void 0:n.adcode)?"十段线":null==n?void 0:n.name,void 0!==(null==n?void 0:n.adcode)&&(i.userData.adcode=n.adcode),i}),function(e){return u.apply(this,arguments)}))));const{lineMat:p,topMat:h,sideMat:f}=o,v=s?[h,f||h]:[h],[m,g]=yield Promise.all([(a||s)&&e.addArea(t,{material:v,bbox:r,areaGroup:i,hasSide:s,hasTop:a,onTop:e.options.onTop}),c&&p&&e.addLine(t,{material:p,onTop:e.options.onTop+2,areaGroup:i})]);m&&(e.areaArr=m),l&&(yield e.mergeAreaSide()),g&&(e.options.conic||g.forEach(t=>{t.position.z=e.options.depth+e.options.lineOffset}),e.lineArr=g),d&&n&&(yield e.createExtrudeLines()),e.markGeneratedObjects()})()}markGeneratedObjects(){var e,t;this.groupArr.forEach(e=>Rr(e,"group")),this.areaArr.forEach(e=>Rr(e,"area")),null===(e=this.lineArr)||void 0===e||e.forEach(e=>Rr(e,"line")),null===(t=this.extrudelineArr)||void 0===t||t.forEach(e=>Rr(e,"extrudeLine","all")),this.mergeSideArea&&Rr(this.mergeSideArea,"mergedSide","all")}ensureExtrudeLineMaterials(){const e=this.options.materialOptions;for(const[t,n]of[["lineMat","extrudeLineMat"],["bgLineMat","bgExtrudeLineMat"]]){if(e[n]||!e[t])continue;const r=I(e[t],e=>this.createResource(e));r.name="板块边线",this.sceneResources.add(r),e[n]=r}return e}createExtrudeLines(){var e=this;return Ce(function*(){var t;const{extrudeLineGeojson:n}=e.options,{extrudeLineMat:r,bgExtrudeLineMat:i}=e.ensureExtrudeLineMaterials();if(!n||!r||(null===(t=e.extrudelineArr)||void 0===t?void 0:t.length))return;const o=yield e.addLine(n,{material:r,onTop:e.options.onTop+3});o.forEach(t=>{e.options.conic||(t.position.z=e.options.depth+e.options.lineOffset),t.object3d.name="板块边线",Rr(t,"extrudeLine","all")}),e.extrudelineArr=o,e.markGeneratedObjects(),i&&!e.isActive&&e.useExtrudeLineMaterial("bg"),e.options.bloom&&e.isActive&&e.toggleExtrudelineBloom(!0)})()}createLines(e,t){var n=this;return Ce(function*(){var r;if((null===(r=n.lineArr)||void 0===r?void 0:r.length)||!n.options.hasLine)return n.lineArr||[];const i=n.options.materialOptions,o=e||i.lineMat;if(!o)return[];i.lineMat=o,t&&(i.bgLineMat=t);const s=yield n.addLine(n.options.geojson,{material:o,onTop:n.options.onTop+2,areaGroup:n.options.areaGroup});return n.options.conic||s.forEach(e=>{e.position.z=n.options.depth+n.options.lineOffset}),n.lineArr=s,n.markGeneratedObjects(),n.isActive||n.useLineMaterial("bg"),s})()}clearExtrudeLines(){var e;null===(e=this.extrudelineArr)||void 0===e||e.forEach(e=>{e.erase()}),this.extrudelineArr=void 0}syncExtrudeLines(){var e=this;return Ce(function*(t=this.options.hasExtrudeLine){e.options.hasExtrudeLine=t,t?yield e.createExtrudeLines():e.clearExtrudeLines()}).apply(this,arguments)}mergeAreaSide(){var e=this;return Ce(function*(){const{extrudeLineGeojson:t}=e.options;t&&(e.mergeSideArea=(yield e.addArea(t,{material:e.areaArr[0].object3d.material[1],bbox:e.options.bbox,areaGroup:!1,hasSide:!0,hasTop:!1,onTop:e.options.onTop}))[0],Rr(e.mergeSideArea,"mergedSide","all"),e.mergeSideArea.object3d.name="板块合并侧面",e.areaArr.forEach(t=>{t.object3d.material[1]=e.getHideMaterial(),t.object3d.castShadow=!1}))})()}unmergeAreaSide(){var e=this;return Ce(function*(){if(!e.mergeSideArea)return;const t=e.mergeSideArea.object3d.material;e.mergeSideArea.erase(),e.mergeSideArea=null,e.areaArr.forEach(n=>{n.object3d.material[1]=t,n.object3d.castShadow=e.options.castShadow})})()}addArea(t,n){var r=this;return Ce(function*(){const{bbox:i,material:o,onTop:s}=n,a=r.geojson2Meta(t),c=r.shouldUseGeometryWorker(a);if(n.areaGroup)return yield Promise.all(a.map((l=Ce(function*(t){const{coords:a,properties:l}=t,d=!(null==l?void 0:l.extension)&&n.hasSide,u=r.findGroup(r.getPropertiesKey(l)),p=`${r.getPropertiesKey(l)}`;let h=o;!d&&Array.isArray(o)&&(h=o[0]);const f=yield u.draw(e,r.options.conic?{useWorker:c,coordinatesArr:a,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:d,hasTop:n.hasTop,useGroups:d&&n.hasTop?2:0,material:h}:{useWorker:c,useFloat64Array:!0,coordinatesArr:a,globalMeta:[r.options.depth],projection:r.options.projection,topSegments:r.options.topSegments,bevelRatio:r.options.bevelRatio,bbox:i,hasBottom:!1,hasSide:d,hasTop:n.hasTop,useGroups:d&&n.hasTop?2:0,splitPolygons:r.splitPolygons,material:h});return s&&f.setTop(s),f.object3d.name="板块",f.object3d.castShadow=r.options.castShadow,f.userData=De({},l),Rr(f,"area",p),f}),function(e){return l.apply(this,arguments)})));{const t=a.flatMap(({coords:e})=>e);let s=o;!n.hasSide&&Array.isArray(o)&&(s=o[0]);const l=yield r.draw(e,r.options.conic?{useWorker:c,coordinatesArr:t,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:n.hasSide,hasTop:n.hasTop,useGroups:2,material:s}:{useWorker:c,useFloat64Array:!0,coordinatesArr:t,globalMeta:[r.options.depth],projection:De({},r.options.projection),topSegments:r.options.topSegments,bevelRatio:r.options.bevelRatio,bbox:i,hasSide:n.hasSide,hasTop:n.hasTop,hasBottom:!1,useGroups:2,splitPolygons:r.splitPolygons,material:s});return l.object3d.castShadow=r.options.castShadow,l.object3d.name="板块",l.userData={},Rr(l,"area","all"),[l]}var l})()}addLine(e,t){var n=this;return Ce(function*(){const{material:r,onTop:i}=t,o=n.geojson2Meta(e),s=n.shouldUseGeometryWorker(o);if(t.areaGroup)return yield Promise.all(o.map((a=Ce(function*(e){const{coords:t,properties:o}=e,a=n.findGroup(n.getPropertiesKey(o)),c=`${n.getPropertiesKey(o)}`,l=yield a.draw(ve,n.options.conic?{useWorker:s,coordinatesArr:t,projection:"sphere",globalMeta:[1,n.options.start+n.options.depth+n.options.lineOffset],material:r}:{useWorker:s,useFloat64Array:!0,coordinatesArr:t,globalMeta:[1],projection:n.options.projection,splitPolygons:n.splitPolygons,material:r});return Rr(l,"line",c),i&&l.setTop(i),l.object3d.name="线",l}),function(e){return a.apply(this,arguments)})));{const e=o.flatMap(({coords:e})=>e),t=yield n.draw(ve,n.options.conic?{useWorker:s,coordinatesArr:e,globalMeta:[1,n.options.start+n.options.depth+n.options.lineOffset],projection:"sphere",material:r}:{useWorker:s,useFloat64Array:!0,coordinatesArr:e,globalMeta:[1],projection:n.options.projection,splitPolygons:n.splitPolygons,material:r});return Rr(t,"line","all"),i&&t.setTop(i),t.object3d.name="线",[t]}var a})()}shouldUseGeometryWorker(e){if(this.options.conic)return!0;let t=0;for(const{coords:n}of e)for(const e of n)if(t+=e.length,t>=1e4)return!0;return!1}getPropertiesKey(e){return Cr(e)}geojson2Meta(e){return e.features.filter(e=>e.geometry).map(e=>{const{type:t,coordinates:n}=e.geometry;let r=[];return"Polygon"===t?r=n:"MultiPolygon"===t&&(r=n.flat()),{coords:r,properties:e.properties}})}update(e,t){const{lineMat:n,extrudeLineMat:r}=this.options.materialOptions;this.isActive&&[n,r].forEach(e=>{var n;const r=null==e?void 0:e.uniforms;(null==r||null===(n=r.lineLightAnimation)||void 0===n?void 0:n.value)&&r.time&&(r.time.value=t)})}findGroup(e,t=!1){return this.groupArr.find(t=>t.userData.mapFeatureId===String(e))}batchMaterialChanges(e){var t;const n=null===(t=this.sceneResources)||void 0===t?void 0:t.resources;n?n.batch(e):e()}useAreaMaterial(e){const{bgTopMat:t,bgSideMat:n,topMat:r,sideMat:i}=this.options.materialOptions,o="bg"===e?[t,n]:[r,i];o[0]&&this.batchMaterialChanges(()=>{this.mergeSideArea?(this.areaArr.forEach(e=>{e.object3d.material=[o[0],this.getHideMaterial()]}),this.mergeSideArea.object3d.material=o[1]):this.areaArr.forEach(e=>{e.object3d.material=[...o]})})}useLineMaterial(e){const{lineMat:t,bgLineMat:n}=this.options.materialOptions,r="bg"===e?n:t;r&&this.batchMaterialChanges(()=>{this.lineArr.forEach(e=>{e.object3d.material=r})})}useExtrudeLineMaterial(e){const{extrudeLineMat:t,bgExtrudeLineMat:n}=this.options.materialOptions,r="bg"===e?n:t;r&&this.batchMaterialChanges(()=>{var e;null===(e=this.extrudelineArr)||void 0===e||e.forEach(e=>{e.object3d.material=r})})}changeLineAnimateParams({speed:e=.5,extrude:t=!1}){const{lineMat:n,extrudeLineMat:r}=this.options.materialOptions,i=t?r:n;if(!i)return;i.uniforms.time.value=0,i.uniforms.speed.value=e,i.uniforms.lineLightAnimation.value=1;const{size:o,min:s,max:a}=this.getSize();i.uniforms.size.value=Math.max(o.x,o.y)/2,i.uniforms.uCenter.value=new ee((s.x+a.x)/2,(s.y+a.y)/2)}deactive(){this.isActive&&this.batchMaterialChanges(()=>{this.isActive=!1,this.options.bloom&&this.toggleExtrudelineBloom(!1),this.useAreaMaterial("bg"),this.useLineMaterial("bg"),this.useExtrudeLineMaterial("bg")})}render(){super.render(),this.options.bloom&&this.toggleExtrudelineBloom(!0)}rebuildFromScene(){this.groupArr=[],this.areaArr=[],this.extrudelineArr=[],this.mergeSideArea=null;const e=[];this.children.forEach(t=>{t.userData.copySource||t.userData.mapGenerated&&("Group"===t.objectType?(this.groupArr.push(t),t.children.forEach(t=>{!t.userData.copySource&&t.userData.mapGenerated&&("ExtrudePolygon"===t.objectType?this.areaArr.push(t):"Line"===t.objectType&&e.push(t))})):"ExtrudePolygon"===t.objectType?"mergedSide"===t.userData.mapRole||this.options.mergeSide&&!1===t.options.hasTop?this.mergeSideArea=t:this.areaArr.push(t):"Line"===t.objectType&&("extrudeLine"===t.userData.mapRole||"extrudeLine"===t.keyType?(this.extrudelineArr||(this.extrudelineArr=[]),this.extrudelineArr.push(t)):e.push(t)))}),this.lineArr=e,this.restoreMaterialOptionsFromScene(),this.markGeneratedObjects()}restoreMaterialOptionsFromScene(){const e=(e,t=0)=>{var n;const r=null==e||null===(n=e.object3d)||void 0===n?void 0:n.material;return Array.isArray(r)?r[t]:r},t=e=>{const t=/* @__PURE__ */new Map;let n,r=0;for(const i of e){if(!i)continue;const e=(t.get(i)||0)+1;t.set(i,e),e>r&&(n=i,r=e)}return n},n=t(this.areaArr.map(t=>{var n;return!1===(null===(n=t.options)||void 0===n?void 0:n.hasTop)?void 0:e(t,0)})),r=this.mergeSideArea?e(this.mergeSideArea,0):t(this.areaArr.map(t=>{var n,r;if(!1!==(null===(n=t.options)||void 0===n?void 0:n.hasSide))return e(t,!1===(null===(r=t.options)||void 0===r?void 0:r.hasTop)?0:1)})),i=t(this.lineArr.map(t=>e(t,0))),o=t((this.extrudelineArr||[]).map(t=>e(t,0)));this.options.materialOptions=De(De(De(De(De({},this.options.materialOptions),n?{topMat:n}:{}),r?{sideMat:r}:{}),i?{lineMat:i}:{}),o?{extrudeLineMat:o}:{})}toggleExtrudelineBloom(e){var t;null===(t=this.extrudelineArr)||void 0===t||t.forEach(t=>{e?t.enableBloom():t.disableBloom()})}active(){this.isActive||this.batchMaterialChanges(()=>{this.isActive=!0,this.useAreaMaterial("origin"),this.useLineMaterial("origin"),this.useExtrudeLineMaterial("origin"),this.options.bloom&&this.toggleExtrudelineBloom(!0)})}dispose(){super.dispose(),this.areaArr.length=0,this.lineArr&&(this.lineArr.length=0),this.extrudelineArr&&(this.extrudelineArr.length=0)}},Br=De(De({},ur),{},{Earth:class extends dr{constructor(e){const t=De({radius:30,rotationY:0},e);super(t),Re(this,"objectType","Earth"),Re(this,"options",void 0),this.options=t}create(){super.create();const e=this.pencil.sceneResources.get("earthMaterial");this.object3d.material=e,this.rotation.y=this.options.rotationY,this.object3d.name="地球"}rebuildFromScene(){}},SphereShadow:class extends P{constructor(e){super(),Re(this,"objectType","SphereShadow"),Re(this,"options",void 0),this.options=De({radius:30},e)}create(){var e=this;return Ce(function*(){const t=new l(e.options.radius,128,90),n=new B;e.object3d.geometry=t,e.object3d.material=n,e.scale.multiplyScalar(1.001),e.rotation.y=Math.PI/180*-90,e.object3d.name="阴影面",e.hide()})()}rebuildFromScene(){}},Countries:kr,PlaneMap:kr}),Tr=class extends Dr{constructor(...e){super(...e),Re(this,"leftTruck",!1),Re(this,"map",void 0),Re(this,"sphere",void 0),Re(this,"secondaryMap",void 0),Re(this,"rotationControls",void 0),Re(this,"releaseRotationLock",void 0),Re(this,"visibilityChecks",void 0),Re(this,"stopAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=this.setTemporaryControls({autoRotateSpeed:0})}),Re(this,"resumeAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=void 0})}get mapArea(){var e;return(null===(e=this.map)||void 0===e?void 0:e.areaArr)||[]}setOptions(e){super.setOptions(De({mapDepth:1.4,otherMapDepth:0,radius:30,copyChinaPlane:!1,mergeSide:!1},e))}applyControlOptions(e){var t;super.applyControlOptions(e),this.pencil.autoRotate(null!==(t=e.autoRotateSpeed)&&void 0!==t?t:0)}get objectTypes(){return Br}onRuntimeReady(){var e=this;return Ce(function*(){e.rotationControls=e.pencil.controls,e.rotationControls.addEventListener("controlstart",e.stopAutoRotate),e.rotationControls.addEventListener("controlend",e.resumeAutoRotate)})()}onDispose(){var e,t,n;for(const r of null!==(e=this.visibilityChecks)&&void 0!==e?e:[])r();null===(t=this.rotationControls)||void 0===t||t.removeEventListener("controlstart",this.stopAutoRotate),null===(n=this.rotationControls)||void 0===n||n.removeEventListener("controlend",this.resumeAutoRotate),this.rotationControls=void 0,this.resumeAutoRotate()}getLocationFrame(e,t=0){var n;const[r,o]=e;if(![r,o,t].every(Number.isFinite))throw new TypeError("Earth location and height must be finite");const s=i(r,o,1,1,!0),a=null===(n=this.sphere)||void 0===n?void 0:n.object3d;a&&s.applyAxisAngle(new y(0,1,0),Math.PI/2);const c=s.clone().multiplyScalar(this.getRadius());return a&&(a.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(a.matrixWorld),a.localToWorld(c),s.applyNormalMatrix((new se).getNormalMatrix(a.matrixWorld))),{position:c.addScaledVector(s,t),normal:s}}getLocationPosition(e,t=0){return this.getLocationFrame(e,t).position.toArray()}getCenter(){var e,t;return null!==(e=null===(t=this.sphere)||void 0===t?void 0:t.object3d.getWorldPosition(new y).toArray())&&void 0!==e?e:[0,0,0]}getRadius(){const e=this.sphere;return e?e.object3d.geometry.parameters.radius:0}getWorldRadius(){var e;const t=null===(e=this.sphere)||void 0===e?void 0:e.object3d;if(!t)return 0;t.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(t.matrixWorld);const n=[0,1,2].map(e=>(new y).setFromMatrixColumn(t.matrixWorld,e)),r=n.map(e=>Math.hypot(e.x,e.y,e.z)),i=Math.max(...r),o=64*Number.EPSILON;if(!Number.isFinite(i)||r.some(e=>e<=0||Math.abs(e-i)>i*o))throw new RangeError("Earth world radius requires a uniformly scaled sphere");if(n.forEach((e,t)=>e.divideScalar(r[t])),Math.abs(n[0].dot(n[1]))>o||Math.abs(n[0].dot(n[2]))>o||Math.abs(n[1].dot(n[2]))>o)throw new RangeError("Earth world radius requires a sphere without shear");const s=this.getRadius()*i;if(!Number.isFinite(s)||s<0)throw new RangeError("Earth world radius must be finite and non-negative");return s}requireSurfaceTransform(e){const t=e.determinant();if(!e.elements.every(Number.isFinite)||!Number.isFinite(t)||0===t)throw new RangeError("Earth surface transform must be finite and invertible")}checkBehindEarth(e,t){var n;const r=this.pencil.controls,i=new y,o=()=>{var n;const o=e();if(!o.length)return;const s=null===(n=this.sphere)||void 0===n?void 0:n.object3d;if(!s)return void t(o,o.map(()=>!1));s.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(s.matrixWorld);const a=s.matrixWorld.clone().invert(),c=this.getRadius();this.pencil.camera?this.pencil.camera.getWorldPosition(i):r.getPosition(i,!1);const l=i.clone().applyMatrix4(a);t(o,o.map(e=>{const t=e.object3d.getWorldPosition(new y).applyMatrix4(a).sub(l),n=t.lengthSq();if(0===n||c<=0)return!1;const r=2*l.dot(t),i=r*r-4*n*(l.lengthSq()-c*c);if(i<0)return!1;const o=Math.sqrt(i);return[(-r-o)/(2*n),(-r+o)/(2*n)].some(e=>e>1e-7&&e<.9999999)}))};o(),r.addEventListener("update",o);let s=!0;const a=()=>{var e;s&&(s=!1,r.removeEventListener("update",o),null===(e=this.visibilityChecks)||void 0===e||e.delete(a))};return(null!==(n=this.visibilityChecks)&&void 0!==n?n:this.visibilityChecks=/* @__PURE__ */new Set).add(a),a}setObjectOnSphere(e,t,n=0,r){const{position:i,normal:o}=this.getLocationFrame(t,n),s=e.object3d,a="Plane"===e.objectType,c=new y(...null!=r?r:a?[0,0,-1]:[0,1,0]);if(![c.x,c.y,c.z].every(Number.isFinite)||0===c.lengthSq())throw new TypeError("Earth upAxis must be a finite non-zero direction");const l=s.parent;if(l){l.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(l.matrixWorld);const e=l.matrixWorld.clone().invert();i.applyMatrix4(e),a?o.applyMatrix3((new se).setFromMatrix4(l.matrixWorld).transpose()).normalize():o.transformDirection(e)}if(a){if(![s.scale.x,s.scale.y,s.scale.z].every(e=>Number.isFinite(e)&&0!==e))throw new RangeError("Earth Plane scale must be finite and non-zero");c.divide(s.scale)}else c.multiply(s.scale);if(c.applyQuaternion(s.quaternion).normalize(),0===c.lengthSq())throw new RangeError("Earth target upAxis must have non-zero scale");const d=(new x).setFromUnitVectors(c,o);if(s.position.copy(i),s.quaternion.premultiply(d),a){const e=s.material;for(const t of Array.isArray(e)?e:e?[e]:[])t.side=2}}getSceneBindings(){var e,t,n;return{sphere:null===(e=this.sphere)||void 0===e?void 0:e.key,map:null===(t=this.map)||void 0===t?void 0:t.key,secondaryMap:null===(n=this.secondaryMap)||void 0===n?void 0:n.key}}onSceneRestored(){var e=this;return Ce(function*(){var t,n,r,i;const o=e.options.sceneBindings;if(!o)throw new Error("Earth scene requires explicit sceneBindings");const s=t=>{if(!t)return;const n=e.lead.objects.get(t);if(!n)throw new Error(`Earth scene binding was not found: ${t}`);return n};e.sphere=s(o.sphere),e.map=s(o.map),e.secondaryMap=s(o.secondaryMap),e.options.mapDepth=null!==(t=null===(n=e.map)||void 0===n?void 0:n.options.depth)&&void 0!==t?t:0,e.options.otherMapDepth=null!==(r=null===(i=e.secondaryMap)||void 0===i?void 0:i.options.depth)&&void 0!==r?r:0,e.sphere&&(e.options.radius=e.getRadius()),e.options.sceneBindings=e.getSceneBindings()})()}};Re(Tr,"VisName","earth");var Ur={2:[-17.497975,-34.785726,51.380035,37.317299],5:[-81.336621,-55.701226,-34.887318,12.176615],9:[112.908203,-43.619336,153.616895,-10.051758],10:[-179.999989,-89.999933,180,-61.076164],21:[-178.194531,15.651904,179.77998,83.599609],142:[-180,1.265381,179.98779,81.280469],150:[-9.479736,34.934473,66.364146,71.14209]},_r={Asia:142,Europe:150,Africa:2,Australia:9,"North America":21,"South America":5,Antarctica:10},Gr={Asia:"亚洲",Europe:"欧洲",Africa:"非洲",Australia:"大洋洲","North America":"北美洲","South America":"南美洲",Antarctica:"南极洲"},zr=Object.keys(_r).map(e=>({name:Gr[e],en_name:e,adcode:_r[e],lng:0,lat:0,level:"continent",parent:0,c:[],b:[...Ur[_r[e]]]})),$r=[-180,-55.643164,180,83.564844],Wr=De({},_t),Nr=e=>0===e?{name:"世界",adcode:0,lng:0,lat:0,level:"world",parent:0,c:[],b:[...$r]}:/^\d{6}$/.test(`${e}`)?Wr[e]:zr.find(t=>t.adcode===e),Fr=(e,t=!0)=>{if(0===e)return"world";if(1e5===e)return"country";if(/^\d{6}$/.test(`${e}`)){const{level:n,parent:r}=Nr(e),i=r&&Nr(r).level;return"district"===n&&"province"===i&&t?"city":n}return zr.find(t=>t.adcode===e)?"continent":void 0};function qr(e,t,n,r){Ne(t,n,r)}function Vr(e,t,n){return Hr.apply(this,arguments)}function Hr(){return(Hr=Ce(function*(e,t,n){if(!Number.isInteger(t)||!n||!(yield Ve(t,n)))throw Error(`Map region ${t} is not authorized`)})).apply(this,arguments)}var Kr=/* @__PURE__ */new WeakMap;function Xr(){return(Xr=Ce(function*(e,t,n,r){yield Vr(e,t,n),Kr.set(e,{adcode:t});try{return yield r()}finally{Kr.delete(e)}})).apply(this,arguments)}var Yr=De(De({},ur),{},{PlaneMap:kr,ContinentsBg:class extends be{constructor(e){super(),Re(this,"objectType","ContinentsBg"),Re(this,"options",void 0),Re(this,"mapArr",[]),this.options=e}create(){var e=this;return Ce(function*(){const{depth:t}=e.options,n=e.options.materialOptions;e.object3d.name="大洲";const r=yield $e(e.options.geojsonSource,{assetsPrefix:e.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t=>e.pencil.loader.loadingManager.resolveURL(t)}});var i;yield Promise.all(r.features.map((i=Ce(function*(r){var i,o,s;const a=null===(i=r.properties)||void 0===i?void 0:i.adcode;if(10===a)return;const c=$t(r).geometry.coordinates;let l=0,d=0,u=e.options.scale,p=[0,0];const h={features:[r]};5===a?(l=-30,d=25,u*=.2):21===a?(l=0,d=25,u*=.18,h.features[0].geometry.coordinates=h.features[0].geometry.coordinates.filter(e=>e[0].length>80)):9===a?(l=30,d=25,u*=.3):142===a?(l=-30,d=-25,u*=.15,p=[-160,0],c[0]=c[0]-160):150===a?(l=0,d=-25,u*=.3):2===a&&(l=30,d=-25,u*=.2);const f=yield e.draw(kr,{geojson:h,projection:{center:c,scale:u,rotate:p,projectionType:"equirectangular"},areaGroup:!1,depth:t,materialOptions:De({},n)});Object.assign(f.userData,{mapRole:"continent",adcode:a}),f.object3d.name=null==r||null===(o=r.properties)||void 0===o?void 0:o.name,f.userData.name=null==r||null===(s=r.properties)||void 0===s?void 0:s.name,f.position.set(l,d,0),e.mapArr.push(f)}),function(e){return i.apply(this,arguments)})))})()}getLocationPosition(e,t,n=0){if(t){const r=this.mapArr.find(e=>e.userData.name===t);return r?this.calculatePosition(r,e,n):void 0}let r=this.mapArr.find(t=>{const n=t.options.geojson.features[0],r=n.geometry.type;let i;if("MultiPolygon"===r)i=n.geometry.coordinates;else{if("Polygon"!==r)return!1;i=[n.geometry.coordinates]}return i.some(t=>{if(t&&t.length)try{return Gt(Wt(e),Nt(t))}catch(Le){return!1}return!1})});if(!r){console.warn(`⚠️ 坐标 ${e} 不在任何大洲多边形内,尝试使用边界框匹配...`);const t=this.mapArr.map(t=>{var n;const r=Ur[null===(n=t.options.geojson.features[0].properties)||void 0===n?void 0:n.adcode];if(!r)return null;const[i,o,s,a]=r;return e[0]>=i&&e[0]<=s&&e[1]>=o&&e[1]<=a?{map:t,area:(s-i)*(a-o),bbox:r}:null}).filter(e=>null!==e);t.length>0&&(t.sort((e,t)=>e.area-t.area),r=t[0].map,console.log(`✅ 使用边界框匹配找到: ${r.userData.name} (${t.length} 个候选)`))}if(r)return this.calculatePosition(r,e,n);console.warn(`⚠️ 未找到包含坐标 ${e} 的大洲`)}calculatePosition(e,t,n){var r;const i=F(De({},e.options.projection)),[o,s]=t,[a,c]=i([o,s]),l=new y(a,-c,null!==(r=e.options.depth)&&void 0!==r?r:this.options.depth);if(e.object3d.updateWorldMatrix(!0,!1),e.object3d.localToWorld(l),n){const t=new y(0,0,1).applyNormalMatrix((new se).getNormalMatrix(e.object3d.matrixWorld));l.addScaledVector(t,n)}return[l.x,l.y,l.z]}render(){this.keyType="continents-group",this.mapArr.forEach(e=>{e.keyType="continents-"+e.userData.name})}rebuildFromScene(){this.children.forEach(e=>{if("PlaneMap"===e.objectType){const t=e;this.mapArr.push(t),t.object3d.updateWorldMatrix(!0,!0)}})}dispose(){super.dispose(),this.mapArr.forEach(e=>{e.dispose()}),this.mapArr.length=0}},Mountain:class extends be{constructor(e){super(),Re(this,"objectType","Mountain"),Re(this,"options",void 0),Re(this,"extrudePolygon",void 0),this.options=De({depth:2},e)}geojson2Meta(e){return e.features.filter(e=>e.geometry).map(e=>{const{type:t,coordinates:n}=e.geometry;let r=[];return"Polygon"===t?r=n:"MultiPolygon"===t&&(r=n.flat()),{coords:r,properties:e.properties}})}create(){var t=this;return Ce(function*(){const{geojson:n,bbox:r}=t.options,i=t.geojson2Meta(n),o=yield t.pencil.loader.load("/1.png"),s=i.flatMap(({coords:e})=>e),a=yield t.pencil.attributesWorker.geoGeometry("extrudePolygon",{coordinatesArr:s,metaArray:s.map(()=>[t.options.depth]),mesaage:{projection:De({},t.options.projection),topSegments:100,bbox:r,hasBottom:!1,hasSide:!1}}),c=t.pencil.resources,l=c.createScope(t);let d;try{l.retain(a);const n=a.attributes.position.count;a.setAttribute("color",new ie(new Float32Array(3*n),3));const r=t.options.depth;t.setNoise(a,o.image,r);const i=new V,s=a.attributes.color,c=a.attributes.position,u=new V("red"),p=new V("green");for(let e=0;e<n;e++){const t=c.getZ(e)/r;i.lerpColors(u,p,t),s.setXYZ(e,i.r,i.g,i.b)}d=l.create(()=>new Se({flatShading:!0,vertexColors:!0}));const h=yield t.draw(e,{geometry:a,material:d});h.position.z+=.001,t.extrudePolygon=h}finally{l.dispose(),c.disposeUnused(a),d&&c.disposeUnused(d)}})()}setNoise(e,t,n=1){const r=document.createElement("canvas"),i=[];r.width=t.width,r.height=t.height;const o=r.getContext("2d");o.drawImage(t,0,0);const s=o.getImageData(0,0,t.width,t.height).data;for(let d=0;d<t.height;d++){i[d]=[];for(let e=0;e<t.width;e++){const n=s[4*(d*t.width+e)];i[d][e]=n/255}}const a=e.attributes.position,c=e.attributes.uv,l=new ee;for(let d=0;d<a.count;d++){l.fromBufferAttribute(c,d);let e=Math.round(l.x*t.width)-1,r=Math.round(l.y*t.height)-1;e<0&&(e=0),r<0&&(r=0);const o=i[r][e];a.setZ(d,o*n)}}rebuildFromScene(){const e=this.children.find(e=>"ExtrudePolygon"===e.objectType);e&&(this.extrudePolygon=e)}},CityPlane:class extends P{constructor(e){super(),Re(this,"objectType","CityPlane"),Re(this,"options",void 0),Re(this,"plane",void 0),this.options=De({color:"#0C4557",map:null},e)}create(){var e=this;return Ce(function*(){const{width:t,height:n,color:r,map:i,material:o}=e.options,s=new Ie(t,n,2,2);e.plane=s;const a=o||new B({color:r,map:i});e.object3d.geometry=s,e.object3d.material=a})()}rebuildFromScene(){this.plane=this.object3d.geometry}},Area:class extends be{constructor(e){super(),Re(this,"objectType","Area"),Re(this,"options",void 0),Re(this,"area",[]),this.options=De({},e)}create(){var t=this;return Ce(function*(){const{jsonUrl:n,projection:r,type:i,cacheKey:o,material:s,oArr:a}=t.options,c=yield t.draw(e,{useWorker:!0,cacheKey:o,projection:r,material:s,hasBottom:!1,hasSide:!1,onCacheMiss:(l=Ce(function*(){const e=yield t.pencil.loader.load(n),r=[],i=[];return(e.features||e).forEach(e=>{const t=e.properties.o||0;let n=[];"Polygon"===e.geometry.type?n=e.geometry.coordinates:"MultiPolygon"===e.geometry.type&&(n=e.geometry.coordinates.flat()),n.forEach(e=>{const n=(null==a?void 0:a.length)?.001*a.findIndex(e=>e===+t):0;r.push(e),i.push([0,n])})}),{coordinatesArr:r,metaArray:i}}),function(){return l.apply(this,arguments)})});var l;c.userData.mapRole=i,t.area.push(c)})()}rebuildFromScene(){this.area=[],this.children.forEach(e=>{"ExtrudePolygon"===e.objectType&&this.area.push(e)})}},Building:class extends be{constructor(e){super(),Re(this,"objectType","Building"),Re(this,"options",void 0),this.options=De({},e)}create(){var t=this;return Ce(function*(){var n;const{jsonUrl:r,projection:i,cacheKey:o,meters:s,grey:a,hasSide:c}=t.options,l=null!==(n=t.options.materialOptions)&&void 0!==n?n:{},d={};var u;yield Promise.all(["20","60","max"].map((u=Ce(function*(n){let o=t.options.material;o||(o=c?[l[n+"Top"],l[n+"Side"]]:l[n+"Top"]);const a=yield t.draw(e,{useWorker:!0,cacheKey:t.options.cacheKey?`${t.options.cacheKey}-${n}`:void 0,projection:i,material:o,useGroups:c?2:0,hasBottom:!1,hasSide:null==c||c,onCacheMiss:(u=Ce(function*(){var e,i;const o=yield t.pencil.loader.load(r);return Object.keys(d).length||(o.features||o).forEach(e=>{const t="string"==typeof e.properties.h?+e.properties.h.split(".")[1]:0;let n=0|Number(e.properties.h);if(!c){if(0!==t)return;n=0}const r=+n<=20?+n/18:+n<=60?+n/27:+n/12,i=n+t,o=i<=20?"20":i<=60?"60":"max";d[o]||(d[o]={c:[],m:[]});let a=[];"Polygon"===e.geometry.type?a=e.geometry.coordinates:"MultiPolygon"===e.geometry.type&&(a=e.geometry.coordinates.flat()),a.forEach(e=>{d[o].c.push(e),d[o].m.push([n*(s||1),t*(s||1),r])})}),{coordinatesArr:null===(e=d[n])||void 0===e?void 0:e.c,metaArray:null===(i=d[n])||void 0===i?void 0:i.m}}),function(){return u.apply(this,arguments)})});var u;Object.assign(a.userData,{mapRole:"buildingHeight",mapFeatureId:n})}),function(e){return u.apply(this,arguments)}))),t.options.grey||(t.children.forEach(e=>{e.object3d.castShadow=!0}),t.keyType="building"),t.object3d.name="建筑",t.children.forEach(e=>{var t,n;"ExtrudePolygon"===e.objectType&&e.object3d.geometry.attributes.position&&(null===(t=(n=e.object3d.geometry).computeBoundsTree)||void 0===t||t.call(n))})})()}rebuildFromScene(){this.children.forEach(e=>{var t,n;"ExtrudePolygon"===e.objectType&&e.object3d.geometry.attributes.position&&(null===(t=(n=e.object3d.geometry).computeBoundsTree)||void 0===t||t.call(n))})}},Road:class extends be{constructor(e){super(),Re(this,"objectType","Road"),Re(this,"options",void 0),Re(this,"linePrimary",[]),Re(this,"lineSecondary",[]),this.options=De({},e)}create(){var e=this;return Ce(function*(){const{jsonUrl:t,projection:n,cacheKey:r,meters:i}=e.options,o=yield e.draw(ve,{useWorker:!0,cacheKey:r,projection:n,material:e.options.material,onCacheMiss:(s=Ce(function*(){const n=yield e.pencil.loader.load(t),r=[],o=[];return(n.features||n).forEach(e=>{const t=e.properties.w||1;e.geometry.coordinates.forEach(e=>{r.push(e),o.push([t*(i||1)])})}),{coordinatesArr:r,metaArray:o}}),function(){return s.apply(this,arguments)})});var s;o.userData.mapRole="roadGeometry",e.object3d.name="道路",e.linePrimary.push(o)})()}rebuildFromScene(){this.children.forEach(e=>{"Line"===e.objectType&&this.linePrimary.push(e)})}dispose(){super.dispose(),this.linePrimary=[],this.lineSecondary=[]}}});function Jr(){return(Jr=Ce(function*(e,t,n,r,i,o={lookat:n,adcode:r}){var s,c,l,d,u;const p=null!==(s=null===(c=e.scene.pencil.camera)||void 0===c||null===(c=c.up)||void 0===c?void 0:c.clone().normalize())&&void 0!==s?s:new y(0,0,1),h=new y(n[0]-n[3],n[1]-n[4],n[2]-n[5]);h.applyQuaternion((new x).setFromUnitVectors(p,new y(0,1,0)));const f=(new a).setFromVector3(h),v=null!==(l=null===(d=(u=e.scene.pencil).getViewViewport)||void 0===d?void 0:d.call(u))&&void 0!==l?l:e.scene.pencil.getSize();let m=o.padding;if(!m){const r=e.cameraForPose(n);r&&e.scene.map&&(m=t.measurePerspectiveCameraPadding(De({points:e.cameraFitPoints(e.scene.map),camera:r},v)))}const g=o.viewport?v.width/o.viewport.width:1,b=o.viewport?v.height/o.viewport.height:1,w=m?[m.top*b,m.right*g,m.bottom*b,m.left*g]:[0,0,0,0];return{polarAngle:f.phi,azimuthAngle:f.theta,referencePadding:w}})).apply(this,arguments)}function Zr(){return Zr=Ce(function*(e,t,n,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:c,adcode:l,enableTransition:d=!0,smoothTime:u=250}={}){var p,h,f,v,m,g,b,w,j,S,A,O,I,M;if(!n.object3d)return;for(const[a,y]of Object.entries({polarAngle:r,azimuthAngle:i}))if(void 0!==y&&!Number.isFinite(y))throw new Error(`Invalid map camera ${a}`);const E=null!=l?l:n===e.scene.map?e.scene.adcode:void 0,P=n===e.scene.map&&E===e.scene.adcode&&void 0!==E?null===(p=e.scene.cameraState)||void 0===p?void 0:p[`map-${E}`]:void 0;var D,C;if(ei(P))return yield null===(D=(C=e.scene.pencil.controls).setFocalOffset)||void 0===D?void 0:D.call(C,0,0,0,!1),yield Promise.all([e.scene.lookAt(...P,d,u),null==c?void 0:c()]),void(e.safeAreaRefitPending=!1);if(void 0===r&&void 0===i||(e.cameraAngleOverrides=De(De(De({},e.cameraAngleOverrides),void 0===r?{}:{polarAngle:r}),void 0===i?{}:{azimuthAngle:i})),null!==(h=o)&&void 0!==h||(o=e.getCameraFitReference()),n===e.scene.map&&o&&o.adcode===e.scene.adcode&&void 0===e.safeAreaInsets&&!e.cameraAngleOverrides)return yield Promise.all([e.scene.lookAt(...o.lookat,d,u),null==c?void 0:c()]),void(e.safeAreaRefitPending=!1);let R=e.scene.options.polarAngle,L=e.scene.options.azimuthAngle,k=[0,0,0,0];if(o){const t=yield e.calcPaddingFromReference(o.lookat,o.adcode,o.center,o);R=t.polarAngle,L=t.azimuthAngle,k=t.referencePadding}R=null!==(f=null===(v=e.cameraAngleOverrides)||void 0===v?void 0:v.polarAngle)&&void 0!==f?f:R,L=null!==(m=null===(g=e.cameraAngleOverrides)||void 0===g?void 0:g.azimuthAngle)&&void 0!==m?m:L;const B=e.scene.pencil.controls;R=pe.clamp(R,Math.max(1e-6,null!==(b=B.minPolarAngle)&&void 0!==b?b:0),Math.min(Math.PI-1e-6,null!==(w=B.maxPolarAngle)&&void 0!==w?w:Math.PI)),L=pe.clamp(L,null!==(j=B.minAzimuthAngle)&&void 0!==j?j:-1/0,null!==(S=B.maxAzimuthAngle)&&void 0!==S?S:1/0);const T=e.scene.pencil.camera.up.clone().normalize(),U=(new y).setFromSpherical(new a(1,R,L)).applyQuaternion((new x).setFromUnitVectors(new y(0,1,0),T)),_=e.cameraForPose([...U.toArray(),0,0,0]);if(!_)return;const G=e.getEffectiveSafeAreaPadding(k),z=null!==(A=null===(O=(I=e.scene.pencil).getViewViewport)||void 0===O?void 0:O.call(I))&&void 0!==A?A:e.scene.pencil.getSize(),$=t.fitPerspectiveCameraToPoints(De(De({points:e.cameraFitPoints(n),camera:_},z),{},{padding:{top:G[0],right:G[1],bottom:G[2],left:G[3]},targetZ:null!=s?s:t.objectWorldBounds(n.object3d).max.z}));$&&($.far>=e.scene.pencil.camera.far&&(e.scene.pencil.camera.far=1.01*$.far,e.scene.pencil.camera.updateProjectionMatrix()),yield null===(M=B.setFocalOffset)||void 0===M?void 0:M.call(B,0,0,0,!1),yield Promise.all([e.scene.lookAt(...$.position,...$.target,d,u),null==c?void 0:c()]),e.safeAreaRefitPending=!1)}),Zr.apply(this,arguments)}function Qr(){return(Qr=Ce(function*(e,t={}){var n;return!(!e.safeAreaRefitPending||!e.scene.map)&&(yield e.scene.fitTo(e.scene.map,{enableTransition:null!==(n=t.transition)&&void 0!==n&&n,smoothTime:t.smoothTime}),!e.safeAreaRefitPending)})).apply(this,arguments)}var ei=e=>Array.isArray(e)&&6===e.length&&e.every(Number.isFinite)&&Math.hypot(e[0]-e[3],e[1]-e[4],e[2]-e[5])>1e-10,ti=(e={})=>{var t,n,r,i;const o={top:null!==(t=e.top)&&void 0!==t?t:0,right:null!==(n=e.right)&&void 0!==n?n:0,bottom:null!==(r=e.bottom)&&void 0!==r?r:0,left:null!==(i=e.left)&&void 0!==i?i:0};for(const[s,a]of Object.entries(o))if(!Number.isFinite(a)||a<0)throw new Error(`Invalid map safe-area ${s}: ${a}`);return o};function ni(){return ni=Ce(function*(e,t,n){var r;const i=e.scene.options.showLabel;if(!(null===(r=e.scene.mapArea)||void 0===r?void 0:r.length)||!i)return;qt(n);const o=ri(e);o.length&&(e.labelGroupObject3dUserData=o[0].object3d.userData);const s=yield e.scene.group.draw(t.objects.Group);try{qt(n),s.object3d.visible=!1,e.labelGroupObject3dUserData&&(s.object3d.userData=e.labelGroupObject3dUserData),s.object3d.userData.isMapLabelGroup=!0,s.userData.mapRole="labels",s.object3d.name="地图标签组";const r=yield Promise.allSettled(e.scene.mapArea.map((a=Ce(function*(r){var o,a,c,l,d,u;qt(n);let{name:p,adcode:h,centroid:f}=r.userData;const{DistrictID:v,DistName:m,iso_a2:g,center:b}=r.userData;if(h=null!==(o=null!==(a=null!==(c=null!==(l=h)&&void 0!==l?l:g)&&void 0!==c?c:v)&&void 0!==a?a:r.userData.id)&&void 0!==o?o:p,f=f||b,p=p||m,!f)return;const w=e.scene.getLocationPosition(f);if(s.children.some(e=>e.userData.mapFeatureId===String(h))||!w)return;const j=new y(...w);s.object3d.updateWorldMatrix(!0,!1),s.object3d.worldToLocal(j);let S=p;"lite"===i&&S&&(S=p.replace(/自治州|地区|自治区|省|市|壮族|特别行政区|回族|维吾尔/g,""));const A=S?t.getLabelElement(S,e.scene.options.labelStyle):void 0,[O,x,I]=null!==(d=null===(u=e.scene.options.labelOffsets)||void 0===u?void 0:u[h])&&void 0!==d?d:[0,0,0],M=yield s.draw(t.objects.Node,{position:j.add(new y(O,x,I)),children:A});qt(n),Object.assign(M.userData,{mapRole:"label",mapFeatureId:String(h),adcode:h}),M.object3d.name=S,M.trackCollision()}),function(e){return a.apply(this,arguments)})));qt(n);const c=r.find(e=>"rejected"===e.status);if("rejected"===(null==c?void 0:c.status))throw c.reason;s.object3d.visible=!0,e.scene.applyObjectState(s);for(const e of o)e.erase()}catch(c){throw s.erase(),c}var a}),ni.apply(this,arguments)}function ri(e){const t=[];return e.scene.lead.scene.traverse(e=>{("labels"===e.userData.mapRole||e.object3d.userData.isMapLabelGroup)&&t.push(e)}),t}function ii(e){const t=ri(e);if(t.length){e.labelGroupObject3dUserData=t[0].object3d.userData;for(const e of t)e.erase()}}function oi(){return oi=Ce(function*(e,t,n){const{cityVis:r}=e.prepareCityVis(t,n);try{yield r.preloadResources()}catch(Le){throw new Error(`城市 ${t} 初始化失败:${Le instanceof Error?Le.message:String(Le)}`,{cause:Le})}}),oi.apply(this,arguments)}function si(){return(si=Ce(function*(e,t,n=!1){const r=new globalThis.Map,i=i=>{i>=t.length||r.set(i,e.preloadCityVis(t[i],n).then(()=>({status:"fulfilled",value:void 0}),e=>({status:"rejected",reason:e})))};i(0),i(1);for(let o=0;o<t.length;o++){const s=yield r.get(o);if(r.delete(o),"rejected"===s.status)throw s.reason;i(o+2),yield e.scene.initCityVis(t[o],n)}})).apply(this,arguments)}function ai(){return ai=Ce(function*(e,t,n=!1){const{cityVis:r,item:i,existing:o}=e.prepareCityVis(t,n);try{yield r.init(o);const t=e.scene.projection([i.lng,i.lat]);var s,a;if(t&&!o)r.group.position.set(t[0],-t[1],0),r.group.position.z=n?1e-5:((null===(s=e.scene.mapObj)||void 0===s?void 0:s.z)||0)+((null===(a=e.scene.mapObj)||void 0===a?void 0:a.depth)||0)+1e-5,r.group.scale.setScalar(e.scene.pscale/r.pscale)}catch(Le){throw new Error(`城市 ${t} 初始化失败:${Le instanceof Error?Le.message:String(Le)}`,{cause:Le})}const c=e.scene.cityVis.findIndex(e=>e.adcode===t);return c>=0?e.scene.cityVis.splice(c,1,r):e.scene.cityVis.push(r),o||e.scene.cityGroup.push(r.group),e.scene.emit("initCityVis",t),r}),ai.apply(this,arguments)}function ci(){return ci=Ce(function*(e,t,n){const r=e.scene.getAdcodeShowLevel(n);if(!r||!["province","city","district"].includes(r))throw new Error(`区域 ${n} 不支持城市数据,请选择省、市或区县`);if("province"===r)yield e.scene.initCityVis(n);else if("city"===r){var i;const r=(null===(i=t.findAdcodeInfo(n))||void 0===i?void 0:i.c)||[];r.length>0?yield e.initCitySequence(r):yield e.scene.initCityVis(n),e.scene.pencil.camera.near=.001,e.scene.pencil.camera.updateProjectionMatrix()}else if("district"===r&&(yield e.scene.initCityVis(n),e.scene.pencil.camera.near=.001,e.scene.pencil.camera.updateProjectionMatrix(),e.scene.options.nearbyCities)){const r=t.findAdcodeInfo(n).parent,i=t.findAdcodeInfo(r).c;yield e.initCitySequence(i.filter(t=>"full"===e.scene.options.nearbyCities||t!==n),!0)}try{e.scene.pencil.attributesWorker.saveCache()}catch(Le){console.warn("缓存失败",Le)}}),ci.apply(this,arguments)}function li(){return(li=Ce(function*(e,t){var n;if(!e.scene.group)return;if(!e.scene.options.parentBg)return void e.scene.clearParentBackground();const r={projection:{center:e.scene.pcenter,scale:e.scene.pscale,rotate:[0,0],projectionType:e.scene.options.projectionType},areaGroup:!1,depth:e.scene.options.parentBgDepth},i=null===(n=t.findAdcodeInfo(e.scene.options.adcode))||void 0===n?void 0:n.parent,o=void 0===i?void 0:t.findAdcodeInfo(i),s=1e5!==e.scene.options.adcode&&!!o,a=1e5===e.scene.options.adcode||1e5===(null==o?void 0:o.adcode);if(!s&&!a)return void e.scene.clearParentBackground();const c=t.findAdcodeInfo(0).b,l=De(De({},r.projection),{},{rotate:e.scene.options.worldPacificCentre?[-160,0]:void 0}),d=(e,n,i)=>{const o=e.options.projection;if(JSON.stringify(e.options.bbox)!==JSON.stringify(n)||e.options.depth!==r.depth||(null==o?void 0:o.scale)!==i.scale||((null==o?void 0:o.projectionType)||"mercator")!==(i.projectionType||"mercator")||JSON.stringify((null==o?void 0:o.rotate)||[0,0])!==JSON.stringify(i.rotate||[0,0]))return!1;if(JSON.stringify(o.center)!==JSON.stringify(i.center)){const n=[0,0],r=t.getProjection(o)(n),s=t.getProjection(i)(n);e.position.x+=s[0]-r[0],e.position.y+=r[1]-s[1],e.options.projection=De(De(De({},o),i),{},{center:[...i.center]})}return!0};if(e.scene.parentBg=e.scene.parentBg.filter(e=>!!(s&&d(e,o.b,r.projection)||a&&d(e,c,l))||(e.erase(),!1)),s&&!e.scene.parentBg.some(e=>d(e,o.b,r.projection))){const n=i,s=e.scene.getMaterialGroup("parentPlane");if(!(null==s?void 0:s.topMat))throw new Error("Map background requires parentPlane materials; re-export from editor-platform");if(s){const i=yield e.getGeojson(n);if(i){const a=yield e.scene.group.draw(t.objects.PlaneMap,De({geojson:i,bbox:o.b,materialOptions:De({},s)},r));Object.assign(a.userData,{mapRole:"parentBackground",adcode:n}),a.object3d.name=o.name,a.lineArr.forEach(t=>{t.object3d.name="线",t.keyType="100000line",e.scene.applyObjectState(t)}),a.areaArr.forEach(e=>{e.object3d.name="板块",e.keyType="100000area"}),a.position.z=-e.scene.options.parentBgDepth,e.scene.parentBg.push(a)}}}if(a&&!e.scene.parentBg.some(e=>d(e,c,l))){const n=e.scene.getMaterialGroup("worldPlane");if(!(null==n?void 0:n.topMat))throw new Error("Map background requires worldPlane materials; re-export from editor-platform");if(n){const i=yield e._loadBaseGeojson(0,!1);if(!i)return;const o=t.findAdcodeInfo(0).b,s=yield e.scene.group.draw(t.objects.PlaneMap,De(De({geojson:De(De({},i),{},{features:[...i.features.filter(t=>e.scene.options.worldBgFull||"CHN"!==t.properties.iso_a3)]}),bbox:o,materialOptions:De({},n)},r),{},{projection:De(De({},r.projection),{},{rotate:e.scene.options.worldPacificCentre?[-160,0]:void 0})}));Object.assign(s.userData,{mapRole:"worldBackground",adcode:0}),s.object3d.name="世界",s.lineArr.forEach(t=>{t.object3d.name="线",t.keyType="worldline",e.scene.applyObjectState(t)}),s.areaArr.forEach(e=>{e.object3d.name="板块",e.keyType="worldarea"}),s.position.z=-e.scene.options.parentBgDepth,e.scene.parentBg.push(s)}}return e._getParentBgMetrics()})).apply(this,arguments)}function di(){return(di=Ce(function*(e,t){var n,r,i;if(!e.scene.group)return;if(!e.scene.options.continentsBg)return void e.scene.clearContinentsBackground();const o=e.scene.continentsBg;if(o&&o.options.depth===e.scene.options.continentsBgDepth&&o.options.scale===e.scene.pscale&&o.options.geojsonSource===(null===(n=e.scene.options.assetSources)||void 0===n?void 0:n.continentsLiteGeojson)&&(o.options.assetsPrefix||"")===(e.scene.options.assetsPrefix||""))return;if(e.scene.clearContinentsBackground(),!(null===(r=e.scene.getMaterialGroup("continents"))||void 0===r?void 0:r.topMat))throw new Error("Map background requires continents materials; re-export from editor-platform");const s=null===(i=e.scene.options.assetSources)||void 0===i?void 0:i.continentsLiteGeojson;if(!s)throw new Error("Map.assetSources.continentsLiteGeojson is required for continentsBg");if(e.scene.continentsBg=yield e.scene.group.draw(t.objects.ContinentsBg,{depth:e.scene.options.continentsBgDepth,scale:e.scene.pscale,assetsPrefix:e.scene.options.assetsPrefix,geojsonSource:s,materialOptions:e.scene.getMaterialGroup("continents")}),!e.scene.options.continentsBgAtOrigin){const t=e.getMainMapLocationPosition([104,37.5]);e.worldToObjectParent(t,e.scene.continentsBg),e.scene.continentsBg.position.copy(t)}e.scene.continentsBg.position.z=.1})).apply(this,arguments)}function ui(){return ui=Ce(function*(e,t){const n=e.scene.mapObj,r=e.scene.map;if(t.length&&r&&n)for(const s of t){var i;const t=s.copySource;if(!t)continue;const a=s.materialKeys.map(t=>e.scene.sceneResources.get(t)).filter(Boolean);if(!a.length)continue;let c,l=e.scene.baseObjectByUuid(t);if(s.sourceGeneratedId&&(l=void 0,r.traverse(e=>{e.userData.copySource||e.userData.mapGeneratedId!==s.sourceGeneratedId||(l=e)})),l)c=yield l.instantiate();else if("extrudeLine:all"===s.sourceGeneratedId){var o;const t=null!==(o=r.options.extrudeLineGeojson)&&void 0!==o?o:yield e.getGeojson(n.mapInfo.adcode,!0);t&&(r.options.extrudeLineGeojson=t,[c]=yield r.addLine(t,{material:a[0],onTop:r.options.onTop+3}))}if(!c)throw new Error(`Map overlay source was not found: ${t}`);c.object3d.material=1===a.length?a[0]:a,c.position.z=s.zOffset+n.depth,e.scene.lead.setObjectUuid(c,s.uuid),c.userData.copySource=null!==(i=null==l?void 0:l.object3d.uuid)&&void 0!==i?i:t,"extrudeLine:all"===s.sourceGeneratedId&&(Rr(c,"extrudeLine","all"),c.keyType="extrudeLine")}}),ui.apply(this,arguments)}function pi(e,t,n){const r=e.shadow,i=r.camera;e.updateWorldMatrix(!0,!1),e.target.updateWorldMatrix(!0,!1),r.updateMatrices(e);const{min:o,max:s}=t.clone().applyMatrix4(i.matrixWorldInverse);if(![o.x,o.y,o.z,s.x,s.y,s.z].every(Number.isFinite))return;const a=.05*Math.max(s.x-o.x,s.y-o.y,s.z-o.z,.001),c=(o.x+s.x)/2,l=(o.y+s.y)/2,d=((s.x-o.x)/2+a)*i.zoom,u=((s.y-o.y)/2+a)*i.zoom;i.left=c-d,i.right=c+d,i.bottom=l-u,i.top=l+u;let p=-s.z-a,h=-o.z+a;for(const f of n){const{min:e,max:t}=f.clone().applyMatrix4(i.matrixWorldInverse);[e.x,e.y,e.z,t.x,t.y,t.z].every(Number.isFinite)&&(t.x<o.x-a||e.x>s.x+a||t.y<o.y-a||e.y>s.y+a||(p=Math.min(p,-t.z-a),h=Math.max(h,-e.z+a)))}i.near=Math.min(i.near,p),i.far=Math.max(i.far,h),i.userData._shadowProjectionEdited=!0,i.updateProjectionMatrix(),r.updateMatrices(e),r.needsUpdate=!0}function hi(){return hi=Ce(function*(e,t,n){(e.scene.options.regionTextureRules||[]).some(t=>{var n;if(!t||"string"!=typeof t.material||"string"!=typeof t.property)return!1;const r=e.scene.sceneResources.get(t.material),i=null==r||null===(n=r.userData)||void 0===n?void 0:n._materialRuntimeProperties;return r&&(!Array.isArray(i)||!i.includes(t.property))})&&(yield fi(e,t,n))}),hi.apply(this,arguments)}function fi(e,t,n){return vi.apply(this,arguments)}function vi(){return vi=Ce(function*(e,t,n){const r=t.getAdcodeShowLevel(n),i=/* @__PURE__ */new Map;for(const a of e.scene.options.regionTextureRules||[]){if(!a||"string"!=typeof a.material||"string"!=typeof a.property)continue;let e=i.get(a.material);e||i.set(a.material,e=/* @__PURE__ */new Map),e.has(a.property)||e.set(a.property,{texture:null}),Array.isArray(a.levels)&&!a.levels.includes(r||"")||(e.get(a.property).rule=a)}var o;yield Promise.all([...i.values()].flatMap(e=>[...e.values()]).map((o=Ce(function*(t){var i;const o=t.rule;if(!o||o.copyFrom)return;const s=(null===(i=o.sources)||void 0===i?void 0:i[String(n)])||o.url;if("string"!=typeof s||!s.trim())return;const a=s.split("{adcode}").join(String(n)).split("{level}").join(r||"");try{const n=yield e.scene.pencil.loader.load(a);t.texture=(null==n?void 0:n.isTexture)?n:null}catch(c){t.texture=null}}),function(e){return o.apply(this,arguments)})));const s=/* @__PURE__ */new Map;for(const[a,c]of i){const t=e.regionRuleMaterial(a,n);if(!t)continue;let r=s.get(t);r||s.set(t,r=/* @__PURE__ */new Map);for(const[e,n]of c)r.has(e)&&!n.rule||r.set(e,n)}for(const[a,c]of s){const t=/* @__PURE__ */new Map,n=/* @__PURE__ */new Set,r=i=>{var o,s;if(t.has(i))return t.get(i);if(n.has(i))return null;const l=c.get(i);if(!l)return(null===(o=a[i])||void 0===o?void 0:o.isTexture)?a[i]:null;n.add(i);const d=(null===(s=l.rule)||void 0===s?void 0:s.copyFrom)?r(l.rule.copyFrom):l.texture;return e.setRegionTexture(a,i,d),n.delete(i),t.set(i,a[i]),a[i]};for(const e of c.keys())r(e)}}),vi.apply(this,arguments)}var mi={fitPerspectiveCameraToPoints:le,measurePerspectiveCameraPadding:q,objectWorldBounds:ce},gi={objects:Yr,getLabelElement:(e,t={})=>{const n=document.createElement("div");return n.classList.add("vis-map-label"),Object.assign(n.style,De(De(De(De({position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center",lineHeight:"1",whiteSpace:"nowrap"},t.color?{color:t.color}:{}),void 0!==t.fontSize?{fontSize:`${t.fontSize}px`}:{}),t.fontFamily?{fontFamily:t.fontFamily}:{}),t.fontWeight?{fontWeight:t.fontWeight}:{})),n.textContent=e,n}},yi={City:class{constructor(e){Re(this,"adcode",0),Re(this,"pcenter",[104,37.5]),Re(this,"pscale",5e4),Re(this,"projection",void 0),Re(this,"options",void 0),Re(this,"group",void 0),Re(this,"building",void 0),Re(this,"road",void 0),Re(this,"pencil",void 0),Re(this,"lead",void 0),Re(this,"sceneResources",void 0),Re(this,"multiplyScalar",.001),this.pencil=e,this.lead=e.lead,this.sceneResources=e.sceneResources}setOptions(e){this.options=De({plane:!0,grey:!1,showBuilding:!0,showRoad:!0,showGrassland:!0,showRiver:!0,buildingHasSide:!0},e)}getProjectionOptions(){return{center:this.pcenter,scale:this.pscale,projectionType:this.options.projectionType}}preloadResources(){var e=this;return Ce(function*(){var t,n,r,i;const{adcode:o,jsonName:s}=e.options,a=e=>null==e?void 0:e.split("{jsonName}").join(s).split("{adcode}").join(String(o)),c={building:a(null===(t=e.options.dataSources)||void 0===t?void 0:t.building),road:a(null===(n=e.options.dataSources)||void 0===n?void 0:n.road),river:a(null===(r=e.options.dataSources)||void 0===r?void 0:r.river),grassland:a(null===(i=e.options.dataSources)||void 0===i?void 0:i.grassland)},l=[[e.options.showBuilding,"建筑","building"],[e.options.showRoad,"道路","road"],[e.options.showRiver,"河流","river"],[e.options.showGrassland,"绿地","grassland"]].filter(([e])=>e);for(const[,e,p]of l)if(!c[p])throw new Error(`${o} 未配置${e}数据源`);const d=yield Promise.allSettled(l.map(([,,t])=>Promise.resolve().then(()=>e.pencil.loader.load(c[t])))),u={};for(const[e,[,p,h]]of l.entries()){const t=d[e];if("rejected"===t.status)throw t.reason;if(!t.value||!Array.isArray(t.value.features||t.value))throw new Error(`${o} 的${p}数据不可用`);u[h]=t.value}return{sources:c,data:u}})()}init(e){var t=this;return Ce(function*(){const{adcode:n}=t.options,{sources:r,data:i}=yield t.preloadResources();if(t.adcode=t.options.adcode,t.options.center&&(t.pcenter=t.options.center),t.projection=F(t.getProjectionOptions()),t.group=e||(yield t.lead.draw(Yr.Group)),!e){const e=Nr(n);t.group.object3d.name=`城市-${e?e.name:n}`,t.group.scale.multiplyScalar(t.multiplyScalar)}Object.assign(t.group.userData,{mapRole:"city",adcode:n});const o=i.river,s=i.grassland,a={};[...(null==o?void 0:o.features)||[],...(null==s?void 0:s.features)||[]].forEach(e=>{e.properties.o&&(a[e.properties.o]=!0)});const c=Object.keys(a).map(e=>+e).sort((e,t)=>e-t),l=-F(t.getProjectionOptions())([t.pcenter[0],899e-8+t.pcenter[1]])[1];yield Promise.all([t.options.showBuilding&&t.drawBuilding({jsonUrl:r.building,meters:l,grey:t.options.grey,hasSide:t.options.buildingHasSide}),t.options.showRoad&&t.drawRoad({jsonUrl:r.road,meters:l,z:c.length,grey:t.options.grey}),t.options.showRiver&&t.drawArea({jsonUrl:r.river,type:"river",oArr:c,grey:t.options.grey}),t.options.showGrassland&&t.drawArea({jsonUrl:r.grassland,type:"grassland",oArr:c,grey:t.options.grey})].filter(Boolean))})()}drawCityPlane(e,t){var n=this;return Ce(function*(){var r,i;const o=null===(r=Yn(n.sceneResources,null===(i=n.options.materialBindings)||void 0===i?void 0:i.city))||void 0===r?void 0:r.plane,s=Nr(e).b,a=n.projection([s[0],s[1]]),c=n.projection([s[2],s[3]]),l=Math.abs(c[0]-a[0]),d=Math.abs(c[1]-a[1]),u=yield(null!=t?t:n.group).draw(Yr.CityPlane,{width:10*l,height:10*d,material:o});t&&u.scale.set(n.multiplyScalar,n.multiplyScalar,1),u.object3d.name="底面",u.keyType="city-plane",Object.assign(u.userData,{mapRole:"cityPlane",adcode:e})})()}drawBuilding(){var e=this;return Ce(function*(t={}){var n,r;if(!t.jsonUrl)return void console.warn(" json:Building");const i=e.options.cacheKey?`building-${e.options.cacheKey}${t.hasSide?"":"-no-side"}`:void 0,o=yield e.group.draw(Yr.Building,{materialOptions:null!==(n=Yn(e.sceneResources,null===(r=e.options.materialBindings)||void 0===r?void 0:r["building"+(t.grey?"-grey":"")]))&&void 0!==n?n:void 0,projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,cacheKey:i,meters:t.meters,grey:t.grey,hasSide:t.hasSide});return Object.assign(o.userData,{mapRole:"cityBuilding",adcode:e.adcode}),e.building=o,o}).apply(this,arguments)}drawArea(){var e=this;return Ce(function*(t={}){var n;if(!t.jsonUrl)return void console.warn(" json:drawGeography");if(!t.type)return;const{grey:r}=t,i=r?"-grey":"",o=e.options.cacheKey?`${t.type}-${e.options.cacheKey}`:void 0,s=yield e.group.draw(Yr.Area,{projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,material:Yn(e.sceneResources,null===(n=e.options.materialBindings)||void 0===n?void 0:n["geography"+i])[t.type],type:t.type,cacheKey:o,oArr:t.oArr});return Object.assign(s.userData,{mapRole:t.type,adcode:e.adcode}),s.object3d.name="river"===t.type?"河流":"绿地",s}).apply(this,arguments)}drawRoad(){var e=this;return Ce(function*(t={}){var n,r;if(!t.jsonUrl)return void console.warn(" json:Road");const i=e.options.cacheKey?`road-${e.options.cacheKey}`:void 0,o=yield e.group.draw(Yr.Road,{material:null===(n=Yn(e.sceneResources,null===(r=e.options.materialBindings)||void 0===r?void 0:r["road"+(t.grey?"-grey":"")]))||void 0===n?void 0:n.primary,projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,cacheKey:i,grey:t.grey,meters:t.meters});Object.assign(o.userData,{mapRole:"cityRoad",adcode:e.adcode});const s=t.z||0;return o.position.z=.001*(s+1),e.road=o,o}).apply(this,arguments)}},findAdcodeInfo:Nr,ec:He},bi={findAdcodeInfo:Nr,getProjection:F,objects:Yr},wi={findAdcodeInfo:Nr},ji={cloneMaterialResources:H,getAdcodeShowLevel:Fr},Si=class e extends Dr{constructor(...e){super(...e),Re(this,"mapObj",void 0),Re(this,"activePlaneMap",null),Re(this,"safeAreaInsets",void 0),Re(this,"safeAreaRefitPending",!1),Re(this,"parentBg",[]),Re(this,"continentsBg",void 0),Re(this,"group",void 0),Re(this,"projection",void 0),Re(this,"pcenter",[104,37.5]),Re(this,"pscale",50),Re(this,"meters",void 0),Re(this,"cityVis",[]),Re(this,"cityGroup",[]),Re(this,"regionCameraFitReference",void 0),Re(this,"authoredCameraPose",void 0),Re(this,"cameraAngleOverrides",void 0),Re(this,"bundledMapSwitchKey",void 0),Re(this,"navigationAssets",void 0),Re(this,"mapBoundaryMatrix",void 0),Re(this,"mapBoundaryEnabled",void 0),Re(this,"refreshMapBoundary",()=>{var e,t;const n=null===(e=this.map)||void 0===e?void 0:e.object3d;!n||this.pencil.lead&&this.pencil.lead!==this.lead||(n.updateWorldMatrix(!0,!1),this.mapBoundaryEnabled===!!this.options.mapBoundary&&(null===(t=this.mapBoundaryMatrix)||void 0===t?void 0:t.equals(n.matrixWorld))||this.updateMapBoundary())}),Re(this,"labelUpdates",void 0),Re(this,"labelsDirty",!1),Re(this,"labelsDisposed",!1),Re(this,"labelGroupObject3dUserData",null),Re(this,"regionAppearance",void 0)}get map(){var e;return null===(e=this.mapObj)||void 0===e?void 0:e.map}get mapInfo(){var e;return null===(e=this.mapObj)||void 0===e?void 0:e.mapInfo}get mapArea(){var e;return null===(e=this.map)||void 0===e?void 0:e.areaArr}get mapLine(){var e;return null===(e=this.map)||void 0===e?void 0:e.lineArr}get adcode(){var e;return null===(e=this.mapInfo)||void 0===e?void 0:e.adcode}setRuntimeAssets(e){super.setRuntimeAssets(e),this.bundledMapSwitchKey=null==e?void 0:e.mapSwitchKey,this.navigationAssets=e}requireMapAuthorization(e){var t=this;return Ce(function*(){yield Vr(t,e,t.bundledMapSwitchKey)})()}authorizeSceneOptions(e){var t=this;return Ce(function*(){var n,r;const i=(o=t,Kr.get(o));var o;if(i)return void(yield t.requireMapAuthorization(i.adcode));const s=new Set([e.adcode,null===(n=e.sceneBindings)||void 0===n||null===(n=n.region)||void 0===n?void 0:n.adcode,null===(r=e.mapData)||void 0===r?void 0:r.adcode].filter(e=>void 0!==e));if(!s.size)throw Error("Map scene has no authorized region");for(const e of s)yield t.requireMapAuthorization(e)})()}setOptions(e){for(const t of["equirectangular","winkel3","switchFixConfig"])if(void 0!==e[t])throw new Error(`Legacy map option ${t} must be migrated in editor-platform`);e.continentType,super.setOptions(De(De({mapCameraUpVersion:2,parentBg:!1,worldBgFull:!1,continents:"",continentsBg:!1,continentsBgDepth:0,parentBgDepth:0,topSegments:0,mapDepth:1,mapBevel:0,showDistrict:!0,showLabel:!1,lineWidth:.6,lineOffset:0,extrudeLineWidth:1.8,extrudeLine:!0,projectionType:"mercator",polarAngle:Math.PI/6,azimuthAngle:0,worldPacificCentre:!1,mapBoundary:!0,mergeSide:!1,shadowMap:!1,cityOnMap:!1,continentsBgAtOrigin:!1,showBuilding:!0,buildingHasSide:!0,showRoad:!0,cacheCity:!0,showGrassland:!0,showRiver:!0,showCityOnMapInnerLine:!1,nearbyCities:!1,citySSAO:!1},e),{},{geojsonExtensions:(null==e?void 0:e.geojsonExtensions)||{},geojsonMapReplace:(null==e?void 0:e.geojsonMapReplace)||{},extrudeLineGeojsonMapReplace:(null==e?void 0:e.extrudeLineGeojsonMapReplace)||{}})),delete this.options.geojsonMap,delete this.options.extrudeLineGeojsonMap,delete this.options.jsonNameObj,delete this.options.clickHandleDrillDown,delete this.options.clickOusideBack,delete this.options.mapPadding}_getProjectionCenter(e=this.options.adcode){const t=this.options.center?[...this.options.center]:[104,37.5];return this.options.worldPacificCentre&&1e5===e&&(t[0]-=160),t}_getProjectionRotate(){return this.options.worldPacificCentre?[-160,0]:void 0}_getSplitPolygons(){const e=this._getProjectionRotate();return-160!==(null==e?void 0:e[0])?0:"winkel3"===this.options.projectionType?100:300}get objectTypes(){return Yr}get defaultCameraUp(){return new y(0,0,1)}onRuntimeReady(){var e=this;return Ce(function*(){e.updateProjection(),e.pencil.event.on("beforeRender",e.refreshMapBoundary)})()}prepareInitialCamera(){var e=this;return Ce(function*(){if(e.updateMapBoundary(),!e.map||!e.mapObj)return;const t=e.getCameraFitReference();yield e.fitTo(e.map,De(De({},t?{reference:t}:{}),{},{enableTransition:!1}))})()}updateMapBoundary(){return function(e,t){var n,r,i,o;if(!(null===(n=e.scene.pencil)||void 0===n||null===(n=n.controls)||void 0===n?void 0:n.setBoundary)||e.scene.pencil.lead&&e.scene.pencil.lead!==e.scene.lead)return;const s=e.scene.options.mapBoundary&&e.scene.map?t.objectWorldBounds(e.scene.map.object3d):void 0;let a;e.scene.pencil.controls.setBoundary(s&&!s.isEmpty()?s:void 0);const c=null===(r=e.scene.map)||void 0===r?void 0:r.object3d;if(e.scene.options.mapBoundary&&c&&"function"==typeof e.scene.pencil.controls.setBoundaryPlane){c.updateWorldMatrix(!0,!0);const t=new y(0,0,1).applyMatrix3((new se).getNormalMatrix(c.matrixWorld)).normalize();let n=-1/0;for(const r of e.cameraFitPoints(e.scene.map)){const e=t.dot(r);n=Math.max(n,e)}Number.isFinite(n)&&t.lengthSq()>0&&(a=new G(t,-n))}e.scene.pencil.controls.minDistance=0,null===(i=(o=e.scene.pencil.controls).setBoundaryPlane)||void 0===i||i.call(o,a),e.mapBoundaryMatrix=null==c?void 0:c.matrixWorld.clone(),e.mapBoundaryEnabled=!!e.scene.options.mapBoundary}(e.mapCameraContext(this),mi)}finalizeRegionGeometry(){var e=this;return Ce(function*(){e.updateMapBoundary(),e.options.showLabel&&(yield e.drawLabels())})()}prepareCityVis(t,n){return function(e,t,n,r){var i;const o=new t.City(e.scene.pencil),s=t.findAdcodeInfo(n);if(!s)throw new Error(`未知城市区域:${n}`);const a=t.ec(s.name,`${n}`),c=e.scene.cityGroup.find(e=>e.userData.adcode===n),l=e=>null==c?void 0:c.children.some(t=>t.objectType===e||"Area"===t.objectType&&t.options.type===e);return o.setOptions({materialBindings:e.scene.options.materialBindings,center:[s.lng,s.lat],projectionType:e.scene.options.projectionType,grey:r,adcode:n,cacheKey:e.scene.options.cacheCity&&e.scene.runtimePolicy.cacheCityGeometry?`${n}:${e.scene.options.projectionType}:${o.pscale}`:void 0,jsonName:a,showBuilding:e.scene.options.showBuilding&&!l("Building"),buildingHasSide:e.scene.options.buildingHasSide,showRoad:e.scene.options.showRoad&&!l("Road"),showGrassland:e.scene.options.showGrassland&&!l("grassland"),showRiver:e.scene.options.showRiver&&!l("river"),dataSources:null===(i=e.scene.options.assetSources)||void 0===i?void 0:i.city}),{cityVis:o,item:s,existing:c}}(e.cityLayersContext(this),yi,t,n)}preloadCityVis(t,n){var r=this;return Ce(function*(){return function(e,t,n){return oi.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCitySequence(t,n=!1){var r=this;return Ce(function*(){return function(e,t){return si.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityVis(t,n=!1){var r=this;return Ce(function*(){return function(e,t){return ai.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityOnMap(t){var n=this;return Ce(function*(){return function(e,t,n){return ci.apply(this,arguments)}(e.cityLayersContext(n),yi,t)})()}_getParentBgMetrics(){return function(e){const t=e.scene.parentBg.find(e=>"worldBackground"===e.userData.mapRole)||e.scene.parentBg[0];if(!t)return;const{center:n,size:r}=t.getSize();return{planeWidth:r.x,planeHeight:r.y,center:new y(n.x,n.y,0)}}(e.backgroundsContext(this))}clearParentBackground(){return(t=e.backgroundsContext(this)).scene.parentBg.forEach(e=>{e.erase()}),void(t.scene.parentBg.length=0);var t}ensureParentBackground(){var t=this;return Ce(function*(){return function(e,t){return li.apply(this,arguments)}(e.backgroundsContext(t),bi)})()}clearContinentsBackground(){return t=e.backgroundsContext(this),null===(n=t.scene.continentsBg)||void 0===n||n.erase(),void(t.scene.continentsBg=void 0);var t,n}ensureContinentsBackground(){var t=this;return Ce(function*(){return function(e,t){return di.apply(this,arguments)}(e.backgroundsContext(t),bi)})()}consoleMousePostion(){this.addListener(this.container,"click",e=>{var t,n;const r=this.mapObj;if(!r)return;const i=this.unproject(e,r.z+r.depth),o=null===(t=(n=this.projection).invert)||void 0===t?void 0:t.call(n,[i.x,-i.y]);console.log("consoleMousePostion.postion",i),console.log("consoleMousePostion.lnglat",o)})}shadowMapEnabled(){var e=this;return Ce(function*(){e.pencil.scene.userData.shadowMapEnabled||(e.pencil.scene.userData.shadowMapEnabled=!0);const[t]=yield Promise.all([e.lead.draw(Yr.SpotLight,"#c1e6dd",1,0,.5,1,0),e.lead.draw(Yr.PlaneShadow)]);t.keyType="ShadowSpotLight",t.position.set(.281,32.487,43.077),t.object3d.castShadow=!0})()}getReferenceScale(e,t){const n=Math.max(Math.abs(e[2]-e[0]),Math.abs(e[3]-e[1])),r=Math.max(Math.abs(t[2]-t[0]),Math.abs(t[3]-t[1]));return Number.isFinite(n)&&Number.isFinite(r)&&0!==n&&0!==r?r/n:1}getAdcodeShowLevel(e,t=!0){return Fr(e,t)}setLabels(e,t={}){return this.updateLabels(e,!1,t.signal)}drawLabels(){return this.updateLabels(this.options.showLabel,!0)}updateLabels(t,n,r){var i,o,s=this;return this.labelsDisposed?Promise.reject(new DOMException("Map disposed","AbortError")):(null!==(i=this.labelUpdates)&&void 0!==i?i:this.labelUpdates=new Ht).run((o=Ce(function*(r){if(!n&&!s.labelsDirty&&s.options.showLabel===t)return;const i=s.options.showLabel;s.options.showLabel=t;try{t?yield function(e,t,n){return ni.apply(this,arguments)}(e.labelsContext(s),gi,r):ii(e.labelsContext(s)),qt(r),s.labelsDirty=!1}catch(o){throw s.options.showLabel=i,s.labelsDirty=!0,o}}),function(e){return o.apply(this,arguments)}),r)}eraseLabels(){var t;return null===(t=this.labelUpdates)||void 0===t||t.cancel(),this.labelsDirty=!0,ii(e.labelsContext(this))}geAdcodePosition(e){var t;const n=null===(t=this.mapArea)||void 0===t?void 0:t.find(t=>t.userData.adcode===e);if(n){const{centroid:e,center:t}=n.userData;return this.getLocationPosition(e||t)}}getLocationPosition(e,t=0){if(this.continentsBg&&!this.booleanPointInMap(e)){const n=this.continentsBg.getLocationPosition(e,void 0,t);if(n)return n}return this.getMainMapLocationPosition(e,t).toArray()}getMainMapLocationPosition(e,t=0){var n,r,i,o,s;const[a,c]=e,[l,d]=this.projection([a,c]),u=new y(l,-d,null!==(n=null===(r=this.mapObj)||void 0===r?void 0:r.depth)&&void 0!==n?n:0),p=null!==(i=null===(o=this.map)||void 0===o?void 0:o.object3d)&&void 0!==i?i:null===(s=this.group)||void 0===s?void 0:s.object3d;if(p){if(p.updateWorldMatrix(!0,!1),p.localToWorld(u),t){const e=new y(0,0,1).applyNormalMatrix((new se).getNormalMatrix(p.matrixWorld));u.addScaledVector(e,t)}}else u.z+=t;return u}worldToObjectParent(e,t){const n=t.object3d.parent;return n&&(n.updateWorldMatrix(!0,!1),n.worldToLocal(e)),e}setObjectOnMap(e,t,n=0){const r=new y(...this.getLocationPosition(t,n));e.position.copy(this.worldToObjectParent(r,e))}setObjectOnMapAreaByProperty(e,t,n,r=0){var i;const o=null===(i=this.mapArea)||void 0===i?void 0:i.find(e=>e.userData[t]===n);if(o){const{centroid:t,center:n}=o.userData;this.setObjectOnMap(e,t||n,r)}}getAdcodeScreenPosition(e){const t=this.geAdcodePosition(e);if(t){const[e,n,r]=t,i=new y(e,n,r);return i.project(this.pencil.camera),this.pencil.getScreenPositionFromNDC(i.x,i.y)}}booleanPointInMap(e){var t,n,r;const i=null===(t=this.mapInfo)||void 0===t?void 0:t.adcode,o=void 0===i?void 0:Nr(i);if(null==o?void 0:o.b){const[t,n,r,i]=o.b,[s,a]=e;if(s<t||s>r||a<n||a>i)return!1}const s=(null===(n=this.map)||void 0===n?void 0:n.options.extrudeLineGeojson)||(null===(r=this.map)||void 0===r?void 0:r.options.geojson);return!!s&&s.features.some(t=>{const n=t.geometry.coordinates;return"Polygon"===t.geometry.type?n.some(t=>Gt(Wt(e),Nt([t]))):"MultiPolygon"===t.geometry.type&&n.some(t=>t.some(t=>Gt(Wt(e),Nt([t]))))})}_loadGeojsonFromConfig(e){var t=this;return Ce(function*(){if("number"==typeof e){var n;const r=null===(n=t.options.assetSources)||void 0===n?void 0:n.regionGeojson;if(!r)throw new Error("Map.assetSources.regionGeojson is required");return $e(r.split("{adcode}").join(String(e)),{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}})}return"string"==typeof e?$e(e,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}}):e})()}_loadBaseGeojson(e,t){var n=this;return Ce(function*(){const r=n.options.assetSources;if(!r)throw new Error("Map.assetSources is required to load dynamic regions");const i=(e=>zr.some(t=>t.adcode===e))(e),o=t=>t.split("{adcode}").join(String(e));return 0===e?$e(o(t?r.worldLiteGeojson:r.worldGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}}):i?{type:"FeatureCollection",features:(yield $e(o(r.continentsLiteGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})).features.filter(t=>{var n;return(null===(n=t.properties)||void 0===n?void 0:n.adcode)===e})}:$e(o(t?r.regionLiteGeojson:r.regionGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})})()}getGeojson(e,t=!1){var n=this;return Ce(function*(){var r;const i=n.options.mapData;var o;if((null==i?void 0:i.adcode)===e)return"builtin"===i.mode?n._loadBaseGeojson(e,t):structuredClone(t&&null!==(o=i.outlineGeojson)&&void 0!==o?o:i.geojson);const s=t?n.options.extrudeLineGeojsonMapReplace:n.options.geojsonMapReplace;if(null==s?void 0:s[e])return n._loadGeojsonFromConfig(s[e]);let a=yield n._loadBaseGeojson(e,t);if(!t&&a&&(null===(r=n.options.geojsonExtensions)||void 0===r?void 0:r[e])){const t=n.options.geojsonExtensions[e],r=Array.isArray(t)?t:[t],i=(yield Promise.all(r.map(e=>n._loadGeojsonFromConfig(e)))).filter(e=>!!e),o=new Set(a.features.map(e=>{var t;return null===(t=e.properties)||void 0===t?void 0:t.adcode}).filter(e=>void 0!==e));a=De(De({},a),{},{features:[...a.features,...i.flatMap(e=>e.features).filter(e=>e.properties&&!o.has(e.properties.adcode)).map(e=>De(De({},e),{},{properties:De({extension:!0},e.properties)}))]})}return a})()}buildRegion({adcode:e,depth:t=this.options.mapDepth,extrudelineBloom:n}){var r=arguments,i=this;return Ce(function*(){if(r.length>1)throw Error("External map keys are not supported; use the bundle authorization");if(yield i.requireMapAuthorization(e),i.mapObj)throw new Error("Map already has a main region; use SceneManager.switchMapRegion()");const o=Nr(+e);if(!o)throw new Error(`Unknown map region: ${e}`);const{name:s}=o;let a=yield i.getGeojson(e),c=yield i.getGeojson(e,!0);if(i.options.showDistrict||"city"!==i.getAdcodeShowLevel(e)||(a=c,c=void 0),[a,c].filter(Boolean).forEach(t=>{var n;if((null===(n=i.options.mapData)||void 0===n?void 0:n.adcode)!==e&&!t.features[0].properties.adcode&&/^\d{6}$/.test(`${e}`)){const n=Nr(e);t.features[0].properties=De(De(De({},t.features[0].properties),n),{},{center:[n.lng,n.lat]})}}),!a)throw new Error(`${s}的地图数据不存在`);{var l,d;if((null===(l=i.options.mapData)||void 0===l?void 0:l.adcode)!==e&&(null===(d=i.options.fixGeojson)||void 0===d?void 0:d[e])){var u;const t=null===(u=i.options.fixGeojson)||void 0===u?void 0:u[e];if(t.startsWith("-")){const e=+t.slice(1);a.features=a.features.filter(t=>t.properties.adcode!==e)}}const r=o.b,s=0,p=zt(a).geometry.coordinates,[h,f]=i.projection(p),v=yield i.drawPlaneMap({geojson:a,extrudeLineGeojson:c,depth:t,bbox:r,adcode:e,extrudelineBloom:n});v.position.z=s,i.mapObj={map:v,mapInfo:o,z:s,depth:t,cX:h,cY:-f},i.options.adcode=e}})()}*cameraFitPoints(t){yield*function*(e,t){const n=t.object3d;if(!(null==n?void 0:n.updateWorldMatrix))return;n.updateWorldMatrix(!0,!0);const r=new y,i=t===e.scene.map;let o=!1;i&&n.traverse(e=>{var t;(null===(t=e.userData._baseObjectUserData)||void 0===t?void 0:t.mapGenerated)&&(o=!0)}),yield*function*e(t,s=!o){var a,c;if(!t.visible)return;const l=null!==(a=t.userData._baseObjectUserData)&&void 0!==a?a:t.userData;if(i&&l.copySource)return;t!==n&&t.userData._baseObjectIdentityVersion&&(s=!!l.mapGenerated);const d=null===(c=t.geometry)||void 0===c?void 0:c.getAttribute("position");if(d&&s)for(let n=0;n<d.count;n++)yield r.fromBufferAttribute(d,n).applyMatrix4(t.matrixWorld);for(const n of t.children)yield*e(n,s)}(n)}(e.mapCameraContext(this),t)}cameraForPose(t){return function(e,t){var n;const r=null===(n=e.scene.pencil)||void 0===n?void 0:n.camera;if(!(null==r?void 0:r.isPerspectiveCamera))return;const i=new Ee;return i.near=r.near,i.up.copy(r.up),i.projectionMatrix.copy(r.projectionMatrix),i.position.set(t[0],t[1],t[2]),i.lookAt(t[3],t[4],t[5]),i.updateMatrixWorld(!0),i}(e.mapCameraContext(this),t)}captureCameraFitReference(t,n=this.adcode){return function(e,t,n,r=e.scene.adcode){const i={lookat:[...n],adcode:r,center:[...e.scene.pcenter]},o=e.cameraForPose(n);if(o&&e.scene.map){var s,a,c;const n=null!==(s=null===(a=(c=e.scene.pencil).getViewViewport)||void 0===a?void 0:a.call(c))&&void 0!==s?s:e.scene.pencil.getSize(),r=t.measurePerspectiveCameraPadding(De({points:e.cameraFitPoints(e.scene.map),camera:o},n));r&&(i.padding=r,i.viewport={width:n.width,height:n.height})}return i}(e.mapCameraContext(this),mi,t,n)}readAuthoredCameraPose(){return function(e,t){var n;const r=null===(n=e.scene.pencil)||void 0===n?void 0:n.camera;if(!(null==r?void 0:r.getWorldPosition)||!e.scene.map)return;const i=r.getWorldPosition(new y),o=r.getWorldDirection(new y),s=t.objectWorldBounds(e.scene.map.object3d);if(s.isEmpty())return;const a=r.userData._cameraControlTarget;let c;if(Array.isArray(a)&&3===a.length&&a.every(Number.isFinite))c=new y(...a);else{const e=Math.abs(o.z)>1e-10?(s.max.z-i.z)/o.z:-1,t=e>1e-10?e:Math.max(1e-6,i.distanceTo(s.getCenter(new y)));c=i.clone().addScaledVector(o,t)}const l=[...i.toArray(),...c.toArray()];return ei(l)?l:void 0}(e.mapCameraContext(this),mi)}getCameraFitReference(){return function(e){var t;const n=null===(t=e.scene.cameraState)||void 0===t?void 0:t[e.scene.cameraStateActive],r=ei(n)?n:e.authoredCameraPose;return r?(e.regionCameraFitReference&&!r.some((t,n)=>t!==e.regionCameraFitReference.lookat[n])||(e.regionCameraFitReference=e.captureCameraFitReference(r)),e.regionCameraFitReference):e.regionCameraFitReference}(e.mapCameraContext(this))}calcPaddingFromReference(t,n,r){var i=this;return Ce(function*(t,n,r,o={lookat:t,adcode:n}){return function(e,t,n,r,i){return Jr.apply(this,arguments)}(e.mapCameraContext(i),mi,t,n,r,o)}).apply(this,arguments)}fitTo(t){var n=this;return Ce(function*(t,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l=!0,smoothTime:d=250}={}){return function(e,t,n){return Zr.apply(this,arguments)}(e.mapCameraContext(n),mi,t,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l,smoothTime:d})}).apply(this,arguments)}drawPlaneMap({geojson:e,extrudeLineGeojson:t,bbox:n,depth:r,extrudelineBloom:i,adcode:o}){var s=this;return Ce(function*(){var a,c,l;const d=null===(a=s.regionAppearance)||void 0===a?void 0:a.materialOptions,u=De({},s.getMaterialGroup("plane"));for(const[e,t]of Object.entries(null!=d?d:{}))t&&(u[e]=t);if(!(null==u?void 0:u.topMat))throw new Error("Map scene has no region top material");const p=u,h=s.getMaterialGroup("bgPlane"),f=De(De({},p),h?{bgTopMat:h.topMat,bgSideMat:h.sideMat,bgLineMat:h.lineMat,bgExtrudeLineMat:h.extrudeLineMat}:{}),v=yield s.group.draw(Yr.PlaneMap,De(De({},s.regionAppearance),{},{geojson:e,extrudeLineGeojson:t,hasExtrudeLine:s.options.extrudeLine,depth:r,projection:{center:s.pcenter,scale:s.pscale,rotate:s.options.worldPacificCentre?[-160,0]:void 0,projectionType:s.options.projectionType},materialOptions:f,bbox:n,topSegments:s.options.topSegments,bevelRatio:null!==(c=s.options.mapBevel)&&void 0!==c?c:0,lineOffset:s.options.lineOffset,mergeSide:s.options.mergeSide,castShadow:!0}));return Object.assign(v.userData,{mapRole:"region",adcode:o}),v.object3d.name=(null===(l=Nr(o))||void 0===l?void 0:l.name)||`${o}`,s.options.cityOnMap&&!s.options.showCityOnMapInnerLine&&u.lineMat&&(u.lineMat.colorWrite=!1),v.extrudelineArr&&v.extrudelineArr.forEach(e=>{e.object3d.name="板块边线",e.keyType="extrudeLine",s.applyObjectState(e),i&&s.setObjectState(e,{bloom:!0})}),v.lineArr&&v.lineArr.forEach(e=>{s.applyObjectState(e)}),v})()}getEffectiveSafeAreaPadding(t=[0,0,0,0]){return function(e,t=[0,0,0,0]){if(void 0===e.safeAreaInsets)return[...t];const{top:n,right:r,bottom:i,left:o}=e.safeAreaInsets;return[n,r,i,o]}(e.mapCameraContext(this),t)}getSafeAreaInsets(){return(t=e.mapCameraContext(this)).safeAreaInsets&&De({},t.safeAreaInsets);var t}setSafeAreaInsets(t,n={}){return function(e,t,n={}){var r;const i=void 0===t?void 0:ti(t),o=e.safeAreaInsets;return e.safeAreaRefitPending||(e.safeAreaRefitPending=void 0===i!=(void 0===o)||!!i&&Object.keys(i).some(e=>i[e]!==(null==o?void 0:o[e]))),e.safeAreaInsets=i,!1!==n.refit&&e.scene.map?e.scene.fitTo(e.scene.map,{enableTransition:null!==(r=n.transition)&&void 0!==r&&r,smoothTime:n.smoothTime}):Promise.resolve()}(e.mapCameraContext(this),t,n)}refitSafeAreaIfNeeded(){var t=this;return Ce(function*(n={}){return function(e){return Qr.apply(this,arguments)}(e.mapCameraContext(t),n)}).apply(this,arguments)}findAdcodeInfo(e){return Nr(e)}updateOptionsForAdcode(e){const t=Nr(e);if(t&&(this.options.adcode=e,this.options.center=[t.lng,t.lat],this.options.cityBboxMap={},this.options.createIfNeeded=!0,this.options.cityOnMap)){const e=Nr(t.parent);this.options.nearbyCities="district"===t.level&&"city"===(null==e?void 0:e.level)}}updateProjection(){this.pcenter=this._getProjectionCenter(),this.projection=F({center:this.pcenter,scale:this.pscale,projectionType:this.options.projectionType,rotate:this._getProjectionRotate()}),this.meters=this.projection([1141e-8+this.pcenter[0],0])[0]}onSceneRestored(){var t=this;return Ce(function*(){var n;t.updateProjection(),t.mapBoundaryMatrix=void 0,t.mapBoundaryEnabled=void 0,t.mapObj=void 0,t.parentBg=[];const r=t.options.sceneBindings;if(!r)throw new Error("Map scene requires sceneBindings; re-export it from editor-platform");const i=e=>t.lead.objects.get(e);if(t.group=i(r.container),!t.group)throw new Error("Map scene is missing its bound container");const o=r.region;if(!o)throw new Error("Map scene requires a single region binding; re-import it in editor-platform");const s=i(o.object);if(!s)throw new Error(`Map scene is missing region ${o.adcode}`);const a=Nr(o.adcode);if(!a)throw new Error(`Unknown map region: ${o.adcode}`);const c=t.projection([a.lng,a.lat]);t.mapObj={map:s,mapInfo:a,z:s.position.z,depth:null!==(n=s.options.depth)&&void 0!==n?n:t.options.mapDepth,cX:c?c[0]:0,cY:c?-c[1]:0},t.options.mapDepth=t.mapObj.depth,t.authoredCameraPose=t.readAuthoredCameraPose(),t.regionCameraFitReference=void 0,t.cameraAngleOverrides=void 0,t.getCameraFitReference(),void 0!==t.adcode&&(t.options.adcode=t.adcode);t.parentBg=r.parentBackgrounds.flatMap(e=>{const t=i(e);return t?[t]:[]}),t.continentsBg=r.continentsBackground?i(r.continentsBackground):void 0,t.cityGroup=r.cities.map(e=>(e=>{const t=i(e);if(!t)throw new Error(`Map scene binding was not found: ${e}`);return t})(e));for(const e of t.cityGroup)e.userData.mapRole="city";t.options.sceneBindings=t.getSceneBindings(),t.updateMapBoundary(),yield function(e,t,n){return hi.apply(this,arguments)}(e.regionTexturesContext(t),ji,o.adcode),t.options.showLabel&&(yield t.drawLabels())})()}getSceneBindings(){if(!this.mapObj)throw new Error("Map scene has no main region");const e=e=>this.lead.objects.has(e.key);return{container:this.group.key,region:{adcode:this.mapObj.mapInfo.adcode,object:this.mapObj.map.key},parentBackgrounds:this.parentBg.filter(e).map(e=>e.key),continentsBackground:this.continentsBg&&e(this.continentsBg)?this.continentsBg.key:void 0,cities:this.cityGroup.map(e=>e.key)}}captureOverlayLayers(){return function(e){const t=e.scene.mapObj;if(!t)return[];const n=e.scene.map;if(!n)return[];const r=[];for(const o of n.children)if(o.userData.copySource){const n=e.captureObjectMaterialKeys(o);if(!n.length)continue;let s,a=o;const c=/* @__PURE__ */new Set;for(;a&&!c.has(a)&&!s;){var i;c.add(a),s=null!==(i=a.userData.mapGeneratedId)&&void 0!==i?i:"extrudeLine"===a.keyType?"extrudeLine:all":void 0,a=a.userData.copySource?e.scene.baseObjectByUuid(a.userData.copySource):void 0}r.push({materialKeys:n,copySource:o.userData.copySource,sourceGeneratedId:s,uuid:o.object3d.uuid,zOffset:o.position.z-t.depth})}return r}(e.regionOverlaysContext(this))}captureObjectMaterialKeys(t){return function(e,t){const n=t.object3d;return(Array.isArray(n.material)?n.material:[n.material]).map(t=>{var n;return null!==(n=e.scene.sceneResources.getKey(t))&&void 0!==n?n:""}).filter(Boolean)}(e.regionOverlaysContext(this),t)}applyOverlayLayers(t){var n=this;return Ce(function*(){return function(e,t){return ui.apply(this,arguments)}(e.regionOverlaysContext(n),t)})()}applyRegionObjectState(t,n){return function(e,t,n,r){const i=e.scene.mapObj;if(!e.scene.map||!i)return;if(!r)return;const o=t.findAdcodeInfo(r),s=t.findAdcodeInfo(n);if(!o||!s)return;const a=e.scene.getReferenceScale(o.b,s.b),c=i.z,l=i.z+i.depth,{center:d}=e.scene.map.getSize(),u=[...e.scene.lead.objects.values()],p=u.flatMap(e=>{const t=e.object3d;return t.userData.regionLight&&!t.userData.regionRemove&&t.target?[{light:t,target:t.target,offset:t.getWorldPosition(new y).sub(t.target.getWorldPosition(new y))}]:[]});for(const g of u){var h;const e=g.object3d.userData,t=e.regionScale,n=e.regionCenter,r=null!==(h=e.regionHeight)&&void 0!==h?h:"keep";if(t&&g.scale.multiplyScalar(a),n&&(g.position.x=d.x,g.position.y=d.y),"scale"===r?g.position.z*=a:"top"===r?g.position.z=l:"bottom"===r&&(g.position.z=c),"percent"===r){const t=Number.isFinite(e.regionHeightPercent)?e.regionHeightPercent:100;g.position.z=c+i.depth*(t/100)}e.regionRemove&&g.erase()}for(const{light:g,target:b,offset:w}of p){const e=b.getWorldPosition(new y).addScaledVector(w,a);g.parent&&g.parent.worldToLocal(e),g.userData.regionCenter&&(e.x=g.position.x,e.y=g.position.y),g.userData.regionHeight&&"keep"!==g.userData.regionHeight&&(e.z=g.position.z),g.position.copy(e)}const f=[...e.scene.lead.objects.values()].map(e=>e.object3d).filter(e=>e.isDirectionalLight&&e.userData.regionLight&&!e.userData.regionRemove);if(!f.length)return;const v=ce(e.scene.map.object3d);if(v.isEmpty())return;const m=[];e.scene.lead.scene.object3d.traverseVisible(e=>{const t=e;t.isMesh&&t.receiveShadow&&m.push(ce(t))});for(const g of f)pi(g,v,m)}(e.regionOverlaysContext(this),wi,t,n)}rebuildRegion(e,t=!1){var n=arguments,r=this;return Ce(function*(){if("boolean"!=typeof t||n.length>2)throw Error("External map keys are not supported; use the bundle authorization");if(qr(0,r.navigationAssets,e),yield r.requireMapAuthorization(e),r.adcode===e&&!t)return;if(!Nr(e))throw new Error(`Unknown map region: ${e}`);const i=r.pencil.resources.createScope("map-region-rebuild");try{var o;r.map&&r.sceneResources.prepareOptionMaterials(r.map.options,i);const n=t&&r.adcode===e;n&&(null===(o=r.map)||void 0===o||o.traverse(e=>{const t=e.object3d.material;for(const n of Array.isArray(t)?t:[t])n&&i.retain(n)})),yield r.rebuildRegionGeometry(e,n)}finally{i.dispose()}})()}rebuildRegionGeometry(e,t=!1){var n=this;return Ce(function*(){var r,i,o,s,a;const c=(l=Ce(function*(t,r){try{return yield r()}catch(i){throw console.error("[vis-core:map-region] step failed",t,i instanceof Error?i.stack:String(i),{stage:t,sourceAdcode:n.adcode,targetAdcode:e,message:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0,cause:i instanceof Error?i.cause:void 0,error:i}),new Error(`Map region rebuild failed at ${t}: ${i instanceof Error?i.message:String(i)}`,{cause:i})}}),function(e,t){return l.apply(this,arguments)});var l;const d=null!==(r=n.adcode)&&void 0!==r?r:n.options.adcode,u=(null!==(i=null!==(o=null===(s=n.map)||void 0===s?void 0:s.options.depth)&&void 0!==o?o:null===(a=n.mapObj)||void 0===a?void 0:a.depth)&&void 0!==i?i:n.options.mapDepth)*n.getReferenceScale(Nr(d).b,Nr(e).b),p=n.captureOverlayLayers(),h=[],f=n.map,v=new globalThis.Map,m=new globalThis.Map;if(null==f||f.traverse(e=>{e.userData.mapGeneratedId&&!e.userData.copySource&&(v.set(e.userData.mapGeneratedId,e.object3d.uuid),t&&m.set(e.userData.mapGeneratedId,{name:e.name,visible:e.visible,material:e.object3d.material,position:e.position.clone(),quaternion:e.object3d.quaternion.clone(),scale:e.scale.clone()}))}),n.regionAppearance=f?De({},f.options):void 0,n.regionAppearance&&delete n.regionAppearance.uuid,f){const e=f,t=/* @__PURE__ */new Set([...e.groupArr,...e.areaArr,...e.lineArr||[],...e.extrudelineArr||[],...e.mergeSideArea?[e.mergeSideArea]:[]]),r=i=>{for(const o of[...i.children])t.has(o)?r(o):o.userData.copySource||(e.object3d.attach(o.object3d),n.group.add(o),h.push(o))};r(e)}const g=f&&De({},f.object3d.userData),y=f&&{position:f.position.clone(),quaternion:f.object3d.quaternion.clone(),scale:f.scale.clone(),visible:f.visible},b=n.continentsBg&&!n.options.continentsBgAtOrigin?n.worldToObjectParent(n.getMainMapLocationPosition([104,37.5]),n.continentsBg):void 0;null==f||f.erase();for(const e of n.cityGroup)e.erase();if(n.mapObj=void 0,n.cityGroup=[],n.cityVis=[],n.pencil.controls.setBoundary(),n.pencil.controls.maxDistance=1/0,n.pencil.controls.minDistance=0,n.updateOptionsForAdcode(e),n.updateProjection(),yield c("create-region-geometry",()=>n.buildRegion({adcode:e,depth:u})),!n.map)throw new Error(`Unable to build map region ${e}`);if(f&&n.lead.setObjectUuid(n.map,f.object3d.uuid),n.map.traverse(e=>{const t=v.get(e.userData.mapGeneratedId);t&&n.lead.setObjectUuid(e,t);const r=m.get(e.userData.mapGeneratedId);r&&(e.name=r.name,e.object3d.visible=r.visible,e.position.copy(r.position),e.object3d.quaternion.copy(r.quaternion),e.scale.copy(r.scale),r.material&&(e.object3d.material=r.material,"material"in e.options&&(e.options.material=r.material),n.sceneResources.addBaseObjectMap(e)))}),g&&Object.assign(n.map.object3d.userData,g),y&&(n.map.position.copy(y.position),n.mapObj.z=n.map.position.z,n.map.object3d.quaternion.copy(y.quaternion),n.map.scale.copy(y.scale),n.map.object3d.visible=y.visible),n.continentsBg&&b){const e=n.worldToObjectParent(n.getMainMapLocationPosition([104,37.5]),n.continentsBg);n.continentsBg.position.x+=e.x-b.x,n.continentsBg.position.y+=e.y-b.y}for(const e of h)n.map.add(e);yield c("create-parent-background",()=>n.ensureParentBackground()),yield c("create-continents-background",()=>n.ensureContinentsBackground()),n.options.cityOnMap&&(yield c("create-city-layer",()=>n.initCityOnMap(e))),yield c("restore-overlay-layers",()=>n.applyOverlayLayers(p)),yield c("apply-switch-fixes",()=>n.applyRegionObjectState(e,d)),yield c("apply-region-textures",()=>n.applyRegionTextureRules(e)),yield c("finalize-region",()=>n.finalizeRegionGeometry()),n.options.mapDepth=n.mapObj.depth,n.options.sceneBindings=n.getSceneBindings()})()}playRegionEnterTransition({duration:e,sourceCamera:t,preparedCamera:n,onPrepared:r}){var i=this;return Ce(function*(){const o=i.map,s=i.mapObj;if(!o||!s)return void(yield i.playEnterTransition({duration:e,onPrepared:r}));n||(yield i.fitTo(o,{adcode:s.mapInfo.adcode,reference:i.regionCameraFitReference,z:o.position.z+s.depth,enableTransition:!1}));const a=null!=n?n:[...i.pencil.cameraPositon.toArray(),...i.pencil.cameraTarget.toArray()];if(!t||e<=0)return void(null==r||r());const c=i.pencil.controls;yield c.setLookAt(...t,!1),null==r||r(),yield D({owner:i.pencil,onUpdate:e=>{const n=a.map((n,r)=>t[r]+(n-t[r])*e);c.setLookAt(...n,!1)}}).start({duration:e}),yield c.setLookAt(...a,!1)})()}regionRuleMaterial(t,n){return function(e,t,n,r){var i;const o=e.scene.sceneResources.get(n);if(!(null==o||null===(i=o.userData)||void 0===i?void 0:i._materialAssetId)||o.userData._materialDynamic)return o;if(!e.scene.sceneResources.getAlias(n))throw new Error(`Missing material alias ${n} for region rule`);const s=e.scene.sceneResources.getAliases().filter(e=>e.material===o),a=t.cloneMaterialResources(o,t=>e.scene.pencil.resources.create(t));a.userData._materialDynamic=!0,a.userData._materialAssetOverrideHash=`region:${r}`;for(const c of s)e.scene.sceneResources.setAliasMaterial(c.key,a);return a}(e.regionTexturesContext(this),ji,t,n)}setRegionTexture(t,n,r){return function(e,t,n,r){var i;null!==(i=t.userData)&&void 0!==i||(t.userData={});const o=t.userData._materialRuntimeProperties;t.userData._materialRuntimeProperties=[.../* @__PURE__ */new Set([...Array.isArray(o)?o:[],n])];const s=t[n];if(r)if(null==s?void 0:s.isTexture){const i=r.clone().copy(s);i.source=r.source,i.needsUpdate=!0,t[n]=i,e.scene.pencil.resources?(e.scene.pencil.resources.sync(),e.scene.pencil.resources.disposeUnused(s)):s.dispose()}else{var a;t[n]=r.clone(),t[n].needsUpdate=!0,null===(a=e.scene.pencil.resources)||void 0===a||a.sync()}else t[n]=null,e.scene.pencil.resources?(e.scene.pencil.resources.sync(),(null==s?void 0:s.isTexture)&&e.scene.pencil.resources.disposeUnused(s)):(null==s?void 0:s.isTexture)&&s.dispose();t.needsUpdate=!0}(e.regionTexturesContext(this),t,n,r)}applyRegionTextureRules(t){var n=this;return Ce(function*(){return fi(e.regionTexturesContext(n),ji,t)})()}onDispose(){var e,t;this.labelsDisposed=!0,null===(e=this.labelUpdates)||void 0===e||e.dispose(),null===(t=this.pencil)||void 0===t||null===(t=t.event)||void 0===t||t.off("beforeRender",this.refreshMapBoundary),this.mapBoundaryMatrix=void 0,this.mapBoundaryEnabled=void 0,this.cityVis.length=0,this.cityGroup.length=0,this.parentBg.length=0,this.continentsBg=void 0,this.mapObj=void 0,this.regionAppearance=void 0,this.regionCameraFitReference=void 0,this.authoredCameraPose=void 0,this.cameraAngleOverrides=void 0}static mapCameraContext(e){return{scene:e,get safeAreaInsets(){return e.safeAreaInsets},set safeAreaInsets(t){e.safeAreaInsets=t},get safeAreaRefitPending(){return e.safeAreaRefitPending},set safeAreaRefitPending(t){e.safeAreaRefitPending=t},get regionCameraFitReference(){return e.regionCameraFitReference},set regionCameraFitReference(t){e.regionCameraFitReference=t},get authoredCameraPose(){return e.authoredCameraPose},set authoredCameraPose(t){e.authoredCameraPose=t},get cameraAngleOverrides(){return e.cameraAngleOverrides},set cameraAngleOverrides(t){e.cameraAngleOverrides=t},get mapBoundaryMatrix(){return e.mapBoundaryMatrix},set mapBoundaryMatrix(t){e.mapBoundaryMatrix=t},get mapBoundaryEnabled(){return e.mapBoundaryEnabled},set mapBoundaryEnabled(t){e.mapBoundaryEnabled=t},cameraFitPoints:(...t)=>e.cameraFitPoints(...t),updateMapBoundary:(...t)=>e.updateMapBoundary(...t),cameraForPose:(...t)=>e.cameraForPose(...t),captureCameraFitReference:(...t)=>e.captureCameraFitReference(...t),getCameraFitReference:(...t)=>e.getCameraFitReference(...t),calcPaddingFromReference:(...t)=>e.calcPaddingFromReference(...t),getEffectiveSafeAreaPadding:(...t)=>e.getEffectiveSafeAreaPadding(...t)}}static labelsContext(e){return{scene:e,get labelGroupObject3dUserData(){return e.labelGroupObject3dUserData},set labelGroupObject3dUserData(t){e.labelGroupObject3dUserData=t}}}static cityLayersContext(e){return{scene:e,prepareCityVis:(...t)=>e.prepareCityVis(...t),preloadCityVis:(...t)=>e.preloadCityVis(...t),initCitySequence:(...t)=>e.initCitySequence(...t)}}static backgroundsContext(e){return{scene:e,getGeojson:(...t)=>e.getGeojson(...t),_loadBaseGeojson:(...t)=>e._loadBaseGeojson(...t),_getParentBgMetrics:(...t)=>e._getParentBgMetrics(...t),getMainMapLocationPosition:(...t)=>e.getMainMapLocationPosition(...t),worldToObjectParent:(...t)=>e.worldToObjectParent(...t)}}static regionOverlaysContext(e){return{scene:e,captureObjectMaterialKeys:(...t)=>e.captureObjectMaterialKeys(...t),getGeojson:(...t)=>e.getGeojson(...t)}}static regionTexturesContext(e){return{scene:e,regionRuleMaterial:(...t)=>e.regionRuleMaterial(...t),setRegionTexture:(...t)=>e.setRegionTexture(...t)}}};Re(Si,"VisName","map");var Ai=/* @__PURE__ */new WeakMap;function Oi(e){e&&Ai.delete(e)}function xi(e){const t=Ai.get(e);if(t)return t;const n=/* @__PURE__ */new Map,r=(e,t,i)=>{var o,s,a;if(!e||"string"!=typeof e.uuid||!e.uuid||n.has(e.uuid))throw new Error("Invalid or Ambiguous scene object UUID");const c=[...i,null!==(o=null===(s=e.children)||void 0===s?void 0:s.length)&&void 0!==o?o:0];n.set(e.uuid,{path:t,lengths:c}),null===(a=e.children)||void 0===a||a.forEach((e,n)=>r(e,[...t,n],c))};return r(e,[],[]),Ai.set(e,n),n}function Ii(e,t){const n=()=>{const n=xi(e).get(t);if(!n)return;const{path:r,lengths:i}=n;let o=e;for(let e=0;e<=r.length;e++){var s,a,c;if(!o||(null!==(s=null===(a=o.children)||void 0===a?void 0:a.length)&&void 0!==s?s:0)!==i[e])return;e<r.length&&(o=null===(c=o.children)||void 0===c?void 0:c[r[e]])}return(null==o?void 0:o.uuid)===t?{node:o,path:r}:void 0},r=n();return r||(Oi(e),n())}function Mi(e,t){const n=Ai.get(e);n&&t&&"object"==typeof t&&Ai.set(t,n)}function Ei(e,t){const n={children:/* @__PURE__ */new Map};for(const[o,s]of t){const t=Ii(e,o);if(!t)throw new Error("A patched scene object UUID was not found");let r=n;for(const e of t.path){let t=r.children.get(e);t||r.children.set(e,t={children:/* @__PURE__ */new Map}),r=t}r.patch=s}const r=(e,t)=>{const n=De({},e);if(t.children.size){n.children=e.children.slice();for(const[i,o]of t.children)n.children[i]=r(e.children[i],o)}if(t.patch){var i;for(const e of null!==(i=t.patch.unset)&&void 0!==i?i:[])delete n[e];Object.assign(n,t.patch.state),t.patch.state.matrix&&(n.matrix=[...t.patch.state.matrix])}return n},i=r(e,n);return Mi(e,i),i}var Pi=new Set(["color","groundColor","intensity","distance","decay","angle","penumbra","width","height","castShadow","receiveShadow","frustumCulled","renderOrder","up","center","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view","backgroundBlurriness","backgroundIntensity","environmentIntensity","backgroundRotation","environmentRotation"]),Di=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","pivot","name","visible","layers"]),Ci=/* @__PURE__ */new Set(["castShadow","receiveShadow","frustumCulled","matrixAutoUpdate","visible"]),Ri={matrix:16,pivot:3,up:3,center:2,backgroundRotation:3,environmentRotation:3},Li=e=>Pi.has(e),ki=e=>Pi.has(e)||Di.has(e),Bi={color:16777215,groundColor:16777215,intensity:1,distance:0,decay:2,angle:Math.PI/3,penumbra:0,width:10,height:10,castShadow:!1,receiveShadow:!1,frustumCulled:!0,renderOrder:0,up:[0,1,0],center:[.5,.5],near:.1,far:2e3,fov:50,aspect:1,zoom:1,left:-1,right:1,top:1,bottom:-1,focus:10,filmGauge:35,filmOffset:0,view:null,backgroundBlurriness:0,backgroundIntensity:1,environmentIntensity:1,backgroundRotation:[0,0,0,"XYZ"],environmentRotation:[0,0,0,"XYZ"]};function Ti(e,t){return Ci.has(e)?"boolean"==typeof t:"name"===e?"string"==typeof t:"layers"===e?Number.isInteger(t)&&t>=-2147483648&&t<=4294967295:"pivot"===e&&null===t||("view"===e?null===t||!!t&&Object.getPrototypeOf(t)===Object.prototype&&Object.entries(t).every(([e,t])=>"enabled"===e?"boolean"==typeof t:["fullWidth","fullHeight","offsetX","offsetY","width","height"].includes(e)&&Number.isFinite(t)):Ri[e]?Array.isArray(t)&&(t.length===Ri[e]||e.endsWith("Rotation")&&4===t.length)&&Object.keys(t).length===t.length&&Array.from(t.slice(0,Ri[e])).every(Number.isFinite)&&(4!==t.length||["XYZ","YZX","XZY","YXZ","ZXY","ZYX"].includes(t[3])):Number.isFinite(t))}function Ui(e,t,n){const r=e.scenes.findIndex(e=>e.id===t),i=e.scenes[r];if(!i||!Array.isArray(n))throw Error("Invalid scene property patch target");const o=/* @__PURE__ */new Map;for(const l of n){var s;if(!l||Object.keys(l).some(e=>!["uuid","state","unset"].includes(e))||"string"!=typeof l.uuid||!l.uuid||o.has(l.uuid)||!l.state||![Object.prototype,null].includes(Object.getPrototypeOf(l.state))||void 0!==l.unset&&(!Array.isArray(l.unset)||new Set(l.unset).size!==l.unset.length))throw Error("Invalid or duplicate scene property patch");if(!Ii(i.scene.object,l.uuid))throw Error("Scene property target was not found");for(const[e,t]of Object.entries(l.state))if(!ki(e)||!Ti(e,t))throw Error(`Invalid scene object property ${e}`);if(null===(s=l.unset)||void 0===s?void 0:s.some(e=>!ki(e)||Object.hasOwn(l.state,e)))throw Error("Invalid unset scene property");o.set(l.uuid,{state:structuredClone(l.state),unset:l.unset&&[...l.unset]})}if(!o.size)return e;const a=Ei(i.scene.object,o),c=[...e.scenes];return c[r]=De(De({},i),{},{scene:De(De({},i.scene),{},{object:a})}),De(De({},e),{},{scenes:c})}var _i=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","up","layers","visible","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view"]),Gi=e=>_i.has(e);function zi(e,t,n){var r;const i=e.scenes.findIndex(e=>e.id===t),o=e.scenes[i];if(!o)throw new Error(`Scene ${t} was not found`);const s=null==n?void 0:n.camera;if(!s||!["PerspectiveCamera","OrthographicCamera"].includes(s.type)||"string"!=typeof s.uuid||!s.uuid||!s.state||"object"!=typeof s.state||Array.isArray(s.state)||!Array.isArray(s.unset)||s.unset.some(e=>!_i.has(e)||Object.hasOwn(s.state,e))||void 0!==n.cs&&(!n.cs||"object"!=typeof n.cs||Array.isArray(n.cs)||Object.values(n.cs).some(e=>!Array.isArray(e)||![...e].every(Number.isFinite)))||void 0!==n.csa&&"string"!=typeof n.csa||!n.controls||"object"!=typeof n.controls||Array.isArray(n.controls))throw new Error("Invalid scene viewport patch");for(const[u,p]of Object.entries(s.state))if(!("matrix"===u||"up"===u?Array.isArray(p)&&p.length===("matrix"===u?16:3)&&[...p].every(Number.isFinite):"matrixAutoUpdate"===u||"visible"===u?"boolean"==typeof p:"layers"===u?Number.isInteger(p)&&p>=-2147483648&&p<=4294967295:"view"===u?null===p||"object"==typeof p&&!Array.isArray(p)&&Object.entries(p).every(([e,t])=>"enabled"===e?"boolean"==typeof t:["fullWidth","fullHeight","offsetX","offsetY","width","height"].includes(e)&&Number.isFinite(t)):_i.has(u)&&Number.isFinite(p)))throw new Error(`Invalid scene camera property ${u}`);const a=null===(r=Ii(o.scene.object,s.uuid))||void 0===r?void 0:r.node;if(!a||a.type!==s.type)throw new Error("Scene camera topology changed");const c=structuredClone(n),l=Ei(o.scene.object,/* @__PURE__ */new Map([[s.uuid,c.camera]])),d=[...e.scenes];return d[i]=De(De({},o),{},{cs:c.cs,csa:c.csa,vis:De(De({},o.vis),{},{options:De(De({},o.vis.options),{},{controls:c.controls})}),scene:De(De({},o.scene),{},{object:l})}),De(De({},e),{},{scenes:d})}var $i=["color","groundColor","intensity","distance","decay","angle","penumbra","width","height","castShadow","receiveShadow","frustumCulled","renderOrder","up","center","shadow","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view","backgroundBlurriness","backgroundIntensity","environmentIntensity","backgroundRotation","environmentRotation"],Wi=["geometries","materials","textures","images","skeletons","animations"],Ni=["materialAliases","shapes","_sharedOptionsPool"],Fi=e=>!!e&&"object"==typeof e&&!Array.isArray(e),qi=e=>Fi(e)&&[Object.prototype,null].includes(Object.getPrototypeOf(e)),Vi=e=>"string"==typeof e&&!!e,Hi=(e,t)=>Object.keys(e).every(e=>t.includes(e));function Ki(e){return null===e||"boolean"==typeof e||"string"==typeof e||("number"==typeof e?Number.isFinite(e):Array.isArray(e)?e.every(Ki):qi(e)&&Object.entries(e).every(([e,t])=>!["__proto__","constructor","prototype"].includes(e)&&Ki(t)))}function Xi(e,t){if(!qi(e))throw new Error("Invalid scene material aliases");for(const[n,r]of Object.entries(e))if(!Vi(n)||!qi(r)||!Hi(r,[t?"materialUuid":"assetId","locked","roles"])||!Vi(r[t?"materialUuid":"assetId"])||void 0!==r.locked&&"boolean"!=typeof r.locked||void 0!==r.roles&&(!Array.isArray(r.roles)||r.roles.some(e=>!Vi(e))))throw new Error("Invalid scene material alias")}function Yi(e,t,n,r){var i,o,s;if(!Fi(t)||!Hi(t,["upsert","remove","order"])||void 0!==t.upsert&&!Array.isArray(t.upsert)||void 0!==t.remove&&!Array.isArray(t.remove)||void 0!==t.order&&(!Array.isArray(t.order)||t.order.some(e=>!Vi(e))||new Set(t.order).size!==t.order.length)||void 0!==e&&!Array.isArray(e))throw new Error(`Invalid ${r} patch`);const a=/* @__PURE__ */new Set;for(const p of null!=e?e:[]){if(!Fi(p)||!Vi(p[n])||a.has(p[n]))throw new Error(`Invalid or duplicate ${r} identity`);a.add(p[n])}const c=/* @__PURE__ */new Map,l=/* @__PURE__ */new Set;for(const p of null!==(i=t.upsert)&&void 0!==i?i:[]){if(!Fi(p)||!Vi(p[n])||c.has(p[n]))throw new Error(`Invalid or duplicate ${r} upsert`);c.set(p[n],p)}for(const p of null!==(o=t.remove)&&void 0!==o?o:[]){if(!Vi(p)||!a.has(p)||l.has(p)||c.has(p))throw new Error(`Invalid ${r} removal`);l.add(p)}if(!c.size&&!l.size&&void 0===t.order)return e;const d=[];for(const p of null!=e?e:[])l.has(p[n])||d.push(null!==(s=c.get(p[n]))&&void 0!==s?s:p);for(const[p,h]of c)a.has(p)||d.push(h);let u=d;if(void 0!==t.order){const e=new Map(d.map(e=>[e[n],e]));if(t.order.length!==e.size||t.order.some(t=>!e.has(t)))throw new Error(`Invalid ${r} order`);u=t.order.map(t=>e.get(t))}return e&&u.length===e.length&&u.every((t,n)=>t===e[n])?e:u}function Ji(e,t=!0){var n,r;if(!Fi(e)||!Hi(e,["parents","additions","replacements","objects","viewport","resources","aliases","interactions","graph",...t?["assets","prefabs"]:[]])||!Array.isArray(e.parents)||void 0!==e.additions&&!Array.isArray(e.additions)||void 0!==e.replacements&&!Array.isArray(e.replacements)||void 0!==e.objects&&!Array.isArray(e.objects)||void 0!==e.resources&&!Fi(e.resources)||void 0!==e.assets&&!Fi(e.assets)||void 0!==e.prefabs&&!Fi(e.prefabs))throw new Error("Invalid scene structure patch");!function(e){if(void 0!==e.interactions){const t=e.interactions;if(!qi(t)||!Hi(t,["set","unset"])||void 0!==t.unset&&!0!==t.unset||t.unset&&Object.hasOwn(t,"set")||Object.hasOwn(t,"set")&&void 0!==t.set&&(!Array.isArray(t.set)||t.set.some(e=>!qi(e))))throw new Error("Invalid scene interactions patch")}if(void 0!==e.aliases){const t=e.aliases;if(!qi(t)||!Hi(t,["set","unset"])||void 0!==t.unset&&!0!==t.unset||t.unset&&Object.hasOwn(t,"set"))throw new Error("Invalid authored scene aliases patch");Object.hasOwn(t,"set")&&Xi(t.set,!1)}if(void 0!==e.graph){var t;const n=e.graph;if(!qi(n)||!Hi(n,["set","unset"])||void 0!==n.set&&(!qi(n.set)||!Hi(n.set,Ni))||void 0!==n.unset&&(!Array.isArray(n.unset)||new Set(n.unset).size!==n.unset.length||n.unset.some(e=>{var t;return!Ni.includes(e)||Object.hasOwn(null!==(t=n.set)&&void 0!==t?t:{},e)})))throw new Error("Invalid scene graph metadata patch");for(const[e,r]of Object.entries(null!==(t=n.set)&&void 0!==t?t:{})){if("materialAliases"===e)Xi(r,!0);else if(!Array.isArray(r))throw new Error(`Invalid scene graph ${e}`);if("shapes"===e){const e=/* @__PURE__ */new Set;for(const t of r){if(!qi(t)||!Vi(t.uuid)||e.has(t.uuid))throw new Error("Invalid or duplicate scene shape UUID");e.add(t.uuid)}}}}}(e);for(const i of null!==(n=e.objects)&&void 0!==n?n:[])if(!(void 0===(null==i||null===(r=i.state)||void 0===r?void 0:r.userData)||Fi(i.state.userData)&&[Object.prototype,null].includes(Object.getPrototypeOf(i.state.userData))))throw new Error("Invalid structure object property userData")}function Zi(e,t,n){return Ji(n),Qi(e,t,structuredClone(n),!0)}function Qi(e,t,n,r){var i,o,s,a,l,d,u;const p=e.scenes.findIndex(e=>e.id===t);if(p<0)throw new Error(`Scene ${t} was not found`);const h=e.scenes[p],f=h.scene.object,v=xi(f),m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Map,y=/* @__PURE__ */new Map;for(const c of null!==(i=n.replacements)&&void 0!==i?i:[]){if(!Fi(c)||!Vi(c.uuid)||!v.has(c.uuid)||g.has(c.uuid))throw new Error("Invalid or conflicting replacement object UUID");g.set(c.uuid,c)}const b=[...g.keys()].map(e=>v.get(e).path),w=(e,t)=>e.length<=t.length&&e.every((e,n)=>e===t[n]);for(let c=0;c<b.length;c++)for(let e=c+1;e<b.length;e++)if(w(b[c],b[e])||w(b[e],b[c]))throw new Error("Nested scene structure replacement roots");const j=(e,t)=>{var n;if(!Fi(e)||!Vi(e.uuid)||y.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children)||v.has(e.uuid)&&!w(t,v.get(e.uuid).path))throw new Error("Invalid or conflicting replacement descendant UUID");y.set(e.uuid,e);for(const r of null!==(n=e.children)&&void 0!==n?n:[])j(r,t)};for(const[c,K]of g)j(K,v.get(c).path);const S=e=>{var t;if(!Fi(e)||!Vi(e.uuid)||v.has(e.uuid)||m.has(e.uuid)||y.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw new Error("Invalid or conflicting added object UUID");m.set(e.uuid,e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])S(n)};for(const c of null!==(o=n.additions)&&void 0!==o?o:[])S(c);const A=new Map([...m,...y]),O=e=>{var t;if(A.has(e))return A.get(e);const n=null===(t=Ii(f,e))||void 0===t?void 0:t.node;if(!n)throw new Error(`Scene structure object ${e} was not found`);return A.set(e,n),n},x=/* @__PURE__ */new Map;for(const c of n.parents){if(!Fi(c)||!Hi(c,["uuid","children"])||!Vi(c.uuid)||x.has(c.uuid)||!Array.isArray(c.children)||c.children.some(e=>!Vi(e))||new Set(c.children).size!==c.children.length)throw new Error("Invalid or duplicate scene structure parent");O(c.uuid),x.set(c.uuid,c.children.map(O))}const I=function(e,t){if(void 0!==e&&!Array.isArray(e))throw new Error("Invalid structure object patches");const n=/* @__PURE__ */new Map,r=["matrix","matrixAutoUpdate","pivot","name","visible","layers","userData","geometry","material","background","environment",...$i];for(const a of null!=e?e:[]){var i,o,s;if(!Fi(a)||!Hi(a,["uuid","state","unset"])||!Vi(a.uuid)||n.has(a.uuid)||!Fi(a.state)||void 0!==a.unset&&!Array.isArray(a.unset))throw new Error("Invalid or duplicate structure object patch");for(const[e,n]of Object.entries(a.state))if(!("matrix"===e?Array.isArray(n)&&16===n.length&&[...n].every(Number.isFinite):"pivot"===e?null===n||Array.isArray(n)&&3===n.length&&[...n].every(Number.isFinite):"name"===e?"string"==typeof n:"visible"===e||"matrixAutoUpdate"===e?"boolean"==typeof n:"layers"===e?Number.isInteger(n)&&n>=-2147483648&&n<=4294967295:"geometry"===e?a.uuid!==t&&(null===n||Vi(n)):"material"===e?a.uuid!==t&&(Vi(n)||Array.isArray(n)&&n.every(Vi)):"background"===e?a.uuid===t&&(null===n||Vi(n)||Number.isInteger(n)&&n>=0&&n<=16777215):"environment"===e?a.uuid===t&&(null===n||Vi(n)):["castShadow","receiveShadow","frustumCulled"].includes(e)?"boolean"==typeof n:["color","groundColor"].includes(e)?Number.isInteger(n)&&n>=0&&n<=16777215:"up"===e||"center"===e?Array.isArray(n)&&n.length===("up"===e?3:2)&&n.every(Number.isFinite):"backgroundRotation"===e||"environmentRotation"===e?Array.isArray(n)&&4===n.length&&n.slice(0,3).every(Number.isFinite)&&["XYZ","YZX","ZXY","XZY","YXZ","ZYX"].includes(n[3]):"shadow"===e?qi(n)&&Ki(n):"view"===e?null===n||qi(n)&&Ki(n):$i.includes(e)?Number.isFinite(n):"userData"===e&&Fi(n)&&[Object.prototype,null].includes(Object.getPrototypeOf(n))))throw new Error(`Invalid structure object property ${e}`);if((null===(i=a.unset)||void 0===i?void 0:i.some(e=>!r.includes(e)||Object.hasOwn(a.state,e)||["background","environment"].includes(e)&&a.uuid!==t||["geometry","material"].includes(e)&&a.uuid===t))||new Set(a.unset).size!==(null!==(o=null===(s=a.unset)||void 0===s?void 0:s.length)&&void 0!==o?o:0))throw new Error("Invalid unset structure object properties");n.set(a.uuid,a)}return n}(n.objects,f.uuid);for(const c of I.keys())O(c);const M=/* @__PURE__ */new Set,E=/* @__PURE__ */new Map,P=e=>{var t,n,r,i;if(e=null!==(t=g.get(null==e?void 0:e.uuid))&&void 0!==t?t:e,!Fi(e)||!Vi(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw new Error("Invalid scene structure object");if(M.has(e.uuid))throw new Error("Cycle in scene structure patch");if(E.has(e.uuid))throw new Error("Duplicate object ownership in scene structure patch");M.add(e.uuid),E.set(e.uuid,e);const o=null!==(n=e.children)&&void 0!==n?n:[],s=null!==(r=x.get(e.uuid))&&void 0!==r?r:o;let a,c=e;for(let p=0;p<s.length;p++){var l;const e=P(s[p]);e!==o[p]&&(null!==(l=a)&&void 0!==l||(a=s.slice())),a&&(a[p]=e)}o.length!==s.length&&(null!==(i=a)&&void 0!==i||(a=s.slice())),a&&(c=De(De({},e),{},{children:a}));const d=I.get(e.uuid);if(d){var u;c=De({},c);for(const e of null!==(u=d.unset)&&void 0!==u?u:[])delete c[e];Object.assign(c,d.state)}return M.delete(e.uuid),E.set(e.uuid,c),c},D=P(f);for(const c of m.keys())if(!E.has(c))throw new Error("Added object is detached from the scene");for(const c of g.keys())if(!E.has(c))throw new Error("Replaced object is detached from the scene");for(const c of I.keys())if(!E.has(c))throw new Error("Patched object is detached from the scene");for(const[c,K]of x)if(K.length&&!E.has(c))throw new Error("Patched parent is detached from the scene");let C=D===f?h.scene:De(De({},h.scene),{},{object:D});if(n.graph){var R,L;for(const e of null!==(R=n.graph.unset)&&void 0!==R?R:[])Object.hasOwn(C,e)&&(C===h.scene&&(C=De({},C)),delete C[e]);for(const[e,t]of Object.entries(null!==(L=n.graph.set)&&void 0!==L?L:{}))C[e]!==t&&(C===h.scene&&(C=De({},C)),C[e]=t)}if(n.resources){if(!Hi(n.resources,Wi))throw new Error("Invalid scene resource patch kind");for(const e of Wi)if(Object.hasOwn(n.resources,e)){const t=n.resources[e];if(Fi(t)&&Object.hasOwn(t,"unset")){if(!Hi(t,["unset"])||!0!==t.unset)throw new Error("Invalid scene resource table unset");Object.hasOwn(C,e)&&(C=De({},C),delete C[e])}else{const n=Yi(C[e],t,"uuid",e);n!==C[e]&&(C=De(De({},C),{},{[e]:n}))}}}const k=n.assets?Yi(e.materialLibrary,n.assets,"id","material assets"):e.materialLibrary,B=n.prefabs?Yi(e.prefabLibrary,n.prefabs,"id","prefab assets"):e.prefabLibrary,T=(null===(s=n.aliases)||void 0===s?void 0:s.unset)?void 0:null!==(a=null===(l=n.aliases)||void 0===l?void 0:l.set)&&void 0!==a?a:h.materialAliases,U=!!n.interactions&&Object.hasOwn(n.interactions,"set"),_=(null===(d=n.interactions)||void 0===d?void 0:d.unset)?void 0:U?n.interactions.set:h.interactions,G=(null===(u=n.interactions)||void 0===u?void 0:u.unset)?Object.hasOwn(h,"interactions"):U&&(!Object.hasOwn(h,"interactions")||_!==h.interactions);if(function(e,t){var n,r;const i=/* @__PURE__ */new Map;for(const c of Wi){var o;if(void 0!==e[c]&&!Array.isArray(e[c]))throw new Error(`Invalid scene ${c} table`);const t=/* @__PURE__ */new Map;for(const n of null!==(o=e[c])&&void 0!==o?o:[]){if(!Fi(n)||!Vi(n.uuid)||t.has(n.uuid))throw new Error(`Invalid or duplicate scene ${c} UUID`);t.set(n.uuid,n)}i.set(c,t)}const s=(e,t)=>{if(!Vi(t)||!i.get(e).has(t))throw new Error(`Missing scene ${e} reference ${String(t)}`)},a=/* @__PURE__ */new Set;for(const p of t.values()){if(void 0!==p.geometry&&null!==p.geometry&&s("geometries",p.geometry),void 0!==p.material)for(const e of Array.isArray(p.material)?p.material:[p.material])s("materials",e);if(void 0!==p.skeleton&&(s("skeletons",p.skeleton),a.add(p.skeleton)),void 0!==p.animations){if(!Array.isArray(p.animations))throw new Error("Invalid object animations");for(const e of p.animations)s("animations",e)}c(p.userData,(e,t)=>s("materials",e[t]),e._sharedOptionsPool)}for(const c of i.get("materials").values()){var l;Ae(c,(e,t)=>{"PMREM_PLACEHOLDER"!==e[t]&&s("textures",e[t])});for(const[e,t]of Object.entries(c))"map"!==e&&"matcap"!==e&&!e.endsWith("Map")||null==t||"PMREM_PLACEHOLDER"===t||s("textures",t);for(const e of Object.values(null!==(l=c.uniforms)&&void 0!==l?l:{}))if("t"===(null==e?void 0:e.type)&&null!==e.value&&"PMREM_PLACEHOLDER"!==e.value&&s("textures",e.value),"tv"===(null==e?void 0:e.type)){if(!Array.isArray(e.value))throw new Error("Invalid material texture array");for(const t of e.value)null!==t&&"PMREM_PLACEHOLDER"!==t&&s("textures",t)}}const d=new Set((null!==(n=e.shapes)&&void 0!==n?n:[]).map(e=>null==e?void 0:e.uuid));for(const c of i.get("geometries").values())if(void 0!==c.shapes&&(!Array.isArray(c.shapes)||c.shapes.some(e=>!Vi(e)||!d.has(e))))throw new Error("Missing scene geometry shape reference");for(const c of i.get("textures").values()){var u;const e=null===(u=c.userData)||void 0===u?void 0:u._videoSrc,t=Fi(e)&&"file"===e.encoding&&"video"===e.kind&&"string"==typeof e.mimeType&&e.mimeType.startsWith("video/")&&"string"==typeof e.sha256&&/^[a-f0-9]{64}$/.test(e.sha256)&&(e.data instanceof ArrayBuffer||"string"==typeof e.data&&e.data.length>0);if(void 0!==e&&"string"!=typeof e&&!t)throw Error("Invalid video texture payload");const n="PMREM_PLACEHOLDER"===c.uuid||"PMREM.cubeUv"===c.name||void 0!==e;if(void 0!==c.image)for(const r of Array.isArray(c.image)?c.image:[c.image]){if("string"!=typeof r)throw new Error("Invalid texture image reference");n&&!i.get("images").has(r)||s("images",r)}}for(const c of a){const e=i.get("skeletons").get(c);if(!Array.isArray(e.bones)||e.bones.some(e=>!Vi(e)||!t.has(e)))throw new Error(`Invalid skeleton bones ${c}`)}for(const c of["background","environment"])"string"==typeof e.object[c]&&"PMREM_PLACEHOLDER"!==e.object[c]&&s("textures",e.object[c]);for(const c of Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}))s("materials",null==c?void 0:c.materialUuid)}(C,E),!n.viewport&&C===h.scene&&T===h.materialAliases&&!G&&k===e.materialLibrary&&B===e.prefabLibrary)return e;const z=e.scenes.slice();if(C!==h.scene||T!==h.materialAliases||G){var $,W,N;const e=De(De({},h),{},{scene:C});(null===($=n.aliases)||void 0===$?void 0:$.unset)?delete e.materialAliases:void 0!==(null===(W=n.aliases)||void 0===W?void 0:W.set)&&(e.materialAliases=T),(null===(N=n.interactions)||void 0===N?void 0:N.unset)?delete e.interactions:U&&(e.interactions=_),z[p]=e}else z[p]=h;let F=De(De(De({},e),{},{scenes:z},k!==e.materialLibrary?{materialLibrary:k}:{}),B!==e.prefabLibrary?{prefabLibrary:B}:{});if(n.viewport){var q,V,H;const e=n.viewport;if(!(qi(e)&&Hi(e,["camera","cs","csa","controls"])&&(void 0===e.controls||qi(e.controls)&&Ki(e.controls))&&(void 0===e.cs||qi(e.cs)&&Ki(e.cs))&&(void 0===e.csa||"string"==typeof e.csa)))throw Error("Invalid structure viewport patch");if(e.camera)F=zi(F,t,De(De({},e),{},{camera:e.camera,cs:Object.hasOwn(e,"cs")?e.cs:h.cs,csa:Object.hasOwn(e,"csa")?e.csa:h.csa,controls:null!==(q=null!==(V=e.controls)&&void 0!==V?V:null===(H=h.vis.options)||void 0===H?void 0:H.controls)&&void 0!==q?q:{}}));else{const t=De({},F.scenes[p]);Object.hasOwn(e,"cs")&&(t.cs=e.cs),Object.hasOwn(e,"csa")&&(t.csa=e.csa),Object.hasOwn(e,"controls")&&(t.vis=De(De({},t.vis),{},{options:De(De({},t.vis.options),{},{controls:e.controls})})),F.scenes[p]=t}}return r&&Mt(F),F}function eo(e,t){if(!Fi(t)||!Hi(t,["scenes","assets","prefabs"])||!Array.isArray(t.scenes)||void 0!==t.assets&&!Fi(t.assets)||void 0!==t.prefabs&&!Fi(t.prefabs))throw new Error("Invalid scene structure transaction");const n=/* @__PURE__ */new Set;for(const a of t.scenes){if(!Fi(a)||!Hi(a,["sceneId","patch"])||!Vi(a.sceneId)||n.has(a.sceneId))throw new Error("Invalid or duplicate scene structure transaction scene");n.add(a.sceneId),Ji(a.patch,!1)}const r=structuredClone(t);let i=e;for(const{sceneId:a,patch:c}of r.scenes)i=Qi(i,a,c,!1);const o=r.assets?Yi(e.materialLibrary,r.assets,"id","material assets"):e.materialLibrary,s=r.prefabs?Yi(e.prefabLibrary,r.prefabs,"id","prefab assets"):e.prefabLibrary;return o===i.materialLibrary&&s===i.prefabLibrary||(i=De(De(De({},i),o!==i.materialLibrary?{materialLibrary:o}:{}),s!==i.prefabLibrary?{prefabLibrary:s}:{})),i!==e&&Mt(i),i}function to({vis:e,graph:t,root:n}){const r=/* @__PURE__ */new Set,i=/* @__PURE__ */new Set,o=/* @__PURE__ */new Set,s=e=>{(null==e?void 0:e.isMaterial)&&i.add(e)},a=e=>{var n,i;e.object3d.geometry&&r.add(e.object3d.geometry);for(const t of[e.object3d.material].flat())s(t);!function(e,t,n){var r;for(const i of null!==(r=null==t?void 0:t._baseObjectMaterialRefs)&&void 0!==r?r:[]){if(!Array.isArray(i)||!i.length||i.some(e=>"string"!=typeof e||["__proto__","prototype","constructor"].includes(e)))throw Error("Invalid object material reference path");let t=e.options;for(const e of i){if(!t||!Object.hasOwn(t,e)){t=void 0;break}t=t[e]}(null==t?void 0:t.isMaterial)&&n(t)}}(e,null!==(n=null===(i=Ii(t.object,e.uuid))||void 0===i?void 0:i.node.userData)&&void 0!==n?n:e.object3d.userData,s)};if(n)n.traverse(a);else{for(const t of e.lead.objects.values())a(t);for(const t of e.sceneResources.getAliases())s(t.material);for(const t of[e.lead.scene.object3d.background,e.lead.scene.object3d.environment])(null==t?void 0:t.isTexture)&&o.add(t)}return{graph:t,resources:e.pencil.resources,geometries:r,materials:i,textures:o}}function no(e=[]){const t=r(e.map(to));return{add:e=>t.add(to(e)),collect:t.collect}}function ro(e,t){return no(t).collect(e)}var io=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],oo=["source","bytes"],so=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],ao=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],co=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],lo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],uo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],po=class extends Error{},ho={base:Dr,earth:Tr,map:Si},fo=class extends Xn{invalidatePendingOperations(e=!1){e||this.mapRequests.cancel(),this.requestedMapDocument=void 0,this.generation++,this.displayPreparationAbort.abort(),this.displayPreparationAbort=new AbortController;for(const i of this.prefabOperations)i.abort();this.prefabOperations.clear(),this.isSwitching=!1,this.isRegionSwitching=!1,this.wakeNavigationWaiters(),this.definitionLoads.clear();const t=[...this.pendingInstances],n=[];this.pendingInstances.clear();for(const i of t)try{i.dispose()}catch(r){n.push(r)}if(1===n.length)throw n[0];if(n.length)throw new AggregateError(n,"Pending scene disposal failed");return this.generation}assertGeneration(e){if(e!==this.generation){const e=/* @__PURE__ */new Error("Scene operation was cancelled because the document or manager changed");throw e.name="AbortError",e}}debugInteraction(e,t){this.options.debugInteractions&&console.log(`[vis-core:interaction] ${e}`,t||{})}enablePickDebug(e){this.options.debugInteractions&&(e.pencil.userData.debugPick=!0)}retireScenes(e){const t=[];for(const r of new Set(e))try{r.dispose()}catch(n){t.push(n)}return t}discardSceneCandidates(e,t={}){for(const n of this.retireScenes(e))console.error("[vis-core:scene] candidate cleanup failed",De(De({},t),{},{disposeError:n}))}notifySceneObservers(e,t){try{this.emit(e,t)}catch(n){try{this.emit("sceneObserverError",{event:e,error:n})||console.error(`[vis-core:scene] ${e} observer failed`,n)}catch(r){console.error("[vis-core:scene] observer error reporting failed",{event:e,error:n,reportError:r})}}}finishNavigation(e,t,n=!1){try{null==t||t()}finally{e===this.generation&&(n?this.isRegionSwitching=!1:this.isSwitching=!1,this.wakeNavigationWaiters())}}wakeNavigationWaiters(){for(const e of this.navigationWaiters)e();this.navigationWaiters.clear()}waitForNavigation(e){var t=this;return Ce(function*(){for(;t.isSwitching||t.isRegionSwitching;){let n;qt(e);const r=new Promise(e=>{n=e,t.navigationWaiters.add(n)});try{yield Vt(r,e)}finally{t.navigationWaiters.delete(n)}}qt(e)})()}disposeInactiveScenes(e,t){return function(e,t,n,r,i){const o=[];if(n)return o;const s=t.maxCachedScenes,a=!1===t.cacheScenes?1:"number"==typeof s&&Number.isFinite(s)?Math.max(1,Math.floor(s)):8;return e().forEach((t,n)=>{if(!(n===r||n===i||e().size<=a))try{t.dispose()}catch(s){o.push(s)}finally{e().get(n)===t&&e().delete(n)}}),o}(()=>this.instances,this.options,this.transactionCacheDepth,e,t)}trimInactiveScenes(){return this.disposeInactiveScenes(this.currentSceneId)}setSceneCachePolicy(e,t=this.options.maxCachedScenes){if(this.isSwitching||this.isRegionSwitching||this.transactionCacheDepth||this.pendingInstances.size)throw new Error("Scene cache policy requires idle navigation");this.options.cacheScenes=e,this.options.maxCachedScenes=t,this.reportSceneRetirementErrors(this.trimInactiveScenes())}reportSceneRetirementErrors(e){if(!e.length)return;const t=new AggregateError(e,"Scene navigation committed, but inactive scene disposal failed");try{this.emit("sceneRetirementError",{sceneId:this.currentSceneId,error:t})}catch(n){console.error(n)}}constructor(e){if(super(),Re(this,"options",void 0),Re(this,"document",void 0),Re(this,"manifest",void 0),Re(this,"manifestUrl",void 0),Re(this,"loadedDefinitions",/* @__PURE__ */new Map),Re(this,"definitionLoads",/* @__PURE__ */new Map),Re(this,"runtimeHooks",void 0),Re(this,"instances",/* @__PURE__ */new Map),Re(this,"currentSceneId",""),Re(this,"history",[]),Re(this,"isSwitching",!1),Re(this,"isRegionSwitching",!1),Re(this,"pencil",void 0),Re(this,"rendererWarmup",void 0),Re(this,"disposed",!1),Re(this,"safeAreaInsets",void 0),Re(this,"generation",0),Re(this,"mapRequests",new Ht),Re(this,"requestedMapDocument",void 0),Re(this,"navigationWaiters",/* @__PURE__ */new Set),Re(this,"displayPreparationAbort",new AbortController),Re(this,"documentIdentityRevision",0),Re(this,"preparedStructures",/* @__PURE__ */new WeakMap),Re(this,"pendingInstances",/* @__PURE__ */new Set),Re(this,"identityTrackedScenes",/* @__PURE__ */new WeakSet),Re(this,"prefabOperations",/* @__PURE__ */new Set),Re(this,"transactionCacheDepth",0),"mapSwitchKey"in e)throw Error("External map keys are not supported; use the bundle authorization");this.options=e,this.safeAreaInsets=void 0===e.safeAreaInsets?void 0:ti(e.safeAreaInsets)}prewarmRuntime(){var e;if(this.disposed)return Promise.reject(/* @__PURE__ */new Error("SceneManager has been disposed"));if(this.pencil)return this.pencil.ready;const t=[...this.pendingInstances].find(e=>e.pencil);if(t)return t.pencil.ready;if(null===(e=this.rendererWarmup)||void 0===e?void 0:e.available)return this.rendererWarmup.ready;try{const e=Dr.prewarmRenderer(this.options);return this.rendererWarmup=e,e.ready.catch(()=>{this.rendererWarmup===e&&(this.rendererWarmup=void 0)}),e.ready}catch(n){return Promise.reject(n)}}prepareScene(e){var t,n;if(void 0!==this.options.strictBundleAssets&&e.runtimePolicy&&(e.runtimePolicy.strictBundleAssets=this.options.strictBundleAssets),null===(t=(n=this.options).prepareScene)||void 0===t||t.call(n,e),e.on&&!this.identityTrackedScenes.has(e)){this.identityTrackedScenes.add(e);const t=(t,n,r)=>{const i=[...this.instances].find(([,t])=>t===e);if(!i||!t||n===t)return;const[o]=i;this.remapCommittedIdentity(o,t,n,r)};e.on("objectIdentityChanged",({key:e,oldKey:n})=>t(n,e,!0)),e.on("materialIdentityChanged",({key:e,oldKey:n})=>t(n,e,!1))}e instanceof Si&&void 0!==this.safeAreaInsets&&e.setSafeAreaInsets(this.safeAreaInsets,{refit:!1})}resolveMapSwitchKey(){return Ce(function*(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){var t;return null==e||null===(t=e.runtimeAssets)||void 0===t?void 0:t.mapSwitchKey}).apply(this,arguments)}authorizeMapDefinition(e){var t=this;return Ce(function*(e,n=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){var r,i;if("map"!==e.vis.type)return;const o=e.vis.options,s=new Set([o.adcode,null===(r=o.sceneBindings)||void 0===r||null===(r=r.region)||void 0===r?void 0:r.adcode,null===(i=o.mapData)||void 0===i?void 0:i.adcode].filter(e=>void 0!==e)),a=yield t.resolveMapSwitchKey(n);if(!s.size)throw Error("Map scene has no authorized region");for(const c of s)yield Vr(t,c,a)}).apply(this,arguments)}remapCommittedIdentity(e,t,n,r){var i;if(!t||t===n||!this.document)return!1;if("string"!=typeof n||!n)throw Error("Identity must not be empty");const o=this.document.scenes.findIndex(t=>t.id===e);if(o<0)return!1;const s=r?Pn:Dn,a=this.document.scenes[o],c=r?xi(a.scene.object):void 0;if(r?c.has(t)&&c.has(n):(null===(i=a.scene.materials)||void 0===i?void 0:i.some(e=>e.uuid===t))&&a.scene.materials.some(e=>e.uuid===n))throw Error("Duplicate saved identity");const l=s(a,t,n),d=this.loadedDefinitions.get(e),u=d&&d!==a?s(d,t,n):l;if(l===a&&(!d||u===d))return!1;if(l!==a){const e=[...this.document.scenes];e[o]=l,this.document=De(De({},this.document),{},{scenes:e})}return d&&this.loadedDefinitions.set(e,u),this.documentIdentityRevision++,!0}setSafeAreaInsets(e){var t=this;return Ce(function*(e,n={}){t.safeAreaInsets=void 0===e?void 0:ti(e);const r=t.getCurrentScene();yield Promise.all([.../* @__PURE__ */new Set([...t.instances.values(),...t.pendingInstances])].filter(e=>e instanceof Si).map(e=>e.setSafeAreaInsets(t.safeAreaInsets,De(De({},n),{},{refit:e===r&&!t.isSwitching&&!t.isRegionSwitching&&n.refit}))))}).apply(this,arguments)}getSafeAreaInsets(){return this.safeAreaInsets&&De({},this.safeAreaInsets)}captureCamera(e){var t;if(null==e||null===(t=e.pencil)||void 0===t?void 0:t.controls)return[...e.pencil.cameraPositon.toArray(),...e.pencil.cameraTarget.toArray()]}prepareSceneDisplay(e,t,n,r=!1,i){var o=this;return Ce(function*(){var s,a,c,l;const d=i?AbortSignal.any([o.displayPreparationAbort.signal,i]):o.displayPreparationAbort.signal,u=o.options.beforeSceneDisplay;do{if(qt(d),o.assertGeneration(n),u){let i;const s=new Promise((e,t)=>{i=()=>{const e=/* @__PURE__ */new Error("Scene display preparation was cancelled");e.name="AbortError",t(e)},d.addEventListener("abort",i,{once:!0}),d.aborted&&i()});try{yield Promise.race([Promise.resolve().then(()=>(o.assertGeneration(n),qt(d),u(e,{sceneId:t,signal:d,cameraRefitted:r}))),s])}finally{d.removeEventListener("abort",i)}o.assertGeneration(n)}if(!(e instanceof Si&&(yield e.refitSafeAreaIfNeeded({transition:!1}))))break;r=!0,o.assertGeneration(n)}while(u);qt(d),null===(s=e.pencil.controls)||void 0===s||null===(a=s.update)||void 0===a||a.call(s,0),null===(c=e.pencil.camera)||void 0===c||null===(l=c.updateMatrixWorld)||void 0===l||l.call(c,!0),o.assertGeneration(n)})()}playTransition(e,t,n,r,i,o=!1,s){var a=this;return Ce(function*(){var c,l;let d=!1;const u=()=>{d||(d=!0,null==i||i())},p=!1===t?void 0:t,h=null!==(c=null==p?void 0:p.type)&&void 0!==c?c:n,f=!1!==t&&r?Math.max(0,null!==(l=null==p?void 0:p.duration)&&void 0!==l?l:"mapDrill"===h?550:300):0;try{if(!s&&o&&e instanceof Si&&(0===f||"mapDrill"!==h)&&(yield e.playRegionEnterTransition({duration:0})),0===f)return;"mapDrill"===h&&e instanceof Si?yield e.playRegionEnterTransition({duration:f,sourceCamera:r,preparedCamera:s,onPrepared:u}):yield e.playEnterTransition({duration:f,onPrepared:u})}catch(v){a.emit("sceneTransitionError",{scene:e,error:v})}finally{u()}})()}setDocument(e){Mt(e),this.invalidatePendingOperations(),this.document=this.ownDocument(e),this.manifest=void 0,this.manifestUrl=void 0,this.loadedDefinitions.clear(),this.definitionLoads.clear();const t=new Set(e.scenes.map(e=>e.id));this.instances.forEach((e,n)=>{t.has(n)||n===this.currentSceneId||(e.dispose(),this.instances.delete(n))}),this.history=this.history.filter(e=>t.has(e.sceneId)),this.syncPrefabLibraries()}resolvedMaterialLibrary(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){return function(e){var t;return null!==(t=null==e?void 0:e.materialLibrary)&&void 0!==t?t:[]}(e)}ownDocument(e,t=!1){const n=t?e:structuredClone(e);return n.materialLibrary&&(n.materialLibrary=this.resolvedMaterialLibrary(n)),n}syncPrefabLibraries(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)(),t,n=this.instances.values(),r){const i=[];try{for(const t of n){var o,s,a,c,l;i.push(t);const n=null==e?void 0:e.runtimeAssets;null===(o=t.setRuntimeAssets)||void 0===o||o.call(t,n&&e===this.manifest?De(De({},n),{},{baseUrl:null!==(s=this.manifestUrl)&&void 0!==s?s:`${null!==(a=this.options.assetsPrefix)&&void 0!==a?a:""}/manifest.json`}):n),null===(c=t.setPrefabLibrary)||void 0===c||c.call(t,null!==(l=null==e?void 0:e.prefabLibrary)&&void 0!==l?l:[],this.resolvedMaterialLibrary(e))}null==r||r()}catch(h){if(!t)throw h;const e=[];for(const n of i.reverse())try{var d,u,p;null===(d=n.setRuntimeAssets)||void 0===d||d.call(n,t.runtimeAssets),null===(u=n.setPrefabLibrary)||void 0===u||u.call(n,null!==(p=t.prefabLibrary)&&void 0!==p?p:[],this.resolvedMaterialLibrary(t))}catch(f){e.push(f)}if(e.length)throw new AggregateError([h,...e],"Prefab library synchronization and rollback failed");throw h}}patchDocumentMetadata(e){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene metadata patches require an idle document");const t=new Map(this.document.scenes.map(e=>[e.id,e]));if(void 0!==e.s&&"string"!=typeof e.s||!Array.isArray(e.scenes)||e.scenes.length!==t.size||new Set(e.scenes.map(e=>e.id)).size!==t.size||e.scenes.some(e=>!t.has(e.id)||"string"!=typeof e.name||!e.name.trim()||Object.keys(e).some(e=>!["id","name","interactions"].includes(e))))throw new Error("Scene metadata cannot change scene membership or object data");const n=structuredClone(e);Mt({format:ze,schemaVersion:6,entrySceneId:n.entrySceneId,scenes:n.scenes.map(e=>De(De({},e),{},{vis:{type:t.get(e.id).vis.type,options:{}},scene:{object:{uuid:e.id,type:"Scene"}}}))});const r=n.scenes.map(e=>{const n=De(De({},t.get(e.id)),e);return Object.hasOwn(e,"interactions")||delete n.interactions,n});this.invalidatePendingOperations(),this.document=De(De({},this.document),{},{entrySceneId:n.entrySceneId,scenes:r},Object.hasOwn(n,"s")?{s:n.s}:{}),this.manifest=void 0,this.manifestUrl=void 0;for(const i of n.scenes){const e=this.loadedDefinitions.get(i.id);e&&this.loadedDefinitions.set(i.id,De(De({},e),i))}}patchSceneViewport(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene viewport patches require an idle document");this.document=zi(this.document,e,t),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,this.document.scenes.find(t=>t.id===e))}patchSceneObjects(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene object patches require an idle document");const n=this.document.scenes.findIndex(t=>t.id===e);if(n<0)throw new Error(`Scene ${e} was not found`);if(!Array.isArray(t))throw new Error("Invalid scene object patches");const r=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","pivot","name","visible","layers"]),i=/* @__PURE__ */new Map;for(const l of t){var o;if(!l||"string"!=typeof l.uuid||!l.uuid||i.has(l.uuid)||!l.state||"object"!=typeof l.state||Array.isArray(l.state)||void 0!==l.unset&&!Array.isArray(l.unset))throw new Error("Invalid or duplicate scene object patch");for(const[e,t]of Object.entries(l.state))if(!("matrix"===e?Array.isArray(t)&&16===t.length&&[...t].every(Number.isFinite):"matrixAutoUpdate"===e?"boolean"==typeof t:"pivot"===e?null===t||Array.isArray(t)&&3===t.length&&[...t].every(Number.isFinite):"name"===e?"string"==typeof t:"visible"===e?"boolean"==typeof t:"layers"===e&&Number.isInteger(t)&&t>=-2147483648&&t<=4294967295))throw new Error(`Invalid scene object property ${e}`);if(null===(o=l.unset)||void 0===o?void 0:o.some(e=>!r.has(e)||Object.hasOwn(l.state,e)))throw new Error("Invalid unset scene object properties");i.set(l.uuid,De(De({},l),{},{state:De(De({},l.state),Array.isArray(l.state.pivot)?{pivot:[...l.state.pivot]}:{})}))}if(!i.size)return;const s=this.document.scenes[n],a=Ei(s.scene.object,i),c=[...this.document.scenes];c[n]=De(De({},s),{},{scene:De(De({},s.scene),{},{object:a})}),this.document=De(De({},this.document),{},{scenes:c}),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,c[n])}patchSceneObjectProperties(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw Error("Scene property patches require an idle document");this.document=Ui(this.document,e,t),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,this.document.scenes.find(t=>t.id===e))}patchSceneStructure(e,t){this.commitSceneStructure(this.prepareSceneStructure(e,t))}patchSceneStructureTransaction(e){this.commitSceneStructure(this.prepareSceneStructureTransaction(e))}requireStructureDocument(){if(!this.document||this.isSwitching||this.isRegionSwitching||this.pendingInstances.size||this.definitionLoads.size)throw new Error("Scene structure patches require an idle document");return this.document}prepareSceneStructure(e,t){const n=this.requireStructureDocument(),r=this.generation,i=this.documentIdentityRevision,o=Zi(n,e,t);return this.ownPreparedStructure(n,o,r,i)}prepareSceneStructureTransaction(e){const t=this.requireStructureDocument(),n=this.generation,r=this.documentIdentityRevision,i=eo(t,e);return this.ownPreparedStructure(t,i,n,r)}prepareSceneCollectionTransaction(e){const t=this.requireStructureDocument(),n=this.generation,r=this.documentIdentityRevision,i=function(e,t,n,r){if(!t||!Array.isArray(t.scenes)||"string"!=typeof t.entrySceneId)throw new Error("Invalid scene collection transaction");const i=new Map(e.scenes.map(e=>[e.id,e])),o=t.scenes.map(t=>{var r,o;const s=i.get(t.id);if(!n(null===(r=t.vis)||void 0===r?void 0:r.type))throw new Error(`Unsupported vis type: ${null===(o=t.vis)||void 0===o?void 0:o.type}`);if(!s){const n=De({},t.scene),r=["geometries","textures","images","shapes"];for(const e of r)delete n[e];const i=structuredClone(De(De({},t),{},{scene:n}));for(const o of r)if(Object.hasOwn(t.scene,o)){var a,c;const n=t.scene[o];if(!Array.isArray(n)){i.scene[o]=structuredClone(n);continue}const r=null===(a=e.scenes.find(e=>e.scene[o]===n))||void 0===a?void 0:a.scene[o];if(r){i.scene[o]=r;continue}const s=/* @__PURE__ */new Map;for(const t of e.scenes)for(const e of null!==(c=t.scene[o])&&void 0!==c?c:[]){var l;const t=null!==(l=s.get(e.uuid))&&void 0!==l?l:[];t.push(e),s.set(e.uuid,t)}i.scene[o]=n.map(e=>{var t,n;return null!==(t=null===(n=s.get(e.uuid))||void 0===n?void 0:n.find(t=>Zt(t,e)))&&void 0!==t?t:structuredClone(e)})}return i}if(!Zt(s.scene,t.scene))throw new Error("Existing scene graphs must use scene structure transactions");if(s.vis.type!==t.vis.type)throw new Error("A loaded scene cannot change its vis type");if(Zt(s,t))return s;const{scene:d}=t,u=Xe(t,Jt);return De(De({},structuredClone(u)),{},{scene:s.scene})}),s=(e,t)=>{var n;const r=null!=e?e:[],i=new Map((null!=t?t:[]).map(e=>[e.id,e])),o=r.map(e=>Zt(i.get(e.id),e)?i.get(e.id):structuredClone(e));return o.length===(null!==(n=null==t?void 0:t.length)&&void 0!==n?n:0)&&o.every((e,n)=>e===t[n])?t:o},a=De(De(De({},e),{},{scenes:o,entrySceneId:t.entrySceneId},t.runtimeAssets||e.runtimeAssets?{runtimeAssets:Zt(t.runtimeAssets,e.runtimeAssets)?e.runtimeAssets:structuredClone(t.runtimeAssets)}:{}),{},{materialLibrary:s(t.materialLibrary,e.materialLibrary),prefabLibrary:s(t.prefabLibrary,e.prefabLibrary)});return r(a),a}(t,e,e=>!!ho[e],Mt);return this.ownPreparedStructure(t,i,n,r)}prepareSceneInitialization(e,t){var n,r;const i=this.requireStructureDocument(),o=i.scenes.find(t=>t.id===e),s=this.instances.get(e);if(!o||!s||"base"!==o.vis.type||t.id!==e||"base"!==t.vis.type||o.scene.object.uuid!==(null===(n=t.scene.object)||void 0===n?void 0:n.uuid)||s.lead.scene.uuid!==o.scene.object.uuid||(null!==(r=o.scene.object.children)&&void 0!==r?r:[]).length||["geometries","materials","textures","images","skeletons","animations"].some(e=>{var t;return(null!==(t=o.scene[e])&&void 0!==t?t:[]).length}))throw new Error("Only a newly hydrated empty Base scene can be initialized");const a=De(De({},i),{},{scenes:i.scenes.map(n=>n.id===e?structuredClone(t):n)});return Mt(a),this.ownPreparedStructure(i,a,this.generation,this.documentIdentityRevision)}activateSceneForTransaction(e,t,n){var r=this;return Ce(function*(){null==n||n.throwIfAborted();const i=r.currentSceneId,o=r.getCurrentScene(),s=r.instances.get(e),a=r.captureCamera(o);r.transactionCacheDepth++;try{const i=yield r.switchScene(e,{recordHistory:!1,transition:!1},t);if(!i)throw new Error("Scene navigation is busy");return null==n||n.throwIfAborted(),i}catch(l){var c;r.currentSceneId=i,null==o||o.setSceneActive(),a&&(null===(c=r.pencil)||void 0===c||null===(c=c.controls)||void 0===c?void 0:c.setLookAt)&&(yield r.pencil.controls.setLookAt(...a,!1));const t=r.instances.get(e);throw!s&&t&&t!==o&&(t.dispose(),r.instances.delete(e)),l}finally{r.transactionCacheDepth--}})()}retireSceneForTransaction(e,t){var n;if(this.instances.get(e)===t){if(this.currentSceneId===e||(null===(n=this.document)||void 0===n?void 0:n.scenes.some(t=>t.id===e)))throw new Error("Only a removed inactive scene can be retired");try{t.dispose()}finally{this.instances.delete(e),this.loadedDefinitions.delete(e),this.history=this.history.filter(t=>t.sceneId!==e)}}}ownPreparedStructure(e,t,n,r){if(e!==this.document||n!==this.generation||r!==this.documentIdentityRevision)throw new Error("Scene structure preparation is stale because the document changed");const i=Object.freeze({});return this.preparedStructures.set(i,{source:e,candidate:t,generation:n,identityRevision:r}),i}requirePreparedStructure(e){this.requireStructureDocument();const t=this.preparedStructures.get(e);if(!t)throw new Error("Scene structure preparation does not belong to this manager or was already committed");if(t.source!==this.document||t.generation!==this.generation||t.identityRevision!==this.documentIdentityRevision)throw new Error("Scene structure preparation is stale because the document changed");return t}preparedSceneStructureMatches(e,t){var n,r,i,o;const{candidate:s}=this.requirePreparedStructure(e);return!!t&&Zt(s.scenes,t.scenes)&&Zt(null!==(n=s.materialLibrary)&&void 0!==n?n:[],null!==(r=t.materialLibrary)&&void 0!==r?r:[])&&Zt(null!==(i=s.prefabLibrary)&&void 0!==i?i:[],null!==(o=t.prefabLibrary)&&void 0!==o?o:[])&&Zt(s.runtimeAssets,t.runtimeAssets)}commitSceneStructure(e){const{source:t,candidate:n}=this.requirePreparedStructure(e);n.prefabLibrary===t.prefabLibrary&&n.materialLibrary===t.materialLibrary&&n.runtimeAssets===t.runtimeAssets||this.syncPrefabLibraries(n,t),this.preparedStructures.delete(e),this.document=n;for(const r of t.scenes)n.scenes.some(e=>e.id===r.id)||(this.instances.has(r.id)?this.loadedDefinitions.set(r.id,r):this.loadedDefinitions.delete(r.id));for(const r of n.scenes)this.loadedDefinitions.has(r.id)&&t.scenes.find(e=>e.id===r.id)!==r&&this.loadedDefinitions.set(r.id,r)}patchMaterialDefinitions(e,t,n){if(!this.document||this.isSwitching||this.isRegionSwitching||this.pendingInstances.size||this.definitionLoads.size)throw new Error("Material definition patches require an idle document");const r=function(e,t,n,r,i,o,s){var a,c;if(!Array.isArray(n)||!Array.isArray(r))throw new Error("Invalid material definition patch");const l=structuredClone(n),d=new Set(l.map(e=>null==e?void 0:e.id)),u=(null!==(a=e.materialLibrary)&&void 0!==a?a:[]).filter(e=>d.has(e.id)),p=new Set(r.map(e=>null==e?void 0:e.id));if(d.size!==l.length||u.length!==l.length||p.size!==r.length||r.some(t=>!e.scenes.some(e=>e.id===(null==t?void 0:t.id))))throw new Error("Material definition patches require existing unique assets and scenes");if(e.scenes.filter(e=>{var t;return(null!==(t=e.scene.materials)&&void 0!==t?t:[]).some(e=>{var t;return d.has(null===(t=e.userData)||void 0===t?void 0:t[s])})}).some(e=>!p.has(e.id)))throw new Error("Material definition patch omitted an affected scene");const h=o(e.scenes.filter(e=>p.has(e.id)),u,l,i),f=new Map(h.map(e=>[e.id,e])),v=o([...t.values()].filter(e=>p.has(e.id)),u,l,i),m=new Map(l.map(e=>[e.id,e]));return{document:De(De({},e),{},{materialLibrary:(null!==(c=e.materialLibrary)&&void 0!==c?c:[]).map(e=>{var t;return null!==(t=m.get(e.id))&&void 0!==t?t:e}),scenes:e.scenes.map(e=>{var t;return null!==(t=f.get(e.id))&&void 0!==t?t:e})}),loadedDefinitions:v}}(this.document,this.loadedDefinitions,e,t,n,Et,ct);this.document=r.document;for(const i of r.loadedDefinitions)this.loadedDefinitions.set(i.id,i);this.syncPrefabLibraries()}load(e,t){var n=this;return Ce(function*(e,t,r={}){var i;const o=n.invalidatePendingOperations(),s=yield n.loadDocument(e);n.assertGeneration(o),Ge(s)?At(s):Mt(s);const a=s.scenes.find(e=>{var t;return e.id===(null!==(t=r.sceneId)&&void 0!==t?t:s.entrySceneId)});a&&(yield n.authorizeMapDefinition(a,s)),n.assertGeneration(o),n.disposeInstances(),n.loadedDefinitions.clear(),n.definitionLoads.clear(),Ge(s)?(At(s),n.document=void 0,n.manifest=structuredClone(s),n.manifestUrl="string"==typeof e?Le(Fe(e),n.options.assetsPrefix):void 0,n.resolveBundleImages(n.manifest)):(Mt(s),n.document=n.ownDocument(s,r.consumeInput),n.manifest=void 0,n.manifestUrl=void 0),n.runtimeHooks=t?De({},t):void 0,n.history=[],n.currentSceneId="";const c=null!==(i=r.sceneId)&&void 0!==i?i:s.entrySceneId,l=yield n.switchScene(c,{recordHistory:!1},t);if(!l)throw new Error(`Unable to load entry scene ${c}`);return l}).apply(this,arguments)}createEmptyScene(e,t){var n=this;return Ce(function*(e,t,r=[]){if(yield n.authorizeMapDefinition(e,{}),n.isSwitching||n.isRegionSwitching)throw new Error("SceneManager is already switching scenes");const i=ho[e.vis.type];if(!i)throw new Error(`Unsupported vis type: ${e.vis.type}`);const o=n.invalidatePendingOperations();let s,a;n.disposeInstances(),n.document=void 0,n.manifest=void 0,n.manifestUrl=void 0,n.loadedDefinitions.clear(),n.runtimeHooks=void 0,n.history=[],n.currentSceneId="",n.isSwitching=!0;let c=!1;try{n.emit("beforeSceneChange",{from:null,to:e.id});const l=n.options,{bindInteractions:d,prepareScene:u,beforeSceneDisplay:p,cacheScenes:h,maxCachedScenes:f,safeAreaInsets:v,debugInteractions:m,loadScene:g}=l,y=Xe(l,io),b=structuredClone(e.vis.options||{});for(const e of["pencil","container","css2DContainer","controlsContainer","assetsPrefix"])delete b[e];s=new i(De(De(De({},y),b),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup})),s.setOptions(s.options),a=s.suspendRendering(),n.pendingInstances.add(s),n.prepareScene(s),s.cameraState=structuredClone(e.cs||{}),s.cameraStateActive=e.csa||"",yield s.initializeRuntime(),n.assertGeneration(o),yield null==t?void 0:t(s),n.assertGeneration(o),yield s.show(),n.assertGeneration(o),yield n.prepareSceneDisplay(s,e.id,o);const w=De(De({},structuredClone(e)),{},{scene:s.exportScene()}),j=St(De({format:ze,schemaVersion:6,entrySceneId:e.id,scenes:[w]},r.length?{materialLibrary:Ct(w,r)}:{}));return Mt(j),n.enablePickDebug(s),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e.id,s),n.document=j,n.instances.set(e.id,s),n.pendingInstances.delete(s),n.currentSceneId=e.id,n.pencil||(n.pencil=s.pencil,s.releasePencilOwnership()),c=!0,n.notifySceneObservers("afterSceneChange",{from:null,to:e.id,scene:s}),s}catch(l){throw!c&&s&&(n.discardSceneCandidates([s],{sceneId:e.id}),n.instances.get(e.id)===s&&n.instances.delete(e.id)),n.notifySceneObservers("sceneChangeError",{from:null,to:e.id,error:l}),l}finally{s&&n.pendingInstances.delete(s),n.finishNavigation(o,a)}}).apply(this,arguments)}loadMapRegion(e,t,n,r){var i=this;return Ce(function*(){return i.loadMapRegionRequest(e,t,n,r)})()}requestMapRegion(e,t,n,r={}){var i,o=this;return this.mapRequests.run((i=Ce(function*(i){yield o.waitForNavigation(i);const s=o.requestedMapDocument;if(!s||s.source!==e||s.generation!==o.generation){let r;const s=yield o.loadMapRegionRequest(e,t,(e,t)=>(r=e,n(e,t)),void 0,i);return qt(i),o.requestedMapDocument={source:e,metadata:r,generation:o.generation},s}const a=yield Vt(Promise.resolve(n(s.metadata,t)),i);qt(i);const c="string"==typeof a?a:null==a?void 0:a.id;if(!c)throw new Error(`Unable to resolve a map template for region ${t}`);for(;;){yield o.waitForNavigation(i);try{const e=yield o.switchMapRegion(c,t,De(De({},r),{},{signal:i}));if(e)return e}catch(l){if(!(l instanceof po))throw l}}}),function(e){return i.apply(this,arguments)}),r.signal)}loadMapRegionRequest(e,t,n,r,i){var o=this;return Ce(function*(){qt(i);const s=o.invalidatePendingOperations(!!i),a=yield Vt(o.loadDocument(e),i);o.assertGeneration(s),qt(i),Ge(a)?At(a):Mt(a);const c="number"==typeof t,l=c?t:n;let d;if(c){if("function"!=typeof n)throw new Error("A map region scene resolver is required");const e=Ge(a)?{format:ze,schemaVersion:6,entrySceneId:a.entrySceneId,scenes:a.scenes.map(e=>{let{source:t,bytes:n}=e,r=Xe(e,oo);return De(De({},structuredClone(r)),{},{scene:{}})}),materialLibrary:structuredClone(o.resolvedMaterialLibrary(a)),c:a.c,d:a.d,h:a.h,s:a.s,runtimeAssets:structuredClone(a.runtimeAssets)}:a,t=yield Vt(Promise.resolve(n(e,l)),i);if(o.assertGeneration(s),qt(i),d="string"==typeof t?t:(null==t?void 0:t.id)||"",!d)throw new Error(`Unable to resolve a map template for region ${l}`)}else d=t;const u=Ge(a)?a.scenes.find(e=>e.id===d):yt(a,d);if(!u)throw new Error(`Scene ${d} was not found`);if("map"!==u.vis.type)throw new Error(`Scene ${d} is not a map template`);qr(0,a.runtimeAssets,l,d),o.disposeInstances(),o.loadedDefinitions.clear(),o.definitionLoads.clear(),o.document=Ge(a)?void 0:o.ownDocument(a),o.manifest=Ge(a)?structuredClone(a):void 0,o.manifestUrl=Ge(a)&&"string"==typeof e?Le(Fe(e),o.options.assetsPrefix):void 0,o.manifest&&o.resolveBundleImages(o.manifest),o.runtimeHooks=r?De({},r):void 0,o.history=[],o.currentSceneId="";const p=yield o.switchMapRegion(d,l,{recordHistory:!1,transition:!1,signal:i},r);if(!p)throw new Error(`Unable to load map region ${l} from scene ${d}`);return p})()}loadDocument(e){var t=this;return Ce(function*(){if("string"!=typeof e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?We(e):e;const n=Fe(e),r=/\.zip(?:[?#]|$)/i.test(n)?fetch(Le(n,t.options.assetsPrefix)).then((i=Ce(function*(e){if(!e.ok)throw Error(`ZIP 下载失败:${e.status}`);return We(yield e.arrayBuffer(),n)}),function(e){return i.apply(this,arguments)})):$e(n,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!1}}).then(e=>(At(e),e));var i;return t.pencil||t.prewarmRuntime().catch(()=>{}),yield r})()}getSceneMetadata(e){var t;const n=this.document?yt(this.document,e):null===(t=this.manifest)||void 0===t?void 0:t.scenes.find(t=>t.id===e);if(!n)throw new Error(`Scene ${e} was not found`);return n}resolveManifestSource(e){return function(e,t){return!t||/^(?:[a-z]+:)?\/\//i.test(e)||e.startsWith("/")?e:/^[a-z]+:\/\//i.test(t)?new URL(e,t).toString():"undefined"!=typeof window?new URL(e,new URL(t,window.location.href)).toString():new URL(e,`https://bundle.invalid${t.startsWith("/")?"":"/"}${t}`).pathname}(e,this.manifestUrl)}resolveBundleImages(e){var t,n;e===this.manifest&&(null===(t=this.manifest)||void 0===t?void 0:t.materialLibrary)&&(this.manifest.materialLibrary=this.resolvedMaterialLibrary(this.manifest)),Bt(e,null===(n=this.manifest)||void 0===n?void 0:n.assets,e=>this.manifestUrl?this.resolveManifestSource(e):Le(e,this.options.assetsPrefix))}loadSceneDefinition(e){var t=this;return Ce(function*(){return function(e,t){if(t.document)return t.getSceneDocument(t.document,e);const n=t.loadedDefinitions.get(e);if(n)return n;const r=t.definitionLoads.get(e);if(r)return r;const i=t.generation,o=t.getSceneMetadata(e),s=(t.options.loadScene?t.options.loadScene(structuredClone(o)):t.loadGeojsonAsset(t.resolveManifestSource(o.source),{assetsPrefix:t.manifestUrl?"":t.options.assetsPrefix,fetchOptions:{cache:!0}})).then(n=>{var r;if(t.assertGeneration(i),!(null==n?void 0:n.scene)||n.id!==o.id||(null===(r=n.vis)||void 0===r?void 0:r.type)!==o.vis.type)throw new Error(`Invalid scene file for ${e}`);t.manifest,tt(n);const s=structuredClone(n);return t.resolveBundleImages(s),t.loadedDefinitions.set(e,s),s}).finally(()=>{t.definitionLoads.get(e)===s&&t.definitionLoads.delete(e)});return t.definitionLoads.set(e,s),s}(e,t.definitionLoadingContext())})()}createRuntimeSceneDocument(e){return function(e,t){var n,r;if(t.document)return t.selectSceneDocument(Yt(t.document,e.id),e.id);const i=Yt(De(De({},t.manifest),{},{format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:6,entrySceneId:e.id,materialLibrary:t.resolvedMaterialLibrary(),scenes:[e]}),e.id),{c:o,d:s,h:a,s:c,prefabLibrary:l,materialLibrary:d=[],runtimeAssets:u}=i,p=t.getSceneDocument(i,e.id,{resolveResources:!0});return De(De(De(De(De({format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:6,entrySceneId:e.id},structuredClone({c:o,d:s,h:a,s:c})),u?{runtimeAssets:De(De({},u),{},{baseUrl:null!==(n=t.manifestUrl)&&void 0!==n?n:`${null!==(r=t.options.assetsPrefix)&&void 0!==r?r:""}/manifest.json`})}:{}),d.length?{materialLibrary:t.sceneMaterialLibrary(p,d,l)}:{}),l?{prefabLibrary:l.map(e=>structuredClone(e))}:{}),{},{scenes:[De(De({},p),{},{interactions:void 0})]})}(e,this.definitionLoadingContext())}definitionLoadingContext(){const e=this;return{get document(){return e.document},get manifest(){return e.manifest},get manifestUrl(){return e.manifestUrl},get options(){return e.options},get generation(){return e.generation},get loadedDefinitions(){return e.loadedDefinitions},get definitionLoads(){return e.definitionLoads},getSceneMetadata:e=>this.getSceneMetadata(e),resolveManifestSource:e=>this.resolveManifestSource(e),resolvedMaterialLibrary:e=>this.resolvedMaterialLibrary(e),resolveBundleImages:e=>this.resolveBundleImages(e),assertGeneration:e=>this.assertGeneration(e),getSceneDocument:yt,selectSceneDocument:ut,loadGeojsonAsset:$e,sceneMaterialLibrary:Ct,SCENE_DOCUMENT_FORMAT:ze}}switchScene(e){var t=this;return Ce(function*(e,n={},r){if(!t.document&&!t.manifest)throw new Error("SceneManager.load() must be called before switchScene()");if(t.isSwitching||t.isRegionSwitching)return null;if(e===t.currentSceneId)return t.getCurrentScene();const i=t.generation,o=t.instances.get(e),s=yield o?void 0:t.loadSceneDefinition(e);if(t.assertGeneration(i),yield t.authorizeMapDefinition(null!=s?s:t.getSceneMetadata(e)),o instanceof Si&&(yield t.authorizeMapDefinition({vis:{type:"map",options:{adcode:o.adcode}}})),t.assertGeneration(i),t.isSwitching||t.isRegionSwitching)throw new Error("Scene navigation is busy");const a=t.currentSceneId,c=t.getCurrentScene(),l=t.captureCamera(c);let d,u,p=!1;t.isSwitching=!0;try{var h;u=null===(h=t.pencil)||void 0===h?void 0:h.suspendRendering(),t.emit("beforeSceneChange",{from:a||null,to:e}),t.assertGeneration(i);let f=o;if(f)f.setSceneActive();else{if(!s)throw new Error(`Scene ${e} was not found`);const n=ho[s.vis.type];if(!n)throw new Error(`Unsupported vis type: ${s.vis.type}`);const o=t.options,{bindInteractions:a,prepareScene:c,beforeSceneDisplay:l,cacheScenes:p,maxCachedScenes:h,safeAreaInsets:v,debugInteractions:m,loadScene:g}=o;f=new n(De(De({},Xe(o,so)),t.pencil?{pencil:t.pencil}:{rendererWarmup:t.rendererWarmup})),d=f;const y=u,b=f.suspendRendering();u=()=>{try{b()}finally{null==y||y()}},t.pendingInstances.add(f),t.prepareScene(f),yield f.fromJSON(t.createRuntimeSceneDocument(s),r?De({},r):t.runtimeHooks,De({consumeInput:!0},t.transactionCacheDepth?{strictResourceReuse:!0,reuseResources:ro(s.scene,[...t.instances].flatMap(([e,n])=>{var r,i;const o=null!==(r=null===(i=t.document)||void 0===i?void 0:i.scenes.find(t=>t.id===e))&&void 0!==r?r:t.loadedDefinitions.get(e);return o?[{vis:n,graph:o.scene}]:[]}))}:{})),t.assertGeneration(i),t.enablePickDebug(f),!1!==t.options.bindInteractions&&t.bindSceneInteractions(e,f)}let v=!1;f instanceof Si&&(v=yield f.refitSafeAreaIfNeeded({transition:!1}),t.assertGeneration(i)),yield t.prepareSceneDisplay(f,e,i,v);const m=f instanceof Si?t.captureCamera(f):void 0;f.setSceneActive(),d&&(t.pendingInstances.delete(f),t.pencil||(t.pencil=f.pencil,f.releasePencilOwnership())),a&&!1!==n.recordHistory&&t.history.push({kind:"scene",sceneId:a}),t.currentSceneId=e,t.instances.delete(e),t.instances.set(e,f),p=!0;const g=c instanceof Si&&f instanceof Si?"mapDrill":"fade";return yield t.playTransition(f,n.transition,g,l,u,!1,m),t.assertGeneration(i),t.reportSceneRetirementErrors(t.disposeInactiveScenes(e)),t.notifySceneObservers("afterSceneChange",{from:a||null,to:e,scene:f}),f}catch(f){throw p||(d&&t.discardSceneCandidates([d],{sceneId:e}),d&&t.instances.get(e)===d&&t.instances.delete(e),i===t.generation&&(null==c||c.setSceneActive())),t.notifySceneObservers("sceneChangeError",{from:a||null,to:e,error:f}),f}finally{d&&t.pendingInstances.delete(d),p&&i===t.generation&&t.reportSceneRetirementErrors(t.disposeInactiveScenes(t.currentSceneId)),t.finishNavigation(i,u)}}).apply(this,arguments)}preloadScene(e,t){var n=this;return Ce(function*(){if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before preloadScene()");const r=n.instances.get(e);if(r)return r;if(n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");const i=n.generation,o=yield n.loadSceneDefinition(e);if(n.assertGeneration(i),n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");const s=ho[o.vis.type];if(!s)throw new Error(`Unsupported vis type: ${o.vis.type}`);const a=n.getCurrentScene(),c=n.captureCamera(a);let l,d;n.isSwitching=!0;try{var u,p;l=null===(u=n.pencil)||void 0===u?void 0:u.suspendRendering();const r=n.options,{bindInteractions:h,prepareScene:f,beforeSceneDisplay:v,cacheScenes:m,maxCachedScenes:g,safeAreaInsets:y,debugInteractions:b,loadScene:w}=r;d=new s(De(De({},Xe(r,ao)),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup}));const j=l,S=d.suspendRendering();return l=()=>{try{S()}finally{null==j||j()}},n.pendingInstances.add(d),n.prepareScene(d),yield d.fromJSON(n.createRuntimeSceneDocument(o),t?De({},t):n.runtimeHooks),n.assertGeneration(i),n.enablePickDebug(d),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e,d),d.hide(),null==a||a.setSceneActive(),c&&(null===(p=n.pencil)||void 0===p||null===(p=p.controls)||void 0===p?void 0:p.setLookAt)&&(yield n.pencil.controls.setLookAt(...c,!1)),n.assertGeneration(i),n.instances.set(e,d),n.pendingInstances.delete(d),n.pencil||(n.pencil=d.pencil,d.releasePencilOwnership()),n.reportSceneRetirementErrors(n.disposeInactiveScenes(n.currentSceneId,e)),d}catch(f){var h;if(d&&n.discardSceneCandidates([d],{sceneId:e}),d&&n.instances.get(e)===d&&n.instances.delete(e),i!==n.generation)throw f;throw null==a||a.setSceneActive(),c&&(null===(h=n.pencil)||void 0===h||null===(h=h.controls)||void 0===h?void 0:h.setLookAt)&&(yield n.pencil.controls.setLookAt(...c,!1)),f}finally{d&&n.pendingInstances.delete(d),n.finishNavigation(i,l)}})()}editScene(e,t,n){var r=this;return Ce(function*(){if(r.isSwitching||r.isRegionSwitching)throw new Error("Scene navigation is busy");if(!r.document||e!==r.currentSceneId)throw new Error("Only the active scene can be edited");const i=r.generation,o=structuredClone(yt(r.document,e)),s=r.getCurrentScene(),a=ho[o.vis.type];if(!a)throw new Error(`Unsupported vis type: ${o.vis.type}`);let c,l;r.isSwitching=!0;let d=!1;try{var u,p;c=null===(u=r.pencil)||void 0===u?void 0:u.suspendRendering();const h=r.options,{bindInteractions:f,prepareScene:v,beforeSceneDisplay:m,cacheScenes:g,maxCachedScenes:y,safeAreaInsets:b,debugInteractions:w,loadScene:j}=h;l=new a(De(De({},Xe(h,co)),{},{pencil:r.pencil})),r.pendingInstances.add(l),r.prepareScene(l),yield l.fromJSON(ut(r.document,e),n?De({},n):r.runtimeHooks),r.assertGeneration(i);const S=yield t(l,o);if(r.assertGeneration(i),S.id!==e||S.vis.type!==o.vis.type)throw new Error("Scene edit cannot change identity or type");const A=structuredClone(r.document);A.scenes[A.scenes.findIndex(t=>t.id===e)]=S,Mt(A),S.vis.options.createIfNeeded=!0,l.setOptions(S.vis.options),yield l.restoreScene(Ot(S,{omitPrefabPreviews:!(null===(p=l.runtimePolicy)||void 0===p?void 0:p.includePrefabPreviews)})),r.assertGeneration(i),S.scene=l.exportScene(),!1!==r.options.bindInteractions&&r.bindSceneInteractions(e,l);const O=St(A);return l.setSceneActive(),r.document=O,r.instances.set(e,l),r.pendingInstances.delete(l),d=!0,r.reportSceneRetirementErrors(r.retireScenes([s])),l}catch(h){throw d||(l&&r.discardSceneCandidates([l],{sceneId:e}),i===r.generation&&s.setSceneActive()),h}finally{l&&r.pendingInstances.delete(l),r.finishNavigation(i,c)}})()}back(e){var t=this;return Ce(function*(){if(t.isSwitching||t.isRegionSwitching)return null;const n=t.history.at(-1);if(!n)return null;let r;if("region"===n.kind)r=yield t.switchMapRegion(n.sceneId,n.adcode,{recordHistory:!1,transition:{type:"mapDrill"}},e);else{const i=t.currentSceneId?t.getSceneMetadata(t.currentSceneId):void 0,o=t.getSceneMetadata(n.sceneId),s="map"===(null==i?void 0:i.vis.type)&&"map"===(null==o?void 0:o.vis.type)?{type:"mapDrill"}:void 0;r=yield t.switchScene(n.sceneId,{recordHistory:!1,transition:s},e)}return r&&t.history.pop(),r})()}switchMapRegion(e,t){var n=this;return Ce(function*(e,t,r={},i){var o,s,a,c;if(qt(r.signal),n.isRegionSwitching||n.isSwitching)return null;if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before switchMapRegion()");qr(0,null===(o=null!==(s=n.document)&&void 0!==s?s:n.manifest)||void 0===o?void 0:o.runtimeAssets,t,e);const l=null===(a=null!==(c=n.document)&&void 0!==c?c:n.manifest)||void 0===a||null===(a=a.runtimeAssets)||void 0===a||null===(a=a.regions)||void 0===a?void 0:a[e];if(!1!==n.options.strictBundleAssets&&l&&!l.includes(t))throw Error(`区域 ${t} 不在场景 ${e} 的导出范围内,请扩大交互范围后重新导出。`);const d=n.generation,u=yield Vt(n.loadSceneDefinition(e),r.signal);if(n.assertGeneration(d),qt(r.signal),n.isSwitching||n.isRegionSwitching)throw new po("Scene navigation is busy");if("map"!==u.vis.type)throw new Error(`Scene ${e} is not a map template`);if(!Number.isInteger(t)||t<0)throw new Error(`Invalid map region: ${t}`);const p=n.currentSceneId,h=n.getCurrentScene(),f=n.captureCamera(h);if(e===p&&h instanceof Si&&h.adcode===t)return h;let v,m,g;n.isRegionSwitching=!0;let y="authorize";try{var b,w,j;const o=null!==(b=null===(w=u.vis.options.sceneBindings)||void 0===w||null===(w=w.region)||void 0===w?void 0:w.adcode)&&void 0!==b?b:u.vis.options.adcode,s=yield n.resolveMapSwitchKey();yield Vr(n,t,s),n.assertGeneration(d),qt(r.signal),m=null===(j=n.pencil)||void 0===j?void 0:j.suspendRendering(),n.emit("beforeSceneChange",{from:p||null,to:e}),y="create-candidate";const a=n.options,{bindInteractions:c,prepareScene:l,beforeSceneDisplay:h,cacheScenes:f,maxCachedScenes:S,safeAreaInsets:A,debugInteractions:O,loadScene:x}=a;v=new Si(De(De({},Xe(a,lo)),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup}));const I=m,M=v.suspendRendering();if(m=()=>{try{M()}finally{null==I||I()}},n.pendingInstances.add(v),n.prepareScene(v),y="restore-template",yield function(e,t,n,r){return Xr.apply(this,arguments)}(v,t,s,()=>v.fromJSON(n.createRuntimeSceneDocument(u),i?De({},i):n.runtimeHooks,{consumeInput:!0})),n.debugInteraction("map template restored",{fromSceneId:p||null,toSceneId:e,templateAdcode:o,targetAdcode:t}),n.assertGeneration(d),qt(r.signal),n.enablePickDebug(v),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e,v),y="rebuild-region",n.debugInteraction("map region rebuild started",{sceneId:e,targetAdcode:t}),yield v.rebuildRegion(t),n.assertGeneration(d),qt(r.signal),y="validate-region",v.adcode!==t)throw new Error(`Unable to build map region ${t}`);n.debugInteraction("map region rebuild completed",{sceneId:e,targetAdcode:t,currentAdcode:v.adcode}),y="prepare-camera",yield v.playRegionEnterTransition({duration:0}),n.assertGeneration(d),qt(r.signal),y="prepare-display",yield n.prepareSceneDisplay(v,e,d,!0,r.signal),qt(r.signal),g=n.captureCamera(v)}catch(I){var S,A;if(n.debugInteraction("map region navigation failed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t,stage:y,error:I}),n.options.debugInteractions)console.error("[vis-core:map-region] navigation failed",{stage:y,fromSceneId:p||null,toSceneId:e,targetAdcode:t,templateAdcode:null!==(S=null===(A=u.vis.options.sceneBindings)||void 0===A||null===(A=A.region)||void 0===A?void 0:A.adcode)&&void 0!==S?S:u.vis.options.adcode,currentAdcode:null==v?void 0:v.adcode,message:I instanceof Error?I.message:String(I),stack:I instanceof Error?I.stack:void 0,cause:I instanceof Error?I.cause:void 0,error:I});try{null==v||v.dispose()}catch(M){console.error("[vis-core:map-region] candidate cleanup failed",{stage:y,targetAdcode:t,disposeError:M})}throw v&&n.pendingInstances.delete(v),d===n.generation&&(null==h||h.setSceneActive()),n.finishNavigation(d,m,!0),n.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:I}),I}const O=v;let x=!1;try{const i=n.instances.get(e);if(O.setSceneActive(),p&&!1!==r.recordHistory){const t=h instanceof Si?h.adcode:void 0;p===e&&void 0!==t?n.history.push({kind:"region",sceneId:p,adcode:t}):n.history.push({kind:"scene",sceneId:p})}n.instances.set(e,O),n.pendingInstances.delete(O),n.currentSceneId=e,n.pencil||(n.pencil=O.pencil,O.releasePencilOwnership()),x=!0;const o=n.retireScenes(i?[i]:[]);return n.debugInteraction("map region committed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t}),yield n.playTransition(O,r.transition,"mapDrill",f,m,!0,g),n.assertGeneration(d),n.reportSceneRetirementErrors([...o,...n.disposeInactiveScenes(e)]),n.notifySceneObservers("afterSceneChange",{from:p||null,to:e,scene:O}),n.notifySceneObservers("afterMapRegionChange",{from:p||null,to:e,adcode:t,scene:O}),n.debugInteraction("map region transition completed",{sceneId:e,targetAdcode:t}),O}catch(I){throw x||(n.discardSceneCandidates([O],{sceneId:e}),n.pendingInstances.delete(O),d===n.generation&&(null==h||h.setSceneActive())),n.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:I}),I}finally{n.finishNavigation(d,m,!0)}}).apply(this,arguments)}backMapRegion(e){var t=this;return Ce(function*(){return t.back(e)})()}getCurrentSceneId(){return this.currentSceneId}getCurrentScene(e){return this.getCurrentSceneByType(e)}getCurrentSceneByType(e){return this.currentSceneId&&this.getSceneByType(this.currentSceneId,e)||null}getScene(e,t){return this.getSceneByType(e,t)}getSceneByName(e,t){var n,r,i;const o=null===(n=(null===(r=this.document)||void 0===r?void 0:r.scenes)||(null===(i=this.manifest)||void 0===i?void 0:i.scenes))||void 0===n?void 0:n.find(n=>n.name===e&&(!t||n.vis.type===t));return o?this.getSceneByType(o.id,t):void 0}getSceneByType(e,t){const n=this.instances.get(e);if(!n||!t)return n;const r=this.document||this.manifest?this.getSceneMetadata(e).vis.type:void 0;if(r!==t)throw new Error(`Scene ${e} is ${r||"unknown"}, expected ${t}`);return n}getMaterialLibrary(){return structuredClone(this.resolvedMaterialLibrary())}getPrefabLibrary(){var e,t,n;return jr(null!==(e=null===(t=this.document)||void 0===t?void 0:t.prefabLibrary)&&void 0!==e?e:null===(n=this.manifest)||void 0===n?void 0:n.prefabLibrary)}instantiatePrefab(e){var t=this;return Ce(function*(e,n={}){var r,i;const o=null!==(r=t.document)&&void 0!==r?r:t.manifest,s=Sr(null!==(i=null==o?void 0:o.prefabLibrary)&&void 0!==i?i:[],e),a=n.sceneId?t.instances.get(n.sceneId):n.target?[...t.instances.values()].find(e=>e.lead===n.target.lead):t.getCurrentScene();if(!a)throw new Error(n.sceneId?`Scene "${n.sceneId}" must be loaded before instantiating a prefab`:"A loaded destination scene is required to instantiate a prefab");const c=t.generation,l=new AbortController;let d;t.prefabOperations.add(l);try{return d=yield xr(a,s,t.resolvedMaterialLibrary(o),n,l.signal),t.assertGeneration(c),d}catch(u){throw null==d||d.erase(),u}finally{t.prefabOperations.delete(l)}}).apply(this,arguments)}updateMaterial(e,t){var n=this;return Ce(function*(){if(n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before updateMaterial()");const r=function(e,t,n,r){return null!=e?e:De(De({},t),{},{format:r,schemaVersion:6,materialLibrary:n(),scenes:t.scenes.map(e=>De(De({},e),{},{scene:{}}))})}(n.document,n.manifest,()=>n.resolvedMaterialLibrary(),ze),i=Ln(r,e,t),o=n.generation,s=n.getCurrentScene(),a=n.captureCamera(s);let c;const l=/* @__PURE__ */new Map;let d=!1;n.isSwitching=!0;try{var u,p,h;c=null===(u=n.pencil)||void 0===u?void 0:u.suspendRendering();for(const[r,s]of n.instances){var f;s.setSceneActive();const t=s.exportScene();if(!(null===(f=t.materials)||void 0===f?void 0:f.some(t=>{var n;return(null===(n=t.userData)||void 0===n?void 0:n._materialAssetId)===e})))continue;const a=Xt(n.getSceneMetadata(r),t,s),c=ft(a,i.materialLibrary),d=ho[a.vis.type],u=n.options,{bindInteractions:p,prepareScene:h,beforeSceneDisplay:v,cacheScenes:m,maxCachedScenes:g,safeAreaInsets:y,debugInteractions:b,loadScene:w}=u,j=new d(De(De({},Xe(u,uo)),{},{pencil:n.pencil}));l.set(r,j),n.pendingInstances.add(j),n.prepareScene(j),yield j.fromJSON(De(De({},i),{},{entrySceneId:r,materialLibrary:Ct(c,i.materialLibrary),scenes:[De(De({},c),{},{interactions:void 0})]}),n.runtimeHooks),n.assertGeneration(o),j instanceof Si&&void 0!==j.adcode&&(yield j.applyRegionTextureRules(j.adcode),n.assertGeneration(o)),n.enablePickDebug(j),!1!==n.options.bindInteractions&&n.bindSceneInteractions(r,j)}const t=null!==(p=l.get(n.currentSceneId))&&void 0!==p?p:s,v=n.document?new Map([...n.loadedDefinitions].map(([e,t])=>[e,ft(t,i.materialLibrary)])):n.loadedDefinitions,m=new Map(n.instances),g=[];for(const[e,n]of l){const t=m.get(e);t&&g.push(t),m.set(e,n)}null==t||t.setSceneActive(),a&&(null===(h=n.pencil)||void 0===h||null===(h=h.controls)||void 0===h?void 0:h.setLookAt)&&(yield n.pencil.controls.setLookAt(...a,!1)),n.assertGeneration(o),n.syncPrefabLibraries(i,r,m.values(),()=>n.assertGeneration(o)),n.document?n.document=i:n.manifest=De(De({},n.manifest),{},{materialLibrary:i.materialLibrary}),n.loadedDefinitions=v,n.instances=m;for(const e of l.values())n.pendingInstances.delete(e);return d=!0,n.reportSceneRetirementErrors(n.retireScenes(g)),n.notifySceneObservers("materialChanged",{assetId:e,revision:i.materialLibrary.find(t=>t.id===e).revision}),t}catch(m){if(d)throw m;n.discardSceneCandidates(l.values(),{assetId:e});for(const e of l.values())n.pendingInstances.delete(e);var v;if(o===n.generation)null==s||s.setSceneActive(),a&&(null===(v=n.pencil)||void 0===v||null===(v=v.controls)||void 0===v?void 0:v.setLookAt)&&(yield n.pencil.controls.setLookAt(...a,!1));throw m}finally{n.finishNavigation(o,c)}})()}getDocumentSnapshot(){return this.document}getDocument(){return this.document?structuredClone(this.document):void 0}getManifest(){return this.manifest?structuredClone(this.manifest):void 0}bindSceneInteractions(e,t){const n=this.loadedDefinitions.get(e)||(this.document?yt(this.document,e):void 0),r=this;!function(e,t,n,r){const i=(t,n,i=n,o)=>{if(r.currentSceneId!==e||r.isSwitching||r.isRegionSwitching)return void r.debugInteraction("ignored",{boundSceneId:e,currentSceneId:r.currentSceneId,isSwitching:r.isSwitching,isRegionSwitching:r.isRegionSwitching,objectId:n,action:t.action});let s;switch(r.debugInteraction("execute",{sceneId:e,objectId:n,matchedObjectId:i,clickedAdcode:o,action:t.action}),r.emit("sceneInteraction",{sceneId:e,objectId:n,matchedObjectId:i,interaction:t}),t.action.type){case"back":s=r.back();break;case"switchScene":s=r.switchScene(t.action.sceneId);break;case"backMapRegion":s=r.backMapRegion();break;case"switchMapRegion":{const a="clicked"===t.action.adcode?o:t.action.adcode;if(void 0===a)return void r.emit("sceneInteractionError",{sceneId:e,objectId:n,matchedObjectId:i,interaction:t,error:/* @__PURE__ */new Error("Clicked map region has no adcode")});s=r.switchMapRegion(t.action.sceneId,a);break}}s.catch(o=>{r.debugInteraction("interaction navigation failed",{sceneId:e,objectId:n,matchedObjectId:i,action:t.action,error:o}),r.emit("sceneInteractionError",{sceneId:e,objectId:n,matchedObjectId:i,interaction:t,error:o})})},o=e=>{let n=null==e?void 0:e.object3d;for(;n;){var r;const e=t.lead.objMap.get(n),i=Number(null==e||null===(r=e.userData)||void 0===r?void 0:r.adcode);if(Number.isInteger(i)&&i>=0)return i;n=n.parent}};for(const s of(null==n?void 0:n.interactions)||[]){const n=t.baseObjectByUuid(s.objectId);if(!n){r.debugInteraction("binding object missing",{sceneId:e,objectId:s.objectId,trigger:s.trigger,action:s.action});continue}const a=r.isMapScene(t)&&n===t.map,c=()=>a&&r.isMapScene(t)?t.map:t.baseObjectByUuid(s.objectId);r.debugInteraction("bound",{sceneId:e,objectId:s.objectId,objectKey:n.key,objectType:n.objectType,followsMap:a,trigger:s.trigger,action:s.action}),t.lead.handlePick(()=>{const e=c();return e?[e]:[]},s.trigger,({realBaseObject:n,sp:a})=>{const l=c();if(r.debugInteraction("pick callback",{sceneId:e,objectId:s.objectId,resolvedObjectKey:null==l?void 0:l.key,realObjectKey:null==n?void 0:n.key,realObjectType:null==n?void 0:n.objectType}),!l)return;if("clickOutside"===s.trigger)return void i(s,s.objectId);if(!n)return;const d=s.filter,u=null==d?void 0:d.objectIds;if(d&&n!==l){const e=[],r=[];let i=n.object3d;for(;i&&i!==l.object3d;){const n=t.lead.objMap.get(i);if(n){const i=t.uuidByBaseObject(n);i&&e.push(i),r.push(n.objectType||n.keyType)}i=i.parent}if(i!==l.object3d)return;const o=e.some(e=>null==u?void 0:u.includes(e)),s=r.some(e=>{var t;return null===(t=d.baseObjectTypes)||void 0===t?void 0:t.includes(e)}),a=o||s;if("include"===d.mode?!a:a)return}const p=o(n);if(r.debugInteraction("resolved click",{sceneId:e,objectId:s.objectId,realObjectKey:n.key,clickedAdcode:p}),"switchMapRegion"===s.action.type&&"clicked"===s.action.adcode){var h;if(void 0===p)return;const n=r.findAdcodeInfo(p);if(!n)return void r.debugInteraction("ignored unknown map region",{sceneId:e,objectId:s.objectId,clickedAdcode:p});if(r.isMapScene(t)&&p===t.adcode&&!(null===(h=n.c)||void 0===h?void 0:h.length))return void r.debugInteraction("ignored leaf map region",{sceneId:e,objectId:s.objectId,clickedAdcode:p})}null==a||a(),i(s,t.uuidByBaseObject(n)||s.objectId,s.objectId,p)})}}(e,t,n,{get currentSceneId(){return r.currentSceneId},get isSwitching(){return r.isSwitching},get isRegionSwitching(){return r.isRegionSwitching},debugInteraction:(e,t)=>this.debugInteraction(e,t),emit:(e,t)=>this.emit(e,t),back:()=>this.back(),switchScene:e=>this.switchScene(e),backMapRegion:()=>this.backMapRegion(),switchMapRegion:(e,t)=>this.switchMapRegion(e,t),isMapScene:e=>e instanceof Si,findAdcodeInfo:Nr})}canBack(){return this.history.length>0}unloadScene(e){this.invalidatePendingOperations();const t=this.instances.get(e);return this.loadedDefinitions.delete(e),!!t&&(t.dispose(),this.instances.delete(e),this.currentSceneId===e&&(this.currentSceneId=""),!0)}disposeInstances(){const e=[...this.instances.values()],t=this.pencil,n=[];this.instances.clear(),this.pencil=void 0;for(const i of e)try{i.dispose()}catch(r){n.push(r)}try{null==t||t.dispose()}catch(r){n.push(r)}if(1===n.length)throw n[0];if(n.length)throw new AggregateError(n,"Scene runtime disposal failed")}dispose(){this.disposed=!0,this.mapRequests.dispose();const e=[];try{var t;null===(t=this.rendererWarmup)||void 0===t||t.dispose()}catch(n){e.push(n)}this.rendererWarmup=void 0;try{this.invalidatePendingOperations()}catch(n){e.push(n)}try{this.disposeInstances()}catch(n){e.push(n)}this.document=void 0,this.manifest=void 0,this.manifestUrl=void 0,this.loadedDefinitions.clear(),this.definitionLoads.clear(),this.runtimeHooks=void 0,this.currentSceneId="",this.history=[];try{super.dispose()}catch(n){e.push(n)}if(1===e.length)throw e[0];if(e.length)throw new AggregateError(e,"Scene manager disposal failed")}};function vo(e,t,n){return mo("string"==typeof e?JSON.parse(e):structuredClone(e),t,n)}function mo(e,t,n){return W(e,t,n,{remapUserData(e,t){var n;const r=null==e?void 0:e._baseObjectUserData;(null==r?void 0:r.copySource)&&(r.copySource=null!==(n=t.get(r.copySource))&&void 0!==n?n:r.copySource)},remapReferences(e){var t,n;for(const r of[e,...null!==(t=e.materials)&&void 0!==t?t:[]])r.userData&&delete r.userData[it];for(const r of null!==(n=e.textures)&&void 0!==n?n:[])r.userData&&delete r.userData[it]}})}var go={additionalObjectRoots:e=>{var t;return(null===(t=e.userData)||void 0===t||null===(t=t._prefabLink)||void 0===t?void 0:t.baseline)?[e.userData._prefabLink.baseline]:[]},referenceAliases:(e,t)=>{var n;const r="materials"===e&&(null===(n=t.userData)||void 0===n?void 0:n._materialAssetId);return"string"==typeof r?[r]:[]}};function yo(e){return ue(e,go)}function bo(e){return te(e,go)}function wo(e,t,n=[]){return Q(e,t,n,go)}function jo(e,t){return Pe(e,t,{ignoreReferenceProperties:["_prefabLink"]})}var So=["children","shadow","userData"],Ao=["filter"],Oo=["objectIds"],xo=["geometries","materials","textures","images","skeletons","animations","shapes"],Io=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Mo(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(Object.hasOwn(e,n)!==Object.hasOwn(t,n)||Object.hasOwn(e,n)&&!Mo(e[n],t[n]))return!1;return!0}const n=e=>!!e&&"object"==typeof e&&[Object.prototype,null].includes(Object.getPrototypeOf(e));if(!n(e)||!n(t))return!1;const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(n=>Object.hasOwn(t,n)&&Mo(e[n],t[n]))}function Eo(e,t){const n=e.scenes.findIndex(e=>e.id===t),r=e.scenes[n];if(!r)throw Error("对象所属场景已不存在");const i=/* @__PURE__ */new Map,o=(e,t)=>{var n;if(!e||"string"!=typeof e.uuid||!e.uuid||i.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw Error("对象身份或层级无效");i.set(e.uuid,{node:e,parent:t});for(const r of null!==(n=e.children)&&void 0!==n?n:[])o(r,e.uuid)};return o(r.scene.object),{index:n,scene:r,nodes:i}}function Po(e,t){var n;const r=new Set(t);for(const i of r)if(!(null===(n=e.get(i))||void 0===n?void 0:n.parent))throw Error("编辑对象已不存在或是场景根节点");return[...e.keys()].filter(t=>{var n,i;if(!r.has(t))return!1;for(let o=null===(n=e.get(t))||void 0===n?void 0:n.parent;o;o=null===(i=e.get(o))||void 0===i?void 0:i.parent)if(r.has(o))return!1;return!0})}function Do(e,t,n){const r=e.scenes[t];if(n===r.scene)return e;const i=e.scenes.slice();return i[t]=De(De({},r),{},{scene:n}),De(De({},e),{},{scenes:i})}function Co(e,t){if(!Array.isArray(e)||16!==e.length||!e.every(Number.isFinite)||void 0!==t&&"boolean"!=typeof t)throw Error("对象变换矩阵无效")}function Ro(e,t=!1){return k(e,{copyPool:t,invalidReferenceMessage:"对象选项池引用无效",cyclicValueMessage:"对象选项存在循环引用"})}function Lo(e,t){var n;const{children:r,shadow:i,userData:o}=e,s=Xe(e,So),a=De({},o),c=(null==o?void 0:o._baseObjectUserData)&&De({},o._baseObjectUserData);for(const d of[a,c])if(d)for(const e of Io)delete d[e];c&&(a._baseObjectUserData=c);const l=structuredClone(De(De(De({},s),o?{userData:a}:{}),i?{shadow:De(De({},i),{},{camera:void 0})}:{}));return(null==i?void 0:i.camera)?l.shadow.camera=Lo(i.camera,t):l.shadow&&delete l.shadow.camera,(null===(n=l.userData)||void 0===n?void 0:n._baseObjectOptions)&&(l.userData._baseObjectOptions=t(l.userData._baseObjectOptions)),r&&(l.children=r.map(e=>Lo(e,t))),l}function ko(e,t){var n,r;t(e);for(const i of null!==(n=e.children)&&void 0!==n?n:[])ko(i,t);(null===(r=e.shadow)||void 0===r?void 0:r.camera)&&ko(e.shadow.camera,t)}function Bo(e,t,n){var r,i,o;const s=new Map((null!==(r=e.skeletons)&&void 0!==r?r:[]).map(e=>[e.uuid,e])),a=new Map((null!==(i=e.animations)&&void 0!==i?i:[]).map(e=>[e.uuid,e])),c={skeletons:/* @__PURE__ */new Set,animations:/* @__PURE__ */new Set};ko(t,e=>{var t,r;if(void 0!==e.skeleton){const t=s.get(e.skeleton);if(!t||!Array.isArray(t.bones)||t.bones.some(e=>!n.has(e)))throw Error("复制子树包含缺失或外部骨骼绑定,请复制完整模型");c.skeletons.add(e.skeleton)}for(const n of null!==(t=e.animations)&&void 0!==t?t:[]){if(!a.has(n))throw Error("复制子树缺少动画资源");c.animations.add(n)}if("string"==typeof e.target&&!n.has(e.target))throw Error("复制子树包含外部灯光目标,请复制完整对象组");for(const i of null!==(r=e.levels)&&void 0!==r?r:[])if("string"==typeof i.object&&!n.has(i.object))throw Error("复制子树包含外部 LOD 对象,请复制完整对象组")});const l={skeletons:[...c.skeletons].map(e=>structuredClone(s.get(e))),animations:[...c.animations].map(e=>structuredClone(a.get(e)))},d=/* @__PURE__ */new Set;ko(e.object,e=>d.add(e.uuid));const u=[...l.animations];ko(t,e=>{var t;const n=null===(t=e.userData)||void 0===t||null===(t=t._baseObjectOptions)||void 0===t?void 0:t.serializedClips;Array.isArray(n)&&u.push(...n)});for(const p of u)for(const e of null!==(o=p.tracks)&&void 0!==o?o:[]){const t="string"==typeof e.name?e.name.indexOf("."):-1,r=t>0?e.name.slice(0,t):void 0;if(d.has(r)&&!n.has(r))throw Error("复制子树包含外部动画目标,请复制完整模型")}return l}function To(e,t){const n=/* @__PURE__ */new Map;ko(e,e=>n.set(e.uuid,pe.generateUUID()));for(const o of[...t.skeletons,...t.animations])n.set(o.uuid,pe.generateUUID());const r=/* @__PURE__ */new Set(["uuid","geometry","material","skeleton","bones","animations","target","object","copySource"]),i=De({object:e},t);s(i,n,{referenceKeys:r,remapUniforms:!1,remapUserData(e,t){var r,i;(null==e||null===(r=e._baseObjectUserData)||void 0===r?void 0:r.copySource)&&(e._baseObjectUserData.copySource=null!==(i=n.get(e._baseObjectUserData.copySource))&&void 0!==i?i:e._baseObjectUserData.copySource),(null==e?void 0:e._baseObjectOptions)&&(e._baseObjectOptions=t(e._baseObjectOptions))}}),A(i,n)}function Uo(e,t,n){const{scene:r,nodes:i}=Eo(e,t),o=Po(i,n.map(e=>e.uuid));if(!o.length)return{document:e,uuids:[]};const s=new Map(n.map(e=>[e.uuid,e]));let a=e;const c=[];for(const l of o){const e=s.get(l);if(!i.has(e.parentUuid))throw Error("复制目标父级已不存在");const n=Lo(i.get(l).node,Ro(r.scene._sharedOptionsPool,!0)),o=/* @__PURE__ */new Set;ko(n,e=>o.add(e.uuid));const d=Bo(r.scene,n,o);if(To(n,d),void 0!==e.matrix)Co(e.matrix,e.matrixAutoUpdate),n.matrix=[...e.matrix];else if(void 0!==e.matrixAutoUpdate&&"boolean"!=typeof e.matrixAutoUpdate)throw Error("对象变换矩阵无效");!1===e.matrixAutoUpdate?n.matrixAutoUpdate=!1:!0===e.matrixAutoUpdate&&delete n.matrixAutoUpdate,a=$o(a,t,De({object:n},d),e.parentUuid),c.push(n.uuid)}return{document:a,uuids:c}}function _o(e,t,n){var r;const{scene:i,nodes:o}=Eo(e,t),s=Po(o,n);if(!s.length)return e;const a=/* @__PURE__ */new Set,c=/* @__PURE__ */new Set;for(const u of s)c.add(o.get(u).parent),ko(o.get(u).node,e=>a.add(e.uuid));const l={parents:[...c].map(e=>{var t;return{uuid:e,children:(null!==(t=o.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!a.has(e.uuid)).map(e=>e.uuid)}})},d=null===(r=i.interactions)||void 0===r?void 0:r.flatMap(e=>{var t,n;if(a.has(e.objectId))return[];const r=e.filter,i=null==r||null===(t=r.objectIds)||void 0===t?void 0:t.filter(e=>!a.has(e));if(!(null==r?void 0:r.objectIds)||i.length===r.objectIds.length)return[e];if(!i.length&&!(null===(n=r.baseObjectTypes)||void 0===n?void 0:n.length)){if("include"===r.mode)return[];const{filter:t}=e;return[Xe(e,Ao)]}const{objectIds:o}=r,s=Xe(r,Oo);return[De(De({},e),{},{filter:De(De({},s),i.length?{objectIds:i}:{})})]});return Mo(d,i.interactions)||(l.interactions=(null==d?void 0:d.length)?{set:d}:{unset:!0}),Zi(e,t,l)}function Go(e,t,n,r={}){var i,o;const{nodes:s}=Eo(e,t),a=Po(s,n);if(!a.length)throw Error("请先选择要分组的对象");const c=s.get(a[0]).parent;if(a.some(e=>s.get(e).parent!==c))throw Error("请先选择同一父级下的对象再分组");const l=new Set(a),d=null!==(i=s.get(c).node.children)&&void 0!==i?i:[],u=pe.generateUUID(),p=[];for(const f of d)l.has(f.uuid)?p.includes(u)||p.push(u):p.push(f.uuid);const h={uuid:u,type:"Group",name:null!==(o=r.name)&&void 0!==o?o:"Group",matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],userData:De({_baseObjectIdentityVersion:1,_baseObjectObjectType:"Group",_baseObjectKeyType:""},r.userData?{_baseObjectUserData:r.userData}:{})};return{document:Zi(e,t,{parents:[{uuid:c,children:p},{uuid:u,children:a}],additions:[h]}),uuid:u}}function zo(e,t,n,r,i,o){var s;const{index:a,scene:c,nodes:l}=Eo(e,t),d=Po(l,n),u=l.get(r);if(!d.length)return e;if(!u)throw Error("目标父级已不存在");const p=new Set(d);for(let m=u;m;m=m.parent?l.get(m.parent):void 0)if(p.has(m.node.uuid))throw Error("不能移入自身或子对象");const h=/* @__PURE__ */new Set([...(null!==(s=u.node.children)&&void 0!==s?s:[]).filter(e=>!p.has(e.uuid)).map(e=>e.uuid),...d]);if(new Set(i).size!==i.length||i.length!==h.size||i.some(e=>!h.has(e)))throw Error("目标成员顺序无效");const f=new Set(d.map(e=>l.get(e).parent));f.delete(r);const v=/* @__PURE__ */new Map;for(const m of d){const e=o.get(m);if(!e)continue;Co(e.matrix,e.matrixAutoUpdate);const t=l.get(m).node,n={},r=[];Mo(t.matrix,e.matrix)||(n.matrix=e.matrix),!1===e.matrixAutoUpdate&&!1!==t.matrixAutoUpdate?n.matrixAutoUpdate=!1:!0===e.matrixAutoUpdate&&Object.hasOwn(t,"matrixAutoUpdate")&&r.push("matrixAutoUpdate"),(Object.keys(n).length||r.length)&&v.set(m,De({state:n},r.length?{unset:r}:{}))}return Zi(v.size?Do(e,a,De(De({},c.scene),{},{object:Ei(c.scene.object,v)})):e,t,{parents:[...[...f].map(e=>{var t;return{uuid:e,children:(null!==(t=l.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!p.has(e.uuid)).map(e=>e.uuid)}}),{uuid:r,children:[...i]}]})}function $o(e,t,n,r,i=[]){var o,s,a;const{index:c,scene:l,nodes:d}=Eo(e,t),u=d.get(r);if(!u)throw Error("新增对象父级已不存在");if(!(null==n||null===(o=n.object)||void 0===o?void 0:o.uuid)||d.has(n.object.uuid))throw Error("新增对象身份无效或重复");tt({scene:n});const p=De({},n);delete p._sharedOptionsPool;const h=Ro(n._sharedOptionsPool),f=e=>{var t,n;let r=e;const i=null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions;if(i){const t=h(i);t!==i&&(r=De(De({},e),{},{userData:De(De({},e.userData),{},{_baseObjectOptions:t})}))}if(e.children){const t=e.children.map(f);t.some((t,n)=>t!==e.children[n])&&(r=De(De({},r),{},{children:t}))}if(null===(n=e.shadow)||void 0===n?void 0:n.camera){const t=f(e.shadow.camera);t!==e.shadow.camera&&(r=De(De({},r),{},{shadow:De(De({},e.shadow),{},{camera:t})}))}return r},v=De(De({},p),{},{object:f(p.object)}),m={parents:[{uuid:r,children:[...(null!==(s=u.node.children)&&void 0!==s?s:[]).map(e=>e.uuid),v.object.uuid]}],additions:[v.object]};let g=e;for(const A of xo){var y,b,w;const e=null!==(y=l.scene[A])&&void 0!==y?y:[],t=new Map(e.map(e=>[e.uuid,e])),n=[];if(void 0!==v[A]&&!Array.isArray(v[A]))throw Error(`新增对象 ${A} 资源表无效`);for(const r of null!==(b=v[A])&&void 0!==b?b:[]){if(!r||"string"!=typeof r.uuid||!r.uuid)throw Error(`新增对象 ${A} 资源身份无效`);const e=r,i=t.get(e.uuid);if(i){if(!Mo(i,e))throw Error(`新增对象 ${A} 资源定义冲突:${e.uuid}`)}else n.push(e),t.set(e.uuid,e)}n.length&&("shapes"===A?g=Do(g,c,De(De({},g.scenes[c].scene),{},{shapes:[...e,...n.map(e=>structuredClone(e))]})):(null!==(w=m.resources)&&void 0!==w?w:m.resources={})[A]={upsert:n})}const j=new Map((null!==(a=e.materialLibrary)&&void 0!==a?a:[]).map(e=>[e.id,e])),S=[];for(const A of i){const e=j.get(A.id);if(e){if(!Mo(e,A))throw Error(`新增对象材质资产定义冲突:${A.id}`)}else j.set(A.id,A),S.push(A)}return S.length&&(m.assets={upsert:S}),Zi(g,t,m)}function Wo(e=[],t){if(!t.length)return e;const n=new Map(e.map(e=>[e.id,e])),r=[];for(const i of t){const e=n.get(i.id);if(e&&!oe(e,i))throw Error(`资产 ${i.id} 已存在且内容不同`);e||(n.set(i.id,i),r.push(i))}return r.length?[...e,...r]:e}function No(e,t,n=[],r=[]){const i=new Set(e.scenes.map(e=>e.id));for(const o of t){if(!o.id||i.has(o.id))throw Error(`场景 ${o.id} 已存在或无效`);i.add(o.id)}return t.length?De(De({},e),{},{scenes:[...e.scenes,...t],materialLibrary:Wo(e.materialLibrary,n),prefabLibrary:Wo(e.prefabLibrary,r)}):e}function Fo(e,t){var n;if(!e.scenes.some(e=>e.id===t))return e;if(e.scenes.length<=1)throw Error("至少需要保留一个场景");const r=e.scenes.filter(e=>e.id!==t).map(e=>{var n,r;const i=null===(n=e.interactions)||void 0===n?void 0:n.filter(e=>!["switchScene","switchMapRegion"].includes(e.action.type)||!("sceneId"in e.action)||e.action.sceneId!==t);return(null==i?void 0:i.length)===(null===(r=e.interactions)||void 0===r?void 0:r.length)?e:De(De({},e),{},{interactions:(null==i?void 0:i.length)?i:void 0})});return De(De({},e),{},{scenes:r,entrySceneId:e.entrySceneId===t?r[0].id:e.entrySceneId,materialLibrary:null===(n=e.materialLibrary)||void 0===n?void 0:n.filter(e=>"scene"!==e.scope.kind||e.scope.sceneId!==t)})}function qo(e,t,n,r){var i,o,s;const a=e.scenes.find(e=>e.id===t);if(!a)throw Error(`场景 ${t} 不存在`);if(!n||e.scenes.some(e=>e.id===n))throw Error(`场景 ${n} 已存在或无效`);const c=new Set((null!==(i=e.materialLibrary)&&void 0!==i?i:[]).map(e=>e.id)),l=/* @__PURE__ */new Map;for(const f of null!==(o=e.materialLibrary)&&void 0!==o?o:[])if("scene"===f.scope.kind&&f.scope.sceneId===t){const e=`${f.id}:copy:${encodeURIComponent(n)}`;let t=e,r=1;for(;c.has(t);)t=`${e}~${r++}`;c.add(t),l.set(f.id,De(De({},f),{},{id:t,scope:{kind:"scene",sceneId:n}}))}const d=null===(s=a.scene.materials)||void 0===s?void 0:s.map(e=>{var t;const n=l.get(null===(t=e.userData)||void 0===t?void 0:t[ct]);return n?De(De({},e),{},{userData:De(De({},e.userData),{},{[ct]:n.id,[Je]:n.revision})}):e}),u=De(De(De(De({},a),{},{id:n,name:(null==r?void 0:r.trim())||`${a.name} 副本`},a.interactions?{interactions:a.interactions.map(e=>"sceneId"in e.action&&e.action.sceneId===t?De(De({},e),{},{action:De(De({},e.action),{},{sceneId:n})}):e)}:{}),a.materialAliases?{materialAliases:Object.fromEntries(Object.entries(a.materialAliases).map(([e,t])=>[e,l.has(t.assetId)?De(De({},t),{},{assetId:l.get(t.assetId).id}):t]))}:{}),{},{scene:l.size?De(De({},a.scene),d?{materials:d}:{}):a.scene}),p=[...l.values()],h=No(e,[u],p);return{document:p.length?fn(h,p,/* @__PURE__ */new Set([n])):h,id:n}}function Vo(e,t){var n;const r=new Set((null!==(n=e.materialLibrary)&&void 0!==n?n:[]).map(e=>e.id));return Bn(t,e=>{let t=e.id,n=1;for(;r.has(t);)t=`${e.id}~${n++}`;return r.add(t),t}).document}function Ho(e,t,n,r){return Ko(e,t,n,r,!0)}function Ko(e,t,n,r,i){var o,s;const a=e.scenes.findIndex(e=>e.id===t),c=e.scenes[a];if(!c)throw Error("目标场景已不存在");const l=null===(o=Ii(c.scene.object,n))||void 0===o?void 0:o.node;if(!l||l===c.scene.object)throw Error("几何体编辑目标已不存在");const{graph:d,geometry:u}=C(c.scene,r),{geometries:p,shapes:h}=d;if(l.geometry===u&&(!i||!0===(null===(s=l.userData)||void 0===s?void 0:s._baseObjectGeometryOverride))&&p===c.scene.geometries&&h===c.scene.shapes)return e;const f=Ei(c.scene.object,/* @__PURE__ */new Map([[n,{state:De({geometry:u},i?{userData:De(De({},l.userData),{},{_baseObjectGeometryOverride:!0})}:{})}]])),v=De(De(De({},c.scene),{},{object:f},p?{geometries:p}:{}),h?{shapes:h}:{});return De(De({},e),{},{scenes:e.scenes.map((e,t)=>t===a?De(De({},c),{},{scene:v}):e)})}function Xo(e,t,n){var r,i,o,s,a;if(!t||!("geometry"in t)||null!==t.geometry&&!(null===(r=t.geometry)||void 0===r?void 0:r.isBufferGeometry))return;const c=!0===(null===(i=e.userData)||void 0===i?void 0:i._baseObjectNeedsCreate);if(!c&&e.geometry===(null!==(o=null===(s=t.geometry)||void 0===s?void 0:s.uuid)&&void 0!==o?o:null))return;const l=t.geometry?n.capture(t.geometry):null,d={};return e.geometry!==l&&(d.geometry=l),c&&!0!==(null===(a=e.userData)||void 0===a?void 0:a._baseObjectGeometryOverride)&&(d.userData=De(De({},e.userData),{},{_baseObjectGeometryOverride:!0})),Object.keys(d).length?d:void 0}function Yo(e,t){const n=p(e),r=e=>{var i,o;const s=Xo(e,e.uuid===t.uuid?t.object3d:null===(i=t.lead.objects.get(e.uuid))||void 0===i?void 0:i.object3d,n);s&&Object.assign(e,s);for(const t of null!==(o=e.children)&&void 0!==o?o:[])r(t)};r(e.object),n.changed()&&Object.assign(e,n.graph())}function Jo(e,t,n,r){const i=e.scenes.findIndex(e=>e.id===t),o=e.scenes[i];if(!o)throw Error("复制目标场景已不存在");const s=p(o.scene),a=/* @__PURE__ */new Map,c=(e,t)=>{var n,i,o,l,d,u;if(!e||!t||(null!==(n=null===(i=e.children)||void 0===i?void 0:i.length)&&void 0!==n?n:0)!==(null!==(o=null===(l=t.children)||void 0===l?void 0:l.length)&&void 0!==o?o:0))throw Error("复制对象层级与源对象不一致");const p=Xo(t,null===(d=r.objects.get(e.uuid))||void 0===d?void 0:d.object3d,s);p&&a.set(t.uuid,{state:p}),(null!==(u=e.children)&&void 0!==u?u:[]).forEach((e,n)=>c(e,t.children[n]))};for(const{sourceUuid:p,copyUuid:h}of n){var l,d;if(p===h)throw Error("复制对象身份与源对象重复");c(null===(l=Ii(o.scene.object,p))||void 0===l?void 0:l.node,null===(d=Ii(o.scene.object,h))||void 0===d?void 0:d.node)}if(!a.size&&!s.changed())return e;const u=s.graph();return a.size&&(u.object=Ei(o.scene.object,a)),De(De({},e),{},{scenes:e.scenes.map((e,t)=>t===i?De(De({},o),{},{scene:u}):e)})}function Zo(e,t,n){const r=e.options.projection;if(e.options.conic||!(null==r?void 0:r.center)||!Number.isFinite(r.scale)||r.scale<=0)throw Error("A planar map with explicit projection is required");if(!t.crs||!n||t.crs!==n)throw Error("Coordinate CRS must match map CRS; convert explicitly first");if(!Number.isFinite(t.longitude)||!Number.isFinite(t.latitude)||Math.abs(t.longitude)>180||Math.abs(t.latitude)>=90)throw Error("Invalid longitude/latitude");if(e.object3d.updateWorldMatrix(!0,!0),!Number.isFinite(e.object3d.matrixWorld.determinant())||0===e.object3d.matrixWorld.determinant())throw Error("Map transform is singular");const i=F(r),o=i([t.longitude,t.latitude]);if(!o||!o.every(Number.isFinite))throw Error("Location cannot be projected");const s=new y(o[0],-o[1],0),a=1e-5,c=6371008.8,l=i([t.longitude+(t.longitude+a>180?-1e-5:a),t.latitude]),d=i([t.longitude,t.latitude+(t.latitude+a>=90?-1e-5:a)]);if(!l||!d)throw Error("Cannot measure projection scale");const u=a*Math.PI/180,p=Math.hypot(l[0]-o[0],l[1]-o[1])/(c*u*Math.cos(t.latitude*Math.PI/180)),h=Math.hypot(d[0]-o[0],d[1]-o[1])/(c*u);if(![p,h].every(e=>Number.isFinite(e)&&e>0))throw Error("Cannot measure projection scale");return{local:s,world:s.clone().applyMatrix4(e.object3d.matrixWorld),xUnitsPerMeter:p,yUnitsPerMeter:h,scaleBasis:"local spherical approximation"}}function Qo(e,t,n,r){var i;const s=Zo(t,n,r.mapCRS),a=me(e);if(!a.valid)throw Error(`Invalid model: ${a.issues.join("; ")}`);const c=null!==(i=r.clearance)&&void 0!==i?i:0;if(!Number.isFinite(c)||c<0)throw Error("Invalid clearance");const l=t.object3d.matrixWorld.clone().invert(),d=e.clone(!0);d.matrix.copy(e.matrix),d.matrixAutoUpdate=!1,d.matrixWorldNeedsUpdate=!0,d.updateWorldMatrix(!1,!0);let u=(new ge).setFromObject(d,!0);if(void 0!==r.heightMeters){if(!Number.isFinite(r.heightMeters)||r.heightMeters<=0||u.max.z<=u.min.z)throw Error("Positive physical/model height required");if(Math.abs(s.xUnitsPerMeter/s.yUnitsPerMeter-1)>.01)throw Error("Projection is not locally isotropic; supply an explicitly scaled model");const e=r.heightMeters*s.yUnitsPerMeter/(u.max.z-u.min.z);d.matrix.premultiply((new Y).makeScale(e,e,e)),d.matrixWorldNeedsUpdate=!0,d.updateWorldMatrix(!1,!0),u=(new ge).setFromObject(d,!0)}const p=u.getCenter(new y),h=new y(s.local.x-p.x,s.local.y-p.y,0);d.matrix.premultiply((new Y).makeTranslation(h)),d.matrixWorldNeedsUpdate=!0;const f=[];for(const o of r.surfaces)o.updateWorldMatrix(!0,!0),o.traverse(t=>{let n=!0;for(let e=t;e;e=e.parent)e.visible||(n=!1);t.isMesh&&n&&t!==e&&!e.getObjectByProperty("uuid",t.uuid)&&f.push(t)});if(!f.length)throw Error("No eligible ground meshes");const v=new ge;for(const o of f){const e=o.clone(!1);e.matrix.copy(l).multiply(o.matrixWorld),e.matrixAutoUpdate=!1,e.matrixWorldNeedsUpdate=!0,v.union((new ge).setFromObject(e))}const m=v.max.z+Math.max(1,v.max.z-v.min.z),g=new y(s.local.x,s.local.y,m).applyMatrix4(t.object3d.matrixWorld),b=new y(0,0,-1).transformDirection(t.object3d.matrixWorld),w=new o(g,b).intersectObjects([...new Set(f)],!1).find(e=>{if(!e.face)return!1;const t=e.object.material,n=Array.isArray(t)?t[e.face.materialIndex]:t;return(null==n?void 0:n.visible)&&e.face.normal.clone().applyNormalMatrix((new se).getNormalMatrix(e.object.matrixWorld)).dot(b)<-1e-6});if(!w)throw Error("No ground hit at target; placement aborted");const j=w.point.clone().applyMatrix4(l);d.matrix.premultiply((new Y).makeTranslation(0,0,j.z+c-u.min.z)),d.matrixWorldNeedsUpdate=!0;const S=t.object3d.matrixWorld.clone().multiply(d.matrix),A=S.clone();if(e.parent){if(e.parent.updateWorldMatrix(!0,!1),!Number.isFinite(e.parent.matrixWorld.determinant())||0===e.parent.matrixWorld.determinant())throw Error("Model parent transform is singular");A.premultiply(e.parent.matrixWorld.clone().invert())}return{localMatrix:A,worldMatrix:S,groundPoint:w.point.toArray(),groundObjectUuid:w.object.uuid,mapPosition:[s.local.x,s.local.y,j.z+c],scaleBasis:s.scaleBasis,xUnitsPerMeter:s.xUnitsPerMeter,yUnitsPerMeter:s.yUnitsPerMeter}}var es=Ft;export{ct as MATERIAL_ASSET_ID,Je as MATERIAL_ASSET_REVISION,Dt as MATERIAL_RUNTIME_PROPERTIES,it as RESOURCE_SOURCE,ze as SCENE_DOCUMENT_FORMAT,Te as SCENE_DOCUMENT_SCHEMA_VERSION,_e as SCENE_MANIFEST_FORMAT,Be as SCENE_MANIFEST_SCHEMA_VERSION,fo as SceneManager,de as THREE,U as TWEEN,es as VERSION,Wr as adcodeAll,tr as animationUtils,$o as appendObjectDocument,No as appendScenesDocument,mt as assertProjectMaterials,Mt as assertRuntimeSceneDocument,At as assertSceneManifest,ke as assertSupportedSceneDocument,Gn as bindMaterialAsset,wn as bindMaterialSlots,nt as cloneSceneDocument,Fn as cloneSceneMaterials,Hn as cloneSceneWithIds,ro as collectSceneResourceReuse,wo as collectStructureResources,Jo as copyNativeGeometries,Yo as copySnapshotGeometries,_n as createMaterialAsset,vn as createMaterialAssetDocument,Qe as createMaterialDefinitionExtractor,on as createRuntimeSceneDocument,Ot as createRuntimeSceneGraph,no as createSceneResourceReuseSession,bo as createStructureResourceCollector,Sn as duplicateMaterialAssetDocument,Nn as duplicateMaterialForObject,Uo as duplicateObjectsDocument,qo as duplicateSceneDocument,Br as editorEarthObjects,ur as editorObjects,yo as expandStructureSnapshot,Ze as extractMaterialDefinition,jo as extractObjectResourceGraph,Nr as findAdcodeInfo,dt as getMaterialDependencies,Pt as getMaterialUsages,Rt as getPrefabMaterialDependencies,yt as getSceneDocument,Go as groupObjectsDocument,Ii as indexedSceneObject,Mi as inheritSceneObjectIndex,Oi as invalidateSceneObjectIndex,ki as isLocalSceneObjectField,Zn as isObjectStateUpdateInProgress,Gi as isSceneCameraField,Ue as isSceneDocument,Ge as isSceneManifest,Li as isSceneObjectPropertyField,$n as makeMaterialSceneLocal,xn as materialDocumentOperations,ot as materializeAssetDefinition,fn as materializeChangedAssets,It as materializeOwnedProjectMaterials,ht as materializeOwnedSceneMaterials,jt as materializeProjectMaterials,Et as materializeSceneMaterialDefinitions,ft as materializeSceneMaterials,vt as materializeSceneMaterialsBatch,wt as mergeAuthoredMaterialDefinition,Un as mergeProjectMaterials,zo as moveObjectsDocument,an as normalizeMaterialDefinition,xt as normalizeOwnedProjectMaterials,St as normalizeProjectMaterials,Ei as patchIndexedSceneObjects,Ui as patchSceneObjectPropertiesDocument,Zi as patchSceneStructureDocument,eo as patchSceneStructureTransactionDocument,zi as patchSceneViewportDocument,Qo as planPlacement,Ko as prepareGeometryBinding,Ho as prepareGeometryEdit,Zo as projectLocation,An as promoteMaterialAssetDocument,Wn as promoteMaterialToProject,yn as registerSceneMaterials,Vo as remapImportedMaterials,mo as remapOwnedSnapshotIdentity,Bn as remapProjectMaterialIds,Vn as remapSceneDocumentIds,Dn as remapSceneMaterialReferencesCopy,Pn as remapSceneObjectReferencesCopy,A as remapSnapshotAnimationTracks,vo as remapSnapshotIdentity,On as removeMaterialAssetDocument,_o as removeObjectsDocument,kn as removeProjectMaterial,Fo as removeSceneDocument,gn as replaceMaterialAssetDocument,st as resourceInstanceUuid,Lt as restoreRuntimeImageFiles,Ct as sceneMaterialLibrary,xi as sceneObjectIndex,Bi as sceneObjectPropertyDefaults,$i as scenePropertyFields,ut as selectSceneDocument,sn as splitSceneDocument,Ye as stripMaterialAssetBinding,Ln as updateProjectMaterial,Mn as visitSceneIdentityReferences};
|
|
1
|
+
import{$ as e,A as t,At as n,B as r,C as i,Ct as o,D as s,Dt as a,E as c,Et as l,F as d,G as u,H as p,I as h,J as f,K as v,L as m,M as g,Mt as y,N as b,Nt as w,Ot as j,P as S,Q as A,S as O,St as M,T as x,Tt as I,U as E,V as D,W as P,X as C,Y as R,Z as L,_ as k,_t as B,a as T,at as U,b as _,bt as $,c as z,ct as G,d as N,dt as W,et as F,f as q,ft as V,g as H,gt as K,h as X,ht as Y,i as J,it as Z,j as Q,jt as ee,k as te,kt as ne,l as re,lt as ie,m as oe,mt as se,n as ae,nt as ce,o as le,ot as de,p as ue,pt as pe,q as he,r as fe,rt as ve,s as me,st as ge,t as ye,tt as be,ut as we,v as je,vt as Se,w as Ae,wt as Oe,x as Me,xt as xe,y as Ie,yt as Ee,z as De}from"./dist-CBwlzuju.js";import{a as Pe,i as Ce,o as Re,t as Le}from"./resource-url-MTT03G1N.js";import{S as ke,c as Be,f as Te,h as Ue,l as _e,m as $e,n as ze,p as Ge,t as Ne,v as We}from"./e--VPnb9WD.js";import{a as Fe,i as qe,n as Ve,o as He,r as Ke,s as Xe,t as Ye}from"./schema-DCtwlcYa.js";import{C as Je,D as Ze,E as Qe,O as et,S as tt,T as nt,_ as rt,a as it,b as ot,c as st,d as at,f as ct,g as lt,h as dt,i as ut,k as pt,l as ht,m as ft,n as vt,o as mt,p as gt,s as yt,t as bt,u as wt,v as jt,w as St,x as At,y as Ot}from"./validation-ByK1cs9B.js";import{i as Mt,n as xt,r as It,t as Et}from"./runtimeImages-bGdtc9BO.js";import{EventEmitter as Dt}from"events";import Pt from"geojson-cn/json-lite/all.json";import{booleanPointInPolygon as Ct,center as Rt,centroid as Lt,point as kt,polygon as Bt}from"@turf/turf";if(!Array.prototype.at){function ys(e){if((e=Math.trunc(e)||0)<0&&(e+=this.length),!(e<0||e>=this.length))return this[e]}const bs=Reflect.getPrototypeOf(Int8Array);for(const ws of[Array,String,bs])Object.defineProperty(ws.prototype,"at",{value:ys,writable:!0,enumerable:!1,configurable:!0})}var Tt="0.33.21";function Ut(e){var t;if(null==e?void 0:e.aborted)throw null!==(t=e.reason)&&void 0!==t?t:new DOMException("Operation cancelled","AbortError")}function _t(e,t){return t?new Promise((n,r)=>{const i=()=>{var e;return r(null!==(e=t.reason)&&void 0!==e?e:new DOMException("Operation cancelled","AbortError"))};t.addEventListener("abort",i,{once:!0}),e.then(n,r).finally(()=>t.removeEventListener("abort",i)),t.aborted&&i()}):e}var $t=class{constructor(){Re(this,"pending",Promise.resolve()),Re(this,"current",void 0),Re(this,"disposed",!1)}run(e,t){if(null==t?void 0:t.aborted)return Promise.reject(t.reason);if(this.disposed)return Promise.reject(new DOMException("Operation owner disposed","AbortError"));this.cancel();const n=new AbortController;this.current=n;const r=()=>n.abort(null==t?void 0:t.reason);null==t||t.addEventListener("abort",r,{once:!0});const i=this.pending.then(Ce(function*(){Ut(n.signal);const t=yield e(n.signal);return Ut(n.signal),t})).finally(()=>{null==t||t.removeEventListener("abort",r),this.current===n&&(this.current=void 0)});return this.pending=i.catch(()=>{}),_t(i,n.signal)}cancel(){var e;null===(e=this.current)||void 0===e||e.abort()}dispose(){this.disposed=!0,this.cancel()}};function zt(e){if(null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e;if(Array.isArray(e))return e.map(zt).filter(e=>void 0!==e);if(!e||Object.getPrototypeOf(e)!==Object.prototype||e.isMaterial||e.isTexture||e.isObject3D||e.isBufferGeometry)return;const t={};for(const[n,r]of Object.entries(e)){const e=zt(r);void 0!==e&&(t[n]=e)}return t}function Gt(e,t,n){return Pe(Pe({},structuredClone(e)),{},{scene:t,vis:Pe(Pe({},structuredClone(e.vis)),{},{options:Pe(Pe({},structuredClone(e.vis.options)),zt(n.options))}),cs:structuredClone(n.cameraState),csa:n.cameraStateActive})}function Nt(e,t,n){const r=n.mapNavigation;if("dynamic"!==(null==r?void 0:r.mode)||!n.isMapScene(t)||!t.map||!Object.values(r.templates).includes(e))return;const i=()=>t.map?[t.map]:[],o=()=>n.currentSceneId!==e||n.isSwitching||n.isRegionSwitching,s=r=>{const i=t.map&&t.uuidByBaseObject(t.map);n.emit("sceneInteraction",{sceneId:e,objectId:i,interaction:{action:r}});const o=t=>n.emit("sceneInteractionError",{sceneId:e,objectId:i,error:t});try{("backMapRegion"===r.type?n.backMapRegion():n.switchMapRegion(r.sceneId,r.adcode)).catch(o)}catch(s){o(s)}};t.lead.handlePick(i,"click",({realBaseObject:r,sp:i})=>{var a,c;if(o())return;const l=(e=>{for(let r=null==e?void 0:e.object3d;r;r=r.parent){var n;const e=null===(n=t.lead.objMap.get(r))||void 0===n?void 0:n.userData,i=null==e?void 0:e.adcode,o=null==i||""===i?NaN:Number(i);if(Number.isInteger(o)&&o>=0)return o;if(0===t.adcode&&e&&("CN"===e.iso_a2||"CHN"===e.iso_a3||"156"===String(e.iso_n3)||["CN","CHN","中国"].includes(e.mapFeatureId)||"中国"===e.name))return 1e5}})(r),d=0===t.adcode?[1e5]:void 0===t.adcode?[]:null!==(a=null===(c=n.findAdcodeInfo(t.adcode))||void 0===c?void 0:c.c)&&void 0!==a?a:[];void 0!==l&&d.includes(l)&&n.canDrillMapRegion(l)&&(null==i||i(),s({type:"switchMapRegion",sceneId:n.resolveMapInteractionTemplate(e,l,!0),adcode:l}))}),t.lead.handlePick(i,"clickOutside",()=>{o()||s({type:"backMapRegion"})})}function Wt(e,t){return Ft(e,t).filter(e=>!e.optionPath)}function Ft(e,t){const n=[];for(const o of e.scenes){var r,i;const e=new Map((null!==(r=o.scene.materials)&&void 0!==r?r:[]).filter(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[st]}).map(e=>[e.uuid,e.userData[st]]));tt(o.scene.object,r=>{const i=new Set([r.material].flat());[r.material].flat().forEach((i,s)=>{const a=e.get(i);!a||void 0!==t&&a!==t||n.push({assetId:a,sceneId:o.id,objectId:r.uuid||"",slot:s})}),c(r.userData,(s,a,c)=>{const l=s[a],d=e.get(l);!d||i.has(l)||void 0!==t&&d!==t||(i.add(l),n.push({assetId:d,sceneId:o.id,objectId:r.uuid||"",slot:0,optionPath:c}))},o.scene._sharedOptionsPool)});for(const[r,s]of Object.entries(null!==(i=o.materialAliases)&&void 0!==i?i:{}))void 0!==t&&t!==s.assetId||n.push({assetId:s.assetId,sceneId:o.id,objectId:"",slot:0,alias:r})}return n}function qt(e,t){var n;return(null!==(n=e.prefabLibrary)&&void 0!==n?n:[]).filter(e=>{var n;return null===(n=e.snapshot.materials)||void 0===n?void 0:n.some(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[st])===t})})}function Vt(e,t=[],n=[]){return Ht(e,t,n).map(e=>at(e))}function Ht(e,t=[],n=[]){var r,i,o;const s=new Set((null!==(r=e.scene.materials)&&void 0!==r?r:[]).map(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[st]}).filter(Boolean));for(const c of n)for(const e of null!==(i=c.snapshot.materials)&&void 0!==i?i:[]){var a;const t=null===(a=e.userData)||void 0===a?void 0:a[st];t&&s.add(t)}for(const c of Object.values(null!==(o=e.materialAliases)&&void 0!==o?o:{}))s.add(c.assetId);return t.filter(t=>s.has(t.id)||"scene"===t.scope.kind&&t.scope.sceneId===e.id)}function Kt(e,t){var n;nt(e);const r=e.scenes.find(e=>e.id===t);if(!r)throw new Error(`Scene ${t} was not found`);const i=S("decode"),o=e=>{const t=he(e,i),n=/* @__PURE__ */new Set,r=/* @__PURE__ */new WeakSet,o=e=>{if(Array.isArray(e))return e.map(o);if(e&&"object"==typeof e){if(r.has(e))return structuredClone(e);r.add(e)}if(!ArrayBuffer.isView(null==e?void 0:e.data))return e;const t=e.data.buffer;return n.has(t)?structuredClone(e):(n.add(t),e)};return t.images?Pe(Pe({},t),{},{images:t.images.map(e=>Pe(Pe({},e),{},{url:o(e.url)}))}):t},s=e.materialLibrary,a=Ht(r,s,e.prefabLibrary).map(e=>Pe(Pe({},e),{},{material:o(e.material)})),c=Pe(Pe({},r),{},{scene:o(r.scene)}),l=null===(n=e.prefabLibrary)||void 0===n?void 0:n.map(e=>Pe(Pe({},e),{},{snapshot:o(e.snapshot)}));return Pe(Pe(Pe({},e),{},{scenes:[c]},s?{materialLibrary:a}:{}),l?{prefabLibrary:l}:{})}var Xt=["scene"];function Yt(e,t){if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Array.isArray(e)&&e.length!==t.length)return!1;if(e instanceof ArrayBuffer){if(e.byteLength!==t.byteLength)return!1;const n=new Uint8Array(t);return new Uint8Array(e).every((e,t)=>e===n[t])}if(e instanceof Date)return Object.is(e.getTime(),t.getTime());if(!Array.isArray(e)&&Object.getPrototypeOf(e)!==Object.prototype&&null!==Object.getPrototypeOf(e)&&(!ArrayBuffer.isView(e)||e instanceof DataView))return!1;const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&Yt(e[n],t[n]))}function Jt(e){const t=/* @__PURE__ */new Map,n=/* @__PURE__ */new Map,r=/* @__PURE__ */new Map,i=e=>{var i;const o=null===(i=e.userData)||void 0===i?void 0:i[st];t.has(e.uuid)||t.set(e.uuid,e),n.has(o)||n.set(o,e);let s=r.get(e.uuid);s||r.set(e.uuid,s=/* @__PURE__ */new Map),s.has(o)||s.set(o,e)};for(const o of e)i(o);return{byUuid:t,add:i,bound:(e,t)=>{var n;return null===(n=r.get(e))||void 0===n?void 0:n.get(t)},resolve:(e,t)=>{var i,o;return null!==(i=null===(o=r.get(e))||void 0===o?void 0:o.get(t))&&void 0!==i?i:n.get(t)}}}function Zt(e){const t=/* @__PURE__ */new Map;return e.forEach((e,n)=>{t.has(e.uuid)||t.set(e.uuid,n)}),t}function Qt(e,t){var n,r,i;const o=e.scene,s=null!==(n=o.materials)&&void 0!==n?n:[];let a=Jt(s);for(const[d,m]of Object.entries(null!==(r=e.materialAliases)&&void 0!==r?r:{})){var c,l,u,p,h;const n=t.get(m.assetId);if(!n)throw new Error(`Missing material asset ${m.assetId} in scene ${e.id}`);let r=a.resolve(d,m.assetId);r||(r={uuid:d,type:n.material.type,userData:{[st]:n.id,[ht]:n.revision}},s.push(r),a.add(r),o.materials=s);const i=null!==(c=o.materialAliases)&&void 0!==c?c:o.materialAliases={};if(i[d]&&i[d].materialUuid!==r.uuid)throw new Error(`Conflicting material catalog ${d}`);i[d]={materialUuid:r.uuid,locked:!(!(null===(l=i[d])||void 0===l?void 0:l.locked)&&!m.locked),roles:[.../* @__PURE__ */new Set([...null!==(u=null===(p=i[d])||void 0===p?void 0:p.roles)&&void 0!==u?u:[],...null!==(h=m.roles)&&void 0!==h?h:[]])]}}d(o,e.vis.options),a=Jt(s);const f={};for(const[d,m]of Object.entries(null!==(i=o.materialAliases)&&void 0!==i?i:{})){var v;const e=a.byUuid.get(m.materialUuid),t=null==e||null===(v=e.userData)||void 0===v?void 0:v[st];t&&(f[d]={assetId:t,locked:!!m.locked})}Object.keys(f).length?e.materialAliases=f:delete e.materialAliases}function en(e){return Fe(e),tn(Ze(e))}function tn(e){var t;const n=et(e),r=yt(n.materialLibrary),i=new Set(r.keys()),o=null!==(t=n.materialLibrary)&&void 0!==t?t:[];for(const u of n.scenes){var s,a,c;let e;Qt(u,r);const t=/* @__PURE__ */new Map;for(const a of null!==(s=u.scene.materials)&&void 0!==s?s:[]){var l;if(t.has(a.uuid))throw new Error(`Duplicate material ${a.uuid} in scene ${u.id}`);t.set(a.uuid,a);let n=null===(l=a.userData)||void 0===l?void 0:l[st];if(void 0===n){var d;n=St(u.id,"material-asset",a.uuid);let t=0;for(;i.has(n);)n=St(u.id,"material-asset",`${a.uuid}:${++t}`);i.add(n);const s={id:n,revision:1,name:a.name||a.uuid,scope:{kind:"scene",sceneId:u.id},material:gt(null!==(d=e)&&void 0!==d?d:e=dt(u),a.uuid)};o.push(s),r.set(n,s),a.userData=Pe(Pe({},a.userData),{},{[st]:n,[ht]:1})}if(!r.has(n))throw new Error(`Missing material asset ${n} in scene ${u.id}`);ut(r.get(n),u.id)}const n={},p=(e,i,o)=>{var s,a,c;const l=r.get(i.assetId);if(!l)throw new Error(`Missing material asset ${i.assetId} in scene ${u.id}`);const d=t.get(null!=o?o:e),p=(null==d||null===(s=d.userData)||void 0===s?void 0:s._materialAssetId)===i.assetId?d.uuid:null!==(a=null===(c=[...t.values()].find(e=>{var t;return(null===(t=e.userData)||void 0===t?void 0:t._materialAssetId)===i.assetId}))||void 0===c?void 0:c.uuid)&&void 0!==a?a:St(l.id,"material",l.material.uuid),h=n[p];if(h&&h.assetId!==i.assetId)throw new Error(`Conflicting material UUID ${p} in scene ${u.id}`);n[p]={assetId:i.assetId,locked:!(!(null==h?void 0:h.locked)&&!i.locked)},i.locked&&(l.locked=!0)};for(const[r,i]of Object.entries(null!==(a=u.materialAliases)&&void 0!==a?a:{}))p(r,i);for(const[r,i]of Object.entries(null!==(c=u.scene.materialAliases)&&void 0!==c?c:{})){const e=t.get(null==i?void 0:i.materialUuid);if(!r||!e||void 0!==i.locked&&"boolean"!=typeof i.locked)throw new Error(`Invalid runtime material alias ${r} in scene ${u.id}`);p(r,{assetId:e.userData[st],locked:!!i.locked},e.uuid)}Object.keys(n).length?u.materialAliases=n:delete u.materialAliases,delete u.scene.materialAliases}return n.schemaVersion=Math.max(n.schemaVersion,4),n.materialLibrary=o,it(n),n}function nn(e,t=[]){return cn(e,yt(t))}function rn(e,t=[]){return ln(e,yt(t))}function on(e,t=[]){const n=yt(t);return e.map(e=>cn(e,n))}function sn(e,t){if(Object.is(e,t))return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t||Array.isArray(e)!==Array.isArray(t))return!1;const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>Object.hasOwn(t,n)&&sn(e[n],t[n]))}function an(e,t,n,r){const i=yt(t),o=yt(n);if(i.size!==o.size)throw new Error("Material definition patches cannot add or remove assets");const s=function(e,t){if(void 0===e)return;const n=e=>Array.isArray(e)&&e.every(e=>"string"==typeof e&&!!e)&&new Set(e).size===e.length;if(!e||!n(e.assetIds)||!n(e.properties))throw new Error("Invalid material definition scope");const r=new Set(e.assetIds);if(r.size!==t.length||t.some(e=>!r.has(e)))throw new Error("Material definition scope must match the patched assets");return new Set(e.properties)}(r,[...o.keys()]),a=/* @__PURE__ */new Map,c=/* @__PURE__ */new Set(["uuid","type","metadata","textures","images","nodes","inputNodes","uniforms","userData","name"]),l=e=>null==e||"string"==typeof e||"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e);for(const[d,u]of o){const e=i.get(d);if(!e||!sn(e.scope,u.scope)||e.locked!==u.locked)throw new Error("Material definition patches cannot change asset identity, scope or lock");if(e.name!==u.name&&s&&!s.has("name"))throw new Error("Material definition patch exceeds declared properties: name");const t=[];for(const n of/* @__PURE__ */new Set([...Object.keys(e.material),...Object.keys(u.material)]))if(!sn(e.material[n],u.material[n])||Object.hasOwn(e.material,n)!==Object.hasOwn(u.material,n)){if(c.has(n)||Ot(n)||!l(e.material[n])||!l(u.material[n]))throw new Error(`Material definition patch requires full materialization: ${n}`);if(s&&!s.has(n))throw new Error(`Material definition patch exceeds declared properties: ${n}`);t.push(n)}a.set(d,{asset:u,properties:t})}return e.map(e=>{var t;let n=!1;const r=(null!==(t=e.scene.materials)&&void 0!==t?t:[]).map(t=>{var r;const i=a.get(null===(r=t.userData)||void 0===r?void 0:r[st]);if(!i)return t;if(ut(i.asset,e.id),"string"!=typeof t.uuid||!t.uuid||t.type!==i.asset.material.type)throw new Error("Material definition patches require normalized scene bindings");n=!0;const o=Pe(Pe({},t),{},{name:i.asset.name,userData:Pe(Pe({},t.userData),{},{[ht]:i.asset.revision})});for(const e of i.properties)Object.hasOwn(i.asset.material,e)?o[e]=i.asset.material[e]:delete o[e];return o});return n?Pe(Pe({},e),{},{scene:Pe(Pe({},e.scene),{},{materials:r})}):e})}function cn(e,t){return ln(at(e),t)}function ln(e,t){var n,r,i,o,s,a,c;const l=e;Qt(e,t);const d=e.scene;delete d.materialAliases;const u=null!==(n=d.materials)&&void 0!==n?n:[],p=Jt(u),h={};for(const[D,P]of Object.entries(null!==(r=e.materialAliases)&&void 0!==r?r:{})){var f;const e=t.get(P.assetId);if(!e)throw new Error(`Missing material asset ${P.assetId} in scene ${l.id}`);const n=p.resolve(D,P.assetId),r=null!==(f=null==n?void 0:n.uuid)&&void 0!==f?f:St(e.id,"material",e.material.uuid),i=h[r];h[r]={assetId:P.assetId,locked:!(!(null==i?void 0:i.locked)&&!P.locked)}}Object.keys(h).length?e.materialAliases=h:delete e.materialAliases;for(const[D,P]of Object.entries(null!==(i=e.materialAliases)&&void 0!==i?i:{})){if(p.bound(D,P.assetId))continue;const e=t.get(P.assetId);if(!e)throw new Error(`Missing material asset ${P.assetId} in scene ${l.id}`);const n={uuid:D,type:e.material.type,userData:{[st]:e.id,[ht]:e.revision}};u.push(n),p.add(n)}u.length&&(d.materials=u);const v=null!==(o=d.textures)&&void 0!==o?o:[],m=null!==(s=d.images)&&void 0!==s?s:[],g=Zt(v),y=Zt(m),b=new Set(v.map(e=>e.uuid)),w=/* @__PURE__ */new Map,j=/* @__PURE__ */new Set;for(const D of null!==(a=d.materials)&&void 0!==a?a:[]){var S,A,O;const e=null===(S=D.userData)||void 0===S?void 0:S[st];if(void 0===e)continue;const n=t.get(e);if(!n)throw new Error(`Missing material asset ${e} in scene ${l.id}`);ut(n,l.id);for(const t of ot(D,b))j.add(t);if(w.has(e))continue;const r=lt(n);for(const t of null!==(A=r.images)&&void 0!==A?A:[]){const e=y.get(t.uuid);void 0!==e?m[e]=t:(y.set(t.uuid,m.length),m.push(t))}for(const t of null!==(O=r.textures)&&void 0!==O?O:[]){const e=g.get(t.uuid);b.add(t.uuid),void 0!==e?v[e]=t:(g.set(t.uuid,v.length),v.push(t))}delete r.textures,delete r.images,delete r.metadata,w.set(e,r)}d.materials&&(d.materials=d.materials.map(e=>{var t;const n=w.get(null===(t=e.userData)||void 0===t?void 0:t[st]);return n?Pe(Pe({},at(n)),{},{uuid:e.uuid}):e}));const M=/* @__PURE__ */new Set;for(const D of null!==(c=d.materials)&&void 0!==c?c:[])for(const e of ot(D,b))M.add(e);tt(d.object,e=>{for(const t of["background","environment"])"string"==typeof e[t]&&M.add(e[t])});const x=/* @__PURE__ */new Set,I=v.filter(e=>{if(!j.has(e.uuid)||M.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&x.add(t);return!1}),E=new Set(I.flatMap(e=>[e.image].flat()));return(d.textures||I.length)&&(d.textures=I),(d.images||m.length)&&(d.images=m.filter(e=>!x.has(e.uuid)||E.has(e.uuid))),e}function dn(e){const t=Ze(e),n=yt(t.materialLibrary);return mt(t,n),t.scenes=t.scenes.map(e=>cn(e,n)),t}function un(e){const t=et(e),n=yt(t.materialLibrary);return mt(t,n),t.scenes=t.scenes.map(e=>ln(e,n)),t}function pn(e,t={}){var n,r,i;const o=t.consumeInput?e.scene:at(e.scene);if(t.omitPrefabPreviews){const e=t=>{var n,r,i,o,s;return!t||!((null===(n=t.userData)||void 0===n?void 0:n._prefabPreview)||(null===(r=t.userData)||void 0===r||null===(r=r._baseObjectUserData)||void 0===r?void 0:r._prefabPreview)||(null===(i=t.userData)||void 0===i?void 0:i._templatePreviewContainer)||(null===(o=t.userData)||void 0===o||null===(o=o._baseObjectUserData)||void 0===o?void 0:o._templatePreviewContainer)||"@TemplatePreview"===(null===(s=t.userData)||void 0===s?void 0:s._baseObjectKeyType))&&(t.children&&(t.children=t.children.filter(e)),!0)};if(!e(o.object))throw new Error("A scene root cannot be a prefab preview")}const s=new Map((null!==(n=o.materials)&&void 0!==n?n:[]).map(e=>{var t;return[null===(t=e.userData)||void 0===t?void 0:t[st],e.uuid]})),a=new Map((null!==(r=o.materials)&&void 0!==r?r:[]).map(e=>[e.uuid,e])),c=Pe({},o.materialAliases);for(const[d,v]of Object.entries(null!==(i=e.materialAliases)&&void 0!==i?i:{})){var l,u,p,h,f;const t=(null===(l=a.get(d))||void 0===l||null===(l=l.userData)||void 0===l?void 0:l._materialAssetId)===v.assetId?d:s.get(v.assetId);if(!t)throw new Error(`Missing material for alias ${d} in scene ${e.id}`);if(c[d]&&c[d].materialUuid!==t)throw new Error(`Conflicting material catalog ${d}`);c[d]={materialUuid:t,locked:!(!(null===(u=c[d])||void 0===u?void 0:u.locked)&&!v.locked),roles:[.../* @__PURE__ */new Set([...null!==(p=null===(h=c[d])||void 0===h?void 0:h.roles)&&void 0!==p?p:[],...null!==(f=v.roles)&&void 0!==f?f:[]])]}}return Object.keys(c).length&&(o.materialAliases=c),d(o),o}var hn=["prefabLibrary"],fn=["interactions"],vn=["baseUrl"],mn=["data"],gn=["scene"],yn=["format","schemaVersion","scenes"];function bn(e){return bt(e),function(e){const{prefabLibrary:t}=e,n=Ge(e,hn),r=null==t?void 0:t.map(pt),i=structuredClone(Pe(Pe({},n),(null==r?void 0:r.length)?{prefabLibrary:r}:{})),o=e=>{var t;for(const n of[e.userData,null===(t=e.userData)||void 0===t?void 0:t._baseObjectUserData])n&&(delete n._prefabLink,delete n._prefabNodeId,delete n._prefabPreview,delete n._templatePreviewContainer,delete n.prefab)},s=i.prefabLibrary,a=e=>{var t;if(e){o(e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])a(n)}};for(const p of null!=s?s:[])a(p.snapshot.object);for(const p of i.scenes){var c,l,d,u;const e=/* @__PURE__ */new Set,t=n=>{var r,i,o;for(const t of[n.uuid,null===(r=n.userData)||void 0===r?void 0:r._baseObjectUuid,null===(i=n.userData)||void 0===i?void 0:i._baseObjectKey])"string"==typeof t&&e.add(t);for(const e of null!==(o=n.children)&&void 0!==o?o:[])t(e)},n=e=>{var r,i,s,a,c;return!e||((null===(r=e.userData)||void 0===r?void 0:r._prefabPreview)||(null===(i=e.userData)||void 0===i||null===(i=i._baseObjectUserData)||void 0===i?void 0:i._prefabPreview)||(null===(s=e.userData)||void 0===s?void 0:s._templatePreviewContainer)||(null===(a=e.userData)||void 0===a||null===(a=a._baseObjectUserData)||void 0===a?void 0:a._templatePreviewContainer)||"@TemplatePreview"===(null===(c=e.userData)||void 0===c?void 0:c._baseObjectKeyType)?(t(e),!1):(o(e),e.children&&(e.children=e.children.filter(n)),!0))};if(!n(p.scene.object))throw new Error("A scene root cannot be a prefab preview");delete p.interactions;const r=null===(c=p.vis.options)||void 0===c?void 0:c.sceneBindings;if((r?[r.container,r.continentsBackground,r.sphere,r.map,r.secondaryMap,null===(l=r.region)||void 0===l?void 0:l.object,...null!==(d=r.parentBackgrounds)&&void 0!==d?d:[],...null!==(u=r.cities)&&void 0!==u?u:[]]:[]).some(t=>e.has(t)))throw new Error(`Prefab preview is still referenced by scene bindings in scene ${p.id}`)}return i}(e)}function wn(e,t={}){const n=t.omitEditorAssets?bn(e):Pe(Pe({},e),{},{scenes:e.scenes.map(e=>{let{interactions:t}=e;return Ge(e,fn)})},e.prefabLibrary?{prefabLibrary:e.prefabLibrary.map(pt)}:{});t.omitEditorAssets||bt(n);const r=dn(n);if(r.schemaVersion>=5){var i,o;const e=S("encode");for(const t of r.scenes)t.scene=he(t.scene,e);for(const t of null!==(i=r.materialLibrary)&&void 0!==i?i:[])t.material=he(t.material,e);for(const t of null!==(o=r.prefabLibrary)&&void 0!==o?o:[])t.snapshot=he(t.snapshot,e)}const s=Et(r);if(r.runtimeAssets){const e=r.runtimeAssets,{baseUrl:t}=e,n=Ge(e,vn);r.runtimeAssets=Pe(Pe({},n),{},{entries:n.entries.map(e=>{let{data:t}=e,n=Ge(e,mn);if(void 0===t)throw Error(`导出资源缺少文件内容:${n.path}`);return s[n.path]={data:We(t),mimeType:n.mimeType},n})})}const a=r,c=(t.sceneDirectory||"scenes").replace(/^\/+|\/+$/g,""),l=t.extension||".json.gz",d={},u=a.scenes.map((e,t)=>{const n=`${c}/${t}-${r=e.id,encodeURIComponent(r).replaceAll("%","_")}${l}`;var r;d[n]=structuredClone(e);const{scene:i}=e;return Pe(Pe({},Ge(e,gn)),{},{source:n,bytes:(new TextEncoder).encode(JSON.stringify(e)).length})}),{format:p,schemaVersion:h,scenes:f}=a;return{manifest:Pe(Pe({},Ge(a,yn)),{},{format:Ke,schemaVersion:5,scenes:u}),scenes:d,assets:s}}var jn=["scenes","materialLibrary","prefabLibrary"];function Sn(e,t=e.entrySceneId,n={}){const r=e.scenes.find(e=>e.id===t);if(!r)throw Error(`Scene ${t} was not found`);if(!n.resolveResources)return r;Qe(r);const i=structuredClone(r);return e.materialLibrary&&rn(i,e.materialLibrary),i}function An(e,t){const n=Sn(e,t,{resolveResources:!0}),{scenes:r,materialLibrary:i,prefabLibrary:o}=e,s=Ge(e,jn);return Pe(Pe(Pe(Pe({},structuredClone(s)),o?{prefabLibrary:structuredClone(o)}:{}),i?{materialLibrary:Vt(n,i,o)}:{}),{},{entrySceneId:n.id,scenes:[Pe(Pe({},n),{},{interactions:void 0})]})}function On(e){var t,n,r,i;const o=structuredClone(e);if(o.userData){var s;o.uuid=(null===(s=o.userData._resourceSource)||void 0===s?void 0:s.materialUuid)||o.uuid,delete o.userData[Je];for(const e of["_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete o.userData[e];Object.keys(o.userData).length||delete o.userData}const a=/* @__PURE__ */new Map,c=/* @__PURE__ */new Map;for(const h of null!==(t=o.textures)&&void 0!==t?t:[]){var l;const e=null===(l=h.userData)||void 0===l?void 0:l[Je];a.set(h.uuid,(null==e?void 0:e.textureUuid)||h.uuid),[h.image].flat().forEach((t,n)=>{var r;"string"==typeof t&&c.set(t,(null==e||null===(r=e.imageUuids)||void 0===r?void 0:r[n])||t)}),h.userData&&(delete h.userData[Je],Object.keys(h.userData).length||delete h.userData)}const d=(e,t)=>{var n;if("string"==typeof e)return null!==(n=t.get(e))&&void 0!==n?n:e;if(Array.isArray(e))return e.map(e=>d(e,t));if(e&&"object"==typeof e)for(const r of Object.keys(e))e[r]=d(e[r],t);return e};for(const h of null!==(n=o.textures)&&void 0!==n?n:[]){var u;h.uuid=null!==(u=a.get(h.uuid))&&void 0!==u?u:h.uuid,void 0!==h.image&&(h.image=d(h.image,c))}for(const h of null!==(r=o.images)&&void 0!==r?r:[])h.uuid=null!==(i=c.get(h.uuid))&&void 0!==i?i:h.uuid;for(const h of Object.keys(o))if(("map"===h||"matcap"===h||h.endsWith("Map"))&&"string"==typeof o[h]){var p;o[h]=null!==(p=a.get(o[h]))&&void 0!==p?p:o[h]}return o.uniforms&&(o.uniforms=d(o.uniforms,a)),Ae(o,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),o}var Mn=["textures","images","metadata"],xn=["textures","images","metadata"],In=oe;function En(e,t){if(!t.length)return e;const n=new Map(t.map(e=>[e.uuid,e])),r=(null!=e?e:[]).map(e=>{const t=n.get(e.uuid);return n.delete(e.uuid),t&&!In(e,t)?t:e});return r.push(...n.values()),e&&r.length===e.length&&r.every((t,n)=>t===e[n])?e:r}function Dn(e,t){const n=/* @__PURE__ */new Set;for(const[i,o]of Object.entries(e))("map"===i||"matcap"===i||/Map$/.test(i))&&"string"==typeof o&&t.has(o)&&n.add(o);const r=e=>{"string"==typeof e?t.has(e)&&n.add(e):Array.isArray(e)?e.forEach(r):e&&"object"==typeof e&&Object.values(e).forEach(r)};return r(e.uniforms),Ae(e,(e,t)=>r(e[t])),n}function Pn(e,t){var n,r,i,o,s;if(!t.size)return e;const a=e.scene,c=/* @__PURE__ */new Set,l=(e,t,n,r=/* @__PURE__ */new Set)=>{var i;if("string"!=typeof e){if(e&&"object"==typeof e&&!ArrayBuffer.isView(e)&&!r.has(e))if(r.add(e),void 0!==e._sharedRef)l(null===(i=a._sharedOptionsPool)||void 0===i?void 0:i[e._sharedRef],t,n,r);else for(const o of Object.values(e))l(o,t,n,r)}else t.has(e)&&n.add(e)},d=e=>{var n,r,i;l(e.material,t,c),l(null===(n=e.userData)||void 0===n?void 0:n._baseObjectOptions,t,c),l(null===(r=e.userData)||void 0===r||null===(r=r._prefabLink)||void 0===r?void 0:r.baseline,t,c);for(const t of null!==(i=e.children)&&void 0!==i?i:[])d(t)};d(a.object),l(e.vis.options,t,c),l(a.materialAliases,t,c);const u=new Set(Object.values(null!==(n=e.materialAliases)&&void 0!==n?n:{}).map(e=>e.assetId)),p=(null!==(r=a.materials)&&void 0!==r?r:[]).filter(e=>{var n;return t.has(e.uuid)&&!c.has(e.uuid)&&!u.has(null===(n=e.userData)||void 0===n?void 0:n._materialAssetId)});if(!p.length)return e;const h=new Set(p.map(e=>e.uuid)),f=a.materials.filter(e=>!h.has(e.uuid)),v=new Set((null!==(i=a.textures)&&void 0!==i?i:[]).map(e=>e.uuid)),m=new Set(p.flatMap(e=>[...Dn(e,v)])),g=new Set(f.flatMap(e=>[...Dn(e,v)])),y=e=>{var t,n,r;l(e.background,v,g),l(e.environment,v,g),l(null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions,v,g),l(null===(n=e.userData)||void 0===n||null===(n=n._prefabLink)||void 0===n?void 0:n.baseline,v,g);for(const i of null!==(r=e.children)&&void 0!==r?r:[])y(i)};y(a.object),l(e.vis.options,v,g);const b=/* @__PURE__ */new Set,w=null===(o=a.textures)||void 0===o?void 0:o.filter(e=>{if(!m.has(e.uuid)||g.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&b.add(t);return!1}),j=new Set((null!=w?w:[]).flatMap(e=>[e.image].flat())),S=null===(s=a.images)||void 0===s?void 0:s.filter(e=>!b.has(e.uuid)||j.has(e.uuid)),A=Pe(Pe({},a),{},{materials:f});for(const[M,x]of[["materials",f],["textures",w],["images",S]]){var O;(null==x?void 0:x.length)!==(null===(O=a[M])||void 0===O?void 0:O.length)&&((null==x?void 0:x.length)?A[M]=x:delete A[M])}return Pe(Pe({},e),{},{scene:A})}function Cn(e,t,n){const r=new Map(t.map(e=>[e.id,e])),i=/* @__PURE__ */new Map,o=e.scenes.map(e=>{var o,s,a,c,l,d;if(n&&!n.has(e.id)||!t.some(t=>((e,t)=>{var n,r;return(null!==(n=e.scene.materials)&&void 0!==n?n:[]).some(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n._materialAssetId)===t})||Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}).some(e=>e.assetId===t)})(e,t.id)))return e;const u=e.scene,p=/* @__PURE__ */new Set,h=new Set((null!==(o=u.textures)&&void 0!==o?o:[]).map(e=>e.uuid)),f=(null!==(s=u.materials)&&void 0!==s?s:[]).map(t=>{var n;const o=r.get(null===(n=t.userData)||void 0===n?void 0:n[st]);if(!o)return t;if("scene"===o.scope.kind&&o.scope.sceneId!==e.id)throw Error("场景不能引用其他场景的材质");for(const e of Dn(t,h))p.add(e);let s=i.get(o.id);s||(s=lt(o),i.set(o.id,s));const{textures:a,images:c,metadata:l}=s,d=Pe(Pe({},Ge(s,Mn)),{},{uuid:t.uuid});return In(t,d)?t:d});for(const[t,n]of Object.entries(null!==(a=e.materialAliases)&&void 0!==a?a:{})){const e=r.get(n.assetId);if(!e||f.some(n=>{var r;return n.uuid===t&&(null===(r=n.userData)||void 0===r?void 0:r._materialAssetId)===e.id}))continue;let o=i.get(e.id);o||(o=lt(e),i.set(e.id,o));const{textures:s,images:a,metadata:c}=o,l=Ge(o,xn);f.push(Pe(Pe({},l),{},{uuid:t}))}const v=new Set(f.map(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[st]})),m=t.filter(e=>v.has(e.id)).map(e=>i.get(e.id));let g=En(u.textures,m.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.textures)&&void 0!==t?t:[]})),y=En(u.images,m.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.images)&&void 0!==t?t:[]}));const b=new Set((null!==(c=g)&&void 0!==c?c:[]).map(e=>e.uuid)),w=/* @__PURE__ */new Set;for(const t of f)for(const e of Dn(t,b))w.add(e);const j=e=>{var t;for(const n of["background","environment"])"string"==typeof(null==e?void 0:e[n])&&w.add(e[n]);for(const n of null!==(t=null==e?void 0:e.children)&&void 0!==t?t:[])j(n)};j(u.object);const S=/* @__PURE__ */new Set;if(g){const e=g.filter(e=>{if(!p.has(e.uuid)||w.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&S.add(t);return!1});e.length!==g.length&&(g=e)}if(y&&S.size){var A;const e=new Set((null!==(A=g)&&void 0!==A?A:[]).flatMap(e=>[e.image].flat())),t=y.filter(t=>!S.has(t.uuid)||e.has(t.uuid));t.length!==y.length&&(y=t)}const O=Pe(Pe(Pe({},u),{},{materials:f},void 0!==g?{textures:g}:{}),void 0!==y?{images:y}:{});return(null===(l=u.textures)||void 0===l?void 0:l.length)&&!(null==g?void 0:g.length)&&delete O.textures,(null===(d=u.images)||void 0===d?void 0:d.length)&&!(null==y?void 0:y.length)&&delete O.images,Pe(Pe({},e),{},{scene:O})});return Pe(Pe({},e),{},{scenes:o})}function Rn(e,t){var n,r,i;if(!t.id||(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t.id)))throw Error("材质标识重复");const o=Pe(Pe({id:t.id,name:t.name,revision:1,material:jt(t.material),scope:structuredClone(null!==(r=t.scope)&&void 0!==r?r:{kind:"project"})},void 0!==t.locked?{locked:t.locked}:{}),void 0!==t.alwaysExport?{alwaysExport:t.alwaysExport}:{});return Pe(Pe({},e),{},{materialLibrary:[...null!==(i=e.materialLibrary)&&void 0!==i?i:[],o]})}function Ln(e,t){var n;if(!(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t.id)))throw Error("材质已不存在");return Pe(Pe({},e),{},{materialLibrary:e.materialLibrary.map(e=>e.id===t.id?t:e)})}function kn(e,t){return Cn(Ln(e,t),[t])}function Bn(e,t,n){var r,i,o;const s=e.scenes.findIndex(e=>e.id===t),a=e.scenes[s];if(!a)throw Error("资源场景已不存在");const c=(null!==(r=a.scene.materials)&&void 0!==r?r:[]).filter(e=>{var t;return void 0===(null===(t=e.userData)||void 0===t?void 0:t._materialAssetId)&&(!n||n.has(e.uuid))});if(!c.length)return e;const l=new Set((null!==(i=e.materialLibrary)&&void 0!==i?i:[]).map(e=>e.id)),d=ct(a),u=[],p=/* @__PURE__ */new Map;for(const f of c){let e=0,n=St(t,"material-asset",f.uuid);for(;l.has(n);)n=St(t,"material-asset",`${f.uuid}:${++e}`);l.add(n);const r={id:n,revision:1,name:f.name||f.uuid,scope:{kind:"scene",sceneId:t},material:On(d(f.uuid))};u.push(r),p.set(f.uuid,Pe(Pe({},f),{},{userData:Pe(Pe({},f.userData),{},{[st]:n,[ht]:1})}))}const h=e.scenes.slice();return h[s]=Pe(Pe({},a),{},{scene:Pe(Pe({},a.scene),{},{materials:a.scene.materials.map(e=>{var t;return null!==(t=p.get(e.uuid))&&void 0!==t?t:e})})}),Cn(Pe(Pe({},e),{},{scenes:h,materialLibrary:[...null!==(o=e.materialLibrary)&&void 0!==o?o:[],...u]}),u,/* @__PURE__ */new Set([t]))}function Tn(e,t){var n;const r=null===(n=e.children)||void 0===n?void 0:n.map(e=>Tn(e,t));return t(r&&r.some((t,n)=>t!==e.children[n])?Pe(Pe({},e),{},{children:r}):e)}function Un(e,t,n,r,i){return _n(e,t,n,r,i,!1)}function _n(e,t,n,r,i,o){var s,a,l,d;const u=e.scenes.findIndex(e=>e.id===t),p=e.scenes[u];if(!p)throw Error("资源场景已不存在");const h=new Map((null!==(s=e.materialLibrary)&&void 0!==s?s:[]).map(e=>[e.id,e])),f=[...null!==(a=p.scene.materials)&&void 0!==a?a:[]],v=/* @__PURE__ */new Map,m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Set;for(const c of f)m.has(null===(l=c.userData)||void 0===l?void 0:l._materialAssetId)||m.set(null===(d=c.userData)||void 0===d?void 0:d[st],c.uuid);const y=/* @__PURE__ */new Map;for(const c of/* @__PURE__ */new Set([...n.map(e=>e.assetId),...i?[i]:[]])){const e=h.get(c);if(!e||"scene"===e.scope.kind&&e.scope.sceneId!==t)throw Error("此材质仅属于其他场景");if(y.set(e.id,e),!m.has(e.id)){const t=St(e.id,"material",e.material.uuid);if(f.some(e=>e.uuid===t))throw Error("材质运行时标识重复");f.push({uuid:t,type:e.material.type,userData:{[st]:e.id,[ht]:e.revision}}),m.set(e.id,t)}}for(const c of n){var b;const e=null!==(b=v.get(c.uuid))&&void 0!==b?b:[];e.push(c),v.set(c.uuid,e)}const w=/* @__PURE__ */new Set,j=Tn(p.scene.object,e=>{var t;let n=e;for(const r of null!==(t=v.get(e.uuid))&&void 0!==t?t:[]){if(!Number.isInteger(r.slot)||r.slot<0||(Array.isArray(n.material)?r.slot>=n.material.length:0!==r.slot||(o?void 0===n.material:!n.material)))throw Error("材质部位已不存在");const t=m.get(r.assetId),i=Array.isArray(n.material)?n.material[r.slot]:n.material;"string"==typeof i&&i!==t&&g.add(i),n=Pe(Pe({},n),{},{material:Array.isArray(n.material)?n.material.map((e,n)=>n===r.slot?t:e):t}),w.add(e.uuid)}const i=null==r?void 0:r.get(e.uuid);for(const[r,o]of null!=i?i:[])r!==o&&g.add(r);return i?function(e,t,n){let r;const i=e=>e&&"object"==typeof e?1===Object.keys(e).length&&void 0!==e._sharedRef?i(null==t?void 0:t[e._sharedRef]):Array.isArray(e)?e.map(i):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,i(t)])):e;return c(e.userData,(t,o)=>{var s;n.has(t[o])&&(null!==(s=r)&&void 0!==s||(r=Pe(Pe({},e),{},{userData:Pe(Pe({},e.userData),{},{_baseObjectOptions:i(e.userData._baseObjectOptions)})})))},t),r?(c(r.userData,(e,t)=>{var r;e[t]=null!==(r=n.get(e[t]))&&void 0!==r?r:e[t]}),r):e}(n,p.scene._sharedOptionsPool,i):n});if([...v.keys()].some(e=>!w.has(e)))throw Error("目标对象已不存在");const S=e.scenes.slice();S[u]=Pe(Pe({},p),{},{scene:Pe(Pe({},p.scene),{},{object:j,materials:f})});const A=Cn(Pe(Pe({},e),{},{scenes:S}),[...y.values()],/* @__PURE__ */new Set([t])),O=Pn(A.scenes[u],g);return O===A.scenes[u]?A:Pe(Pe({},A),{},{scenes:A.scenes.map((e,t)=>t===u?O:e)})}function $n(e,t,n,r,i,o,s=0){var a;const c=null===(a=e.materialLibrary)||void 0===a?void 0:a.find(e=>e.id===t);if(!c)throw Error("材质已不存在");if("scene"===r&&"scene"===c.scope.kind)return e;let l=Rn(e,Pe(Pe({},c),{},{id:n,name:"scene"===r?c.name:`${c.name} 副本`,scope:"scene"===r?{kind:"scene",sceneId:i}:c.scope}));const d=l.materialLibrary.find(e=>e.id===n);if("asset"===r)return l;if("object"===r){var u,p,h;const r=[],a=/* @__PURE__ */new Map;let c=!1;const f=St(n,"material",d.material.uuid),v=new Set((null!==(u=null===(p=e.scenes.find(e=>e.id===i))||void 0===p?void 0:p.scene.materials)&&void 0!==u?u:[]).filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[st])===t}).map(e=>e.uuid)),m=(e,t=!1)=>{var i;if(e){if(t||(t=e.uuid===o),t&&(c=!0),t){const t=new Map([...v].map(e=>[e,f]));if(void 0!==e.material){r.push({uuid:e.uuid,slot:s,assetId:n});const i=Array.isArray(e.material)?e.material[s]:e.material;"string"==typeof i&&t.set(i,f)}a.set(e.uuid,t)}for(const n of null!==(i=e.children)&&void 0!==i?i:[])m(n,t)}};if(m(null===(h=e.scenes.find(e=>e.id===i))||void 0===h?void 0:h.scene.object),!c||!r.length)throw Error("目标对象没有可编辑材质");return Un(l,i,r,a,n)}return l=Pe(Pe({},l),{},{scenes:l.scenes.map(e=>{var r;return e.id!==i?e:Pe(Pe(Pe({},e),e.materialAliases?{materialAliases:Object.fromEntries(Object.entries(e.materialAliases).map(([e,r])=>[e,r.assetId===t?Pe(Pe({},r),{},{assetId:n}):r]))}:{}),{},{scene:Pe(Pe({},e.scene),{},{materials:(null!==(r=e.scene.materials)&&void 0!==r?r:[]).map(e=>{var r;return(null===(r=e.userData)||void 0===r?void 0:r._materialAssetId)===t?Pe(Pe({},e),{},{userData:Pe(Pe({},e.userData),{},{[st]:n,[ht]:d.revision})}):e})})})})}),Cn(l,[d],/* @__PURE__ */new Set([i]))}function zn(e,t){var n;const r=null===(n=e.materialLibrary)||void 0===n?void 0:n.find(e=>e.id===t);if(!r)throw Error("材质已不存在");return"project"===r.scope.kind?e:Pe(Pe({},e),{},{materialLibrary:e.materialLibrary.map(e=>e===r?Pe(Pe({},r),{},{scope:{kind:"project"}}):e)})}function Gn(e,t){var n;const r=null===(n=e.materialLibrary)||void 0===n?void 0:n.find(e=>e.id===t);if(!r)throw Error("材质已不存在");if(r.locked)throw Error("此材质由场景功能保留,不能删除");if(qt(e,t).length)throw Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(Ft(e,t).some(e=>!e.alias))throw Error("材质仍被对象或场景配置使用,请先替换后再删除");return Pe(Pe({},e),{},{materialLibrary:e.materialLibrary.filter(e=>e.id!==t),scenes:e.scenes.map(e=>{var n,r,i,o;const s=new Set((null!==(n=e.scene.materials)&&void 0!==n?n:[]).filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[st])===t}).map(e=>e.uuid)),a=Object.fromEntries(Object.entries(null!==(r=e.materialAliases)&&void 0!==r?r:{}).filter(([,e])=>{if(e.assetId!==t)return!0;if(e.locked)throw Error("此材质由场景功能保留,不能删除");return!1})),c=Object.fromEntries(Object.entries(null!==(i=e.scene.materialAliases)&&void 0!==i?i:{}).filter(([,e])=>!s.has(e.materialUuid)));if(!s.size&&In(a,null!==(o=e.materialAliases)&&void 0!==o?o:{}))return e;const l=Pe(Pe({},e),{},{scene:Pe({},e.scene)});return Object.keys(a).length?l.materialAliases=a:delete l.materialAliases,Object.keys(c).length?l.scene.materialAliases=c:delete l.scene.materialAliases,Pn(l,s)})})}var Nn=Object.freeze({materialize:Cn,create:Rn,replace:kn,registerSceneMaterials:Bn,bindSlots:Un,duplicate:$n,promote:zn,remove:Gn});function Wn(e,t={},n=/* @__PURE__ */new WeakSet){const r=null==e?void 0:e.object;if(!r||n.has(r))return;n.add(r);const i=[],o=(n,r)=>{var s,a,c;if(!n)return;const l=n.userData;if(["PlaneMap","Countries"].includes(null==l?void 0:l._baseObjectObjectType)){var d,u,p,h;const t=void 0!==(null===(d=l._baseObjectOptions)||void 0===d?void 0:d._sharedRef)?null===(u=e._sharedOptionsPool)||void 0===u?void 0:u[l._baseObjectOptions._sharedRef]:l._baseObjectOptions,n=null!==(p=l._baseObjectUuid)&&void 0!==p?p:"string"==typeof l._baseObjectKey?l._baseObjectKey.split("#").slice(1).join("#"):void 0;r=null!==(h=null==t?void 0:t.uuid)&&void 0!==h?h:n?String(n):void 0}!function(e,t,n,r){var i,o,s,a,c,l;const d=e.userData;if(!d)return;const u="string"==typeof d._baseObjectKey?d._baseObjectKey:void 0,p=String(null!==(i=null!==(o=d._baseObjectUuid)&&void 0!==o?o:null==u?void 0:u.split("#").slice(1).join("#"))&&void 0!==i?i:""),h=d._baseObjectObjectType,f=null!==(s=d._baseObjectUserData)&&void 0!==s?s:{},v=null!==(a=null==u?void 0:u.split("#")[0])&&void 0!==a?a:d._baseObjectKeyType;var m,g;if("PlaneMap"===h)if(/^\d+$/.test(p))null!==(m=f.mapRole)&&void 0!==m||(f.mapRole="region"),null!==(g=f.adcode)&&void 0!==g||(f.adcode=Number(p));else if("bg-100000"===p||"bg-0"===p){var y,b;null!==(y=f.mapRole)&&void 0!==y||(f.mapRole="bg-0"===p?"worldBackground":"parentBackground"),null!==(b=f.adcode)&&void 0!==b||(f.adcode="bg-0"===p?0:1e5)}const w=p.match(/^city(\d+)(?:-(.+))?$/);if(w){var j,S,A;null!==(j=f.adcode)&&void 0!==j||(f.adcode=Number(w[1]));const e=w[2];null!==(S=f.mapRole)&&void 0!==S||(f.mapRole=void 0===e?"city":"building"===e?"cityBuilding":"road"===e?"cityRoad":"river"===e||"grassland"===e?e:e.startsWith("building-")?"buildingHeight":void 0),(null==e?void 0:e.startsWith("building-"))&&(null!==(A=f.mapFeatureId)&&void 0!==A||(f.mapFeatureId=e.slice(9)))}var O,M;if("chinaCopy"===p&&(null!==(c=f.mapRole)&&void 0!==c||(f.mapRole="chinaPlaneCopy")),"mapLabel"===p&&(null!==(l=f.mapRole)&&void 0!==l||(f.mapRole="labels")),p.startsWith("mapLabel-")&&(null!==(O=f.mapRole)&&void 0!==O||(f.mapRole="label"),null!==(M=f.mapFeatureId)&&void 0!==M||(f.mapFeatureId=p.slice(9))),r&&(f.mapGenerated||f.mapGeneratedId)){var x,I;const e=void 0!==(null===(x=d._baseObjectOptions)||void 0===x?void 0:x._sharedRef)?null===(I=n._sharedOptionsPool)||void 0===I?void 0:I[d._baseObjectOptions._sharedRef]:d._baseObjectOptions,r="extrudeLine"===v||"ExtrudeLine"===h?"extrudeLine":"ExtrudePolygon"===h?!1===(null==e?void 0:e.hasTop)?"mergedSide":"area":"Group"===h?"group":"Line"===h?"line":void 0;if(r){var E,D;const e="string"==typeof f.mapGeneratedId?f.mapGeneratedId:"",n=t?`${t}-`:"",i="extrudeLine"===r||"mergedSide"===r?"all":null!==(E=f.mapFeatureId)&&void 0!==E?E:e.includes(":")?e.slice(e.indexOf(":")+1):n&&p.startsWith(n)?p.slice(n.length):null!==(D=f.adcode)&&void 0!==D?D:p||"all";f.mapGenerated=!0,f.mapRole=r,f.mapFeatureId=String(i),f.mapGeneratedId=`${r}:${i}`}}Object.keys(f).length&&(d._baseObjectUserData=f)}(n,r,e,!1!==t.generated),(null==l||null===(s=l._prefabLink)||void 0===s?void 0:s.baseline)&&i.push(l._prefabLink.baseline);for(const e of null!==(a=n.children)&&void 0!==a?a:[])o(e,r);(null===(c=n.shadow)||void 0===c?void 0:c.camera)&&o(n.shadow.camera,r)};o(r);for(const s of i)Wn({object:s,_sharedOptionsPool:e._sharedOptionsPool},t,n)}function Fn(e,t,n){var r;if(!e)return;const i=(e,t)=>null==e?void 0:e.forEach((e,r)=>n([...t,r],e)),o=(e,t)=>null==e?void 0:e.forEach((e,r)=>{var i;return null==e||null===(i=e.tracks)||void 0===i?void 0:i.forEach((e,i)=>n([...t,r,"tracks",i,"name"],null==e?void 0:e.name,!0))});if(t){var s,a,c,l;const t=null===(s=e.vis)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.sceneBindings,r=["vis","options","sceneBindings"];if(t){for(const e of["container","continentsBackground","sphere","map","secondaryMap"])n([...r,e],t[e]);t.region&&n([...r,"region","object"],t.region.object);for(const e of["parentBackgrounds","cities"])i(t[e],[...r,e])}null===(a=e.interactions)||void 0===a||a.forEach((e,t)=>{var r;e&&(n(["interactions",t,"objectId"],e.objectId),i(null===(r=e.filter)||void 0===r?void 0:r.objectIds,["interactions",t,"filter","objectIds"]))}),null===(c=e.scene)||void 0===c||null===(c=c.skeletons)||void 0===c||c.forEach((e,t)=>i(null==e?void 0:e.bones,["scene","skeletons",t,"bones"])),o(null===(l=e.scene)||void 0===l?void 0:l.animations,["scene","animations"])}else{var d,u,p;const t=null===(d=e.vis)||void 0===d||null===(d=d.options)||void 0===d?void 0:d.materialBindings;if(t)for(const[e,r]of Object.entries(t))for(const t of Object.keys(null!=r?r:{}))n(["vis","options","materialBindings",e,t],r[t]);null===(u=e.vis)||void 0===u||null===(u=u.options)||void 0===u||null===(u=u.regionTextureRules)||void 0===u||u.forEach((e,t)=>n(["vis","options","regionTextureRules",t,"material"],null==e?void 0:e.material)),null===(p=e.scene)||void 0===p||null===(p=p.materials)||void 0===p||p.forEach((e,t)=>n(["scene","materials",t,"uuid"],null==e?void 0:e.uuid));for(const r of[["materialAliases"],["scene","materialAliases"]]){var h;let t=e;for(const e of r)t=null==t?void 0:t[e];for(const[e,i]of Object.entries(null!==(h=t)&&void 0!==h?h:{}))n([...r,e],e,!1,!0),n([...r,e,"materialUuid"],null==i?void 0:i.materialUuid)}}const f=(r,s)=>{var a,c,l;if(!r)return;if(t){var d,u;n([...s,"uuid"],r.uuid),n([...s,"target"],r.target);for(const e of[["userData"],["userData","_baseObjectUserData"]]){let t=r;for(const n of e)t=null==t?void 0:t[n];n([...s,...e,"copySource"],null==t?void 0:t.copySource)}const t=null===(d=r.userData)||void 0===d||null===(d=d._baseObjectOptions)||void 0===d?void 0:d.serializedClips;Array.isArray(t)?o(t,[...s,"userData","_baseObjectOptions","serializedClips"]):void 0!==(null==t?void 0:t._sharedRef)&&o(null===(u=e.scene)||void 0===u||null===(u=u._sharedOptionsPool)||void 0===u?void 0:u[t._sharedRef],["scene","_sharedOptionsPool",t._sharedRef])}else{var p,h;Array.isArray(r.material)?i(r.material,[...s,"material"]):n([...s,"material"],r.material);for(const t of null!==(p=null===(h=r.userData)||void 0===h?void 0:h._baseObjectMaterialRefs)&&void 0!==p?p:[]){var v;if(!Array.isArray(t)||!t.length||t.some(e=>"string"!=typeof e||["__proto__","prototype","constructor"].includes(e)))throw Error("Invalid object option material reference");let i=null===(v=r.userData)||void 0===v?void 0:v._baseObjectOptions,o=[...s,"userData","_baseObjectOptions"];for(const n of t){var m;if(void 0!==(null==i?void 0:i._sharedRef))o=["scene","_sharedOptionsPool",i._sharedRef],i=null===(m=e.scene)||void 0===m||null===(m=m._sharedOptionsPool)||void 0===m?void 0:m[i._sharedRef];if(!i||!Object.hasOwn(i,n))throw Error("Missing object option material reference");i=i[n],o=[...o,n]}n(o,i)}}const g=null===(a=r.userData)||void 0===a||null===(a=a._prefabLink)||void 0===a?void 0:a.baseline;g&&f(g,[...s,"userData","_prefabLink","baseline"]),null===(c=r.children)||void 0===c||c.forEach((e,t)=>f(e,[...s,"children",t])),(null===(l=r.shadow)||void 0===l?void 0:l.camera)&&f(r.shadow.camera,[...s,"shadow","camera"])};f(null===(r=e.scene)||void 0===r?void 0:r.object,["scene","object"])}function qn(e,t,n,r){if(!e||!t||t===n)return e;const i=function(e){let t=e;const n=/* @__PURE__ */new WeakSet,r=e=>{if(n.has(e))return e;const t=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e)),r=Object.getOwnPropertyDescriptors(e);for(const[n,i]of Object.entries(r))Array.isArray(e)&&"length"===n||(i.configurable=!0,"value"in i&&(i.writable=!0));return Object.defineProperties(t,r),n.add(t),t};return{set(i,o,s=!1){let a=e;for(const e of i)a=null==a?void 0:a[e];if(!s&&Object.is(a,o))return;n.has(t)||(t=r(t));let c=t;for(const e of i.slice(0,-1)){const t=r(c[e]);Object.defineProperty(c,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),c=t}const l=i.at(-1);s?delete c[l]:Object.defineProperty(c,l,{value:o,enumerable:!0,configurable:!0,writable:!0})},result:()=>t}}(e),o=[];Fn(e,r,(e,r,s,a)=>{const c="string"==typeof r&&(r===t||s&&r.startsWith(t+"."))?n+r.slice(t.length):r;c!==r&&(a?o.push({path:e,value:r}):i.set(e,c))});for(const{path:s}of o){let e=i.result();for(const t of s)e=e[t];i.set([...s.slice(0,-1),n],e),i.set(s,void 0,!0)}return i.result()}var Vn=(e,t,n)=>qn(e,t,n,!0),Hn=(e,t,n)=>qn(e,t,n,!1);function Kn(e,t,n){var r,i,o,s,a,c;if(!e||!t||t===n)return;const l=e=>e===t?n:e,d=null===(r=e.vis)||void 0===r||null===(r=r.options)||void 0===r?void 0:r.sceneBindings;if(d){var u;for(const e of["container","continentsBackground","sphere","map","secondaryMap"])"string"==typeof d[e]&&(d[e]=l(d[e]));(null===(u=d.region)||void 0===u?void 0:u.object)&&(d.region.object=l(d.region.object));for(const e of["parentBackgrounds","cities"])Array.isArray(d[e])&&(d[e]=d[e].map(l))}for(const v of null!==(i=e.interactions)&&void 0!==i?i:[]){var p;v.objectId=l(v.objectId),(null===(p=v.filter)||void 0===p?void 0:p.objectIds)&&(v.filter.objectIds=v.filter.objectIds.map(l))}const h=e=>{var r;for(const i of null!=e?e:[])for(const e of null!==(r=i.tracks)&&void 0!==r?r:[])"string"==typeof e.name&&e.name.startsWith(`${t}.`)&&(e.name=n+e.name.slice(t.length))},f=r=>{var i,o,s,a,c,d;if(!r)return;r.uuid===t&&(r.uuid=n),r.target&&(r.target=l(r.target));for(const e of[r.userData,null===(i=r.userData)||void 0===i?void 0:i._baseObjectUserData])(null==e?void 0:e.copySource)&&(e.copySource=l(e.copySource));const u=null===(o=r.userData)||void 0===o||null===(o=o._baseObjectOptions)||void 0===o?void 0:o.serializedClips,p=void 0!==(null==u?void 0:u._sharedRef)?null===(s=e.scene)||void 0===s||null===(s=s._sharedOptionsPool)||void 0===s?void 0:s[u._sharedRef]:u;Array.isArray(p)&&h(p);const v=null===(a=r.userData)||void 0===a||null===(a=a._prefabLink)||void 0===a?void 0:a.baseline;v&&f(v);for(const e of null!==(c=r.children)&&void 0!==c?c:[])f(e);(null===(d=r.shadow)||void 0===d?void 0:d.camera)&&f(r.shadow.camera)};f(null===(o=e.scene)||void 0===o?void 0:o.object);for(const v of null!==(s=null===(a=e.scene)||void 0===a?void 0:a.skeletons)&&void 0!==s?s:[])Array.isArray(v.bones)&&(v.bones=v.bones.map(l));h(null===(c=e.scene)||void 0===c?void 0:c.animations)}function Xn(e,t,n){var r,i,o,s,a,l,d,u;if(!e||!t||t===n)return;const p=e=>e===t?n:e;for(const c of Object.values(null!==(r=null===(i=e.vis)||void 0===i||null===(i=i.options)||void 0===i?void 0:i.materialBindings)&&void 0!==r?r:{}))for(const e of Object.keys(c))c[e]=p(c[e]);for(const c of null!==(o=null===(s=e.vis)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.regionTextureRules)&&void 0!==o?o:[])c.material&&(c.material=p(c.material));for(const c of null!==(a=null===(l=e.scene)||void 0===l?void 0:l.materials)&&void 0!==a?a:[])c.uuid===t&&(c.uuid=n);for(const c of[e.materialAliases,null===(d=e.scene)||void 0===d?void 0:d.materialAliases])if(c){for(const e of Object.values(c))e.materialUuid&&(e.materialUuid=p(e.materialUuid));Object.hasOwn(c,t)&&(c[n]=c[t],delete c[t])}const h=t=>{var n,r,i;if(!t)return;Array.isArray(t.material)?t.material=t.material.map(p):t.material&&(t.material=p(t.material)),c(t.userData,(e,t)=>{e[t]=p(e[t])},null===(n=e.scene)||void 0===n?void 0:n._sharedOptionsPool);const o=null===(r=t.userData)||void 0===r||null===(r=r._prefabLink)||void 0===r?void 0:r.baseline;o&&h(o);for(const e of null!==(i=t.children)&&void 0!==i?i:[])h(e)};h(null===(u=e.scene)||void 0===u?void 0:u.object)}function Yn(e,t,n){var r;const i=at(e),o=null===(r=i.materialLibrary)||void 0===r?void 0:r.find(e=>e.id===t);if(!o)throw new Error(`Material asset ${t} was not found`);return dn(Ln(i,Pe(Pe(Pe(Pe({},o),{},{revision:o.revision+1},void 0!==n.name?{name:n.name}:{}),void 0!==n.material?{material:jt(n.material)}:{}),void 0!==n.locked?{locked:n.locked}:{})))}function Jn(e,t){var n;if(qt(e,t).length)throw new Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(Wt(e,t).length)throw new Error(`Material asset ${t} is still in use`);if(Ft(e,t).length)throw new Error(`Material asset ${t} is required by scene configuration`);if(!(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t)))throw new Error(`Material asset ${t} was not found`);return function(e,t){return Pe(Pe({},e),{},{materialLibrary:e.materialLibrary.filter(e=>e.id!==t),scenes:e.scenes.map(e=>{const n=e.scene.materials;if(!n)return e;const r=n.filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[st])!==t});return r.length===n.length?e:Pe(Pe({},e),{},{scene:Pe(Pe({},e.scene),{},{materials:r})})})})}(at(e),t)}function Zn(e,t){return Qn(at(e),t)}function Qn(e,t){var n,r,i;it(e);const o=e,s=/* @__PURE__ */new Map,a=/* @__PURE__ */new Set;null===(n=o.materialLibrary)||void 0===n||n.forEach((e,n)=>{var r;const i=null===(r=t(e,n))||void 0===r?void 0:r.trim();if(!i||a.has(i))throw new Error("Invalid remapped material asset id: ids must be non-empty and unique");a.add(i),s.set(e.id,i),e.id=i});for(const v of o.scenes){var c,l,d;for(const e of null!==(c=v.scene.materials)&&void 0!==c?c:[]){var u,p;const t=null===(u=e.userData)||void 0===u?void 0:u[st];void 0!==t&&(e.userData[st]=null!==(p=s.get(t))&&void 0!==p?p:t)}for(const e of Object.values(null!==(l=v.materialAliases)&&void 0!==l?l:{}))e.assetId=null!==(d=s.get(e.assetId))&&void 0!==d?d:e.assetId}for(const v of null!==(r=o.prefabLibrary)&&void 0!==r?r:[])for(const e of null!==(i=v.snapshot.materials)&&void 0!==i?i:[]){var h,f;const t=null===(h=e.userData)||void 0===h?void 0:h[st];void 0!==t&&(e.userData[st]=null!==(f=s.get(t))&&void 0!==f?f:t)}return{document:o,idMap:s}}function er(e,t){const n=en(e),r=en(t),i=new Set(n.materialLibrary.map(e=>e.id)),o=Zn(r,e=>At(e.id,i));return Pe(Pe({},o),{},{materialLibrary:[...n.materialLibrary,...o.document.materialLibrary]})}function tr(e,t){const n=en(e);if(n.materialLibrary.some(e=>e.id===t.id))throw new Error(`Material asset ${t.id} already exists`);const r=Nn.create(n,t),i=Ln(r,Pe(Pe({},at(t)),r.materialLibrary.at(-1)));return it(i),i}function nr(e,t){var n;const r=en(e),i=r.scenes.find(e=>e.id===t.sceneId),o=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Scene ${t.sceneId} was not found`);if(!o)throw new Error(`Material asset ${t.assetId} was not found`);if(ut(o,i.id),!t.objectId&&!t.alias)throw new Error("A material object or alias target is required");const s=null!==(n=t.slot)&&void 0!==n?n:0;if(!Number.isInteger(s)||s<0)throw new Error("Invalid material slot");const a=[];if(t.objectId){let e;if(tt(i.scene.object,n=>{var r,i;n.uuid!==t.objectId&&(null===(r=n.userData)||void 0===r?void 0:r._baseObjectUuid)!==t.objectId||null!==(i=e)&&void 0!==i||(e=n)}),!e)throw new Error(`Object ${t.objectId} was not found in scene ${i.id}`);if(tt(e,e=>{if(void 0!==e.material){if(Array.isArray(e.material)?s>=e.material.length:0!==s)throw new Error(`Invalid material slot ${s} for object ${t.objectId}`);a.push({uuid:e.uuid,slot:s,assetId:o.id})}}),!a.length)throw new Error(`Object ${t.objectId} has no editable material`)}const c=function(e,t,n,r){return _n(e,t,n,void 0,r,!0)}(r,i.id,a,o.id),l=c.scenes.find(e=>e.id===t.sceneId),d=l.scene.materials.find(e=>{var t;return(null===(t=e.userData)||void 0===t?void 0:t[st])===o.id});if(void 0!==t.alias){var u,p;if(!t.alias)throw new Error("Invalid material alias");const e=null!==(u=l.materialAliases)&&void 0!==u?u:l.materialAliases={};if(Object.defineProperty(e,d.uuid,{value:{assetId:o.id,locked:null!==(p=o.locked)&&void 0!==p&&p},enumerable:!0,configurable:!0,writable:!0}),t.alias!==d.uuid){if(l.scene.materials.some(e=>e!==d&&e.uuid===t.alias))throw new Error(`Duplicate material UUID ${t.alias}`);Xn(l,d.uuid,t.alias)}}return dn(c)}function rr(e,t,n){var r,i;for(const s of null!==(r=e.scene.materials)&&void 0!==r?r:[]){var o;(null===(o=s.userData)||void 0===o?void 0:o._materialAssetId)===t&&(s.userData[st]=n.id,s.userData[ht]=n.revision)}for(const s of Object.values(null!==(i=e.materialAliases)&&void 0!==i?i:{}))s.assetId===t&&(s.assetId=n.id)}function ir(e,t,n,r){const i=en(e),o=i.materialLibrary.find(e=>e.id===t),s=i.scenes.find(e=>e.id===n);if(!o)throw new Error(`Material asset ${t} was not found`);if(!s)throw new Error(`Scene ${n} was not found`);if(ut(o,n),"scene"===o.scope.kind)return i;const a=tr(i,Pe(Pe({},o),{},{id:r,scope:{kind:"scene",sceneId:n}})),c=a.materialLibrary.find(e=>e.id===r);return rr(a.scenes.find(e=>e.id===n),t,c),dn(a)}function or(e,t){const n=en(e);if(!n.materialLibrary.some(e=>e.id===t))throw new Error(`Material asset ${t} was not found`);return Nn.promote(n,t)}function sr(e,t){var n;const r=en(e),i=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Material asset ${t.assetId} was not found`);return ut(i,t.sceneId),nr(tr(r,Pe(Pe({},i),{},{id:t.newAssetId,name:null!==(n=t.name)&&void 0!==n?n:`${i.name} 副本`})),Pe(Pe({},t),{},{assetId:t.newAssetId}))}function ar(e,t,n){var r;const i=en(e),o=i.scenes.find(e=>e.id===t);if(!o)throw new Error(`Scene ${t} was not found`);if(!n||i.scenes.some(e=>e.id===n))throw new Error(`Scene ${n} already exists or is invalid`);const s=at(o);s.id=n;for(const d of null!==(r=s.interactions)&&void 0!==r?r:[])"sceneId"in d.action&&d.action.sceneId===t&&(d.action.sceneId=n);const a=new Set(i.materialLibrary.map(e=>e.id)),c=[],l=/* @__PURE__ */new Map;for(const d of i.materialLibrary){if("scene"!==d.scope.kind||d.scope.sceneId!==t)continue;const e=Pe(Pe({},at(d)),{},{id:At(`${d.id}:copy:${encodeURIComponent(n)}`,a),scope:{kind:"scene",sceneId:n}});l.set(d.id,e.id),c.push(e),rr(s,d.id,e)}return{scene:s,materialLibrary:c,idMap:l}}var cr=["scenes"];function lr(e,t,n={}){var r,i,o,s;bt(e);const a=/* @__PURE__ */new Map;e.scenes.forEach((e,n)=>{var r;const i=null===(r=t(e,n))||void 0===r?void 0:r.trim();if(!i||[...a.values()].includes(i))throw new Error("Invalid remapped scene id: ids must be non-empty and unique");a.set(e.id,i)});const{scenes:c}=e,l=Ge(e,cr),d=et(Pe(Pe({},structuredClone(l)),{},{scenes:c.map(e=>structuredClone(e))}));!1!==n.materialize&&un(d);const u=new Set((null!==(r=d.materialLibrary)&&void 0!==r?r:[]).map(e=>e.id)),p=new Set(n.occupiedMaterialIds);Qn(d,e=>{let t=e.id;if("scene"===e.scope.kind){const n=a.get(e.scope.sceneId),r=`${e.id}:copy:${encodeURIComponent(n)}`;t=r;let i=1;for(;u.has(t);)t=`${r}~${i++}`;u.add(t)}let n=t,r=1;for(;p.has(n);)n=`${t}~${r++}`;return p.add(n),n});for(const f of null!==(i=d.materialLibrary)&&void 0!==i?i:[])"scene"===f.scope.kind&&(f.scope.sceneId=a.get(f.scope.sceneId));const h=d.scenes.map(e=>ur(e,a));return Pe(Pe(Pe({entrySceneId:a.get(e.entrySceneId),scenes:h,idMap:a},d.runtimeAssets?{runtimeAssets:Pe(Pe(Pe({},d.runtimeAssets),"dynamic"===(null===(o=d.runtimeAssets.mapNavigation)||void 0===o?void 0:o.mode)?{mapNavigation:Pe(Pe({},d.runtimeAssets.mapNavigation),{},{templates:Object.fromEntries(Object.entries(d.runtimeAssets.mapNavigation.templates).map(([e,t])=>{var n;return[e,null!==(n=a.get(t))&&void 0!==n?n:t]}))})}:{}),{},{regions:Object.fromEntries(Object.entries(null!==(s=d.runtimeAssets.regions)&&void 0!==s?s:{}).map(([e,t])=>{var n;return[null!==(n=a.get(e))&&void 0!==n?n:e,t]}))})}:{}),d.prefabLibrary?{prefabLibrary:d.prefabLibrary}:{}),d.materialLibrary?{materialLibrary:d.materialLibrary}:{})}function dr(e,t){return ur(structuredClone(e),t)}function ur(e,t){var n,r;e.id=null!==(n=t.get(e.id))&&void 0!==n?n:e.id;for(const o of null!==(r=e.interactions)&&void 0!==r?r:[])if("switchScene"===o.action.type||"switchMapRegion"===o.action.type){var i;o.action.sceneId=null!==(i=t.get(o.action.sceneId))&&void 0!==i?i:o.action.sceneId}return e}var pr=class{constructor(){Re(this,"event",new Dt),Re(this,"eventHandlers",{}),Re(this,"on",this.event.on.bind(this.event)),Re(this,"emit",this.event.emit.bind(this.event))}addListener(e,t,n,r=!1){t in this.eventHandlers||(this.eventHandlers[t]=[]),this.eventHandlers[t].push({node:e,handler:n,capture:r}),e.addEventListener(t,n,r)}removeListener(e,t){this.eventHandlers[t].filter(({node:t})=>!e||t===e).forEach(({node:e,handler:n,capture:r})=>{e.removeEventListener(t,n,r)}),this.eventHandlers[t]=this.eventHandlers[t].filter(({node:t})=>!!e&&t!==e)}removeAllListeners(){Object.keys(this.eventHandlers).forEach(e=>{this.removeListener("",e)}),this.eventHandlers={}}dispose(){this.removeAllListeners(),this.event.removeAllListeners()}};function hr(e,t){const n={};for(const[r,i]of Object.entries(null!=t?t:{})){const t=e.get(i);t&&(n[r]=t)}return Object.keys(n).length?n:null}var fr=/* @__PURE__ */new WeakSet;function vr(e){return fr.has(e)}function mr(e,t=e.object3d.userData){var n;const r=e.lead,i=e.pencil;Object.hasOwn(t,"planarReflection")&&(null===(n=i.rendererController)||void 0===n||null===(n=n.surfaceEffects)||void 0===n||n.invalidate(r.scene.object3d));for(const[o,s]of Object.entries(t))if("bloom"===o)s?e.enableBloom():e.disableBloom();else if("animationDuration"===o&&"Arc"===e.objectType)e.animateIn({duration:s});else if("animationDuration"===o&&"Line"===e.objectType)e.animate({duration:s,repeat:1/0,lineLoop:!0,startShow:!0});else if("keepCamera"===o&&e.object3d.isLight){const t=e.object3d;s?(i.camera.attach(t),t.target&&i.camera.attach(t.target)):(r.scene.object3d.attach(t),t.target&&r.scene.object3d.attach(t.target))}else!0===e.object3d.userData.isMapLabelGroup&&e.traverse(e=>{if("Node"!==e.objectType)return;const t=e.options.children;t instanceof HTMLElement&&gr(t,o,s)})}function gr(e,t,n){if(null!=n)switch(t){case"color":{const t=`${n}`;e.style.color=/^[A-Fa-f0-9]{6}$/.test(t)?`#${t}`:t;break}case"fontFamily":e.style.fontFamily=`${n||""}`;break;case"fontSize":e.style.fontSize="number"==typeof n?`${n}px`:`${n}`;break;case"fontStyle":e.style.fontStyle=`${n}`;break;case"fontWeight":e.style.fontWeight=`${n}`;break;case"letterSpacing":e.style.letterSpacing="number"==typeof n?`${n}px`:`${n}`;break;case"lineHeight":e.style.lineHeight=`${n}`;break;case"textAlign":e.style.textAlign=`${n}`}}var yr=/* @__PURE__ */w({baseObjectBounce:()=>je,baseObjectBounceIn:()=>ae,baseObjectFadeIn:()=>_,baseObjectFadeOut:()=>v,sinusoidalInOut:()=>P,timeOut:()=>Z}),br=/* @__PURE__ */w({AmbientLight:()=>jr,DirectionalLight:()=>Sr,HemisphereLight:()=>Mr,PointLight:()=>Ar,RectAreaLight:()=>xr,SpotLight:()=>Or}),wr=(e,t)=>{e.camera&&!0!==e.camera.userData._shadowProjectionEdited&&(e.camera.near!==t.camera.near&&(e.camera.near=t.camera.near),e.camera.far!==t.camera.far&&(e.camera.far=t.camera.far))},jr=class extends O{constructor(...e){g(e[0])&&(e=[e[0].color]),super(...e)}},Sr=class extends ye{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&wr(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},Ar=class extends Me{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity,t.distance,t.decay]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&wr(n.shadow,this.pencil)}render(){super.render(),this.object3d}},Or=class extends J{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(g(e[0])){const t=e[0];e=[t.color,t.intensity,t.distance,t.angle,t.penumbra,t.decay]}super(...e),n||this.object3d.shadow.mapSize.set(1024,1024)}update(e,t){super.update(e,t);const n=this.object3d;n.shadow&&wr(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},Mr=class extends Ie{},xr=class extends z{},Ir=class extends D{constructor(e){super(),Re(this,"radius",100),Re(this,"options",void 0),Re(this,"objectType","Sphere"),this.options=e}create(){var e;(null===(e=this.options)||void 0===e?void 0:e.radius)&&(this.radius=this.options.radius);const t=new l(this.radius,128,90);this.object3d.geometry=t,this.object3d.rotation.y=Math.PI/180*90}},Er=Pe(Pe({Node:E,ExtrudePolygon:e,Line:ve,Group:be},br),{},{Point:class extends R{constructor(e){super(e.sprite?new j:new K(new xe(1,1))),Re(this,"objectType","Point"),Re(this,"options",void 0),Re(this,"scaleValue",1),this.options=Pe({sprite:!0},e)}get material(){var e;return null===(e=this.object3d)||void 0===e?void 0:e.material}getMaterial(){const{sprite:e}=this.options,t=document.createElement("canvas");t.width=100,t.height=100;const n=t.getContext("2d");n.beginPath(),n.arc(50,50,50,0,2*Math.PI),n.fillStyle="#ffffff",n.fill(),n.closePath();const r=new we(t);return e?new ne({transparent:!0,map:r}):new B({color:16777215,transparent:!0,map:r})}create(){var e=this;return Ce(function*(){const{sprite:t}=e.options,n=e.getMaterial();e.object3d.material=n,e.setScale(1),e.object3d.scale.multiplyScalar(.1)})()}setScale(e){this.scaleValue=e;const t=this.material.map;(null==t?void 0:t.image)?this.object3d.scale.set(t.image.width*e,t.image.height*e,1):this.object3d.scale.set(e,e,1)}},Arc:t,Model:u,Plane:class extends D{constructor(...e){super(...e),Re(this,"objectType","Plane")}create(){const e=new xe(1,1,2,2);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},PlaneShadow:class extends D{constructor(...e){super(...e),Re(this,"objectType","PlaneShadow")}create(){var e=this;return Ce(function*(){const t=new xe(100,100,2,2),n=new I;n.opacity=.5,n.depthWrite=!1,e.object3d.geometry=t,e.object3d.material=n,e.object3d.receiveShadow=!0,e.position.z=.1,e.object3d.name="阴影接受"})()}},Sphere:Ir,Sprite:class extends h{constructor(...e){super(...e),Re(this,"objectType","Sprite")}create(){this.scale.multiplyScalar(20)}setDesiredPixelSize(e){var t;const n=this.object3d;if(null===(t=n.material.map)||void 0===t?void 0:t.image){var r,i,o;const t=this.pencil.camera,s=new y;t.matrixWorld.decompose(s,new M,new y);const a=pe.degToRad(t.fov),c=e/((null!==(r=null===(i=(o=this.pencil).getViewViewport)||void 0===i?void 0:i.call(o))&&void 0!==r?r:this.pencil.getSize()).height*(1/(2*Math.tan(a/2)))),{width:l,height:d}=n.material.map.image;n.scale.set(l/d*c,c,1)}}},Box:class extends D{constructor(...e){super(...e),Re(this,"objectType","Box")}create(){const e=new G(1,1,1,1,1,1);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Circle:class extends D{constructor(...e){super(...e),Re(this,"objectType","Circle")}create(){const e=new W(1,32,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Tube:re,Ring:class extends D{constructor(...e){super(...e),Re(this,"objectType","Ring")}create(){const e=new Oe(.5,1,32,1,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}}}),Dr=["geforce 320m","geforce 8600","geforce 8600m gt","geforce 8800 gs","geforce 8800 gt","geforce 9400","geforce 9400m g","geforce 9400m","geforce 9600m gt","geforce 9600m","geforce fx go5200","geforce gt 120","geforce gt 130","geforce gt 330m","geforce gtx 285","google swiftshader","intel g41","intel g45","intel gma 4500mhd","intel gma x3100","intel hd 3000","intel q45","legacy","mali-2","mali-3","mali-4","quadro fx 1500","quadro fx 4","quadro fx 5","radeon hd 2400","radeon hd 2600","radeon hd 4670","radeon hd 4850","radeon hd 4870","radeon hd 5670","radeon hd 5750","radeon hd 6290","radeon hd 6300","radeon hd 6310","radeon hd 6320","radeon hd 6490m","radeon hd 6630m","radeon hd 6750m","radeon hd 6770m","radeon hd 6970m","sgx 543","sgx543"],Pr=["intel","apple","amd","radeon","nvidia","geforce","adreno"],Cr={apple:[],amd:["1","2","3","4","6","11","12","15","25","455","475","535","555","575","600","610","625","640","694","699","740","900","2000","2270","2600","3800","3900","4190","4250","4800","5130","5170","5400","5450","5470","5570","5650","5670","5730","5750","5850","5950","6100","6150","6230","6250","6290","6300","6310","6320","6350","6370","6380","6410","6450","6460","6470","6480","6490","6510","6520","6530","6540","6550","6570","6620","6630","6670","6730","6760","6770","6790","6980","7290","7310","7340","7400","7420","7450","7470","7480","7500","7520","7540","7550","7610","7620","7640","7670","7730","7820","8180","8210","8240","8250","8330","8350","8370","8400","8410","8450","8490","8500","8510","8530","8550","8570","8600","8610","8670","8690","8730","8750","8760","8800","8850","8860","9171","9173","9874","10000","v","9999999999","prom"],radeon:["1","2","3","4","6","11","25","455","475","500","535","555","575","610","625","640","740","1305","1605","2600","4250","5000","5400","5450","5470","5570","5650","5670","5730","5750","5770","5850","6230","6250","6290","6300","6310","6320","6350","6370","6380","6410","6450","6460","6470","6480","6490","6510","6520","6530","6540","6550","6570","6620","6630","6670","6730","6760","6770","6790","7290","7310","7340","7400","7420","7450","7470","7480","7500","7520","7540","7550","7610","7620","7640","7670","7730","8180","8210","8240","8250","8330","8350","8370","8400","8410","8450","8490","8500","8510","8530","8550","8570","8600","8610","8670","8690","8730","8750","8850","8860","9171","9173","prom"],nvidia:["1","6","15","16","110","120","140","160","180","210","220","260","280","295","310","315","320","410","415","420","425","430","435","440","510","525","530","540","545","555","590","605","610","615","625","630","635","645","705","710","720","730","735","755","765","775","800","810","820","830","840","910","940","1100","1800","2800","5010","5400","8000","8400","8600","9300","9400","9600","9800","gpu","gtxz","prexpe"],geforce:["10","110","120","210","240","280","295","320","410","415","420","425","430","435","440","510","520","525","530","540","545","555","590","605","610","615","620","625","630","635","645","705","710","720","730","735","755","765","775","800","810","820","830","840","910","940","2075","8400","8600","9300","9400","9600","9800","gpu","gtxz","prexpe"],adreno:["5","7","540","618","630","675","680","685","690"]},Rr=class{constructor(e){Re(this,"renderer",void 0),this.renderer=e}query(){const e=this.renderer,t=this.getGpuType();if(!t)return this.queryFallback();if("intel"===t)return{tier:0,gpu:e};const n=Cr[t],r=this.getGPUVersion();return n.includes(r)?{tier:0,renderer:e}:this.queryFallback()}getGpuType(){const e=this.renderer;for(const t of Pr)if(e.includes(t))return t}getGPUVersion(){var e;const t=this.renderer.replace(/\([^)]+\)/,""),n=t.match(/\d+/)||t.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);return null!==(e=null==n?void 0:n.join("").replace(/\W|amd/g,""))&&void 0!==e?e:""}queryFallback(){const e=this.renderer,t=Dr.find(t=>e.includes(t));return t?{tier:0,gpu:t}:{tier:3,gpu:e}}};var Lr=Object.freeze({tier:0}),kr=/* @__PURE__ */new WeakMap,Br=/* @__PURE__ */new WeakSet,Tr=/* @__PURE__ */new WeakSet;var Ur=class extends pr{constructor(...e){super(...e),Re(this,"container",void 0),Re(this,"pencil",void 0),Re(this,"cameraState",{}),Re(this,"cameraStateActive","visShow")}setSaveCamera(e){const t=this.pencil,n=t.cameraPositon,r=t.cameraTarget;this.cameraState[e]=[n.x,n.y,n.z,r.x,r.y,r.z]}useSaveCamera(e,t=!1,n=250){var r=this;return Ce(function*(){const i=r.cameraState[e];return!(!Array.isArray(i)||6!==i.length||!i.every(Number.isFinite))&&(yield r.lookAt(i[0],i[1],i[2],i[3],i[4],i[5],t,n),r.cameraStateActive=e,!0)})()}lookAt(e,t,n,r,i,o,s=!1,a=250){var c=this;return Ce(function*(){c.pencil.controls.smoothTime=a/1e3,yield c.pencil.controls.setLookAt(e,t,n,r,i,o,s),c.pencil.controls.smoothTime=.25})()}truck(e,t,n=!1,r=250){var i=this;return Ce(function*(){i.pencil.controls.smoothTime=r/1e3,i.pencil.controls.restThreshold=0,yield i.pencil.controls.truck(e,t,n),i.pencil.controls.restThreshold=.0025,i.pencil.controls.smoothTime=.25})()}moveTo(e,t,n,r=!1,i=250){var o=this;return Ce(function*(){o.pencil.controls.smoothTime=i/1e3,yield o.pencil.controls.moveTo(e,t,n,r),o.pencil.controls.smoothTime=.25})()}dollyTo(e,t=!1,n=250){var r=this;return Ce(function*(){let i=e;if("string"==typeof i){const[e,t]=i.split("=");"+"===e?i=r.pencil.controls.distance+ +t:"-"===e?i=r.pencil.controls.distance-+t:"*"===e?i=r.pencil.controls.distance*+t:"/"===e?i=r.pencil.controls.distance/+t:console.error("dollyTo distance error")}r.pencil.controls.smoothTime=n/1e3,yield r.pencil.controls.dollyTo(i,t),r.pencil.controls.smoothTime=.25})()}absoluteAngle(e,t){const n=2*Math.PI,r=e-t;return pe.euclideanModulo(r+Math.PI,n)-Math.PI}lookAtTarget(e,t=!1,n=250){var r=this;return Ce(function*(){r.pencil.controls.smoothTime=n/1e3;const i=r.pencil.controls.azimuthAngle,o=r.pencil.controls.polarAngle,s=r.pencil.controls.distance,a=r.pencil.cameraTarget.clone(),c=e.azimuthAngle||i,l=e.polarAngle||o,d=e.distance||s,u=e.target||a;yield Promise.all([r.pencil.controls.moveTo(u.x,u.y,u.z,t),r.pencil.controls.dollyTo(d,t),r.pencil.controls.rotateTo(i+r.absoluteAngle(c,i),o+r.absoluteAngle(l,o),t)]),r.pencil.controls.smoothTime=.25})()}paddingInCssPixel(e,t,n,r,i,o){var s,a,c;const{camera:l,controls:d}=this.pencil,u=l.fov*pe.DEG2RAD,p=(null!==(s=null===(a=(c=this.pencil).getViewViewport)||void 0===a?void 0:a.call(c))&&void 0!==s?s:this.pencil.getSize()).height,{size:h}=e.getSize(),f=h.x,v=h.y,m=h.z;let g=d.getDistanceToFitBox(f,v,m),y=0,b=0,w=0,j=0;for(let S=0;S<10;S++){const e=g-.5*m,o=2*Math.tan(.5*u)*Math.abs(e)/p;y=t*o,b=r*o,w=i*o,j=n*o,g=d.getDistanceToFitBox(f+w+j,v+y+b,m)}return d.fitToBox(e.object3d,o,{paddingLeft:w,paddingRight:j,paddingBottom:b,paddingTop:y})}resetCamera(e=!1,t=250){var n=this;return Ce(function*(){n.pencil.controls.smoothTime=t/1e3,yield n.pencil.controls.reset(e),n.pencil.controls.smoothTime=.25})()}unproject(e,t=0){const n=new y,r=new y,{x:i,y:o}=this.pencil.getPointerNDC(e.clientX,e.clientY),s=this.pencil.cameraPositon.clone();n.set(i,o,.5),n.unproject(this.pencil.camera),n.sub(s).normalize();const a=(t-s.z)/n.z;return r.copy(s).add(n.multiplyScalar(a)),r}dispose(){super.dispose(),this.cameraState={}}};function _r(e=[]){return structuredClone(e.map(pt))}function $r(e,t){const n=e.filter(e=>e.name===t);if(n.length>1)throw new Error(`SDK prefab name "${t}" is ambiguous; rename the assets to use unique names`);if(!n.length)throw new Error(`SDK prefab "${t}" was not found`);return n[0]}var zr=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Gr(e,t=[],n=!0){var r,i,o;const s=pn(rn({id:"runtime-prefab",name:e.name,vis:{type:"base",options:{}},scene:structuredClone(e.snapshot)},t));if(!s.object)throw new Error(`SDK prefab "${e.name}" has no object snapshot`);L(s);const a=/* @__PURE__ */new Map,l=e=>(a.has(e)||a.set(e,pe.generateUUID()),a.get(e)),d=[],u=e=>{var t,n;if(e){!function(e){var t;for(const n of[e.userData,null===(t=e.userData)||void 0===t?void 0:t._baseObjectUserData])if(n){for(const e of zr)delete n[e];delete n.copySource}}(e),d.push(e),e.uuid&&l(e.uuid);for(const n of null!==(t=e.children)&&void 0!==t?t:[])u(n);(null===(n=e.shadow)||void 0===n?void 0:n.camera)&&u(e.shadow.camera)}};u(s.object);for(const c of["geometries","materials","textures","images","shapes","skeletons","animations"])for(const e of null!==(r=s[c])&&void 0!==r?r:[])if(!e.uuid||"PMREM_PLACEHOLDER"===e.uuid||!n&&["materials","textures","images"].includes(c)||l(e.uuid),n&&e.userData)for(const t of["_resourceSource","_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete e.userData[t];const p=/* @__PURE__ */new Set(["uuid","image","material","geometry","skeleton","bones","animations","shapes","map","matcap","background","environment","target","materialUuid"]),h=(e,t="")=>{var n,r;if("string"==typeof e)return(p.has(t)||t.endsWith("Map"))&&null!==(n=a.get(e))&&void 0!==n?n:e;if(Array.isArray(e))return e.map(e=>h(e,t));if(!e||"object"!=typeof e)return e;for(const i of Object.keys(e))"userData"!==i&&(e[i]=h(e[i],i));return"t"===e.type&&(e.value=null!==(r=a.get(e.value))&&void 0!==r?r:e.value),"tv"===e.type&&Array.isArray(e.value)&&(e.value=e.value.map(e=>{var t;return null!==(t=a.get(e))&&void 0!==t?t:e})),Ae(e,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),e};h(s);const f=[...null!==(i=s.animations)&&void 0!==i?i:[]];for(const w of d){var v,m;c(w.userData,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]},s._sharedOptionsPool);const e=null===(v=w.userData)||void 0===v||null===(v=v._baseObjectOptions)||void 0===v?void 0:v.serializedClips,t=void 0!==(null==e?void 0:e._sharedRef)?null===(m=s._sharedOptionsPool)||void 0===m?void 0:m[e._sharedRef]:e;Array.isArray(t)&&f.push(...t)}for(const c of f)for(const e of null!==(o=c.tracks)&&void 0!==o?o:[]){var g,y,b;const t=null!==(g=null===(y=e.name)||void 0===y?void 0:y.indexOf("."))&&void 0!==g?g:-1;t>0&&(e.name=(null!==(b=a.get(e.name.slice(0,t)))&&void 0!==b?b:e.name.slice(0,t))+e.name.slice(t))}return delete s.materialAliases,s}function Nr(e,t,n){return Wr.apply(this,arguments)}function Wr(){return(Wr=Ce(function*(e,t,n,r={},i){var o,s,a,c;null==i||i.throwIfAborted();const l=null!==(o=r.target)&&void 0!==o?o:e.lead.scene;if(l.lead!==e.lead||l.isDisposed)throw new Error("Prefab target must be a live object in the destination scene");for(let f=l;f;f=f.parent)if(f.object3d.userData._templatePreviewContainer||f.object3d.userData._prefabPreview||(null===(s=f.object3d.userData._baseObjectUserData)||void 0===s?void 0:s._templatePreviewContainer)||(null===(a=f.object3d.userData._baseObjectUserData)||void 0===a?void 0:a._prefabPreview))throw new Error("Runtime prefab instances cannot be added to the internal template preview container or a template descendant");const d=Gr(t,n,null===(c=r.cloneMaterial)||void 0===c||c),u=yield e.restoreBaseObject(d,l,void 0,i);try{const e=[];u.traverse(t=>e.push(t));for(const t of e){var p;null==i||i.throwIfAborted(),yield null===(p=t.rebuildFromScene)||void 0===p?void 0:p.call(t)}if(null==i||i.throwIfAborted(),u.isDisposed||l.isDisposed)throw new Error("Prefab instantiation was cancelled because its scene or parent was disposed");return u.show(),u}catch(h){throw u.erase(),h}})).apply(this,arguments)}function Fr(){var e,t;const n=new URLSearchParams(null!==(e=null===(t=globalThis.window)||void 0===t||null===(t=t.location)||void 0===t?void 0:t.search)&&void 0!==e?e:""),r=e=>{const t=n.get(e);return t&&/^\d+$/.test(t)?Number.parseInt(t,10):void 0},i=r("v_ldb");return{logarithmicDepthBuffer:void 0===i?void 0:Boolean(i),tier:r("v_tier")}}function qr(e,t={}){var n;return Pe(Pe({alpha:!0,logarithmicDepthBuffer:e,reversedDepthBuffer:!1},t),{},{autoDepthBuffer:null!==(n=t.autoDepthBuffer)&&void 0!==n?n:void 0===t.logarithmicDepthBuffer&&void 0===t.reversedDepthBuffer&&e})}var Vr=["rendererWarmup"],Hr=class extends Ur{static prewarmRenderer(e){var t,n,r;return b.prewarmRenderer(qr(null===(t=null!==(n=Fr().logarithmicDepthBuffer)&&void 0!==n?n:e.logarithmicDepthBuffer)||void 0===t||t,null===(r=e.pencilConfig)||void 0===r?void 0:r.renderer))}suspendRendering(){var e;if(this.disposed)return()=>{};const t={};this.renderingSuspensions.add(t);const n=null!==(e=this.pencil)&&void 0!==e?e:this.options.pencil;return n&&(t.releasePencil=n.suspendRendering()),()=>{if(!this.renderingSuspensions.delete(t))return;const e=t.releasePencil;t.releasePencil=void 0,null==e||e()}}acquireRenderingSuspensions(){for(const t of this.renderingSuspensions){var e;null!==(e=t.releasePencil)&&void 0!==e||(t.releasePencil=this.pencil.suspendRendering())}}getPrefabLibrary(){return _r(this.prefabAssets)}setPrefabLibrary(e=[],t=[]){var n;this.cancelPrefabOperations(),this.prefabAssets=_r(e);const r=/* @__PURE__ */new Set;for(const o of this.prefabAssets)for(const e of null!==(n=o.snapshot.materials)&&void 0!==n?n:[]){var i;const t=null===(i=e.userData)||void 0===i?void 0:i[st];t&&r.add(t)}this.prefabMaterials=structuredClone(t.filter(e=>r.has(e.id))),this.assetResolver&&xt({prefabLibrary:this.prefabAssets,materialLibrary:this.prefabMaterials},this.assetResolver.catalog.entries.flatMap(e=>e.sources),this.resolveAssetUrl)}instantiatePrefab(e){var t=this;return Ce(function*(e,n={}){if(t.disposed)throw new Error("Vis has been disposed");const r=$r(t.prefabAssets,e),i=new AbortController;t.prefabOperations.add(i);try{return yield Nr(t,r,t.prefabMaterials,n,i.signal)}finally{t.prefabOperations.delete(i)}}).apply(this,arguments)}cancelPrefabOperations(){var e,t;for(const n of null!==(e=this.prefabOperations)&&void 0!==e?e:[])n.abort();null===(t=this.prefabOperations)||void 0===t||t.clear()}constructor(e){super(),Re(this,"runtimePolicy",{observeParentScale:!0,applyDisabledMouseButtons:!0,cacheCityGeometry:!0,includePrefabPreviews:!1,strictBundleAssets:!0}),Re(this,"leftTruck",!0),Re(this,"options",void 0),Re(this,"showState",!1),Re(this,"lead",void 0),Re(this,"sceneResources",void 0),Re(this,"tier0",!1),Re(this,"roomEnvMap",void 0),Re(this,"roomEnvLease",void 0),Re(this,"visName",void 0),Re(this,"ownsPencil",!1),Re(this,"rendererWarmup",void 0),Re(this,"renderingSuspensions",/* @__PURE__ */new Set),Re(this,"publicDir",{}),Re(this,"prefabAssets",[]),Re(this,"prefabMaterials",[]),Re(this,"prefabOperations",/* @__PURE__ */new Set),Re(this,"assetResolver",void 0),Re(this,"resolveAssetUrl",e=>{var t,n;return null!==(t=null===(n=this.assetResolver)||void 0===n?void 0:n.resolve(e))&&void 0!==t?t:Le(e,this.options.assetsPrefix)}),Re(this,"runtimeInitialization",void 0),Re(this,"disposed",!1),Re(this,"handleObjectIdentityChanged",({baseObject:e,key:t,oldKey:n})=>{var r;if(e.lead!==this.lead)return;Kn({vis:{options:this.options}},n,t);const i=/* @__PURE__ */new Set;for(const c of this.lead.objects.values()){var o,s;for(const i of[c.userData,c.object3d.userData]){var a;(null==i?void 0:i.copySource)===n&&(i.copySource=t),(null==i||null===(a=i._prefabLink)||void 0===a?void 0:a.baseline)&&Kn({scene:{object:i._prefabLink.baseline}},n,t)}const e=null===(o=c.options)||void 0===o?void 0:o.serializedClips,r=c.clips;for(const t of[...null!==(s=c.object3d.animations)&&void 0!==s?s:[],...Array.isArray(e)?e:[],...Array.isArray(r)?r:[]])i.add(t)}for(const c of i)for(const e of null!==(r=c.tracks)&&void 0!==r?r:[])e.name.startsWith(`${n}.`)&&(e.name=t+e.name.slice(n.length));this.emit("objectIdentityChanged",{baseObject:e,key:t,oldKey:n})}),Re(this,"handleMaterialIdentityChanged",({material:e,key:t,oldKey:n})=>{var r,i;if((null===(r=this.sceneResources)||void 0===r?void 0:r.getKey(e))===t){Xn({vis:{options:this.options}},n,t);for(const e of this.lead.objects.values())for(const r of[e.userData,e.object3d.userData])(null==r||null===(i=r._prefabLink)||void 0===i?void 0:i.baseline)&&Xn({scene:{object:r._prefabLink.baseline}},n,t);this.emit("materialIdentityChanged",{material:e,key:t,oldKey:n})}}),Re(this,"reportScriptError",e=>{this.showState&&!this.disposed&&(this.emit("scriptError",e)||console.error(e.error))}),Re(this,"sceneActive",-1),Re(this,"controlsInitialized",!1),Re(this,"temporaryControls",/* @__PURE__ */new Map),Re(this,"showing",void 0),Re(this,"sceneTemporarilyHidden",!1),Re(this,"authoredSceneVisible",!0),this.container=e.container;const{rendererWarmup:t}=e,n=Ge(e,Vr);if(this.rendererWarmup=t,this.options=Pe({assetsPrefix:"",logarithmicDepthBuffer:!0,observeParentScale:!0,createIfNeeded:!0},n),!this.options.assetsPrefix){let e="/";"/"===e&&(e=""),this.options.assetsPrefix=e}this.visName=this.constructor.VisName}getMaterialGroup(e){var t;return hr(this.sceneResources,null===(t=this.options.materialBindings)||void 0===t?void 0:t[e])}registerMaterialGroup(e,t){var n,r,i;const o=null!==(r=(n=this.options).materialBindings)&&void 0!==r?r:n.materialBindings={},s=null!==(i=o[e])&&void 0!==i?i:o[e]={};for(const[a,c]of Object.entries(t))c&&(this.sceneResources.add(c),s[a]=c.uuid)}copyMaterialGroup(e,t){var n;const r={};for(const[i,o]of Object.entries(null!==(n=this.getMaterialGroup(e))&&void 0!==n?n:{})){const e=pe.generateUUID();r[i]=this.sceneResources.copy(o.uuid,e)}return this.registerMaterialGroup(t,r),r}getDetectRes(){var e,t;return function(e){var t;const n=null==e?void 0:e.backend,r=(null==n?void 0:n.isWebGLBackend)?n.gl:(null==n?void 0:n.isWebGPUBackend)?n.device:void 0;if(!n||!r||Tr.has(r))return Lr;if(n.isWebGLBackend&&(null===(t=n.gl)||void 0===t?void 0:t.isContextLost()))return Lr;const i=kr.get(n);if((null==i?void 0:i.device)===r)return i.result;try{let t="",i=!1;if(n.isWebGLBackend){const e=n.gl,r=e.getExtension("WEBGL_debug_renderer_info");t=r?e.getParameter(r.UNMASKED_RENDERER_WEBGL):"",i=n.extensions?n.extensions.has("EXT_clip_control"):!!e.getExtension("EXT_clip_control")}else{const e=n.device.adapterInfo;t=e?[e.vendor,e.architecture,e.device,e.description].filter(Boolean).join(" "):""}const a=!/swiftshader|llvmpipe|software/i.test(t),c=new Rr(function(e){return e.toLowerCase().replace(/.*angle ?\((.+)\)(?: on vulkan [0-9.]+)?$/i,"$1").replace(/\s(\d{1,2}gb|direct3d.+$)|\(r\)| \([^)]+\)$/g,"").replace(/(?:vulkan|opengl) \d+\.\d+(?:\.\d+)?(?: \((.*)\))?/,"$1")}(t)).query(),l=Object.freeze(Pe(Pe({},c),{},{tier:a?c.tier:0,WebGPU:!!n.isWebGPUBackend,WebGL:!!n.isWebGLBackend,WebGL2:!!n.isWebGLBackend,EXTClipControl:i,isGPUAcceleratorEnabled:a}));if(!Br.has(n)){var o,s;const t=()=>kr.delete(n);null==e||null===(o=e.domElement)||void 0===o||o.addEventListener("webglcontextlost",t),null==e||null===(s=e.domElement)||void 0===s||s.addEventListener("webglcontextrestored",t),Br.add(n)}return n.isWebGPUBackend&&n.device.lost.then(()=>{var e;Tr.add(r),(null===(e=kr.get(n))||void 0===e?void 0:e.device)===r&&kr.delete(n)}),kr.set(n,{device:r,result:l}),l}catch(a){return Lr}}(null===(e=null!==(t=this.pencil)&&void 0!==t?t:this.options.pencil)||void 0===e?void 0:e.renderer)}getQueryOverrides(){return Fr()}getEffectiveLogarithmicDepthBuffer(){const{logarithmicDepthBuffer:e}=this.getQueryOverrides();return null!=e?e:!!this.options.logarithmicDepthBuffer}getEffectiveTier(){var e;const{tier:t}=this.getQueryOverrides();return null!==(e=null!=t?t:this.options.tier)&&void 0!==e?e:this.getDetectRes().tier}resolveRendererDepthBufferOptions(){return this.getEffectiveLogarithmicDepthBuffer()?{logarithmicDepthBuffer:!0,reversedDepthBuffer:!1,autoDepthBuffer:!0}:{logarithmicDepthBuffer:!1,reversedDepthBuffer:!1,autoDepthBuffer:!1}}showDetectRes(){var e;const t=this.getDetectRes(),n=null===(e=this.pencil)||void 0===e?void 0:e.renderer,r=this.getEffectiveTier();this.tier0=3!==r,console.info("vis-core:detect",Tt,JSON.stringify(Pe(Pe({},t),{},{ldb:null==n?void 0:n.logarithmicDepthBuffer,rdb:null==n?void 0:n.reversedDepthBuffer,tier0:this.tier0}),null,2))}setOptions(e){void 0!==e.controls&&this.validateControls(e.controls),this.options=Pe(Pe(Pe({},this.options),e),void 0!==e.controls?{controls:structuredClone(e.controls)}:{}),this.tier0=3!==this.getEffectiveTier()}setRuntimeAssets(e){var t;const n=e?new $e(e,this.options.assetsPrefix,!1!==this.runtimePolicy.strictBundleAssets):void 0;null===(t=this.assetResolver)||void 0===t||t.dispose(),this.assetResolver=n}authorizeSceneOptions(e){return Ce(function*(){})()}fromJSON(e,t){var n=this;return Ce(function*(e,t,r={}){var i;n.cancelPrefabOperations(),n.prefabAssets=[],n.prefabMaterials=[];const o=Pe({},t),s=o.preprocessor;let a;delete o.preprocessor,"string"==typeof e?(console.time("vis-core:time.json-fetch"),a=yield Te(e,{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!1}}),console.timeEnd("vis-core:time.json-fetch")):a=e,s&&(a=yield s(a)),bt(a),n.setRuntimeAssets(a.runtimeAssets);const c=r.consumeInput&&!s&&1===a.scenes.length,l=Sn(a,a.entrySceneId,{resolveResources:!c});if(!l.vis)throw new Error("fromJSON: missing vis in scene document");if(l.vis.type!==n.visName)throw new Error(`fromJSON: scene ${l.id} requires ${l.vis.type}, received ${n.visName}`);let d=Pe({},l.vis.options);for(const n of["pencil","rendererWarmup","container","css2DContainer","controlsContainer"])delete d[n];var u,p;o.beforeSetVisOptions&&(d=null!==(u=yield o.beforeSetVisOptions(d,n))&&void 0!==u?u:d);(delete d.assetsPrefix,n.setOptions(d),o.afterSetVisOptions)&&(n.options=null!==(p=yield o.afterSetVisOptions(n.options,n))&&void 0!==p?p:n.options);let h;"map"===n.visName&&(yield n.authorizeSceneOptions(n.options)),n.cameraState=Pe({},l.cs),n.cameraStateActive=null!==(i=l.csa)&&void 0!==i?i:"visShow";try{var f,v;h=n.initializeRuntime();const e=pn(l,{omitPrefabPreviews:!(null===(f=n.runtimePolicy)||void 0===f?void 0:f.includePrefabPreviews),consumeInput:!0});yield h,a.runtimeAssets&&xt({scene:e},a.runtimeAssets.entries.flatMap(e=>e.sources),n.resolveAssetUrl),yield n.restoreScene(e,n.objectTypes,Pe(Pe({},r),{},{consumeInput:!0})),n.setPrefabLibrary(a.prefabLibrary,null!==(v=a.materialLibrary)&&void 0!==v?v:[]),o.beforeShow&&(yield o.beforeShow(n)),yield n.show(),o.afterShow&&(yield o.afterShow(n))}catch(Le){throw yield null==h?void 0:h.catch(()=>{}),console.error(Le),Le}}).apply(this,arguments)}initializeRuntime(){var e,t=this;return this.disposed?Promise.reject(/* @__PURE__ */new Error("Vis has been disposed")):null!==(e=this.runtimeInitialization)&&void 0!==e?e:this.runtimeInitialization=Ce(function*(){var e,n;if(yield t.createRuntime(),t.disposed)throw new Error("Vis has been disposed");if(null===(e=t.pencil.event)||void 0===e||e.on("lead.updateKey",t.handleObjectIdentityChanged),null===(n=t.pencil.event)||void 0===n||n.on("sceneResources.updateKey",t.handleMaterialIdentityChanged),t.initializeControls(),yield t.onRuntimeReady(),t.disposed)throw new Error("Vis has been disposed");t.applyControls()})()}onRuntimeReady(){return Ce(function*(){})()}onSceneRestored(){return Ce(function*(){})()}onDispose(){}get objectTypes(){return Er}get defaultCameraUp(){return new y(0,1,0)}createRuntime(){var e=this;return Ce(function*(){var t;if(e.pencil)return;e.tier0=3!==e.getEffectiveTier();const n=Pe(Pe({},e.options.pencilConfig),{},{css2DRendererParams:{collision:{enabled:!0,fadeTime:0}}}),r=null===(t=n.camera)||void 0===t?void 0:t.up,i=Array.isArray(r)?(new y).fromArray(r):r?new y(r.x,r.y,r.z):e.defaultCameraUp;if(n.camera=Pe(Pe({near:.1,far:1e3,fov:45},n.camera),{},{up:i.normalize()}),e.options.css2DContainer&&(n.css2DRendererParams=Pe({container:e.options.css2DContainer},n.css2DRendererParams)),e.options.controlsContainer&&(n.controls={domElement:e.options.controlsContainer}),e.options.pencil){var o,s,a,c,l,d,u,p;e.pencil=e.options.pencil,e.ownsPencil=!1,e.acquireRenderingSuspensions(),e.renderingSuspensions.size||e.pencil.stop(),e.sceneActive=e.pencil.addPage({cameraOptions:{fov:null!==(o=null===(s=n.camera)||void 0===s?void 0:s.fov)&&void 0!==o?o:45,near:null!==(a=null===(c=n.camera)||void 0===c?void 0:c.near)&&void 0!==a?a:.1,far:null!==(l=null===(d=n.camera)||void 0===d?void 0:d.far)&&void 0!==l?l:1e3,up:null!==(u=null===(p=n.camera)||void 0===p?void 0:p.up)&&void 0!==u?u:new y(0,1,0)},sceneOptions:{background:new V(0)}}),e.setSceneActive()}else{const t=new b(Pe(Pe({container:e.container,helper:!1,css2DRenderer:!0,attributesWorkerVersion:Tt,camera:{near:.1,far:1e3,fov:45,up:new y(0,1,0)},bloom:!0,scene:{background:new V(0)},loader:{prefix:e.options.assetsPrefix,simpleTexture4deleted:!0}},n),{},{rendererWarmup:e.rendererWarmup,renderer:qr(e.resolveRendererDepthBufferOptions().autoDepthBuffer,n.renderer)}));e.rendererWarmup=void 0,e.pencil=t,e.ownsPencil=!0,e.acquireRenderingSuspensions(),e.sceneActive=1}const h=e.pencil;if(yield h.ready,e.disposed)throw new Error("Vis has been disposed");if(e.showDetectRes(),e.ownsPencil){if(e.tier0){var f,v,m;if(void 0===(null===(f=n.composer)||void 0===f?void 0:f.multisampling))h.options.composer=Pe(Pe({},h.options.composer),{},{multisampling:0}),null===(m=h.composerController)||void 0===m||m.synchronizeRendererCapabilities(0);if(void 0===(null===(v=n.loader)||void 0===v?void 0:v.anisotropy)){h.options.loader=Pe(Pe({},h.options.loader),{},{anisotropy:1}),h.loaderController.options.loaderParams.anisotropy=1;for(const e of h.loaderController.controllerMap.keys())e.options.anisotropy=1}}fe(h,{container:e.container,tier0:e.tier0,observeParentScale:!!e.options.observeParentScale&&e.runtimePolicy.observeParentScale})}e.lead=h.lead,e.sceneResources=h.sceneResources,h.loader.loadingManager.setURLModifier(e.resolveAssetUrl),h.loader.on("loadError",t=>e.emit("resourceLoadError",t)),h.event.on("scriptError",e.reportScriptError),h.loader.on("progress",(...t)=>{!0!==e.showState&&e.emit("loaderProgress",...t)}),e.leftTruck&&(h.controls.mouseButtons.left=T.TRUCK,h.controls.mouseButtons.right=T.ROTATE),e.hideSceneContent(),e.initSceneUserData()})()}setSceneActive(){this.pencil.showPage(this.sceneActive),this.pencil.controls.updateCameraUp(),this.applySceneRenderState(),this.applyControls()}applySceneRenderState(){var e;const t=this.pencil.scene,n=null==t?void 0:t.userData;if(!n)return;if("boolean"==typeof n.shadowMapEnabled){var r;const e=null===(r=this.pencil.renderer)||void 0===r?void 0:r.shadowMap;e&&e.enabled!==n.shadowMapEnabled&&(e.enabled=n.shadowMapEnabled,t.traverse(e=>{const t=e;t.receiveShadow&&t.material&&(Array.isArray(t.material)?t.material:[t.material]).forEach(e=>{e.needsUpdate=!0})}))}const i=null===(e=this.pencil.composerController)||void 0===e?void 0:e.bloomPass;i&&("number"==typeof n.bloomThreshold&&(i.threshold=n.bloomThreshold),"number"==typeof n.bloomRadius&&(i.radius=n.bloomRadius),"number"==typeof n.bloomStrength&&(i.strength=n.bloomStrength))}releasePencilOwnership(){this.ownsPencil=!1}initSceneUserData(){var e,t,r;const i=this.pencil,o=i.scene.background,s=o instanceof V?"Color":o instanceof n?"Texture":"None",a="Texture"===s?o:null,c=303===(null==a?void 0:a.mapping),l="Color"===s?o.getHexString():"000000";i.scene.userData=new Proxy({backgroundType:s,backgroundColor:l,backgroundTexture:a,backgroundEquirectangular:c,shadowMapEnabled:this.pencil.renderer.shadowMap.enabled,bloomThreshold:null===(e=this.pencil.composerController)||void 0===e||null===(e=e.bloomPass)||void 0===e?void 0:e.threshold,bloomRadius:null===(t=this.pencil.composerController)||void 0===t||null===(t=t.bloomPass)||void 0===t?void 0:t.radius,bloomStrength:null===(r=this.pencil.composerController)||void 0===r||null===(r=r.bloomPass)||void 0===r?void 0:r.strength},{set:(e,t,n)=>{if("shadowMapEnabled"===t)this.pencil.renderer.shadowMap.enabled=n,this.pencil.scene.traverse(e=>{const t=e;if(t.receiveShadow&&t.material){const e=t.material;Array.isArray(e)?e.forEach(e=>{e.needsUpdate=!0}):e.needsUpdate=!0}});else if("backgroundType"===t)if("None"===n)i.scene.background=null;else if(i.scene.userData.backgroundColor&&"Color"===n){const e=i.scene.userData.backgroundColor.replace("#","");i.scene.background=(new V).setHex(parseInt(e,16))}else i.scene.userData.backgroundTexture&&"Texture"===n&&(i.scene.background=i.scene.userData.backgroundTexture);else if("backgroundColor"===t&&"Color"===i.scene.userData.backgroundType){const e=n.replace("#","");i.scene.background=(new V).setHex(parseInt(e,16))}else if("backgroundTexture"===t&&"Texture"===i.scene.userData.backgroundType)i.scene.background=n,n&&(i.scene.userData.backgroundEquirectangular?n.mapping=303:n.mapping=300);else if("backgroundEquirectangular"===t){const e=i.scene.background;(null==e?void 0:e.mapping)&&(e.mapping=n?303:300,e.needsUpdate=!0)}else"bloomThreshold"===t?i.composerController.bloomPass&&(i.composerController.bloomPass.threshold=n):"bloomRadius"===t?i.composerController.bloomPass&&(i.composerController.bloomPass.radius=n):"bloomStrength"===t&&i.composerController.bloomPass&&(i.composerController.bloomPass.strength=n);return Reflect.set(e,t,n)}})}setObjectState(e,t){return function(e,t,n=mr){const r=Pe({},t),i=fr.has(e);fr.add(e);try{return Object.assign(e.object3d.userData,r),n(e,r),e}finally{i||fr.delete(e)}}(e,t,(e,t)=>this.applyObjectState(e,t))}applyObjectState(e,t=e.object3d.userData){mr(e,t)}playEnterTransition({duration:e,onPrepared:t}){var n=this;return Ce(function*(){const r=_(n.lead.scene);null==t||t(),yield r.start({duration:e})})()}addCSS3DRenderer(e){var t;this.pencil&&!(null===(t=this.pencil.cssRendererController)||void 0===t?void 0:t.css3Drenderer)&&this.pencil.cssRendererController.addRenderer("css3d",{container:e,zIndex:"auto"})}getControls(){var e;return structuredClone(null!==(e=this.options.controls)&&void 0!==e?e:{})}setControls(e){this.validateControls(e),this.options.controls=Pe(Pe({},this.options.controls),structuredClone(e)),this.applyControls()}setTemporaryControls(e){var t;this.validateControls(e);const n={};return null!==(t=this.temporaryControls)&&void 0!==t||(this.temporaryControls=/* @__PURE__ */new Map),this.temporaryControls.set(n,structuredClone(e)),this.applyControls(),()=>{this.temporaryControls.delete(n)&&this.applyControls()}}validateControls(e){if(!e||"object"!=typeof e||Array.isArray(e))throw new Error("Invalid scene controls");for(const[t,n]of Object.entries(e))if("mouseLeft"===t||"mouseRight"===t||"mouseWheel"===t){if(!Number.isInteger(n)||n<0)throw new Error(`Invalid control action ${t}`)}else if("mouseNone"===t){if("boolean"!=typeof n)throw new Error("Invalid mouseNone control")}else if("autoRotateSpeed"===t){if(!Number.isFinite(n))throw new Error("Invalid autoRotateSpeed control")}else{if("viewportPadding"!==t)throw new Error(`Unknown scene control ${t}`);if(!Array.isArray(n)||4!==n.length||![...n].every(e=>Number.isFinite(e)&&e>=0))throw new Error("Invalid viewportPadding control")}}initializeControls(){const e=this.pencil.controls.mouseButtons,t=Pe({mouseLeft:e.left,mouseRight:e.right,mouseWheel:e.wheel,mouseNone:!1,autoRotateSpeed:0},this.options.controls);this.validateControls(t),this.options.controls=structuredClone(t),this.controlsInitialized=!0,this.applyControls()}applyControls(){var e,t,n;if(this.disposed||!this.controlsInitialized||!(null===(e=this.pencil)||void 0===e?void 0:e.controls))return;if(this.pencil.lead&&this.lead!==this.pencil.lead)return;const r=Pe({},this.options.controls);for(const i of null!==(t=null===(n=this.temporaryControls)||void 0===n?void 0:n.values())&&void 0!==t?t:[])Object.assign(r,i);this.applyControlOptions(r)}applyControlOptions(e){var t,n,r;const i=this.pencil.controls.mouseButtons;for(const[o,s]of[["mouseLeft","left"],["mouseRight","right"],["mouseWheel","wheel"]]){const t=e[o];e.mouseNone?i[s]=T.NONE:void 0!==t&&(t||this.runtimePolicy.applyDisabledMouseButtons)&&(i[s]=t)}null===(t=(n=this.pencil).setViewPadding)||void 0===t||t.call(n,...null!==(r=e.viewportPadding)&&void 0!==r?r:[0,0,0,0])}prepareInitialCamera(){var e=this;return Ce(function*(){(yield e.useSaveCamera(e.cameraStateActive))||(yield e.restoreCameraControlTarget())})()}restoreCameraControlTarget(){var e=this;return Ce(function*(){const t=e.pencil.camera;if(!t||e.pencil.lead&&e.pencil.lead!==e.lead)return;let n=t.userData._cameraControlTarget;const r=t.getWorldPosition(new y);void 0===n&&(n=t.getWorldDirection(new y).multiplyScalar(Math.max(r.length(),1)).add(r).toArray()),Array.isArray(n)&&3===n.length&&n.every(Number.isFinite)&&(yield e.pencil.controls.setLookAt(...r.toArray(),...n,!1))})()}hideSceneContent(){this.sceneTemporarilyHidden||(this.authoredSceneVisible=this.lead.scene.object3d.visible),this.lead.scene.object3d.visible=!1,this.sceneTemporarilyHidden=!0}showSceneContent(){this.sceneTemporarilyHidden&&(this.lead.scene.object3d.visible=this.authoredSceneVisible),this.sceneTemporarilyHidden=!1}show(){var e=this;return Ce(function*(){if(e.disposed)throw new Error("Vis has been disposed");if(!e.showState){if(e.showing)return e.showing;e.showing=Ce(function*(){yield e.prepareInitialCamera(),e.disposed||e.options.disableInitShow||(e.showSceneContent(),e.pencil.start(),e.showState=!0,e.emit("show"))})();try{yield e.showing}finally{e.showing=void 0}}})()}hide(){this.showState&&(this.hideSceneContent(),this.showState=!1,this.emit("hide"))}exportScene(){this.pencil.render();const e=this.lead.exportBaseObject(this.lead.scene,{checkTextures:!1});return this.sceneTemporarilyHidden&&(this.authoredSceneVisible?delete e.object.visible:e.object.visible=!1),e}exportBaseObject(e){return this.pencil.render(),this.lead.exportBaseObject(e,{checkTextures:!1})}restoreBaseObject(e){var t=this;return Ce(function*(e,n=this.lead.scene,r=this.objectTypes,i,o={}){const s=yield t.lead.restoreBaseObject(n,e,r,t.getRoomEnvMap(),!0,i,o);try{return null==i||i.throwIfAborted(),s.traverse(e=>t.applyObjectState(e)),s}catch(a){throw s.erase(),a}}).apply(this,arguments)}restoreScene(e){var t=this;return Ce(function*(e,n=this.objectTypes,r={}){const i=function(e,t,n={}){const r="string"==typeof e?JSON.parse(e):e,i=e=>{var t,n,r,o;if(!e)return!1;const s=e.userData;return!!((null==s?void 0:s._baseObjectKey)||void 0!==(null==s?void 0:s._baseObjectUuid)&&1!==(null==s?void 0:s._baseObjectIdentityVersion)||(null==s||null===(t=s._baseObjectUserData)||void 0===t?void 0:t.mapGeneratedId)&&void 0===s._baseObjectUserData.mapFeatureId)||(null!==(n=e.children)&&void 0!==n?n:[]).some(i)||i(null===(r=e.shadow)||void 0===r?void 0:r.camera)||i(null==s||null===(o=s._prefabLink)||void 0===o?void 0:o.baseline)};if(!i(null==r?void 0:r.object))return{graph:e,bindings:t};const o="string"==typeof e||n.consumeInput?r:structuredClone(r);Wn(o);const s=L(o),a=t?structuredClone(t):void 0,c=e=>{var t;return null!==(t=s.get(e))&&void 0!==t?t:e};if(a){var l;for(const e of["container","continentsBackground","sphere","map","secondaryMap"])"string"==typeof a[e]&&(a[e]=c(a[e]));(null===(l=a.region)||void 0===l?void 0:l.object)&&(a.region.object=c(a.region.object));for(const e of["parentBackgrounds","cities"])Array.isArray(a[e])&&(a[e]=a[e].map(c))}return{graph:o,bindings:a}}(e,t.options.sceneBindings,{consumeInput:r.consumeInput});"map"===t.visName&&(yield t.authorizeSceneOptions(Pe(Pe({},t.options),i.bindings?{sceneBindings:i.bindings}:{})));const o="string"==typeof i.graph?JSON.parse(i.graph):i.graph,s=r.consumeInput||"string"==typeof e||i.graph!==e,a=f(o,t.options),c=a&&!s?structuredClone(o):o,l=a?structuredClone({materialBindings:t.options.materialBindings,regionTextureRules:t.options.regionTextureRules}):void 0;var u;a&&d(c,l),yield t.initializeRuntime(),t.setSceneActive(),yield t.lead.restoreBaseObject(t.lead.scene,c,n,t.getRoomEnvMap(),t.options.createIfNeeded,void 0,Pe(Pe({},r),{},{consumeInput:!!s||a,onResourceLoad:(u=Ce(function*(e){var n;const i=t.emit("sceneResourceLoad",e);yield null===(n=r.onResourceLoad)||void 0===n?void 0:n.call(r,e),i&&(yield new Promise(e=>setTimeout(e,0)))}),function(e){return u.apply(this,arguments)})})),t.authoredSceneVisible=t.lead.scene.object3d.visible,t.sceneTemporarilyHidden=!1,t.showState||t.hideSceneContent(),i.bindings&&(t.options.sceneBindings=i.bindings),l&&(t.options.materialBindings=l.materialBindings,t.options.regionTextureRules=l.regionTextureRules);for(const d of[...t.lead.objects.values()]){var p;t.applyObjectState(d),yield null===(p=d.rebuildFromScene)||void 0===p?void 0:p.call(d)}t.pencil.controls.updateCameraUp(),yield t.restoreCameraControlTarget(),t.pencil.refreshActiveView(),yield t.onSceneRestored(),t.applyControls()}).apply(this,arguments)}getClassRefByType(e){return this.objectTypes[e]}addGroup(){var e=this;return Ce(function*(){return yield e.lead.draw(Er.Group)})()}addCSS2D(e){var t=this;return Ce(function*(e,n={}){return t.addNode(e,n)}).apply(this,arguments)}addCSS3D(e){var t=this;return Ce(function*(e,n={}){return t.addNode(e,Pe(Pe({},n),{},{type:n.type||"3d"}))}).apply(this,arguments)}addNode(e){var t=this;return Ce(function*(e,n={}){n.display&&(e.style.display=n.display);let r=0;void 0!==n.onTop&&(r=n.onTop);let i="2d";void 0!==n.type&&(i=n.type);const o=n.target?yield n.target.draw(Er.Node,{children:e,type:i}):yield t.lead.draw(Er.Node,{children:e,type:i});return r&&o.setTop(r),o}).apply(this,arguments)}getRoomEnvMap(){if(this.roomEnvMap)return this.roomEnvMap;if(this.disposed)throw new Error("Vis has been disposed");const e=m(this.pencil.renderer,this.pencil.resources);return this.roomEnvLease=e,this.roomEnvMap=e.resource,e.resource}getScreenPosition(e,t,n){const r=new y(e,t,n);return r.project(this.pencil.camera),this.pencil.getScreenPositionFromNDC(r.x,r.y)}uuidByObject(e){const t=this.lead.objMap.get(e);return t?this.uuidByBaseObject(t):void 0}objectByUuid(e){var t;return null===(t=this.baseObjectByUuid(e))||void 0===t?void 0:t.object3d}uuidByBaseObject(e){return e.object3d.uuid}baseObjectByUuid(e){return this.lead.objectsByUuid.get(e)}baseObjectByKey(e){return this.baseObjectByUuid(e)}baseObjectByName(e){return[...this.lead.objects.values()].find(t=>t.name===e)}dispose(){var e;if(this.disposed)return;this.disposed=!0;const t=[],n=e=>{try{e()}catch(n){t.push(n)}};n(()=>this.cancelPrefabOperations()),this.prefabAssets=[],this.prefabMaterials=[],this.showState=!1,n(()=>{var e;return null===(e=this.assetResolver)||void 0===e?void 0:e.dispose()}),this.assetResolver=void 0,n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("scriptError",this.reportScriptError)}),n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("lead.updateKey",this.handleObjectIdentityChanged)}),n(()=>{var e;return null===(e=this.pencil)||void 0===e||null===(e=e.event)||void 0===e?void 0:e.off("sceneResources.updateKey",this.handleMaterialIdentityChanged)}),n(()=>this.onDispose()),n(()=>{var e;return null===(e=this.temporaryControls)||void 0===e?void 0:e.clear()}),n(()=>super.dispose()),this.publicDir={},n(()=>{var e;return null===(e=this.roomEnvLease)||void 0===e?void 0:e.release()}),this.roomEnvLease=void 0,this.roomEnvMap=void 0,this.ownsPencil?n(()=>{var e;return null===(e=this.pencil)||void 0===e?void 0:e.dispose()}):this.sceneActive>=0&&n(()=>{var e;return null===(e=this.pencil)||void 0===e?void 0:e.removePage(this.sceneActive)});for(const r of null!==(e=this.renderingSuspensions)&&void 0!==e?e:[]){this.renderingSuspensions.delete(r);const e=r.releasePencil;r.releasePencil=void 0,n(()=>null==e?void 0:e())}if(1===t.length)throw t[0];if(t.length)throw new AggregateError(t,"Base disposal failed")}};Re(Hr,"VisName","base");var Kr=(e={})=>{var t,n,r,i,o,s;return String(null!==(t=null!==(n=null!==(r=null!==(i=null!==(o=null!==(s=e.adcode)&&void 0!==s?s:e.iso_a2)&&void 0!==o?o:e.DistrictID)&&void 0!==i?i:e.id)&&void 0!==r?r:e.name)&&void 0!==n?n:e.DistName)&&void 0!==t?t:"all")};function Xr(e,t,n){var r;const i=e.userData,o=null!==(r=null!=n?n:i.mapFeatureId)&&void 0!==r?r:Kr(i);i.mapGenerated=!0,i.mapRole=t,i.mapFeatureId=String(o),i.mapGeneratedId=`${t}:${o}`}var Yr=/* @__PURE__ */new WeakMap,Jr=class extends be{getHideMaterial(){var e,t;const n=null===(e=this.pencil)||void 0===e?void 0:e.resources,r=()=>new B({colorWrite:!1,transparent:!0});if(!n)return null!==(t=this.standaloneHideMaterial)&&void 0!==t?t:this.standaloneHideMaterial=r();let i=Yr.get(n);return i&&!n.wasDisposed(i)||(i=r(),Yr.set(n,i)),i}constructor(e){var t;super(),Re(this,"objectType","PlaneMap"),Re(this,"options",void 0),Re(this,"isActive",!0),Re(this,"groupArr",[]),Re(this,"areaArr",[]),Re(this,"lineArr",void 0),Re(this,"mergeSideArea",null),Re(this,"extrudelineArr",void 0),Re(this,"splitPolygons",0),Re(this,"standaloneHideMaterial",void 0),this.options=Pe({areaGroup:!0,hasSide:!0,hasTop:!0,lineOffset:0,start:0,hasLine:!0,castShadow:!1,topSegments:0,bevelRatio:0,depth:2,bloom:!1,conic:!1,mergeSide:!1,hasExtrudeLine:!0,onTop:0,projection:{}},e),-160===(null===(t=this.options.projection.rotate)||void 0===t?void 0:t[0])&&("winkel3"===this.options.projection.projectionType?this.splitPolygons=100:this.splitPolygons=300)}create(){var e=this;return Ce(function*(){const{geojson:t,extrudeLineGeojson:n,bbox:r,areaGroup:i,materialOptions:o,hasSide:s,hasTop:a,hasLine:c,mergeSide:l,hasExtrudeLine:d}=e.options;var u;i&&(e.groupArr=yield Promise.all(t.features.map((u=Ce(function*(t){const{properties:n}=t,r=`${e.getPropertiesKey(n)}`,i=yield e.draw(be);return Xr(i,"group",r),i.object3d.name="100000_JD"===(null==n?void 0:n.adcode)?"十段线":null==n?void 0:n.name,void 0!==(null==n?void 0:n.adcode)&&(i.userData.adcode=n.adcode),i}),function(e){return u.apply(this,arguments)}))));const{lineMat:p,topMat:h,sideMat:f}=o,v=s?[h,f||h]:[h],[m,g]=yield Promise.all([(a||s)&&e.addArea(t,{material:v,bbox:r,areaGroup:i,hasSide:s,hasTop:a,onTop:e.options.onTop}),c&&p&&e.addLine(t,{material:p,onTop:e.options.onTop+2,areaGroup:i})]);m&&(e.areaArr=m),l&&(yield e.mergeAreaSide()),g&&(e.options.conic||g.forEach(t=>{t.position.z=e.options.depth+e.options.lineOffset}),e.lineArr=g),d&&n&&(yield e.createExtrudeLines()),e.markGeneratedObjects()})()}markGeneratedObjects(){var e,t;this.groupArr.forEach(e=>Xr(e,"group")),this.areaArr.forEach(e=>Xr(e,"area")),null===(e=this.lineArr)||void 0===e||e.forEach(e=>Xr(e,"line")),null===(t=this.extrudelineArr)||void 0===t||t.forEach(e=>Xr(e,"extrudeLine","all")),this.mergeSideArea&&Xr(this.mergeSideArea,"mergedSide","all")}ensureExtrudeLineMaterials(){const e=this.options.materialOptions;for(const[t,n]of[["lineMat","extrudeLineMat"],["bgLineMat","bgExtrudeLineMat"]]){if(e[n]||!e[t])continue;const r=x(e[t],e=>this.createResource(e));r.name="板块边线",this.sceneResources.add(r),e[n]=r}return e}createExtrudeLines(){var e=this;return Ce(function*(){var t;const{extrudeLineGeojson:n}=e.options,{extrudeLineMat:r,bgExtrudeLineMat:i}=e.ensureExtrudeLineMaterials();if(!n||!r||(null===(t=e.extrudelineArr)||void 0===t?void 0:t.length))return;const o=yield e.addLine(n,{material:r,onTop:e.options.onTop+3});o.forEach(t=>{e.options.conic||(t.position.z=e.options.depth+e.options.lineOffset),t.object3d.name="板块边线",Xr(t,"extrudeLine","all")}),e.extrudelineArr=o,e.markGeneratedObjects(),i&&!e.isActive&&e.useExtrudeLineMaterial("bg"),e.options.bloom&&e.isActive&&e.toggleExtrudelineBloom(!0)})()}createLines(e,t){var n=this;return Ce(function*(){var r;if((null===(r=n.lineArr)||void 0===r?void 0:r.length)||!n.options.hasLine)return n.lineArr||[];const i=n.options.materialOptions,o=e||i.lineMat;if(!o)return[];i.lineMat=o,t&&(i.bgLineMat=t);const s=yield n.addLine(n.options.geojson,{material:o,onTop:n.options.onTop+2,areaGroup:n.options.areaGroup});return n.options.conic||s.forEach(e=>{e.position.z=n.options.depth+n.options.lineOffset}),n.lineArr=s,n.markGeneratedObjects(),n.isActive||n.useLineMaterial("bg"),s})()}clearExtrudeLines(){var e;null===(e=this.extrudelineArr)||void 0===e||e.forEach(e=>{e.erase()}),this.extrudelineArr=void 0}syncExtrudeLines(){var e=this;return Ce(function*(t=this.options.hasExtrudeLine){e.options.hasExtrudeLine=t,t?yield e.createExtrudeLines():e.clearExtrudeLines()}).apply(this,arguments)}mergeAreaSide(){var e=this;return Ce(function*(){const{extrudeLineGeojson:t}=e.options;t&&(e.mergeSideArea=(yield e.addArea(t,{material:e.areaArr[0].object3d.material[1],bbox:e.options.bbox,areaGroup:!1,hasSide:!0,hasTop:!1,onTop:e.options.onTop}))[0],Xr(e.mergeSideArea,"mergedSide","all"),e.mergeSideArea.object3d.name="板块合并侧面",e.areaArr.forEach(t=>{t.object3d.material[1]=e.getHideMaterial(),t.object3d.castShadow=!1}))})()}unmergeAreaSide(){var e=this;return Ce(function*(){if(!e.mergeSideArea)return;const t=e.mergeSideArea.object3d.material;e.mergeSideArea.erase(),e.mergeSideArea=null,e.areaArr.forEach(n=>{n.object3d.material[1]=t,n.object3d.castShadow=e.options.castShadow})})()}addArea(t,n){var r=this;return Ce(function*(){const{bbox:i,material:o,onTop:s}=n,a=r.geojson2Meta(t),c=r.shouldUseGeometryWorker(a);if(n.areaGroup)return yield Promise.all(a.map((l=Ce(function*(t){const{coords:a,properties:l}=t,d=!(null==l?void 0:l.extension)&&n.hasSide,u=r.findGroup(r.getPropertiesKey(l)),p=`${r.getPropertiesKey(l)}`;let h=o;!d&&Array.isArray(o)&&(h=o[0]);const f=yield u.draw(e,r.options.conic?{useWorker:c,coordinatesArr:a,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:d,hasTop:n.hasTop,useGroups:d&&n.hasTop?2:0,material:h}:{useWorker:c,useFloat64Array:!0,coordinatesArr:a,globalMeta:[r.options.depth],projection:r.options.projection,topSegments:r.options.topSegments,bevelRatio:r.options.bevelRatio,bbox:i,hasBottom:!1,hasSide:d,hasTop:n.hasTop,useGroups:d&&n.hasTop?2:0,splitPolygons:r.splitPolygons,material:h});return s&&f.setTop(s),f.object3d.name="板块",f.object3d.castShadow=r.options.castShadow,f.userData=Pe({},l),Xr(f,"area",p),f}),function(e){return l.apply(this,arguments)})));{const t=a.flatMap(({coords:e})=>e);let s=o;!n.hasSide&&Array.isArray(o)&&(s=o[0]);const l=yield r.draw(e,r.options.conic?{useWorker:c,coordinatesArr:t,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:n.hasSide,hasTop:n.hasTop,useGroups:2,material:s}:{useWorker:c,useFloat64Array:!0,coordinatesArr:t,globalMeta:[r.options.depth],projection:Pe({},r.options.projection),topSegments:r.options.topSegments,bevelRatio:r.options.bevelRatio,bbox:i,hasSide:n.hasSide,hasTop:n.hasTop,hasBottom:!1,useGroups:2,splitPolygons:r.splitPolygons,material:s});return l.object3d.castShadow=r.options.castShadow,l.object3d.name="板块",l.userData={},Xr(l,"area","all"),[l]}var l})()}addLine(e,t){var n=this;return Ce(function*(){const{material:r,onTop:i}=t,o=n.geojson2Meta(e),s=n.shouldUseGeometryWorker(o);if(t.areaGroup)return yield Promise.all(o.map((a=Ce(function*(e){const{coords:t,properties:o}=e,a=n.findGroup(n.getPropertiesKey(o)),c=`${n.getPropertiesKey(o)}`,l=yield a.draw(ve,n.options.conic?{useWorker:s,coordinatesArr:t,projection:"sphere",globalMeta:[1,n.options.start+n.options.depth+n.options.lineOffset],material:r}:{useWorker:s,useFloat64Array:!0,coordinatesArr:t,globalMeta:[1],projection:n.options.projection,splitPolygons:n.splitPolygons,material:r});return Xr(l,"line",c),i&&l.setTop(i),l.object3d.name="线",l}),function(e){return a.apply(this,arguments)})));{const e=o.flatMap(({coords:e})=>e),t=yield n.draw(ve,n.options.conic?{useWorker:s,coordinatesArr:e,globalMeta:[1,n.options.start+n.options.depth+n.options.lineOffset],projection:"sphere",material:r}:{useWorker:s,useFloat64Array:!0,coordinatesArr:e,globalMeta:[1],projection:n.options.projection,splitPolygons:n.splitPolygons,material:r});return Xr(t,"line","all"),i&&t.setTop(i),t.object3d.name="线",[t]}var a})()}shouldUseGeometryWorker(e){if(this.options.conic)return!0;let t=0;for(const{coords:n}of e)for(const e of n)if(t+=e.length,t>=1e4)return!0;return!1}getPropertiesKey(e){return Kr(e)}geojson2Meta(e){return e.features.filter(e=>e.geometry).map(e=>{const{type:t,coordinates:n}=e.geometry;let r=[];return"Polygon"===t?r=n:"MultiPolygon"===t&&(r=n.flat()),{coords:r,properties:e.properties}})}update(e,t){const{lineMat:n,extrudeLineMat:r}=this.options.materialOptions;this.isActive&&[n,r].forEach(e=>{var n;const r=null==e?void 0:e.uniforms;(null==r||null===(n=r.lineLightAnimation)||void 0===n?void 0:n.value)&&r.time&&(r.time.value=t)})}findGroup(e,t=!1){return this.groupArr.find(t=>t.userData.mapFeatureId===String(e))}batchMaterialChanges(e){var t;const n=null===(t=this.sceneResources)||void 0===t?void 0:t.resources;n?n.batch(e):e()}useAreaMaterial(e){const{bgTopMat:t,bgSideMat:n,topMat:r,sideMat:i}=this.options.materialOptions,o="bg"===e?[t,n]:[r,i];o[0]&&this.batchMaterialChanges(()=>{this.mergeSideArea?(this.areaArr.forEach(e=>{e.object3d.material=[o[0],this.getHideMaterial()]}),this.mergeSideArea.object3d.material=o[1]):this.areaArr.forEach(e=>{e.object3d.material=[...o]})})}useLineMaterial(e){const{lineMat:t,bgLineMat:n}=this.options.materialOptions,r="bg"===e?n:t;r&&this.batchMaterialChanges(()=>{this.lineArr.forEach(e=>{e.object3d.material=r})})}useExtrudeLineMaterial(e){const{extrudeLineMat:t,bgExtrudeLineMat:n}=this.options.materialOptions,r="bg"===e?n:t;r&&this.batchMaterialChanges(()=>{var e;null===(e=this.extrudelineArr)||void 0===e||e.forEach(e=>{e.object3d.material=r})})}changeLineAnimateParams({speed:e=.5,extrude:t=!1}){const{lineMat:n,extrudeLineMat:r}=this.options.materialOptions,i=t?r:n;if(!i)return;i.uniforms.time.value=0,i.uniforms.speed.value=e,i.uniforms.lineLightAnimation.value=1;const{size:o,min:s,max:a}=this.getSize();i.uniforms.size.value=Math.max(o.x,o.y)/2,i.uniforms.uCenter.value=new ee((s.x+a.x)/2,(s.y+a.y)/2)}deactive(){this.isActive&&this.batchMaterialChanges(()=>{this.isActive=!1,this.options.bloom&&this.toggleExtrudelineBloom(!1),this.useAreaMaterial("bg"),this.useLineMaterial("bg"),this.useExtrudeLineMaterial("bg")})}render(){super.render(),this.options.bloom&&this.toggleExtrudelineBloom(!0)}rebuildFromScene(){this.groupArr=[],this.areaArr=[],this.extrudelineArr=[],this.mergeSideArea=null;const e=[];this.children.forEach(t=>{t.userData.copySource||t.userData.mapGenerated&&("Group"===t.objectType?(this.groupArr.push(t),t.children.forEach(t=>{!t.userData.copySource&&t.userData.mapGenerated&&("ExtrudePolygon"===t.objectType?this.areaArr.push(t):"Line"===t.objectType&&e.push(t))})):"ExtrudePolygon"===t.objectType?"mergedSide"===t.userData.mapRole||this.options.mergeSide&&!1===t.options.hasTop?this.mergeSideArea=t:this.areaArr.push(t):"Line"===t.objectType&&("extrudeLine"===t.userData.mapRole||"extrudeLine"===t.keyType?(this.extrudelineArr||(this.extrudelineArr=[]),this.extrudelineArr.push(t)):e.push(t)))}),this.lineArr=e,this.restoreMaterialOptionsFromScene(),this.markGeneratedObjects()}restoreMaterialOptionsFromScene(){const e=(e,t=0)=>{var n;const r=null==e||null===(n=e.object3d)||void 0===n?void 0:n.material;return Array.isArray(r)?r[t]:r},t=e=>{const t=/* @__PURE__ */new Map;let n,r=0;for(const i of e){if(!i)continue;const e=(t.get(i)||0)+1;t.set(i,e),e>r&&(n=i,r=e)}return n},n=t(this.areaArr.map(t=>{var n;return!1===(null===(n=t.options)||void 0===n?void 0:n.hasTop)?void 0:e(t,0)})),r=this.mergeSideArea?e(this.mergeSideArea,0):t(this.areaArr.map(t=>{var n,r;if(!1!==(null===(n=t.options)||void 0===n?void 0:n.hasSide))return e(t,!1===(null===(r=t.options)||void 0===r?void 0:r.hasTop)?0:1)})),i=t(this.lineArr.map(t=>e(t,0))),o=t((this.extrudelineArr||[]).map(t=>e(t,0)));this.options.materialOptions=Pe(Pe(Pe(Pe(Pe({},this.options.materialOptions),n?{topMat:n}:{}),r?{sideMat:r}:{}),i?{lineMat:i}:{}),o?{extrudeLineMat:o}:{})}toggleExtrudelineBloom(e){var t;null===(t=this.extrudelineArr)||void 0===t||t.forEach(t=>{e?t.enableBloom():t.disableBloom()})}active(){this.isActive||this.batchMaterialChanges(()=>{this.isActive=!0,this.useAreaMaterial("origin"),this.useLineMaterial("origin"),this.useExtrudeLineMaterial("origin"),this.options.bloom&&this.toggleExtrudelineBloom(!0)})}dispose(){super.dispose(),this.areaArr.length=0,this.lineArr&&(this.lineArr.length=0),this.extrudelineArr&&(this.extrudelineArr.length=0)}},Zr=Pe(Pe({},Er),{},{Earth:class extends Ir{constructor(e){const t=Pe({radius:30,rotationY:0},e);super(t),Re(this,"objectType","Earth"),Re(this,"options",void 0),this.options=t}create(){super.create();const e=this.pencil.sceneResources.get("earthMaterial");this.object3d.material=e,this.rotation.y=this.options.rotationY,this.object3d.name="地球"}rebuildFromScene(){}},SphereShadow:class extends D{constructor(e){super(),Re(this,"objectType","SphereShadow"),Re(this,"options",void 0),this.options=Pe({radius:30},e)}create(){var e=this;return Ce(function*(){const t=new l(e.options.radius,128,90),n=new B;e.object3d.geometry=t,e.object3d.material=n,e.scale.multiplyScalar(1.001),e.rotation.y=Math.PI/180*-90,e.object3d.name="阴影面",e.hide()})()}rebuildFromScene(){}},Countries:Jr,PlaneMap:Jr}),Qr=class extends Hr{constructor(...e){super(...e),Re(this,"leftTruck",!1),Re(this,"map",void 0),Re(this,"sphere",void 0),Re(this,"secondaryMap",void 0),Re(this,"rotationControls",void 0),Re(this,"releaseRotationLock",void 0),Re(this,"visibilityChecks",void 0),Re(this,"stopAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=this.setTemporaryControls({autoRotateSpeed:0})}),Re(this,"resumeAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=void 0})}get mapArea(){var e;return(null===(e=this.map)||void 0===e?void 0:e.areaArr)||[]}setOptions(e){super.setOptions(Pe({mapDepth:1.4,otherMapDepth:0,radius:30,copyChinaPlane:!1,mergeSide:!1},e))}applyControlOptions(e){var t;super.applyControlOptions(e),this.pencil.autoRotate(null!==(t=e.autoRotateSpeed)&&void 0!==t?t:0)}get objectTypes(){return Zr}onRuntimeReady(){var e=this;return Ce(function*(){e.rotationControls=e.pencil.controls,e.rotationControls.addEventListener("controlstart",e.stopAutoRotate),e.rotationControls.addEventListener("controlend",e.resumeAutoRotate)})()}onDispose(){var e,t,n;for(const r of null!==(e=this.visibilityChecks)&&void 0!==e?e:[])r();null===(t=this.rotationControls)||void 0===t||t.removeEventListener("controlstart",this.stopAutoRotate),null===(n=this.rotationControls)||void 0===n||n.removeEventListener("controlend",this.resumeAutoRotate),this.rotationControls=void 0,this.resumeAutoRotate()}getLocationFrame(e,t=0){var n;const[r,o]=e;if(![r,o,t].every(Number.isFinite))throw new TypeError("Earth location and height must be finite");const s=i(r,o,1,1,!0),a=null===(n=this.sphere)||void 0===n?void 0:n.object3d;a&&s.applyAxisAngle(new y(0,1,0),Math.PI/2);const c=s.clone().multiplyScalar(this.getRadius());return a&&(a.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(a.matrixWorld),a.localToWorld(c),s.applyNormalMatrix((new se).getNormalMatrix(a.matrixWorld))),{position:c.addScaledVector(s,t),normal:s}}getLocationPosition(e,t=0){return this.getLocationFrame(e,t).position.toArray()}getCenter(){var e,t;return null!==(e=null===(t=this.sphere)||void 0===t?void 0:t.object3d.getWorldPosition(new y).toArray())&&void 0!==e?e:[0,0,0]}getRadius(){const e=this.sphere;return e?e.object3d.geometry.parameters.radius:0}getWorldRadius(){var e;const t=null===(e=this.sphere)||void 0===e?void 0:e.object3d;if(!t)return 0;t.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(t.matrixWorld);const n=[0,1,2].map(e=>(new y).setFromMatrixColumn(t.matrixWorld,e)),r=n.map(e=>Math.hypot(e.x,e.y,e.z)),i=Math.max(...r),o=64*Number.EPSILON;if(!Number.isFinite(i)||r.some(e=>e<=0||Math.abs(e-i)>i*o))throw new RangeError("Earth world radius requires a uniformly scaled sphere");if(n.forEach((e,t)=>e.divideScalar(r[t])),Math.abs(n[0].dot(n[1]))>o||Math.abs(n[0].dot(n[2]))>o||Math.abs(n[1].dot(n[2]))>o)throw new RangeError("Earth world radius requires a sphere without shear");const s=this.getRadius()*i;if(!Number.isFinite(s)||s<0)throw new RangeError("Earth world radius must be finite and non-negative");return s}requireSurfaceTransform(e){const t=e.determinant();if(!e.elements.every(Number.isFinite)||!Number.isFinite(t)||0===t)throw new RangeError("Earth surface transform must be finite and invertible")}checkBehindEarth(e,t){var n;const r=this.pencil.controls,i=new y,o=()=>{var n;const o=e();if(!o.length)return;const s=null===(n=this.sphere)||void 0===n?void 0:n.object3d;if(!s)return void t(o,o.map(()=>!1));s.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(s.matrixWorld);const a=s.matrixWorld.clone().invert(),c=this.getRadius();this.pencil.camera?this.pencil.camera.getWorldPosition(i):r.getPosition(i,!1);const l=i.clone().applyMatrix4(a);t(o,o.map(e=>{const t=e.object3d.getWorldPosition(new y).applyMatrix4(a).sub(l),n=t.lengthSq();if(0===n||c<=0)return!1;const r=2*l.dot(t),i=r*r-4*n*(l.lengthSq()-c*c);if(i<0)return!1;const o=Math.sqrt(i);return[(-r-o)/(2*n),(-r+o)/(2*n)].some(e=>e>1e-7&&e<.9999999)}))};o(),r.addEventListener("update",o);let s=!0;const a=()=>{var e;s&&(s=!1,r.removeEventListener("update",o),null===(e=this.visibilityChecks)||void 0===e||e.delete(a))};return(null!==(n=this.visibilityChecks)&&void 0!==n?n:this.visibilityChecks=/* @__PURE__ */new Set).add(a),a}setObjectOnSphere(e,t,n=0,r){const{position:i,normal:o}=this.getLocationFrame(t,n),s=e.object3d,a="Plane"===e.objectType,c=new y(...null!=r?r:a?[0,0,-1]:[0,1,0]);if(![c.x,c.y,c.z].every(Number.isFinite)||0===c.lengthSq())throw new TypeError("Earth upAxis must be a finite non-zero direction");const l=s.parent;if(l){l.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(l.matrixWorld);const e=l.matrixWorld.clone().invert();i.applyMatrix4(e),a?o.applyMatrix3((new se).setFromMatrix4(l.matrixWorld).transpose()).normalize():o.transformDirection(e)}if(a){if(![s.scale.x,s.scale.y,s.scale.z].every(e=>Number.isFinite(e)&&0!==e))throw new RangeError("Earth Plane scale must be finite and non-zero");c.divide(s.scale)}else c.multiply(s.scale);if(c.applyQuaternion(s.quaternion).normalize(),0===c.lengthSq())throw new RangeError("Earth target upAxis must have non-zero scale");const d=(new M).setFromUnitVectors(c,o);if(s.position.copy(i),s.quaternion.premultiply(d),a){const e=s.material;for(const t of Array.isArray(e)?e:e?[e]:[])t.side=2}}getSceneBindings(){var e,t,n;return{sphere:null===(e=this.sphere)||void 0===e?void 0:e.key,map:null===(t=this.map)||void 0===t?void 0:t.key,secondaryMap:null===(n=this.secondaryMap)||void 0===n?void 0:n.key}}onSceneRestored(){var e=this;return Ce(function*(){var t,n,r,i;const o=e.options.sceneBindings;if(!o)throw new Error("Earth scene requires explicit sceneBindings");const s=t=>{if(!t)return;const n=e.lead.objects.get(t);if(!n)throw new Error(`Earth scene binding was not found: ${t}`);return n};e.sphere=s(o.sphere),e.map=s(o.map),e.secondaryMap=s(o.secondaryMap),e.options.mapDepth=null!==(t=null===(n=e.map)||void 0===n?void 0:n.options.depth)&&void 0!==t?t:0,e.options.otherMapDepth=null!==(r=null===(i=e.secondaryMap)||void 0===i?void 0:i.options.depth)&&void 0!==r?r:0,e.sphere&&(e.options.radius=e.getRadius()),e.options.sceneBindings=e.getSceneBindings()})()}};Re(Qr,"VisName","earth");var ei={2:[-17.497975,-34.785726,51.380035,37.317299],5:[-81.336621,-55.701226,-34.887318,12.176615],9:[112.908203,-43.619336,153.616895,-10.051758],10:[-179.999989,-89.999933,180,-61.076164],21:[-178.194531,15.651904,179.77998,83.599609],142:[-180,1.265381,179.98779,81.280469],150:[-9.479736,34.934473,66.364146,71.14209]},ti={Asia:142,Europe:150,Africa:2,Australia:9,"North America":21,"South America":5,Antarctica:10},ni={Asia:"亚洲",Europe:"欧洲",Africa:"非洲",Australia:"大洋洲","North America":"北美洲","South America":"南美洲",Antarctica:"南极洲"},ri=Object.keys(ti).map(e=>({name:ni[e],en_name:e,adcode:ti[e],lng:0,lat:0,level:"continent",parent:0,c:[],b:[...ei[ti[e]]]})),ii=[-180,-55.643164,180,83.564844],oi=Pe({},Pt),si=e=>0===e?{name:"世界",adcode:0,lng:0,lat:0,level:"world",parent:0,c:[],b:[...ii]}:/^\d{6}$/.test(`${e}`)?oi[e]:ri.find(t=>t.adcode===e),ai=(e,t=!0)=>{if(0===e)return"world";if(1e5===e)return"country";if(/^\d{6}$/.test(`${e}`)){const{level:n,parent:r}=si(e),i=r&&si(r).level;return"district"===n&&"province"===i&&t?"city":n}return ri.find(t=>t.adcode===e)?"continent":void 0};function ci(e,t,n,r){Ue(t,n,r)}function li(e,t,n){return di.apply(this,arguments)}function di(){return(di=Ce(function*(e,t,n){if(!Number.isInteger(t)||!n||!(yield ze(t,n)))throw Error(`Map region ${t} is not authorized`)})).apply(this,arguments)}var ui=/* @__PURE__ */new WeakMap;function pi(){return(pi=Ce(function*(e,t,n,r){yield li(e,t,n),ui.set(e,{adcode:t});try{return yield r()}finally{ui.delete(e)}})).apply(this,arguments)}var hi=Pe(Pe({},Er),{},{PlaneMap:Jr,ContinentsBg:class extends be{constructor(e){super(),Re(this,"objectType","ContinentsBg"),Re(this,"options",void 0),Re(this,"mapArr",[]),this.options=e}create(){var e=this;return Ce(function*(){const{depth:t}=e.options,n=e.options.materialOptions;e.object3d.name="大洲";const r=yield Te(e.options.geojsonSource,{assetsPrefix:e.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t=>e.pencil.loader.loadingManager.resolveURL(t)}});var i;yield Promise.all(r.features.map((i=Ce(function*(r){var i,o,s;const a=null===(i=r.properties)||void 0===i?void 0:i.adcode;if(10===a)return;const c=Lt(r).geometry.coordinates;let l=0,d=0,u=e.options.scale,p=[0,0];const h={features:[r]};5===a?(l=-30,d=25,u*=.2):21===a?(l=0,d=25,u*=.18,h.features[0].geometry.coordinates=h.features[0].geometry.coordinates.filter(e=>e[0].length>80)):9===a?(l=30,d=25,u*=.3):142===a?(l=-30,d=-25,u*=.15,p=[-160,0],c[0]=c[0]-160):150===a?(l=0,d=-25,u*=.3):2===a&&(l=30,d=-25,u*=.2);const f=yield e.draw(Jr,{geojson:h,projection:{center:c,scale:u,rotate:p,projectionType:"equirectangular"},areaGroup:!1,depth:t,materialOptions:Pe({},n)});Object.assign(f.userData,{mapRole:"continent",adcode:a}),f.object3d.name=null==r||null===(o=r.properties)||void 0===o?void 0:o.name,f.userData.name=null==r||null===(s=r.properties)||void 0===s?void 0:s.name,f.position.set(l,d,0),e.mapArr.push(f)}),function(e){return i.apply(this,arguments)})))})()}getLocationPosition(e,t,n=0){if(t){const r=this.mapArr.find(e=>e.userData.name===t);return r?this.calculatePosition(r,e,n):void 0}let r=this.mapArr.find(t=>{const n=t.options.geojson.features[0],r=n.geometry.type;let i;if("MultiPolygon"===r)i=n.geometry.coordinates;else{if("Polygon"!==r)return!1;i=[n.geometry.coordinates]}return i.some(t=>{if(t&&t.length)try{return Ct(kt(e),Bt(t))}catch(Le){return!1}return!1})});if(!r){console.warn(`⚠️ 坐标 ${e} 不在任何大洲多边形内,尝试使用边界框匹配...`);const t=this.mapArr.map(t=>{var n;const r=ei[null===(n=t.options.geojson.features[0].properties)||void 0===n?void 0:n.adcode];if(!r)return null;const[i,o,s,a]=r;return e[0]>=i&&e[0]<=s&&e[1]>=o&&e[1]<=a?{map:t,area:(s-i)*(a-o),bbox:r}:null}).filter(e=>null!==e);t.length>0&&(t.sort((e,t)=>e.area-t.area),r=t[0].map,console.log(`✅ 使用边界框匹配找到: ${r.userData.name} (${t.length} 个候选)`))}if(r)return this.calculatePosition(r,e,n);console.warn(`⚠️ 未找到包含坐标 ${e} 的大洲`)}calculatePosition(e,t,n){var r;const i=F(Pe({},e.options.projection)),[o,s]=t,[a,c]=i([o,s]),l=new y(a,-c,null!==(r=e.options.depth)&&void 0!==r?r:this.options.depth);if(e.object3d.updateWorldMatrix(!0,!1),e.object3d.localToWorld(l),n){const t=new y(0,0,1).applyNormalMatrix((new se).getNormalMatrix(e.object3d.matrixWorld));l.addScaledVector(t,n)}return[l.x,l.y,l.z]}render(){this.keyType="continents-group",this.mapArr.forEach(e=>{e.keyType="continents-"+e.userData.name})}rebuildFromScene(){this.children.forEach(e=>{if("PlaneMap"===e.objectType){const t=e;this.mapArr.push(t),t.object3d.updateWorldMatrix(!0,!0)}})}dispose(){super.dispose(),this.mapArr.forEach(e=>{e.dispose()}),this.mapArr.length=0}},Mountain:class extends be{constructor(e){super(),Re(this,"objectType","Mountain"),Re(this,"options",void 0),Re(this,"extrudePolygon",void 0),this.options=Pe({depth:2},e)}geojson2Meta(e){return e.features.filter(e=>e.geometry).map(e=>{const{type:t,coordinates:n}=e.geometry;let r=[];return"Polygon"===t?r=n:"MultiPolygon"===t&&(r=n.flat()),{coords:r,properties:e.properties}})}create(){var t=this;return Ce(function*(){const{geojson:n,bbox:r}=t.options,i=t.geojson2Meta(n),o=yield t.pencil.loader.load("/1.png"),s=i.flatMap(({coords:e})=>e),a=yield t.pencil.attributesWorker.geoGeometry("extrudePolygon",{coordinatesArr:s,metaArray:s.map(()=>[t.options.depth]),mesaage:{projection:Pe({},t.options.projection),topSegments:100,bbox:r,hasBottom:!1,hasSide:!1}}),c=t.pencil.resources,l=c.createScope(t);let d;try{l.retain(a);const n=a.attributes.position.count;a.setAttribute("color",new ie(new Float32Array(3*n),3));const r=t.options.depth;t.setNoise(a,o.image,r);const i=new V,s=a.attributes.color,c=a.attributes.position,u=new V("red"),p=new V("green");for(let e=0;e<n;e++){const t=c.getZ(e)/r;i.lerpColors(u,p,t),s.setXYZ(e,i.r,i.g,i.b)}d=l.create(()=>new Se({flatShading:!0,vertexColors:!0}));const h=yield t.draw(e,{geometry:a,material:d});h.position.z+=.001,t.extrudePolygon=h}finally{l.dispose(),c.disposeUnused(a),d&&c.disposeUnused(d)}})()}setNoise(e,t,n=1){const r=document.createElement("canvas"),i=[];r.width=t.width,r.height=t.height;const o=r.getContext("2d");o.drawImage(t,0,0);const s=o.getImageData(0,0,t.width,t.height).data;for(let d=0;d<t.height;d++){i[d]=[];for(let e=0;e<t.width;e++){const n=s[4*(d*t.width+e)];i[d][e]=n/255}}const a=e.attributes.position,c=e.attributes.uv,l=new ee;for(let d=0;d<a.count;d++){l.fromBufferAttribute(c,d);let e=Math.round(l.x*t.width)-1,r=Math.round(l.y*t.height)-1;e<0&&(e=0),r<0&&(r=0);const o=i[r][e];a.setZ(d,o*n)}}rebuildFromScene(){const e=this.children.find(e=>"ExtrudePolygon"===e.objectType);e&&(this.extrudePolygon=e)}},CityPlane:class extends D{constructor(e){super(),Re(this,"objectType","CityPlane"),Re(this,"options",void 0),Re(this,"plane",void 0),this.options=Pe({color:"#0C4557",map:null},e)}create(){var e=this;return Ce(function*(){const{width:t,height:n,color:r,map:i,material:o}=e.options,s=new xe(t,n,2,2);e.plane=s;const a=o||new B({color:r,map:i});e.object3d.geometry=s,e.object3d.material=a})()}rebuildFromScene(){this.plane=this.object3d.geometry}},Area:class extends be{constructor(e){super(),Re(this,"objectType","Area"),Re(this,"options",void 0),Re(this,"area",[]),this.options=Pe({},e)}create(){var t=this;return Ce(function*(){const{jsonUrl:n,projection:r,type:i,cacheKey:o,material:s,oArr:a}=t.options,c=yield t.draw(e,{useWorker:!0,cacheKey:o,projection:r,material:s,hasBottom:!1,hasSide:!1,onCacheMiss:(l=Ce(function*(){const e=yield t.pencil.loader.load(n),r=[],i=[];return(e.features||e).forEach(e=>{const t=e.properties.o||0;let n=[];"Polygon"===e.geometry.type?n=e.geometry.coordinates:"MultiPolygon"===e.geometry.type&&(n=e.geometry.coordinates.flat()),n.forEach(e=>{const n=(null==a?void 0:a.length)?.001*a.findIndex(e=>e===+t):0;r.push(e),i.push([0,n])})}),{coordinatesArr:r,metaArray:i}}),function(){return l.apply(this,arguments)})});var l;c.userData.mapRole=i,t.area.push(c)})()}rebuildFromScene(){this.area=[],this.children.forEach(e=>{"ExtrudePolygon"===e.objectType&&this.area.push(e)})}},Building:class extends be{constructor(e){super(),Re(this,"objectType","Building"),Re(this,"options",void 0),this.options=Pe({},e)}create(){var t=this;return Ce(function*(){var n;const{jsonUrl:r,projection:i,cacheKey:o,meters:s,grey:a,hasSide:c}=t.options,l=null!==(n=t.options.materialOptions)&&void 0!==n?n:{},d={};var u;yield Promise.all(["20","60","max"].map((u=Ce(function*(n){let o=t.options.material;o||(o=c?[l[n+"Top"],l[n+"Side"]]:l[n+"Top"]);const a=yield t.draw(e,{useWorker:!0,cacheKey:t.options.cacheKey?`${t.options.cacheKey}-${n}`:void 0,projection:i,material:o,useGroups:c?2:0,hasBottom:!1,hasSide:null==c||c,onCacheMiss:(u=Ce(function*(){var e,i;const o=yield t.pencil.loader.load(r);return Object.keys(d).length||(o.features||o).forEach(e=>{const t="string"==typeof e.properties.h?+e.properties.h.split(".")[1]:0;let n=0|Number(e.properties.h);if(!c){if(0!==t)return;n=0}const r=+n<=20?+n/18:+n<=60?+n/27:+n/12,i=n+t,o=i<=20?"20":i<=60?"60":"max";d[o]||(d[o]={c:[],m:[]});let a=[];"Polygon"===e.geometry.type?a=e.geometry.coordinates:"MultiPolygon"===e.geometry.type&&(a=e.geometry.coordinates.flat()),a.forEach(e=>{d[o].c.push(e),d[o].m.push([n*(s||1),t*(s||1),r])})}),{coordinatesArr:null===(e=d[n])||void 0===e?void 0:e.c,metaArray:null===(i=d[n])||void 0===i?void 0:i.m}}),function(){return u.apply(this,arguments)})});var u;Object.assign(a.userData,{mapRole:"buildingHeight",mapFeatureId:n})}),function(e){return u.apply(this,arguments)}))),t.options.grey||(t.children.forEach(e=>{e.object3d.castShadow=!0}),t.keyType="building"),t.object3d.name="建筑",t.children.forEach(e=>{var t,n;"ExtrudePolygon"===e.objectType&&e.object3d.geometry.attributes.position&&(null===(t=(n=e.object3d.geometry).computeBoundsTree)||void 0===t||t.call(n))})})()}rebuildFromScene(){this.children.forEach(e=>{var t,n;"ExtrudePolygon"===e.objectType&&e.object3d.geometry.attributes.position&&(null===(t=(n=e.object3d.geometry).computeBoundsTree)||void 0===t||t.call(n))})}},Road:class extends be{constructor(e){super(),Re(this,"objectType","Road"),Re(this,"options",void 0),Re(this,"linePrimary",[]),Re(this,"lineSecondary",[]),this.options=Pe({},e)}create(){var e=this;return Ce(function*(){const{jsonUrl:t,projection:n,cacheKey:r,meters:i}=e.options,o=yield e.draw(ve,{useWorker:!0,cacheKey:r,projection:n,material:e.options.material,onCacheMiss:(s=Ce(function*(){const n=yield e.pencil.loader.load(t),r=[],o=[];return(n.features||n).forEach(e=>{const t=e.properties.w||1;e.geometry.coordinates.forEach(e=>{r.push(e),o.push([t*(i||1)])})}),{coordinatesArr:r,metaArray:o}}),function(){return s.apply(this,arguments)})});var s;o.userData.mapRole="roadGeometry",e.object3d.name="道路",e.linePrimary.push(o)})()}rebuildFromScene(){this.children.forEach(e=>{"Line"===e.objectType&&this.linePrimary.push(e)})}dispose(){super.dispose(),this.linePrimary=[],this.lineSecondary=[]}}});function fi(){return(fi=Ce(function*(e,t,n,r,i,o={lookat:n,adcode:r}){var s,c,l,d,u;const p=null!==(s=null===(c=e.scene.pencil.camera)||void 0===c||null===(c=c.up)||void 0===c?void 0:c.clone().normalize())&&void 0!==s?s:new y(0,0,1),h=new y(n[0]-n[3],n[1]-n[4],n[2]-n[5]);h.applyQuaternion((new M).setFromUnitVectors(p,new y(0,1,0)));const f=(new a).setFromVector3(h),v=null!==(l=null===(d=(u=e.scene.pencil).getViewViewport)||void 0===d?void 0:d.call(u))&&void 0!==l?l:e.scene.pencil.getSize();let m=o.padding;if(!m){const r=e.cameraForPose(n);r&&e.scene.map&&(m=t.measurePerspectiveCameraPadding(Pe({points:e.cameraFitPoints(e.scene.map),camera:r},v)))}const g=o.viewport?v.width/o.viewport.width:1,b=o.viewport?v.height/o.viewport.height:1,w=m?[m.top*b,m.right*g,m.bottom*b,m.left*g]:[0,0,0,0];return{polarAngle:f.phi,azimuthAngle:f.theta,referencePadding:w}})).apply(this,arguments)}function vi(){return vi=Ce(function*(e,t,n,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:c,adcode:l,enableTransition:d=!0,smoothTime:u=250}={}){var p,h,f,v,m,g,b,w,j,S,A,O,x,I;if(!n.object3d)return;for(const[a,y]of Object.entries({polarAngle:r,azimuthAngle:i}))if(void 0!==y&&!Number.isFinite(y))throw new Error(`Invalid map camera ${a}`);const E=null!=l?l:n===e.scene.map?e.scene.adcode:void 0,D=n===e.scene.map&&E===e.scene.adcode&&void 0!==E?null===(p=e.scene.cameraState)||void 0===p?void 0:p[`map-${E}`]:void 0;var P,C;if(gi(D))return yield null===(P=(C=e.scene.pencil.controls).setFocalOffset)||void 0===P?void 0:P.call(C,0,0,0,!1),yield Promise.all([e.scene.lookAt(...D,d,u),null==c?void 0:c()]),void(e.safeAreaRefitPending=!1);if(void 0===r&&void 0===i||(e.cameraAngleOverrides=Pe(Pe(Pe({},e.cameraAngleOverrides),void 0===r?{}:{polarAngle:r}),void 0===i?{}:{azimuthAngle:i})),null!==(h=o)&&void 0!==h||(o=e.getCameraFitReference()),n===e.scene.map&&o&&o.adcode===e.scene.adcode&&void 0===e.safeAreaInsets&&!e.cameraAngleOverrides)return yield Promise.all([e.scene.lookAt(...o.lookat,d,u),null==c?void 0:c()]),void(e.safeAreaRefitPending=!1);let R=e.scene.options.polarAngle,L=e.scene.options.azimuthAngle,k=[0,0,0,0];if(o){const t=yield e.calcPaddingFromReference(o.lookat,o.adcode,o.center,o);R=t.polarAngle,L=t.azimuthAngle,k=t.referencePadding}R=null!==(f=null===(v=e.cameraAngleOverrides)||void 0===v?void 0:v.polarAngle)&&void 0!==f?f:R,L=null!==(m=null===(g=e.cameraAngleOverrides)||void 0===g?void 0:g.azimuthAngle)&&void 0!==m?m:L;const B=e.scene.pencil.controls;R=pe.clamp(R,Math.max(1e-6,null!==(b=B.minPolarAngle)&&void 0!==b?b:0),Math.min(Math.PI-1e-6,null!==(w=B.maxPolarAngle)&&void 0!==w?w:Math.PI)),L=pe.clamp(L,null!==(j=B.minAzimuthAngle)&&void 0!==j?j:-1/0,null!==(S=B.maxAzimuthAngle)&&void 0!==S?S:1/0);const T=e.scene.pencil.camera.up.clone().normalize(),U=(new y).setFromSpherical(new a(1,R,L)).applyQuaternion((new M).setFromUnitVectors(new y(0,1,0),T)),_=e.cameraForPose([...U.toArray(),0,0,0]);if(!_)return;const $=e.getEffectiveSafeAreaPadding(k),z=null!==(A=null===(O=(x=e.scene.pencil).getViewViewport)||void 0===O?void 0:O.call(x))&&void 0!==A?A:e.scene.pencil.getSize(),G=t.fitPerspectiveCameraToPoints(Pe(Pe({points:e.cameraFitPoints(n),camera:_},z),{},{padding:{top:$[0],right:$[1],bottom:$[2],left:$[3]},targetZ:null!=s?s:t.objectWorldBounds(n.object3d).max.z}));G&&(G.far>=e.scene.pencil.camera.far&&(e.scene.pencil.camera.far=1.01*G.far,e.scene.pencil.camera.updateProjectionMatrix()),yield null===(I=B.setFocalOffset)||void 0===I?void 0:I.call(B,0,0,0,!1),yield Promise.all([e.scene.lookAt(...G.position,...G.target,d,u),null==c?void 0:c()]),e.safeAreaRefitPending=!1)}),vi.apply(this,arguments)}function mi(){return(mi=Ce(function*(e,t={}){var n;return!(!e.safeAreaRefitPending||!e.scene.map)&&(yield e.scene.fitTo(e.scene.map,{enableTransition:null!==(n=t.transition)&&void 0!==n&&n,smoothTime:t.smoothTime}),!e.safeAreaRefitPending)})).apply(this,arguments)}var gi=e=>Array.isArray(e)&&6===e.length&&e.every(Number.isFinite)&&Math.hypot(e[0]-e[3],e[1]-e[4],e[2]-e[5])>1e-10,yi=(e={})=>{var t,n,r,i;const o={top:null!==(t=e.top)&&void 0!==t?t:0,right:null!==(n=e.right)&&void 0!==n?n:0,bottom:null!==(r=e.bottom)&&void 0!==r?r:0,left:null!==(i=e.left)&&void 0!==i?i:0};for(const[s,a]of Object.entries(o))if(!Number.isFinite(a)||a<0)throw new Error(`Invalid map safe-area ${s}: ${a}`);return o};function bi(){return bi=Ce(function*(e,t,n){var r;const i=e.scene.options.showLabel;if(!(null===(r=e.scene.mapArea)||void 0===r?void 0:r.length)||!i)return;Ut(n);const o=wi(e);o.length&&(e.labelGroupObject3dUserData=o[0].object3d.userData);const s=yield e.scene.group.draw(t.objects.Group);try{Ut(n),s.object3d.visible=!1,e.labelGroupObject3dUserData&&(s.object3d.userData=e.labelGroupObject3dUserData),s.object3d.userData.isMapLabelGroup=!0,s.userData.mapRole="labels",s.object3d.name="地图标签组";const r=yield Promise.allSettled(e.scene.mapArea.map((a=Ce(function*(r){var o,a,c,l,d,u;Ut(n);let{name:p,adcode:h,centroid:f}=r.userData;const{DistrictID:v,DistName:m,iso_a2:g,center:b}=r.userData;if(h=null!==(o=null!==(a=null!==(c=null!==(l=h)&&void 0!==l?l:g)&&void 0!==c?c:v)&&void 0!==a?a:r.userData.id)&&void 0!==o?o:p,f=f||b,p=p||m,!f)return;const w=e.scene.getLocationPosition(f);if(s.children.some(e=>e.userData.mapFeatureId===String(h))||!w)return;const j=new y(...w);s.object3d.updateWorldMatrix(!0,!1),s.object3d.worldToLocal(j);let S=p;"lite"===i&&S&&(S=p.replace(/自治州|地区|自治区|省|市|壮族|特别行政区|回族|维吾尔/g,""));const A=S?t.getLabelElement(S,e.scene.options.labelStyle):void 0,[O,M,x]=null!==(d=null===(u=e.scene.options.labelOffsets)||void 0===u?void 0:u[h])&&void 0!==d?d:[0,0,0],I=yield s.draw(t.objects.Node,{position:j.add(new y(O,M,x)),children:A});Ut(n),Object.assign(I.userData,{mapRole:"label",mapFeatureId:String(h),adcode:h}),I.object3d.name=S,I.trackCollision()}),function(e){return a.apply(this,arguments)})));Ut(n);const c=r.find(e=>"rejected"===e.status);if("rejected"===(null==c?void 0:c.status))throw c.reason;s.object3d.visible=!0,e.scene.applyObjectState(s);for(const e of o)e.erase()}catch(c){throw s.erase(),c}var a}),bi.apply(this,arguments)}function wi(e){const t=[];return e.scene.lead.scene.traverse(e=>{("labels"===e.userData.mapRole||e.object3d.userData.isMapLabelGroup)&&t.push(e)}),t}function ji(e){const t=wi(e);if(t.length){e.labelGroupObject3dUserData=t[0].object3d.userData;for(const e of t)e.erase()}}function Si(){return Si=Ce(function*(e,t,n){const{cityVis:r}=e.prepareCityVis(t,n);try{yield r.preloadResources()}catch(Le){throw new Error(`城市 ${t} 初始化失败:${Le instanceof Error?Le.message:String(Le)}`,{cause:Le})}}),Si.apply(this,arguments)}function Ai(){return(Ai=Ce(function*(e,t,n=!1){const r=new globalThis.Map,i=i=>{i>=t.length||r.set(i,e.preloadCityVis(t[i],n).then(()=>({status:"fulfilled",value:void 0}),e=>({status:"rejected",reason:e})))};i(0),i(1);for(let o=0;o<t.length;o++){const s=yield r.get(o);if(r.delete(o),"rejected"===s.status)throw s.reason;i(o+2),yield e.scene.initCityVis(t[o],n)}})).apply(this,arguments)}function Oi(){return Oi=Ce(function*(e,t,n=!1){const{cityVis:r,item:i,existing:o}=e.prepareCityVis(t,n);try{yield r.init(o);const t=e.scene.projection([i.lng,i.lat]);var s,a;if(t&&!o)r.group.position.set(t[0],-t[1],0),r.group.position.z=n?1e-5:((null===(s=e.scene.mapObj)||void 0===s?void 0:s.z)||0)+((null===(a=e.scene.mapObj)||void 0===a?void 0:a.depth)||0)+1e-5,r.group.scale.setScalar(e.scene.pscale/r.pscale)}catch(Le){throw new Error(`城市 ${t} 初始化失败:${Le instanceof Error?Le.message:String(Le)}`,{cause:Le})}const c=e.scene.cityVis.findIndex(e=>e.adcode===t);return c>=0?e.scene.cityVis.splice(c,1,r):e.scene.cityVis.push(r),o||e.scene.cityGroup.push(r.group),e.scene.emit("initCityVis",t),r}),Oi.apply(this,arguments)}function Mi(){return Mi=Ce(function*(e,t,n){const r=e.scene.getAdcodeShowLevel(n);if(!r||!["province","city","district"].includes(r))throw new Error(`区域 ${n} 不支持城市数据,请选择省、市或区县`);if("province"===r)yield e.scene.initCityVis(n);else if("city"===r){var i;const r=(null===(i=t.findAdcodeInfo(n))||void 0===i?void 0:i.c)||[];r.length>0?yield e.initCitySequence(r):yield e.scene.initCityVis(n),e.scene.pencil.camera.near=.001,e.scene.pencil.camera.updateProjectionMatrix()}else if("district"===r&&(yield e.scene.initCityVis(n),e.scene.pencil.camera.near=.001,e.scene.pencil.camera.updateProjectionMatrix(),e.scene.options.nearbyCities)){const r=t.findAdcodeInfo(n).parent,i=t.findAdcodeInfo(r).c;yield e.initCitySequence(i.filter(t=>"full"===e.scene.options.nearbyCities||t!==n),!0)}try{e.scene.pencil.attributesWorker.saveCache()}catch(Le){console.warn("缓存失败",Le)}}),Mi.apply(this,arguments)}function xi(){return(xi=Ce(function*(e,t){var n;if(!e.scene.group)return;if(!e.scene.options.parentBg)return void e.scene.clearParentBackground();const r={projection:{center:e.scene.pcenter,scale:e.scene.pscale,rotate:[0,0],projectionType:e.scene.options.projectionType},areaGroup:!1,depth:e.scene.options.parentBgDepth},i=null===(n=t.findAdcodeInfo(e.scene.options.adcode))||void 0===n?void 0:n.parent,o=void 0===i?void 0:t.findAdcodeInfo(i),s=1e5!==e.scene.options.adcode&&!!o,a=1e5===e.scene.options.adcode||1e5===(null==o?void 0:o.adcode);if(!s&&!a)return void e.scene.clearParentBackground();const c=t.findAdcodeInfo(0).b,l=Pe(Pe({},r.projection),{},{rotate:e.scene.options.worldPacificCentre?[-160,0]:void 0}),d=(e,n,i)=>{const o=e.options.projection;if(JSON.stringify(e.options.bbox)!==JSON.stringify(n)||e.options.depth!==r.depth||(null==o?void 0:o.scale)!==i.scale||((null==o?void 0:o.projectionType)||"mercator")!==(i.projectionType||"mercator")||JSON.stringify((null==o?void 0:o.rotate)||[0,0])!==JSON.stringify(i.rotate||[0,0]))return!1;if(JSON.stringify(o.center)!==JSON.stringify(i.center)){const n=[0,0],r=t.getProjection(o)(n),s=t.getProjection(i)(n);e.position.x+=s[0]-r[0],e.position.y+=r[1]-s[1],e.options.projection=Pe(Pe(Pe({},o),i),{},{center:[...i.center]})}return!0};if(e.scene.parentBg=e.scene.parentBg.filter(e=>!!(s&&d(e,o.b,r.projection)||a&&d(e,c,l))||(e.erase(),!1)),s&&!e.scene.parentBg.some(e=>d(e,o.b,r.projection))){const n=i,s=e.scene.getMaterialGroup("parentPlane");if(!(null==s?void 0:s.topMat))throw new Error("Map background requires parentPlane materials; re-export from editor-platform");if(s){const i=yield e.getGeojson(n);if(i){const a=yield e.scene.group.draw(t.objects.PlaneMap,Pe({geojson:i,bbox:o.b,materialOptions:Pe({},s)},r));Object.assign(a.userData,{mapRole:"parentBackground",adcode:n}),a.object3d.name=o.name,a.lineArr.forEach(t=>{t.object3d.name="线",t.keyType="100000line",e.scene.applyObjectState(t)}),a.areaArr.forEach(e=>{e.object3d.name="板块",e.keyType="100000area"}),a.position.z=-e.scene.options.parentBgDepth,e.scene.parentBg.push(a)}}}if(a&&!e.scene.parentBg.some(e=>d(e,c,l))){const n=e.scene.getMaterialGroup("worldPlane");if(!(null==n?void 0:n.topMat))throw new Error("Map background requires worldPlane materials; re-export from editor-platform");if(n){const i=yield e._loadBaseGeojson(0,!1);if(!i)return;const o=t.findAdcodeInfo(0).b,s=yield e.scene.group.draw(t.objects.PlaneMap,Pe(Pe({geojson:Pe(Pe({},i),{},{features:[...i.features.filter(t=>e.scene.options.worldBgFull||"CHN"!==t.properties.iso_a3)]}),bbox:o,materialOptions:Pe({},n)},r),{},{projection:Pe(Pe({},r.projection),{},{rotate:e.scene.options.worldPacificCentre?[-160,0]:void 0})}));Object.assign(s.userData,{mapRole:"worldBackground",adcode:0}),s.object3d.name="世界",s.lineArr.forEach(t=>{t.object3d.name="线",t.keyType="worldline",e.scene.applyObjectState(t)}),s.areaArr.forEach(e=>{e.object3d.name="板块",e.keyType="worldarea"}),s.position.z=-e.scene.options.parentBgDepth,e.scene.parentBg.push(s)}}return e._getParentBgMetrics()})).apply(this,arguments)}function Ii(){return(Ii=Ce(function*(e,t){var n,r,i;if(!e.scene.group)return;if(!e.scene.options.continentsBg)return void e.scene.clearContinentsBackground();const o=e.scene.continentsBg;if(o&&o.options.depth===e.scene.options.continentsBgDepth&&o.options.scale===e.scene.pscale&&o.options.geojsonSource===(null===(n=e.scene.options.assetSources)||void 0===n?void 0:n.continentsLiteGeojson)&&(o.options.assetsPrefix||"")===(e.scene.options.assetsPrefix||""))return;if(e.scene.clearContinentsBackground(),!(null===(r=e.scene.getMaterialGroup("continents"))||void 0===r?void 0:r.topMat))throw new Error("Map background requires continents materials; re-export from editor-platform");const s=null===(i=e.scene.options.assetSources)||void 0===i?void 0:i.continentsLiteGeojson;if(!s)throw new Error("Map.assetSources.continentsLiteGeojson is required for continentsBg");if(e.scene.continentsBg=yield e.scene.group.draw(t.objects.ContinentsBg,{depth:e.scene.options.continentsBgDepth,scale:e.scene.pscale,assetsPrefix:e.scene.options.assetsPrefix,geojsonSource:s,materialOptions:e.scene.getMaterialGroup("continents")}),!e.scene.options.continentsBgAtOrigin){const t=e.getMainMapLocationPosition([104,37.5]);e.worldToObjectParent(t,e.scene.continentsBg),e.scene.continentsBg.position.copy(t)}e.scene.continentsBg.position.z=.1})).apply(this,arguments)}function Ei(){return Ei=Ce(function*(e,t){const n=e.scene.mapObj,r=e.scene.map;if(t.length&&r&&n)for(const s of t){var i;const t=s.copySource;if(!t)continue;const a=s.materialKeys.map(t=>e.scene.sceneResources.get(t)).filter(Boolean);if(!a.length)continue;let c,l=e.scene.baseObjectByUuid(t);if(s.sourceGeneratedId&&(l=void 0,r.traverse(e=>{e.userData.copySource||e.userData.mapGeneratedId!==s.sourceGeneratedId||(l=e)})),l)c=yield l.instantiate();else if("extrudeLine:all"===s.sourceGeneratedId){var o;const t=null!==(o=r.options.extrudeLineGeojson)&&void 0!==o?o:yield e.getGeojson(n.mapInfo.adcode,!0);t&&(r.options.extrudeLineGeojson=t,[c]=yield r.addLine(t,{material:a[0],onTop:r.options.onTop+3}))}if(!c)throw new Error(`Map overlay source was not found: ${t}`);c.object3d.material=1===a.length?a[0]:a,c.position.z=s.zOffset+n.depth,e.scene.lead.setObjectUuid(c,s.uuid),c.userData.copySource=null!==(i=null==l?void 0:l.object3d.uuid)&&void 0!==i?i:t,"extrudeLine:all"===s.sourceGeneratedId&&(Xr(c,"extrudeLine","all"),c.keyType="extrudeLine")}}),Ei.apply(this,arguments)}function Di(e,t,n){const r=e.shadow,i=r.camera;e.updateWorldMatrix(!0,!1),e.target.updateWorldMatrix(!0,!1),r.updateMatrices(e);const{min:o,max:s}=t.clone().applyMatrix4(i.matrixWorldInverse);if(![o.x,o.y,o.z,s.x,s.y,s.z].every(Number.isFinite))return;const a=.05*Math.max(s.x-o.x,s.y-o.y,s.z-o.z,.001),c=(o.x+s.x)/2,l=(o.y+s.y)/2,d=((s.x-o.x)/2+a)*i.zoom,u=((s.y-o.y)/2+a)*i.zoom;i.left=c-d,i.right=c+d,i.bottom=l-u,i.top=l+u;let p=-s.z-a,h=-o.z+a;for(const f of n){const{min:e,max:t}=f.clone().applyMatrix4(i.matrixWorldInverse);[e.x,e.y,e.z,t.x,t.y,t.z].every(Number.isFinite)&&(t.x<o.x-a||e.x>s.x+a||t.y<o.y-a||e.y>s.y+a||(p=Math.min(p,-t.z-a),h=Math.max(h,-e.z+a)))}i.near=Math.min(i.near,p),i.far=Math.max(i.far,h),i.userData._shadowProjectionEdited=!0,i.updateProjectionMatrix(),r.updateMatrices(e),r.needsUpdate=!0}function Pi(){return Pi=Ce(function*(e,t,n){(e.scene.options.regionTextureRules||[]).some(t=>{var n;if(!t||"string"!=typeof t.material||"string"!=typeof t.property)return!1;const r=e.scene.sceneResources.get(t.material),i=null==r||null===(n=r.userData)||void 0===n?void 0:n._materialRuntimeProperties;return r&&(!Array.isArray(i)||!i.includes(t.property))})&&(yield Ci(e,t,n))}),Pi.apply(this,arguments)}function Ci(e,t,n){return Ri.apply(this,arguments)}function Ri(){return Ri=Ce(function*(e,t,n){const r=t.getAdcodeShowLevel(n),i=/* @__PURE__ */new Map;for(const a of e.scene.options.regionTextureRules||[]){if(!a||"string"!=typeof a.material||"string"!=typeof a.property)continue;let e=i.get(a.material);e||i.set(a.material,e=/* @__PURE__ */new Map),e.has(a.property)||e.set(a.property,{texture:null}),Array.isArray(a.levels)&&!a.levels.includes(r||"")||(e.get(a.property).rule=a)}var o;yield Promise.all([...i.values()].flatMap(e=>[...e.values()]).map((o=Ce(function*(t){var i;const o=t.rule;if(!o||o.copyFrom)return;const s=(null===(i=o.sources)||void 0===i?void 0:i[String(n)])||o.url;if("string"!=typeof s||!s.trim())return;const a=s.split("{adcode}").join(String(n)).split("{level}").join(r||"");try{const n=yield e.scene.pencil.loader.load(a);t.texture=(null==n?void 0:n.isTexture)?n:null}catch(c){t.texture=null}}),function(e){return o.apply(this,arguments)})));const s=/* @__PURE__ */new Map;for(const[a,c]of i){const t=e.regionRuleMaterial(a,n);if(!t)continue;let r=s.get(t);r||s.set(t,r=/* @__PURE__ */new Map);for(const[e,n]of c)r.has(e)&&!n.rule||r.set(e,n)}for(const[a,c]of s){const t=/* @__PURE__ */new Map,n=/* @__PURE__ */new Set,r=i=>{var o,s;if(t.has(i))return t.get(i);if(n.has(i))return null;const l=c.get(i);if(!l)return(null===(o=a[i])||void 0===o?void 0:o.isTexture)?a[i]:null;n.add(i);const d=(null===(s=l.rule)||void 0===s?void 0:s.copyFrom)?r(l.rule.copyFrom):l.texture;return e.setRegionTexture(a,i,d),n.delete(i),t.set(i,a[i]),a[i]};for(const e of c.keys())r(e)}}),Ri.apply(this,arguments)}var Li={fitPerspectiveCameraToPoints:le,measurePerspectiveCameraPadding:q,objectWorldBounds:ce},ki={objects:hi,getLabelElement:(e,t={})=>{const n=document.createElement("div");return n.classList.add("vis-map-label"),Object.assign(n.style,Pe(Pe(Pe(Pe({position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center",lineHeight:"1",whiteSpace:"nowrap"},t.color?{color:t.color}:{}),void 0!==t.fontSize?{fontSize:`${t.fontSize}px`}:{}),t.fontFamily?{fontFamily:t.fontFamily}:{}),t.fontWeight?{fontWeight:t.fontWeight}:{})),n.textContent=e,n}},Bi={City:class{constructor(e){Re(this,"adcode",0),Re(this,"pcenter",[104,37.5]),Re(this,"pscale",5e4),Re(this,"projection",void 0),Re(this,"options",void 0),Re(this,"group",void 0),Re(this,"building",void 0),Re(this,"road",void 0),Re(this,"pencil",void 0),Re(this,"lead",void 0),Re(this,"sceneResources",void 0),Re(this,"multiplyScalar",.001),this.pencil=e,this.lead=e.lead,this.sceneResources=e.sceneResources}setOptions(e){this.options=Pe({plane:!0,grey:!1,showBuilding:!0,showRoad:!0,showGrassland:!0,showRiver:!0,buildingHasSide:!0},e)}getProjectionOptions(){return{center:this.pcenter,scale:this.pscale,projectionType:this.options.projectionType}}preloadResources(){var e=this;return Ce(function*(){var t,n,r,i;const{adcode:o,jsonName:s}=e.options,a=e=>null==e?void 0:e.split("{jsonName}").join(s).split("{adcode}").join(String(o)),c={building:a(null===(t=e.options.dataSources)||void 0===t?void 0:t.building),road:a(null===(n=e.options.dataSources)||void 0===n?void 0:n.road),river:a(null===(r=e.options.dataSources)||void 0===r?void 0:r.river),grassland:a(null===(i=e.options.dataSources)||void 0===i?void 0:i.grassland)},l=[[e.options.showBuilding,"建筑","building"],[e.options.showRoad,"道路","road"],[e.options.showRiver,"河流","river"],[e.options.showGrassland,"绿地","grassland"]].filter(([e])=>e);for(const[,e,p]of l)if(!c[p])throw new Error(`${o} 未配置${e}数据源`);const d=yield Promise.allSettled(l.map(([,,t])=>Promise.resolve().then(()=>e.pencil.loader.load(c[t])))),u={};for(const[e,[,p,h]]of l.entries()){const t=d[e];if("rejected"===t.status)throw t.reason;if(!t.value||!Array.isArray(t.value.features||t.value))throw new Error(`${o} 的${p}数据不可用`);u[h]=t.value}return{sources:c,data:u}})()}init(e){var t=this;return Ce(function*(){const{adcode:n}=t.options,{sources:r,data:i}=yield t.preloadResources();if(t.adcode=t.options.adcode,t.options.center&&(t.pcenter=t.options.center),t.projection=F(t.getProjectionOptions()),t.group=e||(yield t.lead.draw(hi.Group)),!e){const e=si(n);t.group.object3d.name=`城市-${e?e.name:n}`,t.group.scale.multiplyScalar(t.multiplyScalar)}Object.assign(t.group.userData,{mapRole:"city",adcode:n});const o=i.river,s=i.grassland,a={};[...(null==o?void 0:o.features)||[],...(null==s?void 0:s.features)||[]].forEach(e=>{e.properties.o&&(a[e.properties.o]=!0)});const c=Object.keys(a).map(e=>+e).sort((e,t)=>e-t),l=-F(t.getProjectionOptions())([t.pcenter[0],899e-8+t.pcenter[1]])[1];yield Promise.all([t.options.showBuilding&&t.drawBuilding({jsonUrl:r.building,meters:l,grey:t.options.grey,hasSide:t.options.buildingHasSide}),t.options.showRoad&&t.drawRoad({jsonUrl:r.road,meters:l,z:c.length,grey:t.options.grey}),t.options.showRiver&&t.drawArea({jsonUrl:r.river,type:"river",oArr:c,grey:t.options.grey}),t.options.showGrassland&&t.drawArea({jsonUrl:r.grassland,type:"grassland",oArr:c,grey:t.options.grey})].filter(Boolean))})()}drawCityPlane(e,t){var n=this;return Ce(function*(){var r,i;const o=null===(r=hr(n.sceneResources,null===(i=n.options.materialBindings)||void 0===i?void 0:i.city))||void 0===r?void 0:r.plane,s=si(e).b,a=n.projection([s[0],s[1]]),c=n.projection([s[2],s[3]]),l=Math.abs(c[0]-a[0]),d=Math.abs(c[1]-a[1]),u=yield(null!=t?t:n.group).draw(hi.CityPlane,{width:10*l,height:10*d,material:o});t&&u.scale.set(n.multiplyScalar,n.multiplyScalar,1),u.object3d.name="底面",u.keyType="city-plane",Object.assign(u.userData,{mapRole:"cityPlane",adcode:e})})()}drawBuilding(){var e=this;return Ce(function*(t={}){var n,r;if(!t.jsonUrl)return void console.warn(" json:Building");const i=e.options.cacheKey?`building-${e.options.cacheKey}${t.hasSide?"":"-no-side"}`:void 0,o=yield e.group.draw(hi.Building,{materialOptions:null!==(n=hr(e.sceneResources,null===(r=e.options.materialBindings)||void 0===r?void 0:r["building"+(t.grey?"-grey":"")]))&&void 0!==n?n:void 0,projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,cacheKey:i,meters:t.meters,grey:t.grey,hasSide:t.hasSide});return Object.assign(o.userData,{mapRole:"cityBuilding",adcode:e.adcode}),e.building=o,o}).apply(this,arguments)}drawArea(){var e=this;return Ce(function*(t={}){var n;if(!t.jsonUrl)return void console.warn(" json:drawGeography");if(!t.type)return;const{grey:r}=t,i=r?"-grey":"",o=e.options.cacheKey?`${t.type}-${e.options.cacheKey}`:void 0,s=yield e.group.draw(hi.Area,{projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,material:hr(e.sceneResources,null===(n=e.options.materialBindings)||void 0===n?void 0:n["geography"+i])[t.type],type:t.type,cacheKey:o,oArr:t.oArr});return Object.assign(s.userData,{mapRole:t.type,adcode:e.adcode}),s.object3d.name="river"===t.type?"河流":"绿地",s}).apply(this,arguments)}drawRoad(){var e=this;return Ce(function*(t={}){var n,r;if(!t.jsonUrl)return void console.warn(" json:Road");const i=e.options.cacheKey?`road-${e.options.cacheKey}`:void 0,o=yield e.group.draw(hi.Road,{material:null===(n=hr(e.sceneResources,null===(r=e.options.materialBindings)||void 0===r?void 0:r["road"+(t.grey?"-grey":"")]))||void 0===n?void 0:n.primary,projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,cacheKey:i,grey:t.grey,meters:t.meters});Object.assign(o.userData,{mapRole:"cityRoad",adcode:e.adcode});const s=t.z||0;return o.position.z=.001*(s+1),e.road=o,o}).apply(this,arguments)}},findAdcodeInfo:si,ec:Ne},Ti={findAdcodeInfo:si,getProjection:F,objects:hi},Ui={findAdcodeInfo:si},_i={cloneMaterialResources:H,getAdcodeShowLevel:ai},$i=class e extends Hr{constructor(...e){super(...e),Re(this,"mapObj",void 0),Re(this,"activePlaneMap",null),Re(this,"safeAreaInsets",void 0),Re(this,"safeAreaRefitPending",!1),Re(this,"parentBg",[]),Re(this,"continentsBg",void 0),Re(this,"group",void 0),Re(this,"projection",void 0),Re(this,"pcenter",[104,37.5]),Re(this,"pscale",50),Re(this,"meters",void 0),Re(this,"cityVis",[]),Re(this,"cityGroup",[]),Re(this,"regionCameraFitReference",void 0),Re(this,"authoredCameraPose",void 0),Re(this,"cameraAngleOverrides",void 0),Re(this,"bundledMapSwitchKey",void 0),Re(this,"navigationAssets",void 0),Re(this,"mapBoundaryMatrix",void 0),Re(this,"mapBoundaryEnabled",void 0),Re(this,"refreshMapBoundary",()=>{var e,t;const n=null===(e=this.map)||void 0===e?void 0:e.object3d;!n||this.pencil.lead&&this.pencil.lead!==this.lead||(n.updateWorldMatrix(!0,!1),this.mapBoundaryEnabled===!!this.options.mapBoundary&&(null===(t=this.mapBoundaryMatrix)||void 0===t?void 0:t.equals(n.matrixWorld))||this.updateMapBoundary())}),Re(this,"labelUpdates",void 0),Re(this,"labelsDirty",!1),Re(this,"labelsDisposed",!1),Re(this,"labelGroupObject3dUserData",null),Re(this,"regionAppearance",void 0)}get map(){var e;return null===(e=this.mapObj)||void 0===e?void 0:e.map}get mapInfo(){var e;return null===(e=this.mapObj)||void 0===e?void 0:e.mapInfo}get mapArea(){var e;return null===(e=this.map)||void 0===e?void 0:e.areaArr}get mapLine(){var e;return null===(e=this.map)||void 0===e?void 0:e.lineArr}get adcode(){var e;return null===(e=this.mapInfo)||void 0===e?void 0:e.adcode}setRuntimeAssets(e){super.setRuntimeAssets(e),this.bundledMapSwitchKey=null==e?void 0:e.mapSwitchKey,this.navigationAssets=e}requireMapAuthorization(e){var t=this;return Ce(function*(){yield li(t,e,t.bundledMapSwitchKey)})()}authorizeSceneOptions(e){var t=this;return Ce(function*(){var n,r;const i=(o=t,ui.get(o));var o;if(i)return void(yield t.requireMapAuthorization(i.adcode));const s=new Set([e.adcode,null===(n=e.sceneBindings)||void 0===n||null===(n=n.region)||void 0===n?void 0:n.adcode,null===(r=e.mapData)||void 0===r?void 0:r.adcode].filter(e=>void 0!==e));if(!s.size)throw Error("Map scene has no authorized region");for(const e of s)yield t.requireMapAuthorization(e)})()}setOptions(e){for(const t of["equirectangular","winkel3","switchFixConfig"])if(void 0!==e[t])throw new Error(`Legacy map option ${t} must be migrated in editor-platform`);e.continentType,super.setOptions(Pe(Pe({mapCameraUpVersion:2,parentBg:!1,worldBgFull:!1,continents:"",continentsBg:!1,continentsBgDepth:0,parentBgDepth:0,topSegments:0,mapDepth:1,mapBevel:0,showDistrict:!0,showLabel:!1,lineWidth:.6,lineOffset:0,extrudeLineWidth:1.8,extrudeLine:!0,projectionType:"mercator",polarAngle:Math.PI/6,azimuthAngle:0,worldPacificCentre:!1,mapBoundary:!0,mergeSide:!1,shadowMap:!1,cityOnMap:!1,continentsBgAtOrigin:!1,showBuilding:!0,buildingHasSide:!0,showRoad:!0,cacheCity:!0,showGrassland:!0,showRiver:!0,showCityOnMapInnerLine:!1,nearbyCities:!1,citySSAO:!1},e),{},{geojsonExtensions:(null==e?void 0:e.geojsonExtensions)||{},geojsonMapReplace:(null==e?void 0:e.geojsonMapReplace)||{},extrudeLineGeojsonMapReplace:(null==e?void 0:e.extrudeLineGeojsonMapReplace)||{}})),delete this.options.geojsonMap,delete this.options.extrudeLineGeojsonMap,delete this.options.jsonNameObj,delete this.options.clickHandleDrillDown,delete this.options.clickOusideBack,delete this.options.mapPadding}_getProjectionCenter(e=this.options.adcode){const t=this.options.center?[...this.options.center]:[104,37.5];return this.options.worldPacificCentre&&1e5===e&&(t[0]-=160),t}_getProjectionRotate(){return this.options.worldPacificCentre?[-160,0]:void 0}_getSplitPolygons(){const e=this._getProjectionRotate();return-160!==(null==e?void 0:e[0])?0:"winkel3"===this.options.projectionType?100:300}get objectTypes(){return hi}get defaultCameraUp(){return new y(0,0,1)}onRuntimeReady(){var e=this;return Ce(function*(){e.updateProjection(),e.pencil.event.on("beforeRender",e.refreshMapBoundary)})()}prepareInitialCamera(){var e=this;return Ce(function*(){if(e.updateMapBoundary(),!e.map||!e.mapObj)return;const t=e.getCameraFitReference();yield e.fitTo(e.map,Pe(Pe({},t?{reference:t}:{}),{},{enableTransition:!1}))})()}updateMapBoundary(){return function(e,t){var n,r,i,o;if(!(null===(n=e.scene.pencil)||void 0===n||null===(n=n.controls)||void 0===n?void 0:n.setBoundary)||e.scene.pencil.lead&&e.scene.pencil.lead!==e.scene.lead)return;const s=e.scene.options.mapBoundary&&e.scene.map?t.objectWorldBounds(e.scene.map.object3d):void 0;let a;e.scene.pencil.controls.setBoundary(s&&!s.isEmpty()?s:void 0);const c=null===(r=e.scene.map)||void 0===r?void 0:r.object3d;if(e.scene.options.mapBoundary&&c&&"function"==typeof e.scene.pencil.controls.setBoundaryPlane){c.updateWorldMatrix(!0,!0);const t=new y(0,0,1).applyMatrix3((new se).getNormalMatrix(c.matrixWorld)).normalize();let n=-1/0;for(const r of e.cameraFitPoints(e.scene.map)){const e=t.dot(r);n=Math.max(n,e)}Number.isFinite(n)&&t.lengthSq()>0&&(a=new $(t,-n))}e.scene.pencil.controls.minDistance=0,null===(i=(o=e.scene.pencil.controls).setBoundaryPlane)||void 0===i||i.call(o,a),e.mapBoundaryMatrix=null==c?void 0:c.matrixWorld.clone(),e.mapBoundaryEnabled=!!e.scene.options.mapBoundary}(e.mapCameraContext(this),Li)}finalizeRegionGeometry(){var e=this;return Ce(function*(){e.updateMapBoundary(),e.options.showLabel&&(yield e.drawLabels())})()}prepareCityVis(t,n){return function(e,t,n,r){var i;const o=new t.City(e.scene.pencil),s=t.findAdcodeInfo(n);if(!s)throw new Error(`未知城市区域:${n}`);const a=t.ec(s.name,`${n}`),c=e.scene.cityGroup.find(e=>e.userData.adcode===n),l=e=>null==c?void 0:c.children.some(t=>t.objectType===e||"Area"===t.objectType&&t.options.type===e);return o.setOptions({materialBindings:e.scene.options.materialBindings,center:[s.lng,s.lat],projectionType:e.scene.options.projectionType,grey:r,adcode:n,cacheKey:e.scene.options.cacheCity&&e.scene.runtimePolicy.cacheCityGeometry?`${n}:${e.scene.options.projectionType}:${o.pscale}`:void 0,jsonName:a,showBuilding:e.scene.options.showBuilding&&!l("Building"),buildingHasSide:e.scene.options.buildingHasSide,showRoad:e.scene.options.showRoad&&!l("Road"),showGrassland:e.scene.options.showGrassland&&!l("grassland"),showRiver:e.scene.options.showRiver&&!l("river"),dataSources:null===(i=e.scene.options.assetSources)||void 0===i?void 0:i.city}),{cityVis:o,item:s,existing:c}}(e.cityLayersContext(this),Bi,t,n)}preloadCityVis(t,n){var r=this;return Ce(function*(){return function(e,t,n){return Si.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCitySequence(t,n=!1){var r=this;return Ce(function*(){return function(e,t){return Ai.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityVis(t,n=!1){var r=this;return Ce(function*(){return function(e,t){return Oi.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityOnMap(t){var n=this;return Ce(function*(){return function(e,t,n){return Mi.apply(this,arguments)}(e.cityLayersContext(n),Bi,t)})()}_getParentBgMetrics(){return function(e){const t=e.scene.parentBg.find(e=>"worldBackground"===e.userData.mapRole)||e.scene.parentBg[0];if(!t)return;const{center:n,size:r}=t.getSize();return{planeWidth:r.x,planeHeight:r.y,center:new y(n.x,n.y,0)}}(e.backgroundsContext(this))}clearParentBackground(){return(t=e.backgroundsContext(this)).scene.parentBg.forEach(e=>{e.erase()}),void(t.scene.parentBg.length=0);var t}ensureParentBackground(){var t=this;return Ce(function*(){return function(e,t){return xi.apply(this,arguments)}(e.backgroundsContext(t),Ti)})()}clearContinentsBackground(){return t=e.backgroundsContext(this),null===(n=t.scene.continentsBg)||void 0===n||n.erase(),void(t.scene.continentsBg=void 0);var t,n}ensureContinentsBackground(){var t=this;return Ce(function*(){return function(e,t){return Ii.apply(this,arguments)}(e.backgroundsContext(t),Ti)})()}consoleMousePostion(){this.addListener(this.container,"click",e=>{var t,n;const r=this.mapObj;if(!r)return;const i=this.unproject(e,r.z+r.depth),o=null===(t=(n=this.projection).invert)||void 0===t?void 0:t.call(n,[i.x,-i.y]);console.log("consoleMousePostion.postion",i),console.log("consoleMousePostion.lnglat",o)})}shadowMapEnabled(){var e=this;return Ce(function*(){e.pencil.scene.userData.shadowMapEnabled||(e.pencil.scene.userData.shadowMapEnabled=!0);const[t]=yield Promise.all([e.lead.draw(hi.SpotLight,"#c1e6dd",1,0,.5,1,0),e.lead.draw(hi.PlaneShadow)]);t.keyType="ShadowSpotLight",t.position.set(.281,32.487,43.077),t.object3d.castShadow=!0})()}getReferenceScale(e,t){const n=Math.max(Math.abs(e[2]-e[0]),Math.abs(e[3]-e[1])),r=Math.max(Math.abs(t[2]-t[0]),Math.abs(t[3]-t[1]));return Number.isFinite(n)&&Number.isFinite(r)&&0!==n&&0!==r?r/n:1}getAdcodeShowLevel(e,t=!0){return ai(e,t)}setLabels(e,t={}){return this.updateLabels(e,!1,t.signal)}drawLabels(){return this.updateLabels(this.options.showLabel,!0)}updateLabels(t,n,r){var i,o,s=this;return this.labelsDisposed?Promise.reject(new DOMException("Map disposed","AbortError")):(null!==(i=this.labelUpdates)&&void 0!==i?i:this.labelUpdates=new $t).run((o=Ce(function*(r){if(!n&&!s.labelsDirty&&s.options.showLabel===t)return;const i=s.options.showLabel;s.options.showLabel=t;try{t?yield function(e,t,n){return bi.apply(this,arguments)}(e.labelsContext(s),ki,r):ji(e.labelsContext(s)),Ut(r),s.labelsDirty=!1}catch(o){throw s.options.showLabel=i,s.labelsDirty=!0,o}}),function(e){return o.apply(this,arguments)}),r)}eraseLabels(){var t;return null===(t=this.labelUpdates)||void 0===t||t.cancel(),this.labelsDirty=!0,ji(e.labelsContext(this))}geAdcodePosition(e){var t;const n=null===(t=this.mapArea)||void 0===t?void 0:t.find(t=>t.userData.adcode===e);if(n){const{centroid:e,center:t}=n.userData;return this.getLocationPosition(e||t)}}getLocationPosition(e,t=0){if(this.continentsBg&&!this.booleanPointInMap(e)){const n=this.continentsBg.getLocationPosition(e,void 0,t);if(n)return n}return this.getMainMapLocationPosition(e,t).toArray()}getMainMapLocationPosition(e,t=0){var n,r,i,o,s;const[a,c]=e,[l,d]=this.projection([a,c]),u=new y(l,-d,null!==(n=null===(r=this.mapObj)||void 0===r?void 0:r.depth)&&void 0!==n?n:0),p=null!==(i=null===(o=this.map)||void 0===o?void 0:o.object3d)&&void 0!==i?i:null===(s=this.group)||void 0===s?void 0:s.object3d;if(p){if(p.updateWorldMatrix(!0,!1),p.localToWorld(u),t){const e=new y(0,0,1).applyNormalMatrix((new se).getNormalMatrix(p.matrixWorld));u.addScaledVector(e,t)}}else u.z+=t;return u}worldToObjectParent(e,t){const n=t.object3d.parent;return n&&(n.updateWorldMatrix(!0,!1),n.worldToLocal(e)),e}setObjectOnMap(e,t,n=0){const r=new y(...this.getLocationPosition(t,n));e.position.copy(this.worldToObjectParent(r,e))}setObjectOnMapAreaByProperty(e,t,n,r=0){var i;const o=null===(i=this.mapArea)||void 0===i?void 0:i.find(e=>e.userData[t]===n);if(o){const{centroid:t,center:n}=o.userData;this.setObjectOnMap(e,t||n,r)}}getAdcodeScreenPosition(e){const t=this.geAdcodePosition(e);if(t){const[e,n,r]=t,i=new y(e,n,r);return i.project(this.pencil.camera),this.pencil.getScreenPositionFromNDC(i.x,i.y)}}booleanPointInMap(e){var t,n,r;const i=null===(t=this.mapInfo)||void 0===t?void 0:t.adcode,o=void 0===i?void 0:si(i);if(null==o?void 0:o.b){const[t,n,r,i]=o.b,[s,a]=e;if(s<t||s>r||a<n||a>i)return!1}const s=(null===(n=this.map)||void 0===n?void 0:n.options.extrudeLineGeojson)||(null===(r=this.map)||void 0===r?void 0:r.options.geojson);return!!s&&s.features.some(t=>{const n=t.geometry.coordinates;return"Polygon"===t.geometry.type?n.some(t=>Ct(kt(e),Bt([t]))):"MultiPolygon"===t.geometry.type&&n.some(t=>t.some(t=>Ct(kt(e),Bt([t]))))})}_loadGeojsonFromConfig(e){var t=this;return Ce(function*(){if("number"==typeof e){var n;const r=null===(n=t.options.assetSources)||void 0===n?void 0:n.regionGeojson;if(!r)throw new Error("Map.assetSources.regionGeojson is required");return Te(r.split("{adcode}").join(String(e)),{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}})}return"string"==typeof e?Te(e,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}}):e})()}_loadBaseGeojson(e,t){var n=this;return Ce(function*(){const r=n.options.assetSources;if(!r)throw new Error("Map.assetSources is required to load dynamic regions");const i=(e=>ri.some(t=>t.adcode===e))(e),o=t=>t.split("{adcode}").join(String(e));return 0===e?Te(o(t?r.worldLiteGeojson:r.worldGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}}):i?{type:"FeatureCollection",features:(yield Te(o(r.continentsLiteGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})).features.filter(t=>{var n;return(null===(n=t.properties)||void 0===n?void 0:n.adcode)===e})}:Te(o(t?r.regionLiteGeojson:r.regionGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})})()}getGeojson(e,t=!1){var n=this;return Ce(function*(){var r;const i=n.options.mapData;var o;if((null==i?void 0:i.adcode)===e)return"builtin"===i.mode?n._loadBaseGeojson(e,t):structuredClone(t&&null!==(o=i.outlineGeojson)&&void 0!==o?o:i.geojson);const s=t?n.options.extrudeLineGeojsonMapReplace:n.options.geojsonMapReplace;if(null==s?void 0:s[e])return n._loadGeojsonFromConfig(s[e]);let a=yield n._loadBaseGeojson(e,t);if(!t&&a&&(null===(r=n.options.geojsonExtensions)||void 0===r?void 0:r[e])){const t=n.options.geojsonExtensions[e],r=Array.isArray(t)?t:[t],i=(yield Promise.all(r.map(e=>n._loadGeojsonFromConfig(e)))).filter(e=>!!e),o=new Set(a.features.map(e=>{var t;return null===(t=e.properties)||void 0===t?void 0:t.adcode}).filter(e=>void 0!==e));a=Pe(Pe({},a),{},{features:[...a.features,...i.flatMap(e=>e.features).filter(e=>e.properties&&!o.has(e.properties.adcode)).map(e=>Pe(Pe({},e),{},{properties:Pe({extension:!0},e.properties)}))]})}return a})()}buildRegion({adcode:e,depth:t=this.options.mapDepth,extrudelineBloom:n}){var r=arguments,i=this;return Ce(function*(){if(r.length>1)throw Error("External map keys are not supported; use the bundle authorization");if(yield i.requireMapAuthorization(e),i.mapObj)throw new Error("Map already has a main region; use SceneManager.switchMapRegion()");const o=si(+e);if(!o)throw new Error(`Unknown map region: ${e}`);const{name:s}=o;let a=yield i.getGeojson(e),c=yield i.getGeojson(e,!0);if(i.options.showDistrict||"city"!==i.getAdcodeShowLevel(e)||(a=c,c=void 0),[a,c].filter(Boolean).forEach(t=>{var n;if((null===(n=i.options.mapData)||void 0===n?void 0:n.adcode)!==e&&!t.features[0].properties.adcode&&/^\d{6}$/.test(`${e}`)){const n=si(e);t.features[0].properties=Pe(Pe(Pe({},t.features[0].properties),n),{},{center:[n.lng,n.lat]})}}),!a)throw new Error(`${s}的地图数据不存在`);{var l,d;if((null===(l=i.options.mapData)||void 0===l?void 0:l.adcode)!==e&&(null===(d=i.options.fixGeojson)||void 0===d?void 0:d[e])){var u;const t=null===(u=i.options.fixGeojson)||void 0===u?void 0:u[e];if(t.startsWith("-")){const e=+t.slice(1);a.features=a.features.filter(t=>t.properties.adcode!==e)}}const r=o.b,s=0,p=Rt(a).geometry.coordinates,[h,f]=i.projection(p),v=yield i.drawPlaneMap({geojson:a,extrudeLineGeojson:c,depth:t,bbox:r,adcode:e,extrudelineBloom:n});v.position.z=s,i.mapObj={map:v,mapInfo:o,z:s,depth:t,cX:h,cY:-f},i.options.adcode=e}})()}*cameraFitPoints(t){yield*function*(e,t){const n=t.object3d;if(!(null==n?void 0:n.updateWorldMatrix))return;n.updateWorldMatrix(!0,!0);const r=new y,i=t===e.scene.map;let o=!1;i&&n.traverse(e=>{var t;(null===(t=e.userData._baseObjectUserData)||void 0===t?void 0:t.mapGenerated)&&(o=!0)}),yield*function*e(t,s=!o){var a,c;if(!t.visible)return;const l=null!==(a=t.userData._baseObjectUserData)&&void 0!==a?a:t.userData;if(i&&l.copySource)return;t!==n&&t.userData._baseObjectIdentityVersion&&(s=!!l.mapGenerated);const d=null===(c=t.geometry)||void 0===c?void 0:c.getAttribute("position");if(d&&s)for(let n=0;n<d.count;n++)yield r.fromBufferAttribute(d,n).applyMatrix4(t.matrixWorld);for(const n of t.children)yield*e(n,s)}(n)}(e.mapCameraContext(this),t)}cameraForPose(t){return function(e,t){var n;const r=null===(n=e.scene.pencil)||void 0===n?void 0:n.camera;if(!(null==r?void 0:r.isPerspectiveCamera))return;const i=new Ee;return i.near=r.near,i.up.copy(r.up),i.projectionMatrix.copy(r.projectionMatrix),i.position.set(t[0],t[1],t[2]),i.lookAt(t[3],t[4],t[5]),i.updateMatrixWorld(!0),i}(e.mapCameraContext(this),t)}captureCameraFitReference(t,n=this.adcode){return function(e,t,n,r=e.scene.adcode){const i={lookat:[...n],adcode:r,center:[...e.scene.pcenter]},o=e.cameraForPose(n);if(o&&e.scene.map){var s,a,c;const n=null!==(s=null===(a=(c=e.scene.pencil).getViewViewport)||void 0===a?void 0:a.call(c))&&void 0!==s?s:e.scene.pencil.getSize(),r=t.measurePerspectiveCameraPadding(Pe({points:e.cameraFitPoints(e.scene.map),camera:o},n));r&&(i.padding=r,i.viewport={width:n.width,height:n.height})}return i}(e.mapCameraContext(this),Li,t,n)}readAuthoredCameraPose(){return function(e,t){var n;const r=null===(n=e.scene.pencil)||void 0===n?void 0:n.camera;if(!(null==r?void 0:r.getWorldPosition)||!e.scene.map)return;const i=r.getWorldPosition(new y),o=r.getWorldDirection(new y),s=t.objectWorldBounds(e.scene.map.object3d);if(s.isEmpty())return;const a=r.userData._cameraControlTarget;let c;if(Array.isArray(a)&&3===a.length&&a.every(Number.isFinite))c=new y(...a);else{const e=Math.abs(o.z)>1e-10?(s.max.z-i.z)/o.z:-1,t=e>1e-10?e:Math.max(1e-6,i.distanceTo(s.getCenter(new y)));c=i.clone().addScaledVector(o,t)}const l=[...i.toArray(),...c.toArray()];return gi(l)?l:void 0}(e.mapCameraContext(this),Li)}getCameraFitReference(){return function(e){var t;const n=null===(t=e.scene.cameraState)||void 0===t?void 0:t[e.scene.cameraStateActive],r=gi(n)?n:e.authoredCameraPose;return r?(e.regionCameraFitReference&&!r.some((t,n)=>t!==e.regionCameraFitReference.lookat[n])||(e.regionCameraFitReference=e.captureCameraFitReference(r)),e.regionCameraFitReference):e.regionCameraFitReference}(e.mapCameraContext(this))}calcPaddingFromReference(t,n,r){var i=this;return Ce(function*(t,n,r,o={lookat:t,adcode:n}){return function(e,t,n,r,i){return fi.apply(this,arguments)}(e.mapCameraContext(i),Li,t,n,r,o)}).apply(this,arguments)}fitTo(t){var n=this;return Ce(function*(t,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l=!0,smoothTime:d=250}={}){return function(e,t,n){return vi.apply(this,arguments)}(e.mapCameraContext(n),Li,t,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l,smoothTime:d})}).apply(this,arguments)}drawPlaneMap({geojson:e,extrudeLineGeojson:t,bbox:n,depth:r,extrudelineBloom:i,adcode:o}){var s=this;return Ce(function*(){var a,c,l;const d=null===(a=s.regionAppearance)||void 0===a?void 0:a.materialOptions,u=Pe({},s.getMaterialGroup("plane"));for(const[e,t]of Object.entries(null!=d?d:{}))t&&(u[e]=t);if(!(null==u?void 0:u.topMat))throw new Error("Map scene has no region top material");const p=u,h=s.getMaterialGroup("bgPlane"),f=Pe(Pe({},p),h?{bgTopMat:h.topMat,bgSideMat:h.sideMat,bgLineMat:h.lineMat,bgExtrudeLineMat:h.extrudeLineMat}:{}),v=yield s.group.draw(hi.PlaneMap,Pe(Pe({},s.regionAppearance),{},{geojson:e,extrudeLineGeojson:t,hasExtrudeLine:s.options.extrudeLine,depth:r,projection:{center:s.pcenter,scale:s.pscale,rotate:s.options.worldPacificCentre?[-160,0]:void 0,projectionType:s.options.projectionType},materialOptions:f,bbox:n,topSegments:s.options.topSegments,bevelRatio:null!==(c=s.options.mapBevel)&&void 0!==c?c:0,lineOffset:s.options.lineOffset,mergeSide:s.options.mergeSide,castShadow:!0}));return Object.assign(v.userData,{mapRole:"region",adcode:o}),v.object3d.name=(null===(l=si(o))||void 0===l?void 0:l.name)||`${o}`,s.options.cityOnMap&&!s.options.showCityOnMapInnerLine&&u.lineMat&&(u.lineMat.colorWrite=!1),v.extrudelineArr&&v.extrudelineArr.forEach(e=>{e.object3d.name="板块边线",e.keyType="extrudeLine",s.applyObjectState(e),i&&s.setObjectState(e,{bloom:!0})}),v.lineArr&&v.lineArr.forEach(e=>{s.applyObjectState(e)}),v})()}getEffectiveSafeAreaPadding(t=[0,0,0,0]){return function(e,t=[0,0,0,0]){if(void 0===e.safeAreaInsets)return[...t];const{top:n,right:r,bottom:i,left:o}=e.safeAreaInsets;return[n,r,i,o]}(e.mapCameraContext(this),t)}getSafeAreaInsets(){return(t=e.mapCameraContext(this)).safeAreaInsets&&Pe({},t.safeAreaInsets);var t}setSafeAreaInsets(t,n={}){return function(e,t,n={}){var r;const i=void 0===t?void 0:yi(t),o=e.safeAreaInsets;return e.safeAreaRefitPending||(e.safeAreaRefitPending=void 0===i!=(void 0===o)||!!i&&Object.keys(i).some(e=>i[e]!==(null==o?void 0:o[e]))),e.safeAreaInsets=i,!1!==n.refit&&e.scene.map?e.scene.fitTo(e.scene.map,{enableTransition:null!==(r=n.transition)&&void 0!==r&&r,smoothTime:n.smoothTime}):Promise.resolve()}(e.mapCameraContext(this),t,n)}refitSafeAreaIfNeeded(){var t=this;return Ce(function*(n={}){return function(e){return mi.apply(this,arguments)}(e.mapCameraContext(t),n)}).apply(this,arguments)}findAdcodeInfo(e){return si(e)}updateOptionsForAdcode(e){const t=si(e);if(t&&(this.options.adcode=e,this.options.center=[t.lng,t.lat],this.options.cityBboxMap={},this.options.createIfNeeded=!0,this.options.cityOnMap)){const e=si(t.parent);this.options.nearbyCities="district"===t.level&&"city"===(null==e?void 0:e.level)}}updateProjection(){this.pcenter=this._getProjectionCenter(),this.projection=F({center:this.pcenter,scale:this.pscale,projectionType:this.options.projectionType,rotate:this._getProjectionRotate()}),this.meters=this.projection([1141e-8+this.pcenter[0],0])[0]}onSceneRestored(){var t=this;return Ce(function*(){var n;t.updateProjection(),t.mapBoundaryMatrix=void 0,t.mapBoundaryEnabled=void 0,t.mapObj=void 0,t.parentBg=[];const r=t.options.sceneBindings;if(!r)throw new Error("Map scene requires sceneBindings; re-export it from editor-platform");const i=e=>t.lead.objects.get(e);if(t.group=i(r.container),!t.group)throw new Error("Map scene is missing its bound container");const o=r.region;if(!o)throw new Error("Map scene requires a single region binding; re-import it in editor-platform");const s=i(o.object);if(!s)throw new Error(`Map scene is missing region ${o.adcode}`);const a=si(o.adcode);if(!a)throw new Error(`Unknown map region: ${o.adcode}`);const c=t.projection([a.lng,a.lat]);t.mapObj={map:s,mapInfo:a,z:s.position.z,depth:null!==(n=s.options.depth)&&void 0!==n?n:t.options.mapDepth,cX:c?c[0]:0,cY:c?-c[1]:0},t.options.mapDepth=t.mapObj.depth,t.authoredCameraPose=t.readAuthoredCameraPose(),t.regionCameraFitReference=void 0,t.cameraAngleOverrides=void 0,t.getCameraFitReference(),void 0!==t.adcode&&(t.options.adcode=t.adcode);t.parentBg=r.parentBackgrounds.flatMap(e=>{const t=i(e);return t?[t]:[]}),t.continentsBg=r.continentsBackground?i(r.continentsBackground):void 0,t.cityGroup=r.cities.map(e=>(e=>{const t=i(e);if(!t)throw new Error(`Map scene binding was not found: ${e}`);return t})(e));for(const e of t.cityGroup)e.userData.mapRole="city";t.options.sceneBindings=t.getSceneBindings(),t.updateMapBoundary(),yield function(e,t,n){return Pi.apply(this,arguments)}(e.regionTexturesContext(t),_i,o.adcode),t.options.showLabel&&(yield t.drawLabels())})()}getSceneBindings(){if(!this.mapObj)throw new Error("Map scene has no main region");const e=e=>this.lead.objects.has(e.key);return{container:this.group.key,region:{adcode:this.mapObj.mapInfo.adcode,object:this.mapObj.map.key},parentBackgrounds:this.parentBg.filter(e).map(e=>e.key),continentsBackground:this.continentsBg&&e(this.continentsBg)?this.continentsBg.key:void 0,cities:this.cityGroup.map(e=>e.key)}}captureOverlayLayers(){return function(e){const t=e.scene.mapObj;if(!t)return[];const n=e.scene.map;if(!n)return[];const r=[];for(const o of n.children)if(o.userData.copySource){const n=e.captureObjectMaterialKeys(o);if(!n.length)continue;let s,a=o;const c=/* @__PURE__ */new Set;for(;a&&!c.has(a)&&!s;){var i;c.add(a),s=null!==(i=a.userData.mapGeneratedId)&&void 0!==i?i:"extrudeLine"===a.keyType?"extrudeLine:all":void 0,a=a.userData.copySource?e.scene.baseObjectByUuid(a.userData.copySource):void 0}r.push({materialKeys:n,copySource:o.userData.copySource,sourceGeneratedId:s,uuid:o.object3d.uuid,zOffset:o.position.z-t.depth})}return r}(e.regionOverlaysContext(this))}captureObjectMaterialKeys(t){return function(e,t){const n=t.object3d;return(Array.isArray(n.material)?n.material:[n.material]).map(t=>{var n;return null!==(n=e.scene.sceneResources.getKey(t))&&void 0!==n?n:""}).filter(Boolean)}(e.regionOverlaysContext(this),t)}applyOverlayLayers(t){var n=this;return Ce(function*(){return function(e,t){return Ei.apply(this,arguments)}(e.regionOverlaysContext(n),t)})()}applyRegionObjectState(t,n){return function(e,t,n,r){const i=e.scene.mapObj;if(!e.scene.map||!i)return;if(!r)return;const o=t.findAdcodeInfo(r),s=t.findAdcodeInfo(n);if(!o||!s)return;const a=e.scene.getReferenceScale(o.b,s.b),c=i.z,l=i.z+i.depth,{center:d}=e.scene.map.getSize(),u=[...e.scene.lead.objects.values()],p=u.flatMap(e=>{const t=e.object3d;return t.userData.regionLight&&!t.userData.regionRemove&&t.target?[{light:t,target:t.target,offset:t.getWorldPosition(new y).sub(t.target.getWorldPosition(new y))}]:[]});for(const g of u){var h;const e=g.object3d.userData,t=e.regionScale,n=e.regionCenter,r=null!==(h=e.regionHeight)&&void 0!==h?h:"keep";if(t&&g.scale.multiplyScalar(a),n&&(g.position.x=d.x,g.position.y=d.y),"scale"===r?g.position.z*=a:"top"===r?g.position.z=l:"bottom"===r&&(g.position.z=c),"percent"===r){const t=Number.isFinite(e.regionHeightPercent)?e.regionHeightPercent:100;g.position.z=c+i.depth*(t/100)}e.regionRemove&&g.erase()}for(const{light:g,target:b,offset:w}of p){const e=b.getWorldPosition(new y).addScaledVector(w,a);g.parent&&g.parent.worldToLocal(e),g.userData.regionCenter&&(e.x=g.position.x,e.y=g.position.y),g.userData.regionHeight&&"keep"!==g.userData.regionHeight&&(e.z=g.position.z),g.position.copy(e)}const f=[...e.scene.lead.objects.values()].map(e=>e.object3d).filter(e=>e.isDirectionalLight&&e.userData.regionLight&&!e.userData.regionRemove);if(!f.length)return;const v=ce(e.scene.map.object3d);if(v.isEmpty())return;const m=[];e.scene.lead.scene.object3d.traverseVisible(e=>{const t=e;t.isMesh&&t.receiveShadow&&m.push(ce(t))});for(const g of f)Di(g,v,m)}(e.regionOverlaysContext(this),Ui,t,n)}rebuildRegion(e,t=!1){var n=arguments,r=this;return Ce(function*(){if("boolean"!=typeof t||n.length>2)throw Error("External map keys are not supported; use the bundle authorization");if(ci(0,r.navigationAssets,e),yield r.requireMapAuthorization(e),r.adcode===e&&!t)return;if(!si(e))throw new Error(`Unknown map region: ${e}`);const i=r.pencil.resources.createScope("map-region-rebuild");try{var o;r.map&&r.sceneResources.prepareOptionMaterials(r.map.options,i);const n=t&&r.adcode===e;n&&(null===(o=r.map)||void 0===o||o.traverse(e=>{const t=e.object3d.material;for(const n of Array.isArray(t)?t:[t])n&&i.retain(n)})),yield r.rebuildRegionGeometry(e,n)}finally{i.dispose()}})()}rebuildRegionGeometry(e,t=!1){var n=this;return Ce(function*(){var r,i,o,s,a;const c=(l=Ce(function*(t,r){try{return yield r()}catch(i){throw console.error("[vis-core:map-region] step failed",t,i instanceof Error?i.stack:String(i),{stage:t,sourceAdcode:n.adcode,targetAdcode:e,message:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0,cause:i instanceof Error?i.cause:void 0,error:i}),new Error(`Map region rebuild failed at ${t}: ${i instanceof Error?i.message:String(i)}`,{cause:i})}}),function(e,t){return l.apply(this,arguments)});var l;const d=null!==(r=n.adcode)&&void 0!==r?r:n.options.adcode,u=(null!==(i=null!==(o=null===(s=n.map)||void 0===s?void 0:s.options.depth)&&void 0!==o?o:null===(a=n.mapObj)||void 0===a?void 0:a.depth)&&void 0!==i?i:n.options.mapDepth)*n.getReferenceScale(si(d).b,si(e).b),p=n.captureOverlayLayers(),h=[],f=n.map,v=new globalThis.Map,m=new globalThis.Map;if(null==f||f.traverse(e=>{e.userData.mapGeneratedId&&!e.userData.copySource&&(v.set(e.userData.mapGeneratedId,e.object3d.uuid),t&&m.set(e.userData.mapGeneratedId,{name:e.name,visible:e.visible,material:e.object3d.material,position:e.position.clone(),quaternion:e.object3d.quaternion.clone(),scale:e.scale.clone()}))}),n.regionAppearance=f?Pe({},f.options):void 0,n.regionAppearance&&delete n.regionAppearance.uuid,f){const e=f,t=/* @__PURE__ */new Set([...e.groupArr,...e.areaArr,...e.lineArr||[],...e.extrudelineArr||[],...e.mergeSideArea?[e.mergeSideArea]:[]]),r=i=>{for(const o of[...i.children])t.has(o)?r(o):o.userData.copySource||(e.object3d.attach(o.object3d),n.group.add(o),h.push(o))};r(e)}const g=f&&Pe({},f.object3d.userData),y=f&&{position:f.position.clone(),quaternion:f.object3d.quaternion.clone(),scale:f.scale.clone(),visible:f.visible},b=n.continentsBg&&!n.options.continentsBgAtOrigin?n.worldToObjectParent(n.getMainMapLocationPosition([104,37.5]),n.continentsBg):void 0;null==f||f.erase();for(const e of n.cityGroup)e.erase();if(n.mapObj=void 0,n.cityGroup=[],n.cityVis=[],n.pencil.controls.setBoundary(),n.pencil.controls.maxDistance=1/0,n.pencil.controls.minDistance=0,n.updateOptionsForAdcode(e),n.updateProjection(),yield c("create-region-geometry",()=>n.buildRegion({adcode:e,depth:u})),!n.map)throw new Error(`Unable to build map region ${e}`);if(f&&n.lead.setObjectUuid(n.map,f.object3d.uuid),n.map.traverse(e=>{const t=v.get(e.userData.mapGeneratedId);t&&n.lead.setObjectUuid(e,t);const r=m.get(e.userData.mapGeneratedId);r&&(e.name=r.name,e.object3d.visible=r.visible,e.position.copy(r.position),e.object3d.quaternion.copy(r.quaternion),e.scale.copy(r.scale),r.material&&(e.object3d.material=r.material,"material"in e.options&&(e.options.material=r.material),n.sceneResources.addBaseObjectMap(e)))}),g&&Object.assign(n.map.object3d.userData,g),y&&(n.map.position.copy(y.position),n.mapObj.z=n.map.position.z,n.map.object3d.quaternion.copy(y.quaternion),n.map.scale.copy(y.scale),n.map.object3d.visible=y.visible),n.continentsBg&&b){const e=n.worldToObjectParent(n.getMainMapLocationPosition([104,37.5]),n.continentsBg);n.continentsBg.position.x+=e.x-b.x,n.continentsBg.position.y+=e.y-b.y}for(const e of h)n.map.add(e);yield c("create-parent-background",()=>n.ensureParentBackground()),yield c("create-continents-background",()=>n.ensureContinentsBackground()),n.options.cityOnMap&&(yield c("create-city-layer",()=>n.initCityOnMap(e))),yield c("restore-overlay-layers",()=>n.applyOverlayLayers(p)),yield c("apply-switch-fixes",()=>n.applyRegionObjectState(e,d)),yield c("apply-region-textures",()=>n.applyRegionTextureRules(e)),yield c("finalize-region",()=>n.finalizeRegionGeometry()),n.options.mapDepth=n.mapObj.depth,n.options.sceneBindings=n.getSceneBindings()})()}playRegionEnterTransition({duration:e,sourceCamera:t,preparedCamera:n,onPrepared:r}){var i=this;return Ce(function*(){const o=i.map,s=i.mapObj;if(!o||!s)return void(yield i.playEnterTransition({duration:e,onPrepared:r}));n||(yield i.fitTo(o,{adcode:s.mapInfo.adcode,reference:i.regionCameraFitReference,z:o.position.z+s.depth,enableTransition:!1}));const a=null!=n?n:[...i.pencil.cameraPositon.toArray(),...i.pencil.cameraTarget.toArray()];if(!t||e<=0)return void(null==r||r());const c=i.pencil.controls;yield c.setLookAt(...t,!1),null==r||r(),yield P({owner:i.pencil,onUpdate:e=>{const n=a.map((n,r)=>t[r]+(n-t[r])*e);c.setLookAt(...n,!1)}}).start({duration:e}),yield c.setLookAt(...a,!1)})()}regionRuleMaterial(t,n){return function(e,t,n,r){var i;const o=e.scene.sceneResources.get(n);if(!(null==o||null===(i=o.userData)||void 0===i?void 0:i._materialAssetId)||o.userData._materialDynamic)return o;if(!e.scene.sceneResources.getAlias(n))throw new Error(`Missing material alias ${n} for region rule`);const s=e.scene.sceneResources.getAliases().filter(e=>e.material===o),a=t.cloneMaterialResources(o,t=>e.scene.pencil.resources.create(t));a.userData._materialDynamic=!0,a.userData._materialAssetOverrideHash=`region:${r}`;for(const c of s)e.scene.sceneResources.setAliasMaterial(c.key,a);return a}(e.regionTexturesContext(this),_i,t,n)}setRegionTexture(t,n,r){return function(e,t,n,r){var i;null!==(i=t.userData)&&void 0!==i||(t.userData={});const o=t.userData._materialRuntimeProperties;t.userData._materialRuntimeProperties=[.../* @__PURE__ */new Set([...Array.isArray(o)?o:[],n])];const s=t[n];if(r)if(null==s?void 0:s.isTexture){const i=r.clone().copy(s);i.source=r.source,i.needsUpdate=!0,t[n]=i,e.scene.pencil.resources?(e.scene.pencil.resources.sync(),e.scene.pencil.resources.disposeUnused(s)):s.dispose()}else{var a;t[n]=r.clone(),t[n].needsUpdate=!0,null===(a=e.scene.pencil.resources)||void 0===a||a.sync()}else t[n]=null,e.scene.pencil.resources?(e.scene.pencil.resources.sync(),(null==s?void 0:s.isTexture)&&e.scene.pencil.resources.disposeUnused(s)):(null==s?void 0:s.isTexture)&&s.dispose();t.needsUpdate=!0}(e.regionTexturesContext(this),t,n,r)}applyRegionTextureRules(t){var n=this;return Ce(function*(){return Ci(e.regionTexturesContext(n),_i,t)})()}onDispose(){var e,t;this.labelsDisposed=!0,null===(e=this.labelUpdates)||void 0===e||e.dispose(),null===(t=this.pencil)||void 0===t||null===(t=t.event)||void 0===t||t.off("beforeRender",this.refreshMapBoundary),this.mapBoundaryMatrix=void 0,this.mapBoundaryEnabled=void 0,this.cityVis.length=0,this.cityGroup.length=0,this.parentBg.length=0,this.continentsBg=void 0,this.mapObj=void 0,this.regionAppearance=void 0,this.regionCameraFitReference=void 0,this.authoredCameraPose=void 0,this.cameraAngleOverrides=void 0}static mapCameraContext(e){return{scene:e,get safeAreaInsets(){return e.safeAreaInsets},set safeAreaInsets(t){e.safeAreaInsets=t},get safeAreaRefitPending(){return e.safeAreaRefitPending},set safeAreaRefitPending(t){e.safeAreaRefitPending=t},get regionCameraFitReference(){return e.regionCameraFitReference},set regionCameraFitReference(t){e.regionCameraFitReference=t},get authoredCameraPose(){return e.authoredCameraPose},set authoredCameraPose(t){e.authoredCameraPose=t},get cameraAngleOverrides(){return e.cameraAngleOverrides},set cameraAngleOverrides(t){e.cameraAngleOverrides=t},get mapBoundaryMatrix(){return e.mapBoundaryMatrix},set mapBoundaryMatrix(t){e.mapBoundaryMatrix=t},get mapBoundaryEnabled(){return e.mapBoundaryEnabled},set mapBoundaryEnabled(t){e.mapBoundaryEnabled=t},cameraFitPoints:(...t)=>e.cameraFitPoints(...t),updateMapBoundary:(...t)=>e.updateMapBoundary(...t),cameraForPose:(...t)=>e.cameraForPose(...t),captureCameraFitReference:(...t)=>e.captureCameraFitReference(...t),getCameraFitReference:(...t)=>e.getCameraFitReference(...t),calcPaddingFromReference:(...t)=>e.calcPaddingFromReference(...t),getEffectiveSafeAreaPadding:(...t)=>e.getEffectiveSafeAreaPadding(...t)}}static labelsContext(e){return{scene:e,get labelGroupObject3dUserData(){return e.labelGroupObject3dUserData},set labelGroupObject3dUserData(t){e.labelGroupObject3dUserData=t}}}static cityLayersContext(e){return{scene:e,prepareCityVis:(...t)=>e.prepareCityVis(...t),preloadCityVis:(...t)=>e.preloadCityVis(...t),initCitySequence:(...t)=>e.initCitySequence(...t)}}static backgroundsContext(e){return{scene:e,getGeojson:(...t)=>e.getGeojson(...t),_loadBaseGeojson:(...t)=>e._loadBaseGeojson(...t),_getParentBgMetrics:(...t)=>e._getParentBgMetrics(...t),getMainMapLocationPosition:(...t)=>e.getMainMapLocationPosition(...t),worldToObjectParent:(...t)=>e.worldToObjectParent(...t)}}static regionOverlaysContext(e){return{scene:e,captureObjectMaterialKeys:(...t)=>e.captureObjectMaterialKeys(...t),getGeojson:(...t)=>e.getGeojson(...t)}}static regionTexturesContext(e){return{scene:e,regionRuleMaterial:(...t)=>e.regionRuleMaterial(...t),setRegionTexture:(...t)=>e.setRegionTexture(...t)}}};Re($i,"VisName","map");var zi=/* @__PURE__ */new WeakMap;function Gi(e){e&&zi.delete(e)}function Ni(e){const t=zi.get(e);if(t)return t;const n=/* @__PURE__ */new Map,r=(e,t,i)=>{var o,s,a;if(!e||"string"!=typeof e.uuid||!e.uuid||n.has(e.uuid))throw new Error("Invalid or Ambiguous scene object UUID");const c=[...i,null!==(o=null===(s=e.children)||void 0===s?void 0:s.length)&&void 0!==o?o:0];n.set(e.uuid,{path:t,lengths:c}),null===(a=e.children)||void 0===a||a.forEach((e,n)=>r(e,[...t,n],c))};return r(e,[],[]),zi.set(e,n),n}function Wi(e,t){const n=()=>{const n=Ni(e).get(t);if(!n)return;const{path:r,lengths:i}=n;let o=e;for(let e=0;e<=r.length;e++){var s,a,c;if(!o||(null!==(s=null===(a=o.children)||void 0===a?void 0:a.length)&&void 0!==s?s:0)!==i[e])return;e<r.length&&(o=null===(c=o.children)||void 0===c?void 0:c[r[e]])}return(null==o?void 0:o.uuid)===t?{node:o,path:r}:void 0},r=n();return r||(Gi(e),n())}function Fi(e,t){const n=zi.get(e);n&&t&&"object"==typeof t&&zi.set(t,n)}function qi(e,t){const n={children:/* @__PURE__ */new Map};for(const[o,s]of t){const t=Wi(e,o);if(!t)throw new Error("A patched scene object UUID was not found");let r=n;for(const e of t.path){let t=r.children.get(e);t||r.children.set(e,t={children:/* @__PURE__ */new Map}),r=t}r.patch=s}const r=(e,t)=>{const n=Pe({},e);if(t.children.size){n.children=e.children.slice();for(const[i,o]of t.children)n.children[i]=r(e.children[i],o)}if(t.patch){var i;for(const e of null!==(i=t.patch.unset)&&void 0!==i?i:[])delete n[e];Object.assign(n,t.patch.state),t.patch.state.matrix&&(n.matrix=[...t.patch.state.matrix])}return n},i=r(e,n);return Fi(e,i),i}var Vi=new Set(["color","groundColor","intensity","distance","decay","angle","penumbra","width","height","castShadow","receiveShadow","frustumCulled","renderOrder","up","center","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view","backgroundBlurriness","backgroundIntensity","environmentIntensity","backgroundRotation","environmentRotation"]),Hi=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","pivot","name","visible","layers"]),Ki=/* @__PURE__ */new Set(["castShadow","receiveShadow","frustumCulled","matrixAutoUpdate","visible"]),Xi={matrix:16,pivot:3,up:3,center:2,backgroundRotation:3,environmentRotation:3},Yi=e=>Vi.has(e),Ji=e=>Vi.has(e)||Hi.has(e),Zi={color:16777215,groundColor:16777215,intensity:1,distance:0,decay:2,angle:Math.PI/3,penumbra:0,width:10,height:10,castShadow:!1,receiveShadow:!1,frustumCulled:!0,renderOrder:0,up:[0,1,0],center:[.5,.5],near:.1,far:2e3,fov:50,aspect:1,zoom:1,left:-1,right:1,top:1,bottom:-1,focus:10,filmGauge:35,filmOffset:0,view:null,backgroundBlurriness:0,backgroundIntensity:1,environmentIntensity:1,backgroundRotation:[0,0,0,"XYZ"],environmentRotation:[0,0,0,"XYZ"]};function Qi(e,t){return Ki.has(e)?"boolean"==typeof t:"name"===e?"string"==typeof t:"layers"===e?Number.isInteger(t)&&t>=-2147483648&&t<=4294967295:"pivot"===e&&null===t||("view"===e?null===t||!!t&&Object.getPrototypeOf(t)===Object.prototype&&Object.entries(t).every(([e,t])=>"enabled"===e?"boolean"==typeof t:["fullWidth","fullHeight","offsetX","offsetY","width","height"].includes(e)&&Number.isFinite(t)):Xi[e]?Array.isArray(t)&&(t.length===Xi[e]||e.endsWith("Rotation")&&4===t.length)&&Object.keys(t).length===t.length&&Array.from(t.slice(0,Xi[e])).every(Number.isFinite)&&(4!==t.length||["XYZ","YZX","XZY","YXZ","ZXY","ZYX"].includes(t[3])):Number.isFinite(t))}function eo(e,t,n){const r=e.scenes.findIndex(e=>e.id===t),i=e.scenes[r];if(!i||!Array.isArray(n))throw Error("Invalid scene property patch target");const o=/* @__PURE__ */new Map;for(const l of n){var s;if(!l||Object.keys(l).some(e=>!["uuid","state","unset"].includes(e))||"string"!=typeof l.uuid||!l.uuid||o.has(l.uuid)||!l.state||![Object.prototype,null].includes(Object.getPrototypeOf(l.state))||void 0!==l.unset&&(!Array.isArray(l.unset)||new Set(l.unset).size!==l.unset.length))throw Error("Invalid or duplicate scene property patch");if(!Wi(i.scene.object,l.uuid))throw Error("Scene property target was not found");for(const[e,t]of Object.entries(l.state))if(!Ji(e)||!Qi(e,t))throw Error(`Invalid scene object property ${e}`);if(null===(s=l.unset)||void 0===s?void 0:s.some(e=>!Ji(e)||Object.hasOwn(l.state,e)))throw Error("Invalid unset scene property");o.set(l.uuid,{state:structuredClone(l.state),unset:l.unset&&[...l.unset]})}if(!o.size)return e;const a=qi(i.scene.object,o),c=[...e.scenes];return c[r]=Pe(Pe({},i),{},{scene:Pe(Pe({},i.scene),{},{object:a})}),Pe(Pe({},e),{},{scenes:c})}var to=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","up","layers","visible","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view"]),no=e=>to.has(e);function ro(e,t,n){var r;const i=e.scenes.findIndex(e=>e.id===t),o=e.scenes[i];if(!o)throw new Error(`Scene ${t} was not found`);const s=null==n?void 0:n.camera;if(!s||!["PerspectiveCamera","OrthographicCamera"].includes(s.type)||"string"!=typeof s.uuid||!s.uuid||!s.state||"object"!=typeof s.state||Array.isArray(s.state)||!Array.isArray(s.unset)||s.unset.some(e=>!to.has(e)||Object.hasOwn(s.state,e))||void 0!==n.cs&&(!n.cs||"object"!=typeof n.cs||Array.isArray(n.cs)||Object.values(n.cs).some(e=>!Array.isArray(e)||![...e].every(Number.isFinite)))||void 0!==n.csa&&"string"!=typeof n.csa||!n.controls||"object"!=typeof n.controls||Array.isArray(n.controls))throw new Error("Invalid scene viewport patch");for(const[u,p]of Object.entries(s.state))if(!("matrix"===u||"up"===u?Array.isArray(p)&&p.length===("matrix"===u?16:3)&&[...p].every(Number.isFinite):"matrixAutoUpdate"===u||"visible"===u?"boolean"==typeof p:"layers"===u?Number.isInteger(p)&&p>=-2147483648&&p<=4294967295:"view"===u?null===p||"object"==typeof p&&!Array.isArray(p)&&Object.entries(p).every(([e,t])=>"enabled"===e?"boolean"==typeof t:["fullWidth","fullHeight","offsetX","offsetY","width","height"].includes(e)&&Number.isFinite(t)):to.has(u)&&Number.isFinite(p)))throw new Error(`Invalid scene camera property ${u}`);const a=null===(r=Wi(o.scene.object,s.uuid))||void 0===r?void 0:r.node;if(!a||a.type!==s.type)throw new Error("Scene camera topology changed");const c=structuredClone(n),l=qi(o.scene.object,/* @__PURE__ */new Map([[s.uuid,c.camera]])),d=[...e.scenes];return d[i]=Pe(Pe({},o),{},{cs:c.cs,csa:c.csa,vis:Pe(Pe({},o.vis),{},{options:Pe(Pe({},o.vis.options),{},{controls:c.controls})}),scene:Pe(Pe({},o.scene),{},{object:l})}),Pe(Pe({},e),{},{scenes:d})}var io=["color","groundColor","intensity","distance","decay","angle","penumbra","width","height","castShadow","receiveShadow","frustumCulled","renderOrder","up","center","shadow","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view","backgroundBlurriness","backgroundIntensity","environmentIntensity","backgroundRotation","environmentRotation"],oo=["geometries","materials","textures","images","skeletons","animations"],so=["materialAliases","shapes","_sharedOptionsPool"],ao=e=>!!e&&"object"==typeof e&&!Array.isArray(e),co=e=>ao(e)&&[Object.prototype,null].includes(Object.getPrototypeOf(e)),lo=e=>"string"==typeof e&&!!e,uo=(e,t)=>Object.keys(e).every(e=>t.includes(e));function po(e){return null===e||"boolean"==typeof e||"string"==typeof e||("number"==typeof e?Number.isFinite(e):Array.isArray(e)?e.every(po):co(e)&&Object.entries(e).every(([e,t])=>!["__proto__","constructor","prototype"].includes(e)&&po(t)))}function ho(e,t){if(!co(e))throw new Error("Invalid scene material aliases");for(const[n,r]of Object.entries(e))if(!lo(n)||!co(r)||!uo(r,[t?"materialUuid":"assetId","locked","roles"])||!lo(r[t?"materialUuid":"assetId"])||void 0!==r.locked&&"boolean"!=typeof r.locked||void 0!==r.roles&&(!Array.isArray(r.roles)||r.roles.some(e=>!lo(e))))throw new Error("Invalid scene material alias")}function fo(e,t,n,r){var i,o,s;if(!ao(t)||!uo(t,["upsert","remove","order"])||void 0!==t.upsert&&!Array.isArray(t.upsert)||void 0!==t.remove&&!Array.isArray(t.remove)||void 0!==t.order&&(!Array.isArray(t.order)||t.order.some(e=>!lo(e))||new Set(t.order).size!==t.order.length)||void 0!==e&&!Array.isArray(e))throw new Error(`Invalid ${r} patch`);const a=/* @__PURE__ */new Set;for(const p of null!=e?e:[]){if(!ao(p)||!lo(p[n])||a.has(p[n]))throw new Error(`Invalid or duplicate ${r} identity`);a.add(p[n])}const c=/* @__PURE__ */new Map,l=/* @__PURE__ */new Set;for(const p of null!==(i=t.upsert)&&void 0!==i?i:[]){if(!ao(p)||!lo(p[n])||c.has(p[n]))throw new Error(`Invalid or duplicate ${r} upsert`);c.set(p[n],p)}for(const p of null!==(o=t.remove)&&void 0!==o?o:[]){if(!lo(p)||!a.has(p)||l.has(p)||c.has(p))throw new Error(`Invalid ${r} removal`);l.add(p)}if(!c.size&&!l.size&&void 0===t.order)return e;const d=[];for(const p of null!=e?e:[])l.has(p[n])||d.push(null!==(s=c.get(p[n]))&&void 0!==s?s:p);for(const[p,h]of c)a.has(p)||d.push(h);let u=d;if(void 0!==t.order){const e=new Map(d.map(e=>[e[n],e]));if(t.order.length!==e.size||t.order.some(t=>!e.has(t)))throw new Error(`Invalid ${r} order`);u=t.order.map(t=>e.get(t))}return e&&u.length===e.length&&u.every((t,n)=>t===e[n])?e:u}function vo(e,t=!0){var n,r;if(!ao(e)||!uo(e,["parents","additions","replacements","objects","viewport","resources","aliases","interactions","graph",...t?["assets","prefabs"]:[]])||!Array.isArray(e.parents)||void 0!==e.additions&&!Array.isArray(e.additions)||void 0!==e.replacements&&!Array.isArray(e.replacements)||void 0!==e.objects&&!Array.isArray(e.objects)||void 0!==e.resources&&!ao(e.resources)||void 0!==e.assets&&!ao(e.assets)||void 0!==e.prefabs&&!ao(e.prefabs))throw new Error("Invalid scene structure patch");!function(e){if(void 0!==e.interactions){const t=e.interactions;if(!co(t)||!uo(t,["set","unset"])||void 0!==t.unset&&!0!==t.unset||t.unset&&Object.hasOwn(t,"set")||Object.hasOwn(t,"set")&&void 0!==t.set&&(!Array.isArray(t.set)||t.set.some(e=>!co(e))))throw new Error("Invalid scene interactions patch")}if(void 0!==e.aliases){const t=e.aliases;if(!co(t)||!uo(t,["set","unset"])||void 0!==t.unset&&!0!==t.unset||t.unset&&Object.hasOwn(t,"set"))throw new Error("Invalid authored scene aliases patch");Object.hasOwn(t,"set")&&ho(t.set,!1)}if(void 0!==e.graph){var t;const n=e.graph;if(!co(n)||!uo(n,["set","unset"])||void 0!==n.set&&(!co(n.set)||!uo(n.set,so))||void 0!==n.unset&&(!Array.isArray(n.unset)||new Set(n.unset).size!==n.unset.length||n.unset.some(e=>{var t;return!so.includes(e)||Object.hasOwn(null!==(t=n.set)&&void 0!==t?t:{},e)})))throw new Error("Invalid scene graph metadata patch");for(const[e,r]of Object.entries(null!==(t=n.set)&&void 0!==t?t:{})){if("materialAliases"===e)ho(r,!0);else if(!Array.isArray(r))throw new Error(`Invalid scene graph ${e}`);if("shapes"===e){const e=/* @__PURE__ */new Set;for(const t of r){if(!co(t)||!lo(t.uuid)||e.has(t.uuid))throw new Error("Invalid or duplicate scene shape UUID");e.add(t.uuid)}}}}}(e);for(const i of null!==(n=e.objects)&&void 0!==n?n:[])if(!(void 0===(null==i||null===(r=i.state)||void 0===r?void 0:r.userData)||ao(i.state.userData)&&[Object.prototype,null].includes(Object.getPrototypeOf(i.state.userData))))throw new Error("Invalid structure object property userData")}function mo(e,t,n){return vo(n),go(e,t,structuredClone(n),!0)}function go(e,t,n,r){var i,o,s,a,l,d,u;const p=e.scenes.findIndex(e=>e.id===t);if(p<0)throw new Error(`Scene ${t} was not found`);const h=e.scenes[p],f=h.scene.object,v=Ni(f),m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Map,y=/* @__PURE__ */new Map;for(const c of null!==(i=n.replacements)&&void 0!==i?i:[]){if(!ao(c)||!lo(c.uuid)||!v.has(c.uuid)||g.has(c.uuid))throw new Error("Invalid or conflicting replacement object UUID");g.set(c.uuid,c)}const b=[...g.keys()].map(e=>v.get(e).path),w=(e,t)=>e.length<=t.length&&e.every((e,n)=>e===t[n]);for(let c=0;c<b.length;c++)for(let e=c+1;e<b.length;e++)if(w(b[c],b[e])||w(b[e],b[c]))throw new Error("Nested scene structure replacement roots");const j=(e,t)=>{var n;if(!ao(e)||!lo(e.uuid)||y.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children)||v.has(e.uuid)&&!w(t,v.get(e.uuid).path))throw new Error("Invalid or conflicting replacement descendant UUID");y.set(e.uuid,e);for(const r of null!==(n=e.children)&&void 0!==n?n:[])j(r,t)};for(const[c,K]of g)j(K,v.get(c).path);const S=e=>{var t;if(!ao(e)||!lo(e.uuid)||v.has(e.uuid)||m.has(e.uuid)||y.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw new Error("Invalid or conflicting added object UUID");m.set(e.uuid,e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])S(n)};for(const c of null!==(o=n.additions)&&void 0!==o?o:[])S(c);const A=new Map([...m,...y]),O=e=>{var t;if(A.has(e))return A.get(e);const n=null===(t=Wi(f,e))||void 0===t?void 0:t.node;if(!n)throw new Error(`Scene structure object ${e} was not found`);return A.set(e,n),n},M=/* @__PURE__ */new Map;for(const c of n.parents){if(!ao(c)||!uo(c,["uuid","children"])||!lo(c.uuid)||M.has(c.uuid)||!Array.isArray(c.children)||c.children.some(e=>!lo(e))||new Set(c.children).size!==c.children.length)throw new Error("Invalid or duplicate scene structure parent");O(c.uuid),M.set(c.uuid,c.children.map(O))}const x=function(e,t){if(void 0!==e&&!Array.isArray(e))throw new Error("Invalid structure object patches");const n=/* @__PURE__ */new Map,r=["matrix","matrixAutoUpdate","pivot","name","visible","layers","userData","geometry","material","background","environment",...io];for(const a of null!=e?e:[]){var i,o,s;if(!ao(a)||!uo(a,["uuid","state","unset"])||!lo(a.uuid)||n.has(a.uuid)||!ao(a.state)||void 0!==a.unset&&!Array.isArray(a.unset))throw new Error("Invalid or duplicate structure object patch");for(const[e,n]of Object.entries(a.state))if(!("matrix"===e?Array.isArray(n)&&16===n.length&&[...n].every(Number.isFinite):"pivot"===e?null===n||Array.isArray(n)&&3===n.length&&[...n].every(Number.isFinite):"name"===e?"string"==typeof n:"visible"===e||"matrixAutoUpdate"===e?"boolean"==typeof n:"layers"===e?Number.isInteger(n)&&n>=-2147483648&&n<=4294967295:"geometry"===e?a.uuid!==t&&(null===n||lo(n)):"material"===e?a.uuid!==t&&(lo(n)||Array.isArray(n)&&n.every(lo)):"background"===e?a.uuid===t&&(null===n||lo(n)||Number.isInteger(n)&&n>=0&&n<=16777215):"environment"===e?a.uuid===t&&(null===n||lo(n)):["castShadow","receiveShadow","frustumCulled"].includes(e)?"boolean"==typeof n:["color","groundColor"].includes(e)?Number.isInteger(n)&&n>=0&&n<=16777215:"up"===e||"center"===e?Array.isArray(n)&&n.length===("up"===e?3:2)&&n.every(Number.isFinite):"backgroundRotation"===e||"environmentRotation"===e?Array.isArray(n)&&4===n.length&&n.slice(0,3).every(Number.isFinite)&&["XYZ","YZX","ZXY","XZY","YXZ","ZYX"].includes(n[3]):"shadow"===e?co(n)&&po(n):"view"===e?null===n||co(n)&&po(n):io.includes(e)?Number.isFinite(n):"userData"===e&&ao(n)&&[Object.prototype,null].includes(Object.getPrototypeOf(n))))throw new Error(`Invalid structure object property ${e}`);if((null===(i=a.unset)||void 0===i?void 0:i.some(e=>!r.includes(e)||Object.hasOwn(a.state,e)||["background","environment"].includes(e)&&a.uuid!==t||["geometry","material"].includes(e)&&a.uuid===t))||new Set(a.unset).size!==(null!==(o=null===(s=a.unset)||void 0===s?void 0:s.length)&&void 0!==o?o:0))throw new Error("Invalid unset structure object properties");n.set(a.uuid,a)}return n}(n.objects,f.uuid);for(const c of x.keys())O(c);const I=/* @__PURE__ */new Set,E=/* @__PURE__ */new Map,D=e=>{var t,n,r,i;if(e=null!==(t=g.get(null==e?void 0:e.uuid))&&void 0!==t?t:e,!ao(e)||!lo(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw new Error("Invalid scene structure object");if(I.has(e.uuid))throw new Error("Cycle in scene structure patch");if(E.has(e.uuid))throw new Error("Duplicate object ownership in scene structure patch");I.add(e.uuid),E.set(e.uuid,e);const o=null!==(n=e.children)&&void 0!==n?n:[],s=null!==(r=M.get(e.uuid))&&void 0!==r?r:o;let a,c=e;for(let p=0;p<s.length;p++){var l;const e=D(s[p]);e!==o[p]&&(null!==(l=a)&&void 0!==l||(a=s.slice())),a&&(a[p]=e)}o.length!==s.length&&(null!==(i=a)&&void 0!==i||(a=s.slice())),a&&(c=Pe(Pe({},e),{},{children:a}));const d=x.get(e.uuid);if(d){var u;c=Pe({},c);for(const e of null!==(u=d.unset)&&void 0!==u?u:[])delete c[e];Object.assign(c,d.state)}return I.delete(e.uuid),E.set(e.uuid,c),c},P=D(f);for(const c of m.keys())if(!E.has(c))throw new Error("Added object is detached from the scene");for(const c of g.keys())if(!E.has(c))throw new Error("Replaced object is detached from the scene");for(const c of x.keys())if(!E.has(c))throw new Error("Patched object is detached from the scene");for(const[c,K]of M)if(K.length&&!E.has(c))throw new Error("Patched parent is detached from the scene");let C=P===f?h.scene:Pe(Pe({},h.scene),{},{object:P});if(n.graph){var R,L;for(const e of null!==(R=n.graph.unset)&&void 0!==R?R:[])Object.hasOwn(C,e)&&(C===h.scene&&(C=Pe({},C)),delete C[e]);for(const[e,t]of Object.entries(null!==(L=n.graph.set)&&void 0!==L?L:{}))C[e]!==t&&(C===h.scene&&(C=Pe({},C)),C[e]=t)}if(n.resources){if(!uo(n.resources,oo))throw new Error("Invalid scene resource patch kind");for(const e of oo)if(Object.hasOwn(n.resources,e)){const t=n.resources[e];if(ao(t)&&Object.hasOwn(t,"unset")){if(!uo(t,["unset"])||!0!==t.unset)throw new Error("Invalid scene resource table unset");Object.hasOwn(C,e)&&(C=Pe({},C),delete C[e])}else{const n=fo(C[e],t,"uuid",e);n!==C[e]&&(C=Pe(Pe({},C),{},{[e]:n}))}}}const k=n.assets?fo(e.materialLibrary,n.assets,"id","material assets"):e.materialLibrary,B=n.prefabs?fo(e.prefabLibrary,n.prefabs,"id","prefab assets"):e.prefabLibrary,T=(null===(s=n.aliases)||void 0===s?void 0:s.unset)?void 0:null!==(a=null===(l=n.aliases)||void 0===l?void 0:l.set)&&void 0!==a?a:h.materialAliases,U=!!n.interactions&&Object.hasOwn(n.interactions,"set"),_=(null===(d=n.interactions)||void 0===d?void 0:d.unset)?void 0:U?n.interactions.set:h.interactions,$=(null===(u=n.interactions)||void 0===u?void 0:u.unset)?Object.hasOwn(h,"interactions"):U&&(!Object.hasOwn(h,"interactions")||_!==h.interactions);if(function(e,t){var n,r;const i=/* @__PURE__ */new Map;for(const c of oo){var o;if(void 0!==e[c]&&!Array.isArray(e[c]))throw new Error(`Invalid scene ${c} table`);const t=/* @__PURE__ */new Map;for(const n of null!==(o=e[c])&&void 0!==o?o:[]){if(!ao(n)||!lo(n.uuid)||t.has(n.uuid))throw new Error(`Invalid or duplicate scene ${c} UUID`);t.set(n.uuid,n)}i.set(c,t)}const s=(e,t)=>{if(!lo(t)||!i.get(e).has(t))throw new Error(`Missing scene ${e} reference ${String(t)}`)},a=/* @__PURE__ */new Set;for(const p of t.values()){if(void 0!==p.geometry&&null!==p.geometry&&s("geometries",p.geometry),void 0!==p.material)for(const e of Array.isArray(p.material)?p.material:[p.material])s("materials",e);if(void 0!==p.skeleton&&(s("skeletons",p.skeleton),a.add(p.skeleton)),void 0!==p.animations){if(!Array.isArray(p.animations))throw new Error("Invalid object animations");for(const e of p.animations)s("animations",e)}c(p.userData,(e,t)=>s("materials",e[t]),e._sharedOptionsPool)}for(const c of i.get("materials").values()){var l;Ae(c,(e,t)=>{"PMREM_PLACEHOLDER"!==e[t]&&s("textures",e[t])});for(const[e,t]of Object.entries(c))"map"!==e&&"matcap"!==e&&!e.endsWith("Map")||null==t||"PMREM_PLACEHOLDER"===t||s("textures",t);for(const e of Object.values(null!==(l=c.uniforms)&&void 0!==l?l:{}))if("t"===(null==e?void 0:e.type)&&null!==e.value&&"PMREM_PLACEHOLDER"!==e.value&&s("textures",e.value),"tv"===(null==e?void 0:e.type)){if(!Array.isArray(e.value))throw new Error("Invalid material texture array");for(const t of e.value)null!==t&&"PMREM_PLACEHOLDER"!==t&&s("textures",t)}}const d=new Set((null!==(n=e.shapes)&&void 0!==n?n:[]).map(e=>null==e?void 0:e.uuid));for(const c of i.get("geometries").values())if(void 0!==c.shapes&&(!Array.isArray(c.shapes)||c.shapes.some(e=>!lo(e)||!d.has(e))))throw new Error("Missing scene geometry shape reference");for(const c of i.get("textures").values()){var u;const e=null===(u=c.userData)||void 0===u?void 0:u._videoSrc,t=ao(e)&&"file"===e.encoding&&"video"===e.kind&&"string"==typeof e.mimeType&&e.mimeType.startsWith("video/")&&"string"==typeof e.sha256&&/^[a-f0-9]{64}$/.test(e.sha256)&&(e.data instanceof ArrayBuffer||"string"==typeof e.data&&e.data.length>0);if(void 0!==e&&"string"!=typeof e&&!t)throw Error("Invalid video texture payload");const n="PMREM_PLACEHOLDER"===c.uuid||"PMREM.cubeUv"===c.name||void 0!==e;if(void 0!==c.image)for(const r of Array.isArray(c.image)?c.image:[c.image]){if("string"!=typeof r)throw new Error("Invalid texture image reference");n&&!i.get("images").has(r)||s("images",r)}}for(const c of a){const e=i.get("skeletons").get(c);if(!Array.isArray(e.bones)||e.bones.some(e=>!lo(e)||!t.has(e)))throw new Error(`Invalid skeleton bones ${c}`)}for(const c of["background","environment"])"string"==typeof e.object[c]&&"PMREM_PLACEHOLDER"!==e.object[c]&&s("textures",e.object[c]);for(const c of Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}))s("materials",null==c?void 0:c.materialUuid)}(C,E),!n.viewport&&C===h.scene&&T===h.materialAliases&&!$&&k===e.materialLibrary&&B===e.prefabLibrary)return e;const z=e.scenes.slice();if(C!==h.scene||T!==h.materialAliases||$){var G,N,W;const e=Pe(Pe({},h),{},{scene:C});(null===(G=n.aliases)||void 0===G?void 0:G.unset)?delete e.materialAliases:void 0!==(null===(N=n.aliases)||void 0===N?void 0:N.set)&&(e.materialAliases=T),(null===(W=n.interactions)||void 0===W?void 0:W.unset)?delete e.interactions:U&&(e.interactions=_),z[p]=e}else z[p]=h;let F=Pe(Pe(Pe({},e),{},{scenes:z},k!==e.materialLibrary?{materialLibrary:k}:{}),B!==e.prefabLibrary?{prefabLibrary:B}:{});if(n.viewport){var q,V,H;const e=n.viewport;if(!(co(e)&&uo(e,["camera","cs","csa","controls"])&&(void 0===e.controls||co(e.controls)&&po(e.controls))&&(void 0===e.cs||co(e.cs)&&po(e.cs))&&(void 0===e.csa||"string"==typeof e.csa)))throw Error("Invalid structure viewport patch");if(e.camera)F=ro(F,t,Pe(Pe({},e),{},{camera:e.camera,cs:Object.hasOwn(e,"cs")?e.cs:h.cs,csa:Object.hasOwn(e,"csa")?e.csa:h.csa,controls:null!==(q=null!==(V=e.controls)&&void 0!==V?V:null===(H=h.vis.options)||void 0===H?void 0:H.controls)&&void 0!==q?q:{}}));else{const t=Pe({},F.scenes[p]);Object.hasOwn(e,"cs")&&(t.cs=e.cs),Object.hasOwn(e,"csa")&&(t.csa=e.csa),Object.hasOwn(e,"controls")&&(t.vis=Pe(Pe({},t.vis),{},{options:Pe(Pe({},t.vis.options),{},{controls:e.controls})})),F.scenes[p]=t}}return r&&bt(F),F}function yo(e,t){if(!ao(t)||!uo(t,["scenes","assets","prefabs"])||!Array.isArray(t.scenes)||void 0!==t.assets&&!ao(t.assets)||void 0!==t.prefabs&&!ao(t.prefabs))throw new Error("Invalid scene structure transaction");const n=/* @__PURE__ */new Set;for(const a of t.scenes){if(!ao(a)||!uo(a,["sceneId","patch"])||!lo(a.sceneId)||n.has(a.sceneId))throw new Error("Invalid or duplicate scene structure transaction scene");n.add(a.sceneId),vo(a.patch,!1)}const r=structuredClone(t);let i=e;for(const{sceneId:a,patch:c}of r.scenes)i=go(i,a,c,!1);const o=r.assets?fo(e.materialLibrary,r.assets,"id","material assets"):e.materialLibrary,s=r.prefabs?fo(e.prefabLibrary,r.prefabs,"id","prefab assets"):e.prefabLibrary;return o===i.materialLibrary&&s===i.prefabLibrary||(i=Pe(Pe(Pe({},i),o!==i.materialLibrary?{materialLibrary:o}:{}),s!==i.prefabLibrary?{prefabLibrary:s}:{})),i!==e&&bt(i),i}function bo({vis:e,graph:t,root:n}){const r=/* @__PURE__ */new Set,i=/* @__PURE__ */new Set,o=/* @__PURE__ */new Set,s=e=>{(null==e?void 0:e.isMaterial)&&i.add(e)},a=e=>{var n,i;e.object3d.geometry&&r.add(e.object3d.geometry);for(const t of[e.object3d.material].flat())s(t);!function(e,t,n){var r;for(const i of null!==(r=null==t?void 0:t._baseObjectMaterialRefs)&&void 0!==r?r:[]){if(!Array.isArray(i)||!i.length||i.some(e=>"string"!=typeof e||["__proto__","prototype","constructor"].includes(e)))throw Error("Invalid object material reference path");let t=e.options;for(const e of i){if(!t||!Object.hasOwn(t,e)){t=void 0;break}t=t[e]}(null==t?void 0:t.isMaterial)&&n(t)}}(e,null!==(n=null===(i=Wi(t.object,e.uuid))||void 0===i?void 0:i.node.userData)&&void 0!==n?n:e.object3d.userData,s)};if(n)n.traverse(a);else{for(const t of e.lead.objects.values())a(t);for(const t of e.sceneResources.getAliases())s(t.material);for(const t of[e.lead.scene.object3d.background,e.lead.scene.object3d.environment])(null==t?void 0:t.isTexture)&&o.add(t)}return{graph:t,resources:e.pencil.resources,geometries:r,materials:i,textures:o}}function wo(e=[]){const t=r(e.map(bo));return{add:e=>t.add(bo(e)),collect:t.collect}}function jo(e,t){return wo(t).collect(e)}var So=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],Ao=["source","bytes"],Oo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],Mo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],xo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],Io=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],Eo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],Do=class extends Error{},Po={base:Hr,earth:Qr,map:$i},Co=class extends pr{invalidatePendingOperations(e=!1){e||this.mapRequests.cancel(),this.requestedMapDocument=void 0,this.generation++,this.displayPreparationAbort.abort(),this.displayPreparationAbort=new AbortController;for(const i of this.prefabOperations)i.abort();this.prefabOperations.clear(),this.isSwitching=!1,this.isRegionSwitching=!1,this.wakeNavigationWaiters(),this.definitionLoads.clear();const t=[...this.pendingInstances],n=[];this.pendingInstances.clear();for(const i of t)try{i.dispose()}catch(r){n.push(r)}if(1===n.length)throw n[0];if(n.length)throw new AggregateError(n,"Pending scene disposal failed");return this.generation}assertGeneration(e){if(e!==this.generation){const e=/* @__PURE__ */new Error("Scene operation was cancelled because the document or manager changed");throw e.name="AbortError",e}}debugInteraction(e,t){this.options.debugInteractions&&console.log(`[vis-core:interaction] ${e}`,t||{})}enablePickDebug(e){this.options.debugInteractions&&(e.pencil.userData.debugPick=!0)}retireScenes(e){const t=[];for(const r of new Set(e))try{r.dispose()}catch(n){t.push(n)}return t}discardSceneCandidates(e,t={}){for(const n of this.retireScenes(e))console.error("[vis-core:scene] candidate cleanup failed",Pe(Pe({},t),{},{disposeError:n}))}notifySceneObservers(e,t){try{this.emit(e,t)}catch(n){try{this.emit("sceneObserverError",{event:e,error:n})||console.error(`[vis-core:scene] ${e} observer failed`,n)}catch(r){console.error("[vis-core:scene] observer error reporting failed",{event:e,error:n,reportError:r})}}}finishNavigation(e,t,n=!1){try{null==t||t()}finally{e===this.generation&&(n?this.isRegionSwitching=!1:this.isSwitching=!1,this.wakeNavigationWaiters())}}wakeNavigationWaiters(){for(const e of this.navigationWaiters)e();this.navigationWaiters.clear()}waitForNavigation(e){var t=this;return Ce(function*(){for(;t.isSwitching||t.isRegionSwitching;){let n;Ut(e);const r=new Promise(e=>{n=e,t.navigationWaiters.add(n)});try{yield _t(r,e)}finally{t.navigationWaiters.delete(n)}}Ut(e)})()}disposeInactiveScenes(e,t){return function(e,t,n,r,i){const o=[];if(n)return o;const s=t.maxCachedScenes,a=!1===t.cacheScenes?1:"number"==typeof s&&Number.isFinite(s)?Math.max(1,Math.floor(s)):8;return e().forEach((t,n)=>{if(!(n===r||n===i||e().size<=a))try{t.dispose()}catch(s){o.push(s)}finally{e().get(n)===t&&e().delete(n)}}),o}(()=>this.instances,this.options,this.transactionCacheDepth,e,t)}trimInactiveScenes(){return this.disposeInactiveScenes(this.currentSceneId)}setSceneCachePolicy(e,t=this.options.maxCachedScenes){if(this.isSwitching||this.isRegionSwitching||this.transactionCacheDepth||this.pendingInstances.size)throw new Error("Scene cache policy requires idle navigation");this.options.cacheScenes=e,this.options.maxCachedScenes=t,this.reportSceneRetirementErrors(this.trimInactiveScenes())}reportSceneRetirementErrors(e){if(!e.length)return;const t=new AggregateError(e,"Scene navigation committed, but inactive scene disposal failed");try{this.emit("sceneRetirementError",{sceneId:this.currentSceneId,error:t})}catch(n){console.error(n)}}constructor(e){if(super(),Re(this,"options",void 0),Re(this,"document",void 0),Re(this,"manifest",void 0),Re(this,"manifestUrl",void 0),Re(this,"loadedDefinitions",/* @__PURE__ */new Map),Re(this,"definitionLoads",/* @__PURE__ */new Map),Re(this,"runtimeHooks",void 0),Re(this,"instances",/* @__PURE__ */new Map),Re(this,"currentSceneId",""),Re(this,"history",[]),Re(this,"isSwitching",!1),Re(this,"isRegionSwitching",!1),Re(this,"pencil",void 0),Re(this,"rendererWarmup",void 0),Re(this,"disposed",!1),Re(this,"safeAreaInsets",void 0),Re(this,"generation",0),Re(this,"mapRequests",new $t),Re(this,"requestedMapDocument",void 0),Re(this,"navigationWaiters",/* @__PURE__ */new Set),Re(this,"displayPreparationAbort",new AbortController),Re(this,"documentIdentityRevision",0),Re(this,"preparedStructures",/* @__PURE__ */new WeakMap),Re(this,"pendingInstances",/* @__PURE__ */new Set),Re(this,"identityTrackedScenes",/* @__PURE__ */new WeakSet),Re(this,"prefabOperations",/* @__PURE__ */new Set),Re(this,"transactionCacheDepth",0),"mapSwitchKey"in e)throw Error("External map keys are not supported; use the bundle authorization");this.options=e,this.safeAreaInsets=void 0===e.safeAreaInsets?void 0:yi(e.safeAreaInsets)}prewarmRuntime(){var e;if(this.disposed)return Promise.reject(/* @__PURE__ */new Error("SceneManager has been disposed"));if(this.pencil)return this.pencil.ready;const t=[...this.pendingInstances].find(e=>e.pencil);if(t)return t.pencil.ready;if(null===(e=this.rendererWarmup)||void 0===e?void 0:e.available)return this.rendererWarmup.ready;try{const e=Hr.prewarmRenderer(this.options);return this.rendererWarmup=e,e.ready.catch(()=>{this.rendererWarmup===e&&(this.rendererWarmup=void 0)}),e.ready}catch(n){return Promise.reject(n)}}prepareScene(e){var t,n;if(void 0!==this.options.strictBundleAssets&&e.runtimePolicy&&(e.runtimePolicy.strictBundleAssets=this.options.strictBundleAssets),null===(t=(n=this.options).prepareScene)||void 0===t||t.call(n,e),e.on&&!this.identityTrackedScenes.has(e)){this.identityTrackedScenes.add(e);const t=(t,n,r)=>{const i=[...this.instances].find(([,t])=>t===e);if(!i||!t||n===t)return;const[o]=i;this.remapCommittedIdentity(o,t,n,r)};e.on("objectIdentityChanged",({key:e,oldKey:n})=>t(n,e,!0)),e.on("materialIdentityChanged",({key:e,oldKey:n})=>t(n,e,!1))}e instanceof $i&&void 0!==this.safeAreaInsets&&e.setSafeAreaInsets(this.safeAreaInsets,{refit:!1})}resolveMapSwitchKey(){return Ce(function*(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){var t;return null==e||null===(t=e.runtimeAssets)||void 0===t?void 0:t.mapSwitchKey}).apply(this,arguments)}authorizeMapDefinition(e){var t=this;return Ce(function*(e,n=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){var r,i;if("map"!==e.vis.type)return;const o=e.vis.options,s=new Set([o.adcode,null===(r=o.sceneBindings)||void 0===r||null===(r=r.region)||void 0===r?void 0:r.adcode,null===(i=o.mapData)||void 0===i?void 0:i.adcode].filter(e=>void 0!==e)),a=yield t.resolveMapSwitchKey(n);if(!s.size)throw Error("Map scene has no authorized region");for(const c of s)yield li(t,c,a)}).apply(this,arguments)}remapCommittedIdentity(e,t,n,r){var i;if(!t||t===n||!this.document)return!1;if("string"!=typeof n||!n)throw Error("Identity must not be empty");const o=this.document.scenes.findIndex(t=>t.id===e);if(o<0)return!1;const s=r?Vn:Hn,a=this.document.scenes[o],c=r?Ni(a.scene.object):void 0;if(r?c.has(t)&&c.has(n):(null===(i=a.scene.materials)||void 0===i?void 0:i.some(e=>e.uuid===t))&&a.scene.materials.some(e=>e.uuid===n))throw Error("Duplicate saved identity");const l=s(a,t,n),d=this.loadedDefinitions.get(e),u=d&&d!==a?s(d,t,n):l;if(l===a&&(!d||u===d))return!1;if(l!==a){const e=[...this.document.scenes];e[o]=l,this.document=Pe(Pe({},this.document),{},{scenes:e})}return d&&this.loadedDefinitions.set(e,u),this.documentIdentityRevision++,!0}setSafeAreaInsets(e){var t=this;return Ce(function*(e,n={}){t.safeAreaInsets=void 0===e?void 0:yi(e);const r=t.getCurrentScene();yield Promise.all([.../* @__PURE__ */new Set([...t.instances.values(),...t.pendingInstances])].filter(e=>e instanceof $i).map(e=>e.setSafeAreaInsets(t.safeAreaInsets,Pe(Pe({},n),{},{refit:e===r&&!t.isSwitching&&!t.isRegionSwitching&&n.refit}))))}).apply(this,arguments)}getSafeAreaInsets(){return this.safeAreaInsets&&Pe({},this.safeAreaInsets)}captureCamera(e){var t;if(null==e||null===(t=e.pencil)||void 0===t?void 0:t.controls)return[...e.pencil.cameraPositon.toArray(),...e.pencil.cameraTarget.toArray()]}prepareSceneDisplay(e,t,n,r=!1,i){var o=this;return Ce(function*(){var s,a,c,l;const d=i?AbortSignal.any([o.displayPreparationAbort.signal,i]):o.displayPreparationAbort.signal,u=o.options.beforeSceneDisplay;do{if(Ut(d),o.assertGeneration(n),u){let i;const s=new Promise((e,t)=>{i=()=>{const e=/* @__PURE__ */new Error("Scene display preparation was cancelled");e.name="AbortError",t(e)},d.addEventListener("abort",i,{once:!0}),d.aborted&&i()});try{yield Promise.race([Promise.resolve().then(()=>(o.assertGeneration(n),Ut(d),u(e,{sceneId:t,signal:d,cameraRefitted:r}))),s])}finally{d.removeEventListener("abort",i)}o.assertGeneration(n)}if(!(e instanceof $i&&(yield e.refitSafeAreaIfNeeded({transition:!1}))))break;r=!0,o.assertGeneration(n)}while(u);Ut(d),null===(s=e.pencil.controls)||void 0===s||null===(a=s.update)||void 0===a||a.call(s,0),null===(c=e.pencil.camera)||void 0===c||null===(l=c.updateMatrixWorld)||void 0===l||l.call(c,!0),o.assertGeneration(n)})()}playTransition(e,t,n,r,i,o=!1,s){var a=this;return Ce(function*(){var c,l;let d=!1;const u=()=>{d||(d=!0,null==i||i())},p=!1===t?void 0:t,h=null!==(c=null==p?void 0:p.type)&&void 0!==c?c:n,f=!1!==t&&r?Math.max(0,null!==(l=null==p?void 0:p.duration)&&void 0!==l?l:"mapDrill"===h?550:300):0;try{if(!s&&o&&e instanceof $i&&(0===f||"mapDrill"!==h)&&(yield e.playRegionEnterTransition({duration:0})),0===f)return;"mapDrill"===h&&e instanceof $i?yield e.playRegionEnterTransition({duration:f,sourceCamera:r,preparedCamera:s,onPrepared:u}):yield e.playEnterTransition({duration:f,onPrepared:u})}catch(v){a.emit("sceneTransitionError",{scene:e,error:v})}finally{u()}})()}setDocument(e){bt(e),this.invalidatePendingOperations(),this.document=this.ownDocument(e),this.manifest=void 0,this.manifestUrl=void 0,this.loadedDefinitions.clear(),this.definitionLoads.clear();const t=new Set(e.scenes.map(e=>e.id));this.instances.forEach((e,n)=>{t.has(n)||n===this.currentSceneId||(e.dispose(),this.instances.delete(n))}),this.history=this.history.filter(e=>t.has(e.sceneId)),this.syncPrefabLibraries()}resolvedMaterialLibrary(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)()){return function(e){var t;return null!==(t=null==e?void 0:e.materialLibrary)&&void 0!==t?t:[]}(e)}ownDocument(e,t=!1){const n=t?e:structuredClone(e);for(const r of n.scenes)delete r.interactions;return n.materialLibrary&&(n.materialLibrary=this.resolvedMaterialLibrary(n)),n}syncPrefabLibraries(e=(e=>null!==(e=this.document)&&void 0!==e?e:this.manifest)(),t,n=this.instances.values(),r){const i=[];try{for(const t of n){var o,s,a,c,l;i.push(t);const n=null==e?void 0:e.runtimeAssets;null===(o=t.setRuntimeAssets)||void 0===o||o.call(t,n&&e===this.manifest?Pe(Pe({},n),{},{baseUrl:null!==(s=this.manifestUrl)&&void 0!==s?s:`${null!==(a=this.options.assetsPrefix)&&void 0!==a?a:""}/manifest.json`}):n),null===(c=t.setPrefabLibrary)||void 0===c||c.call(t,null!==(l=null==e?void 0:e.prefabLibrary)&&void 0!==l?l:[],this.resolvedMaterialLibrary(e))}null==r||r()}catch(h){if(!t)throw h;const e=[];for(const n of i.reverse())try{var d,u,p;null===(d=n.setRuntimeAssets)||void 0===d||d.call(n,t.runtimeAssets),null===(u=n.setPrefabLibrary)||void 0===u||u.call(n,null!==(p=t.prefabLibrary)&&void 0!==p?p:[],this.resolvedMaterialLibrary(t))}catch(f){e.push(f)}if(e.length)throw new AggregateError([h,...e],"Prefab library synchronization and rollback failed");throw h}}patchDocumentMetadata(e){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene metadata patches require an idle document");const t=new Map(this.document.scenes.map(e=>[e.id,e]));if(void 0!==e.s&&"string"!=typeof e.s||!Array.isArray(e.scenes)||e.scenes.length!==t.size||new Set(e.scenes.map(e=>e.id)).size!==t.size||e.scenes.some(e=>!t.has(e.id)||"string"!=typeof e.name||!e.name.trim()||Object.keys(e).some(e=>!["id","name","interactions"].includes(e))))throw new Error("Scene metadata cannot change scene membership or object data");const n=structuredClone(e);bt({format:Ye,schemaVersion:6,entrySceneId:n.entrySceneId,scenes:n.scenes.map(e=>Pe(Pe({},e),{},{vis:{type:t.get(e.id).vis.type,options:{}},scene:{object:{uuid:e.id,type:"Scene"}}}))});const r=n.scenes.map(e=>{const n=Pe(Pe({},t.get(e.id)),e);return Object.hasOwn(e,"interactions")||delete n.interactions,n});this.invalidatePendingOperations(),this.document=Pe(Pe({},this.document),{},{entrySceneId:n.entrySceneId,scenes:r},Object.hasOwn(n,"s")?{s:n.s}:{}),this.manifest=void 0,this.manifestUrl=void 0;for(const i of n.scenes){const e=this.loadedDefinitions.get(i.id);e&&this.loadedDefinitions.set(i.id,Pe(Pe({},e),i))}}patchSceneViewport(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene viewport patches require an idle document");this.document=ro(this.document,e,t),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,this.document.scenes.find(t=>t.id===e))}patchSceneObjects(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene object patches require an idle document");const n=this.document.scenes.findIndex(t=>t.id===e);if(n<0)throw new Error(`Scene ${e} was not found`);if(!Array.isArray(t))throw new Error("Invalid scene object patches");const r=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","pivot","name","visible","layers"]),i=/* @__PURE__ */new Map;for(const l of t){var o;if(!l||"string"!=typeof l.uuid||!l.uuid||i.has(l.uuid)||!l.state||"object"!=typeof l.state||Array.isArray(l.state)||void 0!==l.unset&&!Array.isArray(l.unset))throw new Error("Invalid or duplicate scene object patch");for(const[e,t]of Object.entries(l.state))if(!("matrix"===e?Array.isArray(t)&&16===t.length&&[...t].every(Number.isFinite):"matrixAutoUpdate"===e?"boolean"==typeof t:"pivot"===e?null===t||Array.isArray(t)&&3===t.length&&[...t].every(Number.isFinite):"name"===e?"string"==typeof t:"visible"===e?"boolean"==typeof t:"layers"===e&&Number.isInteger(t)&&t>=-2147483648&&t<=4294967295))throw new Error(`Invalid scene object property ${e}`);if(null===(o=l.unset)||void 0===o?void 0:o.some(e=>!r.has(e)||Object.hasOwn(l.state,e)))throw new Error("Invalid unset scene object properties");i.set(l.uuid,Pe(Pe({},l),{},{state:Pe(Pe({},l.state),Array.isArray(l.state.pivot)?{pivot:[...l.state.pivot]}:{})}))}if(!i.size)return;const s=this.document.scenes[n],a=qi(s.scene.object,i),c=[...this.document.scenes];c[n]=Pe(Pe({},s),{},{scene:Pe(Pe({},s.scene),{},{object:a})}),this.document=Pe(Pe({},this.document),{},{scenes:c}),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,c[n])}patchSceneObjectProperties(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw Error("Scene property patches require an idle document");this.document=eo(this.document,e,t),this.loadedDefinitions.has(e)&&this.loadedDefinitions.set(e,this.document.scenes.find(t=>t.id===e))}patchSceneStructure(e,t){this.commitSceneStructure(this.prepareSceneStructure(e,t))}patchSceneStructureTransaction(e){this.commitSceneStructure(this.prepareSceneStructureTransaction(e))}requireStructureDocument(){if(!this.document||this.isSwitching||this.isRegionSwitching||this.pendingInstances.size||this.definitionLoads.size)throw new Error("Scene structure patches require an idle document");return this.document}prepareSceneStructure(e,t){const n=this.requireStructureDocument(),r=this.generation,i=this.documentIdentityRevision,o=mo(n,e,t);return this.ownPreparedStructure(n,o,r,i)}prepareSceneStructureTransaction(e){const t=this.requireStructureDocument(),n=this.generation,r=this.documentIdentityRevision,i=yo(t,e);return this.ownPreparedStructure(t,i,n,r)}prepareSceneCollectionTransaction(e){const t=this.requireStructureDocument(),n=this.generation,r=this.documentIdentityRevision,i=function(e,t,n,r){if(!t||!Array.isArray(t.scenes)||"string"!=typeof t.entrySceneId)throw new Error("Invalid scene collection transaction");const i=new Map(e.scenes.map(e=>[e.id,e])),o=t.scenes.map(t=>{var r,o;const s=i.get(t.id);if(!n(null===(r=t.vis)||void 0===r?void 0:r.type))throw new Error(`Unsupported vis type: ${null===(o=t.vis)||void 0===o?void 0:o.type}`);if(!s){const n=Pe({},t.scene),r=["geometries","textures","images","shapes"];for(const e of r)delete n[e];const i=structuredClone(Pe(Pe({},t),{},{scene:n}));for(const o of r)if(Object.hasOwn(t.scene,o)){var a,c;const n=t.scene[o];if(!Array.isArray(n)){i.scene[o]=structuredClone(n);continue}const r=null===(a=e.scenes.find(e=>e.scene[o]===n))||void 0===a?void 0:a.scene[o];if(r){i.scene[o]=r;continue}const s=/* @__PURE__ */new Map;for(const t of e.scenes)for(const e of null!==(c=t.scene[o])&&void 0!==c?c:[]){var l;const t=null!==(l=s.get(e.uuid))&&void 0!==l?l:[];t.push(e),s.set(e.uuid,t)}i.scene[o]=n.map(e=>{var t,n;return null!==(t=null===(n=s.get(e.uuid))||void 0===n?void 0:n.find(t=>Yt(t,e)))&&void 0!==t?t:structuredClone(e)})}return i}if(!Yt(s.scene,t.scene))throw new Error("Existing scene graphs must use scene structure transactions");if(s.vis.type!==t.vis.type)throw new Error("A loaded scene cannot change its vis type");if(Yt(s,t))return s;const{scene:d}=t,u=Ge(t,Xt);return Pe(Pe({},structuredClone(u)),{},{scene:s.scene})}),s=(e,t)=>{var n;const r=null!=e?e:[],i=new Map((null!=t?t:[]).map(e=>[e.id,e])),o=r.map(e=>Yt(i.get(e.id),e)?i.get(e.id):structuredClone(e));return o.length===(null!==(n=null==t?void 0:t.length)&&void 0!==n?n:0)&&o.every((e,n)=>e===t[n])?t:o},a=Pe(Pe(Pe({},e),{},{scenes:o,entrySceneId:t.entrySceneId},t.runtimeAssets||e.runtimeAssets?{runtimeAssets:Yt(t.runtimeAssets,e.runtimeAssets)?e.runtimeAssets:structuredClone(t.runtimeAssets)}:{}),{},{materialLibrary:s(t.materialLibrary,e.materialLibrary),prefabLibrary:s(t.prefabLibrary,e.prefabLibrary)});return r(a),a}(t,e,e=>!!Po[e],bt);return this.ownPreparedStructure(t,i,n,r)}prepareSceneInitialization(e,t){var n,r;const i=this.requireStructureDocument(),o=i.scenes.find(t=>t.id===e),s=this.instances.get(e);if(!o||!s||"base"!==o.vis.type||t.id!==e||"base"!==t.vis.type||o.scene.object.uuid!==(null===(n=t.scene.object)||void 0===n?void 0:n.uuid)||s.lead.scene.uuid!==o.scene.object.uuid||(null!==(r=o.scene.object.children)&&void 0!==r?r:[]).length||["geometries","materials","textures","images","skeletons","animations"].some(e=>{var t;return(null!==(t=o.scene[e])&&void 0!==t?t:[]).length}))throw new Error("Only a newly hydrated empty Base scene can be initialized");const a=Pe(Pe({},i),{},{scenes:i.scenes.map(n=>n.id===e?structuredClone(t):n)});return bt(a),this.ownPreparedStructure(i,a,this.generation,this.documentIdentityRevision)}activateSceneForTransaction(e,t,n){var r=this;return Ce(function*(){null==n||n.throwIfAborted();const i=r.currentSceneId,o=r.getCurrentScene(),s=r.instances.get(e),a=r.captureCamera(o);r.transactionCacheDepth++;try{const i=yield r.switchScene(e,{recordHistory:!1,transition:!1},t);if(!i)throw new Error("Scene navigation is busy");return null==n||n.throwIfAborted(),i}catch(l){var c;r.currentSceneId=i,null==o||o.setSceneActive(),a&&(null===(c=r.pencil)||void 0===c||null===(c=c.controls)||void 0===c?void 0:c.setLookAt)&&(yield r.pencil.controls.setLookAt(...a,!1));const t=r.instances.get(e);throw!s&&t&&t!==o&&(t.dispose(),r.instances.delete(e)),l}finally{r.transactionCacheDepth--}})()}retireSceneForTransaction(e,t){var n;if(this.instances.get(e)===t){if(this.currentSceneId===e||(null===(n=this.document)||void 0===n?void 0:n.scenes.some(t=>t.id===e)))throw new Error("Only a removed inactive scene can be retired");try{t.dispose()}finally{this.instances.delete(e),this.loadedDefinitions.delete(e),this.history=this.history.filter(t=>t.sceneId!==e)}}}ownPreparedStructure(e,t,n,r){if(e!==this.document||n!==this.generation||r!==this.documentIdentityRevision)throw new Error("Scene structure preparation is stale because the document changed");const i=Object.freeze({});return this.preparedStructures.set(i,{source:e,candidate:t,generation:n,identityRevision:r}),i}requirePreparedStructure(e){this.requireStructureDocument();const t=this.preparedStructures.get(e);if(!t)throw new Error("Scene structure preparation does not belong to this manager or was already committed");if(t.source!==this.document||t.generation!==this.generation||t.identityRevision!==this.documentIdentityRevision)throw new Error("Scene structure preparation is stale because the document changed");return t}preparedSceneStructureMatches(e,t){var n,r,i,o;const{candidate:s}=this.requirePreparedStructure(e);return!!t&&Yt(s.scenes,t.scenes)&&Yt(null!==(n=s.materialLibrary)&&void 0!==n?n:[],null!==(r=t.materialLibrary)&&void 0!==r?r:[])&&Yt(null!==(i=s.prefabLibrary)&&void 0!==i?i:[],null!==(o=t.prefabLibrary)&&void 0!==o?o:[])&&Yt(s.runtimeAssets,t.runtimeAssets)}commitSceneStructure(e){const{source:t,candidate:n}=this.requirePreparedStructure(e);n.prefabLibrary===t.prefabLibrary&&n.materialLibrary===t.materialLibrary&&n.runtimeAssets===t.runtimeAssets||this.syncPrefabLibraries(n,t),this.preparedStructures.delete(e),this.document=n;for(const r of t.scenes)n.scenes.some(e=>e.id===r.id)||(this.instances.has(r.id)?this.loadedDefinitions.set(r.id,r):this.loadedDefinitions.delete(r.id));for(const r of n.scenes)this.loadedDefinitions.has(r.id)&&t.scenes.find(e=>e.id===r.id)!==r&&this.loadedDefinitions.set(r.id,r)}patchMaterialDefinitions(e,t,n){if(!this.document||this.isSwitching||this.isRegionSwitching||this.pendingInstances.size||this.definitionLoads.size)throw new Error("Material definition patches require an idle document");const r=function(e,t,n,r,i,o,s){var a,c;if(!Array.isArray(n)||!Array.isArray(r))throw new Error("Invalid material definition patch");const l=structuredClone(n),d=new Set(l.map(e=>null==e?void 0:e.id)),u=(null!==(a=e.materialLibrary)&&void 0!==a?a:[]).filter(e=>d.has(e.id)),p=new Set(r.map(e=>null==e?void 0:e.id));if(d.size!==l.length||u.length!==l.length||p.size!==r.length||r.some(t=>!e.scenes.some(e=>e.id===(null==t?void 0:t.id))))throw new Error("Material definition patches require existing unique assets and scenes");if(e.scenes.filter(e=>{var t;return(null!==(t=e.scene.materials)&&void 0!==t?t:[]).some(e=>{var t;return d.has(null===(t=e.userData)||void 0===t?void 0:t[s])})}).some(e=>!p.has(e.id)))throw new Error("Material definition patch omitted an affected scene");const h=o(e.scenes.filter(e=>p.has(e.id)),u,l,i),f=new Map(h.map(e=>[e.id,e])),v=o([...t.values()].filter(e=>p.has(e.id)),u,l,i),m=new Map(l.map(e=>[e.id,e]));return{document:Pe(Pe({},e),{},{materialLibrary:(null!==(c=e.materialLibrary)&&void 0!==c?c:[]).map(e=>{var t;return null!==(t=m.get(e.id))&&void 0!==t?t:e}),scenes:e.scenes.map(e=>{var t;return null!==(t=f.get(e.id))&&void 0!==t?t:e})}),loadedDefinitions:v}}(this.document,this.loadedDefinitions,e,t,n,an,st);this.document=r.document;for(const i of r.loadedDefinitions)this.loadedDefinitions.set(i.id,i);this.syncPrefabLibraries()}load(e,t){var n=this;return Ce(function*(e,t,r={}){var i;const o=n.invalidatePendingOperations(),s=yield n.loadDocument(e);n.assertGeneration(o),Xe(s)?vt(s):bt(s);const a=s.scenes.find(e=>{var t;return e.id===(null!==(t=r.sceneId)&&void 0!==t?t:s.entrySceneId)});if(a&&(yield n.authorizeMapDefinition(a,s)),n.assertGeneration(o),n.disposeInstances(),n.loadedDefinitions.clear(),n.definitionLoads.clear(),Xe(s)){vt(s),n.document=void 0,n.manifest=structuredClone(s);for(const e of n.manifest.scenes)delete e.interactions;n.manifestUrl="string"==typeof e?Le(_e(e),n.options.assetsPrefix):void 0,n.resolveBundleImages(n.manifest)}else bt(s),n.document=n.ownDocument(s,r.consumeInput),n.manifest=void 0,n.manifestUrl=void 0;n.runtimeHooks=t?Pe({},t):void 0,n.history=[],n.currentSceneId="";const c=null!==(i=r.sceneId)&&void 0!==i?i:s.entrySceneId,l=yield n.switchScene(c,{recordHistory:!1},t);if(!l)throw new Error(`Unable to load entry scene ${c}`);return l}).apply(this,arguments)}createEmptyScene(e,t){var n=this;return Ce(function*(e,t,r=[]){if(yield n.authorizeMapDefinition(e,{}),n.isSwitching||n.isRegionSwitching)throw new Error("SceneManager is already switching scenes");const i=Po[e.vis.type];if(!i)throw new Error(`Unsupported vis type: ${e.vis.type}`);const o=n.invalidatePendingOperations();let s,a;n.disposeInstances(),n.document=void 0,n.manifest=void 0,n.manifestUrl=void 0,n.loadedDefinitions.clear(),n.runtimeHooks=void 0,n.history=[],n.currentSceneId="",n.isSwitching=!0;let c=!1;try{n.emit("beforeSceneChange",{from:null,to:e.id});const l=n.options,{bindInteractions:d,prepareScene:u,beforeSceneDisplay:p,cacheScenes:h,maxCachedScenes:f,safeAreaInsets:v,debugInteractions:m,loadScene:g}=l,y=Ge(l,So),b=structuredClone(e.vis.options||{});for(const e of["pencil","container","css2DContainer","controlsContainer","assetsPrefix"])delete b[e];s=new i(Pe(Pe(Pe({},y),b),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup})),s.setOptions(s.options),a=s.suspendRendering(),n.pendingInstances.add(s),n.prepareScene(s),s.cameraState=structuredClone(e.cs||{}),s.cameraStateActive=e.csa||"",yield s.initializeRuntime(),n.assertGeneration(o),yield null==t?void 0:t(s),n.assertGeneration(o),yield s.show(),n.assertGeneration(o),yield n.prepareSceneDisplay(s,e.id,o);const w=Pe(Pe({},structuredClone(e)),{},{scene:s.exportScene()}),j=en(Pe({format:Ye,schemaVersion:6,entrySceneId:e.id,scenes:[w]},r.length?{materialLibrary:Vt(w,r)}:{}));return bt(j),n.enablePickDebug(s),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e.id,s),n.document=j,n.instances.set(e.id,s),n.pendingInstances.delete(s),n.currentSceneId=e.id,n.pencil||(n.pencil=s.pencil,s.releasePencilOwnership()),c=!0,n.notifySceneObservers("afterSceneChange",{from:null,to:e.id,scene:s}),s}catch(l){throw!c&&s&&(n.discardSceneCandidates([s],{sceneId:e.id}),n.instances.get(e.id)===s&&n.instances.delete(e.id)),n.notifySceneObservers("sceneChangeError",{from:null,to:e.id,error:l}),l}finally{s&&n.pendingInstances.delete(s),n.finishNavigation(o,a)}}).apply(this,arguments)}loadMapRegion(e,t,n,r){var i=this;return Ce(function*(){return i.loadMapRegionRequest(e,t,n,r)})()}requestMapRegion(e,t,n,r={}){var i,o=this;return this.mapRequests.run((i=Ce(function*(i){yield o.waitForNavigation(i);const s=o.requestedMapDocument;if(!s||s.source!==e||s.generation!==o.generation){let r;const s=yield o.loadMapRegionRequest(e,t,(e,t)=>(r=e,n(e,t)),void 0,i);return Ut(i),o.requestedMapDocument={source:e,metadata:r,generation:o.generation},s}const a=yield _t(Promise.resolve(n(s.metadata,t)),i);Ut(i);const c="string"==typeof a?a:null==a?void 0:a.id;if(!c)throw new Error(`Unable to resolve a map template for region ${t}`);for(;;){yield o.waitForNavigation(i);try{const e=yield o.switchMapRegion(c,t,Pe(Pe({},r),{},{signal:i}));if(e)return e}catch(l){if(!(l instanceof Do))throw l}}}),function(e){return i.apply(this,arguments)}),r.signal)}loadMapRegionRequest(e,t,n,r,i){var o=this;return Ce(function*(){Ut(i);const s=o.invalidatePendingOperations(!!i),a=yield _t(o.loadDocument(e),i);o.assertGeneration(s),Ut(i),Xe(a)?vt(a):bt(a);const c="number"==typeof t,l=c?t:n;let d;if(c){if("function"!=typeof n)throw new Error("A map region scene resolver is required");const e=Xe(a)?{format:Ye,schemaVersion:6,entrySceneId:a.entrySceneId,scenes:a.scenes.map(e=>{let{source:t,bytes:n}=e,r=Ge(e,Ao);return Pe(Pe({},structuredClone(r)),{},{scene:{}})}),materialLibrary:structuredClone(o.resolvedMaterialLibrary(a)),c:a.c,d:a.d,h:a.h,s:a.s,runtimeAssets:structuredClone(a.runtimeAssets)}:a,t=yield _t(Promise.resolve(n(e,l)),i);if(o.assertGeneration(s),Ut(i),d="string"==typeof t?t:(null==t?void 0:t.id)||"",!d)throw new Error(`Unable to resolve a map template for region ${l}`)}else d=t;const u=Xe(a)?a.scenes.find(e=>e.id===d):Sn(a,d);if(!u)throw new Error(`Scene ${d} was not found`);if("map"!==u.vis.type)throw new Error(`Scene ${d} is not a map template`);ci(0,a.runtimeAssets,l,d),o.disposeInstances(),o.loadedDefinitions.clear(),o.definitionLoads.clear(),o.document=Xe(a)?void 0:o.ownDocument(a),o.manifest=Xe(a)?structuredClone(a):void 0,o.manifestUrl=Xe(a)&&"string"==typeof e?Le(_e(e),o.options.assetsPrefix):void 0,o.manifest&&o.resolveBundleImages(o.manifest),o.runtimeHooks=r?Pe({},r):void 0,o.history=[],o.currentSceneId="";const p=yield o.switchMapRegion(d,l,{recordHistory:!1,transition:!1,signal:i},r);if(!p)throw new Error(`Unable to load map region ${l} from scene ${d}`);return p})()}loadDocument(e){var t=this;return Ce(function*(){if("string"!=typeof e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?Be(e):e;const n=_e(e),r=/\.zip(?:[?#]|$)/i.test(n)?fetch(Le(n,t.options.assetsPrefix)).then((i=Ce(function*(e){if(!e.ok)throw Error(`ZIP 下载失败:${e.status}`);return Be(yield e.arrayBuffer(),n)}),function(e){return i.apply(this,arguments)})):Te(n,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!1}}).then(e=>(vt(e),e));var i;return t.pencil||t.prewarmRuntime().catch(()=>{}),yield r})()}getSceneMetadata(e){var t;const n=this.document?Sn(this.document,e):null===(t=this.manifest)||void 0===t?void 0:t.scenes.find(t=>t.id===e);if(!n)throw new Error(`Scene ${e} was not found`);return n}resolveManifestSource(e){return function(e,t){return!t||/^(?:[a-z]+:)?\/\//i.test(e)||e.startsWith("/")?e:/^[a-z]+:\/\//i.test(t)?new URL(e,t).toString():"undefined"!=typeof window?new URL(e,new URL(t,window.location.href)).toString():new URL(e,`https://bundle.invalid${t.startsWith("/")?"":"/"}${t}`).pathname}(e,this.manifestUrl)}resolveBundleImages(e){var t,n;e===this.manifest&&(null===(t=this.manifest)||void 0===t?void 0:t.materialLibrary)&&(this.manifest.materialLibrary=this.resolvedMaterialLibrary(this.manifest)),It(e,null===(n=this.manifest)||void 0===n?void 0:n.assets,e=>this.manifestUrl?this.resolveManifestSource(e):Le(e,this.options.assetsPrefix))}loadSceneDefinition(e){var t=this;return Ce(function*(){return function(e,t){if(t.document)return t.getSceneDocument(t.document,e);const n=t.loadedDefinitions.get(e);if(n)return n;const r=t.definitionLoads.get(e);if(r)return r;const i=t.generation,o=t.getSceneMetadata(e),s=(t.options.loadScene?t.options.loadScene(structuredClone(o)):t.loadGeojsonAsset(t.resolveManifestSource(o.source),{assetsPrefix:t.manifestUrl?"":t.options.assetsPrefix,fetchOptions:{cache:!0}})).then(n=>{var r;if(t.assertGeneration(i),!(null==n?void 0:n.scene)||n.id!==o.id||(null===(r=n.vis)||void 0===r?void 0:r.type)!==o.vis.type)throw new Error(`Invalid scene file for ${e}`);t.manifest,Qe(n);const s=structuredClone(n);return delete s.interactions,t.resolveBundleImages(s),t.loadedDefinitions.set(e,s),s}).finally(()=>{t.definitionLoads.get(e)===s&&t.definitionLoads.delete(e)});return t.definitionLoads.set(e,s),s}(e,t.definitionLoadingContext())})()}createRuntimeSceneDocument(e){return function(e,t){var n,r;if(t.document)return t.selectSceneDocument(Kt(t.document,e.id),e.id);const i=Kt(Pe(Pe({},t.manifest),{},{format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:6,entrySceneId:e.id,materialLibrary:t.resolvedMaterialLibrary(),scenes:[e]}),e.id),{c:o,d:s,h:a,s:c,prefabLibrary:l,materialLibrary:d=[],runtimeAssets:u}=i,p=t.getSceneDocument(i,e.id,{resolveResources:!0});return Pe(Pe(Pe(Pe(Pe({format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:6,entrySceneId:e.id},structuredClone({c:o,d:s,h:a,s:c})),u?{runtimeAssets:Pe(Pe({},u),{},{baseUrl:null!==(n=t.manifestUrl)&&void 0!==n?n:`${null!==(r=t.options.assetsPrefix)&&void 0!==r?r:""}/manifest.json`})}:{}),d.length?{materialLibrary:t.sceneMaterialLibrary(p,d,l)}:{}),l?{prefabLibrary:l.map(e=>structuredClone(e))}:{}),{},{scenes:[Pe(Pe({},p),{},{interactions:void 0})]})}(e,this.definitionLoadingContext())}definitionLoadingContext(){const e=this;return{get document(){return e.document},get manifest(){return e.manifest},get manifestUrl(){return e.manifestUrl},get options(){return e.options},get generation(){return e.generation},get loadedDefinitions(){return e.loadedDefinitions},get definitionLoads(){return e.definitionLoads},getSceneMetadata:e=>this.getSceneMetadata(e),resolveManifestSource:e=>this.resolveManifestSource(e),resolvedMaterialLibrary:e=>this.resolvedMaterialLibrary(e),resolveBundleImages:e=>this.resolveBundleImages(e),assertGeneration:e=>this.assertGeneration(e),getSceneDocument:Sn,selectSceneDocument:An,loadGeojsonAsset:Te,sceneMaterialLibrary:Vt,SCENE_DOCUMENT_FORMAT:Ye}}switchScene(e){var t=this;return Ce(function*(e,n={},r){if(!t.document&&!t.manifest)throw new Error("SceneManager.load() must be called before switchScene()");if(t.isSwitching||t.isRegionSwitching)return null;if(e===t.currentSceneId)return t.getCurrentScene();const i=t.generation,o=t.instances.get(e),s=yield o?void 0:t.loadSceneDefinition(e);if(t.assertGeneration(i),yield t.authorizeMapDefinition(null!=s?s:t.getSceneMetadata(e)),o instanceof $i&&(yield t.authorizeMapDefinition({vis:{type:"map",options:{adcode:o.adcode}}})),t.assertGeneration(i),t.isSwitching||t.isRegionSwitching)throw new Error("Scene navigation is busy");const a=t.currentSceneId,c=t.getCurrentScene(),l=t.captureCamera(c);let d,u,p=!1;t.isSwitching=!0;try{var h;u=null===(h=t.pencil)||void 0===h?void 0:h.suspendRendering(),t.emit("beforeSceneChange",{from:a||null,to:e}),t.assertGeneration(i);let f=o;if(f)f.setSceneActive();else{if(!s)throw new Error(`Scene ${e} was not found`);const n=Po[s.vis.type];if(!n)throw new Error(`Unsupported vis type: ${s.vis.type}`);const o=t.options,{bindInteractions:a,prepareScene:c,beforeSceneDisplay:l,cacheScenes:p,maxCachedScenes:h,safeAreaInsets:v,debugInteractions:m,loadScene:g}=o;f=new n(Pe(Pe({},Ge(o,Oo)),t.pencil?{pencil:t.pencil}:{rendererWarmup:t.rendererWarmup})),d=f;const y=u,b=f.suspendRendering();u=()=>{try{b()}finally{null==y||y()}},t.pendingInstances.add(f),t.prepareScene(f),yield f.fromJSON(t.createRuntimeSceneDocument(s),r?Pe({},r):t.runtimeHooks,Pe({consumeInput:!0},t.transactionCacheDepth?{strictResourceReuse:!0,reuseResources:jo(s.scene,[...t.instances].flatMap(([e,n])=>{var r,i;const o=null!==(r=null===(i=t.document)||void 0===i?void 0:i.scenes.find(t=>t.id===e))&&void 0!==r?r:t.loadedDefinitions.get(e);return o?[{vis:n,graph:o.scene}]:[]}))}:{})),t.assertGeneration(i),t.enablePickDebug(f),!1!==t.options.bindInteractions&&t.bindSceneInteractions(e,f)}let v=!1;f instanceof $i&&(v=yield f.refitSafeAreaIfNeeded({transition:!1}),t.assertGeneration(i)),yield t.prepareSceneDisplay(f,e,i,v);const m=f instanceof $i?t.captureCamera(f):void 0;f.setSceneActive(),d&&(t.pendingInstances.delete(f),t.pencil||(t.pencil=f.pencil,f.releasePencilOwnership())),a&&!1!==n.recordHistory&&t.history.push({kind:"scene",sceneId:a}),t.currentSceneId=e,t.instances.delete(e),t.instances.set(e,f),p=!0;const g=c instanceof $i&&f instanceof $i?"mapDrill":"fade";return yield t.playTransition(f,n.transition,g,l,u,!1,m),t.assertGeneration(i),t.reportSceneRetirementErrors(t.disposeInactiveScenes(e)),t.notifySceneObservers("afterSceneChange",{from:a||null,to:e,scene:f}),f}catch(f){throw p||(d&&t.discardSceneCandidates([d],{sceneId:e}),d&&t.instances.get(e)===d&&t.instances.delete(e),i===t.generation&&(null==c||c.setSceneActive())),t.notifySceneObservers("sceneChangeError",{from:a||null,to:e,error:f}),f}finally{d&&t.pendingInstances.delete(d),p&&i===t.generation&&t.reportSceneRetirementErrors(t.disposeInactiveScenes(t.currentSceneId)),t.finishNavigation(i,u)}}).apply(this,arguments)}preloadScene(e,t){var n=this;return Ce(function*(){if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before preloadScene()");const r=n.instances.get(e);if(r)return r;if(n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");const i=n.generation,o=yield n.loadSceneDefinition(e);if(n.assertGeneration(i),n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");const s=Po[o.vis.type];if(!s)throw new Error(`Unsupported vis type: ${o.vis.type}`);const a=n.getCurrentScene(),c=n.captureCamera(a);let l,d;n.isSwitching=!0;try{var u,p;l=null===(u=n.pencil)||void 0===u?void 0:u.suspendRendering();const r=n.options,{bindInteractions:h,prepareScene:f,beforeSceneDisplay:v,cacheScenes:m,maxCachedScenes:g,safeAreaInsets:y,debugInteractions:b,loadScene:w}=r;d=new s(Pe(Pe({},Ge(r,Mo)),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup}));const j=l,S=d.suspendRendering();return l=()=>{try{S()}finally{null==j||j()}},n.pendingInstances.add(d),n.prepareScene(d),yield d.fromJSON(n.createRuntimeSceneDocument(o),t?Pe({},t):n.runtimeHooks),n.assertGeneration(i),n.enablePickDebug(d),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e,d),d.hide(),null==a||a.setSceneActive(),c&&(null===(p=n.pencil)||void 0===p||null===(p=p.controls)||void 0===p?void 0:p.setLookAt)&&(yield n.pencil.controls.setLookAt(...c,!1)),n.assertGeneration(i),n.instances.set(e,d),n.pendingInstances.delete(d),n.pencil||(n.pencil=d.pencil,d.releasePencilOwnership()),n.reportSceneRetirementErrors(n.disposeInactiveScenes(n.currentSceneId,e)),d}catch(f){var h;if(d&&n.discardSceneCandidates([d],{sceneId:e}),d&&n.instances.get(e)===d&&n.instances.delete(e),i!==n.generation)throw f;throw null==a||a.setSceneActive(),c&&(null===(h=n.pencil)||void 0===h||null===(h=h.controls)||void 0===h?void 0:h.setLookAt)&&(yield n.pencil.controls.setLookAt(...c,!1)),f}finally{d&&n.pendingInstances.delete(d),n.finishNavigation(i,l)}})()}editScene(e,t,n){var r=this;return Ce(function*(){if(r.isSwitching||r.isRegionSwitching)throw new Error("Scene navigation is busy");if(!r.document||e!==r.currentSceneId)throw new Error("Only the active scene can be edited");const i=r.generation,o=structuredClone(Sn(r.document,e)),s=r.getCurrentScene(),a=Po[o.vis.type];if(!a)throw new Error(`Unsupported vis type: ${o.vis.type}`);let c,l;r.isSwitching=!0;let d=!1;try{var u,p;c=null===(u=r.pencil)||void 0===u?void 0:u.suspendRendering();const h=r.options,{bindInteractions:f,prepareScene:v,beforeSceneDisplay:m,cacheScenes:g,maxCachedScenes:y,safeAreaInsets:b,debugInteractions:w,loadScene:j}=h;l=new a(Pe(Pe({},Ge(h,xo)),{},{pencil:r.pencil})),r.pendingInstances.add(l),r.prepareScene(l),yield l.fromJSON(An(r.document,e),n?Pe({},n):r.runtimeHooks),r.assertGeneration(i);const S=yield t(l,o);if(r.assertGeneration(i),S.id!==e||S.vis.type!==o.vis.type)throw new Error("Scene edit cannot change identity or type");const A=structuredClone(r.document);A.scenes[A.scenes.findIndex(t=>t.id===e)]=S,bt(A),S.vis.options.createIfNeeded=!0,l.setOptions(S.vis.options),yield l.restoreScene(pn(S,{omitPrefabPreviews:!(null===(p=l.runtimePolicy)||void 0===p?void 0:p.includePrefabPreviews)})),r.assertGeneration(i),S.scene=l.exportScene(),!1!==r.options.bindInteractions&&r.bindSceneInteractions(e,l);const O=en(A);return l.setSceneActive(),r.document=O,r.instances.set(e,l),r.pendingInstances.delete(l),d=!0,r.reportSceneRetirementErrors(r.retireScenes([s])),l}catch(h){throw d||(l&&r.discardSceneCandidates([l],{sceneId:e}),i===r.generation&&s.setSceneActive()),h}finally{l&&r.pendingInstances.delete(l),r.finishNavigation(i,c)}})()}back(e){var t=this;return Ce(function*(){if(t.isSwitching||t.isRegionSwitching)return null;const n=t.history.at(-1);if(!n)return null;let r;if("region"===n.kind)r=yield t.switchMapRegion(n.sceneId,n.adcode,{recordHistory:!1,transition:{type:"mapDrill"}},e);else{const i=t.currentSceneId?t.getSceneMetadata(t.currentSceneId):void 0,o=t.getSceneMetadata(n.sceneId),s="map"===(null==i?void 0:i.vis.type)&&"map"===(null==o?void 0:o.vis.type)?{type:"mapDrill"}:void 0;r=yield t.switchScene(n.sceneId,{recordHistory:!1,transition:s},e)}return r&&t.history.pop(),r})()}switchMapRegion(e,t){var n=this;return Ce(function*(e,t,r={},i){var o,s,a,c;if(Ut(r.signal),n.isRegionSwitching||n.isSwitching)return null;if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before switchMapRegion()");ci(0,null===(o=null!==(s=n.document)&&void 0!==s?s:n.manifest)||void 0===o?void 0:o.runtimeAssets,t,e);const l=null===(a=null!==(c=n.document)&&void 0!==c?c:n.manifest)||void 0===a||null===(a=a.runtimeAssets)||void 0===a||null===(a=a.regions)||void 0===a?void 0:a[e];if(!1!==n.options.strictBundleAssets&&l&&!l.includes(t))throw Error(`区域 ${t} 不在场景 ${e} 的导出范围内,请扩大交互范围后重新导出。`);const d=n.generation,u=yield _t(n.loadSceneDefinition(e),r.signal);if(n.assertGeneration(d),Ut(r.signal),n.isSwitching||n.isRegionSwitching)throw new Do("Scene navigation is busy");if("map"!==u.vis.type)throw new Error(`Scene ${e} is not a map template`);if(!Number.isInteger(t)||t<0)throw new Error(`Invalid map region: ${t}`);const p=n.currentSceneId,h=n.getCurrentScene(),f=n.captureCamera(h);if(e===p&&h instanceof $i&&h.adcode===t)return h;let v,m,g;n.isRegionSwitching=!0;let y="authorize";try{var b,w,j;const o=null!==(b=null===(w=u.vis.options.sceneBindings)||void 0===w||null===(w=w.region)||void 0===w?void 0:w.adcode)&&void 0!==b?b:u.vis.options.adcode,s=yield n.resolveMapSwitchKey();yield li(n,t,s),n.assertGeneration(d),Ut(r.signal),m=null===(j=n.pencil)||void 0===j?void 0:j.suspendRendering(),n.emit("beforeSceneChange",{from:p||null,to:e}),y="create-candidate";const a=n.options,{bindInteractions:c,prepareScene:l,beforeSceneDisplay:h,cacheScenes:f,maxCachedScenes:S,safeAreaInsets:A,debugInteractions:O,loadScene:M}=a;v=new $i(Pe(Pe({},Ge(a,Io)),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup}));const x=m,I=v.suspendRendering();if(m=()=>{try{I()}finally{null==x||x()}},n.pendingInstances.add(v),n.prepareScene(v),y="restore-template",yield function(e,t,n,r){return pi.apply(this,arguments)}(v,t,s,()=>v.fromJSON(n.createRuntimeSceneDocument(u),i?Pe({},i):n.runtimeHooks,{consumeInput:!0})),n.debugInteraction("map template restored",{fromSceneId:p||null,toSceneId:e,templateAdcode:o,targetAdcode:t}),n.assertGeneration(d),Ut(r.signal),n.enablePickDebug(v),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e,v),y="rebuild-region",n.debugInteraction("map region rebuild started",{sceneId:e,targetAdcode:t}),yield v.rebuildRegion(t),n.assertGeneration(d),Ut(r.signal),y="validate-region",v.adcode!==t)throw new Error(`Unable to build map region ${t}`);n.debugInteraction("map region rebuild completed",{sceneId:e,targetAdcode:t,currentAdcode:v.adcode}),y="prepare-camera",yield v.playRegionEnterTransition({duration:0}),n.assertGeneration(d),Ut(r.signal),y="prepare-display",yield n.prepareSceneDisplay(v,e,d,!0,r.signal),Ut(r.signal),g=n.captureCamera(v)}catch(x){var S,A;if(n.debugInteraction("map region navigation failed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t,stage:y,error:x}),n.options.debugInteractions)console.error("[vis-core:map-region] navigation failed",{stage:y,fromSceneId:p||null,toSceneId:e,targetAdcode:t,templateAdcode:null!==(S=null===(A=u.vis.options.sceneBindings)||void 0===A||null===(A=A.region)||void 0===A?void 0:A.adcode)&&void 0!==S?S:u.vis.options.adcode,currentAdcode:null==v?void 0:v.adcode,message:x instanceof Error?x.message:String(x),stack:x instanceof Error?x.stack:void 0,cause:x instanceof Error?x.cause:void 0,error:x});try{null==v||v.dispose()}catch(I){console.error("[vis-core:map-region] candidate cleanup failed",{stage:y,targetAdcode:t,disposeError:I})}throw v&&n.pendingInstances.delete(v),d===n.generation&&(null==h||h.setSceneActive()),n.finishNavigation(d,m,!0),n.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:x}),x}const O=v;let M=!1;try{const i=n.instances.get(e);if(O.setSceneActive(),p&&!1!==r.recordHistory){const t=h instanceof $i?h.adcode:void 0;p===e&&void 0!==t?n.history.push({kind:"region",sceneId:p,adcode:t}):n.history.push({kind:"scene",sceneId:p})}n.instances.set(e,O),n.pendingInstances.delete(O),n.currentSceneId=e,n.pencil||(n.pencil=O.pencil,O.releasePencilOwnership()),M=!0;const o=n.retireScenes(i?[i]:[]);return n.debugInteraction("map region committed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t}),yield n.playTransition(O,r.transition,"mapDrill",f,m,!0,g),n.assertGeneration(d),n.reportSceneRetirementErrors([...o,...n.disposeInactiveScenes(e)]),n.notifySceneObservers("afterSceneChange",{from:p||null,to:e,scene:O}),n.notifySceneObservers("afterMapRegionChange",{from:p||null,to:e,adcode:t,scene:O}),n.debugInteraction("map region transition completed",{sceneId:e,targetAdcode:t}),O}catch(x){throw M||(n.discardSceneCandidates([O],{sceneId:e}),n.pendingInstances.delete(O),d===n.generation&&(null==h||h.setSceneActive())),n.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:x}),x}finally{n.finishNavigation(d,m,!0)}}).apply(this,arguments)}backMapRegion(e){var t=this;return Ce(function*(){return t.back(e)})()}getCurrentSceneId(){return this.currentSceneId}getCurrentScene(e){return this.getCurrentSceneByType(e)}getCurrentSceneByType(e){return this.currentSceneId&&this.getSceneByType(this.currentSceneId,e)||null}getScene(e,t){return this.getSceneByType(e,t)}getSceneByName(e,t){var n,r,i;const o=null===(n=(null===(r=this.document)||void 0===r?void 0:r.scenes)||(null===(i=this.manifest)||void 0===i?void 0:i.scenes))||void 0===n?void 0:n.find(n=>n.name===e&&(!t||n.vis.type===t));return o?this.getSceneByType(o.id,t):void 0}getSceneByType(e,t){const n=this.instances.get(e);if(!n||!t)return n;const r=this.document||this.manifest?this.getSceneMetadata(e).vis.type:void 0;if(r!==t)throw new Error(`Scene ${e} is ${r||"unknown"}, expected ${t}`);return n}getMaterialLibrary(){return structuredClone(this.resolvedMaterialLibrary())}getPrefabLibrary(){var e,t,n;return _r(null!==(e=null===(t=this.document)||void 0===t?void 0:t.prefabLibrary)&&void 0!==e?e:null===(n=this.manifest)||void 0===n?void 0:n.prefabLibrary)}instantiatePrefab(e){var t=this;return Ce(function*(e,n={}){var r,i;const o=null!==(r=t.document)&&void 0!==r?r:t.manifest,s=$r(null!==(i=null==o?void 0:o.prefabLibrary)&&void 0!==i?i:[],e),a=n.sceneId?t.instances.get(n.sceneId):n.target?[...t.instances.values()].find(e=>e.lead===n.target.lead):t.getCurrentScene();if(!a)throw new Error(n.sceneId?`Scene "${n.sceneId}" must be loaded before instantiating a prefab`:"A loaded destination scene is required to instantiate a prefab");const c=t.generation,l=new AbortController;let d;t.prefabOperations.add(l);try{return d=yield Nr(a,s,t.resolvedMaterialLibrary(o),n,l.signal),t.assertGeneration(c),d}catch(u){throw null==d||d.erase(),u}finally{t.prefabOperations.delete(l)}}).apply(this,arguments)}updateMaterial(e,t){var n=this;return Ce(function*(){if(n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before updateMaterial()");const r=function(e,t,n,r){return null!=e?e:Pe(Pe({},t),{},{format:r,schemaVersion:6,materialLibrary:n(),scenes:t.scenes.map(e=>Pe(Pe({},e),{},{scene:{}}))})}(n.document,n.manifest,()=>n.resolvedMaterialLibrary(),Ye),i=Yn(r,e,t),o=n.generation,s=n.getCurrentScene(),a=n.captureCamera(s);let c;const l=/* @__PURE__ */new Map;let d=!1;n.isSwitching=!0;try{var u,p,h;c=null===(u=n.pencil)||void 0===u?void 0:u.suspendRendering();for(const[r,s]of n.instances){var f;s.setSceneActive();const t=s.exportScene();if(!(null===(f=t.materials)||void 0===f?void 0:f.some(t=>{var n;return(null===(n=t.userData)||void 0===n?void 0:n._materialAssetId)===e})))continue;const a=Gt(n.getSceneMetadata(r),t,s),c=nn(a,i.materialLibrary),d=Po[a.vis.type],u=n.options,{bindInteractions:p,prepareScene:h,beforeSceneDisplay:v,cacheScenes:m,maxCachedScenes:g,safeAreaInsets:y,debugInteractions:b,loadScene:w}=u,j=new d(Pe(Pe({},Ge(u,Eo)),{},{pencil:n.pencil}));l.set(r,j),n.pendingInstances.add(j),n.prepareScene(j),yield j.fromJSON(Pe(Pe({},i),{},{entrySceneId:r,materialLibrary:Vt(c,i.materialLibrary),scenes:[Pe(Pe({},c),{},{interactions:void 0})]}),n.runtimeHooks),n.assertGeneration(o),j instanceof $i&&void 0!==j.adcode&&(yield j.applyRegionTextureRules(j.adcode),n.assertGeneration(o)),n.enablePickDebug(j),!1!==n.options.bindInteractions&&n.bindSceneInteractions(r,j)}const t=null!==(p=l.get(n.currentSceneId))&&void 0!==p?p:s,v=n.document?new Map([...n.loadedDefinitions].map(([e,t])=>[e,nn(t,i.materialLibrary)])):n.loadedDefinitions,m=new Map(n.instances),g=[];for(const[e,n]of l){const t=m.get(e);t&&g.push(t),m.set(e,n)}null==t||t.setSceneActive(),a&&(null===(h=n.pencil)||void 0===h||null===(h=h.controls)||void 0===h?void 0:h.setLookAt)&&(yield n.pencil.controls.setLookAt(...a,!1)),n.assertGeneration(o),n.syncPrefabLibraries(i,r,m.values(),()=>n.assertGeneration(o)),n.document?n.document=i:n.manifest=Pe(Pe({},n.manifest),{},{materialLibrary:i.materialLibrary}),n.loadedDefinitions=v,n.instances=m;for(const e of l.values())n.pendingInstances.delete(e);return d=!0,n.reportSceneRetirementErrors(n.retireScenes(g)),n.notifySceneObservers("materialChanged",{assetId:e,revision:i.materialLibrary.find(t=>t.id===e).revision}),t}catch(m){if(d)throw m;n.discardSceneCandidates(l.values(),{assetId:e});for(const e of l.values())n.pendingInstances.delete(e);var v;if(o===n.generation)null==s||s.setSceneActive(),a&&(null===(v=n.pencil)||void 0===v||null===(v=v.controls)||void 0===v?void 0:v.setLookAt)&&(yield n.pencil.controls.setLookAt(...a,!1));throw m}finally{n.finishNavigation(o,c)}})()}getDocumentSnapshot(){return this.document}getDocument(){return this.document?structuredClone(this.document):void 0}getManifest(){return this.manifest?structuredClone(this.manifest):void 0}bindSceneInteractions(e,t){const n=this;Nt(e,t,{get mapNavigation(){var e,t;return null===(e=null!==(t=n.document)&&void 0!==t?t:n.manifest)||void 0===e||null===(e=e.runtimeAssets)||void 0===e?void 0:e.mapNavigation},canDrillMapRegion:t=>{var n,r,i,o,s,a;const c=null===(n=null!==(r=this.document)&&void 0!==r?r:this.manifest)||void 0===n?void 0:n.runtimeAssets;if("dynamic"!==(null==c||null===(i=c.mapNavigation)||void 0===i?void 0:i.mode)||!c.regions)return!1;const l=ke(c.mapNavigation,null===(o=si(t))||void 0===o?void 0:o.level,e,!0);return null!==(s=null===(a=c.regions[l])||void 0===a?void 0:a.includes(t))&&void 0!==s&&s},get currentSceneId(){return n.currentSceneId},get isSwitching(){return n.isSwitching},get isRegionSwitching(){return n.isRegionSwitching},emit:(e,t)=>this.emit(e,t),backMapRegion:()=>this.backMapRegion(),switchMapRegion:(e,t)=>this.switchMapRegion(e,t),resolveMapInteractionTemplate:(e,t,n)=>{var r,i,o;return ke(null===(r=null!==(i=this.document)&&void 0!==i?i:this.manifest)||void 0===r||null===(r=r.runtimeAssets)||void 0===r?void 0:r.mapNavigation,null===(o=si(t))||void 0===o?void 0:o.level,e,n)},isMapScene:e=>e instanceof $i,findAdcodeInfo:si})}canBack(){return this.history.length>0}unloadScene(e){this.invalidatePendingOperations();const t=this.instances.get(e);return this.loadedDefinitions.delete(e),!!t&&(t.dispose(),this.instances.delete(e),this.currentSceneId===e&&(this.currentSceneId=""),!0)}disposeInstances(){const e=[...this.instances.values()],t=this.pencil,n=[];this.instances.clear(),this.pencil=void 0;for(const i of e)try{i.dispose()}catch(r){n.push(r)}try{null==t||t.dispose()}catch(r){n.push(r)}if(1===n.length)throw n[0];if(n.length)throw new AggregateError(n,"Scene runtime disposal failed")}dispose(){this.disposed=!0,this.mapRequests.dispose();const e=[];try{var t;null===(t=this.rendererWarmup)||void 0===t||t.dispose()}catch(n){e.push(n)}this.rendererWarmup=void 0;try{this.invalidatePendingOperations()}catch(n){e.push(n)}try{this.disposeInstances()}catch(n){e.push(n)}this.document=void 0,this.manifest=void 0,this.manifestUrl=void 0,this.loadedDefinitions.clear(),this.definitionLoads.clear(),this.runtimeHooks=void 0,this.currentSceneId="",this.history=[];try{super.dispose()}catch(n){e.push(n)}if(1===e.length)throw e[0];if(e.length)throw new AggregateError(e,"Scene manager disposal failed")}};function Ro(e,t,n){return Lo("string"==typeof e?JSON.parse(e):structuredClone(e),t,n)}function Lo(e,t,n){return N(e,t,n,{remapUserData(e,t){var n;const r=null==e?void 0:e._baseObjectUserData;(null==r?void 0:r.copySource)&&(r.copySource=null!==(n=t.get(r.copySource))&&void 0!==n?n:r.copySource)},remapReferences(e){var t,n;for(const r of[e,...null!==(t=e.materials)&&void 0!==t?t:[]])r.userData&&delete r.userData[Je];for(const r of null!==(n=e.textures)&&void 0!==n?n:[])r.userData&&delete r.userData[Je]}})}var ko={additionalObjectRoots:e=>{var t;return(null===(t=e.userData)||void 0===t||null===(t=t._prefabLink)||void 0===t?void 0:t.baseline)?[e.userData._prefabLink.baseline]:[]},referenceAliases:(e,t)=>{var n;const r="materials"===e&&(null===(n=t.userData)||void 0===n?void 0:n._materialAssetId);return"string"==typeof r?[r]:[]}};function Bo(e){return ue(e,ko)}function To(e){return te(e,ko)}function Uo(e,t,n=[]){return Q(e,t,n,ko)}function _o(e,t){return De(e,t,{ignoreReferenceProperties:["_prefabLink"]})}var $o=["children","shadow","userData"],zo=["filter"],Go=["objectIds"],No=["geometries","materials","textures","images","skeletons","animations","shapes"],Wo=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Fo(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(Object.hasOwn(e,n)!==Object.hasOwn(t,n)||Object.hasOwn(e,n)&&!Fo(e[n],t[n]))return!1;return!0}const n=e=>!!e&&"object"==typeof e&&[Object.prototype,null].includes(Object.getPrototypeOf(e));if(!n(e)||!n(t))return!1;const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(n=>Object.hasOwn(t,n)&&Fo(e[n],t[n]))}function qo(e,t){const n=e.scenes.findIndex(e=>e.id===t),r=e.scenes[n];if(!r)throw Error("对象所属场景已不存在");const i=/* @__PURE__ */new Map,o=(e,t)=>{var n;if(!e||"string"!=typeof e.uuid||!e.uuid||i.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw Error("对象身份或层级无效");i.set(e.uuid,{node:e,parent:t});for(const r of null!==(n=e.children)&&void 0!==n?n:[])o(r,e.uuid)};return o(r.scene.object),{index:n,scene:r,nodes:i}}function Vo(e,t){var n;const r=new Set(t);for(const i of r)if(!(null===(n=e.get(i))||void 0===n?void 0:n.parent))throw Error("编辑对象已不存在或是场景根节点");return[...e.keys()].filter(t=>{var n,i;if(!r.has(t))return!1;for(let o=null===(n=e.get(t))||void 0===n?void 0:n.parent;o;o=null===(i=e.get(o))||void 0===i?void 0:i.parent)if(r.has(o))return!1;return!0})}function Ho(e,t,n){const r=e.scenes[t];if(n===r.scene)return e;const i=e.scenes.slice();return i[t]=Pe(Pe({},r),{},{scene:n}),Pe(Pe({},e),{},{scenes:i})}function Ko(e,t){if(!Array.isArray(e)||16!==e.length||!e.every(Number.isFinite)||void 0!==t&&"boolean"!=typeof t)throw Error("对象变换矩阵无效")}function Xo(e,t=!1){return k(e,{copyPool:t,invalidReferenceMessage:"对象选项池引用无效",cyclicValueMessage:"对象选项存在循环引用"})}function Yo(e,t){var n;const{children:r,shadow:i,userData:o}=e,s=Ge(e,$o),a=Pe({},o),c=(null==o?void 0:o._baseObjectUserData)&&Pe({},o._baseObjectUserData);for(const d of[a,c])if(d)for(const e of Wo)delete d[e];c&&(a._baseObjectUserData=c);const l=structuredClone(Pe(Pe(Pe({},s),o?{userData:a}:{}),i?{shadow:Pe(Pe({},i),{},{camera:void 0})}:{}));return(null==i?void 0:i.camera)?l.shadow.camera=Yo(i.camera,t):l.shadow&&delete l.shadow.camera,(null===(n=l.userData)||void 0===n?void 0:n._baseObjectOptions)&&(l.userData._baseObjectOptions=t(l.userData._baseObjectOptions)),r&&(l.children=r.map(e=>Yo(e,t))),l}function Jo(e,t){var n,r;t(e);for(const i of null!==(n=e.children)&&void 0!==n?n:[])Jo(i,t);(null===(r=e.shadow)||void 0===r?void 0:r.camera)&&Jo(e.shadow.camera,t)}function Zo(e,t,n){var r,i,o;const s=new Map((null!==(r=e.skeletons)&&void 0!==r?r:[]).map(e=>[e.uuid,e])),a=new Map((null!==(i=e.animations)&&void 0!==i?i:[]).map(e=>[e.uuid,e])),c={skeletons:/* @__PURE__ */new Set,animations:/* @__PURE__ */new Set};Jo(t,e=>{var t,r;if(void 0!==e.skeleton){const t=s.get(e.skeleton);if(!t||!Array.isArray(t.bones)||t.bones.some(e=>!n.has(e)))throw Error("复制子树包含缺失或外部骨骼绑定,请复制完整模型");c.skeletons.add(e.skeleton)}for(const n of null!==(t=e.animations)&&void 0!==t?t:[]){if(!a.has(n))throw Error("复制子树缺少动画资源");c.animations.add(n)}if("string"==typeof e.target&&!n.has(e.target))throw Error("复制子树包含外部灯光目标,请复制完整对象组");for(const i of null!==(r=e.levels)&&void 0!==r?r:[])if("string"==typeof i.object&&!n.has(i.object))throw Error("复制子树包含外部 LOD 对象,请复制完整对象组")});const l={skeletons:[...c.skeletons].map(e=>structuredClone(s.get(e))),animations:[...c.animations].map(e=>structuredClone(a.get(e)))},d=/* @__PURE__ */new Set;Jo(e.object,e=>d.add(e.uuid));const u=[...l.animations];Jo(t,e=>{var t;const n=null===(t=e.userData)||void 0===t||null===(t=t._baseObjectOptions)||void 0===t?void 0:t.serializedClips;Array.isArray(n)&&u.push(...n)});for(const p of u)for(const e of null!==(o=p.tracks)&&void 0!==o?o:[]){const t="string"==typeof e.name?e.name.indexOf("."):-1,r=t>0?e.name.slice(0,t):void 0;if(d.has(r)&&!n.has(r))throw Error("复制子树包含外部动画目标,请复制完整模型")}return l}function Qo(e,t){const n=/* @__PURE__ */new Map;Jo(e,e=>n.set(e.uuid,pe.generateUUID()));for(const o of[...t.skeletons,...t.animations])n.set(o.uuid,pe.generateUUID());const r=/* @__PURE__ */new Set(["uuid","geometry","material","skeleton","bones","animations","target","object","copySource"]),i=Pe({object:e},t);s(i,n,{referenceKeys:r,remapUniforms:!1,remapUserData(e,t){var r,i;(null==e||null===(r=e._baseObjectUserData)||void 0===r?void 0:r.copySource)&&(e._baseObjectUserData.copySource=null!==(i=n.get(e._baseObjectUserData.copySource))&&void 0!==i?i:e._baseObjectUserData.copySource),(null==e?void 0:e._baseObjectOptions)&&(e._baseObjectOptions=t(e._baseObjectOptions))}}),A(i,n)}function es(e,t,n){const{scene:r,nodes:i}=qo(e,t),o=Vo(i,n.map(e=>e.uuid));if(!o.length)return{document:e,uuids:[]};const s=new Map(n.map(e=>[e.uuid,e]));let a=e;const c=[];for(const l of o){const e=s.get(l);if(!i.has(e.parentUuid))throw Error("复制目标父级已不存在");const n=Yo(i.get(l).node,Xo(r.scene._sharedOptionsPool,!0)),o=/* @__PURE__ */new Set;Jo(n,e=>o.add(e.uuid));const d=Zo(r.scene,n,o);if(Qo(n,d),void 0!==e.matrix)Ko(e.matrix,e.matrixAutoUpdate),n.matrix=[...e.matrix];else if(void 0!==e.matrixAutoUpdate&&"boolean"!=typeof e.matrixAutoUpdate)throw Error("对象变换矩阵无效");!1===e.matrixAutoUpdate?n.matrixAutoUpdate=!1:!0===e.matrixAutoUpdate&&delete n.matrixAutoUpdate,a=is(a,t,Pe({object:n},d),e.parentUuid),c.push(n.uuid)}return{document:a,uuids:c}}function ts(e,t,n){var r;const{scene:i,nodes:o}=qo(e,t),s=Vo(o,n);if(!s.length)return e;const a=/* @__PURE__ */new Set,c=/* @__PURE__ */new Set;for(const u of s)c.add(o.get(u).parent),Jo(o.get(u).node,e=>a.add(e.uuid));const l={parents:[...c].map(e=>{var t;return{uuid:e,children:(null!==(t=o.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!a.has(e.uuid)).map(e=>e.uuid)}})},d=null===(r=i.interactions)||void 0===r?void 0:r.flatMap(e=>{var t,n;if(a.has(e.objectId))return[];const r=e.filter,i=null==r||null===(t=r.objectIds)||void 0===t?void 0:t.filter(e=>!a.has(e));if(!(null==r?void 0:r.objectIds)||i.length===r.objectIds.length)return[e];if(!i.length&&!(null===(n=r.baseObjectTypes)||void 0===n?void 0:n.length)){if("include"===r.mode)return[];const{filter:t}=e;return[Ge(e,zo)]}const{objectIds:o}=r,s=Ge(r,Go);return[Pe(Pe({},e),{},{filter:Pe(Pe({},s),i.length?{objectIds:i}:{})})]});return Fo(d,i.interactions)||(l.interactions=(null==d?void 0:d.length)?{set:d}:{unset:!0}),mo(e,t,l)}function ns(e,t,n,r={}){var i,o;const{nodes:s}=qo(e,t),a=Vo(s,n);if(!a.length)throw Error("请先选择要分组的对象");const c=s.get(a[0]).parent;if(a.some(e=>s.get(e).parent!==c))throw Error("请先选择同一父级下的对象再分组");const l=new Set(a),d=null!==(i=s.get(c).node.children)&&void 0!==i?i:[],u=pe.generateUUID(),p=[];for(const f of d)l.has(f.uuid)?p.includes(u)||p.push(u):p.push(f.uuid);const h={uuid:u,type:"Group",name:null!==(o=r.name)&&void 0!==o?o:"Group",matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],userData:Pe({_baseObjectIdentityVersion:1,_baseObjectObjectType:"Group",_baseObjectKeyType:""},r.userData?{_baseObjectUserData:r.userData}:{})};return{document:mo(e,t,{parents:[{uuid:c,children:p},{uuid:u,children:a}],additions:[h]}),uuid:u}}function rs(e,t,n,r,i,o){var s;const{index:a,scene:c,nodes:l}=qo(e,t),d=Vo(l,n),u=l.get(r);if(!d.length)return e;if(!u)throw Error("目标父级已不存在");const p=new Set(d);for(let m=u;m;m=m.parent?l.get(m.parent):void 0)if(p.has(m.node.uuid))throw Error("不能移入自身或子对象");const h=/* @__PURE__ */new Set([...(null!==(s=u.node.children)&&void 0!==s?s:[]).filter(e=>!p.has(e.uuid)).map(e=>e.uuid),...d]);if(new Set(i).size!==i.length||i.length!==h.size||i.some(e=>!h.has(e)))throw Error("目标成员顺序无效");const f=new Set(d.map(e=>l.get(e).parent));f.delete(r);const v=/* @__PURE__ */new Map;for(const m of d){const e=o.get(m);if(!e)continue;Ko(e.matrix,e.matrixAutoUpdate);const t=l.get(m).node,n={},r=[];Fo(t.matrix,e.matrix)||(n.matrix=e.matrix),!1===e.matrixAutoUpdate&&!1!==t.matrixAutoUpdate?n.matrixAutoUpdate=!1:!0===e.matrixAutoUpdate&&Object.hasOwn(t,"matrixAutoUpdate")&&r.push("matrixAutoUpdate"),(Object.keys(n).length||r.length)&&v.set(m,Pe({state:n},r.length?{unset:r}:{}))}return mo(v.size?Ho(e,a,Pe(Pe({},c.scene),{},{object:qi(c.scene.object,v)})):e,t,{parents:[...[...f].map(e=>{var t;return{uuid:e,children:(null!==(t=l.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!p.has(e.uuid)).map(e=>e.uuid)}}),{uuid:r,children:[...i]}]})}function is(e,t,n,r,i=[]){var o,s,a;const{index:c,scene:l,nodes:d}=qo(e,t),u=d.get(r);if(!u)throw Error("新增对象父级已不存在");if(!(null==n||null===(o=n.object)||void 0===o?void 0:o.uuid)||d.has(n.object.uuid))throw Error("新增对象身份无效或重复");Qe({scene:n});const p=Pe({},n);delete p._sharedOptionsPool;const h=Xo(n._sharedOptionsPool),f=e=>{var t,n;let r=e;const i=null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions;if(i){const t=h(i);t!==i&&(r=Pe(Pe({},e),{},{userData:Pe(Pe({},e.userData),{},{_baseObjectOptions:t})}))}if(e.children){const t=e.children.map(f);t.some((t,n)=>t!==e.children[n])&&(r=Pe(Pe({},r),{},{children:t}))}if(null===(n=e.shadow)||void 0===n?void 0:n.camera){const t=f(e.shadow.camera);t!==e.shadow.camera&&(r=Pe(Pe({},r),{},{shadow:Pe(Pe({},e.shadow),{},{camera:t})}))}return r},v=Pe(Pe({},p),{},{object:f(p.object)}),m={parents:[{uuid:r,children:[...(null!==(s=u.node.children)&&void 0!==s?s:[]).map(e=>e.uuid),v.object.uuid]}],additions:[v.object]};let g=e;for(const A of No){var y,b,w;const e=null!==(y=l.scene[A])&&void 0!==y?y:[],t=new Map(e.map(e=>[e.uuid,e])),n=[];if(void 0!==v[A]&&!Array.isArray(v[A]))throw Error(`新增对象 ${A} 资源表无效`);for(const r of null!==(b=v[A])&&void 0!==b?b:[]){if(!r||"string"!=typeof r.uuid||!r.uuid)throw Error(`新增对象 ${A} 资源身份无效`);const e=r,i=t.get(e.uuid);if(i){if(!Fo(i,e))throw Error(`新增对象 ${A} 资源定义冲突:${e.uuid}`)}else n.push(e),t.set(e.uuid,e)}n.length&&("shapes"===A?g=Ho(g,c,Pe(Pe({},g.scenes[c].scene),{},{shapes:[...e,...n.map(e=>structuredClone(e))]})):(null!==(w=m.resources)&&void 0!==w?w:m.resources={})[A]={upsert:n})}const j=new Map((null!==(a=e.materialLibrary)&&void 0!==a?a:[]).map(e=>[e.id,e])),S=[];for(const A of i){const e=j.get(A.id);if(e){if(!Fo(e,A))throw Error(`新增对象材质资产定义冲突:${A.id}`)}else j.set(A.id,A),S.push(A)}return S.length&&(m.assets={upsert:S}),mo(g,t,m)}function os(e=[],t){if(!t.length)return e;const n=new Map(e.map(e=>[e.id,e])),r=[];for(const i of t){const e=n.get(i.id);if(e&&!oe(e,i))throw Error(`资产 ${i.id} 已存在且内容不同`);e||(n.set(i.id,i),r.push(i))}return r.length?[...e,...r]:e}function ss(e,t,n=[],r=[]){const i=new Set(e.scenes.map(e=>e.id));for(const o of t){if(!o.id||i.has(o.id))throw Error(`场景 ${o.id} 已存在或无效`);i.add(o.id)}return t.length?Pe(Pe({},e),{},{scenes:[...e.scenes,...t],materialLibrary:os(e.materialLibrary,n),prefabLibrary:os(e.prefabLibrary,r)}):e}function as(e,t){var n;if(!e.scenes.some(e=>e.id===t))return e;if(e.scenes.length<=1)throw Error("至少需要保留一个场景");const r=e.scenes.filter(e=>e.id!==t).map(e=>{var n,r;const i=null===(n=e.interactions)||void 0===n?void 0:n.filter(e=>!["switchScene","switchMapRegion"].includes(e.action.type)||!("sceneId"in e.action)||e.action.sceneId!==t);return(null==i?void 0:i.length)===(null===(r=e.interactions)||void 0===r?void 0:r.length)?e:Pe(Pe({},e),{},{interactions:(null==i?void 0:i.length)?i:void 0})});return Pe(Pe({},e),{},{scenes:r,entrySceneId:e.entrySceneId===t?r[0].id:e.entrySceneId,materialLibrary:null===(n=e.materialLibrary)||void 0===n?void 0:n.filter(e=>"scene"!==e.scope.kind||e.scope.sceneId!==t)})}function cs(e,t,n,r){var i,o,s;const a=e.scenes.find(e=>e.id===t);if(!a)throw Error(`场景 ${t} 不存在`);if(!n||e.scenes.some(e=>e.id===n))throw Error(`场景 ${n} 已存在或无效`);const c=new Set((null!==(i=e.materialLibrary)&&void 0!==i?i:[]).map(e=>e.id)),l=/* @__PURE__ */new Map;for(const f of null!==(o=e.materialLibrary)&&void 0!==o?o:[])if("scene"===f.scope.kind&&f.scope.sceneId===t){const e=`${f.id}:copy:${encodeURIComponent(n)}`;let t=e,r=1;for(;c.has(t);)t=`${e}~${r++}`;c.add(t),l.set(f.id,Pe(Pe({},f),{},{id:t,scope:{kind:"scene",sceneId:n}}))}const d=null===(s=a.scene.materials)||void 0===s?void 0:s.map(e=>{var t;const n=l.get(null===(t=e.userData)||void 0===t?void 0:t[st]);return n?Pe(Pe({},e),{},{userData:Pe(Pe({},e.userData),{},{[st]:n.id,[ht]:n.revision})}):e}),u=Pe(Pe(Pe(Pe({},a),{},{id:n,name:(null==r?void 0:r.trim())||`${a.name} 副本`},a.interactions?{interactions:a.interactions.map(e=>"sceneId"in e.action&&e.action.sceneId===t?Pe(Pe({},e),{},{action:Pe(Pe({},e.action),{},{sceneId:n})}):e)}:{}),a.materialAliases?{materialAliases:Object.fromEntries(Object.entries(a.materialAliases).map(([e,t])=>[e,l.has(t.assetId)?Pe(Pe({},t),{},{assetId:l.get(t.assetId).id}):t]))}:{}),{},{scene:l.size?Pe(Pe({},a.scene),d?{materials:d}:{}):a.scene}),p=[...l.values()],h=ss(e,[u],p);return{document:p.length?Cn(h,p,/* @__PURE__ */new Set([n])):h,id:n}}function ls(e,t){var n;const r=new Set((null!==(n=e.materialLibrary)&&void 0!==n?n:[]).map(e=>e.id));return Zn(t,e=>{let t=e.id,n=1;for(;r.has(t);)t=`${e.id}~${n++}`;return r.add(t),t}).document}function ds(e,t,n,r){return us(e,t,n,r,!0)}function us(e,t,n,r,i){var o,s;const a=e.scenes.findIndex(e=>e.id===t),c=e.scenes[a];if(!c)throw Error("目标场景已不存在");const l=null===(o=Wi(c.scene.object,n))||void 0===o?void 0:o.node;if(!l||l===c.scene.object)throw Error("几何体编辑目标已不存在");const{graph:d,geometry:u}=C(c.scene,r),{geometries:p,shapes:h}=d;if(l.geometry===u&&(!i||!0===(null===(s=l.userData)||void 0===s?void 0:s._baseObjectGeometryOverride))&&p===c.scene.geometries&&h===c.scene.shapes)return e;const f=qi(c.scene.object,/* @__PURE__ */new Map([[n,{state:Pe({geometry:u},i?{userData:Pe(Pe({},l.userData),{},{_baseObjectGeometryOverride:!0})}:{})}]])),v=Pe(Pe(Pe({},c.scene),{},{object:f},p?{geometries:p}:{}),h?{shapes:h}:{});return Pe(Pe({},e),{},{scenes:e.scenes.map((e,t)=>t===a?Pe(Pe({},c),{},{scene:v}):e)})}function ps(e,t,n){var r,i,o,s,a;if(!t||!("geometry"in t)||null!==t.geometry&&!(null===(r=t.geometry)||void 0===r?void 0:r.isBufferGeometry))return;const c=!0===(null===(i=e.userData)||void 0===i?void 0:i._baseObjectNeedsCreate);if(!c&&e.geometry===(null!==(o=null===(s=t.geometry)||void 0===s?void 0:s.uuid)&&void 0!==o?o:null))return;const l=t.geometry?n.capture(t.geometry):null,d={};return e.geometry!==l&&(d.geometry=l),c&&!0!==(null===(a=e.userData)||void 0===a?void 0:a._baseObjectGeometryOverride)&&(d.userData=Pe(Pe({},e.userData),{},{_baseObjectGeometryOverride:!0})),Object.keys(d).length?d:void 0}function hs(e,t){const n=p(e),r=e=>{var i,o;const s=ps(e,e.uuid===t.uuid?t.object3d:null===(i=t.lead.objects.get(e.uuid))||void 0===i?void 0:i.object3d,n);s&&Object.assign(e,s);for(const t of null!==(o=e.children)&&void 0!==o?o:[])r(t)};r(e.object),n.changed()&&Object.assign(e,n.graph())}function fs(e,t,n,r){const i=e.scenes.findIndex(e=>e.id===t),o=e.scenes[i];if(!o)throw Error("复制目标场景已不存在");const s=p(o.scene),a=/* @__PURE__ */new Map,c=(e,t)=>{var n,i,o,l,d,u;if(!e||!t||(null!==(n=null===(i=e.children)||void 0===i?void 0:i.length)&&void 0!==n?n:0)!==(null!==(o=null===(l=t.children)||void 0===l?void 0:l.length)&&void 0!==o?o:0))throw Error("复制对象层级与源对象不一致");const p=ps(t,null===(d=r.objects.get(e.uuid))||void 0===d?void 0:d.object3d,s);p&&a.set(t.uuid,{state:p}),(null!==(u=e.children)&&void 0!==u?u:[]).forEach((e,n)=>c(e,t.children[n]))};for(const{sourceUuid:p,copyUuid:h}of n){var l,d;if(p===h)throw Error("复制对象身份与源对象重复");c(null===(l=Wi(o.scene.object,p))||void 0===l?void 0:l.node,null===(d=Wi(o.scene.object,h))||void 0===d?void 0:d.node)}if(!a.size&&!s.changed())return e;const u=s.graph();return a.size&&(u.object=qi(o.scene.object,a)),Pe(Pe({},e),{},{scenes:e.scenes.map((e,t)=>t===i?Pe(Pe({},o),{},{scene:u}):e)})}function vs(e,t,n){const r=e.options.projection;if(e.options.conic||!(null==r?void 0:r.center)||!Number.isFinite(r.scale)||r.scale<=0)throw Error("A planar map with explicit projection is required");if(!t.crs||!n||t.crs!==n)throw Error("Coordinate CRS must match map CRS; convert explicitly first");if(!Number.isFinite(t.longitude)||!Number.isFinite(t.latitude)||Math.abs(t.longitude)>180||Math.abs(t.latitude)>=90)throw Error("Invalid longitude/latitude");if(e.object3d.updateWorldMatrix(!0,!0),!Number.isFinite(e.object3d.matrixWorld.determinant())||0===e.object3d.matrixWorld.determinant())throw Error("Map transform is singular");const i=F(r),o=i([t.longitude,t.latitude]);if(!o||!o.every(Number.isFinite))throw Error("Location cannot be projected");const s=new y(o[0],-o[1],0),a=1e-5,c=6371008.8,l=i([t.longitude+(t.longitude+a>180?-1e-5:a),t.latitude]),d=i([t.longitude,t.latitude+(t.latitude+a>=90?-1e-5:a)]);if(!l||!d)throw Error("Cannot measure projection scale");const u=a*Math.PI/180,p=Math.hypot(l[0]-o[0],l[1]-o[1])/(c*u*Math.cos(t.latitude*Math.PI/180)),h=Math.hypot(d[0]-o[0],d[1]-o[1])/(c*u);if(![p,h].every(e=>Number.isFinite(e)&&e>0))throw Error("Cannot measure projection scale");return{local:s,world:s.clone().applyMatrix4(e.object3d.matrixWorld),xUnitsPerMeter:p,yUnitsPerMeter:h,scaleBasis:"local spherical approximation"}}function ms(e,t,n,r){var i;const s=vs(t,n,r.mapCRS),a=me(e);if(!a.valid)throw Error(`Invalid model: ${a.issues.join("; ")}`);const c=null!==(i=r.clearance)&&void 0!==i?i:0;if(!Number.isFinite(c)||c<0)throw Error("Invalid clearance");const l=t.object3d.matrixWorld.clone().invert(),d=e.clone(!0);d.matrix.copy(e.matrix),d.matrixAutoUpdate=!1,d.matrixWorldNeedsUpdate=!0,d.updateWorldMatrix(!1,!0);let u=(new ge).setFromObject(d,!0);if(void 0!==r.heightMeters){if(!Number.isFinite(r.heightMeters)||r.heightMeters<=0||u.max.z<=u.min.z)throw Error("Positive physical/model height required");if(Math.abs(s.xUnitsPerMeter/s.yUnitsPerMeter-1)>.01)throw Error("Projection is not locally isotropic; supply an explicitly scaled model");const e=r.heightMeters*s.yUnitsPerMeter/(u.max.z-u.min.z);d.matrix.premultiply((new Y).makeScale(e,e,e)),d.matrixWorldNeedsUpdate=!0,d.updateWorldMatrix(!1,!0),u=(new ge).setFromObject(d,!0)}const p=u.getCenter(new y),h=new y(s.local.x-p.x,s.local.y-p.y,0);d.matrix.premultiply((new Y).makeTranslation(h)),d.matrixWorldNeedsUpdate=!0;const f=[];for(const o of r.surfaces)o.updateWorldMatrix(!0,!0),o.traverse(t=>{let n=!0;for(let e=t;e;e=e.parent)e.visible||(n=!1);t.isMesh&&n&&t!==e&&!e.getObjectByProperty("uuid",t.uuid)&&f.push(t)});if(!f.length)throw Error("No eligible ground meshes");const v=new ge;for(const o of f){const e=o.clone(!1);e.matrix.copy(l).multiply(o.matrixWorld),e.matrixAutoUpdate=!1,e.matrixWorldNeedsUpdate=!0,v.union((new ge).setFromObject(e))}const m=v.max.z+Math.max(1,v.max.z-v.min.z),g=new y(s.local.x,s.local.y,m).applyMatrix4(t.object3d.matrixWorld),b=new y(0,0,-1).transformDirection(t.object3d.matrixWorld),w=new o(g,b).intersectObjects([...new Set(f)],!1).find(e=>{if(!e.face)return!1;const t=e.object.material,n=Array.isArray(t)?t[e.face.materialIndex]:t;return(null==n?void 0:n.visible)&&e.face.normal.clone().applyNormalMatrix((new se).getNormalMatrix(e.object.matrixWorld)).dot(b)<-1e-6});if(!w)throw Error("No ground hit at target; placement aborted");const j=w.point.clone().applyMatrix4(l);d.matrix.premultiply((new Y).makeTranslation(0,0,j.z+c-u.min.z)),d.matrixWorldNeedsUpdate=!0;const S=t.object3d.matrixWorld.clone().multiply(d.matrix),A=S.clone();if(e.parent){if(e.parent.updateWorldMatrix(!0,!1),!Number.isFinite(e.parent.matrixWorld.determinant())||0===e.parent.matrixWorld.determinant())throw Error("Model parent transform is singular");A.premultiply(e.parent.matrixWorld.clone().invert())}return{localMatrix:A,worldMatrix:S,groundPoint:w.point.toArray(),groundObjectUuid:w.object.uuid,mapPosition:[s.local.x,s.local.y,j.z+c],scaleBasis:s.scaleBasis,xUnitsPerMeter:s.xUnitsPerMeter,yUnitsPerMeter:s.yUnitsPerMeter}}var gs=Tt;export{st as MATERIAL_ASSET_ID,ht as MATERIAL_ASSET_REVISION,wt as MATERIAL_RUNTIME_PROPERTIES,Je as RESOURCE_SOURCE,Ye as SCENE_DOCUMENT_FORMAT,Ve as SCENE_DOCUMENT_SCHEMA_VERSION,Ke as SCENE_MANIFEST_FORMAT,qe as SCENE_MANIFEST_SCHEMA_VERSION,Co as SceneManager,de as THREE,U as TWEEN,gs as VERSION,oi as adcodeAll,yr as animationUtils,is as appendObjectDocument,ss as appendScenesDocument,it as assertProjectMaterials,bt as assertRuntimeSceneDocument,vt as assertSceneManifest,Fe as assertSupportedSceneDocument,nr as bindMaterialAsset,Un as bindMaterialSlots,Ze as cloneSceneDocument,ar as cloneSceneMaterials,dr as cloneSceneWithIds,jo as collectSceneResourceReuse,Uo as collectStructureResources,fs as copyNativeGeometries,hs as copySnapshotGeometries,tr as createMaterialAsset,Rn as createMaterialAssetDocument,ct as createMaterialDefinitionExtractor,bn as createRuntimeSceneDocument,pn as createRuntimeSceneGraph,wo as createSceneResourceReuseSession,To as createStructureResourceCollector,$n as duplicateMaterialAssetDocument,sr as duplicateMaterialForObject,es as duplicateObjectsDocument,cs as duplicateSceneDocument,Zr as editorEarthObjects,Er as editorObjects,Bo as expandStructureSnapshot,ft as extractMaterialDefinition,_o as extractObjectResourceGraph,si as findAdcodeInfo,Ft as getMaterialDependencies,Wt as getMaterialUsages,qt as getPrefabMaterialDependencies,Sn as getSceneDocument,ns as groupObjectsDocument,Wi as indexedSceneObject,Fi as inheritSceneObjectIndex,Gi as invalidateSceneObjectIndex,Ji as isLocalSceneObjectField,vr as isObjectStateUpdateInProgress,no as isSceneCameraField,He as isSceneDocument,Xe as isSceneManifest,Yi as isSceneObjectPropertyField,ir as makeMaterialSceneLocal,Nn as materialDocumentOperations,lt as materializeAssetDefinition,Cn as materializeChangedAssets,un as materializeOwnedProjectMaterials,rn as materializeOwnedSceneMaterials,dn as materializeProjectMaterials,an as materializeSceneMaterialDefinitions,nn as materializeSceneMaterials,on as materializeSceneMaterialsBatch,rt as mergeAuthoredMaterialDefinition,er as mergeProjectMaterials,rs as moveObjectsDocument,On as normalizeMaterialDefinition,tn as normalizeOwnedProjectMaterials,en as normalizeProjectMaterials,qi as patchIndexedSceneObjects,eo as patchSceneObjectPropertiesDocument,mo as patchSceneStructureDocument,yo as patchSceneStructureTransactionDocument,ro as patchSceneViewportDocument,ms as planPlacement,us as prepareGeometryBinding,ds as prepareGeometryEdit,vs as projectLocation,zn as promoteMaterialAssetDocument,or as promoteMaterialToProject,Bn as registerSceneMaterials,ls as remapImportedMaterials,Lo as remapOwnedSnapshotIdentity,Zn as remapProjectMaterialIds,lr as remapSceneDocumentIds,Hn as remapSceneMaterialReferencesCopy,Vn as remapSceneObjectReferencesCopy,A as remapSnapshotAnimationTracks,Ro as remapSnapshotIdentity,Gn as removeMaterialAssetDocument,ts as removeObjectsDocument,Jn as removeProjectMaterial,as as removeSceneDocument,kn as replaceMaterialAssetDocument,St as resourceInstanceUuid,Mt as restoreRuntimeImageFiles,Vt as sceneMaterialLibrary,Ni as sceneObjectIndex,Zi as sceneObjectPropertyDefaults,io as scenePropertyFields,An as selectSceneDocument,wn as splitSceneDocument,jt as stripMaterialAssetBinding,Yn as updateProjectMaterial,Fn as visitSceneIdentityReferences};
|