vis-core 0.33.17 → 0.33.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-NMqb_1LM.js";import{_ as t,a as n,g as r,h as i,i as o,l as s,n as a,o as c,t as l,v as d,y as u}from"./e-DDhN_TXt.js";import{$ as p,$t as h,A as f,At as v,B as m,Bt as g,C as y,Ct as b,D as w,Dt as j,E as S,Et as A,F as O,Ft as x,G as I,Gt as M,H as E,Ht as P,I as D,It as C,J as R,Jt as L,K as k,Kt as B,L as T,Lt as _,M as U,Mt as z,N as G,Nt as $,O as W,Ot as N,P as F,Pt as V,Q as q,Qt as H,R as K,Rt as X,S as Y,St as J,T as Z,Tt as Q,U as ee,Ut as te,V as ne,Vt as re,W as ie,Wt as oe,X as se,Xt as ae,Y as ce,Yt as le,Z as de,Zt as ue,_ as pe,_n as he,_t as fe,a as ve,an as me,at as ge,b as ye,bt as be,c as we,cn as je,ct as Se,d as Ae,dn as Oe,dt as xe,en as Ie,et as Me,f as Ee,fn as Pe,ft as De,g as Ce,gn as Re,gt as Le,h as ke,hn as Be,ht as Te,i as _e,in as Ue,it as ze,j as Ge,jt as $e,k as We,kt as Ne,l as Fe,ln as Ve,lt as qe,m as He,mn as Ke,mt as Xe,n as Ye,nn as Je,nt as Ze,o as Qe,on as et,ot as tt,p as nt,pn as rt,pt as it,q as ot,qt as st,rn as at,rt as ct,s as lt,sn as dt,st as ut,t as pt,tn as ht,tt as ft,u as vt,un as mt,ut as gt,v as yt,vn as bt,vt as wt,w as jt,wt as St,x as At,xt as Ot,y as xt,yt as It,z as Mt,zt as Et}from"./validation-DiMfvx_5.js";import{a as Pt,i as Dt,n as Ct,o as Rt,r as Lt,s as kt,t as Bt}from"./schema-BpVVlDZn.js";import{n as Tt,t as _t}from"./runtimeImages-BnSAIZUX.js";import{EventEmitter as Ut}from"events";import zt from"geojson-cn/json-lite/all.json";import{booleanPointInPolygon as Gt,center as $t,centroid as Wt,point as Nt,polygon as Ft}from"@turf/turf";if(!Array.prototype.at){function ns(e){if((e=Math.trunc(e)||0)<0&&(e+=this.length),!(e<0||e>=this.length))return this[e]}const rs=Reflect.getPrototypeOf(Int8Array);for(const is of[Array,String,rs])Object.defineProperty(is.prototype,"at",{value:ns,writable:!0,enumerable:!1,configurable:!0})}var Vt="0.33.17";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 Ht(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 Kt=class{constructor(){u(this,"pending",Promise.resolve()),u(this,"current",void 0),u(this,"disposed",!1)}run(e,n){if(null==n?void 0:n.aborted)return Promise.reject(n.reason);if(this.disposed)return Promise.reject(new DOMException("Operation owner disposed","AbortError"));this.cancel();const r=new AbortController;this.current=r;const i=()=>r.abort(null==n?void 0:n.reason);null==n||n.addEventListener("abort",i,{once:!0});const o=this.pending.then(t(function*(){qt(r.signal);const t=yield e(r.signal);return qt(r.signal),t})).finally(()=>{null==n||n.removeEventListener("abort",i),this.current===r&&(this.current=void 0)});return this.pending=o.catch(()=>{}),Ht(o,r.signal)}cancel(){var e;null===(e=this.current)||void 0===e||e.abort()}dispose(){this.disposed=!0,this.cancel()}};function Xt(e){if(null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e;if(Array.isArray(e))return e.map(Xt).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=Xt(r);void 0!==e&&(t[n]=e)}return t}function Yt(e,t,n){return d(d({},structuredClone(e)),{},{scene:t,vis:d(d({},structuredClone(e.vis)),{},{options:d(d({},structuredClone(e.vis.options)),Xt(n.options))}),cs:structuredClone(n.cameraState),csa:n.cameraStateActive})}function Jt(e,t){var n;const r=e.scenes.find(e=>e.id===t);if(!r)throw new Error(`Scene ${t} was not found`);const i=ot("decode");let o=e._resourcePool;const s=(t,n=!1)=>{const r=St(t,i,t=>{const r=P(t,e);if(!n||!re(t)||!r||"object"!=typeof r)return r;const s=i(r);return s!==r&&(o===e._resourcePool&&(o=o.slice()),o[t._documentResource]=s),t}),s=/* @__PURE__ */new Set,a=e=>{if(Array.isArray(e))return e.map(a);if(!ArrayBuffer.isView(null==e?void 0:e.data))return e;const t=e.data.buffer;return s.has(t)?structuredClone(e):(s.add(t),e)};return r.images?d(d({},r),{},{images:r.images.map(e=>d(d({},e),{},{url:a(e.url)}))}):r},a=te(e.materialLibrary,e),c=ye(r,a,e.prefabLibrary).map(e=>d(d({},e),{},{material:s(e.material)})),l=d(d({},r),{},{scene:s(r.scene,!0)}),u=null===(n=e.prefabLibrary)||void 0===n?void 0:n.map(e=>d(d({},e),{},{snapshot:s(e.snapshot)}));return d(d(d({},e),{},{_resourcePool:o,scenes:[l]},a?{materialLibrary:c}:{}),u?{prefabLibrary:u}:{})}var Zt=(e,t="")=>/^(?:[a-z]+:)?\/\//i.test(e)?e:`${t.endsWith("/")?t.slice(0,-1):t}${e.startsWith("/")?e:`/${e}`}`;var Qt=["scene"];function en(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 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)&&en(e[n],t[n]))}var tn=["prefabLibrary"],nn=["baseUrl"],rn=["data"],on=["scene"],sn=["format","schemaVersion","scenes"];function an(e){return pt(e),T(function(e){const{prefabLibrary:t}=e,n=r(e,tn),i=null==t?void 0:t.filter(e=>void 0!==e.sdkKey),o=structuredClone(d(d({},n),(null==i?void 0:i.length)?{prefabLibrary:i}:{})),s=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)},a=o.prefabLibrary,c=e=>{var t;if(e){s(e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])c(n)}};for(const r of null!=a?a:[])c(r.snapshot.object);for(const r of o.scenes){var l,u,p,h,f;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,o,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===(o=e.userData)||void 0===o?void 0:o._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):(s(e),e.children&&(e.children=e.children.filter(n)),!0))};if(!n(r.scene.object))throw new Error("A scene root cannot be a prefab preview");for(const o of null!==(l=r.interactions)&&void 0!==l?l:[]){var v;if(e.has(o.objectId)||(null===(v=o.filter)||void 0===v||null===(v=v.objectIds)||void 0===v?void 0:v.some(t=>e.has(t))))throw new Error(`Prefab preview is still referenced by an interaction in scene ${r.id}`)}const i=null===(u=r.vis.options)||void 0===u?void 0:u.sceneBindings;if((i?[i.container,i.continentsBackground,i.sphere,i.map,i.secondaryMap,null===(p=i.region)||void 0===p?void 0:p.object,...null!==(h=i.parentBackgrounds)&&void 0!==h?h:[],...null!==(f=i.cities)&&void 0!==f?f:[]]:[]).some(t=>e.has(t)))throw new Error(`Prefab preview is still referenced by scene bindings in scene ${r.id}`)}return o}(e),{encodePixels:!0})}function cn(e,t={}){const n=t.omitEditorAssets?an(e):e;t.omitEditorAssets||pt(n);const i=Fe(n),o=t.externalizeImages?_t(i):{},a=Object.keys(o);if(i.runtimeAssets){const e=i.runtimeAssets,{baseUrl:t}=e,n=r(e,nn);i.runtimeAssets=d(d({},n),{},{entries:n.entries.map(e=>{let{data:t}=e,n=r(e,rn);if(void 0===t)throw Error(`导出资源缺少文件内容:${n.path}`);return o[n.path]={data:s(t),mimeType:n.mimeType},n})})}const c=i.schemaVersion>=5?T(i,{encodePixels:!0}):i,l=(t.sceneDirectory||"scenes").replace(/^\/+|\/+$/g,""),u=t.extension||".json.gz",p={},h=c.scenes.map((e,t)=>{const n=`${l}/${t}-${i=e.id,encodeURIComponent(i).replaceAll("%","_")}${u}`;var i;p[n]=structuredClone(e);const{scene:o}=e;return d(d({},r(e,on)),{},{source:n,bytes:(new TextEncoder).encode(JSON.stringify(e)).length})}),{format:f,schemaVersion:v,scenes:m}=c;return d({manifest:d(d(d({},r(c,sn)),a.length?{imageAssets:a}:{}),{},{format:Lt,schemaVersion:c.runtimeAssets?4:c.schemaVersion<5?1:c._resourcePool?3:2,scenes:h}),scenes:p},Object.keys(o).length||t.externalizeImages?{assets:o}:{})}function ln(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[G];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[G];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[G],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)),Me(o,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),o}var dn=["textures","images","metadata"],un=["textures","images","metadata"],pn=p;function hn(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&&!pn(e,t)?t:e});return r.push(...n.values()),e&&r.length===e.length&&r.every((t,n)=>t===e[n])?e:r}function fn(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),Me(e,(e,t)=>r(e[t])),n}function vn(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)},u=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:[])u(t)};u(a.object),l(e.vis.options,t,c),l(a.materialAliases,t,c);const p=new Set(Object.values(null!==(n=e.materialAliases)&&void 0!==n?n:{}).map(e=>e.assetId)),h=(null!==(r=a.materials)&&void 0!==r?r:[]).filter(e=>{var n;return t.has(e.uuid)&&!c.has(e.uuid)&&!p.has(null===(n=e.userData)||void 0===n?void 0:n._materialAssetId)});if(!h.length)return e;const f=new Set(h.map(e=>e.uuid)),v=a.materials.filter(e=>!f.has(e.uuid)),m=new Set((null!==(i=a.textures)&&void 0!==i?i:[]).map(e=>e.uuid)),g=new Set(h.flatMap(e=>[...fn(e,m)])),y=new Set(v.flatMap(e=>[...fn(e,m)])),b=e=>{var t,n,r;l(e.background,m,y),l(e.environment,m,y),l(null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions,m,y),l(null===(n=e.userData)||void 0===n||null===(n=n._prefabLink)||void 0===n?void 0:n.baseline,m,y);for(const i of null!==(r=e.children)&&void 0!==r?r:[])b(i)};b(a.object),l(e.vis.options,m,y);const w=/* @__PURE__ */new Set,j=null===(o=a.textures)||void 0===o?void 0:o.filter(e=>{if(!g.has(e.uuid)||y.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&w.add(t);return!1}),S=new Set((null!=j?j:[]).flatMap(e=>[e.image].flat())),A=null===(s=a.images)||void 0===s?void 0:s.filter(e=>!w.has(e.uuid)||S.has(e.uuid)),O=d(d({},a),{},{materials:v});for(const[d,I]of[["materials",v],["textures",j],["images",A]]){var x;(null==I?void 0:I.length)!==(null===(x=a[d])||void 0===x?void 0:x.length)&&((null==I?void 0:I.length)?O[d]=I:delete O[d])}return d(d({},e),{},{scene:O})}function mn(e,t,n){const i=new Map(t.map(e=>[e.id,e])),o=/* @__PURE__ */new Map,s=e.scenes.map(e=>{var s,a,c,l,u,p;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 h=e.scene,f=/* @__PURE__ */new Set,v=new Set((null!==(s=h.textures)&&void 0!==s?s:[]).map(e=>e.uuid)),m=(null!==(a=h.materials)&&void 0!==a?a:[]).map(t=>{var n;const s=i.get(null===(n=t.userData)||void 0===n?void 0:n[Y]);if(!s)return t;if("scene"===s.scope.kind&&s.scope.sceneId!==e.id)throw Error("场景不能引用其他场景的材质");for(const e of fn(t,v))f.add(e);let a=o.get(s.id);a||(a=W(s),o.set(s.id,a));const{textures:c,images:l,metadata:u}=a,p=d(d({},r(a,dn)),{},{uuid:t.uuid});return pn(t,p)?t:p});for(const[t,n]of Object.entries(null!==(c=e.materialAliases)&&void 0!==c?c:{})){const e=i.get(n.assetId);if(!e||m.some(n=>{var r;return n.uuid===t&&(null===(r=n.userData)||void 0===r?void 0:r._materialAssetId)===e.id}))continue;let s=o.get(e.id);s||(s=W(e),o.set(e.id,s));const{textures:a,images:c,metadata:l}=s,u=r(s,un);m.push(d(d({},u),{},{uuid:t}))}const g=new Set(m.map(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[Y]})),y=t.filter(e=>g.has(e.id)).map(e=>o.get(e.id));let b=hn(h.textures,y.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.textures)&&void 0!==t?t:[]})),w=hn(h.images,y.flatMap(e=>{var t;return null!==(t=null==e?void 0:e.images)&&void 0!==t?t:[]}));const j=new Set((null!==(l=b)&&void 0!==l?l:[]).map(e=>e.uuid)),S=/* @__PURE__ */new Set;for(const t of m)for(const e of fn(t,j))S.add(e);const A=e=>{var t;for(const n of["background","environment"])"string"==typeof(null==e?void 0:e[n])&&S.add(e[n]);for(const n of null!==(t=null==e?void 0:e.children)&&void 0!==t?t:[])A(n)};A(h.object);const O=/* @__PURE__ */new Set;if(b){const e=b.filter(e=>{if(!f.has(e.uuid)||S.has(e.uuid))return!0;for(const t of[e.image].flat())"string"==typeof t&&O.add(t);return!1});e.length!==b.length&&(b=e)}if(w&&O.size){var x;const e=new Set((null!==(x=b)&&void 0!==x?x:[]).flatMap(e=>[e.image].flat())),t=w.filter(t=>!O.has(t.uuid)||e.has(t.uuid));t.length!==w.length&&(w=t)}const I=d(d(d({},h),{},{materials:m},void 0!==b?{textures:b}:{}),void 0!==w?{images:w}:{});return(null===(u=h.textures)||void 0===u?void 0:u.length)&&!(null==b?void 0:b.length)&&delete I.textures,(null===(p=h.images)||void 0===p?void 0:p.length)&&!(null==w?void 0:w.length)&&delete I.images,d(d({},e),{},{scene:I})});return d(d({},e),{},{scenes:s})}function gn(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=d(d({id:t.id,name:t.name,revision:1,material:f(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 d(d({},e),{},{materialLibrary:[...null!==(i=e.materialLibrary)&&void 0!==i?i:[],o]})}function yn(e,t){var n;if(!(null===(n=e.materialLibrary)||void 0===n?void 0:n.some(e=>e.id===t.id)))throw Error("材质已不存在");return d(d({},e),{},{materialLibrary:e.materialLibrary.map(e=>e.id===t.id?t:e)})}function bn(e,t){return mn(yn(e,t),[t])}function wn(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)),u=S(a),p=[],h=/* @__PURE__ */new Map;for(const v of c){let e=0,n=F(t,"material-asset",v.uuid);for(;l.has(n);)n=F(t,"material-asset",`${v.uuid}:${++e}`);l.add(n);const r={id:n,revision:1,name:v.name||v.uuid,scope:{kind:"scene",sceneId:t},material:ln(u(v.uuid))};p.push(r),h.set(v.uuid,d(d({},v),{},{userData:d(d({},v.userData),{},{[Y]:n,[y]:1})}))}const f=e.scenes.slice();return f[s]=d(d({},a),{},{scene:d(d({},a.scene),{},{materials:a.scene.materials.map(e=>{var t;return null!==(t=h.get(e.uuid))&&void 0!==t?t:e})})}),mn(d(d({},e),{},{scenes:f,materialLibrary:[...null!==(o=e.materialLibrary)&&void 0!==o?o:[],...p]}),p,/* @__PURE__ */new Set([t]))}function jn(e,t){var n;const r=null===(n=e.children)||void 0===n?void 0:n.map(e=>jn(e,t));return t(r&&r.some((t,n)=>t!==e.children[n])?d(d({},e),{},{children:r}):e)}function Sn(e,t,n,r,i){return An(e,t,n,r,i,!1)}function An(e,t,n,r,i,o){var s,a,c,l;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 d of f)m.has(null===(c=d.userData)||void 0===c?void 0:c._materialAssetId)||m.set(null===(l=d.userData)||void 0===l?void 0:l[Y],d.uuid);const b=/* @__PURE__ */new Map;for(const d of/* @__PURE__ */new Set([...n.map(e=>e.assetId),...i?[i]:[]])){const e=h.get(d);if(!e||"scene"===e.scope.kind&&e.scope.sceneId!==t)throw Error("此材质仅属于其他场景");if(b.set(e.id,e),!m.has(e.id)){const t=F(e.id,"material",e.material.uuid);if(f.some(e=>e.uuid===t))throw Error("材质运行时标识重复");f.push({uuid:t,type:e.material.type,userData:{[Y]:e.id,[y]:e.revision}}),m.set(e.id,t)}}for(const d of n){var w;const e=null!==(w=v.get(d.uuid))&&void 0!==w?w:[];e.push(d),v.set(d.uuid,e)}const j=/* @__PURE__ */new Set,S=jn(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=d(d({},n),{},{material:Array.isArray(n.material)?n.material.map((e,n)=>n===r.slot?t:e):t}),j.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 ze(e.userData,(t,o)=>{var s;n.has(t[o])&&(null!==(s=r)&&void 0!==s||(r=d(d({},e),{},{userData:d(d({},e.userData),{},{_baseObjectOptions:i(e.userData._baseObjectOptions)})})))},t),r?(ze(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=>!j.has(e)))throw Error("目标对象已不存在");const A=e.scenes.slice();A[u]=d(d({},p),{},{scene:d(d({},p.scene),{},{object:S,materials:f})});const O=mn(d(d({},e),{},{scenes:A}),[...b.values()],/* @__PURE__ */new Set([t])),x=vn(O.scenes[u],g);return x===O.scenes[u]?O:d(d({},O),{},{scenes:O.scenes.map((e,t)=>t===u?x:e)})}function On(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=gn(e,d(d({},c),{},{id:n,name:"scene"===r?c.name:`${c.name} 副本`,scope:"scene"===r?{kind:"scene",sceneId:i}:c.scope}));const u=l.materialLibrary.find(e=>e.id===n);if("asset"===r)return l;if("object"===r){var p,h,f;const r=[],a=/* @__PURE__ */new Map;let c=!1;const d=F(n,"material",u.material.uuid),v=new Set((null!==(p=null===(h=e.scenes.find(e=>e.id===i))||void 0===h?void 0:h.scene.materials)&&void 0!==p?p:[]).filter(e=>{var n;return(null===(n=e.userData)||void 0===n?void 0:n[Y])===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,d]));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,d)}a.set(e.uuid,t)}for(const n of null!==(i=e.children)&&void 0!==i?i:[])m(n,t)}};if(m(null===(f=e.scenes.find(e=>e.id===i))||void 0===f?void 0:f.scene.object),!c||!r.length)throw Error("目标对象没有可编辑材质");return Sn(l,i,r,a,n)}return l=d(d({},l),{},{scenes:l.scenes.map(e=>{var r;return e.id!==i?e:d(d(d({},e),e.materialAliases?{materialAliases:Object.fromEntries(Object.entries(e.materialAliases).map(([e,r])=>[e,r.assetId===t?d(d({},r),{},{assetId:n}):r]))}:{}),{},{scene:d(d({},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?d(d({},e),{},{userData:d(d({},e.userData),{},{[Y]:n,[y]:u.revision})}):e})})})})}),mn(l,[u],/* @__PURE__ */new Set([i]))}function xn(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:d(d({},e),{},{materialLibrary:e.materialLibrary.map(e=>e===r?d(d({},r),{},{scope:{kind:"project"}}):e)})}function In(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(xt(e,t).length)throw Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(pe(e,t).some(e=>!e.alias))throw Error("材质仍被对象或场景配置使用,请先替换后再删除");return d(d({},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[Y])===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&&pn(a,null!==(o=e.materialAliases)&&void 0!==o?o:{}))return e;const l=d(d({},e),{},{scene:d({},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,vn(l,s)})})}var Mn=Object.freeze({materialize:mn,create:gn,replace:bn,registerSceneMaterials:wn,bindSlots:Sn,duplicate:On,promote:xn,remove:In});function En(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)En({object:s,_sharedOptionsPool:e._sharedOptionsPool},t,n)}function Pn(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 Dn(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=[];Pn(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 Cn=(e,t,n)=>Dn(e,t,n,!0),Rn=(e,t,n)=>Dn(e,t,n,!1);function Ln(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 kn(e,t,n){var r,i,o,s,a,c,l,d;if(!e||!t||t===n)return;const u=e=>e===t?n:e;for(const h 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(h))h[e]=u(h[e]);for(const h 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:[])h.material&&(h.material=u(h.material));for(const h of null!==(a=null===(c=e.scene)||void 0===c?void 0:c.materials)&&void 0!==a?a:[])h.uuid===t&&(h.uuid=n);for(const h of[e.materialAliases,null===(l=e.scene)||void 0===l?void 0:l.materialAliases])if(h){for(const e of Object.values(h))e.materialUuid&&(e.materialUuid=u(e.materialUuid));Object.hasOwn(h,t)&&(h[n]=h[t],delete h[t])}const p=t=>{var n,r,i;if(!t)return;Array.isArray(t.material)?t.material=t.material.map(u):t.material&&(t.material=u(t.material)),ze(t.userData,(e,t)=>{e[t]=u(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&&p(o);for(const e of null!==(i=t.children)&&void 0!==i?i:[])p(e)};p(null===(d=e.scene)||void 0===d?void 0:d.object)}function Bn(e,t,n){var r;const i=Z(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 Fe(yn(i,d(d(d(d({},o),{},{revision:o.revision+1},void 0!==n.name?{name:n.name}:{}),void 0!==n.material?{material:f(n.material)}:{}),void 0!==n.locked?{locked:n.locked}:{})))}function Tn(e,t){var n;if(xt(e,t).length)throw new Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(yt(e,t).length)throw new Error(`Material asset ${t} is still in use`);if(pe(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 d(d({},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[Y])!==t});return r.length===n.length?e:d(d({},e),{},{scene:d(d({},e.scene),{},{materials:r})})})})}(Z(e),t)}function _n(e,t){return Un(Z(e),t)}function Un(e,t){var n,r,i;Ce(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[Y];void 0!==t&&(e.userData[Y]=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[Y];void 0!==t&&(e.userData[Y]=null!==(f=s.get(t))&&void 0!==f?f:t)}return{document:o,idMap:s}}function zn(e,t){const n=He(e),r=He(t),i=new Set(n.materialLibrary.map(e=>e.id)),o=_n(r,e=>Ge(e.id,i));return d(d({},o),{},{materialLibrary:[...n.materialLibrary,...o.document.materialLibrary]})}function Gn(e,t){const n=He(e);if(n.materialLibrary.some(e=>e.id===t.id))throw new Error(`Material asset ${t.id} already exists`);const r=Mn.create(n,t),i=yn(r,d(d({},Z(t)),r.materialLibrary.at(-1)));return Ce(i),i}function $n(e,t){var n;const r=He(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(ke(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(U(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(U(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 An(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[Y])===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}`);kn(l,d.uuid,t.alias)}}return Fe(c)}function Wn(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[Y]=n.id,s.userData[y]=n.revision)}for(const s of Object.values(null!==(i=e.materialAliases)&&void 0!==i?i:{}))s.assetId===t&&(s.assetId=n.id)}function Nn(e,t,n,r){const i=He(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(ke(o,n),"scene"===o.scope.kind)return i;const a=Gn(i,d(d({},o),{},{id:r,scope:{kind:"scene",sceneId:n}})),c=a.materialLibrary.find(e=>e.id===r);return Wn(a.scenes.find(e=>e.id===n),t,c),Fe(a)}function Fn(e,t){const n=He(e);if(!n.materialLibrary.some(e=>e.id===t))throw new Error(`Material asset ${t} was not found`);return Mn.promote(n,t)}function Vn(e,t){var n;const r=He(e),i=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Material asset ${t.assetId} was not found`);return ke(i,t.sceneId),$n(Gn(r,d(d({},i),{},{id:t.newAssetId,name:null!==(n=t.name)&&void 0!==n?n:`${i.name} 副本`})),d(d({},t),{},{assetId:t.newAssetId}))}function qn(e,t,n){var r;const i=He(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=Z(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 u of i.materialLibrary){if("scene"!==u.scope.kind||u.scope.sceneId!==t)continue;const e=d(d({},Z(u)),{},{id:Ge(`${u.id}:copy:${encodeURIComponent(n)}`,a),scope:{kind:"scene",sceneId:n}});l.set(u.id,e.id),c.push(e),Wn(s,u.id,e)}return{scene:s,materialLibrary:c,idMap:l}}var Hn=["scenes"];function Kn(e,t,n={}){var i,o,s;pt(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=r(e,Hn),u=O(d(d({},structuredClone(l)),{},{scenes:c.map(e=>structuredClone(e))}));!1!==n.materialize&&lt(u);const p=new Set((null!==(i=u.materialLibrary)&&void 0!==i?i:[]).map(e=>e.id)),h=new Set(n.occupiedMaterialIds);Un(u,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(;p.has(t);)t=`${r}~${i++}`;p.add(t)}let n=t,r=1;for(;h.has(n);)n=`${t}~${r++}`;return h.add(n),n});for(const r of null!==(o=u.materialLibrary)&&void 0!==o?o:[])"scene"===r.scope.kind&&(r.scope.sceneId=a.get(r.scope.sceneId));const f=u.scenes.map(e=>Yn(e,a));return d(d(d({entrySceneId:a.get(e.entrySceneId),scenes:f,idMap:a},u.runtimeAssets?{runtimeAssets:d(d({},u.runtimeAssets),{},{regions:Object.fromEntries(Object.entries(null!==(s=u.runtimeAssets.regions)&&void 0!==s?s:{}).map(([e,t])=>{var n;return[null!==(n=a.get(e))&&void 0!==n?n:e,t]}))})}:{}),u.prefabLibrary?{prefabLibrary:u.prefabLibrary}:{}),u.materialLibrary?{materialLibrary:u.materialLibrary}:{})}function Xn(e,t){return Yn(structuredClone(e),t)}function Yn(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 Jn=class{constructor(){u(this,"event",new Ut),u(this,"eventHandlers",{}),u(this,"on",this.event.on.bind(this.event)),u(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 Zn(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 Qn=/* @__PURE__ */new WeakSet;function er(e){return Qn.has(e)}function tr(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&&nr(t,o,s)})}function nr(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 rr=/* @__PURE__ */e({baseObjectBounce:()=>x,baseObjectBounceIn:()=>it,baseObjectFadeIn:()=>Le,baseObjectFadeOut:()=>v,sinusoidalInOut:()=>X,timeOut:()=>It}),ir=/* @__PURE__ */e({AmbientLight:()=>sr,DirectionalLight:()=>ar,HemisphereLight:()=>dr,PointLight:()=>cr,RectAreaLight:()=>ur,SpotLight:()=>lr}),or=(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))},sr=class extends C{constructor(...e){Et(e[0])&&(e=[e[0].color]),super(...e)}},ar=class extends ${constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(Et(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&&or(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},cr=class extends q{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(Et(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&&or(n.shadow,this.pencil)}render(){super.render(),this.object3d}},lr=class extends gt{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(Et(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&&or(n.shadow,this.pencil)}render(){super.render();const e=this.object3d;e.target&&(e.target.userData.light=e)}},dr=class extends Se{},ur=class extends tt{},pr=class extends J{constructor(e){super(),u(this,"radius",100),u(this,"options",void 0),u(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 Pe(this.radius,128,90);this.object3d.geometry=t,this.object3d.rotation.y=Math.PI/180*90}},hr=d(d({Node:_,ExtrudePolygon:Q,Line:wt,Group:N},ir),{},{Point:class extends Xe{constructor(e){super(e.sprite?new Ke:new Je(new dt(1,1))),u(this,"objectType","Point"),u(this,"options",void 0),u(this,"scaleValue",1),this.options=d({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 ae(t);return e?new Be({transparent:!0,map:r}):new at({color:16777215,transparent:!0,map:r})}create(){var e=this;return t(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:m,Model:Ne,Plane:class extends J{constructor(...e){super(...e),u(this,"objectType","Plane")}create(){const e=new dt(1,1,2,2);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},PlaneShadow:class extends J{constructor(...e){super(...e),u(this,"objectType","PlaneShadow")}create(){var e=this;return t(function*(){const t=new dt(100,100,2,2),n=new Oe;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:pr,Sprite:class extends be{constructor(...e){super(...e),u(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 bt;t.matrixWorld.decompose(s,new je,new bt);const a=h.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 J{constructor(...e){super(...e),u(this,"objectType","Box")}create(){const e=new L(1,1,1,1,1,1);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Circle:class extends J{constructor(...e){super(...e),u(this,"objectType","Circle")}create(){const e=new ue(1,32,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Tube:ge,Ring:class extends J{constructor(...e){super(...e),u(this,"objectType","Ring")}create(){const e=new mt(.5,1,32,1,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}}}),fr=["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"],vr=["intel","apple","amd","radeon","nvidia","geforce","adreno"],mr={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"]},gr=class{constructor(e){u(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=mr[t],r=this.getGPUVersion();return n.includes(r)?{tier:0,renderer:e}:this.queryFallback()}getGpuType(){const e=this.renderer;for(const t of vr)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=fr.find(t=>e.includes(t));return t?{tier:0,gpu:t}:{tier:3,gpu:e}}};var yr=Object.freeze({tier:0}),br=/* @__PURE__ */new WeakMap,wr=/* @__PURE__ */new WeakSet,jr=/* @__PURE__ */new WeakSet;var Sr=class extends Jn{constructor(...e){super(...e),u(this,"container",void 0),u(this,"pencil",void 0),u(this,"cameraState",{}),u(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,n=!1,r=250){var i=this;return t(function*(){const t=i.cameraState[e];return!(!Array.isArray(t)||6!==t.length||!t.every(Number.isFinite))&&(yield i.lookAt(t[0],t[1],t[2],t[3],t[4],t[5],n,r),i.cameraStateActive=e,!0)})()}lookAt(e,n,r,i,o,s,a=!1,c=250){var l=this;return t(function*(){l.pencil.controls.smoothTime=c/1e3,yield l.pencil.controls.setLookAt(e,n,r,i,o,s,a),l.pencil.controls.smoothTime=.25})()}truck(e,n,r=!1,i=250){var o=this;return t(function*(){o.pencil.controls.smoothTime=i/1e3,o.pencil.controls.restThreshold=0,yield o.pencil.controls.truck(e,n,r),o.pencil.controls.restThreshold=.0025,o.pencil.controls.smoothTime=.25})()}moveTo(e,n,r,i=!1,o=250){var s=this;return t(function*(){s.pencil.controls.smoothTime=o/1e3,yield s.pencil.controls.moveTo(e,n,r,i),s.pencil.controls.smoothTime=.25})()}dollyTo(e,n=!1,r=250){var i=this;return t(function*(){let t=e;if("string"==typeof t){const[e,n]=t.split("=");"+"===e?t=i.pencil.controls.distance+ +n:"-"===e?t=i.pencil.controls.distance-+n:"*"===e?t=i.pencil.controls.distance*+n:"/"===e?t=i.pencil.controls.distance/+n:console.error("dollyTo distance error")}i.pencil.controls.smoothTime=r/1e3,yield i.pencil.controls.dollyTo(t,n),i.pencil.controls.smoothTime=.25})()}absoluteAngle(e,t){const n=2*Math.PI,r=e-t;return h.euclideanModulo(r+Math.PI,n)-Math.PI}lookAtTarget(e,n=!1,r=250){var i=this;return t(function*(){i.pencil.controls.smoothTime=r/1e3;const t=i.pencil.controls.azimuthAngle,o=i.pencil.controls.polarAngle,s=i.pencil.controls.distance,a=i.pencil.cameraTarget.clone(),c=e.azimuthAngle||t,l=e.polarAngle||o,d=e.distance||s,u=e.target||a;yield Promise.all([i.pencil.controls.moveTo(u.x,u.y,u.z,n),i.pencil.controls.dollyTo(d,n),i.pencil.controls.rotateTo(t+i.absoluteAngle(c,t),o+i.absoluteAngle(l,o),n)]),i.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*h.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:f}=e.getSize(),v=f.x,m=f.y,g=f.z;let y=d.getDistanceToFitBox(v,m,g),b=0,w=0,j=0,S=0;for(let h=0;h<10;h++){const e=y-.5*g,o=2*Math.tan(.5*u)*Math.abs(e)/p;b=t*o,w=r*o,j=i*o,S=n*o,y=d.getDistanceToFitBox(v+j+S,m+b+w,g)}return d.fitToBox(e.object3d,o,{paddingLeft:j,paddingRight:S,paddingBottom:w,paddingTop:b})}resetCamera(e=!1,n=250){var r=this;return t(function*(){r.pencil.controls.smoothTime=n/1e3,yield r.pencil.controls.reset(e),r.pencil.controls.smoothTime=.25})()}unproject(e,t=0){const n=new bt,r=new bt,{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 Ar(e=[]){return structuredClone(e.filter(e=>!!e.sdkKey))}function Or(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 xr=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Ir(e,t=[],n=!0){var r,i,o;const s=Qe(we({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`);k(s);const a=/* @__PURE__ */new Map,c=e=>(a.has(e)||a.set(e,h.generateUUID()),a.get(e)),l=[],d=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 xr)delete n[e];delete n.copySource}}(e),l.push(e),e.uuid&&c(e.uuid);for(const n of null!==(t=e.children)&&void 0!==t?t:[])d(n);(null===(n=e.shadow)||void 0===n?void 0:n.camera)&&d(e.shadow.camera)}};d(s.object);for(const h of["geometries","materials","textures","images","shapes","skeletons","animations"])for(const e of null!==(r=s[h])&&void 0!==r?r:[])if(!e.uuid||"PMREM_PLACEHOLDER"===e.uuid||!n&&["materials","textures","images"].includes(h)||c(e.uuid),n&&e.userData)for(const t of["_resourceSource","_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete e.userData[t];const u=/* @__PURE__ */new Set(["uuid","image","material","geometry","skeleton","bones","animations","shapes","map","matcap","background","environment","target","materialUuid"]),p=(e,t="")=>{var n,r;if("string"==typeof e)return(u.has(t)||t.endsWith("Map"))&&null!==(n=a.get(e))&&void 0!==n?n:e;if(Array.isArray(e))return e.map(e=>p(e,t));if(!e||"object"!=typeof e)return e;for(const i of Object.keys(e))"userData"!==i&&(e[i]=p(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})),Me(e,(e,t)=>{var n;e[t]=null!==(n=a.get(e[t]))&&void 0!==n?n:e[t]}),e};p(s);const f=[...null!==(i=s.animations)&&void 0!==i?i:[]];for(const h of l){var v,m;ze(h.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=h.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 h of f)for(const e of null!==(o=h.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 Mr(e,t,n){return Er.apply(this,arguments)}function Er(){return(Er=t(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=Ir(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 Pr(){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 Dr(e,t={}){var n;return d(d({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 Cr=["rendererWarmup"],Rr=class extends Sr{static prewarmRenderer(e){var t,n,r;return De.prewarmRenderer(Dr(null===(t=null!==(n=Pr().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 Ar(this.prefabAssets)}setPrefabLibrary(e=[],t=[]){var n;this.cancelPrefabOperations(),this.prefabAssets=Ar(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[Y];t&&r.add(t)}this.prefabMaterials=structuredClone(t.filter(e=>r.has(e.id))),this.assetResolver&&Tt({prefabLibrary:this.prefabAssets,materialLibrary:this.prefabMaterials},this.assetResolver.catalog.entries.flatMap(e=>e.sources),this.resolveAssetUrl)}instantiatePrefab(e){var n=this;return t(function*(e,t={}){if(n.disposed)throw new Error("Vis has been disposed");const r=Or(n.prefabAssets,e),i=new AbortController;n.prefabOperations.add(i);try{return yield Mr(n,r,n.prefabMaterials,t,i.signal)}finally{n.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(),u(this,"runtimePolicy",{observeParentScale:!0,applyDisabledMouseButtons:!0,cacheCityGeometry:!0,includePrefabPreviews:!1,strictBundleAssets:!0}),u(this,"leftTruck",!0),u(this,"options",void 0),u(this,"showState",!1),u(this,"lead",void 0),u(this,"sceneResources",void 0),u(this,"tier0",!1),u(this,"roomEnvMap",void 0),u(this,"roomEnvLease",void 0),u(this,"visName",void 0),u(this,"ownsPencil",!1),u(this,"rendererWarmup",void 0),u(this,"renderingSuspensions",/* @__PURE__ */new Set),u(this,"publicDir",{}),u(this,"prefabAssets",[]),u(this,"prefabMaterials",[]),u(this,"prefabOperations",/* @__PURE__ */new Set),u(this,"assetResolver",void 0),u(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:e}),u(this,"runtimeInitialization",void 0),u(this,"disposed",!1),u(this,"handleObjectIdentityChanged",({baseObject:e,key:t,oldKey:n})=>{var r;if(e.lead!==this.lead)return;Ln({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)&&Ln({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})}),u(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){kn({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)&&kn({scene:{object:r._prefabLink.baseline}},n,t);this.emit("materialIdentityChanged",{material:e,key:t,oldKey:n})}}),u(this,"reportScriptError",e=>{this.showState&&!this.disposed&&(this.emit("scriptError",e)||console.error(e.error))}),u(this,"sceneActive",-1),u(this,"controlsInitialized",!1),u(this,"temporaryControls",/* @__PURE__ */new Map),u(this,"showing",void 0),u(this,"sceneTemporarilyHidden",!1),u(this,"authoredSceneVisible",!0),this.container=e.container;const{rendererWarmup:t}=e,n=r(e,Cr);if(this.rendererWarmup=t,this.options=d({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 Zn(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=h.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||jr.has(r))return yr;if(n.isWebGLBackend&&(null===(t=n.gl)||void 0===t?void 0:t.isContextLost()))return yr;const i=br.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 gr(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(d(d({},c),{},{tier:a?c.tier:0,WebGPU:!!n.isWebGPUBackend,WebGL:!!n.isWebGLBackend,WebGL2:!!n.isWebGLBackend,EXTClipControl:i,isGPUAcceleratorEnabled:a}));if(!wr.has(n)){var o,s;const t=()=>br.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),wr.add(n)}return n.isWebGPUBackend&&n.device.lost.then(()=>{var e;jr.add(r),(null===(e=br.get(n))||void 0===e?void 0:e.device)===r&&br.delete(n)}),br.set(n,{device:r,result:l}),l}catch(a){return yr}}(null===(e=null!==(t=this.pencil)&&void 0!==t?t:this.options.pencil)||void 0===e?void 0:e.renderer)}getQueryOverrides(){return Pr()}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",Vt,JSON.stringify(d(d({},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=d(d(d({},this.options),e),void 0!==e.controls?{controls:structuredClone(e.controls)}:{}),this.tier0=3!==this.getEffectiveTier()}setRuntimeAssets(e){this.assetResolver=e?new c(e,this.options.assetsPrefix,!1!==this.runtimePolicy.strictBundleAssets):void 0}authorizeSceneOptions(e){return t(function*(){})()}fromJSON(e,n){var r=this;return t(function*(e,t,n={}){var o;r.cancelPrefabOperations(),r.prefabAssets=[],r.prefabMaterials=[];const s=d({},t),a=s.preprocessor;let c;delete s.preprocessor,"string"==typeof e?(console.time("vis-core:time.json-fetch"),c=yield i(e,{assetsPrefix:r.options.assetsPrefix,fetchOptions:{cache:!1}}),console.timeEnd("vis-core:time.json-fetch")):c=e,a&&(c=yield a(c)),pt(c),r.setRuntimeAssets(c.runtimeAssets);const l=n.consumeInput&&!a&&1===c.scenes.length&&!c._resourcePool,u=_e(c,c.entrySceneId,{resolveResources:!l});if(!u.vis)throw new Error("fromJSON: missing vis in scene document");if(u.vis.type!==r.visName)throw new Error(`fromJSON: scene ${u.id} requires ${u.vis.type}, received ${r.visName}`);let p=d({},u.vis.options);for(const r of["pencil","rendererWarmup","container","css2DContainer","controlsContainer"])delete p[r];var h,f;s.beforeSetVisOptions&&(p=null!==(h=yield s.beforeSetVisOptions(p,r))&&void 0!==h?h:p);(delete p.assetsPrefix,r.setOptions(p),s.afterSetVisOptions)&&(r.options=null!==(f=yield s.afterSetVisOptions(r.options,r))&&void 0!==f?f:r.options);let v;"map"===r.visName&&(yield r.authorizeSceneOptions(r.options)),r.cameraState=d({},u.cs),r.cameraStateActive=null!==(o=u.csa)&&void 0!==o?o:"visShow";try{var m,g;v=r.initializeRuntime();const e=Qe(u,{omitPrefabPreviews:!(null===(m=r.runtimePolicy)||void 0===m?void 0:m.includePrefabPreviews),consumeInput:!0});yield v,c.runtimeAssets&&Tt({scene:e},c.runtimeAssets.entries.flatMap(e=>e.sources),r.resolveAssetUrl),yield r.restoreScene(e,r.objectTypes,d(d({},n),{},{consumeInput:!0})),r.setPrefabLibrary(oe(c.prefabLibrary,c),null!==(g=te(c.materialLibrary,c))&&void 0!==g?g:[]),s.beforeShow&&(yield s.beforeShow(r)),yield r.show(),s.afterShow&&(yield s.afterShow(r))}catch(y){throw yield null==v?void 0:v.catch(()=>{}),console.error(y),y}}).apply(this,arguments)}initializeRuntime(){var e,n=this;return this.disposed?Promise.reject(/* @__PURE__ */new Error("Vis has been disposed")):null!==(e=this.runtimeInitialization)&&void 0!==e?e:this.runtimeInitialization=t(function*(){var e,t;if(yield n.createRuntime(),n.disposed)throw new Error("Vis has been disposed");if(null===(e=n.pencil.event)||void 0===e||e.on("lead.updateKey",n.handleObjectIdentityChanged),null===(t=n.pencil.event)||void 0===t||t.on("sceneResources.updateKey",n.handleMaterialIdentityChanged),n.initializeControls(),yield n.onRuntimeReady(),n.disposed)throw new Error("Vis has been disposed");n.applyControls()})()}onRuntimeReady(){return t(function*(){})()}onSceneRestored(){return t(function*(){})()}onDispose(){}get objectTypes(){return hr}get defaultCameraUp(){return new bt(0,1,0)}createRuntime(){var e=this;return t(function*(){var t;if(e.pencil)return;e.tier0=3!==e.getEffectiveTier();const n=d(d({},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 bt).fromArray(r):r?new bt(r.x,r.y,r.z):e.defaultCameraUp;if(n.camera=d(d({near:.1,far:1e3,fov:45},n.camera),{},{up:i.normalize()}),e.options.css2DContainer&&(n.css2DRendererParams=d({container:e.options.css2DContainer},n.css2DRendererParams)),e.options.controlsContainer&&(n.controls={domElement:e.options.controlsContainer}),e.options.pencil){var o,s,a,c,l,u,p,h;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===(u=n.camera)||void 0===u?void 0:u.far)&&void 0!==l?l:1e3,up:null!==(p=null===(h=n.camera)||void 0===h?void 0:h.up)&&void 0!==p?p:new bt(0,1,0)},sceneOptions:{background:new H(0)}}),e.setSceneActive()}else{const t=new De(d(d({container:e.container,helper:!1,css2DRenderer:!0,attributesWorkerVersion:Vt,camera:{near:.1,far:1e3,fov:45,up:new bt(0,1,0)},bloom:!0,scene:{background:new H(0)},loader:{prefix:e.options.assetsPrefix,simpleTexture4deleted:!0}},n),{},{rendererWarmup:e.rendererWarmup,renderer:Dr(e.resolveRendererDepthBufferOptions().autoDepthBuffer,n.renderer)}));e.rendererWarmup=void 0,e.pencil=t,e.ownsPencil=!0,e.acquireRenderingSuspensions(),e.sceneActive=1}const f=e.pencil;if(yield f.ready,e.disposed)throw new Error("Vis has been disposed");if(e.showDetectRes(),e.ownsPencil){if(e.tier0){var v,m,g;if(void 0===(null===(v=n.composer)||void 0===v?void 0:v.multisampling))f.options.composer=d(d({},f.options.composer),{},{multisampling:0}),null===(g=f.composerController)||void 0===g||g.synchronizeRendererCapabilities(0);if(void 0===(null===(m=n.loader)||void 0===m?void 0:m.anisotropy)){f.options.loader=d(d({},f.options.loader),{},{anisotropy:1}),f.loaderController.options.loaderParams.anisotropy=1;for(const e of f.loaderController.controllerMap.keys())e.options.anisotropy=1}}j(f,{container:e.container,tier0:e.tier0,observeParentScale:!!e.options.observeParentScale&&e.runtimePolicy.observeParentScale})}e.lead=f.lead,e.sceneResources=f.sceneResources,f.loader.loadingManager.setURLModifier(e.resolveAssetUrl),f.loader.on("loadError",t=>e.emit("resourceLoadError",t)),f.event.on("scriptError",e.reportScriptError),f.loader.on("progress",(...t)=>{!0!==e.showState&&e.emit("loaderProgress",...t)}),e.leftTruck&&(f.controls.mouseButtons.left=$e.TRUCK,f.controls.mouseButtons.right=$e.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,n;const r=this.pencil,i=r.scene.background,o=i instanceof H?"Color":i instanceof Re?"Texture":"None",s="Texture"===o?i:null,a=303===(null==s?void 0:s.mapping),c="Color"===o?i.getHexString():"000000";r.scene.userData=new Proxy({backgroundType:o,backgroundColor:c,backgroundTexture:s,backgroundEquirectangular:a,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===(n=this.pencil.composerController)||void 0===n||null===(n=n.bloomPass)||void 0===n?void 0:n.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)r.scene.background=null;else if(r.scene.userData.backgroundColor&&"Color"===n){const e=r.scene.userData.backgroundColor.replace("#","");r.scene.background=(new H).setHex(parseInt(e,16))}else r.scene.userData.backgroundTexture&&"Texture"===n&&(r.scene.background=r.scene.userData.backgroundTexture);else if("backgroundColor"===t&&"Color"===r.scene.userData.backgroundType){const e=n.replace("#","");r.scene.background=(new H).setHex(parseInt(e,16))}else if("backgroundTexture"===t&&"Texture"===r.scene.userData.backgroundType)r.scene.background=n,n&&(r.scene.userData.backgroundEquirectangular?n.mapping=303:n.mapping=300);else if("backgroundEquirectangular"===t){const e=r.scene.background;(null==e?void 0:e.mapping)&&(e.mapping=n?303:300,e.needsUpdate=!0)}else"bloomThreshold"===t?r.composerController.bloomPass&&(r.composerController.bloomPass.threshold=n):"bloomRadius"===t?r.composerController.bloomPass&&(r.composerController.bloomPass.radius=n):"bloomStrength"===t&&r.composerController.bloomPass&&(r.composerController.bloomPass.strength=n);return Reflect.set(e,t,n)}})}setObjectState(e,t){return function(e,t,n=tr){const r=d({},t),i=Qn.has(e);Qn.add(e);try{return Object.assign(e.object3d.userData,r),n(e,r),e}finally{i||Qn.delete(e)}}(e,t,(e,t)=>this.applyObjectState(e,t))}applyObjectState(e,t=e.object3d.userData){tr(e,t)}playEnterTransition({duration:e,onPrepared:n}){var r=this;return t(function*(){const t=Le(r.lead.scene);null==n||n(),yield t.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=d(d({},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=d({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=d({},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]=$e.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 t(function*(){(yield e.useSaveCamera(e.cameraStateActive))||(yield e.restoreCameraControlTarget())})()}restoreCameraControlTarget(){var e=this;return t(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 bt);void 0===n&&(n=t.getWorldDirection(new bt).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 t(function*(){if(e.disposed)throw new Error("Vis has been disposed");if(!e.showState){if(e.showing)return e.showing;e.showing=t(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 n=this;return t(function*(e,t=this.lead.scene,r=this.objectTypes,i,o={}){const s=yield n.lead.restoreBaseObject(t,e,r,n.getRoomEnvMap(),!0,i,o);try{return null==i||i.throwIfAborted(),s.traverse(e=>n.applyObjectState(e)),s}catch(a){throw s.erase(),a}}).apply(this,arguments)}restoreScene(e){var n=this;return t(function*(e,r=this.objectTypes,i={}){const o=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);En(o);const s=k(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,n.options.sceneBindings,{consumeInput:i.consumeInput});"map"===n.visName&&(yield n.authorizeSceneOptions(d(d({},n.options),o.bindings?{sceneBindings:o.bindings}:{})));const s="string"==typeof o.graph?JSON.parse(o.graph):o.graph,a=i.consumeInput||"string"==typeof e||o.graph!==e,c=I(s,n.options),l=c&&!a?structuredClone(s):s,u=c?structuredClone({materialBindings:n.options.materialBindings,regionTextureRules:n.options.regionTextureRules}):void 0;var p;c&&b(l,u),yield n.initializeRuntime(),n.setSceneActive(),yield n.lead.restoreBaseObject(n.lead.scene,l,r,n.getRoomEnvMap(),n.options.createIfNeeded,void 0,d(d({},i),{},{consumeInput:!!a||c,onResourceLoad:(p=t(function*(e){var t;const r=n.emit("sceneResourceLoad",e);yield null===(t=i.onResourceLoad)||void 0===t?void 0:t.call(i,e),r&&(yield new Promise(e=>setTimeout(e,0)))}),function(e){return p.apply(this,arguments)})})),n.authoredSceneVisible=n.lead.scene.object3d.visible,n.sceneTemporarilyHidden=!1,n.showState||n.hideSceneContent(),o.bindings&&(n.options.sceneBindings=o.bindings),u&&(n.options.materialBindings=u.materialBindings,n.options.regionTextureRules=u.regionTextureRules);for(const t of[...n.lead.objects.values()]){var h;n.applyObjectState(t),yield null===(h=t.rebuildFromScene)||void 0===h?void 0:h.call(t)}n.pencil.controls.updateCameraUp(),yield n.restoreCameraControlTarget(),n.pencil.refreshActiveView(),yield n.onSceneRestored(),n.applyControls()}).apply(this,arguments)}getClassRefByType(e){return this.objectTypes[e]}addGroup(){var e=this;return t(function*(){return yield e.lead.draw(hr.Group)})()}addCSS2D(e){var n=this;return t(function*(e,t={}){return n.addNode(e,t)}).apply(this,arguments)}addCSS3D(e){var n=this;return t(function*(e,t={}){return n.addNode(e,d(d({},t),{},{type:t.type||"3d"}))}).apply(this,arguments)}addNode(e){var n=this;return t(function*(e,t={}){t.display&&(e.style.display=t.display);let r=0;void 0!==t.onTop&&(r=t.onTop);let i="2d";void 0!==t.type&&(i=t.type);const o=t.target?yield t.target.draw(hr.Node,{children:e,type:i}):yield n.lead.draw(hr.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=Ot(this.pencil.renderer,this.pencil.resources);return this.roomEnvLease=e,this.roomEnvMap=e.resource,e.resource}getScreenPosition(e,t,n){const r=new bt(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,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")}};u(Rr,"VisName","base");var Lr=(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 kr(e,t,n){var r;const i=e.userData,o=null!==(r=null!=n?n:i.mapFeatureId)&&void 0!==r?r:Lr(i);i.mapGenerated=!0,i.mapRole=t,i.mapFeatureId=String(o),i.mapGeneratedId=`${t}:${o}`}var Br=/* @__PURE__ */new WeakMap,Tr=class extends N{getHideMaterial(){var e,t;const n=null===(e=this.pencil)||void 0===e?void 0:e.resources,r=()=>new at({colorWrite:!1,transparent:!0});if(!n)return null!==(t=this.standaloneHideMaterial)&&void 0!==t?t:this.standaloneHideMaterial=r();let i=Br.get(n);return i&&!n.wasDisposed(i)||(i=r(),Br.set(n,i)),i}constructor(e){var t;super(),u(this,"objectType","PlaneMap"),u(this,"options",void 0),u(this,"isActive",!0),u(this,"groupArr",[]),u(this,"areaArr",[]),u(this,"lineArr",void 0),u(this,"mergeSideArea",null),u(this,"extrudelineArr",void 0),u(this,"splitPolygons",0),u(this,"standaloneHideMaterial",void 0),this.options=d({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 t(function*(){const{geojson:n,extrudeLineGeojson:r,bbox:i,areaGroup:o,materialOptions:s,hasSide:a,hasTop:c,hasLine:l,mergeSide:d,hasExtrudeLine:u}=e.options;var p;o&&(e.groupArr=yield Promise.all(n.features.map((p=t(function*(t){const{properties:n}=t,r=`${e.getPropertiesKey(n)}`,i=yield e.draw(N);return kr(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 p.apply(this,arguments)}))));const{lineMat:h,topMat:f,sideMat:v}=s,m=a?[f,v||f]:[f],[g,y]=yield Promise.all([(c||a)&&e.addArea(n,{material:m,bbox:i,areaGroup:o,hasSide:a,hasTop:c,onTop:e.options.onTop}),l&&h&&e.addLine(n,{material:h,onTop:e.options.onTop+2,areaGroup:o})]);g&&(e.areaArr=g),d&&(yield e.mergeAreaSide()),y&&(e.options.conic||y.forEach(t=>{t.position.z=e.options.depth+e.options.lineOffset}),e.lineArr=y),u&&r&&(yield e.createExtrudeLines()),e.markGeneratedObjects()})()}markGeneratedObjects(){var e,t;this.groupArr.forEach(e=>kr(e,"group")),this.areaArr.forEach(e=>kr(e,"area")),null===(e=this.lineArr)||void 0===e||e.forEach(e=>kr(e,"line")),null===(t=this.extrudelineArr)||void 0===t||t.forEach(e=>kr(e,"extrudeLine","all")),this.mergeSideArea&&kr(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=ft(e[t],e=>this.createResource(e));r.name="板块边线",this.sceneResources.add(r),e[n]=r}return e}createExtrudeLines(){var e=this;return t(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="板块边线",kr(t,"extrudeLine","all")}),e.extrudelineArr=o,e.markGeneratedObjects(),i&&!e.isActive&&e.useExtrudeLineMaterial("bg"),e.options.bloom&&e.isActive&&e.toggleExtrudelineBloom(!0)})()}createLines(e,n){var r=this;return t(function*(){var t;if((null===(t=r.lineArr)||void 0===t?void 0:t.length)||!r.options.hasLine)return r.lineArr||[];const i=r.options.materialOptions,o=e||i.lineMat;if(!o)return[];i.lineMat=o,n&&(i.bgLineMat=n);const s=yield r.addLine(r.options.geojson,{material:o,onTop:r.options.onTop+2,areaGroup:r.options.areaGroup});return r.options.conic||s.forEach(e=>{e.position.z=r.options.depth+r.options.lineOffset}),r.lineArr=s,r.markGeneratedObjects(),r.isActive||r.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 t(function*(t=this.options.hasExtrudeLine){e.options.hasExtrudeLine=t,t?yield e.createExtrudeLines():e.clearExtrudeLines()}).apply(this,arguments)}mergeAreaSide(){var e=this;return t(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],kr(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 t(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(e,n){var r=this;return t(function*(){const{bbox:i,material:o,onTop:s}=n,a=r.geojson2Meta(e),c=r.shouldUseGeometryWorker(a);if(n.areaGroup)return yield Promise.all(a.map((l=t(function*(e){const{coords:t,properties:a}=e,l=!(null==a?void 0:a.extension)&&n.hasSide,u=r.findGroup(r.getPropertiesKey(a)),p=`${r.getPropertiesKey(a)}`;let h=o;!l&&Array.isArray(o)&&(h=o[0]);const f=yield u.draw(Q,r.options.conic?{useWorker:c,coordinatesArr:t,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:l,hasTop:n.hasTop,useGroups:l&&n.hasTop?2:0,material:h}:{useWorker:c,useFloat64Array:!0,coordinatesArr:t,globalMeta:[r.options.depth],projection:r.options.projection,topSegments:r.options.topSegments,bevelRatio:r.options.bevelRatio,bbox:i,hasBottom:!1,hasSide:l,hasTop:n.hasTop,useGroups:l&&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=d({},a),kr(f,"area",p),f}),function(e){return l.apply(this,arguments)})));{const e=a.flatMap(({coords:e})=>e);let t=o;!n.hasSide&&Array.isArray(o)&&(t=o[0]);const s=yield r.draw(Q,r.options.conic?{useWorker:c,coordinatesArr:e,globalMeta:[r.options.depth,r.options.start],projection:"sphere",topFirst:!0,bbox:i,hasBottom:!1,hasSide:n.hasSide,hasTop:n.hasTop,useGroups:2,material:t}:{useWorker:c,useFloat64Array:!0,coordinatesArr:e,globalMeta:[r.options.depth],projection:d({},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:t});return s.object3d.castShadow=r.options.castShadow,s.object3d.name="板块",s.userData={},kr(s,"area","all"),[s]}var l})()}addLine(e,n){var r=this;return t(function*(){const{material:i,onTop:o}=n,s=r.geojson2Meta(e),a=r.shouldUseGeometryWorker(s);if(n.areaGroup)return yield Promise.all(s.map((c=t(function*(e){const{coords:t,properties:n}=e,s=r.findGroup(r.getPropertiesKey(n)),c=`${r.getPropertiesKey(n)}`,l=yield s.draw(wt,r.options.conic?{useWorker:a,coordinatesArr:t,projection:"sphere",globalMeta:[1,r.options.start+r.options.depth+r.options.lineOffset],material:i}:{useWorker:a,useFloat64Array:!0,coordinatesArr:t,globalMeta:[1],projection:r.options.projection,splitPolygons:r.splitPolygons,material:i});return kr(l,"line",c),o&&l.setTop(o),l.object3d.name="线",l}),function(e){return c.apply(this,arguments)})));{const e=s.flatMap(({coords:e})=>e),t=yield r.draw(wt,r.options.conic?{useWorker:a,coordinatesArr:e,globalMeta:[1,r.options.start+r.options.depth+r.options.lineOffset],projection:"sphere",material:i}:{useWorker:a,useFloat64Array:!0,coordinatesArr:e,globalMeta:[1],projection:r.options.projection,splitPolygons:r.splitPolygons,material:i});return kr(t,"line","all"),o&&t.setTop(o),t.object3d.name="线",[t]}var c})()}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 Lr(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 he((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=d(d(d(d(d({},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)}},_r=d(d({},hr),{},{Earth:class extends pr{constructor(e){const t=d({radius:30,rotationY:0},e);super(t),u(this,"objectType","Earth"),u(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 J{constructor(e){super(),u(this,"objectType","SphereShadow"),u(this,"options",void 0),this.options=d({radius:30},e)}create(){var e=this;return t(function*(){const t=new Pe(e.options.radius,128,90),n=new at;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:Tr,PlaneMap:Tr}),Ur=class extends Rr{constructor(...e){super(...e),u(this,"leftTruck",!1),u(this,"map",void 0),u(this,"sphere",void 0),u(this,"secondaryMap",void 0),u(this,"rotationControls",void 0),u(this,"releaseRotationLock",void 0),u(this,"visibilityChecks",void 0),u(this,"stopAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=this.setTemporaryControls({autoRotateSpeed:0})}),u(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(d({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 _r}onRuntimeReady(){var e=this;return t(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,i]=e;if(![r,i,t].every(Number.isFinite))throw new TypeError("Earth location and height must be finite");const o=ut(r,i,1,1,!0),s=null===(n=this.sphere)||void 0===n?void 0:n.object3d;s&&o.applyAxisAngle(new bt(0,1,0),Math.PI/2);const a=o.clone().multiplyScalar(this.getRadius());return s&&(s.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(s.matrixWorld),s.localToWorld(a),o.applyNormalMatrix((new Ie).getNormalMatrix(s.matrixWorld))),{position:a.addScaledVector(o,t),normal:o}}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 bt).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 bt).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 bt,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 bt).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 bt(...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 Ie).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 je).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 t(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()})()}};u(Ur,"VisName","earth");var zr={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]},Gr={Asia:142,Europe:150,Africa:2,Australia:9,"North America":21,"South America":5,Antarctica:10},$r={Asia:"亚洲",Europe:"欧洲",Africa:"非洲",Australia:"大洋洲","North America":"北美洲","South America":"南美洲",Antarctica:"南极洲"},Wr=Object.keys(Gr).map(e=>({name:$r[e],en_name:e,adcode:Gr[e],lng:0,lat:0,level:"continent",parent:0,c:[],b:[...zr[Gr[e]]]})),Nr=[-180,-55.643164,180,83.564844],Fr=d({},zt),Vr=e=>0===e?{name:"世界",adcode:0,lng:0,lat:0,level:"world",parent:0,c:[],b:[...Nr]}:/^\d{6}$/.test(`${e}`)?Fr[e]:Wr.find(t=>t.adcode===e),qr=(e,t=!0)=>{if(0===e)return"world";if(1e5===e)return"country";if(/^\d{6}$/.test(`${e}`)){const{level:n,parent:r}=Vr(e),i=r&&Vr(r).level;return"district"===n&&"province"===i&&t?"city":n}return Wr.find(t=>t.adcode===e)?"continent":void 0};function Hr(e,t,n){return Kr.apply(this,arguments)}function Kr(){return(Kr=t(function*(e,t,n){if(!Number.isInteger(t)||!n||!(yield a(t,n)))throw Error(`Map region ${t} is not authorized`)})).apply(this,arguments)}var Xr=/* @__PURE__ */new WeakMap;function Yr(){return(Yr=t(function*(e,t,n,r){yield Hr(e,t,n),Xr.set(e,{adcode:t});try{return yield r()}finally{Xr.delete(e)}})).apply(this,arguments)}var Jr=d(d({},hr),{},{PlaneMap:Tr,ContinentsBg:class extends N{constructor(e){super(),u(this,"objectType","ContinentsBg"),u(this,"options",void 0),u(this,"mapArr",[]),this.options=e}create(){var e=this;return t(function*(){const{depth:n}=e.options,r=e.options.materialOptions;e.object3d.name="大洲";const o=yield i(e.options.geojsonSource,{assetsPrefix:e.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t=>e.pencil.loader.loadingManager.resolveURL(t)}});var s;yield Promise.all(o.features.map((s=t(function*(t){var i,o,s;const a=null===(i=t.properties)||void 0===i?void 0:i.adcode;if(10===a)return;const c=Wt(t).geometry.coordinates;let l=0,u=0,p=e.options.scale,h=[0,0];const f={features:[t]};5===a?(l=-30,u=25,p*=.2):21===a?(l=0,u=25,p*=.18,f.features[0].geometry.coordinates=f.features[0].geometry.coordinates.filter(e=>e[0].length>80)):9===a?(l=30,u=25,p*=.3):142===a?(l=-30,u=-25,p*=.15,h=[-160,0],c[0]=c[0]-160):150===a?(l=0,u=-25,p*=.3):2===a&&(l=30,u=-25,p*=.2);const v=yield e.draw(Tr,{geojson:f,projection:{center:c,scale:p,rotate:h,projectionType:"equirectangular"},areaGroup:!1,depth:n,materialOptions:d({},r)});Object.assign(v.userData,{mapRole:"continent",adcode:a}),v.object3d.name=null==t||null===(o=t.properties)||void 0===o?void 0:o.name,v.userData.name=null==t||null===(s=t.properties)||void 0===s?void 0:s.name,v.position.set(l,u,0),e.mapArr.push(v)}),function(e){return s.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(Nt(e),Ft(t))}catch(n){return!1}return!1})});if(!r){console.warn(`⚠️ 坐标 ${e} 不在任何大洲多边形内,尝试使用边界框匹配...`);const t=this.mapArr.map(t=>{var n;const r=zr[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=A(d({},e.options.projection)),[o,s]=t,[a,c]=i([o,s]),l=new bt(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 bt(0,0,1).applyNormalMatrix((new Ie).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 N{constructor(e){super(),u(this,"objectType","Mountain"),u(this,"options",void 0),u(this,"extrudePolygon",void 0),this.options=d({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 e=this;return t(function*(){const{geojson:t,bbox:n}=e.options,r=e.geojson2Meta(t),i=yield e.pencil.loader.load("/1.png"),o=r.flatMap(({coords:e})=>e),s=yield e.pencil.attributesWorker.geoGeometry("extrudePolygon",{coordinatesArr:o,metaArray:o.map(()=>[e.options.depth]),mesaage:{projection:d({},e.options.projection),topSegments:100,bbox:n,hasBottom:!1,hasSide:!1}}),a=e.pencil.resources,c=a.createScope(e);let l;try{c.retain(s);const t=s.attributes.position.count;s.setAttribute("color",new le(new Float32Array(3*t),3));const n=e.options.depth;e.setNoise(s,i.image,n);const r=new H,o=s.attributes.color,a=s.attributes.position,d=new H("red"),u=new H("green");for(let e=0;e<t;e++){const t=a.getZ(e)/n;r.lerpColors(d,u,t),o.setXYZ(e,r.r,r.g,r.b)}l=c.create(()=>new Ue({flatShading:!0,vertexColors:!0}));const p=yield e.draw(Q,{geometry:s,material:l});p.position.z+=.001,e.extrudePolygon=p}finally{c.dispose(),a.disposeUnused(s),l&&a.disposeUnused(l)}})()}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 he;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 J{constructor(e){super(),u(this,"objectType","CityPlane"),u(this,"options",void 0),u(this,"plane",void 0),this.options=d({color:"#0C4557",map:null},e)}create(){var e=this;return t(function*(){const{width:t,height:n,color:r,map:i,material:o}=e.options,s=new dt(t,n,2,2);e.plane=s;const a=o||new at({color:r,map:i});e.object3d.geometry=s,e.object3d.material=a})()}rebuildFromScene(){this.plane=this.object3d.geometry}},Area:class extends N{constructor(e){super(),u(this,"objectType","Area"),u(this,"options",void 0),u(this,"area",[]),this.options=d({},e)}create(){var e=this;return t(function*(){const{jsonUrl:n,projection:r,type:i,cacheKey:o,material:s,oArr:a}=e.options,c=yield e.draw(Q,{useWorker:!0,cacheKey:o,projection:r,material:s,hasBottom:!1,hasSide:!1,onCacheMiss:(l=t(function*(){const t=yield e.pencil.loader.load(n),r=[],i=[];return(t.features||t).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,e.area.push(c)})()}rebuildFromScene(){this.area=[],this.children.forEach(e=>{"ExtrudePolygon"===e.objectType&&this.area.push(e)})}},Building:class extends N{constructor(e){super(),u(this,"objectType","Building"),u(this,"options",void 0),this.options=d({},e)}create(){var e=this;return t(function*(){var n;const{jsonUrl:r,projection:i,cacheKey:o,meters:s,grey:a,hasSide:c}=e.options,l=null!==(n=e.options.materialOptions)&&void 0!==n?n:{},d={};var u;yield Promise.all(["20","60","max"].map((u=t(function*(n){let o=e.options.material;o||(o=c?[l[n+"Top"],l[n+"Side"]]:l[n+"Top"]);const a=yield e.draw(Q,{useWorker:!0,cacheKey:e.options.cacheKey?`${e.options.cacheKey}-${n}`:void 0,projection:i,material:o,useGroups:c?2:0,hasBottom:!1,hasSide:null==c||c,onCacheMiss:(u=t(function*(){var t,i;const o=yield e.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===(t=d[n])||void 0===t?void 0:t.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)}))),e.options.grey||(e.children.forEach(e=>{e.object3d.castShadow=!0}),e.keyType="building"),e.object3d.name="建筑",e.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 N{constructor(e){super(),u(this,"objectType","Road"),u(this,"options",void 0),u(this,"linePrimary",[]),u(this,"lineSecondary",[]),this.options=d({},e)}create(){var e=this;return t(function*(){const{jsonUrl:n,projection:r,cacheKey:i,meters:o}=e.options,s=yield e.draw(wt,{useWorker:!0,cacheKey:i,projection:r,material:e.options.material,onCacheMiss:(a=t(function*(){const t=yield e.pencil.loader.load(n),r=[],i=[];return(t.features||t).forEach(e=>{const t=e.properties.w||1;e.geometry.coordinates.forEach(e=>{r.push(e),i.push([t*(o||1)])})}),{coordinatesArr:r,metaArray:i}}),function(){return a.apply(this,arguments)})});var a;s.userData.mapRole="roadGeometry",e.object3d.name="道路",e.linePrimary.push(s)})()}rebuildFromScene(){this.children.forEach(e=>{"Line"===e.objectType&&this.linePrimary.push(e)})}dispose(){super.dispose(),this.linePrimary=[],this.lineSecondary=[]}}});function Zr(){return(Zr=t(function*(e,t,n,r,i,o={lookat:n,adcode:r}){var s,a,c,l,u;const p=null!==(s=null===(a=e.scene.pencil.camera)||void 0===a||null===(a=a.up)||void 0===a?void 0:a.clone().normalize())&&void 0!==s?s:new bt(0,0,1),h=new bt(n[0]-n[3],n[1]-n[4],n[2]-n[5]);h.applyQuaternion((new je).setFromUnitVectors(p,new bt(0,1,0)));const f=(new rt).setFromVector3(h),v=null!==(c=null===(l=(u=e.scene.pencil).getViewViewport)||void 0===l?void 0:l.call(u))&&void 0!==c?c:e.scene.pencil.getSize();let m=o.padding;if(!m){const r=e.cameraForPose(n);r&&e.scene.map&&(m=t.measurePerspectiveCameraPadding(d({points:e.cameraFitPoints(e.scene.map),camera:r},v)))}const g=o.viewport?v.width/o.viewport.width:1,y=o.viewport?v.height/o.viewport.height:1,b=m?[m.top*y,m.right*g,m.bottom*y,m.left*g]:[0,0,0,0];return{polarAngle:f.phi,azimuthAngle:f.theta,referencePadding:b}})).apply(this,arguments)}function Qr(){return(Qr=t(function*(e,t,n,{polarAngle:r,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l=!0,smoothTime:u=250}={}){var p,f,v,m,g,y,b,w,j,S,A,O,x,I;if(!n.object3d)return;for(const[d,h]of Object.entries({polarAngle:r,azimuthAngle:i}))if(void 0!==h&&!Number.isFinite(h))throw new Error(`Invalid map camera ${d}`);const M=null!=c?c:n===e.scene.map?e.scene.adcode:void 0,E=n===e.scene.map&&M===e.scene.adcode&&void 0!==M?null===(p=e.scene.cameraState)||void 0===p?void 0:p[`map-${M}`]:void 0;var P,D;if(ti(E))return yield null===(P=(D=e.scene.pencil.controls).setFocalOffset)||void 0===P?void 0:P.call(D,0,0,0,!1),yield Promise.all([e.scene.lookAt(...E,l,u),null==a?void 0:a()]),void(e.safeAreaRefitPending=!1);if(void 0===r&&void 0===i||(e.cameraAngleOverrides=d(d(d({},e.cameraAngleOverrides),void 0===r?{}:{polarAngle:r}),void 0===i?{}:{azimuthAngle:i})),null!==(f=o)&&void 0!==f||(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,l,u),null==a?void 0:a()]),void(e.safeAreaRefitPending=!1);let C=e.scene.options.polarAngle,R=e.scene.options.azimuthAngle,L=[0,0,0,0];if(o){const t=yield e.calcPaddingFromReference(o.lookat,o.adcode,o.center,o);C=t.polarAngle,R=t.azimuthAngle,L=t.referencePadding}C=null!==(v=null===(m=e.cameraAngleOverrides)||void 0===m?void 0:m.polarAngle)&&void 0!==v?v:C,R=null!==(g=null===(y=e.cameraAngleOverrides)||void 0===y?void 0:y.azimuthAngle)&&void 0!==g?g:R;const k=e.scene.pencil.controls;C=h.clamp(C,Math.max(1e-6,null!==(b=k.minPolarAngle)&&void 0!==b?b:0),Math.min(Math.PI-1e-6,null!==(w=k.maxPolarAngle)&&void 0!==w?w:Math.PI)),R=h.clamp(R,null!==(j=k.minAzimuthAngle)&&void 0!==j?j:-1/0,null!==(S=k.maxAzimuthAngle)&&void 0!==S?S:1/0);const B=e.scene.pencil.camera.up.clone().normalize(),T=(new bt).setFromSpherical(new rt(1,C,R)).applyQuaternion((new je).setFromUnitVectors(new bt(0,1,0),B)),_=e.cameraForPose([...T.toArray(),0,0,0]);if(!_)return;const U=e.getEffectiveSafeAreaPadding(L),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(d(d({points:e.cameraFitPoints(n),camera:_},z),{},{padding:{top:U[0],right:U[1],bottom:U[2],left:U[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=k.setFocalOffset)||void 0===I?void 0:I.call(k,0,0,0,!1),yield Promise.all([e.scene.lookAt(...G.position,...G.target,l,u),null==a?void 0:a()]),e.safeAreaRefitPending=!1)})).apply(this,arguments)}function ei(){return(ei=t(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 ti=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,ni=(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 ri(){return ri=t(function*(e,n,r){var i;const o=e.scene.options.showLabel;if(!(null===(i=e.scene.mapArea)||void 0===i?void 0:i.length)||!o)return;qt(r);const s=ii(e);s.length&&(e.labelGroupObject3dUserData=s[0].object3d.userData);const a=yield e.scene.group.draw(n.objects.Group);try{qt(r),a.object3d.visible=!1,e.labelGroupObject3dUserData&&(a.object3d.userData=e.labelGroupObject3dUserData),a.object3d.userData.isMapLabelGroup=!0,a.userData.mapRole="labels",a.object3d.name="地图标签组";const i=yield Promise.allSettled(e.scene.mapArea.map((c=t(function*(t){var i,s,c,l,d,u;qt(r);let{name:p,adcode:h,centroid:f}=t.userData;const{DistrictID:v,DistName:m,iso_a2:g,center:y}=t.userData;if(h=null!==(i=null!==(s=null!==(c=null!==(l=h)&&void 0!==l?l:g)&&void 0!==c?c:v)&&void 0!==s?s:t.userData.id)&&void 0!==i?i:p,f=f||y,p=p||m,!f)return;const b=e.scene.getLocationPosition(f);if(a.children.some(e=>e.userData.mapFeatureId===String(h))||!b)return;const w=new bt(...b);a.object3d.updateWorldMatrix(!0,!1),a.object3d.worldToLocal(w);let j=p;"lite"===o&&j&&(j=p.replace(/自治州|地区|自治区|省|市|壮族|特别行政区|回族|维吾尔/g,""));const S=j?n.getLabelElement(j,e.scene.options.labelStyle):void 0,[A,O,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 a.draw(n.objects.Node,{position:w.add(new bt(A,O,x)),children:S});qt(r),Object.assign(I.userData,{mapRole:"label",mapFeatureId:String(h),adcode:h}),I.object3d.name=j,I.trackCollision()}),function(e){return c.apply(this,arguments)})));qt(r);const l=i.find(e=>"rejected"===e.status);if("rejected"===(null==l?void 0:l.status))throw l.reason;a.object3d.visible=!0,e.scene.applyObjectState(a);for(const e of s)e.erase()}catch(l){throw a.erase(),l}var c}),ri.apply(this,arguments)}function ii(e){const t=[];return e.scene.lead.scene.traverse(e=>{("labels"===e.userData.mapRole||e.object3d.userData.isMapLabelGroup)&&t.push(e)}),t}function oi(e){const t=ii(e);if(t.length){e.labelGroupObject3dUserData=t[0].object3d.userData;for(const e of t)e.erase()}}function si(){return(si=t(function*(e,t,n){const{cityVis:r}=e.prepareCityVis(t,n);try{yield r.preloadResources()}catch(i){throw new Error(`城市 ${t} 初始化失败:${i instanceof Error?i.message:String(i)}`,{cause:i})}})).apply(this,arguments)}function ai(){return(ai=t(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 ci(){return(ci=t(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(l){throw new Error(`城市 ${t} 初始化失败:${l instanceof Error?l.message:String(l)}`,{cause:l})}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})).apply(this,arguments)}function li(){return(li=t(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(o){console.warn("缓存失败",o)}})).apply(this,arguments)}function di(){return(di=t(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=d(d({},r.projection),{},{rotate:e.scene.options.worldPacificCentre?[-160,0]:void 0}),u=(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=d(d(d({},o),i),{},{center:[...i.center]})}return!0};if(e.scene.parentBg=e.scene.parentBg.filter(e=>!!(s&&u(e,o.b,r.projection)||a&&u(e,c,l))||(e.erase(),!1)),s&&!e.scene.parentBg.some(e=>u(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,d({geojson:i,bbox:o.b,materialOptions:d({},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=>u(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,d(d({geojson:d(d({},i),{},{features:[...i.features.filter(t=>e.scene.options.worldBgFull||"CHN"!==t.properties.iso_a3)]}),bbox:o,materialOptions:d({},n)},r),{},{projection:d(d({},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 ui(){return(ui=t(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 pi(){return pi=t(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&&(kr(c,"extrudeLine","all"),c.keyType="extrudeLine")}}),pi.apply(this,arguments)}function hi(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 fi(){return fi=t(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 vi(e,t,n))}),fi.apply(this,arguments)}function vi(e,t,n){return mi.apply(this,arguments)}function mi(){return mi=t(function*(e,n,r){const i=n.getAdcodeShowLevel(r),o=/* @__PURE__ */new Map;for(const t of e.scene.options.regionTextureRules||[]){if(!t||"string"!=typeof t.material||"string"!=typeof t.property)continue;let e=o.get(t.material);e||o.set(t.material,e=/* @__PURE__ */new Map),e.has(t.property)||e.set(t.property,{texture:null}),Array.isArray(t.levels)&&!t.levels.includes(i||"")||(e.get(t.property).rule=t)}var s;yield Promise.all([...o.values()].flatMap(e=>[...e.values()]).map((s=t(function*(t){var n;const o=t.rule;if(!o||o.copyFrom)return;const s=(null===(n=o.sources)||void 0===n?void 0:n[String(r)])||o.url;if("string"!=typeof s||!s.trim())return;const a=s.split("{adcode}").join(String(r)).split("{level}").join(i||"");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 s.apply(this,arguments)})));const a=/* @__PURE__ */new Map;for(const[t,c]of o){const n=e.regionRuleMaterial(t,r);if(!n)continue;let i=a.get(n);i||a.set(n,i=/* @__PURE__ */new Map);for(const[e,t]of c)i.has(e)&&!t.rule||i.set(e,t)}for(const[t,c]of a){const n=/* @__PURE__ */new Map,r=/* @__PURE__ */new Set,i=o=>{var s,a;if(n.has(o))return n.get(o);if(r.has(o))return null;const l=c.get(o);if(!l)return(null===(s=t[o])||void 0===s?void 0:s.isTexture)?t[o]:null;r.add(o);const d=(null===(a=l.rule)||void 0===a?void 0:a.copyFrom)?i(l.rule.copyFrom):l.texture;return e.setRegionTexture(t,o,d),r.delete(o),n.set(o,t[o]),t[o]};for(const e of c.keys())i(e)}}),mi.apply(this,arguments)}var gi={fitPerspectiveCameraToPoints:z,measurePerspectiveCameraPadding:de,objectWorldBounds:Te},yi={objects:Jr,getLabelElement:(e,t={})=>{const n=document.createElement("div");return n.classList.add("vis-map-label"),Object.assign(n.style,d(d(d(d({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){u(this,"adcode",0),u(this,"pcenter",[104,37.5]),u(this,"pscale",5e4),u(this,"projection",void 0),u(this,"options",void 0),u(this,"group",void 0),u(this,"building",void 0),u(this,"road",void 0),u(this,"pencil",void 0),u(this,"lead",void 0),u(this,"sceneResources",void 0),u(this,"multiplyScalar",.001),this.pencil=e,this.lead=e.lead,this.sceneResources=e.sceneResources}setOptions(e){this.options=d({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 t(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 n=this;return t(function*(){const{adcode:t}=n.options,{sources:r,data:i}=yield n.preloadResources();if(n.adcode=n.options.adcode,n.options.center&&(n.pcenter=n.options.center),n.projection=A(n.getProjectionOptions()),n.group=e||(yield n.lead.draw(Jr.Group)),!e){const e=Vr(t);n.group.object3d.name=`城市-${e?e.name:t}`,n.group.scale.multiplyScalar(n.multiplyScalar)}Object.assign(n.group.userData,{mapRole:"city",adcode:t});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=-A(n.getProjectionOptions())([n.pcenter[0],899e-8+n.pcenter[1]])[1];yield Promise.all([n.options.showBuilding&&n.drawBuilding({jsonUrl:r.building,meters:l,grey:n.options.grey,hasSide:n.options.buildingHasSide}),n.options.showRoad&&n.drawRoad({jsonUrl:r.road,meters:l,z:c.length,grey:n.options.grey}),n.options.showRiver&&n.drawArea({jsonUrl:r.river,type:"river",oArr:c,grey:n.options.grey}),n.options.showGrassland&&n.drawArea({jsonUrl:r.grassland,type:"grassland",oArr:c,grey:n.options.grey})].filter(Boolean))})()}drawCityPlane(e,n){var r=this;return t(function*(){var t,i;const o=null===(t=Zn(r.sceneResources,null===(i=r.options.materialBindings)||void 0===i?void 0:i.city))||void 0===t?void 0:t.plane,s=Vr(e).b,a=r.projection([s[0],s[1]]),c=r.projection([s[2],s[3]]),l=Math.abs(c[0]-a[0]),d=Math.abs(c[1]-a[1]),u=yield(null!=n?n:r.group).draw(Jr.CityPlane,{width:10*l,height:10*d,material:o});n&&u.scale.set(r.multiplyScalar,r.multiplyScalar,1),u.object3d.name="底面",u.keyType="city-plane",Object.assign(u.userData,{mapRole:"cityPlane",adcode:e})})()}drawBuilding(){var e=this;return t(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(Jr.Building,{materialOptions:null!==(n=Zn(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 t(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(Jr.Area,{projection:e.getProjectionOptions(),jsonUrl:t.jsonUrl,material:Zn(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 t(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(Jr.Road,{material:null===(n=Zn(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:Vr,ec:l},wi={findAdcodeInfo:Vr,getProjection:A,objects:Jr},ji={findAdcodeInfo:Vr},Si={cloneMaterialResources:ne,getAdcodeShowLevel:qr},Ai=class e extends Rr{constructor(...e){super(...e),u(this,"mapObj",void 0),u(this,"activePlaneMap",null),u(this,"safeAreaInsets",void 0),u(this,"safeAreaRefitPending",!1),u(this,"parentBg",[]),u(this,"continentsBg",void 0),u(this,"group",void 0),u(this,"projection",void 0),u(this,"pcenter",[104,37.5]),u(this,"pscale",50),u(this,"meters",void 0),u(this,"cityVis",[]),u(this,"cityGroup",[]),u(this,"regionCameraFitReference",void 0),u(this,"authoredCameraPose",void 0),u(this,"cameraAngleOverrides",void 0),u(this,"bundledMapSwitchKey",void 0),u(this,"mapBoundaryMatrix",void 0),u(this,"mapBoundaryEnabled",void 0),u(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())}),u(this,"labelUpdates",void 0),u(this,"labelsDirty",!1),u(this,"labelsDisposed",!1),u(this,"labelGroupObject3dUserData",null),u(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}requireMapAuthorization(e){var n=this;return t(function*(){yield Hr(n,e,n.bundledMapSwitchKey)})()}authorizeSceneOptions(e){var n=this;return t(function*(){var t,r;const i=(o=n,Xr.get(o));var o;if(i)return void(yield n.requireMapAuthorization(i.adcode));const s=new Set([e.adcode,null===(t=e.sceneBindings)||void 0===t||null===(t=t.region)||void 0===t?void 0:t.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 n.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(d(d({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 Jr}get defaultCameraUp(){return new bt(0,0,1)}onRuntimeReady(){var e=this;return t(function*(){e.updateProjection(),e.pencil.event.on("beforeRender",e.refreshMapBoundary)})()}prepareInitialCamera(){var e=this;return t(function*(){if(e.updateMapBoundary(),!e.map||!e.mapObj)return;const t=e.getCameraFitReference();yield e.fitTo(e.map,d(d({},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 bt(0,0,1).applyMatrix3((new Ie).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 et(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),gi)}finalizeRegionGeometry(){var e=this;return t(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(n,r){var i=this;return t(function*(){return function(e,t,n){return si.apply(this,arguments)}(e.cityLayersContext(i),n,r)})()}initCitySequence(n,r=!1){var i=this;return t(function*(){return function(e,t){return ai.apply(this,arguments)}(e.cityLayersContext(i),n,r)})()}initCityVis(n,r=!1){var i=this;return t(function*(){return function(e,t){return ci.apply(this,arguments)}(e.cityLayersContext(i),n,r)})()}initCityOnMap(n){var r=this;return t(function*(){return function(e,t,n){return li.apply(this,arguments)}(e.cityLayersContext(r),bi,n)})()}_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 bt(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 n=this;return t(function*(){return function(e,t){return di.apply(this,arguments)}(e.backgroundsContext(n),wi)})()}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 n=this;return t(function*(){return function(e,t){return ui.apply(this,arguments)}(e.backgroundsContext(n),wi)})()}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 t(function*(){e.pencil.scene.userData.shadowMapEnabled||(e.pencil.scene.userData.shadowMapEnabled=!0);const[t]=yield Promise.all([e.lead.draw(Jr.SpotLight,"#c1e6dd",1,0,.5,1,0),e.lead.draw(Jr.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 qr(e,t)}setLabels(e,t={}){return this.updateLabels(e,!1,t.signal)}drawLabels(){return this.updateLabels(this.options.showLabel,!0)}updateLabels(n,r,i){var o,s,a=this;return this.labelsDisposed?Promise.reject(new DOMException("Map disposed","AbortError")):(null!==(o=this.labelUpdates)&&void 0!==o?o:this.labelUpdates=new Kt).run((s=t(function*(t){if(!r&&!a.labelsDirty&&a.options.showLabel===n)return;const i=a.options.showLabel;a.options.showLabel=n;try{n?yield function(e,t,n){return ri.apply(this,arguments)}(e.labelsContext(a),yi,t):oi(e.labelsContext(a)),qt(t),a.labelsDirty=!1}catch(o){throw a.options.showLabel=i,a.labelsDirty=!0,o}}),function(e){return s.apply(this,arguments)}),i)}eraseLabels(){var t;return null===(t=this.labelUpdates)||void 0===t||t.cancel(),this.labelsDirty=!0,oi(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 bt(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 bt(0,0,1).applyNormalMatrix((new Ie).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 bt(...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 bt(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:Vr(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(Nt(e),Ft([t]))):"MultiPolygon"===t.geometry.type&&n.some(t=>t.some(t=>Gt(Nt(e),Ft([t]))))})}_loadGeojsonFromConfig(e){var n=this;return t(function*(){if("number"==typeof e){var t;const r=null===(t=n.options.assetSources)||void 0===t?void 0:t.regionGeojson;if(!r)throw new Error("Map.assetSources.regionGeojson is required");return i(r.split("{adcode}").join(String(e)),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})}return"string"==typeof e?i(e,{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}}):e})()}_loadBaseGeojson(e,n){var r=this;return t(function*(){const t=r.options.assetSources;if(!t)throw new Error("Map.assetSources is required to load dynamic regions");const o=(e=>Wr.some(t=>t.adcode===e))(e),s=t=>t.split("{adcode}").join(String(e));return 0===e?i(s(n?t.worldLiteGeojson:t.worldGeojson),{assetsPrefix:r.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:r.resolveAssetUrl}}):o?{type:"FeatureCollection",features:(yield i(s(t.continentsLiteGeojson),{assetsPrefix:r.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:r.resolveAssetUrl}})).features.filter(t=>{var n;return(null===(n=t.properties)||void 0===n?void 0:n.adcode)===e})}:i(s(n?t.regionLiteGeojson:t.regionGeojson),{assetsPrefix:r.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:r.resolveAssetUrl}})})()}getGeojson(e,n=!1){var r=this;return t(function*(){var t;const i=r.options.mapData;var o;if((null==i?void 0:i.adcode)===e)return"builtin"===i.mode?r._loadBaseGeojson(e,n):structuredClone(n&&null!==(o=i.outlineGeojson)&&void 0!==o?o:i.geojson);const s=n?r.options.extrudeLineGeojsonMapReplace:r.options.geojsonMapReplace;if(null==s?void 0:s[e])return r._loadGeojsonFromConfig(s[e]);let a=yield r._loadBaseGeojson(e,n);if(!n&&a&&(null===(t=r.options.geojsonExtensions)||void 0===t?void 0:t[e])){const t=r.options.geojsonExtensions[e],n=Array.isArray(t)?t:[t],i=(yield Promise.all(n.map(e=>r._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=d(d({},a),{},{features:[...a.features,...i.flatMap(e=>e.features).filter(e=>e.properties&&!o.has(e.properties.adcode)).map(e=>d(d({},e),{},{properties:d({extension:!0},e.properties)}))]})}return a})()}buildRegion({adcode:e,depth:n=this.options.mapDepth,extrudelineBloom:r}){var i=arguments,o=this;return t(function*(){if(i.length>1)throw Error("External map keys are not supported; use the bundle authorization");if(yield o.requireMapAuthorization(e),o.mapObj)throw new Error("Map already has a main region; use SceneManager.switchMapRegion()");const t=Vr(+e);if(!t)throw new Error(`Unknown map region: ${e}`);const{name:s}=t;let a=yield o.getGeojson(e),c=yield o.getGeojson(e,!0);if(o.options.showDistrict||"city"!==o.getAdcodeShowLevel(e)||(a=c,c=void 0),[a,c].filter(Boolean).forEach(t=>{var n;if((null===(n=o.options.mapData)||void 0===n?void 0:n.adcode)!==e&&!t.features[0].properties.adcode&&/^\d{6}$/.test(`${e}`)){const n=Vr(e);t.features[0].properties=d(d(d({},t.features[0].properties),n),{},{center:[n.lng,n.lat]})}}),!a)throw new Error(`${s}的地图数据不存在`);{var l,u;if((null===(l=o.options.mapData)||void 0===l?void 0:l.adcode)!==e&&(null===(u=o.options.fixGeojson)||void 0===u?void 0:u[e])){var p;const t=null===(p=o.options.fixGeojson)||void 0===p?void 0:p[e];if(t.startsWith("-")){const e=+t.slice(1);a.features=a.features.filter(t=>t.properties.adcode!==e)}}const i=t.b,s=0,d=$t(a).geometry.coordinates,[h,f]=o.projection(d),v=yield o.drawPlaneMap({geojson:a,extrudeLineGeojson:c,depth:n,bbox:i,adcode:e,extrudelineBloom:r});v.position.z=s,o.mapObj={map:v,mapInfo:t,z:s,depth:n,cX:h,cY:-f},o.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 bt,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 me;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(d({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),gi,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 bt),o=r.getWorldDirection(new bt),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 bt(...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 bt)));c=i.clone().addScaledVector(o,t)}const l=[...i.toArray(),...c.toArray()];return ti(l)?l:void 0}(e.mapCameraContext(this),gi)}getCameraFitReference(){return function(e){var t;const n=null===(t=e.scene.cameraState)||void 0===t?void 0:t[e.scene.cameraStateActive],r=ti(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(n,r,i){var o=this;return t(function*(t,n,r,i={lookat:t,adcode:n}){return function(e,t,n,r,i){return Zr.apply(this,arguments)}(e.mapCameraContext(o),gi,t,n,r,i)}).apply(this,arguments)}fitTo(n){var r=this;return t(function*(t,{polarAngle:n,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l=!0,smoothTime:d=250}={}){return function(e,t,n){return Qr.apply(this,arguments)}(e.mapCameraContext(r),gi,t,{polarAngle:n,azimuthAngle:i,reference:o,z:s,handleStart:a,adcode:c,enableTransition:l,smoothTime:d})}).apply(this,arguments)}drawPlaneMap({geojson:e,extrudeLineGeojson:n,bbox:r,depth:i,extrudelineBloom:o,adcode:s}){var a=this;return t(function*(){var t,c,l;const u=null===(t=a.regionAppearance)||void 0===t?void 0:t.materialOptions,p=d({},a.getMaterialGroup("plane"));for(const[e,n]of Object.entries(null!=u?u:{}))n&&(p[e]=n);if(!(null==p?void 0:p.topMat))throw new Error("Map scene has no region top material");const h=p,f=a.getMaterialGroup("bgPlane"),v=d(d({},h),f?{bgTopMat:f.topMat,bgSideMat:f.sideMat,bgLineMat:f.lineMat,bgExtrudeLineMat:f.extrudeLineMat}:{}),m=yield a.group.draw(Jr.PlaneMap,d(d({},a.regionAppearance),{},{geojson:e,extrudeLineGeojson:n,hasExtrudeLine:a.options.extrudeLine,depth:i,projection:{center:a.pcenter,scale:a.pscale,rotate:a.options.worldPacificCentre?[-160,0]:void 0,projectionType:a.options.projectionType},materialOptions:v,bbox:r,topSegments:a.options.topSegments,bevelRatio:null!==(c=a.options.mapBevel)&&void 0!==c?c:0,lineOffset:a.options.lineOffset,mergeSide:a.options.mergeSide,castShadow:!0}));return Object.assign(m.userData,{mapRole:"region",adcode:s}),m.object3d.name=(null===(l=Vr(s))||void 0===l?void 0:l.name)||`${s}`,a.options.cityOnMap&&!a.options.showCityOnMapInnerLine&&p.lineMat&&(p.lineMat.colorWrite=!1),m.extrudelineArr&&m.extrudelineArr.forEach(e=>{e.object3d.name="板块边线",e.keyType="extrudeLine",a.applyObjectState(e),o&&a.setObjectState(e,{bloom:!0})}),m.lineArr&&m.lineArr.forEach(e=>{a.applyObjectState(e)}),m})()}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&&d({},t.safeAreaInsets);var t}setSafeAreaInsets(t,n={}){return function(e,t,n={}){var r;const i=void 0===t?void 0:ni(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 n=this;return t(function*(t={}){return function(e){return ei.apply(this,arguments)}(e.mapCameraContext(n),t)}).apply(this,arguments)}findAdcodeInfo(e){return Vr(e)}updateOptionsForAdcode(e){const t=Vr(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=Vr(t.parent);this.options.nearbyCities="district"===t.level&&"city"===(null==e?void 0:e.level)}}updateProjection(){this.pcenter=this._getProjectionCenter(),this.projection=A({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 n=this;return t(function*(){var t;n.updateProjection(),n.mapBoundaryMatrix=void 0,n.mapBoundaryEnabled=void 0,n.mapObj=void 0,n.parentBg=[];const r=n.options.sceneBindings;if(!r)throw new Error("Map scene requires sceneBindings; re-export it from editor-platform");const i=e=>n.lead.objects.get(e);if(n.group=i(r.container),!n.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=Vr(o.adcode);if(!a)throw new Error(`Unknown map region: ${o.adcode}`);const c=n.projection([a.lng,a.lat]);n.mapObj={map:s,mapInfo:a,z:s.position.z,depth:null!==(t=s.options.depth)&&void 0!==t?t:n.options.mapDepth,cX:c?c[0]:0,cY:c?-c[1]:0},n.options.mapDepth=n.mapObj.depth,n.authoredCameraPose=n.readAuthoredCameraPose(),n.regionCameraFitReference=void 0,n.cameraAngleOverrides=void 0,n.getCameraFitReference(),void 0!==n.adcode&&(n.options.adcode=n.adcode);n.parentBg=r.parentBackgrounds.flatMap(e=>{const t=i(e);return t?[t]:[]}),n.continentsBg=r.continentsBackground?i(r.continentsBackground):void 0,n.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 n.cityGroup)e.userData.mapRole="city";n.options.sceneBindings=n.getSceneBindings(),n.updateMapBoundary(),yield function(e,t,n){return fi.apply(this,arguments)}(e.regionTexturesContext(n),Si,o.adcode),n.options.showLabel&&(yield n.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(n){var r=this;return t(function*(){return function(e,t){return pi.apply(this,arguments)}(e.regionOverlaysContext(r),n)})()}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 bt).sub(t.target.getWorldPosition(new bt))}]:[]});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:y,offset:b}of p){const e=y.getWorldPosition(new bt).addScaledVector(b,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=Te(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(Te(t))});for(const g of f)hi(g,v,m)}(e.regionOverlaysContext(this),ji,t,n)}rebuildRegion(e,n=!1){var r=arguments,i=this;return t(function*(){if("boolean"!=typeof n||r.length>2)throw Error("External map keys are not supported; use the bundle authorization");if(yield i.requireMapAuthorization(e),i.adcode===e&&!n)return;if(!Vr(e))throw new Error(`Unknown map region: ${e}`);const t=i.pencil.resources.createScope("map-region-rebuild");try{var o;i.map&&i.sceneResources.prepareOptionMaterials(i.map.options,t);const r=n&&i.adcode===e;r&&(null===(o=i.map)||void 0===o||o.traverse(e=>{const n=e.object3d.material;for(const r of Array.isArray(n)?n:[n])r&&t.retain(r)})),yield i.rebuildRegionGeometry(e,r)}finally{t.dispose()}})()}rebuildRegionGeometry(e,n=!1){var r=this;return t(function*(){var i,o,s,a,c;const l=(u=t(function*(t,n){try{return yield n()}catch(i){throw console.error("[vis-core:map-region] step failed",t,i instanceof Error?i.stack:String(i),{stage:t,sourceAdcode:r.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 u.apply(this,arguments)});var u;const p=null!==(i=r.adcode)&&void 0!==i?i:r.options.adcode,h=(null!==(o=null!==(s=null===(a=r.map)||void 0===a?void 0:a.options.depth)&&void 0!==s?s:null===(c=r.mapObj)||void 0===c?void 0:c.depth)&&void 0!==o?o:r.options.mapDepth)*r.getReferenceScale(Vr(p).b,Vr(e).b),f=r.captureOverlayLayers(),v=[],m=r.map,g=new globalThis.Map,y=new globalThis.Map;if(null==m||m.traverse(e=>{e.userData.mapGeneratedId&&!e.userData.copySource&&(g.set(e.userData.mapGeneratedId,e.object3d.uuid),n&&y.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()}))}),r.regionAppearance=m?d({},m.options):void 0,r.regionAppearance&&delete r.regionAppearance.uuid,m){const e=m,t=/* @__PURE__ */new Set([...e.groupArr,...e.areaArr,...e.lineArr||[],...e.extrudelineArr||[],...e.mergeSideArea?[e.mergeSideArea]:[]]),n=i=>{for(const o of[...i.children])t.has(o)?n(o):o.userData.copySource||(e.object3d.attach(o.object3d),r.group.add(o),v.push(o))};n(e)}const b=m&&d({},m.object3d.userData),w=m&&{position:m.position.clone(),quaternion:m.object3d.quaternion.clone(),scale:m.scale.clone(),visible:m.visible},j=r.continentsBg&&!r.options.continentsBgAtOrigin?r.worldToObjectParent(r.getMainMapLocationPosition([104,37.5]),r.continentsBg):void 0;null==m||m.erase();for(const e of r.cityGroup)e.erase();if(r.mapObj=void 0,r.cityGroup=[],r.cityVis=[],r.pencil.controls.setBoundary(),r.pencil.controls.maxDistance=1/0,r.pencil.controls.minDistance=0,r.updateOptionsForAdcode(e),r.updateProjection(),yield l("create-region-geometry",()=>r.buildRegion({adcode:e,depth:h})),!r.map)throw new Error(`Unable to build map region ${e}`);if(m&&r.lead.setObjectUuid(r.map,m.object3d.uuid),r.map.traverse(e=>{const t=g.get(e.userData.mapGeneratedId);t&&r.lead.setObjectUuid(e,t);const n=y.get(e.userData.mapGeneratedId);n&&(e.name=n.name,e.object3d.visible=n.visible,e.position.copy(n.position),e.object3d.quaternion.copy(n.quaternion),e.scale.copy(n.scale),n.material&&(e.object3d.material=n.material,"material"in e.options&&(e.options.material=n.material),r.sceneResources.addBaseObjectMap(e)))}),b&&Object.assign(r.map.object3d.userData,b),w&&(r.map.position.copy(w.position),r.mapObj.z=r.map.position.z,r.map.object3d.quaternion.copy(w.quaternion),r.map.scale.copy(w.scale),r.map.object3d.visible=w.visible),r.continentsBg&&j){const e=r.worldToObjectParent(r.getMainMapLocationPosition([104,37.5]),r.continentsBg);r.continentsBg.position.x+=e.x-j.x,r.continentsBg.position.y+=e.y-j.y}for(const e of v)r.map.add(e);yield l("create-parent-background",()=>r.ensureParentBackground()),yield l("create-continents-background",()=>r.ensureContinentsBackground()),r.options.cityOnMap&&(yield l("create-city-layer",()=>r.initCityOnMap(e))),yield l("restore-overlay-layers",()=>r.applyOverlayLayers(f)),yield l("apply-switch-fixes",()=>r.applyRegionObjectState(e,p)),yield l("apply-region-textures",()=>r.applyRegionTextureRules(e)),yield l("finalize-region",()=>r.finalizeRegionGeometry()),r.options.mapDepth=r.mapObj.depth,r.options.sceneBindings=r.getSceneBindings()})()}playRegionEnterTransition({duration:e,sourceCamera:n,preparedCamera:r,onPrepared:i}){var o=this;return t(function*(){const t=o.map,s=o.mapObj;if(!t||!s)return void(yield o.playEnterTransition({duration:e,onPrepared:i}));r||(yield o.fitTo(t,{adcode:s.mapInfo.adcode,reference:o.regionCameraFitReference,z:t.position.z+s.depth,enableTransition:!1}));const a=null!=r?r:[...o.pencil.cameraPositon.toArray(),...o.pencil.cameraTarget.toArray()];if(!n||e<=0)return void(null==i||i());const c=o.pencil.controls;yield c.setLookAt(...n,!1),null==i||i(),yield X({owner:o.pencil,onUpdate:e=>{const t=a.map((t,r)=>n[r]+(t-n[r])*e);c.setLookAt(...t,!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),Si,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=s.clone();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(n){var r=this;return t(function*(){return vi(e.regionTexturesContext(r),Si,n)})()}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)}}};u(Ai,"VisName","map");var Oi=/* @__PURE__ */new WeakMap;function xi(e){e&&Oi.delete(e)}function Ii(e){const t=Oi.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,[],[]),Oi.set(e,n),n}function Mi(e,t){const n=()=>{const n=Ii(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||(xi(e),n())}function Ei(e,t){const n=Oi.get(e);n&&t&&"object"==typeof t&&Oi.set(t,n)}function Pi(e,t){const n={children:/* @__PURE__ */new Map};for(const[o,s]of t){const t=Mi(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=d({},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 Ei(e,i),i}var Di=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"]),Ci=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","pivot","name","visible","layers"]),Ri=/* @__PURE__ */new Set(["castShadow","receiveShadow","frustumCulled","matrixAutoUpdate","visible"]),Li={matrix:16,pivot:3,up:3,center:2,backgroundRotation:3,environmentRotation:3},ki=e=>Di.has(e),Bi=e=>Di.has(e)||Ci.has(e),Ti={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 _i(e,t){return Ri.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)):Li[e]?Array.isArray(t)&&(t.length===Li[e]||e.endsWith("Rotation")&&4===t.length)&&Object.keys(t).length===t.length&&Array.from(t.slice(0,Li[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(!Mi(i.scene.object,l.uuid))throw Error("Scene property target was not found");for(const[e,t]of Object.entries(l.state))if(!Bi(e)||!_i(e,t))throw Error(`Invalid scene object property ${e}`);if(null===(s=l.unset)||void 0===s?void 0:s.some(e=>!Bi(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=Pi(i.scene.object,o),c=[...e.scenes];return c[r]=d(d({},i),{},{scene:d(d({},i.scene),{},{object:a})}),d(d({},e),{},{scenes:c})}var zi=/* @__PURE__ */new Set(["matrix","matrixAutoUpdate","up","layers","visible","near","far","fov","aspect","zoom","left","right","top","bottom","focus","filmGauge","filmOffset","view"]),Gi=e=>zi.has(e);function $i(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=>!zi.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[d,p]of Object.entries(s.state))if(!("matrix"===d||"up"===d?Array.isArray(p)&&p.length===("matrix"===d?16:3)&&[...p].every(Number.isFinite):"matrixAutoUpdate"===d||"visible"===d?"boolean"==typeof p:"layers"===d?Number.isInteger(p)&&p>=-2147483648&&p<=4294967295:"view"===d?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)):zi.has(d)&&Number.isFinite(p)))throw new Error(`Invalid scene camera property ${d}`);const a=null===(r=Mi(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=Pi(o.scene.object,/* @__PURE__ */new Map([[s.uuid,c.camera]])),u=[...e.scenes];return u[i]=d(d({},o),{},{cs:c.cs,csa:c.csa,vis:d(d({},o.vis),{},{options:d(d({},o.vis.options),{},{controls:c.controls})}),scene:d(d({},o.scene),{},{object:l})}),d(d({},e),{},{scenes:u})}var Wi=["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"],Ni=["geometries","materials","textures","images","skeletons","animations"],Fi=["materialAliases","shapes","_sharedOptionsPool","_texDataPool"],Vi=e=>!!e&&"object"==typeof e&&!Array.isArray(e),qi=e=>Vi(e)&&[Object.prototype,null].includes(Object.getPrototypeOf(e)),Hi=e=>"string"==typeof e&&!!e,Ki=(e,t)=>Object.keys(e).every(e=>t.includes(e));function Xi(e){return null===e||"boolean"==typeof e||"string"==typeof e||("number"==typeof e?Number.isFinite(e):Array.isArray(e)?e.every(Xi):qi(e)&&Object.entries(e).every(([e,t])=>!["__proto__","constructor","prototype"].includes(e)&&Xi(t)))}function Yi(e,t){if(!qi(e))throw new Error("Invalid scene material aliases");for(const[n,r]of Object.entries(e))if(!Hi(n)||!qi(r)||!Ki(r,[t?"materialUuid":"assetId","locked","roles"])||!Hi(r[t?"materialUuid":"assetId"])||void 0!==r.locked&&"boolean"!=typeof r.locked||void 0!==r.roles&&(!Array.isArray(r.roles)||r.roles.some(e=>!Hi(e))))throw new Error("Invalid scene material alias")}function Ji(e,t,n,r){var i,o,s;if(!Vi(t)||!Ki(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=>!Hi(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(!Vi(p)||!Hi(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(!Vi(p)||!Hi(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(!Hi(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 Zi(e,t=!0){var n,r;if(!Vi(e)||!Ki(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&&!Vi(e.resources)||void 0!==e.assets&&!Vi(e.assets)||void 0!==e.prefabs&&!Vi(e.prefabs))throw new Error("Invalid scene structure patch");!function(e){if(void 0!==e.interactions){const t=e.interactions;if(!qi(t)||!Ki(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)||!Ki(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")&&Yi(t.set,!1)}if(void 0!==e.graph){var t;const n=e.graph;if(!qi(n)||!Ki(n,["set","unset"])||void 0!==n.set&&(!qi(n.set)||!Ki(n.set,Fi))||void 0!==n.unset&&(!Array.isArray(n.unset)||new Set(n.unset).size!==n.unset.length||n.unset.some(e=>{var t;return!Fi.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)Yi(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)||!Hi(t.uuid)||e.has(t.uuid))throw new Error("Invalid or duplicate scene shape UUID");e.add(t.uuid)}}if("_texDataPool"===e&&r.some(e=>"string"!=typeof e&&!(Vi(e)&&Object.hasOwn(e,"_documentResource"))))throw new Error("Invalid texture data pool payload")}}}(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)||Vi(i.state.userData)&&[Object.prototype,null].includes(Object.getPrototypeOf(i.state.userData))))throw new Error("Invalid structure object property userData")}function Qi(e,t,n){return Zi(n),eo(e,t,structuredClone(n),!0)}function eo(e,t,n,r){var i,o,s,a,c,l,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=Ii(f),m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Map,y=/* @__PURE__ */new Map;for(const d of null!==(i=n.replacements)&&void 0!==i?i:[]){if(!Vi(d)||!Hi(d.uuid)||!v.has(d.uuid)||g.has(d.uuid))throw new Error("Invalid or conflicting replacement object UUID");g.set(d.uuid,d)}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 d=0;d<b.length;d++)for(let e=d+1;e<b.length;e++)if(w(b[d],b[e])||w(b[e],b[d]))throw new Error("Nested scene structure replacement roots");const j=(e,t)=>{var n;if(!Vi(e)||!Hi(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[d,K]of g)j(K,v.get(d).path);const S=e=>{var t;if(!Vi(e)||!Hi(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 d of null!==(o=n.additions)&&void 0!==o?o:[])S(d);const A=new Map([...m,...y]),O=e=>{var t;if(A.has(e))return A.get(e);const n=null===(t=Mi(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 d of n.parents){if(!Vi(d)||!Ki(d,["uuid","children"])||!Hi(d.uuid)||x.has(d.uuid)||!Array.isArray(d.children)||d.children.some(e=>!Hi(e))||new Set(d.children).size!==d.children.length)throw new Error("Invalid or duplicate scene structure parent");O(d.uuid),x.set(d.uuid,d.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",...Wi];for(const a of null!=e?e:[]){var i,o,s;if(!Vi(a)||!Ki(a,["uuid","state","unset"])||!Hi(a.uuid)||n.has(a.uuid)||!Vi(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||Hi(n)):"material"===e?a.uuid!==t&&(Hi(n)||Array.isArray(n)&&n.every(Hi)):"background"===e?a.uuid===t&&(null===n||Hi(n)||Number.isInteger(n)&&n>=0&&n<=16777215):"environment"===e?a.uuid===t&&(null===n||Hi(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)&&Xi(n):"view"===e?null===n||qi(n)&&Xi(n):Wi.includes(e)?Number.isFinite(n):"userData"===e&&Vi(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 d of I.keys())O(d);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,!Vi(e)||!Hi(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 d=0;d<s.length;d++){var l;const e=P(s[d]);e!==o[d]&&(null!==(l=a)&&void 0!==l||(a=s.slice())),a&&(a[d]=e)}o.length!==s.length&&(null!==(i=a)&&void 0!==i||(a=s.slice())),a&&(c=d(d({},e),{},{children:a}));const u=I.get(e.uuid);if(u){var p;c=d({},c);for(const e of null!==(p=u.unset)&&void 0!==p?p:[])delete c[e];Object.assign(c,u.state)}return M.delete(e.uuid),E.set(e.uuid,c),c},D=P(f);for(const d of m.keys())if(!E.has(d))throw new Error("Added object is detached from the scene");for(const d of g.keys())if(!E.has(d))throw new Error("Replaced object is detached from the scene");for(const d of I.keys())if(!E.has(d))throw new Error("Patched object is detached from the scene");for(const[d,K]of x)if(K.length&&!E.has(d))throw new Error("Patched parent is detached from the scene");let C=D===f?h.scene:d(d({},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=d({},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=d({},C)),C[e]=t)}if(n.resources){if(!Ki(n.resources,Ni))throw new Error("Invalid scene resource patch kind");for(const e of Ni)if(Object.hasOwn(n.resources,e)){const t=n.resources[e];if(Vi(t)&&Object.hasOwn(t,"unset")){if(!Ki(t,["unset"])||!0!==t.unset)throw new Error("Invalid scene resource table unset");Object.hasOwn(C,e)&&(C=d({},C),delete C[e])}else{const n=Ji(C[e],t,"uuid",e);n!==C[e]&&(C=d(d({},C),{},{[e]:n}))}}}const k=n.assets?Ji(e.materialLibrary,n.assets,"id","material assets"):e.materialLibrary,B=n.prefabs?Ji(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===(c=n.aliases)||void 0===c?void 0:c.set)&&void 0!==a?a:h.materialAliases,_=!!n.interactions&&Object.hasOwn(n.interactions,"set"),U=(null===(l=n.interactions)||void 0===l?void 0:l.unset)?void 0:_?n.interactions.set:h.interactions,z=(null===(u=n.interactions)||void 0===u?void 0:u.unset)?Object.hasOwn(h,"interactions"):_&&(!Object.hasOwn(h,"interactions")||U!==h.interactions);if(function(e,t){var n,r;const i=/* @__PURE__ */new Map;for(const d of Ni){var o;if(void 0!==e[d]&&!Array.isArray(e[d]))throw new Error(`Invalid scene ${d} table`);const t=/* @__PURE__ */new Map;for(const n of null!==(o=e[d])&&void 0!==o?o:[]){if(!Vi(n)||!Hi(n.uuid)||t.has(n.uuid))throw new Error(`Invalid or duplicate scene ${d} UUID`);t.set(n.uuid,n)}i.set(d,t)}const s=(e,t)=>{if(!Hi(t)||!i.get(e).has(t))throw new Error(`Missing scene ${e} reference ${String(t)}`)},a=/* @__PURE__ */new Set;for(const d of t.values()){if(void 0!==d.geometry&&null!==d.geometry&&s("geometries",d.geometry),void 0!==d.material)for(const e of Array.isArray(d.material)?d.material:[d.material])s("materials",e);if(void 0!==d.skeleton&&(s("skeletons",d.skeleton),a.add(d.skeleton)),void 0!==d.animations){if(!Array.isArray(d.animations))throw new Error("Invalid object animations");for(const e of d.animations)s("animations",e)}ze(d.userData,(e,t)=>s("materials",e[t]),e._sharedOptionsPool)}for(const d of i.get("materials").values()){var c;Me(d,(e,t)=>{"PMREM_PLACEHOLDER"!==e[t]&&s("textures",e[t])});for(const[e,t]of Object.entries(d))"map"!==e&&"matcap"!==e&&!e.endsWith("Map")||null==t||"PMREM_PLACEHOLDER"===t||s("textures",t);for(const e of Object.values(null!==(c=d.uniforms)&&void 0!==c?c:{}))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 l=new Set((null!==(n=e.shapes)&&void 0!==n?n:[]).map(e=>null==e?void 0:e.uuid));for(const d of i.get("geometries").values())if(void 0!==d.shapes&&(!Array.isArray(d.shapes)||d.shapes.some(e=>!Hi(e)||!l.has(e))))throw new Error("Missing scene geometry shape reference");for(const d of i.get("textures").values()){const t=["_videoSrc","_dataTexBase64"].map(t=>{var n;let r=null===(n=d.userData)||void 0===n?void 0:n[t];if("number"==typeof r){var i;if(!Number.isInteger(r)||r<0||void 0===(null===(i=e._texDataPool)||void 0===i?void 0:i[r]))throw new Error("Invalid texture data pool reference");r=e._texDataPool[r]}if(!(void 0===r||"string"==typeof r||Vi(r)&&Object.hasOwn(r,"_documentResource")))throw new Error("Invalid texture data payload");return r}),n="PMREM_PLACEHOLDER"===d.uuid||"PMREM.cubeUv"===d.name||t.some(e=>void 0!==e);if(void 0!==d.image)for(const e of Array.isArray(d.image)?d.image:[d.image]){if("string"!=typeof e)throw new Error("Invalid texture image reference");n&&!i.get("images").has(e)||s("images",e)}}for(const d of a){const e=i.get("skeletons").get(d);if(!Array.isArray(e.bones)||e.bones.some(e=>!Hi(e)||!t.has(e)))throw new Error(`Invalid skeleton bones ${d}`)}for(const d of["background","environment"])"string"==typeof e.object[d]&&"PMREM_PLACEHOLDER"!==e.object[d]&&s("textures",e.object[d]);for(const d of Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}))s("materials",null==d?void 0:d.materialUuid)}(C,E),!n.viewport&&C===h.scene&&T===h.materialAliases&&!z&&k===e.materialLibrary&&B===e.prefabLibrary)return e;const G=e.scenes.slice();if(C!==h.scene||T!==h.materialAliases||z){var $,W,N;const e=d(d({},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:_&&(e.interactions=U),G[p]=e}else G[p]=h;let F=d(d(d({},e),{},{scenes:G},k!==e.materialLibrary?{materialLibrary:k}:{}),B!==e.prefabLibrary?{prefabLibrary:B}:{});if(n.viewport){var V,q,H;const e=n.viewport;if(!(qi(e)&&Ki(e,["camera","cs","csa","controls"])&&(void 0===e.controls||qi(e.controls)&&Xi(e.controls))&&(void 0===e.cs||qi(e.cs)&&Xi(e.cs))&&(void 0===e.csa||"string"==typeof e.csa)))throw Error("Invalid structure viewport patch");if(e.camera)F=$i(F,t,d(d({},e),{},{camera:e.camera,cs:Object.hasOwn(e,"cs")?e.cs:h.cs,csa:Object.hasOwn(e,"csa")?e.csa:h.csa,controls:null!==(V=null!==(q=e.controls)&&void 0!==q?q:null===(H=h.vis.options)||void 0===H?void 0:H.controls)&&void 0!==V?V:{}}));else{const t=d({},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=d(d({},t.vis),{},{options:d(d({},t.vis.options),{},{controls:e.controls})})),F.scenes[p]=t}}return r&&pt(F),F}function to(e,t){if(!Vi(t)||!Ki(t,["scenes","assets","prefabs"])||!Array.isArray(t.scenes)||void 0!==t.assets&&!Vi(t.assets)||void 0!==t.prefabs&&!Vi(t.prefabs))throw new Error("Invalid scene structure transaction");const n=/* @__PURE__ */new Set;for(const a of t.scenes){if(!Vi(a)||!Ki(a,["sceneId","patch"])||!Hi(a.sceneId)||n.has(a.sceneId))throw new Error("Invalid or duplicate scene structure transaction scene");n.add(a.sceneId),Zi(a.patch,!1)}const r=structuredClone(t);let i=e;for(const{sceneId:a,patch:c}of r.scenes)i=eo(i,a,c,!1);const o=r.assets?Ji(e.materialLibrary,r.assets,"id","material assets"):e.materialLibrary,s=r.prefabs?Ji(e.prefabLibrary,r.prefabs,"id","prefab assets"):e.prefabLibrary;return o===i.materialLibrary&&s===i.prefabLibrary||(i=d(d(d({},i),o!==i.materialLibrary?{materialLibrary:o}:{}),s!==i.prefabLibrary?{prefabLibrary:s}:{})),i!==e&&pt(i),i}function no({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=Mi(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 ro(e=[]){const t=R(e.map(no));return{add:e=>t.add(no(e)),collect:t.collect}}function io(e,t){return ro(t).collect(e)}var oo=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],so=["source","bytes"],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=["bindInteractions","prepareScene","beforeSceneDisplay","cacheScenes","maxCachedScenes","safeAreaInsets","debugInteractions","loadScene"],ho=class extends Error{},fo={base:Rr,earth:Ur,map:Ai},vo=class extends Jn{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",d(d({},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 n=this;return t(function*(){for(;n.isSwitching||n.isRegionSwitching;){let t;qt(e);const r=new Promise(e=>{t=e,n.navigationWaiters.add(t)});try{yield Ht(r,e)}finally{n.navigationWaiters.delete(t)}}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(),u(this,"options",void 0),u(this,"document",void 0),u(this,"manifest",void 0),u(this,"manifestUrl",void 0),u(this,"loadedDefinitions",/* @__PURE__ */new Map),u(this,"definitionLoads",/* @__PURE__ */new Map),u(this,"runtimeHooks",void 0),u(this,"instances",/* @__PURE__ */new Map),u(this,"currentSceneId",""),u(this,"history",[]),u(this,"isSwitching",!1),u(this,"isRegionSwitching",!1),u(this,"pencil",void 0),u(this,"rendererWarmup",void 0),u(this,"disposed",!1),u(this,"safeAreaInsets",void 0),u(this,"generation",0),u(this,"mapRequests",new Kt),u(this,"requestedMapDocument",void 0),u(this,"navigationWaiters",/* @__PURE__ */new Set),u(this,"displayPreparationAbort",new AbortController),u(this,"documentIdentityRevision",0),u(this,"preparedStructures",/* @__PURE__ */new WeakMap),u(this,"pendingInstances",/* @__PURE__ */new Set),u(this,"identityTrackedScenes",/* @__PURE__ */new WeakSet),u(this,"prefabOperations",/* @__PURE__ */new Set),u(this,"transactionCacheDepth",0),u(this,"materialLibraryResources",void 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:ni(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=Rr.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 Ai&&void 0!==this.safeAreaInsets&&e.setSafeAreaInsets(this.safeAreaInsets,{refit:!1})}resolveMapSwitchKey(){return t(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 n=this;return t(function*(e,t=(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 n.resolveMapSwitchKey(t);if(!s.size)throw Error("Map scene has no authorized region");for(const c of s)yield Hr(n,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?Cn:Rn,a=this.document.scenes[o],c=r?Ii(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),u=this.loadedDefinitions.get(e),p=u&&u!==a?s(u,t,n):l;if(l===a&&(!u||p===u))return!1;if(l!==a){const e=[...this.document.scenes];e[o]=l,this.document=d(d({},this.document),{},{scenes:e})}return u&&this.loadedDefinitions.set(e,p),this.documentIdentityRevision++,!0}setSafeAreaInsets(e){var n=this;return t(function*(e,t={}){n.safeAreaInsets=void 0===e?void 0:ni(e);const r=n.getCurrentScene();yield Promise.all([.../* @__PURE__ */new Set([...n.instances.values(),...n.pendingInstances])].filter(e=>e instanceof Ai).map(e=>e.setSafeAreaInsets(n.safeAreaInsets,d(d({},t),{},{refit:e===r&&!n.isSwitching&&!n.isRegionSwitching&&t.refit}))))}).apply(this,arguments)}getSafeAreaInsets(){return this.safeAreaInsets&&d({},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,n,r,i=!1,o){var s=this;return t(function*(){var t,a,c,l;const d=o?AbortSignal.any([s.displayPreparationAbort.signal,o]):s.displayPreparationAbort.signal,u=s.options.beforeSceneDisplay;do{if(qt(d),s.assertGeneration(r),u){let t;const o=new Promise((e,n)=>{t=()=>{const e=/* @__PURE__ */new Error("Scene display preparation was cancelled");e.name="AbortError",n(e)},d.addEventListener("abort",t,{once:!0}),d.aborted&&t()});try{yield Promise.race([Promise.resolve().then(()=>(s.assertGeneration(r),qt(d),u(e,{sceneId:n,signal:d,cameraRefitted:i}))),o])}finally{d.removeEventListener("abort",t)}s.assertGeneration(r)}if(!(e instanceof Ai&&(yield e.refitSafeAreaIfNeeded({transition:!1}))))break;i=!0,s.assertGeneration(r)}while(u);qt(d),null===(t=e.pencil.controls)||void 0===t||null===(a=t.update)||void 0===a||a.call(t,0),null===(c=e.pencil.camera)||void 0===c||null===(l=c.updateMatrixWorld)||void 0===l||l.call(c,!0),s.assertGeneration(r)})()}playTransition(e,n,r,i,o,s=!1,a){var c=this;return t(function*(){var t,l;let d=!1;const u=()=>{d||(d=!0,null==o||o())},p=!1===n?void 0:n,h=null!==(t=null==p?void 0:p.type)&&void 0!==t?t:r,f=!1!==n&&i?Math.max(0,null!==(l=null==p?void 0:p.duration)&&void 0!==l?l:"mapDrill"===h?550:300):0;try{if(!a&&s&&e instanceof Ai&&(0===f||"mapDrill"!==h)&&(yield e.playRegionEnterTransition({duration:0})),0===f)return;"mapDrill"===h&&e instanceof Ai?yield e.playRegionEnterTransition({duration:f,sourceCamera:i,preparedCamera:a,onPrepared:u}):yield e.playEnterTransition({duration:f,onPrepared:u})}catch(v){c.emit("sceneTransitionError",{scene:e,error:v})}finally{u()}})()}setDocument(e){pt(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,t,n){const r=null==e?void 0:e.materialLibrary;if(!r||!e)return[];const i=e._resourcePool,o="vis-scene-manifest"===e.format?e.schemaVersion>=3?6:2===e.schemaVersion?5:4:e.schemaVersion,s=t(),a=s.get(r);if(a&&a.pool===i&&a.schemaVersion===o)return a.resolved;const c=n(r,{schemaVersion:o,_resourcePool:i});return s.set(r,{pool:i,schemaVersion:o,resolved:c}),c}(e,()=>{var e;return null!==(e=this.materialLibraryResources)&&void 0!==e?e:this.materialLibraryResources=/* @__PURE__ */new WeakMap},te)}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?d(d({},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(f){if(!t)throw f;const e=[];for(const n of i.reverse())try{var u,p,h;null===(u=n.setRuntimeAssets)||void 0===u||u.call(n,t.runtimeAssets),null===(p=n.setPrefabLibrary)||void 0===p||p.call(n,null!==(h=t.prefabLibrary)&&void 0!==h?h:[],this.resolvedMaterialLibrary(t))}catch(v){e.push(v)}if(e.length)throw new AggregateError([f,...e],"Prefab library synchronization and rollback failed");throw f}}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);pt({format:Bt,schemaVersion:6,entrySceneId:n.entrySceneId,scenes:n.scenes.map(e=>d(d({},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=d(d({},t.get(e.id)),e);return Object.hasOwn(e,"interactions")||delete n.interactions,n});this.invalidatePendingOperations(),this.document=d(d({},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,d(d({},e),i))}}patchSceneViewport(e,t){if(!this.document||this.isSwitching||this.isRegionSwitching)throw new Error("Scene viewport patches require an idle document");this.document=$i(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,d(d({},l),{},{state:d(d({},l.state),Array.isArray(l.state.pivot)?{pivot:[...l.state.pivot]}:{})}))}if(!i.size)return;const s=this.document.scenes[n],a=Pi(s.scene.object,i),c=[...this.document.scenes];c[n]=d(d({},s),{},{scene:d(d({},s.scene),{},{object:a})}),this.document=d(d({},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=Qi(n,e,t);return this.ownPreparedStructure(n,o,r,i)}prepareSceneStructureTransaction(e){const t=this.requireStructureDocument(),n=this.generation,r=this.documentIdentityRevision,i=to(t,e);return this.ownPreparedStructure(t,i,n,r)}prepareSceneCollectionTransaction(e){const t=this.requireStructureDocument(),n=this.generation,i=this.documentIdentityRevision,o=function(e,t,n,i){if(!t||!Array.isArray(t.scenes)||"string"!=typeof t.entrySceneId)throw new Error("Invalid scene collection transaction");const o=new Map(e.scenes.map(e=>[e.id,e])),s=t.scenes.map(t=>{var i,s;const a=o.get(t.id);if(!n(null===(i=t.vis)||void 0===i?void 0:i.type))throw new Error(`Unsupported vis type: ${null===(s=t.vis)||void 0===s?void 0:s.type}`);if(!a){const n=d({},t.scene),r=["geometries","textures","images","shapes"];for(const e of r)delete n[e];const i=structuredClone(d(d({},t),{},{scene:n}));for(const o of r)if(Object.hasOwn(t.scene,o)){var c,l;const n=t.scene[o];if(!Array.isArray(n)){i.scene[o]=structuredClone(n);continue}const r=null===(c=e.scenes.find(e=>e.scene[o]===n))||void 0===c?void 0:c.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!==(l=t.scene[o])&&void 0!==l?l:[]){var u;const t=null!==(u=s.get(e.uuid))&&void 0!==u?u:[];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=>en(t,e)))&&void 0!==t?t:structuredClone(e)})}return i}if(!en(a.scene,t.scene))throw new Error("Existing scene graphs must use scene structure transactions");if(a.vis.type!==t.vis.type)throw new Error("A loaded scene cannot change its vis type");if(en(a,t))return a;const{scene:p}=t,h=r(t,Qt);return d(d({},structuredClone(h)),{},{scene:a.scene})}),a=(e,t)=>{var n;const r=null!=e?e:[],i=new Map((null!=t?t:[]).map(e=>[e.id,e])),o=r.map(e=>en(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},c=d(d(d({},e),{},{scenes:s,entrySceneId:t.entrySceneId},t.runtimeAssets||e.runtimeAssets?{runtimeAssets:en(t.runtimeAssets,e.runtimeAssets)?e.runtimeAssets:structuredClone(t.runtimeAssets)}:{}),{},{materialLibrary:a(t.materialLibrary,e.materialLibrary),prefabLibrary:a(t.prefabLibrary,e.prefabLibrary)});return i(c),c}(t,e,e=>!!fo[e],pt);return this.ownPreparedStructure(t,o,n,i)}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=d(d({},i),{},{scenes:i.scenes.map(n=>n.id===e?structuredClone(t):n)});return pt(a),this.ownPreparedStructure(i,a,this.generation,this.documentIdentityRevision)}activateSceneForTransaction(e,n,r){var i=this;return t(function*(){null==r||r.throwIfAborted();const t=i.currentSceneId,o=i.getCurrentScene(),s=i.instances.get(e),a=i.captureCamera(o);i.transactionCacheDepth++;try{const t=yield i.switchScene(e,{recordHistory:!1,transition:!1},n);if(!t)throw new Error("Scene navigation is busy");return null==r||r.throwIfAborted(),t}catch(l){var c;i.currentSceneId=t,null==o||o.setSceneActive(),a&&(null===(c=i.pencil)||void 0===c||null===(c=c.controls)||void 0===c?void 0:c.setLookAt)&&(yield i.pencil.controls.setLookAt(...a,!1));const n=i.instances.get(e);throw!s&&n&&n!==o&&(n.dispose(),i.instances.delete(e)),l}finally{i.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&&en(s.scenes,t.scenes)&&en(null!==(n=s.materialLibrary)&&void 0!==n?n:[],null!==(r=t.materialLibrary)&&void 0!==r?r:[])&&en(null!==(i=s.prefabLibrary)&&void 0!==i?i:[],null!==(o=t.prefabLibrary)&&void 0!==o?o:[])&&en(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),u=new Set(l.map(e=>null==e?void 0:e.id)),p=(null!==(a=e.materialLibrary)&&void 0!==a?a:[]).filter(e=>u.has(e.id)),h=new Set(r.map(e=>null==e?void 0:e.id));if(u.size!==l.length||p.length!==l.length||h.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 u.has(null===(t=e.userData)||void 0===t?void 0:t[s])})}).some(e=>!h.has(e.id)))throw new Error("Material definition patch omitted an affected scene");const f=o(e.scenes.filter(e=>h.has(e.id)),p,l,i),v=new Map(f.map(e=>[e.id,e])),m=o([...t.values()].filter(e=>h.has(e.id)),p,l,i),g=new Map(l.map(e=>[e.id,e]));return{document:d(d({},e),{},{materialLibrary:(null!==(c=e.materialLibrary)&&void 0!==c?c:[]).map(e=>{var t;return null!==(t=g.get(e.id))&&void 0!==t?t:e}),scenes:e.scenes.map(e=>{var t;return null!==(t=v.get(e.id))&&void 0!==t?t:e})}),loadedDefinitions:m}}(this.document,this.loadedDefinitions,e,t,n,vt,Y);this.document=r.document;for(const i of r.loadedDefinitions)this.loadedDefinitions.set(i.id,i);this.syncPrefabLibraries()}load(e,r){var i=this;return t(function*(e,t,r={}){var o;const s=i.invalidatePendingOperations(),a=yield i.loadDocument(e);i.assertGeneration(s),kt(a)?Ye(a):pt(a);const c=a.scenes.find(e=>{var t;return e.id===(null!==(t=r.sceneId)&&void 0!==t?t:a.entrySceneId)});c&&(yield i.authorizeMapDefinition(c,a)),i.assertGeneration(s),i.disposeInstances(),i.loadedDefinitions.clear(),i.definitionLoads.clear(),kt(a)?(Ye(a),i.document=void 0,i.manifest=structuredClone(a),i.manifestUrl="string"==typeof e?Zt(n(e),i.options.assetsPrefix):void 0,i.resolveBundleImages(i.manifest)):(pt(a),i.document=i.ownDocument(a,r.consumeInput),i.manifest=void 0,i.manifestUrl=void 0),i.runtimeHooks=t?d({},t):void 0,i.history=[],i.currentSceneId="";const l=null!==(o=r.sceneId)&&void 0!==o?o:a.entrySceneId,u=yield i.switchScene(l,{recordHistory:!1},t);if(!u)throw new Error(`Unable to load entry scene ${l}`);return u}).apply(this,arguments)}createEmptyScene(e,n){var i=this;return t(function*(e,t,n=[]){if(yield i.authorizeMapDefinition(e,{}),i.isSwitching||i.isRegionSwitching)throw new Error("SceneManager is already switching scenes");const o=fo[e.vis.type];if(!o)throw new Error(`Unsupported vis type: ${e.vis.type}`);const s=i.invalidatePendingOperations();let a,c;i.disposeInstances(),i.document=void 0,i.manifest=void 0,i.manifestUrl=void 0,i.loadedDefinitions.clear(),i.runtimeHooks=void 0,i.history=[],i.currentSceneId="",i.isSwitching=!0;let l=!1;try{i.emit("beforeSceneChange",{from:null,to:e.id});const u=i.options,{bindInteractions:p,prepareScene:h,beforeSceneDisplay:f,cacheScenes:v,maxCachedScenes:m,safeAreaInsets:g,debugInteractions:y,loadScene:b}=u,w=r(u,oo),j=structuredClone(e.vis.options||{});for(const e of["pencil","container","css2DContainer","controlsContainer","assetsPrefix"])delete j[e];a=new o(d(d(d({},w),j),i.pencil?{pencil:i.pencil}:{rendererWarmup:i.rendererWarmup})),a.setOptions(a.options),c=a.suspendRendering(),i.pendingInstances.add(a),i.prepareScene(a),a.cameraState=structuredClone(e.cs||{}),a.cameraStateActive=e.csa||"",yield a.initializeRuntime(),i.assertGeneration(s),yield null==t?void 0:t(a),i.assertGeneration(s),yield a.show(),i.assertGeneration(s),yield i.prepareSceneDisplay(a,e.id,s);const S=d(d({},structuredClone(e)),{},{scene:a.exportScene()}),A=He(d({format:Bt,schemaVersion:6,entrySceneId:e.id,scenes:[S]},n.length?{materialLibrary:At(S,n)}:{}));return pt(A),i.enablePickDebug(a),!1!==i.options.bindInteractions&&i.bindSceneInteractions(e.id,a),i.document=A,i.instances.set(e.id,a),i.pendingInstances.delete(a),i.currentSceneId=e.id,i.pencil||(i.pencil=a.pencil,a.releasePencilOwnership()),l=!0,i.notifySceneObservers("afterSceneChange",{from:null,to:e.id,scene:a}),a}catch(u){throw!l&&a&&(i.discardSceneCandidates([a],{sceneId:e.id}),i.instances.get(e.id)===a&&i.instances.delete(e.id)),i.notifySceneObservers("sceneChangeError",{from:null,to:e.id,error:u}),u}finally{a&&i.pendingInstances.delete(a),i.finishNavigation(s,c)}}).apply(this,arguments)}loadMapRegion(e,n,r,i){var o=this;return t(function*(){return o.loadMapRegionRequest(e,n,r,i)})()}requestMapRegion(e,n,r,i={}){var o,s=this;return this.mapRequests.run((o=t(function*(t){yield s.waitForNavigation(t);const o=s.requestedMapDocument;if(!o||o.source!==e||o.generation!==s.generation){let i;const o=yield s.loadMapRegionRequest(e,n,(e,t)=>(i=e,r(e,t)),void 0,t);return qt(t),s.requestedMapDocument={source:e,metadata:i,generation:s.generation},o}const a=yield Ht(Promise.resolve(r(o.metadata,n)),t);qt(t);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 ${n}`);for(;;){yield s.waitForNavigation(t);try{const e=yield s.switchMapRegion(c,n,d(d({},i),{},{signal:t}));if(e)return e}catch(l){if(!(l instanceof ho))throw l}}}),function(e){return o.apply(this,arguments)}),i.signal)}loadMapRegionRequest(e,i,o,s,a){var c=this;return t(function*(){qt(a);const t=c.invalidatePendingOperations(!!a),l=yield Ht(c.loadDocument(e),a);c.assertGeneration(t),qt(a),kt(l)?Ye(l):pt(l);const u="number"==typeof i,p=u?i:o;let h;if(u){if("function"!=typeof o)throw new Error("A map region scene resolver is required");const e=kt(l)?{format:Bt,schemaVersion:l.schemaVersion>=3?6:2===l.schemaVersion?5:4,entrySceneId:l.entrySceneId,scenes:l.scenes.map(e=>{let{source:t,bytes:n}=e,i=r(e,so);return d(d({},structuredClone(i)),{},{scene:{}})}),materialLibrary:structuredClone(c.resolvedMaterialLibrary(l)),_resourcePool:structuredClone(l._resourcePool),c:l.c,d:l.d,h:l.h,s:l.s}:l,n=yield Ht(Promise.resolve(o(e,p)),a);if(c.assertGeneration(t),qt(a),h="string"==typeof n?n:(null==n?void 0:n.id)||"",!h)throw new Error(`Unable to resolve a map template for region ${p}`)}else h=i;const f=kt(l)?l.scenes.find(e=>e.id===h):_e(l,h);if(!f)throw new Error(`Scene ${h} was not found`);if("map"!==f.vis.type)throw new Error(`Scene ${h} is not a map template`);c.disposeInstances(),c.loadedDefinitions.clear(),c.definitionLoads.clear(),c.document=kt(l)?void 0:c.ownDocument(l),c.manifest=kt(l)?structuredClone(l):void 0,c.manifestUrl=kt(l)&&"string"==typeof e?Zt(n(e),c.options.assetsPrefix):void 0,c.manifest&&c.resolveBundleImages(c.manifest),c.runtimeHooks=s?d({},s):void 0,c.history=[],c.currentSceneId="";const v=yield c.switchMapRegion(h,p,{recordHistory:!1,transition:!1,signal:a},s);if(!v)throw new Error(`Unable to load map region ${p} from scene ${h}`);return v})()}loadDocument(e){var r=this;return t(function*(){if("string"!=typeof e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?o(e):e;const s=n(e),a=/\.zip(?:[?#]|$)/i.test(s)?fetch(Zt(s,r.options.assetsPrefix)).then((c=t(function*(e){if(!e.ok)throw Error(`ZIP 下载失败:${e.status}`);return o(yield e.arrayBuffer(),s)}),function(e){return c.apply(this,arguments)})):i(s,{assetsPrefix:r.options.assetsPrefix,fetchOptions:{cache:!1}}).then(e=>(Ye(e),e));var c;return r.pencil||r.prewarmRuntime().catch(()=>{}),yield a})()}getSceneMetadata(e){var t;const n=this.document?_e(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)),Tt(e,null===(n=this.manifest)||void 0===n?void 0:n.imageAssets,e=>this.manifestUrl?this.resolveManifestSource(e):Zt(e,this.options.assetsPrefix))}loadSceneDefinition(e){var n=this;return t(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}`);const s=t.manifest;K(n,{schemaVersion:s.schemaVersion>=3?6:2===s.schemaVersion?5:4,_resourcePool:s._resourcePool});const a=structuredClone(n);return t.resolveBundleImages(a),t.loadedDefinitions.set(e,a),a}).finally(()=>{t.definitionLoads.get(e)===s&&t.definitionLoads.delete(e)});return t.definitionLoads.set(e,s),s}(e,n.definitionLoadingContext())})()}createRuntimeSceneDocument(e){return function(e,t){var n,r,i,o;if(t.document)return t.selectSceneDocument(Jt(t.document,e.id),e.id);const s=1===(null===(n=t.manifest)||void 0===n?void 0:n.schemaVersion)?4:2===(null===(r=t.manifest)||void 0===r?void 0:r.schemaVersion)?5:6,a=Jt(d(d({},t.manifest),{},{format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:s,entrySceneId:e.id,materialLibrary:t.resolvedMaterialLibrary(),scenes:[e]}),e.id),{c:c,d:l,h:u,s:p,prefabLibrary:h,materialLibrary:f=[],runtimeAssets:v}=a,m=t.getSceneDocument(a,e.id,{resolveResources:!0});return d(d(d(d(d({format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:s,entrySceneId:e.id},structuredClone({c:c,d:l,h:u,s:p})),v?{runtimeAssets:d(d({},v),{},{baseUrl:null!==(i=t.manifestUrl)&&void 0!==i?i:`${null!==(o=t.options.assetsPrefix)&&void 0!==o?o:""}/manifest.json`})}:{}),f.length?{materialLibrary:t.sceneMaterialLibrary(m,f,h)}:{}),h?{prefabLibrary:h.map(e=>structuredClone(e))}:{}),{},{scenes:[d(d({},m),{},{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:_e,selectSceneDocument:ve,loadGeojsonAsset:i,sceneMaterialLibrary:At,SCENE_DOCUMENT_FORMAT:Bt}}switchScene(e){var n=this;return t(function*(e,t={},i){if(!n.document&&!n.manifest)throw new Error("SceneManager.load() must be called before switchScene()");if(n.isSwitching||n.isRegionSwitching)return null;if(e===n.currentSceneId)return n.getCurrentScene();const o=n.generation,s=n.instances.get(e),a=yield s?void 0:n.loadSceneDefinition(e);if(n.assertGeneration(o),yield n.authorizeMapDefinition(null!=a?a:n.getSceneMetadata(e)),s instanceof Ai&&(yield n.authorizeMapDefinition({vis:{type:"map",options:{adcode:s.adcode}}})),n.assertGeneration(o),n.isSwitching||n.isRegionSwitching)throw new Error("Scene navigation is busy");const c=n.currentSceneId,l=n.getCurrentScene(),u=n.captureCamera(l);let p,h,f=!1;n.isSwitching=!0;try{var v;h=null===(v=n.pencil)||void 0===v?void 0:v.suspendRendering(),n.emit("beforeSceneChange",{from:c||null,to:e}),n.assertGeneration(o);let m=s;if(m)m.setSceneActive();else{if(!a)throw new Error(`Scene ${e} was not found`);const t=fo[a.vis.type];if(!t)throw new Error(`Unsupported vis type: ${a.vis.type}`);const s=n.options,{bindInteractions:c,prepareScene:l,beforeSceneDisplay:u,cacheScenes:f,maxCachedScenes:v,safeAreaInsets:g,debugInteractions:y,loadScene:b}=s;m=new t(d(d({},r(s,ao)),n.pencil?{pencil:n.pencil}:{rendererWarmup:n.rendererWarmup})),p=m;const w=h,j=m.suspendRendering();h=()=>{try{j()}finally{null==w||w()}},n.pendingInstances.add(m),n.prepareScene(m),yield m.fromJSON(n.createRuntimeSceneDocument(a),i?d({},i):n.runtimeHooks,d({consumeInput:!0},n.transactionCacheDepth?{strictResourceReuse:!0,reuseResources:io(a.scene,[...n.instances].flatMap(([e,t])=>{var r,i;const o=null!==(r=null===(i=n.document)||void 0===i?void 0:i.scenes.find(t=>t.id===e))&&void 0!==r?r:n.loadedDefinitions.get(e);return o?[{vis:t,graph:o.scene}]:[]}))}:{})),n.assertGeneration(o),n.enablePickDebug(m),!1!==n.options.bindInteractions&&n.bindSceneInteractions(e,m)}let g=!1;m instanceof Ai&&(g=yield m.refitSafeAreaIfNeeded({transition:!1}),n.assertGeneration(o)),yield n.prepareSceneDisplay(m,e,o,g);const y=m instanceof Ai?n.captureCamera(m):void 0;m.setSceneActive(),p&&(n.pendingInstances.delete(m),n.pencil||(n.pencil=m.pencil,m.releasePencilOwnership())),c&&!1!==t.recordHistory&&n.history.push({kind:"scene",sceneId:c}),n.currentSceneId=e,n.instances.delete(e),n.instances.set(e,m),f=!0;const b=l instanceof Ai&&m instanceof Ai?"mapDrill":"fade";return yield n.playTransition(m,t.transition,b,u,h,!1,y),n.assertGeneration(o),n.reportSceneRetirementErrors(n.disposeInactiveScenes(e)),n.notifySceneObservers("afterSceneChange",{from:c||null,to:e,scene:m}),m}catch(m){throw f||(p&&n.discardSceneCandidates([p],{sceneId:e}),p&&n.instances.get(e)===p&&n.instances.delete(e),o===n.generation&&(null==l||l.setSceneActive())),n.notifySceneObservers("sceneChangeError",{from:c||null,to:e,error:m}),m}finally{p&&n.pendingInstances.delete(p),f&&o===n.generation&&n.reportSceneRetirementErrors(n.disposeInactiveScenes(n.currentSceneId)),n.finishNavigation(o,h)}}).apply(this,arguments)}preloadScene(e,n){var i=this;return t(function*(){if(!i.document&&!i.manifest)throw new Error("SceneManager.load() must be called before preloadScene()");const t=i.instances.get(e);if(t)return t;if(i.isSwitching||i.isRegionSwitching)throw new Error("Scene navigation is busy");const o=i.generation,s=yield i.loadSceneDefinition(e);if(i.assertGeneration(o),i.isSwitching||i.isRegionSwitching)throw new Error("Scene navigation is busy");const a=fo[s.vis.type];if(!a)throw new Error(`Unsupported vis type: ${s.vis.type}`);const c=i.getCurrentScene(),l=i.captureCamera(c);let u,p;i.isSwitching=!0;try{var h,f;u=null===(h=i.pencil)||void 0===h?void 0:h.suspendRendering();const t=i.options,{bindInteractions:v,prepareScene:m,beforeSceneDisplay:g,cacheScenes:y,maxCachedScenes:b,safeAreaInsets:w,debugInteractions:j,loadScene:S}=t;p=new a(d(d({},r(t,co)),i.pencil?{pencil:i.pencil}:{rendererWarmup:i.rendererWarmup}));const A=u,O=p.suspendRendering();return u=()=>{try{O()}finally{null==A||A()}},i.pendingInstances.add(p),i.prepareScene(p),yield p.fromJSON(i.createRuntimeSceneDocument(s),n?d({},n):i.runtimeHooks),i.assertGeneration(o),i.enablePickDebug(p),!1!==i.options.bindInteractions&&i.bindSceneInteractions(e,p),p.hide(),null==c||c.setSceneActive(),l&&(null===(f=i.pencil)||void 0===f||null===(f=f.controls)||void 0===f?void 0:f.setLookAt)&&(yield i.pencil.controls.setLookAt(...l,!1)),i.assertGeneration(o),i.instances.set(e,p),i.pendingInstances.delete(p),i.pencil||(i.pencil=p.pencil,p.releasePencilOwnership()),i.reportSceneRetirementErrors(i.disposeInactiveScenes(i.currentSceneId,e)),p}catch(m){var v;if(p&&i.discardSceneCandidates([p],{sceneId:e}),p&&i.instances.get(e)===p&&i.instances.delete(e),o!==i.generation)throw m;throw null==c||c.setSceneActive(),l&&(null===(v=i.pencil)||void 0===v||null===(v=v.controls)||void 0===v?void 0:v.setLookAt)&&(yield i.pencil.controls.setLookAt(...l,!1)),m}finally{p&&i.pendingInstances.delete(p),i.finishNavigation(o,u)}})()}editScene(e,n,i){var o=this;return t(function*(){if(o.isSwitching||o.isRegionSwitching)throw new Error("Scene navigation is busy");if(!o.document||e!==o.currentSceneId)throw new Error("Only the active scene can be edited");const t=o.generation,s=structuredClone(_e(o.document,e)),a=o.getCurrentScene(),c=fo[s.vis.type];if(!c)throw new Error(`Unsupported vis type: ${s.vis.type}`);let l,u;o.isSwitching=!0;let p=!1;try{var h,f;l=null===(h=o.pencil)||void 0===h?void 0:h.suspendRendering();const v=o.options,{bindInteractions:m,prepareScene:g,beforeSceneDisplay:y,cacheScenes:b,maxCachedScenes:w,safeAreaInsets:j,debugInteractions:S,loadScene:A}=v;u=new c(d(d({},r(v,lo)),{},{pencil:o.pencil})),o.pendingInstances.add(u),o.prepareScene(u),yield u.fromJSON(ve(o.document,e),i?d({},i):o.runtimeHooks),o.assertGeneration(t);const O=yield n(u,s);if(o.assertGeneration(t),O.id!==e||O.vis.type!==s.vis.type)throw new Error("Scene edit cannot change identity or type");const x=structuredClone(o.document);x.scenes[x.scenes.findIndex(t=>t.id===e)]=O,pt(x),O.vis.options.createIfNeeded=!0,u.setOptions(O.vis.options),yield u.restoreScene(Qe(O,{omitPrefabPreviews:!(null===(f=u.runtimePolicy)||void 0===f?void 0:f.includePrefabPreviews)})),o.assertGeneration(t),O.scene=u.exportScene(),!1!==o.options.bindInteractions&&o.bindSceneInteractions(e,u);const I=He(x);return u.setSceneActive(),o.document=I,o.instances.set(e,u),o.pendingInstances.delete(u),p=!0,o.reportSceneRetirementErrors(o.retireScenes([a])),u}catch(v){throw p||(u&&o.discardSceneCandidates([u],{sceneId:e}),t===o.generation&&a.setSceneActive()),v}finally{u&&o.pendingInstances.delete(u),o.finishNavigation(t,l)}})()}back(e){var n=this;return t(function*(){if(n.isSwitching||n.isRegionSwitching)return null;const t=n.history.at(-1);if(!t)return null;let r;if("region"===t.kind)r=yield n.switchMapRegion(t.sceneId,t.adcode,{recordHistory:!1,transition:{type:"mapDrill"}},e);else{const i=n.currentSceneId?n.getSceneMetadata(n.currentSceneId):void 0,o=n.getSceneMetadata(t.sceneId),s="map"===(null==i?void 0:i.vis.type)&&"map"===(null==o?void 0:o.vis.type)?{type:"mapDrill"}:void 0;r=yield n.switchScene(t.sceneId,{recordHistory:!1,transition:s},e)}return r&&n.history.pop(),r})()}switchMapRegion(e,n){var i=this;return t(function*(e,t,n={},o){var s,a;if(qt(n.signal),i.isRegionSwitching||i.isSwitching)return null;if(!i.document&&!i.manifest)throw new Error("SceneManager.load() must be called before switchMapRegion()");const c=null===(s=null!==(a=i.document)&&void 0!==a?a:i.manifest)||void 0===s||null===(s=s.runtimeAssets)||void 0===s||null===(s=s.regions)||void 0===s?void 0:s[e];if(!1!==i.options.strictBundleAssets&&c&&!c.includes(t))throw Error(`区域 ${t} 不在场景 ${e} 的导出范围内,请扩大交互范围后重新导出。`);const l=i.generation,u=yield Ht(i.loadSceneDefinition(e),n.signal);if(i.assertGeneration(l),qt(n.signal),i.isSwitching||i.isRegionSwitching)throw new ho("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=i.currentSceneId,h=i.getCurrentScene(),f=i.captureCamera(h);if(e===p&&h instanceof Ai&&h.adcode===t)return h;let v,m,g;i.isRegionSwitching=!0;let y="authorize";try{var b,w,j;const s=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,a=yield i.resolveMapSwitchKey();yield Hr(i,t,a),i.assertGeneration(l),qt(n.signal),m=null===(j=i.pencil)||void 0===j?void 0:j.suspendRendering(),i.emit("beforeSceneChange",{from:p||null,to:e}),y="create-candidate";const c=i.options,{bindInteractions:h,prepareScene:f,beforeSceneDisplay:S,cacheScenes:A,maxCachedScenes:O,safeAreaInsets:x,debugInteractions:I,loadScene:M}=c;v=new Ai(d(d({},r(c,uo)),i.pencil?{pencil:i.pencil}:{rendererWarmup:i.rendererWarmup}));const E=m,P=v.suspendRendering();if(m=()=>{try{P()}finally{null==E||E()}},i.pendingInstances.add(v),i.prepareScene(v),y="restore-template",yield function(e,t,n,r){return Yr.apply(this,arguments)}(v,t,a,()=>v.fromJSON(i.createRuntimeSceneDocument(u),o?d({},o):i.runtimeHooks,{consumeInput:!0})),i.debugInteraction("map template restored",{fromSceneId:p||null,toSceneId:e,templateAdcode:s,targetAdcode:t}),i.assertGeneration(l),qt(n.signal),i.enablePickDebug(v),!1!==i.options.bindInteractions&&i.bindSceneInteractions(e,v),y="rebuild-region",i.debugInteraction("map region rebuild started",{sceneId:e,targetAdcode:t}),yield v.rebuildRegion(t),i.assertGeneration(l),qt(n.signal),y="validate-region",v.adcode!==t)throw new Error(`Unable to build map region ${t}`);i.debugInteraction("map region rebuild completed",{sceneId:e,targetAdcode:t,currentAdcode:v.adcode}),y="prepare-camera",yield v.playRegionEnterTransition({duration:0}),i.assertGeneration(l),qt(n.signal),y="prepare-display",yield i.prepareSceneDisplay(v,e,l,!0,n.signal),qt(n.signal),g=i.captureCamera(v)}catch(I){var S,A;if(i.debugInteraction("map region navigation failed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t,stage:y,error:I}),i.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&&i.pendingInstances.delete(v),l===i.generation&&(null==h||h.setSceneActive()),i.finishNavigation(l,m,!0),i.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:I}),I}const O=v;let x=!1;try{const r=i.instances.get(e);if(O.setSceneActive(),p&&!1!==n.recordHistory){const t=h instanceof Ai?h.adcode:void 0;p===e&&void 0!==t?i.history.push({kind:"region",sceneId:p,adcode:t}):i.history.push({kind:"scene",sceneId:p})}i.instances.set(e,O),i.pendingInstances.delete(O),i.currentSceneId=e,i.pencil||(i.pencil=O.pencil,O.releasePencilOwnership()),x=!0;const o=i.retireScenes(r?[r]:[]);return i.debugInteraction("map region committed",{fromSceneId:p||null,toSceneId:e,targetAdcode:t}),yield i.playTransition(O,n.transition,"mapDrill",f,m,!0,g),i.assertGeneration(l),i.reportSceneRetirementErrors([...o,...i.disposeInactiveScenes(e)]),i.notifySceneObservers("afterSceneChange",{from:p||null,to:e,scene:O}),i.notifySceneObservers("afterMapRegionChange",{from:p||null,to:e,adcode:t,scene:O}),i.debugInteraction("map region transition completed",{sceneId:e,targetAdcode:t}),O}catch(I){throw x||(i.discardSceneCandidates([O],{sceneId:e}),i.pendingInstances.delete(O),l===i.generation&&(null==h||h.setSceneActive())),i.notifySceneObservers("sceneChangeError",{from:p||null,to:e,error:I}),I}finally{i.finishNavigation(l,m,!0)}}).apply(this,arguments)}backMapRegion(e){var n=this;return t(function*(){return n.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 Ar(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 n=this;return t(function*(e,t={}){var r,i;const o=null!==(r=n.document)&&void 0!==r?r:n.manifest,s=Or(null!==(i=null==o?void 0:o.prefabLibrary)&&void 0!==i?i:[],e),a=t.sceneId?n.instances.get(t.sceneId):t.target?[...n.instances.values()].find(e=>e.lead===t.target.lead):n.getCurrentScene();if(!a)throw new Error(t.sceneId?`Scene "${t.sceneId}" must be loaded before instantiating a prefab`:"A loaded destination scene is required to instantiate a prefab");const c=n.generation,l=new AbortController;let d;n.prefabOperations.add(l);try{return d=yield Mr(a,s,n.resolvedMaterialLibrary(o),t,l.signal),n.assertGeneration(c),d}catch(u){throw null==d||d.erase(),u}finally{n.prefabOperations.delete(l)}}).apply(this,arguments)}updateMaterial(e,n){var i=this;return t(function*(){if(i.isSwitching||i.isRegionSwitching)throw new Error("Scene navigation is busy");if(!i.document&&!i.manifest)throw new Error("SceneManager.load() must be called before updateMaterial()");const t=function(e,t,n,r){return null!=e?e:d(d({},t),{},{format:r,schemaVersion:t.schemaVersion>=3?6:2===t.schemaVersion?5:4,materialLibrary:n(),scenes:t.scenes.map(e=>d(d({},e),{},{scene:{}}))})}(i.document,i.manifest,()=>i.resolvedMaterialLibrary(),Bt),o=Bn(t,e,n),s=i.generation,a=i.getCurrentScene(),c=i.captureCamera(a);let l;const u=/* @__PURE__ */new Map;let p=!1;i.isSwitching=!0;try{var h,f,v;l=null===(h=i.pencil)||void 0===h?void 0:h.suspendRendering();for(const[t,a]of i.instances){var m;a.setSceneActive();const n=a.exportScene();if(!(null===(m=n.materials)||void 0===m?void 0:m.some(t=>{var n;return(null===(n=t.userData)||void 0===n?void 0:n._materialAssetId)===e})))continue;const c=Yt(i.getSceneMetadata(t),n,a),l=Ae(c,o.materialLibrary),p=fo[c.vis.type],h=i.options,{bindInteractions:f,prepareScene:v,beforeSceneDisplay:g,cacheScenes:y,maxCachedScenes:b,safeAreaInsets:w,debugInteractions:j,loadScene:S}=h,A=new p(d(d({},r(h,po)),{},{pencil:i.pencil}));u.set(t,A),i.pendingInstances.add(A),i.prepareScene(A),yield A.fromJSON(d(d({},o),{},{entrySceneId:t,materialLibrary:At(l,o.materialLibrary),scenes:[d(d({},l),{},{interactions:void 0})]}),i.runtimeHooks),i.assertGeneration(s),A instanceof Ai&&void 0!==A.adcode&&(yield A.applyRegionTextureRules(A.adcode),i.assertGeneration(s)),i.enablePickDebug(A),!1!==i.options.bindInteractions&&i.bindSceneInteractions(t,A)}const n=null!==(f=u.get(i.currentSceneId))&&void 0!==f?f:a,g=i.document?new Map([...i.loadedDefinitions].map(([e,t])=>[e,Ae(t,o.materialLibrary)])):i.loadedDefinitions,y=new Map(i.instances),b=[];for(const[e,t]of u){const n=y.get(e);n&&b.push(n),y.set(e,t)}null==n||n.setSceneActive(),c&&(null===(v=i.pencil)||void 0===v||null===(v=v.controls)||void 0===v?void 0:v.setLookAt)&&(yield i.pencil.controls.setLookAt(...c,!1)),i.assertGeneration(s),i.syncPrefabLibraries(o,t,y.values(),()=>i.assertGeneration(s)),i.document?i.document=o:i.manifest=d(d({},i.manifest),{},{materialLibrary:o.materialLibrary}),i.loadedDefinitions=g,i.instances=y;for(const e of u.values())i.pendingInstances.delete(e);return p=!0,i.reportSceneRetirementErrors(i.retireScenes(b)),i.notifySceneObservers("materialChanged",{assetId:e,revision:o.materialLibrary.find(t=>t.id===e).revision}),n}catch(y){if(p)throw y;i.discardSceneCandidates(u.values(),{assetId:e});for(const e of u.values())i.pendingInstances.delete(e);var g;if(s===i.generation)null==a||a.setSceneActive(),c&&(null===(g=i.pencil)||void 0===g||null===(g=g.controls)||void 0===g?void 0:g.setLookAt)&&(yield i.pencil.controls.setLookAt(...c,!1));throw y}finally{i.finishNavigation(s,l)}})()}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?_e(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 Ai,findAdcodeInfo:Vr})}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 mo(e,t,n){return go("string"==typeof e?JSON.parse(e):structuredClone(e),t,n)}function go(e,t,n){return Ze(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[G];for(const r of null!==(n=e.textures)&&void 0!==n?n:[])r.userData&&delete r.userData[G]}})}var yo={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 ct(e,yo)}function wo(e){return fe(e,yo)}function jo(e,t,n=[]){return E(e,t,n,yo)}function So(e,t){return ce(e,t,{ignoreReferenceProperties:["_prefabLink"]})}var Ao=["children","shadow","userData"],Oo=["filter"],xo=["objectIds"],Io=["geometries","materials","textures","images","skeletons","animations","shapes"],Mo=["prefab","_prefabPreview","_prefabLink","_prefabNodeId","_templatePreviewContainer"];function Eo(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)&&!Eo(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)&&Eo(e[n],t[n]))}function Po(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 Do(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 Co(e,t,n){const r=e.scenes[t];if(n===r.scene)return e;const i=e.scenes.slice();return i[t]=d(d({},r),{},{scene:n}),d(d({},e),{},{scenes:i})}function Ro(e,t){if(!Array.isArray(e)||16!==e.length||!e.every(Number.isFinite)||void 0!==t&&"boolean"!=typeof t)throw Error("对象变换矩阵无效")}function Lo(e,t=!1){return xe(e,{copyPool:t,invalidReferenceMessage:"对象选项池引用无效",cyclicValueMessage:"对象选项存在循环引用"})}function ko(e,t){var n;const{children:i,shadow:o,userData:s}=e,a=r(e,Ao),c=d({},s),l=(null==s?void 0:s._baseObjectUserData)&&d({},s._baseObjectUserData);for(const r of[c,l])if(r)for(const e of Mo)delete r[e];l&&(c._baseObjectUserData=l);const u=structuredClone(d(d(d({},a),s?{userData:c}:{}),o?{shadow:d(d({},o),{},{camera:void 0})}:{}));return(null==o?void 0:o.camera)?u.shadow.camera=ko(o.camera,t):u.shadow&&delete u.shadow.camera,(null===(n=u.userData)||void 0===n?void 0:n._baseObjectOptions)&&(u.userData._baseObjectOptions=t(u.userData._baseObjectOptions)),i&&(u.children=i.map(e=>ko(e,t))),u}function Bo(e,t){var n,r;t(e);for(const i of null!==(n=e.children)&&void 0!==n?n:[])Bo(i,t);(null===(r=e.shadow)||void 0===r?void 0:r.camera)&&Bo(e.shadow.camera,t)}function To(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};Bo(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;Bo(e.object,e=>d.add(e.uuid));const u=[...l.animations];Bo(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 _o(e,t){const n=/* @__PURE__ */new Map;Bo(e,e=>n.set(e.uuid,h.generateUUID()));for(const o of[...t.skeletons,...t.animations])n.set(o.uuid,h.generateUUID());const r=/* @__PURE__ */new Set(["uuid","geometry","material","skeleton","bones","animations","target","object","copySource"]),i=d({object:e},t);Mt(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))}}),ee(i,n)}function Uo(e,t,n){const{scene:r,nodes:i}=Po(e,t),o=Do(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=ko(i.get(l).node,Lo(r.scene._sharedOptionsPool,!0)),o=/* @__PURE__ */new Set;Bo(n,e=>o.add(e.uuid));const u=To(r.scene,n,o);if(_o(n,u),void 0!==e.matrix)Ro(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=Wo(a,t,d({object:n},u),e.parentUuid),c.push(n.uuid)}return{document:a,uuids:c}}function zo(e,t,n){var i;const{scene:o,nodes:s}=Po(e,t),a=Do(s,n);if(!a.length)return e;const c=/* @__PURE__ */new Set,l=/* @__PURE__ */new Set;for(const r of a)l.add(s.get(r).parent),Bo(s.get(r).node,e=>c.add(e.uuid));const u={parents:[...l].map(e=>{var t;return{uuid:e,children:(null!==(t=s.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!c.has(e.uuid)).map(e=>e.uuid)}})},p=null===(i=o.interactions)||void 0===i?void 0:i.flatMap(e=>{var t,n;if(c.has(e.objectId))return[];const i=e.filter,o=null==i||null===(t=i.objectIds)||void 0===t?void 0:t.filter(e=>!c.has(e));if(!(null==i?void 0:i.objectIds)||o.length===i.objectIds.length)return[e];if(!o.length&&!(null===(n=i.baseObjectTypes)||void 0===n?void 0:n.length)){if("include"===i.mode)return[];const{filter:t}=e;return[r(e,Oo)]}const{objectIds:s}=i,a=r(i,xo);return[d(d({},e),{},{filter:d(d({},a),o.length?{objectIds:o}:{})})]});return Eo(p,o.interactions)||(u.interactions=(null==p?void 0:p.length)?{set:p}:{unset:!0}),Qi(e,t,u)}function Go(e,t,n,r={}){var i,o;const{nodes:s}=Po(e,t),a=Do(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),u=null!==(i=s.get(c).node.children)&&void 0!==i?i:[],p=h.generateUUID(),f=[];for(const d of u)l.has(d.uuid)?f.includes(p)||f.push(p):f.push(d.uuid);const v={uuid:p,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:d({_baseObjectIdentityVersion:1,_baseObjectObjectType:"Group",_baseObjectKeyType:""},r.userData?{_baseObjectUserData:r.userData}:{})};return{document:Qi(e,t,{parents:[{uuid:c,children:f},{uuid:p,children:a}],additions:[v]}),uuid:p}}function $o(e,t,n,r,i,o){var s;const{index:a,scene:c,nodes:l}=Po(e,t),u=Do(l,n),p=l.get(r);if(!u.length)return e;if(!p)throw Error("目标父级已不存在");const h=new Set(u);for(let d=p;d;d=d.parent?l.get(d.parent):void 0)if(h.has(d.node.uuid))throw Error("不能移入自身或子对象");const f=/* @__PURE__ */new Set([...(null!==(s=p.node.children)&&void 0!==s?s:[]).filter(e=>!h.has(e.uuid)).map(e=>e.uuid),...u]);if(new Set(i).size!==i.length||i.length!==f.size||i.some(e=>!f.has(e)))throw Error("目标成员顺序无效");const v=new Set(u.map(e=>l.get(e).parent));v.delete(r);const m=/* @__PURE__ */new Map;for(const g of u){const e=o.get(g);if(!e)continue;Ro(e.matrix,e.matrixAutoUpdate);const t=l.get(g).node,n={},r=[];Eo(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)&&m.set(g,d({state:n},r.length?{unset:r}:{}))}return Qi(m.size?Co(e,a,d(d({},c.scene),{},{object:Pi(c.scene.object,m)})):e,t,{parents:[...[...v].map(e=>{var t;return{uuid:e,children:(null!==(t=l.get(e).node.children)&&void 0!==t?t:[]).filter(e=>!h.has(e.uuid)).map(e=>e.uuid)}}),{uuid:r,children:[...i]}]})}function Wo(e,t,n,r,i=[]){var o,s,a;const{index:c,scene:l,nodes:u}=Po(e,t),p=u.get(r);if(!p)throw Error("新增对象父级已不存在");if(!(null==n||null===(o=n.object)||void 0===o?void 0:o.uuid)||u.has(n.object.uuid))throw Error("新增对象身份无效或重复");const h=d({},n);delete h._sharedOptionsPool,delete h._texDataPool;const f=Lo(n._sharedOptionsPool),v=e=>{var t,n;let r=e;const i=null===(t=e.userData)||void 0===t?void 0:t._baseObjectOptions;if(i){const t=f(i);t!==i&&(r=d(d({},e),{},{userData:d(d({},e.userData),{},{_baseObjectOptions:t})}))}if(e.children){const t=e.children.map(v);t.some((t,n)=>t!==e.children[n])&&(r=d(d({},r),{},{children:t}))}if(null===(n=e.shadow)||void 0===n?void 0:n.camera){const t=v(e.shadow.camera);t!==e.shadow.camera&&(r=d(d({},r),{},{shadow:d(d({},e.shadow),{},{camera:t})}))}return r},m=d(d({},h),{},{object:v(h.object)}),g=(e,t)=>{if(!["_dataTexBase64","_videoSrc"].some(t=>{var n;return"number"==typeof(null===(n=e.userData)||void 0===n?void 0:n[t])}))return e;const n=d({},e.userData);for(const r of["_dataTexBase64","_videoSrc"])if("number"==typeof n[r]){const e=n[r];if(!Number.isInteger(e)||e<0||void 0===(null==t?void 0:t[e]))throw Error("贴图数据池引用无效");n[r]=t[e]}return d(d({},e),{},{userData:n})},y={parents:[{uuid:r,children:[...(null!==(s=p.node.children)&&void 0!==s?s:[]).map(e=>e.uuid),m.object.uuid]}],additions:[m.object]};let b=e;for(const x of Io){var w,j,S;const e=null!==(w=l.scene[x])&&void 0!==w?w:[],t=new Map(e.map(e=>[e.uuid,e])),r=[];if(void 0!==m[x]&&!Array.isArray(m[x]))throw Error(`新增对象 ${x} 资源表无效`);for(const i of null!==(j=m[x])&&void 0!==j?j:[]){if(!i||"string"!=typeof i.uuid||!i.uuid)throw Error(`新增对象 ${x} 资源身份无效`);const e="textures"===x?g(i,n._texDataPool):i,o=t.get(e.uuid);if(o){if(!Eo("textures"===x?g(o,l.scene._texDataPool):o,e))throw Error(`新增对象 ${x} 资源定义冲突:${e.uuid}`)}else r.push(e),t.set(e.uuid,e)}r.length&&("shapes"===x?b=Co(b,c,d(d({},b.scenes[c].scene),{},{shapes:[...e,...r.map(e=>structuredClone(e))]})):(null!==(S=y.resources)&&void 0!==S?S:y.resources={})[x]={upsert:r})}const A=new Map((null!==(a=e.materialLibrary)&&void 0!==a?a:[]).map(e=>[e.id,e])),O=[];for(const d of i){const e=A.get(d.id);if(e){if(!Eo(e,d))throw Error(`新增对象材质资产定义冲突:${d.id}`)}else A.set(d.id,d),O.push(d)}return O.length&&(y.assets={upsert:O}),Qi(b,t,y)}function No(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&&!p(e,i))throw Error(`资产 ${i.id} 已存在且内容不同`);e||(n.set(i.id,i),r.push(i))}return r.length?[...e,...r]:e}function Fo(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?d(d({},e),{},{scenes:[...e.scenes,...t],materialLibrary:No(e.materialLibrary,n),prefabLibrary:No(e.prefabLibrary,r)}):e}function Vo(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:d(d({},e),{},{interactions:(null==i?void 0:i.length)?i:void 0})});return d(d({},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 v of null!==(o=e.materialLibrary)&&void 0!==o?o:[])if("scene"===v.scope.kind&&v.scope.sceneId===t){const e=`${v.id}:copy:${encodeURIComponent(n)}`;let t=e,r=1;for(;c.has(t);)t=`${e}~${r++}`;c.add(t),l.set(v.id,d(d({},v),{},{id:t,scope:{kind:"scene",sceneId:n}}))}const u=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[Y]);return n?d(d({},e),{},{userData:d(d({},e.userData),{},{[Y]:n.id,[y]:n.revision})}):e}),p=d(d(d(d({},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?d(d({},e),{},{action:d(d({},e.action),{},{sceneId:n})}):e)}:{}),a.materialAliases?{materialAliases:Object.fromEntries(Object.entries(a.materialAliases).map(([e,t])=>[e,l.has(t.assetId)?d(d({},t),{},{assetId:l.get(t.assetId).id}):t]))}:{}),{},{scene:l.size?d(d({},a.scene),u?{materials:u}:{}):a.scene}),h=[...l.values()],f=Fo(e,[p],h);return{document:h.length?mn(f,h,/* @__PURE__ */new Set([n])):f,id:n}}function Ho(e,t){var n;const r=new Set((null!==(n=e.materialLibrary)&&void 0!==n?n:[]).map(e=>e.id));return _n(t,e=>{let t=e.id,n=1;for(;r.has(t);)t=`${e.id}~${n++}`;return r.add(t),t}).document}function Ko(e,t,n,r){return Xo(e,t,n,r,!0)}function Xo(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=Mi(c.scene.object,n))||void 0===o?void 0:o.node;if(!l||l===c.scene.object)throw Error("几何体编辑目标已不存在");const{graph:u,geometry:p}=qe(c.scene,r),{geometries:h,shapes:f}=u;if(l.geometry===p&&(!i||!0===(null===(s=l.userData)||void 0===s?void 0:s._baseObjectGeometryOverride))&&h===c.scene.geometries&&f===c.scene.shapes)return e;const v=Pi(c.scene.object,/* @__PURE__ */new Map([[n,{state:d({geometry:p},i?{userData:d(d({},l.userData),{},{_baseObjectGeometryOverride:!0})}:{})}]])),m=d(d(d({},c.scene),{},{object:v},h?{geometries:h}:{}),f?{shapes:f}:{});return d(d({},e),{},{scenes:e.scenes.map((e,t)=>t===a?d(d({},c),{},{scene:m}):e)})}function Yo(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,u={};return e.geometry!==l&&(u.geometry=l),c&&!0!==(null===(a=e.userData)||void 0===a?void 0:a._baseObjectGeometryOverride)&&(u.userData=d(d({},e.userData),{},{_baseObjectGeometryOverride:!0})),Object.keys(u).length?u:void 0}function Jo(e,t){const n=ie(e),r=e=>{var i,o;const s=Yo(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 Zo(e,t,n,r){const i=e.scenes.findIndex(e=>e.id===t),o=e.scenes[i];if(!o)throw Error("复制目标场景已不存在");const s=ie(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=Yo(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:d,copyUuid:h}of n){var l,u;if(d===h)throw Error("复制对象身份与源对象重复");c(null===(l=Mi(o.scene.object,d))||void 0===l?void 0:l.node,null===(u=Mi(o.scene.object,h))||void 0===u?void 0:u.node)}if(!a.size&&!s.changed())return e;const p=s.graph();return a.size&&(p.object=Pi(o.scene.object,a)),d(d({},e),{},{scenes:e.scenes.map((e,t)=>t===i?d(d({},o),{},{scene:p}):e)})}function Qo(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=A(r),o=i([t.longitude,t.latitude]);if(!o||!o.every(Number.isFinite))throw Error("Location cannot be projected");const s=new bt(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 es(e,t,n,r){var i;const o=Qo(t,n,r.mapCRS),s=V(e);if(!s.valid)throw Error(`Invalid model: ${s.issues.join("; ")}`);const a=null!==(i=r.clearance)&&void 0!==i?i:0;if(!Number.isFinite(a)||a<0)throw Error("Invalid clearance");const c=t.object3d.matrixWorld.clone().invert(),l=e.clone(!0);l.matrix.copy(e.matrix),l.matrixAutoUpdate=!1,l.matrixWorldNeedsUpdate=!0,l.updateWorldMatrix(!1,!0);let d=(new st).setFromObject(l,!0);if(void 0!==r.heightMeters){if(!Number.isFinite(r.heightMeters)||r.heightMeters<=0||d.max.z<=d.min.z)throw Error("Positive physical/model height required");if(Math.abs(o.xUnitsPerMeter/o.yUnitsPerMeter-1)>.01)throw Error("Projection is not locally isotropic; supply an explicitly scaled model");const e=r.heightMeters*o.yUnitsPerMeter/(d.max.z-d.min.z);l.matrix.premultiply((new ht).makeScale(e,e,e)),l.matrixWorldNeedsUpdate=!0,l.updateWorldMatrix(!1,!0),d=(new st).setFromObject(l,!0)}const u=d.getCenter(new bt),p=new bt(o.local.x-u.x,o.local.y-u.y,0);l.matrix.premultiply((new ht).makeTranslation(p)),l.matrixWorldNeedsUpdate=!0;const h=[];for(const S of r.surfaces)S.updateWorldMatrix(!0,!0),S.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)&&h.push(t)});if(!h.length)throw Error("No eligible ground meshes");const f=new st;for(const S of h){const e=S.clone(!1);e.matrix.copy(c).multiply(S.matrixWorld),e.matrixAutoUpdate=!1,e.matrixWorldNeedsUpdate=!0,f.union((new st).setFromObject(e))}const v=f.max.z+Math.max(1,f.max.z-f.min.z),m=new bt(o.local.x,o.local.y,v).applyMatrix4(t.object3d.matrixWorld),g=new bt(0,0,-1).transformDirection(t.object3d.matrixWorld),y=new Ve(m,g).intersectObjects([...new Set(h)],!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 Ie).getNormalMatrix(e.object.matrixWorld)).dot(g)<-1e-6});if(!y)throw Error("No ground hit at target; placement aborted");const b=y.point.clone().applyMatrix4(c);l.matrix.premultiply((new ht).makeTranslation(0,0,b.z+a-d.min.z)),l.matrixWorldNeedsUpdate=!0;const w=t.object3d.matrixWorld.clone().multiply(l.matrix),j=w.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");j.premultiply(e.parent.matrixWorld.clone().invert())}return{localMatrix:j,worldMatrix:w,groundPoint:y.point.toArray(),groundObjectUuid:y.object.uuid,mapPosition:[o.local.x,o.local.y,b.z+a],scaleBasis:o.scaleBasis,xUnitsPerMeter:o.xUnitsPerMeter,yUnitsPerMeter:o.yUnitsPerMeter}}var ts=Vt;export{Y as MATERIAL_ASSET_ID,y as MATERIAL_ASSET_REVISION,jt as MATERIAL_RUNTIME_PROPERTIES,G as RESOURCE_SOURCE,Bt as SCENE_DOCUMENT_FORMAT,g as SCENE_DOCUMENT_RESOURCE_POOL_SCHEMA_VERSION,Ct as SCENE_DOCUMENT_SCHEMA_VERSION,Lt as SCENE_MANIFEST_FORMAT,Dt as SCENE_MANIFEST_SCHEMA_VERSION,vo as SceneManager,B as THREE,M as TWEEN,ts as VERSION,Fr as adcodeAll,rr as animationUtils,Wo as appendObjectDocument,Fo as appendScenesDocument,Ce as assertProjectMaterials,pt as assertRuntimeSceneDocument,Ye as assertSceneManifest,Pt as assertSupportedSceneDocument,$n as bindMaterialAsset,Sn as bindMaterialSlots,qn as cloneSceneMaterials,Xn as cloneSceneWithIds,io as collectSceneResourceReuse,jo as collectStructureResources,Zo as copyNativeGeometries,Jo as copySnapshotGeometries,Gn as createMaterialAsset,gn as createMaterialAssetDocument,S as createMaterialDefinitionExtractor,an as createRuntimeSceneDocument,Qe as createRuntimeSceneGraph,ro as createSceneResourceReuseSession,wo as createStructureResourceCollector,On as duplicateMaterialAssetDocument,Vn as duplicateMaterialForObject,Uo as duplicateObjectsDocument,qo as duplicateSceneDocument,_r as editorEarthObjects,hr as editorObjects,O as expandOwnedSceneDocumentResources,D as expandSceneDocumentResources,bo as expandStructureSnapshot,w as extractMaterialDefinition,So as extractObjectResourceGraph,Vr as findAdcodeInfo,pe as getMaterialDependencies,yt as getMaterialUsages,xt as getPrefabMaterialDependencies,_e as getSceneDocument,Go as groupObjectsDocument,Mi as indexedSceneObject,Ei as inheritSceneObjectIndex,xi as invalidateSceneObjectIndex,Bi as isLocalSceneObjectField,er as isObjectStateUpdateInProgress,Gi as isSceneCameraField,Rt as isSceneDocument,kt as isSceneManifest,ki as isSceneObjectPropertyField,Nn as makeMaterialSceneLocal,Mn as materialDocumentOperations,W as materializeAssetDefinition,mn as materializeChangedAssets,lt as materializeOwnedProjectMaterials,we as materializeOwnedSceneMaterials,Fe as materializeProjectMaterials,vt as materializeSceneMaterialDefinitions,Ae as materializeSceneMaterials,Ee as materializeSceneMaterialsBatch,We as mergeAuthoredMaterialDefinition,zn as mergeProjectMaterials,$o as moveObjectsDocument,ln as normalizeMaterialDefinition,nt as normalizeOwnedProjectMaterials,He as normalizeProjectMaterials,T as packSceneDocumentResources,Pi as patchIndexedSceneObjects,Ui as patchSceneObjectPropertiesDocument,Qi as patchSceneStructureDocument,to as patchSceneStructureTransactionDocument,$i as patchSceneViewportDocument,es as planPlacement,Xo as prepareGeometryBinding,Ko as prepareGeometryEdit,Qo as projectLocation,xn as promoteMaterialAssetDocument,Fn as promoteMaterialToProject,wn as registerSceneMaterials,Ho as remapImportedMaterials,go as remapOwnedSnapshotIdentity,_n as remapProjectMaterialIds,Kn as remapSceneDocumentIds,Rn as remapSceneMaterialReferencesCopy,Cn as remapSceneObjectReferencesCopy,ee as remapSnapshotAnimationTracks,mo as remapSnapshotIdentity,In as removeMaterialAssetDocument,zo as removeObjectsDocument,Tn as removeProjectMaterial,Vo as removeSceneDocument,bn as replaceMaterialAssetDocument,F as resourceInstanceUuid,At as sceneMaterialLibrary,Ii as sceneObjectIndex,Ti as sceneObjectPropertyDefaults,Wi as scenePropertyFields,ve as selectSceneDocument,cn as splitSceneDocument,f as stripMaterialAssetBinding,Bn as updateProjectMaterial,Pn as visitSceneIdentityReferences};
1
+ import{$ as e,At as t,C as n,Ct as r,D as i,Dt as o,E as s,Et as a,F as c,G as l,H as d,I as u,J as p,K as h,L as f,M as v,Mt as m,N as g,Nt as y,O as b,Ot as w,P as j,Q as S,R 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,kt as te,l as ne,lt as re,m as ie,mt as oe,n as se,nt as ae,o as ce,ot as le,p as de,pt as ue,q as pe,r as he,rt as fe,s as ve,st as me,t as ge,tt as ye,u 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-CurDDdRW.js";import{a as De,i as Ce,r as Re}from"./sha2-DroCzeNH.js";import{a as Le,i as ke,n as Be,o as Te,r as Ue,s as _e,t as Ge}from"./schema-B2o51seO.js";import{b as ze,c as $e,d as We,l as Ne,m as Fe,n as qe,t as Ve,u as He,x as Ke}from"./e-DpK8xI-B.js";import{A as Xe,C as Ye,D as Je,E as Ze,F as Qe,I as et,L as tt,M as nt,N as rt,O as it,P as ot,R as st,S as at,T as ct,_ as lt,a as dt,b as ut,c as pt,d as ht,f as ft,g as vt,h as mt,i as gt,j as yt,k as bt,l as wt,m as jt,n as St,o as At,p as Ot,s as xt,t as It,u as Mt,v as Et,w as Pt,x as Dt,y as Ct}from"./validation-BGRVMCXQ.js";import{i as Rt,n as Lt,r as kt,t as Bt}from"./runtimeImages-BFvQYajK.js";import{EventEmitter as Tt}from"events";import Ut from"geojson-cn/json-lite/all.json";import{booleanPointInPolygon as _t,center as Gt,centroid as zt,point as $t,polygon as Wt}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 Nt="0.33.18";function Ft(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 qt(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 Vt=class{constructor(){De(this,"pending",Promise.resolve()),De(this,"current",void 0),De(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(Re(function*(){Ft(n.signal);const t=yield e(n.signal);return Ft(n.signal),t})).finally(()=>{null==t||t.removeEventListener("abort",r),this.current===n&&(this.current=void 0)});return this.pending=i.catch(()=>{}),qt(i,n.signal)}cancel(){var e;null===(e=this.current)||void 0===e||e.abort()}dispose(){this.disposed=!0,this.cancel()}};function Ht(e){if(null===e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e;if(Array.isArray(e))return e.map(Ht).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=Ht(r);void 0!==e&&(t[n]=e)}return t}function Kt(e,t,n){return Ce(Ce({},structuredClone(e)),{},{scene:t,vis:Ce(Ce({},structuredClone(e.vis)),{},{options:Ce(Ce({},structuredClone(e.vis.options)),Ht(n.options))}),cs:structuredClone(n.cameraState),csa:n.cameraStateActive})}function Xt(e,t){var n;Qe(e);const r=e.scenes.find(e=>e.id===t);if(!r)throw new Error(`Scene ${t} was not found`);const i=C("decode"),o=e=>{const t=f(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?Ce(Ce({},t),{},{images:t.images.map(e=>Ce(Ce({},e),{},{url:o(e.url)}))}):t},s=e.materialLibrary,a=ut(r,s,e.prefabLibrary).map(e=>Ce(Ce({},e),{},{material:o(e.material)})),c=Ce(Ce({},r),{},{scene:o(r.scene)}),l=null===(n=e.prefabLibrary)||void 0===n?void 0:n.map(e=>Ce(Ce({},e),{},{snapshot:o(e.snapshot)}));return Ce(Ce(Ce({},e),{},{scenes:[c]},s?{materialLibrary:a}:{}),l?{prefabLibrary:l}:{})}var Yt=(e,t="")=>/^(?:[a-z]+:)?\/\//i.test(e)?e:`${t.endsWith("/")?t.slice(0,-1):t}${e.startsWith("/")?e:`/${e}`}`;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 It(e),function(e){const{prefabLibrary:t}=e,n=Ke(e,Qt),r=null==t?void 0:t.filter(e=>void 0!==e.sdkKey),i=structuredClone(Ce(Ce({},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||It(n);const r=wt(n);if(r.schemaVersion>=5){var i,o;const e=C("encode");for(const t of r.scenes)t.scene=f(t.scene,e);for(const t of null!==(i=r.materialLibrary)&&void 0!==i?i:[])t.material=f(t.material,e);for(const t of null!==(o=r.prefabLibrary)&&void 0!==o?o:[])t.snapshot=f(t.snapshot,e)}const s=Bt(r);if(r.runtimeAssets){const e=r.runtimeAssets,{baseUrl:t}=e,n=Ke(e,en);r.runtimeAssets=Ce(Ce({},n),{},{entries:n.entries.map(e=>{let{data:t}=e,n=Ke(e,tn);if(void 0===t)throw Error(`导出资源缺少文件内容:${n.path}`);return s[n.path]={data:Fe(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 Ce(Ce({},Ke(e,nn)),{},{source:n,bytes:(new TextEncoder).encode(JSON.stringify(e)).length})}),{format:p,schemaVersion:h,scenes:v}=a;return{manifest:Ce(Ce({},Ke(a,rn)),{},{format:Ue,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[rt];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[rt];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[rt],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)),ie(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=j;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),ie(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=Ce(Ce({},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 Ce(Ce({},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[at]);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=it(o),i.set(o.id,s));const{textures:a,images:c,metadata:l}=s,d=Ce(Ce({},Ke(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=it(e),i.set(e.id,o));const{textures:s,images:a,metadata:c}=o,l=Ke(o,ln);f.push(Ce(Ce({},l),{},{uuid:t}))}const v=new Set(f.map(e=>{var t;return null===(t=e.userData)||void 0===t?void 0:t[at]})),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=Ce(Ce(Ce({},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,Ce(Ce({},e),{},{scene:O})});return Ce(Ce({},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=Ce(Ce({id:t.id,name:t.name,revision:1,material:Xe(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 Ce(Ce({},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 Ce(Ce({},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=Ze(a),u=[],p=/* @__PURE__ */new Map;for(const f of c){let e=0,n=ot(t,"material-asset",f.uuid);for(;l.has(n);)n=ot(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,Ce(Ce({},f),{},{userData:Ce(Ce({},f.userData),{},{[at]:n,[Ye]:1})}))}const h=e.scenes.slice();return h[s]=Ce(Ce({},a),{},{scene:Ce(Ce({},a.scene),{},{materials:a.scene.materials.map(e=>{var t;return null!==(t=p.get(e.uuid))&&void 0!==t?t:e})})}),fn(Ce(Ce({},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])?Ce(Ce({},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,c,l;const d=e.scenes.findIndex(e=>e.id===t),u=e.scenes[d];if(!u)throw Error("资源场景已不存在");const p=new Map((null!==(s=e.materialLibrary)&&void 0!==s?s:[]).map(e=>[e.id,e])),h=[...null!==(a=u.scene.materials)&&void 0!==a?a:[]],f=/* @__PURE__ */new Map,v=/* @__PURE__ */new Map,m=/* @__PURE__ */new Set;for(const O of h)v.has(null===(c=O.userData)||void 0===c?void 0:c._materialAssetId)||v.set(null===(l=O.userData)||void 0===l?void 0:l[at],O.uuid);const g=/* @__PURE__ */new Map;for(const O of/* @__PURE__ */new Set([...n.map(e=>e.assetId),...i?[i]:[]])){const e=p.get(O);if(!e||"scene"===e.scope.kind&&e.scope.sceneId!==t)throw Error("此材质仅属于其他场景");if(g.set(e.id,e),!v.has(e.id)){const t=ot(e.id,"material",e.material.uuid);if(h.some(e=>e.uuid===t))throw Error("材质运行时标识重复");h.push({uuid:t,type:e.material.type,userData:{[at]:e.id,[Ye]:e.revision}}),v.set(e.id,t)}}for(const O of n){var y;const e=null!==(y=f.get(O.uuid))&&void 0!==y?y:[];e.push(O),f.set(O.uuid,e)}const b=/* @__PURE__ */new Set,w=bn(u.scene.object,e=>{var t;let n=e;for(const r of null!==(t=f.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=v.get(r.assetId),i=Array.isArray(n.material)?n.material[r.slot]:n.material;"string"==typeof i&&i!==t&&m.add(i),n=Ce(Ce({},n),{},{material:Array.isArray(n.material)?n.material.map((e,n)=>n===r.slot?t:e):t}),b.add(e.uuid)}const i=null==r?void 0:r.get(e.uuid);for(const[r,o]of null!=i?i:[])r!==o&&m.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 ce(e.userData,(t,o)=>{var s;n.has(t[o])&&(null!==(s=r)&&void 0!==s||(r=Ce(Ce({},e),{},{userData:Ce(Ce({},e.userData),{},{_baseObjectOptions:i(e.userData._baseObjectOptions)})})))},t),r?(ce(r.userData,(e,t)=>{var r;e[t]=null!==(r=n.get(e[t]))&&void 0!==r?r:e[t]}),r):e}(n,u.scene._sharedOptionsPool,i):n});if([...f.keys()].some(e=>!b.has(e)))throw Error("目标对象已不存在");const j=e.scenes.slice();j[d]=Ce(Ce({},u),{},{scene:Ce(Ce({},u.scene),{},{object:w,materials:h})});const S=fn(Ce(Ce({},e),{},{scenes:j}),[...g.values()],/* @__PURE__ */new Set([t])),A=hn(S.scenes[d],m);return A===S.scenes[d]?S:Ce(Ce({},S),{},{scenes:S.scenes.map((e,t)=>t===d?A: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,Ce(Ce({},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=ot(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[at])===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=Ce(Ce({},l),{},{scenes:l.scenes.map(e=>{var r;return e.id!==i?e:Ce(Ce(Ce({},e),e.materialAliases?{materialAliases:Object.fromEntries(Object.entries(e.materialAliases).map(([e,r])=>[e,r.assetId===t?Ce(Ce({},r),{},{assetId:n}):r]))}:{}),{},{scene:Ce(Ce({},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?Ce(Ce({},e),{},{userData:Ce(Ce({},e.userData),{},{[at]:n,[Ye]: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:Ce(Ce({},e),{},{materialLibrary:e.materialLibrary.map(e=>e===r?Ce(Ce({},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(Ct(e,t).length)throw Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(lt(e,t).some(e=>!e.alias))throw Error("材质仍被对象或场景配置使用,请先替换后再删除");return Ce(Ce({},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[at])===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=Ce(Ce({},e),{},{scene:Ce({},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,c,l,d;if(!e||!t||t===n)return;const u=e=>e===t?n:e;for(const h 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(h))h[e]=u(h[e]);for(const h 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:[])h.material&&(h.material=u(h.material));for(const h of null!==(a=null===(c=e.scene)||void 0===c?void 0:c.materials)&&void 0!==a?a:[])h.uuid===t&&(h.uuid=n);for(const h of[e.materialAliases,null===(l=e.scene)||void 0===l?void 0:l.materialAliases])if(h){for(const e of Object.values(h))e.materialUuid&&(e.materialUuid=u(e.materialUuid));Object.hasOwn(h,t)&&(h[n]=h[t],delete h[t])}const p=t=>{var n,r,i;if(!t)return;Array.isArray(t.material)?t.material=t.material.map(u):t.material&&(t.material=u(t.material)),ce(t.userData,(e,t)=>{e[t]=u(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&&p(o);for(const e of null!==(i=t.children)&&void 0!==i?i:[])p(e)};p(null===(d=e.scene)||void 0===d?void 0:d.object)}function Ln(e,t,n){var r;const i=ct(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 wt(mn(i,Ce(Ce(Ce(Ce({},o),{},{revision:o.revision+1},void 0!==n.name?{name:n.name}:{}),void 0!==n.material?{material:Xe(n.material)}:{}),void 0!==n.locked?{locked:n.locked}:{})))}function kn(e,t){var n;if(Ct(e,t).length)throw new Error("材质仍被预制资产引用,请先替换预制材质或删除预制资产");if(Et(e,t).length)throw new Error(`Material asset ${t} is still in use`);if(lt(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 Ce(Ce({},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[at])!==t});return r.length===n.length?e:Ce(Ce({},e),{},{scene:Ce(Ce({},e.scene),{},{materials:r})})})})}(ct(e),t)}function Bn(e,t){return Tn(ct(e),t)}function Tn(e,t){var n,r,i;vt(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[at];void 0!==t&&(e.userData[at]=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[at];void 0!==t&&(e.userData[at]=null!==(f=s.get(t))&&void 0!==f?f:t)}return{document:o,idMap:s}}function Un(e,t){const n=jt(e),r=jt(t),i=new Set(n.materialLibrary.map(e=>e.id)),o=Bn(r,e=>yt(e.id,i));return Ce(Ce({},o),{},{materialLibrary:[...n.materialLibrary,...o.document.materialLibrary]})}function _n(e,t){const n=jt(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,Ce(Ce({},ct(t)),r.materialLibrary.at(-1)));return vt(i),i}function Gn(e,t){var n;const r=jt(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(mt(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(nt(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(nt(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[at])===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 wt(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[at]=n.id,s.userData[Ye]=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=jt(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(mt(o,n),"scene"===o.scope.kind)return i;const a=_n(i,Ce(Ce({},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),wt(a)}function Wn(e,t){const n=jt(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=jt(e),i=r.materialLibrary.find(e=>e.id===t.assetId);if(!i)throw new Error(`Material asset ${t.assetId} was not found`);return mt(i,t.sceneId),Gn(_n(r,Ce(Ce({},i),{},{id:t.newAssetId,name:null!==(n=t.name)&&void 0!==n?n:`${i.name} 副本`})),Ce(Ce({},t),{},{assetId:t.newAssetId}))}function Fn(e,t,n){var r;const i=jt(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=ct(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=Ce(Ce({},ct(d)),{},{id:yt(`${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;It(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=Ke(e,qn),d=st(Ce(Ce({},structuredClone(l)),{},{scenes:c.map(e=>structuredClone(e))}));!1!==n.materialize&&xt(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 Ce(Ce(Ce({entrySceneId:a.get(e.entrySceneId),scenes:h,idMap:a},d.runtimeAssets?{runtimeAssets:Ce(Ce(Ce({},d.runtimeAssets),"dynamic"===(null===(o=d.runtimeAssets.mapNavigation)||void 0===o?void 0:o.mode)?{mapNavigation:Ce(Ce({},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(){De(this,"event",new Tt),De(this,"eventHandlers",{}),De(this,"on",this.event.on.bind(this.event)),De(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__ */y({baseObjectBounce:()=>he,baseObjectBounceIn:()=>l,baseObjectFadeIn:()=>D,baseObjectFadeOut:()=>Ae,sinusoidalInOut:()=>Z,timeOut:()=>O}),nr=/* @__PURE__ */y({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 u{constructor(...e){ge(e[0])&&(e=[e[0].color]),super(...e)}},or=class extends i{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(ge(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 se{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(ge(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 s{constructor(...e){var t;const n=!!(null===(t=e[0])||void 0===t?void 0:t.isLight);if(ge(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 J{},lr=class extends _{},dr=class extends ae{constructor(e){super(),De(this,"radius",100),De(this,"options",void 0),De(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 a(this.radius,128,90);this.object3d.geometry=t,this.object3d.rotation.y=Math.PI/180*90}},ur=Ce(Ce({Node:fe,ExtrudePolygon:Pe,Line:xe,Group:pe},nr),{},{Point:class extends d{constructor(e){super(e.sprite?new w:new K(new Ie(1,1))),De(this,"objectType","Point"),De(this,"options",void 0),De(this,"scaleValue",1),this.options=Ce({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 te({transparent:!0,map:r}):new B({color:16777215,transparent:!0,map:r})}create(){var e=this;return Re(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:v,Model:n,Plane:class extends ae{constructor(...e){super(...e),De(this,"objectType","Plane")}create(){const e=new Ie(1,1,2,2);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},PlaneShadow:class extends ae{constructor(...e){super(...e),De(this,"objectType","PlaneShadow")}create(){var e=this;return Re(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 ye{constructor(...e){super(...e),De(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 m;t.matrixWorld.decompose(s,new x,new m);const a=ue.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 ae{constructor(...e){super(...e),De(this,"objectType","Box")}create(){const e=new $(1,1,1,1,1,1);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Circle:class extends ae{constructor(...e){super(...e),De(this,"objectType","Circle")}create(){const e=new N(1,32,0,2*Math.PI);this.object3d.geometry=e,this.scale.multiplyScalar(20)}},Tube:b,Ring:class extends ae{constructor(...e){super(...e),De(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){De(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),De(this,"container",void 0),De(this,"pencil",void 0),De(this,"cameraState",{}),De(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 Re(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 Re(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 Re(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 Re(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 Re(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 ue.euclideanModulo(r+Math.PI,n)-Math.PI}lookAtTarget(e,t=!1,n=250){var r=this;return Re(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*ue.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 Re(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 m,r=new m,{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(t,n=[],r=!0){var i,o,s;const a=At(pt({id:"runtime-prefab",name:t.name,vis:{type:"base",options:{}},scene:structuredClone(t.snapshot)},n));if(!a.object)throw new Error(`SDK prefab "${t.sdkKey||t.id}" has no object snapshot`);e(a);const c=/* @__PURE__ */new Map,l=e=>(c.has(e)||c.set(e,ue.generateUUID()),c.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(a.object);for(const e of["geometries","materials","textures","images","shapes","skeletons","animations"])for(const t of null!==(i=a[e])&&void 0!==i?i:[])if(!t.uuid||"PMREM_PLACEHOLDER"===t.uuid||!r&&["materials","textures","images"].includes(e)||l(t.uuid),r&&t.userData)for(const e of["_resourceSource","_materialAssetId","_materialAssetRevision","_materialAssetOverrideHash","_materialDynamic","_materialRuntimeProperties"])delete t.userData[e];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=c.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=c.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=c.get(e))&&void 0!==t?t:e})),ie(e,(e,t)=>{var n;e[t]=null!==(n=c.get(e[t]))&&void 0!==n?n:e[t]}),e};h(a);const f=[...null!==(o=a.animations)&&void 0!==o?o:[]];for(const e of d){var v,m;ce(e.userData,(e,t)=>{var n;e[t]=null!==(n=c.get(e[t]))&&void 0!==n?n:e[t]},a._sharedOptionsPool);const t=null===(v=e.userData)||void 0===v||null===(v=v._baseObjectOptions)||void 0===v?void 0:v.serializedClips,n=void 0!==(null==t?void 0:t._sharedRef)?null===(m=a._sharedOptionsPool)||void 0===m?void 0:m[t._sharedRef]:t;Array.isArray(n)&&f.push(...n)}for(const e of f)for(const t of null!==(s=e.tracks)&&void 0!==s?s:[]){var g,y,b;const e=null!==(g=null===(y=t.name)||void 0===y?void 0:y.indexOf("."))&&void 0!==g?g:-1;e>0&&(t.name=(null!==(b=c.get(t.name.slice(0,e)))&&void 0!==b?b:t.name.slice(0,e))+t.name.slice(e))}return delete a.materialAliases,a}function xr(e,t,n){return Ir.apply(this,arguments)}function Ir(){return(Ir=Re(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 Ce(Ce({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 H.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[at];t&&r.add(t)}this.prefabMaterials=structuredClone(t.filter(e=>r.has(e.id))),this.assetResolver&&Lt({prefabLibrary:this.prefabAssets,materialLibrary:this.prefabMaterials},this.assetResolver.catalog.entries.flatMap(e=>e.sources),this.resolveAssetUrl)}instantiatePrefab(e){var t=this;return Re(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(),De(this,"runtimePolicy",{observeParentScale:!0,applyDisabledMouseButtons:!0,cacheCityGeometry:!0,includePrefabPreviews:!1,strictBundleAssets:!0}),De(this,"leftTruck",!0),De(this,"options",void 0),De(this,"showState",!1),De(this,"lead",void 0),De(this,"sceneResources",void 0),De(this,"tier0",!1),De(this,"roomEnvMap",void 0),De(this,"roomEnvLease",void 0),De(this,"visName",void 0),De(this,"ownsPencil",!1),De(this,"rendererWarmup",void 0),De(this,"renderingSuspensions",/* @__PURE__ */new Set),De(this,"publicDir",{}),De(this,"prefabAssets",[]),De(this,"prefabMaterials",[]),De(this,"prefabOperations",/* @__PURE__ */new Set),De(this,"assetResolver",void 0),De(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:e}),De(this,"runtimeInitialization",void 0),De(this,"disposed",!1),De(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})}),De(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})}}),De(this,"reportScriptError",e=>{this.showState&&!this.disposed&&(this.emit("scriptError",e)||console.error(e.error))}),De(this,"sceneActive",-1),De(this,"controlsInitialized",!1),De(this,"temporaryControls",/* @__PURE__ */new Map),De(this,"showing",void 0),De(this,"sceneTemporarilyHidden",!1),De(this,"authoredSceneVisible",!0),this.container=e.container;const{rendererWarmup:t}=e,n=Ke(e,Pr);if(this.rendererWarmup=t,this.options=Ce({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=ue.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(Ce(Ce({},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",Nt,JSON.stringify(Ce(Ce({},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=Ce(Ce(Ce({},this.options),e),void 0!==e.controls?{controls:structuredClone(e.controls)}:{}),this.tier0=3!==this.getEffectiveTier()}setRuntimeAssets(e){var t;const n=e?new He(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 Re(function*(){})()}fromJSON(e,t){var n=this;return Re(function*(e,t,r={}){var i;n.cancelPrefabOperations(),n.prefabAssets=[],n.prefabMaterials=[];const o=Ce({},t),s=o.preprocessor;let a;delete o.preprocessor,"string"==typeof e?(console.time("vis-core:time.json-fetch"),a=yield ze(e,{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!1}}),console.timeEnd("vis-core:time.json-fetch")):a=e,s&&(a=yield s(a)),It(a),n.setRuntimeAssets(a.runtimeAssets);const c=r.consumeInput&&!s&&1===a.scenes.length,l=gt(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=Ce({},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=Ce({},l.cs),n.cameraStateActive=null!==(i=l.csa)&&void 0!==i?i:"visShow";try{var f,v;h=n.initializeRuntime();const e=At(l,{omitPrefabPreviews:!(null===(f=n.runtimePolicy)||void 0===f?void 0:f.includePrefabPreviews),consumeInput:!0});yield h,a.runtimeAssets&&Lt({scene:e},a.runtimeAssets.entries.flatMap(e=>e.sources),n.resolveAssetUrl),yield n.restoreScene(e,n.objectTypes,Ce(Ce({},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(m){throw yield null==h?void 0:h.catch(()=>{}),console.error(m),m}}).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=Re(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 Re(function*(){})()}onSceneRestored(){return Re(function*(){})()}onDispose(){}get objectTypes(){return ur}get defaultCameraUp(){return new m(0,1,0)}createRuntime(){var e=this;return Re(function*(){var t;if(e.pencil)return;e.tier0=3!==e.getEffectiveTier();const n=Ce(Ce({},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 m).fromArray(r):r?new m(r.x,r.y,r.z):e.defaultCameraUp;if(n.camera=Ce(Ce({near:.1,far:1e3,fov:45},n.camera),{},{up:i.normalize()}),e.options.css2DContainer&&(n.css2DRendererParams=Ce({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 m(0,1,0)},sceneOptions:{background:new V(0)}}),e.setSceneActive()}else{const t=new H(Ce(Ce({container:e.container,helper:!1,css2DRenderer:!0,attributesWorkerVersion:Nt,camera:{near:.1,far:1e3,fov:45,up:new m(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,g;if(void 0===(null===(f=n.composer)||void 0===f?void 0:f.multisampling))h.options.composer=Ce(Ce({},h.options.composer),{},{multisampling:0}),null===(g=h.composerController)||void 0===g||g.synchronizeRendererCapabilities(0);if(void 0===(null===(v=n.loader)||void 0===v?void 0:v.anisotropy)){h.options.loader=Ce(Ce({},h.options.loader),{},{anisotropy:1}),h.loaderController.options.loaderParams.anisotropy=1;for(const e of h.loaderController.controllerMap.keys())e.options.anisotropy=1}}I(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=k.TRUCK,h.controls.mouseButtons.right=k.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,n,r;const i=this.pencil,o=i.scene.background,s=o instanceof V?"Color":o instanceof t?"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===(n=this.pencil.composerController)||void 0===n||null===(n=n.bloomPass)||void 0===n?void 0:n.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=Ce({},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 Re(function*(){const r=D(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=Ce(Ce({},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=Ce({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=Ce({},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]=k.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 Re(function*(){(yield e.useSaveCamera(e.cameraStateActive))||(yield e.restoreCameraControlTarget())})()}restoreCameraControlTarget(){var e=this;return Re(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 m);void 0===n&&(n=t.getWorldDirection(new m).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 Re(function*(){if(e.disposed)throw new Error("Vis has been disposed");if(!e.showState){if(e.showing)return e.showing;e.showing=Re(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 Re(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(t){var n=this;return Re(function*(t,r=this.objectTypes,i={}){const o=function(t,n,r={}){const i="string"==typeof t?JSON.parse(t):t,o=e=>{var t,n,r,i;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(o)||o(null===(r=e.shadow)||void 0===r?void 0:r.camera)||o(null==s||null===(i=s._prefabLink)||void 0===i?void 0:i.baseline)};if(!o(null==i?void 0:i.object))return{graph:t,bindings:n};const s="string"==typeof t||r.consumeInput?i:structuredClone(i);In(s);const a=e(s),c=n?structuredClone(n):void 0,l=e=>{var t;return null!==(t=a.get(e))&&void 0!==t?t:e};if(c){var d;for(const e of["container","continentsBackground","sphere","map","secondaryMap"])"string"==typeof c[e]&&(c[e]=l(c[e]));(null===(d=c.region)||void 0===d?void 0:d.object)&&(c.region.object=l(c.region.object));for(const e of["parentBackgrounds","cities"])Array.isArray(c[e])&&(c[e]=c[e].map(l))}return{graph:s,bindings:c}}(t,n.options.sceneBindings,{consumeInput:i.consumeInput});"map"===n.visName&&(yield n.authorizeSceneOptions(Ce(Ce({},n.options),o.bindings?{sceneBindings:o.bindings}:{})));const s="string"==typeof o.graph?JSON.parse(o.graph):o.graph,a=i.consumeInput||"string"==typeof t||o.graph!==t,c=A(s,n.options),l=c&&!a?structuredClone(s):s,d=c?structuredClone({materialBindings:n.options.materialBindings,regionTextureRules:n.options.regionTextureRules}):void 0;var u;c&&L(l,d),yield n.initializeRuntime(),n.setSceneActive(),yield n.lead.restoreBaseObject(n.lead.scene,l,r,n.getRoomEnvMap(),n.options.createIfNeeded,void 0,Ce(Ce({},i),{},{consumeInput:!!a||c,onResourceLoad:(u=Re(function*(e){var t;const r=n.emit("sceneResourceLoad",e);yield null===(t=i.onResourceLoad)||void 0===t?void 0:t.call(i,e),r&&(yield new Promise(e=>setTimeout(e,0)))}),function(e){return u.apply(this,arguments)})})),n.authoredSceneVisible=n.lead.scene.object3d.visible,n.sceneTemporarilyHidden=!1,n.showState||n.hideSceneContent(),o.bindings&&(n.options.sceneBindings=o.bindings),d&&(n.options.materialBindings=d.materialBindings,n.options.regionTextureRules=d.regionTextureRules);for(const e of[...n.lead.objects.values()]){var p;n.applyObjectState(e),yield null===(p=e.rebuildFromScene)||void 0===p?void 0:p.call(e)}n.pencil.controls.updateCameraUp(),yield n.restoreCameraControlTarget(),n.pencil.refreshActiveView(),yield n.onSceneRestored(),n.applyControls()}).apply(this,arguments)}getClassRefByType(e){return this.objectTypes[e]}addGroup(){var e=this;return Re(function*(){return yield e.lead.draw(ur.Group)})()}addCSS2D(e){var t=this;return Re(function*(e,n={}){return t.addNode(e,n)}).apply(this,arguments)}addCSS3D(e){var t=this;return Re(function*(e,n={}){return t.addNode(e,Ce(Ce({},n),{},{type:n.type||"3d"}))}).apply(this,arguments)}addNode(e){var t=this;return Re(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=E(this.pencil.renderer,this.pencil.resources);return this.roomEnvLease=e,this.roomEnvMap=e.resource,e.resource}getScreenPosition(e,t,n){const r=new m(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")}};De(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 pe{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(),De(this,"objectType","PlaneMap"),De(this,"options",void 0),De(this,"isActive",!0),De(this,"groupArr",[]),De(this,"areaArr",[]),De(this,"lineArr",void 0),De(this,"mergeSideArea",null),De(this,"extrudelineArr",void 0),De(this,"splitPolygons",0),De(this,"standaloneHideMaterial",void 0),this.options=Ce({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 Re(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=Re(function*(t){const{properties:n}=t,r=`${e.getPropertiesKey(n)}`,i=yield e.draw(pe);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=X(e[t],e=>this.createResource(e));r.name="板块边线",this.sceneResources.add(r),e[n]=r}return e}createExtrudeLines(){var e=this;return Re(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 Re(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 Re(function*(t=this.options.hasExtrudeLine){e.options.hasExtrudeLine=t,t?yield e.createExtrudeLines():e.clearExtrudeLines()}).apply(this,arguments)}mergeAreaSide(){var e=this;return Re(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 Re(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(e,t){var n=this;return Re(function*(){const{bbox:r,material:i,onTop:o}=t,s=n.geojson2Meta(e),a=n.shouldUseGeometryWorker(s);if(t.areaGroup)return yield Promise.all(s.map((c=Re(function*(e){const{coords:s,properties:c}=e,l=!(null==c?void 0:c.extension)&&t.hasSide,d=n.findGroup(n.getPropertiesKey(c)),u=`${n.getPropertiesKey(c)}`;let p=i;!l&&Array.isArray(i)&&(p=i[0]);const h=yield d.draw(Pe,n.options.conic?{useWorker:a,coordinatesArr:s,globalMeta:[n.options.depth,n.options.start],projection:"sphere",topFirst:!0,bbox:r,hasBottom:!1,hasSide:l,hasTop:t.hasTop,useGroups:l&&t.hasTop?2:0,material:p}:{useWorker:a,useFloat64Array:!0,coordinatesArr:s,globalMeta:[n.options.depth],projection:n.options.projection,topSegments:n.options.topSegments,bevelRatio:n.options.bevelRatio,bbox:r,hasBottom:!1,hasSide:l,hasTop:t.hasTop,useGroups:l&&t.hasTop?2:0,splitPolygons:n.splitPolygons,material:p});return o&&h.setTop(o),h.object3d.name="板块",h.object3d.castShadow=n.options.castShadow,h.userData=Ce({},c),Rr(h,"area",u),h}),function(e){return c.apply(this,arguments)})));{const e=s.flatMap(({coords:e})=>e);let o=i;!t.hasSide&&Array.isArray(i)&&(o=i[0]);const c=yield n.draw(Pe,n.options.conic?{useWorker:a,coordinatesArr:e,globalMeta:[n.options.depth,n.options.start],projection:"sphere",topFirst:!0,bbox:r,hasBottom:!1,hasSide:t.hasSide,hasTop:t.hasTop,useGroups:2,material:o}:{useWorker:a,useFloat64Array:!0,coordinatesArr:e,globalMeta:[n.options.depth],projection:Ce({},n.options.projection),topSegments:n.options.topSegments,bevelRatio:n.options.bevelRatio,bbox:r,hasSide:t.hasSide,hasTop:t.hasTop,hasBottom:!1,useGroups:2,splitPolygons:n.splitPolygons,material:o});return c.object3d.castShadow=n.options.castShadow,c.object3d.name="板块",c.userData={},Rr(c,"area","all"),[c]}var c})()}addLine(e,t){var n=this;return Re(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=Re(function*(e){const{coords:t,properties:o}=e,a=n.findGroup(n.getPropertiesKey(o)),c=`${n.getPropertiesKey(o)}`,l=yield a.draw(xe,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(xe,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=Ce(Ce(Ce(Ce(Ce({},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=Ce(Ce({},ur),{},{Earth:class extends dr{constructor(e){const t=Ce({radius:30,rotationY:0},e);super(t),De(this,"objectType","Earth"),De(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 ae{constructor(e){super(),De(this,"objectType","SphereShadow"),De(this,"options",void 0),this.options=Ce({radius:30},e)}create(){var e=this;return Re(function*(){const t=new a(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),De(this,"leftTruck",!1),De(this,"map",void 0),De(this,"sphere",void 0),De(this,"secondaryMap",void 0),De(this,"rotationControls",void 0),De(this,"releaseRotationLock",void 0),De(this,"visibilityChecks",void 0),De(this,"stopAutoRotate",()=>{var e;null===(e=this.releaseRotationLock)||void 0===e||e.call(this),this.releaseRotationLock=this.setTemporaryControls({autoRotateSpeed:0})}),De(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(Ce({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 Re(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,i]=e;if(![r,i,t].every(Number.isFinite))throw new TypeError("Earth location and height must be finite");const o=de(r,i,1,1,!0),s=null===(n=this.sphere)||void 0===n?void 0:n.object3d;s&&o.applyAxisAngle(new m(0,1,0),Math.PI/2);const a=o.clone().multiplyScalar(this.getRadius());return s&&(s.updateWorldMatrix(!0,!1),this.requireSurfaceTransform(s.matrixWorld),s.localToWorld(a),o.applyNormalMatrix((new oe).getNormalMatrix(s.matrixWorld))),{position:a.addScaledVector(o,t),normal:o}}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 m).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 m).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 m,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 m).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 m(...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 oe).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 Re(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()})()}};De(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=Ce({},Ut),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){We(t,n,r)}function Vr(e,t,n){return Hr.apply(this,arguments)}function Hr(){return(Hr=Re(function*(e,t,n){if(!Number.isInteger(t)||!n||!(yield qe(t,n)))throw Error(`Map region ${t} is not authorized`)})).apply(this,arguments)}var Kr=/* @__PURE__ */new WeakMap;function Xr(){return(Xr=Re(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=Ce(Ce({},ur),{},{PlaneMap:kr,ContinentsBg:class extends pe{constructor(e){super(),De(this,"objectType","ContinentsBg"),De(this,"options",void 0),De(this,"mapArr",[]),this.options=e}create(){var e=this;return Re(function*(){const{depth:t}=e.options,n=e.options.materialOptions;e.object3d.name="大洲";const r=yield ze(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=Re(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=zt(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:Ce({},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 _t($t(e),Wt(t))}catch(n){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=h(Ce({},e.options.projection)),[o,s]=t,[a,c]=i([o,s]),l=new m(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 m(0,0,1).applyNormalMatrix((new oe).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 pe{constructor(e){super(),De(this,"objectType","Mountain"),De(this,"options",void 0),De(this,"extrudePolygon",void 0),this.options=Ce({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 e=this;return Re(function*(){const{geojson:t,bbox:n}=e.options,r=e.geojson2Meta(t),i=yield e.pencil.loader.load("/1.png"),o=r.flatMap(({coords:e})=>e),s=yield e.pencil.attributesWorker.geoGeometry("extrudePolygon",{coordinatesArr:o,metaArray:o.map(()=>[e.options.depth]),mesaage:{projection:Ce({},e.options.projection),topSegments:100,bbox:n,hasBottom:!1,hasSide:!1}}),a=e.pencil.resources,c=a.createScope(e);let l;try{c.retain(s);const t=s.attributes.position.count;s.setAttribute("color",new re(new Float32Array(3*t),3));const n=e.options.depth;e.setNoise(s,i.image,n);const r=new V,o=s.attributes.color,a=s.attributes.position,d=new V("red"),u=new V("green");for(let e=0;e<t;e++){const t=a.getZ(e)/n;r.lerpColors(d,u,t),o.setXYZ(e,r.r,r.g,r.b)}l=c.create(()=>new Se({flatShading:!0,vertexColors:!0}));const p=yield e.draw(Pe,{geometry:s,material:l});p.position.z+=.001,e.extrudePolygon=p}finally{c.dispose(),a.disposeUnused(s),l&&a.disposeUnused(l)}})()}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 ae{constructor(e){super(),De(this,"objectType","CityPlane"),De(this,"options",void 0),De(this,"plane",void 0),this.options=Ce({color:"#0C4557",map:null},e)}create(){var e=this;return Re(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 pe{constructor(e){super(),De(this,"objectType","Area"),De(this,"options",void 0),De(this,"area",[]),this.options=Ce({},e)}create(){var e=this;return Re(function*(){const{jsonUrl:t,projection:n,type:r,cacheKey:i,material:o,oArr:s}=e.options,a=yield e.draw(Pe,{useWorker:!0,cacheKey:i,projection:n,material:o,hasBottom:!1,hasSide:!1,onCacheMiss:(c=Re(function*(){const n=yield e.pencil.loader.load(t),r=[],i=[];return(n.features||n).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==s?void 0:s.length)?.001*s.findIndex(e=>e===+t):0;r.push(e),i.push([0,n])})}),{coordinatesArr:r,metaArray:i}}),function(){return c.apply(this,arguments)})});var c;a.userData.mapRole=r,e.area.push(a)})()}rebuildFromScene(){this.area=[],this.children.forEach(e=>{"ExtrudePolygon"===e.objectType&&this.area.push(e)})}},Building:class extends pe{constructor(e){super(),De(this,"objectType","Building"),De(this,"options",void 0),this.options=Ce({},e)}create(){var e=this;return Re(function*(){var t;const{jsonUrl:n,projection:r,cacheKey:i,meters:o,grey:s,hasSide:a}=e.options,c=null!==(t=e.options.materialOptions)&&void 0!==t?t:{},l={};var d;yield Promise.all(["20","60","max"].map((d=Re(function*(t){let i=e.options.material;i||(i=a?[c[t+"Top"],c[t+"Side"]]:c[t+"Top"]);const s=yield e.draw(Pe,{useWorker:!0,cacheKey:e.options.cacheKey?`${e.options.cacheKey}-${t}`:void 0,projection:r,material:i,useGroups:a?2:0,hasBottom:!1,hasSide:null==a||a,onCacheMiss:(d=Re(function*(){var r,i;const s=yield e.pencil.loader.load(n);return Object.keys(l).length||(s.features||s).forEach(e=>{const t="string"==typeof e.properties.h?+e.properties.h.split(".")[1]:0;let n=0|Number(e.properties.h);if(!a){if(0!==t)return;n=0}const r=+n<=20?+n/18:+n<=60?+n/27:+n/12,i=n+t,s=i<=20?"20":i<=60?"60":"max";l[s]||(l[s]={c:[],m:[]});let c=[];"Polygon"===e.geometry.type?c=e.geometry.coordinates:"MultiPolygon"===e.geometry.type&&(c=e.geometry.coordinates.flat()),c.forEach(e=>{l[s].c.push(e),l[s].m.push([n*(o||1),t*(o||1),r])})}),{coordinatesArr:null===(r=l[t])||void 0===r?void 0:r.c,metaArray:null===(i=l[t])||void 0===i?void 0:i.m}}),function(){return d.apply(this,arguments)})});var d;Object.assign(s.userData,{mapRole:"buildingHeight",mapFeatureId:t})}),function(e){return d.apply(this,arguments)}))),e.options.grey||(e.children.forEach(e=>{e.object3d.castShadow=!0}),e.keyType="building"),e.object3d.name="建筑",e.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 pe{constructor(e){super(),De(this,"objectType","Road"),De(this,"options",void 0),De(this,"linePrimary",[]),De(this,"lineSecondary",[]),this.options=Ce({},e)}create(){var e=this;return Re(function*(){const{jsonUrl:t,projection:n,cacheKey:r,meters:i}=e.options,o=yield e.draw(xe,{useWorker:!0,cacheKey:r,projection:n,material:e.options.material,onCacheMiss:(s=Re(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=Re(function*(e,t,n,r,i,s={lookat:n,adcode:r}){var a,c,l,d,u;const p=null!==(a=null===(c=e.scene.pencil.camera)||void 0===c||null===(c=c.up)||void 0===c?void 0:c.clone().normalize())&&void 0!==a?a:new m(0,0,1),h=new m(n[0]-n[3],n[1]-n[4],n[2]-n[5]);h.applyQuaternion((new x).setFromUnitVectors(p,new m(0,1,0)));const f=(new o).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 g=s.padding;if(!g){const r=e.cameraForPose(n);r&&e.scene.map&&(g=t.measurePerspectiveCameraPadding(Ce({points:e.cameraFitPoints(e.scene.map),camera:r},v)))}const y=s.viewport?v.width/s.viewport.width:1,b=s.viewport?v.height/s.viewport.height:1,w=g?[g.top*b,g.right*y,g.bottom*b,g.left*y]:[0,0,0,0];return{polarAngle:f.phi,azimuthAngle:f.theta,referencePadding:w}})).apply(this,arguments)}function Zr(){return Zr=Re(function*(e,t,n,{polarAngle:r,azimuthAngle:i,reference:s,z:a,handleStart:c,adcode:l,enableTransition:d=!0,smoothTime:u=250}={}){var p,h,f,v,g,y,b,w,j,S,A,O,I,M;if(!n.object3d)return;for(const[o,m]of Object.entries({polarAngle:r,azimuthAngle:i}))if(void 0!==m&&!Number.isFinite(m))throw new Error(`Invalid map camera ${o}`);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=Ce(Ce(Ce({},e.cameraAngleOverrides),void 0===r?{}:{polarAngle:r}),void 0===i?{}:{azimuthAngle:i})),null!==(h=s)&&void 0!==h||(s=e.getCameraFitReference()),n===e.scene.map&&s&&s.adcode===e.scene.adcode&&void 0===e.safeAreaInsets&&!e.cameraAngleOverrides)return yield Promise.all([e.scene.lookAt(...s.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(s){const t=yield e.calcPaddingFromReference(s.lookat,s.adcode,s.center,s);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!==(g=null===(y=e.cameraAngleOverrides)||void 0===y?void 0:y.azimuthAngle)&&void 0!==g?g:L;const B=e.scene.pencil.controls;R=ue.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=ue.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 m).setFromSpherical(new o(1,R,L)).applyQuaternion((new x).setFromUnitVectors(new m(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(Ce(Ce({points:e.cameraFitPoints(n),camera:_},z),{},{padding:{top:G[0],right:G[1],bottom:G[2],left:G[3]},targetZ:null!=a?a: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=Re(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=Re(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;Ft(n);const o=ri(e);o.length&&(e.labelGroupObject3dUserData=o[0].object3d.userData);const s=yield e.scene.group.draw(t.objects.Group);try{Ft(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=Re(function*(r){var o,a,c,l,d,u;Ft(n);let{name:p,adcode:h,centroid:f}=r.userData;const{DistrictID:v,DistName:g,iso_a2:y,center:b}=r.userData;if(h=null!==(o=null!==(a=null!==(c=null!==(l=h)&&void 0!==l?l:y)&&void 0!==c?c:v)&&void 0!==a?a:r.userData.id)&&void 0!==o?o:p,f=f||b,p=p||g,!f)return;const w=e.scene.getLocationPosition(f);if(s.children.some(e=>e.userData.mapFeatureId===String(h))||!w)return;const j=new m(...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 m(O,x,I)),children:A});Ft(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)})));Ft(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=Re(function*(e,t,n){const{cityVis:r}=e.prepareCityVis(t,n);try{yield r.preloadResources()}catch(i){throw new Error(`城市 ${t} 初始化失败:${i instanceof Error?i.message:String(i)}`,{cause:i})}})).apply(this,arguments)}function si(){return(si=Re(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=Re(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(l){throw new Error(`城市 ${t} 初始化失败:${l instanceof Error?l.message:String(l)}`,{cause:l})}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})).apply(this,arguments)}function ci(){return(ci=Re(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(o){console.warn("缓存失败",o)}})).apply(this,arguments)}function li(){return(li=Re(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=Ce(Ce({},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=Ce(Ce(Ce({},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,Ce({geojson:i,bbox:o.b,materialOptions:Ce({},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,Ce(Ce({geojson:Ce(Ce({},i),{},{features:[...i.features.filter(t=>e.scene.options.worldBgFull||"CHN"!==t.properties.iso_a3)]}),bbox:o,materialOptions:Ce({},n)},r),{},{projection:Ce(Ce({},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=Re(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=Re(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=Re(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=Re(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=Re(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:je,measurePerspectiveCameraPadding:T,objectWorldBounds:p},gi={objects:Yr,getLabelElement:(e,t={})=>{const n=document.createElement("div");return n.classList.add("vis-map-label"),Object.assign(n.style,Ce(Ce(Ce(Ce({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){De(this,"adcode",0),De(this,"pcenter",[104,37.5]),De(this,"pscale",5e4),De(this,"projection",void 0),De(this,"options",void 0),De(this,"group",void 0),De(this,"building",void 0),De(this,"road",void 0),De(this,"pencil",void 0),De(this,"lead",void 0),De(this,"sceneResources",void 0),De(this,"multiplyScalar",.001),this.pencil=e,this.lead=e.lead,this.sceneResources=e.sceneResources}setOptions(e){this.options=Ce({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 Re(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 Re(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=h(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=-h(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 Re(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 Re(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 Re(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 Re(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:Ve},bi={findAdcodeInfo:Nr,getProjection:h,objects:Yr},wi={findAdcodeInfo:Nr},ji={cloneMaterialResources:be,getAdcodeShowLevel:Fr},Si=class e extends Dr{constructor(...e){super(...e),De(this,"mapObj",void 0),De(this,"activePlaneMap",null),De(this,"safeAreaInsets",void 0),De(this,"safeAreaRefitPending",!1),De(this,"parentBg",[]),De(this,"continentsBg",void 0),De(this,"group",void 0),De(this,"projection",void 0),De(this,"pcenter",[104,37.5]),De(this,"pscale",50),De(this,"meters",void 0),De(this,"cityVis",[]),De(this,"cityGroup",[]),De(this,"regionCameraFitReference",void 0),De(this,"authoredCameraPose",void 0),De(this,"cameraAngleOverrides",void 0),De(this,"bundledMapSwitchKey",void 0),De(this,"navigationAssets",void 0),De(this,"mapBoundaryMatrix",void 0),De(this,"mapBoundaryEnabled",void 0),De(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())}),De(this,"labelUpdates",void 0),De(this,"labelsDirty",!1),De(this,"labelsDisposed",!1),De(this,"labelGroupObject3dUserData",null),De(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 Re(function*(){yield Vr(t,e,t.bundledMapSwitchKey)})()}authorizeSceneOptions(e){var t=this;return Re(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(Ce(Ce({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 m(0,0,1)}onRuntimeReady(){var e=this;return Re(function*(){e.updateProjection(),e.pencil.event.on("beforeRender",e.refreshMapBoundary)})()}prepareInitialCamera(){var e=this;return Re(function*(){if(e.updateMapBoundary(),!e.map||!e.mapObj)return;const t=e.getCameraFitReference();yield e.fitTo(e.map,Ce(Ce({},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 m(0,0,1).applyMatrix3((new oe).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 Re(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 Re(function*(){return function(e,t,n){return oi.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCitySequence(t,n=!1){var r=this;return Re(function*(){return function(e,t){return si.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityVis(t,n=!1){var r=this;return Re(function*(){return function(e,t){return ai.apply(this,arguments)}(e.cityLayersContext(r),t,n)})()}initCityOnMap(t){var n=this;return Re(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 m(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 Re(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 Re(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 Re(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 Vt).run((o=Re(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)),Ft(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 m(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 m(0,0,1).applyNormalMatrix((new oe).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 m(...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 m(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=>_t($t(e),Wt([t]))):"MultiPolygon"===t.geometry.type&&n.some(t=>t.some(t=>_t($t(e),Wt([t]))))})}_loadGeojsonFromConfig(e){var t=this;return Re(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 ze(r.split("{adcode}").join(String(e)),{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}})}return"string"==typeof e?ze(e,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:t.resolveAssetUrl}}):e})()}_loadBaseGeojson(e,t){var n=this;return Re(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?ze(o(t?r.worldLiteGeojson:r.worldGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}}):i?{type:"FeatureCollection",features:(yield ze(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})}:ze(o(t?r.regionLiteGeojson:r.regionGeojson),{assetsPrefix:n.options.assetsPrefix,fetchOptions:{cache:!0,resolveURL:n.resolveAssetUrl}})})()}getGeojson(e,t=!1){var n=this;return Re(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=Ce(Ce({},a),{},{features:[...a.features,...i.flatMap(e=>e.features).filter(e=>e.properties&&!o.has(e.properties.adcode)).map(e=>Ce(Ce({},e),{},{properties:Ce({extension:!0},e.properties)}))]})}return a})()}buildRegion({adcode:e,depth:t=this.options.mapDepth,extrudelineBloom:n}){var r=arguments,i=this;return Re(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=Ce(Ce(Ce({},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=Gt(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 m,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(Ce({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 m),o=r.getWorldDirection(new m),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 m(...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 m)));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 Re(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 Re(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 Re(function*(){var a,c,l;const d=null===(a=s.regionAppearance)||void 0===a?void 0:a.materialOptions,u=Ce({},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=Ce(Ce({},p),h?{bgTopMat:h.topMat,bgSideMat:h.sideMat,bgLineMat:h.lineMat,bgExtrudeLineMat:h.extrudeLineMat}:{}),v=yield s.group.draw(Yr.PlaneMap,Ce(Ce({},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&&Ce({},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 Re(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=h({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 Re(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 Re(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()],h=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 m).sub(t.target.getWorldPosition(new m))}]:[]});for(const p of u){var f;const e=p.object3d.userData,t=e.regionScale,n=e.regionCenter,r=null!==(f=e.regionHeight)&&void 0!==f?f:"keep";if(t&&p.scale.multiplyScalar(a),n&&(p.position.x=d.x,p.position.y=d.y),"scale"===r?p.position.z*=a:"top"===r?p.position.z=l:"bottom"===r&&(p.position.z=c),"percent"===r){const t=Number.isFinite(e.regionHeightPercent)?e.regionHeightPercent:100;p.position.z=c+i.depth*(t/100)}e.regionRemove&&p.erase()}for(const{light:p,target:b,offset:w}of h){const e=b.getWorldPosition(new m).addScaledVector(w,a);p.parent&&p.parent.worldToLocal(e),p.userData.regionCenter&&(e.x=p.position.x,e.y=p.position.y),p.userData.regionHeight&&"keep"!==p.userData.regionHeight&&(e.z=p.position.z),p.position.copy(e)}const v=[...e.scene.lead.objects.values()].map(e=>e.object3d).filter(e=>e.isDirectionalLight&&e.userData.regionLight&&!e.userData.regionRemove);if(!v.length)return;const g=p(e.scene.map.object3d);if(g.isEmpty())return;const y=[];e.scene.lead.scene.object3d.traverseVisible(e=>{const t=e;t.isMesh&&t.receiveShadow&&y.push(p(t))});for(const p of v)pi(p,g,y)}(e.regionOverlaysContext(this),wi,t,n)}rebuildRegion(e,t=!1){var n=arguments,r=this;return Re(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 Re(function*(){var r,i,o,s,a;const c=(l=Re(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?Ce({},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&&Ce({},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 Re(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 Z({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 Re(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)}}};De(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=Ce({},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]=Ce(Ce({},i),{},{scene:Ce(Ce({},i.scene),{},{object:a})}),Ce(Ce({},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]=Ce(Ce({},o),{},{cs:c.cs,csa:c.csa,vis:Ce(Ce({},o.vis),{},{options:Ce(Ce({},o.vis.options),{},{controls:c.controls})}),scene:Ce(Ce({},o.scene),{},{object:l})}),Ce(Ce({},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,c,l,d;const u=e.scenes.findIndex(e=>e.id===t);if(u<0)throw new Error(`Scene ${t} was not found`);const p=e.scenes[u],h=p.scene.object,f=xi(h),v=/* @__PURE__ */new Map,m=/* @__PURE__ */new Map,g=/* @__PURE__ */new Map;for(const H of null!==(i=n.replacements)&&void 0!==i?i:[]){if(!Fi(H)||!Vi(H.uuid)||!f.has(H.uuid)||m.has(H.uuid))throw new Error("Invalid or conflicting replacement object UUID");m.set(H.uuid,H)}const y=[...m.keys()].map(e=>f.get(e).path),b=(e,t)=>e.length<=t.length&&e.every((e,n)=>e===t[n]);for(let H=0;H<y.length;H++)for(let e=H+1;e<y.length;e++)if(b(y[H],y[e])||b(y[e],y[H]))throw new Error("Nested scene structure replacement roots");const w=(e,t)=>{var n;if(!Fi(e)||!Vi(e.uuid)||g.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children)||f.has(e.uuid)&&!b(t,f.get(e.uuid).path))throw new Error("Invalid or conflicting replacement descendant UUID");g.set(e.uuid,e);for(const r of null!==(n=e.children)&&void 0!==n?n:[])w(r,t)};for(const[H,K]of m)w(K,f.get(H).path);const j=e=>{var t;if(!Fi(e)||!Vi(e.uuid)||f.has(e.uuid)||v.has(e.uuid)||g.has(e.uuid)||void 0!==e.children&&!Array.isArray(e.children))throw new Error("Invalid or conflicting added object UUID");v.set(e.uuid,e);for(const n of null!==(t=e.children)&&void 0!==t?t:[])j(n)};for(const H of null!==(o=n.additions)&&void 0!==o?o:[])j(H);const S=new Map([...v,...g]),A=e=>{var t;if(S.has(e))return S.get(e);const n=null===(t=Ii(h,e))||void 0===t?void 0:t.node;if(!n)throw new Error(`Scene structure object ${e} was not found`);return S.set(e,n),n},O=/* @__PURE__ */new Map;for(const H of n.parents){if(!Fi(H)||!Hi(H,["uuid","children"])||!Vi(H.uuid)||O.has(H.uuid)||!Array.isArray(H.children)||H.children.some(e=>!Vi(e))||new Set(H.children).size!==H.children.length)throw new Error("Invalid or duplicate scene structure parent");A(H.uuid),O.set(H.uuid,H.children.map(A))}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",...$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,h.uuid);for(const H of x.keys())A(H);const I=/* @__PURE__ */new Set,M=/* @__PURE__ */new Map,E=e=>{var t,n,r,i;if(e=null!==(t=m.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(I.has(e.uuid))throw new Error("Cycle in scene structure patch");if(M.has(e.uuid))throw new Error("Duplicate object ownership in scene structure patch");I.add(e.uuid),M.set(e.uuid,e);const o=null!==(n=e.children)&&void 0!==n?n:[],s=null!==(r=O.get(e.uuid))&&void 0!==r?r:o;let a,c=e;for(let p=0;p<s.length;p++){var l;const e=E(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=Ce(Ce({},e),{},{children:a}));const d=x.get(e.uuid);if(d){var u;c=Ce({},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),M.set(e.uuid,c),c},P=E(h);for(const H of v.keys())if(!M.has(H))throw new Error("Added object is detached from the scene");for(const H of m.keys())if(!M.has(H))throw new Error("Replaced object is detached from the scene");for(const H of x.keys())if(!M.has(H))throw new Error("Patched object is detached from the scene");for(const[H,K]of O)if(K.length&&!M.has(H))throw new Error("Patched parent is detached from the scene");let D=P===h?p.scene:Ce(Ce({},p.scene),{},{object:P});if(n.graph){var C,R;for(const e of null!==(C=n.graph.unset)&&void 0!==C?C:[])Object.hasOwn(D,e)&&(D===p.scene&&(D=Ce({},D)),delete D[e]);for(const[e,t]of Object.entries(null!==(R=n.graph.set)&&void 0!==R?R:{}))D[e]!==t&&(D===p.scene&&(D=Ce({},D)),D[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(D,e)&&(D=Ce({},D),delete D[e])}else{const n=Yi(D[e],t,"uuid",e);n!==D[e]&&(D=Ce(Ce({},D),{},{[e]:n}))}}}const L=n.assets?Yi(e.materialLibrary,n.assets,"id","material assets"):e.materialLibrary,k=n.prefabs?Yi(e.prefabLibrary,n.prefabs,"id","prefab assets"):e.prefabLibrary,B=(null===(s=n.aliases)||void 0===s?void 0:s.unset)?void 0:null!==(a=null===(c=n.aliases)||void 0===c?void 0:c.set)&&void 0!==a?a:p.materialAliases,T=!!n.interactions&&Object.hasOwn(n.interactions,"set"),U=(null===(l=n.interactions)||void 0===l?void 0:l.unset)?void 0:T?n.interactions.set:p.interactions,_=(null===(d=n.interactions)||void 0===d?void 0:d.unset)?Object.hasOwn(p,"interactions"):T&&(!Object.hasOwn(p,"interactions")||U!==p.interactions);if(function(e,t){var n,r;const i=/* @__PURE__ */new Map;for(const u of Wi){var o;if(void 0!==e[u]&&!Array.isArray(e[u]))throw new Error(`Invalid scene ${u} table`);const t=/* @__PURE__ */new Map;for(const n of null!==(o=e[u])&&void 0!==o?o:[]){if(!Fi(n)||!Vi(n.uuid)||t.has(n.uuid))throw new Error(`Invalid or duplicate scene ${u} UUID`);t.set(n.uuid,n)}i.set(u,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 u of t.values()){if(void 0!==u.geometry&&null!==u.geometry&&s("geometries",u.geometry),void 0!==u.material)for(const e of Array.isArray(u.material)?u.material:[u.material])s("materials",e);if(void 0!==u.skeleton&&(s("skeletons",u.skeleton),a.add(u.skeleton)),void 0!==u.animations){if(!Array.isArray(u.animations))throw new Error("Invalid object animations");for(const e of u.animations)s("animations",e)}ce(u.userData,(e,t)=>s("materials",e[t]),e._sharedOptionsPool)}for(const u of i.get("materials").values()){var c;ie(u,(e,t)=>{"PMREM_PLACEHOLDER"!==e[t]&&s("textures",e[t])});for(const[e,t]of Object.entries(u))"map"!==e&&"matcap"!==e&&!e.endsWith("Map")||null==t||"PMREM_PLACEHOLDER"===t||s("textures",t);for(const e of Object.values(null!==(c=u.uniforms)&&void 0!==c?c:{}))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 l=new Set((null!==(n=e.shapes)&&void 0!==n?n:[]).map(e=>null==e?void 0:e.uuid));for(const u of i.get("geometries").values())if(void 0!==u.shapes&&(!Array.isArray(u.shapes)||u.shapes.some(e=>!Vi(e)||!l.has(e))))throw new Error("Missing scene geometry shape reference");for(const u of i.get("textures").values()){var d;const e=null===(d=u.userData)||void 0===d?void 0:d._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"===u.uuid||"PMREM.cubeUv"===u.name||void 0!==e;if(void 0!==u.image)for(const r of Array.isArray(u.image)?u.image:[u.image]){if("string"!=typeof r)throw new Error("Invalid texture image reference");n&&!i.get("images").has(r)||s("images",r)}}for(const u of a){const e=i.get("skeletons").get(u);if(!Array.isArray(e.bones)||e.bones.some(e=>!Vi(e)||!t.has(e)))throw new Error(`Invalid skeleton bones ${u}`)}for(const u of["background","environment"])"string"==typeof e.object[u]&&"PMREM_PLACEHOLDER"!==e.object[u]&&s("textures",e.object[u]);for(const u of Object.values(null!==(r=e.materialAliases)&&void 0!==r?r:{}))s("materials",null==u?void 0:u.materialUuid)}(D,M),!n.viewport&&D===p.scene&&B===p.materialAliases&&!_&&L===e.materialLibrary&&k===e.prefabLibrary)return e;const G=e.scenes.slice();if(D!==p.scene||B!==p.materialAliases||_){var z,$,W;const e=Ce(Ce({},p),{},{scene:D});(null===(z=n.aliases)||void 0===z?void 0:z.unset)?delete e.materialAliases:void 0!==(null===($=n.aliases)||void 0===$?void 0:$.set)&&(e.materialAliases=B),(null===(W=n.interactions)||void 0===W?void 0:W.unset)?delete e.interactions:T&&(e.interactions=U),G[u]=e}else G[u]=p;let N=Ce(Ce(Ce({},e),{},{scenes:G},L!==e.materialLibrary?{materialLibrary:L}:{}),k!==e.prefabLibrary?{prefabLibrary:k}:{});if(n.viewport){var F,q,V;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)N=zi(N,t,Ce(Ce({},e),{},{camera:e.camera,cs:Object.hasOwn(e,"cs")?e.cs:p.cs,csa:Object.hasOwn(e,"csa")?e.csa:p.csa,controls:null!==(F=null!==(q=e.controls)&&void 0!==q?q:null===(V=p.vis.options)||void 0===V?void 0:V.controls)&&void 0!==F?F:{}}));else{const t=Ce({},N.scenes[u]);Object.hasOwn(e,"cs")&&(t.cs=e.cs),Object.hasOwn(e,"csa")&&(t.csa=e.csa),Object.hasOwn(e,"controls")&&(t.vis=Ce(Ce({},t.vis),{},{options:Ce(Ce({},t.vis.options),{},{controls:e.controls})})),N.scenes[u]=t}}return r&&It(N),N}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=Ce(Ce(Ce({},i),o!==i.materialLibrary?{materialLibrary:o}:{}),s!==i.prefabLibrary?{prefabLibrary:s}:{})),i!==e&&It(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=S(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",Ce(Ce({},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 Re(function*(){for(;t.isSwitching||t.isRegionSwitching;){let n;Ft(e);const r=new Promise(e=>{n=e,t.navigationWaiters.add(n)});try{yield qt(r,e)}finally{t.navigationWaiters.delete(n)}}Ft(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(),De(this,"options",void 0),De(this,"document",void 0),De(this,"manifest",void 0),De(this,"manifestUrl",void 0),De(this,"loadedDefinitions",/* @__PURE__ */new Map),De(this,"definitionLoads",/* @__PURE__ */new Map),De(this,"runtimeHooks",void 0),De(this,"instances",/* @__PURE__ */new Map),De(this,"currentSceneId",""),De(this,"history",[]),De(this,"isSwitching",!1),De(this,"isRegionSwitching",!1),De(this,"pencil",void 0),De(this,"rendererWarmup",void 0),De(this,"disposed",!1),De(this,"safeAreaInsets",void 0),De(this,"generation",0),De(this,"mapRequests",new Vt),De(this,"requestedMapDocument",void 0),De(this,"navigationWaiters",/* @__PURE__ */new Set),De(this,"displayPreparationAbort",new AbortController),De(this,"documentIdentityRevision",0),De(this,"preparedStructures",/* @__PURE__ */new WeakMap),De(this,"pendingInstances",/* @__PURE__ */new Set),De(this,"identityTrackedScenes",/* @__PURE__ */new WeakSet),De(this,"prefabOperations",/* @__PURE__ */new Set),De(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 Re(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 Re(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=Ce(Ce({},this.document),{},{scenes:e})}return d&&this.loadedDefinitions.set(e,u),this.documentIdentityRevision++,!0}setSafeAreaInsets(e){var t=this;return Re(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,Ce(Ce({},n),{},{refit:e===r&&!t.isSwitching&&!t.isRegionSwitching&&n.refit}))))}).apply(this,arguments)}getSafeAreaInsets(){return this.safeAreaInsets&&Ce({},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 Re(function*(){var s,a,c,l;const d=i?AbortSignal.any([o.displayPreparationAbort.signal,i]):o.displayPreparationAbort.signal,u=o.options.beforeSceneDisplay;do{if(Ft(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),Ft(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);Ft(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 Re(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){It(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?Ce(Ce({},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);It({format:Ge,schemaVersion:6,entrySceneId:n.entrySceneId,scenes:n.scenes.map(e=>Ce(Ce({},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=Ce(Ce({},t.get(e.id)),e);return Object.hasOwn(e,"interactions")||delete n.interactions,n});this.invalidatePendingOperations(),this.document=Ce(Ce({},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,Ce(Ce({},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,Ce(Ce({},l),{},{state:Ce(Ce({},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]=Ce(Ce({},s),{},{scene:Ce(Ce({},s.scene),{},{object:a})}),this.document=Ce(Ce({},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=Ce({},t.scene),r=["geometries","textures","images","shapes"];for(const e of r)delete n[e];const i=structuredClone(Ce(Ce({},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=Ke(t,Jt);return Ce(Ce({},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=Ce(Ce(Ce({},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],It);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=Ce(Ce({},i),{},{scenes:i.scenes.map(n=>n.id===e?structuredClone(t):n)});return It(a),this.ownPreparedStructure(i,a,this.generation,this.documentIdentityRevision)}activateSceneForTransaction(e,t,n){var r=this;return Re(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:Ce(Ce({},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,Mt,at);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 Re(function*(e,t,r={}){var i;const o=n.invalidatePendingOperations(),s=yield n.loadDocument(e);n.assertGeneration(o),_e(s)?St(s):It(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(),_e(s)?(St(s),n.document=void 0,n.manifest=structuredClone(s),n.manifestUrl="string"==typeof e?Yt(Ne(e),n.options.assetsPrefix):void 0,n.resolveBundleImages(n.manifest)):(It(s),n.document=n.ownDocument(s,r.consumeInput),n.manifest=void 0,n.manifestUrl=void 0),n.runtimeHooks=t?Ce({},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 Re(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=Ke(l,io),b=structuredClone(e.vis.options||{});for(const e of["pencil","container","css2DContainer","controlsContainer","assetsPrefix"])delete b[e];s=new i(Ce(Ce(Ce({},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=Ce(Ce({},structuredClone(e)),{},{scene:s.exportScene()}),j=jt(Ce({format:Ge,schemaVersion:6,entrySceneId:e.id,scenes:[w]},r.length?{materialLibrary:Dt(w,r)}:{}));return It(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 Re(function*(){return i.loadMapRegionRequest(e,t,n,r)})()}requestMapRegion(e,t,n,r={}){var i,o=this;return this.mapRequests.run((i=Re(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 Ft(i),o.requestedMapDocument={source:e,metadata:r,generation:o.generation},s}const a=yield qt(Promise.resolve(n(s.metadata,t)),i);Ft(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,Ce(Ce({},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 Re(function*(){Ft(i);const s=o.invalidatePendingOperations(!!i),a=yield qt(o.loadDocument(e),i);o.assertGeneration(s),Ft(i),_e(a)?St(a):It(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=_e(a)?{format:Ge,schemaVersion:6,entrySceneId:a.entrySceneId,scenes:a.scenes.map(e=>{let{source:t,bytes:n}=e,r=Ke(e,oo);return Ce(Ce({},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 qt(Promise.resolve(n(e,l)),i);if(o.assertGeneration(s),Ft(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=_e(a)?a.scenes.find(e=>e.id===d):gt(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=_e(a)?void 0:o.ownDocument(a),o.manifest=_e(a)?structuredClone(a):void 0,o.manifestUrl=_e(a)&&"string"==typeof e?Yt(Ne(e),o.options.assetsPrefix):void 0,o.manifest&&o.resolveBundleImages(o.manifest),o.runtimeHooks=r?Ce({},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 Re(function*(){if("string"!=typeof e)return e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?$e(e):e;const n=Ne(e),r=/\.zip(?:[?#]|$)/i.test(n)?fetch(Yt(n,t.options.assetsPrefix)).then((i=Re(function*(e){if(!e.ok)throw Error(`ZIP 下载失败:${e.status}`);return $e(yield e.arrayBuffer(),n)}),function(e){return i.apply(this,arguments)})):ze(n,{assetsPrefix:t.options.assetsPrefix,fetchOptions:{cache:!1}}).then(e=>(St(e),e));var i;return t.pencil||t.prewarmRuntime().catch(()=>{}),yield r})()}getSceneMetadata(e){var t;const n=this.document?gt(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)),kt(e,null===(n=this.manifest)||void 0===n?void 0:n.assets,e=>this.manifestUrl?this.resolveManifestSource(e):Yt(e,this.options.assetsPrefix))}loadSceneDefinition(e){var t=this;return Re(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,et(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(Xt(t.document,e.id),e.id);const i=Xt(Ce(Ce({},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 Ce(Ce(Ce(Ce(Ce({format:t.SCENE_DOCUMENT_FORMAT,schemaVersion:6,entrySceneId:e.id},structuredClone({c:o,d:s,h:a,s:c})),u?{runtimeAssets:Ce(Ce({},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:[Ce(Ce({},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:gt,selectSceneDocument:dt,loadGeojsonAsset:ze,sceneMaterialLibrary:Dt,SCENE_DOCUMENT_FORMAT:Ge}}switchScene(e){var t=this;return Re(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(Ce(Ce({},Ke(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?Ce({},r):t.runtimeHooks,Ce({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 Re(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(Ce(Ce({},Ke(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?Ce({},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 Re(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(gt(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(Ce(Ce({},Ke(h,co)),{},{pencil:r.pencil})),r.pendingInstances.add(l),r.prepareScene(l),yield l.fromJSON(dt(r.document,e),n?Ce({},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,It(A),S.vis.options.createIfNeeded=!0,l.setOptions(S.vis.options),yield l.restoreScene(At(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=jt(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 Re(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 Re(function*(e,t,r={},i){var o,s,a,c;if(Ft(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 qt(n.loadSceneDefinition(e),r.signal);if(n.assertGeneration(d),Ft(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),Ft(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(Ce(Ce({},Ke(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?Ce({},i):n.runtimeHooks,{consumeInput:!0})),n.debugInteraction("map template restored",{fromSceneId:p||null,toSceneId:e,templateAdcode:o,targetAdcode:t}),n.assertGeneration(d),Ft(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),Ft(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),Ft(r.signal),y="prepare-display",yield n.prepareSceneDisplay(v,e,d,!0,r.signal),Ft(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 Re(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 Re(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 Re(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:Ce(Ce({},t),{},{format:r,schemaVersion:6,materialLibrary:n(),scenes:t.scenes.map(e=>Ce(Ce({},e),{},{scene:{}}))})}(n.document,n.manifest,()=>n.resolvedMaterialLibrary(),Ge),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=Kt(n.getSceneMetadata(r),t,s),c=ht(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(Ce(Ce({},Ke(u,uo)),{},{pencil:n.pencil}));l.set(r,j),n.pendingInstances.add(j),n.prepareScene(j),yield j.fromJSON(Ce(Ce({},i),{},{entrySceneId:r,materialLibrary:Dt(c,i.materialLibrary),scenes:[Ce(Ce({},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,ht(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=Ce(Ce({},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?gt(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 Q(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[rt];for(const r of null!==(n=e.textures)&&void 0!==n?n:[])r.userData&&delete r.userData[rt]}})}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 c(e,go)}function bo(e){return q(e,go)}function wo(e,t,n=[]){return g(e,t,n,go)}function jo(e,t){return F(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]=Ce(Ce({},r),{},{scene:n}),Ce(Ce({},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 W(e,{copyPool:t,invalidReferenceMessage:"对象选项池引用无效",cyclicValueMessage:"对象选项存在循环引用"})}function Lo(e,t){var n;const{children:r,shadow:i,userData:o}=e,s=Ke(e,So),a=Ce({},o),c=(null==o?void 0:o._baseObjectUserData)&&Ce({},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(Ce(Ce(Ce({},s),o?{userData:a}:{}),i?{shadow:Ce(Ce({},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,ue.generateUUID()));for(const o of[...t.skeletons,...t.animations])n.set(o.uuid,ue.generateUUID());const r=/* @__PURE__ */new Set(["uuid","geometry","material","skeleton","bones","animations","target","object","copySource"]),i=Ce({object:e},t);ve(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))}}),z(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,Ce({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[Ke(e,Ao)]}const{objectIds:o}=r,s=Ke(r,Oo);return[Ce(Ce({},e),{},{filter:Ce(Ce({},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=ue.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:Ce({_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,Ce({state:n},r.length?{unset:r}:{}))}return Zi(v.size?Do(e,a,Ce(Ce({},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("新增对象身份无效或重复");et({scene:n});const p=Ce({},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=Ce(Ce({},e),{},{userData:Ce(Ce({},e.userData),{},{_baseObjectOptions:t})}))}if(e.children){const t=e.children.map(f);t.some((t,n)=>t!==e.children[n])&&(r=Ce(Ce({},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=Ce(Ce({},r),{},{shadow:Ce(Ce({},e.shadow),{},{camera:t})}))}return r},v=Ce(Ce({},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,Ce(Ce({},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&&!j(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?Ce(Ce({},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:Ce(Ce({},e),{},{interactions:(null==i?void 0:i.length)?i:void 0})});return Ce(Ce({},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,Ce(Ce({},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[at]);return n?Ce(Ce({},e),{},{userData:Ce(Ce({},e.userData),{},{[at]:n.id,[Ye]:n.revision})}):e}),u=Ce(Ce(Ce(Ce({},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?Ce(Ce({},e),{},{action:Ce(Ce({},e.action),{},{sceneId:n})}):e)}:{}),a.materialAliases?{materialAliases:Object.fromEntries(Object.entries(a.materialAliases).map(([e,t])=>[e,l.has(t.assetId)?Ce(Ce({},t),{},{assetId:l.get(t.assetId).id}):t]))}:{}),{},{scene:l.size?Ce(Ce({},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}=P(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:Ce({geometry:u},i?{userData:Ce(Ce({},l.userData),{},{_baseObjectGeometryOverride:!0})}:{})}]])),v=Ce(Ce(Ce({},c.scene),{},{object:f},p?{geometries:p}:{}),h?{shapes:h}:{});return Ce(Ce({},e),{},{scenes:e.scenes.map((e,t)=>t===a?Ce(Ce({},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=Ce(Ce({},e.userData),{},{_baseObjectGeometryOverride:!0})),Object.keys(d).length?d:void 0}function Yo(e,t){const n=R(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=R(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)),Ce(Ce({},e),{},{scenes:e.scenes.map((e,t)=>t===i?Ce(Ce({},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=h(r),o=i([t.longitude,t.latitude]);if(!o||!o.every(Number.isFinite))throw Error("Location cannot be projected");const s=new m(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)),f=Math.hypot(d[0]-o[0],d[1]-o[1])/(c*u);if(![p,f].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:f,scaleBasis:"local spherical approximation"}}function Qo(e,t,n,i){var o;const s=Zo(t,n,i.mapCRS),a=Me(e);if(!a.valid)throw Error(`Invalid model: ${a.issues.join("; ")}`);const c=null!==(o=i.clearance)&&void 0!==o?o: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 me).setFromObject(d,!0);if(void 0!==i.heightMeters){if(!Number.isFinite(i.heightMeters)||i.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=i.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 me).setFromObject(d,!0)}const p=u.getCenter(new m),h=new m(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 r of i.surfaces)r.updateWorldMatrix(!0,!0),r.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 me;for(const r of f){const e=r.clone(!1);e.matrix.copy(l).multiply(r.matrixWorld),e.matrixAutoUpdate=!1,e.matrixWorldNeedsUpdate=!0,v.union((new me).setFromObject(e))}const g=v.max.z+Math.max(1,v.max.z-v.min.z),y=new m(s.local.x,s.local.y,g).applyMatrix4(t.object3d.matrixWorld),b=new m(0,0,-1).transformDirection(t.object3d.matrixWorld),w=new r(y,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 oe).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=Nt;export{at as MATERIAL_ASSET_ID,Ye as MATERIAL_ASSET_REVISION,Pt as MATERIAL_RUNTIME_PROPERTIES,rt as RESOURCE_SOURCE,Ge as SCENE_DOCUMENT_FORMAT,Be as SCENE_DOCUMENT_SCHEMA_VERSION,Ue as SCENE_MANIFEST_FORMAT,ke as SCENE_MANIFEST_SCHEMA_VERSION,fo as SceneManager,le as THREE,U as TWEEN,es as VERSION,Wr as adcodeAll,tr as animationUtils,$o as appendObjectDocument,No as appendScenesDocument,vt as assertProjectMaterials,It as assertRuntimeSceneDocument,St as assertSceneManifest,Le as assertSupportedSceneDocument,Gn as bindMaterialAsset,wn as bindMaterialSlots,tt 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,Ze as createMaterialDefinitionExtractor,on as createRuntimeSceneDocument,At 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,Je as extractMaterialDefinition,jo as extractObjectResourceGraph,Nr as findAdcodeInfo,lt as getMaterialDependencies,Et as getMaterialUsages,Ct as getPrefabMaterialDependencies,gt as getSceneDocument,Go as groupObjectsDocument,Ii as indexedSceneObject,Mi as inheritSceneObjectIndex,Oi as invalidateSceneObjectIndex,ki as isLocalSceneObjectField,Zn as isObjectStateUpdateInProgress,Gi as isSceneCameraField,Te as isSceneDocument,_e as isSceneManifest,Li as isSceneObjectPropertyField,$n as makeMaterialSceneLocal,xn as materialDocumentOperations,it as materializeAssetDefinition,fn as materializeChangedAssets,xt as materializeOwnedProjectMaterials,pt as materializeOwnedSceneMaterials,wt as materializeProjectMaterials,Mt as materializeSceneMaterialDefinitions,ht as materializeSceneMaterials,ft as materializeSceneMaterialsBatch,bt as mergeAuthoredMaterialDefinition,Un as mergeProjectMaterials,zo as moveObjectsDocument,an as normalizeMaterialDefinition,Ot as normalizeOwnedProjectMaterials,jt 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,z as remapSnapshotAnimationTracks,vo as remapSnapshotIdentity,On as removeMaterialAssetDocument,_o as removeObjectsDocument,kn as removeProjectMaterial,Fo as removeSceneDocument,gn as replaceMaterialAssetDocument,ot as resourceInstanceUuid,Rt as restoreRuntimeImageFiles,Dt as sceneMaterialLibrary,xi as sceneObjectIndex,Bi as sceneObjectPropertyDefaults,$i as scenePropertyFields,dt as selectSceneDocument,sn as splitSceneDocument,Xe as stripMaterialAssetBinding,Ln as updateProjectMaterial,Mn as visitSceneIdentityReferences};