leaflet-city-mapper 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -5
- package/dist/leaflet-city-mapper-src.js +7059 -6566
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js +2766 -0
- package/dist/leaflet-city-mapper-worker-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker.js +1 -1
- package/dist/leaflet-city-mapper-worker.js.map +4 -4
- package/dist/leaflet-city-mapper.js +5 -3
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/leaflet.js +1 -1
- package/package.json +1 -1
- package/src/camera/setBearing.js +5 -0
- package/src/camera/setPitch.js +5 -0
- package/src/cog/initCog.js +2 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +37 -4
- package/src/core/markerSetPos.js +1 -1
- package/src/core/popupGetEvents.js +1 -1
- package/src/core/popupUpdatePosition.js +8 -8
- package/src/core/tooltipGetEvents.js +1 -1
- package/src/core/tooltipSetPosition.js +2 -2
- package/src/geometry/appendNativeTriangle.js +2 -2
- package/src/geometry/createModelGeometry.js +2 -9
- package/src/geometry/dashedSegment.js +10 -5
- package/src/geometry/disk.js +1 -1
- package/src/geometry/fillNativePolygon.js +20 -0
- package/src/geometry/lineJoin.js +2 -2
- package/src/geometry/markerQuadCorners.js +6 -0
- package/src/geometry/nativeGeometry.js +1 -1
- package/src/geometry/polygon.js +4 -10
- package/src/geometry/segment.js +4 -3
- package/src/globals/colorTexture.js +6 -0
- package/src/globals/depthTexture.js +1 -0
- package/src/globals/drawMeshEntry.js +1 -1
- package/src/globals/meshPipeline.js +1 -0
- package/src/globals/mvtTextDecoder.js +1 -0
- package/src/globals/nativeScalableStyleKeys.js +1 -0
- package/src/globals/scenePass.js +1 -0
- package/src/globals/vectorStyleNamedColors.js +8 -0
- package/src/globals/vectorTileEvents.js +1 -0
- package/src/globals/workerCogSource.js +1 -0
- package/src/gpu/mountRenderer.js +4 -11
- package/src/gpu/releaseRenderer.js +1 -0
- package/src/index.js +6 -12
- package/src/materials/createProgramUniforms.js +1 -0
- package/src/models/loadModel.js +6 -10
- package/src/models/loadModelResources.js +2 -8
- package/src/models/modelNode.js +3 -7
- package/src/models/prepareModel.js +19 -0
- package/src/models/prepareModelGeometry.js +25 -0
- package/src/models/prepareModelPrimitive.js +17 -0
- package/src/mvt/addMvtCrossings.js +17 -0
- package/src/mvt/appendMvtBandTriangles.js +31 -0
- package/src/mvt/appendMvtCoordinates.js +11 -0
- package/src/mvt/appendMvtPolygonTriangles.js +19 -0
- package/src/mvt/beginMvtPath.js +9 -0
- package/src/mvt/closeMvtPath.js +7 -0
- package/src/mvt/collectMvtEdges.js +19 -0
- package/src/mvt/createMvtReader.js +7 -0
- package/src/mvt/decodeVectorTile.js +32 -0
- package/src/mvt/expectMvtWire.js +3 -0
- package/src/mvt/finishMvtPath.js +5 -0
- package/src/mvt/finiteMvtCoordinate.js +7 -0
- package/src/mvt/groupMvtPolygons.js +25 -0
- package/src/mvt/isMvtFallbackError.js +6 -0
- package/src/mvt/mergeMvtActiveEdges.js +9 -0
- package/src/mvt/mvtEdgeX.js +4 -0
- package/src/mvt/mvtPathsVertices.js +8 -0
- package/src/mvt/mvtPolygonPaths.js +12 -0
- package/src/mvt/numericMvtValue.js +4 -0
- package/src/mvt/readMvtFeature.js +34 -0
- package/src/mvt/readMvtField.js +8 -0
- package/src/mvt/readMvtGeometry.js +29 -0
- package/src/mvt/readMvtInteger.js +12 -0
- package/src/mvt/readMvtKnownValue.js +21 -0
- package/src/mvt/readMvtLayer.js +31 -0
- package/src/mvt/readMvtMessage.js +10 -0
- package/src/mvt/readMvtNumber.js +9 -0
- package/src/mvt/readMvtNumbers.js +11 -0
- package/src/mvt/readMvtString.js +6 -0
- package/src/mvt/readMvtValue.js +19 -0
- package/src/mvt/skipMvtField.js +14 -0
- package/src/mvt/sortMvtActiveEdges.js +15 -0
- package/src/mvt/sortedMvtLevels.js +22 -0
- package/src/mvt/takeMvtBytes.js +8 -0
- package/src/mvt/tessellateVectorRings.js +19 -0
- package/src/mvt/triangulateVectorRings.js +19 -0
- package/src/native/beforeNativeRender.js +6 -0
- package/src/native/canScaleNativeStyle.js +17 -0
- package/src/native/createNativeMesh.js +31 -0
- package/src/native/disposeNativeLayer.js +1 -1
- package/src/native/getGridTerrainTile.js +34 -0
- package/src/native/gridTerrainElevation.js +30 -0
- package/src/native/loadGridTerrain.js +26 -0
- package/src/native/nativeLayer.js +2 -2
- package/src/native/nativeLayerMethod.js +5 -14
- package/src/native/nativeProgram.js +20 -0
- package/src/native/nativeVectorGeometry.js +23 -0
- package/src/native/orderNativeGridLayer.js +14 -0
- package/src/native/putNativeMesh.js +15 -21
- package/src/native/refreshNativeEvent.js +13 -2
- package/src/native/refreshNativeLayer.js +1 -0
- package/src/native/syncGridLayer.js +48 -3
- package/src/native/syncNativeStrokeAnchors.js +12 -0
- package/src/native/syncNativeStrokeZoom.js +29 -0
- package/src/native/syncVectorLayer.js +15 -13
- package/src/native/terrainGridMesh.js +34 -0
- package/src/native/updateNativeStrokeRadius.js +9 -0
- package/src/projections/displayContainerPoint.js +23 -3
- package/src/projections/groundBounds.js +2 -2
- package/src/projections/localPixel.js +7 -2
- package/src/projections/localPixelForGeometry.js +4 -2
- package/src/projections/projectCameraPoint.js +6 -5
- package/src/rendering/collectVisibleMesh.js +5 -2
- package/src/rendering/drawSceneMeshes.js +3 -1
- package/src/rendering/nativeStrokeExpansion.js +4 -0
- package/src/rendering/prepareMeshUniforms.js +2 -0
- package/src/rendering/resizeRenderer.js +9 -0
- package/src/scene/initializerFor.js +3 -5
- package/src/scene/layerInitialize.js +14 -12
- package/src/scene/resolveNextInitialization.js +1 -1
- package/src/shaders/materialShaders.js +1 -0
- package/src/shaders/materialVertexShader.js +7 -2
- package/src/shaders/nativeStrokeShader.js +6 -0
- package/src/sources/attachAreaMesh.js +5 -6
- package/src/sources/buildArea.js +4 -5
- package/src/sources/buildAreaFeature.js +3 -19
- package/src/sources/initVectorTiles.js +15 -0
- package/src/sources/isVectorTileSource.js +4 -0
- package/src/sources/readyVectorTiles.js +10 -0
- package/src/sources/sourceAreaContext.js +1 -6
- package/src/sunlight/createSun.js +0 -1
- package/src/terrain/initTerrain.js +7 -1
- package/src/terrain/loadTerrain.js +4 -1
- package/src/terrain/mapElevationOf.js +5 -1
- package/src/terrain/onTerrainAdd.js +11 -1
- package/src/terrain/onTerrainRemove.js +10 -1
- package/src/utils/yieldTask.js +5 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +22 -0
- package/src/vector-style/arrayContainsRange.js +8 -0
- package/src/vector-style/evaluateBoolean.js +18 -0
- package/src/vector-style/evaluateCoalesceOrCase.js +21 -0
- package/src/vector-style/evaluateComparison.js +16 -0
- package/src/vector-style/evaluateIExpression.js +8 -0
- package/src/vector-style/evaluateInput.js +6 -0
- package/src/vector-style/evaluateInterpolate.js +27 -0
- package/src/vector-style/evaluateMatch.js +12 -0
- package/src/vector-style/evaluateMath.js +14 -0
- package/src/vector-style/evaluateMembership.js +18 -0
- package/src/vector-style/evaluateNegation.js +13 -0
- package/src/vector-style/evaluatePrimitive.js +9 -0
- package/src/vector-style/evaluateStep.js +11 -0
- package/src/vector-style/evaluateStyle.js +33 -0
- package/src/vector-style/evaluateToExpression.js +14 -0
- package/src/vector-style/fillVectorPaint.js +17 -0
- package/src/vector-style/lineVectorPaint.js +21 -0
- package/src/vector-style/parseFunctionalColor.js +14 -0
- package/src/vector-style/parseHexColor.js +13 -0
- package/src/vector-style/parseVectorStyle.js +13 -0
- package/src/vector-style/readPaintValue.js +6 -0
- package/src/vector-style/removeTrailingCommas.js +12 -0
- package/src/vector-style/scaleDashArray.js +13 -0
- package/src/vector-style/skipStyleComment.js +9 -0
- package/src/vector-style/stripStyleComments.js +21 -0
- package/src/vector-style/styleColor.js +11 -0
- package/src/vector-style/validateVectorLayers.js +10 -0
- package/src/vector-style/vectorPaint.js +8 -0
- package/src/vector-style/visibleStyle.js +7 -0
- package/src/vector-tiles/appendVectorBatch.js +22 -0
- package/src/vector-tiles/attachVectorTileBatch.js +17 -0
- package/src/vector-tiles/attachVectorTileBatches.js +15 -0
- package/src/vector-tiles/compareVectorLabelPriority.js +3 -0
- package/src/vector-tiles/compareVectorTileDistance.js +3 -0
- package/src/vector-tiles/configureVectorTileLayer.js +28 -0
- package/src/vector-tiles/forwardVectorTileError.js +5 -0
- package/src/vector-tiles/loadVectorSprite.js +5 -0
- package/src/vector-tiles/loadVectorTile.js +36 -0
- package/src/vector-tiles/onVectorTileAdd.js +39 -0
- package/src/vector-tiles/onVectorTileMessage.js +10 -0
- package/src/vector-tiles/onVectorTileRemove.js +20 -0
- package/src/vector-tiles/onVectorTileWorkerError.js +11 -0
- package/src/vector-tiles/paintVectorTileBatch.js +12 -0
- package/src/vector-tiles/prepareVectorLabel.js +43 -0
- package/src/vector-tiles/prepareVectorStyleLayer.js +30 -0
- package/src/vector-tiles/prepareVectorTile.js +16 -0
- package/src/vector-tiles/projectVectorPaths.js +15 -0
- package/src/vector-tiles/projectVectorPoint.js +6 -0
- package/src/vector-tiles/projectVectorTriangles.js +18 -0
- package/src/vector-tiles/pruneVectorTiles.js +11 -0
- package/src/vector-tiles/pumpVectorTiles.js +18 -0
- package/src/vector-tiles/readTileJSON.js +17 -0
- package/src/vector-tiles/readVectorStyle.js +17 -0
- package/src/vector-tiles/refreshVectorTiles.js +5 -0
- package/src/vector-tiles/reserveVectorLabelCells.js +6 -0
- package/src/vector-tiles/retireVectorTileGroup.js +13 -0
- package/src/vector-tiles/revokeVectorWorkerUrl.js +9 -0
- package/src/vector-tiles/rotateVectorLabel.js +12 -0
- package/src/vector-tiles/rotateVectorLabels.js +6 -0
- package/src/vector-tiles/simplifyVectorPath.js +21 -0
- package/src/vector-tiles/updateVectorLabelMarker.js +27 -0
- package/src/vector-tiles/updateVectorTileLabels.js +28 -0
- package/src/vector-tiles/updateVectorTilePaint.js +20 -0
- package/src/vector-tiles/updateVectorTiles.js +29 -0
- package/src/vector-tiles/validateVectorTileZooms.js +6 -0
- package/src/vector-tiles/vectorFeaturePaint.js +15 -0
- package/src/vector-tiles/vectorFeaturePaths.js +16 -0
- package/src/vector-tiles/vectorFeatureZoom.js +8 -0
- package/src/vector-tiles/vectorLabelAnchors.js +24 -0
- package/src/vector-tiles/vectorLabelCandidates.js +11 -0
- package/src/vector-tiles/vectorLabelCells.js +26 -0
- package/src/vector-tiles/vectorLabelIcon.js +30 -0
- package/src/vector-tiles/vectorLabelProperty.js +3 -0
- package/src/vector-tiles/vectorSpriteIcon.js +11 -0
- package/src/vector-tiles/vectorStraightRun.js +14 -0
- package/src/vector-tiles/vectorStyleDependencies.js +15 -0
- package/src/vector-tiles/vectorStyleValue.js +5 -0
- package/src/vector-tiles/vectorStyleZoom.js +6 -0
- package/src/vector-tiles/vectorTileAwaited.js +9 -0
- package/src/vector-tiles/vectorTileOverlaps.js +4 -0
- package/src/vector-tiles/vectorTilePaint.js +10 -0
- package/src/vector-tiles/vectorTileSettings.js +17 -0
- package/src/vector-tiles/vectorTilesIdle.js +3 -0
- package/src/vector-tiles/vectorTolerance.js +4 -0
- package/src/vector-tiles/wrapVectorLabel.js +11 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +1 -0
- package/src/weakmaps/streamTerrainByLayer.js +1 -0
- package/src/weakmaps/streamTerrainByMap.js +1 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +1 -0
- package/src/weakmaps/vectorWorkerByLayer.js +1 -0
- package/src/weakmaps/workerMapByLayer.js +1 -0
- package/src/workers/buildAreaInWorker.js +3 -27
- package/src/workers/cogWorker.js +21 -0
- package/src/workers/createGeometryWorker.js +1 -0
- package/src/workers/geometryWorker.js +15 -0
- package/src/workers/getCogInWorker.js +7 -0
- package/src/workers/modelWorker.js +10 -0
- package/src/workers/openCogInWorker.js +14 -0
- package/src/workers/runSourceWorker.js +32 -0
- package/src/workers/settleGeometryWorker.js +1 -1
- package/src/workers/vectorTileWorker.js +10 -0
- package/src/geometry/buildExtrudedPolygon.js +0 -10
- package/src/sources/buildAreaPoint.js +0 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var j=[];function U(t){let n=1/0,r;for(r of t)n=Math.min(n,r.x);return n}function V(t,n,r,o){let e=Math.min(r+o,t.length),i=Math.min(r+o*2,t.length),s=r,a=e,f;for(f=r;f<i;f++)s<e&&(a>=i||t[s].x<=t[a].x)?n[f]=t[s++]:n[f]=t[a++]}function W(t){if(t.length<2)return t;let n=new Array(t.length),r=[],o,e,i,s,a;for(o of t)r.push({ring:o,x:U(o)});let f=r,h=n;for(e=1;e<r.length;e*=2){for(i=0;i<r.length;i+=e*2)V(f,h,i,e);s=f,f=h,h=s}for(a=0;a<t.length;a++)t[a]=f[a].ring;return t}function x(t,n,r){return(n.x-t.x)*(r.y-t.y)-(n.y-t.y)*(r.x-t.x)}function g(t,n){return t.x===n.x&&t.y===n.y}function Z(t){let n=!0,r,o,e,i;for(;n&&t.length>3;)for(n=!1,r=0;r<t.length;r++)if(o=t[(r+t.length-1)%t.length],e=t[r],i=t[(r+1)%t.length],g(o,e)||Math.abs(x(o,e,i))<1e-10){t.splice(r,1),n=!0;break}if(t.length<3)throw new Error("Degenerate polygon ring");return t}function G(t){let n=0,r,o,e;for(r=0;r<t.length;r++)o=t[r],e=t[(r+1)%t.length],n+=o.x*e.y-e.x*o.y;return n<0}function Y(t,n){let r=[],o=0,e,i,s;for(e=0;e<t.length;e++)i=t[e],s=Z(n.slice(o,o+=i.length)),G(s)!==!!e&&s.reverse(),r.push(s);return r}function C(t,n){let r=!1,o,e,i,s;for(o=0,e=n.length-1;o<n.length;e=o++)i=n[o],s=n[e],i.y>t.y!=s.y>t.y&&t.x<(s.x-i.x)*(t.y-i.y)/(s.y-i.y)+i.x&&(r=!r);return r}function _(t,n){let r;for(r=1;r<n.length;r++)if(C(t,n[r]))return!0;return!1}function F(t,n,r){return Math.min(t.x,n.x)<=r.x&&r.x<=Math.max(t.x,n.x)&&Math.min(t.y,n.y)<=r.y&&r.y<=Math.max(t.y,n.y)}function J(t,n,r,o){if(g(t,r)||g(t,o)||g(n,r)||g(n,o))return!1;let e=x(t,n,r),i=x(t,n,o),s=x(r,o,t),a=x(r,o,n);return e*i<0&&s*a<0||e===0&&F(t,n,r)||i===0&&F(t,n,o)||s===0&&F(r,o,t)||a===0&&F(r,o,n)}function H(t,n,r){let o;for(o=0;o<r.length;o++)if(J(t,n,r[o],r[(o+1)%r.length]))return!0;return!1}function K(t,n,r,o){if(H(t,n,r))return!0;let e;for(e=1;e<o.length;e++)if(H(t,n,o[e]))return!0;return!1}function Q(t,n,r,o){let e=-1,i=-1,s=1/0,a,f,h,l,m;for(a=0;a<n.length;a++)for(f=0;f<t.length;f++)h=n[a],l=t[f],m=(h.x-l.x)**2+(h.y-l.y)**2,!(m>=s)&&(o.x=(h.x+l.x)/2,o.y=(h.y+l.y)/2,!(!C(o,r[0])||_(o,r))&&(K(h,l,t,r)||(e=a,i=f,s=m)));if(e<0)throw new Error("Unable to connect polygon hole");return[...t.slice(0,i+1),...n.slice(e),...n.slice(0,e+1),t[i],...t.slice(i+1)]}function T(t,n,r,o){let e;for(e of t)if(!g(e,n)&&!g(e,r)&&!g(e,o)&&x(n,r,e)>=0&&x(r,o,e)>=0&&x(o,n,e)>=0)return!0;return!1}function $(t){let n=[],r,o,e,i,s,a;for(;t.length>3;){for(r=!1,o=0;o<t.length;o++)if(e=t[(o+t.length-1)%t.length],i=t[o],s=t[(o+1)%t.length],!(x(e,i,s)<=1e-10)&&!T(t,e,i,s)){n.push([e.index,i.index,s.index]),t.splice(o,1),r=!0;break}if(!r)throw new Error("Unable to triangulate polygon: invalid or self-intersecting rings")}if(x(...t)>1e-10){let f=[];for(a of t)f.push(a.index);n.push(f)}return n}function B(t){let n=0,r,o,e;for(r=0;r<t.length;r++)o=t[r],e=t[(r+1)%t.length],n+=o.x*e.y-e.x*o.y;return Math.abs(n)/2}function tt(t,n,r){let o=0,e=0,i,s;for(i=1;i<t.length;i++)o+=B(t[i]);let a=B(t[0])-o;for(s of r)e+=x(n[s[0]],n[s[1]],n[s[2]])/2;if(a<=0||Math.abs(e-a)>Math.max(1e-7,a*1e-8))throw new Error("Polygon triangulation area mismatch")}function rt(t,n=j){let r=[t,...n],o=r.flat(),e,i,s;for(e of o)if(!Number.isFinite(e.x)||!Number.isFinite(e.y))throw new Error("Invalid polygon coordinates");let a=[];for(i=0;i<o.length;i++)e=o[i],a.push({x:e.x-t[0].x,y:e.y-t[0].y,index:i});let f=Y(r,a),h=f[0].slice(),l=W(f.slice(1)),m=l.length?{x:0,y:0}:null;for(s of l)h=Q(h,s,f,m);let u=$(h);return tt(f,a,u),u}function N(t){return t.ground||0}function d(t,n,r,o,e,i,s,a,f,h,l){let{backend:m,positions:u,normals:M,colors:p,uvs:c}=t,y=o.x-n.x,b=e-r,R=n.y-o.y,q=i.x-n.x,L=s-r,X=n.y-i.y;if((b*X-R*L)*a+(R*q-y*X)*f+(y*L-b*q)*h<0){let pt=o,Mt=e;o=i,e=s,i=pt,s=Mt}u.push(n.x,r+N(n),-n.y,o.x,e+N(o),-o.y,i.x,s+N(i),-i.y),M.push(a,f,h,a,f,h,a,f,h),p.push(l.r,l.g,l.b,l.r,l.g,l.b,l.r,l.g,l.b),m.options.nightLight&&c.push(...n.uv,...o.uv,...i.uv)}function nt(t,n,r,o,e){let i=[],s,a,f,h,l,m,u,M,p,c,y;for(s of n)for(a of s)i.push(a);for([f,h,l]of rt(n[0],n.slice(1)))d(t,i[f],r,i[h],r,i[l],r,0,1,0,e),o>0&&d(t,i[f],o,i[h],o,i[l],o,0,-1,0,e);for(m=0;m<n.length;m++)for(s=n[m],u=G(s)===(m===0)?-1:1,M=0;M<s.length;M++)f=s[M],h=s[(M+1)%s.length],p=Math.hypot(h.x-f.x,h.y-f.y),p&&(c=u*(h.y-f.y)/p,y=u*(h.x-f.x)/p,d(t,f,o,h,o,h,r,c,0,y,e),d(t,f,o,h,r,f,r,c,0,y,e))}var w=[];function ot(...t){d(w[w.length-1],...t)}function O(t,n,r,o){w.push(t);try{n(r,o,ot)}finally{w.pop()}}function k(t){return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}function S(t,n,r,o){let e=(t+n*12)%12;return r-o*Math.max(-1,Math.min(e-3,9-e,1))}function I(t){if(t&&typeof t=="object"&&"h"in t){let i=t.s*Math.min(t.l,1-t.l);return{r:k(S(0,t.h,t.l,i)),g:k(S(8,t.h,t.l,i)),b:k(S(4,t.h,t.l,i))}}if(t&&typeof t=="object"&&"r"in t)return t;if(typeof t=="number")return{r:(t>>16&255)/255,g:(t>>8&255)/255,b:(t&255)/255};if(typeof t!="string"||!CSS.supports("color",t))throw new Error("Invalid 3D color");let n=document.createElement("canvas").getContext("2d");n.fillStyle=t,n.fillRect(0,0,1,1);let[r,o,e]=n.getImageData(0,0,1,1).data;return{r:r/255,g:o/255,b:e/255}}var P=[{x:Math.cos(0*Math.PI/3),y:Math.sin(0*Math.PI/3),nx:Math.cos(.5*Math.PI/3),nz:-Math.sin(.5*Math.PI/3)},{x:Math.cos(1*Math.PI/3),y:Math.sin(1*Math.PI/3),nx:Math.cos(1.5*Math.PI/3),nz:-Math.sin(1.5*Math.PI/3)},{x:Math.cos(2*Math.PI/3),y:Math.sin(2*Math.PI/3),nx:Math.cos(2.5*Math.PI/3),nz:-Math.sin(2.5*Math.PI/3)},{x:Math.cos(3*Math.PI/3),y:Math.sin(3*Math.PI/3),nx:Math.cos(3.5*Math.PI/3),nz:-Math.sin(3.5*Math.PI/3)},{x:Math.cos(4*Math.PI/3),y:Math.sin(4*Math.PI/3),nx:Math.cos(4.5*Math.PI/3),nz:-Math.sin(4.5*Math.PI/3)},{x:Math.cos(5*Math.PI/3),y:Math.sin(5*Math.PI/3),nx:Math.cos(5.5*Math.PI/3),nz:-Math.sin(5.5*Math.PI/3)}];function et(t,n){let r=new Array(P.length),o;for(o=0;o<r.length;o++)r[o]={x:t.x+P[o].x*n,y:t.y+P[o].y*n,ground:t.ground,uv:[3,3]};return r}function it(t,n,r){let o=I(5264986),e=n.poleRadius;if(!Number.isFinite(e)||e<=0)throw new Error("Invalid lamp pole radius");let i={...t,uv:[3,3]},s,a,f,h,l,m,u,M,p,c;for(c=0;c<2;c++)for(s=c?e*2.5:e,a=c?n.top-.25:0,f=c?n.top+.15:n.top,h=et(t,s),l=0;l<6;l++)m=h[l],u=h[(l+1)%6],M=P[l].nx,p=P[l].nz,r(m,a,u,a,u,f,M,0,p,o),r(m,a,u,f,m,f,M,0,p,o),r(i,f,m,f,u,f,0,1,0,o),r(i,a,u,a,m,a,0,-1,0,o)}function st(t,n,r,o,e,i,s,a,f,h){typeof a!="number"?(t(r,s,o,s,e,s,...a,n),t(r,s,e,s,i,s,...a,n)):(t(r,s,o,s,e,s,a,f,h,n),t(r,s,e,s,i,s,a,f,h,n))}function z(t,n,r,o){return{x:t.x+(o===2?0:n*.65),y:t.y+(o===1?0:o===2?n*.65:r*.65),ground:t.ground+(o===0?0:r*.65),uv:[n,r]}}function at(t,n,r){if(!Number.isFinite(n.lightRadius)||n.lightRadius<=0)throw new Error("Invalid light radius");let o=I(n.color),e;for(e=0;e<3;e++)st(r,o,z(t,-1,-1,e),z(t,1,-1,e),z(t,1,1,e),z(t,-1,1,e),n.top,e===2?1:0,e===0?1:0,e===1?1:0)}var D=[[0,0],[.35,.8],[.6,1],[.85,.7],[1,0]];var E=[{x:Math.cos(0*Math.PI/4),y:Math.sin(0*Math.PI/4),nx:Math.cos(.5*Math.PI/4),nz:-Math.sin(.5*Math.PI/4)},{x:Math.cos(1*Math.PI/4),y:Math.sin(1*Math.PI/4),nx:Math.cos(1.5*Math.PI/4),nz:-Math.sin(1.5*Math.PI/4)},{x:Math.cos(2*Math.PI/4),y:Math.sin(2*Math.PI/4),nx:Math.cos(2.5*Math.PI/4),nz:-Math.sin(2.5*Math.PI/4)},{x:Math.cos(3*Math.PI/4),y:Math.sin(3*Math.PI/4),nx:Math.cos(3.5*Math.PI/4),nz:-Math.sin(3.5*Math.PI/4)},{x:Math.cos(4*Math.PI/4),y:Math.sin(4*Math.PI/4),nx:Math.cos(4.5*Math.PI/4),nz:-Math.sin(4.5*Math.PI/4)},{x:Math.cos(5*Math.PI/4),y:Math.sin(5*Math.PI/4),nx:Math.cos(5.5*Math.PI/4),nz:-Math.sin(5.5*Math.PI/4)},{x:Math.cos(6*Math.PI/4),y:Math.sin(6*Math.PI/4),nx:Math.cos(6.5*Math.PI/4),nz:-Math.sin(6.5*Math.PI/4)},{x:Math.cos(7*Math.PI/4),y:Math.sin(7*Math.PI/4),nx:Math.cos(7.5*Math.PI/4),nz:-Math.sin(7.5*Math.PI/4)}];function A(t,n){let r=new Array(E.length),o;for(o=0;o<r.length;o++)r[o]={x:t.x+E[o].x*n,y:t.y+E[o].y*n,ground:t.ground};return r}function v(t,n,r,o,e,i,s){let a=A(t,r),f=A(t,e),h,l,m,u,M,p,c,y,b;for(h=0;h<8;h++)l=(h+1)%8,m=(r-e)/(i-o),u=Math.hypot(1,m),{nx:M,nz:p}=E[h],c=m/u,y=M/u,b=p/u,r&&n(a[h],o,a[l],o,f[l],i,y,c,b,s),e&&n(a[h],o,f[l],i,f[h],i,y,c,b,s)}function ft(t,n,r,o,e,i){if(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||t<=0||n<t||r<=o||r>=e||i!=="round"&&i!=="cone")throw new Error("Invalid tree dimensions or crown shape")}function ht(t,n,r){let{top:o,bottom:e=0,trunkRadius:i,crownRadius:s,crownBottom:a,crownShape:f="round"}=n;ft(i,s,a,e,o,f);let h=I(n.trunkColor??7491898),l=I(n.color??5210683);v(t,r,i,e,i,a+(o-a)*.25,h);let m,u,M,p,c;if(f==="cone"){let y=A(t,s);for(m=0;m<8;m++)r(t,a,y[m],a,y[(m+1)%8],a,0,-1,0,l);v(t,r,s,a,0,o,l)}else for(m=1;m<D.length;m++)[u,M]=D[m-1],[p,c]=D[m],v(t,r,M*s,a+u*(o-a),c*s,a+p*(o-a),l)}function mt(t,n,r,o,e){let{top:i}=r;if(t.backend.options.nightLight){if(!Number.isFinite(r.lightFlux)||r.lightFlux<=0)throw new Error("Invalid light flux");r.poleRadius>0&&!t.supports.has(e)&&(O(t,it,n,r),t.supports.add(e)),O(t,at,n,r),t.lights.push({position:[n.x,n.ground+i,-n.y],radius:Math.hypot(i,r.lightRadius),color:[o.r,o.g,o.b],flux:r.lightFlux})}else O(t,ht,n,r)}function lt(t){let{positions:n,normals:r,colors:o,featureFaces:e}=t;if(t.backend.options.nightLight||e.length<2)return t;let i=e[0].vertexEnd,s=i*3;if(!i||n.length!==s*e.length)return t;let a=Math.trunc(n[0]),f=Math.trunc(n[1]),h=Math.trunc(n[2]),l=new Float32Array(s),m,u,M,p;for(m=0;m<s;m++)l[m]=n[m]-(m%3===0?a:m%3===1?f:h);let c=new Float32Array(e.length*4);for(u=0;u<e.length;u++){if(M=e[u],p=u*s,M.vertexStart!==u*i||M.vertexEnd!==(u+1)*i)return t;for(c[u*4]=a+n[p]-n[0],c[u*4+1]=f+n[p+1]-n[1],c[u*4+2]=h+n[p+2]-n[2],c[u*4+3]=u*i,m=0;m<s;m++)if(Math.fround(l[m]+c[u*4+m%3])!==Math.fround(n[p+m])||Math.fround(r[m])!==Math.fround(r[p+m])||Math.fround(o[m])!==Math.fround(o[p+m]))return t}return{positions:l,normals:r.slice(0,s),colors:o.slice(0,s),instanceOffsets:c}}function ut(t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],o=t.attributes.position.data,e,i,s,a;for(e=0;e<o.length;e+=3)i=o[e],s=o[e+1],a=o[e+2],n[0]=Math.min(n[0],i),r[0]=Math.max(r[0],i),n[1]=Math.min(n[1],s),r[1]=Math.max(r[1],s),n[2]=Math.min(n[2],a),r[2]=Math.max(r[2],a);let f=t.attributes.instanceOffset;if(f){let u,M,p,c;for(u=0;u<3;u++){for(p=1/0,c=-1/0,M=u;M<f.data.length;M+=f.size)p=Math.min(p,f.data[M]),c=Math.max(c,f.data[M]);n[u]=Math.fround(n[u]+p),r[u]=Math.fround(r[u]+c)}}let h=[(n[0]+r[0])/2,(n[1]+r[1])/2,(n[2]+r[2])/2],l=0;for(e=0;!f&&e<o.length;e+=3)i=o[e]-h[0],s=o[e+1]-h[1],a=o[e+2]-h[2],l=Math.max(l,i*i+s*s+a*a);let m=f?Math.hypot(r[0]-n[0],r[1]-n[1],r[2]-n[2])/2:Math.sqrt(l);if(!f&&(l===1/0||l<Number.MIN_VALUE/Number.EPSILON))for(m=0,e=0;e<o.length;e+=3)m=Math.max(m,Math.hypot(o[e]-h[0],o[e+1]-h[1],o[e+2]-h[2]));t.bounds={min:n,max:r,center:h,radius:m}}function ct({jobs:t,nightLight:n}){let r={backend:{options:{nightLight:n}},positions:[],normals:[],colors:[],uvs:[],featureFaces:[],lights:[],supports:new Set},o,e,i,s;for(o of t){i=r.positions.length/3,o.point&&mt(r,o.point,o.style,o.baseColor,o.support);for(e of o.polygons)nt(r,e,o.style.top,o.style.bottom,o.baseColor);s=r.positions.length/3,r.featureFaces.push({vertexStart:i,vertexEnd:s,faceStart:i/3,faceEnd:s/3})}let a=lt(r),f={positions:new Float32Array(a.positions),normals:new Float32Array(a.normals),colors:new Float32Array(a.colors),uvs:new Float32Array(r.uvs),instanceOffsets:a.instanceOffsets,ranges:r.featureFaces,lights:r.lights};if(f.positions.length){let h={attributes:{position:{data:f.positions},instanceOffset:f.instanceOffsets?{data:f.instanceOffsets,size:4}:void 0}};ut(h),f.bounds=h.bounds}return f}function xt(t){try{let n=ct(t.data),r=[n.positions.buffer,n.normals.buffer,n.colors.buffer,n.uvs.buffer];n.instanceOffsets&&r.push(n.instanceOffsets.buffer),self.postMessage(n,r)}catch(n){self.postMessage({error:{name:n.name,message:n.message}})}}self.addEventListener("message",xt);})();
|
|
1
|
+
(()=>{var U=[];function At(t){let e=1/0,r;for(r of t)e=Math.min(e,r.x);return e}function Vt(t,e,r,o){let n=Math.min(r+o,t.length),i=Math.min(r+o*2,t.length),a=r,s=n,f;for(f=r;f<i;f++)a<n&&(s>=i||t[a].x<=t[s].x)?e[f]=t[a++]:e[f]=t[s++]}function Ot(t){if(t.length<2)return t;let e=new Array(t.length),r=[],o,n,i,a,s;for(o of t)r.push({ring:o,x:At(o)});let f=r,l=e;for(n=1;n<r.length;n*=2){for(i=0;i<r.length;i+=n*2)Vt(f,l,i,n);a=f,f=l,l=a}for(s=0;s<t.length;s++)t[s]=f[s].ring;return t}function w(t,e,r){return(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x)}function b(t,e){return t.x===e.x&&t.y===e.y}function St(t){let e=!0,r,o,n,i;for(;e&&t.length>3;)for(e=!1,r=0;r<t.length;r++)if(o=t[(r+t.length-1)%t.length],n=t[r],i=t[(r+1)%t.length],b(o,n)||Math.abs(w(o,n,i))<1e-10){t.splice(r,1),e=!0;break}if(t.length<3)throw new Error("Degenerate polygon ring");return t}function Y(t){let e=0,r,o,n;for(r=0;r<t.length;r++)o=t[r],n=t[(r+1)%t.length],e+=o.x*n.y-n.x*o.y;return e<0}function Ft(t,e){let r=[],o=0,n,i,a;for(n=0;n<t.length;n++)i=t[n],a=St(e.slice(o,o+=i.length)),Y(a)!==!!n&&a.reverse(),r.push(a);return r}function K(t,e){let r=!1,o,n,i,a;for(o=0,n=e.length-1;o<e.length;n=o++)i=e[o],a=e[n],i.y>t.y!=a.y>t.y&&t.x<(a.x-i.x)*(t.y-i.y)/(a.y-i.y)+i.x&&(r=!r);return r}function Nt(t,e){let r;for(r=1;r<e.length;r++)if(K(t,e[r]))return!0;return!1}function H(t,e,r){return Math.min(t.x,e.x)<=r.x&&r.x<=Math.max(t.x,e.x)&&Math.min(t.y,e.y)<=r.y&&r.y<=Math.max(t.y,e.y)}function Ut(t,e,r,o){if(b(t,r)||b(t,o)||b(e,r)||b(e,o))return!1;let n=w(t,e,r),i=w(t,e,o),a=w(r,o,t),s=w(r,o,e);return n*i<0&&a*s<0||n===0&&H(t,e,r)||i===0&&H(t,e,o)||a===0&&H(r,o,t)||s===0&&H(r,o,e)}function ht(t,e,r){let o;for(o=0;o<r.length;o++)if(Ut(t,e,r[o],r[(o+1)%r.length]))return!0;return!1}function Lt(t,e,r,o){if(ht(t,e,r))return!0;let n;for(n=1;n<o.length;n++)if(ht(t,e,o[n]))return!0;return!1}function Gt(t,e,r,o){let n=-1,i=-1,a=1/0,s,f,l,u,c;for(s=0;s<e.length;s++)for(f=0;f<t.length;f++)l=e[s],u=t[f],c=(l.x-u.x)**2+(l.y-u.y)**2,!(c>=a)&&(o.x=(l.x+u.x)/2,o.y=(l.y+u.y)/2,!(!K(o,r[0])||Nt(o,r))&&(Lt(l,u,t,r)||(n=s,i=f,a=c)));if(n<0)throw new Error("Unable to connect polygon hole");return[...t.slice(0,i+1),...e.slice(n),...e.slice(0,n+1),t[i],...t.slice(i+1)]}function Bt(t,e,r,o){let n;for(n of t)if(!b(n,e)&&!b(n,r)&&!b(n,o)&&w(e,r,n)>=0&&w(r,o,n)>=0&&w(o,e,n)>=0)return!0;return!1}function Dt(t){let e=[],r,o,n,i,a,s;for(;t.length>3;){for(r=!1,o=0;o<t.length;o++)if(n=t[(o+t.length-1)%t.length],i=t[o],a=t[(o+1)%t.length],!(w(n,i,a)<=1e-10)&&!Bt(t,n,i,a)){e.push([n.index,i.index,a.index]),t.splice(o,1),r=!0;break}if(!r)throw new Error("Unable to triangulate polygon: invalid or self-intersecting rings")}if(w(...t)>1e-10){let f=[];for(s of t)f.push(s.index);e.push(f)}return e}function gt(t){let e=0,r,o,n;for(r=0;r<t.length;r++)o=t[r],n=t[(r+1)%t.length],e+=o.x*n.y-n.x*o.y;return Math.abs(e)/2}function kt(t,e,r){let o=0,n=0,i,a;for(i=1;i<t.length;i++)o+=gt(t[i]);let s=gt(t[0])-o;for(a of r)n+=w(e[a[0]],e[a[1]],e[a[2]])/2;if(s<=0||Math.abs(n-s)>Math.max(1e-7,s*1e-8))throw new Error("Polygon triangulation area mismatch")}function Q(t,e=U){let r=[t,...e],o=r.flat(),n,i,a;for(n of o)if(!Number.isFinite(n.x)||!Number.isFinite(n.y))throw new Error("Invalid polygon coordinates");let s=[];for(i=0;i<o.length;i++)n=o[i],s.push({x:n.x-t[0].x,y:n.y-t[0].y,index:i});let f=Ft(r,s),l=f[0].slice(),u=Ot(f.slice(1)),c=u.length?{x:0,y:0}:null;for(a of u)l=Gt(l,a,f,c);let m=Dt(l);return kt(f,s,m),m}function tt(t){return t.ground||0}function L(t,e,r,o,n,i,a,s,f,l,u){let{backend:c,positions:m,normals:h,colors:p,uvs:g}=t,x=o.x-e.x,M=n-r,$=e.y-o.y,Ct=i.x-e.x,Pt=a-r,Tt=e.y-i.y;if((M*Tt-$*Pt)*s+($*Ct-x*Tt)*f+(x*Pt-M*Ct)*l<0){let qr=o,Wr=n;o=i,n=a,i=qr,a=Wr}m.push(e.x,r+tt(e),-e.y,o.x,n+tt(o),-o.y,i.x,a+tt(i),-i.y),h.push(s,f,l,s,f,l,s,f,l),p.push(u.r,u.g,u.b,u.r,u.g,u.b,u.r,u.g,u.b),c.options.nightLight&&g.push(...e.uv,...o.uv,...i.uv)}function Rt(t,e,r,o,n){let i=[],a,s,f,l,u,c,m,h,p,g,x;for(a of e)for(s of a)i.push(s);for([f,l,u]of Q(e[0],e.slice(1)))L(t,i[f],r,i[l],r,i[u],r,0,1,0,n),o>0&&L(t,i[f],o,i[l],o,i[u],o,0,-1,0,n);for(c=0;c<e.length;c++)for(a=e[c],m=Y(a)===(c===0)?-1:1,h=0;h<a.length;h++)f=a[h],l=a[(h+1)%a.length],p=Math.hypot(l.x-f.x,l.y-f.y),p&&(g=m*(l.y-f.y)/p,x=m*(l.x-f.x)/p,L(t,f,o,l,o,l,r,g,0,x,n),L(t,f,o,l,r,f,r,g,0,x,n))}var D=[];function Zt(...t){L(D[D.length-1],...t)}function et(t,e,r,o){D.push(t);try{e(r,o,Zt)}finally{D.pop()}}function rt(t){return t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055}function ot(t,e,r,o){let n=(t+e*12)%12;return r-o*Math.max(-1,Math.min(n-3,9-n,1))}function G(t){if(t&&typeof t=="object"&&"h"in t){let i=t.s*Math.min(t.l,1-t.l);return{r:rt(ot(0,t.h,t.l,i)),g:rt(ot(8,t.h,t.l,i)),b:rt(ot(4,t.h,t.l,i))}}if(t&&typeof t=="object"&&"r"in t)return t;if(typeof t=="number")return{r:(t>>16&255)/255,g:(t>>8&255)/255,b:(t&255)/255};if(typeof t!="string"||!CSS.supports("color",t))throw new Error("Invalid 3D color");let e=document.createElement("canvas").getContext("2d");e.fillStyle=t,e.fillRect(0,0,1,1);let[r,o,n]=e.getImageData(0,0,1,1).data;return{r:r/255,g:o/255,b:n/255}}var B=[{x:Math.cos(0*Math.PI/3),y:Math.sin(0*Math.PI/3),nx:Math.cos(.5*Math.PI/3),nz:-Math.sin(.5*Math.PI/3)},{x:Math.cos(1*Math.PI/3),y:Math.sin(1*Math.PI/3),nx:Math.cos(1.5*Math.PI/3),nz:-Math.sin(1.5*Math.PI/3)},{x:Math.cos(2*Math.PI/3),y:Math.sin(2*Math.PI/3),nx:Math.cos(2.5*Math.PI/3),nz:-Math.sin(2.5*Math.PI/3)},{x:Math.cos(3*Math.PI/3),y:Math.sin(3*Math.PI/3),nx:Math.cos(3.5*Math.PI/3),nz:-Math.sin(3.5*Math.PI/3)},{x:Math.cos(4*Math.PI/3),y:Math.sin(4*Math.PI/3),nx:Math.cos(4.5*Math.PI/3),nz:-Math.sin(4.5*Math.PI/3)},{x:Math.cos(5*Math.PI/3),y:Math.sin(5*Math.PI/3),nx:Math.cos(5.5*Math.PI/3),nz:-Math.sin(5.5*Math.PI/3)}];function jt(t,e){let r=new Array(B.length),o;for(o=0;o<r.length;o++)r[o]={x:t.x+B[o].x*e,y:t.y+B[o].y*e,ground:t.ground,uv:[3,3]};return r}function $t(t,e,r){let o=G(5264986),n=e.poleRadius;if(!Number.isFinite(n)||n<=0)throw new Error("Invalid lamp pole radius");let i={...t,uv:[3,3]},a,s,f,l,u,c,m,h,p,g;for(g=0;g<2;g++)for(a=g?n*2.5:n,s=g?e.top-.25:0,f=g?e.top+.15:e.top,l=jt(t,a),u=0;u<6;u++)c=l[u],m=l[(u+1)%6],h=B[u].nx,p=B[u].nz,r(c,s,m,s,m,f,h,0,p,o),r(c,s,m,f,c,f,h,0,p,o),r(i,f,c,f,m,f,0,1,0,o),r(i,s,m,s,c,s,0,-1,0,o)}function Ht(t,e,r,o,n,i,a,s,f,l){typeof s!="number"?(t(r,a,o,a,n,a,...s,e),t(r,a,n,a,i,a,...s,e)):(t(r,a,o,a,n,a,s,f,l,e),t(r,a,n,a,i,a,s,f,l,e))}function _(t,e,r,o){return{x:t.x+(o===2?0:e*.65),y:t.y+(o===1?0:o===2?e*.65:r*.65),ground:t.ground+(o===0?0:r*.65),uv:[e,r]}}function _t(t,e,r){if(!Number.isFinite(e.lightRadius)||e.lightRadius<=0)throw new Error("Invalid light radius");let o=G(e.color),n;for(n=0;n<3;n++)Ht(r,o,_(t,-1,-1,n),_(t,1,-1,n),_(t,1,1,n),_(t,-1,1,n),e.top,n===2?1:0,n===0?1:0,n===1?1:0)}var nt=[[0,0],[.35,.8],[.6,1],[.85,.7],[1,0]];var k=[{x:Math.cos(0*Math.PI/4),y:Math.sin(0*Math.PI/4),nx:Math.cos(.5*Math.PI/4),nz:-Math.sin(.5*Math.PI/4)},{x:Math.cos(1*Math.PI/4),y:Math.sin(1*Math.PI/4),nx:Math.cos(1.5*Math.PI/4),nz:-Math.sin(1.5*Math.PI/4)},{x:Math.cos(2*Math.PI/4),y:Math.sin(2*Math.PI/4),nx:Math.cos(2.5*Math.PI/4),nz:-Math.sin(2.5*Math.PI/4)},{x:Math.cos(3*Math.PI/4),y:Math.sin(3*Math.PI/4),nx:Math.cos(3.5*Math.PI/4),nz:-Math.sin(3.5*Math.PI/4)},{x:Math.cos(4*Math.PI/4),y:Math.sin(4*Math.PI/4),nx:Math.cos(4.5*Math.PI/4),nz:-Math.sin(4.5*Math.PI/4)},{x:Math.cos(5*Math.PI/4),y:Math.sin(5*Math.PI/4),nx:Math.cos(5.5*Math.PI/4),nz:-Math.sin(5.5*Math.PI/4)},{x:Math.cos(6*Math.PI/4),y:Math.sin(6*Math.PI/4),nx:Math.cos(6.5*Math.PI/4),nz:-Math.sin(6.5*Math.PI/4)},{x:Math.cos(7*Math.PI/4),y:Math.sin(7*Math.PI/4),nx:Math.cos(7.5*Math.PI/4),nz:-Math.sin(7.5*Math.PI/4)}];function q(t,e){let r=new Array(k.length),o;for(o=0;o<r.length;o++)r[o]={x:t.x+k[o].x*e,y:t.y+k[o].y*e,ground:t.ground};return r}function it(t,e,r,o,n,i,a){let s=q(t,r),f=q(t,n),l,u,c,m,h,p,g,x,M;for(l=0;l<8;l++)u=(l+1)%8,c=(r-n)/(i-o),m=Math.hypot(1,c),{nx:h,nz:p}=k[l],g=c/m,x=h/m,M=p/m,r&&e(s[l],o,s[u],o,f[u],i,x,g,M,a),n&&e(s[l],o,f[u],i,f[l],i,x,g,M,a)}function qt(t,e,r,o,n,i){if(!Number.isFinite(t)||!Number.isFinite(e)||!Number.isFinite(r)||t<=0||e<t||r<=o||r>=n||i!=="round"&&i!=="cone")throw new Error("Invalid tree dimensions or crown shape")}function Wt(t,e,r){let{top:o,bottom:n=0,trunkRadius:i,crownRadius:a,crownBottom:s,crownShape:f="round"}=e;qt(i,a,s,n,o,f);let l=G(e.trunkColor??7491898),u=G(e.color??5210683);it(t,r,i,n,i,s+(o-s)*.25,l);let c,m,h,p,g;if(f==="cone"){let x=q(t,a);for(c=0;c<8;c++)r(t,s,x[c],s,x[(c+1)%8],s,0,-1,0,u);it(t,r,a,s,0,o,u)}else for(c=1;c<nt.length;c++)[m,h]=nt[c-1],[p,g]=nt[c],it(t,r,h*a,s+m*(o-s),g*a,s+p*(o-s),u)}function zt(t,e,r,o,n){let{top:i}=r;if(t.backend.options.nightLight){if(!Number.isFinite(r.lightFlux)||r.lightFlux<=0)throw new Error("Invalid light flux");r.poleRadius>0&&!t.supports.has(n)&&(et(t,$t,e,r),t.supports.add(n)),et(t,_t,e,r),t.lights.push({position:[e.x,e.ground+i,-e.y],radius:Math.hypot(i,r.lightRadius),color:[o.r,o.g,o.b],flux:r.lightFlux})}else et(t,Wt,e,r)}function Xt(t){let{positions:e,normals:r,colors:o,featureFaces:n}=t;if(t.backend.options.nightLight||n.length<2)return t;let i=n[0].vertexEnd,a=i*3;if(!i||e.length!==a*n.length)return t;let s=Math.trunc(e[0]),f=Math.trunc(e[1]),l=Math.trunc(e[2]),u=new Float32Array(a),c,m,h,p;for(c=0;c<a;c++)u[c]=e[c]-(c%3===0?s:c%3===1?f:l);let g=new Float32Array(n.length*4);for(m=0;m<n.length;m++){if(h=n[m],p=m*a,h.vertexStart!==m*i||h.vertexEnd!==(m+1)*i)return t;for(g[m*4]=s+e[p]-e[0],g[m*4+1]=f+e[p+1]-e[1],g[m*4+2]=l+e[p+2]-e[2],g[m*4+3]=m*i,c=0;c<a;c++)if(Math.fround(u[c]+g[m*4+c%3])!==Math.fround(e[p+c])||Math.fround(r[c])!==Math.fround(r[p+c])||Math.fround(o[c])!==Math.fround(o[p+c]))return t}return{positions:u,normals:r.slice(0,a),colors:o.slice(0,a),instanceOffsets:g}}function Jt(t){let e=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],o=t.attributes.position.data,n,i,a,s;for(n=0;n<o.length;n+=3)i=o[n],a=o[n+1],s=o[n+2],e[0]=Math.min(e[0],i),r[0]=Math.max(r[0],i),e[1]=Math.min(e[1],a),r[1]=Math.max(r[1],a),e[2]=Math.min(e[2],s),r[2]=Math.max(r[2],s);let f=t.attributes.instanceOffset;if(f){let m,h,p,g;for(m=0;m<3;m++){for(p=1/0,g=-1/0,h=m;h<f.data.length;h+=f.size)p=Math.min(p,f.data[h]),g=Math.max(g,f.data[h]);e[m]=Math.fround(e[m]+p),r[m]=Math.fround(r[m]+g)}}let l=[(e[0]+r[0])/2,(e[1]+r[1])/2,(e[2]+r[2])/2],u=0;for(n=0;!f&&n<o.length;n+=3)i=o[n]-l[0],a=o[n+1]-l[1],s=o[n+2]-l[2],u=Math.max(u,i*i+a*a+s*s);let c=f?Math.hypot(r[0]-e[0],r[1]-e[1],r[2]-e[2])/2:Math.sqrt(u);if(!f&&(u===1/0||u<Number.MIN_VALUE/Number.EPSILON))for(c=0,n=0;n<o.length;n+=3)c=Math.max(c,Math.hypot(o[n]-l[0],o[n+1]-l[1],o[n+2]-l[2]));t.bounds={min:e,max:r,center:l,radius:c}}function Yt({jobs:t,nightLight:e}){let r={backend:{options:{nightLight:e}},positions:[],normals:[],colors:[],uvs:[],featureFaces:[],lights:[],supports:new Set},o,n,i,a;for(o of t){i=r.positions.length/3,o.point&&zt(r,o.point,o.style,o.baseColor,o.support);for(n of o.polygons)Rt(r,n,o.style.top,o.style.bottom,o.baseColor);a=r.positions.length/3,r.featureFaces.push({vertexStart:i,vertexEnd:a,faceStart:i/3,faceEnd:a/3})}let s=Xt(r),f={positions:new Float32Array(s.positions),normals:new Float32Array(s.normals),colors:new Float32Array(s.colors),uvs:new Float32Array(r.uvs),instanceOffsets:s.instanceOffsets,ranges:r.featureFaces,lights:r.lights};if(f.positions.length){let l={attributes:{position:{data:f.positions},instanceOffset:f.instanceOffsets?{data:f.instanceOffsets,size:4}:void 0}};Jt(l),f.bounds=l.bounds}return f}function at(t){return{bytes:t,view:new DataView(t.buffer,t.byteOffset,t.byteLength),pos:0}}function E(t,e){if(!Number.isSafeInteger(e)||e<0||e>t.bytes.length-t.pos)throw new Error("Truncated MVT field");let r=t.pos;return t.pos+=e,r}function T(t){let e=0n,r=0,o;for(;r<10;r++){if(o=t.bytes[E(t,1)],r===9&&o>1)throw new Error("Invalid MVT varint");if(e|=BigInt(o&127)<<BigInt(r*7),o<128)return e}throw new Error("Invalid MVT varint")}function y(t){let e=T(t);if(e>BigInt(Number.MAX_SAFE_INTEGER))throw new Error("MVT integer exceeds safe range");return Number(e)}function A(t){let e=y(t),r=Math.floor(e/8),o=e%8;if(!r||r>536870911)throw new Error("Invalid MVT field number");return[r,o]}function C(t,e){if(t!==e)throw new Error("Invalid MVT wire type")}function R(t){return t>=BigInt(Number.MIN_SAFE_INTEGER)&&t<=BigInt(Number.MAX_SAFE_INTEGER)?Number(t):t.toString()}function st(t,e,r){if(t&&(e===2&&t.length<2||e===3&&!r))throw new Error("Incomplete MVT geometry")}function Kt(t,e,r){let o=0,n,i;for(;o<r;o++){if(n=t[e.index++],i=t[e.index++],n>4294967295||i>4294967295)throw new Error("Invalid MVT coordinate");e.x+=n%2?-(n+1)/2:n/2,e.y+=i%2?-(i+1)/2:i/2,e.path.push([e.x,e.y])}}function Qt(t,e,r,o){if(st(t.path,r,t.closed),r!==1&&o!==1)throw new Error("Invalid MVT MoveTo");t.path=[],e.push(t.path),t.closed=!1}function te(t,e,r){if(e!==3||r!==1||!t.path||t.closed||t.path.length<3)throw new Error("Invalid MVT ClosePath");t.path.push([...t.path[0]]),t.closed=!0}function ee(t,e){let r=[],o={x:0,y:0,path:null,closed:!1,index:0},n,i,a;for(;o.index<t.length;){if(n=t[o.index++],i=n%8,a=Math.floor(n/8),!a||n>4294967295)throw new Error("Invalid MVT geometry command");if(i===7){te(o,e,a);continue}if(i!==1&&i!==2||a>Math.floor((t.length-o.index)/2))throw new Error("Invalid MVT geometry parameters");if(i===1)Qt(o,r,e,a);else if(e===1||!o.path||o.closed)throw new Error("Invalid MVT LineTo");Kt(t,o,a)}if(st(o.path,e,o.closed),!r.length)throw new Error("Empty MVT geometry");return r}function P(t,e){C(e,2);let r=y(t),o=E(t,r);return at(t.bytes.subarray(o,o+r))}function dt(t,e,r){let o;if(e===0)r.push(y(t));else for(o=P(t,e);o.pos<o.bytes.length;)r.push(y(o))}function V(t,e){switch(e){case 0:T(t);break;case 1:E(t,8);break;case 2:E(t,y(t));break;case 5:E(t,4);break;default:throw new Error("Unsupported MVT wire type")}}function re(t,e,r){let o,n=0,i,a,s=0,f=[],l=[];for(;t.pos<t.bytes.length;)[i,a]=A(t),i===1?(C(a,0),o=R(T(t))):i===2?dt(t,a,f):i===3?(C(a,0),n=y(t)):i===4?dt(t,a,l):V(t,a);if(f.length%2||n>3)throw new Error("Invalid MVT feature");let u=Object.create(null);for(;s<f.length;s+=2){if(f[s]>=e.length||f[s+1]>=r.length)throw new Error("Invalid MVT property index");u[e[f[s]]]=r[f[s+1]]}return{id:o,type:n,properties:u,geometry:n?ee(l,n):[]}}var oe=new TextDecoder("utf-8",{fatal:!0});function W(t,e){return oe.decode(P(t,e).bytes)}function ne(t,e,r){let o,n;return e===1?W(t,r):e===2||e===3?(C(r,e===2?5:1),o=E(t,e===2?4:8),e===2?t.view.getFloat32(o,!0):t.view.getFloat64(o,!0)):(C(r,0),n=T(t),e===4?R(BigInt.asIntN(64,n)):e===5?R(n):e===6?R(n>>1n^-(n&1n)):n!==0n)}function ie(t){let e,r=!1,o,n;for(;t.pos<t.bytes.length;){if([o,n]=A(t),o<1||o>7){V(t,n);continue}if(r)throw new Error("Multiple MVT value types");r=!0,e=ne(t,o,n)}if(!r)throw new Error("Empty MVT value");return e}function ae(t){let e,r,o=4096,n,i,a,s=0,f=[],l=[],u=[];for(;t.pos<t.bytes.length;)[n,i]=A(t),n===1?e=W(t,i):n===2?u.push(P(t,i)):n===3?f.push(W(t,i)):n===4?l.push(ie(P(t,i))):n===5||n===15?(C(i,0),a=y(t),n===5?o=a:r=a):V(t,i);if(!e||![1,2].includes(r)||!o||o>4294967295)throw new Error("Invalid MVT layer metadata");for(;s<u.length;s++)u[s]=re(u[s],f,l);return{name:e,extent:o,features:u}}function se(t){if(!(t instanceof ArrayBuffer)&&!(t instanceof Uint8Array))throw new TypeError("MVT input must be an ArrayBuffer or Uint8Array");let e=t instanceof Uint8Array?t:new Uint8Array(t),r=at(e),o=[],n=new Set,i,a,s;for(;r.pos<r.bytes.length;){if([i,a]=A(r),i!==3){V(r,a);continue}if(s=ae(P(r,a)),n.has(s.name))throw new Error("Duplicate MVT layer name");n.add(s.name),o.push(s)}return o}function fe(t){let e=new Set,r=[t.paint,t.filter],o,n;for(;r.length;)if(o=r.pop(),!(!o||typeof o!="object")){Array.isArray(o)&&typeof o[1]=="string"&&["get","has","==","!=","<",">","<=",">=","in","!in"].includes(o[0])&&e.add(o[1]);for(n of Object.values(o))r.push(n)}return e}function le(t,e,r,o,n){let i=0;if(t==="all"){for(i=0;i<e.length;i++)if(!d(e[i],r,o,n))return!1;return!0}if(t==="any"){for(i=0;i<e.length;i++)if(d(e[i],r,o,n))return!0;return!1}throw new Error(`Unsupported vector style expression: ${t}`)}function ue(t,e,r,o,n){let i=0,a=null;if(t==="coalesce"){for(i=0;i<e.length;i++)if(a=d(e[i],r,o),a!=null)return a;return null}if(t==="case"){for(i=0;i<e.length-1;i+=2)if(d(e[i],r,o))return d(e[i+1],r,o);return d(e[e.length-1],r,o)}throw new Error(`Unsupported vector style expression: ${t}`)}function O(t,e,r,o){return o&&typeof t=="string"?e[t]:d(t,e,r)}function ce(t,e,r,o,n){let i=O(e[0],r,o,n),a=d(e[1],r,o);switch(t){case"==":return i===a;case"!=":return i!==a;case"<=":return i<=a;case">=":return i>=a;case"<":return i<a;case">":return i>a;default:throw new Error(`Unsupported vector style expression: ${t}`)}}var xt={black:[0,0,0,1],white:[255,255,255,1],gray:[128,128,128,1],blue:[0,0,255,1],red:[255,0,0,1],green:[0,128,0,1]};function me(t){let e=/^rgba?\(([^)]+)\)$/.exec(t);if(e){let r=e[1].split(","),o=0,n=!0;for(o=0;o<r.length;o++)r[o]=Number(r[o]);for(r.length===3&&r.push(1),o=0;o<r.length;o++)Number.isFinite(r[o])||(n=!1);if(r.length===4&&n)return r}throw new Error(`Unsupported interpolated style color: ${t}`)}function pe(t){let e=0,r=0;t.length===4&&(t="#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]);let o=[];for(e=1;e<6;e+=2)r=parseInt(t.slice(e,e+2),16),o.push(r);return o.push(1),o}function S(t){return Object.hasOwn(xt,t)?xt[t]:/^#[0-9a-f]{3}$/i.test(t)||/^#[0-9a-f]{6}$/i.test(t)?pe(t):me(t)}function he(t,e,r){let o=d(t[1],e,r),n=t[0][0]==="exponential"?t[0][1]:1,i=0,a=0,s=0,f=0,l=null,u=null,c=0,m="";if(o<=t[2])return d(t[3],e,r);for(i=4;i<t.length;i+=2)if(!(o>t[i])){if(a=t[i-2],s=t[i],f=n===1?(o-a)/(s-a):(n**(o-a)-1)/(n**(s-a)-1),l=d(t[i-1],e,r),u=d(t[i+1],e,r),typeof l=="number"&&typeof u=="number")return l+(u-l)*f;for(l=S(l),u=S(u),c=0;c<3;c++)c&&(m+=","),m+=Math.round(l[c]+(u[c]-l[c])*f);return`rgba(${m},${l[3]+(u[3]-l[3])*f})`}return d(t.at(-1),e,r)}function Mt(t,e,r,o){let n=0,i=null;for(n=e;n<r;n++)if(i=t[n],i===o||i!==i&&o!==o)return!0;return!1}function ft(t,e,r,o,n){let i=null;if(t==="!in")return i=O(e[0],r,o,n),!Mt(e,1,e.length,i);if(n)return i=O(e[0],r,o,!0),Mt(e,1,e.length,i);let a=d(e[1],r,o);return i=O(e[0],r,o,!1),a.includes(i)}function ge(t,e,r,o,n){if(t==="in")return ft(t,e,r,o,n);if(t==="interpolate")return he(e,r,o);throw new Error(`Unsupported vector style expression: ${t}`)}function de(t,e,r,o){let n=0,i=0;if(t==="+"){for(n=0;n<e.length;n++)i+=d(e[n],r,o);return i}if(t==="-")return e.length===1?-d(e[0],r,o):d(e[0],r,o)-d(e[1],r,o);throw new Error(`Unsupported vector style expression: ${t}`)}function xe(t,e,r){let o=d(t[0],e,r),n=0,i=!1;for(n=1;n<t.length-1;n+=2)if(Array.isArray(t[n])?i=t[n].includes(o):i=t[n]===o,i)return d(t[n+1],e,r);return d(t[t.length-1],e,r)}function Me(t,e,r,o,n){if(t==="!")return!d(e[0],r,o,n);if(t==="!=")return O(e[0],r,o,n)!==d(e[1],r,o);if(t==="!in")return ft(t,e,r,o,n);throw new Error(`Unsupported vector style expression: ${t}`)}function we(t,e,r,o){switch(t){case"literal":return e[0];case"get":return r[e[0]];case"has":return Object.hasOwn(r,e[0]);case"zoom":return o;default:throw new Error(`Unsupported vector style expression: ${t}`)}}function ye(t,e,r){let o=d(t[0],e,r),n=t[1],i=0;for(i=2;i<t.length&&!(o<t[i]);i+=2)n=t[i+1];return d(n,e,r)}function ve(t,e,r,o){if(t==="to-boolean")return!!d(e[0],r,o);if(t==="to-number"){let n=0,i=0;for(n=0;n<e.length;n++)if(i=Number(d(e[n],r,o)),Number.isFinite(i))return i;throw new Error("Invalid numeric style expression")}throw new Error(`Unsupported vector style expression: ${t}`)}function d(t,e,r,o=!1){if(!Array.isArray(t))return t;let n=t[0],i=t.slice(1),a=String(n);if(/^(?:literal|get|has|zoom)$/.test(a))return we(n,i,e,r);switch(a[0]){case"a":return le(n,i,e,r,o);case"!":return Me(n,i,e,r,o);case"=":case"<":case">":return ce(n,i,e,r,o);case"i":return ge(n,i,e,r,o);case"t":return ve(n,i,e,r,o);case"c":return ue(n,i,e,r,o);case"m":return xe(i,e,r);case"s":return ye(i,e,r);default:return de(n,i,e,r)}}function z(t,e,r){return r>=(t.minzoom??0)&&r<(t.maxzoom??1/0)&&t.layout?.visibility!=="none"&&(!t.filter||d(t.filter,e,r,!0))}function be(t,e,r,o){if(z(t,e,r))return r;for(r=o;r>=0&&!z(t,e,r);)r--;return r}function F(t,e,r){let o=2**e.z,n=(e.x+t[0]/r)/o,i=(e.y+t[1]/r)/o;return[Math.atan(Math.sinh(Math.PI*(1-2*i)))*180/Math.PI,n*360-180]}function Ie(t,e,r){return t[r]??""}function X(t,e,r,o,n){return t?.[e]===void 0?r:d(t[e],o,n)}function wt(t,e,r,o){let n=Math.atan2(t[e][1]-t[e-1][1],t[e][0]-t[e-1][0]),i=o>0?e:e-1,a=r,s=0,f;for(;i>=0&&i<t.length&&(s+=Math.hypot(t[i][0]-a[0],t[i][1]-a[1]),a=t[i],f=i+o,!(f<0||f>=t.length||Math.cos(Math.atan2(t[f][1]-t[i][1],t[f][0]-t[i][0])-n+(o<0?Math.PI:0))<.7));)i=f;return s}function Ee(t,e){let r=[],o=0,n,i,a,s,f,l,u,c;for(n=1;n<t.length;n++)o+=Math.hypot(t[n][0]-t[n-1][0],t[n][1]-t[n-1][1]);for(s=Math.max(1,Math.floor(o/e)),n=1,i=0,f=0;f<s;f++){for(a=(f+.5)*o/s;n<t.length-1&&i+Math.hypot(t[n][0]-t[n-1][0],t[n][1]-t[n-1][1])<a;)i+=Math.hypot(t[n][0]-t[n-1][0],t[n][1]-t[n-1][1]),n++;l=Math.hypot(t[n][0]-t[n-1][0],t[n][1]-t[n-1][1]),u=l?Math.min(1,Math.max(0,(a-i)/l)):0,c=[t[n-1][0]+(t[n][0]-t[n-1][0])*u,t[n-1][1]+(t[n][1]-t[n-1][1])*u],r.push({point:c,a:t[n-1],b:t[n],length:wt(t,n,c,1)+wt(t,n,c,-1)})}return r}function Ce(t,e,r,o,n){let i=r.layout?.["text-field"],{properties:a}=o,{zoom:s}=t,f=r.layout?.["symbol-placement"]==="line"?null:d(r.layout?.["icon-image"],a,s);if(Array.isArray(i)&&(i=d(i,a,s)),typeof i!="string"&&(i=""),i=i.replace(/\{([^}]+)\}/g,Ie.bind(null,a)),!i.trim()&&typeof f!="string")return;r.layout?.["text-transform"]==="uppercase"&&(i=i.toUpperCase());let l=X(r.layout,"text-size",12,a,s),u=o.type===2&&i.trim(),c=e.extent/16,m=[],h,p;for(h of u?o.geometry:o.geometry.slice(0,1))if(h?.length)if(!u)m.push({point:h[Math.floor(h.length/2)],a:null});else for(p of Ee(h,c))m.push(p);for(p of m)p.point[0]<0||p.point[0]>=e.extent||p.point[1]<0||p.point[1]>=e.extent||t.labels.push({text:i,latlng:F(p.point,t.coords,e.extent),order:n,entry:r,properties:a,size:l,pixelBase:p.length*256/e.extent/2**t.coords.z,along:p.a?[F(p.a,t.coords,e.extent),F(p.b,t.coords,e.extent)]:null,icon:i.trim()?null:f,iconOffset:d(r.layout?.["icon-offset"],a,s)||[0,0],allowOverlap:r.layout?.["icon-allow-overlap"]===!0,color:X(r.paint,"text-color","#000",a,s),halo:X(r.paint,"text-halo-color","#fff",a,s),haloWidth:X(r.paint,"text-halo-width",0,a,s),priority:["place_labels","place"].includes(r["source-layer"])?0:["street_labels","transportation_name"].includes(r["source-layer"])?1:2})}function N(t,e,r,o,n){return t[e]===void 0?r:d(t[e],o,n)}function Pe(t,e,r){let o=S(N(t,"fill-color","#000",e,r)),n=N(t,"fill-outline-color",null,e,r),i=n===null?null:S(n),a=N(t,"fill-opacity",1,e,r)*o[3],s={r:o[0]/255,g:o[1]/255,b:o[2]/255},f=i?{r:i[0]/255,g:i[1]/255,b:i[2]/255}:null;return{fillColor:s,fillOpacity:a,color:f,weight:.5}}function Te(t,e,r,o){if(!t)return;let n=t,i=0,a="";if(typeof t[0]!="number"&&(n=d(t,r,o)),!Array.isArray(n))throw new TypeError("Style dash array must be an array");for(i=0;i<n.length;i++)i&&(a+=" "),a+=n[i]*e;return a}function Ae(t,e,r,o){let n=N(e,"line-width",1,r,o),i=S(N(e,"line-color","#000",r,o)),a=N(e,"line-opacity",1,r,o)*i[3],s=Te(e["line-dasharray"],n,r,o),f=t.layout?.["line-cap"]||"butt",l=t.layout?.["line-join"]||"miter";return{color:{r:i[0]/255,g:i[1]/255,b:i[2]/255},opacity:a,weight:n,dashArray:s,lineCap:f,lineJoin:l}}function Z(t,e,r){let o=t.paint||{};return t.type==="fill"?Pe(o,e,r):Ae(t,o,e,r)}function Ve(t,e,r,o){if(t.type==="fill")return e.type===3?Z(t,e.properties,r):null;if(t.type!=="line"||e.type!==2)return null;let n=Z(t,e.properties,r),i;if(n.weight>0&&n.opacity>0)return n;for(i=o;i>=0;i--)if(z(t,e.properties,i)&&(n=Z(t,e.properties,i),n.weight>0&&n.opacity>0))return n;return null}function I(t,e){return t[0][0]+(e-t[0][1])*(t[1][0]-t[0][0])/(t[1][1]-t[0][1])}function Oe(t,e){let r=0,o,n,i,a,s,f,l;for(;r<t.length;r++)for(n=t[r],o=r+1;o<t.length;o++)i=t[o],a=Math.max(n[0][1],i[0][1]),s=Math.min(n[1][1],i[1][1]),!(a>=s)&&(f=I(n,a)-I(i,a),l=I(n,s)-I(i,s),f*l<0&&e.add(a+(s-a)*f/(f-l)))}function Se(t,e,r,o,n){let i=r,a=o,s=r;for(;i<o&&a<n;)t[a].x<t[i].x?e[s++]=t[a++]:e[s++]=t[i++];for(;i<o;)e[s++]=t[i++];for(;a<n;)e[s++]=t[a++]}function Fe(t){let e=new Array(t.length),r=1,o,n,i,a;for(;r<t.length;){for(o=0;o<t.length;o+=r*2)n=Math.min(o+r,t.length),i=Math.min(o+r*2,t.length),Se(t,e,o,n,i);for(a=0;a<t.length;a++)t[a]=e[a];r*=2}}function Ne(t,e,r,o){let n=(e+r)/2,i=[],a,s=0,f,l,u,c;for(a of t)a[0][1]<n&&a[1][1]>n&&i.push({edge:a,x:I(a,n)});if(Fe(i),i.length%2)throw new Error("Unbalanced MVT polygon edges");for(;s<i.length;s+=2){if(f=I(i[s].edge,e),l=I(i[s].edge,r),u=I(i[s+1].edge,e),c=I(i[s+1].edge,r),u<f-1e-8||c<l-1e-8)throw new Error("Crossing MVT polygon edges");(u-f)*(r-e)>1e-6&&o.push([[f,e],[u,e],[l,r]]),(c-l)*(r-e)>1e-6&&o.push([[u,e],[c,r],[l,r]])}}function j(t){let e=0;for(;e<t.length;e++)if(!Number.isFinite(t[e]))return!1;return!0}function Ue(t,e,r){let o,n,i,a;for(o of t){if(o.length<4||o[0][0]!==o.at(-1)[0]||o[0][1]!==o.at(-1)[1])throw new Error("MVT tessellation requires closed rings");for(n=1;n<o.length;n++){if(i=o[n-1],a=o[n],!j(i)||!j(a))throw new Error("Invalid MVT ring coordinate");r.add(i[1]),i[1]!==a[1]&&e.push([i[1]<a[1]?i:a,i[1]<a[1]?a:i])}}}function Le(t){let e=[],r,o=0,n=0,i,a,s=0;for(r of t)e.push(r);for(o=Math.floor(e.length/2);o>0;o=Math.floor(o/2))for(n=o;n<e.length;n++){for(a=e[n],i=n;i>=o&&e[i-o]>a;)e[i]=e[i-o],i-=o;e[i]=a}for(n=0;n<e.length;n++)(!s||e[n]-e[s-1]>1e-8)&&(e[s++]=e[n]);return e.length=s,e}function Ge(t){let e=[],r=new Set,o=[],n,i=1,a,s;for(Ue(t,e,r),Oe(e,r),n=Le(r);i<n.length;i++)a=n[i-1],s=n[i],s>a&&Ne(e,a,s,o);return o}function Be(t){return t.message==="Polygon triangulation area mismatch"||t.message==="Degenerate polygon ring"||t.message==="Unable to triangulate polygon: invalid or self-intersecting rings"||t.message==="Unable to connect polygon hole"}function De(t,e,r,o){let n,i,a,s,f=0;try{n=Q(e[0],e.slice(1));for(a of n){s=[];for(i of a)s.push([r[i].x,r[i].y]);o.push(s)}}catch(l){if(!Be(l))throw l;for(n=Ge(t);f<n.length;f++)o.push(n[f])}}function ke(t){let e=[],r,o,n,i,a;for(n of t){if(n.length<4||n[0][0]!==n.at(-1)[0]||n[0][1]!==n.at(-1)[1])throw new Error("MVT tessellation requires closed rings");for(i=0,a=1;a<n.length;a++){if(!j(n[a])||!j(n[a-1]))throw new Error("Invalid MVT ring coordinate");i+=n[a-1][0]*n[a][1]-n[a][0]*n[a-1][1]}(!r||i&&Math.sign(i)===o)&&(r=[],e.push(r),o=Math.sign(i)),r.push(n)}return e}function Re(t){let e=[],r,o;for(r of t)for(o of r)e.push(o);return e}function Ze(t){let e=[],r,o,n;for(r of t){for(n=[],o=0;o<r.length-1;o++)n.push({x:r[o][0],y:r[o][1]});e.push(n)}return e}function je(t){let e=ke(t),r=[],o,n,i;for(o of e)n=Ze(o),i=Re(n),De(o,n,i,r);return r}function lt(t,e){if(t.length<3)return t;let r=new Uint8Array(t.length),o=[[0,t.length-1]],n=[];r[0]=r[t.length-1]=1;let i,a,s,f,l,u,c,m,h,p,g,x,M;for(;o.length;){for([i,a]=o.pop(),s=t[i],f=t[a],l=f[0]-s[0],u=f[1]-s[1],c=l*l+u*u,m=-1,h=e*e,p=i+1;p<a;p++)g=t[p],x=c?Math.max(0,Math.min(1,((g[0]-s[0])*l+(g[1]-s[1])*u)/c)):0,M=(g[0]-s[0]-x*l)**2+(g[1]-s[1]-x*u)**2,M>h&&(h=M,m=p);m>=0&&(r[m]=1,o.push([i,m],[m,a]))}for(p=0;p<t.length;p++)r[p]&&n.push(t[p]);return n}function $e(t,e,r,o){let n=[],i=[],a,s,f,l;for(l of t)l=lt(l,o),l.length>=4&&i.push(l);for(a of je(i)){s=[];for(f of a)s.push(F(f,e,r));n.push([s])}return n}function He(t,e,r,o){let n=[],i,a,s,f;for(i of t)if(a=lt(i,o),!(a.length<3&&Math.hypot(a.at(-1)[0]-a[0][0],a.at(-1)[1]-a[0][1])<o*2)){s=[];for(f of a)s.push(F(f,e,r));n.push(s)}return n}function _e(t,e){return e.extent/256/2**Math.max(-1,t.mapZoom-t.coords.z)*.7}function qe(t,e,r,o){let n=r.type==="fill"?t.triangles:t.projected,i=n.get(o);if(!i){let a=_e(t,e);i=r.type==="fill"?$e(o.geometry,t.coords,e.extent,a):He(o.geometry,t.coords,e.extent,a),n.set(o,i)}return i}function yt(t,e,r,o,n,i,a,s){let f=[],l,u,c,m;for(l of a)f.push(o.properties[l]);l=JSON.stringify([s,f]),u=i.get(l),u||(u={kind:r.type,order:n,paint:s,properties:o.properties,entry:r,paths:[],coordinates:0},i.set(l,u));for(c of qe(t,e,r,o))m=r.type==="fill"?3:c.length,u.coordinates+m>6e3&&u.paths.length&&(t.output.push({...u,paths:u.paths}),u.paths=[],u.coordinates=0),u.paths.push(c),u.coordinates+=m}function We(t,e,r,o){let n=new Map,i=fe(r),a=r.type==="fill"?r.paint?.["fill-outline-color"]:null,s=a?{...r,type:"line",paint:{"line-color":a,"line-width":1}}:null,f,l,u,c;for(f of e.features)if(l=be(r,f.properties,t.zoom,t.maxZoom),!(l<0)){if(r.type==="symbol"){Ce(t,e,r,f,o);continue}u=Ve(r,f,l,t.maxZoom),u&&(yt(t,e,r,f,o,n,i,u),s&&f.type===3&&yt(t,e,s,f,o,n,i,Z(s,f.properties,l)))}for(c of n.values())c.paths.length&&t.output.push(c)}function ze(t,e,r,o,n,i=19,a=o){let s=se(t),f=new Map,l={coords:e,zoom:o,mapZoom:a,maxZoom:i,output:[],labels:[],triangles:new WeakMap,projected:new WeakMap},u,c,m;for(u of s)f.set(u.name,u);for([c,m]of r.entries())u=f.get(m["source-layer"]),!(!u||n!==void 0&&m.source!==n)&&We(l,u,m,c);return{batches:l.output,labels:l.labels}}function Xe({data:t}){try{let e=ze(t.buffer,t.coords,t.style,t.zoom,t.source,t.maxZoom,t.mapZoom);self.postMessage({id:t.id,...e})}catch(e){self.postMessage({id:t.id,error:e.message})}}function Je(t,e,r){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(r)||e<0||r<=0||r>32e6||!Number.isSafeInteger(e+r)||t.size!==void 0&&e+r>t.size)throw new Error("Invalid COG byte range")}function Ye(t,e,r,o){if(!e||Number(e[1])!==r||Number(e[2])!==r+o-1||!Number.isSafeInteger(Number(e[3]))||Number(e[3])<r+o||(t.containerSize??t.size)!==void 0&&(t.containerSize??t.size)!==Number(e[3]))throw new Error("Invalid COG range response")}function Ke(t){return t.status!==200||Number(t.headers.get("Content-Length"))>32e6}function Qe(t,e,r,o){let n=e.headers.get("ETag");if(t.etag&&t.etag!==n)throw new Error("COG changed; recreate the layer");n&&(t.etag=n);let i=/^bytes (\d+)-(\d+)\/(\d+)$/.exec(e.headers.get("Content-Range")||"");if(e.status===206)Ye(t,i,r,o),t.baseOffset===void 0&&(t.size=Number(i[3]));else if(Ke(e))throw new Error("COG server must support byte ranges for files over 32 MB")}async function tr(t,e){let r=t.body.getReader(),o=[],n=0,i;try{for(;!(i=await r.read()).done;){if(n+=i.value.byteLength,n>(t.status===206?e:32e6))throw await r.cancel(),new Error("Oversized COG response");o.push(i.value)}}finally{r.releaseLock()}let a=new Uint8Array(n),s=0,f;for(f of o)a.set(f,s),s+=f.length;return a}async function v(t,e,r,o){if(o?.throwIfAborted(),Je(t,e,r),t.full)return t.full.slice(e,e+r);let n=(t.baseOffset||0)+e,i=await fetch(t.url,{headers:{Range:`bytes=${n}-${n+r-1}`},signal:o});if(!i.ok)throw new Error(`Unable to read COG: HTTP ${i.status}`);Qe(t,i,n,r);let a=await tr(i,r);if(i.status===200){if(t.baseOffset===void 0)t.size=a.byteLength;else if(a.byteLength!==t.containerSize)throw new Error("Truncated PMTiles COG container");t.full=t.baseOffset===void 0?a.buffer:a.slice(t.baseOffset,t.baseOffset+t.size)}let s=i.status===200?t.full.slice(e,e+r):a.buffer;if(s.byteLength!==r)throw new Error("Truncated COG byte range");return s}var er=[256,257,258,259,262,277,284,317,322,323,324,325,339,33550,33922,34735];async function rr(t,e,r,o,n){let i=e.getUint16(r*12+2,n),a=i===3?2:i===4?4:i===12?8:0,s=e.getUint32(r*12+4,n);if(!a||!s||s>1048576)throw new Error(`Unsupported COG tag ${o}`);let f=a*s<=4?new DataView(e.buffer,r*12+8,4):new DataView(await v(t,e.getUint32(r*12+8,n),a*s)),l=[],u;for(u=0;u<s;u++)l.push(i===3?f.getUint16(u*a,n):i===4?f.getUint32(u*a,n):f.getFloat64(u*a,n));return l}async function or(t,e){let r=t.little,o=new DataView(await v(t,e,2)).getUint16(0,r);if(!o||o>128)throw new Error("Invalid COG directory size");let n=new DataView(await v(t,e+2,o*12+4)),i=new Map,a,s;for(a=0;a<o;a++){if(s=n.getUint16(a*12,r),s===42113)throw new Error("COG nodata tags are not supported; export complete tiles");if(s===34264)throw new Error("COG affine transformation matrices are not supported");if(er.includes(s)){if(i.has(s))throw new Error("Duplicate COG tag");i.set(s,await rr(t,n,a,s,r))}}return{tags:i,next:n.getUint32(o*12,r)}}function nr(t,e,r){return!!e&&!!r&&e%256===0&&r%256===0&&t.get(322)?.[0]===256&&t.get(323)?.[0]===256&&(t.get(259)?.[0]===1||t.get(259)?.[0]===8)&&(t.get(284)?.[0]??1)===1&&(t.get(317)?.[0]??1)===1}function ir(t,e,r,o,n,i,a){return n?t.get(262)?.[0]===1:(e===3||e===4)&&r?.length===e&&i&&a&&t.get(262)?.[0]===2}function ar(t){let e=t.get(256)?.[0],r=t.get(257)?.[0],o=t.get(277)?.[0]??1,n=t.get(258),i=t.get(339)||[1],a=!0,s=!0,f=!0,l;for(l of n||[])a&&=l===8;for(l of i)s&&=l===1,f&&=l===3;let u=o===1&&n?.length===1&&n[0]===32&&f;if(!nr(t,e,r)||!ir(t,o,n,i,u,a,s))throw new Error("Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor");return{width:e,height:r,samples:o,elevation:u}}function sr(t){let e=!1,r=!1,o;if(t)for(o=4;o<t.length;o+=4)t[o+1]!==0||t[o+2]!==1||(t[o]===3072&&t[o+3]===3857&&(e=!0),t[o]===1025&&t[o+3]===1&&(r=!0));return e&&r}function vt(t){let e;for(e of t||[])if(!Number.isFinite(e))return!1;return!0}function fr(t,e,r){return!!t&&t[0]===1&&t.length===4+t[3]*4&&!!e&&e.length===3&&vt(e)&&e[0]>0&&Math.abs(e[0]-e[1])<=1e-8&&!!r&&r.length===6&&vt(r)&&r[0]===0&&r[1]===0}function lr(t,e,r,o){let n=t.get(34735),i=t.get(33550),a=t.get(33922);if(!fr(n,i,a)||!sr(n))throw new Error("COG must use north-up EPSG:3857 PixelIsArea georeferencing");return{width:e,height:r,resolution:i[0],left:a[3],top:a[4],elevation:o}}function ur(t,e,r,o,n,i,a){return o>=0&&o<=24&&Math.abs(20037508342789244e-9*2/(256*2**o)-a)<=a*1e-7&&(!r.elevation||Number.isInteger(n)&&Number.isInteger(i))&&Math.abs(e.width/r.width-e.height/r.height)<=1e-7&&r.elevation===e.elevation&&n>=0&&i>=0&&n+r.width/256<=2**o&&i+r.height/256<=2**o&&!t.levels.has(o)&&!(e.elevation&&t.levels.size)}function cr(t,e){if(e.offsets?.length!==e.columns*e.rows||e.lengths?.length!==e.offsets.length)throw new Error("Invalid COG tile offsets or lengths");let r;for(r=0;r<e.offsets.length;r++)if(!e.offsets[r]||!e.lengths[r]||e.lengths[r]>1048576||e.offsets[r]+e.lengths[r]>t.size)throw new Error("Invalid COG tile offsets or lengths")}function mr(t,e,r){let o=e.tags,n=ar(o);r.base||(r.base=lr(o,n.width,n.height,n.elevation));let i=r.base,a=i.resolution*i.width/n.width,s=Math.round(Math.log2(20037508342789244e-9*2/(256*a))),f=20037508342789244e-9*2/2**s,l=(i.left+20037508342789244e-9)/f,u=(20037508342789244e-9-i.top)/f;if(Math.abs(l-Math.round(l))<1e-6&&(l=Math.round(l)),Math.abs(u-Math.round(u))<1e-6&&(u=Math.round(u)),!ur(t,i,n,s,l,u,a))throw new Error("COG levels must align with the Web Mercator XYZ tile grid");let c={x:l,y:u,columns:n.width/256,rows:n.height/256,samples:n.samples,elevation:n.elevation,compression:o.get(259)[0],offsets:o.get(324),lengths:o.get(325)};cr(t,c),t.levels.set(s,c),r.minZoom=Math.min(r.minZoom,s),r.maxZoom=Math.max(r.maxZoom,s)}async function pr(t,e){let r={base:null,minZoom:1/0,maxZoom:-1/0},o=new Set,n;for(;e;){if(o.has(e)||o.size>=24)throw new Error("Cyclic or excessive COG directories");o.add(e),n=await or(t,e),mr(t,n,r),e=n.next}if(!r.base)throw new Error("COG has no image directory");if(t.levels.size!==r.maxZoom-r.minZoom+1)throw new Error("COG overview zooms must be contiguous");return{base:r.base,minZoom:r.minZoom,maxZoom:r.maxZoom}}async function hr(t,e,r){if(r===1){if(t.byteLength!==e)throw new Error("Invalid uncompressed COG tile size");return t}let n=new Blob([t]).stream().pipeThrough(new DecompressionStream("deflate")).getReader(),i=new Uint8Array(e),a=0,s;try{for(;!(s=await n.read()).done;){if(a+s.value.length>e)throw await n.cancel(),new Error("Oversized decoded COG tile");i.set(s.value,a),a+=s.value.length}}finally{n.releaseLock()}if(a!==e)throw new Error("Truncated decoded COG tile");return i.buffer}async function ut(t,e,r,o,n){let i=o*e.columns+r;return hr(await v(t,e.offsets[i],e.lengths[i],n),256*256*(e.elevation?4:e.samples),e.compression)}async function gr(t,e,r,o,n){let i=await ut(t,e,r-e.x,o-e.y,n);n?.throwIfAborted();let a=new DataView(i),s=new Float32Array(256*256),f,l;for(f=0;f<s.length;f++){if(l=a.getFloat32(f*4,t.little),!Number.isFinite(l)||l<-12e3||l>1e4)throw new Error("Invalid or missing COG elevation sample");s[f]=l}return{data:s.buffer}}async function dr(t,e,r,o,n){let i=new OffscreenCanvas(256,256),a=i.getContext("2d");if(!a)throw new Error("Unable to create COG tile canvas");let s=(r-e.x)*256,f=(o-e.y)*256,l,u,c,m,h,p,g;for(u=Math.max(0,Math.floor(f/256));u<Math.min(e.rows,Math.ceil(f/256+1));u++)for(l=Math.max(0,Math.floor(s/256));l<Math.min(e.columns,Math.ceil(s/256+1));l++){for(c=new Uint8Array(await ut(t,e,l,u,n)),n?.throwIfAborted(),m=new Uint8ClampedArray(256*256*4),h=0,p=0;h<c.length;h+=e.samples,p+=4)m[p]=c[h],m[p+1]=c[h+1],m[p+2]=c[h+2],m[p+3]=e.samples===4?c[h+3]:255;g=await createImageBitmap(new ImageData(m,256,256)),a.drawImage(g,l*256-s,u*256-f),g.close()}let x=i.transferToImageBitmap();return n?.aborted&&(x.close(),n.throwIfAborted()),{image:x}}function xr(t,e,r){return Number.isSafeInteger(t)&&Number.isSafeInteger(e)&&Number.isSafeInteger(r)&&t>=0&&t<=24&&e>=0&&r>=0&&e<2**t&&r<2**t}async function Mr(t,e,r,o,n){if(n?.throwIfAborted(),!xr(e,r,o))throw new Error("Invalid COG tile coordinates");let i=t.levels.get(e);if(!(!i||r+1<=i.x||o+1<=i.y||r>=i.x+i.columns||o>=i.y+i.rows))return i.elevation?gr(t,i,r,o,n):dr(t,i,r,o,n)}function wr(t){return t.header}var bt=["rootDirectoryOffset","rootDirectoryLength","jsonMetadataOffset","jsonMetadataLength","leafDirectoryOffset","leafDirectoryLength","tileDataOffset","tileDataLength","numAddressedTiles","numTileEntries","numTileContents"];var It=["clustered","internalCompression","tileCompression","tileType","minZoom","maxZoom"];var Et=["minLon","minLat","maxLon","maxLat"];function yr(t){let e=t.byteLength>=127?new DataView(t):null;if(!e||e.getUint32(0,!0)!==1767132496||e.getUint32(4,!0)!==57894252)throw new Error("Expected a PMTiles v3 archive");let r={},o;for(o=0;o<bt.length;o++)r[bt[o]]=Number(e.getBigUint64(8+o*8,!0));for(o=0;o<It.length;o++)r[It[o]]=e.getUint8(96+o);for(o=0;o<Et.length;o++)r[Et[o]]=e.getInt32(102+o*4,!0)/1e7;return r.centerZoom=e.getUint8(118),r.centerLon=e.getInt32(119,!0)/1e7,r.centerLat=e.getInt32(123,!0)/1e7,r}function vr(t,e){if(e.tileType!==0||e.tileCompression!==1||!Number.isSafeInteger(e.jsonMetadataOffset)||!Number.isSafeInteger(e.jsonMetadataLength)||e.jsonMetadataLength<=0||e.jsonMetadataLength>1048576||!Number.isSafeInteger(e.tileDataOffset)||!Number.isSafeInteger(e.tileDataLength)||e.tileDataOffset<127||e.tileDataOffset+e.tileDataLength>t.size)throw new Error("Invalid PMTiles COG asset container")}async function br(t,e){if(e===1)return t;if(e!==2)throw new Error(`Unsupported PMTiles compression: ${e}`);let r=new Blob([t]),o=new DecompressionStream("gzip");return new Response(r.stream().pipeThrough(o)).arrayBuffer()}async function Ir(t,e,r){let o=JSON.parse(new TextDecoder().decode(await br(await v(t,e.jsonMetadataOffset,e.jsonMetadataLength),e.internalCompression))),n=o.cog_assets||{},i=Object.hasOwn(n,r)?o.cog_assets[r]:null;if(o.format!=="cog-assets-v1"||!i||!Number.isSafeInteger(i.offset)||!Number.isSafeInteger(i.length)||i.offset<0||i.length<8||i.offset+i.length>e.tileDataLength)throw new Error(`Invalid or missing PMTiles COG asset: ${r}`);return i}async function Er(t,e){let r={url:t},o=yr(await v(r,0,127));vr(r,o);let n=await Ir(r,o,e),i=o.tileDataOffset+n.offset;return{url:t,baseOffset:i,size:n.length,containerSize:r.size,etag:r.etag,full:r.full?.slice(i,i+n.length)}}async function Cr(t,e){let r=e===void 0?{url:t}:await Er(t,e);r.levels=new Map;let o=new DataView(await v(r,0,8)),n=o.getUint16(0);if(n!==18761&&n!==19789)throw new Error("Invalid TIFF byte order");if(r.little=n===18761,o.getUint16(2,r.little)!==42)throw new Error("Expected classic TIFF (BigTIFF is not supported)");let{base:i,minZoom:a,maxZoom:s}=await pr(r,o.getUint32(4,r.little)),f=20037508342789244e-9,l=i.left+i.resolution/2,u=i.left+(i.width-.5)*i.resolution,c=i.top-i.resolution/2,m=i.top-(i.height-.5)*i.resolution;return r.header={minZoom:a,maxZoom:s,tileType:i.elevation?0:2,minLon:l/f*180,maxLon:u/f*180,minLat:Math.atan(Math.sinh(m/f*Math.PI))*180/Math.PI,maxLat:Math.atan(Math.sinh(c/f*Math.PI))*180/Math.PI},{getHeader:wr.bind(null,r),getZxy:Mr.bind(null,r)}}var J={key:null,archive:null};async function Pr({data:t}){try{let e=JSON.stringify([t.url,t.asset]);J.key!==e&&(J.key=e,J.archive=Cr(t.url,t.asset));let r=await J.archive,o=t.z===void 0?await r.getHeader():await r.getZxy(t.z,t.x,t.y),n=[];o?.data&&n.push(o.data),o?.image&&n.push(o.image),self.postMessage(o,n)}catch(e){self.postMessage({error:{name:e.name,message:e.message}})}}var Tr=new TextDecoder;function Ar(t){if(!t)return!1;let e,r;for(e of t)for(r of e.primitives)if(r.targets||r.mode!==void 0&&r.mode!==4)return!0;return!1}function Vr(t){let e=new DataView(t),r=Tr,o,n,i,a,s;if(e.getUint32(0,!0)===1179937895){if(e.getUint32(4,!0)!==2||e.getUint32(8,!0)!==t.byteLength)throw new Error("Invalid GLB header");let f;for(n=12;n<t.byteLength;){if(n+8>t.byteLength)throw new Error("Truncated GLB chunk");if(i=e.getUint32(n,!0),a=e.getUint32(n+4,!0),n+=8,n+i>t.byteLength)throw new Error("Truncated GLB data");s=t.slice(n,n+i),a===1313821514&&(o=JSON.parse(r.decode(s))),a===5130562&&(f=s),n+=i}if(!o)throw new Error("Missing GLB JSON");f&&(o.buffers[0].binary=f)}else o=JSON.parse(r.decode(t));if(o.skins?.length||o.animations?.length||o.extensionsRequired?.length||Ar(o.meshes))throw new Error("Layer3D supports static triangle glTF models without required extensions");return o}async function Or(t,e){if(t.binary)return;let r=await fetch(new URL(t.uri,e).href);if(!r.ok)throw new Error(`Unable to load model buffer: HTTP ${r.status}`);t.binary=await r.arrayBuffer()}var Sr={premultiplyAlpha:"none",colorSpaceConversion:"none"};async function Fr(t,e,r){let o;if(r.bufferView!==void 0){let n=t.bufferViews[r.bufferView],i=t.buffers[n.buffer].binary;o=new Blob([i.slice(n.byteOffset||0,(n.byteOffset||0)+n.byteLength)],{type:r.mimeType})}else{let n=await fetch(new URL(r.uri,e).href);if(!n.ok)throw new Error(`Unable to load model texture: HTTP ${n.status}`);o=await n.blob()}return createImageBitmap(o,Sr)}async function Nr(t,e){let r=[],o;for(o of t.buffers||U)r.push(Or(o,e));await Promise.all(r);let n=[],i;for(i of t.images||U)n.push(Fr(t,e,i));return Promise.all(n)}var Ur=[["POSITION","position"],["NORMAL","normal"],["TEXCOORD_0","uv"]];var ct={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var Lr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4};function Gr(t,e,r){return e===Int8Array?t.getInt8(r):e===Uint8Array?t.getUint8(r):e===Int16Array?t.getInt16(r,!0):e===Uint16Array?t.getUint16(r,!0):e===Uint32Array?t.getUint32(r,!0):t.getFloat32(r,!0)}function mt(t,e,r,o,n,i,a,s,f,l){let u=t.bufferViews[a],c=e.BYTES_PER_ELEMENT,m=t.buffers[u.buffer].binary;if(l||=r*c,!m||l<r*c||s<0||(u.byteOffset||0)+u.byteLength>m.byteLength||(f-1)*l+r*c+s>u.byteLength)throw new Error("glTF accessor outside buffer view");let h=new DataView(m),p,g,x,M;for(p=0;p<f;p++){if(M=i?i[p]:p,i&&M>=n)throw new Error("Invalid sparse glTF index");for(g=0;g<r;g++)x=(u.byteOffset||0)+s+p*l+g*c,o[M*r+g]=Gr(h,e,x)}}function Br(t,e,r,o,n){let i=e.sparse,a=ct[i.indices.componentType];if(a!==Uint8Array&&a!==Uint16Array&&a!==Uint32Array)throw new Error("Invalid sparse glTF indices");let s=t.bufferViews[i.indices.bufferView],f=(s.byteOffset||0)+(i.indices.byteOffset||0);if(i.count>e.count||(i.indices.byteOffset||0)+i.count*a.BYTES_PER_ELEMENT>s.byteLength)throw new Error("Invalid sparse glTF indices");let l=new a(t.buffers[s.buffer].binary.slice(f,f+i.count*a.BYTES_PER_ELEMENT));mt(t,r,o,n,e.count,l,i.values.bufferView,i.values.byteOffset||0,i.count,0)}function Dr(t,e,r,o){let n=new Float32Array(r.length),i;for(i=0;i<r.length;i++)n[i]=t.normalized?Math.max(-1,r[i]/(e===Int8Array?127:e===Int16Array?32767:e===Uint8Array?255:e===Uint32Array?4294967295:65535)):r[i];return{data:n,size:o,indices:r}}function pt(t,e){let r=t.accessors[e],o=ct[r.componentType],n=Lr[r.type];if(!o||!n||!Number.isInteger(r.count)||r.count<0)throw new Error("Invalid glTF accessor");let i=new o(r.count*n);return r.bufferView!==void 0&&mt(t,o,n,i,r.count,null,r.bufferView,r.byteOffset||0,r.count,t.bufferViews[r.bufferView].byteStride),r.sparse&&Br(t,r,o,n,i),r.componentType===5126?{data:i,size:n}:Dr(r,o,i,n)}function kr(t,e){let r={},o,n;for([o,n]of Ur)e.attributes[o]!==void 0&&(r[n]=pt(t,e.attributes[o]));if(!r.position)throw new Error("glTF mesh has no positions");let i=r.position.data.length/3;if(r.position.size!==3||i<3)throw new Error("Invalid glTF vertex attributes");let a;for(a of Object.values(r))if(a.data.length/a.size!==i)throw new Error("Invalid glTF vertex attributes");return{attributes:r,vertexCount:i}}function Rr(t,e,r,o){if(e.indices!==void 0){let n=pt(t,e.indices);if(r.index={size:1,data:n.indices},!(n.indices instanceof Uint8Array||n.indices instanceof Uint16Array||n.indices instanceof Uint32Array)||n.size!==1||n.indices.length%3)throw new Error("Invalid glTF triangle indices");let i;for(i of n.indices)if(i>=o)throw new Error("Invalid glTF triangle indices")}else if(o%3)throw new Error("Incomplete glTF triangle")}function Zr(t,e){let r=new Float32Array(t.length),o,n,i,a,s,f,l,u,c,m,h,p,g,x,M,$;for(o=0;o<(e?.length||t.length/3);o+=3)for(n=e?e[o]:o,i=e?e[o+1]:o+1,a=e?e[o+2]:o+2,s=t[i*3]-t[n*3],f=t[i*3+1]-t[n*3+1],l=t[i*3+2]-t[n*3+2],u=t[a*3]-t[n*3],c=t[a*3+1]-t[n*3+1],m=t[a*3+2]-t[n*3+2],p=f*m-l*c,g=l*u-s*m,x=s*c-f*u,h=0;h<3;h++)M=h===0?n:h===1?i:a,r[M*3]+=p,r[M*3+1]+=g,r[M*3+2]+=x;for(o=0;o<r.length;o+=3)for($=Math.hypot(r[o],r[o+1],r[o+2])||1,h=0;h<3;h++)r[o+h]/=$;return r}function jr(t,e){let{attributes:r,vertexCount:o}=kr(t,e);return Rr(t,e,r,o),r.normal||(r.normal={size:3,data:Zr(r.position.data,r.index?.data)}),r.index?.data instanceof Uint8Array&&(r.index.data=Uint16Array.from(r.index.data)),e.preparedAttributes=r,r}function $r(t,e){let r=e.nodes.slice(),o=new Set,n=new Set,i=new Set,a,s,f,l,u;for(;r.length;)if(a=r.pop(),!o.has(a)){if(o.add(a),s=t.nodes[a],!s)throw new Error("Invalid glTF node");s.mesh!==void 0&&n.add(s.mesh);for(u of s.children||U)r.push(u)}for(a of n)for(f of t.meshes[a].primitives)for(l of Object.values(jr(t,f)))i.add(l.data.buffer);return[...i]}async function Hr(t){let e=await fetch(t);if(!e.ok)throw new Error(`Unable to load model: HTTP ${e.status}`);let r=Vr(await e.arrayBuffer()),o=r.scenes?.[r.scene||0];if(!o)throw new Error("Missing glTF scene");let n=await Nr(r,new URL(".",t).href),i=$r(r,o),a;for(a of n)i.push(a);return delete r.buffers,delete r.bufferViews,delete r.accessors,{description:r,images:n,transfers:i}}async function _r({data:t}){try{let e=await Hr(t.url);self.postMessage({description:e.description,images:e.images},e.transfers)}catch(e){self.postMessage({error:{name:e.name,message:e.message}})}}function zr(t){if(t.data.type==="model"){_r(t);return}if(t.data.type==="cog"){Pr(t);return}if(t.data.type==="vector"){Xe(t);return}try{let e=Yt(t.data),r=[e.positions.buffer,e.normals.buffer,e.colors.buffer,e.uvs.buffer];e.instanceOffsets&&r.push(e.instanceOffsets.buffer),self.postMessage(e,r)}catch(e){self.postMessage({error:{name:e.name,message:e.message}})}}self.addEventListener("message",zr);})();
|
|
2
2
|
//# sourceMappingURL=leaflet-city-mapper-worker.js.map
|