leaflet-city-mapper 0.0.5 → 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 +6874 -6304
- 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-lens.js +15 -3
- 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/collision/collectIntersections.js +16 -0
- package/src/collision/collider.js +3 -2
- package/src/collision/countCrossings.js +15 -0
- package/src/collision/insideMesh.js +4 -24
- package/src/collision/insideWalker.js +2 -2
- package/src/collision/readTriangle.js +7 -4
- package/src/collision/setTrafficNormal.js +9 -0
- package/src/collision/trafficCollision.js +4 -9
- package/src/collision/vertexCount.js +3 -0
- package/src/controls/cameraControls.js +6 -0
- 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/raster/setRasterOpacity.js +1 -1
- package/src/raster/setRasterZIndex.js +1 -1
- 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 +7 -17
- package/src/sources/buildAreaFeature.js +5 -24
- package/src/sources/buildAreaFeatures.js +14 -0
- package/src/sources/initVectorTiles.js +15 -0
- package/src/sources/isVectorTileSource.js +4 -0
- package/src/sources/matchesAreaTile.js +7 -0
- package/src/sources/prepareAreaGeometryJob.js +2 -11
- package/src/sources/projectAreaPolygons.js +15 -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/walk/animateWalker.js +2 -13
- package/src/walk/updateWalkerFrame.js +19 -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/acquireGeometryWorker.js +2 -5
- package/src/workers/buildAreaInWorker.js +3 -23
- package/src/workers/cogWorker.js +21 -0
- package/src/workers/createGeometryWorker.js +20 -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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/globals/geometryEmpty.js", "../src/triangulation/minimumX.js", "../src/triangulation/mergeHoles.js", "../src/triangulation/sortHoles.js", "../src/triangulation/cross.js", "../src/triangulation/equal.js", "../src/triangulation/clean.js", "../src/triangulation/isClockWise.js", "../src/triangulation/polygonRings.js", "../src/triangulation/inside.js", "../src/triangulation/insideHole.js", "../src/triangulation/on.js", "../src/triangulation/intersects.js", "../src/triangulation/crossesRing.js", "../src/triangulation/crossesBoundary.js", "../src/triangulation/connectHole.js", "../src/triangulation/containsVertex.js", "../src/triangulation/clipEars.js", "../src/triangulation/area.js", "../src/triangulation/validateArea.js", "../src/triangulation/triangulate.js", "../src/sources/groundOffset.js", "../src/geometry/appendAreaTriangle.js", "../src/geometry/buildProjectedPolygon.js", "../src/globals/triangleContexts.js", "../src/geometry/addGeneratedTriangle.js", "../src/geometry/generateTreeGeometry.js", "../src/colors/toSRGB.js", "../src/colors/hslChannel.js", "../src/colors/parseColor.js", "../src/globals/lampDirections.js", "../src/geometry/createLampRing.js", "../src/geometry/lampPostGeometry.js", "../src/geometry/quad.js", "../src/geometry/emitter.js", "../src/geometry/lightGeometry.js", "../src/globals/roundProfile.js", "../src/globals/ringDirections.js", "../src/geometry/createTreeRing.js", "../src/geometry/surface.js", "../src/geometry/validateTree.js", "../src/geometry/treeGeometry.js", "../src/geometry/buildProjectedPoint.js", "../src/geometry/instanceAreaGeometry.js", "../src/geometry/computeBounds.js", "../src/geometry/assembleAreaGeometry.js", "../src/workers/geometryWorker.js"],
|
|
4
|
-
"sourcesContent": ["export const geometryEmpty = [];\n", "export function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "export function mergeHoles(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "export function cross(a, b, c) {\r\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\r\n}\r\n", "export function equal(a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n}\r\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\n\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\r\nimport { isClockWise } from './isClockWise.js';\r\n\r\nexport function polygonRings(paths, vertices) {\r\n const rings = /* alloc */ [];\r\n let offset = 0, index, path, ring;\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n ring = clean(vertices.slice(offset, offset += path.length));\r\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\r\n rings.push(ring);\r\n }\r\n return rings;\r\n}\r\n", "export function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "export function on(p, q, r) {\r\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\r\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\r\n}\r\n", "import { equal } from './equal.js';\r\nimport { cross } from './cross.js';\r\nimport { on } from './on.js';\r\n\r\nexport function intersects(a, b, c, d) {\r\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\r\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\r\n return abC * abD < 0 && cdA * cdB < 0 ||\r\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\r\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\r\n}\r\n", "import { intersects } from './intersects.js';\n\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\r\nimport { insideHole } from './insideHole.js';\r\nimport { crossesBoundary } from './crossesBoundary.js';\r\n\r\nexport function connectHole(polygon, hole, rings, mid) {\r\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\r\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\r\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\r\n if (d >= distance) continue;\r\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\r\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\r\n if (crossesBoundary(a, b, polygon, rings)) continue;\r\n h2 = h; p2 = p; distance = d;\r\n }\r\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\r\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\r\n polygon[p2], ...polygon.slice(p2 + 1)];\r\n}\r\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\r\nimport { containsVertex } from './containsVertex.js';\r\n\r\nexport function clipEars(polygon) {\r\n const result = /* alloc */ [];\r\n let clipped, i, a, b, c, p;\r\n while (polygon.length > 3) {\r\n clipped = false;\r\n for (i = 0; i < polygon.length; i++) {\r\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\r\n if (cross(a, b, c) <= 1e-10) continue;\r\n if (containsVertex(polygon, a, b, c)) continue;\r\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\r\n }\r\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\r\n }\r\n if (cross(...polygon) > 1e-10) {\r\n const triangle = /* alloc */ [];\r\n for (p of polygon) triangle.push(p.index);\r\n result.push(triangle);\r\n }\r\n return result;\r\n}\r\n", "export function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\r\nimport { cross } from './cross.js';\r\n\r\nexport function validateArea(rings, vertices, result) {\r\n let holeArea = 0, actual = 0, i, triangle;\r\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\r\n const expected = area(rings[0]) - holeArea;\r\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\r\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n */\n\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "export function groundOffset(point) {\r\n return point.ground || 0;\r\n}\n", "import { groundOffset } from '../sources/groundOffset.js';\r\n\r\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\r\n const { backend: layer, positions, normals, colors, uvs } = context;\r\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\r\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\r\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\r\n const point = b, height = bh;\r\n b = c; bh = ch; c = point; ch = height;\r\n }\r\n positions.push(a.x, ah + groundOffset(a), -a.y,\r\n b.x, bh + groundOffset(b), -b.y,\r\n c.x, ch + groundOffset(c), -c.y);\r\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\r\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\r\n if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\r\n}\r\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { addTriangle } from './appendAreaTriangle.js';\r\nimport { isClockWise } from '../triangulation/isClockWise.js';\r\n\r\nexport function buildProjectedPolygon(context, paths, top, bottom, baseColor) {\r\n const points = /* alloc */ [];\r\n let path, point, a, b, c, index, sign, i, length, nx, nz;\r\n for (path of paths) for (point of path) points.push(point);\r\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\r\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\r\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\r\n }\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\r\n for (i = 0; i < path.length; i++) {\r\n a = path[i], b = path[(i + 1) % path.length];\r\n length = Math.hypot(b.x - a.x, b.y - a.y);\r\n if (!length) continue;\r\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\r\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\r\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\r\n }\r\n }\r\n}\r\n", "export const triangleContexts = [];\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\nimport { addTriangle } from './appendAreaTriangle.js';\n\nexport function addGeneratedTriangle(...args) {\r\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\n\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\nexport function generateTreeGeometry(context, generator, point, style) {\r\n triangleContexts.push(context);\r\n try {\r\n generator(point, style, addGeneratedTriangle);\r\n } finally {\r\n triangleContexts.pop();\r\n }\r\n}\n", "export function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "export function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./hslChannel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "export const lampDirections = [\r\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n];\r\n", "import { lampDirections } from '../globals/lampDirections.js';\n\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createLampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/** Schematic support and lamp head; wall-mounted fixtures do not get an invented pole. */\n\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\r\n if (typeof nx !== 'number') {\r\n addTriangle(a, height, b, height, c, height, ...nx, color);\r\n addTriangle(a, height, c, height, d, height, ...nx, color);\r\n } else {\r\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\r\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\r\n }\r\n}\r\n", "export function emitter(point, u, v, axis) {\r\n const r = 0.65;\r\n return /* alloc */ {\r\n x: point.x + (axis === 2 ? 0 : u * r),\r\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\r\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\r\n };\r\n}\r\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/** Three crossed emitter discs; illumination itself is evaluated on receiving surfaces. */\n\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "export const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "export const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\n\nimport { ring } from './createTreeRing.js';\n\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "export function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\r\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\r\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\r\n crownShape !== 'round' && crownShape !== 'cone') {\r\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\r\n }\r\n}\r\n", "import { roundProfile } from '../globals/roundProfile.js';\n\n\nimport { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createTreeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/** Low-poly tree, sharing the source block's buffers, picking and terrain offset. */\n\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { generateTreeGeometry } from './generateTreeGeometry.js';\r\nimport { lampPostGeometry } from './lampPostGeometry.js';\r\nimport { lightGeometry } from './lightGeometry.js';\r\nimport { treeGeometry } from './treeGeometry.js';\r\n\r\nexport function buildProjectedPoint(context, projected, style, baseColor, support) {\r\n const { top } = style;\r\n if (context.backend.options.nightLight) {\r\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\r\n if (style.poleRadius > 0 && !context.supports.has(support)) {\r\n generateTreeGeometry(context, lampPostGeometry, projected, style);\r\n context.supports.add(support);\r\n }\r\n generateTreeGeometry(context, lightGeometry, projected, style);\r\n context.lights.push(/* alloc */ {\r\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\r\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\r\n flux: style.lightFlux,\r\n });\r\n } else generateTreeGeometry(context, treeGeometry, projected, style);\r\n}\r\n", "/** Compact repeated features only when reconstructed float32 positions compare equal. */\r\nexport function instanceAreaGeometry(context) {\r\n const { positions, normals, colors, featureFaces } = context;\r\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\r\n const vertices = featureFaces[0].vertexEnd;\r\n const length = vertices * 3;\r\n if (!vertices || positions.length !== length * featureFaces.length) return context;\r\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\r\n const template = /* alloc */ new Float32Array(length);\r\n let i, instance, face, start;\r\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\r\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\r\n for (instance = 0; instance < featureFaces.length; instance++) {\r\n face = featureFaces[instance];\r\n start = instance * length;\r\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\r\n offsets[instance * 4] = originX + positions[start] - positions[0];\r\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\r\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\r\n offsets[instance * 4 + 3] = instance * vertices;\r\n for (i = 0; i < length; i++) {\r\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\r\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\r\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\r\n }\r\n }\r\n return /* alloc */ {\r\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\r\n instanceOffsets: offsets,\r\n };\r\n}\r\n", "/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i, x, y, z;\n for (i = 0; i < data.length; i += 3) {\n x = data[i], y = data[i + 1], z = data[i + 2];\n min[0] = Math.min(min[0], x), max[0] = Math.max(max[0], x);\n min[1] = Math.min(min[1], y), max[1] = Math.max(max[1], y);\n min[2] = Math.min(min[2], z), max[2] = Math.max(max[2], z);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radiusSquared = 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n x = data[i] - center[0], y = data[i + 1] - center[1], z = data[i + 2] - center[2];\n radiusSquared = Math.max(radiusSquared, x * x + y * y + z * z);\n }\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2\n : Math.sqrt(radiusSquared);\n // Preserve hypot's scaling for extreme coordinates in non-Float32 CPU geometry.\n if (!instances && (radiusSquared === Infinity || radiusSquared < Number.MIN_VALUE / Number.EPSILON)) {\n radius = 0;\n for (i = 0; i < data.length; i += 3) {\n radius = Math.max(radius, Math.hypot(\n data[i] - center[0], data[i + 1] - center[1], data[i + 2] - center[2]));\n }\n }\n geometry.bounds = /* alloc */ { min, max, center, radius };\n}\n", "import { buildProjectedPolygon } from './buildProjectedPolygon.js';\r\nimport { buildProjectedPoint } from './buildProjectedPoint.js';\r\nimport { instanceAreaGeometry } from './instanceAreaGeometry.js';\r\nimport { computeBounds } from './computeBounds.js';\r\n\r\nexport function assembleAreaGeometry({ jobs, nightLight }) {\r\n const context = /* alloc */ {\r\n backend: /* alloc */ { options: /* alloc */ { nightLight } },\r\n positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],\r\n featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),\r\n };\r\n let job, polygon, start, end;\r\n for (job of jobs) {\r\n start = context.positions.length / 3;\r\n if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);\r\n for (polygon of job.polygons) {\r\n buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);\r\n }\r\n end = context.positions.length / 3;\r\n context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });\r\n }\r\n const data = instanceAreaGeometry(context);\r\n const result = /* alloc */ {\r\n positions: /* alloc */ new Float32Array(data.positions),\r\n normals: /* alloc */ new Float32Array(data.normals),\r\n colors: /* alloc */ new Float32Array(data.colors),\r\n uvs: /* alloc */ new Float32Array(context.uvs),\r\n instanceOffsets: data.instanceOffsets,\r\n ranges: context.featureFaces,\r\n lights: context.lights,\r\n };\r\n if (result.positions.length) {\r\n const geometry = /* alloc */ { attributes: /* alloc */ {\r\n position: /* alloc */ { data: result.positions },\r\n instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,\r\n } };\r\n computeBounds(geometry);\r\n result.bounds = geometry.bounds;\r\n }\r\n return result;\r\n}\r\n", "import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';\r\n\r\nexport function onGeometryMessage(event) {\r\n try {\r\n const data = assembleAreaGeometry(event.data);\r\n const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];\r\n if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);\r\n self.postMessage(data, transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n\r\nself.addEventListener('message', onGeometryMessage);\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ring", "ring", "ring", "area", "ring", "ring", "ring", "ring", "addTriangle", "addTriangle", "addTriangle", "ring", "addTriangle", "ring", "addTriangle", "ring"]
|
|
3
|
+
"sources": ["../src/globals/geometryEmpty.js", "../src/triangulation/minimumX.js", "../src/triangulation/mergeHoles.js", "../src/triangulation/sortHoles.js", "../src/triangulation/cross.js", "../src/triangulation/equal.js", "../src/triangulation/clean.js", "../src/triangulation/isClockWise.js", "../src/triangulation/polygonRings.js", "../src/triangulation/inside.js", "../src/triangulation/insideHole.js", "../src/triangulation/on.js", "../src/triangulation/intersects.js", "../src/triangulation/crossesRing.js", "../src/triangulation/crossesBoundary.js", "../src/triangulation/connectHole.js", "../src/triangulation/containsVertex.js", "../src/triangulation/clipEars.js", "../src/triangulation/area.js", "../src/triangulation/validateArea.js", "../src/triangulation/triangulate.js", "../src/sources/groundOffset.js", "../src/geometry/appendAreaTriangle.js", "../src/geometry/buildProjectedPolygon.js", "../src/globals/triangleContexts.js", "../src/geometry/addGeneratedTriangle.js", "../src/geometry/generateTreeGeometry.js", "../src/colors/toSRGB.js", "../src/colors/hslChannel.js", "../src/colors/parseColor.js", "../src/globals/lampDirections.js", "../src/geometry/createLampRing.js", "../src/geometry/lampPostGeometry.js", "../src/geometry/quad.js", "../src/geometry/emitter.js", "../src/geometry/lightGeometry.js", "../src/globals/roundProfile.js", "../src/globals/ringDirections.js", "../src/geometry/createTreeRing.js", "../src/geometry/surface.js", "../src/geometry/validateTree.js", "../src/geometry/treeGeometry.js", "../src/geometry/buildProjectedPoint.js", "../src/geometry/instanceAreaGeometry.js", "../src/geometry/computeBounds.js", "../src/geometry/assembleAreaGeometry.js", "../src/mvt/createMvtReader.js", "../src/mvt/takeMvtBytes.js", "../src/mvt/readMvtInteger.js", "../src/mvt/readMvtNumber.js", "../src/mvt/readMvtField.js", "../src/mvt/expectMvtWire.js", "../src/mvt/numericMvtValue.js", "../src/mvt/finishMvtPath.js", "../src/mvt/appendMvtCoordinates.js", "../src/mvt/beginMvtPath.js", "../src/mvt/closeMvtPath.js", "../src/mvt/readMvtGeometry.js", "../src/mvt/readMvtMessage.js", "../src/mvt/readMvtNumbers.js", "../src/mvt/skipMvtField.js", "../src/mvt/readMvtFeature.js", "../src/globals/mvtTextDecoder.js", "../src/mvt/readMvtString.js", "../src/mvt/readMvtKnownValue.js", "../src/mvt/readMvtValue.js", "../src/mvt/readMvtLayer.js", "../src/mvt/decodeVectorTile.js", "../src/vector-tiles/vectorStyleDependencies.js", "../src/vector-style/evaluateBoolean.js", "../src/vector-style/evaluateCoalesceOrCase.js", "../src/vector-style/evaluateInput.js", "../src/vector-style/evaluateComparison.js", "../src/globals/vectorStyleNamedColors.js", "../src/vector-style/parseFunctionalColor.js", "../src/vector-style/parseHexColor.js", "../src/vector-style/styleColor.js", "../src/vector-style/evaluateInterpolate.js", "../src/vector-style/arrayContainsRange.js", "../src/vector-style/evaluateMembership.js", "../src/vector-style/evaluateIExpression.js", "../src/vector-style/evaluateMath.js", "../src/vector-style/evaluateMatch.js", "../src/vector-style/evaluateNegation.js", "../src/vector-style/evaluatePrimitive.js", "../src/vector-style/evaluateStep.js", "../src/vector-style/evaluateToExpression.js", "../src/vector-style/evaluateStyle.js", "../src/vector-style/visibleStyle.js", "../src/vector-tiles/vectorFeatureZoom.js", "../src/vector-tiles/projectVectorPoint.js", "../src/vector-tiles/vectorLabelProperty.js", "../src/vector-tiles/vectorStyleValue.js", "../src/vector-tiles/vectorStraightRun.js", "../src/vector-tiles/vectorLabelAnchors.js", "../src/vector-tiles/prepareVectorLabel.js", "../src/vector-style/readPaintValue.js", "../src/vector-style/fillVectorPaint.js", "../src/vector-style/scaleDashArray.js", "../src/vector-style/lineVectorPaint.js", "../src/vector-style/vectorPaint.js", "../src/vector-tiles/vectorFeaturePaint.js", "../src/mvt/mvtEdgeX.js", "../src/mvt/addMvtCrossings.js", "../src/mvt/mergeMvtActiveEdges.js", "../src/mvt/sortMvtActiveEdges.js", "../src/mvt/appendMvtBandTriangles.js", "../src/mvt/finiteMvtCoordinate.js", "../src/mvt/collectMvtEdges.js", "../src/mvt/sortedMvtLevels.js", "../src/mvt/tessellateVectorRings.js", "../src/mvt/isMvtFallbackError.js", "../src/mvt/appendMvtPolygonTriangles.js", "../src/mvt/groupMvtPolygons.js", "../src/mvt/mvtPathsVertices.js", "../src/mvt/mvtPolygonPaths.js", "../src/mvt/triangulateVectorRings.js", "../src/vector-tiles/simplifyVectorPath.js", "../src/vector-tiles/projectVectorTriangles.js", "../src/vector-tiles/projectVectorPaths.js", "../src/vector-tiles/vectorTolerance.js", "../src/vector-tiles/vectorFeaturePaths.js", "../src/vector-tiles/appendVectorBatch.js", "../src/vector-tiles/prepareVectorStyleLayer.js", "../src/vector-tiles/prepareVectorTile.js", "../src/workers/vectorTileWorker.js", "../src/cog/validateCogRange.js", "../src/cog/validateCogContentRange.js", "../src/cog/invalidCogFullResponse.js", "../src/cog/validateCogResponse.js", "../src/cog/readCogBody.js", "../src/cog/readCog.js", "../src/globals/cogTags.js", "../src/cog/readCogTag.js", "../src/cog/readCogDirectory.js", "../src/cog/validCogDimensions.js", "../src/cog/validCogEncoding.js", "../src/cog/getCogProfile.js", "../src/cog/hasCogProjection.js", "../src/cog/finiteCogValues.js", "../src/cog/validCogGeoArrays.js", "../src/cog/getCogBase.js", "../src/cog/validCogGrid.js", "../src/cog/validateCogOffsets.js", "../src/cog/readCogLevel.js", "../src/cog/readCogDirectories.js", "../src/cog/decodeCogTile.js", "../src/cog/readCogBlock.js", "../src/cog/getElevationTile.js", "../src/cog/getColorTile.js", "../src/cog/validCogTileCoordinates.js", "../src/cog/getCogTile.js", "../src/cog/getCogHeader.js", "../src/globals/headerOffsets.js", "../src/globals/headerFlags.js", "../src/globals/headerBounds.js", "../src/archives/decodeHeader.js", "../src/cog/validateCogContainer.js", "../src/archives/decompress.js", "../src/cog/getCogAssetEntry.js", "../src/cog/openCogAsset.js", "../src/cog/openCog.js", "../src/globals/workerCogSource.js", "../src/workers/cogWorker.js", "../src/globals/geometryDecoder.js", "../src/models/hasUnsupportedPrimitives.js", "../src/models/decodeModel.js", "../src/models/loadBuffer.js", "../src/globals/geometryImageOptions.js", "../src/textures/loadModelImage.js", "../src/models/loadModelResources.js", "../src/globals/geometrySemantics.js", "../src/globals/types.js", "../src/globals/sizes.js", "../src/models/readAccessorValue.js", "../src/models/readAccessorValues.js", "../src/models/readSparseAccessor.js", "../src/models/normalizeAccessor.js", "../src/models/readAccessor.js", "../src/models/readModelAttributes.js", "../src/models/readModelIndices.js", "../src/geometry/vertexNormals.js", "../src/models/prepareModelPrimitive.js", "../src/models/prepareModelGeometry.js", "../src/models/prepareModel.js", "../src/workers/modelWorker.js", "../src/workers/geometryWorker.js"],
|
|
4
|
+
"sourcesContent": ["export const geometryEmpty = [];\n", "export function minimumX(ring) {\n let minimum = Infinity;\n let point;\n for (point of ring) minimum = Math.min(minimum, point.x);\n return minimum;\n}\n", "export function mergeHoles(source, target, start, width) {\r\n const middle = Math.min(start + width, source.length), end = Math.min(start + width * 2, source.length);\r\n let left = start, right = middle, output;\r\n for (output = start; output < end; output++) {\r\n if (left < middle && (right >= end || source[left].x <= source[right].x)) {\r\n target[output] = source[left++];\r\n } else {\r\n target[output] = source[right++];\r\n }\r\n }\r\n}\r\n", "import { minimumX } from './minimumX.js';\nimport { mergeHoles } from './mergeHoles.js';\n\nexport function sortHoles(holes) {\n if (holes.length < 2) return holes;\n const buffer = /* alloc */ new Array(holes.length);\n const entries = /* alloc */ [];\n let ring, width, start, previous, i;\n for (ring of holes) entries.push(/* alloc */ { ring, x: minimumX(ring) });\n let source = entries, target = buffer;\n for (width = 1; width < entries.length; width *= 2) {\n for (start = 0; start < entries.length; start += width * 2) {\n mergeHoles(source, target, start, width);\n }\n previous = source;\n source = target;\n target = previous;\n }\n for (i = 0; i < holes.length; i++) holes[i] = source[i].ring;\n return holes;\n}\n", "export function cross(a, b, c) {\r\n return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);\r\n}\r\n", "export function equal(a, b) {\r\n return a.x === b.x && a.y === b.y;\r\n}\r\n", "import { cross } from './cross.js';\nimport { equal } from './equal.js';\n\nexport function clean(ring) {\n let changed = true;\n let i, a, b, c;\n while (changed && ring.length > 3) {\n changed = false;\n for (i = 0; i < ring.length; i++) {\n a = ring[(i + ring.length - 1) % ring.length], b = ring[i], c = ring[(i + 1) % ring.length];\n if (equal(a, b) || Math.abs(cross(a, b, c)) < 1e-10) {\n ring.splice(i, 1); changed = true; break;\n }\n }\n }\n if (ring.length < 3) throw /* alloc */ new Error('Degenerate polygon ring');\n return ring;\n}\n", "/**\n * @returns {boolean} Whether the `{x, y}` points are in clockwise order.\n */\n\nexport function isClockWise(points) {\n let area = 0;\n let i, a, b;\n for (i = 0; i < points.length; i++) {\n a = points[i], b = points[(i + 1) % points.length];\n area += a.x * b.y - b.x * a.y;\n }\n return area < 0;\n}\n", "import { clean } from './clean.js';\r\nimport { isClockWise } from './isClockWise.js';\r\n\r\nexport function polygonRings(paths, vertices) {\r\n const rings = /* alloc */ [];\r\n let offset = 0, index, path, ring;\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n ring = clean(vertices.slice(offset, offset += path.length));\r\n if (isClockWise(ring) !== Boolean(index)) ring.reverse();\r\n rings.push(ring);\r\n }\r\n return rings;\r\n}\r\n", "export function inside(point, ring) {\n let result = false;\n let i, j, a, b;\n for (i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n a = ring[i], b = ring[j];\n if ((a.y > point.y) !== (b.y > point.y) &&\n point.x < (b.x - a.x) * (point.y - a.y) / (b.y - a.y) + a.x) result = !result;\n }\n return result;\n}\n", "import { inside } from './inside.js';\n\nexport function insideHole(point, rings) {\n let i;\n for (i = 1; i < rings.length; i++) if (inside(point, rings[i])) return true;\n return false;\n}\n", "export function on(p, q, r) {\r\n return Math.min(p.x, q.x) <= r.x && r.x <= Math.max(p.x, q.x) &&\r\n Math.min(p.y, q.y) <= r.y && r.y <= Math.max(p.y, q.y);\r\n}\r\n", "import { equal } from './equal.js';\r\nimport { cross } from './cross.js';\r\nimport { on } from './on.js';\r\n\r\nexport function intersects(a, b, c, d) {\r\n if (equal(a, c) || equal(a, d) || equal(b, c) || equal(b, d)) return false;\r\n const abC = cross(a, b, c), abD = cross(a, b, d), cdA = cross(c, d, a), cdB = cross(c, d, b);\r\n return abC * abD < 0 && cdA * cdB < 0 ||\r\n abC === 0 && on(a, b, c) || abD === 0 && on(a, b, d) ||\r\n cdA === 0 && on(c, d, a) || cdB === 0 && on(c, d, b);\r\n}\r\n", "import { intersects } from './intersects.js';\n\nexport function crossesRing(a, b, ring) {\n let i;\n for (i = 0; i < ring.length; i++) {\n if (intersects(a, b, ring[i], ring[(i + 1) % ring.length])) return true;\n }\n return false;\n}\n", "import { crossesRing } from './crossesRing.js';\n\nexport function crossesBoundary(a, b, polygon, rings) {\n if (crossesRing(a, b, polygon)) return true;\n let i;\n for (i = 1; i < rings.length; i++) if (crossesRing(a, b, rings[i])) return true;\n return false;\n}\n", "import { inside } from './inside.js';\r\nimport { insideHole } from './insideHole.js';\r\nimport { crossesBoundary } from './crossesBoundary.js';\r\n\r\nexport function connectHole(polygon, hole, rings, mid) {\r\n let h2 = -1, p2 = -1, distance = Infinity, h, p, a, b, d;\r\n for (h = 0; h < hole.length; h++) for (p = 0; p < polygon.length; p++) {\r\n a = hole[h], b = polygon[p], d = (a.x - b.x) ** 2 + (a.y - b.y) ** 2;\r\n if (d >= distance) continue;\r\n mid.x = (a.x + b.x) / 2; mid.y = (a.y + b.y) / 2;\r\n if (!inside(mid, rings[0]) || insideHole(mid, rings)) continue;\r\n if (crossesBoundary(a, b, polygon, rings)) continue;\r\n h2 = h; p2 = p; distance = d;\r\n }\r\n if (h2 < 0) throw /* alloc */ new Error('Unable to connect polygon hole');\r\n return /* alloc */ [...polygon.slice(0, p2 + 1), ...hole.slice(h2), ...hole.slice(0, h2 + 1),\r\n polygon[p2], ...polygon.slice(p2 + 1)];\r\n}\r\n", "import { equal } from './equal.js';\nimport { cross } from './cross.js';\n\nexport function containsVertex(polygon, a, b, c) {\n let p;\n for (p of polygon) {\n if (!equal(p, a) && !equal(p, b) && !equal(p, c) &&\n cross(a, b, p) >= 0 && cross(b, c, p) >= 0 && cross(c, a, p) >= 0) return true;\n }\n return false;\n}\n", "import { cross } from './cross.js';\r\nimport { containsVertex } from './containsVertex.js';\r\n\r\nexport function clipEars(polygon) {\r\n const result = /* alloc */ [];\r\n let clipped, i, a, b, c, p;\r\n while (polygon.length > 3) {\r\n clipped = false;\r\n for (i = 0; i < polygon.length; i++) {\r\n a = polygon[(i + polygon.length - 1) % polygon.length], b = polygon[i], c = polygon[(i + 1) % polygon.length];\r\n if (cross(a, b, c) <= 1e-10) continue;\r\n if (containsVertex(polygon, a, b, c)) continue;\r\n result.push(/* alloc */ [a.index, b.index, c.index]); polygon.splice(i, 1); clipped = true; break;\r\n }\r\n if (!clipped) throw /* alloc */ new Error('Unable to triangulate polygon: invalid or self-intersecting rings');\r\n }\r\n if (cross(...polygon) > 1e-10) {\r\n const triangle = /* alloc */ [];\r\n for (p of polygon) triangle.push(p.index);\r\n result.push(triangle);\r\n }\r\n return result;\r\n}\r\n", "export function area(ring) {\n let sum = 0;\n let i, p, q;\n for (i = 0; i < ring.length; i++) {\n p = ring[i], q = ring[(i + 1) % ring.length];\n sum += p.x * q.y - q.x * p.y;\n }\n return Math.abs(sum) / 2;\n}\n", "import { area } from './area.js';\r\nimport { cross } from './cross.js';\r\n\r\nexport function validateArea(rings, vertices, result) {\r\n let holeArea = 0, actual = 0, i, triangle;\r\n for (i = 1; i < rings.length; i++) holeArea += area(rings[i]);\r\n const expected = area(rings[0]) - holeArea;\r\n for (triangle of result) actual += cross(vertices[triangle[0]], vertices[triangle[1]], vertices[triangle[2]]) / 2;\r\n if (expected <= 0 || Math.abs(actual - expected) > Math.max(1e-7, expected * 1e-8)) throw /* alloc */ new Error('Polygon triangulation area mismatch');\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\nimport { sortHoles } from './sortHoles.js';\nimport { polygonRings } from './polygonRings.js';\nimport { connectHole } from './connectHole.js';\nimport { clipEars } from './clipEars.js';\nimport { validateArea } from './validateArea.js';\n\n\n/**\n * Triangulates a polygon given as `{x, y}` points.\n * Rings omit the repeated closing point; winding is normalized internally.\n * Vertex indices remain relative to the original inputs after duplicate/collinear\n * cleanup. Hole bridges duplicate endpoints, not source vertices.\n * @param {Object[]} contour Outer boundary.\n * @param {Object[][]} [holes] Interior boundaries.\n *\n * @returns {number[][]} Triangles as indices in `[...contour, ...holes.flat()]`.\n */\n\nexport function triangulate(contour, holes = geometryEmpty) {\n const paths = /* alloc */ [contour, ...holes];\n const points = paths.flat();\n let p, index, hole;\n for (p of points) {\n if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) throw /* alloc */ new Error('Invalid polygon coordinates');\n }\n // Translate near the origin to avoid cancellation with geographic coordinates.\n const vertices = /* alloc */ [];\n for (index = 0; index < points.length; index++) {\n p = points[index];\n vertices.push(/* alloc */ { x: p.x - contour[0].x, y: p.y - contour[0].y, index });\n }\n // Remove zero-area corners before connecting holes; keep original vertex indices.\n const rings = polygonRings(paths, vertices);\n let polygon = rings[0].slice();\n // A bridge must stay inside the outer boundary, outside every hole, and cross no edge.\n // ponytail: quadratic ear clipping for building footprints; use spatial indexing for large rings.\n const holesToConnect = sortHoles(rings.slice(1));\n const mid = holesToConnect.length ? /* alloc */ { x: 0, y: 0 } : null;\n for (hole of holesToConnect) {\n polygon = connectHole(polygon, hole, rings, mid);\n }\n // Clip a convex corner only when no other vertex is inside/on its triangle.\n const result = clipEars(polygon);\n // Reject incomplete coverage instead of silently emitting a partial roof.\n validateArea(rings, vertices, result);\n return result;\n}\n", "export function groundOffset(point) {\r\n return point.ground || 0;\r\n}\n", "import { groundOffset } from '../sources/groundOffset.js';\r\n\r\nexport function addTriangle(context, a, ah, b, bh, c, ch, nx, ny, nz, color) {\r\n const { backend: layer, positions, normals, colors, uvs } = context;\r\n const ux = b.x - a.x, uy = bh - ah, uz = a.y - b.y;\r\n const vx = c.x - a.x, vy = ch - ah, vz = a.y - c.y;\r\n if ((uy * vz - uz * vy) * nx + (uz * vx - ux * vz) * ny + (ux * vy - uy * vx) * nz < 0) {\r\n const point = b, height = bh;\r\n b = c; bh = ch; c = point; ch = height;\r\n }\r\n positions.push(a.x, ah + groundOffset(a), -a.y,\r\n b.x, bh + groundOffset(b), -b.y,\r\n c.x, ch + groundOffset(c), -c.y);\r\n normals.push(nx, ny, nz, nx, ny, nz, nx, ny, nz);\r\n colors.push(color.r, color.g, color.b, color.r, color.g, color.b, color.r, color.g, color.b);\r\n if (layer.options.nightLight) uvs.push(...a.uv, ...b.uv, ...c.uv);\r\n}\r\n", "import { triangulate } from '../triangulation/triangulate.js';\r\nimport { addTriangle } from './appendAreaTriangle.js';\r\nimport { isClockWise } from '../triangulation/isClockWise.js';\r\n\r\nexport function buildProjectedPolygon(context, paths, top, bottom, baseColor) {\r\n const points = /* alloc */ [];\r\n let path, point, a, b, c, index, sign, i, length, nx, nz;\r\n for (path of paths) for (point of path) points.push(point);\r\n for ([a, b, c] of triangulate(paths[0], paths.slice(1))) {\r\n addTriangle(context, points[a], top, points[b], top, points[c], top, 0, 1, 0, baseColor);\r\n if (bottom > 0) addTriangle(context, points[a], bottom, points[b], bottom, points[c], bottom, 0, -1, 0, baseColor);\r\n }\r\n for (index = 0; index < paths.length; index++) {\r\n path = paths[index];\r\n sign = isClockWise(path) === (index === 0) ? -1 : 1;\r\n for (i = 0; i < path.length; i++) {\r\n a = path[i], b = path[(i + 1) % path.length];\r\n length = Math.hypot(b.x - a.x, b.y - a.y);\r\n if (!length) continue;\r\n nx = sign * (b.y - a.y) / length, nz = sign * (b.x - a.x) / length;\r\n addTriangle(context, a, bottom, b, bottom, b, top, nx, 0, nz, baseColor);\r\n addTriangle(context, a, bottom, b, top, a, top, nx, 0, nz, baseColor);\r\n }\r\n }\r\n}\r\n", "export const triangleContexts = [];\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\nimport { addTriangle } from './appendAreaTriangle.js';\n\nexport function addGeneratedTriangle(...args) {\r\n addTriangle(triangleContexts[triangleContexts.length - 1], ...args);\r\n}\n", "import { triangleContexts } from '../globals/triangleContexts.js';\n\n\nimport { addGeneratedTriangle } from './addGeneratedTriangle.js';\n\nexport function generateTreeGeometry(context, generator, point, style) {\r\n triangleContexts.push(context);\r\n try {\r\n generator(point, style, addGeneratedTriangle);\r\n } finally {\r\n triangleContexts.pop();\r\n }\r\n}\n", "export function toSRGB(value) {\n return value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055;\n}\n", "export function channel(n, h, l, a) {\n const k = (n + h * 12) % 12;\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n}\n", "import { toSRGB } from \"./toSRGB.js\";\nimport { channel } from \"./hslChannel.js\";\n\n/**\n * HSL inputs are linear-space to preserve the original building styling.\n * Numeric/CSS/RGB inputs are already sRGB; CSS alpha is not used for extrusion.\n * @param {number|string|Object} value 0xRRGGBB, CSS color, {r,g,b}, or {h,s,l} in 0..1.\n * @returns {Object} sRGB {r,g,b} components in 0..1.\n */\n\nexport function parseColor(value) {\n if (value && typeof value === 'object' && 'h' in value) {\n const a = value.s * Math.min(value.l, 1 - value.l);\n return /* alloc */ {\n r: toSRGB(channel(0, value.h, value.l, a)),\n g: toSRGB(channel(8, value.h, value.l, a)),\n b: toSRGB(channel(4, value.h, value.l, a))\n };\n }\n if (value && typeof value === 'object' && 'r' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return /* alloc */ {\n r: (value >> 16 & 255) / 255,\n g: (value >> 8 & 255) / 255,\n b: (value & 255) / 255,\n };\n }\n if (typeof value !== 'string' || !CSS.supports('color', value)) {\n throw /* alloc */ new Error('Invalid 3D color');\n }\n const context = document.createElement('canvas').getContext('2d');\n context.fillStyle = value;\n context.fillRect(0, 0, 1, 1);\n const [r, g, b] = context.getImageData(0, 0, 1, 1).data;\n return /* alloc */ {\n r: r / 255,\n g: g / 255,\n b: b / 255\n };\n}\n", "export const lampDirections = [\r\n { x: Math.cos(0 * Math.PI / 3), y: Math.sin(0 * Math.PI / 3), nx: Math.cos(0.5 * Math.PI / 3), nz: -Math.sin(0.5 * Math.PI / 3) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n { 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) },\r\n];\r\n", "import { lampDirections } from '../globals/lampDirections.js';\n\nexport function ring(point, radius) {\n const points = /* alloc */ new Array(lampDirections.length);\n let i;\n for (i = 0; i < points.length; i++) {\n points[i] = /* alloc */ {\n x: point.x + lampDirections[i].x * radius,\n y: point.y + lampDirections[i].y * radius, ground: point.ground,\n uv: /* alloc */ [3, 3],\n };\n }\n return points;\n}\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createLampRing.js';\nimport { lampDirections } from '../globals/lampDirections.js';\n\n/** Schematic support and lamp head; wall-mounted fixtures do not get an invented pole. */\n\nexport function lampPostGeometry(point, style, addTriangle) {\n const color = parseColor(0x50565a), radius = style.poleRadius;\n if (!Number.isFinite(radius) || radius <= 0) {\n throw /* alloc */ new Error('Invalid lamp pole radius');\n }\n const center = /* alloc */ {\n ...point, uv: /* alloc */ [3, 3],\n };\n let r, low, high, points, i, a, b, nx, nz, section;\n for (section = 0; section < 2; section++) {\n r = section ? radius * 2.5 : radius;\n low = section ? style.top - 0.25 : 0;\n high = section ? style.top + 0.15 : style.top;\n points = ring(point, r);\n for (i = 0; i < 6; i++) {\n a = points[i], b = points[(i + 1) % 6];\n nx = lampDirections[i].nx, nz = lampDirections[i].nz;\n addTriangle(a, low, b, low, b, high, nx, 0, nz, color);\n addTriangle(a, low, b, high, a, high, nx, 0, nz, color);\n addTriangle(center, high, a, high, b, high, 0, 1, 0, color);\n addTriangle(center, low, b, low, a, low, 0, -1, 0, color);\n }\n }\n}\n", "export function quad(addTriangle, color, a, b, c, d, height, nx, ny, nz) {\r\n if (typeof nx !== 'number') {\r\n addTriangle(a, height, b, height, c, height, ...nx, color);\r\n addTriangle(a, height, c, height, d, height, ...nx, color);\r\n } else {\r\n addTriangle(a, height, b, height, c, height, nx, ny, nz, color);\r\n addTriangle(a, height, c, height, d, height, nx, ny, nz, color);\r\n }\r\n}\r\n", "export function emitter(point, u, v, axis) {\r\n const r = 0.65;\r\n return /* alloc */ {\r\n x: point.x + (axis === 2 ? 0 : u * r),\r\n y: point.y + (axis === 1 ? 0 : axis === 2 ? u * r : v * r),\r\n ground: point.ground + (axis === 0 ? 0 : v * r), uv: /* alloc */ [u, v],\r\n };\r\n}\r\n", "import { parseColor } from \"../colors/parseColor.js\";\nimport { quad } from './quad.js';\nimport { emitter } from './emitter.js';\n\n/** Three crossed emitter discs; illumination itself is evaluated on receiving surfaces. */\n\nexport function lightGeometry(point, style, addTriangle) {\n if (!Number.isFinite(style.lightRadius) || style.lightRadius <= 0) throw /* alloc */ new Error('Invalid light radius');\n const color = parseColor(style.color);\n let axis;\n for (axis = 0; axis < 3; axis++) {\n quad(addTriangle, color, emitter(point, -1, -1, axis), emitter(point, 1, -1, axis), emitter(point, 1, 1, axis), emitter(point, -1, 1, axis),\n style.top, axis === 2 ? 1 : 0, axis === 0 ? 1 : 0, axis === 1 ? 1 : 0);\n }\n}\n", "export const roundProfile = [\n [0, 0],\n [0.35, 0.8],\n [0.6, 1],\n [0.85, 0.7],\n [1, 0]\n];\n", "export const ringDirections = [{\n x: Math.cos(0 * Math.PI / 4),\n y: Math.sin(0 * Math.PI / 4),\n nx: Math.cos((0 + 0.5) * Math.PI / 4),\n nz: -Math.sin((0 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(1 * Math.PI / 4),\n y: Math.sin(1 * Math.PI / 4),\n nx: Math.cos((1 + 0.5) * Math.PI / 4),\n nz: -Math.sin((1 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(2 * Math.PI / 4),\n y: Math.sin(2 * Math.PI / 4),\n nx: Math.cos((2 + 0.5) * Math.PI / 4),\n nz: -Math.sin((2 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(3 * Math.PI / 4),\n y: Math.sin(3 * Math.PI / 4),\n nx: Math.cos((3 + 0.5) * Math.PI / 4),\n nz: -Math.sin((3 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(4 * Math.PI / 4),\n y: Math.sin(4 * Math.PI / 4),\n nx: Math.cos((4 + 0.5) * Math.PI / 4),\n nz: -Math.sin((4 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(5 * Math.PI / 4),\n y: Math.sin(5 * Math.PI / 4),\n nx: Math.cos((5 + 0.5) * Math.PI / 4),\n nz: -Math.sin((5 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(6 * Math.PI / 4),\n y: Math.sin(6 * Math.PI / 4),\n nx: Math.cos((6 + 0.5) * Math.PI / 4),\n nz: -Math.sin((6 + 0.5) * Math.PI / 4)\n },\n {\n x: Math.cos(7 * Math.PI / 4),\n y: Math.sin(7 * Math.PI / 4),\n nx: Math.cos((7 + 0.5) * Math.PI / 4),\n nz: -Math.sin((7 + 0.5) * Math.PI / 4)\n },\n];\n", "import { ringDirections } from '../globals/ringDirections.js';\n\n\nexport function ring(point, radius) {\n const result = /* alloc */ new Array(ringDirections.length);\n let i;\n for (i = 0; i < result.length; i++) {\n result[i] = /* alloc */ {\n x: point.x + ringDirections[i].x * radius,\n y: point.y + ringDirections[i].y * radius,\n ground: point.ground,\n };\n }\n return result;\n}\n", "import { ringDirections } from '../globals/ringDirections.js';\n\nimport { ring } from './createTreeRing.js';\n\nexport function surface(point, addTriangle, lowRadius, low, highRadius, high, color) {\n const lower = ring(point, lowRadius), upper = ring(point, highRadius);\n let i, next, slope, length, nx, nz, ny, normalX, normalZ;\n for (i = 0; i < 8; i++) {\n next = (i + 1) % 8;\n slope = (lowRadius - highRadius) / (high - low);\n length = Math.hypot(1, slope);\n ({ nx, nz } = ringDirections[i]);\n ny = slope / length;\n normalX = nx / length, normalZ = nz / length;\n if (lowRadius) addTriangle(lower[i], low, lower[next], low, upper[next], high, normalX, ny, normalZ, color);\n if (highRadius) addTriangle(lower[i], low, upper[next], high, upper[i], high, normalX, ny, normalZ, color);\n }\n}\n", "export function validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape) {\r\n if (!Number.isFinite(trunkRadius) || !Number.isFinite(crownRadius) || !Number.isFinite(crownBottom) ||\r\n trunkRadius <= 0 || crownRadius < trunkRadius || crownBottom <= bottom || crownBottom >= top ||\r\n crownShape !== 'round' && crownShape !== 'cone') {\r\n throw /* alloc */ new Error('Invalid tree dimensions or crown shape');\r\n }\r\n}\r\n", "import { roundProfile } from '../globals/roundProfile.js';\n\n\nimport { parseColor } from \"../colors/parseColor.js\";\nimport { ring } from './createTreeRing.js';\nimport { surface } from './surface.js';\nimport { validateTree } from './validateTree.js';\n\n/** Low-poly tree, sharing the source block's buffers, picking and terrain offset. */\n\nexport function treeGeometry(point, style, addTriangle) {\n const { top, bottom = 0, trunkRadius, crownRadius, crownBottom, crownShape = 'round' } = style;\n validateTree(trunkRadius, crownRadius, crownBottom, bottom, top, crownShape);\n const trunk = parseColor(style.trunkColor ?? 0x72513a);\n const crown = parseColor(style.color ?? 0x4f823b);\n surface(point, addTriangle, trunkRadius, bottom, trunkRadius, crownBottom + (top - crownBottom) * 0.25, trunk);\n let i, low, lr, high, hr;\n if (crownShape === 'cone') {\n const base = ring(point, crownRadius);\n for (i = 0; i < 8; i++) addTriangle(point, crownBottom, base[i], crownBottom,\n base[(i + 1) % 8], crownBottom, 0, -1, 0, crown);\n surface(point, addTriangle, crownRadius, crownBottom, 0, top, crown);\n } else {\n for (i = 1; i < roundProfile.length; i++) {\n [low, lr] = roundProfile[i - 1], [high, hr] = roundProfile[i];\n surface(point, addTriangle, lr * crownRadius, crownBottom + low * (top - crownBottom),\n hr * crownRadius, crownBottom + high * (top - crownBottom), crown);\n }\n }\n}\n", "import { generateTreeGeometry } from './generateTreeGeometry.js';\r\nimport { lampPostGeometry } from './lampPostGeometry.js';\r\nimport { lightGeometry } from './lightGeometry.js';\r\nimport { treeGeometry } from './treeGeometry.js';\r\n\r\nexport function buildProjectedPoint(context, projected, style, baseColor, support) {\r\n const { top } = style;\r\n if (context.backend.options.nightLight) {\r\n if (!Number.isFinite(style.lightFlux) || style.lightFlux <= 0) throw /* alloc */ new Error('Invalid light flux');\r\n if (style.poleRadius > 0 && !context.supports.has(support)) {\r\n generateTreeGeometry(context, lampPostGeometry, projected, style);\r\n context.supports.add(support);\r\n }\r\n generateTreeGeometry(context, lightGeometry, projected, style);\r\n context.lights.push(/* alloc */ {\r\n position: /* alloc */ [projected.x, projected.ground + top, -projected.y],\r\n radius: Math.hypot(top, style.lightRadius), color: /* alloc */ [baseColor.r, baseColor.g, baseColor.b],\r\n flux: style.lightFlux,\r\n });\r\n } else generateTreeGeometry(context, treeGeometry, projected, style);\r\n}\r\n", "/** Compact repeated features only when reconstructed float32 positions compare equal. */\r\nexport function instanceAreaGeometry(context) {\r\n const { positions, normals, colors, featureFaces } = context;\r\n if (context.backend.options.nightLight || featureFaces.length < 2) return context;\r\n const vertices = featureFaces[0].vertexEnd;\r\n const length = vertices * 3;\r\n if (!vertices || positions.length !== length * featureFaces.length) return context;\r\n const originX = Math.trunc(positions[0]), originY = Math.trunc(positions[1]), originZ = Math.trunc(positions[2]);\r\n const template = /* alloc */ new Float32Array(length);\r\n let i, instance, face, start;\r\n for (i = 0; i < length; i++) template[i] = positions[i] - (i % 3 === 0 ? originX : i % 3 === 1 ? originY : originZ);\r\n const offsets = /* alloc */ new Float32Array(featureFaces.length * 4);\r\n for (instance = 0; instance < featureFaces.length; instance++) {\r\n face = featureFaces[instance];\r\n start = instance * length;\r\n if (face.vertexStart !== instance * vertices || face.vertexEnd !== (instance + 1) * vertices) return context;\r\n offsets[instance * 4] = originX + positions[start] - positions[0];\r\n offsets[instance * 4 + 1] = originY + positions[start + 1] - positions[1];\r\n offsets[instance * 4 + 2] = originZ + positions[start + 2] - positions[2];\r\n offsets[instance * 4 + 3] = instance * vertices;\r\n for (i = 0; i < length; i++) {\r\n if (Math.fround(template[i] + offsets[instance * 4 + i % 3]) !== Math.fround(positions[start + i]) ||\r\n Math.fround(normals[i]) !== Math.fround(normals[start + i]) ||\r\n Math.fround(colors[i]) !== Math.fround(colors[start + i])) return context;\r\n }\r\n }\r\n return /* alloc */ {\r\n positions: template, normals: normals.slice(0, length), colors: colors.slice(0, length),\r\n instanceOffsets: offsets,\r\n };\r\n}\r\n", "/** Cache local AABB and center for ray picking and transparent mesh sorting. */\n\nexport function computeBounds(geometry) {\n const min = /* alloc */ [Infinity, Infinity, Infinity];\n const max = /* alloc */ [-Infinity, -Infinity, -Infinity];\n const data = geometry.attributes.position.data;\n let i, x, y, z;\n for (i = 0; i < data.length; i += 3) {\n x = data[i], y = data[i + 1], z = data[i + 2];\n min[0] = Math.min(min[0], x), max[0] = Math.max(max[0], x);\n min[1] = Math.min(min[1], y), max[1] = Math.max(max[1], y);\n min[2] = Math.min(min[2], z), max[2] = Math.max(max[2], z);\n }\n const instances = geometry.attributes.instanceOffset;\n if (instances) {\n let axis, offset, low, high;\n for (axis = 0; axis < 3; axis++) {\n low = Infinity;\n high = -Infinity;\n for (offset = axis; offset < instances.data.length; offset += instances.size) {\n low = Math.min(low, instances.data[offset]);\n high = Math.max(high, instances.data[offset]);\n }\n min[axis] = Math.fround(min[axis] + low);\n max[axis] = Math.fround(max[axis] + high);\n }\n }\n const center = /* alloc */ [\n (min[0] + max[0]) / 2,\n (min[1] + max[1]) / 2,\n (min[2] + max[2]) / 2,\n ];\n let radiusSquared = 0;\n for (i = 0; !instances && i < data.length; i += 3) {\n x = data[i] - center[0], y = data[i + 1] - center[1], z = data[i + 2] - center[2];\n radiusSquared = Math.max(radiusSquared, x * x + y * y + z * z);\n }\n let radius = instances ? Math.hypot(max[0] - min[0], max[1] - min[1], max[2] - min[2]) / 2\n : Math.sqrt(radiusSquared);\n // Preserve hypot's scaling for extreme coordinates in non-Float32 CPU geometry.\n if (!instances && (radiusSquared === Infinity || radiusSquared < Number.MIN_VALUE / Number.EPSILON)) {\n radius = 0;\n for (i = 0; i < data.length; i += 3) {\n radius = Math.max(radius, Math.hypot(\n data[i] - center[0], data[i + 1] - center[1], data[i + 2] - center[2]));\n }\n }\n geometry.bounds = /* alloc */ { min, max, center, radius };\n}\n", "import { buildProjectedPolygon } from './buildProjectedPolygon.js';\r\nimport { buildProjectedPoint } from './buildProjectedPoint.js';\r\nimport { instanceAreaGeometry } from './instanceAreaGeometry.js';\r\nimport { computeBounds } from './computeBounds.js';\r\n\r\nexport function assembleAreaGeometry({ jobs, nightLight }) {\r\n const context = /* alloc */ {\r\n backend: /* alloc */ { options: /* alloc */ { nightLight } },\r\n positions: /* alloc */ [], normals: /* alloc */ [], colors: /* alloc */ [], uvs: /* alloc */ [],\r\n featureFaces: /* alloc */ [], lights: /* alloc */ [], supports: /* alloc */ new Set(),\r\n };\r\n let job, polygon, start, end;\r\n for (job of jobs) {\r\n start = context.positions.length / 3;\r\n if (job.point) buildProjectedPoint(context, job.point, job.style, job.baseColor, job.support);\r\n for (polygon of job.polygons) {\r\n buildProjectedPolygon(context, polygon, job.style.top, job.style.bottom, job.baseColor);\r\n }\r\n end = context.positions.length / 3;\r\n context.featureFaces.push(/* alloc */ { vertexStart: start, vertexEnd: end, faceStart: start / 3, faceEnd: end / 3 });\r\n }\r\n const data = instanceAreaGeometry(context);\r\n const result = /* alloc */ {\r\n positions: /* alloc */ new Float32Array(data.positions),\r\n normals: /* alloc */ new Float32Array(data.normals),\r\n colors: /* alloc */ new Float32Array(data.colors),\r\n uvs: /* alloc */ new Float32Array(context.uvs),\r\n instanceOffsets: data.instanceOffsets,\r\n ranges: context.featureFaces,\r\n lights: context.lights,\r\n };\r\n if (result.positions.length) {\r\n const geometry = /* alloc */ { attributes: /* alloc */ {\r\n position: /* alloc */ { data: result.positions },\r\n instanceOffset: result.instanceOffsets ? /* alloc */ { data: result.instanceOffsets, size: 4 } : undefined,\r\n } };\r\n computeBounds(geometry);\r\n result.bounds = geometry.bounds;\r\n }\r\n return result;\r\n}\r\n", "export function createMvtReader(bytes) {\r\n return /* alloc */ {\r\n bytes,\r\n view: /* alloc */ new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\r\n pos: 0,\r\n };\r\n}\r\n", "export function takeMvtBytes(reader, size) {\r\n if (!Number.isSafeInteger(size) || size < 0 || size > reader.bytes.length - reader.pos) {\r\n throw /* alloc */ new Error('Truncated MVT field');\r\n }\r\n const start = reader.pos;\r\n reader.pos += size;\r\n return start;\r\n}\r\n", "import { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtInteger(reader) {\r\n let value = 0n, i = 0, byte;\r\n for (; i < 10; i++) {\r\n byte = reader.bytes[takeMvtBytes(reader, 1)];\r\n if (i === 9 && byte > 1) throw /* alloc */ new Error('Invalid MVT varint');\r\n value |= BigInt(byte & 127) << BigInt(i * 7);\r\n if (byte < 128) return value;\r\n }\r\n throw /* alloc */ new Error('Invalid MVT varint');\r\n}\r\n", "import { readMvtInteger } from './readMvtInteger.js';\r\n\r\nexport function readMvtNumber(reader) {\r\n const value = readMvtInteger(reader);\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER)) {\r\n throw /* alloc */ new Error('MVT integer exceeds safe range');\r\n }\r\n return Number(value);\r\n}\r\n", "import { readMvtNumber } from './readMvtNumber.js';\r\n\r\nexport function readMvtField(reader) {\r\n const tag = readMvtNumber(reader);\r\n const field = Math.floor(tag / 8), wire = tag % 8;\r\n if (!field || field > 536870911) throw /* alloc */ new Error('Invalid MVT field number');\r\n return /* alloc */ [field, wire];\r\n}\r\n", "export function expectMvtWire(wire, expected) {\r\n if (wire !== expected) throw /* alloc */ new Error('Invalid MVT wire type');\r\n}\r\n", "export function numericMvtValue(value) {\r\n return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)\r\n ? Number(value) : value.toString();\r\n}\r\n", "export function finishMvtPath(path, type, closed) {\r\n if (path && (type === 2 && path.length < 2 || type === 3 && !closed)) {\r\n throw /* alloc */ new Error('Incomplete MVT geometry');\r\n }\r\n}\r\n", "export function appendMvtCoordinates(commands, state, count) {\r\n let i = 0, dx, dy;\r\n for (; i < count; i++) {\r\n dx = commands[state.index++];\r\n dy = commands[state.index++];\r\n if (dx > 0xffffffff || dy > 0xffffffff) throw /* alloc */ new Error('Invalid MVT coordinate');\r\n state.x += dx % 2 ? -(dx + 1) / 2 : dx / 2;\r\n state.y += dy % 2 ? -(dy + 1) / 2 : dy / 2;\r\n state.path.push(/* alloc */ [state.x, state.y]);\r\n }\r\n}\r\n", "import { finishMvtPath } from './finishMvtPath.js';\r\n\r\nexport function beginMvtPath(state, paths, type, count) {\r\n finishMvtPath(state.path, type, state.closed);\r\n if (type !== 1 && count !== 1) throw /* alloc */ new Error('Invalid MVT MoveTo');\r\n state.path = /* alloc */ [];\r\n paths.push(state.path);\r\n state.closed = false;\r\n}\r\n", "export function closeMvtPath(state, type, count) {\r\n if (type !== 3 || count !== 1 || !state.path || state.closed || state.path.length < 3) {\r\n throw /* alloc */ new Error('Invalid MVT ClosePath');\r\n }\r\n state.path.push(/* alloc */ [...state.path[0]]);\r\n state.closed = true;\r\n}\r\n", "import { finishMvtPath } from './finishMvtPath.js';\r\nimport { appendMvtCoordinates } from './appendMvtCoordinates.js';\r\nimport { beginMvtPath } from './beginMvtPath.js';\r\nimport { closeMvtPath } from './closeMvtPath.js';\r\n\r\nexport function readMvtGeometry(commands, type) {\r\n const paths = /* alloc */ [];\r\n const state = /* alloc */ { x: 0, y: 0, path: null, closed: false, index: 0 };\r\n let command, id, count;\r\n while (state.index < commands.length) {\r\n command = commands[state.index++];\r\n id = command % 8;\r\n count = Math.floor(command / 8);\r\n if (!count || command > 0xffffffff) throw /* alloc */ new Error('Invalid MVT geometry command');\r\n if (id === 7) {\r\n closeMvtPath(state, type, count);\r\n continue;\r\n }\r\n if (id !== 1 && id !== 2 || count > Math.floor((commands.length - state.index) / 2)) {\r\n throw /* alloc */ new Error('Invalid MVT geometry parameters');\r\n }\r\n if (id === 1) beginMvtPath(state, paths, type, count);\r\n else if (type === 1 || !state.path || state.closed) throw /* alloc */ new Error('Invalid MVT LineTo');\r\n appendMvtCoordinates(commands, state, count);\r\n }\r\n finishMvtPath(state.path, type, state.closed);\r\n if (!paths.length) throw /* alloc */ new Error('Empty MVT geometry');\r\n return paths;\r\n}\r\n", "import { createMvtReader } from './createMvtReader.js';\r\nimport { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtMessage(reader, wire) {\r\n expectMvtWire(wire, 2);\r\n const size = readMvtNumber(reader), start = takeMvtBytes(reader, size);\r\n return createMvtReader(reader.bytes.subarray(start, start + size));\r\n}\r\n", "import { readMvtMessage } from './readMvtMessage.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\n\r\nexport function readMvtNumbers(reader, wire, target) {\r\n let packed;\r\n if (wire === 0) target.push(readMvtNumber(reader));\r\n else {\r\n packed = readMvtMessage(reader, wire);\r\n while (packed.pos < packed.bytes.length) target.push(readMvtNumber(packed));\r\n }\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function skipMvtField(reader, wire) {\r\n switch (wire) {\r\n case 0: readMvtInteger(reader); break;\r\n case 1: takeMvtBytes(reader, 8); break;\r\n case 2: takeMvtBytes(reader, readMvtNumber(reader)); break;\r\n case 5: takeMvtBytes(reader, 4); break;\r\n default: throw /* alloc */ new Error('Unsupported MVT wire type');\r\n }\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { numericMvtValue } from './numericMvtValue.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtGeometry } from './readMvtGeometry.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { readMvtNumbers } from './readMvtNumbers.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\nexport function readMvtFeature(reader, keys, values) {\r\n let id, type = 0, field, wire, i = 0;\r\n const tags = /* alloc */ [], commands = /* alloc */ [];\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field === 1) {\r\n expectMvtWire(wire, 0);\r\n id = numericMvtValue(readMvtInteger(reader));\r\n } else if (field === 2) readMvtNumbers(reader, wire, tags);\r\n else if (field === 3) {\r\n expectMvtWire(wire, 0);\r\n type = readMvtNumber(reader);\r\n } else if (field === 4) readMvtNumbers(reader, wire, commands);\r\n else skipMvtField(reader, wire);\r\n }\r\n if (tags.length % 2 || type > 3) throw /* alloc */ new Error('Invalid MVT feature');\r\n const properties = Object.create(null);\r\n for (; i < tags.length; i += 2) {\r\n if (tags[i] >= keys.length || tags[i + 1] >= values.length) {\r\n throw /* alloc */ new Error('Invalid MVT property index');\r\n }\r\n properties[keys[tags[i]]] = values[tags[i + 1]];\r\n }\r\n return /* alloc */ { id, type, properties, geometry: type ? readMvtGeometry(commands, type) : /* alloc */ [] };\r\n}\r\n", "export const mvtTextDecoder = new TextDecoder('utf-8', { fatal: true });\r\n", "import { mvtTextDecoder } from '../globals/mvtTextDecoder.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\n\r\nexport function readMvtString(reader, wire) {\r\n return mvtTextDecoder.decode(readMvtMessage(reader, wire).bytes);\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { numericMvtValue } from './numericMvtValue.js';\r\nimport { readMvtInteger } from './readMvtInteger.js';\r\nimport { readMvtString } from './readMvtString.js';\r\nimport { takeMvtBytes } from './takeMvtBytes.js';\r\n\r\nexport function readMvtKnownValue(reader, field, wire) {\r\n let offset, integer;\r\n if (field === 1) return readMvtString(reader, wire);\r\n if (field === 2 || field === 3) {\r\n expectMvtWire(wire, field === 2 ? 5 : 1);\r\n offset = takeMvtBytes(reader, field === 2 ? 4 : 8);\r\n return field === 2 ? reader.view.getFloat32(offset, true) : reader.view.getFloat64(offset, true);\r\n }\r\n expectMvtWire(wire, 0);\r\n integer = readMvtInteger(reader);\r\n if (field === 4) return numericMvtValue(BigInt.asIntN(64, integer));\r\n if (field === 5) return numericMvtValue(integer);\r\n if (field === 6) return numericMvtValue((integer >> 1n) ^ -(integer & 1n));\r\n return integer !== 0n;\r\n}\r\n", "import { readMvtField } from './readMvtField.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\nimport { readMvtKnownValue } from './readMvtKnownValue.js';\r\n\r\nexport function readMvtValue(reader) {\r\n let value, found = false, field, wire;\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field < 1 || field > 7) {\r\n skipMvtField(reader, wire);\r\n continue;\r\n }\r\n if (found) throw /* alloc */ new Error('Multiple MVT value types');\r\n found = true;\r\n value = readMvtKnownValue(reader, field, wire);\r\n }\r\n if (!found) throw /* alloc */ new Error('Empty MVT value');\r\n return value;\r\n}\r\n", "import { expectMvtWire } from './expectMvtWire.js';\r\nimport { readMvtFeature } from './readMvtFeature.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\nimport { readMvtNumber } from './readMvtNumber.js';\r\nimport { readMvtString } from './readMvtString.js';\r\nimport { readMvtValue } from './readMvtValue.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\nexport function readMvtLayer(reader) {\r\n let name, version, extent = 4096, field, wire, value, i = 0;\r\n const keys = /* alloc */ [], values = /* alloc */ [], features = /* alloc */ [];\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field === 1) name = readMvtString(reader, wire);\r\n else if (field === 2) features.push(readMvtMessage(reader, wire));\r\n else if (field === 3) keys.push(readMvtString(reader, wire));\r\n else if (field === 4) values.push(readMvtValue(readMvtMessage(reader, wire)));\r\n else if (field === 5 || field === 15) {\r\n expectMvtWire(wire, 0);\r\n value = readMvtNumber(reader);\r\n if (field === 5) extent = value;\r\n else version = value;\r\n } else skipMvtField(reader, wire);\r\n }\r\n if (!name || !/* alloc */ [1, 2].includes(version) || !extent || extent > 0xffffffff) {\r\n throw /* alloc */ new Error('Invalid MVT layer metadata');\r\n }\r\n for (; i < features.length; i++) features[i] = readMvtFeature(features[i], keys, values);\r\n return /* alloc */ { name, extent, features };\r\n}\r\n", "import { createMvtReader } from './createMvtReader.js';\r\nimport { readMvtField } from './readMvtField.js';\r\nimport { readMvtLayer } from './readMvtLayer.js';\r\nimport { readMvtMessage } from './readMvtMessage.js';\r\nimport { skipMvtField } from './skipMvtField.js';\r\n\r\n/**\r\n * Decode an uncompressed MVT ArrayBuffer/Uint8Array into tile-local layers.\r\n * Feature types: 0 unknown, 1 points, 2 lines, 3 polygon rings (including holes).\r\n * Integers outside JavaScript's safe range are returned as decimal strings.\r\n */\r\nexport function decodeVectorTile(buffer) {\r\n if (!(buffer instanceof ArrayBuffer) && !(buffer instanceof Uint8Array)) {\r\n throw /* alloc */ new TypeError('MVT input must be an ArrayBuffer or Uint8Array');\r\n }\r\n const bytes = buffer instanceof Uint8Array ? buffer : /* alloc */ new Uint8Array(buffer);\r\n const reader = createMvtReader(bytes);\r\n const layers = /* alloc */ [], names = /* alloc */ new Set();\r\n let field, wire, layer;\r\n while (reader.pos < reader.bytes.length) {\r\n [field, wire] = readMvtField(reader);\r\n if (field !== 3) {\r\n skipMvtField(reader, wire);\r\n continue;\r\n }\r\n layer = readMvtLayer(readMvtMessage(reader, wire));\r\n if (names.has(layer.name)) throw /* alloc */ new Error('Duplicate MVT layer name');\r\n names.add(layer.name);\r\n layers.push(layer);\r\n }\r\n return layers;\r\n}\r\n", "export function vectorStyleDependencies(entry) {\r\n const dependencies = /* alloc */ new Set();\r\n const expressions = /* alloc */ [entry.paint, entry.filter];\r\n let value, child;\r\n while (expressions.length) {\r\n value = expressions.pop();\r\n if (!value || typeof value !== 'object') continue;\r\n if (Array.isArray(value) && typeof value[1] === 'string' &&\r\n /* alloc */ ['get', 'has', '==', '!=', '<', '>', '<=', '>=', 'in', '!in'].includes(value[0])) {\r\n dependencies.add(value[1]);\r\n }\r\n for (child of Object.values(value)) expressions.push(child);\r\n }\r\n return dependencies;\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateBoolean(op, args, properties, zoom, legacy) {\r\n let i = 0;\r\n if (op === 'all') {\r\n for (i = 0; i < args.length; i++) {\r\n if (!evaluateStyle(args[i], properties, zoom, legacy)) return false;\r\n }\r\n return true;\r\n }\r\n if (op === 'any') {\r\n for (i = 0; i < args.length; i++) {\r\n if (evaluateStyle(args[i], properties, zoom, legacy)) return true;\r\n }\r\n return false;\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateCoalesceOrCase(op, args, properties, zoom, legacy) {\r\n let i = 0, result = null;\r\n if (op === 'coalesce') {\r\n for (i = 0; i < args.length; i++) {\r\n result = evaluateStyle(args[i], properties, zoom);\r\n if (result !== null && result !== undefined) return result;\r\n }\r\n return null;\r\n }\r\n if (op === 'case') {\r\n for (i = 0; i < args.length - 1; i += 2) {\r\n if (evaluateStyle(args[i], properties, zoom)) {\r\n return evaluateStyle(args[i + 1], properties, zoom);\r\n }\r\n }\r\n return evaluateStyle(args[args.length - 1], properties, zoom);\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateInput(value, properties, zoom, legacy) {\r\n if (legacy && typeof value === 'string') return properties[value];\r\n return evaluateStyle(value, properties, zoom);\r\n}\r\n", "import { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateComparison(op, args, properties, zoom, legacy) {\r\n const left = evaluateInput(args[0], properties, zoom, legacy);\r\n const right = evaluateStyle(args[1], properties, zoom);\r\n switch (op) {\r\n case '==': return left === right;\r\n case '!=': return left !== right;\r\n case '<=': return left <= right;\r\n case '>=': return left >= right;\r\n case '<': return left < right;\r\n case '>': return left > right;\r\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n }\r\n}\r\n", "export const vectorStyleNamedColors = {\r\n black: [0, 0, 0, 1],\r\n white: [255, 255, 255, 1],\r\n gray: [128, 128, 128, 1],\r\n blue: [0, 0, 255, 1],\r\n red: [255, 0, 0, 1],\r\n green: [0, 128, 0, 1]\r\n};\r\n", "export function parseFunctionalColor(value) {\r\n const match = /^rgba?\\(([^)]+)\\)$/.exec(value);\r\n if (match) {\r\n const values = match[1].split(',');\r\n let i = 0, finite = true;\r\n for (i = 0; i < values.length; i++) values[i] = Number(values[i]);\r\n if (values.length === 3) values.push(1);\r\n for (i = 0; i < values.length; i++) {\r\n if (!Number.isFinite(values[i])) finite = false;\r\n }\r\n if (values.length === 4 && finite) return values;\r\n }\r\n throw /* alloc */ new Error(`Unsupported interpolated style color: ${value}`);\r\n}\r\n", "export function parseHexColor(value) {\r\n let i = 0, offset = 0;\r\n if (value.length === 4) {\r\n value = '#' + value[1] + value[1] + value[2] + value[2] + value[3] + value[3];\r\n }\r\n const color = /* alloc */ [];\r\n for (i = 1; i < 6; i += 2) {\r\n offset = parseInt(value.slice(i, i + 2), 16);\r\n color.push(offset);\r\n }\r\n color.push(1);\r\n return color;\r\n}\r\n", "import { vectorStyleNamedColors } from '../globals/vectorStyleNamedColors.js';\r\nimport { parseFunctionalColor } from './parseFunctionalColor.js';\r\nimport { parseHexColor } from './parseHexColor.js';\r\n\r\nexport function styleColor(value) {\r\n if (Object.hasOwn(vectorStyleNamedColors, value)) return vectorStyleNamedColors[value];\r\n if (/^#[0-9a-f]{3}$/i.test(value) || /^#[0-9a-f]{6}$/i.test(value)) {\r\n return parseHexColor(value);\r\n }\r\n return parseFunctionalColor(value);\r\n}\r\n", "import { styleColor } from './styleColor.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateInterpolate(args, properties, zoom) {\r\n const result = evaluateStyle(args[1], properties, zoom);\r\n const base = args[0][0] === 'exponential' ? args[0][1] : 1;\r\n let i = 0, lower = 0, upper = 0, ratio = 0, left = null, right = null, j = 0, color = '';\r\n if (result <= args[2]) return evaluateStyle(args[3], properties, zoom);\r\n for (i = 4; i < args.length; i += 2) {\r\n if (result > args[i]) continue;\r\n lower = args[i - 2];\r\n upper = args[i];\r\n ratio = base === 1 ? (result - lower) / (upper - lower)\r\n : (base ** (result - lower) - 1) / (base ** (upper - lower) - 1);\r\n left = evaluateStyle(args[i - 1], properties, zoom);\r\n right = evaluateStyle(args[i + 1], properties, zoom);\r\n if (typeof left === 'number' && typeof right === 'number') return left + (right - left) * ratio;\r\n left = styleColor(left);\r\n right = styleColor(right);\r\n for (j = 0; j < 3; j++) {\r\n if (j) color += ',';\r\n color += Math.round(left[j] + (right[j] - left[j]) * ratio);\r\n }\r\n return `rgba(${color},${left[3] + (right[3] - left[3]) * ratio})`;\r\n }\r\n return evaluateStyle(args.at(-1), properties, zoom);\r\n}\r\n", "export function arrayContainsRange(values, start, end, target) {\r\n let i = 0, value = null;\r\n for (i = start; i < end; i++) {\r\n value = values[i];\r\n if (value === target || (value !== value && target !== target)) return true;\r\n }\r\n return false;\r\n}\r\n", "import { arrayContainsRange } from './arrayContainsRange.js';\r\nimport { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMembership(op, args, properties, zoom, legacy) {\r\n let target = null;\r\n if (op === '!in') {\r\n target = evaluateInput(args[0], properties, zoom, legacy);\r\n return !arrayContainsRange(args, 1, args.length, target);\r\n }\r\n if (legacy) {\r\n target = evaluateInput(args[0], properties, zoom, true);\r\n return arrayContainsRange(args, 1, args.length, target);\r\n }\r\n const values = evaluateStyle(args[1], properties, zoom);\r\n target = evaluateInput(args[0], properties, zoom, false);\r\n return values.includes(target);\r\n}\r\n", "import { evaluateInterpolate } from './evaluateInterpolate.js';\r\nimport { evaluateMembership } from './evaluateMembership.js';\r\n\r\nexport function evaluateIExpression(op, args, properties, zoom, legacy) {\r\n if (op === 'in') return evaluateMembership(op, args, properties, zoom, legacy);\r\n if (op === 'interpolate') return evaluateInterpolate(args, properties, zoom);\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMath(op, args, properties, zoom) {\r\n let i = 0, sum = 0;\r\n if (op === '+') {\r\n for (i = 0; i < args.length; i++) sum += evaluateStyle(args[i], properties, zoom);\r\n return sum;\r\n }\r\n if (op === '-') {\r\n if (args.length === 1) return -evaluateStyle(args[0], properties, zoom);\r\n return evaluateStyle(args[0], properties, zoom) - evaluateStyle(args[1], properties, zoom);\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateMatch(args, properties, zoom) {\r\n const result = evaluateStyle(args[0], properties, zoom);\r\n let i = 0, matched = false;\r\n for (i = 1; i < args.length - 1; i += 2) {\r\n if (Array.isArray(args[i])) matched = args[i].includes(result);\r\n else matched = args[i] === result;\r\n if (matched) return evaluateStyle(args[i + 1], properties, zoom);\r\n }\r\n return evaluateStyle(args[args.length - 1], properties, zoom);\r\n}\r\n", "import { evaluateInput } from './evaluateInput.js';\r\nimport { evaluateMembership } from './evaluateMembership.js';\r\nimport { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateNegation(op, args, properties, zoom, legacy) {\r\n if (op === '!') return !evaluateStyle(args[0], properties, zoom, legacy);\r\n if (op === '!=') {\r\n return evaluateInput(args[0], properties, zoom, legacy) !==\r\n evaluateStyle(args[1], properties, zoom);\r\n }\r\n if (op === '!in') return evaluateMembership(op, args, properties, zoom, legacy);\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "export function evaluatePrimitive(op, args, properties, zoom) {\r\n switch (op) {\r\n case 'literal': return args[0];\r\n case 'get': return properties[args[0]];\r\n case 'has': return Object.hasOwn(properties, args[0]);\r\n case 'zoom': return zoom;\r\n default: throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n }\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateStep(args, properties, zoom) {\r\n const result = evaluateStyle(args[0], properties, zoom);\r\n let output = args[1], i = 0;\r\n for (i = 2; i < args.length; i += 2) {\r\n if (result < args[i]) break;\r\n output = args[i + 1];\r\n }\r\n return evaluateStyle(output, properties, zoom);\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function evaluateToExpression(op, args, properties, zoom) {\r\n if (op === 'to-boolean') return Boolean(evaluateStyle(args[0], properties, zoom));\r\n if (op === 'to-number') {\r\n let i = 0, number = 0;\r\n for (i = 0; i < args.length; i++) {\r\n number = Number(evaluateStyle(args[i], properties, zoom));\r\n if (Number.isFinite(number)) return number;\r\n }\r\n throw /* alloc */ new Error('Invalid numeric style expression');\r\n }\r\n throw /* alloc */ new Error(`Unsupported vector style expression: ${op}`);\r\n}\r\n", "import { evaluateBoolean } from './evaluateBoolean.js';\r\nimport { evaluateCoalesceOrCase } from './evaluateCoalesceOrCase.js';\r\nimport { evaluateComparison } from './evaluateComparison.js';\r\nimport { evaluateIExpression } from './evaluateIExpression.js';\r\nimport { evaluateMath } from './evaluateMath.js';\r\nimport { evaluateMatch } from './evaluateMatch.js';\r\nimport { evaluateNegation } from './evaluateNegation.js';\r\nimport { evaluatePrimitive } from './evaluatePrimitive.js';\r\nimport { evaluateStep } from './evaluateStep.js';\r\nimport { evaluateToExpression } from './evaluateToExpression.js';\r\n\r\nexport function evaluateStyle(value, properties, zoom, legacy = false) {\r\n if (!Array.isArray(value)) return value;\r\n const op = value[0];\r\n const args = value.slice(1);\r\n const operation = String(op);\r\n if (/^(?:literal|get|has|zoom)$/.test(operation)) {\r\n return evaluatePrimitive(op, args, properties, zoom);\r\n }\r\n switch (operation[0]) {\r\n case 'a': return evaluateBoolean(op, args, properties, zoom, legacy);\r\n case '!': return evaluateNegation(op, args, properties, zoom, legacy);\r\n case '=':\r\n case '<':\r\n case '>': return evaluateComparison(op, args, properties, zoom, legacy);\r\n case 'i': return evaluateIExpression(op, args, properties, zoom, legacy);\r\n case 't': return evaluateToExpression(op, args, properties, zoom, legacy);\r\n case 'c': return evaluateCoalesceOrCase(op, args, properties, zoom, legacy);\r\n case 'm': return evaluateMatch(args, properties, zoom);\r\n case 's': return evaluateStep(args, properties, zoom);\r\n default: return evaluateMath(op, args, properties, zoom);\r\n }\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function visibleStyle(layer, properties, zoom) {\r\n return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? Infinity) &&\r\n layer.layout?.visibility !== 'none' &&\r\n (!layer.filter || evaluateStyle(layer.filter, properties, zoom, true));\r\n}\r\n", "import { visibleStyle } from '../vector-style/visibleStyle.js';\r\n\r\nexport function vectorFeatureZoom(entry, properties, zoom, maxZoom) {\r\n if (visibleStyle(entry, properties, zoom)) return zoom;\r\n zoom = maxZoom;\r\n while (zoom >= 0 && !visibleStyle(entry, properties, zoom)) zoom--;\r\n return zoom;\r\n}\r\n", "export function projectVectorPoint(point, coords, extent) {\r\n const size = 2 ** coords.z;\r\n const x = (coords.x + point[0] / extent) / size;\r\n const y = (coords.y + point[1] / extent) / size;\r\n return /* alloc */ [Math.atan(Math.sinh(Math.PI * (1 - 2 * y))) * 180 / Math.PI, x * 360 - 180];\r\n}\r\n", "export function vectorLabelProperty(properties, match, key) {\r\n return properties[key] ?? '';\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\n\r\nexport function vectorStyleValue(object, key, fallback, properties, zoom) {\r\n return object?.[key] === undefined ? fallback : evaluateStyle(object[key], properties, zoom);\r\n}\r\n", "/** Distance from a point on segment (i-1, i) along the path until it turns more than ~45 degrees from that segment. */\r\nexport function vectorStraightRun(path, i, point, step) {\r\n const base = Math.atan2(path[i][1] - path[i - 1][1], path[i][0] - path[i - 1][0]);\r\n let j = step > 0 ? i : i - 1, previous = point, run = 0, next;\r\n while (j >= 0 && j < path.length) {\r\n run += Math.hypot(path[j][0] - previous[0], path[j][1] - previous[1]);\r\n previous = path[j];\r\n next = j + step;\r\n if (next < 0 || next >= path.length) break;\r\n if (Math.cos(Math.atan2(path[next][1] - path[j][1], path[next][0] - path[j][0]) - base + (step < 0 ? Math.PI : 0)) < 0.7) break;\r\n j = next;\r\n }\r\n return run;\r\n}\r\n", "import { vectorStraightRun } from './vectorStraightRun.js';\r\n\r\n/** Anchors evenly spread along a path: each is a point on a segment plus that segment's ends. */\r\nexport function vectorLabelAnchors(path, spacing) {\r\n const anchors = /* alloc */ [];\r\n let length = 0, i, walked, target, count, k, segment, t, point;\r\n for (i = 1; i < path.length; i++) length += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\r\n count = Math.max(1, Math.floor(length / spacing));\r\n i = 1; walked = 0;\r\n for (k = 0; k < count; k++) {\r\n target = (k + 0.5) * length / count;\r\n while (i < path.length - 1 && walked + Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]) < target) {\r\n walked += Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]); i++;\r\n }\r\n segment = Math.hypot(path[i][0] - path[i - 1][0], path[i][1] - path[i - 1][1]);\r\n t = segment ? Math.min(1, Math.max(0, (target - walked) / segment)) : 0;\r\n point = /* alloc */ [\r\n path[i - 1][0] + (path[i][0] - path[i - 1][0]) * t, path[i - 1][1] + (path[i][1] - path[i - 1][1]) * t,\r\n ];\r\n anchors.push(/* alloc */ { point, a: path[i - 1], b: path[i],\r\n length: vectorStraightRun(path, i, point, 1) + vectorStraightRun(path, i, point, -1) });\r\n }\r\n return anchors;\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { vectorLabelProperty } from './vectorLabelProperty.js';\r\nimport { vectorStyleValue } from './vectorStyleValue.js';\r\nimport { vectorLabelAnchors } from './vectorLabelAnchors.js';\n\r\nexport function prepareVectorLabel(job, layer, entry, feature, order) {\r\n let text = entry.layout?.['text-field'];\r\n const { properties } = feature, { zoom } = job;\r\n const icon = entry.layout?.['symbol-placement'] === 'line' ? null\r\n : evaluateStyle(entry.layout?.['icon-image'], properties, zoom);\r\n if (Array.isArray(text)) text = evaluateStyle(text, properties, zoom);\r\n if (typeof text !== 'string') text = '';\r\n text = text.replace(/\\{([^}]+)\\}/g, vectorLabelProperty.bind(null, properties));\r\n if (!text.trim() && typeof icon !== 'string') return;\r\n if (entry.layout?.['text-transform'] === 'uppercase') text = text.toUpperCase();\r\n const size = vectorStyleValue(entry.layout, 'text-size', 12, properties, zoom), line = feature.type === 2 && text.trim();\n const spacing = layer.extent / 16, anchors = /* alloc */ [];\n let path, anchor;\n for (path of line ? feature.geometry : feature.geometry.slice(0, 1)) {\n if (!path?.length) continue;\n if (!line) anchors.push(/* alloc */ { point: path[Math.floor(path.length / 2)], a: null });\n else for (anchor of vectorLabelAnchors(path, spacing)) anchors.push(anchor);\n }\n for (anchor of anchors) {\n if (anchor.point[0] < 0 || anchor.point[0] >= layer.extent || anchor.point[1] < 0 || anchor.point[1] >= layer.extent) continue;\n job.labels.push(/* alloc */ { text, latlng: projectVectorPoint(anchor.point, job.coords, layer.extent),\n order, entry, properties, size, pixelBase: anchor.length * 256 / layer.extent / 2 ** job.coords.z,\n along: anchor.a ? /* alloc */ [\n projectVectorPoint(anchor.a, job.coords, layer.extent),\n projectVectorPoint(anchor.b, job.coords, layer.extent),\n ] : null,\n icon: text.trim() ? null : icon,\r\n iconOffset: evaluateStyle(entry.layout?.['icon-offset'], properties, zoom) || /* alloc */ [0, 0],\r\n allowOverlap: entry.layout?.['icon-allow-overlap'] === true,\r\n color: vectorStyleValue(entry.paint, 'text-color', '#000', properties, zoom),\r\n halo: vectorStyleValue(entry.paint, 'text-halo-color', '#fff', properties, zoom),\r\n haloWidth: vectorStyleValue(entry.paint, 'text-halo-width', 0, properties, zoom),\r\n priority: /* alloc */ ['place_labels', 'place'].includes(entry['source-layer']) ? 0\r\n : /* alloc */ ['street_labels', 'transportation_name'].includes(entry['source-layer']) ? 1 : 2,\r\n });\r\n }\r\n }\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function readPaintValue(paint, key, fallback, properties, zoom) {\r\n if (paint[key] === undefined) return fallback;\r\n return evaluateStyle(paint[key], properties, zoom);\r\n}\r\n", "import { readPaintValue } from './readPaintValue.js';\r\nimport { styleColor } from './styleColor.js';\r\n\r\nexport function fillVectorPaint(paint, properties, zoom) {\r\n const fill = styleColor(readPaintValue(paint, 'fill-color', '#000', properties, zoom));\r\n const outline = readPaintValue(paint, 'fill-outline-color', null, properties, zoom);\r\n const rgb = outline === null ? null : styleColor(outline);\r\n const fillOpacity = readPaintValue(paint, 'fill-opacity', 1, properties, zoom) * fill[3];\r\n const fillColor = /* alloc */ { r: fill[0] / 255, g: fill[1] / 255, b: fill[2] / 255 };\r\n const color = rgb ? /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 } : null;\r\n return /* alloc */ {\r\n fillColor,\r\n fillOpacity,\r\n color,\r\n weight: 0.5\r\n };\r\n}\r\n", "import { evaluateStyle } from './evaluateStyle.js';\r\n\r\nexport function scaleDashArray(dash, weight, properties, zoom) {\r\n if (!dash) return undefined;\r\n let values = dash, i = 0, result = '';\r\n if (typeof dash[0] !== 'number') values = evaluateStyle(dash, properties, zoom);\r\n if (!Array.isArray(values)) throw /* alloc */ new TypeError('Style dash array must be an array');\r\n for (i = 0; i < values.length; i++) {\r\n if (i) result += ' ';\r\n result += values[i] * weight;\r\n }\r\n return result;\r\n}\r\n", "import { readPaintValue } from './readPaintValue.js';\r\nimport { scaleDashArray } from './scaleDashArray.js';\r\nimport { styleColor } from './styleColor.js';\r\n\r\nexport function lineVectorPaint(layer, paint, properties, zoom) {\r\n const weight = readPaintValue(paint, 'line-width', 1, properties, zoom);\r\n const rgb = styleColor(readPaintValue(paint, 'line-color', '#000', properties, zoom));\r\n const opacity = readPaintValue(paint, 'line-opacity', 1, properties, zoom) * rgb[3];\r\n const dashArray = scaleDashArray(paint['line-dasharray'], weight, properties, zoom);\r\n const lineCap = layer.layout?.['line-cap'] || 'butt';\r\n const lineJoin = layer.layout?.['line-join'] || 'miter';\r\n const color = /* alloc */ { r: rgb[0] / 255, g: rgb[1] / 255, b: rgb[2] / 255 };\r\n return /* alloc */ {\r\n color,\r\n opacity,\r\n weight,\r\n dashArray,\r\n lineCap,\r\n lineJoin\r\n };\r\n}\r\n", "import { fillVectorPaint } from './fillVectorPaint.js';\r\nimport { lineVectorPaint } from './lineVectorPaint.js';\r\n\r\nexport function vectorPaint(layer, properties, zoom) {\r\n const paint = layer.paint || /* alloc */ {};\r\n if (layer.type === 'fill') return fillVectorPaint(paint, properties, zoom);\r\n return lineVectorPaint(layer, paint, properties, zoom);\r\n}\r\n", "import { vectorPaint } from '../vector-style/vectorPaint.js';\r\nimport { visibleStyle } from '../vector-style/visibleStyle.js';\r\n\r\nexport function vectorFeaturePaint(entry, feature, sampleZoom, maxZoom) {\r\n if (entry.type === 'fill') return feature.type === 3 ? vectorPaint(entry, feature.properties, sampleZoom) : null;\r\n if (entry.type !== 'line' || feature.type !== 2) return null;\r\n let paint = vectorPaint(entry, feature.properties, sampleZoom), candidate;\r\n if (paint.weight > 0 && paint.opacity > 0) return paint;\r\n for (candidate = maxZoom; candidate >= 0; candidate--) {\r\n if (!visibleStyle(entry, feature.properties, candidate)) continue;\r\n paint = vectorPaint(entry, feature.properties, candidate);\r\n if (paint.weight > 0 && paint.opacity > 0) return paint;\r\n }\r\n return null;\r\n}\r\n", "export function mvtEdgeX(edge, y) {\r\n return edge[0][0] + (y - edge[0][1]) *\r\n (edge[1][0] - edge[0][0]) / (edge[1][1] - edge[0][1]);\r\n}\r\n", "import { mvtEdgeX } from './mvtEdgeX.js';\r\n\r\nexport function addMvtCrossings(edges, levels) {\r\n let i = 0, j, a, b, top, bottom, start, end;\r\n for (; i < edges.length; i++) {\r\n a = edges[i];\r\n for (j = i + 1; j < edges.length; j++) {\r\n b = edges[j];\r\n top = Math.max(a[0][1], b[0][1]);\r\n bottom = Math.min(a[1][1], b[1][1]);\r\n if (top >= bottom) continue;\r\n start = mvtEdgeX(a, top) - mvtEdgeX(b, top);\r\n end = mvtEdgeX(a, bottom) - mvtEdgeX(b, bottom);\r\n if (start * end < 0) levels.add(top + (bottom - top) * start / (start - end));\r\n }\r\n }\r\n}\r\n", "export function mergeMvtActiveEdges(active, sorted, left, mid, right) {\r\n let i = left, j = mid, k = left;\r\n while (i < mid && j < right) {\r\n if (active[j].x < active[i].x) sorted[k++] = active[j++];\r\n else sorted[k++] = active[i++];\r\n }\r\n while (i < mid) sorted[k++] = active[i++];\r\n while (j < right) sorted[k++] = active[j++];\r\n}\r\n", "import { mergeMvtActiveEdges } from './mergeMvtActiveEdges.js';\r\n\r\nexport function sortMvtActiveEdges(active) {\r\n const sorted = /* alloc */ new Array(active.length);\r\n let width = 1, left, mid, right, i;\r\n while (width < active.length) {\r\n for (left = 0; left < active.length; left += width * 2) {\r\n mid = Math.min(left + width, active.length);\r\n right = Math.min(left + width * 2, active.length);\r\n mergeMvtActiveEdges(active, sorted, left, mid, right);\r\n }\r\n for (i = 0; i < active.length; i++) active[i] = sorted[i];\r\n width *= 2;\r\n }\r\n}\r\n", "import { mvtEdgeX } from './mvtEdgeX.js';\r\nimport { sortMvtActiveEdges } from './sortMvtActiveEdges.js';\r\n\r\nexport function appendMvtBandTriangles(edges, top, bottom, triangles) {\r\n const mid = (top + bottom) / 2, active = /* alloc */ [];\r\n let edge, i = 0, leftTop, leftBottom, rightTop, rightBottom;\r\n for (edge of edges) {\r\n if (edge[0][1] < mid && edge[1][1] > mid) {\r\n active.push(/* alloc */ { edge, x: mvtEdgeX(edge, mid) });\r\n }\r\n }\r\n sortMvtActiveEdges(active);\r\n if (active.length % 2) throw /* alloc */ new Error('Unbalanced MVT polygon edges');\r\n for (; i < active.length; i += 2) {\r\n leftTop = mvtEdgeX(active[i].edge, top);\r\n leftBottom = mvtEdgeX(active[i].edge, bottom);\r\n rightTop = mvtEdgeX(active[i + 1].edge, top);\r\n rightBottom = mvtEdgeX(active[i + 1].edge, bottom);\r\n if (rightTop < leftTop - 1e-8 || rightBottom < leftBottom - 1e-8) {\r\n throw /* alloc */ new Error('Crossing MVT polygon edges');\r\n }\r\n if ((rightTop - leftTop) * (bottom - top) > 1e-6) {\r\n triangles.push(/* alloc */ [/* alloc */ [leftTop, top], /* alloc */ [rightTop, top],\r\n /* alloc */ [leftBottom, bottom]]);\r\n }\r\n if ((rightBottom - leftBottom) * (bottom - top) > 1e-6) {\r\n triangles.push(/* alloc */ [/* alloc */ [rightTop, top], /* alloc */ [rightBottom, bottom],\r\n /* alloc */ [leftBottom, bottom]]);\r\n }\r\n }\r\n}\r\n", "export function finiteMvtCoordinate(point) {\r\n let i = 0;\r\n for (; i < point.length; i++) {\r\n if (!Number.isFinite(point[i])) return false;\r\n }\r\n return true;\r\n}\r\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\r\n\r\nexport function collectMvtEdges(rings, edges, levels) {\r\n let ring, i, a, b;\r\n for (ring of rings) {\r\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\r\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\r\n }\r\n for (i = 1; i < ring.length; i++) {\r\n a = ring[i - 1];\r\n b = ring[i];\r\n if (!finiteMvtCoordinate(a) || !finiteMvtCoordinate(b)) {\r\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\r\n }\r\n levels.add(a[1]);\r\n if (a[1] !== b[1]) edges.push(/* alloc */ [a[1] < b[1] ? a : b, a[1] < b[1] ? b : a]);\r\n }\r\n }\r\n}\r\n", "export function sortedMvtLevels(levels) {\r\n const sorted = /* alloc */ [];\r\n let y, gap = 0, i = 0, j, value, count = 0;\r\n for (y of levels) sorted.push(y);\r\n gap = Math.floor(sorted.length / 2);\r\n for (; gap > 0; gap = Math.floor(gap / 2)) {\r\n for (i = gap; i < sorted.length; i++) {\r\n value = sorted[i];\r\n j = i;\r\n while (j >= gap && sorted[j - gap] > value) {\r\n sorted[j] = sorted[j - gap];\r\n j -= gap;\r\n }\r\n sorted[j] = value;\r\n }\r\n }\r\n for (i = 0; i < sorted.length; i++) {\r\n if (!count || sorted[i] - sorted[count - 1] > 1e-8) sorted[count++] = sorted[i];\r\n }\r\n sorted.length = count;\r\n return sorted;\r\n}\r\n", "import { addMvtCrossings } from './addMvtCrossings.js';\r\nimport { appendMvtBandTriangles } from './appendMvtBandTriangles.js';\r\nimport { collectMvtEdges } from './collectMvtEdges.js';\r\nimport { sortedMvtLevels } from './sortedMvtLevels.js';\r\n\r\nexport function tessellateVectorRings(rings) {\r\n const edges = /* alloc */ [], levels = /* alloc */ new Set(), triangles = /* alloc */ [];\r\n let sorted, i = 1, top, bottom;\r\n collectMvtEdges(rings, edges, levels);\r\n addMvtCrossings(edges, levels);\r\n sorted = sortedMvtLevels(levels);\r\n // ponytail: quadratic edge scan; use a sweep-line index for large datasets.\r\n for (; i < sorted.length; i++) {\r\n top = sorted[i - 1];\r\n bottom = sorted[i];\r\n if (bottom > top) appendMvtBandTriangles(edges, top, bottom, triangles);\r\n }\r\n return triangles;\r\n}\r\n", "export function isMvtFallbackError(error) {\r\n return error.message === 'Polygon triangulation area mismatch' ||\r\n error.message === 'Degenerate polygon ring' ||\r\n error.message === 'Unable to triangulate polygon: invalid or self-intersecting rings' ||\r\n error.message === 'Unable to connect polygon hole';\r\n}\r\n", "import { tessellateVectorRings } from './tessellateVectorRings.js';\r\nimport { triangulate } from '../triangulation/triangulate.js';\r\nimport { isMvtFallbackError } from './isMvtFallbackError.js';\r\n\r\nexport function appendMvtPolygonTriangles(rings, paths, vertices, triangles) {\r\n let indices, index, triangle, points, i = 0;\r\n try {\r\n indices = triangulate(paths[0], paths.slice(1));\r\n for (triangle of indices) {\r\n points = /* alloc */ [];\r\n for (index of triangle) points.push(/* alloc */ [vertices[index].x, vertices[index].y]);\r\n triangles.push(points);\r\n }\r\n } catch (error) {\r\n if (!isMvtFallbackError(error)) throw error;\r\n indices = tessellateVectorRings(rings);\r\n for (; i < indices.length; i++) triangles.push(indices[i]);\r\n }\r\n}\r\n", "import { finiteMvtCoordinate } from './finiteMvtCoordinate.js';\r\n\r\nexport function groupMvtPolygons(rings) {\r\n const polygons = /* alloc */ [];\r\n let polygon, exteriorSign, ring, area, i;\r\n for (ring of rings) {\r\n if (ring.length < 4 || ring[0][0] !== ring.at(-1)[0] || ring[0][1] !== ring.at(-1)[1]) {\r\n throw /* alloc */ new Error('MVT tessellation requires closed rings');\r\n }\r\n area = 0;\r\n for (i = 1; i < ring.length; i++) {\r\n if (!finiteMvtCoordinate(ring[i]) || !finiteMvtCoordinate(ring[i - 1])) {\r\n throw /* alloc */ new Error('Invalid MVT ring coordinate');\r\n }\r\n area += ring[i - 1][0] * ring[i][1] - ring[i][0] * ring[i - 1][1];\r\n }\r\n if (!polygon || area && Math.sign(area) === exteriorSign) {\r\n polygon = /* alloc */ [];\r\n polygons.push(polygon);\r\n exteriorSign = Math.sign(area);\r\n }\r\n polygon.push(ring);\r\n }\r\n return polygons;\r\n}\r\n", "export function mvtPathsVertices(paths) {\r\n const vertices = /* alloc */ [];\r\n let path, point;\r\n for (path of paths) {\r\n for (point of path) vertices.push(point);\r\n }\r\n return vertices;\r\n}\r\n", "export function mvtPolygonPaths(rings) {\r\n const paths = /* alloc */ [];\r\n let ring, i, path;\r\n for (ring of rings) {\r\n path = /* alloc */ [];\r\n for (i = 0; i < ring.length - 1; i++) {\r\n path.push(/* alloc */ { x: ring[i][0], y: ring[i][1] });\r\n }\r\n paths.push(path);\r\n }\r\n return paths;\r\n}\r\n", "import { appendMvtPolygonTriangles } from './appendMvtPolygonTriangles.js';\r\nimport { groupMvtPolygons } from './groupMvtPolygons.js';\r\nimport { mvtPathsVertices } from './mvtPathsVertices.js';\r\nimport { mvtPolygonPaths } from './mvtPolygonPaths.js';\r\n\r\n/**\r\n * Reuse City Mapper's triangulator in tile space, with even-odd tessellation\r\n * for quantized touching/crossing rings. Output triangles omit their closure.\r\n */\r\nexport function triangulateVectorRings(rings) {\r\n const polygons = groupMvtPolygons(rings), triangles = /* alloc */ [];\r\n let polygon, paths, vertices;\r\n for (polygon of polygons) {\r\n paths = mvtPolygonPaths(polygon);\r\n vertices = mvtPathsVertices(paths);\r\n appendMvtPolygonTriangles(polygon, paths, vertices, triangles);\r\n }\r\n return triangles;\r\n}\r\n", "export function simplifyVectorPath(path, tolerance) {\r\n if (path.length < 3) return path;\r\n const keep = /* alloc */ new Uint8Array(path.length);\r\n const stack = /* alloc */ [/* alloc */ [0, path.length - 1]], output = /* alloc */ [];\r\n keep[0] = keep[path.length - 1] = 1;\r\n let start, end, a, b, dx, dy, length, index, distance, i, p, t, squared;\r\n while (stack.length) {\r\n [start, end] = stack.pop(); a = path[start]; b = path[end];\r\n dx = b[0] - a[0]; dy = b[1] - a[1]; length = dx * dx + dy * dy;\r\n index = -1; distance = tolerance * tolerance;\r\n for (i = start + 1; i < end; i++) {\r\n p = path[i];\r\n t = length ? Math.max(0, Math.min(1, ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / length)) : 0;\r\n squared = (p[0] - a[0] - t * dx) ** 2 + (p[1] - a[1] - t * dy) ** 2;\r\n if (squared > distance) { distance = squared; index = i; }\r\n }\r\n if (index >= 0) { keep[index] = 1; stack.push(/* alloc */ [start, index], /* alloc */ [index, end]); }\r\n }\r\n for (i = 0; i < path.length; i++) if (keep[i]) output.push(path[i]);\r\n return output;\r\n}\r\n", "import { triangulateVectorRings } from '../mvt/triangulateVectorRings.js';\r\nimport { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\r\n\r\nexport function projectVectorTriangles(geometry, coords, extent, tolerance) {\r\n const paths = /* alloc */ [], rings = /* alloc */ [];\r\n let triangle, projected, point, ring;\r\n for (ring of geometry) {\r\n ring = simplifyVectorPath(ring, tolerance);\r\n if (ring.length >= 4) rings.push(ring);\r\n }\r\n for (triangle of triangulateVectorRings(rings)) {\r\n projected = /* alloc */ [];\r\n for (point of triangle) projected.push(projectVectorPoint(point, coords, extent));\r\n paths.push(/* alloc */ [projected]);\r\n }\r\n return paths;\r\n}\r\n", "import { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { simplifyVectorPath } from './simplifyVectorPath.js';\r\n\r\nexport function projectVectorPaths(geometry, coords, extent, tolerance) {\r\n const paths = /* alloc */ [];\r\n let path, simplified, projected, point;\r\n for (path of geometry) {\r\n simplified = simplifyVectorPath(path, tolerance);\r\n if (simplified.length < 3 && Math.hypot(simplified.at(-1)[0] - simplified[0][0], simplified.at(-1)[1] - simplified[0][1]) < tolerance * 2) continue;\r\n projected = /* alloc */ [];\r\n for (point of simplified) projected.push(projectVectorPoint(point, coords, extent));\r\n paths.push(projected);\r\n }\r\n return paths;\r\n}\r\n", "/** Simplification tolerance in tile units: about 0.7 screen pixels at the displayed scale. */\r\nexport function vectorTolerance(job, layer) {\r\n return layer.extent / 256 / 2 ** Math.max(-1, job.mapZoom - job.coords.z) * 0.7;\r\n}\r\n", "import { projectVectorTriangles } from './projectVectorTriangles.js';\r\nimport { projectVectorPaths } from './projectVectorPaths.js';\r\nimport { vectorTolerance } from './vectorTolerance.js';\r\n\r\nexport function vectorFeaturePaths(job, layer, entry, feature) {\r\n const cache = entry.type === 'fill' ? job.triangles : job.projected;\r\n let paths = cache.get(feature);\r\n if (!paths) {\r\n const tolerance = vectorTolerance(job, layer);\r\n paths = entry.type === 'fill'\r\n ? projectVectorTriangles(feature.geometry, job.coords, layer.extent, tolerance)\r\n : projectVectorPaths(feature.geometry, job.coords, layer.extent, tolerance);\r\n cache.set(feature, paths);\r\n }\r\n return paths;\r\n}\r\n", "import { vectorFeaturePaths } from './vectorFeaturePaths.js';\r\n\r\nexport function appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint) {\r\n const values = /* alloc */ [];\r\n let key, batch, path, count;\r\n for (key of dependencies) values.push(feature.properties[key]);\r\n key = JSON.stringify(/* alloc */ [paint, values]);\r\n batch = batches.get(key);\r\n if (!batch) {\r\n batch = /* alloc */ { kind: entry.type, order, paint, properties: feature.properties, entry,\r\n paths: /* alloc */ [], coordinates: 0 };\r\n batches.set(key, batch);\r\n }\r\n for (path of vectorFeaturePaths(job, layer, entry, feature)) {\r\n count = entry.type === 'fill' ? 3 : path.length;\r\n if (batch.coordinates + count > 6000 && batch.paths.length) {\r\n job.output.push(/* alloc */ { ...batch, paths: batch.paths });\r\n batch.paths = /* alloc */ []; batch.coordinates = 0;\r\n }\r\n batch.paths.push(path); batch.coordinates += count;\r\n }\r\n}\r\n", "import { vectorStyleDependencies } from './vectorStyleDependencies.js';\r\nimport { vectorFeatureZoom } from './vectorFeatureZoom.js';\r\nimport { prepareVectorLabel } from './prepareVectorLabel.js';\r\nimport { vectorFeaturePaint } from './vectorFeaturePaint.js';\r\nimport { vectorPaint } from '../vector-style/vectorPaint.js';\r\nimport { appendVectorBatch } from './appendVectorBatch.js';\r\n\r\nexport function prepareVectorStyleLayer(job, layer, entry, order) {\r\n const batches = /* alloc */ new Map(), dependencies = vectorStyleDependencies(entry);\r\n const outlineColor = entry.type === 'fill' ? entry.paint?.['fill-outline-color'] : null;\r\n const outline = outlineColor ? /* alloc */ { ...entry, type: 'line',\r\n paint: /* alloc */ { 'line-color': outlineColor, 'line-width': 1 } } : null;\r\n let feature, sampleZoom, paint, batch;\r\n for (feature of layer.features) {\r\n sampleZoom = vectorFeatureZoom(entry, feature.properties, job.zoom, job.maxZoom);\r\n if (sampleZoom < 0) continue;\r\n if (entry.type === 'symbol') {\r\n prepareVectorLabel(job, layer, entry, feature, order);\r\n continue;\r\n }\r\n paint = vectorFeaturePaint(entry, feature, sampleZoom, job.maxZoom);\r\n if (!paint) continue;\r\n appendVectorBatch(job, layer, entry, feature, order, batches, dependencies, paint);\r\n if (outline && feature.type === 3) {\r\n appendVectorBatch(job, layer, outline, feature, order, batches, dependencies,\r\n vectorPaint(outline, feature.properties, sampleZoom));\r\n }\r\n }\r\n for (batch of batches.values()) if (batch.paths.length) job.output.push(batch);\r\n}\r\n", "import { decodeVectorTile } from '../mvt/decodeVectorTile.js';\r\nimport { prepareVectorStyleLayer } from './prepareVectorStyleLayer.js';\r\n\r\nexport function prepareVectorTile(buffer, coords, style, zoom, source, maxZoom = 19, mapZoom = zoom) {\r\n const layers = decodeVectorTile(buffer), byName = /* alloc */ new Map();\r\n const job = /* alloc */ { coords, zoom, mapZoom, maxZoom, output: /* alloc */ [], labels: /* alloc */ [],\r\n triangles: /* alloc */ new WeakMap(), projected: /* alloc */ new WeakMap() };\r\n let layer, order, entry;\r\n for (layer of layers) byName.set(layer.name, layer);\r\n for ([order, entry] of style.entries()) {\r\n layer = byName.get(entry['source-layer']);\r\n if (!layer || source !== undefined && entry.source !== source) continue;\r\n prepareVectorStyleLayer(job, layer, entry, order);\r\n }\r\n return /* alloc */ { batches: job.output, labels: job.labels };\r\n}\r\n", "import { prepareVectorTile } from '../vector-tiles/prepareVectorTile.js';\r\n\r\nexport function onVectorTileMessage({ data }) {\r\n try {\r\n const result = prepareVectorTile(data.buffer, data.coords, data.style, data.zoom, data.source, data.maxZoom, data.mapZoom);\r\n self.postMessage(/* alloc */ { id: data.id, ...result });\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { id: data.id, error: error.message });\r\n }\r\n}\r\n", "export function validateCogRange(source, offset, length) {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 ||\r\n length <= 0 || length > 32000000 || !Number.isSafeInteger(offset + length) ||\r\n source.size !== undefined && offset + length > source.size) {\r\n throw /* alloc */ new Error('Invalid COG byte range');\r\n }\r\n}\r\n", "export function validateCogContentRange(source, range, rangeStart, length) {\r\n if (!range || Number(range[1]) !== rangeStart || Number(range[2]) !== rangeStart + length - 1 ||\r\n !Number.isSafeInteger(Number(range[3])) || Number(range[3]) < rangeStart + length ||\r\n (source.containerSize ?? source.size) !== undefined &&\r\n (source.containerSize ?? source.size) !== Number(range[3])) {\r\n throw /* alloc */ new Error('Invalid COG range response');\r\n }\r\n}\r\n", "export function invalidCogFullResponse(response) {\r\n return response.status !== 200 || Number(response.headers.get('Content-Length')) > 32000000;\r\n}\r\n", "import { validateCogContentRange } from './validateCogContentRange.js';\r\nimport { invalidCogFullResponse } from './invalidCogFullResponse.js';\r\n\r\nexport function validateCogResponse(source, response, rangeStart, length) {\r\n const etag = response.headers.get('ETag');\r\n if (source.etag && source.etag !== etag) throw /* alloc */ new Error('COG changed; recreate the layer');\r\n if (etag) source.etag = etag;\r\n const range = /^bytes (\\d+)-(\\d+)\\/(\\d+)$/.exec(response.headers.get('Content-Range') || '');\r\n if (response.status === 206) {\r\n validateCogContentRange(source, range, rangeStart, length);\r\n if (source.baseOffset === undefined) source.size = Number(range[3]);\r\n } else if (invalidCogFullResponse(response)) {\r\n throw /* alloc */ new Error('COG server must support byte ranges for files over 32 MB');\r\n }\r\n}\r\n", "export async function readCogBody(response, length) {\r\n const reader = response.body.getReader(), chunks = /* alloc */ [];\r\n let total = 0, part;\r\n try {\r\n while (!(part = await reader.read()).done) {\r\n total += part.value.byteLength;\r\n if (total > (response.status === 206 ? length : 32000000)) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized COG response');\r\n }\r\n chunks.push(part.value);\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n const data = /* alloc */ new Uint8Array(total);\r\n let start = 0, chunk;\r\n for (chunk of chunks) { data.set(chunk, start); start += chunk.length; }\r\n return data;\r\n}\r\n", "import { validateCogRange } from './validateCogRange.js';\r\nimport { validateCogResponse } from './validateCogResponse.js';\r\nimport { readCogBody } from './readCogBody.js';\r\n\r\nexport async function readCog(source, offset, length, signal) {\r\n signal?.throwIfAborted();\r\n validateCogRange(source, offset, length);\r\n if (source.full) return source.full.slice(offset, offset + length);\r\n const rangeStart = (source.baseOffset || 0) + offset;\r\n const response = await fetch(source.url, /* alloc */ {\r\n headers: /* alloc */ { Range: `bytes=${rangeStart}-${rangeStart + length - 1}` }, signal,\r\n });\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to read COG: HTTP ${response.status}`);\r\n validateCogResponse(source, response, rangeStart, length);\r\n const data = await readCogBody(response, length);\r\n if (response.status === 200) {\r\n if (source.baseOffset === undefined) source.size = data.byteLength;\r\n else if (data.byteLength !== source.containerSize) throw /* alloc */ new Error('Truncated PMTiles COG container');\r\n source.full = source.baseOffset === undefined ? data.buffer\r\n : data.slice(source.baseOffset, source.baseOffset + source.size);\r\n }\r\n const result = response.status === 200 ? source.full.slice(offset, offset + length) : data.buffer;\r\n if (result.byteLength !== length) throw /* alloc */ new Error('Truncated COG byte range');\r\n return result;\r\n}\r\n", "export const cogTags = [256, 257, 258, 259, 262, 277, 284, 317, 322, 323, 324, 325, 339, 33550, 33922, 34735];\r\n", "import { readCog } from './readCog.js';\r\n\r\nexport async function readCogTag(source, entries, i, tag, little) {\r\n const type = entries.getUint16(i * 12 + 2, little);\r\n const size = type === 3 ? 2 : type === 4 ? 4 : type === 12 ? 8 : 0;\r\n const length = entries.getUint32(i * 12 + 4, little);\r\n if (!size || !length || length > 1048576) throw /* alloc */ new Error(`Unsupported COG tag ${tag}`);\r\n const data = size * length <= 4 ? /* alloc */ new DataView(entries.buffer, i * 12 + 8, 4)\r\n : /* alloc */ new DataView(await readCog(source, entries.getUint32(i * 12 + 8, little), size * length));\r\n const values = /* alloc */ [];\r\n let j;\r\n for (j = 0; j < length; j++) values.push(type === 3 ? data.getUint16(j * size, little)\r\n : type === 4 ? data.getUint32(j * size, little) : data.getFloat64(j * size, little));\r\n return values;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { cogTags } from '../globals/cogTags.js';\r\nimport { readCogTag } from './readCogTag.js';\r\n\r\nexport async function readCogDirectory(source, offset) {\r\n const little = source.little;\r\n const count = /* alloc */ new DataView(await readCog(source, offset, 2)).getUint16(0, little);\r\n if (!count || count > 128) throw /* alloc */ new Error('Invalid COG directory size');\r\n const entries = /* alloc */ new DataView(await readCog(source, offset + 2, count * 12 + 4));\r\n const tags = /* alloc */ new Map();\r\n let i, tag;\r\n for (i = 0; i < count; i++) {\r\n tag = entries.getUint16(i * 12, little);\r\n if (tag === 42113) throw /* alloc */ new Error('COG nodata tags are not supported; export complete tiles');\r\n if (tag === 34264) throw /* alloc */ new Error('COG affine transformation matrices are not supported');\r\n if (!cogTags.includes(tag)) continue;\r\n if (tags.has(tag)) throw /* alloc */ new Error('Duplicate COG tag');\r\n tags.set(tag, await readCogTag(source, entries, i, tag, little));\r\n }\r\n return /* alloc */ { tags, next: entries.getUint32(count * 12, little) };\r\n}\r\n", "export function validCogDimensions(tags, width, height) {\r\n return !!width && !!height && width % 256 === 0 && height % 256 === 0 &&\r\n tags.get(322)?.[0] === 256 && tags.get(323)?.[0] === 256 &&\r\n (tags.get(259)?.[0] === 1 || tags.get(259)?.[0] === 8) &&\r\n (tags.get(284)?.[0] ?? 1) === 1 && (tags.get(317)?.[0] ?? 1) === 1;\r\n}\r\n", "export function validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned) {\r\n if (elevation) return tags.get(262)?.[0] === 1;\r\n return (samples === 3 || samples === 4) && bits?.length === samples && bytes && unsigned &&\r\n tags.get(262)?.[0] === 2;\r\n}\r\n", "import { validCogDimensions } from './validCogDimensions.js';\r\nimport { validCogEncoding } from './validCogEncoding.js';\r\n\r\nexport function getCogProfile(tags) {\r\n const width = tags.get(256)?.[0], height = tags.get(257)?.[0], samples = tags.get(277)?.[0] ?? 1;\r\n const bits = tags.get(258), format = tags.get(339) || /* alloc */ [1];\r\n let bytes = true, unsigned = true, floating = true, value;\r\n for (value of bits || /* alloc */ []) bytes &&= value === 8;\r\n for (value of format) { unsigned &&= value === 1; floating &&= value === 3; }\r\n const elevation = samples === 1 && bits?.length === 1 && bits[0] === 32 && floating;\r\n if (!validCogDimensions(tags, width, height) ||\r\n !validCogEncoding(tags, samples, bits, format, elevation, bytes, unsigned)) {\r\n throw /* alloc */ new Error('Unsupported COG profile: expected tiled 256px RGB(A) Uint8 or Float32, DEFLATE without predictor');\r\n }\r\n return /* alloc */ { width, height, samples, elevation };\r\n}\r\n", "export function hasCogProjection(keys) {\r\n let projected = false, area = false, i;\r\n if (keys) for (i = 4; i < keys.length; i += 4) {\r\n if (keys[i + 1] !== 0 || keys[i + 2] !== 1) continue;\r\n if (keys[i] === 3072 && keys[i + 3] === 3857) projected = true;\r\n if (keys[i] === 1025 && keys[i + 3] === 1) area = true;\r\n }\r\n return projected && area;\r\n}\r\n", "export function finiteCogValues(values) {\r\n let value;\r\n for (value of values || /* alloc */ []) if (!Number.isFinite(value)) return false;\r\n return true;\r\n}\r\n", "import { finiteCogValues } from './finiteCogValues.js';\r\n\r\nexport function validCogGeoArrays(keys, scale, tie) {\r\n return !!keys && keys[0] === 1 && keys.length === 4 + keys[3] * 4 &&\r\n !!scale && scale.length === 3 && finiteCogValues(scale) &&\r\n scale[0] > 0 && Math.abs(scale[0] - scale[1]) <= 1e-8 &&\r\n !!tie && tie.length === 6 && finiteCogValues(tie) && tie[0] === 0 && tie[1] === 0;\r\n}\r\n", "import { hasCogProjection } from './hasCogProjection.js';\r\nimport { validCogGeoArrays } from './validCogGeoArrays.js';\r\n\r\nexport function getCogBase(tags, width, height, elevation) {\r\n const keys = tags.get(34735), scale = tags.get(33550), tie = tags.get(33922);\r\n if (!validCogGeoArrays(keys, scale, tie) || !hasCogProjection(keys)) {\r\n throw /* alloc */ new Error('COG must use north-up EPSG:3857 PixelIsArea georeferencing');\r\n }\r\n return /* alloc */ { width, height, resolution: scale[0], left: tie[3], top: tie[4], elevation };\r\n}\r\n", "export function validCogGrid(source, base, profile, zoom, x, y, resolution) {\r\n return zoom >= 0 && zoom <= 24 &&\r\n Math.abs(20037508.342789244 * 2 / (256 * 2 ** zoom) - resolution) <= resolution * 1e-7 &&\r\n (!profile.elevation || Number.isInteger(x) && Number.isInteger(y)) &&\r\n Math.abs(base.width / profile.width - base.height / profile.height) <= 1e-7 &&\r\n profile.elevation === base.elevation &&\r\n x >= 0 && y >= 0 && x + profile.width / 256 <= 2 ** zoom && y + profile.height / 256 <= 2 ** zoom &&\r\n !source.levels.has(zoom) && !(base.elevation && source.levels.size);\r\n}\r\n", "export function validateCogOffsets(source, level) {\r\n if (level.offsets?.length !== level.columns * level.rows || level.lengths?.length !== level.offsets.length) {\r\n throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n let i;\r\n for (i = 0; i < level.offsets.length; i++) {\r\n if (!level.offsets[i] || !level.lengths[i] || level.lengths[i] > 1048576 ||\r\n level.offsets[i] + level.lengths[i] > source.size) throw /* alloc */ new Error('Invalid COG tile offsets or lengths');\r\n }\r\n}\r\n", "import { getCogProfile } from './getCogProfile.js';\r\nimport { getCogBase } from './getCogBase.js';\r\nimport { validCogGrid } from './validCogGrid.js';\r\nimport { validateCogOffsets } from './validateCogOffsets.js';\r\n\r\nexport function readCogLevel(source, directory, state) {\r\n const tags = directory.tags, profile = getCogProfile(tags);\r\n if (!state.base) state.base = getCogBase(tags, profile.width, profile.height, profile.elevation);\r\n const base = state.base, resolution = base.resolution * base.width / profile.width;\r\n const zoom = Math.round(Math.log2(20037508.342789244 * 2 / (256 * resolution)));\r\n const span = 20037508.342789244 * 2 / 2 ** zoom;\r\n let x = (base.left + 20037508.342789244) / span;\r\n let y = (20037508.342789244 - base.top) / span;\r\n if (Math.abs(x - Math.round(x)) < 1e-6) x = Math.round(x);\r\n if (Math.abs(y - Math.round(y)) < 1e-6) y = Math.round(y);\r\n if (!validCogGrid(source, base, profile, zoom, x, y, resolution)) {\r\n throw /* alloc */ new Error('COG levels must align with the Web Mercator XYZ tile grid');\r\n }\r\n const level = /* alloc */ {\r\n x, y, columns: profile.width / 256, rows: profile.height / 256, samples: profile.samples,\r\n elevation: profile.elevation, compression: tags.get(259)[0], offsets: tags.get(324), lengths: tags.get(325),\r\n };\r\n validateCogOffsets(source, level);\r\n source.levels.set(zoom, level);\r\n state.minZoom = Math.min(state.minZoom, zoom);\r\n state.maxZoom = Math.max(state.maxZoom, zoom);\r\n}\r\n", "import { readCogDirectory } from './readCogDirectory.js';\r\nimport { readCogLevel } from './readCogLevel.js';\r\n\r\nexport async function readCogDirectories(source, offset) {\r\n const state = /* alloc */ { base: null, minZoom: Infinity, maxZoom: -Infinity };\r\n const seen = /* alloc */ new Set();\r\n let directory;\r\n while (offset) {\r\n if (seen.has(offset) || seen.size >= 24) throw /* alloc */ new Error('Cyclic or excessive COG directories');\r\n seen.add(offset);\r\n directory = await readCogDirectory(source, offset);\r\n readCogLevel(source, directory, state);\r\n offset = directory.next;\r\n }\r\n if (!state.base) throw /* alloc */ new Error('COG has no image directory');\r\n if (source.levels.size !== state.maxZoom - state.minZoom + 1) {\r\n throw /* alloc */ new Error('COG overview zooms must be contiguous');\r\n }\r\n return /* alloc */ { base: state.base, minZoom: state.minZoom, maxZoom: state.maxZoom };\r\n}\r\n", "export async function decodeCogTile(data, length, compression) {\r\n if (compression === 1) {\r\n if (data.byteLength !== length) throw /* alloc */ new Error('Invalid uncompressed COG tile size');\r\n return data;\r\n }\r\n const stream = /* alloc */ new Blob(/* alloc */ [data]).stream()\r\n .pipeThrough(/* alloc */ new DecompressionStream('deflate'));\r\n const reader = stream.getReader(), result = /* alloc */ new Uint8Array(length);\r\n let offset = 0, chunk;\r\n try {\r\n while (!(chunk = await reader.read()).done) {\r\n if (offset + chunk.value.length > length) {\r\n await reader.cancel();\r\n throw /* alloc */ new Error('Oversized decoded COG tile');\r\n }\r\n result.set(chunk.value, offset);\r\n offset += chunk.value.length;\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n if (offset !== length) throw /* alloc */ new Error('Truncated decoded COG tile');\r\n return result.buffer;\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { decodeCogTile } from './decodeCogTile.js';\r\n\r\nexport async function readCogBlock(source, level, x, y, signal) {\r\n const index = y * level.columns + x;\r\n return decodeCogTile(await readCog(source, level.offsets[index], level.lengths[index], signal),\r\n 256 * 256 * (level.elevation ? 4 : level.samples), level.compression);\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getElevationTile(source, level, x, y, signal) {\r\n const data = await readCogBlock(source, level, x - level.x, y - level.y, signal);\r\n signal?.throwIfAborted();\r\n const view = /* alloc */ new DataView(data), heights = /* alloc */ new Float32Array(256 * 256);\r\n let i, height;\r\n for (i = 0; i < heights.length; i++) {\r\n height = view.getFloat32(i * 4, source.little);\r\n if (!Number.isFinite(height) || height < -12000 || height > 10000) {\r\n throw /* alloc */ new Error('Invalid or missing COG elevation sample');\r\n }\r\n heights[i] = height;\r\n }\r\n return /* alloc */ { data: heights.buffer };\r\n}\r\n", "import { readCogBlock } from './readCogBlock.js';\r\n\r\nexport async function getColorTile(source, level, x, y, signal) {\r\n const canvas = /* alloc */ new OffscreenCanvas(256, 256), context = canvas.getContext('2d');\r\n if (!context) throw /* alloc */ new Error('Unable to create COG tile canvas');\r\n const left = (x - level.x) * 256, top = (y - level.y) * 256;\r\n let bx, by, pixels, rgba, i, j, bitmap;\r\n for (by = Math.max(0, Math.floor(top / 256)); by < Math.min(level.rows, Math.ceil(top / 256 + 1)); by++) {\r\n for (bx = Math.max(0, Math.floor(left / 256)); bx < Math.min(level.columns, Math.ceil(left / 256 + 1)); bx++) {\r\n pixels = /* alloc */ new Uint8Array(await readCogBlock(source, level, bx, by, signal));\r\n signal?.throwIfAborted();\r\n rgba = /* alloc */ new Uint8ClampedArray(256 * 256 * 4);\r\n for (i = 0, j = 0; i < pixels.length; i += level.samples, j += 4) {\r\n rgba[j] = pixels[i]; rgba[j + 1] = pixels[i + 1]; rgba[j + 2] = pixels[i + 2];\r\n rgba[j + 3] = level.samples === 4 ? pixels[i + 3] : 255;\r\n }\r\n bitmap = await createImageBitmap(/* alloc */ new ImageData(rgba, 256, 256));\r\n context.drawImage(bitmap, bx * 256 - left, by * 256 - top);\r\n bitmap.close();\r\n }\r\n }\r\n const image = canvas.transferToImageBitmap();\r\n if (signal?.aborted) { image.close(); signal.throwIfAborted(); }\r\n return /* alloc */ { image };\r\n}\r\n", "export function validCogTileCoordinates(z, x, y) {\r\n return Number.isSafeInteger(z) && Number.isSafeInteger(x) && Number.isSafeInteger(y) &&\r\n z >= 0 && z <= 24 && x >= 0 && y >= 0 && x < 2 ** z && y < 2 ** z;\r\n}\r\n", "import { getElevationTile } from './getElevationTile.js';\r\nimport { getColorTile } from './getColorTile.js';\r\nimport { validCogTileCoordinates } from './validCogTileCoordinates.js';\r\n\r\nexport async function getCogTile(source, z, x, y, signal) {\r\n signal?.throwIfAborted();\r\n if (!validCogTileCoordinates(z, x, y)) throw /* alloc */ new Error('Invalid COG tile coordinates');\r\n const level = source.levels.get(z);\r\n if (!level || x + 1 <= level.x || y + 1 <= level.y || x >= level.x + level.columns || y >= level.y + level.rows) return;\r\n if (level.elevation) return getElevationTile(source, level, x, y, signal);\r\n return getColorTile(source, level, x, y, signal);\r\n}\r\n", "export function getCogHeader(source) {\r\n return source.header;\r\n}\r\n", "export const headerOffsets = [\n 'rootDirectoryOffset', 'rootDirectoryLength', 'jsonMetadataOffset', 'jsonMetadataLength',\n 'leafDirectoryOffset', 'leafDirectoryLength', 'tileDataOffset', 'tileDataLength',\n 'numAddressedTiles', 'numTileEntries', 'numTileContents',\n];\n", "export const headerFlags = ['clustered', 'internalCompression', 'tileCompression', 'tileType', 'minZoom', 'maxZoom'];\n", "export const headerBounds = ['minLon', 'minLat', 'maxLon', 'maxLat'];\n", "import { headerOffsets } from '../globals/headerOffsets.js';\nimport { headerFlags } from '../globals/headerFlags.js';\nimport { headerBounds } from '../globals/headerBounds.js';\n\n\n/** Decode the PMTiles v3 header. */\nexport function decodeHeader(data) {\n const view = data.byteLength >= 127\n ? /* alloc */ new DataView(data) : null;\n // \"PMTiles\" followed by version 3, read as two little-endian words.\n if (!view || view.getUint32(0, true) !== 0x69544d50 || view.getUint32(4, true) !== 0x0373656c) {\n throw /* alloc */ new Error('Expected a PMTiles v3 archive');\n }\n const header = /* alloc */ {};\n let i;\n for (i = 0; i < headerOffsets.length; i++) header[headerOffsets[i]] = Number(view.getBigUint64(8 + i * 8, true));\n for (i = 0; i < headerFlags.length; i++) header[headerFlags[i]] = view.getUint8(96 + i);\n for (i = 0; i < headerBounds.length; i++) header[headerBounds[i]] = view.getInt32(102 + i * 4, true) / 1e7;\n header.centerZoom = view.getUint8(118);\n header.centerLon = view.getInt32(119, true) / 1e7;\n header.centerLat = view.getInt32(123, true) / 1e7;\n return header;\n}\n", "export function validateCogContainer(container, header) {\r\n if (header.tileType !== 0 || header.tileCompression !== 1 ||\r\n !Number.isSafeInteger(header.jsonMetadataOffset) || !Number.isSafeInteger(header.jsonMetadataLength) ||\r\n header.jsonMetadataLength <= 0 || header.jsonMetadataLength > 1048576 ||\r\n !Number.isSafeInteger(header.tileDataOffset) || !Number.isSafeInteger(header.tileDataLength) ||\r\n header.tileDataOffset < 127 || header.tileDataOffset + header.tileDataLength > container.size) {\r\n throw /* alloc */ new Error('Invalid PMTiles COG asset container');\r\n }\r\n}\r\n", "export async function decompress(data, compression) {\n if (compression === 1) return data;\n if (compression !== 2) {\n throw /* alloc */ new Error(`Unsupported PMTiles compression: ${compression}`);\n }\n const blob = /* alloc */ new Blob(\n /* alloc */ [data]);\n const stream = /* alloc */ new DecompressionStream('gzip');\n return /* alloc */ new Response(blob.stream().pipeThrough(stream)).arrayBuffer();\n}\n", "import { decompress } from '../archives/decompress.js';\r\nimport { readCog } from './readCog.js';\r\n\r\nexport async function getCogAssetEntry(container, header, asset) {\r\n const metadata = JSON.parse(/* alloc */ new TextDecoder().decode(await decompress(\r\n await readCog(container, header.jsonMetadataOffset, header.jsonMetadataLength), header.internalCompression)));\r\n const assets = metadata.cog_assets || /* alloc */ {};\r\n const entry = Object.hasOwn(assets, asset) ? metadata.cog_assets[asset] : null;\r\n if (metadata.format !== 'cog-assets-v1' || !entry || !Number.isSafeInteger(entry.offset) ||\r\n !Number.isSafeInteger(entry.length) || entry.offset < 0 || entry.length < 8 ||\r\n entry.offset + entry.length > header.tileDataLength) {\r\n throw /* alloc */ new Error(`Invalid or missing PMTiles COG asset: ${asset}`);\r\n }\r\n return entry;\r\n}\r\n", "import { decodeHeader } from '../archives/decodeHeader.js';\r\nimport { readCog } from './readCog.js';\r\nimport { validateCogContainer } from './validateCogContainer.js';\r\nimport { getCogAssetEntry } from './getCogAssetEntry.js';\r\n\r\nexport async function openCogAsset(url, asset) {\r\n const container = /* alloc */ { url };\r\n const header = decodeHeader(await readCog(container, 0, 127));\r\n validateCogContainer(container, header);\r\n const entry = await getCogAssetEntry(container, header, asset);\r\n const baseOffset = header.tileDataOffset + entry.offset;\r\n return /* alloc */ { url, baseOffset, size: entry.length, containerSize: container.size,\r\n etag: container.etag, full: container.full?.slice(baseOffset, baseOffset + entry.length) };\r\n}\r\n", "import { readCog } from './readCog.js';\r\nimport { readCogDirectories } from './readCogDirectories.js';\r\nimport { getCogTile } from './getCogTile.js';\r\nimport { getCogHeader } from './getCogHeader.js';\r\nimport { openCogAsset } from './openCogAsset.js';\r\n\r\n/** EPSG:3857 COGs, standalone or named assets in a PMTiles container. */\r\nexport async function openCog(url, asset) {\r\n const source = asset === undefined ? /* alloc */ { url } : await openCogAsset(url, asset);\r\n source.levels = /* alloc */ new Map();\r\n const header = /* alloc */ new DataView(await readCog(source, 0, 8));\r\n const order = header.getUint16(0);\r\n if (order !== 0x4949 && order !== 0x4d4d) throw /* alloc */ new Error('Invalid TIFF byte order');\r\n source.little = order === 0x4949;\r\n if (header.getUint16(2, source.little) !== 42) throw /* alloc */ new Error('Expected classic TIFF (BigTIFF is not supported)');\r\n const { base, minZoom, maxZoom } = await readCogDirectories(source, header.getUint32(4, source.little));\r\n const half = 20037508.342789244;\r\n const left = base.left + base.resolution / 2, right = base.left + (base.width - 0.5) * base.resolution;\r\n const top = base.top - base.resolution / 2, bottom = base.top - (base.height - 0.5) * base.resolution;\r\n source.header = /* alloc */ {\r\n minZoom, maxZoom, tileType: base.elevation ? 0 : 2,\r\n minLon: left / half * 180, maxLon: right / half * 180,\r\n minLat: Math.atan(Math.sinh(bottom / half * Math.PI)) * 180 / Math.PI,\r\n maxLat: Math.atan(Math.sinh(top / half * Math.PI)) * 180 / Math.PI,\r\n };\r\n return /* alloc */ {\r\n getHeader: getCogHeader.bind(null, source),\r\n getZxy: getCogTile.bind(null, source),\r\n };\r\n}\r\n", "export const workerCogSource = { key: null, archive: null };\r\n", "import { openCog } from '../cog/openCog.js';\r\nimport { workerCogSource } from '../globals/workerCogSource.js';\r\n\r\nexport async function onCogMessage({ data }) {\r\n try {\r\n const key = JSON.stringify(/* alloc */ [data.url, data.asset]);\r\n // ponytail: one cached COG per worker; use a bounded per-source cache if interleaved archives cause churn.\r\n if (workerCogSource.key !== key) {\r\n workerCogSource.key = key;\r\n workerCogSource.archive = openCog(data.url, data.asset);\r\n }\r\n const archive = await workerCogSource.archive;\r\n const result = data.z === undefined ? await archive.getHeader() : await archive.getZxy(data.z, data.x, data.y);\r\n const transfers = /* alloc */ [];\r\n if (result?.data) transfers.push(result.data);\r\n if (result?.image) transfers.push(result.image);\r\n self.postMessage(result, transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n", "export const geometryDecoder = new TextDecoder();\n", "export function hasUnsupportedPrimitives(meshes) {\n if (!meshes) return false;\n let mesh, primitive;\n for (mesh of meshes) {\n for (primitive of mesh.primitives) {\n if (primitive.targets || (primitive.mode !== undefined && primitive.mode !== 4)) return true;\n }\n }\n return false;\n}\n", "import { geometryDecoder } from '../globals/geometryDecoder.js';\n/** Decode a static glTF JSON document or GLB v2 container. */\nimport { hasUnsupportedPrimitives } from './hasUnsupportedPrimitives.js';\n\n\nexport function decodeModel(data) {\n const view = /* alloc */ new DataView(data);\n const decoder = geometryDecoder;\n let description;\n let offset, length, type, chunk;\n if (view.getUint32(0, true) === 0x46546c67) {\n // Decode GLB v2 chunks; unknown types are skipped.\n if (view.getUint32(4, true) !== 2 || view.getUint32(8, true) !== data.byteLength) {\n throw /* alloc */ new Error('Invalid GLB header');\n }\n let binary;\n for (offset = 12; offset < data.byteLength;) {\n if (offset + 8 > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB chunk');\n }\n length = view.getUint32(offset, true), type = view.getUint32(offset + 4, true);\n offset += 8;\n if (offset + length > data.byteLength) {\n throw /* alloc */ new Error('Truncated GLB data');\n }\n chunk = data.slice(offset, offset + length);\n if (type === 0x4e4f534a) {\n description = JSON.parse(decoder.decode(chunk));\n }\n if (type === 0x004e4942) {\n binary = chunk;\n }\n offset += length;\n }\n if (!description) {\n throw /* alloc */ new Error('Missing GLB JSON');\n }\n if (binary) {\n description.buffers[0].binary = binary;\n }\n } else {\n description = JSON.parse(decoder.decode(data));\n }\n if (description.skins?.length || description.animations?.length || description.extensionsRequired?.length || hasUnsupportedPrimitives(description.meshes)) {\n throw /* alloc */ new Error('Layer3D supports static triangle glTF models without required extensions');\n }\n return description;\n}\n", "export async function loadBuffer(buffer, directory) {\r\n if (buffer.binary) return;\r\n const response = await fetch(/* alloc */ new URL(buffer.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model buffer: HTTP ${response.status}`);\r\n buffer.binary = await response.arrayBuffer();\r\n}\r\n", "export const geometryImageOptions = {\n premultiplyAlpha: 'none',\n colorSpaceConversion: 'none'\n};\n", "import { geometryImageOptions } from '../globals/geometryImageOptions.js';\n\r\n\r\nexport async function loadImage(description, directory, image) {\r\n let blob;\r\n if (image.bufferView !== undefined) {\r\n const view = description.bufferViews[image.bufferView];\r\n const buffer = description.buffers[view.buffer].binary;\r\n blob = /* alloc */ new Blob(\r\n /* alloc */ [buffer.slice(view.byteOffset || 0, (view.byteOffset || 0) + view.byteLength)],\r\n /* alloc */ { type: image.mimeType });\r\n } else {\r\n const response = await fetch(/* alloc */ new URL(image.uri, directory).href);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model texture: HTTP ${response.status}`);\r\n blob = await response.blob();\r\n }\r\n // Preserve straight alpha and raw samples; GPU sRGB formats do color decoding.\r\n return createImageBitmap(blob, geometryImageOptions);\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { loadBuffer } from './loadBuffer.js';\r\nimport { loadImage } from '../textures/loadModelImage.js';\r\n\r\nexport async function loadModelResources(description, directory) {\r\n const bufferRequests = /* alloc */ [];\r\n let buffer;\r\n for (buffer of description.buffers || geometryEmpty) bufferRequests.push(loadBuffer(buffer, directory));\r\n await Promise.all(bufferRequests);\r\n const imageRequests = /* alloc */ [];\r\n let image;\r\n for (image of description.images || geometryEmpty) imageRequests.push(loadImage(description, directory, image));\r\n return Promise.all(imageRequests);\r\n}\r\n", "export const geometrySemantics = [\n ['POSITION', 'position'],\n ['NORMAL', 'normal'],\n ['TEXCOORD_0', 'uv']\n];\n", "export const types = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array,\n};\n", "export const sizes = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4\n};\n", "export function readAccessorValue(input, Type, at) {\r\n return Type === Int8Array ? input.getInt8(at) :\r\n Type === Uint8Array ? input.getUint8(at) :\r\n Type === Int16Array ? input.getInt16(at, true) :\r\n Type === Uint16Array ? input.getUint16(at, true) :\r\n Type === Uint32Array ? input.getUint32(at, true) : input.getFloat32(at, true);\r\n}\r\n", "import { readAccessorValue } from './readAccessorValue.js';\n\nexport function readAccessorValues(description, Type, size, data, accessorCount, indices, viewIndex, offset, count, stride) {\n const view = description.bufferViews[viewIndex], bytes = Type.BYTES_PER_ELEMENT;\n const buffer = description.buffers[view.buffer].binary;\n stride ||= size * bytes;\n if (!buffer || stride < size * bytes || offset < 0 ||\n (view.byteOffset || 0) + view.byteLength > buffer.byteLength ||\n (count - 1) * stride + size * bytes + offset > view.byteLength) throw /* alloc */ new Error('glTF accessor outside buffer view');\n const input = /* alloc */ new DataView(buffer);\n let i, j, at, output;\n for (i = 0; i < count; i++) {\n output = indices ? indices[i] : i;\n if (indices && output >= accessorCount) throw /* alloc */ new Error('Invalid sparse glTF index');\n for (j = 0; j < size; j++) {\n at = (view.byteOffset || 0) + offset + i * stride + j * bytes;\n data[output * size + j] = readAccessorValue(input, Type, at);\n }\n }\n}\n", "import { types } from '../globals/types.js';\r\nimport { readAccessorValues } from './readAccessorValues.js';\r\n\r\nexport function readSparseAccessor(description, spec, Type, size, data) {\r\n const sparse = spec.sparse, Index = types[sparse.indices.componentType];\r\n if (Index !== Uint8Array && Index !== Uint16Array && Index !== Uint32Array) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const view = description.bufferViews[sparse.indices.bufferView];\r\n const offset = (view.byteOffset || 0) + (sparse.indices.byteOffset || 0);\r\n if (sparse.count > spec.count ||\r\n (sparse.indices.byteOffset || 0) + sparse.count * Index.BYTES_PER_ELEMENT > view.byteLength) {\r\n throw /* alloc */ new Error('Invalid sparse glTF indices');\r\n }\r\n const indices = /* alloc */ new Index(description.buffers[view.buffer].binary.slice(\r\n offset, offset + sparse.count * Index.BYTES_PER_ELEMENT));\r\n readAccessorValues(description, Type, size, data, spec.count, indices, sparse.values.bufferView,\r\n sparse.values.byteOffset || 0, sparse.count, 0);\r\n}\r\n", "export function normalizeAccessor(spec, Type, data, size) {\r\n const normalized = /* alloc */ new Float32Array(data.length);\r\n let i;\r\n for (i = 0; i < data.length; i++) {\r\n normalized[i] = spec.normalized\r\n ? Math.max(-1, data[i] / (Type === Int8Array ? 127 : Type === Int16Array ? 32767 :\r\n Type === Uint8Array ? 255 : Type === Uint32Array ? 4294967295 : 65535))\r\n : data[i];\r\n }\r\n return /* alloc */ { data: normalized, size, indices: data };\r\n}\r\n", "import { types } from '../globals/types.js';\nimport { sizes } from '../globals/sizes.js';\n\n\nimport { readAccessorValues } from './readAccessorValues.js';\nimport { readSparseAccessor } from './readSparseAccessor.js';\nimport { normalizeAccessor } from './normalizeAccessor.js';\n\n/** Decode packed, interleaved, normalized or sparse glTF accessor data. */\n\nexport function readAccessor(description, index) {\n const spec = description.accessors[index], Type = types[spec.componentType], size = sizes[spec.type];\n if (!Type || !size || !Number.isInteger(spec.count) || spec.count < 0) {\n throw /* alloc */ new Error('Invalid glTF accessor');\n }\n const data = /* alloc */ new Type(spec.count * size);\n if (spec.bufferView !== undefined) {\n readAccessorValues(\n description, Type, size, data, spec.count, null,\n spec.bufferView,\n spec.byteOffset || 0,\n spec.count,\n description.bufferViews[spec.bufferView].byteStride\n );\n }\n if (spec.sparse) {\n readSparseAccessor(description, spec, Type, size, data);\n }\n if (spec.componentType === 5126) {\n return /* alloc */ { data, size };\n }\n return normalizeAccessor(spec, Type, data, size);\n}\n", "import { geometrySemantics } from '../globals/geometrySemantics.js';\r\nimport { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelAttributes(description, primitive) {\r\n const attributes = /* alloc */ {};\r\n let semantic, name;\r\n for ([semantic, name] of geometrySemantics) {\r\n if (primitive.attributes[semantic] !== undefined) {\r\n attributes[name] = readAccessor(description, primitive.attributes[semantic]);\r\n }\r\n }\r\n if (!attributes.position) throw /* alloc */ new Error('glTF mesh has no positions');\r\n const vertexCount = attributes.position.data.length / 3;\r\n if (attributes.position.size !== 3 || vertexCount < 3) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n let attribute;\r\n for (attribute of Object.values(attributes)) {\r\n if (attribute.data.length / attribute.size !== vertexCount) throw /* alloc */ new Error('Invalid glTF vertex attributes');\r\n }\r\n return /* alloc */ { attributes, vertexCount };\r\n}\r\n", "import { readAccessor } from './readAccessor.js';\r\n\r\nexport function readModelIndices(description, primitive, attributes, vertexCount) {\r\n if (primitive.indices !== undefined) {\r\n const index = readAccessor(description, primitive.indices);\r\n attributes.index = /* alloc */ { size: 1, data: index.indices };\r\n if (!(index.indices instanceof Uint8Array || index.indices instanceof Uint16Array ||\r\n index.indices instanceof Uint32Array) || index.size !== 1 || index.indices.length % 3) {\r\n throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n }\r\n let value;\r\n for (value of index.indices) if (value >= vertexCount) throw /* alloc */ new Error('Invalid glTF triangle indices');\r\n } else if (vertexCount % 3) {\r\n throw /* alloc */ new Error('Incomplete glTF triangle');\r\n }\r\n}\r\n", "/** Area-weighted vertex normals, for indexed or non-indexed triangles. */\n\nexport function vertexNormals(p, indices) {\n // Accumulate area-weighted face normals for shared vertices, then normalize.\n const normals = /* alloc */ new Float32Array(p.length);\n let i, a, b, c, ux, uy, uz, vx, vy, vz, j, nx, ny, nz, index, length;\n for (i = 0; i < (indices?.length || p.length / 3); i += 3) {\n a = indices ? indices[i] : i, b = indices ? indices[i + 1] : i + 1, c = indices ? indices[i + 2] : i + 2;\n ux = p[b * 3] - p[a * 3], uy = p[b * 3 + 1] - p[a * 3 + 1], uz = p[b * 3 + 2] - p[a * 3 + 2];\n vx = p[c * 3] - p[a * 3], vy = p[c * 3 + 1] - p[a * 3 + 1], vz = p[c * 3 + 2] - p[a * 3 + 2];\n nx = uy * vz - uz * vy, ny = uz * vx - ux * vz, nz = ux * vy - uy * vx;\n for (j = 0; j < 3; j++) {\n index = j === 0 ? a : j === 1 ? b : c;\n normals[index * 3] += nx;\n normals[index * 3 + 1] += ny;\n normals[index * 3 + 2] += nz;\n }\n }\n for (i = 0; i < normals.length; i += 3) {\n length = Math.hypot(normals[i], normals[i + 1], normals[i + 2]) || 1;\n for (j = 0; j < 3; j++) {\n normals[i + j] /= length;\n }\n }\n return normals;\n}\n", "import { readModelAttributes } from './readModelAttributes.js';\r\nimport { readModelIndices } from './readModelIndices.js';\r\nimport { vertexNormals } from '../geometry/vertexNormals.js';\r\n\r\nexport function prepareModelPrimitive(description, primitive) {\r\n const { attributes, vertexCount } = readModelAttributes(description, primitive);\r\n readModelIndices(description, primitive, attributes, vertexCount);\r\n if (!attributes.normal) {\r\n attributes.normal = /* alloc */ { size: 3,\r\n data: vertexNormals(attributes.position.data, attributes.index?.data) };\r\n }\r\n if (attributes.index?.data instanceof Uint8Array) {\r\n attributes.index.data = Uint16Array.from(attributes.index.data);\r\n }\r\n primitive.preparedAttributes = attributes;\r\n return attributes;\r\n}\r\n", "import { geometryEmpty } from '../globals/geometryEmpty.js';\r\nimport { prepareModelPrimitive } from './prepareModelPrimitive.js';\r\n\r\nexport function prepareModelGeometry(description, scene) {\r\n const pending = scene.nodes.slice(), visited = /* alloc */ new Set();\r\n const meshes = /* alloc */ new Set(), transfers = /* alloc */ new Set();\r\n let index, spec, primitive, attribute, child;\r\n while (pending.length) {\r\n index = pending.pop();\r\n if (visited.has(index)) continue;\r\n visited.add(index);\r\n spec = description.nodes[index];\r\n if (!spec) throw /* alloc */ new Error('Invalid glTF node');\r\n if (spec.mesh !== undefined) meshes.add(spec.mesh);\r\n for (child of spec.children || geometryEmpty) pending.push(child);\r\n }\r\n for (index of meshes) {\r\n for (primitive of description.meshes[index].primitives) {\r\n for (attribute of Object.values(prepareModelPrimitive(description, primitive))) {\r\n transfers.add(attribute.data.buffer);\r\n }\r\n }\r\n }\r\n return /* alloc */ [...transfers];\r\n}\r\n", "import { decodeModel } from './decodeModel.js';\r\nimport { loadModelResources } from './loadModelResources.js';\r\nimport { prepareModelGeometry } from './prepareModelGeometry.js';\r\n\r\nexport async function prepareModel(url) {\r\n const response = await fetch(url);\r\n if (!response.ok) throw /* alloc */ new Error(`Unable to load model: HTTP ${response.status}`);\r\n const description = decodeModel(await response.arrayBuffer());\r\n const scene = description.scenes?.[description.scene || 0];\r\n if (!scene) throw /* alloc */ new Error('Missing glTF scene');\r\n const images = await loadModelResources(description, /* alloc */ new URL('.', url).href);\r\n const transfers = prepareModelGeometry(description, scene);\r\n let image;\r\n for (image of images) transfers.push(image);\r\n delete description.buffers;\r\n delete description.bufferViews;\r\n delete description.accessors;\r\n return /* alloc */ { description, images, transfers };\r\n}\r\n", "import { prepareModel } from '../models/prepareModel.js';\r\n\r\nexport async function onModelMessage({ data }) {\r\n try {\r\n const result = await prepareModel(data.url);\r\n self.postMessage(/* alloc */ { description: result.description, images: result.images }, result.transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n", "import { assembleAreaGeometry } from '../geometry/assembleAreaGeometry.js';\r\nimport { onVectorTileMessage } from './vectorTileWorker.js';\r\nimport { onCogMessage } from './cogWorker.js';\r\nimport { onModelMessage } from './modelWorker.js';\r\n\r\nexport function onGeometryMessage(event) {\r\n if (event.data.type === 'model') {\r\n onModelMessage(event);\r\n return;\r\n }\r\n if (event.data.type === 'cog') {\r\n onCogMessage(event);\r\n return;\r\n }\r\n if (event.data.type === 'vector') {\r\n onVectorTileMessage(event);\r\n return;\r\n }\r\n try {\r\n const data = assembleAreaGeometry(event.data);\r\n const transfers = /* alloc */ [data.positions.buffer, data.normals.buffer, data.colors.buffer, data.uvs.buffer];\r\n if (data.instanceOffsets) transfers.push(data.instanceOffsets.buffer);\r\n self.postMessage(data, transfers);\r\n } catch (error) {\r\n self.postMessage(/* alloc */ { error: /* alloc */ { name: error.name, message: error.message } });\r\n }\r\n}\r\n\r\nself.addEventListener('message', onGeometryMessage);\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ring", "ring", "ring", "area", "ring", "ring", "ring", "ring", "addTriangle", "addTriangle", "addTriangle", "ring", "addTriangle", "ring", "addTriangle", "ring", "ring", "ring", "area", "ring", "ring", "area"]
|
|
7
7
|
}
|