@mappedin/mappedin-js 6.17.1 → 6.18.0
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/THIRD_PARTY_LICENSES.txt +216 -7
- package/lib/esm/GLTFExporter-REUTCDDJ.js +1 -0
- package/lib/esm/GLTFLoader-BHAZAEWN.js +1 -0
- package/lib/esm/chunk-FILUCKU4.js +1 -0
- package/lib/esm/{chunk-IGHVNMJ3.js → chunk-FQILVVN4.js} +1 -1
- package/lib/esm/chunk-KNYR4VGD.js +1 -0
- package/lib/esm/chunk-MCLERQTU.js +1 -0
- package/lib/esm/chunk-USECXCBB.js +1 -0
- package/lib/esm/{chunk-43W5ISDI.js → chunk-X2XAL5AL.js} +1 -1
- package/lib/esm/index.css +1 -1
- package/lib/esm/index.d.ts +588 -162
- package/lib/esm/index.js +1 -1
- package/lib/esm/{inspector-AQXLD4YL.js → inspector-6AQ5XCPD.js} +1 -1
- package/lib/esm/inspector-6RM5OI6U.css +1 -0
- package/lib/esm/{internal-7BZS3RBF.js → internal-I66JHO4D.js} +1 -1
- package/lib/esm/internal-J5PK6TOB.css +1 -0
- package/lib/esm/{roboto-regular-MRBWMLOE.js → roboto-regular-OIQQVHWA.js} +1 -1
- package/lib/esm/src-VUR3CJ3Y.js +1 -0
- package/lib/esm/{text3d-Z7SSD7IN.js → text3d-WK55MUUL.js} +1 -1
- package/lib/index.css +1 -1
- package/package.json +2 -2
- package/lib/esm/GLTFExporter-CXO2YAF3.js +0 -1
- package/lib/esm/GLTFLoader-I7TPEHSY.js +0 -1
- package/lib/esm/chunk-72VREA6L.js +0 -1
- package/lib/esm/chunk-PCYD3VDS.js +0 -1
- package/lib/esm/chunk-PUC4BMPX.js +0 -1
- package/lib/esm/chunk-RTTZ7LHQ.js +0 -1
- package/lib/esm/inspector-YWC6NP6D.css +0 -1
- package/lib/esm/internal-QC6SWNN2.css +0 -1
- package/lib/esm/src-YUNUBHAQ.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as vd,$a as kd,$b as jc,Aa as uo,Ab as Qd,Bb as Un,C as wc,Ca as qe,Cb as is,D as Wh,Da as Pt,Db as Nt,E as Na,Ea as Ar,Eb as em,F as Gn,Fa as _c,Fb as tm,G as en,Ga as Rr,Gb as rm,H as Tc,Ha as qa,Hb as Nc,Ia as Ja,Ib as nm,Ja as Ka,Jb as kc,Ka as Pd,Kb as zc,La as Id,Lb as os,M as Bn,Ma as zn,Mb as im,N as Dc,Na as Od,Nb as om,O as jh,Oa as Ci,Ob as Uc,Pa as Ld,Pb as am,Qb as sm,Ra as Ad,Rb as Hc,Sa as Qa,Sb as lm,Ta as Rd,Tb as hn,U as Pc,Ua as _d,Ub as as,Va as Fd,Vb as Vc,W as Ic,Wa as Gd,Wb as cm,Xa as Fc,Xb as um,Ya as Bd,Yb as Wc,Z as Zh,Za as Nd,Zb as hm,_a as wi,_b as po,ab as es,ac as ss,b as zh,ba as so,bb as Gc,bc as dm,ca as xd,cb as zd,cc as Zc,d as $,db as ts,dc as mm,e as pi,eb as ho,ec as pm,f as ro,fb as _r,fc as fm,g as fi,gb as rs,gc as gm,h as Ra,ha as lo,hb as cn,i as ve,ib as un,ic as ym,j as Sc,jb as Ud,jc as bm,k as _a,ka as co,kc as vm,l as Fa,la as ln,lc as xm,m as Ga,ma as Sd,mb as Hd,mc as gr,n as Fn,na as Md,nb as ns,nc as Sm,o as Uh,oa as Ed,ob as Vd,oc as at,p as Hh,pa as Cd,pb as mo,pc as Mm,qa as wd,qb as Wd,qc as ls,r as Vh,ra as Ya,rb as jd,rc as yr,s as Mc,sa as Td,sb as Bc,sc as Em,t as Ba,ta as Dd,tb as Zd,tc as Je,ua as Ac,ub as Xd,uc as mt,v as Ec,va as Rc,vb as Yd,vc as Ne,w as Qr,wa as Bt,wb as $d,xa as Pe,xb as qd,y as Cc,ya as Ei,yb as Jd,z as Pr,za as $a,zb as Kd}from"./chunk-USECXCBB.js";import{a as Zt}from"./chunk-X2XAL5AL.js";import{$ as Or,A as Qh,Aa as bi,C as Nn,Ca as on,E as tt,F as Wt,G as Ua,H as Ha,Ha as ld,I as ed,Ia as cd,J as Ir,Ja as ja,K as gi,Ka as ud,La as hd,M as td,Ma as vi,N as de,Na as xi,O as he,Oa as Si,P as tn,Pa as bt,Q as N,Qa as Mi,Ra as dd,Sa as ao,Ua as an,V as rd,Va as md,W as nd,X as oo,Y as Ve,Z as id,_ as Se,a as v,aa as Tt,b as D,ba as le,c as ka,ca as od,cb as Za,d as za,da as dt,e as Xh,ea as Dt,f as fr,fa as kn,fb as Lc,g as Yh,ga as rn,gb as Xa,h as $h,ha as me,hb as pd,i as no,ia as nn,ka as jt,la as ad,lb as fd,ma as Oc,na as Va,nb as sn,o as io,oa as Lr,pb as gd,qb as yd,r as qh,s as Jh,sb as bd,u as Kh,wa as we,xa as sd,ya as yi,za as Wa}from"./chunk-KNYR4VGD.js";import{a as X,b as De,c as La,e as pr,f as Jg,g as Aa,h as p,i as c,j as A,k as F,l as Z}from"./chunk-FQILVVN4.js";var Rp=pr((Pu,Iu)=>{v();(function(i,r){typeof Pu=="object"&&typeof Iu<"u"?Iu.exports=r():typeof define=="function"&&define.amd?define(r):(i=i||self).RBush=r()})(Pu,function(){"use strict";function i(y,g,S,M,E){(function w(_,L,T,C,R){for(;C>T;){if(C-T>600){var O=C-T+1,B=L-T+1,k=Math.log(O),J=.5*Math.exp(2*k/3),z=.5*Math.sqrt(k*J*(O-J)/O)*(B-O/2<0?-1:1),U=Math.max(T,Math.floor(L-B*J/O+z)),ce=Math.min(C,Math.floor(L+(O-B)*J/O+z));w(_,L,U,ce,R)}var te=_[L],G=T,H=C;for(r(_,T,L),R(_[C],te)>0&&r(_,T,C);G<H;){for(r(_,G,H),G++,H--;R(_[G],te)<0;)G++;for(;R(_[H],te)>0;)H--}R(_[T],te)===0?r(_,T,H):r(_,++H,C),H<=L&&(T=H+1),L<=H&&(C=H-1)}})(y,g,S||0,M||y.length-1,E||e)}function r(y,g,S){var M=y[g];y[g]=y[S],y[S]=M}function e(y,g){return y<g?-1:y>g?1:0}var t=function(y){y===void 0&&(y=9),this._maxEntries=Math.max(4,y),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function n(y,g,S){if(!S)return g.indexOf(y);for(var M=0;M<g.length;M++)if(S(y,g[M]))return M;return-1}function o(y,g){a(y,0,y.children.length,g,y)}function a(y,g,S,M,E){E||(E=b(null)),E.minX=1/0,E.minY=1/0,E.maxX=-1/0,E.maxY=-1/0;for(var w=g;w<S;w++){var _=y.children[w];l(E,y.leaf?M(_):_)}return E}function l(y,g){return y.minX=Math.min(y.minX,g.minX),y.minY=Math.min(y.minY,g.minY),y.maxX=Math.max(y.maxX,g.maxX),y.maxY=Math.max(y.maxY,g.maxY),y}function s(y,g){return y.minX-g.minX}function u(y,g){return y.minY-g.minY}function h(y){return(y.maxX-y.minX)*(y.maxY-y.minY)}function m(y){return y.maxX-y.minX+(y.maxY-y.minY)}function d(y,g){return y.minX<=g.minX&&y.minY<=g.minY&&g.maxX<=y.maxX&&g.maxY<=y.maxY}function f(y,g){return g.minX<=y.maxX&&g.minY<=y.maxY&&g.maxX>=y.minX&&g.maxY>=y.minY}function b(y){return{children:y,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function x(y,g,S,M,E){for(var w=[g,S];w.length;)if(!((S=w.pop())-(g=w.pop())<=M)){var _=g+Math.ceil((S-g)/M/2)*M;i(y,_,g,S,E),w.push(g,_,_,S)}}return t.prototype.all=function(){return this._all(this.data,[])},t.prototype.search=function(y){var g=this.data,S=[];if(!f(y,g))return S;for(var M=this.toBBox,E=[];g;){for(var w=0;w<g.children.length;w++){var _=g.children[w],L=g.leaf?M(_):_;f(y,L)&&(g.leaf?S.push(_):d(y,L)?this._all(_,S):E.push(_))}g=E.pop()}return S},t.prototype.collides=function(y){var g=this.data;if(!f(y,g))return!1;for(var S=[];g;){for(var M=0;M<g.children.length;M++){var E=g.children[M],w=g.leaf?this.toBBox(E):E;if(f(y,w)){if(g.leaf||d(y,w))return!0;S.push(E)}}g=S.pop()}return!1},t.prototype.load=function(y){if(!y||!y.length)return this;if(y.length<this._minEntries){for(var g=0;g<y.length;g++)this.insert(y[g]);return this}var S=this._build(y.slice(),0,y.length-1,0);if(this.data.children.length)if(this.data.height===S.height)this._splitRoot(this.data,S);else{if(this.data.height<S.height){var M=this.data;this.data=S,S=M}this._insert(S,this.data.height-S.height-1,!0)}else this.data=S;return this},t.prototype.insert=function(y){return y&&this._insert(y,this.data.height-1),this},t.prototype.clear=function(){return this.data=b([]),this},t.prototype.remove=function(y,g){if(!y)return this;for(var S,M,E,w=this.data,_=this.toBBox(y),L=[],T=[];w||L.length;){if(w||(w=L.pop(),M=L[L.length-1],S=T.pop(),E=!0),w.leaf){var C=n(y,w.children,g);if(C!==-1)return w.children.splice(C,1),L.push(w),this._condense(L),this}E||w.leaf||!d(w,_)?M?(S++,w=M.children[S],E=!1):w=null:(L.push(w),T.push(S),S=0,M=w,w=w.children[0])}return this},t.prototype.toBBox=function(y){return y},t.prototype.compareMinX=function(y,g){return y.minX-g.minX},t.prototype.compareMinY=function(y,g){return y.minY-g.minY},t.prototype.toJSON=function(){return this.data},t.prototype.fromJSON=function(y){return this.data=y,this},t.prototype._all=function(y,g){for(var S=[];y;)y.leaf?g.push.apply(g,y.children):S.push.apply(S,y.children),y=S.pop();return g},t.prototype._build=function(y,g,S,M){var E,w=S-g+1,_=this._maxEntries;if(w<=_)return o(E=b(y.slice(g,S+1)),this.toBBox),E;M||(M=Math.ceil(Math.log(w)/Math.log(_)),_=Math.ceil(w/Math.pow(_,M-1))),(E=b([])).leaf=!1,E.height=M;var L=Math.ceil(w/_),T=L*Math.ceil(Math.sqrt(_));x(y,g,S,T,this.compareMinX);for(var C=g;C<=S;C+=T){var R=Math.min(C+T-1,S);x(y,C,R,L,this.compareMinY);for(var O=C;O<=R;O+=L){var B=Math.min(O+L-1,R);E.children.push(this._build(y,O,B,M-1))}}return o(E,this.toBBox),E},t.prototype._chooseSubtree=function(y,g,S,M){for(;M.push(g),!g.leaf&&M.length-1!==S;){for(var E=1/0,w=1/0,_=void 0,L=0;L<g.children.length;L++){var T=g.children[L],C=h(T),R=(O=y,B=T,(Math.max(B.maxX,O.maxX)-Math.min(B.minX,O.minX))*(Math.max(B.maxY,O.maxY)-Math.min(B.minY,O.minY))-C);R<w?(w=R,E=C<E?C:E,_=T):R===w&&C<E&&(E=C,_=T)}g=_||g.children[0]}var O,B;return g},t.prototype._insert=function(y,g,S){var M=S?y:this.toBBox(y),E=[],w=this._chooseSubtree(M,this.data,g,E);for(w.children.push(y),l(w,M);g>=0&&E[g].children.length>this._maxEntries;)this._split(E,g),g--;this._adjustParentBBoxes(M,E,g)},t.prototype._split=function(y,g){var S=y[g],M=S.children.length,E=this._minEntries;this._chooseSplitAxis(S,E,M);var w=this._chooseSplitIndex(S,E,M),_=b(S.children.splice(w,S.children.length-w));_.height=S.height,_.leaf=S.leaf,o(S,this.toBBox),o(_,this.toBBox),g?y[g-1].children.push(_):this._splitRoot(S,_)},t.prototype._splitRoot=function(y,g){this.data=b([y,g]),this.data.height=y.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},t.prototype._chooseSplitIndex=function(y,g,S){for(var M,E,w,_,L,T,C,R=1/0,O=1/0,B=g;B<=S-g;B++){var k=a(y,0,B,this.toBBox),J=a(y,B,S,this.toBBox),z=(E=k,w=J,_=void 0,L=void 0,T=void 0,C=void 0,_=Math.max(E.minX,w.minX),L=Math.max(E.minY,w.minY),T=Math.min(E.maxX,w.maxX),C=Math.min(E.maxY,w.maxY),Math.max(0,T-_)*Math.max(0,C-L)),U=h(k)+h(J);z<R?(R=z,M=B,O=U<O?U:O):z===R&&U<O&&(O=U,M=B)}return M||S-g},t.prototype._chooseSplitAxis=function(y,g,S){var M=y.leaf?this.compareMinX:s,E=y.leaf?this.compareMinY:u;this._allDistMargin(y,g,S,M)<this._allDistMargin(y,g,S,E)&&y.children.sort(M)},t.prototype._allDistMargin=function(y,g,S,M){y.children.sort(M);for(var E=this.toBBox,w=a(y,0,g,E),_=a(y,S-g,S,E),L=m(w)+m(_),T=g;T<S-g;T++){var C=y.children[T];l(w,y.leaf?E(C):C),L+=m(w)}for(var R=S-g-1;R>=g;R--){var O=y.children[R];l(_,y.leaf?E(O):O),L+=m(_)}return L},t.prototype._adjustParentBBoxes=function(y,g,S){for(var M=S;M>=0;M--)l(g[M],y)},t.prototype._condense=function(y){for(var g=y.length-1,S=void 0;g>=0;g--)y[g].children.length===0?g>0?(S=y[g-1].children).splice(S.indexOf(y[g]),1):this.clear():o(y[g],this.toBBox)},t})});var _u=pr(ne=>{"use strict";v();Object.defineProperty(ne,"__esModule",{value:!0});ne.earthRadius=63710088e-1;ne.factors={centimeters:ne.earthRadius*100,centimetres:ne.earthRadius*100,degrees:ne.earthRadius/111325,feet:ne.earthRadius*3.28084,inches:ne.earthRadius*39.37,kilometers:ne.earthRadius/1e3,kilometres:ne.earthRadius/1e3,meters:ne.earthRadius,metres:ne.earthRadius,miles:ne.earthRadius/1609.344,millimeters:ne.earthRadius*1e3,millimetres:ne.earthRadius*1e3,nauticalmiles:ne.earthRadius/1852,radians:1,yards:ne.earthRadius*1.0936};ne.unitsFactors={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:1/1e3,kilometres:1/1e3,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/ne.earthRadius,yards:1.0936133};ne.areaFactors={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046};function En(i,r,e){e===void 0&&(e={});var t={type:"Feature"};return(e.id===0||e.id)&&(t.id=e.id),e.bbox&&(t.bbox=e.bbox),t.properties=r||{},t.geometry=i,t}ne.feature=En;function Tb(i,r,e){switch(e===void 0&&(e={}),i){case"Point":return Ou(r).geometry;case"LineString":return Au(r).geometry;case"Polygon":return Lu(r).geometry;case"MultiPoint":return Fp(r).geometry;case"MultiLineString":return _p(r).geometry;case"MultiPolygon":return Gp(r).geometry;default:throw new Error(i+" is invalid")}}ne.geometry=Tb;function Ou(i,r,e){if(e===void 0&&(e={}),!i)throw new Error("coordinates is required");if(!Array.isArray(i))throw new Error("coordinates must be an Array");if(i.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!il(i[0])||!il(i[1]))throw new Error("coordinates must contain numbers");var t={type:"Point",coordinates:i};return En(t,r,e)}ne.point=Ou;function Db(i,r,e){return e===void 0&&(e={}),ol(i.map(function(t){return Ou(t,r)}),e)}ne.points=Db;function Lu(i,r,e){e===void 0&&(e={});for(var t=0,n=i;t<n.length;t++){var o=n[t];if(o.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var a=0;a<o[o.length-1].length;a++)if(o[o.length-1][a]!==o[0][a])throw new Error("First and last Position are not equivalent.")}var l={type:"Polygon",coordinates:i};return En(l,r,e)}ne.polygon=Lu;function Pb(i,r,e){return e===void 0&&(e={}),ol(i.map(function(t){return Lu(t,r)}),e)}ne.polygons=Pb;function Au(i,r,e){if(e===void 0&&(e={}),i.length<2)throw new Error("coordinates must be an array of two or more positions");var t={type:"LineString",coordinates:i};return En(t,r,e)}ne.lineString=Au;function Ib(i,r,e){return e===void 0&&(e={}),ol(i.map(function(t){return Au(t,r)}),e)}ne.lineStrings=Ib;function ol(i,r){r===void 0&&(r={});var e={type:"FeatureCollection"};return r.id&&(e.id=r.id),r.bbox&&(e.bbox=r.bbox),e.features=i,e}ne.featureCollection=ol;function _p(i,r,e){e===void 0&&(e={});var t={type:"MultiLineString",coordinates:i};return En(t,r,e)}ne.multiLineString=_p;function Fp(i,r,e){e===void 0&&(e={});var t={type:"MultiPoint",coordinates:i};return En(t,r,e)}ne.multiPoint=Fp;function Gp(i,r,e){e===void 0&&(e={});var t={type:"MultiPolygon",coordinates:i};return En(t,r,e)}ne.multiPolygon=Gp;function Ob(i,r,e){e===void 0&&(e={});var t={type:"GeometryCollection",geometries:i};return En(t,r,e)}ne.geometryCollection=Ob;function Lb(i,r){if(r===void 0&&(r=0),r&&!(r>=0))throw new Error("precision must be a positive number");var e=Math.pow(10,r||0);return Math.round(i*e)/e}ne.round=Lb;function Bp(i,r){r===void 0&&(r="kilometers");var e=ne.factors[r];if(!e)throw new Error(r+" units is invalid");return i*e}ne.radiansToLength=Bp;function Ru(i,r){r===void 0&&(r="kilometers");var e=ne.factors[r];if(!e)throw new Error(r+" units is invalid");return i/e}ne.lengthToRadians=Ru;function Ab(i,r){return Np(Ru(i,r))}ne.lengthToDegrees=Ab;function Rb(i){var r=i%360;return r<0&&(r+=360),r}ne.bearingToAzimuth=Rb;function Np(i){var r=i%(2*Math.PI);return r*180/Math.PI}ne.radiansToDegrees=Np;function _b(i){var r=i%360;return r*Math.PI/180}ne.degreesToRadians=_b;function Fb(i,r,e){if(r===void 0&&(r="kilometers"),e===void 0&&(e="kilometers"),!(i>=0))throw new Error("length must be a positive number");return Bp(Ru(i,r),e)}ne.convertLength=Fb;function Gb(i,r,e){if(r===void 0&&(r="meters"),e===void 0&&(e="kilometers"),!(i>=0))throw new Error("area must be a positive number");var t=ne.areaFactors[r];if(!t)throw new Error("invalid original units");var n=ne.areaFactors[e];if(!n)throw new Error("invalid final units");return i/t*n}ne.convertArea=Gb;function il(i){return!isNaN(i)&&i!==null&&!Array.isArray(i)}ne.isNumber=il;function Bb(i){return!!i&&i.constructor===Object}ne.isObject=Bb;function Nb(i){if(!i)throw new Error("bbox is required");if(!Array.isArray(i))throw new Error("bbox must be an Array");if(i.length!==4&&i.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");i.forEach(function(r){if(!il(r))throw new Error("bbox must only contain numbers")})}ne.validateBBox=Nb;function kb(i){if(!i)throw new Error("id is required");if(["string","number"].indexOf(typeof i)===-1)throw new Error("id must be a number or a string")}ne.validateId=kb});var Vp=pr(Qe=>{"use strict";v();Object.defineProperty(Qe,"__esModule",{value:!0});var ft=_u();function qo(i,r,e){if(i!==null)for(var t,n,o,a,l,s,u,h=0,m=0,d,f=i.type,b=f==="FeatureCollection",x=f==="Feature",y=b?i.features.length:1,g=0;g<y;g++){u=b?i.features[g].geometry:x?i.geometry:i,d=u?u.type==="GeometryCollection":!1,l=d?u.geometries.length:1;for(var S=0;S<l;S++){var M=0,E=0;if(a=d?u.geometries[S]:u,a!==null){s=a.coordinates;var w=a.type;switch(h=e&&(w==="Polygon"||w==="MultiPolygon")?1:0,w){case null:break;case"Point":if(r(s,m,g,M,E)===!1)return!1;m++,M++;break;case"LineString":case"MultiPoint":for(t=0;t<s.length;t++){if(r(s[t],m,g,M,E)===!1)return!1;m++,w==="MultiPoint"&&M++}w==="LineString"&&M++;break;case"Polygon":case"MultiLineString":for(t=0;t<s.length;t++){for(n=0;n<s[t].length-h;n++){if(r(s[t][n],m,g,M,E)===!1)return!1;m++}w==="MultiLineString"&&M++,w==="Polygon"&&E++}w==="Polygon"&&M++;break;case"MultiPolygon":for(t=0;t<s.length;t++){for(E=0,n=0;n<s[t].length;n++){for(o=0;o<s[t][n].length-h;o++){if(r(s[t][n][o],m,g,M,E)===!1)return!1;m++}E++}M++}break;case"GeometryCollection":for(t=0;t<a.geometries.length;t++)if(qo(a.geometries[t],r,e)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function zb(i,r,e,t){var n=e;return qo(i,function(o,a,l,s,u){a===0&&e===void 0?n=o:n=r(n,o,a,l,s,u)},t),n}function kp(i,r){var e;switch(i.type){case"FeatureCollection":for(e=0;e<i.features.length&&r(i.features[e].properties,e)!==!1;e++);break;case"Feature":r(i.properties,0);break}}function Ub(i,r,e){var t=e;return kp(i,function(n,o){o===0&&e===void 0?t=n:t=r(t,n,o)}),t}function zp(i,r){if(i.type==="Feature")r(i,0);else if(i.type==="FeatureCollection")for(var e=0;e<i.features.length&&r(i.features[e],e)!==!1;e++);}function Hb(i,r,e){var t=e;return zp(i,function(n,o){o===0&&e===void 0?t=n:t=r(t,n,o)}),t}function Vb(i){var r=[];return qo(i,function(e){r.push(e)}),r}function Fu(i,r){var e,t,n,o,a,l,s,u,h,m,d=0,f=i.type==="FeatureCollection",b=i.type==="Feature",x=f?i.features.length:1;for(e=0;e<x;e++){for(l=f?i.features[e].geometry:b?i.geometry:i,u=f?i.features[e].properties:b?i.properties:{},h=f?i.features[e].bbox:b?i.bbox:void 0,m=f?i.features[e].id:b?i.id:void 0,s=l?l.type==="GeometryCollection":!1,a=s?l.geometries.length:1,n=0;n<a;n++){if(o=s?l.geometries[n]:l,o===null){if(r(null,d,u,h,m)===!1)return!1;continue}switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":{if(r(o,d,u,h,m)===!1)return!1;break}case"GeometryCollection":{for(t=0;t<o.geometries.length;t++)if(r(o.geometries[t],d,u,h,m)===!1)return!1;break}default:throw new Error("Unknown Geometry Type")}}d++}}function Wb(i,r,e){var t=e;return Fu(i,function(n,o,a,l,s){o===0&&e===void 0?t=n:t=r(t,n,o,a,l,s)}),t}function al(i,r){Fu(i,function(e,t,n,o,a){var l=e===null?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return r(ft.feature(e,n,{bbox:o,id:a}),t,0)===!1?!1:void 0}var s;switch(l){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon";break}for(var u=0;u<e.coordinates.length;u++){var h=e.coordinates[u],m={type:s,coordinates:h};if(r(ft.feature(m,n),t,u)===!1)return!1}})}function jb(i,r,e){var t=e;return al(i,function(n,o,a){o===0&&a===0&&e===void 0?t=n:t=r(t,n,o,a)}),t}function Up(i,r){al(i,function(e,t,n){var o=0;if(e.geometry){var a=e.geometry.type;if(!(a==="Point"||a==="MultiPoint")){var l,s=0,u=0,h=0;if(qo(e,function(m,d,f,b,x){if(l===void 0||t>s||b>u||x>h){l=m,s=t,u=b,h=x,o=0;return}var y=ft.lineString([l,m],e.properties);if(r(y,t,n,x,o)===!1)return!1;o++,l=m})===!1)return!1}}})}function Zb(i,r,e){var t=e,n=!1;return Up(i,function(o,a,l,s,u){n===!1&&e===void 0?t=o:t=r(t,o,a,l,s,u),n=!0}),t}function Hp(i,r){if(!i)throw new Error("geojson is required");al(i,function(e,t,n){if(e.geometry!==null){var o=e.geometry.type,a=e.geometry.coordinates;switch(o){case"LineString":if(r(e,t,n,0,0)===!1)return!1;break;case"Polygon":for(var l=0;l<a.length;l++)if(r(ft.lineString(a[l],e.properties),t,n,l)===!1)return!1;break}}})}function Xb(i,r,e){var t=e;return Hp(i,function(n,o,a,l){o===0&&e===void 0?t=n:t=r(t,n,o,a,l)}),t}function Yb(i,r){if(r=r||{},!ft.isObject(r))throw new Error("options is invalid");var e=r.featureIndex||0,t=r.multiFeatureIndex||0,n=r.geometryIndex||0,o=r.segmentIndex||0,a=r.properties,l;switch(i.type){case"FeatureCollection":e<0&&(e=i.features.length+e),a=a||i.features[e].properties,l=i.features[e].geometry;break;case"Feature":a=a||i.properties,l=i.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":l=i;break;default:throw new Error("geojson is invalid")}if(l===null)return null;var s=l.coordinates;switch(l.type){case"Point":case"MultiPoint":return null;case"LineString":return o<0&&(o=s.length+o-1),ft.lineString([s[o],s[o+1]],a,r);case"Polygon":return n<0&&(n=s.length+n),o<0&&(o=s[n].length+o-1),ft.lineString([s[n][o],s[n][o+1]],a,r);case"MultiLineString":return t<0&&(t=s.length+t),o<0&&(o=s[t].length+o-1),ft.lineString([s[t][o],s[t][o+1]],a,r);case"MultiPolygon":return t<0&&(t=s.length+t),n<0&&(n=s[t].length+n),o<0&&(o=s[t][n].length-o-1),ft.lineString([s[t][n][o],s[t][n][o+1]],a,r)}throw new Error("geojson is invalid")}function $b(i,r){if(r=r||{},!ft.isObject(r))throw new Error("options is invalid");var e=r.featureIndex||0,t=r.multiFeatureIndex||0,n=r.geometryIndex||0,o=r.coordIndex||0,a=r.properties,l;switch(i.type){case"FeatureCollection":e<0&&(e=i.features.length+e),a=a||i.features[e].properties,l=i.features[e].geometry;break;case"Feature":a=a||i.properties,l=i.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":l=i;break;default:throw new Error("geojson is invalid")}if(l===null)return null;var s=l.coordinates;switch(l.type){case"Point":return ft.point(s,a,r);case"MultiPoint":return t<0&&(t=s.length+t),ft.point(s[t],a,r);case"LineString":return o<0&&(o=s.length+o),ft.point(s[o],a,r);case"Polygon":return n<0&&(n=s.length+n),o<0&&(o=s[n].length+o),ft.point(s[n][o],a,r);case"MultiLineString":return t<0&&(t=s.length+t),o<0&&(o=s[t].length+o),ft.point(s[t][o],a,r);case"MultiPolygon":return t<0&&(t=s.length+t),n<0&&(n=s[t].length+n),o<0&&(o=s[t][n].length-o),ft.point(s[t][n][o],a,r)}throw new Error("geojson is invalid")}Qe.coordAll=Vb;Qe.coordEach=qo;Qe.coordReduce=zb;Qe.featureEach=zp;Qe.featureReduce=Hb;Qe.findPoint=$b;Qe.findSegment=Yb;Qe.flattenEach=al;Qe.flattenReduce=jb;Qe.geomEach=Fu;Qe.geomReduce=Wb;Qe.lineEach=Hp;Qe.lineReduce=Xb;Qe.propEach=kp;Qe.propReduce=Ub;Qe.segmentEach=Up;Qe.segmentReduce=Zb});var $p=pr(xe=>{"use strict";v();Object.defineProperty(xe,"__esModule",{value:!0});var Rt=63710088e-1,Bu={centimeters:Rt*100,centimetres:Rt*100,degrees:360/(2*Math.PI),feet:Rt*3.28084,inches:Rt*39.37,kilometers:Rt/1e3,kilometres:Rt/1e3,meters:Rt,metres:Rt,miles:Rt/1609.344,millimeters:Rt*1e3,millimetres:Rt*1e3,nauticalmiles:Rt/1852,radians:1,yards:Rt*1.0936},Gu={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function Cn(i,r,e={}){let t={type:"Feature"};return(e.id===0||e.id)&&(t.id=e.id),e.bbox&&(t.bbox=e.bbox),t.properties=r||{},t.geometry=i,t}function qb(i,r,e={}){switch(i){case"Point":return Nu(r).geometry;case"LineString":return zu(r).geometry;case"Polygon":return ku(r).geometry;case"MultiPoint":return jp(r).geometry;case"MultiLineString":return Wp(r).geometry;case"MultiPolygon":return Zp(r).geometry;default:throw new Error(i+" is invalid")}}function Nu(i,r,e={}){if(!i)throw new Error("coordinates is required");if(!Array.isArray(i))throw new Error("coordinates must be an Array");if(i.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!sl(i[0])||!sl(i[1]))throw new Error("coordinates must contain numbers");return Cn({type:"Point",coordinates:i},r,e)}function Jb(i,r,e={}){return ll(i.map(t=>Nu(t,r)),e)}function ku(i,r,e={}){for(let n of i){if(n.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(n[n.length-1].length!==n[0].length)throw new Error("First and last Position are not equivalent.");for(let o=0;o<n[n.length-1].length;o++)if(n[n.length-1][o]!==n[0][o])throw new Error("First and last Position are not equivalent.")}return Cn({type:"Polygon",coordinates:i},r,e)}function Kb(i,r,e={}){return ll(i.map(t=>ku(t,r)),e)}function zu(i,r,e={}){if(i.length<2)throw new Error("coordinates must be an array of two or more positions");return Cn({type:"LineString",coordinates:i},r,e)}function Qb(i,r,e={}){return ll(i.map(t=>zu(t,r)),e)}function ll(i,r={}){let e={type:"FeatureCollection"};return r.id&&(e.id=r.id),r.bbox&&(e.bbox=r.bbox),e.features=i,e}function Wp(i,r,e={}){return Cn({type:"MultiLineString",coordinates:i},r,e)}function jp(i,r,e={}){return Cn({type:"MultiPoint",coordinates:i},r,e)}function Zp(i,r,e={}){return Cn({type:"MultiPolygon",coordinates:i},r,e)}function ev(i,r,e={}){return Cn({type:"GeometryCollection",geometries:i},r,e)}function tv(i,r=0){if(r&&!(r>=0))throw new Error("precision must be a positive number");let e=Math.pow(10,r||0);return Math.round(i*e)/e}function Xp(i,r="kilometers"){let e=Bu[r];if(!e)throw new Error(r+" units is invalid");return i*e}function Uu(i,r="kilometers"){let e=Bu[r];if(!e)throw new Error(r+" units is invalid");return i/e}function rv(i,r){return Yp(Uu(i,r))}function nv(i){let r=i%360;return r<0&&(r+=360),r}function iv(i){return i=i%360,i>180?i-360:i<-180?i+360:i}function Yp(i){return i%(2*Math.PI)*180/Math.PI}function ov(i){return i%360*Math.PI/180}function av(i,r="kilometers",e="kilometers"){if(!(i>=0))throw new Error("length must be a positive number");return Xp(Uu(i,r),e)}function sv(i,r="meters",e="kilometers"){if(!(i>=0))throw new Error("area must be a positive number");let t=Gu[r];if(!t)throw new Error("invalid original units");let n=Gu[e];if(!n)throw new Error("invalid final units");return i/t*n}function sl(i){return!isNaN(i)&&i!==null&&!Array.isArray(i)}function lv(i){return i!==null&&typeof i=="object"&&!Array.isArray(i)}function cv(i){if(!i)throw new Error("bbox is required");if(!Array.isArray(i))throw new Error("bbox must be an Array");if(i.length!==4&&i.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");i.forEach(r=>{if(!sl(r))throw new Error("bbox must only contain numbers")})}function uv(i){if(!i)throw new Error("id is required");if(["string","number"].indexOf(typeof i)===-1)throw new Error("id must be a number or a string")}xe.areaFactors=Gu;xe.azimuthToBearing=iv;xe.bearingToAzimuth=nv;xe.convertArea=sv;xe.convertLength=av;xe.degreesToRadians=ov;xe.earthRadius=Rt;xe.factors=Bu;xe.feature=Cn;xe.featureCollection=ll;xe.geometry=qb;xe.geometryCollection=ev;xe.isNumber=sl;xe.isObject=lv;xe.lengthToDegrees=rv;xe.lengthToRadians=Uu;xe.lineString=zu;xe.lineStrings=Qb;xe.multiLineString=Wp;xe.multiPoint=jp;xe.multiPolygon=Zp;xe.point=Nu;xe.points=Jb;xe.polygon=ku;xe.polygons=Kb;xe.radiansToDegrees=Yp;xe.radiansToLength=Xp;xe.round=tv;xe.validateBBox=cv;xe.validateId=uv});var ef=pr(et=>{"use strict";v();Object.defineProperty(et,"__esModule",{value:!0});var gt=$p();function Jo(i,r,e){if(i!==null)for(var t,n,o,a,l,s,u,h=0,m=0,d,f=i.type,b=f==="FeatureCollection",x=f==="Feature",y=b?i.features.length:1,g=0;g<y;g++){u=b?i.features[g].geometry:x?i.geometry:i,d=u?u.type==="GeometryCollection":!1,l=d?u.geometries.length:1;for(var S=0;S<l;S++){var M=0,E=0;if(a=d?u.geometries[S]:u,a!==null){s=a.coordinates;var w=a.type;switch(h=e&&(w==="Polygon"||w==="MultiPolygon")?1:0,w){case null:break;case"Point":if(r(s,m,g,M,E)===!1)return!1;m++,M++;break;case"LineString":case"MultiPoint":for(t=0;t<s.length;t++){if(r(s[t],m,g,M,E)===!1)return!1;m++,w==="MultiPoint"&&M++}w==="LineString"&&M++;break;case"Polygon":case"MultiLineString":for(t=0;t<s.length;t++){for(n=0;n<s[t].length-h;n++){if(r(s[t][n],m,g,M,E)===!1)return!1;m++}w==="MultiLineString"&&M++,w==="Polygon"&&E++}w==="Polygon"&&M++;break;case"MultiPolygon":for(t=0;t<s.length;t++){for(E=0,n=0;n<s[t].length;n++){for(o=0;o<s[t][n].length-h;o++){if(r(s[t][n][o],m,g,M,E)===!1)return!1;m++}E++}M++}break;case"GeometryCollection":for(t=0;t<a.geometries.length;t++)if(Jo(a.geometries[t],r,e)===!1)return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function hv(i,r,e,t){var n=e;return Jo(i,function(o,a,l,s,u){a===0&&e===void 0?n=o:n=r(n,o,a,l,s,u)},t),n}function qp(i,r){var e;switch(i.type){case"FeatureCollection":for(e=0;e<i.features.length&&r(i.features[e].properties,e)!==!1;e++);break;case"Feature":r(i.properties,0);break}}function dv(i,r,e){var t=e;return qp(i,function(n,o){o===0&&e===void 0?t=n:t=r(t,n,o)}),t}function Jp(i,r){if(i.type==="Feature")r(i,0);else if(i.type==="FeatureCollection")for(var e=0;e<i.features.length&&r(i.features[e],e)!==!1;e++);}function mv(i,r,e){var t=e;return Jp(i,function(n,o){o===0&&e===void 0?t=n:t=r(t,n,o)}),t}function pv(i){var r=[];return Jo(i,function(e){r.push(e)}),r}function Hu(i,r){var e,t,n,o,a,l,s,u,h,m,d=0,f=i.type==="FeatureCollection",b=i.type==="Feature",x=f?i.features.length:1;for(e=0;e<x;e++){for(l=f?i.features[e].geometry:b?i.geometry:i,u=f?i.features[e].properties:b?i.properties:{},h=f?i.features[e].bbox:b?i.bbox:void 0,m=f?i.features[e].id:b?i.id:void 0,s=l?l.type==="GeometryCollection":!1,a=s?l.geometries.length:1,n=0;n<a;n++){if(o=s?l.geometries[n]:l,o===null){if(r(null,d,u,h,m)===!1)return!1;continue}switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":{if(r(o,d,u,h,m)===!1)return!1;break}case"GeometryCollection":{for(t=0;t<o.geometries.length;t++)if(r(o.geometries[t],d,u,h,m)===!1)return!1;break}default:throw new Error("Unknown Geometry Type")}}d++}}function fv(i,r,e){var t=e;return Hu(i,function(n,o,a,l,s){o===0&&e===void 0?t=n:t=r(t,n,o,a,l,s)}),t}function cl(i,r){Hu(i,function(e,t,n,o,a){var l=e===null?null:e.type;switch(l){case null:case"Point":case"LineString":case"Polygon":return r(gt.feature.call(void 0,e,n,{bbox:o,id:a}),t,0)===!1?!1:void 0}var s;switch(l){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon";break}for(var u=0;u<e.coordinates.length;u++){var h=e.coordinates[u],m={type:s,coordinates:h};if(r(gt.feature.call(void 0,m,n),t,u)===!1)return!1}})}function gv(i,r,e){var t=e;return cl(i,function(n,o,a){o===0&&a===0&&e===void 0?t=n:t=r(t,n,o,a)}),t}function Kp(i,r){cl(i,function(e,t,n){var o=0;if(e.geometry){var a=e.geometry.type;if(!(a==="Point"||a==="MultiPoint")){var l,s=0,u=0,h=0;if(Jo(e,function(m,d,f,b,x){if(l===void 0||t>s||b>u||x>h){l=m,s=t,u=b,h=x,o=0;return}var y=gt.lineString.call(void 0,[l,m],e.properties);if(r(y,t,n,x,o)===!1)return!1;o++,l=m})===!1)return!1}}})}function yv(i,r,e){var t=e,n=!1;return Kp(i,function(o,a,l,s,u){n===!1&&e===void 0?t=o:t=r(t,o,a,l,s,u),n=!0}),t}function Qp(i,r){if(!i)throw new Error("geojson is required");cl(i,function(e,t,n){if(e.geometry!==null){var o=e.geometry.type,a=e.geometry.coordinates;switch(o){case"LineString":if(r(e,t,n,0,0)===!1)return!1;break;case"Polygon":for(var l=0;l<a.length;l++)if(r(gt.lineString.call(void 0,a[l],e.properties),t,n,l)===!1)return!1;break}}})}function bv(i,r,e){var t=e;return Qp(i,function(n,o,a,l){o===0&&e===void 0?t=n:t=r(t,n,o,a,l)}),t}function vv(i,r){if(r=r||{},!gt.isObject.call(void 0,r))throw new Error("options is invalid");var e=r.featureIndex||0,t=r.multiFeatureIndex||0,n=r.geometryIndex||0,o=r.segmentIndex||0,a=r.properties,l;switch(i.type){case"FeatureCollection":e<0&&(e=i.features.length+e),a=a||i.features[e].properties,l=i.features[e].geometry;break;case"Feature":a=a||i.properties,l=i.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":l=i;break;default:throw new Error("geojson is invalid")}if(l===null)return null;var s=l.coordinates;switch(l.type){case"Point":case"MultiPoint":return null;case"LineString":return o<0&&(o=s.length+o-1),gt.lineString.call(void 0,[s[o],s[o+1]],a,r);case"Polygon":return n<0&&(n=s.length+n),o<0&&(o=s[n].length+o-1),gt.lineString.call(void 0,[s[n][o],s[n][o+1]],a,r);case"MultiLineString":return t<0&&(t=s.length+t),o<0&&(o=s[t].length+o-1),gt.lineString.call(void 0,[s[t][o],s[t][o+1]],a,r);case"MultiPolygon":return t<0&&(t=s.length+t),n<0&&(n=s[t].length+n),o<0&&(o=s[t][n].length-o-1),gt.lineString.call(void 0,[s[t][n][o],s[t][n][o+1]],a,r)}throw new Error("geojson is invalid")}function xv(i,r){if(r=r||{},!gt.isObject.call(void 0,r))throw new Error("options is invalid");var e=r.featureIndex||0,t=r.multiFeatureIndex||0,n=r.geometryIndex||0,o=r.coordIndex||0,a=r.properties,l;switch(i.type){case"FeatureCollection":e<0&&(e=i.features.length+e),a=a||i.features[e].properties,l=i.features[e].geometry;break;case"Feature":a=a||i.properties,l=i.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":l=i;break;default:throw new Error("geojson is invalid")}if(l===null)return null;var s=l.coordinates;switch(l.type){case"Point":return gt.point.call(void 0,s,a,r);case"MultiPoint":return t<0&&(t=s.length+t),gt.point.call(void 0,s[t],a,r);case"LineString":return o<0&&(o=s.length+o),gt.point.call(void 0,s[o],a,r);case"Polygon":return n<0&&(n=s.length+n),o<0&&(o=s[n].length+o),gt.point.call(void 0,s[n][o],a,r);case"MultiLineString":return t<0&&(t=s.length+t),o<0&&(o=s[t].length+o),gt.point.call(void 0,s[t][o],a,r);case"MultiPolygon":return t<0&&(t=s.length+t),n<0&&(n=s[t].length+n),o<0&&(o=s[t][n].length-o),gt.point.call(void 0,s[t][n][o],a,r)}throw new Error("geojson is invalid")}et.coordAll=pv;et.coordEach=Jo;et.coordReduce=hv;et.featureEach=Jp;et.featureReduce=mv;et.findPoint=xv;et.findSegment=vv;et.flattenEach=cl;et.flattenReduce=gv;et.geomEach=Hu;et.geomReduce=fv;et.lineEach=Qp;et.lineReduce=bv;et.propEach=qp;et.propReduce=dv;et.segmentEach=Kp;et.segmentReduce=yv});var rf=pr(ul=>{"use strict";v();Object.defineProperty(ul,"__esModule",{value:!0});var Sv=ef();function tf(i,r={}){if(i.bbox!=null&&r.recompute!==!0)return i.bbox;let e=[1/0,1/0,-1/0,-1/0];return Sv.coordEach.call(void 0,i,t=>{e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]<t[0]&&(e[2]=t[0]),e[3]<t[1]&&(e[3]=t[1])}),e}var Mv=tf;ul.bbox=tf;ul.default=Mv});var lf=pr((hD,Vu)=>{v();var xr=Rp(),of=_u(),af=Vp(),Ni=rf().default,Ev=af.featureEach,cD=af.coordEach,uD=of.polygon,nf=of.featureCollection;function sf(i){var r=new xr(i);return r.insert=function(e){if(e.type!=="Feature")throw new Error("invalid feature");return e.bbox=e.bbox?e.bbox:Ni(e),xr.prototype.insert.call(this,e)},r.load=function(e){var t=[];return Array.isArray(e)?e.forEach(function(n){if(n.type!=="Feature")throw new Error("invalid features");n.bbox=n.bbox?n.bbox:Ni(n),t.push(n)}):Ev(e,function(n){if(n.type!=="Feature")throw new Error("invalid features");n.bbox=n.bbox?n.bbox:Ni(n),t.push(n)}),xr.prototype.load.call(this,t)},r.remove=function(e,t){if(e.type!=="Feature")throw new Error("invalid feature");return e.bbox=e.bbox?e.bbox:Ni(e),xr.prototype.remove.call(this,e,t)},r.clear=function(){return xr.prototype.clear.call(this)},r.search=function(e){var t=xr.prototype.search.call(this,this.toBBox(e));return nf(t)},r.collides=function(e){return xr.prototype.collides.call(this,this.toBBox(e))},r.all=function(){var e=xr.prototype.all.call(this);return nf(e)},r.toJSON=function(){return xr.prototype.toJSON.call(this)},r.fromJSON=function(e){return xr.prototype.fromJSON.call(this,e)},r.toBBox=function(e){var t;if(e.bbox)t=e.bbox;else if(Array.isArray(e)&&e.length===4)t=e;else if(Array.isArray(e)&&e.length===6)t=[e[0],e[1],e[3],e[4]];else if(e.type==="Feature")t=Ni(e);else if(e.type==="FeatureCollection")t=Ni(e);else throw new Error("invalid geojson");return{minX:t[0],minY:t[1],maxX:t[2],maxY:t[3]}},r}Vu.exports=sf;Vu.exports.default=sf});var fh=pr((IL,oc)=>{v();(function(){"use strict";function i(a,l){var s=a.x-l.x,u=a.y-l.y;return s*s+u*u}function r(a,l,s){var u=l.x,h=l.y,m=s.x-u,d=s.y-h;if(m!==0||d!==0){var f=((a.x-u)*m+(a.y-h)*d)/(m*m+d*d);f>1?(u=s.x,h=s.y):f>0&&(u+=m*f,h+=d*f)}return m=a.x-u,d=a.y-h,m*m+d*d}function e(a,l){for(var s=a[0],u=[s],h,m=1,d=a.length;m<d;m++)h=a[m],i(h,s)>l&&(u.push(h),s=h);return s!==h&&u.push(h),u}function t(a,l,s,u,h){for(var m=u,d,f=l+1;f<s;f++){var b=r(a[f],a[l],a[s]);b>m&&(d=f,m=b)}m>u&&(d-l>1&&t(a,l,d,u,h),h.push(a[d]),s-d>1&&t(a,d,s,u,h))}function n(a,l){var s=a.length-1,u=[a[0]];return t(a,0,s,l,u),u.push(a[s]),u}function o(a,l,s){if(a.length<=2)return a;var u=l!==void 0?l*l:1;return a=s?a:e(a,u),a=n(a,u),a}typeof define=="function"&&define.amd?define(function(){return o}):typeof oc<"u"?(oc.exports=o,oc.exports.default=o):typeof self<"u"?self.simplify=o:window.simplify=o})()});var Gg=pr((Ih,Oh)=>{v();(function(i,r){typeof Ih=="object"&&typeof Oh<"u"?Oh.exports=r():typeof define=="function"&&define.amd?define(r):(i=i||self,i.TinyQueue=r())})(Ih,function(){"use strict";var i=function(t,n){if(t===void 0&&(t=[]),n===void 0&&(n=r),this.data=t,this.length=this.data.length,this.compare=n,this.length>0)for(var o=(this.length>>1)-1;o>=0;o--)this._down(o)};i.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},i.prototype.pop=function(){if(this.length!==0){var t=this.data[0],n=this.data.pop();return this.length--,this.length>0&&(this.data[0]=n,this._down(0)),t}},i.prototype.peek=function(){return this.data[0]},i.prototype._up=function(t){for(var n=this,o=n.data,a=n.compare,l=o[t];t>0;){var s=t-1>>1,u=o[s];if(a(l,u)>=0)break;o[t]=u,t=s}o[t]=l},i.prototype._down=function(t){for(var n=this,o=n.data,a=n.compare,l=this.length>>1,s=o[t];t<l;){var u=(t<<1)+1,h=o[u],m=u+1;if(m<this.length&&a(o[m],h)<0&&(u=m,h=o[m]),a(h,s)>=0)break;o[t]=h,t=u}o[t]=s};function r(e,t){return e<t?-1:e>t?1:0}return i})});var Ng=pr((WR,Lh)=>{"use strict";v();var yc=Gg();yc.default&&(yc=yc.default);Lh.exports=Bg;Lh.exports.default=Bg;function Bg(i,r,e){r=r||1;for(var t,n,o,a,l=0;l<i[0].length;l++){var s=i[0][l];(!l||s[0]<t)&&(t=s[0]),(!l||s[1]<n)&&(n=s[1]),(!l||s[0]>o)&&(o=s[0]),(!l||s[1]>a)&&(a=s[1])}var u=o-t,h=a-n,m=Math.min(u,h),d=m/2;if(m===0){var f=[t,n];return f.distance=0,f}for(var b=new yc(void 0,Ex),x=t;x<o;x+=m)for(var y=n;y<a;y+=m)b.push(new Ln(x+d,y+d,d,i));var g=wx(i),S=new Ln(t+u/2,n+h/2,0,i);S.d>g.d&&(g=S);for(var M=b.length;b.length;){var E=b.pop();E.d>g.d&&(g=E,e&&console.log("found best %d after %d probes",Math.round(1e4*E.d)/1e4,M)),!(E.max-g.d<=r)&&(d=E.h/2,b.push(new Ln(E.x-d,E.y-d,d,i)),b.push(new Ln(E.x+d,E.y-d,d,i)),b.push(new Ln(E.x-d,E.y+d,d,i)),b.push(new Ln(E.x+d,E.y+d,d,i)),M+=4)}e&&(console.log("num probes: "+M),console.log("best distance: "+g.d));var w=[g.x,g.y];return w.distance=g.d,w}function Ex(i,r){return r.max-i.max}function Ln(i,r,e,t){this.x=i,this.y=r,this.h=e,this.d=Cx(i,r,t),this.max=this.d+this.h*Math.SQRT2}function Cx(i,r,e){for(var t=!1,n=1/0,o=0;o<e.length;o++)for(var a=e[o],l=0,s=a.length,u=s-1;l<s;u=l++){var h=a[l],m=a[u];h[1]>r!=m[1]>r&&i<(m[0]-h[0])*(r-h[1])/(m[1]-h[1])+h[0]&&(t=!t),n=Math.min(n,Tx(i,r,h,m))}return n===0?0:(t?1:-1)*Math.sqrt(n)}function wx(i){for(var r=0,e=0,t=0,n=i[0],o=0,a=n.length,l=a-1;o<a;l=o++){var s=n[o],u=n[l],h=s[0]*u[1]-u[0]*s[1];e+=(s[0]+u[0])*h,t+=(s[1]+u[1])*h,r+=h*3}return r===0?new Ln(n[0][0],n[0][1],0,i):new Ln(e/r,t/r,0,i)}function Tx(i,r,e,t){var n=e[0],o=e[1],a=t[0]-n,l=t[1]-o;if(a!==0||l!==0){var s=((i-n)*a+(r-o)*l)/(a*a+l*l);s>1?(n=t[0],o=t[1]):s>0&&(n+=a*s,o+=l*s)}return a=i-n,l=r-o,a*a+l*l}});v();v();globalThis.MappedinDebug||(globalThis.MappedinDebug={});globalThis.MappedinDebug.__idleCallbackInteractionState={isInteracting:!1,interactionCheckers:[],pendingCallbacks:[],registerInteractionChecker:function(i){this.interactionCheckers.push(i)},unregisterInteractionChecker:function(i){let r;for(let e=this.interactionCheckers.length-1;e>=0;e--)if(r=this.interactionCheckers[e],r===i){this.interactionCheckers.splice(e,1);break}},checkInteraction:function(){let i=!1;for(let r=0;r<this.interactionCheckers.length;r++)if(i=this.interactionCheckers[r](),i)return!0;return!1},addPendingCallback:function(i,r){this.pendingCallbacks.push({callback:i,timeoutId:r}),this.scheduleDeferredCheck()},scheduleDeferredCheck:function(){var i=this;this.checkTimeoutId||(this.checkTimeoutId=setTimeout(function r(){if(i.checkInteraction())i.checkTimeoutId=setTimeout(r,16);else{i.checkTimeoutId=null;var e=i.pendingCallbacks.slice();i.pendingCallbacks=[];let t;for(let n=0;n<e.length;n++)if(t=e[n],t&&t.callback)try{t.callback()}catch(o){}}},16))},removePendingCallback:function(i){let r;for(let e=this.pendingCallbacks.length-1;e>=0;e--)if(r=this.pendingCallbacks[e],r.timeoutId===i){this.pendingCallbacks.splice(e,1);break}}};globalThis.requestIdleCallback=globalThis.requestIdleCallback||function(i){var o,a;var r=performance.now(),e,t=!1,n=function(){if(!t){t=!0;try{i({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(performance.now()-r))}})}catch(l){}}};return(a=(o=globalThis.MappedinDebug)==null?void 0:o.__idleCallbackInteractionState)!=null&&a.checkInteraction()?(e=Date.now()+Math.random(),globalThis.MappedinDebug.__idleCallbackInteractionState.addPendingCallback(n,e),e):(e=setTimeout(n,0),e)};globalThis.cancelIdleCallback=globalThis.cancelIdleCallback||function(i){var r,e;clearTimeout(i),(e=(r=globalThis.MappedinDebug)==null?void 0:r.__idleCallbackInteractionState)==null||e.removePendingCallback(i)};v();v();(function(){typeof globalThis!="object"&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__)})();var Cm="data:image/jpeg;base64,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gAAEAAgEAggEEEEEEEFSCCCCCCAQASCSQWJJJJLEkkkkkgkkEgEgEgAAEAAgEAggEEEEEH5AQQQQVBBAIAAJBIJJJLEkkkkliSSSSSQSSCQSAAAQAQQCCCCCCCCCpBBBBBUEEEAgAAkEgkkksSSSSSWJJJJJJBJIJBIAABABBAIIIIIIIIKg/LCAQCACAAAACQCQSCQSASSASCQCQAAAAAAQCAQAQCAQAQQCACAAAACQCQSCQSASSASCQCQAAAAAAQCAQAQCAQfPgAAAAAAAAAAAAAAkAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAgAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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bpu3bpum6bpum6bpum6bpu3TdN03bpum6bpum6bt03TdN03TdN03TdN03TdN03TduysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysysmzKzKzKybMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrMrJT+2lKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSn9tKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpT/wDrA//EAB0RAAMBAAMBAQEAAAAAAAAAAAABERIwQFAgkMD/2gAIAQIBAT8A/COlKioqKioqKi+zSoqKioqL59Ro0aKyvpVlZWaNFXiVGkaNFZWV9CsrNGjRpFXepo0V8c69Zo0u1pGilfVnJWaNF+NFXNUaNFfmU0aReamkaNPzNM19VlZWaKysrK/XrKzTNGjRWaKyv+u0/8QAHREBAQACAQUAAAAAAAAAAAAAEQBAUCAQITCQwP/aAAgBAwEBPwD1NkRER07eYiIiNMRERGARERGgIiNAREZRERoCIjiYBERqiIwiI1REcCIiIiIjbkREREREfXZ//9k=";v();var Xc=class i extends Error{constructor(e){super(e);p(this,"name","AssertionError");Error.captureStackTrace&&Error.captureStackTrace(this,i)}};function wm(i,r){if(i==null){let e;if(r!=null&&r.customMessage)e=r.customMessage;else{let o=r!=null&&r.valueName?"'".concat(r.valueName,"'"):"value";e="Expected ".concat(o," to be defined, but received ").concat(i)}let t=(r==null?void 0:r.errorClass)||Xc,n=new t(e);throw(r==null?void 0:r.captureStackTrace)!==!1&&Error.captureStackTrace&&Error.captureStackTrace(n,wm),n}}function Yc(i,r,e){if(wm(i),(i==null?void 0:i.type)!==r){let t="Expected type ".concat(r," but got ").concat(i==null?void 0:i.type);throw new Error(e!=null?e:t)}}v();var cs=class{constructor(r){p(this,"backgroundAlpha",1);p(this,"backgroundColor",new le);p(this,"width",0);p(this,"height",0);p(this,"options",{});p(this,"renderer");p(this,"enabledLayers",new Set([0,1]));p(this,"matricesUpdatedThisFrame",!1);p(this,"handleWebGLContextCreationError",r=>{var e,t;(t=(e=this.options).onWebGLContextCreationError)==null||t.call(e,r)});p(this,"handleWebGLContextLost",r=>{var e,t;(t=(e=this.options).onWebGLContextLost)==null||t.call(e,r)});p(this,"handleWebGLContextRestored",r=>{var e,t;(t=(e=this.options).onWebGLContextRestored)==null||t.call(e,r)});var e,t,n,o,a;try{this.options=r,Zh()?(this.renderer={setSize:()=>{},state:{reset:()=>{}},properties:{get:()=>{}},getSize:()=>({width:window.innerWidth,height:innerHeight}),getDrawingBufferSize:()=>({width:window.innerWidth,height:innerHeight}),getClearAlpha:()=>1,getClearColor:()=>new le,autoUpdate:!0,shadowMap:{autoUpdate:!0},getContext:()=>({getContextAttributes(){return{alpha:!0,antialias:!1,depth:!0,stencil:!1}}}),readRenderTargetPixelsAsync:()=>Promise.resolve([]),setRenderTarget:()=>{},setClearColor:()=>{},clear:()=>{},render:()=>{},clearStencil:()=>{},clearDepth:()=>{},domElement:document.createElement("canvas"),capabilities:{isWebGL2:!0}},this.renderer.domElement.style.width="1920px",Object.defineProperty(this.renderer.domElement,"clientWidth",{value:1920}),this.renderer.domElement.style.height="1080px",Object.defineProperty(this.renderer.domElement,"clientHeight",{value:1080})):(this.renderer=new bd({canvas:r.canvas,alpha:r.alpha||!1,stencil:!0,antialias:typeof r.antialias=="boolean"?r.antialias:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),this.renderer.localClippingEnabled=!0),this.backgroundColor=new le((e=r.backgroundColor)!=null?e:"#ffffff"),this.backgroundAlpha=(t=r.backgroundAlpha)!=null?t:1}catch(l){$.error(l),r.onWebGLRendererError&&r.onWebGLRendererError(l)}(n=this.domElement())==null||n.addEventListener("webglcontextlost",this.handleWebGLContextLost),(o=this.domElement())==null||o.addEventListener("webglcontextrestored",this.handleWebGLContextRestored),(a=this.domElement())==null||a.addEventListener("webglcontextcreationerror",this.handleWebGLContextCreationError),this.domElement()&&(this.domElement().style.zIndex="1")}destroy(){var r,e,t,n,o;this.renderer&&((e=(r=this.renderer).dispose)==null||e.call(r)),(t=this.domElement())==null||t.removeEventListener("webglcontextlost",this.handleWebGLContextLost),(n=this.domElement())==null||n.removeEventListener("webglcontextrestored",this.handleWebGLContextRestored),(o=this.domElement())==null||o.removeEventListener("webglcontextcreationerror",this.handleWebGLContextCreationError)}startFrame(){this.matricesUpdatedThisFrame=!1}updateMatricesIfNeeded(r){this.matricesUpdatedThisFrame||(r.updateMatrixWorld(),this.matricesUpdatedThisFrame=!0)}renderScene(r,e){this.renderer&&(this.updateMatricesIfNeeded(r),this.renderer.render(r,e))}renderFullScene(r,e){if(this.renderer){this.renderer.state.reset(),this.updateMatricesIfNeeded(r),this.renderer.clearStencil(),this.renderer.setRenderTarget(null),this.renderer.autoClear=!1,e.layers.disableAll();for(let t of this.enabledLayers.values())e.layers.enable(t);this.renderer.render(r,e),this.renderer.clearDepth(),e.layers.disableAll(),e.layers.enable(qe.ALWAYS_ON_TOP_PATHS),this.renderer.render(r,e),this.renderer.clearStencil(),this.renderer.state.reset()}}clear(){this.renderer&&(this.renderer.setClearColor(this.backgroundColor,this.backgroundAlpha),this.renderer.clear())}setBufferSize(r,e){D.env.NODE_ENV==="test"||!this.renderer||(this.width=r,this.height=e,this.renderer.setSize(r,e,!1))}setBackgroundColor(r,e){this.backgroundColor=r,this.backgroundAlpha=e}domElement(){var r;return(r=this.renderer)==null?void 0:r.domElement}};v();v();v();v();var us=class{constructor(r){p(this,"type");p(this,"event");this.type=0,this.event=r}get timestamp(){return this.event.timeStamp}},hs=class{constructor(){p(this,"taps",[])}add(r){this.lastPointerDown&&r.timestamp-this.lastPointerDown.timestamp<50?this.lastPointerDown.type=1:this.taps.push(r)}get lastPointerDown(){return this.taps.length>=1?this.taps[this.taps.length-1]:void 0}get isSingleTapWithTwoFingers(){var r;return this.isSingleTap&&((r=this.lastPointerDown)==null?void 0:r.type)===1}get isSingleTapWithOneFinger(){var r;return this.isSingleTap&&((r=this.lastPointerDown)==null?void 0:r.type)===0}get isDoubleTapWithOneFinger(){var r,e;return this.isDoubleTap&&((r=this.taps[0])==null?void 0:r.type)===0&&((e=this.taps[1])==null?void 0:e.type)===0}get isSingleTap(){return this.taps.length===1}get isDoubleTap(){return this.taps.length===2}discardOutsideOfWaitWindow(r){this.taps=this.taps.filter(e=>r-e.timestamp<300)}flush(){this.taps=[]}get _taps(){return this.taps}destroy(){this.flush()}};v();function qc(i){let r=new Set;for(let e of i){let t=e.object;for(;t.visible&&t.parent&&t.parent.visible===!0&&!r.has(t.parent);)t=t.parent,t instanceof Ne&&t.type==="group-container"&&t.visible&&t.components[0]&&r.add(t)}return Array.from(r)}v();function Jc(i,r){if(i==null||r==null)return i===r;if(i.length!==r.length)return!1;for(let e=0;e<i.length;e++)if(i[e]!==r[e])return!1;return!0}var fo=class extends ve{constructor(e,t,n,o,a){super();p(this,"raycaster",new sn);p(this,"state",{hovered3DEntity:void 0,hovered2DEntities:new Set,hovered3DContainers:void 0,lastHover:void 0,interaction:{mouseDownStart:void 0,distanceFromMouseDown:void 0,isPanning:!1}});p(this,"coreState");p(this,"camera");p(this,"worldPlane");p(this,"_quadtree",new Sd(new ln(0,0,0,0)));p(this,"_container");p(this,"lastPointerEvent");p(this,"cursor","grab");p(this,"touchesCount",0);p(this,"isUserMovingCamera");p(this,"hasTouched",!1);p(this,"onPointerMove",Ra(e=>{e&&(e.preventDefault(),this.updateInteractionStateIfPanning(e),(e.pointerType!=="touch"||e.pointerType===void 0&&this.hasTouched)&&this.handleHover(e),this.handleCursor())},D.env.NODE_ENV==="test"?0:16,{leading:!0}));p(this,"tapsControl",new hs);p(this,"onPointerDown",e=>{e.target===this._container&&(this._container.addEventListener("pointerup",this.onPointerUp,{capture:!1,signal:this.signal}),this._container.addEventListener("pointercancel",this.onPointerUp,{capture:!1,signal:this.signal}),this.state.interaction.mouseDownStart={time:Date.now(),timestamp:e.timeStamp,offsetX:e.offsetX,offsetY:e.offsetY},this.lastPointerEvent=e,this.state.interaction.distanceFromMouseDown=0,this.handleCursor(),e.pointerType==="touch"&&(this.tapsControl.add(new us(e)),this.touchesCount=Math.max(0,this.touchesCount+1)))});p(this,"clickTimeout");p(this,"onPointerUp",e=>{this.tapsControl.discardOutsideOfWaitWindow(e.timeStamp),this.lastPointerEvent=e,this.touchesCount=Math.max(0,this.touchesCount-1),this.touchesCount===0&&(this._container.removeEventListener("pointerup",this.onPointerUp,{capture:!1}),this._container.removeEventListener("pointercancel",this.onPointerUp,{capture:!1})),this.updateInteractionStateIfPanning(e);let{mouseDownStart:t}=this.state.interaction;!t||this.state.interaction.distanceFromMouseDown==null||(Date.now()<t.time+300&&(this.tapsControl.isSingleTapWithTwoFingers||this.state.interaction.distanceFromMouseDown<=15)&&(e.pointerType==="touch"&&!this.isUserMovingCamera()?this.tapsControl.isSingleTapWithTwoFingers?(this.publish("singletap-with-twofinger",e),this.flush()):this.tapsControl.isSingleTapWithOneFinger&&this.touchesCount===0?(this.clickTimeout&&clearTimeout(this.clickTimeout),this.clickTimeout=window.setTimeout(()=>{this.handleClick(e),this.flush()},300)):this.tapsControl.isDoubleTapWithOneFinger&&(this.publish("doubletap-with-onefinger",e),this.flush()):this.handleClick(e)),this.state.interaction.mouseDownStart=void 0,this.state.interaction.distanceFromMouseDown=void 0,this.state.interaction.isPanning=!1,this.handleCursor())});p(this,"dirty3D",!0);p(this,"cachedHitBoxes",{entities:[]});p(this,"ndcPoint",new he);p(this,"debugPanel");this.isUserMovingCamera=a,this.raycaster.layers.enableAll(),this.raycaster.layers.disable(1),this.camera=n,this._container=e,this.coreState=t,this.worldPlane=o,this._container.addEventListener("pointerdown",this.onPointerDown,{capture:!1,signal:this.signal}),this._container.addEventListener("pointermove",this.onPointerMove,{capture:!1,signal:this.signal}),this._container.classList.add("mappedin-interactive")}updateQuadtree(e){this._quadtree=e}setHovered3DEntityInteractionComponentDirty(){if(this.state.hovered3DEntity){let e=this.state.hovered3DEntity.components[2];e&&(e.dirty=!0)}}getThreeDIntersectsFromXY(e){this.raycaster.setFromCamera(e,this.camera),this.raycaster.layers.enable(qe.GEOMETRY);let t=this.raycaster.intersectObjects(this._hitBoxes.entities,!0).filter(o=>{var a,l;return((a=o.object)==null?void 0:a.name)==="worldPlane"||((l=o.object)==null?void 0:l.visible)}),n=t.findIndex(o=>{var a;return((a=o.object)==null?void 0:a.name)==="worldPlane"});return n!==-1&&t.push(t.splice(n,1)[0]),t}getGroupContainerIntersectsFromXY(e){let t=this.getThreeDIntersectsFromXY(e),n;return t!=null&&t.length>0&&(n=qc(t)),n}flush(){this.tapsControl.flush(),this.clickTimeout!=null&&(clearTimeout(this.clickTimeout),this.clickTimeout=void 0)}handleHover(e){let t=e||this.lastPointerEvent;if((t==null?void 0:t.pointerType)==="touch"||this.state.interaction.mouseDownStart||!t||this.isUserMovingCamera())return;let{entity3D:n,entity2D:o,position:a,groupContainers:l}=this.intersect(t);(this.detect3DEntityHover(n)||this.detect2DEntityHover(o)||this.detect3DContainerHover(l))&&(this.state.hovered3DEntity=n,this.state.lastHover=n,this.state.hovered2DEntities=new Set(o.map(s=>s.id)),this.state.hovered3DContainers=l,this.publish("hover",{entity2D:o,entity3D:this.state.hovered3DEntity,position:a,groupContainers:l})),this.handleCursor()}handleCursor(){var a;let e=!!(this.state.hovered3DEntity&&((a=this.state.hovered3DEntity)!=null&&a.components[2])||this.state.hovered2DEntities.size>0),t=!!this.state.interaction.mouseDownStart,n=this.state.interaction.isPanning,o=ty(e,n,t);this.cursor!==o&&(this.cursor=o,o==="pointer"?this._container.classList.add("mappedin-interaction-hover"):this._container.classList.remove("mappedin-interaction-hover"))}detect2DEntityHover(e){if(e.length!==this.state.hovered2DEntities.size)return!0;for(let t=0;t<e.length;t++)if(!this.state.hovered2DEntities.has(e[t].id))return!0;return!1}handleClick(e){let t=this.intersect(e);this.publish("click",{entity2D:t.entity2D,entity3D:t.entity3D,position:t.position,groupContainers:t.groupContainers,pointerEvent:{button:e.button}})}get _hitBoxes(){if(this.dirty3D){this.cachedHitBoxes.entities=[];let e;for(let t of this.coreState.geometry3DIdsInScene)e=this.coreState.geometry3DMap.get(t),((e==null?void 0:e.type)==="geometry"||(e==null?void 0:e.type)==="model"||(e==null?void 0:e.type)==="path"||(e==null?void 0:e.type)==="custom-geometry")&&e.components[0].mesh&&!this.cachedHitBoxes.entities.includes(e.components[0].mesh)&&this.cachedHitBoxes.entities.push(e.components[0].mesh);return this.dirty3D=!1,this.cachedHitBoxes.entities.push(this.worldPlane),this.cachedHitBoxes}return this.cachedHitBoxes}intersect(e){var S,M,E,w,_,L,T;let{offsetX:t,offsetY:n}=e,o=[t,n],l=this._quadtree.queryPoint(o).filter(C=>C.intersectsPoint(o));this.ndcPoint.x=t/this._container.clientWidth*2-1,this.ndcPoint.y=-(n/this._container.clientHeight)*2+1;let s=this.getThreeDIntersectsFromXY(this.ndcPoint),u=(S=s[0])==null?void 0:S.point,h=[],m=[],d=[];for(let C of s){if(["worldPlane","hole-fill-mesh"].includes(C.object.name)||!(C.object instanceof me)||((M=C.object.material)==null?void 0:M.colorWrite)===!1)continue;let R=(E=C.object.userData)==null?void 0:E.entityId;if(R){let O=this.coreState.geometry3DMap.get(R),B=O==null?void 0:O.components[7];if((B==null?void 0:B.verticalOffset)!=null&&C.point.z>B.verticalOffset)continue}d.push(C),C.object.material.depthTest===!1?h.push(C):m.push(C)}let f=(_=(w=h[0])!=null?w:m[0])!=null?_:void 0,b,x;if(f!=null){let C=(L=f==null?void 0:f.instanceId)!=null?L:f==null?void 0:f.batchId;b=C!=null&&(f!=null&&f.object.userData.entities)?this.coreState.geometry3DMap.get(f==null?void 0:f.object.userData.entities[C]):this.coreState.geometry3DMap.get(f==null?void 0:f.object.userData.entityId),b!=null&&b.components[2]&&(x=b)}let y=qc(d),g=[];for(let C of l)if(((T=C==null?void 0:C.userData)==null?void 0:T.entityId)==="watermark")g.push({id:"watermark"});else{let R=this.coreState.geometry2DMap.get(C==null?void 0:C.userData.entityId);R&&g.push(R)}return ry(g),{entity2D:g,entity3D:x,position:u,groupContainers:y.length>0?y:void 0}}detect3DEntityHover(e){return this.state.lastHover!==e&&(this.state.lastHover&&Pm(this.state.lastHover,!1,this.coreState),e&&Pm(e,!0,this.coreState)),this.state.hovered3DEntity!==e}detect3DContainerHover(e){return!Jc(this.state.hovered3DContainers,e)}updateInteractionStateIfPanning(e){this.state.interaction.mouseDownStart&&(this.state.interaction.distanceFromMouseDown=Math.sqrt(Math.pow(e.offsetX-this.state.interaction.mouseDownStart.offsetX,2)+Math.pow(e.offsetY-this.state.interaction.mouseDownStart.offsetY,2)),!this.state.interaction.isPanning&&this.state.interaction.distanceFromMouseDown>15&&(this.state.interaction.isPanning=!0))}getMouseRayIntersects(){return this.raycaster.intersectObjects([this.worldPlane],!1)}destroy(){this._container.removeEventListener("pointerdown",this.onPointerDown,{capture:!1}),this._container.removeEventListener("pointermove",this.onPointerMove,{capture:!1}),this._container.removeEventListener("pointerup",this.onPointerUp,{capture:!1}),this._container.removeEventListener("pointercancel",this.onPointerUp,{capture:!1}),super.destroy()}enableDebug(){let e=document.createElement("div");e.style.position="absolute",e.style.top="0",e.style.right="0",e.style.backgroundColor="white",e.style.padding="10px",document.body.append(e),e.id="interaction-debug-panel",this.debugPanel=e,this.on("doubletap-with-onefinger",()=>{this.queueDebugMessage("doubletap-with-onefinger","#ffadad")}),this.on("singletap-with-twofinger",()=>{this.queueDebugMessage("singletap-with-twofinger","#ffd6a5")}),this.on("click",t=>{var n,o,a;this.queueDebugMessage("CLICK \n3D: ".concat((n=t.entity3D)==null?void 0:n.id," \n2D: ").concat((o=t.entity2D)==null?void 0:o.map(l=>l.id).join(", ")," \nPos: ").concat((a=t.position)==null?void 0:a.toArray().join(", ")),"#fdffb6")}),this.on("hover",t=>{var n,o,a;this.queueDebugMessage("HOVER \n3D: ".concat((n=t.entity3D)==null?void 0:n.id," \n2D: ").concat((o=t.entity2D)==null?void 0:o.map(l=>l.id).join(", ")," \nPos: ").concat((a=t.position)==null?void 0:a.toArray().join(", ")),"#caffbf")})}get _state(){return this.state}queueDebugMessage(e,t){var o;let n=document.createElement("pre");n.style.maxWidth="300px",n.style.transition="opacity 500ms cubic-bezier(0.4, 0, 0.2, 1)",n.style.backgroundColor=t,n.textContent=e,(o=this.debugPanel)==null||o.prepend(n),setTimeout(()=>{n.style.opacity="0",setTimeout(()=>{n.remove()},500)},2500)}getCursor(){return this.cursor}};function Pm(i,r,e){var a;let t=i.components[2];t&&t.hover!==!0&&(t.hover=r?"user-interaction":!1,t.dirty=!0);let n=(a=i.components[0].textMesh)==null?void 0:a.userData.entityId;if(!n)return;let o=e.geometry3DMap.get(n);(o==null?void 0:o.type)==="text3d"&&(o.components[1].hoverByPolygon=r,o.components[1].dirty=!0)}function ty(i,r,e){return r?"grabbing":i?"pointer":e?"grabbing":"grab"}function ry(i){if(i.length<=1)return;let r=[],e=[],t=[];for(let o=0;o<i.length;o++){let a=i[o];a.components?a.type==="marker"?r.push(a):e.push(a):t.push(a)}if(r.length>1){let o,a;r.sort((l,s)=>{o=l.components[0],a=s.components[0];let u=o.projection.y,h=a.projection.y;return u!==h?h-u:o.markerContainer.compareDocumentPosition(a.markerContainer)&Node.DOCUMENT_POSITION_FOLLOWING?1:-1})}if(e.length>1){let o=[];for(let a=0;a<e.length;a++){let l=e[a],s=l.components[0];o.push({entity:l,y:s.projection.y,idx:a})}o.sort((a,l)=>a.y!==l.y?l.y-a.y:l.idx-a.idx);for(let a=0;a<o.length;a++)e[a]=o[a].entity}let n=0;for(let o=0;o<r.length;o++)i[n++]=r[o];for(let o=0;o<e.length;o++)i[n++]=e[o];for(let o=0;o<t.length;o++)i[n++]=t[o]}v();v();v();var Im=new Se;function go(i,r=!0){var h,m;let e=new rn,t=(h=i.mesh)==null?void 0:h.geometry;if(!t||!((m=i.batchedProps)!=null&&m.range))return;let n=i.batchedProps.range,o=n.start,a=n.count,l=t.getAttribute("position");if(l){let d=new Float32Array(a*3);for(let f=0;f<a;f++){let b=o+f;d[f*3]=l.array[b*3],d[f*3+1]=l.array[b*3+1],d[f*3+2]=l.array[b*3+2]}e.setAttribute("position",new Dt(d,3))}let s=t.getAttribute("normal");if(s){let d=new Float32Array(a*3);for(let f=0;f<a;f++){let b=o+f;d[f*3]=s.array[b*3],d[f*3+1]=s.array[b*3+1],d[f*3+2]=s.array[b*3+2]}e.setAttribute("normal",new Dt(d,3))}let u=t.getAttribute("uv");if(u){let d=new Float32Array(a*2);for(let f=0;f<a;f++){let b=o+f;d[f*2]=u.array[b*2],d[f*2+1]=u.array[b*2+1]}e.setAttribute("uv",new Dt(d,2))}if(t.index){let d=t.index,f=new Uint32Array(a);for(let b=0;b<a;b++)f[b]=d.array[o+b];e.setIndex(new Dt(f,1))}if(r&&i.instanceIndex!==-1&&i.mesh)try{i.mesh.getMatrixAt(i.instanceIndex,Im),e.applyMatrix4(Im)}catch(d){$.error(d)}return e}function Om(i,r,e){let t=go(i,!1);if(!t||!i.mesh)return;i.mesh.getMatrixAt(i.instanceIndex,e),i.mesh.deleteInstance(i.instanceIndex),i.mesh.optimize();let n=r.addGeometry(t);r.addInstance(n),r.setMatrixAt(n,e);let o=r.getGeometryIdAt(n),a=r.getGeometryRangeAt(o);return a&&i.batchedProps&&(i.batchedProps.range=a),t.dispose(),n}function Lm(i,r){if(r===0)return;let e=i.getAttribute("position");for(let t=0;t<e.count;t++)e.setZ(t,e.getZ(t)+r);e.needsUpdate=!0}var Hn,dn,ds,Ti,Am,bo,ms,Rm,ps,fs,vo,xo,gs,yo=class{constructor(r){A(this,Ti);A(this,Hn,null);A(this,dn);p(this,"getCurrentSceneGLTF",async r=>{let e=X({onlyVisible:!0,binary:!0,light:!0,scale:1},r),t=await Z(this,Ti,Am).call(this),n=c(this,ds).call(this,e),o=await t.parseAsync(n,{trs:!1,maxTextureSize:1/0,onlyVisible:e.onlyVisible,binary:e.binary,scale:e.scale}),a;if(o instanceof ArrayBuffer)a=new Blob([o],{type:"application/octet-stream"});else{let l=JSON.stringify(o,null,2);a=new Blob([l],{type:"text/plain"})}return a});A(this,ds,r=>{let{scale:e,light:t,onlyVisible:n}=r,o=new Lr,a=new Ve().setFromObject(c(this,dn).geometryScene);if(c(this,bo).call(this,c(this,dn).geometryScene,o,n),t){let l=new Xa(16777215,.3*Math.PI);l.position.set(0,Math.max(a.max.x,a.max.y)*e*.5,a.max.y*e*4),l.lookAt(0,0,-1),l.target.position.set(0,0,-1),l.add(l.target),o.add(l)}return o});A(this,bo,(r,e,t)=>{r.material&&r instanceof Wa&&Z(this,Ti,Rm).call(this,r).forEach(n=>e.add(n)),r.children.forEach(n=>{(!t||n.visible)&&c(this,bo).call(this,n,e,t)})});A(this,ms,(r,e,t)=>{let n=new ao({color:new le(r),metalness:0});return n.opacity=e,n.transparent=t,n});A(this,ps,r=>{let{geometry:e,material:t,position:n,rotation:o,quaternion:a,scale:l}=r;if(!(e!=null&&e.isBufferGeometry))return r;let s=e.attributes.position,u=e.attributes.normal,h=e.attributes.uv;return c(this,fs).call(this,s,u),c(this,xo).call(this,n,l,o,a),h&&c(this,gs).call(this,h),t!=null&&t.map&&e.type==="PlaneGeometry"&&(r.side=fr),r});A(this,fs,(r,e)=>{let t=new N,n=new N;for(let o=0;o<r.count;o++)t.fromBufferAttribute(r,o),c(this,vo).call(this,t),r.setXYZ(o,t.x,t.y,t.z),e&&(n.fromBufferAttribute(e,o),c(this,vo).call(this,n),e.setXYZ(o,n.x,n.y,n.z))});A(this,vo,r=>{let e=r.y;r.y=r.z,r.z=-e});A(this,xo,(r,e,t,n)=>{let o=r.y;r.y=r.z,r.z=-o;let a=e.y;if(e.y=e.z,e.z=a,t instanceof Or)t.order="YXZ",t.set(t.x,t.y,t.z,t.order);else{let l=n.y;n.set(n.x,n.z,-l,n.w)}});A(this,gs,r=>{for(let e=0;e<r.count;e++){let t=r.getX(e),n=r.getY(e);r.setXY(e,t,n)}});F(this,dn,r)}destroy(){F(this,Hn,null)}};Hn=new WeakMap,dn=new WeakMap,ds=new WeakMap,Ti=new WeakSet,Am=async function(){if(!c(this,Hn)){let{GLTFExporter:r}=await import("./GLTFExporter-REUTCDDJ.js");F(this,Hn,new r)}return c(this,Hn)},bo=new WeakMap,ms=new WeakMap,Rm=function(r){var l,s;let e=[],n=((l=r.userData)!=null&&l.entities?Object.values((s=r.userData)==null?void 0:s.entities):[]).map(u=>c(this,dn).geometry3DMap.get(u)),o=new Map;r.updateWorldMatrix(!0,!1);let a=new N;return r.getWorldPosition(a),n.forEach(u=>{var b;if(!u||!(u instanceof Pe))return;let h=u.components[1],m=u.components[2];if(!h.visible||h instanceof yr&&h.opacity===0||h instanceof ho||h instanceof rs)return;let d=m!=null&&m.hover?h.hoverColor||c(this,dn).hoverColor:h.color,f="".concat(d,"-").concat(h.opacity,"-").concat(Number(h.visible));o.has(f)||o.set(f,[]),(b=o.get(f))==null||b.push(u)}),o.forEach((u,h)=>{let[m,d,f]=h.split("-"),b=u.reduce((S,M)=>{if(M.type==="custom-geometry")return S;let E=M.components[0];if("geometry"in E&&E.geometry instanceof rn){let w=E.geometry.clone();Lm(w,a.z),S.push(w)}else if(E instanceof Je&&E.batchedProps){let w=go(E);w&&(Lm(w,a.z),S.push(w))}return S},[]);if(b.length===0){$.error("No geometries found for batched mesh");return}let x=c(this,ms).call(this,m,Number(d),r.material.transparent),y=Zt(b,!0);if(!y){$.error("No merged geometry found for batched mesh");return}let g=new me(y,x);g.position.copy(r.position),g.rotation.copy(r.rotation),g.scale.copy(r.scale),g.visible=!!f,c(this,xo).call(this,g.position,g.scale,g.rotation,g.quaternion),e.push(c(this,ps).call(this,g))}),e},ps=new WeakMap,fs=new WeakMap,vo=new WeakMap,xo=new WeakMap,gs=new WeakMap;v();v();var ny="gray",iy=.1,So=100,Qc=new gr.ClipperOffset;function oy(i,r){Qc.Clear(),r/=2;let e=i.map(n=>({X:n.x*So,Y:n.y*So}));Qc.AddPath(e,gr.JoinType.jtMiter,gr.EndType.etClosedPolygon);let t=new gr.Paths;return Qc.Execute(t,r*So),t.length?t.map(o=>o.map(a=>({x:a.X/So,y:a.Y/So}))):[i]}function bs(i,r,e){var f,b,x,y,g;let{color:t=ny,opacity:n=1,altitude:o=0,height:a=iy}=e||{};Array.isArray(n)&&(n=1);let l={min:{x:1/0,y:1/0,z:o},max:{x:-1/0,y:-1/0,z:a+o},center:{x:0,y:0,z:(a+o)/2}},u=i.geometry.coordinates[0].map(S=>{let M=r(S[1],S[0]);return l.min.x=Math.min(l.min.x,M.x),l.min.y=Math.min(l.min.y,M.y),l.max.x=Math.max(l.max.x,M.x),l.max.y=Math.max(l.max.y,M.y),M});((b=(f=i.properties)==null?void 0:f.style)==null?void 0:b.edgeOffset)!=null&&i.properties.style.edgeOffset!==0||((x=i.properties)==null?void 0:x.image)!=null?u=oy(u,((g=(y=i.properties)==null?void 0:y.style)==null?void 0:g.edgeOffset)||0):u=[u];let h=[];for(let S of u){let M=new xi;M.moveTo(S[0].x,S[0].y),S.slice(1).forEach(L=>M.lineTo(L.x,L.y)),M.lineTo(S[0].x,S[0].y);let E=i.geometry.coordinates.slice(1);M.holes=E.map(L=>{let T=L.map(R=>r(R[1],R[0])),C=new vi;return C.moveTo(T[0].x,T[0].y),T.slice(1).forEach(R=>C.lineTo(R.x,R.y)),C.lineTo(T[0].x,T[0].y),C});let w=uo(e==null?void 0:e.bevel,a),_=new Si(M,w);_.userData={style:{color:t,opacity:n},usedBevelSettings:w},h.push(_)}if(h.length===1)return h[0];let m=Zt(h);h.forEach(S=>S.dispose());let d=uo(e==null?void 0:e.bevel,a);return m.userData={style:{color:t,opacity:n},usedBevelSettings:d,_split:!0},m}v();var ay="gray",sy=.1;function vs(i,r,e){let{color:t=ay,opacity:n=1,altitude:o=0,height:a=sy}=e||{};Array.isArray(n)&&(n=1);let l={min:{x:1/0,y:1/0,z:o},max:{x:-1/0,y:-1/0,z:a+o}},s=uo(e==null?void 0:e.bevel,a),u=[];i.geometry.coordinates.forEach(m=>{let d=new xi,f=m[0].map(y=>{let g=r(y[1],y[0]);return l.min.x=Math.min(l.min.x,g.x),l.min.y=Math.min(l.min.y,g.y),l.max.x=Math.max(l.max.x,g.x),l.max.y=Math.max(l.max.y,g.y),g});d.moveTo(f[0].x,f[0].y),f.slice(1).forEach(y=>d.lineTo(y.x,y.y)),d.lineTo(f[0].x,f[0].y);let b=m.slice(1);d.holes=b.map(y=>{let g=y.map(M=>r(M[1],M[0])),S=new vi;return S.moveTo(g[0].x,g[0].y),g.slice(1).forEach(M=>S.lineTo(M.x,M.y)),S.lineTo(g[0].x,g[0].y),S});let x=new Si(d,s);u.push(x)});let h=Zt(u);return u.forEach(m=>m.dispose()),h.userData={style:{color:t,opacity:n},usedBevelSettings:s},h}v();var vt=100,ly=.22,cy=.01;function _m(i,r,e={}){let{width:t=ly,height:n=cy,color:o="gray",opacity:a=1,altitude:l=0}=e,s={min:{x:1/0,y:1/0,z:l},max:{x:-1/0,y:-1/0,z:l+n}},u={bevelEnabled:!1,depth:n},h=new gr.ClipperOffset,m=i.geometry.coordinates.map(x=>x.map(y=>r(y[1],y[0])));h.AddPaths(m.map(x=>x.map(y=>({X:y.x*vt,Y:y.y*vt}))),gr.JoinType.jsMiter,gr.EndType.etOpenRound);let d=new gr.PolyTree;h.Execute(d,t/2*vt);let f=[];for(let x of d.m_AllPolys){let y=new xi;if(x.IsHole())continue;s.min.x=Math.min(s.min.x,x.m_polygon[0].X),s.min.y=Math.min(s.min.y,x.m_polygon[0].Y),s.max.x=Math.max(s.max.x,x.m_polygon[0].X),s.max.y=Math.max(s.max.y,x.m_polygon[0].Y);let g=x.m_polygon;y.moveTo(g[0].X/vt,g[0].Y/vt),g.slice(1).forEach(S=>y.lineTo(S.X/vt,S.Y/vt)),y.lineTo(g[0].X/vt,g[0].Y/vt),y.holes=x.m_Childs.map(S=>{let M=new vi,E=S.m_polygon;return M.moveTo(E[0].X/vt,E[0].Y/vt),E.slice(1).forEach(w=>M.lineTo(w.X/vt,w.Y/vt)),M.lineTo(E[0].X/vt,E[0].Y/vt),M}),f.push(new Si(y,u))}let b=Zt(f);return b.translate(0,0,l||0),b.userData={style:{color:o,opacity:a}},h.Clear(),b}function uy(i){let r=i[1],e=i[6],{opacity:t}=r!=null?r:{},{texture:n,topTexture:o}=e!=null?e:{};return"".concat(t).concat((n==null?void 0:n.path)||"").concat((o==null?void 0:o.path)||"")}var xs=class extends ve{constructor(e,t){super();p(this,"state");p(this,"convertTo3DMapPosition");this.state=e,this.convertTo3DMapPosition=t}createEntityFromFeature(e,t,n){var h,m,d,f,b;let o=new Je(t),a=(h=t==null?void 0:t.properties)==null?void 0:h.bevel,l=n&&"bevel"in n?n.bevel:void 0,s;l?s=X(X({},a),l):a&&(s=a);let u=new Pe(o,new yr(De(X({},n),{url:(d=(m=t.properties)==null?void 0:m.image)==null?void 0:d.path,bevel:s})));if(n!=null&&n.outline){let x=(f=this.state.outlinesOptions)==null?void 0:f.darkenFactor;u.components[3]=new Vd(Xd(n.color,x))}return n!=null&&n.focusable&&(u.components[4]=new Qd),((b=t.properties)==null?void 0:b.textures)!=null&&Array.isArray(t.properties.textures)&&t.properties.textures.length>0?u.components[6]=new Un(t.properties.textures.find(x=>x.face==="side"),t.properties.textures.find(x=>x.face==="top")):(n!=null&&"texture"in n&&n.texture!=null||n!=null&&"topTexture"in n&&n.topTexture!=null)&&(u.components[6]=new Un(n.texture,n.topTexture)),u.id=e,u}populateEntityMesh(e,t){let n=e.components[0];n.geometry=t,n.batchedProps={range:{start:0,count:1/0,indexCount:1/0,indexStart:0,vertexCount:1/0,vertexStart:0,reservedVertexCount:1/0,reservedIndexCount:1/0},geometryId:-1,positionCount:t.attributes.position.count},n.currentHeight=e.components[1].height,n.dirty=!1}populateEntityGroup(e){var l;let t,n,o,a;for(let s of e.values())if(a=this.state.geometry3DMap.get(s),a.components[0]instanceof Je){n=a.components[0].feature,o=a.components[1];try{n.geometry.type==="Polygon"?(t=bs(n,this.convertTo3DMapPosition,o),(l=n.properties)!=null&&l.textures&&n.properties.textures.length>0&&Yd(t,n.properties.textures,this.state.naturalBearing,this.convertTo3DMapPosition),this.populateEntityMesh(a,t)):n.geometry.type==="MultiPolygon"?(t=vs(n,this.convertTo3DMapPosition,o),this.populateEntityMesh(a,t)):n.geometry.type==="LineString"?(t=Sm(n,this.convertTo3DMapPosition,o),this.populateEntityMesh(a,t)):n.geometry.type==="MultiLineString"&&(t=_m(n,this.convertTo3DMapPosition,o),this.populateEntityMesh(a,t))}catch(u){$.warn("Failed to create mesh for entity ".concat(s,":"),u)}}return e}update(){var e;for(let t of this.state.geometryGroupIdsToLoad.values()){let n=this.state.geometry3DMap.get(t);if(n instanceof mt&&n.userData.dirty&&!n.userData.modelURL){try{this.populateEntityGroup(n.userData.entities3D)}catch(l){$.warn(l)}let o,a={};for(let l of n.userData.entities3D.values()){o=this.state.geometry3DMap.get(l);let s=o==null?void 0:o.components[0];if((o==null?void 0:o.type)==="geometry"){let u=uy(o.components);a[u]===void 0&&(a[u]={style:o.components[1],entities:[]}),a[u].entities.push(o)}else s&&"mesh"in s&&s.mesh&&((e=s.mesh)==null?void 0:e.parent)!==n&&n.add(s.mesh)}for(let l in a){let s=Zd(a[l].entities,a[l].style);s.layers.enable(Pt.SHOULD_CAST_SHADOWS),n.add(s)}for(let l of n.userData.entities3D.values())if(o=this.state.geometry3DMap.get(l),o!=null&&o.entities2D.size>0)for(let s of o.entities2D.values())s&&(o.attach(s),this.publish("geometry-2d-added"));this.publish("geometry-group-added"),n.userData.dirty=!1,n.userData.localCenter=void 0}}return Promise.resolve()}};v();var Ss=new Ve,Fm=new N;function hy(i,r){let e=i.components[2],t=i.components[1];return e!=null&&e.hover?[t.hoverColor||r,t.hoverColor||r]:[t.color,t.topColor||t.color]}var Ms=class{constructor(r,e,t){p(this,"state");p(this,"transparencyChanged",!1);p(this,"convertTo3DMapPosition");p(this,"convert3DMapPositionToCoordinate");p(this,"endFrame",()=>{this.transparencyChanged=!1});this.convertTo3DMapPosition=e,this.convert3DMapPositionToCoordinate=t,this.state=r}determineTextureVisiblity(r,e,t){let n=mo(r);((n==null?void 0:n.texture)!=null||(n==null?void 0:n.topTexture)!=null)&&(t!=null&&t.hover&&n.texturesVisible?n.hideTextures(r.instanceIndex):n.texturesVisible||n.showTextures(r.instanceIndex),e.texture==null&&n.removeSideTexture(r.instanceIndex),e.topTexture==null&&n.removeTopTexture(r.instanceIndex))}update(){var t,n,o,a,l,s,u,h,m,d,f,b,x,y,g,S,M,E,w,_;let r,e;for(let L of this.state.geometry3DsInScene)if((L.type==="geometry"||L.type==="custom-geometry")&&((t=L.components[1])!=null&&t.dirty||(n=L.components[2])!=null&&n.dirty)){let T=L.components[0],C=L.components[1];e=L.components[2];let R=hy(L,this.state.hoverColor);T.setColor(R[0],R[1]);let O=mo(T);if(C.visible!==T.visible&&(T.visible=C.visible,T instanceof Je&&T.textMesh)){let k=this.state.geometry3DMap.get(T.textMesh.userData.entityId);(k==null?void 0:k.type)==="text3d"&&k.components[0].polygonEntityId!=null&&(k.components[0].visible=C.visible)}C.altitude!==T.altitude&&(T.altitude=C.altitude);let B=C.opacity*wi(L);if(O&&T.mesh&&T.type==="geometry"&&B!==T.opacity){if(O.opacity=B,O.transparent=B<1,T.imageMesh){let k=Array.isArray(T.imageMesh.material)?T.imageMesh.material:[T.imageMesh.material];for(let J of k)J.opacity=B}B===0?(T.mesh.layers.disable(Pt.SHOULD_CAST_SHADOWS),this.transparencyChanged=!0):T.opacity===0&&B!==0&&(T.mesh.layers.enable(Pt.SHOULD_CAST_SHADOWS),this.transparencyChanged=!0),T.opacity=B}if(C.renderOrder!==T.renderOrder&&(T.renderOrder=C.renderOrder),O&&jd(O,C.side,B),O&&(O.setEffectRange(C.effectStart,C.effectDistance),O.setVisualEffect(C.darkenAmount,C.darkenUseDepth,C.desaturateAmount,C.desaturateUseDepth,C.washOutAmount,C.washOutUseDepth)),T instanceof Je&&C.shading!=null&&(((o=C.shading)==null?void 0:o.start)!==(O==null?void 0:O.getGradientShading().start)||((a=C.shading)==null?void 0:a.end)!==(O==null?void 0:O.getGradientShading().end)||((l=C.shading)==null?void 0:l.intensity)!==(O==null?void 0:O.getGradientShading().intensity))&&(O==null||O.setGradientShading((u=(s=C.shading)==null?void 0:s.start)!=null?u:0,(m=(h=C.shading)==null?void 0:h.end)!=null?m:0,(f=(d=C.shading)==null?void 0:d.intensity)!=null?f:0)),C.dirty=!1,T instanceof Je){let k=L.components[6];k instanceof Un&&this.determineTextureVisiblity(T,k,e)}L.components[2]&&(L.components[2].dirty=!1)}else if((L==null?void 0:L.type)==="image"&&((b=L.components[1])!=null&&b.dirty)){r=L.components[0];let T=L.components[1];T.visible!==r.visible&&(r.visible=T.visible),T.dirty=!1}else if((L==null?void 0:L.type)==="text3d"&&((x=L.components[1])!=null&&x.dirty)){r=L.components[0];let T=L.components[1],C=r.polygonEntityId!=null;T.visible!=null&&T.visible!==r.visible&&(r.visible=T.visible);let{textMesh:R}=r;if(R)if(Object.assign(R,T.getState()),C){let O=(y=T.hoverColor)!=null?y:this.state.text3dHoverColor;R.color=T.hoverByPolygon?O:(g=T.color)!=null?g:_r.color,R.outlineColor=T.hoverByPolygon?O:(S=T.outlineColor)!=null?S:_r.outlineColor,R.strokeColor=T.hoverByPolygon?O:(M=T.strokeColor)!=null?M:_r.strokeColor}else R.color=(E=T.color)!=null?E:_r.color,R.outlineColor=(w=T.outlineColor)!=null?w:_r.outlineColor,R.strokeColor=(_=T.strokeColor)!=null?_:_r.strokeColor;T.dirty=!1}else if((L==null?void 0:L.type)==="batched-geometry-group"&&(L==null?void 0:L.userData.dirty)===!1&&(L!=null&&L.userData.positionDirty)){let T=L;if(T.userData.localCenter||(Ss.makeEmpty(),Ss.setFromObject(T),Ei(Ss)&&(Ss.getCenter(Fm),T.userData.localCenter=Fm.clone())),!T.userData.centroid&&T.userData.localCenter){let C=this.convert3DMapPositionToCoordinate(T.userData.localCenter);T.userData.centroid=[C[0],C[1]]}if(T.userData.centroid&&T.userData.localCenter){let C=this.convertTo3DMapPosition(T.userData.centroid);T.position.x+=C.x-T.userData.localCenter.x,T.position.y+=C.y-T.userData.localCenter.y,T.userData.localCenter.set(C.x,C.y,T.userData.localCenter.z),T.userData.positionDirty=!1}}}};v();var Es=class extends ve{constructor(e,t,n,o,a,l,s){super();p(this,"state");p(this,"renderer");p(this,"mode");p(this,"scene");p(this,"cameraObject");p(this,"viewCamera");p(this,"systems");p(this,"twoDdirty",!0);p(this,"threeDdirty",!0);p(this,"frameId",null);p(this,"update",(e=!1)=>{var t;if(((t=this.renderer)==null?void 0:t.renderer)==null)return Promise.resolve();if(e){this.renderer.startFrame();let n=this.commitRenderState();return this.paint(),n}else return this.frameId?Promise.resolve():new Promise((n,o)=>{this.frameId=requestAnimationFrame(()=>{var a,l;return((a=this.renderer)==null?void 0:a.renderer)==null?n():this.mode==="standalone"?(this.renderer.startFrame(),(l=this.commitRenderState())==null?void 0:l.then(()=>{this.paint(),n()}).catch(s=>{o(s)})):n()})})});p(this,"commitRenderState",()=>{try{let e=[];this.frameId=null,this.publish("pre-render"),this.state.internalTweenGroup.update(),this.state.externalTweenGroup.update(),(this.mode==="outdoors-interleaved"||this.mode==="standalone")&&this.systems.cameraSystem.update(),this.state.shouldMeasureCanvas&&(this.state.shouldMeasureCanvas=!1,this.publish("measure-canvas")),this.twoDdirty&&(this.state.geometry2DIdsInScene.clear(),this.state.geometry2DsInScene.clear(),Fd(this.state.geometryScene,this.state.geometry2DMap,this.state.geometry2DIdsInScene,this.state.geometry2DsInScene),this.systems.twoDEntitySystem.syncTwoDEntities(),this.systems.twoDEntitySystem.markDirty(),this.twoDdirty=!1),this.threeDdirty&&(this.state.geometry3DIdsInScene.clear(),this.state.geometry3DsInScene.clear(),this.state.geometryGroupIdsToLoad.clear(),_d(this.state.geometryScene,this.state.geometry3DMap,this.state.geometry3DIdsInScene,this.state.geometry3DsInScene,this.state.geometryGroupIdsToLoad),this.systems.interactionSystem.dirty3D=!0,this.systems.outlineInterpolationSystem.geometries3DDirty=!0,this.systems.geometryInFocusSystem.focusablesDirty=!0,this.systems.shadowsSystem&&(this.systems.shadowsSystem.needsRender=!0),this.threeDdirty=!1);let t=this.systems.batchedMeshSystem.update();t&&e.push(t);let n=this.systems.modelSystem.update();return n&&e.push(n),this.systems.borderSystem.update(),this.systems.meshDetachmentSystem.update(),this.systems.meshModificationSystem.update(),this.systems.renderOrderSystem.update(),this.systems.clippingPlaneSystem.update(),this.systems.imageSystem.update(this.systems.cameraSystem.getRotation(),this.systems.cameraSystem.isCameraMoving(),this.systems.cameraSystem.lastCameraStoppedMovingTime()),e.push(this.systems.text3DSystem.update(this.systems.cameraSystem.getRotation())),this.systems.customGeometrySystem.update(),this.systems.panBoundsSystem.update(),this.systems.geometryInFocusSystem.update(this.systems.cameraSystem.isCameraMoving(),this.systems.cameraSystem.lastCameraStoppedMovingTime()),this.systems.outlineInterpolationSystem.update(this.systems.cameraSystem.getZoomLevel(),this.systems.cameraSystem.zoomDirty),this.systems.pathSystem.update(this.systems.cameraSystem.minZoomAltitude,this.systems.cameraSystem.maxZoomAltitude,this.systems.cameraSystem.getZoomAltitude(),this.systems.cameraSystem.getCurrentMetersPerPixel()),this.systems.cameraSystem.postRender(),this.systems.occlusion2DSystem.update(),this.systems.watermarkSystem.insertIntoQuadTree(this.systems.twoDEntitySystem.interactiveCollidersQTree),this.systems.interactionSystem.updateQuadtree(this.systems.twoDEntitySystem.interactiveCollidersQTree),this.systems.twoDEntitySystem.updateWatermark({width:this.systems.watermarkSystem.width,height:this.systems.watermarkSystem.height,position:this.systems.watermarkSystem.options.position}),this.systems.twoDEntitySystem.update(this.systems.cameraSystem.getZoomLevel(),this.systems.cameraSystem.isUserInteracting(),this.systems.cameraSystem.isCameraMoving(),this.systems.imageSystem.currentImageScreenBBoxes),this.systems.watermarkSystem.update(),this.systems.textureSystem.update(),this.systems.pluginSystem.update(this.state),this.systems.drawSystem.update(),this.systems.geometryDisposalSystem.update(),this.systems.maskingSystem.update(),this.systems.cameraSystem.dirty=!1,this.systems.cameraSystem.zoomDirty=!1,this.systems.cameraSystem.rotationDirty=!1,this.systems.shadowsSystem&&((this.systems.modelSystem.transparencyChanged||this.systems.drawSystem.transparencyChanged)&&(this.systems.shadowsSystem.needsRender=!0),this.systems.shadowsSystem.update(this.systems.cameraSystem.getZoomLevel(),this.systems.cameraSystem.getPedestal())),this.systems.modelSystem.endFrame(),this.systems.drawSystem.endFrame(),this.systems.cameraSystem.stateDirty&&(this.publish("camera-state-change"),this.systems.cameraSystem.stateDirty=!1),this.publish("post-render"),Promise.all(e)}catch(e){return Promise.reject(e)}});this.renderer=e,this.state=t,this.mode=n,this.scene=o,this.cameraObject=a,this.viewCamera=l,this.systems=s,this.systems.cameraSystem.on("pan-start",()=>this.systems.twoDEntitySystem.collidersNeedRecomputing=!1,{signal:this.signal}),this.systems.cameraSystem.on("zoom-start",()=>this.systems.twoDEntitySystem.collidersNeedRecomputing=!1,{signal:this.signal}),this.systems.cameraSystem.on("zoom-end",()=>this.systems.twoDEntitySystem.collidersNeedRecomputing=!0,{signal:this.signal}),this.systems.cameraSystem.on("rotate-start",()=>this.systems.twoDEntitySystem.collidersNeedRecomputing=!1,{signal:this.signal}),this.systems.cameraSystem.on("rotate-end",()=>this.systems.twoDEntitySystem.collidersNeedRecomputing=!0,{signal:this.signal})}paint(){var t;if(!((t=this.renderer)!=null&&t.renderer))return;this.mode==="standalone"&&this.renderer.clear();let e=!this.state.useStandaloneCamera&&this.mode!=="standalone";e&&(this.viewCamera.matrixWorld.copy(this.cameraObject.matrixWorld),this.viewCamera.matrixWorldInverse.copy(this.cameraObject.matrixWorldInverse),this.viewCamera.projectionMatrix.multiply(this.cameraObject.matrixWorld)),this.renderer.renderFullScene(this.scene,e?this.viewCamera:this.cameraObject),e&&(this.viewCamera.projectionMatrix.multiply(this.cameraObject.matrixWorldInverse),this.viewCamera.matrixWorldInverse.identity())}destroy(){this.frameId&&cancelAnimationFrame(this.frameId),this.systems.twoDEntitySystem.cancelPendingFrames(),this.state.geometry2DIdsInScene.clear(),this.state.geometry3DIdsInScene.clear(),this.systems.twoDEntitySystem.markDirty(),this.update(),super.destroy()}};v();v();v();v();v();import{z as ee}from"zod";v();import{z as Cs}from"zod";var Di=Cs.object({type:Cs.enum(["Point"]),coordinates:Cs.array(Cs.number()).min(2).max(3)});var dy=ee.object({interactive:ee.boolean().optional(),id:ee.string().optional(),width:ee.union([ee.number(),ee.string().regex(Na),ee.object({on:ee.literal("zoom-level").optional(),input:ee.array(ee.number()).nonempty(),output:ee.union([ee.array(ee.number()).nonempty(),ee.array(ee.string().regex(Na)).nonempty()]),easing:ee.string().optional()})]).optional(),accentColor:ee.string().optional(),displayArrowsOnPath:ee.boolean().optional(),animateArrowsOnPath:ee.boolean().optional(),visibleThroughGeometry:ee.boolean().optional(),dashed:ee.boolean().optional(),smoothingTension:ee.number().optional(),smoothingCornerRadius:ee.number().optional(),dashLength:ee.number().optional(),dashGap:ee.number().optional(),dashRelativeToWidth:ee.boolean().optional(),dashSize:ee.number().optional(),gapSize:ee.number().optional(),dashAbsolute:ee.boolean().optional(),dashMeters:ee.number().optional(),gapMeters:ee.number().optional(),__EXPERIMENTAL_GEOMETRY:ee.enum(["tube","ribbon"]).optional(),__EXPERIMENTAL_ENDCAP_EXTENSION:ee.tuple([ee.number(),ee.number()]).optional(),__EXPERIMENTAL_BILLBOARDING:ee.union([ee.boolean(),ee.number().min(0).max(90)]).optional(),__EXPERIMENTAL_BORDER:ee.object({enabled:ee.boolean(),color:ee.string(),width:ee.number().optional()}).optional(),__EXPERIMENTAL_PREVENT_SELF_OVERLAP:ee.boolean().optional(),xrayStyle:ee.object({color:ee.string().optional(),tint:ee.number().min(0).max(1).optional(),dithering:ee.number().min(0).optional()}).optional()}),my=ee.object({type:ee.enum(["Feature"]),geometry:Di,properties:ee.object({parentId:ee.any().optional()})});function Gm(i,r){ee.object({features:ee.array(my)}).parse(i),dy.parse(r)}function py(i,r){let e=Tc(i);e&&r==="tube"&&($.warn("Screen-space pixel width is only supported with ribbon geometry. Falling back to world-space interpretation."),e=!1);let t;return typeof i=="object"&&"output"in i?t=i.output.map(n=>typeof n=="string"?en(n):Number(n)):Gn(i)?t=[en(i)]:t=[i],{screenSpace:e,parsedOutputValues:t}}var Mo,mn=class{constructor(r,e){p(this,"type","path");p(this,"mesh",new Bt);p(this,"material");p(this,"geometry");p(this,"outline");p(this,"feature");p(this,"options");p(this,"width",{on:"zoom-level",input:[17,22],output:[.8,.4]});p(this,"breakpoint",0);p(this,"screenSpace",!1);p(this,"parsedOutputValues",[]);p(this,"altitudeBreakpoints");p(this,"accentColor","blue");p(this,"completeFraction",1);p(this,"altitudeAdjustment",1);p(this,"displayArrowsOnPath",!1);p(this,"animateArrowsOnPath",!1);p(this,"visibleThroughGeometry",!1);p(this,"highlightStartFraction",0);p(this,"highlightEndFraction",0);p(this,"highlightCompleteFraction",1);p(this,"highlightWidthMultiplier",1.1);p(this,"highlightColor","red");p(this,"xrayOpacity",.25);p(this,"xrayStyle");p(this,"dashed",!1);p(this,"smoothingTension",Rr.tension);p(this,"smoothingCornerRadius",Rr.cornerRadius);p(this,"dashLength",.1);p(this,"dashGap",.1);p(this,"dashRelativeToWidth",!1);p(this,"dashSize",3);p(this,"gapSize",2);p(this,"dashAbsolute",!1);p(this,"dashMeters",1);p(this,"gapMeters",.5);p(this,"__EXPERIMENTAL_GEOMETRY","tube");p(this,"__EXPERIMENTAL_ENDCAP_EXTENSION",[.5,.5]);p(this,"__EXPERIMENTAL_BILLBOARDING",80);p(this,"__EXPERIMENTAL_BORDER");p(this,"__EXPERIMENTAL_PREVENT_SELF_OVERLAP",!1);p(this,"isVertical",!1);p(this,"dirty",!0);p(this,"materialDirty",!0);p(this,"position",new N);A(this,Mo,0);var t,n,o,a,l,s,u,h,m,d,f,b,x,y,g,S,M,E,w,_,L;this.feature=r,this.options=e||{},this.width=(t=e==null?void 0:e.width)!=null?t:this.width,this.accentColor=(n=e==null?void 0:e.accentColor)!=null?n:this.accentColor,this.displayArrowsOnPath=(o=e==null?void 0:e.displayArrowsOnPath)!=null?o:this.displayArrowsOnPath,this.animateArrowsOnPath=(a=e==null?void 0:e.animateArrowsOnPath)!=null?a:this.animateArrowsOnPath,this.visibleThroughGeometry=(l=e==null?void 0:e.visibleThroughGeometry)!=null?l:this.visibleThroughGeometry,this.dashed=(s=e==null?void 0:e.dashed)!=null?s:this.dashed,this.xrayOpacity=(u=e==null?void 0:e.xrayOpacity)!=null?u:this.xrayOpacity,this.xrayStyle=e==null?void 0:e.xrayStyle,this.smoothingTension=(h=e==null?void 0:e.smoothingTension)!=null?h:Rr.tension,this.smoothingCornerRadius=(m=e==null?void 0:e.smoothingCornerRadius)!=null?m:Rr.cornerRadius,this.dashLength=(d=e==null?void 0:e.dashLength)!=null?d:this.dashLength,this.dashGap=(f=e==null?void 0:e.dashGap)!=null?f:this.dashGap,this.dashRelativeToWidth=(b=e==null?void 0:e.dashRelativeToWidth)!=null?b:this.dashRelativeToWidth,this.dashSize=(x=e==null?void 0:e.dashSize)!=null?x:this.dashSize,this.gapSize=(y=e==null?void 0:e.gapSize)!=null?y:this.gapSize,this.dashAbsolute=(g=e==null?void 0:e.dashAbsolute)!=null?g:this.dashAbsolute,this.dashMeters=(S=e==null?void 0:e.dashMeters)!=null?S:this.dashMeters,this.gapMeters=(M=e==null?void 0:e.gapMeters)!=null?M:this.gapMeters,this.__EXPERIMENTAL_GEOMETRY=(E=e==null?void 0:e.__EXPERIMENTAL_GEOMETRY)!=null?E:"tube",this.__EXPERIMENTAL_ENDCAP_EXTENSION=(w=e==null?void 0:e.__EXPERIMENTAL_ENDCAP_EXTENSION)!=null?w:[.5,.5],this.__EXPERIMENTAL_BILLBOARDING=(_=e==null?void 0:e.__EXPERIMENTAL_BILLBOARDING)!=null?_:80,this.__EXPERIMENTAL_BORDER=e==null?void 0:e.__EXPERIMENTAL_BORDER,this.__EXPERIMENTAL_PREVENT_SELF_OVERLAP=(L=e==null?void 0:e.__EXPERIMENTAL_PREVENT_SELF_OVERLAP)!=null?L:!1,this.updateScreenSpaceState()}updateScreenSpaceState(){let r=py(this.width,this.__EXPERIMENTAL_GEOMETRY);this.screenSpace=r.screenSpace,this.parsedOutputValues=r.parsedOutputValues}setColor(){}setOpacity(){}set visible(r){this.mesh&&(this.mesh.visible=r)}get visible(){return this.mesh?this.mesh.visible:!1}get altitude(){return c(this,Mo)}set altitude(r){this.mesh&&(this.mesh.position.z=r,F(this,Mo,r))}set complete(r){this.material&&(this.material.uniforms.complete.value=r,this.material.needsUpdate=!0)}};Mo=new WeakMap;v();v();v();function Pi(i,r,e){return i.type==="portion"?{top:i.top*e,left:i.left*r,bottom:i.bottom*e,right:i.right*r,type:"pixel"}:i}v();v();v();var Bm=(i,r)=>(r-i+Math.PI)%(Math.PI*2)+Math.PI*2%(Math.PI*2)-Math.PI,Nm=(i,r)=>new he(i.clientX-r.offsetLeft,i.clientY-r.offsetTop),eu=(i,r)=>Math.atan2(r.y-i.y,r.x-i.x),Eo=(i,r)=>Math.sqrt((r.y-i.y)**2+(r.x-i.x)**2),tu=(i,r)=>new he((i.x+r.x)/2,(i.y+r.y)/2),ru=i=>{let r=0,{wheelDelta:e,detail:t}=i;return e!==void 0?r=e:t!==void 0&&(r=-t),r};var ws=class{constructor(r,e){p(this,"input1");p(this,"input2");p(this,"lastAngle");p(this,"lastDistance");p(this,"totalDistance");p(this,"first");p(this,"second");this.input1=r,this.input2=e,this.lastAngle=eu(r,e),this.lastDistance=Eo(r,e),this.totalDistance=0,this.first=r,this.second=e}update(r,e){let t=Eo(r,e);this.input1=r,this.input2=e;let n=eu(r,e);this.lastAngle=n,this.lastDistance=t,this.totalDistance+=(Eo(this.first,r)+Eo(this.second,e))/2,this.first=tu(this.first,r),this.second=tu(this.second,e)}};v();var Co=class{constructor(r,e,t){p(this,"touch");p(this,"camera");p(this,"cameraPlane");p(this,"viewCoordinate");p(this,"snapHolderMatrix");p(this,"snapCamera");p(this,"cameraPosition");p(this,"raycaster");p(this,"worldCoordinate");p(this,"snapshotted",!1);this.touch=r,this.camera=e,this.cameraPlane=t,this.viewCoordinate={x:r.x,y:r.y},this.camera.updateMatrixWorld(),this.camera.updateMatrix(),this.snapHolderMatrix=this.camera.matrixWorld.clone(),this.snapCamera=this.camera.clone(),this.snapshotCameraState()}snapshotCameraState(){this.camera.updateMatrix(),this.camera.updateMatrixWorld(),this.cameraPosition=this.camera.position.clone();let r=new he(this.viewCoordinate.x,this.viewCoordinate.y);this.raycaster=this.raycaster||new sn,this.raycaster.setFromCamera(r,this.snapCamera);let e=this.raycaster.intersectObject(this.cameraPlane,!0);this.worldCoordinate=e&&e.length>0?e[0].point:null,this.snapshotted=!0}updateAnchorState(r,e){this.camera=r,this.snapCamera=r.clone(),this.snapHolderMatrix=r.matrixWorld.clone(),this.updateViewCoordinate(e),this.snapshotCameraState()}updateViewCoordinate(r){this.viewCoordinate={x:r.x,y:r.y}}reUnproject(){var t,n;let r=new he(this.viewCoordinate.x,this.viewCoordinate.y);(t=this.raycaster)==null||t.setFromCamera(r,this.snapCamera);let e=(n=this.raycaster)==null?void 0:n.intersectObject(this.cameraPlane,!0)[0];return e?e.point:void 0}};var Xt={};Jg(Xt,{BLOCK_MERCATOR_ZOOM_LEVEL:()=>gy,CLIPPING_RADIUS:()=>wo,CONTROL_OPTIONS:()=>fy,DEFAULT_ANIMATION_DURATION:()=>su,DEFAULT_BEARING:()=>Sy,DEFAULT_MAX_ZOOM_LEVEL:()=>vy,DEFAULT_MIN_ZOOM_LEVEL:()=>cu,DEFAULT_PITCH:()=>xy,DEFAULT_ZOOM_LEVEL:()=>by,EVENTS:()=>lu,MAPLIBRE_TILE_SIZE:()=>Ts,MAX_LAT:()=>iu,MAX_MERCATOR_ZOOM_LEVEL:()=>Ps,MIN_LAT:()=>nu,MIN_MERCATOR_ZOOM_LEVEL:()=>Ds,ROOM_MERCATOR_ZOOM_LEVEL:()=>yy,TWO_PI:()=>ou,WHEEL_ZOOM_MULTIPLIER:()=>au,ZRANGE:()=>Ii});v();var Ts=512,nu=-85.051129,iu=85.051129,wo=1e4,fy={chain:"chain",cancel:"cancel"},ou=Math.PI*2,Ii=100,au=1e4,Ds=0,Ps=24,gy=17,yy=20,su=200,lu=["change","pan-start","pan-end","rotate-start","rotate-end","zoom-start","zoom-end","multi-start","multi-end","multi-cancel","pedestal-start","pedestal-change","pedestal-end","user-pan-start","user-pedestal-start","user-rotate-start","user-dolly-start","user-zoom-start","user-tilt-start","user-pan-end","user-pedestal-end","user-rotate-end","user-dolly-end","user-zoom-end","user-tilt-end","position-updated","zoom-updated","tilt-updated","rotation-updated"],by=18,cu=12,vy=22,xy=0,Sy=0;v();v();var Vn=class extends Error{};Vn.prototype.name="InvalidTokenError";function My(i){return decodeURIComponent(atob(i).replace(/(.)/g,(r,e)=>{let t=e.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0"+t),"%"+t}))}function Ey(i){let r=i.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return My(r)}catch(e){return atob(r)}}function km(i,r){if(typeof i!="string")throw new Vn("Invalid token specified: must be a string");r||(r={});let e=r.header===!0?0:1,t=i.split(".")[e];if(typeof t!="string")throw new Vn("Invalid token specified: missing part #".concat(e+1));let n;try{n=Ey(t)}catch(o){throw new Vn("Invalid token specified: invalid base64 for part #".concat(e+1," (").concat(o.message,")"))}try{return JSON.parse(n)}catch(o){throw new Vn("Invalid token specified: invalid json for part #".concat(e+1," (").concat(o.message,")"))}}v();function nr(i,r,e,t){return(i<r||i>e)&&$.warn(t),Math.min(e,Math.max(r,i))}function u1(i){var e,t;let r=km(i);if(r.sub==null)throw new Error("Access token is missing sub claim.");return{sub:r.sub,aud:typeof r.aud=="string"?[r.aud]:(e=r.aud)!=null?e:[],capabilities:(t=r.capabilities)!=null?t:{}}}function Fr(i){return i*(Math.PI/180)}function zm(i){return i*(180/Math.PI)}function Is(i,r){let e=Math.pow(10,r);return Math.sign(i)*Math.round(Math.abs(i)*e)/e}function Um(i,r){return(i%r+r)%r}function Hm(i,r){let e=Um(i,Math.PI*2),t=Um(r,Math.PI*2),n=t-e,o=t+(n>Math.PI?-Math.PI*2:n<-Math.PI?Math.PI*2:0);return{start:e,end:o}}function h1(){return typeof window<"u"&&window!==null}function Vm(i,r){let[e,t]=i,[n,o]=r,a=Fr(n-e),l=Fr(o-t);return Math.sqrt(a*a+l*l)*Pr}function pt(i,r){let[e,t]=i.map(h=>Fr(h)),[n,o]=r.map(h=>Fr(h)),a=o-t,s=(n-e)*Math.cos((t+o)/2),u=a;return Math.sqrt(s*s+u*u)*Pr}function uu(i,r){return Math.sqrt(Math.pow(i.x-r.x,2)+Math.pow(i.y-r.y,2))}function Os(i){let r=Fr(i),t=Math.cos(r)*Pr;function n(a,l){let s=Fr(a[0]),u=Fr(a[1]),h=s*t,m=u*Pr;return l?(l.x=h,l.y=m,l):{x:h,y:m}}return{toCartesian:n,toGeographic:(a,l)=>{let s=zm(a/t),u=zm(l/Pr);return{lon:s,lat:u}}}}var Ls=!1,Cy=!1;var As,Wn=class extends ve{constructor(e,t,n,o,a){super();p(this,"dirty",!1);p(this,"zoomDirty",!1);p(this,"rotationDirty",!1);p(this,"panDirty",!1);p(this,"stateDirty",!1);A(this,As,cu);p(this,"zoomSpeed",5);p(this,"rotateSpeed",100);p(this,"enabled",!0);p(this,"enableZoom",!0);p(this,"enablePan",!0);p(this,"enablePedestal",!1);p(this,"maxPedestal",1/0);p(this,"minPedestal",0);p(this,"enableRotate",!0);p(this,"minZoomAltitude",0);p(this,"maxZoomAltitude",1/0);p(this,"ignoreZoomLimits",!1);p(this,"zoomFactor",1);p(this,"panBounds",{min:new N(1/0,1/0),max:new N(-1/0,-1/0),center:new N(0,0,0),radius:1/0});p(this,"minTilt",0);p(this,"maxTilt",1.2);p(this,"MOUSE_BUTTONS",{ORBIT:ka.RIGHT,ZOOM:ka.MIDDLE,PAN:ka.LEFT});p(this,"camera");p(this,"scene");p(this,"renderer");p(this,"elevation");p(this,"orbit");p(this,"cameraPlane");p(this,"raycaster",new sn);p(this,"rendererState");p(this,"options");p(this,"state",-1);p(this,"intersection");p(this,"viewState",null);p(this,"tweens",new Map);p(this,"clock",new fd(!0));p(this,"coords",{mouse:new he,rotateStart:new he,rotateEnd:new he,rotateDelta:new he,panStart:new N,panCameraStart:new N,panEnd:new N,panDelta:new N,initialShiftPos:new he,initialPedestal:0,floorAnchor:new N});p(this,"touch",{origin:{offsetLeft:0,offsetTop:0},touches:[],anchor1:null,anchor2:null,inputs:null});p(this,"scrollTimer",null);p(this,"lastWheelTime",0);p(this,"resetZoom",!1);p(this,"zoomStart");p(this,"pedestalScaleFactor",1);p(this,"isUserZooming",!1);p(this,"stayInsideBounds",!0);p(this,"userInteracting",!1);p(this,"cameraMoving",!1);p(this,"lastCameraMoveTime",Date.now());p(this,"raycastToFloor",e=>{this.raycaster.setFromCamera(e,this.camera);let t=this.raycaster.intersectObject(this.cameraPlane,!1)[0];return t?t.point:new N});p(this,"isUserInteracting",()=>this.userInteracting);p(this,"getPosition",()=>new N(this.orbit.position.x,this.orbit.position.y,this.orbit.position.z));p(this,"getPedestal",()=>this.orbit.position.z);p(this,"pan",(e,t)=>{isNaN(e)||isNaN(t)||(this.setPosition(this.orbit.position.x+e,this.orbit.position.y+t),this.publish("position-updated"))});p(this,"postRender",()=>{(this.state===2||this.state===6)&&(this.raycaster.setFromCamera(this.coords.mouse,this.camera),this.intersection=this.raycaster.intersectObject(this.cameraPlane,!1)[0],this.intersection&&(this.coords.panStart.set(this.intersection.point.x,this.intersection.point.y,0),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0))),this.state===3&&this.resetZoom&&(this.resetZoom=!1,this.zoomStart=this.getZoomAltitude(),this.coords.floorAnchor=this.raycastToFloor(this.coords.mouse),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0)),this.state===7&&this.isAnimating===!1&&(this.state=-1,this.publish("multi-end"))});p(this,"isCameraMoving",()=>this.cameraMoving);p(this,"lastCameraStoppedMovingTime",()=>this.lastCameraMoveTime);p(this,"setPosition",(e,t)=>{e===void 0||t===void 0||isNaN(e)||isNaN(t)||(this.state===-1&&this.publish("pan-start"),this.updateCameraPosition(e,t),this.publish("position-updated"),this.publish("change"),this.state===-1&&this.publish("pan-end"),this.dirty=!0,this.stateDirty=!0)});p(this,"updateCameraPosition",(e,t)=>{let n=e-this.panBounds.center.x,o=t-this.panBounds.center.y,a=Math.sqrt(n*n+o*o);if(this.stayInsideBounds&&a>this.panBounds.radius){let l=Math.atan2(o,n),s={x:Math.cos(l)*this.panBounds.radius+this.panBounds.center.x,y:Math.sin(l)*this.panBounds.radius+this.panBounds.center.y};this.orbit.position.x=s.x,this.orbit.position.y=s.y}else this.orbit.position.x=e,this.orbit.position.y=t});p(this,"tilt",e=>{if(isNaN(e))return;this.state===-1&&this.publish("rotate-start");let t=this.stayInsideBounds?Math.max(Math.min(e+this.getTilt(),this.maxTilt),this.minTilt):e+this.getTilt();t!==this.elevation.rotation.x&&(this.elevation.rotation.x=t,this.publish("tilt-updated")),this.publish("change"),this.state===-1&&this.publish("rotate-end"),this.stateDirty=!0});p(this,"zoomIn",(e,t,n)=>{let o=this.getZoomAltitude();this.animateCamera({zoom:o/1.5},e,t,n)});p(this,"zoomOut",(e,t,n)=>{let o=this.getZoomAltitude();this.animateCamera({zoom:o*1.5},e,t,n)});p(this,"getRotation",()=>(-this.orbit.rotation.z+Math.PI*2)%(Math.PI*2));p(this,"cancelAnimation",()=>{let e=Array.from(this.tweens.keys());if(e.length<1)return;let t=e[e.length-1];t.state===7&&this.publish("multi-cancel",{zooming:!0,rotating:!0,tilting:!0}),this.completeTween(t),this.state===7&&(this.state=-1)});p(this,"animateCamera",(e,t,n,o,a,l)=>{let s=X({interruptible:!0},l),u={},h={},m=this.getPosition();if(e.position!=null&&(e.position.x!==void 0&&(u.x=m.x,h.x=e.position.x),e.position.y!==void 0&&(u.y=m.y,h.y=e.position.y),e.position.z!==void 0&&(u.z=m.z,h.z=e.position.z)),e.zoom!==void 0&&(u.zoom=this.stayInsideBounds?Math.min(Math.max(this.getZoomAltitude(),this.getZoomScaledMin()),this.getZoomScaledMax()):this.getZoomAltitude(),this.viewState==="multi_floor"||!this.stayInsideBounds?h.zoom=e.zoom:h.zoom=Math.min(Math.max(e.zoom,this.getZoomScaledMin()),this.getZoomScaledMax())),e.rotation!==void 0){let{start:M,end:E}=Hm(this.getRotation(),e.rotation);u.rotation=M,h.rotation=E}e.tilt!==void 0&&(u.tilt=this.getTilt(),this.viewState==="multi_floor"||!this.stayInsideBounds?h.tilt=e.tilt:h.tilt=Math.max(Math.min(e.tilt,this.maxTilt),this.minTilt));let d=u.zoom!==h.zoom,f=u.rotation!==h.rotation,b=u.tilt!==h.tilt,x=new jh(u).to(h,D.env.TESTING?0:t).onUpdate(M=>{this.setMulti({x:M.x,y:M.y,z:M.z},M.zoom,M.rotation,M.tilt)}).onComplete(()=>{this.completeTween(x),this.publish("multi-end",{zooming:d,rotating:f,tilting:b}),o&&o()}).onStart(()=>{this.state!==7&&(this.state=7,x.state=7,this.publish("multi-start",{zooming:d,rotating:f,tilting:b})),this.publish("change")});this.rendererState.internalTweenGroup.add(x);let y=Array.from(this.tweens.entries()),g=y[y.length-1],S=!1;return g!=null&&(g[1].interruptible?(typeof g[1].cancelledCallback=="function"&&g[1].cancelledCallback(),this.completeTween(g[0])):(S=!0,g[0].chain(x))),this.tweens.set(x,{cancelledCallback:a,interruptible:s.interruptible}),n?x.easing(n):x.easing(Bn.Quadratic.In),!e.doNotAutoStart&&!S&&(x.start(),this.publish("change")),x.cameraAnimation=!0,x});p(this,"setMulti",(e,t,n,o,a=!0)=>{this.state===-1&&this.publish("multi-start");let l=!1;e!=null&&(e.x!==void 0&&!isNaN(e.x)&&e.y!==void 0&&!isNaN(e.y)&&(this.updateCameraPosition(e.x,e.y),l=!0),e.z!==void 0&&!isNaN(e.z)&&(this.setPedestal(e.z,!0,!1),l=!0)),l&&this.publish("position-updated");let s={zooming:!1,tilting:!!t,rotating:!1};if(t!==void 0&&!isNaN(t)){let u=this.stayInsideBounds?Math.min(Math.max(t,this.getZoomScaledMin()),this.getZoomScaledMax()):t;u!==this.camera.position.z&&(s.zooming=!0,this.camera.position.z=u,this.publish("zoom-updated"),this.zoomDirty=!0,this.viewState==="multi_floor"?t>wo&&(this.camera.near=t-wo,this.camera.far=t+wo):(this.camera.near=t/Ii,this.camera.far=t*Ii),this.camera.updateProjectionMatrix())}if(n!==void 0&&!isNaN(n)&&n!==this.getRotation()&&(s.rotating=!0,this.orbit.rotation.z=-n,this.publish("rotation-updated")),o!==void 0&&!isNaN(o)){let u=this.stayInsideBounds?Math.max(Math.min(o,this.maxTilt),this.minTilt):o;u!==this.elevation.rotation.x&&(s.tilting=!0,this.elevation.rotation.x=u,this.publish("tilt-updated"))}a&&this.publish("change"),this.state===-1&&this.publish("multi-end",s),this.stateDirty=!0});p(this,"getZoomScaledMin",()=>this.minZoomAltitude*this.zoomFactor);p(this,"getZoomScaledMax",()=>{let e=this.minZoomAltitude*this.zoomFactor;return Math.max(this.maxZoomAltitude,e)});p(this,"setRotation",(e,t)=>{if(isNaN(e))return;this.state===-1&&!t&&this.publish("rotate-start");let n=-(e%ou);n!==this.orbit.rotation.z&&(this.orbit.rotation.z=n,t||this.publish("rotation-updated")),t||this.publish("change"),this.state===-1&&!t&&this.publish("rotate-end"),this.dirty=!0,this.rotationDirty=!0,t||(this.stateDirty=!0)});p(this,"setZoomAltitude",e=>{if(isNaN(e))return;this.state===-1&&this.publish("zoom-start");let t=this.stayInsideBounds?Math.min(Math.max(e,this.getZoomScaledMin()),this.getZoomScaledMax()):e;t!==this.camera.position.z&&(this.camera.position.z=t,this.publish("zoom-updated"),this.zoomDirty=!0),this.camera.near=t/Ii,this.camera.far=t*Ii,this.camera.updateProjectionMatrix(),this.publish("change"),this.state===-1&&this.publish("zoom-end"),this.dirty=!0,this.stateDirty=!0});p(this,"setZoomLevel",e=>{this.setZoomAltitude(this.convertZoomLevelToAltitude(e))});p(this,"getZoomAltitude",()=>this.camera.position.z);p(this,"getZoomLevel",()=>this.convertAltitudeToZoomLevel(this.getZoomAltitude()));p(this,"setTilt",(e,t)=>{if(isNaN(e))return;this.state===-1&&!t&&this.publish("rotate-start");let n=this.stayInsideBounds?Math.max(Math.min(e,this.maxTilt),this.minTilt):e;n!==this.elevation.rotation.x&&(this.elevation.rotation.x=n,t||this.publish("tilt-updated")),t||this.publish("change"),this.state===-1&&!t&&this.publish("rotate-end"),this.dirty=!0,t||(this.stateDirty=!0)});p(this,"getTilt",()=>this.elevation.rotation.x);p(this,"setCameraPlaneElevation",e=>{this.cameraPlane.position.z=e});p(this,"zoom",e=>{if(isNaN(e))return;this.state===-1&&this.publish("zoom-start");let t=this.getZoomAltitude()-e;this.camera.position.z=this.stayInsideBounds?Math.min(Math.max(t,this.minZoomAltitude*this.zoomFactor),this.maxZoomAltitude*this.zoomFactor):t,this.publish("zoom-updated"),this.zoomDirty=!0,this.publish("change"),this.state===-1&&this.publish("zoom-end"),this.stateDirty=!0});p(this,"getProjectionScaleFactor",(e,t,n)=>Fc(e,t,n));p(this,"update",()=>{this.orbit.updateMatrixWorld(),this.lastWheelTime>0&&this.state===3&&this.clock.getElapsedTime()-this.lastWheelTime>.2&&(this.lastWheelTime=0,this.state=-1,this.publish("zoom-end"),this.removeMouseMoveEventListeners())});p(this,"setPedestal",(e,t=!1,n=!0)=>{typeof e=="number"&&!isNaN(e)&&(this.orbit.position.z=e,t&&(this.publishPedestalChangeEvent(e),this.publish("pedestal-change",{pedestal:e})),this.publish("change"),this.dirty=!0,n&&(this.stateDirty=!0))});p(this,"dispose",()=>{this.scene.remove(this.cameraPlane),this.destroy()});p(this,"createCameraPlane",()=>{let e=Ls?2e3:1e10,t=Ls?100:1,n=new bt(e,e,t,t),o=new dt({color:0,wireframe:Ls,visible:Ls}),a=new me(n,o);return this.scene.add(a),a});p(this,"addEventListeners",()=>{let{domElement:e}=this.renderer;for(let t of lu)t.endsWith("start")?(this.on(t,this.setCameraMoving),t.startsWith("user")&&this.on(t,this.setUserInteracting)):(t.endsWith("end")||t.endsWith("cancel"))&&(this.on(t,this.unsetCameraMoving),t.startsWith("user")&&this.on(t,this.unsetUserInteracting));e.addEventListener("contextmenu",this.onContextMenu,{capture:!1,signal:this.signal}),e.addEventListener("mousedown",this.onMouseDown,{capture:!1,signal:this.signal}),e.addEventListener("wheel",this.onMouseWheel,{capture:!1,passive:!1,signal:this.signal}),e.addEventListener("touchstart",this.onTouchStart,{capture:!1,signal:this.signal}),e.addEventListener("touchend",this.onTouchEnd,{capture:!1,signal:this.signal}),e.addEventListener("touchmove",this.onTouchMove,{capture:!1,signal:this.signal})});p(this,"addMouseEventListeners",()=>{this.addMouseMoveEventListeners(),window.addEventListener("mouseup",this.onMouseUp,{capture:!1,signal:this.signal}),window.addEventListener("mouseout",this.onMouseUp,{capture:!1,signal:this.signal})});p(this,"addMouseMoveEventListeners",()=>{this.renderer.domElement.addEventListener("mousemove",this.onMouseMove,{capture:!1,signal:this.signal})});p(this,"removeMouseMoveEventListeners",()=>{this.renderer.domElement.removeEventListener("mousemove",this.onMouseMove,{capture:!1})});p(this,"removeMouseUpEventListeners",()=>{this.renderer.domElement.removeEventListener("mousemove",this.onMouseMove,{capture:!1}),window.removeEventListener("mouseup",this.onMouseUp,{capture:!1}),window.removeEventListener("mouseout",this.onMouseUp,{capture:!1})});p(this,"onContextMenu",e=>{e.preventDefault()});p(this,"onMouseUp",()=>{if(this.enabled!==!1){switch(this.removeMouseUpEventListeners(),this.state){case 2:this.publish("pan-end"),this.publish("user-pan-end");break;case 1:this.publish("zoom-end"),this.publish("user-dolly-end");break;case 0:this.publish("rotate-end"),this.publish("user-rotate-end");break;case 8:this.publish("pedestal-end"),this.publish("user-pedestal-end");break}this.state=-1,this.panDirty=!1}});p(this,"onMouseMove",e=>{if(this.enabled!==!1)if(e.preventDefault(),this.mouseToScene(e),this.state===0){if(this.enableRotate===!1)return;this.handleMouseMoveRotate(e)}else if(this.state===2){if(this.enablePan===!1)return;this.handleMouseMovePan()}else this.state===3?(this.resetZoom=!0,this.state=-1):this.state===8&&this.handleMouseMovePedestal(e)});p(this,"onTouchStart",e=>{if(this.enabled!==!1){switch(this.updateTouchOrigin(),this.touchToScene(e),e.touches.length){case 1:this.enablePedestal?(this.handleTouchStartPedestal(e),this.state=9):this.enablePan&&(this.handleTouchStartPan(e),this.state=6);break;case 2:this.touch.inputs=new ws(this.touch.touches[0],this.touch.touches[1]);break;default:this.state=-1}this.state}});p(this,"onTouchMove",e=>{if(this.enabled!==!1)switch(this.touchToScene(e),e.touches.length){case 2:e.preventDefault(),e.stopPropagation();let t=X({},this.touch.inputs.first),n=X({},this.touch.inputs.second),o=new he(this.touch.touches[0].x,this.touch.touches[0].y),a=new he(this.touch.touches[1].x,this.touch.touches[1].y);if(this.touch.inputs.update(this.touch.touches[0],this.touch.touches[1]),this.enableRotate&&this.state===4)this.handleTouchMoveTilt(e);else if(this.state===5)this.handleTouchMoveDolly();else if(this.state!==5&&this.touch.inputs.totalDistance>.05){let l=t.y<o.y&&n.y<a.y,s=t.y>o.y&&n.y>a.y;this.enableRotate&&this.state!==4&&(s||l)?(this.handleTouchStartTilt(e),this.state=4):(this.handleTouchStartDolly(),this.state=5)}break;case 1:(this.enablePedestal||this.enablePan)&&(e.preventDefault(),e.stopPropagation()),this.enablePedestal&&this.state===9?this.handleTouchMovePedestal(e):this.enablePan&&this.state===6&&this.handleTouchMovePan(e);break;default:this.state=-1}});p(this,"onTouchEnd",e=>{if(this.enabled!==!1){switch(this.handleTouchEnd(),this.state){case 2:case 6:this.publish("user-pan-end");break;case 4:this.publish("pan-end"),this.publish("user-tilt-end");break;case 1:case 5:this.publish("zoom-end"),this.publish("user-dolly-end");break;case 0:this.publish("rotate-end"),this.publish("user-rotate-end");break;case 8:case 9:this.publish("pedestal-end"),this.publish("user-pedestal-end");break}e.touches.length?this.onTouchStart(e):this.state=-1}});p(this,"handleTouchMovePan",e=>{let t=Object.hasOwn(e,"x")?new he(e.x,e.y):this.touch.touches[0],n=this.raycastToFloor(t);this.coords.panEnd.set(n.x,n.y,0),this.coords.panDelta.subVectors(this.coords.panEnd,this.coords.panStart),this.setPosition(this.coords.panCameraStart.x-this.coords.panDelta.x,this.coords.panCameraStart.y-this.coords.panDelta.y),this.publish("change"),this.panDirty=!0});p(this,"handleTouchStartDolly",()=>{let e=this.touch.touches[0].x-this.touch.touches[1].x,t=this.touch.touches[0].y-this.touch.touches[1].y;this.zoomStart=this.getZoomAltitude();let n=new he(this.touch.touches[0].x-e/2,this.touch.touches[0].y-t/2);this.coords.floorAnchor=this.raycastToFloor(n),this.orbit.updateMatrixWorld(),this.touch.anchor1=new Co(this.touch.touches[0],this.camera,this.cameraPlane),this.touch.anchor2=new Co(this.touch.touches[1],this.camera,this.cameraPlane),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0),this.publish("user-dolly-start"),this.publish("zoom-start"),this.publish("multi-start")});p(this,"handleMouseMovePan",()=>{let e=this.raycastToFloor(this.coords.mouse);this.coords.panEnd.set(e.x,e.y,0),this.coords.panDelta.subVectors(this.coords.panEnd,this.coords.panStart),this.setPosition(this.coords.panCameraStart.x-this.coords.panDelta.x,this.coords.panCameraStart.y-this.coords.panDelta.y),this.publish("change"),this.panDirty=!0});p(this,"handleTouchStartTilt",e=>{this.coords.rotateStart.set(e.touches[1].clientX,e.touches[1].clientY),this.publish("user-tilt-start"),this.publish("rotate-start")});p(this,"handleTouchMovePedestal",e=>{this.handleMouseMovePedestal(e.touches[0])});p(this,"handleTouchMoveTilt",e=>{this.coords.rotateEnd.set(e.touches[1].clientX,e.touches[1].clientY),this.coords.rotateDelta.subVectors(this.coords.rotateEnd,this.coords.rotateStart),this.setTilt(this.getTilt()-this.coords.rotateDelta.y/this.rotateSpeed),this.coords.rotateStart.copy(this.coords.rotateEnd)});p(this,"handleTouchMoveDolly",()=>{let e=this.touch.inputs.first,t=this.touch.inputs.second;this.touch.anchor1.viewCoordinate={x:e.x,y:e.y},this.touch.anchor2.viewCoordinate={x:t.x,y:t.y};let n=this.makeTransformFromTouchAnchors(this.touch.anchor1,this.touch.anchor2);n&&this.setCameraFromTransformMatrix(n),this.orbit.updateMatrixWorld(),this.touch.anchor1.updateAnchorState(this.camera,e),this.touch.anchor2.updateAnchorState(this.camera,t)});p(this,"handleTouchEnd",()=>{this.state===4||this.state===5?this.publish("multi-end"):this.state===6&&this.publish("pan-end"),this.panDirty=!1});p(this,"handleTouchStartPan",e=>{let t=Object.hasOwn(e,"x")?new he(e.x,e.y):this.touch.touches[0],n=this.raycastToFloor(t);this.coords.panStart.set(n.x,n.y,0),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0),this.publish("user-pan-start"),this.publish("pan-start")});p(this,"handleTouchStartPedestal",e=>{this.handleMouseDownPedestal(e.touches[0])});p(this,"onMouseDown",e=>{if(this.enabled!==!1){if(this.mouseToScene(e),e.preventDefault(),this.state===3&&this.publish("zoom-end"),e.button===this.MOUSE_BUTTONS.ORBIT){if(this.enableRotate===!1)return;this.handleMouseDownRotate(e),this.state=0}else(e.button===this.MOUSE_BUTTONS.PAN||e.button===this.MOUSE_BUTTONS.ZOOM)&&(this.enablePan?(this.handleMouseDownPan(),this.state=2):this.enablePedestal&&(this.handleMouseDownPedestal(e),this.state=8));this.state!==-1&&this.addMouseEventListeners()}});p(this,"onMouseWheel",e=>{this.enabled===!1||this.enableZoom===!1||this.state!==-1&&this.state!==3&&this.state!==7||(this.state===7&&this.cancelAnimation(),e.preventDefault(),e.stopPropagation(),this.mouseToScene(e),this.canScrollZoom(e)&&(this.lastWheelTime=this.clock.getElapsedTime(),this.publishUserZoomEvent()),this.state!==3&&this.canScrollZoom(e)&&(this.addMouseMoveEventListeners(),this.state=3,this.zoomStart=this.getZoomAltitude(),this.coords.floorAnchor=this.raycastToFloor(this.coords.mouse),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0),this.publish("zoom-start")),this.scrollTimer!=null&&clearTimeout(this.scrollTimer),this.scrollTimer=setTimeout(()=>{this.publish("zoom-end")},50),this.handleMouseWheel(e))});p(this,"handleMouseWheel",e=>{if(this.publish("zoom-start"),!this.canScrollZoom(e)){this.lastWheelTime>0&&this.publish("zoom-end"),this.lastWheelTime=0,this.state=-1;return}let t=this.getZoomAltitude(),n=t-ru(e)*t/au*this.zoomSpeed;if(this.setZoomAltitude(n),this.enablePan){let o=n/this.zoomStart;this.coords.panDelta.subVectors(this.coords.floorAnchor,this.coords.panCameraStart).multiplyScalar(1-o),this.setPosition(this.coords.panCameraStart.x+this.coords.panDelta.x,this.coords.panCameraStart.y+this.coords.panDelta.y)}this.publish("change")});p(this,"setCameraFromTransformMatrix",e=>{this.orbit.updateMatrixWorld();let t=new Or;t.setFromRotationMatrix(e,"ZYX");let n=(e.elements[14]-this.cameraPlane.position.z)/Math.cos(t.x),o=t.z,a=new N(0,0,1);a.applyEuler(t),a.setLength(n);let l=new N;l.setFromMatrixPosition(e),l.sub(a),this.enablePan&&this.setPosition(l.x,l.y),this.enableZoom&&this.setZoomAltitude(n),this.enableRotate&&this.setRotation(-o)});p(this,"makeTransformFromTouchAnchors",(e,t)=>{this.orbit.updateMatrixWorld(),this.camera.updateProjectionMatrix();let n=this.camera.projectionMatrix.clone(),o=e.worldCoordinate,a=t.worldCoordinate,l=e.reUnproject(),s=t.reUnproject();if(!l||!s||!o||!a)return null;let u=e.viewCoordinate,h=t.viewCoordinate,m=a.x-o.x,d=a.y-o.y,f=Math.atan2(d,m),b=s.x-l.x,x=s.y-l.y,y=Math.atan2(x,b),g=Bm(f,y),S=new Se;S.makeRotationZ(-g);let M=S.clone();M.multiply(e.snapHolderMatrix);let E=(fe,re,W)=>fe.elements[(re-1)*4+W-1],w=E(n,1,1)*E(M,1,1)-u.x*E(n,3,4)*E(M,3,1),_=E(n,1,1)*E(M,1,2)-u.x*E(n,3,4)*E(M,3,2),L=E(n,1,1)*E(M,1,3)-u.x*E(n,3,4)*E(M,3,3),T=o.x*w+o.y*_+o.z*L,C=E(n,2,2)*E(M,2,1)-u.y*E(n,3,4)*E(M,3,1),R=E(n,2,2)*E(M,2,2)-u.y*E(n,3,4)*E(M,3,2),O=E(n,2,2)*E(M,2,3)-u.y*E(n,3,4)*E(M,3,3),B=o.x*C+o.y*R+o.z*O,k=E(n,1,1)*E(M,1,1)-h.x*E(n,3,4)*E(M,3,1),J=E(n,1,1)*E(M,1,2)-h.x*E(n,3,4)*E(M,3,2),z=E(n,1,1)*E(M,1,3)-h.x*E(n,3,4)*E(M,3,3),U=a.x*k+a.y*J+a.z*z,ce=E(n,2,2)*E(M,2,1)-h.y*E(n,3,4)*E(M,3,1),te=E(n,2,2)*E(M,2,2)-h.y*E(n,3,4)*E(M,3,2),G=E(n,2,2)*E(M,2,3)-h.y*E(n,3,4)*E(M,3,3),H=a.x*ce+a.y*te+a.z*G,V=Math.abs(k-w),Q=Math.abs(J-_),pe=Math.abs(z-L),be=Math.abs(k-C),Be=Math.abs(J-R),ge=Math.abs(z-O),Ee=Math.abs(ce-w),Oe=Math.abs(te-_),Re=Math.abs(G-L),Ze=Math.abs(ce-C),Ce=Math.abs(te-R),wt=Math.abs(G-O),Qt=Math.min(V+Q+pe,be+Be+ge),Ht=Math.min(Ee+Oe+Re,Ze+Ce+wt);Qt<Ht&&(k=ce,J=te,z=G,U=H);let Ae=C*L-w*O,_e=R*L-_*O,Rn=B*L-T*O,er=k*O-C*z,qr=J*O-R*z,mr=U*O-B*z,tr=(mr*_e-Rn*qr)/(er*_e-Ae*qr),Ft=(mr*Ae-Rn*er)/(qr*Ae-_e*er),wr=R*w-_*C,Jr=O*w-L*C,Kr=B*w-T*C,_n=J*C-R*k,Tr=z*C-O*k,rr=((U*C-B*k)*wr-Kr*_n)/(Tr*wr-Jr*_n),Gt=M.clone();return Gt.elements[12]=tr,Gt.elements[13]=Ft,Gt.elements[14]=rr,rr>0?Gt:null});p(this,"updateTouchOrigin",()=>{let e=this.renderer.domElement;this.touch.origin.offsetLeft=e.getBoundingClientRect().left,this.touch.origin.offsetTop=e.getBoundingClientRect().top});p(this,"touchToScene",e=>{this.touch.touches=[];for(let t=0,n=e.touches.length;t<n;t++){let o=e.touches[t],a=Nm(o,this.touch.origin);this.touch.touches.push(new he(a.x/this.renderer.domElement.width*this.rendererState.pixelRatio*2-1,-(a.y/this.renderer.domElement.height*this.rendererState.pixelRatio)*2+1))}this.coords.mouse=this.touch.touches[0]});p(this,"canScrollZoom",e=>{let t=ru(e),n=this.getZoomAltitude();return!(t<0&&n===this.getZoomScaledMax()||t>0&&n===this.getZoomScaledMin())});p(this,"mouseToScene",e=>{let t=this.getMousePos(e);return this.coords.mouse.x=t.x/this.renderer.domElement.width*this.rendererState.pixelRatio*2-1,this.coords.mouse.y=-(t.y/this.renderer.domElement.height*this.rendererState.pixelRatio)*2+1,this.coords.mouse});p(this,"getMousePos",e=>({x:e.offsetX,y:e.offsetY}));p(this,"handleMouseDownRotate",e=>{this.coords.rotateStart.set(e.clientX,e.clientY),this.publish("rotate-start"),this.publish("user-rotate-start")});p(this,"handleMouseDownPan",()=>{let e=this.raycastToFloor(this.coords.mouse);this.coords.panStart.set(e.x,e.y,0),this.coords.panCameraStart.set(this.orbit.position.x,this.orbit.position.y,0),this.publish("pan-start"),this.publish("user-pan-start")});p(this,"handleMouseDownPedestal",e=>{let t=new he(e.clientX,e.clientY);this.coords.initialShiftPos=t,this.coords.initialPedestal=this.getPedestal(),this.pedestalScaleFactor=Fc(this.camera.fov,this.renderer.domElement.clientHeight,this.getZoomAltitude()),this.publish("pedestal-start"),this.publish("user-pedestal-start")});p(this,"handleMouseMovePedestal",e=>{let t={x:e.clientX,y:e.clientY},n=this.coords.initialPedestal+this.pedestalScaleFactor*(t.y-this.coords.initialShiftPos.y);this.stayInsideBounds&&(n<this.minPedestal?n=Math.max(n,this.minPedestal):n>this.maxPedestal&&(n=Math.min(n,this.maxPedestal))),n!==this.getPedestal()&&this.setPedestal(n,!0)});p(this,"handleMouseMoveRotate",e=>{this.coords.rotateEnd.set(e.clientX,e.clientY),this.coords.rotateDelta.subVectors(this.coords.rotateEnd,this.coords.rotateStart),this.setRotation(this.getRotation()+this.coords.rotateDelta.x/this.rotateSpeed),this.setTilt(this.getTilt()-this.coords.rotateDelta.y/this.rotateSpeed),this.coords.rotateStart.copy(this.coords.rotateEnd),this.publish("change")});p(this,"publishUserZoomDebounced",fi(()=>{this.isUserZooming=!1,this.publish("user-zoom-end")},250));p(this,"publishUserZoomEvent",()=>{this.isUserZooming?this.publishUserZoomDebounced():(this.publish("user-zoom-start"),this.isUserZooming=!0,this.publishUserZoomDebounced())});p(this,"setCameraMoving",()=>{this.cameraMoving=!0});p(this,"unsetCameraMoving",()=>{this.cameraMoving=!1,this.lastCameraMoveTime=Date.now()});p(this,"setUserInteracting",()=>{this.userInteracting=!0});p(this,"unsetUserInteracting",()=>{this.userInteracting=!1});p(this,"publishPedestalChangeEvent",e=>{this.publish("pedestal-change",{pedestal:e,scrolledToTop:this.scrolledToTop,scrolledToBottom:this.scrolledToBottom,scrollPercent:this.scrollPercent})});p(this,"convertAltitudeToZoomLevel",e=>{let[,t]=this.center,n=this.computeMetersPerPixelFromAltitude(e),o=Math.cos(de.degToRad(t))*2*Math.PI*Pr/n;return de.clamp(Math.log2(o/512),Ds,Ps)});p(this,"convertZoomLevelToAltitude",e=>this.computeMetersPerPixelFromZoomLevel(e)*this.options.canvasHeight/2/Math.tan(de.degToRad(this.camera.fov)/2));p(this,"completeTween",e=>{e.isPlaying()&&e.stop(),this.rendererState.internalTweenGroup.remove(e),this.tweens.delete(e)});p(this,"debugContainer",new Tt);this.camera=e,this.renderer=n,this.rendererState=o,this.scene=t,this.options=a,this.elevation=e.parent,this.orbit=this.elevation.parent,this.cameraPlane=this.createCameraPlane(),this.zoomStart=e.position.z,a.mode!=="outdoors-overlay"&&this.addEventListeners()}get maxZoomLevel(){return this.convertAltitudeToZoomLevel(this.minZoomAltitude)}setMaxZoomLevel(e){this.minZoomAltitude=this.convertZoomLevelToAltitude(e),this.stateDirty=!0}get defaultMinZoomLevel(){return c(this,As)}get minZoomLevel(){return this.convertAltitudeToZoomLevel(this.maxZoomAltitude)}setMinZoomLevel(e){this.maxZoomAltitude=this.convertZoomLevelToAltitude(e),this.stateDirty=!0}get scrollPercent(){let e=this.minPedestal,t=this.maxPedestal,n=this.getPedestal();return n=Math.min(n,t),n=Math.max(n,e),(n-e)/(t-e)*100}get fov(){return this.camera.fov}get scrolledToBottom(){return this.minPedestal===0||Math.floor(this.getPedestal())<=this.minPedestal}get scrolledToTop(){return this.maxPedestal===0||Math.ceil(this.getPedestal())>=this.maxPedestal}get center(){var o,a,l,s;let e=this.getPosition(),{lat:t,lon:n}=Ja((a=(o=this.rendererState.center)==null?void 0:o[1])!=null?a:0,(s=(l=this.rendererState.center)==null?void 0:l[0])!=null?s:0,e.x,e.y);return[n,t]}setCenter(e,t){var a,l,s,u;let{x:n,y:o}=Ka((l=(a=this.rendererState.center)==null?void 0:a[1])!=null?l:0,(u=(s=this.rendererState.center)==null?void 0:s[0])!=null?u:0,t,e);this.setPosition(n,o)}get isAnimating(){return this.rendererState.internalTweenGroup.getAll().some(e=>e.cameraAnimation)}getCameraFrameForCoordinates(e,t){var d,f;let n=t.minZoom!==void 0?t.minZoom:this.minZoomAltitude,o=t.maxZoom!==void 0?t.maxZoom:this.maxZoomAltitude,a=this.options.canvasWidth,l=this.options.canvasHeight,s=this.getRotation(),u=this.getTilt(),h=this.getPosition();this.setRotation((d=t.rotation)!=null?d:s,!0),this.setTilt((f=t.tilt)!=null?f:u,!0);let m=hu(e,{canvasWidth:a,canvasHeight:l,paddingOption:t.padding,verticalPadding:t.verticalPadding,minZoom:n,maxZoom:o,position:h,camera:this.camera,orbit:this.orbit});return this.setRotation(s,!0),this.setTilt(u,!0),{center:m.position,zoomLevel:this.convertAltitudeToZoomLevel(m.zoom)}}focusOn(e,t){if(Cy){this.debugContainer&&at(this.debugContainer);let y=new nn(4,4,4),g=new dt({color:65280,depthTest:!1}),S=new we(y,g,e.length),M=new Se;e.forEach((E,w)=>{M.setPosition(E),S.setMatrixAt(w,M)}),S.instanceMatrix.needsUpdate=!0,this.debugContainer.add(S),this.scene.add(this.debugContainer)}let n=t.curve,o=t.callback,a=t.cancelledCallback,l=t.minZoom!==void 0?t.minZoom:this.minZoomAltitude,s=t.maxZoom!==void 0?t.maxZoom:this.maxZoomAltitude,u=this.options.canvasWidth,h=this.options.canvasHeight,m;t.duration!==void 0?m=t.duration:D.env.TESTING==="true"?m=0:m=su;let d=t.padding,f=this.getRotation(),b=this.getTilt();t.rotation!=null&&this.setRotation(t.rotation),t.tilt!=null&&this.setTilt(t.tilt);let x=hu(e,{canvasHeight:h,paddingOption:d,canvasWidth:u,minZoom:l,maxZoom:s,camera:this.camera,orbit:this.orbit,position:this.getPosition(),verticalPadding:t.verticalPadding});this.setRotation(f),this.setTilt(b),this.animateCamera({position:x.position,tilt:t.tilt,rotation:t.rotation,zoom:x.zoom},m,n,o,a,t)}resize(e,t){this.options.canvasWidth=e,this.options.canvasHeight=t}computeMetersPerPixelFromZoomLevel(e){let[,t]=this.center,n=de.clamp(e,Ds,Ps),o=Math.pow(2,n),a=de.clamp(t,nu,iu),l=o*512;return Math.cos(de.degToRad(a))*Math.PI*2*Pr/l}computeMetersPerPixelFromAltitude(e){return e*2*Math.tan(de.degToRad(this.camera.fov)/2)/this.options.canvasHeight}getCurrentMetersPerPixel(){return this.computeMetersPerPixelFromAltitude(this.getZoomAltitude())}};As=new WeakMap,p(Wn,"CAMERA_FRAME_PADDING_SIDES",["top","bottom","left","right"]);function hu(i,{canvasWidth:r,orbit:e,paddingOption:t,verticalPadding:n=0,canvasHeight:o,minZoom:a,maxZoom:l,camera:s,position:u}){let h={zoom:a,position:u};if(i.length===0)return h;for(let Ae of Wn.CAMERA_FRAME_PADDING_SIDES)typeof t[Ae]!="number"&&(t[Ae]=0);let m=Pi(t,r,o);if(m.left+m.right>=r||m.top+m.bottom>=o)return h;e.updateMatrixWorld();let d=s.matrixWorldInverse,f=s.fov*(Math.PI/180)/2,b=f,y=Math.atan(Math.tan(f)*(r/o)),g=new N(1/0,1/0,1/0),S=new N(-1/0,-1/0,-1/0),M=new Ve,E=new N;for(let Ae=0,_e=i.length;Ae<_e;Ae++)E.copy(i[Ae]),M.expandByPoint(E),E.applyMatrix4(d),g.min(E),S.max(E),E.copy(i[Ae]),E.z-=n,E.applyMatrix4(d),g.min(E),S.max(E),E.copy(i[Ae]),E.z+=n,E.applyMatrix4(d),g.min(E),S.max(E);let w=S.x-g.x,_=S.y-g.y,L=r-m.left-m.right,T=o-m.top-m.bottom,C=(S.x+g.x)/2,R=(S.y+g.y)/2,O=w/L,B=_/T,k=a,J=l,z=k*Math.tan(y)*2,U=J*Math.tan(y)*2,ce=z/r,te=U/r,G=Math.max(O,B);G=de.clamp(G,ce,te);let H=L*G,V=T*G,Q={min:{x:C-H/2-m.left*G,y:R-V/2-m.bottom*G},max:{x:C+H/2+m.right*G,y:R+V/2+m.top*G}},pe=(Q.min.x+Q.max.x)/2,be=(Q.min.y+Q.max.y)/2,Be=M.getCenter(new N),ge=Math.abs(pe-Q.min.x),Ee=Math.abs(be-Q.min.y),Oe=ge/Math.tan(y),Re=Ee/Math.tan(b),Ze=new N;Ze.set(pe,be,S.z+Math.max(Oe,Re)),Ze.applyMatrix4(s.matrixWorld);let Ce=new N;Ce.set(pe,be,S.z),Ce.applyMatrix4(s.matrixWorld);let wt=new N().subVectors(Ce,Ze),Qt=(Be.z-Ze.z)/wt.z,Ht=new N().copy(Ze).add(wt.clone().multiplyScalar(Qt));return Ce.set(Ht.x,Ht.y,Ht.z),Ze.sub(Ce),{position:Ht,zoom:Ze.length()}}v();import{z as Le}from"zod";var wy=Le.object({rotation:Le.array(Le.number()).length(3).optional(),altitude:Le.number().optional(),scale:Le.array(Le.number()).length(3).optional(),interactive:Le.boolean().optional(),verticalOffset:Le.number().optional(),id:Le.union([Le.number(),Le.string()]).optional()}),Ty=Le.object({type:Le.enum(["Feature"]),geometry:Di,properties:wy}),Dy=Le.object({type:Le.enum(["FeatureCollection"]),features:Le.array(Ty)}),Py=Le.object({color:Le.string()}),Iy=Le.object({url:Le.string(),color:Le.string().optional(),opacity:Le.number().optional(),material:Le.record(Le.string(),Py).optional()});function Wm(i,r,e){Le.union([Le.number(),Le.string()]).parse(i),Dy.parse(r),Iy.parse(e)}var To,Do,Po,Io,Oo,pn=class{constructor(r){p(this,"mesh");p(this,"type","model");p(this,"positionDirty",!0);p(this,"outline");p(this,"geometry");p(this,"material");p(this,"feature");p(this,"instanceIndex",-1);p(this,"instancingDisabled",!1);A(this,To,!0);p(this,"color",new le);p(this,"clippingPlane");p(this,"position",new N);A(this,Do,0);A(this,Po,1);A(this,Io,qe.GEOMETRY);A(this,Oo,!1);this.feature=r}get visible(){return c(this,To)}set visible(r){F(this,To,r)}get modelScene(){var r;return this.clippingPlane?(r=this.mesh)==null?void 0:r.children.find(e=>e.name!=="hole-fill-mesh"):this.mesh}get altitude(){return c(this,Do)}set altitude(r){F(this,Do,r)}get opacity(){return c(this,Po)}set opacity(r){F(this,Po,r)}get renderOrder(){return c(this,Io)}set renderOrder(r){F(this,Io,r)}get visibleThroughGeometry(){return c(this,Oo)}set visibleThroughGeometry(r){F(this,Oo,r)}};To=new WeakMap,Do=new WeakMap,Po=new WeakMap,Io=new WeakMap,Oo=new WeakMap;v();v();var jn={container:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",pointerEvents:"none",zIndex:"9998"},focusOnBox:{position:"absolute",border:"2px solid orange",backgroundColor:"transparent",pointerEvents:"none"},getFocusOnTransformBox:{position:"absolute",border:"2px dashed cyan",backgroundColor:"rgba(0, 255, 255, 0.1)",pointerEvents:"none"},animateToBox:{position:"absolute",width:"12px",height:"12px",border:"2px solid lime",backgroundColor:"rgba(0, 255, 0, 0.3)",borderRadius:"50%",transform:"translate(-50%, -50%)",pointerEvents:"none"},label:{position:"absolute",fontSize:"10px",fontFamily:"monospace",color:"white",backgroundColor:"rgba(0, 0, 0, 0.7)",padding:"2px 4px",borderRadius:"2px",whiteSpace:"nowrap"}},du={container:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",pointerEvents:"none",zIndex:"9999"},top:{position:"absolute",top:"0",left:"0",right:"0",backgroundColor:"rgba(255, 0, 0, 0.2)",borderBottom:"2px dashed rgba(255, 0, 0, 0.6)"},bottom:{position:"absolute",bottom:"0",left:"0",right:"0",backgroundColor:"rgba(0, 255, 0, 0.2)",borderTop:"2px dashed rgba(0, 255, 0, 0.6)"},left:{position:"absolute",top:"0",bottom:"0",left:"0",backgroundColor:"rgba(0, 0, 255, 0.2)",borderRight:"2px dashed rgba(0, 0, 255, 0.6)"},right:{position:"absolute",top:"0",bottom:"0",right:"0",backgroundColor:"rgba(255, 255, 0, 0.2)",borderLeft:"2px dashed rgba(255, 255, 0, 0.6)"},label:{position:"absolute",fontSize:"10px",fontFamily:"monospace",color:"white",backgroundColor:"rgba(0, 0, 0, 0.7)",padding:"2px 4px",borderRadius:"2px"}},st,Oi,kt,It,Yt,$t,lt,Fo,Go,Li,Zn,Gr,Br,fn,gn,yn,Fs,Xn,xt,Ot,bn,Yn,ie,jm,Zm,Xm,Ym,$m,mu,Lo,pu,qm,Ao,Ro,Jm,Km,Qm,Rs,_o,Gs=class Gs{constructor(r,e){A(this,ie);A(this,st);A(this,Oi);A(this,kt,!1);A(this,It,null);A(this,Yt,null);A(this,$t,null);A(this,lt,null);A(this,Fo,null);A(this,Go,null);A(this,Li,null);A(this,Zn,null);A(this,Gr,!1);A(this,Br,new Map);A(this,fn,!1);A(this,gn,new Map);A(this,yn,!1);A(this,Xn,!1);A(this,xt,null);A(this,Ot,null);A(this,bn,null);A(this,Yn,null);F(this,st,r),F(this,Oi,e)}showCameraTargets(){c(this,kt)||(F(this,kt,!0),Z(this,ie,jm).call(this),Z(this,ie,Xm).call(this))}hideCameraTargets(){c(this,kt)&&(F(this,kt,!1),Z(this,ie,Ym).call(this),Z(this,ie,Zm).call(this))}setFocusOnPointCloud(r,e,t){!c(this,kt)&&!c(this,Gr)||(c(this,kt)&&(F(this,Fo,r.map(n=>n.clone())),Z(this,ie,Lo).call(this)),Z(this,ie,pu).call(this,r,e,t))}setGetFocusOnTransformPointCloud(r,e,t){!c(this,kt)&&!c(this,Gr)||(c(this,kt)&&(F(this,Go,r.map(n=>n.clone())),Z(this,ie,Lo).call(this)),Z(this,ie,pu).call(this,r,e,t))}setAnimateToPosition(r){c(this,kt)&&(F(this,Li,r.clone()),Z(this,ie,Lo).call(this))}showFocusOnDebug(r){var e,t,n,o,a,l;if(r===!1){this.hideFocusOnDebug();return}Z(this,ie,Ro).call(this,c(this,Br)),Z(this,ie,Ro).call(this,c(this,gn)),F(this,Gr,!0),F(this,fn,r.pointCloud===!1?!1:{size:(t=(e=r.pointCloud)==null?void 0:e.size)!=null?t:2,color:(o=(n=r.pointCloud)==null?void 0:n.color)!=null?o:"lime"}),F(this,yn,r.boundingBox===!1?!1:{color:(l=(a=r.boundingBox)==null?void 0:a.color)!=null?l:"lime"})}hideFocusOnDebug(){c(this,Gr)&&(F(this,Gr,!1),F(this,fn,!1),F(this,yn,!1),Z(this,ie,Ro).call(this,c(this,Br)),Z(this,ie,Ro).call(this,c(this,gn)))}showScreenOffsets(){c(this,Xn)||(F(this,Xn,!0),Z(this,ie,Km).call(this))}hideScreenOffsets(){c(this,Xn)&&(F(this,Xn,!1),Z(this,ie,Qm).call(this))}destroy(){this.hideCameraTargets(),this.hideScreenOffsets(),this.hideFocusOnDebug()}};st=new WeakMap,Oi=new WeakMap,kt=new WeakMap,It=new WeakMap,Yt=new WeakMap,$t=new WeakMap,lt=new WeakMap,Fo=new WeakMap,Go=new WeakMap,Li=new WeakMap,Zn=new WeakMap,Gr=new WeakMap,Br=new WeakMap,fn=new WeakMap,gn=new WeakMap,yn=new WeakMap,Fs=new WeakMap,Xn=new WeakMap,xt=new WeakMap,Ot=new WeakMap,bn=new WeakMap,Yn=new WeakMap,ie=new WeakSet,jm=function(){let r=c(this,st).container;if(!r)return;F(this,It,document.createElement("div")),c(this,It).dataset.debugCameraTargets="true",Object.assign(c(this,It).style,jn.container),F(this,Yt,document.createElement("div")),c(this,Yt).dataset.debugType="focusOn",Object.assign(c(this,Yt).style,jn.focusOnBox),c(this,Yt).style.display="none";let e=document.createElement("span");Object.assign(e.style,jn.label),e.style.top="-20px",e.style.left="0",e.style.color="orange",e.textContent="focusOn",c(this,Yt).appendChild(e),F(this,$t,document.createElement("div")),c(this,$t).dataset.debugType="getFocusOnTransform",Object.assign(c(this,$t).style,jn.getFocusOnTransformBox),c(this,$t).style.display="none";let t=document.createElement("span");Object.assign(t.style,jn.label),t.style.top="-20px",t.style.left="0",t.style.color="cyan",t.textContent="getFocusOnTransform",c(this,$t).appendChild(t),F(this,lt,document.createElement("div")),c(this,lt).dataset.debugType="animateTo",Object.assign(c(this,lt).style,jn.animateToBox),c(this,lt).style.display="none";let n=document.createElement("span");Object.assign(n.style,jn.label),n.style.top="-20px",n.style.left="50%",n.style.transform="translateX(-50%)",n.style.color="lime",n.textContent="animateTo",c(this,lt).appendChild(n),c(this,It).appendChild(c(this,Yt)),c(this,It).appendChild(c(this,$t)),c(this,It).appendChild(c(this,lt)),r.appendChild(c(this,It))},Zm=function(){c(this,It)&&(c(this,It).remove(),F(this,It,null)),F(this,Yt,null),F(this,$t,null),F(this,lt,null)},Xm=function(){F(this,Zn,c(this,st).on("post-render",()=>{Z(this,ie,Lo).call(this)}))},Ym=function(){c(this,Zn)!==null&&(c(this,Zn).call(this),F(this,Zn,null))},$m=function(r){let e=1/0,t=1/0,n=-1/0,o=-1/0,a=new he;for(let l of r)c(this,st).project(a,l),a.x!==-1e3&&(e=Math.min(e,a.x),t=Math.min(t,a.y),n=Math.max(n,a.x),o=Math.max(o,a.y));return e!==1/0?{minX:e,minY:t,maxX:n,maxY:o}:null},mu=function(r,e){if(!e||e.length===0){r.style.display="none";return}let t=Z(this,ie,$m).call(this,e);t?(r.style.display="block",r.style.left="".concat(t.minX,"px"),r.style.top="".concat(t.minY,"px"),r.style.width="".concat(t.maxX-t.minX,"px"),r.style.height="".concat(t.maxY-t.minY,"px")):r.style.display="none"},Lo=function(){if(!(!c(this,kt)||!c(this,It)))if(c(this,Yt)&&Z(this,ie,mu).call(this,c(this,Yt),c(this,Fo)),c(this,$t)&&Z(this,ie,mu).call(this,c(this,$t),c(this,Go)),c(this,lt)&&c(this,Li)){let r=new he;c(this,st).project(r,c(this,Li)),r.x!==-1e3?(c(this,lt).style.display="block",c(this,lt).style.left="".concat(r.x,"px"),c(this,lt).style.top="".concat(r.y,"px")):c(this,lt).style.display="none"}else c(this,lt)&&(c(this,lt).style.display="none")},pu=function(r,e,t){if(!c(this,Gr))return;let n=e!=null?e:c(Gs,Fs);c(this,fn)!==!1&&Z(this,ie,qm).call(this,r,n,t),c(this,yn)!==!1&&Z(this,ie,Jm).call(this,r,n,t)},qm=function(r,e,t){let n=c(this,st).getThreeScene();if(!n||r.length===0){Z(this,ie,Ao).call(this,c(this,Br),e);return}if(c(this,fn)===!1)return;let{size:o,color:a}=c(this,fn),l=t!=null?t:a,s=c(this,Br).get(e);if(!s||s.count!==r.length){Z(this,ie,Ao).call(this,c(this,Br),e);let h=new Mi(o,8,6),m=new dt({color:l,depthTest:!1,transparent:!0,opacity:.3});s=new we(h,m,r.length),s.renderOrder=9999,n.add(s),c(this,Br).set(e,s)}let u=new Tt;for(let h=0;h<r.length;h++)u.position.copy(r[h]),u.updateMatrix(),s.setMatrixAt(h,u.matrix);s.instanceMatrix.needsUpdate=!0,c(this,st).render()},Ao=function(r,e){var n;let t=r.get(e);t&&((n=c(this,st).getThreeScene())==null||n.remove(t),t.geometry.dispose(),t.material.dispose(),r.delete(e))},Ro=function(r){let e=c(this,st).getThreeScene();for(let t of r.values())e==null||e.remove(t),t.geometry.dispose(),t.material.dispose();r.clear()},Jm=function(r,e,t){let n=c(this,st).getThreeScene();if(!n||r.length===0){Z(this,ie,Ao).call(this,c(this,gn),e);return}if(c(this,yn)===!1)return;let o=t!=null?t:c(this,yn).color,a=c(this,st).getThreeCamera(),l=a.matrixWorldInverse,s=r.map(M=>M.clone().applyMatrix4(l)),u=new Ve().setFromPoints(s),h=u.getSize(new N),m=u.getCenter(new N),d=new Se().copy(l).invert(),f=m.applyMatrix4(d),b=new tn().setFromRotationMatrix(a.matrixWorld);Z(this,ie,Ao).call(this,c(this,gn),e);let x=new nn(h.x,h.y,h.z),y=new ja(x);x.dispose();let g=new bi({color:o,depthTest:!1,transparent:!0,opacity:.5}),S=new on(y,g);S.position.copy(f),S.quaternion.copy(b),S.renderOrder=9999,n.add(S),c(this,gn).set(e,S),c(this,st).render()},Km=function(){let r=c(this,st).container;if(!r)return;F(this,xt,document.createElement("div")),c(this,xt).dataset.debugScreenOffsets="true",Object.assign(c(this,xt).style,du.container);let e=t=>{let n=document.createElement("div");n.dataset.debugOffset=t,Object.assign(n.style,du[t]);let o=document.createElement("span");switch(Object.assign(o.style,du.label),o.dataset.debugLabel=t,t){case"top":o.style.bottom="4px",o.style.left="50%",o.style.transform="translateX(-50%)";break;case"bottom":o.style.top="4px",o.style.left="50%",o.style.transform="translateX(-50%)";break;case"left":o.style.right="4px",o.style.top="50%",o.style.transform="translateY(-50%)";break;case"right":o.style.left="4px",o.style.top="50%",o.style.transform="translateY(-50%)";break}return n.appendChild(o),n};F(this,Ot,{top:e("top"),bottom:e("bottom"),left:e("left"),right:e("right")}),c(this,xt).appendChild(c(this,Ot).top),c(this,xt).appendChild(c(this,Ot).bottom),c(this,xt).appendChild(c(this,Ot).left),c(this,xt).appendChild(c(this,Ot).right),r.appendChild(c(this,xt)),Z(this,ie,Rs).call(this),F(this,Yn,c(this,Oi).on("padding-change",()=>{Z(this,ie,Rs).call(this)})),F(this,bn,new ResizeObserver(()=>{Z(this,ie,Rs).call(this)})),c(this,bn).observe(r)},Qm=function(){c(this,Yn)&&(c(this,Yn).call(this),F(this,Yn,null)),c(this,bn)&&(c(this,bn).disconnect(),F(this,bn,null)),c(this,xt)&&(c(this,xt).remove(),F(this,xt,null)),F(this,Ot,null)},Rs=function(){if(!c(this,Ot)||!c(this,xt))return;let r=c(this,Oi).insetsPadding,e=c(this,st).container,t=e.clientWidth,n=e.clientHeight,o=Pi(r,t,n),a=c(this,Ot).top,l=a.querySelector("[data-debug-label]");o.top>0?(a.style.height="".concat(o.top,"px"),a.style.display="block",l&&(l.textContent="top: ".concat(Z(this,ie,_o).call(this,r.top,r.type)))):a.style.display="none";let s=c(this,Ot).bottom,u=s.querySelector("[data-debug-label]");o.bottom>0?(s.style.height="".concat(o.bottom,"px"),s.style.display="block",u&&(u.textContent="bottom: ".concat(Z(this,ie,_o).call(this,r.bottom,r.type)))):s.style.display="none";let h=c(this,Ot).left,m=h.querySelector("[data-debug-label]");o.left>0?(h.style.height="",h.style.top="".concat(o.top,"px"),h.style.bottom="".concat(o.bottom,"px"),h.style.width="".concat(o.left,"px"),h.style.display="block",m&&(m.textContent="left: ".concat(Z(this,ie,_o).call(this,r.left,r.type)))):h.style.display="none";let d=c(this,Ot).right,f=d.querySelector("[data-debug-label]");o.right>0?(d.style.height="",d.style.top="".concat(o.top,"px"),d.style.bottom="".concat(o.bottom,"px"),d.style.width="".concat(o.right,"px"),d.style.display="block",f&&(f.textContent="right: ".concat(Z(this,ie,_o).call(this,r.right,r.type)))):d.style.display="none"},_o=function(r,e){return e==="portion"?"".concat((r*100).toFixed(1),"%"):"".concat(r,"px")},A(Gs,Fs,{});var _s=Gs;var Oy=0,Ly=90,Ay=(D.env.NODE_ENV==="test",!1),Bs={linear:Bn.Linear.None,"ease-in":Bn.Quadratic.In,"ease-out":Bn.Quadratic.Out,"ease-in-out":Bn.Quadratic.InOut},Ry=-50,q,oe,br,Lt,Bo,No,gu,Ns=class extends ve{constructor(e,t,n){super();A(this,No);A(this,q);A(this,oe);A(this,br);A(this,Lt);A(this,Bo);F(this,q,e),F(this,oe,t),F(this,br,n),F(this,Lt,new _s(e,this)),c(this,q).map&&c(this,q).map.transform.setMinElevationForCurrentTile(Ry),c(this,oe).cameraSystem.on("pedestal-change",({pedestal:o})=>{var a;c(this,oe).cameraSystem.setCameraPlaneElevation(o),c(this,q).mode==="outdoors-overlay"&&typeof((a=c(this,q).map)==null?void 0:a.setCenterElevation)=="function"&&c(this,q).map.setCenterElevation(c(this,oe).cameraSystem.getPedestal())})}get center(){var e,t;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(t=(e=c(this,q).map).getCenter)==null?void 0:t.call(e).toArray():c(this,oe).cameraSystem.center}setCenter(e){var t;if(c(this,q).mode==="outdoors-overlay"&&c(this,q).map){(t=c(this,q).map)==null||t.setCenter(e),c(this,oe).interactionSystem.handleHover();return}c(this,oe).cameraSystem.setCenter(e[0],e[1]),c(this,oe).interactionSystem.handleHover()}get zoomLevel(){var e;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(e=c(this,q).map)==null?void 0:e.getZoom():c(this,oe).cameraSystem.getZoomLevel()}setZoomLevel(e){var t;c(this,q).mode==="outdoors-overlay"&&c(this,q).map&&((t=c(this,q).map)==null||t.setZoom(e)),c(this,oe).cameraSystem.setZoomLevel(nr(e,this.minZoomLevel,this.maxZoomLevel,"zoomLevel was clamped to minZoomLevel/maxZoomLevel bounds. Use mapView.Camera.setMinZoomLevel() and mapView.Camera.setMaxZoomLevel() to adjust limits."))}getState(){return{zoomLevel:this.zoomLevel,minZoomLevel:this.minZoomLevel,maxZoomLevel:this.maxZoomLevel,minPitch:this.minPitch,maxPitch:this.maxPitch,autoMinZoomLevel:this.autoMinZoomLevel,panMode:this.panMode,screenOffsets:this.insetsPadding,center:this.center,bearing:this.bearing,pitch:this.pitch,elevation:this.elevation}}get isAnimating(){return c(this,oe).cameraSystem.isAnimating}cancelAnimation(){c(this,oe).cameraSystem.cancelAnimation()}get maxZoomLevel(){return c(this,oe).cameraSystem.maxZoomLevel}get minZoomLevel(){return c(this,oe).cameraSystem.minZoomLevel}setAutoMinZoomLevel(e){c(this,oe).panBoundsSystem.autoMinZoomLevel=e,e&&(c(this,oe).panBoundsSystem.dirty=!0,c(this,oe).panBoundsSystem.update())}get autoMinZoomLevel(){return c(this,oe).panBoundsSystem.autoMinZoomLevel}setMinZoomLevel(e,t=!1){var o;t&&this.setAutoMinZoomLevel(!1);let n=nr(e,Xt.MIN_MERCATOR_ZOOM_LEVEL,this.maxZoomLevel,"setMinZoomLevel was clamped. minZoomLevel must be between ".concat(Xt.MIN_MERCATOR_ZOOM_LEVEL," and maxZoomLevel."));c(this,oe).cameraSystem.setMinZoomLevel(n),this.zoomLevel<n&&this.setZoomLevel(n),(o=c(this,q).map)==null||o.setMinZoom(n)}setMaxZoomLevel(e){var n;let t=nr(e,this.minZoomLevel,Xt.MAX_MERCATOR_ZOOM_LEVEL,"setMaxZoomLevel was clamped. maxZoomLevel must be between minZoomLevel and ".concat(Xt.MAX_MERCATOR_ZOOM_LEVEL,"."));c(this,oe).cameraSystem.setMaxZoomLevel(t),this.zoomLevel>t&&this.setZoomLevel(t),(n=c(this,q).map)==null||n.setMaxZoom(t)}get maxPitch(){var e,t;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(t=(e=c(this,q).map)==null?void 0:e.getMaxPitch)==null?void 0:t.call(e):de.radToDeg(c(this,oe).cameraSystem.maxTilt)}get minPitch(){var e,t;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(t=(e=c(this,q).map)==null?void 0:e.getMinPitch)==null?void 0:t.call(e):de.radToDeg(c(this,oe).cameraSystem.minTilt)}setMinPitch(e){var n;let t=Math.max(Oy,e);(n=c(this,q).map)==null||n.setMinPitch(t),c(this,oe).cameraSystem.minTilt=de.degToRad(t)}setMaxPitch(e){var n;let t=Math.min(Ly,e);(n=c(this,q).map)==null||n.setMaxPitch(t),c(this,oe).cameraSystem.maxTilt=de.degToRad(t)}get bearing(){var e;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(e=c(this,q).map)==null?void 0:e.getBearing():de.radToDeg(c(this,oe).cameraSystem.getRotation())}setBearing(e){var t;if(c(this,q).mode==="outdoors-overlay"&&c(this,q).map){(t=c(this,q).map)==null||t.setBearing(e);return}c(this,oe).cameraSystem.setRotation(de.degToRad(e))}get pitch(){var e;return c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(e=c(this,q).map)==null?void 0:e.getPitch():de.radToDeg(c(this,oe).cameraSystem.getTilt())}setPitch(e){var t;if(c(this,q).mode==="outdoors-overlay"&&c(this,q).map){(t=c(this,q).map)==null||t.setPitch(e);return}c(this,oe).cameraSystem.setTilt(de.degToRad(nr(e,this.minPitch,this.maxPitch,"pitch was clamped to minPitch/maxPitch bounds. Use mapView.Camera.setMinPitch() and mapView.Camera.setMaxPitch() to adjust limits.")))}get elevation(){return c(this,oe).cameraSystem.getPedestal()}setElevation(e){c(this,oe).cameraSystem.setPedestal(e,!0)}animateElevation(e,t){return c(this,Bo)&&c(this,Bo).stop(),new Promise(n=>{var o;c(this,oe).cameraSystem.animateCamera({position:{z:e}},(t==null?void 0:t.duration)||300,Bs[(t==null?void 0:t.easing)||"ease-in-out"],n,n,{interruptible:(o=t==null?void 0:t.interruptible)!=null?o:!0})})}get insetsPadding(){return c(this,br).insetsPadding}get panMode(){return c(this,oe).cameraSystem.enablePan===!1&&c(this,oe).cameraSystem.enablePedestal===!0?"elevation":"default"}setPanMode(e){if(e!=="default"&&e!=="elevation")throw new Error("Invalid pan mode");e!==this.panMode&&(e==="default"?(c(this,oe).cameraSystem.enablePan=!0,c(this,oe).cameraSystem.enablePedestal=!1):(c(this,oe).cameraSystem.enablePan=!1,c(this,oe).cameraSystem.enablePedestal=!0))}setInsetPadding(e){let t=c(this,br).insetsPadding;Object.keys(e).every(n=>e[n]===t[n])||(c(this,br).insetsPadding=Object.assign({},t,e),this.publish("padding-change",{padding:c(this,br).insetsPadding}))}animateTo(e){var l,s,u,h,m,d;let t=e.center?c(this,q).convertTo3DMapPosition(e.center[1],e.center[0],e.center[2]||this.elevation):void 0;if(t&&c(this,Lt).setAnimateToPosition(t),c(this,q).mode==="outdoors-overlay"&&c(this,q).map)return(d=c(this,q).map)==null||d.flyTo({center:(l=e.center)!=null?l:this.center,zoom:(s=e.zoomLevel)!=null?s:this.zoomLevel,bearing:(u=e.bearing)!=null?u:this.bearing,pitch:(h=e.pitch)!=null?h:this.pitch,duration:(m=e.duration)!=null?m:600}),Promise.resolve();let n=e.zoomLevel!==void 0?c(this,oe).cameraSystem.convertZoomLevelToAltitude(nr(e.zoomLevel,this.minZoomLevel,this.maxZoomLevel,"zoomLevel was clamped to minZoomLevel/maxZoomLevel bounds. Use mapView.Camera.setMinZoomLevel() and mapView.Camera.setMaxZoomLevel() to adjust limits.")):void 0,o=e.bearing!==void 0?de.degToRad(e.bearing):void 0,a=e.pitch!==void 0?de.degToRad(nr(e.pitch,this.minPitch,this.maxPitch,"pitch was clamped to minPitch/maxPitch bounds. Use mapView.Camera.setMinPitch() and mapView.Camera.setMaxPitch() to adjust limits.")):void 0;return new Promise(f=>{var b;c(this,oe).cameraSystem.animateCamera({position:t,zoom:n,rotation:o,tilt:a},e.duration||0,Bs[e.easing||"ease-in-out"],()=>{c(this,oe).interactionSystem.handleHover(),f()},f,{interruptible:(b=e==null?void 0:e.interruptible)!=null?b:!0})})}getCameraFrameForCoordinates(e,t){let n=Z(this,No,gu).call(this,t||{},()=>Promise.resolve()),{pointCloud:o}=ep(e,c(this,q),c(this,br).geometry3DMap);if(o.length===0)return $.error("No valid coordinates found in targets:",e),{center:this.center,zoomLevel:this.zoomLevel};c(this,Lt).setGetFocusOnTransformPointCloud(o,t==null?void 0:t.debugKey,t==null?void 0:t.debugColor);let{center:a,zoomLevel:l}=c(this,oe).cameraSystem.getCameraFrameForCoordinates(o,n);return{center:c(this,q).convert3DMapPositionToCoordinate(a),zoomLevel:l}}focusOn(e,t){var l,s,u,h;let{pointCloud:n,geoBounds:o,firstPosition:a}=ep(e,c(this,q),c(this,br).geometry3DMap);return n.length===0?($.error("No valid coordinates found in targets:",e),Promise.resolve()):(c(this,Lt).setFocusOnPointCloud(n,t==null?void 0:t.debugKey,t==null?void 0:t.debugColor),c(this,q).mode==="outdoors-overlay"&&c(this,q).map?(n.length===1&&a?(l=c(this,q).map)==null||l.flyTo({center:[a[0],a[1]],duration:(t==null?void 0:t.duration)||c(this,q).map.getBearing(),animate:!0,bearing:(t==null?void 0:t.bearing)===void 0?c(this,q).map.getBearing():t==null?void 0:t.bearing,pitch:(t==null?void 0:t.pitch)===void 0?c(this,q).map.getPitch():t==null?void 0:t.pitch,zoom:(t==null?void 0:t.maxZoomLevel)||c(this,q).map.getMaxZoom()}):(Ay&&_y(c(this,q),o),(h=c(this,q).map)==null||h.fitBounds(o,{duration:(s=t==null?void 0:t.duration)!=null?s:Xt.DEFAULT_ANIMATION_DURATION,bearing:(t==null?void 0:t.bearing)===void 0?c(this,q).map.getBearing():t==null?void 0:t.bearing,pitch:(t==null?void 0:t.pitch)===void 0?c(this,q).map.getPitch():t==null?void 0:t.pitch,maxZoom:(u=t==null?void 0:t.maxZoomLevel)!=null?u:c(this,q).map.getMaxZoom()})),c(this,oe).interactionSystem.handleHover(),Promise.resolve()):new Promise(m=>{c(this,oe).cameraSystem.focusOn(n,Z(this,No,gu).call(this,t||{},m))}))}showCameraTargetsDebug(){c(this,Lt).showCameraTargets()}hideCameraTargetsDebug(){c(this,Lt).hideCameraTargets()}showFocusOnDebug(e){c(this,Lt).showFocusOnDebug(e)}hideFocusOnDebug(){c(this,Lt).hideFocusOnDebug()}showScreenOffsetsDebug(){c(this,Lt).showScreenOffsets()}hideScreenOffsetsDebug(){c(this,Lt).hideScreenOffsets()}destroy(){c(this,Lt).destroy(),super.destroy()}};q=new WeakMap,oe=new WeakMap,br=new WeakMap,Lt=new WeakMap,Bo=new WeakMap,No=new WeakSet,gu=function(e,t){var n;return{minZoom:(e==null?void 0:e.maxZoomLevel)===void 0?void 0:c(this,oe).cameraSystem.convertZoomLevelToAltitude(nr(e.maxZoomLevel,this.minZoomLevel,this.maxZoomLevel,"maxZoomLevel was clamped to minZoomLevel/maxZoomLevel bounds. Use mapView.Camera.setMaxZoomLevel() to adjust limits.")),maxZoom:(e==null?void 0:e.minZoomLevel)===void 0?void 0:c(this,oe).cameraSystem.convertZoomLevelToAltitude(nr(e.minZoomLevel,this.minZoomLevel,this.maxZoomLevel,"minZoomLevel was clamped to minZoomLevel/maxZoomLevel bounds. Use mapView.Camera.setMinZoomLevel() to adjust limits.")),padding:e!=null&&e.padding?Object.assign({},$a,e==null?void 0:e.padding):this.insetsPadding,curve:Bs[(e==null?void 0:e.easing)||"ease-in-out"],rotation:(e==null?void 0:e.bearing)===void 0?void 0:de.degToRad(e.bearing),tilt:(e==null?void 0:e.pitch)!==void 0?de.degToRad(nr(e.pitch,this.minPitch,this.maxPitch,"pitch was clamped to minPitch/maxPitch bounds. Use mapView.Camera.setMinPitch() and mapView.Camera.setMaxPitch() to adjust limits.")):void 0,duration:e==null?void 0:e.duration,callback:()=>{c(this,oe).interactionSystem.handleHover(),t()},cancelledCallback:t,interruptible:(n=e==null?void 0:e.interruptible)!=null?n:!0,verticalPadding:e==null?void 0:e.verticalPadding}};function fu(i,r){i[0]=Math.min(i[0],r[0]),i[1]=Math.min(i[1],r[1]),i[2]=Math.max(i[2],r[0]),i[3]=Math.max(i[3],r[1])}function ep(i,r,e){var l;let t=[],n=[1/0,1/0,-1/0,-1/0],o=null;if(!i||!Array.isArray(i)||i.length===0)return{pointCloud:t,geoBounds:n,firstPosition:o};let a=r.getSystems().renderSystem;for(let s of i)if(typeof s=="string"){(a.threeDdirty||a.twoDdirty)&&r.renderSync();let u=e.get(s);if(!u){$.error("Entity not found with id:",s);continue}let h=new Ve;Od(r,"userData"in u&&(l=u.userData.entityId)!=null?l:u.id,t,h,u instanceof Ne?u.position.z:void 0);let m=r.convert3DMapPositionToCoordinate(h.min),d=r.convert3DMapPositionToCoordinate(h.max);fu(n,m),fu(n,d),o||(o=r.convert3DMapPositionToCoordinate(h.getCenter(new N)))}else t.push(r.convertTo3DMapPosition(s[1],s[0],s[2]||0)),fu(n,s),o||(o=s);return{pointCloud:t,geoBounds:n,firstPosition:o}}function _y(i,r){var t,n,o,a;let e=[[r[0],r[1]],[r[0],r[3]],[r[2],r[3]],[r[2],r[1]],[r[0],r[1]]];(t=i.map)!=null&&t.getLayer("bounds-outline")&&i.map.removeLayer("bounds-outline"),(n=i.map)!=null&&n.getSource("bounds-source")&&i.map.removeSource("bounds-source"),(o=i.map)==null||o.addSource("bounds-source",{type:"geojson",data:{type:"Feature",properties:{},geometry:{type:"LineString",coordinates:e}}}),(a=i.map)==null||a.addLayer({id:"bounds-outline",type:"line",source:"bounds-source",layout:{},paint:{"line-color":"#FF0000","line-width":2,"line-opacity":.8}})}v();v();var tp="uniform vec4 uSize;\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n // Scale the position by the size of the quad\n // and shift to top left corner for 0,0\n vec2 transformed = position.xy * uSize.xy - vec2(1.0, -1.0);\n // Apply width .x and height .y of image\n transformed += vec2(uSize.x, -uSize.y);\n // Apply left .w and top .z offset\n transformed += vec2(uSize.w, -uSize.z) * 2.0;\n gl_Position = vec4(transformed, 1.0, 1.0);\n}";v();var rp="varying vec2 vUv;\nuniform sampler2D uTexture;\nuniform float uOpacity;\nvoid main() {\n #ifndef debug\n vec4 texture = texture2D(uTexture, vUv);\n gl_FragColor = vec4(texture.rgb, texture.a * uOpacity);\n #else\n gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n #endif\n}";v();var np=4.291666666666667,ip=15,op=25,ap=43/60;v();var sp=["horizontal","icon"],Fy=new Map([[sp[0],'<svg viewBox="0 0 206 48">\n <path d="M27.2678 14.2261H22.3187C21.0695 14.2261 20.4695 14.7801 20.4695 15.9852V31.142L10.3966 15.5591C9.69665 14.4784 9.2475 14.2773 7.8475 14.2261H2.97462C1.67462 14.2261 1.07631 14.7801 1.07631 15.9852V44.7665C1.07631 45.9716 1.67462 46.5256 2.97462 46.5256H7.92377C9.22207 46.5256 9.82207 45.9716 9.82207 44.7665V29.6847L19.9441 45.1926C20.695 46.3244 21.095 46.5256 22.4933 46.5256H27.2933C28.5916 46.5256 29.1916 45.9716 29.1916 44.7665V15.9852C29.1407 14.7801 28.5424 14.2261 27.2678 14.2261Z"/>\n <path d="M5.44915 10.9602C8.45863 10.9602 10.8983 8.50669 10.8983 5.48011C10.8983 2.45353 8.45863 0 5.44915 0C2.43967 0 0 2.45353 0 5.48011C0 8.50669 2.43967 10.9602 5.44915 10.9602Z"/>\n <path d="M61.7899 25.0449C63.2306 23.1903 65.078 22.2051 67.556 22.2051C72.0526 22.2051 74.7611 25.3347 74.7611 29.4511V39.2489C74.8187 39.7125 74.5306 39.9443 74.0695 39.9443H72.5136C72.0526 39.9443 71.7645 39.7125 71.8221 39.2489V29.5091C71.8221 27.1909 69.9187 25.2187 67.4984 25.2187C65.1339 25.2187 63.2323 27.1329 63.2323 29.2773V39.2489C63.2899 39.7125 63.0018 39.9443 62.5407 39.9443H60.9831C60.5221 39.9443 60.2916 39.7125 60.2916 39.2489V29.4511C60.2916 27.1329 58.3899 25.2187 56.0255 25.2187C53.7204 25.2187 51.7594 27.075 51.7594 29.2773V39.3068C51.817 39.7705 51.5289 40.0023 51.0102 40.0023H49.5119C49.0509 40.0023 48.7628 39.7705 48.7628 39.3068V23.25C48.7051 22.7864 48.9933 22.4966 49.5119 22.4966H50.9526C51.356 22.4966 51.5289 22.6704 51.5289 23.0182V24.2352C52.7407 22.9602 54.239 22.2648 56.0255 22.2648C58.4475 22.2068 60.3492 23.192 61.7899 25.0466V25.0449ZM77.1255 31.2477C77.1255 26.3216 81.1018 22.2051 86.1187 22.2051C88.539 22.2051 90.6136 23.1903 92.3441 25.1608V23.1903C92.3441 22.7267 92.5746 22.5528 93.0357 22.5528H94.4187C94.8797 22.5528 95.1102 22.7847 95.1102 23.3062V39.3648C95.1102 39.8284 94.8797 40.0602 94.4187 40.0602H93.0357C92.5746 40.0602 92.3441 39.8284 92.3441 39.4227V37.4523C90.6712 39.3648 88.5967 40.35 86.1746 40.35C81.1018 40.2341 77.1238 36.1773 77.1238 31.2477H77.1255ZM92.1136 31.2477C92.1136 27.8284 89.4611 25.2187 86.0594 25.2187C82.7746 25.2187 80.1221 27.8864 80.1221 31.2477C80.1221 34.6687 82.7746 37.2784 86.1187 37.2784C86.9062 37.2789 87.6861 37.1232 88.4138 36.8202C89.1414 36.5173 89.8026 36.0731 90.3593 35.513C90.9161 34.9528 91.3577 34.2878 91.6587 33.556C91.9597 32.8241 92.1143 32.0397 92.1136 31.2477ZM100.992 37.3943V46.3807C101.049 46.8443 100.761 47.1341 100.298 47.1341H98.7424C98.2814 47.1341 97.9933 46.9023 97.9933 46.3807V23.1903C97.9933 22.7267 98.2238 22.4369 98.7424 22.4369H100.183C100.646 22.379 100.934 22.6687 100.934 23.0744V24.9869C102.605 23.0744 104.68 22.1472 107.044 22.1472C112.002 22.1472 116.037 26.2619 116.037 31.1898C116.037 36.1176 112.059 40.2341 107.044 40.2341C104.622 40.2341 102.603 39.3068 100.992 37.3943ZM106.987 25.2187C103.7 25.2187 101.049 27.8864 101.049 31.2477C101.049 34.6687 103.7 37.2784 107.044 37.2784C110.446 37.2784 113.039 34.6108 113.039 31.2477C113.039 27.8864 110.388 25.2187 106.987 25.2187ZM121.11 37.3943V46.3807C121.168 46.8443 120.88 47.1341 120.419 47.1341H118.861C118.4 47.1341 118.112 46.9023 118.112 46.3807V23.1903C118.112 22.7267 118.342 22.4369 118.861 22.4369H120.302C120.764 22.379 121.053 22.6687 121.053 23.0744V24.9869C122.724 23.0744 124.798 22.1472 127.163 22.1472C132.12 22.1472 136.156 26.2619 136.156 31.1898C136.156 36.1176 132.178 40.2341 127.163 40.2341C124.742 40.2341 122.781 39.3068 121.11 37.3943ZM127.105 25.2187C123.819 25.2187 121.168 27.8864 121.168 31.2477C121.168 34.6687 123.819 37.2784 127.163 37.2784C130.564 37.2784 133.158 34.6108 133.158 31.2477C133.158 27.8864 130.507 25.2187 127.107 25.2187H127.105ZM153.97 32.3506H141.054C141.342 35.2483 143.995 37.4523 147.164 37.4523C148.893 37.4523 150.393 37.0466 151.719 36.0597C152.007 35.8858 152.295 35.7699 152.353 35.7699C152.583 35.7699 152.756 35.8858 152.929 36.1773L153.505 37.1625C153.622 37.3364 153.68 37.4523 153.68 37.5682C153.68 37.8 153.507 38.0318 153.103 38.3216C151.258 39.5966 149.183 40.292 146.992 40.292C141.688 40.292 137.883 36.3511 137.883 31.2477C137.883 26.204 141.803 22.2051 146.703 22.2051C151.546 22.2051 154.717 25.7983 154.717 31.0176C154.717 31.5972 154.717 32.3506 153.968 32.3506H153.97ZM141.056 30.0324H151.72C151.432 26.8432 149.473 24.929 146.648 24.929C145.241 24.8904 143.875 25.3995 142.833 26.3501C141.791 27.3007 141.154 28.6194 141.056 30.0307V30.0324ZM156.332 31.2477C156.332 26.3216 160.31 22.2051 165.326 22.2051C167.748 22.2051 169.707 23.1324 171.32 25.0449V16.2324C171.263 15.7687 171.551 15.479 172.012 15.479H173.57C174.031 15.479 174.319 15.7108 174.319 16.2324V39.3068C174.319 39.7705 174.088 40.0023 173.57 40.0023H172.129C171.666 40.0602 171.378 39.7705 171.378 39.3648V37.3943C169.649 39.3068 167.632 40.292 165.268 40.292C160.31 40.2341 156.332 36.1773 156.332 31.2477ZM171.264 31.2477C171.264 27.8284 168.612 25.2187 165.21 25.2187C161.924 25.2187 159.273 27.8864 159.273 31.2477C159.273 34.6687 161.924 37.2784 165.268 37.2784C166.057 37.2838 166.839 37.1316 167.569 36.8304C168.299 36.5292 168.962 36.0852 169.52 35.5241C170.077 34.963 170.519 34.296 170.818 33.5619C171.117 32.8277 171.268 32.0411 171.263 31.2477H171.264ZM177.72 19.0739C177.715 18.8594 177.754 18.646 177.833 18.4468C177.912 18.2476 178.031 18.0667 178.182 17.915C178.333 17.7633 178.512 17.6439 178.71 17.5642C178.909 17.4845 179.121 17.446 179.334 17.4511C179.546 17.4507 179.756 17.4923 179.952 17.5737C180.148 17.6551 180.326 17.7746 180.476 17.9254C180.626 18.0762 180.745 18.2553 180.826 18.4523C180.907 18.6494 180.948 18.8606 180.948 19.0739C180.953 19.2884 180.914 19.5017 180.835 19.7009C180.756 19.9001 180.637 20.081 180.486 20.2327C180.335 20.3845 180.156 20.5038 179.957 20.5835C179.759 20.6633 179.547 20.7017 179.334 20.6966C178.412 20.7545 177.72 20.0591 177.72 19.0739ZM177.836 39.2489V23.1903C177.836 22.7267 178.066 22.4369 178.527 22.4369H180.083C180.544 22.4369 180.832 22.6687 180.775 23.1903V39.2489C180.832 39.7125 180.544 39.9443 180.083 39.9443H178.527C178.066 39.9443 177.836 39.7125 177.836 39.2489ZM186.944 23.0165V24.1756C188.212 22.8426 189.71 22.2051 191.497 22.2051C195.937 22.2051 198.646 25.2767 198.646 29.3932V39.2489C198.703 39.7125 198.415 39.9443 197.954 39.9443H196.398C195.936 39.9443 195.705 39.7125 195.705 39.2489V29.4511C195.705 27.1329 193.803 25.2187 191.439 25.2187C189.134 25.2187 187.175 27.075 187.175 29.2773V39.3068C187.232 39.7705 186.944 40.0023 186.424 40.0023H184.868C184.407 40.0023 184.119 39.7705 184.119 39.3068V23.1903C184.061 22.7267 184.349 22.4949 184.868 22.4949H186.309C186.712 22.4949 186.944 22.6687 186.944 23.0165Z"/>\n <path d="M204 40C205.115 40 206 39.0857 206 38V37.9886C206 36.9029 205.126 36 204 36C202.885 36 202 36.9143 202 38V38.0114C202 39.0971 202.874 40 204 40ZM204 39.7829C202.989 39.7829 202.23 38.9829 202.23 38.0114V38C202.23 37.0286 203 36.2171 204 36.2171C205.011 36.2171 205.77 37.0171 205.77 37.9886V38C205.77 38.9714 205 39.7829 204 39.7829ZM203.218 38.9714H203.609V38.2743H204.034L204.517 38.9714H204.989L204.448 38.2057C204.724 38.1257 204.92 37.92 204.92 37.5886C204.92 37.1657 204.586 36.9486 204.138 36.9486H203.218V38.9714ZM203.609 37.9543V37.2914H204.103C204.368 37.2914 204.517 37.4057 204.517 37.6229C204.517 37.8171 204.368 37.9543 204.103 37.9543H203.609Z"/>\n </svg>'],[sp[1],'<svg viewBox="0 0 43 60">\n <path d="M14.0291 7.06645C14.0291 10.9691 10.8885 14.1329 7.01453 14.1329C3.14051 14.1329 0 10.9691 0 7.06645C0 3.16376 3.14051 0 7.01453 0C10.8885 0 14.0291 3.16376 14.0291 7.06645Z"/>\n <path d="M28.7335 18.3468H35.1045C36.7455 18.3468 37.5178 19.0599 37.5821 20.6158V57.7309C37.5821 59.2868 36.8099 60 35.1367 60H28.9588C27.1569 60 26.642 59.7406 25.6767 58.282L12.6452 38.282V57.7309C12.6452 59.2868 11.8729 60 10.1997 60H3.82873C2.15554 60 1.3833 59.2868 1.3833 57.7309V20.6158C1.3833 19.0599 2.15554 18.3468 3.82873 18.3468H10.1032C11.9051 18.4116 12.4843 18.671 13.3852 20.0648L26.3524 40.162V20.6158C26.3524 19.0599 27.1247 18.3468 28.7335 18.3468Z"/>\n <path d="M41.5 60C42.3362 60 43 59.3143 43 58.5V58.4914C43 57.6771 42.3448 57 41.5 57C40.6638 57 40 57.6857 40 58.5V58.5086C40 59.3229 40.6552 60 41.5 60ZM41.5 59.8371C40.7414 59.8371 40.1724 59.2371 40.1724 58.5086V58.5C40.1724 57.7714 40.75 57.1629 41.5 57.1629C42.2586 57.1629 42.8276 57.7629 42.8276 58.4914V58.5C42.8276 59.2286 42.25 59.8371 41.5 59.8371ZM40.9138 59.2286H41.2069V58.7057H41.5259L41.8879 59.2286H42.2414L41.8362 58.6543C42.0431 58.5943 42.1897 58.44 42.1897 58.1914C42.1897 57.8743 41.9397 57.7114 41.6034 57.7114H40.9138V59.2286ZM41.2069 58.4657V57.9686H41.5776C41.7759 57.9686 41.8879 58.0543 41.8879 58.2171C41.8879 58.3629 41.7759 58.4657 41.5776 58.4657H41.2069Z"/>\n </svg>']]),Gy=/<svg([^>]*)>/g;function lp(i,r,e,t){let n=Fy.get(i);return n?n.replace(Gy,'<svg$1 width="'.concat(e,'" height="').concat(t,'" xmlns="http://www.w3.org/2000/svg" style="fill: ').concat(r,';">')):""}v();var $n=class $n{constructor(){p(this,"loader");this.loader=new Za}static getInstance(){return $n.instance||($n.instance=new $n),$n.instance}getLoader(){return this.loader}load(r){return new Promise((e,t)=>{this.loader.load(r,e,void 0,t)})}};p($n,"instance");var yu=$n,vn=yu.getInstance();var cp=!1,Ie,Nr,Ai,Ke,St,qn,ir,vr,ks=class extends ve{constructor(e,t,n){super();A(this,Ie,{padding:16,scale:1,iconOnly:!1,position:"bottom-left",color:"dark",onClick:()=>{window!=null&&window.open("https://www.mappedin.com")},interactive:!0,visible:!0});A(this,Nr);A(this,Ai);A(this,Ke);A(this,St);A(this,qn);A(this,ir,0);A(this,vr,0);p(this,"dirty",!0);p(this,"getPositionAlignedCanvasCoordinates",(e,t)=>({"top-left":{x:0,y:0},"top-right":{x:e,y:0},"bottom-left":{x:0,y:t},"bottom-right":{x:e,y:t},center:{x:e/2,y:t/2},top:{x:e/2,y:0},bottom:{x:e/2,y:t},left:{x:0,y:t/2},right:{x:e,y:t/2}})[c(this,Ie).position]);p(this,"getPositionAlignedPadding",()=>{var n,o,a,l;let e=c(this,Ie).padding;if(typeof e=="number")return{"top-left":{x:e,y:e},"top-right":{x:-e,y:e},"bottom-left":{x:e,y:-e},"bottom-right":{x:-e,y:-e},center:{x:0,y:0},top:{x:0,y:e},bottom:{x:0,y:-e},left:{x:e,y:0},right:{x:-e,y:0}}[c(this,Ie).position];let t={top:(n=e.top)!=null?n:0,right:(o=e.right)!=null?o:0,bottom:(a=e.bottom)!=null?a:0,left:(l=e.left)!=null?l:0};return{x:t.left-t.right,y:t.top-t.bottom}});n&&Object.entries(n).forEach(([o,a])=>{a!==void 0&&(c(this,Ie)[o]=a)}),F(this,Ai,e),F(this,Nr,t)}get color(){return c(this,Ie).color==="light"?"white":"#293136"}get iconName(){return c(this,Ie).iconOnly?"icon":"horizontal"}get minWidth(){return c(this,Ie).iconOnly?ip:75}get defaultWidth(){return c(this,Ie).iconOnly?op:150}get aspectRatio(){return c(this,Ie).iconOnly?ap:np}get options(){return X({},c(this,Ie))}set options(e){var t,n;F(this,Ie,{padding:e.padding||c(this,Ie).padding,position:e.position||c(this,Ie).position,iconOnly:e.iconOnly||c(this,Ie).iconOnly,color:e.color||c(this,Ie).color,scale:e.scale||c(this,Ie).scale,onClick:c(this,Ie).onClick,interactive:(t=e.interactive)!=null?t:c(this,Ie).interactive,visible:(n=e.visible)!=null?n:c(this,Ie).visible})}get icon(){return lp(this.iconName,this.color,c(this,ir)*c(this,Nr).pixelRatio,c(this,vr)*c(this,Nr).pixelRatio)}setSize(e,t){c(this,St)&&(c(this,St).uniforms.uSize.value.x=e,c(this,St).uniforms.uSize.value.y=t)}setXY(e,t){c(this,St)&&(c(this,St).uniforms.uSize.value.w=e,c(this,St).uniforms.uSize.value.z=t)}get width(){return c(this,ir)}get height(){return c(this,vr)}getPositionAlignedOffset(e,t){return{"top-left":{x:0,y:0},"top-right":{x:-e,y:0},"bottom-left":{x:0,y:-t},"bottom-right":{x:-e,y:-t},center:{x:-(e/2),y:-(t/2)},top:{x:-(e/2),y:0},bottom:{x:-(e/2),y:-t},left:{x:0,y:-(t/2)},right:{x:-e,y:-(t/2)}}[c(this,Ie).position]}insertIntoQuadTree(e){c(this,qn)!=null&&typeof c(this,Ie).onClick=="function"&&c(this,Ie).interactive&&e.insert(c(this,qn))}resize(e,t){if(c(this,Ie).visible!==!0)return;let n=this.getPositionAlignedCanvasCoordinates(e,t),o=this.getPositionAlignedPadding(),a=this.getPositionAlignedOffset(c(this,ir),c(this,vr)),l=Math.min(e-c(this,ir),Math.max(0,n.x+o.x+a.x)),s=Math.min(t-c(this,vr),Math.max(0,n.y+o.y+a.y));this.setSize(c(this,ir)/e,c(this,vr)/t),this.setXY(l/e,s/t),F(this,qn,new ln(l,s,c(this,ir),c(this,vr),{entityId:"watermark"}))}update(){this.dirty&&(c(this,Ie).visible===!0?(F(this,ir,Math.min(c(this,Nr).canvasWidth,Math.max(this.minWidth,this.defaultWidth*c(this,Ie).scale))),F(this,vr,c(this,ir)/this.aspectRatio),vn.getLoader().load("data:image/svg+xml;base64,".concat(btoa(this.icon)),e=>{if(F(this,St,new jt({uniforms:{uTexture:{value:e},uSize:{value:new nd(0,0,0,0)},uOpacity:{value:.7}},vertexShader:tp,fragmentShader:rp,depthWrite:!1,depthTest:!1,defines:{debug:cp},wireframe:cp,transparent:!0,visible:!0})),c(this,Ke))c(this,Ke).visible=!0,c(this,Ke).material=c(this,St),c(this,Ke).material.needsUpdate=!0;else{let t=new bt(2,2,1,1);F(this,Ke,new me(t,c(this,St))),c(this,Ke).position.set(0,0,-1),c(this,Ke).frustumCulled=!1,c(this,Ke).renderOrder=999;let n=new nn(1,1,1),o=new me(n,new dt({transparent:!0,opacity:0,depthTest:!1,depthWrite:!1}));o.frustumCulled=!1,o.layers.set(1),c(this,Ke).add(o),c(this,Ai).add(c(this,Ke))}this.resize(c(this,Nr).canvasWidth,c(this,Nr).canvasHeight),this.publish("texture-loaded")})):c(this,Ke)&&(c(this,Ke).visible=!1),this.dirty=!1)}destroy(){c(this,Ke)&&(c(this,Ai).remove(c(this,Ke)),at(c(this,Ke))),F(this,Ke,void 0),c(this,St)&&c(this,St).dispose(),F(this,St,void 0),F(this,qn,void 0)}};Ie=new WeakMap,Nr=new WeakMap,Ai=new WeakMap,Ke=new WeakMap,St=new WeakMap,qn=new WeakMap,ir=new WeakMap,vr=new WeakMap;v();var zs=100,ky=!1,Hs=class extends ve{constructor(e,t){super();p(this,"currentTotalBoundingBox");p(this,"state");p(this,"cameraSystem");p(this,"debugMesh",null);p(this,"dirty",!0);p(this,"autoMinZoomLevel",!0);this.state=e,this.cameraSystem=t}expandBoundsIfOutside(e){if(this.currentTotalBoundingBox==null){this.dirty=!0;return}this.currentTotalBoundingBox.containsPoint(e)||(this.dirty=!0)}update(){if(this.dirty){this.currentTotalBoundingBox==null&&(this.currentTotalBoundingBox=new Ve,this.state.geometryScene.children.length===0?this.currentTotalBoundingBox.setFromCenterAndSize(new N(0,0,0),new N(zs*2,zs*2,0)):(this.currentTotalBoundingBox.setFromObject(this.state.geometryScene),this.currentTotalBoundingBox.expandByScalar(zs)));let e=new Ve().setFromObject(this.state.geometryScene);this.currentTotalBoundingBox.union(e);let t=e.getSize(new N),n=Math.max(t.x,t.y,t.z);for(let a of this.state.geometry2DMap.values())a.positionDirty===!0&&(this.currentTotalBoundingBox.expandByPoint(a.position),a.positionDirty=!1);let o=Us.copy(this.currentTotalBoundingBox).expandByScalar(Math.max(n,zs)).getBoundingSphere(zy).radius;if(this.cameraSystem.panBounds={center:this.currentTotalBoundingBox.getCenter(new N),min:Us.min,max:Us.max,radius:o},this.publish("update"),this.cameraSystem.dirty=!0,this.dirty=!1,ky&&this.state.geometryScene.parent instanceof Lr){this.debugMesh&&(this.state.geometryScene.parent.remove(this.debugMesh),this.debugMesh=null),this.debugMesh=new Tt,this.debugMesh.add(new me(new Mi(this.cameraSystem.panBounds.radius),new dt({color:16711680,transparent:!0,opacity:.2}))),this.debugMesh.position.copy(this.cameraSystem.panBounds.center),this.state.geometryScene.parent.add(this.debugMesh);let a=new N;Us.getSize(a);let l=new nn(a.x,a.y,a.z),s=new dt({color:65280,wireframe:!0,transparent:!0,opacity:.5}),u=new me(l,s);u.position.copy(this.currentTotalBoundingBox.getCenter(new N)),this.debugMesh.add(u)}}}},Us=new Ve,zy=new id;v();var bu="\xA9 Mappedin",Uy="https://info.mappedin.com/feedback",xu=["top-left","top-right","bottom-left","bottom-right"],Hy=640,Vy=()=>"<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' fill-rule='evenodd' viewBox='0 0 20 20'>\n <circle cx='10' cy='10' r='5.9' style='fill:rgba(255,255,255,1);'/>\n <path style='fill:rgba(0,0,0,0.7);' d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/>\n </svg>",vu={custom:[],position:"bottom-right",feedback:!0},Ri,Vs=class{constructor(r,e={}){p(this,"controlContainerEl");p(this,"controlPositions");p(this,"compact");A(this,Ri);p(this,"attribContainerEl");p(this,"attribInnerEl");p(this,"attribButtonEl");p(this,"feedbackLinkEl");p(this,"attribHTML",bu);p(this,"customAttributions",[]);p(this,"toggleAttribution",r=>{this.attribContainerEl!=null&&(r.preventDefault(),this.attribContainerEl.classList.contains("mappedin-compact")&&(this.attribContainerEl.classList.contains("mappedin-compact-show")?(this.attribContainerEl.removeAttribute("open"),this.attribContainerEl.classList.remove("mappedin-compact-show")):(this.attribContainerEl.classList.add("mappedin-compact-show"),this.attribContainerEl.setAttribute("open",""))))});F(this,Ri,!!e.outdoorEnabled),this.controlContainerEl=document.createElement("div"),this.controlContainerEl.classList.add("mappedin-control-container"),r.appendChild(this.controlContainerEl),this.controlPositions=xu.reduce((t,n)=>{let o=document.createElement("div");return o.classList.add("mappedin-ctrl-".concat(n)),this.controlContainerEl.appendChild(o),t[n]=o,t},{})}addAttributionControl(r=vu){var n;let e=r.position&&xu.includes(r.position)?r.position:vu.position;this.attribContainerEl=document.createElement("details"),this.attribContainerEl.classList.add("mappedin-ctrl-attrib","mappedin-ctrl-attrib-".concat(e)),this.attribContainerEl.open=!0,this.attribContainerEl.ariaLabel="Attribution",this.controlPositions[e].appendChild(this.attribContainerEl),this.attribButtonEl=document.createElement("summary"),this.attribButtonEl.addEventListener("click",this.toggleAttribution),this.attribButtonEl.classList.add("mappedin-ctrl-attrib-button"),this.attribButtonEl.title="Toggle attribution",this.attribButtonEl.ariaLabel="Toggle attribution",this.attribButtonEl.tabIndex=0,this.attribButtonEl.innerHTML=Vy(),this.attribContainerEl.appendChild(this.attribButtonEl),this.attribInnerEl=document.createElement("div"),this.attribInnerEl.classList.add("mappedin-ctrl-attrib-inner"),this.attribHTML=c(this,Ri)?bu:"",this.attribInnerEl.innerHTML=this.attribHTML,this.attribContainerEl.appendChild(this.attribInnerEl),((n=r.feedback)!=null?n:vu.feedback)&&(this.feedbackLinkEl=document.createElement("a"),this.feedbackLinkEl.href=Uy,this.feedbackLinkEl.target="_blank",this.feedbackLinkEl.rel="noopener",this.feedbackLinkEl.textContent="Provide Feedback",this.feedbackLinkEl.classList.add("mappedin-ctrl-attrib-inner"),this.feedbackLinkEl.classList.add("mappedin-ctrl-attrib-inner-bold"),this.attribContainerEl.appendChild(this.feedbackLinkEl)),r.custom&&(this.customAttributions=r.custom),this.updateAttributionDisplay()}updateAttribution(r){if(!r.style||!this.attribInnerEl||!this.attribContainerEl)return;let e=c(this,Ri)?[bu]:[],t=r.style.sourceCaches;for(let n in t){let o=t[n];if(o.used||o.usedForTerrain){let a=o.getSource();a.attribution&&e.indexOf(a.attribution)<0&&e.push(a.attribution)}}e=e.filter(n=>String(n).trim()),e=e.filter((n,o)=>{for(let a=o+1;a<e.length;a++)if(e[a].indexOf(n)>=0)return!1;return!0}),this.attribHTML=e.join(" "),this.updateAttributionDisplay()}updateAttributionDisplay(){let r=[...new Set([this.attribHTML,...this.customAttributions])].filter(Boolean).join(" ");this.attribInnerEl&&(this.attribInnerEl.innerHTML=r)}resizeAttribution(r){this.attribContainerEl&&(r<=Hy||this.compact?this.compact===!1?this.attribContainerEl.setAttribute("open",""):!this.attribContainerEl.classList.contains("mappedin-compact")&&!this.attribContainerEl.classList.contains("mappedin-attrib-empty")&&(this.attribContainerEl.setAttribute("open",""),this.attribContainerEl.classList.add("mappedin-compact","mappedin-compact-show")):(this.attribContainerEl.setAttribute("open",""),this.attribContainerEl.classList.contains("mappedin-compact")&&this.attribContainerEl.classList.remove("mappedin-compact","mappedin-compact-show")))}destroyAttributionControl(){this.attribButtonEl&&this.attribButtonEl.removeEventListener("click",this.toggleAttribution),this.attribContainerEl&&(this.attribContainerEl.remove(),this.attribContainerEl=void 0,this.attribInnerEl=void 0,this.attribButtonEl=void 0)}resize(r){this.resizeAttribution(r)}updateData(r){this.updateAttribution(r)}destroy(){this.destroyAttributionControl(),this.controlContainerEl.remove(),this.compact=void 0}};Ri=new WeakMap;v();var ko,zo,_i=class{constructor(r,e){p(this,"mesh");p(this,"type","custom-geometry");p(this,"dirty",!0);p(this,"feature");p(this,"builder");p(this,"outline");A(this,ko,1);p(this,"color",new le);A(this,zo,0);this.mesh=new Bt,this.feature=r,this.builder=e}get visible(){return this.mesh.visible}set visible(r){this.mesh.visible=r}set opacity(r){F(this,ko,r)}get opacity(){return c(this,ko)}setColor(r){this.color.set(r)}get position(){var r;return(r=this.mesh)==null?void 0:r.position}get altitude(){return c(this,zo)}set altitude(r){this.mesh&&(this.mesh.position.z=r,F(this,zo,r))}get renderOrder(){return this.mesh?this.mesh.renderOrder:0}set renderOrder(r){this.mesh&&(this.mesh.renderOrder=r)}};ko=new WeakMap,zo=new WeakMap;v();var Ws=class{constructor(r,e){p(this,"state");p(this,"convertTo3DMapPosition");this.state=r,this.convertTo3DMapPosition=e}update(){let r,e;for(let t of this.state.geometry3DsInScene)(t==null?void 0:t.type)==="custom-geometry"&&(r=t.components[0],e=t.components[1],r.dirty&&e.visible!==!1&&(r.position.copy(this.convertTo3DMapPosition(r.feature.geometry.coordinates[1],r.feature.geometry.coordinates[0],e.altitude)),r.builder.setup(r.mesh),r.mesh.traverse(n=>{n.userData=De(X({},n.userData),{entityId:t.id,type:"custom-geometry"})}),r.dirty=!1),e.visible!==!1&&r.builder.update(r.mesh))}};v();v();function Uo(i){return i.children.some(r=>r.userData.isOutline)}function up(i){return i.children.find(r=>r.userData.isOutline)}function Ho(i,r){var t;let e=i.userData.entities3D.values().next().value;return e?((t=r.geometry3DMap.get(e))==null?void 0:t.components[3])!==void 0:!1}function hp(i,r,e,t,n){let a=i.getAttribute("position").array,l=1/0,s=-1/0;for(let h=0;h<r.count;h++){let d=(r.start+h)*3,f=a[d+2];l=Math.min(l,f),s=Math.max(s,f)}let u=s-l;if(!n||n.thickness===0||u===0)for(let h=0;h<r.count;h++){let d=(r.start+h)*3,f=a[d+2];Math.abs(f-s)<1e-4?a[d+2]=Math.max(e+t,2e-4+t):a[d+2]=t}else{let h=n.thickness,m=l+h,d=l+h,f=s-h,b=s-h,x=t-h,y=t,g=t,S=t+e,M=t+e,E=t+e+h;for(let w=0;w<r.count;w++){let L=(r.start+w)*3,T=a[L+2],C;if(T<=m){let R=h>0?(T-l)/h:0;C=x+R*(y-x)}else if(T>=b){let R=h>0?(T-b)/h:0;C=M+R*(E-M)}else{let R=f-d,O=R>0?(T-d)/R:0;C=g+O*(S-g)}a[L+2]=C}}i.attributes.position.needsUpdate=!0}v();v();var dp="// Modified from https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib/linedashed.glsl.js\nuniform float scale;\nattribute float lineDistance;\n\nvarying float vLineDistance;\nattribute float visibility;\nvarying vec4 v_color;\nvarying vec4 vWorldPosition;\n\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\nvoid main() {\n\n vLineDistance = scale * lineDistance;\n v_color = color;\n\n #include <uv_vertex>\n #include <color_vertex>\n #include <morphinstance_vertex>\n #include <morphcolor_vertex>\n #include <begin_vertex>\n #include <morphtarget_vertex>\n #include <project_vertex>\n vWorldPosition = modelMatrix * vec4(transformed, 1.0);\n if (visibility < 0.5) {\n gl_Position = vec4(-2.0, -2.0, -2.0, 1.0);\n }\n #include <logdepthbuf_vertex>\n #include <clipping_planes_vertex>\n #include <fog_vertex>\n\n}";v();var mp="// Modified from https://github.com/mrdoob/three.js/blob/dev/src/renderers/shaders/ShaderLib/linedashed.glsl.js\nuniform vec3 diffuse;\nuniform float opacity;\n\nuniform float dashSize;\nuniform float totalSize;\n\nuniform float effectStart;\nuniform float effectDistance;\nuniform float darkenAmount;\nuniform float darkenUseDepth;\nuniform float desaturateAmount;\nuniform float desaturateUseDepth;\nuniform float washOutAmount;\nuniform float washOutUseDepth;\n\nvarying float vLineDistance;\nvarying vec4 v_color;\nvarying vec4 vWorldPosition;\n\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvoid main() {\n\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include <clipping_planes_fragment>\n\n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n\n discard;\n\n }\n\n vec3 outgoingLight = vec3( 0.0 );\n\n #include <logdepthbuf_fragment>\n #include <map_fragment>\n #include <color_fragment>\n\n outgoingLight = diffuseColor.rgb; // simple shader\n\n #include <opaque_fragment>\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n #include <fog_fragment>\n #include <premultiplied_alpha_fragment>\n\n // Depth-based visual effects (mirrors batched-lambert-fragment-with-shadows.glsl)\n if(effectDistance > 0.0) {\n float t = clamp((effectStart - vWorldPosition.z) / effectDistance, 0.0, 1.0);\n float fade = pow(t, 0.65) * 0.9;\n\n // Desaturate towards grayscale\n float luma = dot(gl_FragColor.rgb, vec3(0.299, 0.587, 0.114));\n float dsFade = desaturateUseDepth > 0.5 ? fade : 1.0;\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(luma), desaturateAmount * dsFade);\n\n // Darken towards #333333\n float dkFade = darkenUseDepth > 0.5 ? fade : 1.0;\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(0.2), darkenAmount * dkFade);\n\n // Wash out towards white\n float woFade = washOutUseDepth > 0.5 ? fade : 1.0;\n gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(1.0), washOutAmount * woFade);\n }\n\n // Discard alpha lower than 0.01 to avoid opacity fighting\n if (v_color.a <= 0.01) { \n discard;\n }\n}\n";var Vo=class extends bi{constructor(e){super(e);p(this,"effectUniforms",{effectStart:{value:0},effectDistance:{value:0},darkenAmount:{value:0},darkenUseDepth:{value:1},desaturateAmount:{value:0},desaturateUseDepth:{value:1},washOutAmount:{value:0},washOutUseDepth:{value:0}});this.onBeforeCompile=t=>{t.vertexShader=dp,t.fragmentShader=mp;let n=this.effectUniforms.effectStart,o=this.effectUniforms.effectDistance,a=this.effectUniforms.darkenAmount,l=this.effectUniforms.darkenUseDepth,s=this.effectUniforms.desaturateAmount,u=this.effectUniforms.desaturateUseDepth,h=this.effectUniforms.washOutAmount,m=this.effectUniforms.washOutUseDepth;this.effectUniforms=t.uniforms,Object.assign(this.effectUniforms,{effectStart:n,effectDistance:o,darkenAmount:a,darkenUseDepth:l,desaturateAmount:s,desaturateUseDepth:u,washOutAmount:h,washOutUseDepth:m})}}setEffectRange(e,t){this.effectUniforms.effectStart.value=e,this.effectUniforms.effectDistance.value=t}getEffectRange(){return{start:this.effectUniforms.effectStart.value,distance:this.effectUniforms.effectDistance.value}}setVisualEffect(e,t,n,o,a,l){this.effectUniforms.darkenAmount.value=e,this.effectUniforms.darkenUseDepth.value=t?1:0,this.effectUniforms.desaturateAmount.value=n,this.effectUniforms.desaturateUseDepth.value=o?1:0,this.effectUniforms.washOutAmount.value=a,this.effectUniforms.washOutUseDepth.value=l?1:0}getVisualEffect(){return{darkenAmount:this.effectUniforms.darkenAmount.value,darkenUseDepth:this.effectUniforms.darkenUseDepth.value,desaturateAmount:this.effectUniforms.desaturateAmount.value,desaturateUseDepth:this.effectUniforms.desaturateUseDepth.value,washOutAmount:this.effectUniforms.washOutAmount.value,washOutUseDepth:this.effectUniforms.washOutUseDepth.value}}};v();var or,Jn,xn,Sn,Wo,Su,Kn=class{constructor(){A(this,Wo);A(this,or,[]);A(this,Jn,!1);A(this,xn);A(this,Sn)}get size(){return c(this,or).length}add(r){c(this,or).push(r),c(this,Jn)||Z(this,Wo,Su).call(this)}onComplete(r){F(this,xn,r)}clearOnComplete(){F(this,xn,void 0)}clearAll(){F(this,or,[]),F(this,Jn,!1),F(this,xn,void 0),c(this,Sn)!==void 0&&(cancelIdleCallback(c(this,Sn)),F(this,Sn,void 0))}};or=new WeakMap,Jn=new WeakMap,xn=new WeakMap,Sn=new WeakMap,Wo=new WeakSet,Su=function(){F(this,Jn,!0),F(this,Sn,requestIdleCallback(r=>{let e=0;for(;c(this,or).length>0&&r.timeRemaining()>2;){let t=c(this,or).shift();t&&(t(),e++)}if(e===0&&c(this,or).length>0&&r.timeRemaining()<2){let t=c(this,or).shift();t&&t()}F(this,Sn,void 0),c(this,or).length>0?Z(this,Wo,Su).call(this):(F(this,Jn,!1),c(this,xn)&&c(this,xn).call(this))},{timeout:3e3}))};var Xy=80,Qn,Fi,Zs,Xs,js=class extends ve{constructor(e,t){var n;super();p(this,"rendererState");p(this,"maxOpacity");p(this,"outlineOpacitiesDirty",!0);p(this,"useIdleFramesOnly",!0);A(this,Qn,!0);A(this,Fi,-1/0);p(this,"idleBuildQueue",new Kn);p(this,"idleComputeBoundingSphereQueue",new Kn);A(this,Zs,new Map);A(this,Xs,()=>{this.publish("needs-render")});this.rendererState=e,this.maxOpacity=(n=t==null?void 0:t.maxOpacity)!=null?n:1,this.idleBuildQueue.onComplete(c(this,Xs))}get geometries3DDirty(){return c(this,Qn)}set geometries3DDirty(e){F(this,Qn,e)}buildOutlines(e){var d;let t=[];for(let f of e.userData.entities3D.values()){let b=this.rendererState.geometry3DMap.get(f);if(b instanceof Pe&&b.type==="geometry"&&b.components[3]&&b.components[3].dirty===!0&&b.components[0].material!=null){let x=b.components[0].geometry,y=!1;x||(x=go(b.components[0]),y=!0);let g=b.components[1];t.push([b.components[3],new ja(x,(d=g.bevel)!=null&&d.enabled?1:Xy)]),y&&(x==null||x.dispose(),x=void 0)}}if(t.length===0)return;let n=Zt(t.map(f=>f[1]),!1);if(n==null)return;let o=n.getAttribute("position"),a=new Float32Array(o.count*4),l=new Dt(a,4);n.setAttribute("color",l);let s=new Uint8Array(o.count);s.fill(0);let u=new Dt(s,1,!1);n.setAttribute("visibility",u);let h=0;for(let f=0;f<t.length;f++){let[b,x]=t[f],y=x.getAttribute("position").count;b.edgeColors=l,b.edgeVisibility=u,b.geometry=n,b.ranges={count:y,start:h},h+=y,x.dispose()}let m=new on(n,new Vo({vertexColors:!0,linewidth:1,transparent:!0,opacity:1,side:za}));m.userData.isOutline=!0,e.add(m)}update(e,t=!0){var o;if(this.geometries3DDirty){for(let a of this.rendererState.geometry3DsInScene)a.type==="batched-geometry-group"&&Ho(a,this.rendererState)&&!Uo(a)&&a.userData.entities3D.size>0&&(this.useIdleFramesOnly?this.idleBuildQueue.add(()=>this.buildOutlines(a)):this.buildOutlines(a));F(this,Qn,!1),this.outlineOpacitiesDirty=!0}for(let a of this.rendererState.geometry3DsInScene)if(a.type==="geometry"&&a.components[3]&&a.components[3].dirty===!0&&a.components[0].material!=null&&a.parentObject3D instanceof mt){let l=a.components[3].geometry;if(!l)continue;let s=a.components[3];if(!s)continue;let u=s.enabled&&a.components[1].visible;if(s.visible!==u&&(s.visible=u),!s.visible)continue;let h=s.edgeColors;if(!h||!s.ranges)continue;let m=new le(s.color);for(let x=0;x<s.ranges.count;x++){let y=s.ranges.start+x;h.setXYZ(y,m.r,m.g,m.b)}let d=a.components[1].height,f=a.components[1].altitude,b=(o=a.components[1])==null?void 0:o.bevel;hp(l,s.ranges,d,f,b),l.attributes.color.needsUpdate=!0,this.idleComputeBoundingSphereQueue.add(()=>l.computeBoundingSphere()),s.dirty=!1}else if(a.type==="batched-geometry-group"&&Uo(a)){let l=up(a);if(!l)continue;let s=l.material;if(!(s instanceof Vo))continue;let u;for(let d of a.userData.entities3D.values()){u=d;break}if(u==null)continue;let h=this.rendererState.geometry3DMap.get(u);if(!h||h.type!=="geometry")continue;let m=h.components[1];s.setEffectRange(m.effectStart,m.effectDistance),s.setVisualEffect(m.darkenAmount,m.darkenUseDepth,m.desaturateAmount,m.desaturateUseDepth,m.washOutAmount,m.washOutUseDepth)}let n=t?wc(e,16,19,0,this.maxOpacity):c(this,Fi);if((n!==c(this,Fi)||this.outlineOpacitiesDirty)&&this.rendererState.geometry3DsInScene.size>0){for(let a of this.rendererState.geometry3DsInScene)if(a.type==="geometry"&&a.components[0]instanceof Je){let l=a.components[3];if(l&&l.edgeColors&&l.geometry&&l.visible){let s=Math.min(n,a.components[1].opacity*wi(a));if(l.currentOpacity!==s){for(let u=0;u<l.ranges.count;u++){let h=l.ranges.start+u;l.edgeColors.setW(h,s)}l.geometry.attributes.color.needsUpdate=!0}}}}F(this,Fi,n),F(this,Qn,!1),this.outlineOpacitiesDirty=!1}destroy(){c(this,Zs).clear(),this.idleBuildQueue.clearAll(),this.idleComputeBoundingSphereQueue.clearAll()}};Qn=new WeakMap,Fi=new WeakMap,Zs=new WeakMap,Xs=new WeakMap;v();v();import{z as At}from"zod";var Ys=class extends me{constructor(){super(...arguments);p(this,"userData",{entityId:""})}},Yy=At.object({flipImageToFaceCamera:At.boolean().optional(),url:At.string(),maxImageSize:At.number().positive().optional()}),$y=At.object({type:At.enum(["Feature"]),properties:At.object({width:At.number(),height:At.number(),rotation:At.number().min(0).max(360).optional(),verticalOffset:At.number().optional()}),geometry:Di});function pp(i,r,e){At.union([At.number(),At.string()]).parse(i),$y.parse(r),Yy.parse(e)}var $s=class{constructor(r){p(this,"mesh",new Bt);p(this,"imageMesh");p(this,"outline");p(this,"type","image");p(this,"instanceIndex",-1);p(this,"geometry");p(this,"material");p(this,"feature");p(this,"position",new N);this.feature=r}get visible(){var r,e;return(e=(r=this.mesh)==null?void 0:r.visible)!=null?e:!1}set visible(r){this.mesh&&(this.mesh.visible=r)}};v();function Mu(i,r){return{x:i.x*Math.cos(r)-i.y*Math.sin(r),y:i.x*Math.sin(r)+i.y*Math.cos(r)}}function qy(i,r){return i.map(e=>Mu(e,r))}function Jy(i){let r=1/0,e=1/0,t=-1/0,n=-1/0;for(let o of i)r=Math.min(r,o.x),e=Math.min(e,o.y),t=Math.max(t,o.x),n=Math.max(n,o.y);return{minX:r,minY:e,maxX:t,maxY:n}}function Ky(i,r){let e=!1;for(let t=0,n=r.length-1;t<r.length;n=t++){let o=r[t].x,a=r[t].y,l=r[n].x,s=r[n].y;a>i.y!=s>i.y&&i.x<(l-o)*(i.y-a)/(s-a)+o&&(e=!e)}return e}function fp(i,r,e,t,n){for(let o=0;o<n;o++)for(let a=0;a<t;a++)if(i[e+o][r+a]!==1)return!1;return!0}function Qy(i,r,e){let t=i.maxX-i.minX,n=i.maxY-i.minY,o,a,l=X({},i);return t/n>r?(a=n/e,o=a*r,l.minX+=(t-o*e)/2):(o=t/e,a=o/r,l.minY+=(n-a*e)/2),{dx:o,dy:a,gridBounds:l}}function eb(i,r,e,t,n){let o=Array(e).fill(0).map(()=>Array(e).fill(0));for(let a=0;a<e;a++)for(let l=0;l<e;l++){let s={x:r.minX+l*t,y:r.minY+a*n};Ky(s,i)&&(o[a][l]=1)}return o}function tb(i,r){let e=Array(r).fill(0).map(()=>Array(r).fill(0));for(let t=0;t<r;t++)for(let n=0;n<r;n++)if(i[t][n]===1){let o=0;for(let a=1;a<=Math.min(r-n,r-t)&&fp(i,n,t,a,a);a++)o=a;e[t][n]=o}return e}function rb(i,r,e,t,n,o){let a=0,l=0,s=0;for(let u=0;u<t;u++)for(let h=0;h<t;h++)if(i[u][h]===1){let m=Math.pow(r[u][h],2),d=e.minX+h*n,f=e.minY+u*o;a+=m,l+=d*m,s+=f*m}return{x:l/a,y:s/a}}function nb(i,r,e,t,n,o,a){let l=-1/0,s=null,u=i.length,h=Math.sqrt(Math.pow(r.maxX-r.minX,2)+Math.pow(r.maxY-r.minY,2));for(let m=0;m<u;m++)for(let d=0;d<u;d++)if(i[m][d]===1)for(let f=1;f<=u-d;f++){let b=f;if(!(b>u-m)&&fp(i,d,m,f,b)){let x=f*b,y=r.minX+(d+f/2)*e,g=r.minY+(m+b/2)*t,S={x:y,y:g},E=Math.sqrt(Math.pow(S.x-n.x,2)+Math.pow(S.y-n.y,2))/h,w=x*(1-o)-E*o*x;w>l&&(l=w,s={center:S,width:f*e*a,height:f*t*a})}}return s}function Eu(i,r,e,t={}){let{scaleFactor:n=.9,centerPriority:o=.5,resolution:a=100,minimumSizeRatio:l=.5}=t,s=Fr(e),u=i.width/i.height,h=qy(r,s),m=Jy(h),{dx:d,dy:f,gridBounds:b}=Qy(m,u,a),x=eb(h,b,a,d,f),y=tb(x,a),g=rb(x,y,b,a,d,f),S=nb(x,b,d,f,g,o,n);return!S||S.width<i.width*l||S.height<i.height*l?i:De(X({},S),{center:Mu(S.center,-s),rotation:e,polygonCenter:Mu(g,-s)})}v();var Mt={HIGH:1,MEDIUM:.5,LOW:.25,VERY_LOW:.125},ar={[Mt.HIGH]:2048,[Mt.MEDIUM]:1024,[Mt.LOW]:512,[Mt.VERY_LOW]:256},gp={[ar[Mt.HIGH]]:65280,[ar[Mt.MEDIUM]]:16776960,[ar[Mt.LOW]]:16753920,[ar[Mt.VERY_LOW]]:16711680},qs={HIGH:50,MEDIUM:100,LOW:250},yp="https://resize-worker.mappedin.com",bp=["cdn.mappedin.com","cdn.eu.mappedin.com"],Cu=["resize-worker.mappedin.com","resize-worker-staging.mappedin.net"],wu=.01,Js=1024;v();function jo(i){try{let e=new URL(i).hostname;return bp.includes(e)||Cu.includes(e)}catch(r){return!1}}function ib(i){try{let r=new URL(i);return Cu.includes(r.hostname)}catch(r){return!1}}function vp(i,r){return ib(i)?i.replace(/\/resize:fit:\d+:\d+:(\d+)\//,"/resize:fit:".concat(r,":").concat(r,":$1/")):"".concat(yp,"/resize:fit:").concat(r,":").concat(r,":0/plain/").concat(i)}function Zo(i){return i<=qs.HIGH?ar[Mt.HIGH]:i<=qs.MEDIUM?ar[Mt.MEDIUM]:i<=qs.LOW?ar[Mt.LOW]:ar[Mt.VERY_LOW]}function Xo(i,r){return jo(i)?i:"".concat(i,"|").concat(r!=null?r:Js)}function Ks(i,r){i.color=new le(16777215),i.emissive=new le(gp[r]),i.emissiveIntensity=.5,i.needsUpdate=!0}function Qs(i){i.color=new le(16777215),i.emissive=new le(0),i.emissiveIntensity=0,i.needsUpdate=!0}var Yo=Math.PI*2,ob=Math.PI/2,ab=Math.PI*1.5,sb=Is(ob,2),lb=Is(ab,2),el=class extends ve{constructor(e,t,n,o=0,a=0,l={},s){super();p(this,"rendererState");p(this,"convertTo3DMapPosition");p(this,"projectToScreen");p(this,"initialBearing",0);p(this,"naturalBearing",0);p(this,"imagePlacementOptions");p(this,"cameraFrustum",new yi);p(this,"transformImageRequest");p(this,"cameraWorldPosition",new N);p(this,"debug",{lod:!1,imageContainers:!1});p(this,"cache",new Map);p(this,"currentImageScreenBBoxes",[]);p(this,"viewProjectionMatrix",new Se);p(this,"lastLODUpdateTime",-1);this.rendererState=e,this.convertTo3DMapPosition=t,this.projectToScreen=n,this.initialBearing=o,this.naturalBearing=a,this.imagePlacementOptions=l,this.transformImageRequest=s}get debugLOD(){return this.debug.lod}set debugLOD(e){let t=this.debug.lod!==e;this.debug.lod=e,t&&(e?this.applyDebugLODColors():this.resetDebugLODColors())}createImageMesh(e,t,n,o=0,a,l,s=Js){var w,_,L,T;let u={width:n.width,height:n.height,center:this.convertTo3DMapPosition(a),rotation:(w=n.rotation)!=null?w:0},h=(_=this.imagePlacementOptions.mode)!=null?_:"default",m=(()=>{switch(h){case"fit-nearest-90":let C=(this.initialBearing-this.naturalBearing+360)%180;return C>=45&&C<=135?Eu(u,l,u.rotation+90,this.imagePlacementOptions):u;case"fit-initial-bearing":return Eu(u,l,this.initialBearing,this.imagePlacementOptions);case"default":case"none":default:return u}})();if(this.debug.imageContainers&&m.polygonCenter){let C=new me(new Mi(1),new an({color:65280}));C.position.set(m.polygonCenter.x,m.polygonCenter.y,o),this.rendererState.geometryScene.add(C)}let d=new an({transparent:!0,depthWrite:!1,side:fr}),f=new bt(m.width,m.height),b=new Ys(f);b.visible=!1,b.renderOrder=qe.IMAGE_MESH;let x=jo(t),y=o+wu,g=this.rendererState.cameraObject.position.z,S=Math.abs(g-y),M=x?Zo(S):s,E=Xo(t,s);if(this.cache.has(E)||this.cache.set(E,{lod:M,texture:null,pendingFetch:null,pendingFetchLOD:null,isResizable:x}),(T=(L=this.getOrDownloadImage(E,t,M))==null?void 0:L.then(C=>{d.map=C,d.needsUpdate=!0,d.map.colorSpace=Nn,b.visible=!0,this.publish("image-loaded")}))==null||T.catch(C=>{$.error("Failed to load image in createImageMesh",{cacheKey:E,url:t,error:C})}),b.userData.entityId=e,b.material=d,this.debug.imageContainers){let C=new me(new bt(n.width,n.height),new an({color:"gray"}));b.add(C);let R=new yd;b.add(R),R.scale.set(10,10,10)}return b.position.set(m.center.x,m.center.y,o+wu),b.rotation.z=(-de.degToRad(m.rotation)+Yo)%Yo,b}getOrDownloadImage(e,t,n=ar[Mt.VERY_LOW]){let o=this.cache.get(e);if(!o){$.error("Cache entry must exist before calling getOrDownloadImage",{cacheKey:e,url:t});return}if(o.texture&&o.lod===n)return Promise.resolve(o.texture);if(o.pendingFetch&&o.pendingFetchLOD===n)return o.pendingFetch;if(o.pendingFetch&&o.pendingFetchLOD!==n)return;if(!o.isResizable&&o.texture)return Promise.resolve(o.texture);let a=o.texture;o.texture=null;let l=o.isResizable?vp(t,n):t,s=h=>new Promise((m,d)=>{vn.getLoader().load(h,f=>{try{o.isResizable?(f.colorSpace=Nn,o.texture=f):o.texture=this.createCappedTexture(f,n),o.lod=n,o.pendingFetch=null,o.pendingFetchLOD=null,a==null||a.dispose(),m(o.texture)}catch(b){$.error("Failed to process image texture",{url:t,error:b}),o.pendingFetch=null,o.pendingFetchLOD=null,a==null||a.dispose(),d(b)}},void 0,f=>{$.error("Failed to load image",{url:t,error:f}),o.pendingFetch=null,o.pendingFetchLOD=null,a==null||a.dispose(),d(f)})}),u=this.transformImageRequest?this.transformImageRequest(l).then(h=>s(h.url)):s(l);return o.pendingFetch=u,o.pendingFetchLOD=n,u}createCappedTexture(e,t){let n=e.image,o=n instanceof HTMLImageElement?n.naturalWidth:n.width,a=n instanceof HTMLImageElement?n.naturalHeight:n.height,l=Math.max(o,a);if(l<=t)return e.colorSpace=Nn,e;e.dispose();let s=t/l,u=Math.max(1,Math.floor(o*s)),h=Math.max(1,Math.floor(a*s)),m;typeof window<"u"&&window.OffscreenCanvas!=null&&!Md()?m=new OffscreenCanvas(u,h):(m=document.createElement("canvas"),m.width=u,m.height=h);let d=m.getContext("2d");if(!d)throw new Error("Failed to get 2D context for texture capping");d.drawImage(n,0,0,u,h);let f=new ld(m);return f.colorSpace=Nn,f.needsUpdate=!0,f}updateLODIfNeeded(e,t,n,o){var d,f;let a=Xo(e,o),l=this.cache.get(a);if(!(l!=null&&l.isResizable))return;let s=Math.abs(this.cameraWorldPosition.z-n.z),u=Zo(s);this.debug.lod&&Ks(t.material,u);let h=t.material,m=h.map!==l.texture;l.lod===u&&!m&&!l.pendingFetch||(f=(d=this.getOrDownloadImage(a,e,u))==null?void 0:d.then(b=>{h.map!==b&&(h.map=b,h.needsUpdate=!0,this.publish("image-loaded"))}))==null||f.catch(b=>{$.error("Failed to load image in updateLODIfNeeded",{cacheKey:a,url:e,error:b})})}applyDebugLODColors(){var e,t,n,o;this.rendererState.cameraObject.getWorldPosition(this.cameraWorldPosition);for(let a of this.rendererState.geometry3DsInScene)if(a.type==="image"){let l=a.components[0],s=a.components[1];if(((e=l==null?void 0:l.imageMesh)==null?void 0:e.material)instanceof an){let u=s==null?void 0:s.url;if(u&&jo(u)){let h=Math.abs(this.cameraWorldPosition.z-l.imageMesh.position.z),m=Zo(h);Ks(l.imageMesh.material,m)}else Qs(l.imageMesh.material)}}else if(a.type==="geometry"){let l=a.components[0];if(((t=l==null?void 0:l.imageMesh)==null?void 0:t.material)instanceof an){let s=(o=(n=l.feature.properties)==null?void 0:n.image)==null?void 0:o.path;if(s&&jo(s)){let u=Math.abs(this.cameraWorldPosition.z-l.imageMesh.position.z),h=Zo(u);Ks(l.imageMesh.material,h)}else Qs(l.imageMesh.material)}}}resetDebugLODColors(){var e;for(let t of this.rendererState.geometry3DsInScene){let n;t.type==="image"?n=t.components[0]:t.type==="geometry"&&(n=t.components[0]),((e=n==null?void 0:n.imageMesh)==null?void 0:e.material)instanceof an&&Qs(n.imageMesh.material)}}flipIfNeeded(e,t){if(e.imageMesh==null)return;let n=-t,o=e.imageMesh.rotation.z,a=Is((o-n+Yo)%Yo,2);if(a>sb&&a<lb){let l=e.imageMesh.matrixWorldAutoUpdate===!1;l&&Qa(e.imageMesh),e.imageMesh.rotation.z=(o+Math.PI)%Yo,e.imageMesh.updateMatrixWorld(),l&&Rd(e.imageMesh)}}update(e,t,n){var s,u,h,m,d,f,b;this.currentImageScreenBBoxes=[],this.viewProjectionMatrix.identity().multiply(this.rendererState.cameraObject.projectionMatrix).multiply(this.rendererState.cameraObject.matrixWorldInverse),this.cameraFrustum.setFromProjectionMatrix(this.viewProjectionMatrix),this.rendererState.cameraObject.getWorldPosition(this.cameraWorldPosition);let o=!t&&n!==this.lastLODUpdateTime;o&&(this.lastLODUpdateTime=n);let a,l;for(let x of this.rendererState.geometry3DsInScene)if(x.type==="image"){if(a=x.components[0],l=x.components[1],l.url&&a.imageMesh==null){let y=this.convertTo3DMapPosition(a.feature.geometry.coordinates),g={x:y.x,y:y.y};a.imageMesh=this.createImageMesh(x.id,l.url,a.feature.properties,a.feature.properties.verticalOffset,a.feature.geometry.coordinates,[g],l.maxImageSize),a.mesh.add(a.imageMesh),a.position.copy(a.imageMesh.position)}if(a.imageMesh){if(o&&l.url&&this.updateLODIfNeeded(l.url,a.imageMesh,a.position,l.maxImageSize),l.url&&!a.imageMesh.visible){let y=Xo(l.url,l.maxImageSize),g=this.cache.get(y);if(g!=null&&g.texture){let S=a.imageMesh.material;S.map!==g.texture&&(S.map=g.texture,S.needsUpdate=!0),a.imageMesh.visible=!0}}l.flipImageToFaceCamera&&this.flipIfNeeded(a,e),a.imageMesh.material instanceof an&&l.dirty&&a.imageMesh.material.opacity!==l.opacity&&(a.imageMesh.material.opacity=l.opacity)}}else if((x==null?void 0:x.type)==="geometry"){if(a=x.components[0],l=x.components[1],l.showImage&&((s=a.feature.properties)!=null&&s.image)&&a.imageMesh==null&&a.visible&&a.mesh!=null&&a.mesh.parent!=null&&((u=a.feature.properties)==null?void 0:u.image.position)!=null&&a.feature.geometry.coordinates!=null&&a.feature.geometry.coordinates.length>0){let y=a.feature.geometry.coordinates[0].map(S=>{let M=this.convertTo3DMapPosition(S);return{x:M.x,y:M.y}}),g=this.createImageMesh(x.id,(h=a.feature.properties)==null?void 0:h.image.path,(m=a.feature.properties)==null?void 0:m.image,l.height+l.altitude,(d=a.feature.properties)==null?void 0:d.image.position,y,l.maxImageSize);a.mesh.parent.add(g),a.imageMesh=g}if(a.imageMesh){let y=(b=(f=a.feature.properties)==null?void 0:f.image)==null?void 0:b.path;if(o&&y&&this.updateLODIfNeeded(y,a.imageMesh,a.imageMesh.position,l.maxImageSize),!a.visible)a.imageMesh.visible=!1;else if(l.showImage&&!a.imageMesh.visible)if(y){let g=Xo(y,l.maxImageSize),S=this.cache.get(g);if(S!=null&&S.texture){let M=a.imageMesh.material;M.map!==S.texture&&(M.map=S.texture,M.needsUpdate=!0),a.imageMesh.visible=!0}}else a.imageMesh.visible=!0;else!l.showImage&&a.imageMesh.visible&&(a.imageMesh.visible=!1);l.flipImageToFaceCamera&&this.flipIfNeeded(a,e),l.enableImageCollisions===!0&&this.updateImageScreenBBoxes(a)}}}destroy(){var e;for(let t of this.cache.values())(e=t.texture)==null||e.dispose();this.cache.clear(),super.destroy()}updateImageScreenBBoxes(e){if(e.imageMesh==null)return;let t=e.imageMesh.geometry.boundingBox;if(t==null&&(e.imageMesh.geometry.computeBoundingBox(),t=e.imageMesh.geometry.boundingBox),t){let n=new N;if(e.imageMesh.getWorldPosition(n),!this.cameraFrustum.containsPoint(n))return;let o=new he;this.projectToScreen(o,n);let a=[new N(t.min.x,t.min.y,t.min.z),new N(t.max.x,t.min.y,t.min.z),new N(t.min.x,t.max.y,t.min.z),new N(t.max.x,t.max.y,t.min.z),new N(t.min.x,t.min.y,t.max.z),new N(t.max.x,t.min.y,t.max.z),new N(t.min.x,t.max.y,t.max.z),new N(t.max.x,t.max.y,t.max.z)],l=[];for(let f of a){let b=f.clone().applyMatrix4(e.imageMesh.matrixWorld),x=new he;this.projectToScreen(x,b),l.push(x)}let s=1/0,u=1/0,h=-1/0,m=-1/0;for(let f of l)s=Math.min(s,f.x),u=Math.min(u,f.y),h=Math.max(h,f.x),m=Math.max(m,f.y);let d=new ln(o.x,o.y,h-s,m-u);this.currentImageScreenBBoxes.push(d)}else $.warn("Bounding box for imageMesh does not exist.")}};v();v();function Tu(i){let r=1/0,e=1/0,t=-1/0,n=-1/0;for(let o of i)o.x<r&&(r=o.x),o.x>t&&(t=o.x),o.y<e&&(e=o.y),o.y>n&&(n=o.y);return{minX:r,minY:e,maxX:t,maxY:n}}function cb(i,r){return!(i.maxX<r.minX||i.minX>r.maxX||i.maxY<r.minY||i.minY>r.maxY)}function ub(i,r){if(!cb(i,r))return 0;let e=Math.max(i.minX,r.minX),t=Math.min(i.maxX,r.maxX),n=Math.max(i.minY,r.minY),o=Math.min(i.maxY,r.maxY),a=t-e,l=o-n;return a*l}function xp(i,r){let e=ub(i,r);if(e===0)return 0;let t=r.maxX-r.minX,n=r.maxY-r.minY,o=t*n;return o===0?0:e/o}v();function hb(i){let r=0;for(let e=1;e<i.length;e++)(i[e].y<i[r].y||i[e].y===i[r].y&&i[e].x<i[r].x)&&(r=e);return r}function db(i,r){let e=[...i];return e.sort((t,n)=>{let o=t.point.x-r.x,a=t.point.y-r.y,l=n.point.x-r.x,s=n.point.y-r.y,u=o*s-a*l;if(u===0){let h=o*o+a*a,m=l*l+s*s;return h-m}return u>0?-1:1}),e}function mb(i,r){let e=[r];for(let t=0;t<i.length;t++){for(;e.length>1;){let n=e[e.length-2].point,o=e[e.length-1].point,a=i[t].point,l=o.x-n.x,s=o.y-n.y,u=a.x-o.x,h=a.y-o.y;if(l*h-s*u<=0)e.pop();else break}e.push(i[t])}return e}function Sp(i){if(i.length<3)return i.map((o,a)=>({point:o,index:a}));let r=hb(i),e=i.map((o,a)=>({point:o,index:a})),t=e[r];e.splice(r,1);let n=db(e,t.point);return mb(n,t)}function $o(i,r,e,t){if(i.length===0)return[];let n=[],o=i[i.length-1],a=r*o.x+e*o.y+t;for(let l=0;l<i.length;l++){let s=i[l],u=r*s.x+e*s.y+t;if(u>=0){if(a<0){let h=a/(a-u);n.push({x:o.x+h*(s.x-o.x),y:o.y+h*(s.y-o.y)})}n.push(s)}else if(a>=0){let h=a/(a-u);n.push({x:o.x+h*(s.x-o.x),y:o.y+h*(s.y-o.y)})}o=s,a=u}return n}v();function pb(i,r){let e=document.createElement("div");return e.id="focus-bbox-".concat(i),e.style.position="absolute",e.style.pointerEvents="none",e.style.overflow="hidden",e.style.zIndex="1000",r.appendChild(e),e}function fb(i,r){let e=r.maxX-r.minX,t=r.maxY-r.minY;i.style.left=r.minX+"px",i.style.top=r.minY+"px",i.style.width=e+"px",i.style.height=t+"px"}function gb(i,r){r?(i.style.border="2px solid green",i.style.backgroundColor="rgba(0, 255, 0, 0.1)"):(i.style.border="2px solid red",i.style.backgroundColor="rgba(255, 0, 0, 0.1)")}function yb(i){let r=i.querySelector(".entity-id-label");return r||(r=document.createElement("div"),r.className="entity-id-label",r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.padding="2px 4px",r.style.color="white",r.style.fontSize="10px",r.style.fontWeight="bold",r.style.fontFamily="monospace",r.style.zIndex="1001",i.appendChild(r)),r}function bb(i){let r=i.querySelector(".score-label");return r||(r=document.createElement("div"),r.className="score-label",r.style.position="absolute",r.style.bottom="0",r.style.right="0",r.style.padding="2px 4px",r.style.color="white",r.style.fontSize="12px",r.style.fontWeight="bold",r.style.fontFamily="monospace",r.style.zIndex="1001",i.appendChild(r)),r}function vb(i,r,e,t,n){t?i.style.backgroundColor="green":i.style.backgroundColor="red",i.textContent=e,n!==void 0?(r.style.backgroundColor=t?"green":"red",r.textContent=n.toFixed(3)):(r.style.backgroundColor=t?"green":"red",r.textContent="")}function Mp(i,r){for(let[e,t]of i)r.has(e)||(t.remove(),i.delete(e))}function Ep(i,r,e,t,n,o){var u;let a=e.get(i);a||(a=pb(i,t),e.set(i,a)),fb(a,(u=r.clippedScreenBBox)!=null?u:r.screenBBox),gb(a,n);let l=yb(a),s=bb(a);return vb(l,s,i,n,o),a}function Cp(){let i=document.createElement("div");return Object.assign(i.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",pointerEvents:"none",overflow:"hidden"}),document.body.append(i),i}function wp(i,r){let e=document.createElement("div");e.style.position="absolute",e.style.top=i.minY+"px",e.style.left=i.minX+"px",e.style.width=i.maxX-i.minX+"px",e.style.height=i.maxY-i.minY+"px",e.style.border="2px solid gray",e.style.backgroundColor="rgba(128, 128, 128, 0.1)",e.style.pointerEvents="none",r.append(e);let t=document.createElement("div");t.textContent="viewfinder",t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.padding="2px 4px",t.style.backgroundColor="gray",t.style.color="white",t.style.fontSize="12px",t.style.fontWeight="bold",t.style.fontFamily="monospace",t.style.zIndex="1001",e.appendChild(t);let n=document.createElement("div");return n.textContent="",n.style.position="absolute",n.style.bottom="0",n.style.right="0",n.style.padding="2px 4px",n.style.backgroundColor="gray",n.style.color="white",n.style.fontSize="12px",n.style.fontWeight="bold",n.style.fontFamily="monospace",n.style.zIndex="1001",e.appendChild(n),{squareEl:e,labelEl:t,scoreLabelEl:n}}function Tp(i,r){i.textContent=r}function Dp(i,r){r!==void 0?i.textContent="Score: ".concat(r.toFixed(3)):i.textContent=""}v();function Pp(i,r,e){if(!i.visible)return;let t=i;if(t.isMesh||t.isLine||t.isPoints){let n=t.geometry;if(n!=null&&n.isBufferGeometry){let o=n.attributes.position;if(o)for(let a=0;a<o.count;a++)e.fromBufferAttribute(o,a),e.applyMatrix4(i.matrixWorld),r.push(e.clone())}}for(let n of i.children)Pp(n,r,e)}function Ip(i,r){let e=[];return i instanceof Tt&&Pp(i,e,r),e}var Gi=.001;function Op(i){if(i.length===0)return[];let r=[],e=i[i.length-1],t=e.w>Gi;for(let n=0;n<i.length;n++){let o=i[n],a=o.w>Gi;if(a){if(!t){let l=(Gi-e.w)/(o.w-e.w);r.push({x:e.x+l*(o.x-e.x),y:e.y+l*(o.y-e.y),z:e.z+l*(o.z-e.z),w:Gi})}r.push(o)}else if(t){let l=(Gi-e.w)/(o.w-e.w);r.push({x:e.x+l*(o.x-e.x),y:e.y+l*(o.y-e.y),z:e.z+l*(o.z-e.z),w:Gi})}e=o,t=a}return r}function Lp(i,r,e){if(i.length===0)return[];let t=i;return t=$o(t,1,0,0),t=$o(t,-1,0,r),t=$o(t,0,1,0),t=$o(t,0,-1,e),t}v();var tl=class{constructor(){p(this,"bbox");p(this,"center");p(this,"el",null);p(this,"labelEl",null);p(this,"scoreLabelEl",null)}create(r,e,t,n,o){this.labelEl&&(this.labelEl.remove(),this.labelEl=null),this.scoreLabelEl&&(this.scoreLabelEl.remove(),this.scoreLabelEl=null),this.el&&(this.el.remove(),this.el=null);let a=Pi(t,r,e),l=a.left,s=a.top,u=r-a.left-a.right,h=e-a.top-a.bottom,m=new he(l+u/2,s+h/2),f=u/2*(2-2/1.2)/2,b=Math.max(l,m.x-f),x=Math.min(r-a.right,m.x+f),y=Math.max(s,m.y-f),g=Math.min(e-a.bottom,m.y+f),S=(b+x)/2,M=(y+g)/2;if(this.bbox={minX:b,maxX:x,minY:y,maxY:g},this.center=new he(S,M),n&&o){let{squareEl:E,labelEl:w,scoreLabelEl:_}=wp(this.bbox,o);this.el=E,this.labelEl=w,this.scoreLabelEl=_}}updateLabel(r){this.labelEl&&Tp(this.labelEl,r)}updateScore(r){this.scoreLabelEl&&Dp(this.scoreLabelEl,r)}destroy(){this.labelEl&&(this.labelEl.remove(),this.labelEl=null),this.scoreLabelEl&&(this.scoreLabelEl.remove(),this.scoreLabelEl=null),this.el&&(this.el.remove(),this.el=null)}};var xb=250,Mn,rl=class extends ve{constructor(e,t){super();p(this,"cameraDirty",!0);p(this,"focusablesDirty",!0);p(this,"state");p(this,"camera");p(this,"cameraFrustum",new yi);p(this,"viewProjectionMatrix",new Se);p(this,"tempScreenPos",new N);p(this,"debugEl",null);p(this,"collisions",new Map);p(this,"focusableEntities",new Map);p(this,"debug",!1);p(this,"debugBBoxElements",new Map);p(this,"viewfinder",new tl);p(this,"screenBoundsMap",new Map);p(this,"screenDiagonal",1);A(this,Mn);p(this,"update",(e=!1,t=Date.now())=>{this.focusablesDirty&&this.updateFocusableEntities(),!e&&(Date.now()-t>xb||(c(this,Mn)&&cancelAnimationFrame(c(this,Mn)),F(this,Mn,requestAnimationFrame(()=>{this.updateRaf()}))))});this.state=e,this.camera=t,this.resize()}resize(){this.screenDiagonal=Math.sqrt(this.state.canvasWidth*this.state.canvasWidth+this.state.canvasHeight*this.state.canvasHeight),this.createViewfinder()}createViewfinder(){this.debugEl&&this.debugEl.remove();for(let e of this.debugBBoxElements.values())e.remove();this.debugBBoxElements.clear(),this.debug&&(this.debugEl=Cp()),this.viewfinder.create(this.state.canvasWidth,this.state.canvasHeight,this.state.insetsPadding,this.debug,this.debugEl)}simplifyVertices(e){return e.length<3?e:Sp(e).map(t=>e[t.index])}computeScreenSpaceBounds(e){let{vertices:t,boundingBox:n}=e;if(t==null||t.length<3||n==null||n.isEmpty()||!this.cameraFrustum.intersectsBox(n))return;let o=this.camera.projectionMatrix.elements,a=t.map(m=>({x:o[0]*m.x+o[4]*m.y+o[8]*m.z+o[12],y:o[1]*m.x+o[5]*m.y+o[9]*m.z+o[13],z:o[2]*m.x+o[6]*m.y+o[10]*m.z+o[14],w:o[3]*m.x+o[7]*m.y+o[11]*m.z+o[15]})),l=Op(a);if(l.length<3)return;let s=1/0,u=[];for(let m of l){let d=m.x/m.w,f=m.y/m.w;u.push({x:(d+1)/2*this.state.canvasWidth,y:(-f+1)/2*this.state.canvasHeight}),m.w<s&&(s=m.w)}let h=Lp(u,this.state.canvasWidth,this.state.canvasHeight);if(!(h.length<=0))return{screenBBox:Tu(u),clippedScreenBBox:this.debug?Tu(h):void 0,closestZ:s}}updateFocusableEntities(){var t;this.focusableEntities.clear();let e;for(let n of this.state.geometry3DsInScene){if(n==null)continue;let o;if(n.type==="group-container"||n.type==="batched-geometry-group")o=n.visible;else{let a=n.components[1];o=(t=a==null?void 0:a.visible)!=null?t:!0}if(o&&(e=n.type==="group-container"?n.components[1]:n.components[4],e!==void 0&&e.type==="focusable")){let a=String(n.type==="group-container"?n.userData.entityId:n.id);if(e.dirty===!0){let l=null;n instanceof Tt?l=n:"object3d"in n&&n.object3d instanceof Tt&&(l=n.object3d),l&&(e.vertices=this.simplifyVertices(Ip(l,this.tempScreenPos)),e.boundingBox=new Ve().setFromObject(l),e.dirty=!1)}this.focusableEntities.set(a,e)}}this.focusablesDirty=!1}updateRaf(){if(this.focusableEntities.size===0){this.publish("geometry-in-focus",[]);return}this.cameraDirty&&this.compute()}updateDebugBBoxes(e,t){if(!(!this.debug||!this.debugEl)){Mp(this.debugBBoxElements,e);for(let[n,o]of e){let a=t.has(n),l=this.collisions.get(n);Ep(n,o,this.debugBBoxElements,this.debugEl,a,l)}}}compute(){if(this.collisions.clear(),this.screenBoundsMap.clear(),!this.viewfinder.center)return;this.viewProjectionMatrix.copy(this.camera.projectionMatrix),this.cameraFrustum.setFromProjectionMatrix(this.viewProjectionMatrix);let e=[];for(let[n,o]of this.focusableEntities){let a=this.computeScreenSpaceBounds(o);if(!a)continue;this.screenBoundsMap.set(n,a);let{screenBBox:l}=a,s=xp(l,this.viewfinder.bbox);if(s>0){e.push(n);let u=(l.minX+l.maxX)/2,h=(l.minY+l.maxY)/2,m=u-this.viewfinder.center.x,d=h-this.viewfinder.center.y,b=1/(1+Math.sqrt(m*m+d*d)/this.screenDiagonal),x=1/(1+Math.abs(a.closestZ)),y=b*.5+s*.35+x*.15;this.collisions.set(n,y)}}let t=Array.from(this.collisions,([n,o])=>({entityId:n,score:o})).sort((n,o)=>o.score-n.score).map(({entityId:n})=>n);if(this.debug){let n=t[0];this.viewfinder.updateLabel(n||"viewfinder");let o=n?this.collisions.get(n):void 0;this.viewfinder.updateScore(o);let a=new Set(e);this.updateDebugBBoxes(this.screenBoundsMap,a)}this.publish("geometry-in-focus",t),this.cameraDirty=!1}showDebug(){this.debug||(this.debug=!0,this.cameraDirty=!0,this.createViewfinder())}hideDebug(){this.debug&&(this.debug=!1,this.createViewfinder())}destroy(){c(this,Mn)&&cancelAnimationFrame(c(this,Mn)),this.debugEl&&this.debugEl.remove();for(let e of this.debugBBoxElements.values())e.remove();this.debugBBoxElements.clear(),this.collisions.clear(),this.focusableEntities.clear(),this.viewfinder.destroy()}};Mn=new WeakMap;v();v();v();v();v();function nl(i){if(!i)throw new Error("coord is required");if(!Array.isArray(i)){if(i.type==="Feature"&&i.geometry!==null&&i.geometry.type==="Point")return i.geometry.coordinates;if(i.type==="Point")return i.coordinates}if(Array.isArray(i)&&i.length>=2&&!Array.isArray(i[0])&&!Array.isArray(i[1]))return i;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function ei(i){if(Array.isArray(i))return i;if(i.type==="Feature"){if(i.geometry!==null)return i.geometry.coordinates}else if(i.coordinates)return i.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Bi(i){return i.type==="Feature"?i.geometry:i}function UT(i,r){return i.type==="FeatureCollection"?"FeatureCollection":i.type==="GeometryCollection"?"GeometryCollection":i.type==="Feature"&&i.geometry!==null?i.geometry.type:i.type}function kr(i,r,e){if(e===void 0&&(e={}),!i)throw new Error("point is required");if(!r)throw new Error("polygon is required");var t=nl(i),n=Bi(r),o=n.type,a=r.bbox,l=n.coordinates;if(a&&Sb(t,a)===!1)return!1;o==="Polygon"&&(l=[l]);for(var s=!1,u=0;u<l.length&&!s;u++)if(Ap(t,l[u][0],e.ignoreBoundary)){for(var h=!1,m=1;m<l[u].length&&!h;)Ap(t,l[u][m],!e.ignoreBoundary)&&(h=!0),m++;h||(s=!0)}return s}function Ap(i,r,e){var t=!1;r[0][0]===r[r.length-1][0]&&r[0][1]===r[r.length-1][1]&&(r=r.slice(0,r.length-1));for(var n=0,o=r.length-1;n<r.length;o=n++){var a=r[n][0],l=r[n][1],s=r[o][0],u=r[o][1],h=i[1]*(a-s)+l*(s-i[0])+u*(i[0]-a)===0&&(a-i[0])*(s-i[0])<=0&&(l-i[1])*(u-i[1])<=0;if(h)return!e;var m=l>i[1]!=u>i[1]&&i[0]<(s-a)*(i[1]-l)/(u-l)+a;m&&(t=!t)}return t}function Sb(i,r){return r[0]<=i[0]&&r[1]<=i[1]&&r[2]>=i[0]&&r[3]>=i[1]}v();v();function Mb(i){if(!i)throw new Error("geojson is required");var r=[];return Qr(i,function(e){Eb(e,r)}),Fn(r)}function Eb(i,r){var e=[],t=i.geometry;if(t!==null){switch(t.type){case"Polygon":e=ei(t);break;case"LineString":e=[ei(t)]}e.forEach(function(n){var o=Cb(n,i.properties);o.forEach(function(a){a.id=r.length,r.push(a)})})}}function Cb(i,r){var e=[];return i.reduce(function(t,n){var o=Ga([t,n],r);return o.bbox=wb(t,n),e.push(o),n}),e}function wb(i,r){var e=i[0],t=i[1],n=r[0],o=r[1],a=e<n?e:n,l=t<o?t:o,s=e>n?e:n,u=t>o?t:o;return[a,l,s,u]}var Du=Mb;var uf=Aa(lf(),1);function Cv(i,r){var e={},t=[];if(i.type==="LineString"&&(i=Sc(i)),r.type==="LineString"&&(r=Sc(r)),i.type==="Feature"&&r.type==="Feature"&&i.geometry!==null&&r.geometry!==null&&i.geometry.type==="LineString"&&r.geometry.type==="LineString"&&i.geometry.coordinates.length===2&&r.geometry.coordinates.length===2){var n=cf(i,r);return n&&t.push(n),Fn(t)}var o=(0,uf.default)();return o.load(Du(r)),Ec(Du(i),function(a){Ec(o.search(a),function(l){var s=cf(a,l);if(s){var u=ei(s).join(",");e[u]||(e[u]=!0,t.push(s))}})}),Fn(t)}function cf(i,r){var e=ei(i),t=ei(r);if(e.length!==2)throw new Error("<intersects> line1 must only contain 2 coordinates");if(t.length!==2)throw new Error("<intersects> line2 must only contain 2 coordinates");var n=e[0][0],o=e[0][1],a=e[1][0],l=e[1][1],s=t[0][0],u=t[0][1],h=t[1][0],m=t[1][1],d=(m-u)*(a-n)-(h-s)*(l-o),f=(h-s)*(o-u)-(m-u)*(n-s),b=(a-n)*(o-u)-(l-o)*(n-s);if(d===0)return null;var x=f/d,y=b/d;if(x>=0&&x<=1&&y>=0&&y<=1){var g=n+x*(a-n),S=o+x*(l-o);return _a([g,S])}return null}var hl=Cv;v();function dl(i,r){r===void 0&&(r={});var e=Bi(i);switch(!r.properties&&i.type==="Feature"&&(r.properties=i.properties),e.type){case"Polygon":return wv(e,r);case"MultiPolygon":return Tv(e,r);default:throw new Error("invalid poly")}}function wv(i,r){r===void 0&&(r={});var e=Bi(i),t=e.coordinates,n=r.properties?r.properties:i.type==="Feature"?i.properties:{};return hf(t,n)}function Tv(i,r){r===void 0&&(r={});var e=Bi(i),t=e.coordinates,n=r.properties?r.properties:i.type==="Feature"?i.properties:{},o=[];return t.forEach(function(a){o.push(hf(a,n))}),Fn(o)}function hf(i,r){return i.length>1?Uh(i,r):Ga(i[0],r)}function Dv(i,r){var e=!0;return Qr(i,function(t){Qr(r,function(n){if(e===!1)return!1;e=Pv(t.geometry,n.geometry)})}),e}function Pv(i,r){switch(i.type){case"Point":switch(r.type){case"Point":return!Av(i.coordinates,r.coordinates);case"LineString":return!df(r,i);case"Polygon":return!kr(i,r)}break;case"LineString":switch(r.type){case"Point":return!df(i,r);case"LineString":return!Iv(i,r);case"Polygon":return!mf(r,i)}break;case"Polygon":switch(r.type){case"Point":return!kr(r,i);case"LineString":return!mf(i,r);case"Polygon":return!Ov(r,i)}}return!1}function df(i,r){for(var e=0;e<i.coordinates.length-1;e++)if(Lv(i.coordinates[e],i.coordinates[e+1],r.coordinates))return!0;return!1}function Iv(i,r){var e=hl(i,r);return e.features.length>0}function mf(i,r){for(var e=0,t=r.coordinates;e<t.length;e++){var n=t[e];if(kr(n,i))return!0}var o=hl(r,dl(i));return o.features.length>0}function Ov(i,r){for(var e=0,t=i.coordinates[0];e<t.length;e++){var n=t[e];if(kr(n,r))return!0}for(var o=0,a=r.coordinates[0];o<a.length;o++){var l=a[o];if(kr(l,i))return!0}var s=hl(dl(i),dl(r));return s.features.length>0}function Lv(i,r,e){var t=e[0]-i[0],n=e[1]-i[1],o=r[0]-i[0],a=r[1]-i[1],l=t*a-n*o;return l!==0?!1:Math.abs(o)>=Math.abs(a)?o>0?i[0]<=e[0]&&e[0]<=r[0]:r[0]<=e[0]&&e[0]<=i[0]:a>0?i[1]<=e[1]&&e[1]<=r[1]:r[1]<=e[1]&&e[1]<=i[1]}function Av(i,r){return i[0]===r[0]&&i[1]===r[1]}var pf=Dv;function Wu(i,r){var e=!1;return Qr(i,function(t){Qr(r,function(n){if(e===!0)return!0;e=!pf(t.geometry,n.geometry)})}),e}var Rv=5e3,ju="outdoor-system-debug-container",ff=!1,zr,rt,Ko,ki,Ur,Sr,qt,zi,Qo,Ui,pl,fl,sr,Zu,ea,ti,gf,gl,yl,yf,bf,ml=class extends ve{constructor(e){super();A(this,sr);A(this,zr,!0);A(this,rt);p(this,"idleQueue",new Kn);A(this,Ko,"");A(this,ki,new Set);A(this,Ur,new Set);A(this,Sr);A(this,qt,null);A(this,zi,!1);A(this,Qo,e=>{if(!c(this,rt))throw new Error("Map not initialized");let n=[[e[0],e[1]],[e[2],e[1]],[e[2],e[3]],[e[0],e[3]]].map(u=>c(this,rt).project(u)),o=Math.max(...n.map(u=>u.x)),a=Math.min(...n.map(u=>u.x)),l=Math.max(...n.map(u=>u.y)),s=Math.min(...n.map(u=>u.y));return[new Ac(a,s),new Ac(o,l)]});A(this,Ui,(e,t)=>{if(!c(this,rt))return;let n=c(this,rt).on(e,t);n!=null&&n.unsubscribe&&this.onAbort(()=>n.unsubscribe())});A(this,pl,()=>{c(this,qt)&&(clearTimeout(c(this,qt)),F(this,qt,null),F(this,zr,!1))});A(this,fl,()=>{c(this,qt)&&(clearTimeout(c(this,qt)),F(this,qt,null)),F(this,qt,setTimeout(()=>{c(this,pl).call(this)},Rv))});A(this,ea,async()=>{if(ff&&c(this,Sr)&&Z(this,sr,bf).call(this),!(!c(this,rt)||!c(this,zi))&&c(this,zr)&&!(!c(this,Ur)||c(this,Ur).size===0)&&(c(this,sr,gf)&&c(this,gl).call(this),c(this,Sr))){let e=new Set;this.idleQueue.onComplete(()=>{c(this,ti).length>0&&(c(this,Ur).forEach(t=>{var n;(n=c(this,rt))==null||n.setFilter(t,["all",...c(this,ti)])}),F(this,zr,!1)),F(this,ti,[])});for(let t of c(this,Sr)){let n=Cc(t),o=c(this,Qo).call(this,n),a=c(this,rt).queryRenderedFeatures(o,{layers:Array.from(c(this,Ur))});for(let l of a)l.id==null||e.has(l.id)||this.idleQueue.add(()=>{if(l.geometry!=null&&"coordinates"in l.geometry){let s;if(l.geometry.type==="Polygon"?s=Fa(l.geometry.coordinates):l.geometry.type==="MultiPolygon"&&(s=Hh(l.geometry.coordinates)),!s)return;Wu(t,s)&&l.id!=null&&(e.add(l.id),c(this,ti).push(["!=",["id"],l.id]))}})}}});A(this,ti,[]);A(this,gl,()=>{this.idleQueue.clearAll()});A(this,yl,e=>{var t,n;if(c(this,rt)&&e&&e.dataType==="style"&&e.type==="styledata"&&c(this,ki).size>0){let o=(n=(t=e==null?void 0:e.style)==null?void 0:t.stylesheet)==null?void 0:n.id;(!o||o!==c(this,Ko))&&(F(this,Ko,o),Z(this,sr,Zu).call(this),F(this,zr,!0))}});e&&(F(this,rt,e),c(this,Ui).call(this,"styledata",c(this,yl)),c(this,Ui).call(this,"render",c(this,ea)),F(this,zi,c(this,rt).loaded()),c(this,Ui).call(this,"load",()=>{F(this,zi,!0)})),ff&&Z(this,sr,yf).call(this)}hideLayersIntersectingPolygons(e,t){c(this,qt)&&clearTimeout(c(this,qt)),c(this,fl).call(this),F(this,Sr,e.reduce((n,o)=>{if(o.geometry.type==="Polygon"){let a=Fa(o.geometry.coordinates);n.push(a)}else o.geometry.type==="MultiPolygon"&&n.push(...o.geometry.coordinates.map(a=>Fa(a)));return n},[]));for(let n of t)c(this,ki).add(n);F(this,zr,!0),Z(this,sr,Zu).call(this),c(this,ea).call(this)}destroy(){this.idleQueue.clearAll(),super.destroy()}};zr=new WeakMap,rt=new WeakMap,Ko=new WeakMap,ki=new WeakMap,Ur=new WeakMap,Sr=new WeakMap,qt=new WeakMap,zi=new WeakMap,Qo=new WeakMap,Ui=new WeakMap,pl=new WeakMap,fl=new WeakMap,sr=new WeakSet,Zu=function(){if(F(this,Ur,new Set),c(this,rt))for(let e of c(this,ki))c(this,rt).getLayer(e)&&c(this,Ur).add(e)},ea=new WeakMap,ti=new WeakMap,gf=function(){return this.idleQueue.size!==0},gl=new WeakMap,yl=new WeakMap,yf=function(){if(!document.getElementById(ju)&&c(this,rt)){let e=document.createElement("div");e.id=ju,e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.bottom="0",e.style.right="0",e.style.pointerEvents="none",e.style.zIndex="1000",c(this,rt).getContainer().appendChild(e)}},bf=function(){let e=document.getElementById(ju);if(!e||!c(this,Sr)||!c(this,rt))return;let t=e.querySelectorAll('[id^="polygon-box-"]');for(let n=0;n<t.length;n++)t[n].remove();for(let n=0;n<c(this,Sr).length;n++){let o=c(this,Sr)[n],a=Cc(o),l=c(this,Qo).call(this,a),s=document.createElement("div");s.id="polygon-box-".concat(n),s.style.position="absolute",e.appendChild(s);let u=[Math.min(l[0].x,l[1].x),Math.min(l[0].y,l[1].y)],h=[Math.max(l[0].x,l[1].x),Math.max(l[0].y,l[1].y)];s.style.top=u[1]+"px",s.style.left=u[0]+"px",s.style.width=h[0]-u[0]+"px",s.style.height=h[1]-u[1]+"px",s.style.border="2px solid ".concat(c(this,zr)?"red":"blue")}};v();v();v();v();var bl=class extends rn{constructor(e,t={}){var g;super();p(this,"tangentData");p(this,"parameters");Object.defineProperty(this,"type",{value:"RibbonGeometry"}),this.parameters={path:e};let n=(g=t.segments)!=null?g:64,o=new N,a=new N,l=new N(0,0,1),s=(n+1)*2,u=new Float32Array(s*3),h=new Float32Array(s*3),m=new Float32Array(s*2),d=new Float32Array(s),f=[];this.tangentData=new Float32Array((n+1)*3);let b=0,x=0,y=0;for(let S=0;S<=n;S++){let M=S/n;e.getPointAt(M,o),e.getTangentAt(M,a);let E=S*3;this.tangentData[E]=a.x,this.tangentData[E+1]=a.y,this.tangentData[E+2]=a.z,u[b++]=o.x,u[b++]=o.y,u[b++]=o.z,u[b++]=o.x,u[b++]=o.y,u[b++]=o.z,d[y++]=-1,d[y++]=1,m[x++]=0,m[x++]=M,m[x++]=1,m[x++]=M;let w=S*2*3;h[w]=l.x,h[w+1]=l.y,h[w+2]=l.z,h[w+3]=l.x,h[w+4]=l.y,h[w+5]=l.z}for(let S=0;S<n;S++){let M=S*2;f.push(M,M+2,M+1),f.push(M+1,M+2,M+3)}this.setIndex(f),this.setAttribute("position",new kn(u,3)),this.setAttribute("normal",new kn(h,3)),this.setAttribute("uv",new kn(m,2)),this.setAttribute("side",new kn(d,1))}};v();var vl=class extends ud{constructor(e,t,n=!1){super();p(this,"innerCurve");p(this,"tStart");p(this,"tEnd");this.innerCurve=e,n&&t>=4?(this.tStart=1/(t-1),this.tEnd=(t-2)/(t-1)):(this.tStart=0,this.tEnd=1)}get points(){return this.innerCurve.points}get tension(){return this.innerCurve.tension}get isTrimmed(){return this.tStart!==0||this.tEnd!==1}getPoint(e,t=new N){let n=this.tStart+e*(this.tEnd-this.tStart);return this.innerCurve.getPoint(n,t)}};v();var xl="attribute float pathDistance;\nattribute vec3 pathNormal;\nattribute vec3 pathTangent;\nattribute float side;\n\n\nuniform vec2 uvScale;\nuniform float vertexes;\nuniform float complete;\nuniform float nearRadius;\nuniform float farRadius;\nuniform float nearZoom;\nuniform float farZoom;\nuniform float pulse;\nuniform float pulseLength;\nuniform bool pathIsVertical;\nuniform bool displayArrowsOnPath;\nuniform vec2 cameraParameters;\nuniform bool isRibbon;\nuniform float billboardThreshold;\nuniform mat4 cameraViewMatrix;\nuniform bool screenSpace;\nuniform float metersPerPixel;\n\nvarying float zoomLevel;\nvarying float radius;\nvarying vec2 fragTexcoord;\nvarying float fragTopTextureU;\nvarying float fragPathDistance;\n\nuniform float highlightStartFraction;\nuniform float highlightEndFraction;\nuniform float highlightCompleteFraction;\nuniform float highlightWidthMultiplier;\nuniform vec3 highlightColor;\n\nfloat flattenFactor = 0.0;\n\n// Map the x value from the range [xMin, xMax] to the range [yMin, yMax] using\n// linear interpolation/extrapolation.\n//\n// This performs a pure linear mapping y = mx + b where\n// 'm = (yMax - yMin) / (xMax - xMin)',\n// 'b = -xMin * (yMax - yMin) / (xMax - xMin) + yMin'.\nfloat remap(float x, float xMin, float xMax, float yMin, float yMax) {\n return (x - xMin) / (xMax - xMin) * (yMax - yMin) + yMin;\n}\n\n// Map the x value from [xMin, xMax] to the range [yMin, yMax] using linear\n// interpolation, clamping result values outside [yMin, yMax].\nfloat clampRemap(float x, float xMin, float xMax, float yMin, float yMax) {\n return clamp(remap(x, xMin, xMax, yMin, yMax), yMin, yMax);\n}\n\nvoid main() {\n fragPathDistance = pathDistance;\n\n vec3 adjustedPosition = position;\n zoomLevel = clampRemap(cameraParameters.x, nearZoom, farZoom, 0.0, 1.0);\n\n // Only apply normal-based expansion for TubeGeometry\n // Ribbons have normal=(0,0,1) which would shift them up incorrectly\n if (!isRibbon) {\n float expansionFactor = (farRadius - nearRadius) * zoomLevel;\n adjustedPosition += normal * expansionFactor;\n }\n\n bool isHighlighted = fragPathDistance > highlightStartFraction && fragPathDistance <= (highlightEndFraction * highlightCompleteFraction);\n\n // For TubeGeometry: apply highlight width expansion using normal\n if (!isRibbon && isHighlighted) {\n adjustedPosition += normal * (highlightWidthMultiplier - 1.) / 2.;\n }\n\n // Unified ribbon width handling for both billboarded and non-billboarded\n if (isRibbon) {\n vec3 right;\n\n // Determine if this vertex should billboard\n // billboardThreshold < 0: off, == 0: unconditional, > 0: precomputed sin(angle)\n bool shouldBillboard = billboardThreshold >= 0.0\n && abs(pathTangent.z) >= billboardThreshold;\n\n if (shouldBillboard) {\n // Camera-facing right vector\n vec3 viewDir = -vec3(cameraViewMatrix[0][2], cameraViewMatrix[1][2], cameraViewMatrix[2][2]);\n right = cross(pathTangent, viewDir);\n float rightLen = length(right);\n if (rightLen < 0.001) {\n right = cross(pathTangent, vec3(0.0, 0.0, 1.0));\n rightLen = length(right);\n if (rightLen < 0.001) {\n right = cross(pathTangent, vec3(0.0, 1.0, 0.0));\n rightLen = length(right);\n }\n }\n right = right / max(rightLen, 0.001);\n } else {\n // Flat world-space right vector (perpendicular in XY plane)\n right = vec3(-pathTangent.y, pathTangent.x, 0.0);\n float rightLen = length(right);\n if (rightLen > 0.001) {\n right /= rightLen;\n } else {\n right = vec3(1.0, 0.0, 0.0);\n }\n }\n\n // In screen-space mode, nearRadius/farRadius are pixel half-widths (and equal).\n // Multiply by metersPerPixel to convert to world units so the path maintains\n // a constant pixel width on screen regardless of zoom level.\n float effNear = screenSpace ? nearRadius * metersPerPixel : nearRadius;\n float effFar = screenSpace ? farRadius * metersPerPixel : farRadius;\n\n // Apply base half-width (geometry stores centerline only)\n adjustedPosition += right * effNear * side;\n\n // Shared: zoom-based expansion\n float expansionFactor = (effFar - effNear) * zoomLevel;\n adjustedPosition += right * expansionFactor * side;\n\n // Shared: highlight width expansion (using right instead of normal)\n if (isHighlighted) {\n float highlightExpansion = effNear * (highlightWidthMultiplier - 1.0);\n adjustedPosition += right * highlightExpansion * side;\n }\n }\n\n // For TubeGeometry: flatten the bottom half of the tube\n if (!isRibbon && !pathIsVertical) {\n // We can get an origin point for the cross-section of the path by\n // subtracting the surface normal times the radius, since the surface normal\n // points strictly away from the centre.\n vec3 origin = position - nearRadius * normal;\n\n // Determine how far the path extends \"up\" or \"down\" in the direction of the\n // path normal.\n float height = dot(adjustedPosition - origin, pathNormal);\n\n // For horizontal paths, flatten the bottom half entirely so that it's flat\n // against the floor. This makes the path look nicer when it's\n // semitransparent behind opaque geometry, so you don't see it\n // peeking through.\n float desiredHeight = max(height, 0.0);\n desiredHeight = desiredHeight * flattenFactor;\n float flattenMagnitude = height - desiredHeight;\n adjustedPosition = adjustedPosition - pathNormal * flattenMagnitude;\n }\n\n // Transform the vertices into NDC.\n vec4 mvPosition = modelViewMatrix * vec4(adjustedPosition, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n\n fragTexcoord = uv;\n\n // Compute fragTopTextureU for arrow texture mapping\n if (isRibbon) {\n // For RibbonGeometry: uv.x is already 0-1 across ribbon width\n fragTopTextureU = uv.x;\n } else {\n // For TubeGeometry: compute texture coordinate to handle tube twisting\n // We want the arrow texture to always be on the top of the path\n vec3 bitangent = cross(normal, pathTangent);\n fragTopTextureU = -dot(bitangent, pathNormal) * 0.5 + 0.5;\n if (isHighlighted) {\n fragTopTextureU = -dot(bitangent, pathNormal * highlightWidthMultiplier) * 0.5 + 0.5;\n }\n }\n\n radius = mix(nearRadius, farRadius, zoomLevel);\n if (screenSpace && isRibbon) {\n radius = radius * metersPerPixel;\n }\n}\n";v();var Xu="#define ARROW_FADING_POINT 0.15\n\nuniform float complete;\nuniform float nearRadius;\nuniform float farRadius;\nuniform vec2 resolution;\nuniform vec2 cameraParameters;\nuniform vec3 color;\nuniform float pathLength;\nuniform bool showPulse;\nuniform vec3 pulseColor;\nuniform float pulse;\nuniform float pulseLength;\nuniform bool pathIsVertical;\nuniform bool displayArrowsOnPath;\nuniform float arrowAnimationTimer;\nuniform float opacityMultiplier;\nuniform bool dashed;\nuniform float xrayDithering;\nuniform float dashLength;\nuniform float dashGap;\nuniform bool dashRelativeToWidth;\nuniform float dashSize;\nuniform float gapSize;\nuniform bool dashAbsolute;\nuniform float dashMeters;\nuniform float gapMeters;\nuniform sampler2D arrowTexture;\n\nvarying float zoomLevel;\nvarying float radius;\nvarying vec2 fragTexcoord;\nvarying float fragTopTextureU;\nvarying float fragPathDistance;\n\n\nuniform float highlightStartFraction;\nuniform float highlightEndFraction;\nuniform float highlightCompleteFraction;\nuniform vec3 highlightColor;\n\n// Border uniforms for ribbon geometry\nuniform bool borderEnabled;\nuniform vec3 borderColor;\nuniform float borderWidth;\nuniform bool borderUseDarken;\nuniform bool isRibbon;\n\n// Endcap uniforms for ribbon geometry\n// x = start cap enabled (>0), y = end cap enabled (>0)\nuniform vec2 endcapEnabled;\n\n// How long the arrow should be, as a factor of pathRadius. Since we've\n// mostly flattened the top of the path, values near 2.0 (the diameter)\n// will probably look best.\nconst float arrowLength = 2.0;\n\n// How much of a relative margin the arrow texture should have inside the\n// area laid out for it. Useful to pull the arrow away from the edges of the\n// path, which slope down.\nconst float arrowMargin = 0.1;\n\n// How many arrow-lengths of space should be between arrows on a short path.\nconst float arrowSpacingOnShortPath = 6.0;\n\n// How many arrow-lengths of space should be between arrows on a long path.\nconst float arrowSpacingOnLongPath = 7.5;\n\n// How long a path must be to be considered \"long\", as a factor of\n// the path radius.\nconst float longPathLength = 200.;\n\n// How long a path must be to be considered \"short\", as a factor of the\n// path radius.\nconst float shortPathLength = 75.;\n\n// How much of the path's length the fade-in should comprise when going from\n// zero opacity to full opacity.\nconst float completeLength = 0.1;\n\n// Map the x value from the range [xMin, xMax] to the range [yMin, yMax] using\n// linear interpolation/extrapolation.\n//\n// This performs a pure linear mapping 'y = mx + b' where\n// 'm = (yMax - yMin) / (xMax - xMin)',\n// 'b = -xMin * (yMax - yMin) / (xMax - xMin) + yMin'.\nfloat remap(float x, float xMin, float xMax, float yMin, float yMax) {\n return (x - xMin) / (xMax - xMin) * (yMax - yMin) + yMin;\n}\n\n// Map the x value from [xMin, xMax] to the range [yMin, yMax] using linear\n// interpolation, clamping result values outside [yMin, yMax].\nfloat clampRemap(float x, float xMin, float xMax, float yMin, float yMax) {\n return clamp(remap(x, xMin, xMax, yMin, yMax), yMin, yMax);\n}\n\nvoid main(void) {\n // Compute the opacity of the path based on the distance from the current\n // fragment to the 'complete' value as it varies from 0.0 to 1.0.\n // Fragments that are at the 'complete' value or past it will be fully\n // transparent, while fragments that are at 'complete - completeLength'\n // or before it will be fully opaque. However, we adjust the 'complete'\n // value here so that it overshoots by one full 'completeLength', so that\n // the entire path will be opaque when the 'complete' value is at 1.0.\n float completeLocation = complete * (1.0 + completeLength);\n float completeAmount = clampRemap(\n fragPathDistance,\n completeLocation - completeLength,\n completeLocation,\n 0.0,\n 1.0\n );\n float opacity = 1.0 - smoothstep(0.0, 1.0, completeAmount);\n\n // 2020/01/09 Terence Dickson\n // When we render the background and overlay for the mapbox outdoor context\n // behind everything else in single-buffer rendering, the fact that the path\n // writes to the depth buffer means that the background and overlay will not\n // be drawn behind the path even when the path is still fading in. The effect\n // is subtle and is only visible in single-buffer rendering so this quick fix\n // prevents writes to the depth buffer for zero opacity fragments, which gets\n // rid of the most visually-offensive ghosting.\n if (opacity <= 0.0) {\n discard;\n }\n\n\n // Apply rounded endcaps for ribbon geometry using SDF\n // endcapEnabled.x = start cap (>0 enabled), endcapEnabled.y = end cap (>0 enabled)\n // Creates semicircular caps at start and/or end; disabled caps are square\n float startCapOn = step(0.5, endcapEnabled.x);\n float endCapOn = step(0.5, endcapEnabled.y);\n if ((startCapOn > 0.5 || endCapOn > 0.5) && isRibbon) {\n float endcapRadius = radius / pathLength;\n float xDist = abs(fragTexcoord.x - 0.5);\n float scaledXSq = xDist * xDist * 4.0;\n\n // Start cap: only apply SDF when enabled\n float startT = clamp(1.0 - fragPathDistance / endcapRadius, 0.0, 1.0);\n float startSDF = startT * startT + scaledXSq - 1.0;\n float inStartCap = step(fragPathDistance, endcapRadius);\n float outsideStart = inStartCap * step(0.0, startSDF) * startCapOn;\n\n // End cap: only apply SDF when enabled\n float endCapPos = min(completeLocation, 1.0);\n float endCapStart = endCapPos - endcapRadius;\n float endT = clamp(1.0 - (endCapPos - fragPathDistance) / endcapRadius, 0.0, 1.0);\n float endSDF = endT * endT + scaledXSq - 1.0;\n float inEndCap = step(endCapStart, fragPathDistance);\n float outsideEnd = inEndCap * step(0.0, endSDF) * endCapOn;\n\n // Discard if outside semicircle in enabled cap region\n if (max(outsideStart, outsideEnd) > 0.5) discard;\n }\n\n // Push in the texture coordinates so that they ramp up\n // at 'arrowMargin' instead of at zero; this remapping looks somewhat\n // like this:\n // 1 ^ ___\n // | /\n // | /\n // | /\n // | /\n // |___/\n // 0 +---------->\n // 0 ^ 1\n // arrowMargin\n // Making the arrows narrower on the path.\n float u = fragTopTextureU;\n u = clamp(\n u * (1. / (1. - arrowMargin * 2.)) - (1. / (1. - arrowMargin * 2.) - 1.) / 2.,\n 0.0,\n 1.0\n );\n\n float arrowSpacing = clampRemap(\n pathLength,\n shortPathLength * radius,\n longPathLength * radius,\n arrowSpacingOnShortPath,\n arrowSpacingOnLongPath\n );\n\n // Reduce the spacing between arrows when the camera zooms out, as increasing\n // the path radius will increase the arrow size and thus be able to fit\n // fewer arrows on in total, and this secondary movement of the arrows\n // \"zooming off\" the end of the path is unpleasant\n float expandAmount = mix(1.0, farRadius / nearRadius, zoomLevel);\n float effectiveArrowSpacing =\n arrowSpacing * 1.0 / expandAmount +\n arrowMargin * 2.0;\n\n float effectiveArrowLength = arrowLength * radius * (1. - arrowMargin * 2.0);\n\n // Adjust the slope of the vertical texture coordinate so that it goes\n // from 0 to 1 along the length of the arrow plus the spacing between\n // arrows, and adjust its x-intercept so that one arrow moves to the\n // exact position of the next arrow as 'arrowAnimationTimer' goes\n // from 0 to 1\n // Note: Using fragPathDistance (0-1 along path) for RibbonGeometry\n float v = (\n fragPathDistance * (pathLength / effectiveArrowLength)\n - arrowAnimationTimer * (1. + effectiveArrowSpacing)\n );\n\n // Compute a \"looping sawtooth\" wave for determining the vertical texture\n // coordinates of the arrow texture, roughly as follows:\n // 3 ^ /\n // | ___/\n // 2 | /\n // | ___/\n // 1 | /\n // |___/\n // 0 +--------------->\n // 0 ^ ^\n // ^ |_|\n // | effectiveArrowLength\n // |___|\n // effectiveArrowSpacing\n //\n // This is effectively equivalent to this sort of sawtooth wave:\n // ^\n // 1 | / / /\n // |___/ ___/ ___/\n // 0 +--------------->\n //\n // Causing the image of the arrow to repeat, with dead space (the bottom\n // edge of the texture stretched out) between the arrows at the provided\n // spacing. The reason why the \"looping\" design is preferred is because\n // it takes advantage of WebGL's 'GL_REPEAT' texture wrapping behaviour\n // to avoid the discontinuity that can end up causing visual artifacts.\n if (mod(v, (1. + effectiveArrowSpacing)) < 1.) {\n v = v - effectiveArrowSpacing * floor(v / (1. + effectiveArrowSpacing));\n } else {\n v = ceil(v / (1. + effectiveArrowSpacing));\n }\n\n // Use the r-component of the texture to determine whether the arrow covers\n // this fragment or not\n vec2 sampleTexcoord = vec2(u, v);\n float arrowAmount = 0.0;\n vec3 secondColor = pulseColor;\n\n vec3 finalColor = color;\n\n // adjust the color based on the highlight but only if the fragment is within the highlight start and end\n // [Anzor] I added 0.005 to make the highlight transition a little smoother when the width multiplier is too high\n if (fragPathDistance > highlightStartFraction - 0.005 && fragPathDistance <= (highlightEndFraction * highlightCompleteFraction)) {\n finalColor = highlightColor;\n }\n\n // Apply border effect for ribbon geometry\n // fragTexcoord.x: 0\u21921 across ribbon width; edgeDist = distance to nearest edge\n if (borderEnabled && isRibbon) {\n float edgeDist = min(fragTexcoord.x, 1.0 - fragTexcoord.x);\n\n // For endcaps, compute radial distance from semicircle edge instead\n float endcapRadius = radius / pathLength;\n float endCapPos = min(completeLocation, 1.0);\n float endCapStart = endCapPos - endcapRadius;\n\n // Check each cap region independently\n bool inStartRegion = fragPathDistance <= endcapRadius && startCapOn > 0.5;\n bool inEndRegion = fragPathDistance > endCapStart && endCapOn > 0.5;\n\n if (inStartRegion || inEndRegion) {\n float xDist = abs(fragTexcoord.x - 0.5);\n float scaledXSq = xDist * xDist * 4.0;\n\n if (inStartRegion) {\n float startT = 1.0 - fragPathDistance / endcapRadius;\n float r = sqrt(startT * startT + scaledXSq);\n edgeDist = 0.5 * (1.0 - r);\n } else {\n float endT = 1.0 - (endCapPos - fragPathDistance) / endcapRadius;\n float r = sqrt(endT * endT + scaledXSq);\n edgeDist = 0.5 * (1.0 - r);\n }\n }\n\n if (edgeDist < borderWidth) {\n finalColor = borderUseDarken ? finalColor * 0.6 : borderColor;\n }\n }\n\n if (displayArrowsOnPath) {\n arrowAmount = texture2D(arrowTexture, sampleTexcoord).r;\n float delta = 1.0 - abs(fragPathDistance * 2.0 - 1.0);\n secondColor = mix(finalColor, pulseColor, 1.0 - smoothstep(ARROW_FADING_POINT, 0.0, delta));\n }\n\n if (dashed) {\n float effectiveDashLength;\n float effectiveGapLength;\n\n if (dashAbsolute) {\n // Absolute mode: dashMeters/gapMeters are in meters\n // Convert to path-distance fraction using pathLength\n effectiveDashLength = dashMeters / pathLength;\n effectiveGapLength = gapMeters / pathLength;\n } else if (dashRelativeToWidth) {\n // Width-relative mode: dashSize/gapSize are multiples of path width\n // Convert to path-distance fraction using radius\n effectiveDashLength = (dashSize * radius * 2.0) / pathLength;\n effectiveGapLength = (gapSize * radius * 2.0) / pathLength;\n } else {\n // Length-fraction mode: use dashLength/dashGap directly as path fractions\n effectiveDashLength = dashLength;\n effectiveGapLength = dashGap;\n }\n\n float totalLength = effectiveDashLength + effectiveGapLength;\n float numSegments = ceil(1.0 / totalLength);\n float adjustedTotalLength = 1.0 / numSegments;\n float adjustedDashLength = adjustedTotalLength * (effectiveDashLength / totalLength);\n float pattern = mod(fragPathDistance, adjustedTotalLength);\n opacity = pattern < adjustedDashLength ? 1.0 : 0.0;\n }\n\n\n\n if (showPulse) {\n // Add the pulse color to the path by determining how far the current fragment\n // is from 'pulse'\n float pulseLocation = remap(\n pulse,\n 0.0,\n 1.0,\n -pulseLength,\n 1.0 + pulseLength\n );\n float pulseDistance = smoothstep(\n 0.0,\n pulseLength,\n abs(fragPathDistance - pulseLocation)\n );\n\n // Blend the pulse color to the path based on how close this fragment is to\n // the 'pulse' value and whether it's covered by an arrow -- but if it's\n // covered by *both*, then we go back to using the regular path color\n // (making arrows look like \"holes\" when they're overlapping the pulse.)\n float pulseLevel = abs(1.0 - pulseDistance - arrowAmount);\n\n\n gl_FragColor = vec4(mix(finalColor, secondColor, pulseLevel), opacity * opacityMultiplier);\n } else if (displayArrowsOnPath) {\n gl_FragColor = vec4(mix(finalColor, pulseColor, arrowAmount), opacity * opacityMultiplier);\n } else {\n\n gl_FragColor = vec4(finalColor, opacity * opacityMultiplier);\n }\n // Checkerboard discard for x-ray effect. xrayDithering is a uniform so\n // the outer branch is warp-coherent (zero cost when disabled).\n if (xrayDithering > 0.0) {\n float cx = floor(gl_FragCoord.x / xrayDithering);\n float cy = floor(gl_FragCoord.y / xrayDithering);\n if (mod(cx + cy, 2.0) < 0.5) discard;\n }\n #include <colorspace_fragment>\n}\n";v();var vf="uniform float complete;\nuniform float nearRadius;\nuniform float farRadius;\nvarying float fragPathDistance;\nconst float completeLength = 0.1;\n\n// Map the x value from the range [xMin, xMax] to the range [yMin, yMax] using\n// linear interpolation/extrapolation.\n//\n// This performs a pure linear mapping 'y = mx + b' where\n// 'm = (yMax - yMin) / (xMax - xMin)',\n// 'b = -xMin * (yMax - yMin) / (xMax - xMin) + yMin'.\nfloat remap(float x, float xMin, float xMax, float yMin, float yMax) {\n return (x - xMin) / (xMax - xMin) * (yMax - yMin) + yMin;\n}\n\n// Map the x value from [xMin, xMax] to the range [yMin, yMax] using linear\n// interpolation, clamping result values outside [yMin, yMax].\nfloat clampRemap(float x, float xMin, float xMax, float yMin, float yMax) {\n return clamp(remap(x, xMin, xMax, yMin, yMax), yMin, yMax);\n}\n\nvoid main(void) {\n // this ensures that the stencil mask moves along with the path above it, to avoid the progress bar effect\n float completeLocation = complete * (1.0 + completeLength);\n float completeAmount = clampRemap(\n fragPathDistance,\n completeLocation - completeLength,\n completeLocation,\n 0.0,\n 1.0\n );\n float opacity = 1.0 - smoothstep(0.0, 1.0, completeAmount);\n\n // 2020/01/09 Terence Dickson\n // When we render the background and overlay for the mapbox outdoor context\n // behind everything else in single-buffer rendering, the fact that the path\n // writes to the depth buffer means that the background and overlay will not\n // be drawn behind the path even when the path is still fading in. The effect\n // is subtle and is only visible in single-buffer rendering so this quick fix\n // prevents writes to the depth buffer for zero opacity fragments, which gets\n // rid of the most visually-offensive ghosting.\n if (opacity <= 0.0) {\n discard;\n }\n\n gl_FragColor = vec4(0.0, 1.0, 0.0, opacity);\n}";var xf="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAAAAAB5Gfe6AAAQkHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZpZciQ7rkT/uYpeAicQ5HI4mr0dvOX3ATOl0li3q3SVJkUqFMEBcHc4IuX2///fcf/hK7cSXRatpZXi+cott9h5U/3j63EMPt+fL1/h+fPdeff6NnJMHNPjD2U/7+qcl183aH6eH+/PO52PN7E+B3qZ+Tlgspkjb57X1edAKT7Oh+fvrj3v6/nNdp7ftd057abHnz78npVgLGG8FF3cKSTPz2oXJFaQWuocCz9D0mhnEu8Tx54k6dexc98F77vY+f48n96HwvnyvKB8iNHzfJCvY3cj9HZF4dfM7/6QZ4j+7deb2J2z6jn7sbueC5Eq7rmpl63cd1w4GCrd2wov5Vt4r/fVeFW2OMnYIpuD13ShhUi0T8hhhR5O2Pc4w2SJOe5IuGOMM6Z7rhL+FudNSrZXOFFJz3KpkqtJ1hKn4+tawp233flmqMy8AlfGwGCBOz693Fcn/+b1OtA5Bt0QfH2NFeuKFnCWYZmzn1xFQsJ5xlRufO/LvcGNf5PYRAblhrmywe7HY4gh4Re20s1z4jrx2fkHNYKu5wCEiLmFxYREBnwJSUIJXmPUEIhjJT+dlceU4yADQSSu4A65SamQnBptbu7RcK+NEh+nkRYSIZBGSQ0EIlk5C/jRXMFQlyTZiUgRlSpNekklFymlaDGN6po0q2hR1apNe001V6mlaq211d5iS0iYtNLUtdpa651JO0N37u5c0fuII408ZJSho442+gQ+M0+ZZeqss82+4koL+q+y1K262uo7bKC085Zdtu662+4HrJ108pFTjp562umvWXtm9X3WwofM/T5r4Zk1y1i+1+mvrHFa9WWIYHIiljMyFnMg42oZANDRcuZryDla5ixnvkVIIZGsBbHkrGAZI4N5hygnvObuV+Z+mzcn+Y/yFr/LnLPU/RuZc5a6Z+Y+5+2LrK1+K0q6CTIWWkx9OggbF+zaY+1Wk/766H46wF8ONFY+O8hBMEc7oc4Vdh+8JsE+PUSrVjr70Zz1+H56PH3o9sRR1ql5Ha8bUMQxpe89Tki8Sb0tE23cw3DcfEo+ugnj2G3WEmononVfoag71pVjR+EmAE53eT5tqYfEHl/7ThMusaI+St0jktFa9gKnreiQqCNpZ2mJdSkbaiK6DrovYR4/JhJfRsx5d5EVZnEIPetHnU5KynJPTSuCPuC0lOuXH7n1DNq7DpUtHbhM5lDA0c2bnDCJoOObMnyj+aPjPwx0yiDUxKKsg35VnRnBEVhonKwK5hOk5NttUrhr2+tMOXkPJb1RZ+iAelYjL2MuO3pGRQ78GdxwOOaTAcJZcewq7ilB1RJCSozUdSEdwVJVb6asiBsHH1Bqgbiv3Cmkkis6ktVnZGRRwMNJjUA3Ao2127YWdhAIblxF51hzMcZsVZc0r0dJo5Liqfn41Q+q193SGhhkMkgaLJRNnEpqBtyVvbcVffIk+LE9QPFBTMTQe0aWkMXMnx3dy5sfHreDE60Ql50E+SqRcmfK16L2p0Ol8JFATu3qASXy7SvmiGW2cdMBxsty44CvtLogfGlv7WkCSV0WId2270EaD5Ym40cs+SAwZuNjPSTywAvEfLmzQhtLDntfCnhl/fNmUNnzyA2g76Zn0SP+c+I6bCC0FONUQ4L50e95dif+DH/m9htQjBEhPPpOjYjmm2ChbfEMIUaYtAIxmWJHlilLU8ZRs9pCsHbDpFaRgZljz2QandjDIBPZDGTuoZW1KdlYh52ALzisKJRNWSQmLAWx8iv9mGttT15bBc2oxd57bZtVF98CYtK3UH22Yd/A7WaKa+ZjNTOXEzNhMJ5kmQOvfzsbxbZALJ2xwGBjX2HFQybhi7kpbA7DVpS3RxMJwFyHwGk5gs6a4lrRHVqhYT0QTJC9UZcC9Yrelkn6yXch68NKNtG7CiU3vf/zMZAYXPWdrR9XZ/ctMV1sJQ2wJEGxzaHs7LmmHIwnUwbwnNAapBY9xhE19DNJW3ua0dDk/AjwITacR0PqZxkbyJ+E5jYbxI84x1TBE+y90hwDCYZIM0tqAKPZfCzFrbH8kYCm3eqQkZ2+2GovcL8Suokyg8yyCJes6dcouSLiNSLb0ETJU+/N/WFsBBSOXBbm9Cwp4CzlOag7ro7R2vC19nSsCPmAjIEMiobFwaoVXhjTU2XMpgEsDH/L3Sx54OCTMUSXI/IIA2V4QcLQpwVz12pInI0bY56pIQ2BSGRLL+yLfZ7JkiimbK+aepsbwRStpokx5gCqe1hjdMAwcINbkk5jmedrNRAG5pUXPe0sZIoXy1h7lSDxApzheg24JeDNtDS1oBDBUC4iWZFilBPhZx0Kqx2lihpbG9q4sYidksCN4yRYhNM4nxfBbTi4E3AT6B3igbvs9Gv8ZkHsIfdlep+2HelEDbkJdNjqZQ90B7k6OIoFfkkPNoY+z0gzACa1f2qcBYxVJpT2QQgS19dKQlbC24S92xiEAFRKB5Uy1qrBgOtwIge55G0kRPfIytGx0tMOrGfrijB2FHOk/TKcMjDTMPeBo4FnXD5cQ8vtdgoAN0yuzZQHQI09wm/5vAB6RHyI9rYKiZ6YWC6rbaiLmDtoaToC1bViXQFNtgWsOfEEKCleC3GWPSfgQWRQWMgw/9FDgvOZrFAT3SmsA3DLbqlsSppQG5QeOjPXavUUkxF/qgLM05vW5o7UakuBqo2ZW8Nj0LB7imVJC9QSA+wd7RPztIUZ80xQZq0ROrc8CSVncWzkTA/RwmunldCPAQKjqVC7bhRuTIv0plbk7gOX4m5OAi2YesYZ0KBQRToG8iv9x8dgGtgECYRBeEU87OxoSc8epu+s7Mq/MN0VbBT19dii7ekO66UZwdAMtoAVQd13J5nwZe98OgGslmVqAGBkeLZNVNVlWpV18qihntXKnBZvrDIVgFpx4q5poLqREOVplMPSpTF2KvjBAzDpprkruXIaaUmUD4Xo2yrGWcYlixKIwRFjl0jPQhKznUXZAoSjlg9c/NwAI4p3Q/w5bCNfhUZS7bGfqesHqKAlyZZxZgNrhGevZXccaqBys4NEqB3Vqfptji9uUrhCL6yXFqxtm0hhLyYU3Tjd8I/HZaWD1oyVjnG5hhpCN5yHSf8BQUZlVNd00OP4M0TK+JSM7iqWi01SinFkCQXWxiZJLqqAHiEt3G3I2WYd46KU9pIJIOkoRQYCcEAAPguHo0Y4k8Hl6SW50MoW0uZU8jJOUghKo38Nl5ZSwsJNAUC2/lFZWkfMjrU8dFrTjHpJnUrLCILQIxINiYdQlDXaE/razQ4jjQluN5jW1Eh/S7yYvI5gigSjdLYU9TiFXAcHjISiLhQd9obb3OQmwY+YqVwiBMCkOGLXaK/ljBShh56c1g0uyIb2lBRKO7ZTAFncw5c5UGjGSy3CsI1Jt2mtruZkfhBZmbR+842Yu1eDiWEl0V6LZcGem6Ct+LW4Wy3oAjyNObazKBHomhJ3HMKEKHgiGksH+Ig1nTidfNMyA+oYHqVFaRGLiQreVLc9GvQgftKjW9cfUSKNYL80rqU7Um2rwqQJR1ai31Wq7vzKJEsFHDj0bAEMUKXgvfD5bWbaLPBTKz1Nk/Fg+GUZvUzFw80CLaKtPAACVAWrismh863FU4IJ0716SXBUNVb/SDMVvZgDt34CXoOq1JKvg0n08gPHTwXBNgD5W8pZZ8E9EVWcv1DZMB2NFysIwkqBSaH5QRmsAHdkHB+UANvLJvFpQKAahSmYTLEd2AFO+5rsqRRU6sVv5IP0wsSPLcWsbC1Y95mte71CUm6RJJWwkg6Q4k+xWMM0ByElJPQ6j2ED5hY42ALpZRytx9RlgQlJLijzhKi5eX5JBSIRGfo9o2xhd/0aWku8OS+4D9ZnovHDQMPaYo4qm2mlZbUnd7pR6oQj29Z2BqJ9n3LRT+MTLu3IR+ZP2TCPh3EDw8H1NHpoT7FibNYU8WHd9ESHcY12aDOQCUBddi4Ucp+4yuzz8ybcCCu1h8zvzXhDN4HYLq1R+U0xzUqg5QSA3iSBgdDouy55Ifx0DaeEhgezxBRGmoEJ6AJitVuzwtKPlUskHgU2F0LS7AFIwW5jPu0RUL7sp+fkNk0ee8P6uXYgl40WM+cdCOW21r13e0ivt0ff/mYcUfrQZWs2BiN6G+MDTGz1BKORmUTNQp9YGSHFxAeTkQrKd6FoVUogyytW25OLy3OpaO5oZCQp46aPzb5LnJiFEIwAKkmbYVYIjzVv3vj7rA6HignEeQAXTAHKDhoD7Uujh0QjtsB6fTP1NzO7T1Nzq4F1GnfHdXCG1Yxjwdtjf+PGRGTzEtEAUCz7KLfTdItLwCXuSOAzVjaZB6LvbUZhYGWmifSZlcMDnGHPd6gPeiK9erhpiw7ZP9ahTrMhFDa1J53m9ri2DloziqGETTcVSppCbTDDjExg6RrZ6cPEzB8XArEjQSB29odrUoLyoS/65RfM9fprGGjlHpbhGgbYD8MtmW1eFcAWX5dbcMHcl8sUI2k+H7GPW9VrArw3G+BefcCrCaAT/N53YLvP26Uy0kMFnDEZz0DJkmQqEOlL7SlKweYhH8gxpYeAYi0f9magqPbMYZuUI6007lSZQoyoGfYQHsNRzHXR3MMINTSMZpq1KD2A5MDJgtMLdRU6R4CEOJcKGiIJ7K6P/vAM6xpECHI8rRHsaEj6smkngAUjXTzrRoSI48ZpHOqgOY5OejKVdpnmiYUChQnVdIPa6ekGqRSRgEO119oDHOiIUQ5ciYVgaF1oG8Udo8WYtD+DEi8D/w8rAJE2k2PoyV0oMtpauxreaFjpujAvxFlwBhjuNqM9P0IfI5iD8Nh8y1kG4igjJkDNkOijnlLhItAd9lhRd670yNRTu95cR/Xuu0c5WO4DEFk5YQAPtLvU4TYPGRh4APPEDNiuuwR6SC21JoFbQBBMr+zJmT32QplNI6p16PbculN/pCX1wAyTWGTeJ774aln0gvQikw7TmkfsNbdQNs0adutYUDqNtGc0RqngUYdhUYuHSL1/eLrgvqDTC5neu++vufRkEgP9D2T64Kg/c4n+s7k3dDr3me8nOr0c72MRNmgF7D4WySPP0YAI/bI4eixwc7K13QiRiL85A8fnSsUj+mvTrsZtVUEQZ6sTpVafW8nYJZyaZS0U+0xIb6et9PhhtoObozQbjKAoDf6eiFgx1UUvpUYj1GweH0MNMrofhynfWn7+KYu7n5r83hN9aqm+6qjcH7dUlgvZVLV3xqq4fbP16qv+eofuTz43eomAqfS7GBAB9zEE31WJ37eVIPtdGN5A8nMYPvvLt8t2/V/6gM19G4g/hIL7UXf9JgbuLRZ+AoW//AzyMxTcWyz8BAruLRZ+AgX3r3y2+mT/PwfiN1DoVI+QT3CZDmvb8022JeYb6HiQPQpPPvboFB+i1MZdcqWZqthHmix6vttw0UAI1z8oEnGwVe++c7JamxslC+8xKJE41XJmug1npz+6CUAKyURd9gSxo+kWxvtZth848GBlws/0SKjYhmbZ9IiV+mcGBSdWHk8sqSr2zz5J7QME/0yD+z4Pe+JuGn1MV/vUyZwOHojWPlmPXgf9CuoeN9UAT+FGwaLg44v3dWe6QpvuL3Ln/p3k/2AgqNDcfwHgqUmIIqn+hwAAAAJiS0dEAACqjSMyAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH4wYRESAMujenGAAAB9FJREFUeNrtnWlsFVUUx899fS1gUoKioEY+WBRUEohGkUhAKxgEjSgGoRGB4AJCNKAIJBJZJSiyGYMKKkIoLlEUKhUraxFkKUE2kU1aCrRgW2jpg9f29R2/sBTo67v3zL2zvfP73MzM+XU6mf+5504BGIZhGIZhGIZhGIZhGMZGGq3JvSmR62++BXHH7Ylbf9ouRMT99yVq/e0PICIiHumUmPV3PooXOf5EItafXoCXOdUn8ep/pgjrUDY40ervX4JXUTEiocoXL5/FawiNEwlU/6hzeB3hqQljQIwJYT3UzEkQA2JiGOslsiAhDIgZ1RiD6NIEMBD8NIKxyQr6vv7FtdgQa31uILg0ig2zsZmv4//yePUj7rjNv/U3yUEJ/r7Xr/XfvBmlOPKwT+vfhpIUdvdj/Wm7UZpTz/mv/g4HUYGyQb5r/+SjEhXD/VV/j5OoSGisj16LRe9iVCY8xTcGxIulSKBmtk8MiKHlSMIn8ViMqkQivojHgfcuIJ0VAc/XPzmMVljrcQOBmdVojY1NvVx/8mcRtEqeh+NxypJatM6+ezxb/7Io6uBwR4/e/1moicJunvz956A2ip/1Xv3Nt6JGSgd6rf47/0KtlHssHrfZi5rxVDwWDx5C7XgoHotHC9AANbO8YqBXERohMt8bv/8X/kNDRDM9cA+IgWVojhWuNxAYXo4mWePyeBwYHUKz5Lo6HidNvICmybvVxfXPqEbz7Gvr2vrn1KAdHH7IpX//8yNoD8dcGY+TM6NoF26MxzLTL26Mx0majtM4q5ed7yhNulVsd5WAxqset/mGS6/d5CIBLXI62/7I6ZKyzjUC0rIfsP+hE3zkxt9c8vy7tPnJbiKfuyP+Xdn8ZDeuiMei+zF0juWOGyBNv+iMxw4bEBkl6CzOxmPx6ll0mryWDtb/ViU6z17H4rEYG0I3cMiheByYFEZ34Ew8Dn5UjW7BiXisY/rFDfGYmgWCCwcngXto0q08z1YBSUsy3NWgb5Qe2WSjgJRlfdy2RJPcNXm9bQIarexpsP5VdxHjcbMcm2Q3/5P64i71U8k/ELuLNsVjcct2cnST+rGg+Jo4XmhLPBZ376GOfoOkAIB5NWTHxuu/nzj9ElkA8gLgA+pLlvF43IU4/VI9G1QEAHnIPjfVaP1PnqRdVngKqAkActDMa2Hw/u9zijjjNg5UBcBr1FbD3jbG6h9QSruk8ovfyFESABnUWSNT8VgMI06/lF7aBqomAJ4n3m+G4nHgbeJfZfHljcCKAqDHcWo87m2g/gnE53LhlS+lqQqATv9S4/FL2u//qcT2T34XoAuAdvuJBspf11z/LOKbyYG6q4bqAqDVTqKByjFa21/U6ZfdaWBNADTdTDQQnqSv/pRMYjrZevVLCUUAiF+JBqpnaqv/J2I+zb3mxZwkAMTPDq8ep1A3P/1y3ZOEJABgiaPxuOnvxLN/B7oEwELq/sPl1utvSdz8VPsl6BMAn1AbBKut1t96F+3ENXOFTgFiehXRwAZL8Vi0JW5+qppW7+HIAgDGnyca2G4hHouOh2knvTARdAuAkedsj8cinTj9Ujka9AuAV87YHI/F08TNT2eHgQkB0I/aIDhGmuIU/YnnKxkAZgTAU8SGHC0eDyJufiqKfTKrAqBrPtFAiXo8HlFBO1VBA7ebZQHQifhUVo7H4p2QgQeOdQHQbp8t8Tg4idj+2dPgwJIGAdBqhw3xmDz9EuelQ4cASP3DeDwOziW+ecdbldEiACDbcDxOWkBs/8QNHpoEAPXjLNFMmfpv+IZ4+PjRU5cAWGwwHqcQNz/J2NUmAMgjavHjMfEPTGpvvz4BQH1MrzMkoHoW2CsAppEaBFskemQUA+HJYLcAeJfQINgpNVuvbiA0FuwXAG8qNwh2S07WqxqQ/saPXgEwRDGu7W8te2Q1A6XSH0HWLAD6nVa5zoPS9asZKJb/DLZuAdDzhPx1Hu2gkobkDRQq/J8w7QJAfstevuI3+WQN1F39dkAAtP9H7jpPdFVtiMgZOKC0Z9aAAEiT+mrbScLQjIyBXWngtABokRf/kKefonRF4xvYqrjmYEQApG6Md8SyvrS+eDwDG5QbzUYExL3QMxnUlZGGD5wFbhEADQ7YVwyhr401YCD6LbhHACyK3SA4N9TK6mhMA5EvwE0CYF6sBkFopLXl8exYq9/gLgHwYf3x+PxoqwMC9RoIvw9uE1D/gH3VeOsjItnSq9/OCqhvwL5qAoABA5XU28qsAHjj2tW8mukABgzEXP12WgAMvrpBEPkYwICB2KvfjguAvnUH7GvnARgwUGRhEt24gLoD9tGvAAwYKLDyySzzAqDzpQH76CIAAwYOWtqNYoMAaH9xwP57AAMG9ljbj2SHALhjJyLijwAGDGyzuCPNFgGQuhlxpfw1yR94dfAxi5cmojI/lRyx+rtaX9XDhADr2CVABc//JycWwAJYAAtgASyABbAAFsACWAALYAEsgAWwABbAAlgAC2ABLIAFsAAWwAJYAAtgASyABbAAFsACWAALYAEsgAWwABbAAlgAC2ABLIAFsAAWwAJYAAtgASyABbAAFsACWAALYAEsgAWwABbAAlgAC2ABLIAFsAAWwAJYAAtgASyABbAAFsACWIDToH8FyJUWtVWAALedDoFhGIZhGIZhGIZhGIYxyf+YwEMsIhMo/AAAAABJRU5ErkJggg==";v();var Sl=new N,Ml=new N,Hi=new N,Sf=new N,wn=new N,Fv=.5,Gv=2;function Bv(i,r,e){let t=i.x-r.x,n=i.y-r.y,o=i.z-r.z,a=e.x-r.x,l=e.y-r.y,s=e.z-r.z,u=t*a+n*l+o*s,h=Math.sqrt(t*t+n*n+o*o),m=Math.sqrt(a*a+l*l+s*s);if(h===0||m===0)return 0;let d=u/(h*m),f=Math.max(-1,Math.min(1,d));return Math.acos(f)}function Ef(i,r=20){if(i.length<3||r<=0)return i;let e=r,t=r/2,n=[i[0]];for(let o=1;o<i.length-1;o++){let a=i[o],l=i[o-1],s=i[o+1],u=a.distanceTo(l),h=a.distanceTo(s);u>e&&(wn.subVectors(a,l).normalize(),Hi.set(a.x-wn.x*t,a.y-wn.y*t,a.z-wn.z*t),n.push(Hi.clone())),n.push(a),h>e&&(wn.subVectors(s,a).normalize(),Hi.set(a.x+wn.x*t,a.y+wn.y*t,a.z+wn.z*t),n.push(Hi.clone()))}return n.push(i[i.length-1]),n}var Mf=.0025;function Cf(i,r,e,t=Math.PI*2/3){if(i.length<3||r<=0||e<=0)return i;let n=[i[0]];for(let o=1;o<i.length-1;o++){let a=i[o-1],l=i[o],s=i[o+1],u=l.distanceToSquared(a),h=l.distanceToSquared(s);if(u<Mf||h<Mf){n.push(l);continue}if(Bv(a,l,s)<t){Sl.subVectors(l,a).normalize(),Ml.subVectors(s,l).normalize();let d=Math.sqrt(u),f=Math.sqrt(h),b=Math.max(Fv,Math.min(Gv,r)),x=Math.min(b,d*.5),y=Math.min(b,f*.5);Hi.set(l.x-Sl.x*x,l.y-Sl.y*x,l.z-Sl.z*x),Sf.set(l.x+Ml.x*y,l.y+Ml.y*y,l.z+Ml.z*y),n.push(Hi.clone(),Sf.clone())}else n.push(l)}return n.push(i[i.length-1]),n}var ri=8,Yu=fr,Nv=new Za,El=new N,wf={h:0,s:0,l:0};function $u(i,r,e=.2){return i.getHSL(wf),r.copy(i).offsetHSL(0,-wf.s*e,0)}function qu(i,r){i.stencilWrite=r,r&&(i.stencilRef=Ar.PATH,i.stencilFunc=Ir,i.stencilZPass=Wt,i.stencilZFail=tt,i.stencilFail=tt)}function Ju(i){return i===!1?-1:i===!0?0:Math.sin(i*Math.PI/180)}function Df(i,r,e){var mi,Vt,_h,Fh,Gh,Bh,Nh,kh;if(i.length<2){let j=new Bt;return j.userData={entityId:"",type:"path"},{mesh:j,material:null,center:new N}}let{breakpoint:t,width:n,accentColor:o,completeFraction:a,isVertical:l,visibleThroughGeometry:s,dashed:u,highlightCompleteFraction:h,highlightStartFraction:m,highlightEndFraction:d,highlightColor:f,highlightWidthMultiplier:b,xrayOpacity:x,xrayStyle:y,__EXPERIMENTAL_BILLBOARDING:g,__EXPERIMENTAL_PREVENT_SELF_OVERLAP:S}=r,{color:M}=e,E=!0,w=0,_=1/0,L=r.displayArrowsOnPath,T=!0,C=L,R,O;if(Gn(n)){let j=en(n)/2;R=j,O=j}else if(typeof n=="object"){let j=r.parsedOutputValues;R=j[t]/2,O=((mi=j[t+1])!=null?mi:j[t])/2}else R=n/2,O=n/2;let B=r.__EXPERIMENTAL_GEOMETRY==="ribbon",k=B?Ju(g):-1,J=((Vt=e.altitude)!=null?Vt:0)+kv,z=0;i[0].z+=J;for(let j=1;j<i.length;++j){i[j].z+=J;let Y=i[j].x-i[j-1].x,Te=i[j].z-i[j-1].z;if(l)z+=Math.sqrt(Y*Y+Te*Te);else{let Oa=i[j].y-i[j-1].y;z+=Math.sqrt(Y*Y+Oa*Oa+Te*Te)}}let U=i,ce=(_h=r.smoothingCornerRadius)!=null?_h:Rr.cornerRadius,te=(Fh=r.smoothingTension)!=null?Fh:Rr.tension,G=ce>0&&te>0;G&&(U=Ef(U),U=Cf(U,ce,te));let[H,V]=r.__EXPERIMENTAL_ENDCAP_EXTENSION;if((H>0||V>0)&&!l&&!B){let j=U[0],Y=U[U.length-1],Te=G?.01:-.01;U.push(Y.clone().setZ(Y.z+Te)),U.unshift(j.clone().setZ(j.z+Te))}if(B&&!l&&U.length>=2){if(H>0){let j=U[0],Y=U[1];El.subVectors(Y,j).normalize();let Te=j.clone().addScaledVector(El,-H);U.unshift(Te)}if(V>0){let j=U[U.length-1],Y=U[U.length-2];El.subVectors(j,Y).normalize();let Te=j.clone().addScaledVector(El,V);U.push(Te)}}let pe=new rd;C&&(pe=Nv.load(xf),pe.colorSpace=Nn);let be=new le(M),Be=new le(o),ge=r.__EXPERIMENTAL_BORDER,Ee=(Gh=ge==null?void 0:ge.enabled)!=null?Gh:!1,Oe=(ge==null?void 0:ge.color)==="darken",Re=(Bh=ge==null?void 0:ge.width)!=null?Bh:.1,Ze=Oe?be.clone().multiplyScalar(.6):new le((Nh=ge==null?void 0:ge.color)!=null?Nh:"#000000"),Ce={vertexes:{type:"f",value:1},resolution:{type:"v2",value:new he(1,1)},cameraParameters:{type:"v2",value:new he(w,0)},complete:{type:"f",value:E?0:1},color:{type:"c",value:be},pathLength:{type:"f",value:z},nearRadius:{type:"f",value:R},farRadius:{type:"f",value:O},nearZoom:{type:"f",value:w},farZoom:{type:"f",value:_},pulseColor:{type:"c",value:Be},pulse:{type:"f",value:0},pulseLength:{type:"f",value:.075},pathIsVertical:{type:"b",value:l},arrowAnimationTimer:{type:"f",value:0},arrowTexture:{type:"t",value:pe},displayArrowsOnPath:{type:"b",value:L},showPulse:{type:"b",value:T},opacityMultiplier:{type:"f",value:1},dashed:{type:"b",value:u},xrayDithering:{type:"f",value:0},highlightCompleteFraction:{type:"f",value:h},highlightStartFraction:{type:"f",value:m},highlightEndFraction:{type:"f",value:d},highlightColor:{type:"c",value:new le(f)},highlightWidthMultiplier:{type:"f",value:b},dashLength:{type:"f",value:r.dashLength},dashGap:{type:"f",value:r.dashGap},dashRelativeToWidth:{type:"b",value:r.dashRelativeToWidth},dashSize:{type:"f",value:r.dashSize},gapSize:{type:"f",value:r.gapSize},dashAbsolute:{type:"b",value:r.dashAbsolute},dashMeters:{type:"f",value:r.dashMeters},gapMeters:{type:"f",value:r.gapMeters},isRibbon:{type:"b",value:B},billboardThreshold:{type:"f",value:k},borderEnabled:{type:"b",value:Ee},borderColor:{type:"c",value:Ze},borderWidth:{type:"f",value:Re},borderUseDarken:{type:"b",value:Oe},endcapEnabled:{type:"v2",value:new he(B&&H>0?1:0,B&&V>0?1:0)},cameraViewMatrix:{type:"m4",value:new Se},screenSpace:{type:"b",value:r.screenSpace},metersPerPixel:{type:"f",value:1}};if(G&&U.length>=2){let j=U[0],Y=U[1],Te=U[U.length-1],Oa=U[U.length-2],Xg=j.clone().sub(Y).normalize(),Yg=j.clone().add(Xg.multiplyScalar(Tf));U.unshift(Yg);let $g=Te.clone().sub(Oa).normalize(),qg=Te.clone().add($g.multiplyScalar(Tf));U.push(qg)}let wt=new hd(U);wt.curveType="catmullrom",wt.tension=G?te:0;let Qt=B&&G,Ht=new vl(wt,U.length,Qt),Ae=zv*U.length,_e=B?new bl(Ht,{segments:Ae,billboarded:k>=0}):new dd(Ht,Ae,R,ri,!1),Rn=new Float32Array(_e.attributes.position.count),er=new Dt(Rn,1);if(B)for(let j=0;j<=Ae;j++){let Y=j/Ae;er.setX(j*2,Y),er.setX(j*2+1,Y)}else for(let j=0;j<=Ae;j++){let Y=j/Ae;for(let Te=0;Te<=ri;Te++)er.setX(j*(ri+1)+Te,Y)}_e.setAttribute("pathDistance",er);let qr=new Float32Array(_e.attributes.position.count*3),mr=new Dt(qr,3),tr,Ft,wr,Jr,Kr;if(B){let j=_e;for(let Y=0;Y<=Ae;Y++)Ft=Y*3,wr=j.tangentData[Ft],Jr=j.tangentData[Ft+1],Kr=j.tangentData[Ft+2],mr.setXYZ(Y*2,wr,Jr,Kr),mr.setXYZ(Y*2+1,wr,Jr,Kr)}else{let j=_e;for(let Y=0;Y<=Ae;Y++){tr=j.tangents[Y];for(let Te=0;Te<=ri;Te++)mr.setXYZ(Y*(ri+1)+Te,tr.x,tr.y,tr.z)}}_e.setAttribute("pathTangent",mr);let _n=new Float32Array(_e.attributes.position.count*3),Tr=new Dt(_n,3),Dr,rr,Gt,fe=new N,re=j=>{l?(Dr=j.x*j.y,rr=-1+j.y*j.y,Gt=j.z*j.y):(Dr=-j.x*j.z,rr=-j.y*j.z,Gt=1-j.z*j.z);let Y=Math.sqrt(Dr*Dr+rr*rr+Gt*Gt);return Y===0&&(Y=1),fe.set(Dr/Y,rr/Y,Gt/Y),fe},W={x:0,y:0,z:0};if(B){let j=_e;for(let Y=0;Y<=Ae;Y++)Ft=Y*3,W.x=j.tangentData[Ft],W.y=j.tangentData[Ft+1],W.z=j.tangentData[Ft+2],re(W),Tr.setXYZ(Y*2,fe.x,fe.y,fe.z),Tr.setXYZ(Y*2+1,fe.x,fe.y,fe.z)}else{let j=_e;for(let Y=0;Y<=Ae;Y++){tr=j.tangents[Y],re(tr);for(let Te=0;Te<=ri;Te++)Tr.setXYZ(Y*(ri+1)+Te,fe.x,fe.y,fe.z)}}_e.setAttribute("pathNormal",Tr);let ae=new jt({uniforms:Ce,vertexShader:xl,fragmentShader:Xu,side:Yu});ae.transparent=!0,ae.alphaTest=.5,Ce.resolution.value.x=1,Ce.resolution.value.y=1,Ce.vertexes.value=_e.attributes.position.count,Ce.arrowTexture.value.wrapS=no,Ce.arrowTexture.value.wrapT=no,Ce.arrowTexture.value.anisotropy=16;let K=new me(_e,ae);K.name="path";let se=K.clone();se.name="xray";let ue=y!=null&&y.color?new le(y.color):be,He=$u(ue,new le,y==null?void 0:y.tint),Xe=De(X({},Ce),{color:{type:"c",value:He},opacityMultiplier:{type:"f",value:x},pathIsVertical:{type:"b",value:l},xrayDithering:{type:"f",value:(kh=y==null?void 0:y.dithering)!=null?kh:0}});Xe.complete.value=1,se.material=new jt({uniforms:Xe,vertexShader:xl,fragmentShader:Xu,side:Yu,transparent:!0}),se.material.alphaTest=.5,se.material.depthWrite=!1,se.material.depthTest=!1,qu(se.material,S),Xe.resolution.value.x=1,Xe.resolution.value.y=1,Xe.vertexes.value=_e.attributes.position.count,Xe.arrowTexture.value.wrapS=no,Xe.arrowTexture.value.wrapT=no,Xe.arrowTexture.value.anisotropy=16,Xe.complete.value=a,K.userData=se.userData=r.mesh.userData;let ot=r.mesh;if(!s){let j=new jt({uniforms:Ce,vertexShader:xl,fragmentShader:vf,side:Yu}),Y=new me(_e,j);Y.name="stencil",Y.material.colorWrite=!1,Y.material.stencilWrite=!0,Y.material.stencilRef=Ar.PATH,Y.material.stencilFunc=gi,Y.material.stencilZPass=Wt,Y.material.stencilZFail=tt,Y.material.stencilFail=tt,Y.material.depthWrite=!1,Y.material.depthTest=!0,Y.userData=r.mesh.userData,ot.add(Y),ot.add(se),se.renderOrder=qe.XRAY_PATH,K.renderOrder=qe.STENCIL_PATH}if(ot.add(K),l){let j=new Ve().setFromObject(K),Y=new N;j.getCenter(Y),ot.children.forEach(Te=>{Te.geometry.center(),Te.position.copy(Y)})}s&&(K.material.stencilWrite=!0,K.material.stencilRef=Ar.PATH,K.material.stencilFunc=Ir,K.material.stencilZPass=tt,K.material.stencilZFail=tt,K.material.stencilFail=tt,K.material.needsUpdate=!0,K.layers.disableAll(),K.layers.enable(qe.ALWAYS_ON_TOP_PATHS)),_e.computeBoundingBox();let ht=new N;return _e.boundingBox.getCenter(ht),{mesh:ot,material:ae,center:ht}}var kv=.15,zv=30,Tf=.01;var Uv=.5,Pf=new le,ta=class extends ve{constructor(e,t,n,o){super();p(this,"rendererState");p(this,"verticalDistanceDirty",!0);p(this,"convertTo3DMapPosition");p(this,"getParentContainer");p(this,"convertZoomLevelToAltitude");this.rendererState=e,this.convertTo3DMapPosition=t,this.getParentContainer=n,this.convertZoomLevelToAltitude=o}update(e,t,n,o){let a=!1;for(let l of this.rendererState.geometry3DsInScene)if(l&&l.type==="path"&&l.components[0].type==="path"){let s=l.components[0],u=l.components[1],h=s.isVertical&&this.verticalDistanceDirty;if(!(s instanceof mn))continue;let m=[];if(s.dirty||u.dirty||h){if(s.mesh.parent!=null)for(let d=s.mesh.children.length-1;d>=0;d--)at(s.mesh.children[0]);if(s.feature.features.length===2&&s.feature.features[0].properties.parentId&&s.feature.features[1].properties.parentId){let d=s.feature.features[0],f=s.feature.features[s.feature.features.length-1],b,x,y=d.geometry.coordinates[2]||0,g=f.geometry.coordinates[2]||0;d.properties.parentId&&(b=this.getParentContainer(d.properties.parentId,!0),b!=null&&b.altitude!=null&&(y+=b.altitude,s.isVertical=!0)),f.properties.parentId&&(x=this.getParentContainer(f.properties.parentId,!0),x!=null&&x.altitude!=null&&(g+=x.altitude,s.isVertical=!0));let S=this.convertTo3DMapPosition(d.geometry.coordinates[1],d.geometry.coordinates[0],y),M=this.convertTo3DMapPosition(f.geometry.coordinates[1],f.geometry.coordinates[0],g);Math.abs(S.z-M.z)>Uv&&b!=null&&b.visible&&x!=null&&x.visible&&(m=[S,M])}else{let d=s.feature.features;for(let f=0;f<d.length;f++)if(f===0||!Pd(d[f].geometry.coordinates,d[f-1].geometry.coordinates)){let b=this.convertTo3DMapPosition(d[f].geometry.coordinates[1],d[f].geometry.coordinates[0],d[f].geometry.coordinates[2]||0);m.push(b)}}if(m.length>1){let{mesh:d,material:f,center:b}=Df(m,s,{color:u.color,altitude:u.altitude,isVertical:s.isVertical});s.mesh=d,s.material=f,s.position=b}s.dirty&&typeof s.width=="object"&&s.width.on==="zoom-level"&&(s.altitudeBreakpoints=s.width.input.map(d=>this.convertZoomLevelToAltitude(d))),s.dirty=!1}u.dirty&&(s.mesh.children.forEach(d=>{if(d.name!=="stencil"&&(d.name==="xray"?Of(u.color,s,d.material.uniforms.color.value):d.material.uniforms.color.value.set(u.color),d.material.visible=u.visible,d.material.needsUpdate=!0,d.name!=="xray")){let f=s.__EXPERIMENTAL_BORDER;(f==null?void 0:f.color)==="darken"&&d.material.uniforms.borderColor.value.copy(d.material.uniforms.color.value).multiplyScalar(.6)}}),s.mesh.position.z=u.altitude,u.dirty=!1),s.material&&(s.mesh.children.forEach(d=>{var b,x,y,g,S,M,E,w,_,L,T,C;let f=d.material.uniforms;if(d.name==="stencil"){s.materialDirty&&If(s,d.material);return}if(s.materialDirty&&d.name==="xray"&&f.opacityMultiplier&&(f.opacityMultiplier.value=s.xrayOpacity,f.xrayDithering.value=(x=(b=s.xrayStyle)==null?void 0:b.dithering)!=null?x:0,Of(u.color,s,f.color.value),qu(d.material,s.__EXPERIMENTAL_PREVENT_SELF_OVERLAP)),typeof s.width=="object"&&s.width.on==="zoom-level"){s.altitudeBreakpoints&&s.altitudeBreakpoints.length>2&&$.warn("Path width interpolation does not yet support more than 2 breakpoints! This will be added in a future version. Path width will only use the first two breakpoints.");let R=Wh(n,(g=(y=s.altitudeBreakpoints)==null?void 0:y.slice(0,2))!=null?g:[e,t]);s.breakpoint=R,f.nearZoom.value=(M=(S=s.altitudeBreakpoints)==null?void 0:S[R])!=null?M:e,f.farZoom.value=(w=(E=s.altitudeBreakpoints)==null?void 0:E[R+1])!=null?w:t;let O=s.parsedOutputValues;f.nearRadius.value=O[R]/2,f.farRadius.value=((_=O[R+1])!=null?_:O[R])/2}if(f.cameraParameters.value.x=n,f.metersPerPixel.value=o,f.cameraViewMatrix.value.copy(this.rendererState.cameraObject.matrixWorldInverse),s.materialDirty){f.displayArrowsOnPath.value=s.displayArrowsOnPath,f.pulseColor.value.set(s.accentColor),f.complete.value=s.completeFraction,If(s,d.material),f.dashed.value=s.dashed,f.dashLength.value=s.dashLength,f.dashGap.value=s.dashGap,f.dashRelativeToWidth.value=s.dashRelativeToWidth,f.dashSize.value=s.dashSize,f.gapSize.value=s.gapSize,f.dashAbsolute.value=s.dashAbsolute,f.dashMeters.value=s.dashMeters,f.gapMeters.value=s.gapMeters;let R=s.__EXPERIMENTAL_BORDER;f.borderEnabled.value=(L=R==null?void 0:R.enabled)!=null?L:!1,f.borderWidth.value=(T=R==null?void 0:R.width)!=null?T:.1,(R==null?void 0:R.color)==="darken"?f.borderColor.value.copy(f.color.value).multiplyScalar(.6):f.borderColor.value.set((C=R==null?void 0:R.color)!=null?C:"#000000"),f.borderUseDarken.value=(R==null?void 0:R.color)==="darken",f.billboardThreshold.value=Ju(s.__EXPERIMENTAL_BILLBOARDING);let[O,B]=s.__EXPERIMENTAL_ENDCAP_EXTENSION;if(f.endcapEnabled.value.set(O>0?1:0,B>0?1:0),f.screenSpace.value=s.screenSpace,Gn(s.width)){f.nearZoom.value=e,f.farZoom.value=t;let k=en(s.width);f.nearRadius.value=k/2,f.farRadius.value=k/2}else typeof s.width=="number"&&(f.nearZoom.value=e,f.farZoom.value=t,f.nearRadius.value=Number(s.width)/2,f.farRadius.value=Number(s.width)/2)}}),s.displayArrowsOnPath&&s.animateArrowsOnPath&&(s.mesh.children.forEach(d=>{d.name!=="stencil"&&(d.material.uniforms.arrowAnimationTimer.value=performance.now()/3e3,d.material.needsUpdate=!0)}),a=!0),s.materialDirty=!1)}this.verticalDistanceDirty=!1,a&&this.publish("animate:path")}};function If(i,r){let e=r.uniforms;e.highlightCompleteFraction.value=i.highlightCompleteFraction,e.highlightStartFraction.value=i.highlightStartFraction,e.highlightEndFraction.value=i.highlightEndFraction,e.highlightWidthMultiplier.value=i.highlightWidthMultiplier,e.highlightColor.value.set(i.highlightColor)}function Of(i,r,e){var n,o;let t=(n=r.xrayStyle)!=null&&n.color?Pf.set(r.xrayStyle.color):Pf.set(i);$u(t,e,(o=r.xrayStyle)==null?void 0:o.tint)}v();var We,Vi,lr,wl,Cl=class{constructor(r){p(this,"rendererState");p(this,"dirty",!1);A(this,We);A(this,Vi);A(this,lr);A(this,wl,new Se);this.rendererState=r}updateOne(r){if(r instanceof Pe&&r.components[0]instanceof Je&&r.components[1]instanceof yr&&r.parentObject3D instanceof mt&&(F(this,We,r.components[0]),F(this,lr,r.components[1]),!c(this,We).detached&&c(this,We).shouldDetach&&c(this,We).mesh!=null&&c(this,We).material!=null&&c(this,We).batchedProps!=null)){F(this,Vi,r.parentObject3D),c(this,We).visible=!1;let e=c(this,lr).color,t=c(this,lr).opacity*wi(r),n=c(this,We).material,o=t!=null?t:1,a=n.clone({color:e,side:Wd(c(this,lr).side,o),opacity:o,transparent:o<1}),l=new Em(1,c(this,We).batchedProps.positionCount,0,a);l.layers.enable(Pt.SHOULD_CAST_SHADOWS);let s=Om(c(this,We),l,c(this,wl));if(s==null)return;l.userData={entities:{0:r.id},detached:!0},c(this,We).instanceIndex=s,a.setColor(c(this,We).instanceIndex,new le(e),c(this,lr).topColor?new le(c(this,lr).topColor):new le(e)),c(this,We).mesh=l,c(this,We).currentHeight=-1,c(this,We).material=a,c(this,Vi).add(l),c(this,We).shouldDetach=!1,c(this,We).detached=!0,c(this,lr).dirty=!0}}update(){if(!this.dirty)return;let r;for(let e of this.rendererState.geometry3DIdsInScene)r=this.rendererState.geometry3DMap.get(e),this.updateOne(r);this.dirty=!1,this.cleanup()}cleanup(){F(this,We,void 0),F(this,Vi,void 0),F(this,lr,void 0)}};We=new WeakMap,Vi=new WeakMap,lr=new WeakMap,wl=new WeakMap;v();v();var Tn=new Se,ra=new N,Tl=new tn,na=new N;function Lf(i,r,e){var t;if((t=i.batchedProps)!=null&&t.range&&i.mesh&&i.instanceIndex!==-1){let n=r||1e-4,o=n/Math.max(e,1e-4);return i.mesh.getMatrixAt(i.instanceIndex,Tn),Tn.decompose(ra,Tl,na),na.z=o,Tn.compose(ra,Tl,na),i.mesh.setMatrixAt(i.instanceIndex,Tn),i.material&&(i.material.repeatYFactor=o),i.currentHeight=n,!0}return!1}function Af(i,r){return i.mesh&&i.instanceIndex!==-1?(i.mesh.getMatrixAt(i.instanceIndex,Tn),Tn.decompose(ra,Tl,na),ra.z=r,Tn.compose(ra,Tl,na),i.mesh.setMatrixAt(i.instanceIndex,Tn),i.altitude=r,!0):!1}var cr,Mr,Dl=class{constructor(r){p(this,"rendererState");p(this,"dirty",!1);A(this,cr);A(this,Mr);this.rendererState=r}updateOne(r){var e;if(r instanceof Pe&&r.type==="geometry"&&((e=r.components[1])!=null&&e.dirty)&&(F(this,cr,r.components[0]),F(this,Mr,r.components[1]),r.type==="geometry")){let t=!1;c(this,Mr).height!==c(this,cr).currentHeight&&(t=Lf(c(this,cr),c(this,Mr).height,c(this,Mr).initialHeight)),c(this,Mr).altitude!==c(this,cr).altitude&&(t=Af(c(this,cr),c(this,Mr).altitude)),t&&c(this,cr).mesh!=null&&c(this,cr).mesh.computeBoundingSphere()}}update(){for(let r of this.rendererState.geometry3DsInScene)this.updateOne(r);this.cleanup()}cleanup(){F(this,cr,void 0),F(this,Mr,void 0)}};cr=new WeakMap,Mr=new WeakMap;v();var Hv={showPolygonLabelTextAreaMesh:!1,showEnvMap:!1,showCollisionBoxes:!1,showGeometryInFocus:!1,showImageLOD:!1,showModelInstancingStats:!1,showScreenOffsets:!1,showCameraTargets:!1,focusOn:!1},Pl=class{constructor(r){p(this,"state",Hv);p(this,"core");this.core=r}update(r){let e={};for(let t of Object.keys(r))t in this.state&&this.state[t]!==r[t]&&(Object.assign(this.state,{[t]:r[t]}),Object.assign(e,{[t]:r[t]}));this.handleUpdate(e)}handleUpdate(r){if(r.showPolygonLabelTextAreaMesh!=null&&(r.showPolygonLabelTextAreaMesh?this.core.getSystems().text3DSystem.showTextAreaMesh():this.core.getSystems().text3DSystem.hideTextAreaMesh()),r.showEnvMap!=null&&(r.showEnvMap?this.core.setEnvironment("basic"):this.core.setEnvironment(!1)),r.showCollisionBoxes!=null&&(r.showCollisionBoxes?this.core.showCollisionBoxes():this.core.hideCollisionBoxes()),r.showGeometryInFocus!=null&&(r.showGeometryInFocus?this.core.getSystems().geometryInFocusSystem.showDebug():this.core.getSystems().geometryInFocusSystem.hideDebug()),r.showImageLOD!=null&&(this.core.getSystems().imageSystem.debugLOD=r.showImageLOD,this.core.render()),r.showModelInstancingStats!=null&&(r.showModelInstancingStats?this.core.getSystems().modelSystem.showDebug():this.core.getSystems().modelSystem.hideDebug()),r.showScreenOffsets!=null&&(r.showScreenOffsets?this.core.camera.showScreenOffsetsDebug():this.core.camera.hideScreenOffsetsDebug()),r.showCameraTargets!=null&&(r.showCameraTargets?this.core.camera.showCameraTargetsDebug():this.core.camera.hideCameraTargetsDebug()),"focusOn"in r){let e=r.focusOn;e===!1||e==null?this.core.camera.hideFocusOnDebug():this.core.camera.showFocusOnDebug(e)}}};v();var ia=9,Vv=!1,Rf=.1;function Wv(i,r,e){for(let t=0;t<r;t++){let n=(e&16711680)>>16,o=(e&65280)>>8,a=e&255;i[t*3]=n/255,i[t*3+1]=o/255,i[t*3+2]=a/255}}var Il=class{constructor(r,e,t){p(this,"state");p(this,"renderer");p(this,"renderService");p(this,"pickingTexture");p(this,"pickingMaterial");p(this,"pixelBuffer");p(this,"width",0);p(this,"height",0);p(this,"scale",1/2);p(this,"color",1);p(this,"convertTo3DMapPosition");p(this,"destroyed",!1);p(this,"enabled",!1);p(this,"backgroundId",16777215);p(this,"resize",()=>{let r=this.state.pixelRatio;this.width=Math.floor(this.renderer.domElement.width/r*this.scale),this.height=Math.floor(this.renderer.domElement.height/r*this.scale),this.pixelBuffer=new Uint8Array(4*this.width*this.height),this.pickingTexture=new oo(this.width,this.height,{format:Kh,type:qh,internalFormat:"RGBA"})});p(this,"shouldShowByXY",(r,e,t)=>{if(this.pixelBuffer==null)return!1;let n=r+(this.height-e-1)*this.width,o=this.pixelBuffer[n*4],a=this.pixelBuffer[n*4+1],l=this.pixelBuffer[n*4+2],s=o<<16|a<<8|l;return s===t||s===this.backgroundId});p(this,"activeOccluders",new Set);p(this,"update",()=>{if(!this.enabled||this.destroyed||(this.activeOccluders.clear(),this.activeOccluders.add(this.backgroundId),!this.pickingTexture||!this.pixelBuffer))return;let r,e;for(let n of this.state.geometry3DsInScene)if((n==null?void 0:n.type)==="group-container"&&n.userData.occluderFeature!=null&&n.userData.occluderId!=null&&(this.activeOccluders.add(n.userData.occluderId),n.userData.occluderDirty)){if(r=n.userData.occluderFeature,r.geometry.type==="Polygon"&&r.geometry.coordinates.length>0){let o=bs(r,this.convertTo3DMapPosition,{color:"white",height:Rf});e=this.createOccluderMesh(o,n.userData.occluderId),n.add(e)}else if(r.geometry.type==="MultiPolygon"){let o=vs(r,this.convertTo3DMapPosition,{color:"white",height:Rf});e=this.createOccluderMesh(o,n.userData.occluderId),n==null||n.add(e)}n.userData.occluderDirty=!1}this.renderer.setRenderTarget(this.pickingTexture);let t=new le(this.backgroundId);this.renderer.setClearColor(t),this.renderer.clear(),this.state.cameraObject.layers.disableAll(),this.state.cameraObject.layers.enable(ia),this.renderService.renderScene(this.state.geometryScene.parent,this.state.cameraObject),this.renderer.setRenderTarget(null),this.state.cameraObject.layers.disable(ia),Vv?this.renderService.enabledLayers.add(ia):this.renderService.enabledLayers.delete(ia),this.renderer.readRenderTargetPixelsAsync(this.pickingTexture,0,0,this.width,this.height,this.pixelBuffer).then(()=>{if(!this.destroyed)for(let n of this.state.geometry2DsInScene){let o=n==null?void 0:n.components[2];if(n&&(o==null?void 0:o.id)!=null&&this.activeOccluders.has(o.id)&&(o!=null&&o.enabled)){let a=n.components[0].projection,l=Math.floor(a.x*this.scale),s=Math.floor(a.y*this.scale),u=this.shouldShowByXY(l,s,o.id);n.components[0].isOccluded=!u}else n&&o&&!o.enabled&&(n.components[0].isOccluded=!1)}}).catch(n=>{this.destroyed||$.error(n)})});if(this.state=r,this.convertTo3DMapPosition=e,(t==null?void 0:t.renderer)==null)throw new Error("No Renderer");this.renderService=t,this.renderer=t.renderer,this.resize(),this.pickingMaterial=new jt({glslVersion:td,vertexShader:"\n attribute vec3 color;\n varying vec3 vColor;\n void main() {\n vColor = color;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n varying vec3 vColor;\n out vec4 fragColor;\n\n void main() {\n fragColor = vec4(vColor, 1.0);\n }\n "})}applyId(r,e){let t=r.attributes.position,n=new Float32Array(t.count*3);Wv(n,t.count,e),r.setAttribute("color",new Dt(n,3))}createOccluderMesh(r,e){let t=new me(r,this.pickingMaterial);return t.layers.set(ia),this.applyId(t.geometry,e),t.userData.occluderId=e,t}reserveOccluderId(){return this.color++,this.color}enable(){this.enabled=!0}disable(){this.enabled=!1}destroy(){var r;this.destroyed=!0,(r=this.pickingTexture)==null||r.dispose(),this.pickingMaterial.dispose(),this.pickingTexture=void 0,this.pixelBuffer=void 0}};v();var Ol=class{constructor(r){this.state=r;p(this,"dirty",!0)}update(){var r;if(this.dirty){for(let e of this.state.geometry3DIdsInScene){let t=this.state.geometry3DMap.get(e);if(t instanceof Pe&&t.type==="geometry"&&((r=t.components[0])==null?void 0:r.geometry)!=null){let n=t.components[0];n.geometry&&(n.geometry.dispose(),n.geometry=void 0)}}this.dirty=!1}}};v();var Ll=class extends ve{constructor(e){super();p(this,"dirty",!0);p(this,"state");p(this,"texturePromiseCache",new Map);this.state=e}async loadTexture(e){if(this.texturePromiseCache.has(e))return this.texturePromiseCache.get(e);let t=new Promise((n,o)=>{vn.getLoader().load(e,n,void 0,o)});return this.texturePromiseCache.set(e,t),t}update(){for(let e of this.state.geometry3DsInScene){if(!(e instanceof Pe))continue;let t=e.components[6];if(!(t instanceof Un))continue;let n=e.components[0];if(!(n instanceof Je)||!t.dirty)continue;let o=mo(n);o!=null&&(t.texture!=null&&(t.texture.path===""?(o.texture=null,o.hideTextures(n.instanceIndex),t.dirty=!1):this.loadTexture(t.texture.path).then(a=>{a&&(t.textureInstance=a,o.texture=a,o.blendTexture=!0,o.showTextures(n.instanceIndex)),this.publish("texture-added")})),t.topTexture!=null&&(t.topTexture.path===""?(o.topTexture=null,o.hideTextures(n.instanceIndex),t.dirty=!1):this.loadTexture(t.topTexture.path).then(a=>{a&&(t.topTextureInstance=a,o.topTexture=a,o.blendTexture=!0,o.showTextures(n.instanceIndex)),this.publish("texture-added")})),t.dirty=!1)}}destroy(){this.texturePromiseCache.forEach(async e=>{(await e).dispose()}),this.texturePromiseCache.clear()}};v();var Al=class{constructor(r){p(this,"currentOrder",qe.ALWAYS_ON_TOP_MODELS);p(this,"assignedOrders",new WeakMap);p(this,"state");this.state=r}assignOrder(r){return this.assignedOrders.has(r)?this.assignedOrders.get(r):(this.currentOrder+=1,this.assignedOrders.set(r,this.currentOrder),this.currentOrder)}releaseOrder(r){return this.assignedOrders.delete(r),qe.GEOMETRY}getHighestOrder(){return this.currentOrder}getOrder(r){return this.assignedOrders.get(r)}update(){let r,e;for(let t of this.state.geometry3DsInScene)if(t&&t.type==="model"&&(r=t.components[1],r!=null&&r.renderOrderDirty)){if(e=t.components[0],!e.mesh)continue;if(e.visibleThroughGeometry=r.visibleThroughGeometry,r.visibleThroughGeometry===!0){let n=this.assignOrder(e);e.renderOrder=n,this.applyRenderOrder(e)}else e.renderOrder>qe.GEOMETRY&&(e.renderOrder=this.releaseOrder(e),this.applyRenderOrder(e));r.renderOrderDirty=!1}}applyRenderOrder(r){var n;if(!r.mesh)return;let e=r.renderOrder,t=r.visibleThroughGeometry;if(r.mesh.children[0]instanceof we){r.mesh.renderOrder=e;for(let a of r.mesh.children)a instanceof we&&(a.renderOrder=e);if((n=r.mesh.userData)==null?void 0:n.detached)for(let a of r.mesh.children)a instanceof we&&(Array.isArray(a.material)?a.material.forEach(l=>{l.depthWrite=!t,l.depthTest=!t,t&&(l.transparent=!0),l.needsUpdate=!0}):(a.material.depthWrite=!t,a.material.depthTest=!t,t&&(a.material.transparent=!0),a.material.needsUpdate=!0))}else r.mesh.traverse(o=>{let a=o;"isMesh"in a&&a.isMesh===!0&&a.material&&(a.renderOrder=e,Array.isArray(a.material)?a.material.forEach(l=>{l.depthWrite=!t,l.depthTest=!t,t&&(l.transparent=!0),l.needsUpdate=!0}):(a.material.depthWrite=!t,a.material.depthTest=!t,t&&(a.material.transparent=!0),a.material.needsUpdate=!0))})}};v();var _l=class _l{constructor(r){p(this,"state");this.state=r}applyMask(r,e,t){this.disableMask(r,e),t.mode==="mask"&&t.maskId!=null&&t.enabled?this.enableMaskProducer(r,e,t):t.mode==="masked-object"&&t.maskId!=null&&t.enabled&&this.enableMaskReciever(r,t)}update(){let r;for(let e of this.state.geometry3DsInScene)(e==null?void 0:e.type)==="batched-geometry-group"&&(!Ho(e,this.state)||Uo(e)&&Ho(e,this.state))&&(r=e.components[0],r!=null&&r.dirty&&(e.traverse(t=>{(t instanceof me||t instanceof on)&&t.material instanceof od&&r!=null&&!t.userData.detached&&(this.disableMask(t.material,t),this.applyMask(t.material,t,r))}),r.dirty=!1))}enableMaskProducer(r,e,t){r.stencilWrite=!0,r.colorWrite=!1,r.stencilRef=t.maskId,r.stencilFunc=gi,r.stencilZPass=Wt,r.stencilZFail=tt,r.stencilFail=tt,r.needsUpdate=!0,r.depthWrite=!1,e.userData.originalTransparent===void 0&&(e.userData.originalTransparent=r.transparent),r.transparent=!1,e.layers.disableAll(),e.layers.set(qe.GEOMETRY),e.userData.originalRenderOrder===void 0&&(e.userData.originalRenderOrder=e.renderOrder),e.renderOrder=_l.MASK_RENDER_ORDER}enableMaskReciever(r,e){r.stencilWrite=!0,r.stencilRef=e.maskId,r.stencilFunc=e.effect==="reveal"?ed:Ir,r.stencilZPass=tt,r.stencilZFail=tt,r.stencilFail=tt,r.needsUpdate=!0}disableMask(r,e){r.stencilWrite=!1,r.colorWrite=!0,e.userData.originalTransparent!==void 0&&(r.transparent=e.userData.originalTransparent,delete e.userData.originalTransparent),r.needsUpdate=!0,e.layers.disableAll(),e.layers.set(qe.GEOMETRY),e.userData.originalRenderOrder!==void 0&&(e.renderOrder=e.userData.originalRenderOrder,delete e.userData.originalRenderOrder)}};p(_l,"MASK_RENDER_ORDER",-1e3);var Rl=_l;v();var _f=1e4,Fl=class{constructor(r){p(this,"rendererState");p(this,"dirty",!1);this.rendererState=r}update(){var n;let r,e,t;for(let o of this.rendererState.geometry3DsInScene)if(e=o.components[0],t=o.components[1],r=o.components[7],o.type==="model"&&r!=null&&(t!=null&&t.EXPERIMENTAL_clippingEnabled)&&(r.dirty&&e.mesh!=null&&(r.plane==null&&(r.plane=new sd(new N(0,0,-1),r.verticalOffset),this.process(e,r)),r.plane.constant!==r.verticalOffset&&(r.plane.constant=r.verticalOffset),r.topColor!=null&&((n=r.holeFillMesh)==null?void 0:n.material)instanceof ao&&r.holeFillMesh.material.color.set(r.topColor),r.topVisible!=null&&r.holeFillMesh!=null&&(r.holeFillMesh.visible=r.topVisible),r.dirty=!1),r.plane!=null&&r.holeFillMesh!=null&&r.topVisible===!0)){let a=r.plane,l=r.holeFillMesh;a.coplanarPoint(l.position),l.lookAt(l.position.x-a.normal.x,l.position.y-a.normal.y,l.position.z-a.normal.z)}}process(r,e){var d;if(r.mesh==null)return;let t=r.mesh.parent,n=[];r.mesh.traverse(f=>{var b;if(f instanceof me){let x=f.geometry.clone();if(f instanceof we){let y=(b=r.instanceIndex)!=null?b:0,g=new Se;f.getMatrixAt(y,g),x.applyMatrix4(g)}else f.updateWorldMatrix(!0,!1),x.applyMatrix4(f.matrixWorld);n.push(x),x.computeVertexNormals(),f.material.clippingPlanes=[e.plane]}});let o=Zt(n),a=new Va,l=new Va,s=new bt(_f,_f),u=this.createHoleFillGeometry(o,s,e.plane,1);u.name="hole-fill-group";let h=new ao({color:(d=e.topColor)!=null?d:"#E67B5B",clippingPlanes:[],stencilWrite:!0,stencilRef:Ar.CLIPPING_BASELINE,stencilFunc:Ir,stencilFail:Wt,stencilZFail:Wt,stencilZPass:Wt}),m=new me(s,h);m.name="hole-fill-mesh",e.holeFillMesh=m,m.renderOrder=1.1,l.add(u),l.add(r.mesh),a.add(l),a.add(m),t==null||t.add(a),r.mesh=a}createHoleFillGeometry(r,e,t,n=0){let o=new Va,a=new dt;a.depthWrite=!1,a.depthTest=!1,a.colorWrite=!1,a.stencilWrite=!0,a.stencilFunc=gi;let l=a.clone();l.side=fr,l.stencilRef=Ar.CLIPPING_BASELINE,l.stencilFail=Wt,l.stencilZFail=Wt,l.stencilZPass=Wt;let s=new me(e,l);s.renderOrder=n-.1,o.add(s);let u=a.clone();u.side=Xh,u.clippingPlanes=[t],u.stencilFail=Ua,u.stencilZFail=Ua,u.stencilZPass=Ua;let h=new me(r,u);h.renderOrder=n,o.add(h);let m=a.clone();m.side=za,m.clippingPlanes=[t],m.stencilFail=Ha,m.stencilZFail=Ha,m.stencilZPass=Ha;let d=new me(r,m);return d.renderOrder=n,o.add(d),o}};v();var Gl=class{constructor(){p(this,"plugins",new Set)}registerPlugin(r){this.plugins.add(r)}unregisterPlugin(r){this.plugins.delete(r)}update(r){for(let e of this.plugins)e.update(r)}};v();var Bl=class{constructor(r){p(this,"type","occlusion2d");p(this,"enabled",!0);p(this,"id");this.id=r}};v();v();v();var Ff="varying vec4 vWorldPosition;\n\nvoid main() {\n vWorldPosition = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n\n";v();var Ku="uniform sampler2D shadowMap;\nuniform mat4 lightMatrix;\nuniform float shadowBias;\nuniform float shadowOpacity;\nuniform vec3 baseColor;\nuniform float shadowMapSize;\nuniform float pcfSpread;\nuniform float depthRangeMax;\nuniform bool shadowEnabled;\nvarying vec4 vWorldPosition;\nfloat shadowThreshold = 0.05;\nfloat shadowStrengthMultiplier = 0.6;\n\n/**\n * Interleaved gradient noise for temporal/spatial dithering of shadow samples\n */\nfloat interleavedGradientNoise(vec2 position) {\n vec3 magic = vec3(0.06711056, 0.00583715, 52.9829189);\n return fract(magic.z * fract(dot(position, magic.xy)));\n}\n\n// Compile-time sample count for loop unrolling (injected via material)\n#ifndef PCF_SAMPLES\n#define PCF_SAMPLES 4\n#endif\n\n// Poisson disk samples - only define what we need based on sample count\n#if PCF_SAMPLES <= 4\nconst vec2 poissonDisk[4] = vec2[](\n vec2(-0.94201624, -0.39906216),\n vec2(0.94558609, -0.76890725),\n vec2(-0.094184101, -0.92938870),\n vec2(0.34495938, 0.29387760)\n);\n#elif PCF_SAMPLES <= 8\nconst vec2 poissonDisk[8] = vec2[](\n vec2(-0.94201624, -0.39906216),\n vec2(0.94558609, -0.76890725),\n vec2(-0.094184101, -0.92938870),\n vec2(0.34495938, 0.29387760),\n vec2(-0.91588581, 0.45771432),\n vec2(-0.81544232, -0.87912464),\n vec2(-0.38277543, 0.27676845),\n vec2(0.97484398, 0.75648379)\n);\n#else\nconst vec2 poissonDisk[16] = vec2[](\n vec2(-0.94201624, -0.39906216),\n vec2(0.94558609, -0.76890725),\n vec2(-0.094184101, -0.92938870),\n vec2(0.34495938, 0.29387760),\n vec2(-0.91588581, 0.45771432),\n vec2(-0.81544232, -0.87912464),\n vec2(-0.38277543, 0.27676845),\n vec2(0.97484398, 0.75648379),\n vec2(0.44323325, -0.97511554),\n vec2(0.53742981, -0.47373420),\n vec2(-0.26496911, -0.41893023),\n vec2(0.79197514, 0.19090188),\n vec2(-0.24188840, 0.99706507),\n vec2(-0.81409955, 0.91437590),\n vec2(0.19984126, 0.78641367),\n vec2(0.14383161, -0.14100790)\n);\n#endif\n\n/**\n * Samples the shadow map using PCF (Percentage Closer Filtering)\n * Uses compile-time loop count for GPU optimization\n * @param lightSpacePos Position in light space coordinates\n * @returns Visibility factor (1.0 = fully lit, 0.0 = fully shadowed)\n */\nfloat sampleShadow(vec3 lightSpacePos) {\n float scaledTexelSize = (1.0 / shadowMapSize) * pcfSpread;\n float currentDepth = lightSpacePos.z * depthRangeMax;\n \n // Rotation for temporal stability\n float noise = interleavedGradientNoise(gl_FragCoord.xy) * 6.283185;\n float cosNoise = cos(noise);\n float sinNoise = sin(noise);\n mat2 rotation = mat2(cosNoise, -sinNoise, sinNoise, cosNoise);\n \n float shadow = 0.0;\n \n // Compile-time unrolled loop - GPU can optimize this efficiently\n for(int i = 0; i < PCF_SAMPLES; i++) {\n vec2 offset = rotation * poissonDisk[i] * scaledTexelSize;\n vec2 uv = clamp(lightSpacePos.xy + offset, 0.0, 1.0);\n \n float sampledDepth = texture2D(shadowMap, uv).r;\n shadow += step(sampledDepth + shadowBias, currentDepth);\n }\n \n return 1.0 - shadow / float(PCF_SAMPLES);\n}\n\nvoid main() {\n if (shadowEnabled) {\n // Transform world position to light space\n vec4 shadowCoord = lightMatrix * vWorldPosition;\n vec3 projCoords = shadowCoord.xyz / shadowCoord.w;\n \n // Check if fragment is within shadow map bounds\n bool inBounds = projCoords.x >= 0.0 && projCoords.x <= 1.0 && \n projCoords.y >= 0.0 && projCoords.y <= 1.0 && \n projCoords.z >= 0.0 && projCoords.z <= 1.0;\n \n if (inBounds) { \n float visibility = sampleShadow(projCoords);\n float shadowIntensity = 1.0 - visibility;\n \n if (shadowIntensity > shadowThreshold) {\n float shadowStrength = shadowIntensity * shadowOpacity * shadowStrengthMultiplier;\n gl_FragColor = vec4(baseColor, shadowStrength);\n }\n }\n }\n}\n\n";var Nl=class extends jt{constructor(){super({vertexShader:Ff,fragmentShader:"#define PCF_SAMPLES 4\n"+Ku,uniforms:{shadowMap:{value:null},lightMatrix:{value:new Se},shadowBias:{value:8e-5},shadowOpacity:{value:.25},baseColor:{value:new le(8421504)},shadowMapSize:{value:4096},pcfSpread:{value:3.5},depthRangeMax:{value:1},shadowEnabled:{value:!1}},transparent:!0,depthWrite:!1,side:fr,stencilWrite:!0,stencilFunc:Ir,stencilRef:Ar.UNDERGROUND_MASK,stencilFail:tt,stencilZFail:tt,stencilZPass:tt});p(this,"pcfSampleCount",4)}setShadowUniforms(e,t,n,o,a,l,s,u,h,m){this.uniforms.shadowMap.value=e,this.uniforms.lightMatrix.value.copy(t),this.uniforms.shadowBias.value=n,this.uniforms.shadowOpacity.value=o,this.uniforms.baseColor.value=a,this.uniforms.shadowMapSize.value=l,this.uniforms.pcfSpread.value=s,this.uniforms.depthRangeMax.value=h,this.uniforms.shadowEnabled.value=m,u!==this.pcfSampleCount&&(this.pcfSampleCount=u,this.fragmentShader="#define PCF_SAMPLES ".concat(u,"\n")+Ku,this.needsUpdate=!0)}};var Jt={enabled:!0,debug:!1,baseColor:"#a0a0a0",shadowOpacity:.25,pcfSamples:4,pcfSpread:3,shadowBias:.001,normalBias:.12,shadowMapSize:"auto",sunAzimuth:225,sunElevation:45,visibleAtZoomLevel:18},Gf=1e4,Zv=-.05,Xv=999,Yv=4096,$v=2048,qv=20.5,Jv=19.5,Bf=.1,Kv=400,Qv=-200,e0=50,t0=100,r0=-50,n0=40,Wi=15,Hr=22,i0=100,o0=5,a0=50,s0=50,l0=40,c0=5,u0=.5,Qu=1,Nf=1,h0=5,nt=256,d0=65535,m0=.5,kl=.1,p0=1e3,f0=16737792,g0=.2,kf=.2,y0=1001,b0=8900331,eh=!0,zl=class{constructor(r,e,t,n){p(this,"state");p(this,"rendererService");p(this,"depthMaterial");p(this,"cameraOrbit");p(this,"lightCamera");p(this,"shadowRenderTarget");p(this,"lightMatrix",new Se);p(this,"currentSnapX",0);p(this,"currentSnapY",0);p(this,"shadowCenter",new N);p(this,"shadowPlane",null);p(this,"shadowPlaneMaterial",null);p(this,"shadowPlaneEnabled",!0);p(this,"visibleAtCurrentZoom",!0);p(this,"zoomOpacityFactor",1);p(this,"lightCameraHelper",null);p(this,"debugEnabled",!1);p(this,"debugGrid",null);p(this,"debugCurrentCell",null);p(this,"debugCurrentCellMaterial",null);p(this,"debugCanvas",null);p(this,"debugCanvasCtx",null);p(this,"debugRenderTarget",null);p(this,"debugDepthMaterial",null);p(this,"debugDepthQuad",null);p(this,"debugDepthScene",null);p(this,"debugDepthCamera",null);p(this,"options");p(this,"internal");p(this,"shadowResolutionSizes",{high:Yv,low:$v});p(this,"shadowResolutionZoomThresholds",{high:qv,low:Jv});p(this,"debugPixelBuffer",null);p(this,"bias",new Se().set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1));p(this,"matrix",new Se);p(this,"transparentGeometryVisibilityStateMap",new Map);p(this,"lastZoomLevel",null);p(this,"lastCameraElevation",null);p(this,"needsRender",!0);p(this,"needsCompute",!0);var a,l,s,u,h,m,d,f,b,x,y,g;this.state=r,this.cameraOrbit=t,this.rendererService=e,this.options=Object.freeze({enabled:(a=n==null?void 0:n.enabled)!=null?a:Jt.enabled,debug:(l=n==null?void 0:n.debug)!=null?l:Jt.debug,baseColor:(s=n==null?void 0:n.baseColor)!=null?s:Jt.baseColor,shadowOpacity:(u=n==null?void 0:n.shadowOpacity)!=null?u:Jt.shadowOpacity,pcfSamples:(h=n==null?void 0:n.pcfSamples)!=null?h:Jt.pcfSamples,pcfSpread:(m=n==null?void 0:n.pcfSpread)!=null?m:Jt.pcfSpread,shadowBias:(d=n==null?void 0:n.shadowBias)!=null?d:Jt.shadowBias,normalBias:(f=n==null?void 0:n.normalBias)!=null?f:Jt.normalBias,shadowMapSize:(b=n==null?void 0:n.shadowMapSize)!=null?b:Jt.shadowMapSize,sunAzimuth:(x=n==null?void 0:n.sunAzimuth)!=null?x:Jt.sunAzimuth,sunElevation:(y=n==null?void 0:n.sunElevation)!=null?y:Jt.sunElevation,visibleAtZoomLevel:(g=n==null?void 0:n.visibleAtZoomLevel)!=null?g:Jt.visibleAtZoomLevel});let o=this.options.shadowMapSize==="auto"?this.shadowResolutionSizes.high:this.options.shadowMapSize;this.internal={baseColor:new le(this.options.baseColor),lightOrthoSize:e0,sunDistance:t0,groundZPosition:r0,snapGridSize:n0,currentShadowMapSize:o,currentShadowResolutionMode:(this.options.shadowMapSize==="auto",null),sunDirection:new N,sunAzimuth:this.options.sunAzimuth,sunElevation:this.options.sunElevation},this.updateSunDirection(),this.lightCamera=new Lc(-this.internal.lightOrthoSize,this.internal.lightOrthoSize,this.internal.lightOrthoSize,-this.internal.lightOrthoSize,Bf,Kv),this.lightCamera.layers.disableAll(),this.lightCamera.layers.enable(Pt.SHOULD_CAST_SHADOWS),this.lightCamera.position.copy(this.internal.sunDirection.clone().multiplyScalar(Qv)),this.lightCamera.lookAt(new N(0,0,0)),this.lightCamera.updateMatrixWorld(),this.lightCamera.updateProjectionMatrix(),this.shadowRenderTarget=this.createShadowRenderTarget(o),this.depthMaterial=new md,this.depthMaterial.depthPacking=Qh,this.depthMaterial.blending=Yh,this.createShadowPlane(),this.options.debug&&this.setDebugEnabled(!0)}createShadowRenderTarget(r){let e=new oo(r,r);return e.texture.minFilter=io,e.texture.magFilter=io,e.texture.generateMipmaps=!1,e.depthBuffer=!0,e.stencilBuffer=!1,e.depthTexture=new cd(r,r,Jh),e}resizeShadowRenderTarget(r){this.shadowRenderTarget.setSize(r,r),this.shadowRenderTarget.depthTexture&&(this.shadowRenderTarget.depthTexture.image.width=r,this.shadowRenderTarget.depthTexture.image.height=r,this.shadowRenderTarget.depthTexture.needsUpdate=!0)}createShadowPlane(){let r=new bt(Gf,Gf);r.rotateX(0),this.shadowPlaneMaterial=new Nl,this.shadowPlane=new me(r,this.shadowPlaneMaterial),this.shadowPlane.position.set(0,0,Zv),this.shadowPlane.renderOrder=Xv,this.shadowPlane.frustumCulled=!1,this.shadowPlane.name="ShadowPlane",this.shadowPlaneEnabled&&this.state.threeJSScene.add(this.shadowPlane)}setShadowPlaneEnabled(r){this.shadowPlaneEnabled!==r&&(this.shadowPlaneEnabled=r,this.shadowPlane&&(r?this.state.threeJSScene.add(this.shadowPlane):this.state.threeJSScene.remove(this.shadowPlane)))}isShadowPlaneEnabled(){return this.shadowPlaneEnabled}updateShadowPlanePosition(){this.shadowPlane&&(this.shadowPlane.position.x=this.shadowCenter.x,this.shadowPlane.position.y=this.shadowCenter.y)}setDebugEnabled(r){this.debugEnabled!==r&&(this.debugEnabled=r,r?this.createDebugHelpers():this.disposeDebugHelpers())}isDebugEnabled(){return this.debugEnabled}createDebugHelpers(){this.debugEnabled=!0,!this.lightCameraHelper&&this.lightCamera&&(this.lightCameraHelper=new gd(this.lightCamera),this.lightCameraHelper.name="ShadowLightCameraHelper",this.state.threeJSScene.add(this.lightCameraHelper)),this.createDebugGrid(),this.createDebugCurrentCell(),this.createDebugCanvas()}createDebugGrid(){if(this.debugGrid)return;let r=this.internal.snapGridSize,e=h0,t=r*e*2,n=[];for(let l=-e;l<=e;l++){let s=l*r;n.push(s,-t/2,kl),n.push(s,t/2,kl)}for(let l=-e;l<=e;l++){let s=l*r;n.push(-t/2,s,kl),n.push(t/2,s,kl)}let o=new rn;o.setAttribute("position",new kn(n,3));let a=new bi({color:d0,transparent:!0,opacity:m0,depthTest:!1});this.debugGrid=new on(o,a),this.debugGrid.name="ShadowDebugGrid",this.debugGrid.renderOrder=p0,this.debugGrid.frustumCulled=!1,this.state.threeJSScene.add(this.debugGrid)}createDebugCurrentCell(){if(this.debugCurrentCell)return;let r=this.internal.snapGridSize,e=new bt(r,r);this.debugCurrentCellMaterial=new dt({color:f0,transparent:!0,opacity:g0,depthTest:!1,side:2}),this.debugCurrentCell=new me(e,this.debugCurrentCellMaterial),this.debugCurrentCell.name="ShadowDebugCurrentCell",this.debugCurrentCell.renderOrder=y0,this.debugCurrentCell.frustumCulled=!1,this.debugCurrentCell.position.set(this.currentSnapX+r/2,this.currentSnapY+r/2,kf),this.state.threeJSScene.add(this.debugCurrentCell)}createDebugCanvas(){if(this.debugCanvas)return;this.debugCanvas=document.createElement("canvas"),this.debugCanvas.width=nt,this.debugCanvas.height=nt,this.debugCanvas.style.cssText="\n position: fixed;\n bottom: 16px;\n transform: rotate(-270deg);\n left: 16px;\n width: ".concat(nt,"px;\n height: ").concat(nt,"px;\n border: 2px solid #00ffff;\n border-radius: 4px;\n background: #000;\n z-index: 9999;\n pointer-events: none;\n ");let r=document.createElement("div");if(r.textContent=eh?"Shadow Depth Map":"Light Camera View",r.style.cssText="\n position: fixed;\n bottom: ".concat(nt+20,"px;\n left: 16px;\n color: #00ffff;\n font-family: monospace;\n font-size: 12px;\n z-index: 9999;\n pointer-events: none;\n "),r.id="shadow-debug-label",document.body.appendChild(this.debugCanvas),document.body.appendChild(r),this.debugCanvasCtx=this.debugCanvas.getContext("2d"),this.debugRenderTarget=new oo(nt,nt),this.debugRenderTarget.texture.minFilter=io,this.debugRenderTarget.texture.magFilter=io,eh){this.debugDepthMaterial=new jt({uniforms:{depthTexture:{value:this.shadowRenderTarget.depthTexture}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",fragmentShader:"\n uniform sampler2D depthTexture;\n varying vec2 vUv;\n void main() {\n float depth = texture2D(depthTexture, vUv).r;\n // Invert so near is bright, far is dark\n gl_FragColor = vec4(vec3(1.0 - depth), 1.0);\n }\n "});let e=new bt(2,2);this.debugDepthQuad=new me(e,this.debugDepthMaterial),this.debugDepthScene=new Lr,this.debugDepthScene.add(this.debugDepthQuad),this.debugDepthCamera=new Lc(-1,1,1,-1,0,1)}}updateDebugCanvas(){if(!this.debugCanvas||!this.debugCanvasCtx||!this.rendererService.renderer||!this.debugRenderTarget)return;let r=this.rendererService.renderer,e=nt*nt*4;(!this.debugPixelBuffer||this.debugPixelBuffer.length!==e)&&(this.debugPixelBuffer=new Uint8Array(e)),eh&&this.debugDepthScene&&this.debugDepthCamera&&this.debugDepthMaterial?(this.debugDepthMaterial.uniforms.depthTexture.value=this.shadowRenderTarget.depthTexture,r.setRenderTarget(this.debugRenderTarget),r.clear(),r.render(this.debugDepthScene,this.debugDepthCamera),r.setRenderTarget(null)):(r.setRenderTarget(this.debugRenderTarget),r.setClearColor(b0,1),r.clear(),r.render(this.state.threeJSScene,this.lightCamera),r.setRenderTarget(null)),r.readRenderTargetPixels(this.debugRenderTarget,0,0,nt,nt,this.debugPixelBuffer);let t=this.debugCanvasCtx.createImageData(nt,nt),n=t.data,o,a;for(let l=0;l<nt;l++)for(let s=0;s<nt;s++)o=((nt-1-l)*nt+s)*4,a=(l*nt+s)*4,n[a]=this.debugPixelBuffer[o],n[a+1]=this.debugPixelBuffer[o+1],n[a+2]=this.debugPixelBuffer[o+2],n[a+3]=255;this.debugCanvasCtx.putImageData(t,0,0)}disposeDebugHelpers(){this.lightCameraHelper&&(this.state.threeJSScene.remove(this.lightCameraHelper),this.lightCameraHelper.dispose(),this.lightCameraHelper=null),this.debugGrid&&(this.state.threeJSScene.remove(this.debugGrid),this.debugGrid.geometry.dispose(),this.debugGrid.material.dispose(),this.debugGrid=null),this.debugCurrentCell&&(this.state.threeJSScene.remove(this.debugCurrentCell),this.debugCurrentCell.geometry.dispose(),this.debugCurrentCell=null),this.debugCurrentCellMaterial&&(this.debugCurrentCellMaterial.dispose(),this.debugCurrentCellMaterial=null),this.debugCanvas&&(this.debugCanvas.remove(),this.debugCanvas=null,this.debugCanvasCtx=null),this.debugPixelBuffer=null,this.debugRenderTarget&&(this.debugRenderTarget.dispose(),this.debugRenderTarget=null),this.debugDepthQuad&&(this.debugDepthQuad.geometry.dispose(),this.debugDepthQuad=null),this.debugDepthMaterial&&(this.debugDepthMaterial.dispose(),this.debugDepthMaterial=null),this.debugDepthScene=null,this.debugDepthCamera=null;let r=document.getElementById("shadow-debug-label");r&&r.remove()}updateDebugHelpers(){if(this.debugEnabled&&(this.lightCameraHelper&&this.lightCameraHelper.update(),this.debugGrid&&this.debugGrid.position.set(this.currentSnapX,this.currentSnapY,0),this.debugCurrentCell)){let r=this.internal.snapGridSize;this.debugCurrentCell.position.set(this.currentSnapX+r/2,this.currentSnapY+r/2,kf)}}updateSunDirection(){let r=this.internal.sunAzimuth*Math.PI/180,e=this.internal.sunElevation*Math.PI/180,t=Math.cos(e);this.internal.sunDirection.set(t*Math.sin(r),t*Math.cos(r),-Math.sin(e)),this.internal.sunDirection.normalize()}updateLightCamera(){this.lightCamera&&(this.lightCamera.left=-this.internal.lightOrthoSize,this.lightCamera.right=this.internal.lightOrthoSize,this.lightCamera.top=this.internal.lightOrthoSize,this.lightCamera.bottom=-this.internal.lightOrthoSize,this.lightCamera.updateProjectionMatrix())}updateLightMatrix(){this.lightCamera.position.copy(this.shadowCenter).add(this.internal.sunDirection.clone().multiplyScalar(-this.internal.sunDistance)),this.lightCamera.lookAt(this.shadowCenter),this.lightCamera.near=Bf,this.lightCamera.far=this.internal.sunDistance*2,this.lightCamera.left=-this.internal.lightOrthoSize,this.lightCamera.right=this.internal.lightOrthoSize,this.lightCamera.top=this.internal.lightOrthoSize,this.lightCamera.bottom=-this.internal.lightOrthoSize,this.lightCamera.updateMatrixWorld(!0),this.lightCamera.updateProjectionMatrix(),this.matrix.identity(),this.matrix.multiplyMatrices(this.lightCamera.projectionMatrix,this.lightCamera.matrixWorldInverse),this.lightMatrix.multiplyMatrices(this.bias,this.matrix)}updateAutoSunDistance(r,e){let t=Math.max(Wi,Math.min(Hr,r)),n=(Hr-t)/(Hr-Wi),o=Math.max(e,i0*Math.pow(o0,n));Math.abs(this.internal.sunDistance-o)>Qu&&(this.internal.sunDistance=o,this.updateSunDirection(),this.needsRender=!0)}updateAutoShadowResolution(r){if(this.options.shadowMapSize!=="auto")return;let e=this.internal.currentShadowResolutionMode;if(this.internal.currentShadowResolutionMode===null?r>=this.shadowResolutionZoomThresholds.high?e="high":e="low":this.internal.currentShadowResolutionMode==="low"?r>=this.shadowResolutionZoomThresholds.high&&(e="high"):this.internal.currentShadowResolutionMode==="high"&&r<=this.shadowResolutionZoomThresholds.low&&(e="low"),e!==this.internal.currentShadowResolutionMode&&e!==null){let t=this.shadowResolutionSizes[e];this.internal.currentShadowResolutionMode=e,this.internal.currentShadowMapSize=t,this.resizeShadowRenderTarget(t),this.needsRender=!0}}updateAutoLightSize(r,e){let t=Math.max(Wi,Math.min(Hr,r)),n=(Hr-t)/(Hr-Wi),o=Math.max(e,a0*Math.pow(s0,n));Math.abs(this.internal.lightOrthoSize-o)>Qu&&(this.internal.lightOrthoSize=o,this.updateLightCamera(),this.needsRender=!0)}updateZoomVisibility(r){let e=this.options.visibleAtZoomLevel-Nf,t=this.options.visibleAtZoomLevel,n;r>=t?n=1:r<=e?n=0:n=(r-e)/Nf;let o=n>0;(o!==this.visibleAtCurrentZoom||n!==this.zoomOpacityFactor)&&(this.visibleAtCurrentZoom=o,this.zoomOpacityFactor=n,this.needsRender=!0)}isVisibleAtCurrentZoom(){return this.visibleAtCurrentZoom}updateAutoSnapGridSize(r){let e=Math.max(Wi,Math.min(Hr,r)),t=(Hr-e)/(Hr-Wi),n=l0*Math.pow(c0,t);Math.abs(this.internal.snapGridSize-n)>Qu&&(this.internal.snapGridSize=n,this.debugEnabled&&this.recreateDebugGrid())}recreateDebugGrid(){this.debugGrid&&(this.state.threeJSScene.remove(this.debugGrid),this.debugGrid.geometry.dispose(),this.debugGrid.material.dispose(),this.debugGrid=null),this.debugCurrentCell&&(this.state.threeJSScene.remove(this.debugCurrentCell),this.debugCurrentCell.geometry.dispose(),this.debugCurrentCell=null),this.createDebugGrid(),this.createDebugCurrentCell()}renderShadowMap(){var e,t;let r=this.state.threeJSScene.overrideMaterial;this.state.threeJSScene.overrideMaterial=this.depthMaterial,(e=this.rendererService.renderer)==null||e.setRenderTarget(this.shadowRenderTarget),this.rendererService.clear(),this.rendererService.renderScene(this.state.threeJSScene,this.lightCamera),(t=this.rendererService.renderer)==null||t.setRenderTarget(null),this.state.threeJSScene.overrideMaterial=r,this.debugEnabled&&this.updateDebugCanvas()}updateShadowUniforms(){var n;let r=this.options.enabled&&this.visibleAtCurrentZoom,e=this.options.shadowOpacity*this.zoomOpacityFactor,t;for(let o of this.state.geometry3DsInScene)if(t=o.components[0],t!=null&&t.mesh&&((n=t==null?void 0:t.mesh)==null?void 0:n.material)instanceof Bc){let a=t.mesh.material;a instanceof Bc&&a.setShadowUniforms(this.shadowRenderTarget.depthTexture,this.lightMatrix,this.lightCamera.near,this.lightCamera.far,this.options.shadowBias,e,this.internal.baseColor,this.internal.currentShadowMapSize,this.options.pcfSpread,this.options.pcfSamples,this.internal.sunDirection,this.options.normalBias,this.state.depthRangeFor3D[1],r)}this.shadowPlaneMaterial&&this.shadowPlaneMaterial.setShadowUniforms(this.shadowRenderTarget.depthTexture,this.lightMatrix,this.options.shadowBias,e,this.internal.baseColor,this.internal.currentShadowMapSize,this.options.pcfSpread,this.options.pcfSamples,this.state.depthRangeFor3D[1],r)}zoomOrElevationChanged(r,e){if(this.lastZoomLevel===null||this.lastCameraElevation===null)return this.lastZoomLevel=r,this.lastCameraElevation=e,!0;let t=Math.abs(r-this.lastZoomLevel)>=u0,n=e!==this.lastCameraElevation;return t||n?(this.lastZoomLevel=r,this.lastCameraElevation=e,!0):!1}updateSnap(){let r=this.cameraOrbit.position.x||0,e=this.cameraOrbit.position.y||0,t=Math.floor(r/this.internal.snapGridSize)*this.internal.snapGridSize,n=Math.floor(e/this.internal.snapGridSize)*this.internal.snapGridSize;(t!==this.currentSnapX||n!==this.currentSnapY)&&(this.currentSnapX=t,this.currentSnapY=n,this.shadowCenter.set(t,n,this.internal.groundZPosition),this.needsRender=!0)}update(r,e){this.updateZoomVisibility(r),(this.needsCompute||this.zoomOrElevationChanged(r,e))&&(this.updateAutoShadowResolution(r),this.updateAutoLightSize(r,e),this.updateAutoSunDistance(r,e),this.updateAutoSnapGridSize(r)),this.updateSnap(),this.needsRender&&(this.updateLightMatrix(),this.visibleAtCurrentZoom&&this.renderShadowMap(),this.updateShadowPlanePosition(),this.updateShadowUniforms()),this.updateDebugHelpers(),this.needsRender=!1,this.needsCompute=!1}destroy(){this.disposeDebugHelpers(),this.shadowPlane&&(this.state.threeJSScene.remove(this.shadowPlane),this.shadowPlane.geometry.dispose(),this.shadowPlane=null),this.shadowPlaneMaterial&&(this.shadowPlaneMaterial.dispose(),this.shadowPlaneMaterial=null),this.shadowRenderTarget&&(this.shadowRenderTarget.dispose(),this.shadowRenderTarget.depthTexture&&this.shadowRenderTarget.depthTexture.dispose()),this.depthMaterial&&this.depthMaterial.dispose(),this.transparentGeometryVisibilityStateMap.clear()}};v();v();var v0=[100,500,2e3,1e4];function oa(i,r){var e,t,n;return i.set(de.degToRad((e=r==null?void 0:r[0])!=null?e:un[0]),de.degToRad((t=r==null?void 0:r[1])!=null?t:un[1]),de.degToRad((n=r==null?void 0:r[2])!=null?n:un[2]))}function aa(i,r){var e,t,n;return i.set((e=r==null?void 0:r[0])!=null?e:cn[0],(t=r==null?void 0:r[1])!=null?t:cn[1],(n=r==null?void 0:r[2])!=null?n:cn[2])}function Ul(i){var a,l,s,u;let r=i.components[0],e=i.components[1];if(e.opacity!=null&&e.opacity!==r.opacity&&(r.opacity=e.opacity),!(((a=r.mesh)==null?void 0:a.children[0])instanceof we)){let h=e.material,m=e.color;if(h||m){let d=zf(m,h);(l=r.mesh)==null||l.traverse(f=>{f instanceof me&&f.material&&(Array.isArray(f.material)?f.material.forEach(b=>{d[b.name]?(b.color.set(d[b.name].color),b.vertexColors=!1):m&&b.color.set(m)}):d[f.material.name]?(f.material.color.set(d[f.material.name].color),f.material.vertexColors=!1):m&&f.material.color.set(m))})}}let n=(s=r.feature.geometry.coordinates[2])!=null?s:0,o=((u=e.verticalOffset)!=null?u:0)+n;r.altitude!==o&&(r.altitude=o),e.visible!==r.visible&&(r.visible=e.visible),e.visibleThroughGeometry!==r.visibleThroughGeometry&&(r.visibleThroughGeometry=e.visibleThroughGeometry)}function zf(i,r){let e={};if(r)for(let t in r)r[t].color&&(e[t]={color:r[t].color});if(i){let t=["Default","Fabric","Mpdn_Logo","CouchLogo"];for(let n of t)e[n]||(e[n]={color:i})}return e}function Hl(i){i.traverse(r=>{r instanceof we&&r.computeBoundingSphere()})}function Uf(i,r=v0){for(let e of r)if(e>i)return e;return i*2}function Vl(i){var r,e;for(;i.children.length>0;){let t=i.children[0];if(t instanceof we)if((r=t.geometry)==null||r.dispose(),Array.isArray(t.material))for(let n of t.material)n.dispose();else t.material&&t.material.dispose();i.remove(t)}(e=i.parent)==null||e.remove(i)}function Wl(i,r,e,t){var o,a;let n=t||e?zf(e,t):void 0;for(let l of i.children){if(!(l instanceof we))continue;let s=Array.isArray(l.material)?(o=l.material[0])==null?void 0:o.name:(a=l.material)==null?void 0:a.name,u=n==null?void 0:n[s],h=u?new le(u.color):e?new le(e):l.userData.originalColor;h&&(l.setColorAt(r,h),l.instanceColor&&(l.instanceColor.needsUpdate=!0))}}function ji(i,r){let e=new Bt;return i.scene.updateWorldMatrix(!0,!0),i.scene.traverse(t=>{var o,a,l;let n=t;if("isMesh"in n&&n.isMesh===!0){let s=n.geometry.clone();s.applyMatrix4(n.matrixWorld);let u=n.material,h;Array.isArray(u)?(h=(o=u[0].color)==null?void 0:o.clone(),u=u.map(f=>{var x;let b=f.clone();return(x=b.color)==null||x.setRGB(1,1,1),b})):(h=(a=u.color)==null?void 0:a.clone(),u=u.clone(),(l=u.color)==null||l.setRGB(1,1,1));let m=new we(s,u,r);m.count=0,m.frustumCulled=!1,m.layers.enable(Pt.SHOULD_CAST_SHADOWS),m.userData={entities:{},originalColor:h},e.add(m)}}),e}function th(i,r){let e=typeof r=="string"?new le(r):r;i.traverse(t=>{let n=t;"isMesh"in n&&n.isMesh===!0&&(Array.isArray(n.material)?n.material.forEach(o=>{"color"in o&&o.color.copy(e)}):"color"in n.material&&n.material.color.copy(e))})}function rh(i,r,e=!1){i.traverse(t=>{let n=t;"isMesh"in n&&n.isMesh===!0&&(Array.isArray(n.material)?n.material.forEach(o=>{(!e||!o.transparent)&&(o.transparent=r<1),o.opacity=r}):((!e||!n.material.transparent)&&(n.material.transparent=r<1),n.material.opacity=r))})}function Hf(i,r){i.traverse(e=>{let t=e;"isMesh"in t&&t.isMesh===!0&&(Array.isArray(t.material)?t.material.forEach(n=>{n.depthWrite=!r,n.depthTest=!r,r&&(n.transparent=!0)}):(t.material.depthWrite=!r,t.material.depthTest=!r,r&&(t.material.transparent=!0)))})}function Zi(i,r){i.traverse(e=>{e instanceof we&&e.material&&(Array.isArray(e.material)?e.material.forEach(t=>{t.transparent=r<1,t.opacity=r}):(e.material.transparent=r<1,e.material.opacity=r))})}function nh(i){i.traverse(r=>{var t,n;let e=r;"isMesh"in e&&e.isMesh===!0&&((t=e.geometry)==null||t.dispose(),Array.isArray(e.material)?e.material.forEach(o=>o.dispose()):(n=e.material)==null||n.dispose())})}function Vf(i){i.traverse(r=>{var e;r instanceof we&&(r.geometry.dispose(),Array.isArray(r.material)?r.material.forEach(t=>t.dispose()):(e=r.material)==null||e.dispose())})}function Dn(i,r){let e=r!==0,t=!1;return i.traverse(n=>{if(!(n instanceof we)&&!("isMesh"in n&&n.isMesh))return;let o=n.layers.isEnabled(Pt.SHOULD_CAST_SHADOWS);e&&!o?(n.layers.enable(Pt.SHOULD_CAST_SHADOWS),t=!0):!e&&o&&(n.layers.disable(Pt.SHOULD_CAST_SHADOWS),t=!0)}),t}v();var jl=class{constructor(){p(this,"element",null);p(this,"enabled",!1)}show(){this.enabled||(this.enabled=!0,this.create())}hide(){this.enabled&&(this.enabled=!1,this.element&&(this.element.remove(),this.element=null))}isEnabled(){return this.enabled}create(){this.element=document.createElement("div"),this.element.id="model-debug-ui",this.element.style.cssText="\n position: fixed;\n bottom: 10px;\n left: 10px;\n background: rgba(0, 0, 0, 0.8);\n color: #fff;\n font-family: monospace;\n font-size: 12px;\n padding: 10px;\n border-radius: 5px;\n z-index: 10000;\n max-height: 300px;\n overflow-y: auto;\n min-width: 200px;\n ",document.body.appendChild(this.element)}getActualInstanceCount(r){for(let e of r.mesh.children)if(e.isInstancedMesh)return e.count;return r.count}update(r,e,t){var o,a,l;if(!this.enabled||!this.element)return;let n='<div style="margin-bottom: 5px; font-weight: bold; border-bottom: 1px solid #666; padding-bottom: 5px;">Model Batches</div>';if(r.size===0)n+='<div style="color: #888;">No models loaded</div>';else{let s=0,u=0,h=Array.from(r.keys()).sort((m,d)=>{var x,y;let f=(x=e.get(m))!=null?x:"",b=(y=e.get(d))!=null?y:"";return f.localeCompare(b)});for(let m of h){let d=r.get(m);if(!d||d.size===0)continue;let f=(o=e.get(m))!=null?o:"unknown_".concat(m),b=0;for(let y of d)b+=this.getActualInstanceCount(y);s+=d.size,u+=b,n+='<div style="margin: 6px 0 2px 0;">',n+='<span style="color: #4fc3f7; font-weight: bold;">"'.concat(f,'"</span>'),n+='<span style="color: #aaa;"> ('.concat(b," total, ").concat(d.size," batch").concat(d.size!==1?"es":"",")</span>"),n+="</div>";let x=Array.from(d).sort((y,g)=>y.id.localeCompare(g.id));for(let y of x){let g=this.getActualInstanceCount(y),S=y.count,M=g!==S,E=y.opacity===1?"":" @".concat((y.opacity*100).toFixed(0),"%");n+='<div style="margin-left: 12px; color: #ccc; font-size: 11px;">',n+='<span style="color: #81c784;">'.concat(y.id,"</span>"),M?n+='<span style="color: #e57373;">: '.concat(g," actual / ").concat(S," tracked</span>"):n+='<span style="color: #fff;">: '.concat(g," instance").concat(g!==1?"s":"","</span>"),E&&(n+='<span style="color: #ffb74d;">'.concat(E,"</span>")),n+="</div>"}}n+='<div style="margin-top: 8px; padding-top: 5px; border-top: 1px solid #666; color: #fff;">',n+='Total: <span style="color: #81c784;">'.concat(u," instance").concat(u!==1?"s":"","</span>"),n+=', <span style="color: #e57373;">'.concat(s," draw call").concat(s!==1?"s":"","</span>"),n+="</div>"}if(t.size>0){n+='<div style="margin-top: 8px; border-top: 1px solid #666; padding-top: 5px;">',n+='<div style="margin-bottom: 5px; font-weight: bold; color: #ff9800;">Non-instanced Models</div>',n+='<span style="color: #aaa;">('.concat(t.size," total, ").concat(t.size," draw call").concat(t.size!==1?"s":"",")</span>");let s=new Map;for(let[u,h]of t){let m=(a=s.get(h.urlHash))!=null?a:[];m.push(u),s.set(h.urlHash,m)}for(let[u,h]of s){let m=(l=e.get(u))!=null?l:"unknown_".concat(u);n+='<div style="margin: 6px 0 2px 0;">',n+='<span style="color: #ff9800;">"'.concat(m,'"</span>'),n+='<span style="color: #aaa;"> ('.concat(h.length," model").concat(h.length!==1?"s":"",")</span>"),n+="</div>";for(let d of h)n+='<div style="margin-left: 12px; color: #ccc; font-size: 11px;">'.concat(d,"</div>")}n+="</div>"}this.element.innerHTML=n}destroy(){this.element&&(this.element.remove(),this.element=null)}};var Xi=100,x0=!0,Zl=class extends ve{constructor(e,t){super();p(this,"transparencyChanged",!1);p(this,"state");p(this,"convertTo3DMapPosition");p(this,"loader");p(this,"loadPromises",[]);p(this,"gltfCache",new Map);p(this,"gltfLoadPromises",new Map);p(this,"instanceMap",new Map);p(this,"debugUI");p(this,"modelNames",new Map);p(this,"batchCounter",0);p(this,"batchByMesh",new Map);p(this,"batchesByUrlHash",new Map);p(this,"nonInstancedModels",new Map);p(this,"pendingOpacityChanges",new Map);p(this,"detachedEntityIds",new Set);p(this,"tempMatrix",new Se);p(this,"tempQuaternion",new tn);p(this,"tempEuler",new Or);p(this,"tempScale",new N);p(this,"tempColor",new le);p(this,"endFrame",()=>{this.transparencyChanged=!1});this.state=e,this.convertTo3DMapPosition=t,this.debugUI=new jl}createBatch(e,t,n,o,a){this.batchCounter++;let l={id:"batch_".concat(this.batchCounter),mesh:e,count:0,maxCount:a,opacity:o,urlHash:t,containerId:n};return e.userData.batchId=l.id,this.batchByMesh.set(e,l),this.batchesByUrlHash.has(t)||this.batchesByUrlHash.set(t,new Set),this.batchesByUrlHash.get(t).add(l),l}removeBatch(e){var t,n;this.batchByMesh.delete(e.mesh),(t=this.batchesByUrlHash.get(e.urlHash))==null||t.delete(e),((n=this.batchesByUrlHash.get(e.urlHash))==null?void 0:n.size)===0&&this.batchesByUrlHash.delete(e.urlHash)}getBatchForMesh(e){return this.batchByMesh.get(e)}updateDebugUI(){this.debugUI.update(this.batchesByUrlHash,this.modelNames,this.nonInstancedModels)}showDebug(){this.debugUI.show(),this.updateDebugUI()}hideDebug(){this.debugUI.hide()}async getGLTFLoader(){if(this.loader)return this.loader;let{GLTFLoader:e}=await import("./GLTFLoader-BHAZAEWN.js");return this.loader=new e,this.loader}async getOrLoadGLTF(e,t){let n=this.gltfCache.get(t);if(n)return n;let o=this.gltfLoadPromises.get(t);if(o)return o;let a=await this.getGLTFLoader(),l=new Promise((s,u)=>{let h=d=>{this.gltfCache.set(t,d),this.gltfLoadPromises.delete(t),s(d)},m=d=>{this.gltfLoadPromises.delete(t),u(d)};$d(e)?a.parse(qd(e),"",h,m):Jd(e)?a.parse(Kd(e),"",h,m):a.load(e,h,void 0,m)});return this.gltfLoadPromises.set(t,l),l}createNonInstancedModel(e,t,n,o){var g,S,M,E,w;let a=e.components[0],l=e.components[1],s=a.feature,u=t.scene.clone(!0);u.updateWorldMatrix(!0,!0);let h=new Bt;h.userData={nonInstanced:!0,entityId:String(e.id),type:"model"},u.traverse(_=>{let L=_;if("isMesh"in L&&L.isMesh===!0){let T=L.clone();T.geometry=L.geometry.clone(),T.geometry.applyMatrix4(L.matrixWorld),T.position.set(0,0,0),T.rotation.set(0,0,0),T.scale.set(1,1,1),Array.isArray(L.material)?T.material=L.material.map(C=>C.clone()):T.material=L.material.clone(),T.userData={entityId:String(e.id)},h.add(T)}});let{x:m,y:d}=this.convertTo3DMapPosition(s.geometry.coordinates[1],s.geometry.coordinates[0],0),f=(g=s.geometry.coordinates[2])!=null?g:0,b=((S=l.verticalOffset)!=null?S:0)+f;a.altitude=b,a.position.set(m,d,a.altitude);let x=(M=l.scale)!=null?M:cn,y=(E=l.rotation)!=null?E:un;if(h.position.copy(a.position),h.rotation.set(de.degToRad(y[0]),de.degToRad(y[1]),de.degToRad(y[2])),h.scale.set(x[0],x[1],x[2]),l.color&&th(h,l.color),l.opacity!=null&&l.opacity!==1&&rh(h,l.opacity),l.visibleThroughGeometry&&Hf(h,!0),!l.EXPERIMENTAL_clippingEnabled){let _=(w=l.opacity)!=null?w:1;Dn(h,_)}n.add(h),a.mesh=h,a.instanceIndex=-1,this.nonInstancedModels.set(e.id,{urlHash:o,mesh:h}),this.updateDebugUI()}resizeInstanceContainer(e,t){let n=Uf(e.maxCount),o=ji(t,n),a=e.object.children,l=o.children;for(let u=0;u<a.length;u++){let h=a[u],m=l[u];if(!(!(h instanceof we)||!(m instanceof we))){for(let d=0;d<e.count;d++)h.getMatrixAt(d,this.tempMatrix),m.setMatrixAt(d,this.tempMatrix),m.userData.entities[d]=h.userData.entities[d],h.instanceColor&&(h.getColorAt(d,this.tempColor),m.setColorAt(d,this.tempColor));m.count=e.count,m.instanceMatrix.needsUpdate=!0}}let s=e.object.parent;return s&&(s.remove(e.object),s.add(o)),e.object=o,e.maxCount=n,e}getOrCreateInstanceContainer(e,t,n){let o=this.instanceMap.get(e);o||(o=new Map,this.instanceMap.set(e,o));let a=o.get(t);if(a){let l=this.getBatchForMesh(a.object);l&&(a.count=l.count)}else{let l=ji(n,Xi);a={object:l,count:0,maxCount:Xi},o.set(t,a);let s=this.createBatch(l,t,e,1,Xi);a.batch=s}return a}createModelFromFeature(e,t,n){let o=new pn(t),a=X({},n);t.properties.verticalOffset!=null&&(a.verticalOffset=t.properties.verticalOffset),t.properties.rotation!=null&&(a.rotation=t.properties.rotation),t.properties.scale!=null&&(a.scale=t.properties.scale);let l=new rs(a);o.instancingDisabled=l.visibleThroughGeometry===!0||l.EXPERIMENTAL_clippingEnabled===!0;let s=new Pe(o,l);return s.id=e,l.EXPERIMENTAL_clippingEnabled&&(s.components[7]=new is),s}async populateModelGroup(e,t,n){var u,h,m,d;let o=ro(t),a=this.getOrLoadGLTF(t,o).then(f=>{var C;let b=n.parent;if(!(b instanceof Ne))return;let x=b.userData.entityId,y=this.getOrCreateInstanceContainer(x,o,f);y.count+e.size>y.maxCount&&(y=this.resizeInstanceContainer(y,f)),y.object.parent||n.add(y.object);let S=new Se,M=new Or,E=new tn,w=new N,_,L,T;for(let R of e.values()){if(T=this.state.geometry3DMap.get(R),!T||(T==null?void 0:T.type)!=="model"||!this.state.geometry3DsInScene.has(T))continue;let O=T.components[0],B=T.components[1];if(O.instanceIndex!=null&&O.instanceIndex>=0||O.instancingDisabled&&O.mesh)continue;if(L=O.feature,O.instancingDisabled){this.createNonInstancedModel(T,f,n,o);continue}let k=B.opacity!=null&&B.opacity!==1;if(k){let U=(C=B.opacity)!=null?C:1,ce=Math.round(U*100),te,G,H=this.batchesByUrlHash.get(o);if(H){for(let Q of H)if(Q.containerId===b.userData.entityId&&Math.round(Q.opacity*100)===ce&&Q.count<Q.maxCount){te=Q,G=Q.mesh;break}}if(!te||!G){let Q=ji(f,Xi);Q.userData.detached=!0,Q.userData.sharedOpacity=U,n.add(Q),te=this.createBatch(Q,o,b.userData.entityId,U,Xi),G=Q,Zi(Q,U),Dn(Q,U)}let V=te.count;O.mesh=G,O.instanceIndex=V,te.count++,this.detachedEntityIds.add(T.id)}else O.mesh=y.object,O.instanceIndex=y.count;Ul(T),B.dirty=!1,_=this.convertTo3DMapPosition(L.geometry.coordinates[1],L.geometry.coordinates[0],0),O.position.set(_.x,_.y,O.altitude),oa(M,B.rotation),aa(w,B.scale),E.setFromEuler(M),S.compose(O.position,E,w);let J=O.mesh,z=O.instanceIndex;for(let U of J.children)U instanceof we&&(U.setMatrixAt(z,S),U.userData.entities[z]=T.id,U.count=z+1,U.instanceMatrix.needsUpdate=!0);if(Wl(J,z,B.color,B.material),!k){y.count++;let U=this.getBatchForMesh(y.object);U&&(U.count=y.count)}Hl(O.mesh)}this.publish("model-loaded")});this.loadPromises.push(a);let l=(h=(u=n.parent)==null?void 0:u.userData)==null?void 0:h.entityId,s=(m=this.instanceMap.get(l))==null?void 0:m.get(o);return(d=s==null?void 0:s.object)!=null?d:new Bt}update(){for(let t of this.state.geometryGroupIdsToLoad.values()){let n=this.state.geometry3DMap.get(t);n instanceof mt&&n.userData.dirty&&n.userData.modelURL&&(this.populateModelGroup(n.userData.entities3D,n.userData.modelURL,n),n.userData.dirty=!1,n.userData.localCenter=void 0)}this.updateModelStyles(),this.rebatchDetachedInstances(),this.flushPendingOpacityChanges(),this.updateDebugUI();let e=this.loadPromises;return this.loadPromises=[],Promise.all(e)}rebatchDetachedInstances(){var t,n,o,a;if(!x0||this.detachedEntityIds.size===0)return;let e=new Map;for(let l of this.detachedEntityIds){let s=this.state.geometry3DMap.get(l);if(!s||s.type!=="model")continue;let u=s.components[0],h=s.components[1],m=(t=u.mesh)==null?void 0:t.userData;if(!((n=u.mesh)!=null&&n.parent))continue;let d=(o=h.opacity)!=null?o:1,f=m==null?void 0:m.sharedOpacity;if(Math.round(d*100)===100&&f!==void 0){this.pendingOpacityChanges.set(s.id,{entity:s,targetOpacity:d});continue}if(f!==void 0&&Math.abs(d-f)<=.01)continue;if(f!==void 0&&Math.abs(d-f)>.01){this.pendingOpacityChanges.set(s.id,{entity:s,targetOpacity:d});continue}let x=u.mesh.parent;if(!(x instanceof mt))continue;let y=x.userData.modelURL;if(!y)continue;let g=ro(y),S=(a=h.opacity)!=null?a:1,M=Math.round(S*100);e.has(g)||e.set(g,new Map);let E=e.get(g);E.has(M)||E.set(M,[]),E.get(M).push(s)}for(let[l,s]of e.entries()){let u=this.gltfCache.get(l);if(u)for(let[h,m]of s.entries()){if(m.length<2)continue;let d=h/100;this.createSharedBatchForDetached(m,u,d,l)}}this.publish("batch-changed")}createSharedBatchForDetached(e,t,n,o){var M;if(e.length<2)return;let l=(M=e[0].components[0].mesh)==null?void 0:M.parent;if(!l)return;let s=l.parent,u=s instanceof Ne?s.userData.entityId:"unknown",h=ji(t,e.length);h.userData.detached=!0,h.userData.sharedOpacity=n,l.add(h);let m=this.createBatch(h,o,u,n,e.length);Zi(h,n),Dn(h,n);let d=new Se,f=new Or,b=new tn,x=new N,y,g,S=0;for(let E of e){let w=E.components[0],_=E.components[1],L=w.mesh;if(L){let T=this.getBatchForMesh(L);T&&this.removeBatch(T),Vl(L)}w.mesh=h,w.instanceIndex=S,g=w.feature,y=this.convertTo3DMapPosition(g.geometry.coordinates[1],g.geometry.coordinates[0],0),w.position.set(y.x,y.y,w.altitude),oa(f,_.rotation),aa(x,_.scale),_.visible===!1&&x.set(0,0,0),b.setFromEuler(f),d.compose(w.position,b,x);for(let T of h.children)T instanceof we&&(T.setMatrixAt(S,d),T.userData.entities[S]=E.id,T.count=S+1,T.instanceMatrix.needsUpdate=!0);Wl(h,S,_.color,_.material),S++}m.count=S,Hl(h)}removeInstanceFromBatch(e,t,n){var u;let o=e.count-1,a=e.opacity===1&&((u=t.userData)==null?void 0:u.detached)!==!0;if(e.count===1){if(a){e.count=0;for(let d of t.children)d instanceof we&&(d.count=0,d.instanceMatrix.needsUpdate=!0);let h=this.instanceMap.get(e.containerId),m=h==null?void 0:h.get(e.urlHash);m&&m.object===e.mesh&&(m.count=0),this.updateDebugUI();return}this.removeBatch(e),Vl(t),this.updateDebugUI();return}for(let h of t.children)if(h instanceof we){if(n!==o){h.getMatrixAt(o,this.tempMatrix),h.getColorAt(o,this.tempColor),h.setMatrixAt(n,this.tempMatrix),h.setColorAt(n,this.tempColor);let m=h.userData.entities[o];if(m){h.userData.entities[n]=m;let d=this.state.geometry3DMap.get(m);d&&(d.components[0].instanceIndex=n)}}delete h.userData.entities[o],h.count=o,h.instanceMatrix.needsUpdate=!0,h.instanceColor&&(h.instanceColor.needsUpdate=!0)}e.count=o;let l=this.instanceMap.get(e.containerId),s=l==null?void 0:l.get(e.urlHash);s&&s.object===e.mesh&&(s.count=o),this.updateDebugUI()}updateModelStyles(){var e,t,n,o,a;for(let l of this.state.geometry3DsInScene){if((l==null?void 0:l.type)!=="model")continue;let s=l.components[1],u=l.components[0];if(!s.dirty&&!u.positionDirty)continue;if(u.instancingDisabled){this.updateNonInstancedModelStyle(l),s.dirty=!1,u.positionDirty=!1;continue}let h=(e=u.mesh)==null?void 0:e.userData,m=h==null?void 0:h.detached,d=s.opacity!=null&&s.opacity!==1,f=(t=s.opacity)!=null?t:1,b=h==null?void 0:h.sharedOpacity,x=b!==void 0&&Math.abs(f-b)>.01;if((d&&!m&&u.mesh||x)&&this.pendingOpacityChanges.set(l.id,{entity:l,targetOpacity:f}),Ul(l),this.updateInstanceTransform(l),this.updateInstanceColor(l,s.color,s.material),((o=(n=u.mesh)==null?void 0:n.userData)==null?void 0:o.detached)&&u.mesh){let g=(a=s.opacity)!=null?a:1;Zi(u.mesh,g),Dn(u.mesh,g)&&(this.transparencyChanged=!0)}s.dirty=!1,u.positionDirty=!1}}flushPendingOpacityChanges(){var o,a;if(this.pendingOpacityChanges.size===0)return;let e=new Map,t=new Map,n=(l,s,u,h,m,d)=>{let f=Math.round(s*100),b="".concat(u,"_").concat(h,"_").concat(f),x=t.get(b);x||(x={entities:[],targetOpacity:s,urlHash:u,containerId:h,gltf:m,parent:d},t.set(b,x)),x.entities.push(l)};for(let{entity:l,targetOpacity:s}of this.pendingOpacityChanges.values()){let u=l.components[0];if(!u.mesh||u.instanceIndex==null)continue;let h=u.mesh,m=this.getBatchForMesh(h),d=h.parent;if(!(d instanceof mt))continue;let f=d.userData.modelURL;if(!f)continue;let b=ro(f),x=this.gltfCache.get(b);if(!x)continue;let y=d.parent,g=y instanceof Ne?y.userData.entityId:"unknown";if(m){let S=e.get(m);S||(S={entities:[],targetOpacity:s},e.set(m,S)),Math.round(S.targetOpacity*100)===Math.round(s*100)?S.entities.push(l):n(l,s,b,g,x,d)}else n(l,s,b,g,x,d)}for(let[l,s]of e){let{entities:u,targetOpacity:h}=s,m=((o=l.mesh.userData)==null?void 0:o.detached)===!0,d=Math.round(h*100)===100;if(u.length===l.count&&m&&!d)l.opacity=h,l.mesh.userData.sharedOpacity=h,Zi(l.mesh,h),Dn(l.mesh,h)&&(this.transparencyChanged=!0);else{let f=(a=u[0])==null?void 0:a.components[0],b=f==null?void 0:f.mesh,x=b==null?void 0:b.parent;if(x instanceof mt){let y=x.userData.modelURL;if(y){let g=ro(y),S=this.gltfCache.get(g),M=x.parent,E=M instanceof Ne?M.userData.entityId:"unknown";if(S)for(let w of u)n(w,h,g,E,S,x)}}}}for(let l of t.values()){let{entities:s,targetOpacity:u,urlHash:h,containerId:m,gltf:d,parent:f}=l,b=Math.round(u*100);for(let E of s){let w=E.components[0],_=w.mesh,L=this.getBatchForMesh(_),T=w.instanceIndex;L&&T!=null&&T>=0&&this.removeInstanceFromBatch(L,_,T)}let x,y,g=this.batchesByUrlHash.get(h);if(g){for(let E of g)if(E.containerId===m&&Math.round(E.opacity*100)===b&&E.count+s.length<=E.maxCount){x=E,y=E.mesh;break}}if(!x||!y){let E=Math.max(Xi,s.length),w=ji(d,E);w.userData.detached=!0,w.userData.sharedOpacity=u,f.add(w),x=this.createBatch(w,h,m,u,E),y=w,Zi(w,u),Dn(w,u)&&(this.transparencyChanged=!0)}let S,M;for(let E of s){let w=E.components[0],_=E.components[1],L=x.count;w.mesh=y,w.instanceIndex=L,M=w.feature,S=this.convertTo3DMapPosition(M.geometry.coordinates[1],M.geometry.coordinates[0],0),w.position.set(S.x,S.y,w.altitude),oa(this.tempEuler,_.rotation),aa(this.tempScale,_.scale),_.visible===!1&&this.tempScale.set(0,0,0),this.tempQuaternion.setFromEuler(this.tempEuler),this.tempMatrix.compose(w.position,this.tempQuaternion,this.tempScale);for(let T of y.children)T instanceof we&&(T.setMatrixAt(L,this.tempMatrix),T.userData.entities[L]=E.id,T.count=L+1,T.instanceMatrix.needsUpdate=!0);this.updateInstanceColor(E,_.color,_.material),x.count++,y.userData.detached?this.detachedEntityIds.add(E.id):this.detachedEntityIds.delete(E.id)}Hl(y),this.publish("batch-changed")}this.pendingOpacityChanges.clear(),this.updateDebugUI()}updateInstanceTransform(e){let t=e.components[0],n=e.components[1];if(!t.mesh)return;let o=t.feature,{x:a,y:l}=this.convertTo3DMapPosition(o.geometry.coordinates[1],o.geometry.coordinates[0],0);if(t.position.set(a,l,t.altitude),oa(this.tempEuler,n.rotation),n.visible===!1?this.tempScale.set(0,0,0):aa(this.tempScale,n.scale),t.instancingDisabled){t.mesh.position.copy(t.position),t.mesh.rotation.set(this.tempEuler.x,this.tempEuler.y,this.tempEuler.z),t.mesh.scale.copy(this.tempScale);return}if(!(t.instanceIndex==null||t.instanceIndex<0)){this.tempQuaternion.setFromEuler(this.tempEuler),this.tempMatrix.compose(t.position,this.tempQuaternion,this.tempScale);for(let s of t.mesh.children)s instanceof we&&(s.setMatrixAt(t.instanceIndex,this.tempMatrix),s.instanceMatrix.needsUpdate=!0)}}updateNonInstancedModelStyle(e){var a;let t=e.components[0],n=e.components[1];if(!t.mesh)return;Ul(e),this.updateInstanceTransform(e);let o=(a=n.opacity)!=null?a:1;rh(t.mesh,o,n.visibleThroughGeometry),n.EXPERIMENTAL_clippingEnabled||Dn(t.mesh,o)&&(this.transparencyChanged=!0),n.color&&th(t.mesh,n.color)}updateInstanceColor(e,t,n){let o=e.components[0];!o.mesh||o.instanceIndex==null||o.instanceIndex<0||Wl(o.mesh,o.instanceIndex,t,n)}removeInstance(e){var h,m;let t=e.components[0];if(this.detachedEntityIds.delete(e.id),this.nonInstancedModels.has(e.id)){let d=this.nonInstancedModels.get(e.id);return d!=null&&d.mesh&&(nh(d.mesh),(h=d.mesh.parent)==null||h.remove(d.mesh)),this.nonInstancedModels.delete(e.id),t.mesh=null,this.updateDebugUI(),!0}if(!t.mesh||t.instanceIndex==null||t.instanceIndex<0)return!0;let n=this.getBatchForMesh(t.mesh);if(!n)return!0;let o=t.instanceIndex,a=n.count-1,l=n.opacity===1&&((m=t.mesh.userData)==null?void 0:m.detached)!==!0;if(n.count===1){if(l){n.count=0;for(let g of t.mesh.children)g instanceof we&&(g.count=0,g.instanceMatrix.needsUpdate=!0);let x=this.instanceMap.get(n.containerId),y=x==null?void 0:x.get(n.urlHash);return y&&y.object===n.mesh&&(y.count=0),t.mesh.parent&&t.mesh.parent.remove(t.mesh),t.mesh=null,this.updateDebugUI(),!1}let d=n.urlHash;this.removeBatch(n);let f=this.batchesByUrlHash.get(d),b=!1;if(f){for(let x of f)if(x.count>0){b=!0;break}}return Vl(t.mesh),t.mesh=null,this.updateDebugUI(),!b}for(let d of t.mesh.children)if(d instanceof we){if(o!==a){d.getMatrixAt(a,this.tempMatrix),d.getColorAt(a,this.tempColor),d.setMatrixAt(o,this.tempMatrix),d.setColorAt(o,this.tempColor);let f=d.userData.entities[a];if(f){d.userData.entities[o]=f;let b=this.state.geometry3DMap.get(f);b?b.components[0].instanceIndex=o:$.warn("[removeInstance] Could not find lastEntity in geometry3DMap:",f)}}delete d.userData.entities[a],d.count=a,d.instanceMatrix.needsUpdate=!0,d.instanceColor&&(d.instanceColor.needsUpdate=!0)}n.count=a;let s=this.instanceMap.get(n.containerId),u=s==null?void 0:s.get(n.urlHash);return u&&u.object===n.mesh&&(u.count=a),t.mesh=null,this.updateDebugUI(),!1}destroy(){var e;this.gltfCache.clear(),this.gltfLoadPromises.clear();for(let t of this.instanceMap.values())for(let n of t.values())Vf(n.object);this.instanceMap.clear(),this.modelNames.clear(),this.batchByMesh.clear(),this.batchesByUrlHash.clear(),this.batchCounter=0;for(let t of this.nonInstancedModels.values())t.mesh&&(nh(t.mesh),(e=t.mesh.parent)==null||e.remove(t.mesh));this.nonInstancedModels.clear(),this.debugUI.destroy(),this.loadPromises=[],this.loader=void 0}};v();var Vr,sa,ke,la,Wr,Yi,Wf,jf,Xl=class{constructor(r,e,t,n,o={}){A(this,Yi);A(this,Vr);A(this,sa);A(this,ke);A(this,la,new N);A(this,Wr,new he);F(this,Vr,e),F(this,sa,t),F(this,ke,new Ed(r,t,Z(this,Yi,Wf).call(this,n),o))}get pipeline(){return c(this,ke)}get labelCanvas(){return c(this,ke).labelCanvas}get interactiveCollidersQTree(){return c(this,ke).collisionSystem.interactiveCollidersQTree}get visibleCollidersQTree(){return c(this,ke).collisionSystem.visibleCollidersQTree}resize(){c(this,ke).resize()}syncTwoDEntities(){c(this,ke).clearEntities(),c(this,sa).pixelRatio=c(this,Vr).pixelRatio;for(let r of c(this,Vr).geometry2DsInScene)r.syncPosition(),c(this,ke).addEntity(r.entity2D)}update(r,e,t,n=[]){Z(this,Yi,jf).call(this),c(this,ke).update(r,e,t,n)}markDirty(){c(this,ke).markDirty()}get collidersNeedRecomputing(){return c(this,ke).collidersNeedRecomputing}set collidersNeedRecomputing(r){c(this,ke).collidersNeedRecomputing=r}updateWatermark(r){c(this,ke).updateWatermark(r)}cancelPendingFrames(){c(this,ke).cancelPendingFrames()}setCollidersDirty(){c(this,ke).collisionSystem.collidersDirty=!0}deleteTextCacheEntry(r){delete c(this,ke).drawSystem.textCache[r]}showCollisionBoxes(){c(this,ke).showCollisionBoxes()}hideCollisionBoxes(){c(this,ke).hideCollisionBoxes()}destroy(){c(this,ke).destroy()}};Vr=new WeakMap,sa=new WeakMap,ke=new WeakMap,la=new WeakMap,Wr=new WeakMap,Yi=new WeakSet,Wf=function(r){return(e,t,n)=>(c(this,la).set(e,t,n),c(this,Wr).set(0,0),r(c(this,Wr),c(this,la)),c(this,Wr).x===0&&c(this,Wr).y===0?null:{x:c(this,Wr).x,y:c(this,Wr).y})},jf=function(){let r,e;for(let t of c(this,Vr).geometry2DsInScene){e=t.components[0];let n=t.attachedTo?c(this,Vr).geometry3DMap.get(t.attachedTo):void 0;if(n instanceof Pe)if(c(this,Vr).geometry3DsInScene.has(n)){if(r=n.components[1],r.dirty||e.attachedDirty){let a=r.height,l=r.altitude;t.setAltitude(a+l)}let o=r.visible;e.visible!==o&&(e.visible=o)}else e.visible===!0&&(e.visible=!1);e.attachedDirty=!1}};var Zf=new sn;var{DEFAULT_PITCH:lh,DEFAULT_BEARING:ch,DEFAULT_ZOOM_LEVEL:uh,DEFAULT_MIN_ZOOM_LEVEL:S0,DEFAULT_MAX_ZOOM_LEVEL:M0}=Xt,E0=de.radToDeg(.6435011087932844),Fe,Ge,ni,ii,$i,Pn,oi,ai,Et,oh,P,je,In,_t,$e,I,Yl,zt,ze,$l,si,Xf,Yf,jr,ql,ca,Jl,Kl,qi,Ji,Ql,ua,ha,da,ah,li,ma,pa,Zr,Xr,sh,ec,ye,Ki,fa,ih=class extends ve{constructor(e,t={}){var b,x,y,g,S,M,E,w,_,L,T,C,R,O,B,k,J;super();A(this,Et);p(this,"options");p(this,"container");p(this,"Debug");A(this,Fe);A(this,Ge);A(this,ni);A(this,ii);A(this,$i);A(this,Pn);A(this,oi);A(this,ai);p(this,"rendererDomElement");A(this,P,{geometry3DMap:new Map,geometry2DMap:new Map,geometry2DIdsInScene:new Set,geometry3DIdsInScene:new Set,geometryGroupIdsToLoad:new Set,geometry3DsInScene:new Set,geometry2DsInScene:new Set,geometryScene:new Ne("__scene"),hoverColor:"#f6efff",text3dHoverColor:"white",insetsPadding:$a,shouldMeasureCanvas:!0,pixelRatio:this.resolutionScale,canvasWidth:0,canvasHeight:0,internalTweenGroup:new Dc,externalTweenGroup:new Dc,cameraObject:new Oc,naturalBearing:0,containerOffset:[0,0],useStandaloneCamera:!1,directionalLight:new Xa(16777215,.3*Math.PI),ambientLight:new pd(16777215,.741*Math.PI),renderer:void 0,threeJSScene:new Lr,depthRangeFor3D:[0,1],geometry2DState:{entities:new Set,entityMap:new Map,entityIds:new Set,pixelRatio:1}});p(this,"camera");A(this,je);A(this,In);A(this,_t);A(this,$e);A(this,I,{});A(this,Yl,window.matchMedia("screen and (min-resolution: 2dppx)"));p(this,"map");A(this,zt,()=>{var e,t;(e=this.signal)!=null&&e.aborted||!((t=c(this,I))!=null&&t.renderSystem)||(c(this,I).renderSystem.twoDdirty=!0)});A(this,ze,()=>{var e,t;(e=this.signal)!=null&&e.aborted||!((t=c(this,I))!=null&&t.renderSystem)||(c(this,I).renderSystem.threeDdirty=!0)});A(this,$l,()=>{this.map&&(c(this,P).depthRangeFor3D=this.map.painter.depthRangeFor3D)});A(this,si,(e,t)=>{e.addEventListener("childadded",t),e.addEventListener("childremoved",t),this.onAbort(()=>{e.removeEventListener("childadded",t),e.removeEventListener("childremoved",t)})});A(this,jr,"standalone");A(this,ql,()=>{c(this,I).geometryDisposalSystem.dirty=!0,this.render()});A(this,ca,e=>Math.trunc(e*10)/10);A(this,Jl,()=>{Z(this,Et,oh).call(this,Ci()),c(this,P).geometry2DState.pixelRatio=this.resolutionScale,c(this,I).twoDEntitySystem.markDirty(),c(this,Ji).call(this,void 0,void 0,!0)});A(this,Kl,()=>{c(this,Ji).call(this)});A(this,qi);A(this,Ji,(e,t,n=!1)=>{let o=e!=null?e:this.rendererDomElement.clientWidth,a=t!=null?t:this.rendererDomElement.clientHeight;if((o===0||a===0)&&!n)return;if(c(this,P).canvasWidth=o,c(this,P).canvasHeight=a,c(this,I).twoDEntitySystem.resize(),Z(this,Et,oh).call(this,Ci()),c(this,da).call(this),Z(this,Et,Yf).call(this),c(this,I).cameraSystem.resize(this.canvasWidth,this.canvasHeight),c(this,I).cameraSystem.dirty=!0,c(this,I).cameraSystem.stateDirty=!0,this.map!=null){ts(this.map,this.camera.minZoomLevel,this.camera.maxZoomLevel);let u=this.camera.zoomLevel,h=de.clamp(u,this.camera.minZoomLevel,this.camera.maxZoomLevel);h!==u&&this.camera.setZoomLevel(h)}c(this,I).watermarkSystem.resize(this.canvasWidth,this.canvasHeight),c(this,I).htmlControlsSystem.resize(this.canvasWidth),c(this,I).geometryInFocusSystem.resize(),c(this,I).occlusion2DSystem.resize(),c(this,I).twoDEntitySystem.resize();let{top:l,left:s}=this.container.getBoundingClientRect();c(this,P).containerOffset=[l,s],this.publish("resize"),this.map!=null&&this.publish("camera-change",this.camera),this.render()});A(this,Ql,()=>{this.renderSync()});A(this,ua,new N);p(this,"project",(e,t)=>{if(c(this,Ge).position.z+this.camera.elevation>t.z){c(this,ua).copy(t);let n=c(this,ua).project(c(this,qi)),o=(n.x+1)/2*this.canvasWidth-0/2,a=(-n.y+1)/2*this.canvasHeight-0/2,l=c(this,ca).call(this,o),s=c(this,ca).call(this,a);e.x=l,e.y=s,e instanceof N&&(e.z=n.z)}else e.x=-1e3,e.y=-1e3,e instanceof N&&(e.z=1/0)});A(this,ha,(e,t)=>{c(this,$e).setBufferSize(e,t),c(this,Ge).aspect=e/t,c(this,Ge).updateProjectionMatrix(),c(this,Ge).updateMatrixWorld(!0),c(this,$i).x=e,c(this,$i).y=t});A(this,da,()=>{var a;let e=c(this,P).canvasWidth=this.rendererDomElement.clientWidth,t=c(this,P).canvasHeight=this.rendererDomElement.clientHeight,n=Math.floor(e*this.resolutionScale),o=Math.floor(t*this.resolutionScale);c(this,ha).call(this,n,o),(a=this.map)==null||a.resize(),c(this,P).shouldMeasureCanvas=!1});p(this,"getParentContainer",(e,t=!0)=>{if(!e)return t?c(this,P).geometryScene:void 0;if(typeof e=="string"||typeof e=="number"){let n=c(this,P).geometry3DMap.get(e);return n instanceof Ne?n:($.warn("Parent (".concat(typeof e=="object"?e.id:e,") is not a valid container, adding to scene")),t?c(this,P).geometryScene:void 0)}else if(e.type==="group-container"){let n=c(this,P).geometry3DMap.get(e.id);if(n instanceof Ne)return n}return t?c(this,P).geometryScene:void 0});p(this,"showCollisionBoxes",()=>{c(this,I).twoDEntitySystem.showCollisionBoxes(),this.render()});p(this,"hideCollisionBoxes",()=>{c(this,I).twoDEntitySystem.hideCollisionBoxes(),this.render()});p(this,"projectScreenXYToCoordinate",(e,t,n=!1)=>{var m,d;let o=this.container.getBoundingClientRect(),a=(e-o.left)/c(this,P).canvasWidth*2-1,l=-((t-o.top)/c(this,P).canvasHeight)*2+1,s=new he(a,l),u,h;if(n)Zf.setFromCamera(s,c(this,Ge)),u=(m=Zf.intersectObject(c(this,Pn),!1)[0])==null?void 0:m.point;else{let f=c(this,I).interactionSystem.getThreeDIntersectsFromXY(s);u=(d=f==null?void 0:f[0])==null?void 0:d.point,h=c(this,I).interactionSystem.getGroupContainerIntersectsFromXY(s)}if(u)return{coordinate:this.convert3DMapPositionToCoordinate(u),groupContainers:h}});p(this,"projectCoordinateToScreenXY",e=>{let t=this.convertTo3DMapPosition(e[1],e[0],e[2]||0),n=new he;return this.project(n,t),{x:n.x,y:n.y}});p(this,"convert3DMapPositionToCoordinate",e=>{var o,a,l,s;let{lat:t,lon:n}=Ja((a=(o=c(this,P).center)==null?void 0:o[1])!=null?a:0,(s=(l=c(this,P).center)==null?void 0:l[0])!=null?s:0,e.x,e.y);return[n,t,e.z]});p(this,"setBackgroundColor",(e,t)=>{c(this,$e).setBackgroundColor(e,t)});p(this,"getMetersPerPixel",()=>c(this,I).cameraSystem.getCurrentMetersPerPixel());p(this,"hideOutdoorLayersIntersectingPolygons",(e,t)=>{c(this,I).outdoorLayersSystem.hideLayersIntersectingPolygons(e,t),this.render()});A(this,li,new yi);A(this,ma,new Se);A(this,pa,e=>{var t;$.error("Render failed: ",e,(t=e.stack)!=null?t:"No stack trace available"),this.publish("render-error",{error:e})});p(this,"render",()=>{var e,t;if(!(((e=c(this,I))==null?void 0:e.renderSystem)==null||(t=this.signal)!=null&&t.aborted))if(this.map&&(this.mode==="outdoors-interleaved"||this.mode==="outdoors-overlay"))this.map.triggerRepaint();else return c(this,I).renderSystem.update().catch(c(this,pa))});p(this,"renderSync",()=>{var e;return(e=this.signal)!=null&&e.aborted?Promise.resolve():c(this,I).renderSystem.update(!0).catch(c(this,pa))});A(this,Zr,fi(()=>{this.publish("user-interaction-start",void 0)},0,!0));A(this,Xr,fi(()=>{this.publish("user-interaction-end",void 0),this.render()},0,!0));p(this,"on",(e,t,n)=>{let o=super.on(e,t,n);return["outdoor-view-loaded","outdoor-style-loaded"].includes(e)&&this.mode==="standalone"&&D.env.NODE_ENV!=="test"&&($.warn('"'.concat(e,'" was subscribed to but outdoor view is disabled. The event has been triggered immediately. Enable outdoor view or remove the listener.')),this.publish(e),o()),o});p(this,"off",(e,t)=>{super.off(e,t)});p(this,"getCursor",()=>c(this,I).interactionSystem.getCursor());A(this,ec,()=>{try{c(this,jr)!=="outdoors-overlay"&&(this.map&&this.map.remove(),this.container&&this.rendererDomElement&&this.container.contains(this.rendererDomElement)&&this.container.removeChild(this.rendererDomElement)),this.container&&c(this,je)&&this.container.contains(c(this,je))&&this.container.removeChild(c(this,je))}catch(e){$.warn("Error during DOM cleanup, some elements may not have been removed:",e)}});A(this,ye,e=>(this.onAbort(()=>{e&&typeof e=="object"&&("destroy"in e&&typeof e.destroy=="function"?e.destroy():"dispose"in e&&typeof e.dispose=="function"&&e.dispose())}),e));p(this,"destroy",()=>{var e,t,n;!c(this,I)||(e=this.signal)!=null&&e.aborted||(super.destroy(),(t=globalThis.MappedinDebug)!=null&&t.__idleCallbackInteractionState&&(globalThis.MappedinDebug.__idleCallbackInteractionState.unregisterInteractionChecker(c(this,I).cameraSystem.isUserInteracting),globalThis.MappedinDebug.__idleCallbackInteractionState.unregisterInteractionChecker(c(this,I).cameraSystem.isCameraMoving)),this.remove("__scene"),c(this,$e).destroy(),(n=c(this,Fe))==null||n.traverse(o=>{at(o),"dispose"in o&&typeof o.dispose=="function"&&o.dispose()}),F(this,Fe,void 0),F(this,I,void 0),c(this,ec).call(this),F(this,$e,void 0))});A(this,Ki,new N);A(this,fa,new N);if(c(this,P).useStandaloneCamera=(b=t.useStandaloneCamera)!=null?b:!1,c(this,P).naturalBearing=(x=t.naturalBearing)!=null?x:0,this.convertTo3DMapPosition=this.convertTo3DMapPosition.bind(this),!e.clientWidth||!e.clientHeight)throw new Error("[MappedinJS] Container width and height must be greater than 0");(t.mode==="outdoors-interleaved"||t.mode==="outdoors-overlay")&&t.map&&(F(this,jr,t.mode),this.map=t.map),c(this,si).call(this,c(this,P).geometryScene,()=>{c(this,ze).call(this),c(this,zt).call(this)}),c(this,P).geometry3DMap.set(c(this,P).geometryScene.userData.entityId,c(this,P).geometryScene),t.center&&(c(this,P).center=t.center?[...t.center]:[0,0]),this.options=t,this.container=e,Z(this,Et,Xf).call(this),c(this,I).htmlControlsSystem=c(this,ye).call(this,new Vs(this.container,{outdoorEnabled:!!this.map})),c(this,I).maskingSystem=c(this,ye).call(this,new Rl(c(this,P))),c(this,jr)!=="outdoors-overlay"&&c(this,I).htmlControlsSystem.addAttributionControl(this.options.attribution),window.MappedinDebug||(window.MappedinDebug={}),D.env.NODE_ENV==="test"&&(window.MappedinDebug.mapViewCoreInstance=this),F(this,$e,new cs({antialias:typeof t.antialias=="boolean"?t.antialias:!0,alpha:!1,canvas:this.mode!=="standalone"?(y=t.gl)==null?void 0:y.canvas:void 0,onWebGLContextCreationError:t.onWebGLContextCreationError,onWebGLContextLost:t.onWebGLContextLost,onWebGLContextRestored:z=>{var U;(U=t.onWebGLContextRestored)==null||U.call(t,z),c(this,zt).call(this),c(this,ze).call(this),this.render()},onWebGLRendererError:t.onWebGLRendererError,backgroundColor:t.backgroundColor||"#ffffff",backgroundAlpha:(g=t.backgroundAlpha)!=null?g:1})),c(this,P).renderer=c(this,$e).renderer,F(this,Fe,c(this,P).threeJSScene),c(this,Fe).matrixWorldAutoUpdate=!1,c(this,jr)!=="standalone"&&c(this,Fe).add(kd()),c(this,Fe).add(c(this,P).geometryScene);let n=window.__THREE_DEVTOOLS__;D.env.NODE_ENV==="dev"&&typeof n<"u"&&(n.dispatchEvent(new CustomEvent("observe",{detail:c(this,Fe)})),n.dispatchEvent(new CustomEvent("observe",{detail:c(this,$e)}))),F(this,Ge,new Oc(E0,this.aspect,50,1e5)),c(this,P).cameraObject=c(this,Ge),F(this,ii,new ad),c(this,ii).matrixWorldAutoUpdate=!1,c(this,Ge).renderOrder=999;let o=new Tt;o.add(c(this,Ge)),F(this,ai,new Tt),c(this,ai).add(o),c(this,Fe).add(c(this,ai)),c(this,Ge).updateProjectionMatrix(),c(this,Ge).updateMatrixWorld(!0),(S=t.__EXPERIMENTAL_shadows)!=null&&S.enabled&&(c(this,I).shadowsSystem=c(this,ye).call(this,new zl(c(this,P),c(this,$e),c(this,ai),t.__EXPERIMENTAL_shadows)),this.map&&this.onMapLibreEvent("render",c(this,$l))),F(this,qi,this.mode==="standalone"?c(this,Ge):c(this,ii)),this.referenceMap={scale:1,latitude:0,longitude:0,getNorth:()=>0,georeference:[{target:{x:0,y:0}},{target:{x:0,y:0}},{target:{x:0,y:0}},{target:{x:0,y:0}}]},this.rendererDomElement=c(this,$e).domElement(),F(this,$i,new he);let a=new bt(1e6,1e6),l=new dt({color:0,visible:!1});F(this,Pn,new me(a,l)),c(this,Pn).name="worldPlane",c(this,Fe).add(c(this,Pn)),(M=t.gl)!=null&&M.canvas||e.appendChild(this.rendererDomElement),window.addEventListener("resize",c(this,Kl),{capture:!1,signal:this.signal}),c(this,Yl).addEventListener("change",c(this,Jl),{signal:this.signal}),typeof ResizeObserver=="function"&&((E=D.env)==null?void 0:E.NODE_ENV)!=="test"&&(F(this,oi,new ResizeObserver(Ra(z=>{c(this,Ji).call(this,z[0].contentRect.width,z[0].contentRect.height)},50))),(w=c(this,oi))==null||w.observe(e),c(this,oi)&&this.onAbort(()=>{var z;return(z=c(this,oi))==null?void 0:z.disconnect()})),e.classList.add("mappedin-map"),this.rendererDomElement.style.width=(_=globalThis.MappedinDebug)!=null&&_.TEST_IOS?"1080px":"100%",this.rendererDomElement.style.height=(L=globalThis.MappedinDebug)!=null&&L.TEST_IOS?"1920px":"100%",D.env.NODE_ENV==="test"&&this.rendererDomElement.setAttribute("data-testid","mappedin-canvas"),this.mode!=="outdoors-overlay"&&this.rendererDomElement.tabIndex!==void 0&&this.rendererDomElement.removeAttribute("tabindex"),c(this,P).canvasWidth=this.rendererDomElement.clientWidth,c(this,P).canvasHeight=this.rendererDomElement.clientHeight,this.rendererDomElement.style.touchAction="manipulation";let s=this.canvasWidth,u=this.canvasHeight;c(this,I).watermarkSystem=c(this,ye).call(this,new ks(c(this,Ge),c(this,P),t==null?void 0:t.watermark)),c(this,I).watermarkSystem.on("texture-loaded",this.render),c(this,P).shouldMeasureCanvas=!0,c(this,P).pixelRatio=this.resolutionScale,c(this,ha).call(this,Math.floor(s*this.resolutionScale),Math.floor(u*this.resolutionScale)),c(this,P).directionalLight.position.set(-150,-150,350),c(this,Fe).add(c(this,P).directionalLight),c(this,Fe).add(c(this,P).ambientLight),c(this,I).cameraSystem=c(this,ye).call(this,new Wn(c(this,Ge),c(this,Fe),c(this,$e).renderer,c(this,P),{mode:this.mode,canvasHeight:u,canvasWidth:s})),(T=globalThis.MappedinDebug)!=null&&T.__idleCallbackInteractionState&&(globalThis.MappedinDebug.__idleCallbackInteractionState.registerInteractionChecker(c(this,I).cameraSystem.isUserInteracting),globalThis.MappedinDebug.__idleCallbackInteractionState.registerInteractionChecker(c(this,I).cameraSystem.isCameraMoving)),c(this,I).cameraSystem.on("user-dolly-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-pan-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-rotate-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-zoom-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-tilt-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-pedestal-start",c(this,Zr),{signal:this.signal}),c(this,I).cameraSystem.on("user-dolly-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("user-pan-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("user-rotate-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("user-zoom-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("user-tilt-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("user-pedestal-end",c(this,Xr),{signal:this.signal}),c(this,I).cameraSystem.on("change",()=>{this.publish("camera-change",this.camera),c(this,I).geometryInFocusSystem&&(c(this,I).geometryInFocusSystem.cameraDirty=!0),this.render()}),c(this,I).pathSystem=c(this,ye).call(this,new ta(c(this,P),this.convertTo3DMapPosition,this.getParentContainer,c(this,I).cameraSystem.convertZoomLevelToAltitude)),c(this,I).pathSystem.on("animate:path",this.render,{signal:this.signal}),c(this,I).panBoundsSystem=c(this,ye).call(this,new Hs(c(this,P),c(this,I).cameraSystem));let h=()=>{let{panBounds:z,fov:U,convertAltitudeToZoomLevel:ce}=c(this,I).cameraSystem;if(c(this,I).panBoundsSystem.autoMinZoomLevel){if(z.radius<=0)return;let te=Math.min(c(this,P).canvasWidth/c(this,P).canvasHeight,1),G=U*Math.PI/180*te,H=Math.tan(G/2),{radius:V,center:Q}=c(this,I).cameraSystem.panBounds,pe=V/H,be=this.getThreeCamera().getWorldPosition(new N),Be=Q.distanceTo(be),ge=Math.abs(be.z-Q.z),Ee=pe*ge/Be,Oe=ce(Ee);Nd(Oe,this.camera.minZoomLevel)&&this.camera.setMinZoomLevel(Oe)}this.publish("pan-bounds-change",c(this,I).cameraSystem.panBounds)};c(this,I).panBoundsSystem.on("update",h,{signal:this.signal}),this.camera=c(this,ye).call(this,new Ns(this,c(this,I),c(this,P)));let m=()=>{c(this,I).geometryInFocusSystem&&c(this,I).geometryInFocusSystem.resize(),this.render()};this.camera.on("padding-change",m,{signal:this.signal}),this.camera.setZoomLevel((C=t.zoomLevel)!=null?C:uh),this.camera.setBearing((R=t.bearing)!=null?R:ch),this.camera.setPitch((O=t.pitch)!=null?O:lh),this.camera.setMaxZoomLevel(M0),this.camera.setMinZoomLevel(S0),c(this,P).geometry2DState.pixelRatio=this.resolutionScale,c(this,I).twoDEntitySystem=c(this,ye).call(this,new Xl(this.container,c(this,P),c(this,P).geometry2DState,this.project,{workerUrl:Pc||void 0,useCollisionWorker:((B=t.useCollisionWorker)!=null?B:!0)&&((k=t.useWorkers)!=null?k:!0),transformImageRequest:t.transformImageRequest,watermark:{width:0,height:0,position:"bottom-left"}})),c(this,I).interactionSystem=c(this,ye).call(this,new fo(this.rendererDomElement,c(this,P),c(this,Ge),c(this,Pn),c(this,I).cameraSystem.isUserInteracting)),c(this,I).interactionSystem.on("doubletap-with-onefinger",z=>{var U;c(this,I).cameraSystem.enableZoom&&this.camera.animateTo({center:(U=this.projectScreenXYToCoordinate(z.clientX,z.clientY))==null?void 0:U.coordinate,zoomLevel:this.camera.zoomLevel+1,duration:_c,easing:"ease-out"})}),c(this,I).interactionSystem.on("singletap-with-twofinger",()=>{c(this,I).cameraSystem.enableZoom&&this.camera.animateTo({zoomLevel:this.camera.zoomLevel-1,duration:_c,easing:"ease-out"})}),c(this,I).interactionSystem.on("hover",this.render),c(this,I).interactionSystem.on("click",z=>{var H,V,Q,pe,be,Be,ge,Ee,Oe;if(z.entity2D.some(Re=>Re.id==="watermark")&&typeof c(this,I).watermarkSystem.options.onClick=="function"&&c(this,I).watermarkSystem.options.interactive){c(this,I).watermarkSystem.options.onClick();return}if(!z.position){$.error("Pointer event outside world-plane");return}let ce=z.entity3D?[(H=z.entity3D)==null?void 0:H.id]:[];(pe=(Q=(V=z.entity3D)==null?void 0:V.parentObject3D)==null?void 0:Q.userData)!=null&&pe.entityId&&ce.push((ge=(Be=(be=z.entity3D)==null?void 0:be.parentObject3D)==null?void 0:Be.userData)==null?void 0:ge.entityId);let te=[],G=[];for(let Re of z.entity2D)Re.components&&(Re.components[0]instanceof co?te.push(Re.id):Re.components[0]instanceof lo&&G.push(Re.id));this.publish("click",{coordinate:this.convert3DMapPositionToCoordinate(z.position),geometry:ce,paths:((Ee=z.entity3D)==null?void 0:Ee.components[0])instanceof mn?[z.entity3D.id]:[],markers:te,models:((Oe=z.entity3D)==null?void 0:Oe.components[0])instanceof pn?[z.entity3D.id]:[],labels:G,containers:Array.isArray(z.groupContainers)?z.groupContainers.map(Re=>Re.userData.entityId):[],pointerEvent:z.pointerEvent})}),c(this,I).interactionSystem.on("hover",z=>{var te,G,H;if(!z.position)return;let U=[],ce=[];for(let V of z.entity2D)V.components&&(V.components[0]instanceof co?U.push(V.id):V.components[0]instanceof lo&&ce.push(V.id));this.publish("hover",{coordinate:this.convert3DMapPositionToCoordinate(z.position),geometry:z.entity3D?[(te=z.entity3D)==null?void 0:te.id]:[],paths:((G=z.entity3D)==null?void 0:G.components[0])instanceof mn?[z.entity3D.id]:[],markers:U,models:((H=z.entity3D)==null?void 0:H.components[0])instanceof pn?[z.entity3D.id]:[],labels:ce,containers:Array.isArray(z.groupContainers)?z.groupContainers.map(V=>V.userData.entityId):[]})}),c(this,I).geometryInFocusSystem=c(this,ye).call(this,new rl(c(this,P),c(this,qi)));let d=z=>{this.publish("geometry-in-focus",z)};c(this,I).geometryInFocusSystem.on("geometry-in-focus",d,{signal:this.signal}),c(this,I).drawSystem=c(this,ye).call(this,new Ms(c(this,P),this.convertTo3DMapPosition,this.convert3DMapPositionToCoordinate)),c(this,I).exporterSystem=c(this,ye).call(this,new yo(c(this,P))),c(this,I).batchedMeshSystem=c(this,ye).call(this,new xs(c(this,P),this.convertTo3DMapPosition)),c(this,I).batchedMeshSystem.on("geometry-2d-added",this.render,{signal:this.signal}),c(this,I).batchedMeshSystem.on("geometry-group-added",c(this,ql),{signal:this.signal}),c(this,I).modelSystem=c(this,ye).call(this,new Zl(c(this,P),this.convertTo3DMapPosition)),c(this,I).modelSystem.on("model-loaded",()=>{c(this,I).shadowsSystem&&(c(this,I).shadowsSystem.needsRender=!0),this.render()},{signal:this.signal}),c(this,I).modelSystem.on("batch-changed",()=>{c(this,I).interactionSystem.dirty3D=!0},{signal:this.signal}),c(this,I).meshDetachmentSystem=c(this,ye).call(this,new Cl(c(this,P))),c(this,I).meshModificationSystem=c(this,ye).call(this,new Dl(c(this,P))),c(this,I).geometryDisposalSystem=c(this,ye).call(this,new Ol(c(this,P))),c(this,I).textureSystem=c(this,ye).call(this,new Ll(c(this,P))),c(this,I).textureSystem.on("texture-added",this.render,{signal:this.signal}),c(this,I).borderSystem=c(this,ye).call(this,new Mm(c(this,P),this.convertTo3DMapPosition)),c(this,I).clippingPlaneSystem=c(this,ye).call(this,new Fl(c(this,P))),c(this,I).renderOrderSystem=c(this,ye).call(this,new Al(c(this,P))),c(this,I).pluginSystem=c(this,ye).call(this,new Gl),c(this,I).customGeometrySystem=c(this,ye).call(this,new Ws(c(this,P),this.convertTo3DMapPosition));let f=typeof t.outlines=="object"?t.outlines:void 0;f&&(c(this,P).outlinesOptions=f),c(this,I).outlineInterpolationSystem=c(this,ye).call(this,new js(c(this,P),f)),c(this,I).outlineInterpolationSystem.on("needs-render",this.render,{signal:this.signal}),c(this,I).renderSystem=c(this,ye).call(this,new Es(c(this,$e),c(this,P),this.mode,c(this,Fe),c(this,Ge),this.viewCamera,c(this,I))),c(this,I).imageSystem=c(this,ye).call(this,new el(c(this,P),this.convertTo3DMapPosition,this.project,t.bearing,t.naturalBearing,t.imagePlacementOptions,t.transformImageRequest)),c(this,I).text3DSystem=c(this,ye).call(this,new Ud(c(this,P),this.convertTo3DMapPosition,(J=t.useWorkers)!=null?J:!0)),c(this,I).text3DSystem.on("render",this.render,{signal:this.signal}),c(this,I).imageSystem.on("image-loaded",this.render,{signal:this.signal}),c(this,I).renderSystem.on("pre-render",()=>this.publish("pre-render"),{signal:this.signal}),c(this,I).renderSystem.on("post-render",()=>this.publish("post-render"),{signal:this.signal}),c(this,I).renderSystem.on("measure-canvas",c(this,da),{signal:this.signal}),c(this,I).outdoorLayersSystem=c(this,ye).call(this,new ml(this.map)),c(this,I).occlusion2DSystem=c(this,ye).call(this,new Il(c(this,P),this.convertTo3DMapPosition,c(this,$e))),t.occlusionEnabled&&c(this,I).occlusion2DSystem.enable(),this.Debug=new Pl(this),t.environment!==!1&&F(this,ni,Z(this,Et,sh).call(this)),c(this,Ql).call(this)}get viewCamera(){return c(this,ii)}get cameraObject(){return c(this,Ge)}get canvasWidth(){return c(this,P).canvasWidth}get canvasHeight(){return c(this,P).canvasHeight}get resolutionScale(){var e,t;return(t=(e=this.map)==null?void 0:e._getClampedPixelRatio(this.canvasWidth,this.canvasHeight))!=null?t:Ci()}get aspect(){return this.canvasWidth/this.canvasHeight}get labelsCanvas(){var e,t;return(t=(e=c(this,I).twoDEntitySystem)==null?void 0:e.labelCanvas)!=null?t:null}get mode(){return c(this,jr)}addGroupContainer(e,t,n){if(!c(this,P).geometry3DMap.has(e)&&!c(this,P).geometry2DMap.has(e)){let o=new Ne(e);c(this,si).call(this,o,()=>{c(this,ze).call(this),c(this,zt).call(this)}),(t==null?void 0:t.visible)!==void 0&&(o.visible=t.visible),(t==null?void 0:t.altitude)!==void 0&&o.setAltitude(t.altitude),(t==null?void 0:t.interactive)!==void 0&&Nt(o,t.interactive,c(this,P)),(t==null?void 0:t.focusable)!==void 0&&ss(o,t.focusable),(t==null?void 0:t.preloadGeometry)!==void 0&&(o.userData.preloadGeometry=t.preloadGeometry),c(this,P).geometry3DMap.set(e,o);let a=this.getParentContainer(n);a instanceof Ne&&a.addEntity(o),c(this,ze).call(this),this.render()}else $.error("Group container with ID '".concat(e,"' already exists. The group container cannot be added."));return{id:e,type:"group-container"}}addCustomGeometry(e,t,n,o,a){if(c(this,P).geometry3DMap.has(e))$.error("Custom geometry with ID '".concat(e,"' already exists. The custom geometry cannot be added."));else{let l=new _i(t,n),s=new Pe(l,new yr(o));(o==null?void 0:o.interactive)!==void 0&&Nt(s,o.interactive,c(this,P)),s.id=e,l.mesh.userData={entityId:e,type:"custom-geometry"},c(this,P).geometry3DMap.set(s.id,s);let u=this.getParentContainer(a);a&&u instanceof Ne?u.addEntity(s):c(this,P).geometryScene.addEntity(s),c(this,I).panBoundsSystem.dirty=!0,c(this,ze).call(this),this.render()}return{id:e,type:"custom-geometry"}}registerPlugin(e){c(this,I).pluginSystem.registerPlugin(e)}unregisterPlugin(e){c(this,I).pluginSystem.unregisterPlugin(e)}addBatchedGeometryGroup(e,t,n,o){var a,l,u;if(!c(this,P).geometry3DMap.has(e)&&!c(this,P).geometry2DMap.has(e)){let h=new mt(e);c(this,si).call(this,h,()=>{c(this,ze).call(this),c(this,zt).call(this)}),h.userData.dirty=!0,c(this,P).geometry3DMap.set(e,h);let m=typeof n=="function"?n(t.features[0]):n;typeof n!="function"&&(m==null?void 0:m.altitude)!=null&&(h.position.z=m.altitude);for(let f of t.features){if(f.geometry==null||!["Polygon","MultiPolygon","LineString","MultiLineString"].includes(f.geometry.type))continue;let b=(f==null?void 0:f.id)||((a=f==null?void 0:f.properties)==null?void 0:a.id)||pi(),x={color:ls};if(typeof n=="function")x=(l=n(f))!=null?l:{color:ls};else{let s=n||{color:ls},{visible:g,altitude:S}=s;x=La(s,["visible","altitude"])}let y=c(this,I).batchedMeshSystem.createEntityFromFeature(b,f,X({outline:!0},x));c(this,P).geometry3DMap.set(b,y),h.userData.entities3D.add(b),c(this,I).textureSystem.dirty=!0}(m==null?void 0:m.__EXPERIMENTAL_maskEnabled)===!0&&Wc(h,{enabled:m.__EXPERIMENTAL_maskEnabled,maskId:m.__EXPERIMENTAL_maskId,effect:m.__EXPERIMENTAL_maskEffect,mode:m.__EXPERIMENTAL_maskMode}),h.setVisible((u=m==null?void 0:m.visible)!=null?u:!0);let d=this.getParentContainer(o);d instanceof Ne&&d.addEntity(h),c(this,I).panBoundsSystem.dirty=!0,c(this,ze).call(this),this.render()}else $.error("Geometry group with ID '".concat(e,"' already exists. The geometry group cannot be added."));return c(this,I).outlineInterpolationSystem.geometries3DDirty=!0,{id:e,type:"batched-geometry-group"}}addOccluder(e,t){let n=this.getParentContainer(t),o=c(this,I).occlusion2DSystem.reserveOccluderId();return n==null||n.addOccluderFeature(e,o),o}addImage(e,t,n,o){var a;try{pp(e,t,n)}catch(l){$.error(l);return}if(!c(this,P).geometry3DMap.has(e)&&!c(this,P).geometry2DMap.has(e)){let l=new $s(t),s=new Pe(l,new yr(n));s.id=e||pi(),l.mesh.userData={entityId:s.id,type:"path"},c(this,P).geometry3DMap.set(s.id,s);let u=this.getParentContainer(o);u instanceof Ne&&u.addEntity(s);let h=t.geometry.coordinates;if(h){let m=this.convertTo3DMapPosition(h[1],h[0],(a=h[2])!=null?a:0);c(this,I).panBoundsSystem.expandBoundsIfOutside(m)}c(this,ze).call(this),this.render()}else $.error("Image with ID '".concat(e,"' already exists. The image cannot be added."));return{id:e,type:"image"}}addModelGroup(e,t,n,{parent:o,onComplete:a}={}){var l,s,u,h;try{Wm(e,t,n)}catch(m){$.error(m);return}if(!c(this,P).geometry3DMap.has(e)&&!c(this,P).geometry2DMap.has(e)){let m=new mt(e);c(this,si).call(this,m,()=>{c(this,ze).call(this),c(this,zt).call(this)}),c(this,P).geometry3DMap.set(e,m),m.userData.dirty=!0,m.userData.modelURL=n.url;for(let b of t.features){let x=b.id||b.properties.id||pi(),y=c(this,I).modelSystem.createModelFromFeature(x,b,X({},n));(b.properties.interactive!==void 0||n.interactive!=null)&&Nt(y,(l=b.properties.interactive)!=null?l:n.interactive,c(this,P)),n.clippingPlaneZOffset!=null&&(y.components[7]=new is,y.components[7].verticalOffset=n.clippingPlaneZOffset,n.clippingPlaneTopColor!=null&&(y.components[7].topColor=n.clippingPlaneTopColor),n.clippingPlaneTopVisible!=null&&(y.components[7].topVisible=n.clippingPlaneTopVisible)),y.parentId=m.userData.entityId,c(this,P).geometry3DMap.set(x,y),m.userData.entities3D.add(x)}let d=this.getParentContainer(o);d instanceof Ne&&d.addEntity(m);let f=(s=t.features[0])==null?void 0:s.geometry.coordinates;if(f){let b=this.convertTo3DMapPosition(f[1],f[0],(u=f[2])!=null?u:0);c(this,I).panBoundsSystem.expandBoundsIfOutside(b)}c(this,ze).call(this),(h=this.render())==null||h.then(a)}else $.error("Model group with ID '".concat(e,"' already exists. The model group cannot be added."));return{id:e,type:"batched-geometry-group"}}addMarker2D(e,t,n,o){var l;let a=n==null?void 0:n.id;try{wd(e,t,n||{})}catch(s){$.error(s);return}if(a===void 0||!c(this,P).geometry2DMap.has(a)&&!c(this,P).geometry3DMap.has(a)){let s=Z(this,Et,ah).call(this,e,new co(t,n),n==null?void 0:n.occluderId,n==null?void 0:n.verticalOffset);s.id=a||String(s.id),a=s.id,(n==null?void 0:n.interactive)!=null&&n.interactive!=="pointer-events-auto"&&Nt(s,n==null?void 0:n.interactive,c(this,P)),(n==null?void 0:n.enabled)!=null&&os(s,n.enabled),(n==null?void 0:n.occlude)!=null&&Uc(s,n.occlude);let u=typeof(n==null?void 0:n.attachTo)=="string"||typeof(n==null?void 0:n.attachTo)=="number"?c(this,P).geometry3DMap.get(n.attachTo):void 0;u instanceof Pe&&u.attach(s),(l=this.getParentContainer(o))==null||l.addEntity(s),c(this,I).panBoundsSystem.expandBoundsIfOutside(s.object3d.position),this.render()}else $.error("Marker2D with ID '".concat(a,"' already exists. The marker cannot be added."));return{id:a,type:"marker"}}addText3D(e,t,n,o){var a;if(!c(this,P).geometry3DMap.has(e)&&!c(this,P).geometry2DMap.has(e)){let l=new ns(De(X({},t),{properties:De(X({},t.properties),{id:e,content:t.properties.text})})),s=new Pe(l,new ho(n==null?void 0:n.appearance));s.id=e,l.mesh.userData.entityId=e.toString(),l.mesh.userData.type="text3d",c(this,P).geometry3DMap.set(e,s);let u=this.getParentContainer(o);u instanceof Ne&&u.addEntity(s);let h=t.geometry.coordinates;if(h){let m=this.convertTo3DMapPosition(h[1],h[0],(a=h[2])!=null?a:0);c(this,I).panBoundsSystem.expandBoundsIfOutside(m)}c(this,ze).call(this),this.render()}else $.error("Text3D with ID '".concat(e,"' already exists. The text3d cannot be added."));return{id:e,type:"text3d"}}labelText3D(e,t,n={}){var u,h;try{if(!t||!e)throw new Error("content and meshGeometryId are required");Hd.parse(n)}catch(m){$.error(m);return}let o=c(this,P).geometry3DMap.get(e);if((o==null?void 0:o.type)!=="geometry"){$.error(".labelText3D failed: target incorrect");return}let a=o==null?void 0:o.components[0];if(!a.feature.properties.textArea)return;if(a.textEntityId){let m=c(this,P).geometry3DMap.get(a.textEntityId);if((m==null?void 0:m.type)!=="text3d"){$.error(".labelText3D failed: existing text3d not found");return}return{id:m.id,type:m.type}}let l=new ns({type:"Feature",geometry:{coordinates:(u=a.feature.properties.textArea)==null?void 0:u.position,type:"Point"},properties:{textArea:a.feature.properties.textArea,content:t,id:pi()}});l.polygonEntityId=e;let s=new Pe(l,new ho(n==null?void 0:n.appearance));return a.textEntityId=s.id.toString(),l.mesh.userData.entityId=s.id.toString(),l.mesh.userData.type="text3d",c(this,P).geometry3DMap.set(s.id.toString(),s),n.parentId&&((h=this.getParentContainer(n.parentId))==null||h.addEntity(s)),this.render(),{id:s.id,type:"text3d"}}addLabel2D(e,t,n,o){var l;let a=n==null?void 0:n.id;try{Cd(e,t,n||{})}catch(s){$.error(s);return}if(a===void 0||!c(this,P).geometry2DMap.has(a)&&!c(this,P).geometry3DMap.has(a)){let s=Z(this,Et,ah).call(this,e,new lo(t,n||{},c(this,P).pixelRatio),n==null?void 0:n.occluderId,n==null?void 0:n.verticalOffset);s.id=a||String(s.id),a=s.id,(n==null?void 0:n.interactive)!=null&&Nt(s,n==null?void 0:n.interactive,c(this,P)),(n==null?void 0:n.enabled)!=null&&os(s,n.enabled),(n==null?void 0:n.occlude)!=null&&Uc(s,n.occlude);let u=typeof(n==null?void 0:n.attachTo)=="string"||typeof(n==null?void 0:n.attachTo)=="number"?c(this,P).geometry3DMap.get(n.attachTo):void 0;u instanceof Pe&&u.attach(s),(l=this.getParentContainer(o))==null||l.addEntity(s),c(this,I).panBoundsSystem.expandBoundsIfOutside(s.object3d.position),c(this,zt).call(this),this.render()}else $.error("Label2D with ID '".concat(a,"' already exists. The label cannot be added."));return{id:a,type:"label"}}addPath(e,t={},n){var s,u;try{Gm(e,t||{})}catch(h){$.error(h);return}let o=new mn(e,fm(t)),a=new Pe(o,new yr({color:(s=t==null?void 0:t.color)!=null?s:"#ff834c",altitude:(u=t==null?void 0:t.verticalOffset)!=null?u:.1}));a.id=(t==null?void 0:t.id)||pi(),o.mesh.userData={entityId:a.id,type:"path"},c(this,P).geometry3DMap.set(a.id,a),(t==null?void 0:t.interactive)!=null&&Nt(a,t==null?void 0:t.interactive,c(this,P));let l=this.getParentContainer(n);return l instanceof Ne&&l.addEntity(a),c(this,I).panBoundsSystem.dirty=!0,c(this,ze).call(this),this.render(),{id:a.id,type:"path"}}updateWatermark(e){c(this,I).watermarkSystem.options=e,c(this,I).watermarkSystem.dirty=!0,c(this,I).twoDEntitySystem.setCollidersDirty(),this.render()}remove(e){var n,o,a;let t;if(typeof e=="string"||typeof e=="number"?(t=c(this,P).geometry2DMap.get(e),t==null&&(t=c(this,P).geometry3DMap.get(e))):typeof e.id=="string"||typeof e.id=="number"?(t=c(this,P).geometry2DMap.get(e.id),t==null&&(t=c(this,P).geometry3DMap.get(e.id))):t=e,t!=null){if(t.type==="custom-geometry")c(this,P).geometry3DMap.delete(t.id),t.object3d&&at(t.object3d);else if(t.type==="group-container"){c(this,P).geometry3DMap.delete(t.userData.entityId);for(let l of t.childrenIds.values())this.remove(l),t.userData.entities2D.delete(l);at(t)}else if(t.type==="batched-geometry-group"){c(this,P).geometry3DMap.delete(t.userData.entityId);for(let l of t.userData.entities3D.values())this.remove(l),t.userData.entities3D.delete(l);at(t)}else if(t.type==="geometry"||t.type==="model"||t.type==="path"){let l=t.components[0];if(t.entities2D.size>0){for(let u of t.entities2D.values())this.remove(u);t.removeAllEntities()}let s=(o=(n=t.parentObject3D)==null?void 0:n.userData.entityId)!=null?o:t.parentId;if(s){let u=c(this,P).geometry3DMap.get(s);u instanceof mt&&u.userData.entities3D.delete(t.id)}if(t.type==="model"){if(c(this,I).modelSystem.removeInstance(t)&&t.object3d&&at(t.object3d),s){let h=c(this,P).geometry3DMap.get(s);if(h instanceof mt&&h.userData.entities3D.size===0){let m=!1;for(let d of h.children)if(d.children.length>0){let f=d.children[0];if(f.isInstancedMesh&&((a=f.count)!=null?a:0)>0){m=!0;break}}m||this.remove(s)}}}else t.object3d&&at(t.object3d);if(t.type==="geometry"){let u=t.components[3];u&&(u.enabled=!1,u.dirty=!0)}"textMesh"in l&&l.textMesh!=null&&this.remove(l.textMesh.userData.entityId),c(this,P).geometry3DMap.delete(t.id)}else if(t.type==="marker"||t.type==="label"){let l=t.attachedTo;if(l){let s=c(this,P).geometry3DMap.get(l);s instanceof Pe&&s.detach(t)}t.object3d&&at(t.object3d),t.type==="label"&&c(this,I).twoDEntitySystem.deleteTextCacheEntry(t.id),c(this,P).geometry2DMap.delete(t.id)}else if(t.type==="image")t.object3d&&at(t.object3d),c(this,P).geometry3DMap.delete(t.id);else if(t.type==="text3d"){at(t.object3d);let{batchedText:l,textMesh:s,polygonEntityId:u}=t.components[0];if(s&&(l&&l.removeText(s),at(s)),u){c(this,I).text3DSystem.remove(u);let h=c(this,P).geometry3DMap.get(u);(h==null?void 0:h.type)==="geometry"&&(h.components[0].textMesh=void 0,h.components[0].textEntityId=void 0)}c(this,P).geometry3DMap.delete(t.id)}c(this,ze).call(this),c(this,zt).call(this),this.render()}}getScene(){return this.getState("__scene")}getThreeScene(){return c(this,Fe)}getThreeCamera(){return c(this,Ge)}async setEnvironment(e){if(c(this,Fe))if(e==="basic"){c(this,ni)||F(this,ni,Z(this,Et,sh).call(this));let t=await c(this,ni);c(this,Fe).environment=t}else c(this,Fe).environment=null}getEnvironment(){var e;return(e=c(this,Fe))!=null&&e.environment?"basic":!1}getCurrentSceneGLTF(e){return c(this,I).exporterSystem.getCurrentSceneGLTF(e)}getBoundingArea(e){(c(this,I).renderSystem.threeDdirty||c(this,I).renderSystem.twoDdirty)&&this.renderSync();let t=new Ve;if(e==null)t.setFromObject(c(this,P).geometryScene);else{let n=zn(c(this,P),e);if((n==null?void 0:n.type)==="geometry"&&(n==null?void 0:n.object3d)!=null){let o=n.components[0],a=o instanceof Je?o.geometry:void 0;o.mesh instanceof Wa&&a?(a.computeBoundingBox(),a.boundingBox&&t.union(a.boundingBox)):t.setFromObject(n.object3d)}else((n==null?void 0:n.type)==="batched-geometry-group"||(n==null?void 0:n.type)==="group-container")&&(n==null?void 0:n.userData.entityId)!=null&&t.setFromObject(n)}if(Ei(t))return Id(t).map(this.convert3DMapPositionToCoordinate)}hasState(e){return zn(c(this,P),e)!=null}getState(e){var n,o,a,l,s,u,h,m,d,f,b,x,y,g,S,M,E,w,_,L,T,C,R,O,B,k,J,z,U,ce,te;if(e==null)return{type:"map-view",hoverColor:c(this,P).hoverColor,text3dHoverColor:c(this,P).text3dHoverColor};let t=zn(c(this,P),e);if((t==null?void 0:t.type)==="custom-geometry"){let G=t.components[0],H=t.components[1];return{id:t.id,type:"custom-geometry",visible:H.visible,altitude:H.altitude,parent:(n=t.parentObject3D)==null?void 0:n.userData.entityId,position:this.convert3DMapPositionToCoordinate(G.position)}}else if((t==null?void 0:t.type)==="batched-geometry-group"){let G=Array.from(t.userData.entities3D.values()),H=G==null?void 0:G[0],V=H?this.getState(H):{},Q=c(this,P),pe=this.convert3DMapPositionToCoordinate;return{id:t.userData.entityId,type:"batched-geometry-group",visible:t.visible,altitude:t.position.z,initialColor:V==null?void 0:V.initialColor,color:V==null?void 0:V.color,side:(o=V==null?void 0:V.side)!=null?o:"double",opacity:V==null?void 0:V.opacity,height:V==null?void 0:V.height,texture:V==null?void 0:V.texture,topColor:V==null?void 0:V.topColor,topTexture:V==null?void 0:V.topTexture,interactive:Array.from(t.userData.entities3D.values()).map(be=>c(this,P).geometry3DMap.get(be)).every(be=>be&&be.components[2]!=null),children:G,bevel:V==null?void 0:V.bevel,maskId:(a=t.components[0])==null?void 0:a.maskId,maskEnabled:(l=t.components[0])==null?void 0:l.enabled,maskEffect:(s=t.components[0])==null?void 0:s.effect,maskMode:(u=t.components[0])==null?void 0:u.mode,get position(){return xm(t,Q,pe)}}}else{if((t==null?void 0:t.type)==="group-container")return{id:t.userData.entityId,type:"group-container",visible:t.visible,altitude:t.position.z,opacity:t.opacity,interactive:!!t.components[0],children:Array.from(t.childrenIds.values()).map(G=>this.getState(G)).filter(Boolean)};if((t==null?void 0:t.type)==="label"){let G=t.components[0],H=t.object3d.parent,V=H==null?void 0:H.userData.entityId;return{id:t.id,type:"label",text:G.text||"",parent:{id:V,type:H==null?void 0:H.type},position:this.convert3DMapPositionToCoordinate(t.position),enabled:G.enabled,visible:G.visible,initialRank:so(G.initialRank),verticalOffset:t.verticalOffset,options:{rank:so(G.rank),appearance:G.appearance,interactive:t.components[1]!=null,verticalOffset:t.verticalOffset,attachTo:t.attachedTo,occlude:(m=(h=t.components[2])==null?void 0:h.enabled)!=null?m:!1}}}else if((t==null?void 0:t.type)==="marker"){let G=t.components[0],H=t.object3d.parent,V=H==null?void 0:H.userData.entityId;return{id:t.id,type:"marker",enabled:G.enabled,visible:G.visible,placement:G.options.placement,dynamicResize:G.options.dynamicResize,parent:{id:V,type:H==null?void 0:H.type},position:this.convert3DMapPositionToCoordinate(t.position),element:G.containerEl,initialRank:so(G.initialRank),contentHTML:G.contentHtml,options:{rank:so(G.rank),interactive:t.components[1]!=null||!1,verticalOffset:t.verticalOffset,attachTo:t.attachedTo,lowPriorityPin:G.options.lowPriorityPin,occlude:(f=(d=t.components[2])==null?void 0:d.enabled)!=null?f:!1,zIndex:G.options.zIndex,animated:G.options.animated}}}else if((t==null?void 0:t.type)==="geometry"){let{color:G,hoverColor:H,initialColor:V,initialTopColor:Q,topColor:pe,altitude:be}=t.components[1],Be=t.components[0],ge=t.components[4],Ee=t.components[1],Oe=t.components[6],Re=t.components[2],Ze=t.components[3],Ce=t.parentObject3D;return{id:t.id,type:"geometry",opacity:Ee.opacity,initialColor:V,color:G,focusable:ge!=null&&ge.vertices!=null&&ge.vertices.length>0,initialTopColor:Q,topColor:pe,side:Ee.side,hoverColor:H,hovered:!!(Re!=null&&Re.hover),height:Ee.height,visible:Ee.visible,outline:Ze==null?void 0:Ze.enabled,showImage:Ee.showImage,texture:(b=Oe==null?void 0:Oe.texture)==null?void 0:b.path,topTexture:(x=Oe==null?void 0:Oe.topTexture)==null?void 0:x.path,flipImageToFaceCamera:Ee.flipImageToFaceCamera,enableImageCollisions:Ee.enableImageCollisions,parent:{id:Ce==null?void 0:Ce.userData.entityId,type:Ce==null?void 0:Ce.type},altitude:be,bevel:Ee.bevel,position:this.convert3DMapPositionToCoordinate(Be.position),interactive:t.components[2]!=null,borderVisible:Ee.borderVisible,borderColor:Ee.borderColor,borderWidth:Ee.borderWidth}}else if((t==null?void 0:t.type)==="model"){let G=t.components[0],H=t.components[1],V=t.components[2],Q=t.components[7],pe=G.feature.geometry.coordinates,be=[pe[0],pe[1],(y=pe[2])!=null?y:0];return{id:t.id,type:"model",position:be,interactive:V!=null,material:H.material,parent:(g=t.parentObject3D)!=null&&g.parent?{id:t.parentObject3D.parent.userData.entityId,type:t.parentObject3D.parent.type}:void 0,visible:H.visible,verticalOffset:H.verticalOffset,color:H.color,opacity:H.opacity,rotation:(S=H.rotation)!=null?S:un,scale:(M=H.scale)!=null?M:cn,clippingPlaneZOffset:(E=Q==null?void 0:Q.verticalOffset)!=null?E:H.clippingPlaneZOffset,clippingPlaneTopColor:(w=Q==null?void 0:Q.topColor)!=null?w:H.clippingPlaneTopColor,clippingPlaneTopVisible:(_=Q==null?void 0:Q.topVisible)!=null?_:H.clippingPlaneTopVisible}}else if((t==null?void 0:t.type)==="path"){let G=t.components[0],H=t.components[2],V=t.components[1];return{id:t.id,type:"path",position:this.convert3DMapPositionToCoordinate(G.position),visible:V.visible,interactive:H!=null,completeFraction:G.completeFraction,color:V.color,accentColor:G.accentColor,width:G.width,animateArrowsOnPath:G.animateArrowsOnPath,displayArrowsOnPath:G.displayArrowsOnPath,verticalOffset:V.altitude,highlightCompleteFraction:G.highlightCompleteFraction,highlightStartFraction:G.highlightStartFraction,highlightEndFraction:G.highlightEndFraction,highlightColor:G.highlightColor,highlightWidthMultiplier:G.highlightWidthMultiplier,xrayOpacity:G.xrayOpacity,xrayStyle:G.xrayStyle,smoothingTension:G.smoothingTension,smoothingCornerRadius:G.smoothingCornerRadius,dashed:G.dashed,dashLength:G.dashLength,dashGap:G.dashGap,dashRelativeToWidth:G.dashRelativeToWidth,dashSize:G.dashSize,gapSize:G.gapSize,dashAbsolute:G.dashAbsolute,dashMeters:G.dashMeters,gapMeters:G.gapMeters,__EXPERIMENTAL_GEOMETRY:G.__EXPERIMENTAL_GEOMETRY,__EXPERIMENTAL_ENDCAP_EXTENSION:G.__EXPERIMENTAL_ENDCAP_EXTENSION,__EXPERIMENTAL_BILLBOARDING:G.__EXPERIMENTAL_BILLBOARDING,__EXPERIMENTAL_BORDER:G.__EXPERIMENTAL_BORDER,__EXPERIMENTAL_PREVENT_SELF_OVERLAP:G.__EXPERIMENTAL_PREVENT_SELF_OVERLAP}}else if((t==null?void 0:t.type)==="image"){let G=t.components[0];return{id:t.id,type:"image",position:this.convert3DMapPositionToCoordinate(G.position),visible:t.components[1].visible,verticalOffset:(L=G.feature.properties.verticalOffset)!=null?L:0,opacity:t.components[1].opacity,flipImageToFaceCamera:t.components[1].flipImageToFaceCamera,width:(T=G.feature.properties.width)!=null?T:0,height:(C=G.feature.properties.height)!=null?C:0,rotation:(R=G.feature.properties.rotation)!=null?R:0}}else if((t==null?void 0:t.type)==="text3d"&&t.components[0]instanceof ns){gm(t);let G=t.components[0],H=t.components[1],{textMesh:V}=G,Q=G.feature.properties,pe=(O=G.mesh)==null?void 0:O.parent;pe instanceof Ne&&((B=pe.children.find(Oe=>Oe.type==="batchedtext"))==null||B.getWorldPosition(c(this,fa))),c(this,Ki).set(0,0,0);let be=V?V.getWorldPosition(c(this,Ki)):c(this,Ki),Be=(z=(J=Q.rotation)!=null?J:(k=Q.textArea)==null?void 0:k.rotation)!=null?z:0,ge=(ce=(U=Q.content)!=null?U:Q.text)!=null?ce:"";return Object.assign({},_r,H.getState(),{id:t.id,type:"text3d",position:this.convert3DMapPositionToCoordinate(be.add(c(this,fa))),visible:(te=G.visible)!=null?te:!1,content:ge,rotation:Be})}else return}}getRenderedState(e){let t=typeof e=="string"||typeof e=="number"?e:e.id,n=zn(c(this,P),t);if(n&&n.type==="label")return{textVisible:n.components[0].textVisible}}setState(e,t){var o,a,l,s,u,h,m;if(typeof e=="object"&&t==null){"hoverColor"in e&&(vd(e.hoverColor)?c(this,P).hoverColor=(o=e.hoverColor)!=null?o:c(this,P).hoverColor:$.warn('Failed to update global hover color. Invalid color "'.concat(e.hoverColor,'".'))),"text3dHoverColor"in e&&(c(this,P).text3dHoverColor=(a=e.text3dHoverColor)!=null?a:c(this,P).text3dHoverColor);return}let n=zn(c(this,P),e);if(n!=null){if(n.type==="custom-geometry"){let d=c(this,P).geometry3DMap.get(n.id);if(d instanceof Pe&&d.components[0]instanceof _i){let f=t;hn(n,c(this,P),f.visible),po(n,c(this,P),f.altitude),kc(n,f.position,this.convertTo3DMapPosition,c(this,I).panBoundsSystem),zc(n,this.getParentContainer(f.parent,!1)),Nt(n,f.interactive,c(this,P))&&c(this,ze).call(this)}}else if(n.type==="path"){let d=t;Nt(n,d.interactive,c(this,P))&&c(this,ze).call(this),po(n,c(this,P),d.verticalOffset),pm(n,c(this,P),d)}else if(n.type==="model"){let d=t;Nt(n,d.interactive,c(this,P))&&c(this,ze).call(this),hn(n,c(this,P),d.visible),bm(n,d,this.convertTo3DMapPosition,c(this,I).panBoundsSystem),vm(n,d)}else if(n.type==="group-container"){let d=t;hn(n,c(this,P),d.visible)&&(c(this,I).pathSystem.verticalDistanceDirty=!0,c(this,I).geometryInFocusSystem.focusablesDirty=!0),po(n,c(this,P),d.altitude)&&(c(this,I).pathSystem.verticalDistanceDirty=!0),Nt(n,d.interactive,c(this,P))&&c(this,ze).call(this),as(n,c(this,P),d.opacity)&&(c(this,I).outlineInterpolationSystem.outlineOpacitiesDirty=!0),d.preloadGeometry&&n.userData.preloadGeometry!==!0&&(n.userData.preloadGeometry=!0,c(this,I).outlineInterpolationSystem.geometries3DDirty=!0),ss(n,d.focusable)&&(c(this,I).geometryInFocusSystem.focusablesDirty=!0)}else if(n.type==="batched-geometry-group"){let d=t;hn(n,c(this,P),d.visible),em(n,c(this,P),d),jc(n,c(this,P),d.outline),d.height!=null&&Nc(n,c(this,P),d.height),d.altitude!=null&&(n.position.z=d.altitude),Vc(n,c(this,P),d)&&(c(this,I).textureSystem.dirty=!0),Vc(n,c(this,P),d),tm(n,c(this,P),d.shading),as(n,c(this,P),d.opacity)&&(c(this,I).outlineInterpolationSystem.outlineOpacitiesDirty=!0),Nt(n,d.interactive,c(this,P))&&(c(this,ze).call(this),c(this,zt).call(this)),Zc(n,c(this,P),d.side),Wc(n,{maskId:d.maskId,enabled:d.maskEnabled,effect:d.maskEffect,mode:d.maskMode}),um(n,c(this,P),{effectStart:d.effectStart,effectDistance:d.effectDistance,darkenAmount:d.darkenAmount,darkenUseDepth:d.darkenUseDepth,desaturateAmount:d.desaturateAmount,desaturateUseDepth:d.desaturateUseDepth,washOutAmount:d.washOutAmount,washOutUseDepth:d.washOutUseDepth}),d.position!=null&&(n.userData.centroid=[d.position[0],d.position[1]],n.userData.positionDirty=!0)}else if(n.type==="geometry"){if(n.components[0]instanceof Je){let d=t;if(hn(n,c(this,P),d.visible)&&c(this,ze).call(this),jc(n,c(this,P),d.outline),rm(n,d),ss(n,d.focusable)&&(c(this,I).geometryInFocusSystem.focusablesDirty=!0),dm(n,d.renderOrder)&&(c(this,I).meshDetachmentSystem.dirty=!0),hm(n,d.opacity)&&(c(this,I).meshDetachmentSystem.dirty=!0,c(this,I).interactionSystem.dirty3D=!0,c(this,I).outlineInterpolationSystem.outlineOpacitiesDirty=!0),Hc(n,d.flipImageToFaceCamera),lm(n,d.enableImageCollisions),po(n,c(this,P),d.altitude)){let f=n.components[1],b=((l=f.altitude)!=null?l:0)+((s=f.height)!=null?s:0);c(this,I).panBoundsSystem.expandBoundsIfOutside(new N(0,0,b)),c(this,I).shadowsSystem&&(c(this,I).shadowsSystem.needsRender=!0)}if(d.height!=null&&Nc(n,c(this,P),d.height)){let f=n.components[1],b=((u=f.altitude)!=null?u:0)+((h=f.height)!=null?h:0);c(this,I).panBoundsSystem.expandBoundsIfOutside(new N(0,0,b)),c(this,I).shadowsSystem&&(c(this,I).shadowsSystem.needsRender=!0)}cm(n,d)&&(c(this,I).meshDetachmentSystem.dirty=!0,c(this,I).textureSystem.dirty=!0),nm(n,d,(m=c(this,P).outlinesOptions)==null?void 0:m.darkenFactor),am(n,d.hoverColor),Nt(n,d.interactive,c(this,P))&&(c(this,I).interactionSystem.dirty3D=!0),sm(n,d.hovered),Zc(n,c(this,P),d.side),mm(n,d)}}else if(n.type==="label"||n.type==="marker"){let d=t;om(n,d,c(this,P)),im(n,d,c(this,P))&&(c(this,zt).call(this),c(this,I).twoDEntitySystem.markDirty()),kc(n,d.position,this.convertTo3DMapPosition,c(this,I).panBoundsSystem),zc(n,this.getParentContainer(d.parent,!1))&&(c(this,zt).call(this),c(this,I).panBoundsSystem.dirty=!0),os(n,d.enabled),hn(n,c(this,P),d.visible)}else if(n.type==="image"){let d=t;hn(n,c(this,P),d.visible),as(n,c(this,P),d.opacity),Hc(n,d.flipImageToFaceCamera)}else if(n.type==="text3d"){let d=t;ym(n,c(this,P),d)}this.render()}}convertTo3DMapPosition(e,t,n=0,o){var s,u,h,m,d;if(Array.isArray(e))return this.convertTo3DMapPosition(e[1],e[0],(s=e[2])!=null?s:n,typeof t=="function"?t:void 0);if(typeof t!="number")throw new Error("convertTo3DMapPosition failed: longitude must be a number");let{x:a,y:l}=Ka((h=(u=c(this,P).center)==null?void 0:u[1])!=null?h:0,(d=(m=c(this,P).center)==null?void 0:m[0])!=null?d:0,e,t);return o?(o.set(a,l,n),o):new N(a,l,n)}get backgroundColor(){return typeof c(this,$e).backgroundColor=="string"?c(this,$e).backgroundColor:"#".concat(c(this,$e).backgroundColor.getHexString())}get backgroundAlpha(){return c(this,$e).backgroundAlpha}getThreeRenderer(){return c(this,$e)}getCenter(e){let t=Array.isArray(e)?e:this.getBoundingArea(e);return t?Bd(t):void 0}isInView(e){let t=zn(c(this,P),e);if(c(this,ma).identity().multiply(c(this,Ge).projectionMatrix).multiply(c(this,Ge).matrixWorldInverse),c(this,li).setFromProjectionMatrix(c(this,ma)),t instanceof Rc)return c(this,li).containsPoint(t.position);if(t instanceof Pe){let n=t==null?void 0:t.components[0];if(n instanceof _i||n instanceof pn)return c(this,li).containsPoint(this.convertTo3DMapPosition(n.feature.geometry.coordinates));if(n instanceof Je){let o=new Ve(this.convertTo3DMapPosition(n.featureBbox[1],n.featureBbox[0],0),this.convertTo3DMapPosition(n.featureBbox[3],n.featureBbox[2],0));return c(this,li).intersectsBox(o)}}return!1}queryGeometry2DInView(e){let{screenOffsets:t,fullyContains:n}=e!=null?e:{},[o,a,l,s]=zd(this.container,t),u=new ln(o,a,l,s);return c(this,I).twoDEntitySystem.visibleCollidersQTree.queryRect(u).filter(f=>n?u.contains(f):u.intersects(f)).map(f=>c(this,P).geometry2DMap.get(f.userData.entityId)).filter(f=>f!=null).filter(f=>f.components[0]instanceof lo||f.components[0]instanceof co).map(f=>f.id.toString())}onMapLibreEvent(e,t){if(!this.map){$.warn('Tried to add event listener "'.concat(e,'" but MapLibre map is not initialized.'));return}let n=this.map.on(e,t);n!=null&&n.unsubscribe&&this.onAbort(()=>n.unsubscribe())}offMapLibreEvent(e,t){this.map&&this.map.off(e,t)}getSystems(){return c(this,I)}getInternalState(){return c(this,P)}getInternalTweenGroup(){return c(this,P).internalTweenGroup}getExternalTweenGroup(){return c(this,P).externalTweenGroup}computeMinZOffsetBetweenContainers(e,t,n){if(!e||!t)return-1;Yc(e,"group-container"),Yc(t,"group-container"),e.updateMatrixWorld(!0),t.updateMatrixWorld(!0);let o=es(e,this.getThreeCamera()),a=t.clone(!0);Qa(a,!0),a.updateMatrixWorld();let l=es(a,this.getThreeCamera());if(!Ei(o)||!Ei(l))return-1;let s=0,u;n&&this.container.querySelectorAll(".debug-box").forEach(m=>m.remove());do{if(s>1e4)return-1;if(s+=20,a.setAltitude(s),l.makeEmpty(),es(a,c(this,Ge),l),u=o.intersectsBox(l),n){let h=Gc(o,"blue",this.container),m=Gc(l,u?"red":"green",this.container);h.classList.add("debug-box"),m.classList.add("debug-box")}}while(u);return s}};Fe=new WeakMap,Ge=new WeakMap,ni=new WeakMap,ii=new WeakMap,$i=new WeakMap,Pn=new WeakMap,oi=new WeakMap,ai=new WeakMap,Et=new WeakSet,oh=function(e){var t;c(this,jr)!=="outdoors-overlay"&&((t=this.map)==null||t.setPixelRatio(e)),c(this,P).pixelRatio=this.resolutionScale},P=new WeakMap,je=new WeakMap,In=new WeakMap,_t=new WeakMap,$e=new WeakMap,I=new WeakMap,Yl=new WeakMap,zt=new WeakMap,ze=new WeakMap,$l=new WeakMap,si=new WeakMap,Xf=function(){F(this,je,document.createElement("div")),c(this,je).classList.add("mappedin__smart-collision-engine__container"),F(this,In,document.createElement("canvas")),c(this,In).classList.add("mappedin__smart-collision-engine-debug__container"),this.container.appendChild(c(this,je)),F(this,_t,document.createElement("canvas")),c(this,_t).classList.add("mappedin__smart-collision-engine__container"),c(this,_t).width=c(this,je).clientWidth*this.resolutionScale,c(this,_t).height=c(this,je).clientHeight*this.resolutionScale,c(this,_t).style.width=c(this,je).clientWidth+"px",c(this,_t).style.height=c(this,je).clientHeight+"px",c(this,je).appendChild(c(this,In)),c(this,je).appendChild(c(this,_t)),c(this,In).width=c(this,je).clientWidth,c(this,In).height=c(this,je).clientHeight,c(this,_t).width=c(this,je).clientWidth*this.resolutionScale,c(this,_t).height=c(this,je).clientHeight*this.resolutionScale,c(this,_t).style.width=c(this,je).clientWidth+"px",c(this,_t).style.height=c(this,je).clientHeight+"px"},Yf=function(){c(this,I).twoDEntitySystem.markDirty()},jr=new WeakMap,ql=new WeakMap,ca=new WeakMap,Jl=new WeakMap,Kl=new WeakMap,qi=new WeakMap,Ji=new WeakMap,Ql=new WeakMap,ua=new WeakMap,ha=new WeakMap,da=new WeakMap,ah=function(e,t,n,o){let a=new Rc(t,this.convertTo3DMapPosition(e[1],e[0],e[2]||0),o);return a.components[2]=new Bl(n!=null?n:c(this,I).occlusion2DSystem.backgroundId),c(this,P).geometry2DMap.set(a.id,a),a},li=new WeakMap,ma=new WeakMap,pa=new WeakMap,Zr=new WeakMap,Xr=new WeakMap,sh=async function(){return vn.load(Cm).then(e=>{var t;return c(this,Fe)&&((t=c(this,Fe).environment)==null||t.dispose(),e.mapping=$h,c(this,Fe).environment=e,this.render()),e})},ec=new WeakMap,ye=new WeakMap,Ki=new WeakMap,fa=new WeakMap;var ci=ih;v();function C0(i,r){w0(i,r)(i.getScene(),r),T0(i,r),r.addFolder("Export").add({export:async()=>{let a=await i.getCurrentSceneGLTF({binary:!0}),l=new Blob([a],{type:"application/octet-stream"});var s=document.createElement("a");document.body.appendChild(s),s.style.display="none";let u=window.URL.createObjectURL(l);s.href=u,s.download="scene.glb",s.click(),window.URL.revokeObjectURL(u)}},"export");let n=r.addFolder("Camera"),o={get bearing(){return i.camera.bearing},set bearing(a){i.camera.setBearing(a)},get pitch(){return i.camera.pitch},set pitch(a){i.camera.setPitch(a)},get zoomLevel(){return i.camera.zoomLevel},set zoomLevel(a){i.camera.setZoomLevel(a)}};n.add(o,"bearing",-359,359,1),n.add(o,"pitch",i.camera.minPitch,i.camera.maxPitch,1),n.add(o,"zoomLevel",i.camera.minZoomLevel,i.camera.maxZoomLevel,.1)}function w0(i,r){let e=r;return function t(n,o){let a=o.addFolder("".concat([n.type]," ").concat(n.id.slice(0,16)));if(o.close(),n.type==="geometry"||n.type==="model"||n.type==="path"||n.type==="image"){let l={get height(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"?s.height:0},set height(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="geometry"&&i.setState(n,{height:s})},set flipImageToFaceCamera(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="image"&&i.setState(n,{flipImageToFaceCamera:s})},get flipImageToFaceCamera(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="image"?s.flipImageToFaceCamera:!1},set visible(s){let u=i.getState(n.id);((u==null?void 0:u.type)==="geometry"||(u==null?void 0:u.type)==="path"||(u==null?void 0:u.type)==="image")&&i.setState(n,{visible:s})},get visible(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"||(s==null?void 0:s.type)==="path"||(s==null?void 0:s.type)==="image"?s.visible:!1},set outline(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="geometry"&&i.setState(n,{outline:s})},get outline(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"?s.outline:!1},get opacity(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"?s.opacity:1},set opacity(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="geometry"&&i.setState(u,{opacity:s})},get color(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"&&s.color?xd(s.color).toHexString():"#ffffff"},set color(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="geometry"&&i.setState(u,{color:s})},set interactive(s){let u=i.getState(n.id);((u==null?void 0:u.type)==="geometry"||(u==null?void 0:u.type)==="model"||(u==null?void 0:u.type)==="path")&&(i.setState(n,{interactive:s}),e.controllersRecursive().forEach(h=>h.updateDisplay()))},get interactive(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="geometry"||(s==null?void 0:s.type)==="model"||(s==null?void 0:s.type)==="path"?s.interactive:!1},get completeFraction(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="path"?s.completeFraction:1},set completeFraction(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="path"&&i.setState(u,{completeFraction:s})},focus:()=>{}};a.add(l,"focus").onChange(()=>{let s=i.getState(n.id);(s==null?void 0:s.type)==="model"||(s==null?void 0:s.type)==="path"||(s==null?void 0:s.type)==="image"?i.camera.focusOn([s.position]):(s==null?void 0:s.type)==="geometry"&&i.camera.focusOn(i.getBoundingArea(s))}),a.add(l,"visible"),n.type==="image"?a.add(l,"flipImageToFaceCamera"):(a.add(l,"interactive"),n.type==="path"&&a.add(l,"completeFraction",0,1,.1),n.type!=="model"&&(a.addColor(l,"color"),a.add(l,"outline"))),n.type==="geometry"&&(a.add(l,"height"),a.add(l,"opacity",0,1,.1))}else if(n.type==="marker"){let l={get interactive(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="marker"?(u=s.options)==null?void 0:u.interactive:!1},set interactive(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="marker"&&(i.setState(u,{options:{interactive:s}}),e.controllersRecursive().forEach(h=>h.updateDisplay()))},focus:()=>{}};a.add(l,"focus").onChange(()=>{let s=i.getState(n.id);(s==null?void 0:s.type)==="marker"&&i.camera.focusOn([s.position])}),a.add(l,"interactive")}else if(n.type==="label"){let l={get interactive(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options)==null?void 0:u.interactive:!1},set interactive(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&(i.setState(u,{options:{interactive:s}}),e.controllersRecursive().forEach(h=>h.updateDisplay()))},get text(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?s.text:""},set text(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:s})},get"Text Color"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.textColor:"#000000"},set"Text Color"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(n.id,{text:l.text,options:{appearance:{textColor:s}}})},get"Text Size"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.textSize:10},set"Text Size"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{textSize:s}}})},get"Icon Size"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.iconSize:10},set"Icon Size"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{iconSize:s}}})},get"Pin Color"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.pinColor:"#000000"},set"Pin Color"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{pinColor:s}}})},get"Pin Color Inactive"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.pinColorInactive:"#000000"},set"Pin Color Inactive"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{pinColorInactive:s}}})},get"Pin Outline Color"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.pinOutlineColor:"#000000"},set"Pin Outline Color"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{pinOutlineColor:s}}})},get"Pin Outline Color Inactive"(){var u;let s=i.getState(n.id);return(s==null?void 0:s.type)==="label"?(u=s.options.appearance)==null?void 0:u.pinOutlineColorInactive:"#000000"},set"Pin Outline Color Inactive"(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="label"&&i.setState(u,{text:l.text,options:{appearance:{pinOutlineColorInactive:s}}})},focus:()=>{}};a.add(l,"focus").onChange(()=>{let s=i.getState(n.id);(s==null?void 0:s.type)==="label"&&i.camera.focusOn([s.position])}),a.add(l,"interactive"),a.add(l,"text"),a.add(l,"Text Size",10,50),a.add(l,"Icon Size",10,50),a.addColor(l,"Text Color"),a.addColor(l,"Active Background Color"),a.addColor(l,"Inactive Background Color"),a.addColor(l,"Active Foreground Color"),a.addColor(l,"Inactive Foreground Color")}else if(n.type==="batched-geometry-group"){let l={get opacity(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"?s.opacity:1},set opacity(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(n,{opacity:s})},set visible(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(n,{visible:s})},get visible(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"?s.visible:!1},set outline(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(n,{outline:s})},get outline(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"?s.outline:!1},set altitude(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(n,{altitude:s})},get altitude(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"?s.altitude:0},set interactive(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&(i.setState(n,{interactive:s}),e.controllersRecursive().forEach(h=>h.updateDisplay()))},get interactive(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"?s.interactive:!1},get shadingStart(){var u,h;let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"&&(h=(u=s.shading)==null?void 0:u.start)!=null?h:0},set shadingStart(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(u,{shading:{start:s}})},get shadingEnd(){var u,h;let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"&&(h=(u=s.shading)==null?void 0:u.end)!=null?h:0},set shadingEnd(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(u,{shading:{end:s}})},get shadingIntensity(){var u,h;let s=i.getState(n.id);return(s==null?void 0:s.type)==="batched-geometry-group"&&(h=(u=s.shading)==null?void 0:u.intensity)!=null?h:0},set shadingIntensity(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="batched-geometry-group"&&i.setState(u,{shading:{intensity:s}})}};a.add(l,"visible"),a.add(l,"opacity",0,1,.1),a.add(l,"interactive"),a.add(l,"outline"),a.add(l,"altitude",0,100,1),a.add(l,"shadingStart",0,1,.1),a.add(l,"shadingEnd",0,1,.1),a.add(l,"shadingIntensity",0,1,.1)}else if(n.type==="group-container"){let l={set visible(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="group-container"&&i.setState(n,{visible:s})},get visible(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="group-container"?s.visible:!1},set interactive(s){let u=i.getState(n.id);(u==null?void 0:u.type)==="group-container"&&(i.setState(u,{interactive:s}),e.controllersRecursive().forEach(h=>h.updateDisplay()))},get interactive(){let s=i.getState(n.id);return(s==null?void 0:s.type)==="group-container"?s.interactive:!1}};a.add(l,"visible"),a.add(l,"interactive")}if(a.close(),n.children)for(let l of n.children.values())t(l,a)}}function T0(i,r){let e=r.addFolder("Watermark"),t={padding:16,iconOnly:!1,position:"bottom-left",color:"dark",scale:1};e.add(t,"padding",0,100,1),e.add(t,"scale",.5,1.5,.1),e.add(t,"color",["dark","light"]),e.add(t,"position",["top-left","top-right","bottom-left","bottom-right","center","top","bottom","left","right"]),e.add(t,"iconOnly"),e.onChange(()=>{i.updateWatermark(t)})}v();var hh=class extends ve{constructor(e,t){super();p(this,"gl");p(this,"options");p(this,"el",document.createElement("div"));p(this,"core");p(this,"origin");p(this,"map");p(this,"layer");p(this,"handleStyleChange",()=>{!this.map||!this.layer||this.map.getLayer(this.layer.id)||(this.map.addLayer(this.layer),this.core.camera.setMinZoomLevel(this.map.getMinZoom()),this.core.camera.setMaxZoomLevel(this.map.getMaxZoom()),this.core.camera.setMinPitch(this.map.getMinPitch()),this.core.camera.setMaxPitch(this.map.getMaxPitch()))});p(this,"handleMove",()=>{if(!this.map)return;let[e,t]=this.map.getCenter().toArray();this.core.getSystems().cameraSystem.setCenter(e,t),this.core.getSystems().cameraSystem.setZoomLevel(this.map.getZoom()),this.core.getSystems().cameraSystem.setRotation(de.degToRad(this.map.getBearing())),this.core.getSystems().cameraSystem.setTilt(de.degToRad(this.map.getPitch()))});p(this,"handleError",e=>{$.warn(e)});this.origin=e,this.options=t}onAdd(e){this.origin=this.origin||e.getCenter().toArray(),this.gl=e.painter.context.gl,this.core=new ci(e._container,De(X({},this.options),{center:this.origin,zoomLevel:e.getZoom(),pitch:e.getPitch(),bearing:e.getBearing(),gl:this.gl,map:e,mode:"outdoors-overlay"})),this.map=e,this.core.camera.setMinZoomLevel(e.getMinZoom()),this.core.camera.setMaxZoomLevel(e.getMaxZoom()),this.core.camera.setMinPitch(e.getMinPitch()),this.core.camera.setMaxPitch(e.getMaxPitch()),this.map.on("error",this.handleError);let t=Ya.fromLngLat(this.origin,0);return this.layer=qa(t,this.core.viewCamera,()=>{this.core.renderSync()}),this.map.on("styledata",this.handleStyleChange),this.map.on("move",this.handleMove),this.handleStyleChange(),this.el}onRemove(){this.map&&(this.map.off("styledata",this.handleStyleChange),this.map.off("move",this.handleMove),this.map.off("error",this.handleError),this.layer&&this.map.removeLayer(this.layer.id)),this.layer=void 0,this.map=void 0,this.core&&this.core.destroy(),this.core=void 0}};v();v();v();v();v();v();var Ct=class{constructor({origin:r,destination:e,distance:t=0,angle:n=0,pathWeight:o=0,multiplicativeDistanceWeightScaling:a=!0}){p(this,"origin");p(this,"destination");p(this,"distance");p(this,"angle");p(this,"weight");if(this.origin=r,this.destination=e,this.distance=t,this.angle=n,this.weight=o||0,a?r.properties.floor===e.properties.floor&&(this.weight=(this.weight>=0?this.distance*this.weight:0)+this.distance):r.properties.map===e.properties.map&&(this.weight=this.weight>=0?this.distance+this.weight:0),isNaN(this.angle))throw new Error("Invalid angle: Expected a numeric value, but received NaN.")}};v();v();v();v();v();function ct([i,r],[e,t]){let n=r-t,o=i-e;return(Math.atan2(o,n)+Math.PI*3)%(Math.PI*2)}v();v();function tc(i,r,e,t){let[n,o]=i,[a,l]=r,[s,u]=e,[h,m]=t;if(o===l&&n===a||u===m&&s===h)return null;let d=(h-s)*(l-o)-(m-u)*(a-n);if(d===0)return null;let f=((m-u)*(n-s)-(h-s)*(o-u))/d,b=((l-o)*(n-s)-(a-n)*(o-u))/d;if(f<0||f>1||b<0||b>1)return null;let x=o+f*(l-o);return[n+f*(a-n),x]}v();v();function rc(i,r,e,t){t===void 0&&(t={});var n=nl(i),o=Ba(n[0]),a=Ba(n[1]),l=Ba(e),s=Vh(r,t.units),u=Math.asin(Math.sin(a)*Math.cos(s)+Math.cos(a)*Math.sin(s)*Math.cos(l)),h=o+Math.atan2(Math.sin(l)*Math.sin(s)*Math.cos(a),Math.cos(s)-Math.sin(a)*Math.sin(u)),m=Mc(h),d=Mc(u);return _a([m,d],t.properties)}function dh(i,r,e,t){let n=rc(i,e/1e3,t),o=rc(r,e/1e3,t);return[n.geometry.coordinates,o.geometry.coordinates]}v();function mh(i){let r=i*(180/Math.PI);return r=r%360,r>180?r-=360:r<-180&&(r+=360),Object.is(r,-0)?0:r}var $f=111e3;function ur(i,r,e=[],t=0){let n=!0,o=i.geometry.coordinates,a=r.geometry.coordinates,l=mh(ct(o,a)-Math.PI/2),s=mh(ct(o,a)+Math.PI/2),u=t/$f,h=t/($f*Math.cos(o[1]*Math.PI/180)),m=Math.min(o[1],a[1])-u,d=Math.max(o[1],a[1])+u,f=Math.min(o[0],a[0])-h,b=Math.max(o[0],a[0])+h;for(let x of e)if(!(Math.max(x[0][1],x[1][1])<m||Math.min(x[0][1],x[1][1])>d||Math.max(x[0][0],x[1][0])<f||Math.min(x[0][0],x[1][0])>b)){if(t>0){let y=dh(o,a,t,l),g=dh(o,a,t,s);if(tc(y[0],y[1],x[0],x[1])||tc(g[0],g[1],x[0],x[1]))return n=!1,!1}else if(tc(o,a,x[0],x[1]))return n=!1,!1}return n}v();function qf(i,r=.5){let[e,t]=i,n=(e.x+t.x)/2,o=(e.y+t.y)/2,a=t.x-e.x,s=-(t.y-e.y),u=a,h=Math.sqrt(s*s+u*u),m=s/h,d=u/h,f={x:n+m*r,y:o+d*r},b={x:n-m*r,y:o-d*r};return[f,b]}var ga=.4,ui,ut,ph,Jf,Kf,Qf,eg,tg,rg,ic,nc=class{constructor({nodes:r,groupBy:e,multiplicativeDistanceWeightScaling:t}){A(this,ut);p(this,"edges",{});p(this,"nodesById");p(this,"nodesByGroup",new Map);A(this,ui);p(this,"hasLineOfSight",(r,e,t=[],n=ga)=>ur({type:"Feature",properties:{id:"origin",neighbors:[]},geometry:{type:"Point",coordinates:r}},{type:"Feature",properties:{id:"destination",neighbors:[]},geometry:{type:"Point",coordinates:e}},t,n)===!0);A(this,ic,(r,e)=>{let t=0;for(let n of e)(!n[c(this,ui)]||n[c(this,ui)]===r.properties[c(this,ui)])&&kr(r.geometry.coordinates,n.geometry.geometry)&&(t+=Math.max(0,n.cost));return t});F(this,ui,e);let{features:n}=r;this.nodesById=Z(this,ut,Jf).call(this,n),Z(this,ut,Kf).call(this),Z(this,ut,Qf).call(this,n,e,{multiplicativeDistanceWeightScaling:t})}getShortestEuclideanDistance(r,e){return e.reduce((t,n)=>{let o=Vm(r.geometry.coordinates,n.geometry.coordinates);return Math.min(t,o)},Number.MAX_VALUE)}dijkstraFindWithinTravelDistance(r,e,t,n,o,a){var f;let l=this.nodesById[r];if(!l)return[];let s=[],u={},h={},m=new Set,d=[];for(s.push({node:l,distance:0}),u[l.properties.id]=null,h[l.properties.id]=0;s.length>0;){s.sort((g,S)=>g.distance-S.distance);let b=s.shift();if(!b)break;let x=b.node,y=b.distance;if(!m.has(x.properties.id)){if(m.add(x.properties.id),d.length>=a)break;x.properties.id!=null&&t.includes((f=x.properties.id)==null?void 0:f.toString())&&(o?this.hasLineOfSight(l.geometry.coordinates,x.geometry.coordinates,n)&&d.push({feature:x,distance:y}):d.push({feature:x,distance:y}));for(let g of this.edges[x.properties.id]){let S=g.destination,M=y+g.distance,E=h[x.properties.id]+g.weight;M>e||m.has(S.properties.id)||h[S.properties.id]!==void 0&&E>=h[S.properties.id]||(h[S.properties.id]=E,u[S.properties.id]=g,s.push({node:S,distance:M}))}}}return d.sort((b,x)=>b.distance-x.distance)}aStar({originIds:r,destinationNodeIds:e,disabledConnectionNodeIds:t,zones:n,overrideEdgeWeights:o,disabledNodeIds:a}){var d;let l=Z(this,ut,ph).call(this,r),s=Z(this,ut,ph).call(this,e);if(l.length===0||s.length===0)return[];let{frontier:u,cameFrom:h,costSoFar:m}=Z(this,ut,eg).call(this,l,s);for(;u.length>0;){let f=u.shift();if(!f)break;if(Z(this,ut,tg).call(this,f.origin,s))return Z(this,ut,rg).call(this,h,f.origin.properties.id);for(let b of this.edges[f.origin.properties.id]){let x=(d=o==null?void 0:o.get(b))!=null?d:b.weight,y=b.destination.properties.map!==b.origin.properties.map,g=t==null?void 0:t.has(b.destination.properties.id);if(t!=null&&t.has(b.origin.properties.id)&&(y||g)||a!=null&&a.has(b.origin.properties.id))continue;let S=m[f.origin.properties.id]+x+c(this,ic).call(this,b.destination,n);if(S!==1/0&&(m[b.destination.properties.id]==null||S<m[b.destination.properties.id])){let M=S+this.getShortestEuclideanDistance(b.destination,s);m[b.destination.properties.id]=S,h[b.destination.properties.id]=b,u.push({origin:b.destination,priority:M})}}u.sort((b,x)=>b.priority-x.priority)}return[]}};ui=new WeakMap,ut=new WeakSet,ph=function(r){return r.map(e=>this.nodesById[e]).filter(Boolean)},Jf=function(r){return r.reduce((e,t)=>(e[t.properties.id]=t,e),{})},Kf=function(){for(let r in this.nodesById)this.nodesById.hasOwnProperty(r)&&(this.nodesById[r].properties.neighbors=this.nodesById[r].properties.neighbors.filter(({id:e})=>!!this.nodesById[e]))},Qf=function(r,e,t){r.forEach(n=>{let o=e==="default"?e:n.properties[e];this.nodesByGroup.has(o)||this.nodesByGroup.set(o,[]),this.nodesByGroup.get(o).push(n),this.edges[n.properties.id]=n.properties.neighbors.map(({id:a,weight:l})=>{let s=this.nodesById[a],u=pt(n.geometry.coordinates,s.geometry.coordinates),h=ct(n.geometry.coordinates,s.geometry.coordinates);return new Ct({origin:n,destination:s,pathWeight:l,distance:u,angle:h,multiplicativeDistanceWeightScaling:t==null?void 0:t.multiplicativeDistanceWeightScaling})})})},eg=function(r,e){let t=[],n={},o={};return r.forEach(a=>{let l=this.getShortestEuclideanDistance(a,e);t.push({origin:a,priority:l}),n[a.properties.id]=null,o[a.properties.id]=0}),t.sort((a,l)=>a.priority-l.priority),{frontier:t,cameFrom:n,costSoFar:o}},tg=function(r,e){return e.some(t=>t.properties.id===r.properties.id)},rg=function(r,e){let t=[],n=r[e];for(;n;)t.push(n),n=r[n.origin.properties.id];return t.reverse()},ic=new WeakMap;v();function D0(i,r,e,t){let n=e[i].origin,o=r===e.length?t:e[r].origin;return pt(n.geometry.coordinates,o.geometry.coordinates)}function ng(i,r,e,t=ga){if(i.length<3)return i;let n=1e-4,o=i.length,a=new Set;for(let d=0;d<o;d++)i[d].origin.properties.preventSmoothing&&a.add(d);let l=i[o-1].destination,s=new Array(o+1).fill(null).map(()=>({cost:1/0,prev:-1}));s[0]={cost:0,prev:-1};for(let d=0;d<o;d++){let f=!0;if(s[d].cost!==1/0){for(let b=d+1;b<=o;b++){let x=b===o?l:i[b].origin;if(pt(i[d].origin.geometry.coordinates,x.geometry.coordinates)<.01)continue;let g=b===d+1&&b<o&&a.has(b),S=b===d+1&&a.has(d);if(!g&&!S&&!ur(i[d].origin,x,r,t))continue;if(b>d+1){let L=!1;for(let T=d+1;T<b;T++)if(a.has(T)){L=!0;break}if(L)continue}let M=D0(d,b,i,l),w=(b-d-1)*n,_=s[d].cost+M-w;_<s[b].cost&&(s[b]={cost:_,prev:d},f=!1)}f&&s[d+1].cost===1/0&&(s[d+1].cost=s[d].cost,s[d+1].prev=d)}}let u=[],h=o;for(;h!==-1;)u.unshift(h),h=s[h].prev===-1?h-1:s[h].prev;let m=[];for(let d=0;d<u.length-1;d++){let f=u[d],b=u[d+1],x=i[f].origin,y=b===o?l:i[b].origin;m.push(new Ct({origin:x,destination:y,distance:pt(x.geometry.coordinates,y.geometry.coordinates),angle:ct(x.geometry.coordinates,y.geometry.coordinates),multiplicativeDistanceWeightScaling:e}))}return m}v();var ag=Aa(fh());v();var ig=zh("Navigator");function ac(i,r,e){if(i==null||i[r]==null)return!1;let t=1<<e;return(i[r]&t)!==0}v();var P0=.5;function og(i,r,e,t,n,o){var b,x;if(!((x=(b=i==null?void 0:i.geoJSON)==null?void 0:b.geometry)!=null&&x.coordinates))return null;let[a,l]=qf(t,P0),s=a,u=l;if(n){let y=Math.sqrt(Math.pow(a.x-n.x,2)+Math.pow(a.y-n.y,2));Math.sqrt(Math.pow(l.x-n.x,2)+Math.pow(l.y-n.y,2))<y&&(s=l,u=a)}let h=o(s.x,s.y),m=o(u.x,u.y),d={type:"Feature",geometry:{type:"Point",coordinates:[h.lon,h.lat]},properties:{id:"".concat(r,"_buffer_entry"),map:e,neighbors:[],preventSmoothing:!0}},f={type:"Feature",geometry:{type:"Point",coordinates:[m.lon,m.lat]},properties:{id:"".concat(r,"_buffer_exit"),map:e,neighbors:[],preventSmoothing:!0}};return{entryNode:d,exitNode:f,entryMeters:s,exitMeters:u}}function Yr(i){var r;return(r=i.properties.floor)!=null?r:i.properties.map}function sg(i,r,e,t){var T;let n=[i[0].origin];for(let C=0;C<i.length;C++)n.push(i[C].destination);let o=new Map,a=new Map;for(let C=0;C<n.length;C++)o.set(n[C].properties.id,n[C]),a.set(C,n[C]);let l=n[0].geometry.coordinates[1],{toCartesian:s,toGeographic:u}=Os(l),h=n.map((C,R)=>{let O={x:0,y:0,nodeId:C.properties.id,originalIndex:R};return s(C.geometry.coordinates,O),O}),m=new Set,d=new Map,f=new Set;for(let C=0;C<n.length;C++){let R=r(n[C].properties.id);if(R&&(m.add(C),d.set(C,R)),C<n.length-1){let O=Yr(n[C]),B=Yr(n[C+1]);O!==B&&(f.add(C),f.add(C+1),C>0&&f.add(C-1))}}if(i.length<3&&m.size===0)return i;let b=i.length>=3?(0,ag.default)(h,.7,!1):h,x=new Set;for(let C=0;C<b.length;C++)x.add(b[C].originalIndex);let y=[];for(let C of m)x.has(C)||y.push(C);let g=b.slice(),S=.25;for(let C of f){if(x.has(C))continue;let R=a.get(C);if(!R)continue;let O=-1;for(let B=0;B<g.length-1;B++)if(g[B].originalIndex<C&&g[B+1].originalIndex>C){O=B+1;break}if(O!==-1){let B={x:0,y:0,nodeId:R.properties.id,originalIndex:C};s(R.geometry.coordinates,B),g.splice(O,0,B)}}for(let C of y){let R=a.get(C);if(!R)continue;let O=-1;for(let B=0;B<g.length-1;B++)if(g[B].originalIndex<C&&g[B+1].originalIndex>C){O=B+1;break}if(O!==-1){let B={x:0,y:0,nodeId:R.properties.id,originalIndex:C};s(R.geometry.coordinates,B);let k=uu(B,g[O-1]),J=uu(B,g[O]);k<S?g[O-1]=B:J<S?g[O]=B:g.splice(O,0,B)}}let M=[],E={x:0,y:0},w={x:0,y:0},_=new Map;for(let C=0;C<g.length;C++)_.set(g[C].originalIndex,C);for(let C of m){let R=a.get(C);if(!R)continue;let O=d.get(C);if(!O)continue;let B=(T=_.get(C))!=null?T:-1;if(B!==-1){let k;B>0&&(k={x:g[B-1].x,y:g[B-1].y});let J=O.geoJSON.geometry.coordinates;s(J[0],E),s(J[1],w);let z=[E,w],U=R.properties.id,ce=Yr(R)||"test-floor",te=og(O,U,ce,z,k,u);if(te){let G={x:te.entryMeters.x,y:te.entryMeters.y,nodeId:te.entryNode.properties.id,originalIndex:C-.5},H={x:te.exitMeters.x,y:te.exitMeters.y,nodeId:te.exitNode.properties.id,originalIndex:C+.5};o.set(te.entryNode.properties.id,te.entryNode),o.set(te.exitNode.properties.id,te.exitNode),M.push(G,H)}}}if(g.push(...M),g.sort((C,R)=>C.originalIndex-R.originalIndex),t&&g.length>=3)for(let C=0;C<g.length-1;C++){let R=g[C];if(R.nodeId.endsWith("_buffer_exit")){let O=g[g.length-1];if(C<g.length-2){let B=!1;for(let k=C+1;k<g.length-1;k++)if(g[k].nodeId.endsWith("_buffer_entry")||g[k].nodeId.endsWith("_buffer_exit")){B=!0;break}if(!B){let k=o.get(R.nodeId),J=o.get(O.nodeId);if(k&&J){if(Yr(k)!==Yr(J))continue;if(ur(k,J,t,.1)){let z=g.length-C-2;g.splice(C+1,z)}}}}}}if(t&&g.length>=3){let C=g[0],R=-1;for(let O=1;O<g.length;O++)if(g[O].nodeId.endsWith("_buffer_entry")){R=O;break}if(R>1){let O=!1;for(let B=1;B<R;B++)if(g[B].nodeId.endsWith("_buffer_entry")||g[B].nodeId.endsWith("_buffer_exit")){O=!0;break}if(!O){let B=g[R],k=o.get(C.nodeId),J=o.get(B.nodeId);if(k&&J&&Yr(k)===Yr(J)){if(ur(k,J,t,.1)){let z=R-1;g.splice(1,z)}}}}}let L=[];for(let C=0;C<g.length-1;C++){let R=g[C],O=g[C+1],B=o.get(R.nodeId),k=o.get(O.nodeId);B&&k?L.push(new Ct({origin:B,destination:k,distance:pt(B.geometry.coordinates,k.geometry.coordinates),angle:ct(B.geometry.coordinates,k.geometry.coordinates),multiplicativeDistanceWeightScaling:e})):ig.warn("Origin or destination node not found for point ".concat(R.nodeId," or ").concat(O.nodeId))}return L}function yt(i,r){return new Ct({origin:i,destination:r,distance:pt(i.geometry.coordinates,r.geometry.coordinates),angle:ct(i.geometry.coordinates,r.geometry.coordinates)})}function lg(i,r,e,t=!0){if(i.length<3)return i;let n=new Set;for(let l=0;l<i.length;l++)if(i[l].origin.properties.preventSmoothing){if(n.add(l),t){for(let s=l-1;s>=0;s--)if(!i[s].origin.properties.preventSmoothing){n.add(s);break}}if(t){for(let s=l+1;s<i.length;s++)if(!i[s].origin.properties.preventSmoothing){n.add(s);break}}}if(i.length>0&&i[i.length-1].destination.properties.preventSmoothing&&(n.add(i.length-1),t)){for(let l=i.length-2;l>=0;l--)if(!i[l].origin.properties.preventSmoothing){n.add(l);break}}let o=[],a=0;for(let l=1;l<i.length;l++){let s=l===i.length-1,u=n.has(l),h=s?.05:.7,m=ur(i[a].origin,i[l].origin,r,h),d=i[l].origin.properties.preventSmoothing,f=l-1;if(u){a!==l&&(m?(o.push(yt(i[a].origin,i[l].origin)),a=l):(a!==f&&(o.push(yt(i[a].origin,i[f].origin)),a=f),a!==l&&(o.push(yt(i[a].origin,i[l].origin)),a=l))),s&&o.push(yt(i[l].origin,i[l].destination));continue}if(d)m?(o.push(yt(i[a].origin,i[l].origin)),a=l):a!==f&&(o.push(yt(i[a].origin,i[f].origin)),a=f),o.push(yt(i[a].origin,i[l].origin)),a=l,s&&o.push(yt(i[l].origin,i[l].destination));else if(m)s&&(ur(i[a].origin,i[l].destination,r,.7)?o.push(yt(i[a].origin,i[l].destination)):(o.push(yt(i[a].origin,i[l].origin)),o.push(yt(i[l].origin,i[l].destination))),a=l);else{if(a===f){s&&(o.push(yt(i[a].origin,i[l].origin)),o.push(yt(i[l].origin,i[l].destination)));continue}o.push(yt(i[a].origin,i[f].origin)),a=f,s&&(o.push(yt(i[a].origin,i[l].origin)),o.push(yt(i[l].origin,i[l].destination)))}}if(!1){let l=o[o.length-1];window.__DEBUG_PATH.finalSteps.push({nodeId:l.destination.properties.id,coordinate:l.destination.geometry.coordinates,floorId:Yr(l.destination)})}return o}v();function cg(i,r,e=.2,t={},n){var l,s,u,h;if(i.length<3)return i;let o=[i[0]],a=1;for(let m=a+2;m<i.length;m++)if("outdoors"in t&&ac((h=(u=(s=(l=i[a])==null?void 0:l.origin)==null?void 0:s.properties)==null?void 0:u.flags)!=null?h:[],t.outdoors.index,t.outdoors.bit)||i[a].origin.properties.preventSmoothing||!ur(i[a].origin,i[m].origin,r,e)){let d=m-1;o.push(new Ct(De(X({},i[a]),{destination:i[d].origin,distance:pt(i[a].origin.geometry.coordinates,i[d].origin.geometry.coordinates),angle:ct(i[a].origin.geometry.coordinates,i[d].origin.geometry.coordinates)}))),a=d}return o.push(new Ct(De(X({},i[a]),{destination:i[i.length-1].origin,distance:pt(i[a].origin.geometry.coordinates,i[i.length-1].origin.geometry.coordinates),angle:ct(i[a].origin.geometry.coordinates,i[i.length-1].origin.geometry.coordinates),multiplicativeDistanceWeightScaling:n})),i[i.length-1]),o}v();var ug=Aa(fh());function hg(i,r){let e=new Set;if(i.length<2)return e;let t=[i[0].origin];for(let b=0;b<i.length;b++)t.push(i[b].destination);let n=t[0].geometry.coordinates[1],{toCartesian:o}=Os(n),a=r;if(!a)return e;let l=t.map((b,x)=>{let y={x:0,y:0,nodeId:b.properties.id,originalIndex:x};return o(b.geometry.coordinates,y),y}),s=new Set,u=new Set;for(let b=0;b<l.length;b++)a(l[b].nodeId)&&(s.add(b),u.add(l[b].nodeId));if(s.size===0)return e;let h=l.length>=3?(0,ug.default)(l,.7,!1):l,m=new Map;for(let b=0;b<h.length;b++)m.set(h[b].originalIndex,b);let d=new Set;for(let b of s){let x=m.get(b);if(x!==void 0){if(x>0){let y=h[x-1].nodeId;d.add(y)}if(x<h.length-1){let y=h[x+1].nodeId;d.add(y)}}else{let y,g;for(let S=0;S<h.length-1;S++){let M=h[S].originalIndex,E=h[S+1].originalIndex;if(M<b&&b<E){y=h[S].nodeId,g=h[S+1].nodeId;break}}y&&d.add(y),g&&d.add(g)}}let f=0;for(let b of i)d.has(b.origin.properties.id)&&(b.origin.properties.preventSmoothing||(b.origin.properties.preventSmoothing=!0,e.add(b.origin.properties.id))),d.has(b.destination.properties.id)&&(b.destination.properties.preventSmoothing||(b.destination.properties.preventSmoothing=!0,e.add(b.destination.properties.id))),f++;return e}v();v();var sc={accessible:"accessible",outdoors:"outdoors",public:"public"};v();v();function ba(i,r,e=[]){let t=X({},i);for(let[n,o]of Object.entries(r))if(o!==void 0)if(n in t){let a=n;if(Array.isArray(o)&&o.length>0){let l=I0(o[0],e);if(l){let s=t[a];if(!Array.isArray(s))throw new Error("Expected array at ".concat(n,", got ").concat(typeof s));let u=new Map(o.map(d=>[dg(d,l),d])),m=s.map(d=>{let f=u.get(dg(d,l));return f?ba(d,f,e):d});t[a]=m}else t[a]=o}else{let l=t[a];typeof l=="object"&&l!==null&&typeof o=="object"&&o!==null?Object.keys(o).length===0?t[a]=o:t[a]=ba(l,o,e):t[n]=o}}else t[n]=o;return t}function I0(i,r){function e(t){if(typeof t!="object"||t===null)return null;for(let n of r)if(n in t&&typeof t[n]<"u")return[n];if(Array.isArray(t))return null;for(let[n,o]of Object.entries(t)){let a=e(o);if(a)return[n,...a]}return null}return e(i)}function dg(i,r){return r.reduce((e,t)=>{if(e&&typeof e=="object")return e[t]},i)}v();var O0=i=>{if(i==="space"||i==="obstruction"||i==="entrance")return{}},L0=/\.json|\.geojson$/,lc=(i,r,e)=>{let t=i[r];if(typeof t!="object"||Object.keys(t).length===0)return O0(r);let n={};for(let[o,a]of Object.entries(t)){let l=o.replace(L0,"");n[l]=JSON.parse(e(a))}return n},A0=["floorstack.json","styles.json","shapes.json","mapstack.json","floor.geojson","tileset.json","location.json","category.json","navigationFlags.json","annotation-symbols.json"],R0=A0,_0=["annotation","textAreas","enterprise","floorImages","shapeInstances","modelInstances","window","area","facade"],F0=_0,G0=i=>{let r=new TextDecoder("utf-8"),e=r.decode.bind(r),t={"manifest.geojson":JSON.parse(e(i["manifest.geojson"])),"mapstack.geojson":JSON.parse(e(i["mapstack.geojson"])),"map.geojson":JSON.parse(e(i["map.geojson"])),"node.geojson":JSON.parse(e(i["node.geojson"])),"connection.json":JSON.parse(e(i["connection.json"])),space:lc(i,"space",e),obstruction:lc(i,"obstruction",e),entrance:lc(i,"entrance",e)};for(let n of R0)i[n]&&(t[n]=JSON.parse(e(i[n])));for(let n of F0)i[n]&&(t[n]=lc(i,n,e));return t};v();v();v();var va=["agriculture","airport","casino","city-district","convention-center","entertainment","event-centre","first-responder-building","government-building","grocery-store","healthcare","higher-education","hotel","library","manufacturing","medical-centre","mixed-use","multifamily","museum","office-building","oil-and-energy","other","parking-facility","religious-institution","resort","retail-store","schools-k-12","shopping-mall","stadium-or-arena","storage-facility","theme-park","transit","transportation-hub","warehousing"],B0=[...va,"unknown"],gh=Object.freeze(Object.fromEntries([...va,"unknown"].map(i=>[i,i])));v();var xa=["reference-point","checkpoint","checkpoint-passport","parent"],N0=[...xa,"unknown"],k0=Object.freeze(Object.fromEntries([...xa,"unknown"].map(i=>[i,i])));var Sa=["closed-temporarily","new","pop-up","coming-soon","relocated"],z0=[...Sa,"unknown"],U0=Object.freeze(Object.fromEntries([...Sa,"unknown"].map(i=>[i,i])));v();var Ma=["left","center","right"],H0=[...Ma,"unknown"],V0=Object.freeze(Object.fromEntries([...Ma,"unknown"].map(i=>[i,i])));v();var Ea=["near","center"],W0=[...Ea,"unknown"],j0=Object.freeze(Object.fromEntries([...Ea,"unknown"].map(i=>[i,i])));v();var Ca=["top","side"],Z0=[...Ca,"unknown"],X0=Object.freeze(Object.fromEntries([...Ca,"unknown"].map(i=>[i,i])));var wa=["inside","outside","both"],Y0=[...wa,"unknown"],$0=Object.freeze(Object.fromEntries([...wa,"unknown"].map(i=>[i,i])));v();var cc=["elevator","escalator","travelator","stairs","door","ramp","ladder"],BA=[...cc,"unknown"],yh=Object.freeze(Object.fromEntries([...cc,"unknown"].map(i=>[i,i])));v();var uc=["room","hallway","wall","object","poi","area","window"],zA=[...uc,"unknown"],UA=Object.freeze(Object.fromEntries([...uc,"unknown"].map(i=>[i,i])));v();v();var hc=class{constructor(r){p(this,"_value");this._value=r}[Symbol.iterator](){return this}next(){if(this._value==null)return{done:!0,value:void 0};let r=this._value;return this._value=null,{done:!1,value:r}}},dc=class{constructor(r){p(this,"_tag","Some");p(this,"_value");this._value=r}get value(){return this._value}isSome(){return!0}isSomeAnd(r){return r(this.value)}isNone(){return!1}equals(r){return r.isSome()&&r.value===this.value}expect(r){return this.value}unwrap(){return this.value}unwrapOr(r){return this.value}unwrapOrElse(r){return this.value}inspect(r){return r(this.value),this}inspectNone(r){return this}map(r){return mg(r(this.value))}mapAsync(r){return r(this.value).then(e=>mg(e))}mapOr(r,e){return this.map(r).unwrapOr(e)}mapOrAsync(r,e){return this.mapAsync(r).then(t=>t.unwrapOr(e))}mapOrElse(r,e){return this.map(r).unwrapOrElse(e)}mapOrElseAsync(r,e){return this.mapAsync(r).then(t=>t.unwrapOrElse(e))}and(r){return r}andThen(r){return r(this.value)}andThenAsync(r){return r(this.value)}filter(r){return r(this.value)?this:On()}or(r){return this}orElse(r){return this}xor(r){return r.isSome()?On():this}toString(){return"Some(".concat(this.value,")")}okOr(r){return Er(this.value)}okOrElse(r){return Er(this.value)}iter(){return new hc(this.value)}[Symbol.iterator](){return this.iter()}zip(r){return r.isSome()?Qi([this.value,r.value]):On()}zipWith(r,e){return r.isSome()?Qi(e(this.value,r.value)):On()}get[Symbol.toStringTag](){return"Some"}},mc=class{constructor(){p(this,"_tag","None")}get value(){return null}isSome(){return!1}isSomeAnd(r){return!1}isNone(){return!0}equals(r){return r.isNone()}expect(r){throw new Error(r)}unwrap(){throw new Error("Tried to unwrap a None value!")}unwrapOr(r){return r}unwrapOrElse(r){return r()}inspect(r){return this}inspectNone(r){return r(),this}map(r){return this}mapAsync(r){return Promise.resolve(this)}mapOr(r,e){return e}mapOrAsync(r,e){return Promise.resolve(e)}mapOrElse(r,e){return e()}mapOrElseAsync(r,e){return e()}and(r){return this}andThen(r){return this}andThenAsync(r){return Promise.resolve(this)}filter(r){return this}or(r){return r}orElse(r){return r()}xor(r){return r}toString(){return"None"}okOr(r){return hi(r)}okOrElse(r){return hi(r())}iter(){return new hc(null)}[Symbol.iterator](){return this.iter()}zip(r){return this}zipWith(r,e){return this}get[Symbol.toStringTag](){return"None"}},Qi=i=>new dc(i),On=()=>new mc,mg=i=>i instanceof dc||i instanceof mc?i:i==null?On():Qi(i);var pc=class{constructor(r){p(this,"_value");this._value=r}[Symbol.iterator](){return this}next(){if(this._value==null)return{done:!0,value:void 0};let r=this._value;return this._value=null,{done:!1,value:r}}},bh=class{constructor(r){p(this,"_tag","Ok");p(this,"_value");this._value=r}get value(){return this._value}get error(){return null}isOk(){return!0}isOkAnd(r){return r(this.value)}isErr(){return!1}isErrAnd(r){return!1}ok(){return Qi(this.value)}err(){return On()}expect(r){return this.value}expectErr(r){throw new Error(r)}unwrap(){return this.value}unwrapOr(r){return this.value}unwrapOrElse(r){return this.value}inspect(r){return r(this.value),this}inspectErr(){return this}map(r){return Er(r(this.value))}async mapAsync(r){return r(this.value).then(Er)}mapOr(r,e){return r(this.value)}async mapOrAsync(r,e){return r(this.value)}mapOrElse(r,e){return r(this.value)}async mapOrElseAsync(r,e){return r(this.value)}mapErr(r){return this}iter(){return new pc(this.value)}[Symbol.iterator](){return this.iter()}and(r){return r}andThen(r){return r(this.value)}or(r){return this}orElse(r){return this}async andThenAsync(r){return r(this.value)}toString(){return"Ok(".concat(this.value,")")}get[Symbol.toStringTag](){return"Ok"}},vh=class i{constructor(r){p(this,"_tag","Err");p(this,"_error");this._error=r}get value(){return null}get error(){return this._error}isOk(){return!1}isOkAnd(r){return!1}isErr(){return!0}isErrAnd(r){return r(this.error)}ok(){return On()}err(){return Qi(this.error)}expect(r){throw new Error(r)}expectErr(r){return this.error}unwrap(){throw this.error}unwrapOr(r){return r}unwrapOrElse(r){return r()}inspect(){return this}inspectErr(r){return r(this.error),this}map(r){return this}iter(){return new pc(null)}[Symbol.iterator](){return this.iter()}async mapAsync(r){return this}mapOr(r,e){return e}async mapOrAsync(r,e){return e}mapOrElse(r,e){return e()}async mapOrElseAsync(r,e){return e()}mapErr(r){return new i(r(this.error))}and(r){return this}andThen(r){return this}async andThenAsync(r){return this}or(r){return r}orElse(r){return r(this.error)}toString(){return"Err(".concat(this.error,")")}get[Symbol.toStringTag](){return"Err"}},Er=i=>new bh(i),hi=i=>new vh(i);v();var Ut=Uint8Array,eo=Uint16Array,q0=Int32Array,pg=new Ut([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),fg=new Ut([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),J0=new Ut([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gg=function(i,r){for(var e=new eo(31),t=0;t<31;++t)e[t]=r+=1<<i[t-1];for(var n=new q0(e[30]),t=1;t<30;++t)for(var o=e[t];o<e[t+1];++o)n[o]=o-e[t]<<5|t;return{b:e,r:n}},yg=gg(pg,2),bg=yg.b,K0=yg.r;bg[28]=258,K0[258]=28;var vg=gg(fg,0),Q0=vg.b,KA=vg.r,Eh=new eo(32768);for(Me=0;Me<32768;++Me)$r=(Me&43690)>>1|(Me&21845)<<1,$r=($r&52428)>>2|($r&13107)<<2,$r=($r&61680)>>4|($r&3855)<<4,Eh[Me]=(($r&65280)>>8|($r&255)<<8)>>1;var $r,Me,Ta=(function(i,r,e){for(var t=i.length,n=0,o=new eo(r);n<t;++n)i[n]&&++o[i[n]-1];var a=new eo(r);for(n=1;n<r;++n)a[n]=a[n-1]+o[n-1]<<1;var l;if(e){l=new eo(1<<r);var s=15-r;for(n=0;n<t;++n)if(i[n])for(var u=n<<4|i[n],h=r-i[n],m=a[i[n]-1]++<<h,d=m|(1<<h)-1;m<=d;++m)l[Eh[m]>>s]=u}else for(l=new eo(t),n=0;n<t;++n)i[n]&&(l[n]=Eh[a[i[n]-1]++]>>15-i[n]);return l}),Da=new Ut(288);for(Me=0;Me<144;++Me)Da[Me]=8;var Me;for(Me=144;Me<256;++Me)Da[Me]=9;var Me;for(Me=256;Me<280;++Me)Da[Me]=7;var Me;for(Me=280;Me<288;++Me)Da[Me]=8;var Me,xg=new Ut(32);for(Me=0;Me<32;++Me)xg[Me]=5;var Me;var ex=Ta(Da,9,1);var tx=Ta(xg,5,1),xh=function(i){for(var r=i[0],e=1;e<i.length;++e)i[e]>r&&(r=i[e]);return r},hr=function(i,r,e){var t=r/8|0;return(i[t]|i[t+1]<<8)>>(r&7)&e},Sh=function(i,r){var e=r/8|0;return(i[e]|i[e+1]<<8|i[e+2]<<16)>>(r&7)},rx=function(i){return(i+7)/8|0},wh=function(i,r,e){return(r==null||r<0)&&(r=0),(e==null||e>i.length)&&(e=i.length),new Ut(i.subarray(r,e))};var nx=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Kt=function(i,r,e){var t=new Error(r||nx[i]);if(t.code=i,Error.captureStackTrace&&Error.captureStackTrace(t,Kt),!e)throw t;return t},ix=function(i,r,e,t){var n=i.length,o=t?t.length:0;if(!n||r.f&&!r.l)return e||new Ut(0);var a=!e,l=a||r.i!=2,s=r.i;a&&(e=new Ut(n*3));var u=function(Ce){var wt=e.length;if(Ce>wt){var Qt=new Ut(Math.max(wt*2,Ce));Qt.set(e),e=Qt}},h=r.f||0,m=r.p||0,d=r.b||0,f=r.l,b=r.d,x=r.m,y=r.n,g=n*8;do{if(!f){h=hr(i,m,1);var S=hr(i,m+1,3);if(m+=3,S)if(S==1)f=ex,b=tx,x=9,y=5;else if(S==2){var _=hr(i,m,31)+257,L=hr(i,m+10,15)+4,T=_+hr(i,m+5,31)+1;m+=14;for(var C=new Ut(T),R=new Ut(19),O=0;O<L;++O)R[J0[O]]=hr(i,m+O*3,7);m+=L*3;for(var B=xh(R),k=(1<<B)-1,J=Ta(R,B,1),O=0;O<T;){var z=J[hr(i,m,k)];m+=z&15;var M=z>>4;if(M<16)C[O++]=M;else{var U=0,ce=0;for(M==16?(ce=3+hr(i,m,3),m+=2,U=C[O-1]):M==17?(ce=3+hr(i,m,7),m+=3):M==18&&(ce=11+hr(i,m,127),m+=7);ce--;)C[O++]=U}}var te=C.subarray(0,_),G=C.subarray(_);x=xh(te),y=xh(G),f=Ta(te,x,1),b=Ta(G,y,1)}else Kt(1);else{var M=rx(m)+4,E=i[M-4]|i[M-3]<<8,w=M+E;if(w>n){s&&Kt(0);break}l&&u(d+E),e.set(i.subarray(M,w),d),r.b=d+=E,r.p=m=w*8,r.f=h;continue}if(m>g){s&&Kt(0);break}}l&&u(d+131072);for(var H=(1<<x)-1,V=(1<<y)-1,Q=m;;Q=m){var U=f[Sh(i,m)&H],pe=U>>4;if(m+=U&15,m>g){s&&Kt(0);break}if(U||Kt(2),pe<256)e[d++]=pe;else if(pe==256){Q=m,f=null;break}else{var be=pe-254;if(pe>264){var O=pe-257,Be=pg[O];be=hr(i,m,(1<<Be)-1)+bg[O],m+=Be}var ge=b[Sh(i,m)&V],Ee=ge>>4;ge||Kt(3),m+=ge&15;var G=Q0[Ee];if(Ee>3){var Be=fg[Ee];G+=Sh(i,m)&(1<<Be)-1,m+=Be}if(m>g){s&&Kt(0);break}l&&u(d+131072);var Oe=d+be;if(d<G){var Re=o-G,Ze=Math.min(G,Oe);for(Re+d<0&&Kt(3);d<Ze;++d)e[d]=t[Re+d]}for(;d<Oe;++d)e[d]=e[d-G]}}r.l=f,r.p=Q,r.b=d,r.f=h,f&&(h=1,r.m=x,r.d=b,r.n=y)}while(!h);return d!=e.length&&a?wh(e,0,d):e.subarray(0,d)};var ox=new Ut(0);var Cr=function(i,r){return i[r]|i[r+1]<<8},dr=function(i,r){return(i[r]|i[r+1]<<8|i[r+2]<<16|i[r+3]<<24)>>>0},Mh=function(i,r){return dr(i,r)+dr(i,r+4)*4294967296};function ax(i,r){return ix(i,{i:2},r&&r.out,r&&r.dictionary)}var Ch=typeof TextDecoder<"u"&&new TextDecoder,sx=0;try{Ch.decode(ox,{stream:!0}),sx=1}catch(i){}var lx=function(i){for(var r="",e=0;;){var t=i[e++],n=(t>127)+(t>223)+(t>239);if(e+n>i.length)return{s:r,r:wh(i,e-1)};n?n==3?(t=((t&15)<<18|(i[e++]&63)<<12|(i[e++]&63)<<6|i[e++]&63)-65536,r+=String.fromCharCode(55296|t>>10,56320|t&1023)):n&1?r+=String.fromCharCode((t&31)<<6|i[e++]&63):r+=String.fromCharCode((t&15)<<12|(i[e++]&63)<<6|i[e++]&63):r+=String.fromCharCode(t)}};function Th(i,r){if(r){for(var e="",t=0;t<i.length;t+=16384)e+=String.fromCharCode.apply(null,i.subarray(t,t+16384));return e}else{if(Ch)return Ch.decode(i);var n=lx(i),o=n.s,e=n.r;return e.length&&Kt(8),o}}var cx=function(i,r){return r+30+Cr(i,r+26)+Cr(i,r+28)},ux=function(i,r,e){var t=Cr(i,r+28),n=Th(i.subarray(r+46,r+46+t),!(Cr(i,r+8)&2048)),o=r+46+t,a=dr(i,r+20),l=e&&a==4294967295?hx(i,o):[a,dr(i,r+24),dr(i,r+42)],s=l[0],u=l[1],h=l[2];return[Cr(i,r+10),s,u,n,o+Cr(i,r+30)+Cr(i,r+32),h]},hx=function(i,r){for(;Cr(i,r)!=1;r+=4+Cr(i,r+2));return[Mh(i,r+12),Mh(i,r+4),Mh(i,r+20)]};function Sg(i,r){for(var e={},t=i.length-22;dr(i,t)!=101010256;--t)(!t||i.length-t>65558)&&Kt(13);var n=Cr(i,t+8);if(!n)return{};var o=dr(i,t+16),a=o==4294967295||n==65535;if(a){var l=dr(i,t-12);a=dr(i,l)==101075792,a&&(n=dr(i,l+32),o=dr(i,l+48))}for(var s=r&&r.filter,u=0;u<n;++u){var h=ux(i,o,a),m=h[0],d=h[1],f=h[2],b=h[3],x=h[4],y=h[5],g=cx(i,y);o=x,(!s||s({name:b,size:d,originalSize:f,compression:m}))&&(m?m==8?e[b]=ax(i.subarray(g,g+d),{out:new Ut(f)}):Kt(14,"unknown compression type "+m):e[b]=wh(i,g,g+d))}return e}v();v();v();v();var it=i=>Object.entries(i);v();var Pa=i=>Object.keys(i);function Mg(i){return i.replace(/^g_/,"s_")}function fc(i){return i.replace(/^g_/,"o_")}function dx(i){return i.replace(/^g_/,"w_")}function Eg(i){return i.replace(/^loci_/,"eli_")}function Ia(i){return i.replace(/^loc_/,"el_")}function gc(i){return i.replace(/^lcat_/,"ec_")}function mx(i){return i.replace(/^g_/,"ar_")}function Cg(i){return i.replace(/^n_/,"s_")}function px(i,r,e){switch(i.geometry.type){case"MultiPoint":case"MultiLineString":case"MultiPolygon":{let t=[],n=0,o=i.geometry.type.replace("Multi","");for(let a of i.geometry.coordinates)t.push(De(X({},i),{geometry:{type:o,coordinates:a},properties:De(X({},i.properties),{id:"".concat(r,"-").concat(n++),kind:e})}));return t}default:return[De(X({},i),{properties:De(X({},i.properties),{id:r,kind:e})})]}}function to(i,r,e,t){let n=new Map;for(let{feature:o,floorId:a}of i){let l=o.properties.id,s=t.get(l);if(r.has(l)){let u=px(o,e(l),s),h=u.map(d=>d.properties.id),m=h.map(d=>({geometryId:d,floorId:a}));n.set(l,{ids:h,features:u,anchors:m})}}return n}function wg(i){var u,h;let r={space:new Map,obstruction:new Map,area:new Map,window:new Map,object:new Map};if(!i.geometry)return r;let e=fx(i),t=it(i.geometry).flatMap(([m,d])=>{var f;return((f=d==null?void 0:d.features)!=null?f:[]).map(b=>({feature:b,floorId:m}))}).flat(),n=new Set(Object.values((u=i.walkable)!=null?u:{}).filter(m=>m!==void 0).flatMap(Pa)),o=new Set(Object.values((h=i.nonwalkable)!=null?h:{}).filter(m=>m!==void 0).flatMap(Pa)),a=new Set(Array.from(e.entries()).filter(([m,d])=>d==="area").map(([m])=>m)),l=new Set(Array.from(e.entries()).filter(([m,d])=>d==="object").map(([m])=>m)),s=new Set(Array.from(e.entries()).filter(([m,d])=>d==="window").map(([m])=>m));return n.size>0&&(r.space=to(t,n,Mg,e)),o.size>0&&(r.obstruction=to(t,o,fc,e)),a.size>0&&(r.area=to(t,a,mx,e)),l.size>0&&(r.object=to(t,l,fc,e)),s.size>0&&(r.window=to(t,s,dx,e)),n.size===0&&o.size===0&&a.size===0&&(r.space=to(t,new Set(t.map(m=>m.feature.properties.id)),Mg,e)),r}function fx(i){var e,t,n;let r=new Map(Object.values((e=i.kinds)!=null?e:{}).filter(o=>o!==void 0).flatMap(it));for(let o of(n=(t=i.connections)==null?void 0:t.filter(a=>a.type!=="door"))!=null?n:[]){for(let a of o.entrances)r.set(a.geometryId,"connection.".concat(o.type));for(let a of o.exits)r.set(a.geometryId,"connection.".concat(o.type))}return r}function Tg(i){if(!i||i.length===0)return[];let r=Math.max(...i.map(e=>e.length));return i.reduce((e,t)=>e.map((n,o)=>{var a;return n|((a=t[o])!=null?a:0)}),Array(r).fill(0))}function Dg(i){var s;let{nodesByGeometryId:r,incomingEdgesByNodeId:e,nodesById:t}=gx(i),n=wg(i),o=yx(i),a=(s=i.navigationFlags)!=null?s:{};return{geometryMaps:n,nodesByGeometryId:r,geometryFeatureById:o,navigationFlags:a,incomingEdgesByNodeId:e,nodesById:t}}function gx(i){var n,o,a;let r=new Map,e=new Map,t=new Map;for(let l of Object.values((n=i.nodes)!=null?n:{}))for(let s of(o=l==null?void 0:l.features)!=null?o:[]){if(t.set(s.properties.id,s),s.properties.geometryIds.length>0)for(let u of s.properties.geometryIds){let h=(a=r.get(u))!=null?a:[];h.push(s.properties.id),r.set(u,h)}if(s.properties.neighbors.length>0)for(let u of s.properties.neighbors){let h=e.get(u.id);h!=null?h.push(u):e.set(u.id,[u])}}return{nodesByGeometryId:r,incomingEdgesByNodeId:e,nodesById:t}}function yx(i){var e,t;let r=new Map;for(let n of Object.values((e=i.geometry)!=null?e:{}))for(let o of(t=n==null?void 0:n.features)!=null?t:[])r.set(o.properties.id,o);return r}v();function Pg(i,r){if(!i.annotations||!i.annotationSymbols||!i.geometry)return{};let e={};for(let[t,n]of it(i.annotations)){if(!n||n.length===0||!i.geometry[t]||i.geometry[t].features.length===0)continue;let o=new Map(i.geometry[t].features.map(l=>[l.properties.id,l])),a={type:"FeatureCollection",features:[]};for(let l of n){let s=o.get(l.geometryId);if(!s||s.geometry.type!=="Point")continue;let u={id:l.id,externalId:l.externalId,symbolId:l.symbolKey};a.features.push({type:"Feature",geometry:s.geometry,properties:u})}e[t]=a}return{annotation:e}}v();v();function di(i,r){return r&&(i.flags[r.index]&1<<r.bit)!==0}v();var Dh={accessible:"accessible",outdoors:"outdoors",public:"public"};function Ig(i,{nodesByGeometryId:r}){var a,l,s,u,h,m,d;let e={"connection.json":[],entrance:{}},t=(a=i.navigationFlags)==null?void 0:a[Dh.accessible],n=(l=i.navigationFlags)==null?void 0:l[Dh.outdoors],o=new Map(Object.values((s=i.geometry)!=null?s:{}).flatMap(f=>{var b;return(b=f==null?void 0:f.features)!=null?b:[]}).map(f=>[f.properties.id,f]));for(let f of(u=i.connections)!=null?u:[]){if(Ph(f,o)&&!bx(f)){let S=vx(f,o,r,n);for(let[M,E]of S)e.entrance[M]||(e.entrance[M]={type:"FeatureCollection",features:[]}),e.entrance[M].features.push(E);continue}let b=t!=null&&f.entrances.some(S=>di(S,t))&&f.exits.some(S=>di(S,t)),x=Array.from(new Set([...f.entrances.map(S=>r.get(S.geometryId)),...f.exits.map(S=>r.get(S.geometryId))].flat().filter(S=>S!=null))),y=Tg([...f.entrances.map(S=>S.flags),...f.exits.map(S=>S.flags)]),g={id:f.id,externalId:(m=(h=f.details)==null?void 0:h.externalId)!=null?m:"",type:f.type,accessible:b,nodes:x,flags:y};(d=f.details)!=null&&d.name&&(g.details={name:f.details.name}),f.extra&&(g.extra=f.extra),e["connection.json"].push(g)}return e}function Ph(i,r){return i.type==yh.door&&i.entrances.every(e=>{let t=r.get(e.geometryId);return(t==null?void 0:t.geometry.type)==="LineString"})}function bx(i){return i.entrances.length===0||i.exits.length===0?!1:new Set([...i.entrances.map(e=>e.floorId),...i.exits.map(e=>e.floorId)]).size>=2}function vx(i,r,e,t){var o,a;if(i.type!==yh.door)return[];let n=[];for(let l of i.entrances){let s=r.get(l.geometryId);if((s==null?void 0:s.geometry.type)==="LineString"){let u={type:"Feature",geometry:s.geometry,properties:{id:i.id,externalId:(a=(o=i.details)==null?void 0:o.externalId)!=null?a:"",isExterior:xx(i,t)}},h=i.details;h&&(u.properties.details={name:h.name,description:h.description},h.icon&&(u.properties.details.images=[{url:h.icon,altText:"".concat(h.name," icon")}]));let m=e.get(l.geometryId);m&&m.length>0&&(u.properties.node=m[0]),n.push([l.floorId,u])}}return n}function xx(i,r){return i.entrances.some(e=>di(e,r))||i.exits.some(e=>di(e,r))}v();function Lg(i,{geometryMaps:r,nodesByGeometryId:e}){var M,E,w,_,L,T,C,R,O,B,k,J,z,U,ce,te,G,H,V,Q,pe,be,Be,ge,Ee,Oe,Re,Ze,Ce,wt,Qt,Ht,Ae,_e,Rn,er,qr,mr,tr,Ft,wr,Jr,Kr,_n,Tr,Dr,rr,Gt;let t={categories:[],locations:[],locationInstances:[],layers:[],venue:{slug:"",name:"",externalId:"",defaultLanguage:{name:"English",code:"en"},languages:[]}},n=(M=i.manifest)==null?void 0:M.features[0];n&&(t.venue.defaultFloor=n.properties.defaultFloor,t.venue.tzid=n.properties.tzid,t.venue.name=n.properties.name,t.venue.defaultLanguage={name:(E=n.properties.language)!=null?E:"English",code:(w=n.properties.language)!=null?w:"en"});let o=(_=i.cms)==null?void 0:_.venue;o&&(t.venue=De(X({},t.venue),{slug:o.slug,name:(C=(T=(L=o.details)==null?void 0:L.name)!=null?T:t.venue.name)!=null?C:n.properties.name,externalId:(O=(R=o.details)==null?void 0:R.externalId)!=null?O:"",defaultLanguage:o.defaultLanguage,languages:(B=o.languages)!=null?B:[],countrycode:o.countrycode,coverImage:o.coverImage,logo:o.logo,icon:(k=o.details)==null?void 0:k.icon,extra:o.extra,mappedinWebUrl:o.mappedinWebUrl,operationHours:o.operationHours,topLocations:o.topLocations,type:o.type&&o.type in gh?o.type:"unknown",propertyImage:o.propertyImage}));let a=new Map,l=(J=i.locations)!=null?J:[],s=(U=(z=i.cms)==null?void 0:z.locations)!=null?U:[],u=(te=(ce=i.cms)==null?void 0:ce.categories)!=null?te:[],h=new Map((u!=null?u:[]).map(fe=>[fe.categoryId,fe]));if(l.length>0){let fe=new Map(s.map(re=>[re.locationId,re]));for(let re of l){let W=(G=fe.get(re.id))!=null?G:{};if(re){let ae=re.details,K={id:(W==null?void 0:W.cmsId)!==void 0?"el_".concat(W==null?void 0:W.cmsId):Ia(re.id),name:ae.name,externalId:(H=ae.externalId)!=null?H:"",type:(V=W.type)!=null?V:"location",sortOrder:(Q=W.sortOrder)!=null?Q:0,amenity:W.amenity,description:ae.description,extra:re.extra,links:re.links,operationHours:re.openingHours,gallery:W.gallery,logo:re.logo,shortName:ae.shortName,picture:W.picture,showFloatingLabelWhenImagePresent:W.showFloatingLabelWhenImagePresent,showLogo:W.showLogo,siblingGroups:W.siblingGroups,states:W.states,tags:W.tags,spaces:[],nodes:[],polygons:[],headerImage:W.headerImage};if(re.phone&&(K.phone={number:re.phone}),W.primaryCategory){let ue=h.get(W.primaryCategory);ue&&(K.primaryCategory=ue.id)}let se=Og(re.social);re.website&&(se.website=re.website.url),K.social=se;for(let ue of re.geometryAnchors){let He=r.space.get(ue.geometryId),Xe=r.obstruction.get(ue.geometryId),ot=He!=null?He:Xe;if(ot){let mi=new Set(ot.features.filter(Vt=>Vt.geometry.type==="Polygon").map(Vt=>Vt.properties.id));for(let Vt of ot.anchors)He!=null&&ot===He&&K.spaces.push({floor:Vt.floorId,id:Vt.geometryId}),mi.has(Vt.geometryId)&&K.polygons.push({map:Vt.floorId,id:Vt.geometryId})}let ht=e.get(ue.geometryId);for(let mi of ht!=null?ht:[])K.nodes.push({map:ue.floorId,id:mi})}t.locations.push(K);for(let ue of re.categories)a.set(ue,[...(pe=a.get(ue))!=null?pe:[],re.id])}}}let m=(Be=(be=i.cms)==null?void 0:be.locationInstances)!=null?Be:[],d=i.locationInstances;if(d){let fe=new Map(m.map(W=>[W.locationInstanceId,W])),re=[];for(let W of d){let ae=(ge=fe.get(W.id))!=null?ge:{};if(W){let K={id:Eg(W.id),parent:(Ee=ae.parentId)!=null?Ee:Ia(W.parentId),name:(Oe=W.details)==null?void 0:Oe.name,externalId:(Re=W.details)==null?void 0:Re.externalId,type:ae.type,sortOrder:ae.sortOrder,amenity:ae.amenity,description:(Ze=W.details)==null?void 0:Ze.description,extra:W.extra,links:W.links,operationHours:W.openingHours,gallery:ae.gallery,picture:ae.picture,showFloatingLabelWhenImagePresent:ae.showFloatingLabelWhenImagePresent,showLogo:ae.showLogo,siblingGroups:ae.siblingGroups,states:ae.states,tags:ae.tags,logo:W.logo,shortName:(Ce=W.details)==null?void 0:Ce.shortName,headerImage:ae.headerImage};W.phone&&(K.phone={number:W.phone});let se=Og((wt=W.social)!=null?wt:[]);if(W.website&&(se.website=W.website.url),Object.keys(se).length>0&&(K.social=se),(Qt=W.geometryAnchors)!=null&&Qt.length){let ue=W.geometryAnchors.flatMap(He=>{var Xe,ot;return(ot=(Xe=r.space.get(He.geometryId))==null?void 0:Xe.anchors)!=null?ot:[]});ue.length>0&&(K.spaces=ue.map(He=>({floor:He.floorId,id:He.geometryId})))}if(W.geometryAnchors){K.spaces=[],K.polygons=[],K.nodes=[];for(let ue of W.geometryAnchors){let He=r.space.get(ue.geometryId);if(He){let ot=new Set(He.features.filter(ht=>ht.geometry.type==="Polygon").map(ht=>ht.properties.id));for(let ht of He.anchors)K.spaces.push({floor:ht.floorId,id:ht.geometryId}),ot.has(ht.geometryId)&&K.polygons.push({map:ht.floorId,id:ht.geometryId})}let Xe=e.get(ue.geometryId);for(let ot of Xe!=null?Xe:[])K.nodes.push({map:ue.floorId,id:ot})}}re.push(K)}}re.length>0&&(t.locationInstances=re)}let f=i.locationCategories;if(f){let fe=[],re=new Map(f.map(se=>[se.id,se])),W=new Map((u!=null?u:[]).map(se=>[se.categoryId,se])),ae=new Map;for(let se of f){let ue=re.get(se.parent);if(ue){let He=(Ht=ae.get(ue.id))!=null?Ht:[];He.push(se.id),ae.set(ue.id,He)}}for(let se of f){let ue=W.get(se.id);if(se){let He=((Ae=ae.get(se.id))!=null?Ae:[]).map(gc),Xe={id:gc(se.id),name:se.details.name,externalId:(_e=se.details.externalId)!=null?_e:"",sortOrder:(Rn=ue==null?void 0:ue.sortOrder)!=null?Rn:0,children:He,locations:((er=a.get(se.id))!=null?er:[]).map(Ia),icon:se.details.icon,picture:ue==null?void 0:ue.picture,color:ue==null?void 0:ue.color,extra:se.extra,iconFromDefaultList:ue==null?void 0:ue.iconFromDefaultList};fe.push(Xe)}}t.categories=fe;let K={};for(let se of l)K[Ia(se.id)]=se.categories.map(gc).filter(ue=>ue!==void 0);t.categoryPriorities=K}let b={};for(let[fe,re]of Object.entries((qr=i.defaultStyle)!=null?qr:{}))if(re.buffer){let W=re.geometryAnchors.flatMap(ae=>{var K,se;return(se=(K=r.space.get(ae.geometryId))==null?void 0:K.anchors)!=null?se:[]});b[fe]={edgeOffset:re.buffer,geometryAnchors:W}}Object.keys(b).length>0&&(t.enterpriseStyles=b);let x=new Map;for(let fe of Object.values((tr=(mr=i.cms)==null?void 0:mr.layers)!=null?tr:{}))if(fe)for(let[re,W]of it(fe)){if(typeof W!="string")continue;let ae=(Ft=x.get(W))!=null?Ft:{name:W,id:"ely_".concat(W),spaces:[]};ae.spaces.push(...(Jr=(wr=r.space.get(re))==null?void 0:wr.anchors.map(K=>({floorId:K.floorId,spaceId:K.geometryId})))!=null?Jr:[]),x.set(W,ae)}x.size>0&&(t.layers=Array.from(x.values()));let y=[];for(let fe of Object.values((_n=(Kr=i.cms)==null?void 0:Kr.textures)!=null?_n:{}))for(let re of fe){let W=(Tr=r.space.get(re.geometryId))==null?void 0:Tr.anchors;!W||W.length<1||re.face==="unknown"||re.surface==="unknown"||y.push({repeat:re.repeat,offset:re.offset,rotation:re.rotation,path:re.path,face:re.face,surface:re.surface,bounds:re.bounds,geometryAnchors:W})}y.length>0&&(t.textures=y);let g={};for(let[fe,re]of Object.entries((rr=(Dr=i.cms)==null?void 0:Dr.floorText)!=null?rr:{})){let W={type:"FeatureCollection",features:[]};for(let ae of re.features){if(ae.properties.align==="unknown")continue;let K={align:ae.properties.align,color:ae.properties.color,fontFamily:ae.properties.fontFamily,fontSize:ae.properties.fontSize,rotation:ae.properties.rotation,text:ae.properties.text,visible:ae.properties.visible};"geometryId"in ae.properties?K.geometryId=ae.properties.geometryId:K.verticalOffset=ae.properties.verticalOffset,W.features.push({type:"Feature",geometry:ae.geometry,properties:K})}W.features.length>0&&(g[fe]=W)}Object.keys(g).length>0&&(t.floorText=g);let S={enterprise:t};if((Gt=i.cms)!=null&&Gt.textAreas){let fe={};for(let[re,W]of it(i.cms.textAreas)){let ae={type:"FeatureCollection",features:[]};for(let K of W.features){if(K.properties.align==="unknown")continue;let se={align:K.properties.align,maxWidth:K.properties.maxWidth,maxHeight:K.properties.maxHeight,rotation:K.properties.rotation};"geometryId"in K.properties?se.anchorId=K.properties.geometryId:se.verticalOffset=K.properties.verticalOffset;let ue={type:"Feature",geometry:K.geometry,properties:se};ae.features.push(ue)}fe[re]=ae}S.textAreas=fe}return S}var Sx=["facebook","instagram","twitter"];function Og(i){let r={};for(let{name:e,url:t}of i){let n=e.toLowerCase();Sx.includes(n)&&(r[n]=t)}return r}v();var Mx=i=>"fc_".concat(i.slice(3));function Ag(i,{geometryMaps:r}){var n;if(!i.facade)return{};let e={},t={};for(let[o,a]of it(i.facade))if(a)for(let l of Object.values(a)){let{floorStackId:s,geometryIds:u}=l,h=Mx(s);(n=t[s])!=null||(t[s]={id:h,spaces:[]}),t[s].spaces.push(...u.map(m=>{var d,f;return{floorId:o,spaceId:(f=(d=r.space.get(m))==null?void 0:d.ids[0])!=null?f:""}}))}return Object.keys(t).length>0&&(e.facade=t),e}v();function Rg(i,r={}){var n,o,a,l,s,u,h,m,d,f,b,x;let e={type:"FeatureCollection",features:[]},t=[];for(let y of i.floors.features)t.push({id:y.properties.id,externalId:(o=(n=y.properties.details)==null?void 0:n.externalId)!=null?o:"",elevation:y.properties.elevation,name:(l=(a=y.properties.details)==null?void 0:a.name)!=null?l:"",shortName:(u=(s=y.properties.details)==null?void 0:s.shortName)!=null?u:"",subtitle:y.properties.subtitle,maxHeight:y.properties.maxHeight}),e.features.push({type:"Feature",geometry:y.geometry,properties:{id:y.properties.id,externalId:(m=(h=y.properties.details)==null?void 0:h.externalId)!=null?m:"",elevation:y.properties.elevation,name:(f=(d=y.properties.details)==null?void 0:d.name)!=null?f:"",shortName:(x=(b=y.properties.details)==null?void 0:b.shortName)!=null?x:"",subtitle:y.properties.subtitle,maxHeight:y.properties.maxHeight}});return{"floor.geojson":e,"map.geojson":t}}v();function _g(i,{geometryMaps:r}){var n,o,l,s,u;let e={},t={};for(let[h,m]of it((n=i.floorImages)!=null?n:{})){let d={features:[],type:"FeatureCollection"};for(let f of(o=m==null?void 0:m.features)!=null?o:[])if("verticalOffset"in f.properties)d.features.push(f);else{let a=f.properties,{geometryId:b}=a,x=La(a,["geometryId"]),y=(u=(l=r.space.get(b))==null?void 0:l.ids[0])!=null?u:(s=r.obstruction.get(b))==null?void 0:s.ids[0];if(!y)continue;let g={geometry:f.geometry,properties:De(X({},x),{anchorId:y}),type:f.type};d.features.push(g)}t[h]=d}return Object.keys(t).length>0&&(e.floorImages=t),e}v();function Fg(i,r={}){var n,o,a,l,s,u,h;let e=[];for(let m of(n=i==null?void 0:i.floorStacks)!=null?n:[]){let d={id:m.id,floors:m.floors,maps:m.floors,externalId:(a=(o=m.details)==null?void 0:o.externalId)!=null?a:"",name:(s=(l=m.details)==null?void 0:l.name)!=null?s:"",shortName:(h=(u=m.details)==null?void 0:u.shortName)!=null?h:"",type:"Building"};m.defaultFloor&&(d.defaultFloor=m.defaultFloor),e.push(d)}if(i.outdoors&&i.outdoors.floors.length>0){let m={id:"outdoors",floors:i.outdoors.floors,maps:i.outdoors.floors,type:"Outdoor",name:"Outdoors",externalId:"outdoors"};e.push(m)}return{"floorstack.json":e,"mapstack.geojson":e}}v();v();var kg=Aa(Ng(),1),Dx=i=>{let r=i.geometry.coordinates[0],e=0;for(let t=0;t<r.length-1;t++)e+=r[t][0]*r[t+1][1]-r[t+1][0]*r[t][1];return Math.abs(e/2)},Px=(i,r)=>{let[e,t]=i,n=r.geometry.coordinates[0],o=!1;for(let a=0,l=n.length-1;a<n.length;l=a++){let[s,u]=n[a],[h,m]=n[l];u>t!=m>t&&e<(h-s)*(t-u)/(m-u)+s&&(o=!o)}return o},Ix=i=>{let r=i.geometry.coordinates[0],e=0,t=0;for(let n=0;n<r.length-1;n++)e+=r[n][0],t+=r[n][1];return{geometry:{coordinates:[e/(r.length-1),t/(r.length-1)]}}},Ox=i=>{let r=Dx(i),e=Number.isFinite(r)?Math.max(r,1):1;return Math.sqrt(e)*1e-6},bc=i=>{try{let e=Ix(i).geometry.coordinates;if(!Px(e,i)){let n=(0,kg.default)(i.geometry.coordinates,Ox(i));return Er([n[0],n[1]])}return Er(e)}catch(r){return hi(new Error("Unable to calculate center of polygon"))}};function Ah(i){var r;return((r=i==null?void 0:i.geometry)==null?void 0:r.type)==="Polygon"}function Ug(i,{geometryMaps:r,nodesByGeometryId:e,nodesById:t}){var h,m,d,f,b,x,y,g,S,M;let n=_x(i.defaultStyle),o={},a={},l={},s={};for(let E of Pa(i.geometry)){let w=i.geometry[E];if(!w)continue;let _=[],L=[],T=[],C=[];for(let R of w.features){let O=R.properties.id,B=n.has(O),k=(h=e.get(O))!=null?h:[];for(let J of(d=(m=r.space.get(O))==null?void 0:m.features)!=null?d:[])_.push(zg(J,k));for(let J of(b=(f=r.obstruction.get(O))==null?void 0:f.features)!=null?b:[])if(L.push(Lx(J,B)),r.object.has(O)){let z=(x=e.get(O))!=null?x:[],U=z.map(ce=>t.get(ce)).filter(ce=>ce!=null);for(let ce of U){let te=zg({type:"Feature",geometry:ce.geometry,properties:{id:Cg(ce.properties.id),kind:"desk-entrance",details:{externalId:fc(O)}}},z);_.push(te)}}for(let J of(g=(y=r.area.get(O))==null?void 0:y.features)!=null?g:[])T.push(Ax(J,k));for(let J of(M=(S=r.window.get(O))==null?void 0:S.features)!=null?M:[])C.push(Rx(J))}_.length>0&&(o[E]={type:"FeatureCollection",features:_.filter(R=>R!==null)}),L.length>0&&(a[E]={type:"FeatureCollection",features:L.filter(R=>R!==null)}),T.length>0&&(l[E]={type:"FeatureCollection",features:T.filter(R=>R!==null)}),C.length>0&&(s[E]={type:"FeatureCollection",features:C.filter(R=>R!==null)})}let u={space:o,obstruction:a};return Object.keys(l).length>0&&(u.area=l),Object.keys(s).length>0&&(u.window=s),u}function zg(i,r){var t,n;switch(i.geometry.type){case"MultiPoint":case"MultiLineString":case"MultiPolygon":return null}let e={type:"Feature",geometry:i.geometry,properties:{destinationNodes:r,id:i.properties.id,externalId:(n=(t=i.properties.details)==null?void 0:t.externalId)!=null?n:"",kind:i.properties.kind}};return i.properties.details&&(e.properties.details={name:i.properties.details.name,description:i.properties.details.description,images:i.properties.details.icon?[{url:i.properties.details.icon,altText:i.properties.details.name?"".concat(i.properties.details.name," icon"):"icon"}]:void 0}),Ah(e)&&(e.properties.center=bc(e).unwrapOr(void 0)),e}function Lx(i,r){var n,o;switch(i.geometry.type){case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"Point":return null}let e=i.properties,t={type:"Feature",geometry:i.geometry,properties:{id:e.id,externalId:(o=(n=e.details)==null?void 0:n.externalId)!=null?o:"",entrances:[],kind:e.kind,footprintComponent:r}};return Ah(t)&&(t.properties.center=bc(t).unwrapOr(void 0)),e.details&&(t.properties.details={name:e.details.name,description:e.details.description,images:e.details.icon?[{url:e.details.icon,altText:e.details.name?"".concat(e.details.name," icon"):"icon"}]:void 0}),t}function Ax(i,r){var n,o;if(i.geometry.type!=="Polygon")return null;let e=i.properties,t={type:"Feature",geometry:i.geometry,properties:{id:e.id,externalId:(o=(n=e.details)==null?void 0:n.externalId)!=null?o:"",destinationNodes:r}};return Ah(t)&&(t.properties.center=bc(t).unwrapOr(void 0)),e.details&&(t.properties.details={name:e.details.name,description:e.details.description,images:e.details.icon?[{url:e.details.icon,altText:e.details.name?"".concat(e.details.name," icon"):"icon"}]:void 0}),t}function Rx(i){return i.geometry.type!=="LineString"?null:{type:"Feature",geometry:i.geometry,properties:{id:i.properties.id}}}function _x(i){var e,t;return new Set(((t=(e=i==null?void 0:i.ExteriorWalls)==null?void 0:e.geometryAnchors)!=null?t:[]).map(n=>n.geometryId))}v();function Hg(i,{geometryMaps:r,geometryFeatureById:e}){var n,o,a,l,s,u,h,m,d,f,b,x,y;if(!i.locationCategories&&!i.locations)return{};let t={};if((n=i.locationCategories)!=null&&n.length){let g=[];for(let S of i.locationCategories){let M={id:S.id,name:S.details.name,icon:(o=S.details.icon)!=null?o:""};S.parent&&(M.parent=S.parent),g.push(M)}t["category.json"]=g}if((a=i.locations)!=null&&a.length){let g=Fx(i,{geometryFeatureById:e}),S=[];for(let M of i.locations){let E={id:M.id,name:M.details.name,categories:M.categories,spaces:[],obstructions:[],areas:[],annotations:[],connections:[],entrances:[],links:M.links,openingHoursSpecification:(l=M.openingHours)!=null?l:[],pictures:M.images,social:M.social,description:M.details.description,externalId:M.details.externalId,icon:M.details.icon,logo:M.logo,phone:M.phone,website:M.website,searchTags:M.searchTags};S.push(E);for(let{geometryId:w,floorId:_}of M.geometryAnchors)E.spaces.push(...(u=(s=r.space.get(w))==null?void 0:s.ids.map(L=>({id:L,floor:_})))!=null?u:[]),E.obstructions.push(...(m=(h=r.obstruction.get(w))==null?void 0:h.ids.map(L=>({id:L,floor:_})))!=null?m:[]),E.areas.push(...(f=(d=r.area.get(w))==null?void 0:d.ids.map(L=>({id:L,floor:_})))!=null?f:[]),E.entrances.push(...(b=g.entrancesByGeometryId.get(w))!=null?b:[]),E.connections.push(...(x=g.connectionsByGeometryId.get(w))!=null?x:[]),E.annotations.push(...(y=g.annotationsByGeometryId.get(w))!=null?y:[])}t["location.json"]=S}return t}function Fx(i,{geometryFeatureById:r}){var t,n,o;let e={annotationsByGeometryId:new Map,connectionsByGeometryId:new Map,entrancesByGeometryId:new Map};if(i.annotations)for(let[a,l]of it(i.annotations))for(let s of l!=null?l:[]){let u=s.geometryId,h=s.id,m=(t=e.annotationsByGeometryId.get(u))!=null?t:[];m.push({floor:a,id:h}),e.annotationsByGeometryId.set(u,m)}if(i.connections)for(let a of i.connections){let l=Ph(a,r),s=Array.from(new Map([...a.entrances,...a.exits].map(u=>["".concat(u.geometryId,"_").concat(u.floorId),u])).values());for(let u of s){let h=u.geometryId;if(l){let m=(n=e.entrancesByGeometryId.get(h))!=null?n:[];m.push({floor:u.floorId,id:a.id}),e.entrancesByGeometryId.set(h,m)}else{let m=(o=e.connectionsByGeometryId.get(h))!=null?o:[];m.push(a.id),e.connectionsByGeometryId.set(h,m)}}}return e}v();function Vg(i,r){let e={features:[],type:"FeatureCollection"},t={"manifest.geojson":e},n=i.manifest;if(n.features.length>0){let o=n.features[0],a=o.properties,l=a.details!=null?X({},a.details.externalId!=null&&{externalId:a.details.externalId}):void 0,s={type:"Feature",geometry:o.geometry,properties:X({folder_struct:[],version:"2.0.0",time:a.time,name:a.name,naturalBearing:a.naturalBearing,tzid:a.tzid,map:a.mapId,org_id:a.orgId,language:a.language},l!=null&&Object.keys(l).length>0&&{details:l})};e.features.push(s)}return t}v();function Wg(i,{geometryMaps:r,navigationFlags:e,incomingEdgesByNodeId:t}){var u,h,m,d,f,b;let n={"node.geojson":{type:"FeatureCollection",features:[]}},o=n["node.geojson"].features,a=Gx(i),l=Bx(i),s=Nx(i,l,a);for(let[x,y]of it((u=i.nodes)!=null?u:{}))for(let g of(h=y==null?void 0:y.features)!=null?h:[]){let S=(m=r.space.get(g.properties.geometryIds[0]))==null?void 0:m.features[0],M=(S==null?void 0:S.geometry.type)==="Point"&&((d=S==null?void 0:S.properties.details)!=null&&d.externalId)?S.properties.details.externalId:"",E=(f=t.get(g.properties.id))!=null?f:[],w=Object.keys(e!=null?e:{}),_=[];for(let T of E)for(let C of w)di(T,e[C])&&_.push(e[C]);let L={type:"Feature",geometry:g.geometry,properties:{id:g.properties.id,floor:x,space:g.properties.geometryIds.map(T=>{var C;return(C=r.space.get(T))==null?void 0:C.ids}).flat().filter(T=>T!==void 0),neighbors:[...g.properties.neighbors.map(T=>({id:T.id,weight:T.extraCost})),...(b=s.get(g.properties.id))!=null?b:[]],map:x,externalId:M,flags:_.length>0?kx(_):void 0}};o.push(L)}return n}function Gx(i){var e,t;let r=new Map;for(let n of(t=(e=i.floors)==null?void 0:e.features)!=null?t:[])r.set(n.properties.id,n.properties.elevation);return r}function Bx(i){var e,t,n;let r=new Map;for(let o of Object.values((e=i.nodes)!=null?e:{}))for(let a of(t=o==null?void 0:o.features)!=null?t:[])if(a.properties.geometryIds.length!==0)for(let l of a.properties.geometryIds){let s=(n=r.get(l))!=null?n:[];s.includes(a.properties.id)||(s.push(a.properties.id),r.set(l,s))}return r}function Nx(i,r,e){var n,o,a,l,s;let t=new Map;for(let u of(n=i.connections)!=null?n:[]){let h=u.exits.map(m=>{var d;return De(X({},m),{nodes:(d=r.get(m.geometryId))!=null?d:[]})});for(let m of u.entrances){let d=(o=r.get(m.geometryId))!=null?o:[];for(let f of d)for(let b of h){let x=Math.abs(((a=e.get(m.floorId))!=null?a:0)-((l=e.get(b.floorId))!=null?l:0))*u.floorCostMultiplier,y=(s=t.get(f))!=null?s:[];y.push(...b.nodes.filter(g=>g!==f).map(g=>({id:g,weight:x+u.entryCost}))),t.set(f,y)}}}return t}function kx(i){if(i==null||i.length===0)return;let r=new Array(Math.max(...i.map(e=>e.index))+1).fill(0);for(let e of i)r[e.index]|=1<<e.bit;return r}v();function zx(i,r){var t;let e={};for(let n of i){let o=r.get(n);o&&((t=e[o])!=null||(e[o]=[]),e[o].push(n))}return e}function jg(i,{geometryMaps:r}){var a,l,s;if(!i.defaultStyle)return{};let e={},t={};e["styles.json"]=t;let n=[...Array.from(r.space.values()).map(u=>u.features),...Array.from(r.obstruction.values()).map(u=>u.features)],o=new Map(n.flatMap(u=>u.map(h=>[h.properties.id,h.geometry.type])));for(let[u,h]of it(i.defaultStyle)){let m=zx(h.geometryAnchors.flatMap(d=>{var f,b,x,y;return[...(b=(f=r.space.get(d.geometryId))==null?void 0:f.ids)!=null?b:[],...(y=(x=r.obstruction.get(d.geometryId))==null?void 0:x.ids)!=null?y:[]]}),o);if(m.Point&&m.Point.length>0){let d={points:Array.from(m.Point.values()),showImage:((a=h.extra)==null?void 0:a.showImage)!==void 0?((l=h.extra)==null?void 0:l.showImage)===!0:h.opacity!==0};t["".concat(u,".Point")]=d}if(m.LineString&&m.LineString.length>0){let d={lineStrings:Array.from(m.LineString.values()),altitude:h.altitude,color:h.color,height:h.height,opacity:h.opacity,width:h.buffer};h.topColor!==void 0&&(d.topColor=h.topColor),t["".concat(u,".LineString")]=d}if(m.Polygon&&m.Polygon.length>0){let d={polygons:Array.from(m.Polygon.values()),altitude:h.altitude,color:h.color,height:h.height,opacity:h.opacity};((s=h.extra)==null?void 0:s.showImage)!==void 0&&(d.showImage=h.extra.showImage===!0),h.topColor!==void 0&&(d.topColor=h.topColor),t["".concat(u,".Polygon")]=d}}return e}function Zg(i){let r=Dg(i),e=Rg(i,r),t=Ug(i,r),n=Wg(i,r),o=Ig(i,r),a=jg(i,r),l=Fg(i,r),s=_g(i,r),u=Ag(i,r),h=Pg(i,r),m=Hg(i,r),d=Lg(i,r),f=Vg(i,r);return X(X(X(X(X(X(X(X(X(X(X(X(X(X(X({},i.tileset?{"tileset.json":i.tileset}:{}),i.navigationFlags?{"navigationFlags.json":i.navigationFlags}:{}),i.annotationSymbols?{"annotation-symbols.json":i.annotationSymbols}:{}),e),t),n),o),a),l),s),u),h),m),d),f)}var Ue=i=>JSON.parse(Th(i)),Ux=/^geometry\/(.+)\.geojson$/,Hx=/^nodes\/(.+)\.(geo)?json$/,Vx=/^floorImages\/(.+)\.geojson$/,Wx=/^facade\/(.+)\.json$/,jx=/^walkable\/(.+)\.json$/,Zx=/^nonwalkable\/(.+)\.json$/,Xx=/^kinds\/(.+)\.json$/,Yx=/^annotations\/(.+)\.json$/,$x=/^cms\/(?:([^/]+)\/)?([^/]+)\.(?:json|geojson)$/,qx=[(i,r)=>i==="manifest.geojson"?{manifest:Ue(r)}:void 0,(i,r)=>i==="floors.geojson"?{floors:Ue(r)}:void 0,(i,r)=>{let e=i.match(Ux);return e?{geometry:{[e[1]]:Ue(r)}}:void 0},(i,r)=>i==="connections.json"?{connections:Ue(r)}:void 0,(i,r)=>i==="navigationFlags.json"?{navigationFlags:Ue(r)}:void 0,(i,r)=>{let e=i.match(Hx);return e?{nodes:{[e[1]]:Ue(r)}}:void 0},(i,r)=>i==="default-style.json"?{defaultStyle:Ue(r)}:void 0,(i,r)=>i==="floor-stacks.json"?{floorStacks:Ue(r)}:void 0,(i,r)=>i==="outdoors.json"?{outdoors:Ue(r)}:void 0,(i,r)=>i==="tileset.json"?{tileset:Ue(r)}:void 0,(i,r)=>{let e=i.match(Vx);return e?{floorImages:{[e[1]]:Ue(r)}}:void 0},(i,r)=>{let e=i.match(Wx);return e?{facade:{[e[1]]:Ue(r)}}:void 0},(i,r)=>{let e=i.match(jx);return e?{walkable:{[e[1]]:Ue(r)}}:void 0},(i,r)=>{let e=i.match(Zx);return e?{nonwalkable:{[e[1]]:Ue(r)}}:void 0},(i,r)=>{let e=i.match(Xx);return e?{kinds:{[e[1]]:Ue(r)}}:void 0},(i,r)=>i==="annotation-symbols.json"?{annotationSymbols:Ue(r)}:void 0,(i,r)=>{let e=i.match(Yx);return e?{annotations:{[e[1]]:Ue(r)}}:void 0},(i,r)=>i==="locations.json"?{locations:Ue(r)}:void 0,(i,r)=>i==="location-categories.json"?{locationCategories:Ue(r)}:void 0,(i,r)=>i==="location-instances.json"?{locationInstances:Ue(r)}:void 0,(i,r)=>{let e=i.match($x);if(!e)return;let[,t,n]=e;return t==="floorText"||t==="textures"||t==="textAreas"?{cms:{[t]:{[n]:Ue(r)}}}:{cms:{[n]:Ue(r)}}}],Jx=new Set(cc),Kx=new Set(uc),Qx=new Set(va),eS=new Set(Sa),tS=new Set(xa),rS=new Set(Ma),nS=new Set(Ea),iS=new Set(Ca),oS=new Set(wa);function An(i,r){return typeof i=="string"&&r.has(i)?i:"unknown"}function aS(i){let r=i.connections;if(Array.isArray(r))for(let l of r)l&&typeof l=="object"&&"type"in l&&(l.type=An(l.type,Jx));let e=i.kinds;if(e&&typeof e=="object"){for(let l of Object.values(e))if(l&&typeof l=="object"){let s=l;for(let u of Object.keys(s))s[u]=An(s[u],Kx)}}let t=i.cms;if(!t||typeof t!="object")return;let n=t,o=n.locations;if(Array.isArray(o))for(let l of o){if(!l||typeof l!="object")continue;let s=l;if("type"in s&&(s.type=An(s.type,Qx)),Array.isArray(s.states))for(let u of s.states)u&&typeof u=="object"&&"type"in u&&(u.type=An(u.type,eS));if(Array.isArray(s.siblingGroups))for(let u of s.siblingGroups)u&&typeof u=="object"&&"type"in u&&(u.type=An(u.type,tS))}for(let l of["floorText","textAreas"]){let s=l==="floorText"?rS:nS,u=n[l];if(!(!u||typeof u!="object"))for(let h of Object.values(u)){if(!h||typeof h!="object")continue;let m=h.features;if(Array.isArray(m))for(let d of m){if(!d||typeof d!="object")continue;let f=d.properties;f&&typeof f=="object"&&"alignment"in f&&(f.alignment=An(f.alignment,s))}}}let a=n.textures;if(a&&typeof a=="object"){for(let l of Object.values(a))if(Array.isArray(l))for(let s of l){if(!s||typeof s!="object")continue;let u=s;"face"in u&&(u.face=An(u.face,iS)),"surface"in u&&(u.surface=An(u.surface,oS))}}}function sS(i){let r=Sg(i),e={};for(let t of Object.keys(r))for(let n of qx){let o=n(t,r[t]);if(o){e=ba(e,o,[]);break}}return aS(e),e}function vc(i){try{return Er(sS(i))}catch(r){return hi(r instanceof Error?r:new Error(String(r)))}}var lS={decompressUnsafeSync:i=>vc(i),decompressUnsafe:i=>Promise.resolve(vc(i)),decompressSync:i=>vc(i),decompress:i=>Promise.resolve(vc(i))};var xc=class{constructor({nodes:r,geojsonCollection:e,groupBy:t="default",multiplicativeDistanceWeightScaling:n,flagDeclarations:o,getDoorByNodeId:a}){p(this,"groupBy");p(this,"graph");p(this,"geometryEdgesByMapId",new Map);p(this,"flagDeclarations",{});p(this,"getDoorByNodeId");p(this,"disabledNodeIds");p(this,"generatePath",r=>{let{destination:e}=r[r.length-1],t={type:"FeatureCollection",features:[]};for(let o=0;o<r.length;o++){let{origin:a,destination:l}=r[o],s={id:a.properties.id,angle:r[o].angle,distance:r[o].distance,destination:l.properties.id,edges:this.graph.edges[a.properties.id]};this.groupBy!=="default"&&(s.groupBy=a.properties[this.groupBy]),t.features.push({type:"Feature",geometry:{type:"Point",coordinates:[a.geometry.coordinates[0],a.geometry.coordinates[1]]},properties:s})}let n={id:e.properties.id,edges:this.graph.edges[e.properties.id]};return this.groupBy!=="default"&&(n.groupBy=e.properties[this.groupBy]),t.features.push({type:"Feature",geometry:{type:"Point",coordinates:[e.geometry.coordinates[0],e.geometry.coordinates[1]]},properties:n}),t});p(this,"findNearestNodesOnGraph",(r,e,t,n,o=!1,a=1/0)=>{var l;return this.graph.dijkstraFindWithinTravelDistance(r,e,n,(l=this.geometryEdgesByMapId.get(t))!=null?l:[],o,a)});p(this,"hasLineOfSight",(r,e,t,n)=>this.graph.hasLineOfSight(r,e,this.geometryEdgesByMapId.get(t),n));p(this,"getDistance",(r,e)=>pt(r,e));p(this,"getAngle",(r,e)=>ct(r,e));this.groupBy=t,this.graph=new nc({nodes:r,groupBy:this.groupBy,multiplicativeDistanceWeightScaling:n});let l=(e==null?void 0:e.features)||[];this.flagDeclarations=o!=null?o:{},this.getDoorByNodeId=a,this.disabledNodeIds=this.getDisabledNodeIds(),l.forEach(s=>{let u=null;if(s.geometry.type==="LineString"?u=s.geometry.coordinates:s.geometry.type==="Polygon"&&(u=s.geometry.coordinates.flat()),u){let h=this.groupBy==="default"?this.groupBy:s.properties[this.groupBy];this.geometryEdgesByMapId.has(h)||this.geometryEdgesByMapId.set(h,[]),u.forEach((m,d)=>{this.geometryEdgesByMapId.get(h).push([m,u[d+1]||u[0]])})}})}getDisabledNodeIds(){let r=new Set;if(sc.public in this.flagDeclarations)for(let e in this.graph.nodesById)ac(this.graph.nodesById[e].properties.flags,this.flagDeclarations[sc.public].index,this.flagDeclarations[sc.public].bit)||r.add(e);return r}getDirections({zones:r,originIds:e,from:t,to:n,destinationNodeIds:o,disabledConnectionNodeIds:a,simplify:l,multiplicativeDistanceWeightScaling:s,overrideEdgeWeights:u}){var f;let h=(f=l==null?void 0:l.enabled)!=null?f:!0,m=r!=null?r:[],d=this.graph.aStar({originIds:e,destinationNodeIds:o,zones:m,disabledConnectionNodeIds:new Set(a),overrideEdgeWeights:u,disabledNodeIds:this.disabledNodeIds});if(d.length===0)return{type:"FeatureCollection",features:[]};if((l==null?void 0:l.__EXPERIMENTAL_METHOD)!=="greedy-los"&&t&&n&&t.length===1&&n.length===1){let b=new Ct({origin:t[0],destination:d[0].origin,distance:pt(t[0].geometry.coordinates,d[0].origin.geometry.coordinates),angle:ct(t[0].geometry.coordinates,d[0].origin.geometry.coordinates),multiplicativeDistanceWeightScaling:s}),x=d.slice(),y=new Ct({origin:d[d.length-1].destination,destination:n[0],distance:pt(d[d.length-1].destination.geometry.coordinates,n[0].geometry.coordinates),angle:ct(d[d.length-1].destination.geometry.coordinates,n[0].geometry.coordinates),multiplicativeDistanceWeightScaling:s});x.unshift(b),x.push(y),d=x}return h&&(d=this.simplifyAllSteps(d,l,s)),this.generatePath(d)}simplifyAllSteps(r,e={enabled:!0,__EXPERIMENTAL_METHOD:"greedy-los"},t){var d,f,b,x;let n=[],o=[r[0]],a=(d=e.__EXPERIMENTAL_METHOD)!=null?d:"greedy-los",l=(f=e.radius)!=null?f:ga,s=a==="dp-optimal"?this.simplifyStepsWithDPMethod.bind(this):a==="rdp"?this.simplifyStepsImprovedWithSimplifyBeforeLoSChecks.bind(this):this.simplifySteps.bind(this);for(let y=1;y<r.length;y++)if(this.groupBy!=="default"&&r[y].origin.properties[this.groupBy]!==r[y-1].origin.properties[this.groupBy]){let g=r[y-1].origin.properties[this.groupBy],S=(b=this.geometryEdgesByMapId.get(g))!=null?b:[];n.push(...s(o,S,l,t,e)),o=[r[y]]}else o.push(r[y]);let u=r[r.length-1],h=this.groupBy==="default"?this.groupBy:u.origin.properties[this.groupBy],m=(x=this.geometryEdgesByMapId.get(h))!=null?x:[];return n.push(...s(o,m,l,t,e)),n}simplifySteps(r,e,t,n,o){return cg(r,e,t,this.flagDeclarations,n)}simplifyStepsImprovedWithSimplifyBeforeLoSChecks(r,e,t,n,o){var s;if(r.length<3)return r;!1,r=sg(r,this.getDoorByNodeId,n,e);let a=(o==null?void 0:o.__EXPERIMENTAL_METHOD)==="rdp"&&(s=o.mustIncludeDoorBufferNodes)!=null?s:!0;return lg(r,e,n,a)}simplifyStepsWithDPMethod(r,e,t,n,o){var h;if(r.length<3)return r;let a=new Set;((o==null?void 0:o.__EXPERIMENTAL_METHOD)==="dp-optimal"&&(h=o.includeDoorBufferNodes)!=null?h:!1)&&(a=hg(r,this.getDoorByNodeId));for(let m=0;m<r.length-1;m++){let d=r[m].origin.properties.floor,f=r[m+1].origin.properties.floor;d!==f&&(r[m].origin.properties.preventSmoothing||(r[m].origin.properties.preventSmoothing=!0,a.add(r[m].origin.properties.id)),r[m+1].origin.properties.preventSmoothing||(r[m+1].origin.properties.preventSmoothing=!0,a.add(r[m+1].origin.properties.id)))}let s=r[r.length-1];s.origin.properties.floor!==s.destination.properties.floor&&(s.origin.properties.preventSmoothing||(s.origin.properties.preventSmoothing=!0,a.add(s.origin.properties.id))),!1;let u=ng(r,e,n,t);if(!1){let m=u[u.length-1];window.__DEBUG_PATH.finalSteps.push({nodeId:m.destination.properties.id,coordinate:m.destination.geometry.coordinates,floorId:m.destination.properties.map})}for(let m of r)a.has(m.origin.properties.id)&&delete m.origin.properties.preventSmoothing,a.has(m.destination.properties.id)&&delete m.destination.properties.preventSmoothing;return u}};var Rh="https://tiles-cdn.mappedin.com/styles/mappedin/style.json",cS="https://auth.mappedin.com/oauth2/token";async function kF(i,r){var n,o,a,l,s,u,h,m,d;let e=(n=r==null?void 0:r.useWorkers)!=null?n:!0,t=De(X({},r),{watermark:r==null?void 0:r.watermark,attribution:r==null?void 0:r.attribution,antialias:r==null?void 0:r.antialias,occlusionEnabled:r==null?void 0:r.occlusionEnabled,transformImageRequest:r==null?void 0:r.transformImageRequest,naturalBearing:(o=r==null?void 0:r.naturalBearing)!=null?o:0,imagePlacementOptions:r==null?void 0:r.imagePlacementOptions,onWebGLContextCreationError:r==null?void 0:r.onWebGLContextCreationError,onWebGLContextLost:r==null?void 0:r.onWebGLContextLost,onWebGLContextRestored:r==null?void 0:r.onWebGLContextRestored,onWebGLRendererError:r==null?void 0:r.onWebGLRendererError,useStandaloneCamera:(a=r==null?void 0:r.useStandaloneCamera)!=null?a:!1,useCollisionWorker:(l=r==null?void 0:r.useCollisionWorker)!=null?l:!0,useWorkers:e});if(e===!0&&((s=r==null?void 0:r.outdoorView)!=null&&s.enabled)){let f=r.outdoorView.headers;f==null&&(f=await Gd(cS));let b=r.center||[0,0];Ic&&Dd(Ic);let x=null,y=null;try{x=new Td({container:i,style:r.outdoorView.style||Rh,center:b,attributionControl:!1,zoom:(u=r.zoomLevel)!=null?u:uh,pitch:(h=r.pitch)!=null?h:lh,bearing:(m=r.bearing)!=null?m:ch,transformRequest:Ld(f),trackResize:!1,pixelRatio:r.outdoorView.lowDpi?1:Ci(),canvasContextAttributes:{antialias:typeof r.antialias=="boolean"?r.antialias:!0,powerPreference:"high-performance"},interactive:!1,validateStyle:!1,centerClampedToGround:!1,boxZoom:!1,doubleClickZoom:!1,scrollZoom:!1,dragPan:!1,dragRotate:!1,keyboard:!1,touchZoomRotate:!1}),await Ad(x,{timeout:1e4,styleUrl:((d=r.outdoorView)==null?void 0:d.style)||Rh})}catch(S){if(y=S,$.warn("[MappedinJS] Outdoor view initialization failed: ".concat(y.message,". Falling back to indoor-only rendering.")),x){try{x.remove()}catch(M){}x=null}}if(!x||y){let S=new ci(i,t);return S.publish("outdoor-style-error",{error:y}),S}let g=null;try{let S=x.painter.context.gl;g=new ci(i,X({center:b,zoomLevel:x.getZoom(),pitch:x.getPitch(),bearing:x.getBearing(),gl:S,map:x,mode:"outdoors-interleaved"},t));let M={center:x.getCenter().toArray(),zoom:x.getZoom(),bearing:x.getBearing(),pitch:x.getPitch(),elevation:x.getCenterElevation()};ts(x,g.camera.minZoomLevel,g.camera.maxZoomLevel),x.setMaxPitch(g.camera.maxPitch),x.setMinPitch(g.camera.minPitch),g.on("camera-change",k=>{M.center=k.center,M.zoom=k.zoomLevel,M.bearing=k.bearing,M.pitch=k.pitch,M.elevation=k.elevation,x.jumpTo(M)});let E=Ya.fromLngLat(b,0),w=qa(E,g.viewCamera,()=>{g==null||g.renderSync()}),_=async()=>{x&&(x.addLayer(w),g==null||g.renderSync())};g.onMapLibreEvent("style.load",_),_();let L=!1,T=!1,C=()=>{x&&(L||(g==null||g.publish("outdoor-view-loaded"),L=!0),T||(T=!0,g==null||g.publish("outdoor-style-loaded")))};g.onMapLibreEvent("idle",C);let R=k=>{k&&(k.sourceDataType==="metadata"||k.sourceDataType==="visibility"||k.dataType==="style"||k.type==="terrain")&&(g==null||g.getSystems().htmlControlsSystem.updateData(x))},O=k=>{x&&k&&k.dataType==="style"&&k.type==="styledata"&&(T=!1),R(k)};g.onMapLibreEvent("styledata",O),g.onMapLibreEvent("sourcedata",R),g.onMapLibreEvent("terrain",R);let B=k=>{var J;if(((J=k.error)==null?void 0:J.url)===Rh){$.error('Failed to load outdoor view style, possibly due to invalid token "'.concat(f["x-mappedin-tiles-key"],'"'));return}$.warn(k)};return g.onMapLibreEvent("error",B),g}catch(S){if(g)try{g.destroy()}catch(E){}if(x)try{x.remove()}catch(E){}$.warn("Failed to initialize outdoor view, falling back to indoor-only rendering:",S);let M=new ci(i,t);return M.publish("outdoor-style-error",{error:S}),M}}else return new ci(i,t)}export{u1 as a,Is as b,h1 as c,pt as d,uu as e,Os as f,nl as g,ei as h,Bi as i,UT as j,ba as k,G0 as l,Zg as m,lS as n,rc as o,hl as p,kr as q,xc as r,Yc as s,Bs as t,xu as u,C0 as v,hh as w,kF as x};
|