leaflet-city-mapper 0.0.7 → 0.0.9
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 +5 -3
- 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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",
|
|
6
|
-
"names": ["geometryEmpty", "minimumX", "ring", "minimum", "point", "mergeHoles", "source", "target", "start", "width", "middle", "end", "left", "right", "output", "sortHoles", "holes", "buffer", "entries", "ring", "width", "start", "previous", "i", "minimumX", "source", "target", "mergeHoles", "cross", "a", "b", "c", "equal", "a", "b", "clean", "ring", "changed", "i", "a", "b", "c", "equal", "cross", "isClockWise", "points", "area", "i", "a", "b", "polygonRings", "paths", "vertices", "rings", "offset", "index", "path", "ring", "clean", "isClockWise", "inside", "point", "ring", "result", "i", "j", "a", "b", "insideHole", "point", "rings", "i", "inside", "on", "p", "q", "intersects", "a", "b", "c", "d", "equal", "abC", "cross", "abD", "cdA", "cdB", "on", "crossesRing", "a", "b", "ring", "i", "intersects", "crossesBoundary", "a", "b", "polygon", "rings", "crossesRing", "i", "connectHole", "polygon", "hole", "rings", "mid", "h2", "p2", "distance", "h", "p", "a", "b", "d", "inside", "insideHole", "crossesBoundary", "containsVertex", "polygon", "a", "b", "c", "p", "equal", "cross", "clipEars", "polygon", "result", "clipped", "i", "a", "b", "c", "p", "cross", "containsVertex", "triangle", "area", "ring", "sum", "i", "p", "q", "validateArea", "rings", "vertices", "result", "holeArea", "actual", "triangle", "area", "expected", "cross", "triangulate", "contour", "holes", "geometryEmpty", "paths", "points", "p", "index", "hole", "vertices", "rings", "polygonRings", "polygon", "holesToConnect", "sortHoles", "mid", "connectHole", "result", "clipEars", "validateArea", "groundOffset", "point", "addTriangle", "context", "a", "ah", "b", "bh", "c", "ch", "nx", "ny", "nz", "color", "layer", "positions", "normals", "colors", "uvs", "ux", "uy", "uz", "vx", "vy", "vz", "point", "height", "groundOffset", "buildProjectedPolygon", "context", "paths", "top", "bottom", "baseColor", "points", "path", "point", "a", "b", "c", "index", "sign", "i", "length", "nx", "nz", "triangulate", "addTriangle", "isClockWise", "triangleContexts", "addGeneratedTriangle", "args", "addTriangle", "triangleContexts", "generateTreeGeometry", "context", "generator", "point", "style", "triangleContexts", "addGeneratedTriangle", "toSRGB", "value", "channel", "n", "h", "l", "a", "k", "parseColor", "value", "a", "toSRGB", "channel", "context", "g", "b", "lampDirections", "ring", "point", "radius", "points", "lampDirections", "i", "lampPostGeometry", "point", "style", "addTriangle", "color", "parseColor", "radius", "center", "r", "low", "high", "points", "i", "a", "b", "nx", "nz", "section", "ring", "lampDirections", "quad", "addTriangle", "color", "a", "b", "c", "d", "height", "nx", "ny", "nz", "emitter", "point", "u", "v", "axis", "lightGeometry", "point", "style", "addTriangle", "color", "parseColor", "axis", "quad", "emitter", "roundProfile", "ringDirections", "ring", "point", "radius", "result", "ringDirections", "i", "surface", "point", "addTriangle", "lowRadius", "low", "highRadius", "high", "color", "lower", "ring", "upper", "i", "next", "slope", "length", "nx", "nz", "ny", "normalX", "normalZ", "ringDirections", "validateTree", "trunkRadius", "crownRadius", "crownBottom", "bottom", "top", "crownShape", "treeGeometry", "point", "style", "addTriangle", "top", "bottom", "trunkRadius", "crownRadius", "crownBottom", "crownShape", "validateTree", "trunk", "parseColor", "crown", "surface", "i", "low", "lr", "high", "hr", "base", "ring", "roundProfile", "buildProjectedPoint", "context", "projected", "style", "baseColor", "support", "top", "generateTreeGeometry", "lampPostGeometry", "lightGeometry", "treeGeometry", "instanceAreaGeometry", "context", "positions", "normals", "colors", "featureFaces", "vertices", "length", "originX", "originY", "originZ", "template", "i", "instance", "face", "start", "offsets", "computeBounds", "geometry", "min", "max", "data", "i", "x", "y", "z", "instances", "axis", "offset", "low", "high", "center", "radiusSquared", "radius", "assembleAreaGeometry", "jobs", "nightLight", "context", "job", "polygon", "start", "end", "buildProjectedPoint", "buildProjectedPolygon", "data", "instanceAreaGeometry", "result", "geometry", "computeBounds", "createMvtReader", "bytes", "takeMvtBytes", "reader", "size", "start", "readMvtInteger", "reader", "value", "i", "byte", "takeMvtBytes", "readMvtNumber", "reader", "value", "readMvtInteger", "readMvtField", "reader", "tag", "readMvtNumber", "field", "wire", "expectMvtWire", "wire", "expected", "numericMvtValue", "value", "finishMvtPath", "path", "type", "closed", "appendMvtCoordinates", "commands", "state", "count", "i", "dx", "dy", "beginMvtPath", "state", "paths", "type", "count", "finishMvtPath", "closeMvtPath", "state", "type", "count", "readMvtGeometry", "commands", "type", "paths", "state", "command", "id", "count", "closeMvtPath", "beginMvtPath", "appendMvtCoordinates", "finishMvtPath", "readMvtMessage", "reader", "wire", "expectMvtWire", "size", "readMvtNumber", "start", "takeMvtBytes", "createMvtReader", "readMvtNumbers", "reader", "wire", "target", "packed", "readMvtNumber", "readMvtMessage", "skipMvtField", "reader", "wire", "readMvtInteger", "takeMvtBytes", "readMvtNumber", "readMvtFeature", "reader", "keys", "values", "id", "type", "field", "wire", "i", "tags", "commands", "readMvtField", "expectMvtWire", "numericMvtValue", "readMvtInteger", "readMvtNumbers", "readMvtNumber", "skipMvtField", "properties", "readMvtGeometry", "mvtTextDecoder", "readMvtString", "reader", "wire", "mvtTextDecoder", "readMvtMessage", "readMvtKnownValue", "reader", "field", "wire", "offset", "integer", "readMvtString", "expectMvtWire", "takeMvtBytes", "readMvtInteger", "numericMvtValue", "readMvtValue", "reader", "value", "found", "field", "wire", "readMvtField", "skipMvtField", "readMvtKnownValue", "readMvtLayer", "reader", "name", "version", "extent", "field", "wire", "value", "i", "keys", "values", "features", "readMvtField", "readMvtString", "readMvtMessage", "readMvtValue", "expectMvtWire", "readMvtNumber", "skipMvtField", "readMvtFeature", "decodeVectorTile", "buffer", "bytes", "reader", "createMvtReader", "layers", "names", "field", "wire", "layer", "readMvtField", "skipMvtField", "readMvtLayer", "readMvtMessage", "vectorStyleDependencies", "entry", "dependencies", "expressions", "value", "child", "evaluateBoolean", "op", "args", "properties", "zoom", "legacy", "evaluateStyle", "evaluateCoalesceOrCase", "op", "args", "properties", "zoom", "legacy", "result", "evaluateStyle", "evaluateInput", "value", "properties", "zoom", "legacy", "evaluateStyle", "evaluateComparison", "op", "args", "properties", "zoom", "legacy", "left", "evaluateInput", "right", "evaluateStyle", "vectorStyleNamedColors", "parseFunctionalColor", "value", "match", "values", "i", "finite", "parseHexColor", "value", "i", "offset", "color", "styleColor", "value", "vectorStyleNamedColors", "parseHexColor", "parseFunctionalColor", "evaluateInterpolate", "args", "properties", "zoom", "result", "evaluateStyle", "base", "lower", "upper", "ratio", "left", "right", "j", "color", "styleColor", "arrayContainsRange", "values", "start", "end", "target", "i", "value", "evaluateMembership", "op", "args", "properties", "zoom", "legacy", "target", "evaluateInput", "arrayContainsRange", "values", "evaluateStyle", "evaluateIExpression", "op", "args", "properties", "zoom", "legacy", "evaluateMembership", "evaluateInterpolate", "evaluateMath", "op", "args", "properties", "zoom", "i", "sum", "evaluateStyle", "evaluateMatch", "args", "properties", "zoom", "result", "evaluateStyle", "i", "matched", "evaluateNegation", "op", "args", "properties", "zoom", "legacy", "evaluateStyle", "evaluateInput", "evaluateMembership", "evaluatePrimitive", "op", "args", "properties", "zoom", "evaluateStep", "args", "properties", "zoom", "result", "evaluateStyle", "output", "evaluateToExpression", "op", "args", "properties", "zoom", "evaluateStyle", "i", "number", "evaluateStyle", "value", "properties", "zoom", "legacy", "op", "args", "operation", "evaluatePrimitive", "evaluateBoolean", "evaluateNegation", "evaluateComparison", "evaluateIExpression", "evaluateToExpression", "evaluateCoalesceOrCase", "evaluateMatch", "evaluateStep", "evaluateMath", "visibleStyle", "layer", "properties", "zoom", "evaluateStyle", "vectorFeatureZoom", "entry", "properties", "zoom", "maxZoom", "visibleStyle", "projectVectorPoint", "point", "coords", "extent", "size", "x", "y", "vectorLabelProperty", "properties", "match", "key", "vectorStyleValue", "object", "key", "fallback", "properties", "zoom", "evaluateStyle", "vectorStraightRun", "path", "i", "point", "step", "base", "j", "previous", "run", "next", "vectorLabelAnchors", "path", "spacing", "anchors", "length", "i", "walked", "target", "count", "k", "segment", "t", "point", "vectorStraightRun", "prepareVectorLabel", "job", "layer", "entry", "feature", "order", "text", "properties", "zoom", "icon", "evaluateStyle", "vectorLabelProperty", "size", "vectorStyleValue", "line", "spacing", "anchors", "path", "anchor", "vectorLabelAnchors", "projectVectorPoint", "readPaintValue", "paint", "key", "fallback", "properties", "zoom", "evaluateStyle", "fillVectorPaint", "paint", "properties", "zoom", "fill", "styleColor", "readPaintValue", "outline", "rgb", "fillOpacity", "fillColor", "color", "scaleDashArray", "dash", "weight", "properties", "zoom", "values", "result", "evaluateStyle", "lineVectorPaint", "layer", "paint", "properties", "zoom", "weight", "readPaintValue", "rgb", "styleColor", "opacity", "dashArray", "scaleDashArray", "lineCap", "lineJoin", "vectorPaint", "layer", "properties", "zoom", "paint", "fillVectorPaint", "lineVectorPaint", "vectorFeaturePaint", "entry", "feature", "sampleZoom", "maxZoom", "vectorPaint", "paint", "candidate", "visibleStyle", "mvtEdgeX", "edge", "y", "addMvtCrossings", "edges", "levels", "i", "j", "a", "b", "top", "bottom", "start", "end", "mvtEdgeX", "mergeMvtActiveEdges", "active", "sorted", "left", "mid", "right", "j", "k", "sortMvtActiveEdges", "active", "sorted", "width", "left", "mid", "right", "i", "mergeMvtActiveEdges", "appendMvtBandTriangles", "edges", "top", "bottom", "triangles", "mid", "active", "edge", "i", "leftTop", "leftBottom", "rightTop", "rightBottom", "mvtEdgeX", "sortMvtActiveEdges", "finiteMvtCoordinate", "point", "i", "collectMvtEdges", "rings", "edges", "levels", "ring", "i", "a", "b", "finiteMvtCoordinate", "sortedMvtLevels", "levels", "sorted", "y", "gap", "i", "j", "value", "count", "tessellateVectorRings", "rings", "edges", "levels", "triangles", "sorted", "top", "bottom", "collectMvtEdges", "addMvtCrossings", "sortedMvtLevels", "appendMvtBandTriangles", "isMvtFallbackError", "error", "appendMvtPolygonTriangles", "rings", "paths", "vertices", "triangles", "indices", "index", "triangle", "points", "i", "triangulate", "error", "isMvtFallbackError", "tessellateVectorRings", "groupMvtPolygons", "rings", "polygons", "polygon", "exteriorSign", "ring", "area", "i", "finiteMvtCoordinate", "mvtPathsVertices", "paths", "vertices", "path", "point", "mvtPolygonPaths", "rings", "paths", "ring", "i", "path", "triangulateVectorRings", "rings", "polygons", "groupMvtPolygons", "triangles", "polygon", "paths", "vertices", "mvtPolygonPaths", "mvtPathsVertices", "appendMvtPolygonTriangles", "simplifyVectorPath", "path", "tolerance", "keep", "stack", "output", "start", "end", "a", "b", "dx", "dy", "length", "index", "distance", "i", "p", "t", "squared", "projectVectorTriangles", "geometry", "coords", "extent", "tolerance", "paths", "rings", "triangle", "projected", "point", "ring", "simplifyVectorPath", "triangulateVectorRings", "projectVectorPoint", "projectVectorPaths", "geometry", "coords", "extent", "tolerance", "paths", "path", "simplified", "projected", "point", "simplifyVectorPath", "projectVectorPoint", "vectorTolerance", "job", "layer", "vectorFeaturePaths", "job", "layer", "entry", "feature", "cache", "paths", "tolerance", "vectorTolerance", "projectVectorTriangles", "projectVectorPaths", "appendVectorBatch", "job", "layer", "entry", "feature", "order", "batches", "dependencies", "paint", "values", "key", "batch", "path", "count", "vectorFeaturePaths", "prepareVectorStyleLayer", "job", "layer", "entry", "order", "batches", "dependencies", "vectorStyleDependencies", "outlineColor", "outline", "feature", "sampleZoom", "paint", "batch", "vectorFeatureZoom", "prepareVectorLabel", "vectorFeaturePaint", "appendVectorBatch", "vectorPaint", "prepareVectorTile", "buffer", "coords", "style", "zoom", "source", "maxZoom", "mapZoom", "layers", "decodeVectorTile", "byName", "job", "layer", "order", "entry", "prepareVectorStyleLayer", "onVectorTileMessage", "data", "result", "prepareVectorTile", "error", "validateCogRange", "source", "offset", "length", "validateCogContentRange", "source", "range", "rangeStart", "length", "invalidCogFullResponse", "response", "validateCogResponse", "source", "response", "rangeStart", "length", "etag", "range", "validateCogContentRange", "invalidCogFullResponse", "readCogBody", "response", "length", "reader", "chunks", "total", "part", "data", "start", "chunk", "readCog", "source", "offset", "length", "signal", "validateCogRange", "rangeStart", "response", "validateCogResponse", "data", "readCogBody", "result", "cogTags", "readCogTag", "source", "entries", "i", "tag", "little", "type", "size", "length", "data", "readCog", "values", "j", "readCogDirectory", "source", "offset", "little", "count", "readCog", "entries", "tags", "i", "tag", "cogTags", "readCogTag", "validCogDimensions", "tags", "width", "height", "validCogEncoding", "tags", "samples", "bits", "format", "elevation", "bytes", "unsigned", "getCogProfile", "tags", "width", "height", "samples", "bits", "format", "bytes", "unsigned", "floating", "value", "elevation", "validCogDimensions", "validCogEncoding", "hasCogProjection", "keys", "projected", "area", "i", "finiteCogValues", "values", "value", "validCogGeoArrays", "keys", "scale", "tie", "finiteCogValues", "getCogBase", "tags", "width", "height", "elevation", "keys", "scale", "tie", "validCogGeoArrays", "hasCogProjection", "validCogGrid", "source", "base", "profile", "zoom", "x", "y", "resolution", "validateCogOffsets", "source", "level", "i", "readCogLevel", "source", "directory", "state", "tags", "profile", "getCogProfile", "getCogBase", "base", "resolution", "zoom", "span", "x", "y", "validCogGrid", "level", "validateCogOffsets", "readCogDirectories", "source", "offset", "state", "seen", "directory", "readCogDirectory", "readCogLevel", "decodeCogTile", "data", "length", "compression", "reader", "result", "offset", "chunk", "readCogBlock", "source", "level", "x", "y", "signal", "index", "decodeCogTile", "readCog", "getElevationTile", "source", "level", "x", "y", "signal", "data", "readCogBlock", "view", "heights", "i", "height", "getColorTile", "source", "level", "x", "y", "signal", "canvas", "context", "left", "top", "bx", "by", "pixels", "rgba", "i", "j", "bitmap", "readCogBlock", "image", "validCogTileCoordinates", "z", "x", "y", "getCogTile", "source", "z", "x", "y", "signal", "validCogTileCoordinates", "level", "getElevationTile", "getColorTile", "getCogHeader", "source", "headerOffsets", "headerFlags", "headerBounds", "decodeHeader", "data", "view", "header", "i", "headerOffsets", "headerFlags", "headerBounds", "validateCogContainer", "container", "header", "decompress", "data", "compression", "blob", "stream", "getCogAssetEntry", "container", "header", "asset", "metadata", "decompress", "readCog", "assets", "entry", "openCogAsset", "url", "asset", "container", "header", "decodeHeader", "readCog", "validateCogContainer", "entry", "getCogAssetEntry", "baseOffset", "openCog", "url", "asset", "source", "openCogAsset", "header", "readCog", "order", "base", "minZoom", "maxZoom", "readCogDirectories", "half", "left", "right", "top", "bottom", "getCogHeader", "getCogTile", "workerCogSource", "onCogMessage", "data", "key", "workerCogSource", "openCog", "archive", "result", "transfers", "error", "geometryDecoder", "hasUnsupportedPrimitives", "meshes", "mesh", "primitive", "decodeModel", "data", "view", "decoder", "geometryDecoder", "description", "offset", "length", "type", "chunk", "binary", "hasUnsupportedPrimitives", "loadBuffer", "buffer", "directory", "response", "geometryImageOptions", "loadImage", "description", "directory", "image", "blob", "view", "buffer", "response", "geometryImageOptions", "loadModelResources", "description", "directory", "bufferRequests", "buffer", "geometryEmpty", "loadBuffer", "imageRequests", "image", "loadImage", "geometrySemantics", "types", "sizes", "readAccessorValue", "input", "Type", "at", "readAccessorValues", "description", "Type", "size", "data", "accessorCount", "indices", "viewIndex", "offset", "count", "stride", "view", "bytes", "buffer", "input", "i", "j", "at", "output", "readAccessorValue", "readSparseAccessor", "description", "spec", "Type", "size", "data", "sparse", "Index", "types", "view", "offset", "indices", "readAccessorValues", "normalizeAccessor", "spec", "Type", "data", "size", "normalized", "readAccessor", "description", "index", "spec", "Type", "types", "size", "sizes", "data", "readAccessorValues", "readSparseAccessor", "normalizeAccessor", "readModelAttributes", "description", "primitive", "attributes", "semantic", "name", "geometrySemantics", "readAccessor", "vertexCount", "attribute", "readModelIndices", "description", "primitive", "attributes", "vertexCount", "index", "readAccessor", "value", "vertexNormals", "p", "indices", "normals", "i", "a", "b", "c", "ux", "uy", "uz", "vx", "vy", "vz", "j", "nx", "ny", "nz", "index", "length", "prepareModelPrimitive", "description", "primitive", "attributes", "vertexCount", "readModelAttributes", "readModelIndices", "vertexNormals", "prepareModelGeometry", "description", "scene", "pending", "visited", "meshes", "transfers", "index", "spec", "primitive", "attribute", "child", "geometryEmpty", "prepareModelPrimitive", "prepareModel", "url", "response", "description", "decodeModel", "scene", "images", "loadModelResources", "transfers", "prepareModelGeometry", "image", "onModelMessage", "data", "result", "prepareModel", "error", "onGeometryMessage", "event", "onModelMessage", "onCogMessage", "onVectorTileMessage", "data", "assembleAreaGeometry", "transfers", "error"]
|
|
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
|
+
"names": ["geometryEmpty", "minimumX", "ring", "minimum", "point", "mergeHoles", "source", "target", "start", "width", "middle", "end", "left", "right", "output", "sortHoles", "holes", "buffer", "entries", "ring", "width", "start", "previous", "i", "minimumX", "source", "target", "mergeHoles", "cross", "a", "b", "c", "equal", "a", "b", "clean", "ring", "changed", "i", "a", "b", "c", "equal", "cross", "isClockWise", "points", "area", "i", "a", "b", "polygonRings", "paths", "vertices", "rings", "offset", "index", "path", "ring", "clean", "isClockWise", "inside", "point", "ring", "result", "i", "j", "a", "b", "insideHole", "point", "rings", "i", "inside", "on", "p", "q", "intersects", "a", "b", "c", "d", "equal", "abC", "cross", "abD", "cdA", "cdB", "on", "crossesRing", "a", "b", "ring", "i", "intersects", "crossesBoundary", "a", "b", "polygon", "rings", "crossesRing", "i", "connectHole", "polygon", "hole", "rings", "mid", "h2", "p2", "distance", "h", "p", "a", "b", "d", "inside", "insideHole", "crossesBoundary", "containsVertex", "polygon", "a", "b", "c", "p", "equal", "cross", "clipEars", "polygon", "result", "clipped", "i", "a", "b", "c", "p", "cross", "containsVertex", "triangle", "area", "ring", "sum", "i", "p", "q", "validateArea", "rings", "vertices", "result", "holeArea", "actual", "triangle", "area", "expected", "cross", "triangulate", "contour", "holes", "geometryEmpty", "paths", "points", "p", "index", "hole", "vertices", "rings", "polygonRings", "polygon", "holesToConnect", "sortHoles", "mid", "connectHole", "result", "clipEars", "validateArea", "groundOffset", "point", "addTriangle", "context", "a", "ah", "b", "bh", "c", "ch", "nx", "ny", "nz", "color", "layer", "positions", "normals", "colors", "uvs", "ux", "uy", "uz", "vx", "vy", "vz", "point", "height", "groundOffset", "buildProjectedPolygon", "context", "paths", "top", "bottom", "baseColor", "points", "path", "point", "a", "b", "c", "index", "sign", "i", "length", "nx", "nz", "triangulate", "addTriangle", "isClockWise", "triangleContexts", "addGeneratedTriangle", "args", "addTriangle", "triangleContexts", "generateTreeGeometry", "context", "generator", "point", "style", "triangleContexts", "addGeneratedTriangle", "toSRGB", "value", "channel", "n", "h", "l", "a", "k", "parseColor", "value", "a", "toSRGB", "channel", "context", "g", "b", "lampDirections", "ring", "point", "radius", "points", "lampDirections", "i", "lampPostGeometry", "point", "style", "addTriangle", "color", "parseColor", "radius", "center", "r", "low", "high", "points", "i", "a", "b", "nx", "nz", "section", "ring", "lampDirections", "quad", "addTriangle", "color", "a", "b", "c", "d", "height", "nx", "ny", "nz", "emitter", "point", "u", "v", "axis", "lightGeometry", "point", "style", "addTriangle", "color", "parseColor", "axis", "quad", "emitter", "roundProfile", "ringDirections", "ring", "point", "radius", "result", "ringDirections", "i", "surface", "point", "addTriangle", "lowRadius", "low", "highRadius", "high", "color", "lower", "ring", "upper", "i", "next", "slope", "length", "nx", "nz", "ny", "normalX", "normalZ", "ringDirections", "validateTree", "trunkRadius", "crownRadius", "crownBottom", "bottom", "top", "crownShape", "treeGeometry", "point", "style", "addTriangle", "top", "bottom", "trunkRadius", "crownRadius", "crownBottom", "crownShape", "validateTree", "trunk", "parseColor", "crown", "surface", "i", "low", "lr", "high", "hr", "base", "ring", "roundProfile", "buildProjectedPoint", "context", "projected", "style", "baseColor", "support", "top", "generateTreeGeometry", "lampPostGeometry", "lightGeometry", "treeGeometry", "instanceAreaGeometry", "context", "positions", "normals", "colors", "featureFaces", "vertices", "length", "originX", "originY", "originZ", "template", "i", "instance", "face", "start", "offsets", "computeBounds", "geometry", "min", "max", "data", "i", "x", "y", "z", "instances", "axis", "offset", "low", "high", "center", "radiusSquared", "radius", "assembleAreaGeometry", "jobs", "nightLight", "context", "job", "polygon", "start", "end", "buildProjectedPoint", "buildProjectedPolygon", "data", "instanceAreaGeometry", "result", "geometry", "computeBounds", "createMvtReader", "bytes", "takeMvtBytes", "reader", "size", "start", "readMvtInteger", "reader", "value", "i", "byte", "takeMvtBytes", "readMvtNumber", "reader", "value", "readMvtInteger", "readMvtField", "reader", "tag", "readMvtNumber", "field", "wire", "expectMvtWire", "wire", "expected", "numericMvtValue", "value", "finishMvtPath", "path", "type", "closed", "appendMvtCoordinates", "commands", "state", "count", "i", "dx", "dy", "beginMvtPath", "state", "paths", "type", "count", "finishMvtPath", "closeMvtPath", "state", "type", "count", "readMvtGeometry", "commands", "type", "paths", "state", "command", "id", "count", "closeMvtPath", "beginMvtPath", "appendMvtCoordinates", "finishMvtPath", "readMvtMessage", "reader", "wire", "expectMvtWire", "size", "readMvtNumber", "start", "takeMvtBytes", "createMvtReader", "readMvtNumbers", "reader", "wire", "target", "packed", "readMvtNumber", "readMvtMessage", "skipMvtField", "reader", "wire", "readMvtInteger", "takeMvtBytes", "readMvtNumber", "readMvtFeature", "reader", "keys", "values", "id", "type", "field", "wire", "i", "tags", "commands", "readMvtField", "expectMvtWire", "numericMvtValue", "readMvtInteger", "readMvtNumbers", "readMvtNumber", "skipMvtField", "properties", "readMvtGeometry", "mvtTextDecoder", "readMvtString", "reader", "wire", "mvtTextDecoder", "readMvtMessage", "readMvtKnownValue", "reader", "field", "wire", "offset", "integer", "readMvtString", "expectMvtWire", "takeMvtBytes", "readMvtInteger", "numericMvtValue", "readMvtValue", "reader", "value", "found", "field", "wire", "readMvtField", "skipMvtField", "readMvtKnownValue", "readMvtLayer", "reader", "name", "version", "extent", "field", "wire", "value", "i", "keys", "values", "features", "readMvtField", "readMvtString", "readMvtMessage", "readMvtValue", "expectMvtWire", "readMvtNumber", "skipMvtField", "readMvtFeature", "decodeVectorTile", "buffer", "bytes", "reader", "createMvtReader", "layers", "names", "field", "wire", "layer", "readMvtField", "skipMvtField", "readMvtLayer", "readMvtMessage", "vectorStyleDependencies", "entry", "dependencies", "expressions", "value", "child", "evaluateBoolean", "op", "args", "properties", "zoom", "legacy", "evaluateStyle", "evaluateCoalesceOrCase", "op", "args", "properties", "zoom", "legacy", "result", "evaluateStyle", "evaluateInput", "value", "properties", "zoom", "legacy", "evaluateStyle", "evaluateComparison", "op", "args", "properties", "zoom", "legacy", "left", "evaluateInput", "right", "evaluateStyle", "vectorStyleNamedColors", "parseFunctionalColor", "value", "match", "values", "i", "finite", "parseHexColor", "value", "i", "offset", "color", "styleColor", "value", "vectorStyleNamedColors", "parseHexColor", "parseFunctionalColor", "evaluateInterpolate", "args", "properties", "zoom", "result", "evaluateStyle", "base", "lower", "upper", "ratio", "left", "right", "j", "color", "styleColor", "arrayContainsRange", "values", "start", "end", "target", "i", "value", "evaluateMembership", "op", "args", "properties", "zoom", "legacy", "target", "evaluateInput", "arrayContainsRange", "values", "evaluateStyle", "evaluateIExpression", "op", "args", "properties", "zoom", "legacy", "evaluateMembership", "evaluateInterpolate", "evaluateMath", "op", "args", "properties", "zoom", "i", "sum", "evaluateStyle", "evaluateMatch", "args", "properties", "zoom", "result", "evaluateStyle", "i", "matched", "evaluateNegation", "op", "args", "properties", "zoom", "legacy", "evaluateStyle", "evaluateInput", "evaluateMembership", "evaluatePrimitive", "op", "args", "properties", "zoom", "evaluateStep", "args", "properties", "zoom", "result", "evaluateStyle", "output", "evaluateToExpression", "op", "args", "properties", "zoom", "evaluateStyle", "i", "number", "evaluateStyle", "value", "properties", "zoom", "legacy", "op", "args", "operation", "evaluatePrimitive", "evaluateBoolean", "evaluateNegation", "evaluateComparison", "evaluateIExpression", "evaluateToExpression", "evaluateCoalesceOrCase", "evaluateMatch", "evaluateStep", "evaluateMath", "visibleStyle", "layer", "properties", "zoom", "evaluateStyle", "vectorFeatureZoom", "entry", "properties", "zoom", "maxZoom", "visibleStyle", "vectorStyleValue", "object", "key", "fallback", "properties", "zoom", "evaluateStyle", "vectorStraightRun", "path", "i", "point", "step", "base", "j", "previous", "run", "next", "vectorLabelAnchors", "path", "spacing", "anchors", "length", "i", "walked", "target", "count", "k", "segment", "t", "point", "vectorStraightRun", "vectorLabelProperty", "properties", "match", "key", "vectorLabelText", "entry", "properties", "zoom", "text", "evaluateStyle", "vectorLabelProperty", "projectVectorPoint", "point", "coords", "extent", "size", "x", "y", "createVectorLabel", "job", "layer", "entry", "properties", "order", "text", "icon", "anchor", "size", "projectVectorPoint", "evaluateStyle", "vectorStyleValue", "prepareVectorLabel", "job", "layer", "entry", "feature", "order", "properties", "zoom", "text", "vectorLabelText", "icon", "evaluateStyle", "size", "vectorStyleValue", "line", "spacing", "anchors", "path", "anchor", "vectorLabelAnchors", "createVectorLabel", "readPaintValue", "paint", "key", "fallback", "properties", "zoom", "evaluateStyle", "fillVectorPaint", "paint", "properties", "zoom", "fill", "styleColor", "readPaintValue", "outline", "rgb", "fillOpacity", "fillColor", "color", "scaleDashArray", "dash", "weight", "properties", "zoom", "values", "result", "evaluateStyle", "lineVectorPaint", "layer", "paint", "properties", "zoom", "weight", "readPaintValue", "rgb", "styleColor", "opacity", "dashArray", "scaleDashArray", "lineCap", "lineJoin", "vectorPaint", "layer", "properties", "zoom", "paint", "fillVectorPaint", "lineVectorPaint", "vectorFeaturePaint", "entry", "feature", "sampleZoom", "maxZoom", "vectorPaint", "paint", "candidate", "visibleStyle", "mvtEdgeX", "edge", "y", "addMvtCrossings", "edges", "levels", "i", "j", "a", "b", "top", "bottom", "start", "end", "mvtEdgeX", "mergeMvtActiveEdges", "active", "sorted", "left", "mid", "right", "j", "k", "sortMvtActiveEdges", "active", "sorted", "width", "left", "mid", "right", "i", "mergeMvtActiveEdges", "appendMvtBandTriangles", "edges", "top", "bottom", "triangles", "mid", "active", "edge", "i", "leftTop", "leftBottom", "rightTop", "rightBottom", "mvtEdgeX", "sortMvtActiveEdges", "finiteMvtCoordinate", "point", "i", "collectMvtEdges", "rings", "edges", "levels", "ring", "i", "a", "b", "finiteMvtCoordinate", "sortedMvtLevels", "levels", "sorted", "y", "gap", "i", "j", "value", "count", "tessellateVectorRings", "rings", "edges", "levels", "triangles", "sorted", "top", "bottom", "collectMvtEdges", "addMvtCrossings", "sortedMvtLevels", "appendMvtBandTriangles", "isMvtFallbackError", "error", "appendMvtPolygonTriangles", "rings", "paths", "vertices", "triangles", "indices", "index", "triangle", "points", "i", "triangulate", "error", "isMvtFallbackError", "tessellateVectorRings", "groupMvtPolygons", "rings", "polygons", "polygon", "exteriorSign", "ring", "area", "i", "finiteMvtCoordinate", "mvtPathsVertices", "paths", "vertices", "path", "point", "mvtPolygonPaths", "rings", "paths", "ring", "i", "path", "triangulateVectorRings", "rings", "polygons", "groupMvtPolygons", "triangles", "polygon", "paths", "vertices", "mvtPolygonPaths", "mvtPathsVertices", "appendMvtPolygonTriangles", "simplifyVectorPath", "path", "tolerance", "keep", "stack", "output", "start", "end", "a", "b", "dx", "dy", "length", "index", "distance", "i", "p", "t", "squared", "projectVectorTriangles", "geometry", "coords", "extent", "tolerance", "paths", "rings", "triangle", "projected", "point", "ring", "simplifyVectorPath", "triangulateVectorRings", "projectVectorPoint", "projectVectorPaths", "geometry", "coords", "extent", "tolerance", "paths", "path", "simplified", "projected", "point", "simplifyVectorPath", "projectVectorPoint", "vectorTolerance", "job", "layer", "vectorFeaturePaths", "job", "layer", "entry", "feature", "cache", "paths", "tolerance", "vectorTolerance", "projectVectorTriangles", "projectVectorPaths", "appendVectorBatch", "job", "layer", "entry", "feature", "order", "batches", "dependencies", "paint", "values", "key", "batch", "path", "count", "vectorFeaturePaths", "prepareVectorStyleLayer", "job", "layer", "entry", "order", "batches", "dependencies", "vectorStyleDependencies", "outlineColor", "outline", "feature", "sampleZoom", "paint", "batch", "vectorFeatureZoom", "prepareVectorLabel", "vectorFeaturePaint", "appendVectorBatch", "vectorPaint", "prepareVectorTile", "buffer", "coords", "style", "zoom", "source", "maxZoom", "mapZoom", "layers", "decodeVectorTile", "byName", "job", "layer", "order", "entry", "prepareVectorStyleLayer", "onVectorTileMessage", "data", "result", "prepareVectorTile", "error", "validateCogRange", "source", "offset", "length", "validateCogContentRange", "source", "range", "rangeStart", "length", "invalidCogFullResponse", "response", "validateCogResponse", "source", "response", "rangeStart", "length", "etag", "range", "validateCogContentRange", "invalidCogFullResponse", "readCogBody", "response", "length", "reader", "chunks", "total", "part", "data", "start", "chunk", "readCog", "source", "offset", "length", "signal", "validateCogRange", "rangeStart", "response", "validateCogResponse", "data", "readCogBody", "result", "cogTags", "readCogTag", "source", "entries", "i", "tag", "little", "type", "size", "length", "data", "readCog", "values", "j", "readCogDirectory", "source", "offset", "little", "count", "readCog", "entries", "tags", "i", "tag", "cogTags", "readCogTag", "validCogDimensions", "tags", "width", "height", "validCogEncoding", "tags", "samples", "bits", "format", "elevation", "bytes", "unsigned", "getCogProfile", "tags", "width", "height", "samples", "bits", "format", "bytes", "unsigned", "floating", "value", "elevation", "validCogDimensions", "validCogEncoding", "hasCogProjection", "keys", "projected", "area", "i", "finiteCogValues", "values", "value", "validCogGeoArrays", "keys", "scale", "tie", "finiteCogValues", "getCogBase", "tags", "width", "height", "elevation", "keys", "scale", "tie", "validCogGeoArrays", "hasCogProjection", "validCogGrid", "source", "base", "profile", "zoom", "x", "y", "resolution", "validateCogOffsets", "source", "level", "i", "readCogLevel", "source", "directory", "state", "tags", "profile", "getCogProfile", "getCogBase", "base", "resolution", "zoom", "span", "x", "y", "validCogGrid", "level", "validateCogOffsets", "readCogDirectories", "source", "offset", "state", "seen", "directory", "readCogDirectory", "readCogLevel", "decodeCogTile", "data", "length", "compression", "reader", "result", "offset", "chunk", "readCogBlock", "source", "level", "x", "y", "signal", "index", "decodeCogTile", "readCog", "getElevationTile", "source", "level", "x", "y", "signal", "data", "readCogBlock", "view", "heights", "i", "height", "getColorTile", "source", "level", "x", "y", "signal", "canvas", "context", "left", "top", "bx", "by", "pixels", "rgba", "i", "j", "bitmap", "readCogBlock", "image", "validCogTileCoordinates", "z", "x", "y", "getCogTile", "source", "z", "x", "y", "signal", "validCogTileCoordinates", "level", "getElevationTile", "getColorTile", "getCogHeader", "source", "headerOffsets", "headerFlags", "headerBounds", "decodeHeader", "data", "view", "header", "i", "headerOffsets", "headerFlags", "headerBounds", "validateCogContainer", "container", "header", "decompress", "data", "compression", "blob", "stream", "getCogAssetEntry", "container", "header", "asset", "metadata", "decompress", "readCog", "assets", "entry", "openCogAsset", "url", "asset", "container", "header", "decodeHeader", "readCog", "validateCogContainer", "entry", "getCogAssetEntry", "baseOffset", "openCog", "url", "asset", "source", "openCogAsset", "header", "readCog", "order", "base", "minZoom", "maxZoom", "readCogDirectories", "half", "left", "right", "top", "bottom", "getCogHeader", "getCogTile", "workerCogSource", "onCogMessage", "data", "key", "workerCogSource", "openCog", "archive", "result", "transfers", "error", "geometryDecoder", "hasUnsupportedPrimitives", "meshes", "mesh", "primitive", "decodeModel", "data", "view", "decoder", "geometryDecoder", "description", "offset", "length", "type", "chunk", "binary", "hasUnsupportedPrimitives", "loadBuffer", "buffer", "directory", "response", "geometryImageOptions", "loadImage", "description", "directory", "image", "blob", "view", "buffer", "response", "geometryImageOptions", "loadModelResources", "description", "directory", "bufferRequests", "buffer", "geometryEmpty", "loadBuffer", "imageRequests", "image", "loadImage", "geometrySemantics", "types", "sizes", "readAccessorValue", "input", "Type", "at", "readAccessorValues", "description", "Type", "size", "data", "accessorCount", "indices", "viewIndex", "offset", "count", "stride", "view", "bytes", "buffer", "input", "i", "j", "at", "output", "readAccessorValue", "readSparseAccessor", "description", "spec", "Type", "size", "data", "sparse", "Index", "types", "view", "offset", "indices", "readAccessorValues", "normalizeAccessor", "spec", "Type", "data", "size", "normalized", "readAccessor", "description", "index", "spec", "Type", "types", "size", "sizes", "data", "readAccessorValues", "readSparseAccessor", "normalizeAccessor", "readModelAttributes", "description", "primitive", "attributes", "semantic", "name", "geometrySemantics", "readAccessor", "vertexCount", "attribute", "readModelIndices", "description", "primitive", "attributes", "vertexCount", "index", "readAccessor", "value", "vertexNormals", "p", "indices", "normals", "i", "a", "b", "c", "ux", "uy", "uz", "vx", "vy", "vz", "j", "nx", "ny", "nz", "index", "length", "prepareModelPrimitive", "description", "primitive", "attributes", "vertexCount", "readModelAttributes", "readModelIndices", "vertexNormals", "prepareModelGeometry", "description", "scene", "pending", "visited", "meshes", "transfers", "index", "spec", "primitive", "attribute", "child", "geometryEmpty", "prepareModelPrimitive", "prepareModel", "url", "response", "description", "decodeModel", "scene", "images", "loadModelResources", "transfers", "prepareModelGeometry", "image", "onModelMessage", "data", "result", "prepareModel", "error", "onGeometryMessage", "event", "onModelMessage", "onCogMessage", "onVectorTileMessage", "data", "assembleAreaGeometry", "transfers", "error"]
|
|
7
7
|
}
|