leaflet-city-mapper 0.0.7 → 0.0.8
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 +2 -2
- package/cucumber.mjs +1 -3
- package/dist/leaflet-city-mapper-src.js +403 -201
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js +69 -59
- package/dist/leaflet-city-mapper-worker-src.js.map +3 -3
- 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 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/leaflet-lens.js +44 -27
- package/libs/leaflet.js +4 -4
- package/libs/openlayers-bindings.js +2 -1
- package/libs/openlayers-bindings.min.js +1 -1
- package/libs/openlayers-bindings.min.js.map +3 -3
- package/package.json +2 -2
- package/src/camera/mapCamera.js +7 -7
- package/src/camera/mapTryAnimatedPan.js +4 -4
- package/src/camera/updateMapCamera.js +8 -6
- package/src/controls/cameraControls.js +27 -22
- package/src/core/cameraCircleBounds.js +2 -1
- package/src/core/closestCameraLayerPoint.js +2 -1
- package/src/core/constructLayer.js +9 -0
- package/src/core/extendLeafletClass.js +5 -0
- package/src/core/extendTerrainPixelBounds.js +31 -0
- package/src/core/gridlayerGetTiledPixelBounds.js +2 -27
- package/src/core/layerAddInitHook.js +7 -0
- package/src/core/layerCallInitHooks.js +13 -13
- package/src/core/layerMergeOptions.js +7 -0
- package/src/core/projectNativePath.js +23 -0
- package/src/geometry/circleGeometry.js +4 -3
- package/src/globals/layerControlAddItem.js +3 -0
- package/src/globals/leafletLayer.js +3 -0
- package/src/globals/workerCogSource.js +1 -1
- package/src/gpu/initializeRendererResources.js +10 -12
- package/src/index.js +26 -11
- package/src/layer-controls/layerControlInputId.js +11 -0
- package/src/layer-controls/placeEntry.js +2 -0
- package/src/materials/createProgram.js +7 -6
- package/src/native/gridTerrainElevation.js +7 -11
- package/src/native/nativeTerrainElevation.js +16 -0
- package/src/native/prepareGridTerrainRequests.js +16 -0
- package/src/native/retainGridTerrain.js +10 -0
- package/src/native/syncGridLayer.js +12 -59
- package/src/native/syncGridTile.js +18 -0
- package/src/native/syncTerrainGridTile.js +28 -0
- package/src/rendering/drawGeometry.js +11 -11
- package/src/rendering/resizeRenderer.js +16 -15
- package/src/scene/initializerFor.js +2 -1
- package/src/scene/layerInitialize.js +1 -1
- package/src/shadows/drawShadowMeshes.js +6 -5
- package/src/sources/pumpSourceAreas.js +1 -1
- package/src/sunlight/initSunlight.js +19 -8
- package/src/textures/nativeTextureFor.js +2 -3
- package/src/textures/uploadCanvasTexture.js +11 -2
- package/src/vector-tiles/createVectorLabel.js +22 -0
- package/src/vector-tiles/prepareVectorLabel.js +17 -35
- package/src/vector-tiles/updateVectorLabelStyle.js +8 -0
- package/src/vector-tiles/vectorLabelCells.js +2 -5
- package/src/vector-tiles/vectorLabelIcon.js +1 -1
- package/src/vector-tiles/vectorLabelText.js +10 -0
- package/src/walk/initWalk.js +19 -6
- package/src/weakmaps/pathProjectionByMap.js +1 -0
- package/src/workers/cogWorker.js +4 -5
- package/src/globals/layerCallInitHooks.js +0 -1
|
@@ -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/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/
|
|
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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",
|
|
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/vectorStyleValue.js", "../src/vector-tiles/vectorStraightRun.js", "../src/vector-tiles/vectorLabelAnchors.js", "../src/vector-tiles/vectorLabelProperty.js", "../src/vector-tiles/vectorLabelText.js", "../src/vector-tiles/projectVectorPoint.js", "../src/vector-tiles/createVectorLabel.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", "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", "export function vectorLabelProperty(properties, match, key) {\r\n return properties[key] ?? '';\r\n}\r\n", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { vectorLabelProperty } from './vectorLabelProperty.js';\r\n\r\nexport function vectorLabelText(entry, properties, zoom) {\r\n let text = entry.layout?.['text-field'];\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 return entry.layout?.['text-transform'] === 'uppercase' ? text.toUpperCase() : text;\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", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { projectVectorPoint } from './projectVectorPoint.js';\r\nimport { vectorStyleValue } from './vectorStyleValue.js';\r\n\r\nexport function createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size) {\r\n return /* alloc */ {\r\n text, latlng: projectVectorPoint(anchor.point, job.coords, layer.extent),\r\n order, entry, properties, size, pixelBase: anchor.length * 256 / layer.extent / 2 ** job.coords.z,\r\n along: anchor.a ? /* alloc */ [\r\n projectVectorPoint(anchor.a, job.coords, layer.extent),\r\n projectVectorPoint(anchor.b, job.coords, layer.extent),\r\n ] : null,\r\n icon: text.trim() ? null : icon,\r\n iconOffset: evaluateStyle(entry.layout?.['icon-offset'], properties, job.zoom) || /* alloc */ [0, 0],\r\n allowOverlap: entry.layout?.['icon-allow-overlap'] === true,\r\n color: vectorStyleValue(entry.paint, 'text-color', '#000', properties, job.zoom),\r\n halo: vectorStyleValue(entry.paint, 'text-halo-color', '#fff', properties, job.zoom),\r\n haloWidth: vectorStyleValue(entry.paint, 'text-halo-width', 0, properties, job.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", "import { evaluateStyle } from '../vector-style/evaluateStyle.js';\r\nimport { vectorStyleValue } from './vectorStyleValue.js';\r\nimport { vectorLabelAnchors } from './vectorLabelAnchors.js';\r\nimport { vectorLabelText } from './vectorLabelText.js';\r\nimport { createVectorLabel } from './createVectorLabel.js';\r\n\r\nexport function prepareVectorLabel(job, layer, entry, feature, order) {\r\n const { properties } = feature, { zoom } = job;\r\n const text = vectorLabelText(entry, properties, zoom);\r\n const icon = entry.layout?.['symbol-placement'] === 'line' ? null\r\n : evaluateStyle(entry.layout?.['icon-image'], properties, zoom);\r\n if (!text.trim() && typeof icon !== 'string') return;\r\n const size = vectorStyleValue(entry.layout, 'text-size', 12, properties, zoom), line = feature.type === 2 && text.trim();\r\n const spacing = layer.extent / 16, anchors = /* alloc */ [];\r\n let path, anchor;\r\n for (path of line ? feature.geometry : feature.geometry.slice(0, 1)) {\r\n if (!path?.length) continue;\r\n if (!line) anchors.push(/* alloc */ { point: path[Math.floor(path.length / 2)], a: null });\r\n else for (anchor of vectorLabelAnchors(path, spacing)) anchors.push(anchor);\r\n }\r\n for (anchor of anchors) {\r\n if (anchor.point[0] < 0 || anchor.point[0] >= layer.extent || anchor.point[1] < 0 || anchor.point[1] >= layer.extent) continue;\r\n job.labels.push(createVectorLabel(job, layer, entry, properties, order, text, icon, anchor, size));\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 = new Map();\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 if (!workerCogSource.has(key)) {\r\n workerCogSource.set(key, openCog(data.url, data.asset));\r\n if (workerCogSource.size > 4) workerCogSource.delete(workerCogSource.keys().next().value);\r\n }\r\n const archive = await workerCogSource.get(key);\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
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
|
}
|