isard 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/README.md +22 -7
  3. package/dist/basemap/vectortiles/context.d.ts +43 -0
  4. package/dist/basemap/vectortiles/context.js +6 -0
  5. package/dist/basemap/vectortiles/context.js.map +1 -0
  6. package/dist/basemap/vectortiles/extrusions.d.ts +11 -0
  7. package/dist/basemap/vectortiles/extrusions.js +46 -0
  8. package/dist/basemap/vectortiles/extrusions.js.map +1 -0
  9. package/dist/basemap/vectortiles/labels.d.ts +22 -0
  10. package/dist/basemap/vectortiles/labels.js +225 -0
  11. package/dist/basemap/vectortiles/labels.js.map +1 -0
  12. package/dist/basemap/vectortiles/requests.d.ts +24 -0
  13. package/dist/basemap/vectortiles/requests.js +61 -0
  14. package/dist/basemap/vectortiles/requests.js.map +1 -0
  15. package/dist/basemap/vectortiles/street-wind.d.ts +19 -0
  16. package/dist/basemap/vectortiles/street-wind.js +133 -0
  17. package/dist/basemap/vectortiles/street-wind.js.map +1 -0
  18. package/dist/basemap/vectortiles/style.d.ts +47 -0
  19. package/dist/basemap/vectortiles/style.js +141 -0
  20. package/dist/basemap/vectortiles/style.js.map +1 -0
  21. package/dist/basemap/vectortiles/tiles.d.ts +34 -0
  22. package/dist/basemap/vectortiles/tiles.js +62 -0
  23. package/dist/basemap/vectortiles/tiles.js.map +1 -0
  24. package/dist/basemap/vectortiles/trees.d.ts +19 -0
  25. package/dist/basemap/vectortiles/trees.js +93 -0
  26. package/dist/basemap/vectortiles/trees.js.map +1 -0
  27. package/dist/basemap/vectortiles/vectors.d.ts +20 -0
  28. package/dist/basemap/vectortiles/vectors.js +167 -0
  29. package/dist/basemap/vectortiles/vectors.js.map +1 -0
  30. package/dist/basemap/vectortiles.d.ts +23 -90
  31. package/dist/basemap/vectortiles.js +57 -765
  32. package/dist/basemap/vectortiles.js.map +1 -1
  33. package/dist/basemap/workerpool.js +25 -6
  34. package/dist/basemap/workerpool.js.map +1 -1
  35. package/dist/basemap.worker.js +2 -2
  36. package/dist/basemap.worker.js.map +4 -4
  37. package/dist/decoder.worker.js +5 -4
  38. package/dist/decoder.worker.js.map +8 -6
  39. package/dist/engine/decoders.d.ts +4 -8
  40. package/dist/engine/decoders.js +29 -2
  41. package/dist/engine/decoders.js.map +1 -1
  42. package/dist/index.d.ts +7 -1
  43. package/dist/index.js +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/isard_bg.wasm +0 -0
  46. package/dist/isard_core_bg.wasm +0 -0
  47. package/dist/layers/flow.d.ts +9 -2
  48. package/dist/layers/flow.js +51 -10
  49. package/dist/layers/flow.js.map +1 -1
  50. package/dist/layers/panoramas.d.ts +2 -0
  51. package/dist/layers/panoramas.js +27 -6
  52. package/dist/layers/panoramas.js.map +1 -1
  53. package/dist/map/workers.js +3 -0
  54. package/dist/map/workers.js.map +1 -1
  55. package/dist/util/read.d.ts +4 -0
  56. package/dist/util/read.js +28 -0
  57. package/dist/util/read.js.map +1 -0
  58. package/dist/wasm/isard.d.ts +18 -5
  59. package/dist/wasm/isard.js +25 -4
  60. package/dist/wasm/isard_core.d.ts +18 -5
  61. package/dist/wasm/isard_core.js +25 -4
  62. package/dist/workers/basemap/street.d.ts +1 -1
  63. package/package.json +1 -1
@@ -18,13 +18,13 @@
18
18
  "/** The state a basemap worker shares among its jobs: the renderers (a style's layers over a source), the decoded vector\n * tiles and raster images it keeps, the requests in progress, and the style's values as its jobs read them */\n\nimport { decode, type TileLayer } from '../../basemap/mvt.ts';\nimport { pmtilesTile } from '../../basemap/pmtiles.ts';\nimport {\n type Context,\n color,\n css,\n evaluate,\n isExpression,\n type RasterSource,\n type StyleLayer,\n} from '../../basemap/vectorstyle.ts';\nimport { withHeaders } from '../../engine/requests.ts';\nimport { latitude, longitude } from '../../util/geo.ts';\nimport { Lru } from '../../util/lru.ts';\nimport type { Priority } from '../basemap.worker.ts';\n\nexport interface Renderer {\n tiles: string;\n maxzoom: number;\n layers: StyleLayer[];\n rasters: Record<string, RasterSource>;\n sprites: Sprite[];\n /** Fill patterns by icon name, cut from the sprites once */\n patterns: Map<string, OffscreenCanvas | undefined>;\n}\n\n/** A sprite of the style: its images by name (`id:name` but in the default sprite) and its sheet */\nexport interface Sprite {\n image: ImageBitmap;\n icons: Record<string, { x: number; y: number; width: number; height: number; pixelRatio?: number }>;\n}\n\n/** An image of the sprites and its sheet */\nexport const spriteIcon = (r: Renderer, name: string) => {\n const sprite = r.sprites.find((sp) => Boolean(sp.icons[name]));\n const icon = sprite?.icons[name];\n\n return sprite && icon ? { icon, image: sprite.image } : undefined;\n};\n\nexport const renderers = new Map<string, Renderer>();\n/** Decoded tiles kept by the pool, shared among its workers (a vector tile always goes to the same worker): some\n * 2 MB each */\nconst CACHE = 96;\n/** Decoded tiles by URL; this worker's share of them, set by the renderers */\nexport const cache = new Lru<string, Promise<Map<string, TileLayer> | undefined>>(CACHE);\n\n/** The decoded tiles one worker of `workers` keeps */\nexport const cacheShare = (workers: number): number => {\n return Math.max(16, Math.ceil(CACHE / Math.max(1, workers)));\n};\n/** Requests in progress, and those of them aborted (both forgotten once answered) */\nexport const active = new Set<number>();\nexport const aborted = new Set<number>();\n\n/** Images of the raster sources by URL. An image dropped is freed once settled, after the renders that awaited it have\n * drawn it (they draw without awaiting again) */\nconst images = new Lru<string, Promise<ImageBitmap | undefined>>(64, (evicted) =>\n evicted.then(\n (bitmap) => setTimeout(() => bitmap?.close(), 0),\n () => undefined,\n ),\n);\n\n/** An image of a raster source (shared by every renderer); undefined where the source has none */\nexport const image = (url: string, priority: Priority = 'auto'): Promise<ImageBitmap | undefined> => {\n const hit = images.get(url);\n\n if (hit) return hit;\n\n const pending = (async () => {\n // A tile of a PMTiles archive (`pmtiles://…/{z}/{x}/{y}`)\n const archived = pmtilesTile(url);\n\n if (archived) {\n const bytes = await archived;\n\n return bytes && createImageBitmap(new Blob([bytes]));\n }\n\n const init: PriorityInit = { priority };\n const response = await fetch(url, withHeaders(url, init));\n\n if (response.status === 404 || response.status === 204) return undefined;\n if (!response.ok) throw new Error(`${url}: ${response.status}`);\n\n return createImageBitmap(await response.blob());\n })();\n\n pending.catch(() => images.delete(url));\n images.set(url, pending);\n\n return pending;\n};\n\n/** `RequestInit` with the fetch priority, which the TypeScript DOM library may not know yet */\ntype PriorityInit = RequestInit & { priority?: Priority };\n\n/** A vector tile, decoded (shared by every renderer of its URL); the first request's priority fetches it */\nexport const tile = (url: string, priority: Priority = 'auto'): Promise<Map<string, TileLayer> | undefined> => {\n const hit = cache.get(url);\n\n if (hit) return hit;\n\n const pending = (async () => {\n // A tile of a PMTiles archive, ungzipped by the reader\n const archived = pmtilesTile(url);\n\n if (archived) {\n const bytes = await archived;\n\n return bytes && decode(bytes);\n }\n for (let attempt = 0; ; attempt += 1) {\n const init: PriorityInit = { priority };\n const response = await fetch(url, withHeaders(url, init));\n\n if (response.status === 404 || response.status === 204) return undefined;\n if (response.ok) {\n // Every layer: renderers of other subsets share the tile\n return decode(new Uint8Array(await response.arrayBuffer()));\n }\n if (attempt >= 2) throw new Error(`${url}: ${response.status}`);\n await new Promise((r) => setTimeout(r, 400 * (attempt + 1)));\n }\n })();\n\n pending.catch(() => cache.delete(url));\n cache.set(url, pending);\n\n return pending;\n};\n\n/** The vector tile to draw a raster tile from, and where the raster tile lies in it (tile units) */\nexport const source = (r: Renderer, z: number, x: number, y: number) => {\n const vz = Math.max(0, Math.min(z - 1, r.maxzoom));\n const d = z - vz;\n const n = 2 ** Math.max(0, d);\n const [vx, vy] = d >= 0 ? [Math.floor(x / n), Math.floor(y / n)] : [x, y];\n const url = r.tiles.replace('{z}', String(vz)).replace('{x}', String(vx)).replace('{y}', String(vy));\n // Fraction of the vector tile covered, and the offset in it\n const part = 1 / n;\n\n return { url, vz, vx, vy, part, ox: (x % n) * part, oy: (y % n) * part };\n};\n\nexport const value = (layer: StyleLayer, group: 'paint' | 'layout', key: string, ctx: Context, fallback: unknown) => {\n const v = layer[group]?.[key];\n\n if (v === undefined) return fallback;\n\n // An array that is not an expression is a literal value (`text-font`, `text-offset`, `line-dasharray`)\n const out = Array.isArray(v) && !isExpression(v) ? v : evaluate(v, ctx);\n\n return out === undefined || out === null ? fallback : out;\n};\n\n/** A color with an opacity, for the canvas */\nexport const paint = (c: unknown, opacity: number): string => {\n const rgba = color(c) ?? [0, 0, 0, 1];\n\n return css([rgba[0], rgba[1], rgba[2], rgba[3] * opacity]);\n};\n\nexport const shown = (layer: StyleLayer, zoom: number): boolean => {\n if (layer.layout?.visibility === 'none') return false;\n\n return zoom >= (layer.minzoom ?? 0) && zoom < (layer.maxzoom ?? 24);\n};\n\n/** Longitude and latitude of a point of tile (z, x, y) in tile units */\nexport const lonLat = (z: number, x: number, y: number, extent: number, px: number, py: number): [number, number] => {\n const n = 2 ** z;\n\n return [longitude((x + px / extent) / n), latitude((y + py / extent) / n)];\n};\n",
19
19
  "/** A vector tile cut into geometry for the engine: the polygons of the extrusions, the fills, lines and buildings of\n * `vectors()` with their style per feature, made ready for the GPU by the tessellation module */\n\nimport type { TileFeature, Value } from '../../basemap/mvt.ts';\nimport {\n type Context,\n color,\n context,\n filter,\n isFeatureDependent,\n type StyleLayer,\n vectorKind,\n} from '../../basemap/vectorstyle.ts';\nimport initTess, { tessellateVectorTile } from '../../wasm/isard_tess.js';\nimport type { Priority, TileMesh, TilePolygons, TileVectors } from '../basemap.worker.ts';\nimport { aborted, type Renderer, tile, value } from './tiles.ts';\n\n/**\n * The polygons of a tile's features in the renderer's fill layers (each feature once, whichever layers keep it), in\n * Mercator [0, 1]: a ring turning clockwise in tile units (y down) starts a polygon, the others are its holes (the\n * vector tile specification)\n */\nexport const polygons = async (r: Renderer, z: number, x: number, y: number, id: number, priority?: Priority) => {\n const url = r.tiles.replace('{z}', String(z)).replace('{x}', String(x)).replace('{y}', String(y));\n const layers = await tile(url, priority);\n const out = {\n points: [] as number[],\n ringStart: [] as number[],\n polygonStart: [] as number[],\n feature: [] as number[],\n };\n const properties: Record<string, Value>[] = [];\n\n if (!layers || aborted.has(id)) return undefined;\n\n const seen = new Set<TileFeature>();\n const n = 2 ** z;\n\n r.layers.forEach((layer) => {\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data) return;\n data.features.forEach((f) => {\n if (f.type !== 3 || seen.has(f) || !filter(layer.filter, context(f, z))) return;\n seen.add(f);\n\n const index = properties.length;\n\n properties.push(f.properties);\n f.geometry.forEach((ring) => {\n // Twice the signed area: positive for a ring turning clockwise on screen, an outline\n let area = 0;\n\n for (let i = 0; i + 1 < ring.length; i += 2) {\n const j = (i + 2) % ring.length;\n\n area += (ring[i] ?? 0) * (ring[j + 1] ?? 0) - (ring[j] ?? 0) * (ring[i + 1] ?? 0);\n }\n if (area === 0) return;\n if (area > 0 || out.polygonStart.length === 0 || out.feature.at(-1) !== index) {\n out.polygonStart.push(out.ringStart.length);\n out.feature.push(index);\n }\n out.ringStart.push(out.points.length / 2);\n for (let i = 0; i + 1 < ring.length; i += 2) {\n out.points.push((x + (ring[i] ?? 0) / data.extent) / n, (y + (ring[i + 1] ?? 0) / data.extent) / n);\n }\n });\n });\n });\n out.ringStart.push(out.points.length / 2);\n out.polygonStart.push(out.ringStart.length - 1);\n\n return {\n arrays: {\n points: Float64Array.from(out.points),\n ringStart: Uint32Array.from(out.ringStart),\n polygonStart: Uint32Array.from(out.polygonStart),\n feature: Uint32Array.from(out.feature),\n },\n properties,\n } satisfies TilePolygons;\n};\n\n/** Floats of a styled feature (the engine's `FLOATS`): its color at 0, its size's zooms at 8 and values at 12 */\nconst STYLE_FLOATS = 32;\n\n/**\n * A ring cut to the square [0, `extent`] (Sutherland–Hodgman), its points interleaved, unclosed: a polygon lying\n * across the tile's edge keeps its part in the tile, along the edge\n */\nexport const clipRing = (ring: readonly number[], extent: number): number[] => {\n let points = ring.slice();\n const edges: [axis: 0 | 1, bound: number, inside: (v: number) => boolean][] = [\n [0, 0, (v) => v >= 0],\n [0, extent, (v) => v <= extent],\n [1, 0, (v) => v >= 0],\n [1, extent, (v) => v <= extent],\n ];\n\n for (const [axis, bound, inside] of edges) {\n const out: number[] = [];\n const n = points.length / 2;\n\n for (let i = 0; i < n; i += 1) {\n const [ax, ay] = [points[i * 2] ?? 0, points[i * 2 + 1] ?? 0];\n const j = (i + 1) % n;\n const [bx, by] = [points[j * 2] ?? 0, points[j * 2 + 1] ?? 0];\n const [a, b] = axis === 0 ? [ax, bx] : [ay, by];\n\n if (inside(a)) out.push(ax, ay);\n if (inside(a) !== inside(b)) {\n const t = (bound - a) / (b - a);\n\n out.push(axis === 0 ? bound : ax + (bx - ax) * t, axis === 0 ? ay + (by - ay) * t : bound);\n }\n }\n points = out;\n if (points.length === 0) break;\n }\n\n return points;\n};\n\n/** A line cut to the square [0, `extent`] (Liang–Barsky per segment): its runs inside, each two points at least */\nexport const clipLine = (line: readonly number[], extent: number): number[][] => {\n const runs: number[][] = [];\n let run: number[] = [];\n const end = () => {\n if (run.length >= 4) runs.push(run);\n run = [];\n };\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n const [ax, ay, bx, by] = [line[i - 2] ?? 0, line[i - 1] ?? 0, line[i] ?? 0, line[i + 1] ?? 0];\n const [dx, dy] = [bx - ax, by - ay];\n let [t0, t1] = [0, 1];\n\n for (const [p, q] of [\n [-dx, ax],\n [dx, extent - ax],\n [-dy, ay],\n [dy, extent - ay],\n ] as const) {\n if (p === 0) {\n if (q < 0) t1 = -1;\n } else if (p < 0) t0 = Math.max(t0, q / p);\n else t1 = Math.min(t1, q / p);\n }\n if (t0 > t1) {\n end();\n continue;\n }\n if (run.length === 0 || t0 > 0) {\n end();\n run.push(ax + dx * t0, ay + dy * t0);\n }\n run.push(ax + dx * t1, ay + dy * t1);\n if (t1 < 1) end();\n }\n end();\n\n return runs;\n};\n\n/** The zooms a tile of level `z` is styled at: the range it is drawn over, and deeper for the deepest level, which\n * the map stretches past it */\nconst styleZooms = (z: number, deepest: number): [number, number, number, number] => {\n return z >= deepest ? [z - 0.5, z + 1, z + 3, z + 6] : [z - 0.5, z - 1 / 6, z + 1 / 6, z + 0.5];\n};\n\n/**\n * The geometry of a feature of a tile of the source's level in the units of its tile `d` levels deeper at (`ox`, `oy`)\n * among the `2^d × 2^d` it holds (overzoom); undefined if none of it lies in that tile (its points' bounds outside\n * it or along its edge: nothing left once cut to it)\n */\nexport const overzoomed = (\n geometry: readonly (readonly number[])[],\n extent: number,\n d: number,\n ox: number,\n oy: number,\n): number[][] | undefined => {\n const scale = 2 ** d;\n const [x0, y0] = [ox * extent, oy * extent];\n const bounds = [\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ];\n\n geometry.forEach((part) => {\n for (let i = 0; i + 1 < part.length; i += 2) {\n const [px, py] = [(part[i] ?? 0) * scale - x0, (part[i + 1] ?? 0) * scale - y0];\n\n bounds[0] = Math.min(bounds[0] ?? px, px);\n bounds[1] = Math.min(bounds[1] ?? py, py);\n bounds[2] = Math.max(bounds[2] ?? px, px);\n bounds[3] = Math.max(bounds[3] ?? py, py);\n }\n });\n\n const [minX = 0, minY = 0, maxX = 0, maxY = 0] = bounds;\n\n if (maxX <= 0 || maxY <= 0 || minX >= extent || minY >= extent) return undefined;\n\n return geometry.map((part) => part.map((v, i) => v * scale - (i % 2 === 0 ? x0 : y0)));\n};\n\n/**\n * The fills and lines of a tile's features in the renderer's layers, cut to the tile, in Mercator [0, 1], each with\n * its style (color, its opacity folded in; a line's width, its gap folded in as the casing drawn by `draw`, at four\n * zooms over the range the tile is drawn at); with `stylesOnly`, the styles alone. Patterns, outlines and circles are\n * left to the raster path\n */\nexport const vectors = async (\n r: Renderer,\n { z, x, y, deepest = r.maxzoom }: { z: number; x: number; y: number; deepest?: number },\n id: number,\n stylesOnly: boolean,\n priority?: Priority,\n) => {\n // Past the source's deepest level: cut from its tile there\n const d = Math.max(0, z - r.maxzoom);\n const [vz, vx, vy] = [z - d, Math.floor(x / 2 ** d), Math.floor(y / 2 ** d)];\n const [ox, oy] = [x - vx * 2 ** d, y - vy * 2 ** d];\n const url = r.tiles.replace('{z}', String(vz)).replace('{x}', String(vx)).replace('{y}', String(vy));\n const layers = await tile(url, priority);\n\n if (aborted.has(id)) return undefined;\n\n const n = 2 ** z;\n const zooms = styleZooms(z, Math.max(deepest, r.maxzoom));\n const fills: Record<'points' | 'ringStart' | 'polygonStart' | 'feature', number[]> = {\n points: [],\n ringStart: [],\n polygonStart: [],\n feature: [],\n };\n const lines: Record<'points' | 'start' | 'feature', number[]> = { points: [], start: [], feature: [] };\n const fillStart: number[] = [];\n const lineStart: number[] = [];\n const styles: number[] = [];\n const properties: Record<string, Value>[] = [];\n const sublayer: number[] = [];\n const empty: Record<string, Value> = {};\n\n /** A styled feature: its style, properties and sublayer (`outline`: a fill's outline, a line of 1 pixel in its\n * `fill-outline-color`); its number */\n const styled = (\n s: number,\n layer: StyleLayer,\n ctx: Context,\n props: Record<string, Value>,\n outline = false,\n ): number => {\n const at = (key: string, fallback: unknown, zoom: number) => value(layer, 'paint', key, { ...ctx, zoom }, fallback);\n // An opacity of the zoom only is the sublayer's, evaluated at the camera's zoom (the same across tiles of other\n // levels); one of the features is folded into their color\n const opacityKey = `${layer.type}-opacity`;\n const ownOpacity = isFeatureDependent(layer.paint?.[opacityKey]);\n /** The color at a zoom, its own opacity folded in */\n const paintAt = (zoom: number): number[] => {\n const [r, g, b, a] = color(at(outline ? 'fill-outline-color' : `${layer.type}-color`, '#000', zoom)) ?? [\n 0, 0, 0, 1,\n ];\n\n return [r, g, b, a * (ownOpacity ? Number(at(opacityKey, 1, zoom)) : 1)];\n };\n const out = new Array<number>(STYLE_FLOATS).fill(0);\n\n // The color at the first and at the last zoom of the range the tile is drawn over (at the second for a tile of the\n // source's deepest level, styled over six levels past it: the engine mixes the two up to that zoom, see\n // `u_zoom_colors`): a color interpolated by zoom changes smoothly across tiles of other levels\n const colorEnd = zooms[3] - zooms[0] > 1.5 ? zooms[1] : zooms[3];\n\n out.splice(0, 8, ...paintAt(zooms[0]), ...paintAt(colorEnd));\n zooms.forEach((zoom, k) => {\n out[8 + k] = zoom;\n // A fill's outline: one pixel wide, as MapLibre draws it\n if (outline) {\n out[12 + k] = 1;\n\n return;\n }\n // A building: its height and base height (metres) at the same zooms\n if (layer.type === 'fill-extrusion') {\n out[12 + k] = Math.max(0, Number(at('fill-extrusion-height', 0, zoom)) || 0);\n out[16 + k] = zoom;\n out[20 + k] = Math.max(0, Number(at('fill-extrusion-base', 0, zoom)) || 0);\n\n return;\n }\n if (layer.type !== 'line') return;\n\n const width = Number(at('line-width', 1, zoom));\n const gap = Number(at('line-gap-width', 0, zoom));\n\n out[12 + k] = Math.max(0, gap > 0 ? gap + 2 * width : width);\n });\n styles.push(...out);\n properties.push(props);\n sublayer.push(s);\n\n return properties.length - 1;\n };\n /** A point of the tile in Mercator */\n const mercator = (px: number, py: number, extent: number): [number, number] => [\n (x + px / extent) / n,\n (y + py / extent) / n,\n ];\n\n /** The parts of a feature as lines of `f` cut to the tile (`closed`: a polygon's rings, each closed: its outline) */\n const pushLines = (geometry: number[][], closed: boolean, f: number, extent: number) => {\n geometry.forEach((part) => {\n const line = closed && part.length >= 2 ? [...part, part[0] ?? 0, part[1] ?? 0] : part;\n\n clipLine(line, extent).forEach((run) => {\n lines.start.push(lines.points.length / 2);\n lines.feature.push(f);\n for (let i = 0; i + 1 < run.length; i += 2)\n lines.points.push(...mercator(run[i] ?? 0, run[i + 1] ?? 0, extent));\n });\n });\n };\n\n r.layers.forEach((layer, s) => {\n fillStart.push(fills.polygonStart.length);\n lineStart.push(lines.start.length);\n\n const kind = vectorKind(layer);\n // A fill's outline, drawn over it as lines of its sublayer (the rings as they come, past the tile's edge cut away:\n // no line along the edge)\n const outlined =\n layer.type === 'fill' &&\n layer.paint?.['fill-outline-color'] !== undefined &&\n layer.paint?.['fill-antialias'] !== false;\n\n if (!kind) return;\n if (layer.type === 'background') {\n const f = styled(s, layer, { zoom: z, properties: {}, type: 'Unknown' }, empty);\n\n if (stylesOnly) return;\n fills.polygonStart.push(fills.ringStart.length);\n fills.feature.push(f);\n fills.ringStart.push(fills.points.length / 2);\n fills.points.push(x / n, y / n, (x + 1) / n, y / n, (x + 1) / n, (y + 1) / n, x / n, (y + 1) / n);\n\n return;\n }\n\n const data = layers?.get(layer['source-layer'] ?? '');\n\n data?.features.forEach((feature) => {\n if (kind === 'line' ? feature.type === 1 : feature.type !== 3) return;\n\n const ctx = context(feature, z);\n\n if (!filter(layer.filter, ctx)) return;\n\n // In the units of the tile asked for (the same as the source's but past its deepest level)\n const geometry = d > 0 ? overzoomed(feature.geometry, data.extent, d, ox, oy) : feature.geometry;\n\n if (!geometry) return;\n\n const f = styled(s, layer, ctx, feature.properties);\n const o = outlined ? styled(s, layer, ctx, feature.properties, true) : -1;\n\n if (stylesOnly) return;\n if (kind === 'line') {\n // A polygon's rings, closed: its outline\n pushLines(geometry, feature.type === 3, f, data.extent);\n\n return;\n }\n if (o >= 0) pushLines(geometry, true, o, data.extent);\n let outline = false;\n\n geometry.forEach((ring) => {\n // Twice the signed area: positive for a ring turning clockwise on screen, an outline (as `polygons`)\n let area = 0;\n\n for (let i = 0; i + 1 < ring.length; i += 2) {\n const j = (i + 2) % ring.length;\n\n area += (ring[i] ?? 0) * (ring[j + 1] ?? 0) - (ring[j] ?? 0) * (ring[i + 1] ?? 0);\n }\n if (area === 0) return;\n // A hole of an outline cut away: dropped\n if (area < 0 && !outline) return;\n\n const clipped = clipRing(ring, data.extent);\n\n if (area > 0) outline = clipped.length >= 6;\n if (clipped.length < 6) return;\n if (area > 0) {\n fills.polygonStart.push(fills.ringStart.length);\n fills.feature.push(f);\n }\n fills.ringStart.push(fills.points.length / 2);\n for (let i = 0; i + 1 < clipped.length; i += 2)\n fills.points.push(...mercator(clipped[i] ?? 0, clipped[i + 1] ?? 0, data.extent));\n });\n });\n });\n fillStart.push(fills.polygonStart.length);\n lineStart.push(lines.start.length);\n fills.ringStart.push(fills.points.length / 2);\n fills.polygonStart.push(fills.ringStart.length - 1);\n lines.start.push(lines.points.length / 2);\n\n if (stylesOnly) return Float32Array.from(styles);\n\n return {\n fills: {\n points: Float64Array.from(fills.points),\n ringStart: Uint32Array.from(fills.ringStart),\n polygonStart: Uint32Array.from(fills.polygonStart),\n feature: Uint32Array.from(fills.feature),\n fillStart: Uint32Array.from(fillStart),\n },\n lines: {\n points: Float64Array.from(lines.points),\n start: Uint32Array.from(lines.start),\n feature: Uint32Array.from(lines.feature),\n lineStart: Uint32Array.from(lineStart),\n },\n styles: Float32Array.from(styles),\n tile: Float64Array.of(x / n, y / n, (x + 1) / n, (y + 1) / n),\n properties,\n sublayer: Uint16Array.from(sublayer),\n } satisfies TileVectors;\n};\n\n/** The tessellation module: where it is, and once loaded whether it works (false: the main thread does its work) */\nexport const tess: { url?: string; ready?: Promise<boolean> } = {};\n\n/** The tessellation module loaded, once; false without one or if it failed */\nexport const tessellator = (): Promise<boolean> => {\n if (!tess.url) return Promise.resolve(false);\n\n const ready =\n tess.ready ??\n initTess({ module_or_path: tess.url }).then(\n () => true,\n (error: unknown) => {\n console.warn('isard: the tessellation module failed to load, the main thread does its work', error);\n\n return false;\n },\n );\n\n tess.ready = ready;\n\n return ready;\n};\n\n/** A cut tile made ready for the GPU by the tessellation module (`raised`: per sublayer, whether its polygons are\n * extruded into blocks); undefined if it fails (it is then left aside) */\nexport const tessellate = (out: TileVectors, raised: Uint8Array, prism: boolean): TileMesh | undefined => {\n const { fills, lines } = out;\n\n try {\n const t = tessellateVectorTile(\n fills.points,\n fills.ringStart,\n fills.polygonStart,\n fills.feature,\n fills.fillStart,\n lines.points,\n lines.start,\n lines.feature,\n lines.lineStart,\n raised,\n prism,\n out.tile ?? new Float64Array(),\n );\n const mesh: TileMesh = {\n vertices: t.vertices(),\n indices: t.indices(),\n fillRanges: t.fillRanges(),\n prism: t.prism(),\n pieces: t.pieces(),\n lineTable: t.lineTable(),\n lineRanges: t.lineRanges(),\n blocks: t.blocks(),\n blockIndices: t.blockIndices(),\n blockRanges: t.blockRanges(),\n bounds: t.bounds(),\n };\n\n t.free();\n\n return mesh;\n } catch (error) {\n // A trap leaves the module unusable: the next tiles without it\n console.warn('isard: the tessellation module failed, the main thread does its work', error);\n tess.ready = Promise.resolve(false);\n\n return undefined;\n }\n};\n",
20
20
  "/** The label candidates of a tile: the texts and icons of the style's symbol layers, for the page to shape and place */\n\nimport {\n type CandidateIcon,\n type CandidateOverlap,\n type Context,\n context,\n filter,\n isExpression,\n isFeatureDependent,\n type Json,\n type LabelCandidate,\n labelFont,\n type StyleLayer,\n text,\n zoomStops,\n} from '../../basemap/vectorstyle.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { aborted, lonLat, type Renderer, shown, tile, value } from './tiles.ts';\n\n/** How a layer's text or icon (`prefix`) meets the others: allowed to overlap, ignored by the placement */\nconst overlapOf = (layer: StyleLayer, prefix: 'text' | 'icon', ctx: Context): CandidateOverlap => {\n const allow = Boolean(value(layer, 'layout', `${prefix}-allow-overlap`, ctx, false));\n const ignore = Boolean(value(layer, 'layout', `${prefix}-ignore-placement`, ctx, false));\n\n if (allow && ignore) return true;\n if (allow) return 'allow';\n\n return ignore ? 'ignore' : false;\n};\n\n/** A pair of numbers of a style value, `fallback` if it is not one */\nconst pair = (v: unknown, fallback: [number, number]): [number, number] => {\n return Array.isArray(v) ? [Number(v[0] ?? fallback[0]), Number(v[1] ?? fallback[1])] : fallback;\n};\n\n/** Top, right, bottom, left of one to four numbers, as CSS's sides */\nconst sides = (v: unknown): [number, number, number, number] => {\n const n = (Array.isArray(v) ? v : [v]).map((x) => Number(x) || 0);\n const [top = 0, right = top, bottom = top, left = right] = n;\n\n return [top, right, bottom, left];\n};\n\n/** A label's text in the case of its `text-transform` */\nconst cased = (t: string, transform: unknown): string => {\n if (transform === 'uppercase') return t.toUpperCase();\n if (transform === 'lowercase') return t.toLowerCase();\n\n return t;\n};\n\n/** Points every `spacing` along a line (tile units, x and y interleaved), the first half a spacing in (the middle of a\n * shorter line): each point and the segment it lies on (x, y, x0, y0, x1, y1) */\nexport const lineAnchors = (line: readonly number[], spacing: number): number[][] => {\n let length = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n length += Math.hypot((line[i] ?? 0) - (line[i - 2] ?? 0), (line[i + 1] ?? 0) - (line[i - 1] ?? 0));\n }\n\n const out: number[][] = [];\n\n if (!(length > 0) || !(spacing > 0)) return out;\n\n let next = Math.min(spacing / 2, length / 2);\n let walked = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n const [ax, ay, bx, by] = [line[i - 2] ?? 0, line[i - 1] ?? 0, line[i] ?? 0, line[i + 1] ?? 0];\n const d = Math.hypot(bx - ax, by - ay);\n\n while (d > 0 && next <= walked + d) {\n const t = (next - walked) / d;\n\n out.push([ax + (bx - ax) * t, ay + (by - ay) * t, ax, ay, bx, by]);\n next += spacing;\n }\n walked += d;\n }\n\n return out;\n};\n\n/** The icon of a label: its layer's icon properties for the feature */\nconst iconOf = (\n layer: StyleLayer,\n image: string,\n ctx: Context,\n placement: 'point' | 'line',\n sizeOf: (layer: StyleLayer) => Json,\n): CandidateIcon => {\n const alignment = value(layer, 'layout', 'icon-rotation-alignment', ctx, 'auto');\n const fit = String(value(layer, 'layout', 'icon-text-fit', ctx, 'none'));\n const padding = value(layer, 'layout', 'icon-text-fit-padding', ctx, [0, 0, 0, 0]);\n\n return {\n image,\n size: isFeatureDependent(layer.layout?.['icon-size'])\n ? Number(value(layer, 'layout', 'icon-size', ctx, 1))\n : sizeOf(layer),\n anchor: String(value(layer, 'layout', 'icon-anchor', ctx, 'center')),\n offset: pair(value(layer, 'layout', 'icon-offset', ctx, [0, 0]), [0, 0]),\n rotate: Number(value(layer, 'layout', 'icon-rotate', ctx, 0)) || 0,\n alignment: alignment === 'map' || (alignment === 'auto' && placement === 'line') ? 'map' : 'viewport',\n overlap: overlapOf(layer, 'icon', ctx),\n optional: Boolean(value(layer, 'layout', 'icon-optional', ctx, false)),\n fit: fit === 'width' || fit === 'height' || fit === 'both' ? fit : 'none',\n padding: sides(padding),\n color: String(value(layer, 'paint', 'icon-color', ctx, '#000')),\n opacity: Number(value(layer, 'paint', 'icon-opacity', ctx, 1)),\n };\n};\n\nexport const labels = async (\n r: Renderer,\n z: number,\n x: number,\n y: number,\n id: number,\n priority?: Priority,\n zoom = z,\n): Promise<LabelCandidate[]> => {\n const url = r.tiles.replace('{z}', String(z)).replace('{x}', String(x)).replace('{y}', String(y));\n const layers = await tile(url, priority);\n\n if (!layers || aborted.has(id)) return [];\n\n const out: LabelCandidate[] = [];\n // The text size of a layer when it depends on the zoom only: legacy stops as they are, an expression as stops\n const sizes = new Map<StyleLayer, Json>();\n const sizeOf = (layer: StyleLayer): Json => {\n const known = sizes.get(layer);\n\n if (known !== undefined) return known;\n\n const v = layer.layout?.['text-size'] ?? 16;\n const s = isExpression(v) ? zoomStops(v) : v;\n\n sizes.set(layer, s);\n\n return s;\n };\n // The icon size of a layer when it depends on the zoom only, as the text size\n const iconSizes = new Map<StyleLayer, Json>();\n const iconSizeOf = (layer: StyleLayer): Json => {\n const known = iconSizes.get(layer);\n\n if (known !== undefined) return known;\n\n const v = layer.layout?.['icon-size'] ?? 1;\n const s = isExpression(v) ? zoomStops(v) : v;\n\n iconSizes.set(layer, s);\n\n return s;\n };\n\n r.layers.forEach((layer, index) => {\n const layout = layer.layout ?? {};\n\n if (layer.type !== 'symbol' || !shown(layer, zoom)) return;\n if (layout['text-field'] === undefined && layout['icon-image'] === undefined) return;\n\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data) return;\n\n const zctx: Context = { zoom, properties: {}, type: 'Unknown' };\n const placement = value(layer, 'layout', 'symbol-placement', zctx, 'point') === 'line' ? 'line' : 'point';\n const textAlong =\n placement === 'line' && value(layer, 'layout', 'text-rotation-alignment', zctx, 'auto') !== 'viewport';\n\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (!filter(layer.filter, ctx)) continue;\n\n const field = text(layout['text-field'], ctx).trim();\n const image = text(layout['icon-image'], ctx).trim();\n\n if (!field && !image) continue;\n\n const t = cased(field, value(layer, 'layout', 'text-transform', ctx, 'none'));\n const fonts = value(layer, 'layout', 'text-font', ctx, ['Noto Sans Regular']);\n const font = labelFont(Array.isArray(fonts) && typeof fonts[0] === 'string' ? fonts[0] : 'Noto Sans Regular');\n const base = {\n layer: index,\n text: t,\n font,\n // Zoom stops are kept for the engine; a value of the feature evaluated here\n size: isFeatureDependent(layer.layout?.['text-size'])\n ? Number(value(layer, 'layout', 'text-size', ctx, 16))\n : sizeOf(layer),\n color: String(value(layer, 'paint', 'text-color', ctx, '#000')),\n haloColor: String(value(layer, 'paint', 'text-halo-color', ctx, 'rgba(0,0,0,0)')),\n haloWidth: Number(value(layer, 'paint', 'text-halo-width', ctx, 0)),\n anchor: String(value(layer, 'layout', 'text-anchor', ctx, 'center')),\n offset: pair(value(layer, 'layout', 'text-offset', ctx, [0, 0]), [0, 0]),\n maxWidth: Number(value(layer, 'layout', 'text-max-width', ctx, 10)),\n lineHeight: Number(value(layer, 'layout', 'text-line-height', ctx, 1.2)),\n overlap: overlapOf(layer, 'text', ctx),\n ...(textAlong ? { textAlong } : {}),\n ...(value(layer, 'layout', 'text-optional', ctx, false) ? { textOptional: true } : {}),\n ...(image ? { icon: iconOf(layer, image, ctx, placement, iconSizeOf) } : {}),\n };\n\n if (f.type === 1) {\n for (const point of f.geometry) {\n for (let i = 0; i + 1 < point.length; i += 2) {\n const [px, py] = [point[i] ?? 0, point[i + 1] ?? 0];\n\n // Points in the buffer belong to the neighbouring tile\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) continue;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n\n out.push({ ...base, lon, lat });\n }\n }\n } else if (!t && placement === 'line') {\n // Icons alone along lines (one-way arrows): every `symbol-spacing` CSS pixels (a tile is 512 across at its\n // level, twice as many at each zoom past it)\n const spacing =\n (Number(value(layer, 'layout', 'symbol-spacing', ctx, 250)) * data.extent) / (512 * 2 ** (zoom - z));\n\n for (const line of f.geometry) {\n for (const [px = 0, py = 0, ax = 0, ay = 0, bx = 0, by = 0] of lineAnchors(line, Math.max(spacing, 1))) {\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) continue;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const [lon1, lat1] = lonLat(z, x, y, data.extent, bx, by);\n const [lon0, lat0] = lonLat(z, x, y, data.extent, ax, ay);\n\n out.push({ ...base, lon, lat, along: [lon1 - lon0, lat1 - lat0] });\n }\n }\n } else {\n // The middle of the longest line inside the tile, along it\n let best: number[] | undefined;\n let bestLength = 0;\n\n for (const line of f.geometry) {\n let length = 0;\n\n for (let i = 2; i + 1 < line.length; i += 2) {\n length += Math.hypot((line[i] ?? 0) - (line[i - 2] ?? 0), (line[i + 1] ?? 0) - (line[i - 1] ?? 0));\n }\n if (length > bestLength) {\n bestLength = length;\n best = line;\n }\n }\n if (!best || bestLength < data.extent / 32) continue;\n\n let rest = bestLength / 2;\n\n for (let i = 2; i + 1 < best.length; i += 2) {\n const [ax, ay, bx, by] = [best[i - 2] ?? 0, best[i - 1] ?? 0, best[i] ?? 0, best[i + 1] ?? 0];\n const d = Math.hypot(bx - ax, by - ay);\n\n if (d >= rest && d > 0) {\n const [px, py] = [ax + ((bx - ax) * rest) / d, ay + ((by - ay) * rest) / d];\n\n if (px < 0 || py < 0 || px >= data.extent || py >= data.extent) break;\n\n const [lon, lat] = lonLat(z, x, y, data.extent, px, py);\n const [lon1, lat1] = lonLat(z, x, y, data.extent, bx, by);\n const [lon0, lat0] = lonLat(z, x, y, data.extent, ax, ay);\n\n out.push({ ...base, lon, lat, ...(placement === 'line' ? { along: [lon1 - lon0, lat1 - lat0] } : {}) });\n break;\n }\n rest -= d;\n }\n }\n }\n });\n\n return out;\n};\n",
21
- "/** A vector tile drawn into an image with its style (Canvas 2D), for the raster pool */\n\nimport type { TileFeature, TileLayer } from '../../basemap/mvt.ts';\nimport { type Context, color, context, filter, isFeatureDependent } from '../../basemap/vectorstyle.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { aborted, image, paint, type Renderer, shown, source, spriteIcon, tile, value } from './tiles.ts';\n\nconst LINE_CAPS: ReadonlySet<unknown> = new Set<CanvasLineCap>(['butt', 'round', 'square']);\nconst LINE_JOINS: ReadonlySet<unknown> = new Set<CanvasLineJoin>(['bevel', 'miter', 'round']);\n\nconst isLineCap = (value: unknown): value is CanvasLineCap => LINE_CAPS.has(value);\nconst isLineJoin = (value: unknown): value is CanvasLineJoin => LINE_JOINS.has(value);\n\n/** A style's `line-cap` for the canvas: `butt` if it is none */\nconst lineCap = (value: unknown): CanvasLineCap => (isLineCap(value) ? value : 'butt');\n\n/** A style's `line-join` for the canvas: `miter` if it is none */\nconst lineJoin = (value: unknown): CanvasLineJoin => (isLineJoin(value) ? value : 'miter');\n\n/** The image of a fill pattern, cut from the sprite on first use */\nconst patternImage = (r: Renderer, name: string): OffscreenCanvas | undefined => {\n if (r.patterns.has(name)) return r.patterns.get(name);\n\n const cut = (): OffscreenCanvas | undefined => {\n const found = spriteIcon(r, name);\n\n if (!found || !(found.icon.width > 0) || !(found.icon.height > 0)) return undefined;\n\n const { icon } = found;\n const canvas = new OffscreenCanvas(icon.width, icon.height);\n\n canvas\n .getContext('2d')\n ?.drawImage(found.image, icon.x, icon.y, icon.width, icon.height, 0, 0, icon.width, icon.height);\n\n return canvas;\n };\n const image = cut();\n\n r.patterns.set(name, image);\n\n return image;\n};\n\n/** Canvases free for the next tiles, by size: one per tile being drawn at most */\nconst canvases = new Map<number, OffscreenCanvas[]>();\n\n/** A blank canvas of `size` pixels and its context, from the free ones if any */\nconst takeCanvas = (size: number): { canvas: OffscreenCanvas; g: OffscreenCanvasRenderingContext2D } => {\n const canvas = canvases.get(size)?.pop() ?? new OffscreenCanvas(size, size);\n // A canvas on the CPU: its pixels are read back here, in the worker, not on the main thread at the upload\n const g = canvas.getContext('2d', { willReadFrequently: true });\n\n if (!g) throw new Error('no 2D context');\n // The state a former tile left\n g.setTransform(1, 0, 0, 1, 0, 0);\n g.globalAlpha = 1;\n g.setLineDash([]);\n g.clearRect(0, 0, size, size);\n\n return { canvas, g };\n};\n\nconst giveCanvas = (canvas: OffscreenCanvas): void => {\n const free = canvases.get(canvas.width) ?? [];\n\n canvases.set(canvas.width, free);\n if (free.length < 4) free.push(canvas);\n};\n\n/**\n * The image of a drawn canvas, its alpha straight (the engine blends straight alpha). An opaque tile (a background\n * of full opacity, as a basemap's) is moved out of the canvas as it is, premultiplied and straight being the same\n * there; another one is read back unpremultiplied, copied\n */\nexport const tileImage = (\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n opaque: boolean,\n): Promise<ImageBitmap> => {\n if (opaque) return Promise.resolve(canvas.transferToImageBitmap());\n\n return createImageBitmap(g.getImageData(0, 0, canvas.width, canvas.height), { premultiplyAlpha: 'none' });\n};\n\nexport const render = async (\n r: Renderer,\n z: number,\n x: number,\n y: number,\n size: number,\n id: number,\n priority?: Priority,\n) => {\n const s = source(r, z, x, y);\n const layers = await tile(s.url, priority);\n\n if (aborted.has(id)) return undefined;\n\n const { canvas, g } = takeCanvas(size);\n\n try {\n return await draw(r, s, layers, canvas, g, z, x, y, size, id, priority);\n } finally {\n giveCanvas(canvas);\n }\n};\n\nconst draw = async (\n r: Renderer,\n s: ReturnType<typeof source>,\n layers: Map<string, TileLayer> | undefined,\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n z: number,\n x: number,\n y: number,\n size: number,\n id: number,\n priority?: Priority,\n) => {\n const zoom = Math.max(0, z - 1);\n // CSS pixels to canvas pixels: the tile is 256 CSS pixels across at its zoom\n const px = size / 256;\n let drawn = false;\n /** A background of full opacity covers the tile: every pixel stays opaque */\n let opaque = false;\n\n for (const layer of r.layers) {\n if (!shown(layer, zoom)) continue;\n\n const zctx: Context = { zoom, properties: {}, type: 'Unknown' };\n\n if (layer.type === 'background') {\n const fill = value(layer, 'paint', 'background-color', zctx, '#000');\n const opacity = Number(value(layer, 'paint', 'background-opacity', zctx, 1));\n\n g.fillStyle = paint(fill, opacity);\n g.fillRect(0, 0, size, size);\n if ((color(fill) ?? [0, 0, 0, 1])[3] * opacity >= 1) opaque = true;\n drawn = true;\n continue;\n }\n if (layer.type === 'raster') {\n const source = layer.source === undefined ? undefined : r.rasters[layer.source];\n\n if (!source) continue;\n\n // The canvas covers the Web Mercator tile (z, x, y): a source tile of 512 px covers it from a level coarser\n const rz = Math.max(0, Math.min(z - (source.tileSize >= 512 ? 1 : 0), source.maxzoom));\n const n = 2 ** (z - rz);\n const url = source.tiles\n .replace('{z}', String(rz))\n .replace('{x}', String(Math.floor(x / n)))\n .replace('{y}', String(Math.floor(y / n)));\n const picture = await image(url, priority).catch(() => undefined);\n\n if (aborted.has(id)) return undefined;\n if (!picture) continue;\n\n const [w, h] = [picture.width / n, picture.height / n];\n\n g.globalAlpha = Number(value(layer, 'paint', 'raster-opacity', zctx, 1));\n g.drawImage(picture, (x % n) * w, (y % n) * h, w, h, 0, 0, size, size);\n g.globalAlpha = 1;\n drawn = true;\n continue;\n }\n\n const data = layers?.get(layer['source-layer'] ?? '');\n\n if (!data) continue;\n\n // Tile units to canvas pixels\n const k = size / (data.extent * s.part);\n const [ox, oy] = [s.ox * data.extent, s.oy * data.extent];\n const path = (f: TileFeature, close: boolean) => {\n g.beginPath();\n for (const line of f.geometry) {\n for (let i = 0; i + 1 < line.length; i += 2) {\n const [lx, ly] = [((line[i] ?? 0) - ox) * k, ((line[i + 1] ?? 0) - oy) * k];\n\n if (i === 0) g.moveTo(lx, ly);\n else g.lineTo(lx, ly);\n }\n if (close) g.closePath();\n }\n };\n // Values that only depend on the zoom are evaluated once for the layer\n const dependent = new Map<string, boolean>();\n const get = (group: 'paint' | 'layout', key: string, ctx: Context, fallback: unknown) => {\n const known = dependent.get(key);\n const d = known ?? isFeatureDependent(layer[group]?.[key]);\n\n if (known === undefined) dependent.set(key, d);\n\n return value(layer, group, key, d ? ctx : zctx, fallback);\n };\n\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (!filter(layer.filter, ctx)) continue;\n if (layer.type === 'fill-extrusion' && f.type === 3) {\n // Flat, seen from above: its color\n path(f, true);\n g.fillStyle = paint(\n get('paint', 'fill-extrusion-color', ctx, '#000'),\n Number(get('paint', 'fill-extrusion-opacity', ctx, 1)),\n );\n g.fill('evenodd');\n drawn = true;\n } else if (layer.type === 'fill' && f.type === 3) {\n const opacity = Number(get('paint', 'fill-opacity', ctx, 1));\n const pattern = get('paint', 'fill-pattern', ctx, undefined);\n\n path(f, true);\n\n const icon = typeof pattern === 'string' ? spriteIcon(r, pattern)?.icon : undefined;\n const image = icon && typeof pattern === 'string' && patternImage(r, pattern);\n\n if (icon && image) {\n const p = g.createPattern(image, 'repeat');\n\n if (p) {\n p.setTransform(new DOMMatrix().scale(px / (icon.pixelRatio ?? 1)));\n g.globalAlpha = opacity;\n g.fillStyle = p;\n g.fill('evenodd');\n g.globalAlpha = 1;\n }\n } else {\n g.fillStyle = paint(get('paint', 'fill-color', ctx, '#000'), opacity);\n g.fill('evenodd');\n\n const outline = get('paint', 'fill-outline-color', ctx, undefined);\n\n if (outline !== undefined) {\n g.strokeStyle = paint(outline, opacity);\n g.lineWidth = px;\n g.setLineDash([]);\n g.stroke();\n }\n }\n drawn = true;\n } else if (layer.type === 'line' && f.type !== 1) {\n const width = Number(get('paint', 'line-width', ctx, 1));\n\n if (width <= 0) continue;\n\n // A gap: two lines on either side of it, drawn as one wide line (the casing of a road, its inside drawn over)\n const gap = Number(get('paint', 'line-gap-width', ctx, 0));\n\n g.strokeStyle = paint(get('paint', 'line-color', ctx, '#000'), Number(get('paint', 'line-opacity', ctx, 1)));\n g.lineWidth = (gap > 0 ? gap + 2 * width : width) * px;\n g.lineCap = lineCap(get('layout', 'line-cap', ctx, 'butt'));\n g.lineJoin = lineJoin(get('layout', 'line-join', ctx, 'miter'));\n\n const dash = get('paint', 'line-dasharray', ctx, undefined);\n\n g.setLineDash(Array.isArray(dash) ? dash.map((d) => Number(d) * width * px) : []);\n path(f, f.type === 3);\n g.stroke();\n drawn = true;\n } else if (layer.type === 'circle' && f.type === 1) {\n const radius = Number(get('paint', 'circle-radius', ctx, 5)) * px;\n\n g.fillStyle = paint(get('paint', 'circle-color', ctx, '#000'), Number(get('paint', 'circle-opacity', ctx, 1)));\n\n const stroke = Number(get('paint', 'circle-stroke-width', ctx, 0)) * px;\n\n g.strokeStyle = paint(\n get('paint', 'circle-stroke-color', ctx, '#000'),\n Number(get('paint', 'circle-stroke-opacity', ctx, 1)),\n );\n g.lineWidth = stroke;\n for (const point of f.geometry) {\n for (let i = 0; i + 1 < point.length; i += 2) {\n g.beginPath();\n g.arc(((point[i] ?? 0) - ox) * k, ((point[i + 1] ?? 0) - oy) * k, radius, 0, 2 * Math.PI);\n g.fill();\n if (stroke > 0) g.stroke();\n }\n }\n drawn = true;\n }\n }\n }\n if (!drawn && !layers) return null;\n\n return tileImage(canvas, g, opaque);\n};\n",
22
- "/** The wind of a city's streets: the buildings of the vector tiles around a square, laid on its grid of cells, and\n * the flow round them for a wind towards the east and one towards the north (the grid module) */\n\nimport { type StreetFlows, streetFlows } from '../../grid-module.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { polygons } from './geometry.ts';\nimport type { Renderer } from './tiles.ts';\n\n/** What a street flow is asked with: its square (Mercator: west, north, east, south) and grid, the tiles of level `z`\n * over it (x, y pairs), the sweeps, the grid module's URL */\nexport interface StreetWork {\n module: string;\n z: number;\n tiles: number[];\n bounds: [x0: number, y0: number, x1: number, y1: number];\n width: number;\n height: number;\n iterations: number;\n priority?: Priority;\n}\n\n/** The streets' flows of a square: the buildings of its tiles in cells (those away from it left out), then solved */\nexport const streetFlowOf = async (r: Renderer, work: StreetWork, id: number): Promise<StreetFlows> => {\n const { z, tiles, bounds, width, height, iterations, module, priority } = work;\n const [x0, y0, x1, y1] = bounds;\n const points: number[] = [];\n const ringStart: number[] = [];\n const polygonStart: number[] = [];\n\n for (let t = 0; t + 1 < tiles.length; t += 2) {\n const tile = await polygons(r, z, tiles[t] ?? 0, tiles[t + 1] ?? 0, id, priority);\n\n if (!tile) continue;\n\n const { points: merc, ringStart: rings, polygonStart: starts } = tile.arrays;\n\n for (let p = 0; p + 1 < starts.length; p++) {\n const [first, end] = [starts[p] ?? 0, starts[p + 1] ?? 0];\n const from = rings[first] ?? 0;\n const to = rings[end] ?? 0;\n // Its points' bounds in Mercator: away from the square, left out\n let [minX, minY, maxX, maxY] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (let k = from; k < to; k++) {\n const [mx, my] = [merc[k * 2] ?? 0, merc[k * 2 + 1] ?? 0];\n\n minX = Math.min(minX, mx);\n minY = Math.min(minY, my);\n maxX = Math.max(maxX, mx);\n maxY = Math.max(maxY, my);\n }\n if (maxX < x0 || minX > x1 || maxY < y0 || minY > y1) continue;\n\n polygonStart.push(ringStart.length);\n for (let ring = first; ring < end; ring++) {\n ringStart.push(points.length / 2);\n for (let k = rings[ring] ?? 0; k < (rings[ring + 1] ?? 0); k++) {\n points.push(\n (((merc[k * 2] ?? 0) - x0) / (x1 - x0)) * width,\n (((merc[k * 2 + 1] ?? 0) - y0) / (y1 - y0)) * height,\n );\n }\n }\n }\n }\n ringStart.push(points.length / 2);\n polygonStart.push(ringStart.length - 1);\n\n return streetFlows(\n {\n points: Float64Array.from(points),\n ringStart: Uint32Array.from(ringStart),\n polygonStart: Uint32Array.from(polygonStart),\n },\n width,\n height,\n iterations,\n module,\n );\n};\n",
21
+ "/** A vector tile drawn into an image with its style (Canvas 2D), for the raster pool */\n\nimport type { TileFeature, TileLayer } from '../../basemap/mvt.ts';\nimport { type Context, color, context, filter, isFeatureDependent } from '../../basemap/vectorstyle.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { aborted, image, paint, type Renderer, shown, source, spriteIcon, tile, value } from './tiles.ts';\n\nconst LINE_CAPS: ReadonlySet<unknown> = new Set<CanvasLineCap>(['butt', 'round', 'square']);\nconst LINE_JOINS: ReadonlySet<unknown> = new Set<CanvasLineJoin>(['bevel', 'miter', 'round']);\n\nconst isLineCap = (value: unknown): value is CanvasLineCap => LINE_CAPS.has(value);\nconst isLineJoin = (value: unknown): value is CanvasLineJoin => LINE_JOINS.has(value);\n\n/** A style's `line-cap` for the canvas: `butt` if it is none */\nconst lineCap = (value: unknown): CanvasLineCap => (isLineCap(value) ? value : 'butt');\n\n/** A style's `line-join` for the canvas: `miter` if it is none */\nconst lineJoin = (value: unknown): CanvasLineJoin => (isLineJoin(value) ? value : 'miter');\n\n/** The image of a fill pattern, cut from the sprite on first use */\nconst patternImage = (r: Renderer, name: string): OffscreenCanvas | undefined => {\n if (r.patterns.has(name)) return r.patterns.get(name);\n\n const cut = (): OffscreenCanvas | undefined => {\n const found = spriteIcon(r, name);\n\n if (!found || !(found.icon.width > 0) || !(found.icon.height > 0)) return undefined;\n\n const { icon } = found;\n const canvas = new OffscreenCanvas(icon.width, icon.height);\n\n canvas\n .getContext('2d')\n ?.drawImage(found.image, icon.x, icon.y, icon.width, icon.height, 0, 0, icon.width, icon.height);\n\n return canvas;\n };\n const image = cut();\n\n r.patterns.set(name, image);\n\n return image;\n};\n\n/** Canvases free for the next tiles, by size: one per tile being drawn at most */\nconst canvases = new Map<number, OffscreenCanvas[]>();\n\n/** A blank canvas of `size` pixels and its context, from the free ones if any */\nconst takeCanvas = (size: number): { canvas: OffscreenCanvas; g: OffscreenCanvasRenderingContext2D } => {\n const canvas = canvases.get(size)?.pop() ?? new OffscreenCanvas(size, size);\n // A canvas on the CPU: its pixels are read back here, in the worker, not on the main thread at the upload\n const g = canvas.getContext('2d', { willReadFrequently: true });\n\n if (!g) throw new Error('no 2D context');\n // The state a former tile left\n g.setTransform(1, 0, 0, 1, 0, 0);\n g.globalAlpha = 1;\n g.setLineDash([]);\n g.clearRect(0, 0, size, size);\n\n return { canvas, g };\n};\n\nconst giveCanvas = (canvas: OffscreenCanvas): void => {\n const free = canvases.get(canvas.width) ?? [];\n\n canvases.set(canvas.width, free);\n if (free.length < 4) free.push(canvas);\n};\n\n/**\n * The image of a drawn canvas, its alpha straight (the engine blends straight alpha). An opaque tile (a background\n * of full opacity, as a basemap's) is moved out of the canvas as it is, premultiplied and straight being the same\n * there; another one is read back unpremultiplied, copied\n */\nexport const tileImage = (\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n opaque: boolean,\n): Promise<ImageBitmap> => {\n if (opaque) return Promise.resolve(canvas.transferToImageBitmap());\n\n return createImageBitmap(g.getImageData(0, 0, canvas.width, canvas.height), { premultiplyAlpha: 'none' });\n};\n\nexport const render = async (\n r: Renderer,\n z: number,\n x: number,\n y: number,\n size: number,\n id: number,\n priority?: Priority,\n) => {\n const s = source(r, z, x, y);\n const layers = await tile(s.url, priority);\n\n if (aborted.has(id)) return undefined;\n\n const { canvas, g } = takeCanvas(size);\n\n try {\n return await draw(r, s, layers, canvas, g, z, x, y, size, id, priority);\n } finally {\n giveCanvas(canvas);\n }\n};\n\nconst draw = async (\n r: Renderer,\n s: ReturnType<typeof source>,\n layers: Map<string, TileLayer> | undefined,\n canvas: OffscreenCanvas,\n g: OffscreenCanvasRenderingContext2D,\n z: number,\n x: number,\n y: number,\n size: number,\n id: number,\n priority?: Priority,\n) => {\n const zoom = Math.max(0, z - 1);\n // CSS pixels to canvas pixels: the tile is 256 CSS pixels across at its zoom\n const px = size / 256;\n let drawn = false;\n /** A background of full opacity covers the tile: every pixel stays opaque */\n let opaque = false;\n\n for (const layer of r.layers) {\n if (!shown(layer, zoom)) continue;\n\n const zctx: Context = { zoom, properties: {}, type: 'Unknown' };\n\n if (layer.type === 'background') {\n const fill = value(layer, 'paint', 'background-color', zctx, '#000');\n const opacity = Number(value(layer, 'paint', 'background-opacity', zctx, 1));\n\n g.fillStyle = paint(fill, opacity);\n g.fillRect(0, 0, size, size);\n if ((color(fill) ?? [0, 0, 0, 1])[3] * opacity >= 1) opaque = true;\n drawn = true;\n continue;\n }\n if (layer.type === 'raster') {\n const source = layer.source === undefined ? undefined : r.rasters[layer.source];\n\n if (!source) continue;\n\n // The canvas covers the Web Mercator tile (z, x, y): a source tile of 512 px covers it from a level coarser\n const rz = Math.max(0, Math.min(z - (source.tileSize >= 512 ? 1 : 0), source.maxzoom));\n const n = 2 ** (z - rz);\n const url = source.tiles\n .replace('{z}', String(rz))\n .replace('{x}', String(Math.floor(x / n)))\n .replace('{y}', String(Math.floor(y / n)));\n // None there (404, 204): drawn without it; any other failure fails the tile, which the engine asks for again\n // rather than keeping it without this layer\n const picture = await image(url, priority);\n\n if (aborted.has(id)) return undefined;\n if (!picture) continue;\n\n const [w, h] = [picture.width / n, picture.height / n];\n\n g.globalAlpha = Number(value(layer, 'paint', 'raster-opacity', zctx, 1));\n g.drawImage(picture, (x % n) * w, (y % n) * h, w, h, 0, 0, size, size);\n g.globalAlpha = 1;\n drawn = true;\n continue;\n }\n\n const data = layers?.get(layer['source-layer'] ?? '');\n\n if (!data) continue;\n\n // Tile units to canvas pixels\n const k = size / (data.extent * s.part);\n const [ox, oy] = [s.ox * data.extent, s.oy * data.extent];\n const path = (f: TileFeature, close: boolean) => {\n g.beginPath();\n for (const line of f.geometry) {\n for (let i = 0; i + 1 < line.length; i += 2) {\n const [lx, ly] = [((line[i] ?? 0) - ox) * k, ((line[i + 1] ?? 0) - oy) * k];\n\n if (i === 0) g.moveTo(lx, ly);\n else g.lineTo(lx, ly);\n }\n if (close) g.closePath();\n }\n };\n // Values that only depend on the zoom are evaluated once for the layer\n const dependent = new Map<string, boolean>();\n const get = (group: 'paint' | 'layout', key: string, ctx: Context, fallback: unknown) => {\n const known = dependent.get(key);\n const d = known ?? isFeatureDependent(layer[group]?.[key]);\n\n if (known === undefined) dependent.set(key, d);\n\n return value(layer, group, key, d ? ctx : zctx, fallback);\n };\n\n for (const f of data.features) {\n const ctx = context(f, zoom);\n\n if (!filter(layer.filter, ctx)) continue;\n if (layer.type === 'fill-extrusion' && f.type === 3) {\n // Flat, seen from above: its color\n path(f, true);\n g.fillStyle = paint(\n get('paint', 'fill-extrusion-color', ctx, '#000'),\n Number(get('paint', 'fill-extrusion-opacity', ctx, 1)),\n );\n g.fill('evenodd');\n drawn = true;\n } else if (layer.type === 'fill' && f.type === 3) {\n const opacity = Number(get('paint', 'fill-opacity', ctx, 1));\n const pattern = get('paint', 'fill-pattern', ctx, undefined);\n\n path(f, true);\n\n const icon = typeof pattern === 'string' ? spriteIcon(r, pattern)?.icon : undefined;\n const image = icon && typeof pattern === 'string' && patternImage(r, pattern);\n\n if (icon && image) {\n const p = g.createPattern(image, 'repeat');\n\n if (p) {\n p.setTransform(new DOMMatrix().scale(px / (icon.pixelRatio ?? 1)));\n g.globalAlpha = opacity;\n g.fillStyle = p;\n g.fill('evenodd');\n g.globalAlpha = 1;\n }\n } else {\n g.fillStyle = paint(get('paint', 'fill-color', ctx, '#000'), opacity);\n g.fill('evenodd');\n\n const outline = get('paint', 'fill-outline-color', ctx, undefined);\n\n if (outline !== undefined) {\n g.strokeStyle = paint(outline, opacity);\n g.lineWidth = px;\n g.setLineDash([]);\n g.stroke();\n }\n }\n drawn = true;\n } else if (layer.type === 'line' && f.type !== 1) {\n const width = Number(get('paint', 'line-width', ctx, 1));\n\n if (width <= 0) continue;\n\n // A gap: two lines on either side of it, drawn as one wide line (the casing of a road, its inside drawn over)\n const gap = Number(get('paint', 'line-gap-width', ctx, 0));\n\n g.strokeStyle = paint(get('paint', 'line-color', ctx, '#000'), Number(get('paint', 'line-opacity', ctx, 1)));\n g.lineWidth = (gap > 0 ? gap + 2 * width : width) * px;\n g.lineCap = lineCap(get('layout', 'line-cap', ctx, 'butt'));\n g.lineJoin = lineJoin(get('layout', 'line-join', ctx, 'miter'));\n\n const dash = get('paint', 'line-dasharray', ctx, undefined);\n\n g.setLineDash(Array.isArray(dash) ? dash.map((d) => Number(d) * width * px) : []);\n path(f, f.type === 3);\n g.stroke();\n drawn = true;\n } else if (layer.type === 'circle' && f.type === 1) {\n const radius = Number(get('paint', 'circle-radius', ctx, 5)) * px;\n\n g.fillStyle = paint(get('paint', 'circle-color', ctx, '#000'), Number(get('paint', 'circle-opacity', ctx, 1)));\n\n const stroke = Number(get('paint', 'circle-stroke-width', ctx, 0)) * px;\n\n g.strokeStyle = paint(\n get('paint', 'circle-stroke-color', ctx, '#000'),\n Number(get('paint', 'circle-stroke-opacity', ctx, 1)),\n );\n g.lineWidth = stroke;\n for (const point of f.geometry) {\n for (let i = 0; i + 1 < point.length; i += 2) {\n g.beginPath();\n g.arc(((point[i] ?? 0) - ox) * k, ((point[i + 1] ?? 0) - oy) * k, radius, 0, 2 * Math.PI);\n g.fill();\n if (stroke > 0) g.stroke();\n }\n }\n drawn = true;\n }\n }\n }\n if (!drawn && !layers) return null;\n\n return tileImage(canvas, g, opaque);\n};\n",
22
+ "/** The wind of a city's streets: the buildings of the vector tiles around a square, laid on its grid of cells, and\n * the flow round them for a wind towards the east and one towards the north (the grid module) */\n\nimport { type StreetFlows, streetFlows } from '../../grid-module.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { polygons } from './geometry.ts';\nimport { aborted, type Renderer } from './tiles.ts';\n\n/** What a street flow is asked with: its square (Mercator: west, north, east, south) and grid, the tiles of level `z`\n * over it (x, y pairs), the sweeps, the grid module's URL */\nexport interface StreetWork {\n module: string;\n z: number;\n tiles: number[];\n bounds: [x0: number, y0: number, x1: number, y1: number];\n width: number;\n height: number;\n iterations: number;\n priority?: Priority;\n}\n\n/** The streets' flows of a square: the buildings of its tiles in cells (those away from it left out), then solved */\nexport const streetFlowOf = async (r: Renderer, work: StreetWork, id: number): Promise<StreetFlows> => {\n const { z, tiles, bounds, width, height, iterations, module, priority } = work;\n const [x0, y0, x1, y1] = bounds;\n const points: number[] = [];\n const ringStart: number[] = [];\n const polygonStart: number[] = [];\n\n const n = 2 ** z;\n\n for (let t = 0; t + 1 < tiles.length; t += 2) {\n // A column past the antimeridian (the square across it): the tile of the world's other side, a turn away\n const column = tiles[t] ?? 0;\n const wrapped = ((column % n) + n) % n;\n const turn = (column - wrapped) / n;\n const tile = await polygons(r, z, wrapped, tiles[t + 1] ?? 0, id, priority);\n\n // A square no longer wanted (the view went on): not solved, its worker free for the tiles\n if (aborted.has(id)) throw new Error('aborted');\n if (!tile) continue;\n\n const { points: merc, ringStart: rings, polygonStart: starts } = tile.arrays;\n\n for (let p = 0; p + 1 < starts.length; p++) {\n const [first, end] = [starts[p] ?? 0, starts[p + 1] ?? 0];\n const from = rings[first] ?? 0;\n const to = rings[end] ?? 0;\n // Its points' bounds in Mercator: away from the square, left out\n let [minX, minY, maxX, maxY] = [Infinity, Infinity, -Infinity, -Infinity];\n\n for (let k = from; k < to; k++) {\n const [mx, my] = [(merc[k * 2] ?? 0) + turn, merc[k * 2 + 1] ?? 0];\n\n minX = Math.min(minX, mx);\n minY = Math.min(minY, my);\n maxX = Math.max(maxX, mx);\n maxY = Math.max(maxY, my);\n }\n if (maxX < x0 || minX > x1 || maxY < y0 || minY > y1) continue;\n\n polygonStart.push(ringStart.length);\n for (let ring = first; ring < end; ring++) {\n ringStart.push(points.length / 2);\n for (let k = rings[ring] ?? 0; k < (rings[ring + 1] ?? 0); k++) {\n points.push(\n (((merc[k * 2] ?? 0) + turn - x0) / (x1 - x0)) * width,\n (((merc[k * 2 + 1] ?? 0) - y0) / (y1 - y0)) * height,\n );\n }\n }\n }\n }\n ringStart.push(points.length / 2);\n polygonStart.push(ringStart.length - 1);\n\n return streetFlows(\n {\n points: Float64Array.from(points),\n ringStart: Uint32Array.from(ringStart),\n polygonStart: Uint32Array.from(polygonStart),\n },\n width,\n height,\n iterations,\n module,\n );\n};\n",
23
23
  "/**\n * The trees of a vector map (`VectorTiles.trees`): a low-poly tree made here as a glTF binary (no file to download),\n * its trunk and its crown flat-shaded in their colors, and the style layers they grow on by default.\n */\n\nimport type { StyleLayer } from './vectorstyle.ts';\n\n/** Numbers of a tree in the workers' answer: longitude, latitude, scale, heading, rank */\nexport const TREE_NUMBERS = 5;\n\n/** A point or a vector: x, y, z */\ntype Vec3 = [number, number, number];\n\n/** Sides of the trunk and of the crown */\nconst SIDES = 7;\n\n/** Colors of the trunk and of the crown (linear RGBA, as glTF's `baseColorFactor`) */\nexport interface TreeColors {\n trunk: [number, number, number, number];\n crown: [number, number, number, number];\n}\n\nconst DEFAULT_COLORS: TreeColors = {\n trunk: [0.2, 0.12, 0.07, 1],\n crown: [0.12, 0.27, 0.08, 1],\n};\n\n/** A solid of revolution around the vertical (glTF +Y up), flat-shaded: rings of (height, radius), a point at the\n * top when its radius is 0; the triangles' positions and normals, one normal per face */\nconst revolve = (rings: [height: number, radius: number][]): { positions: number[]; normals: number[] } => {\n const at = (k: number, [h, r]: [number, number]): Vec3 => {\n const a = (k / SIDES) * Math.PI * 2;\n\n return [Math.cos(a) * r, h, Math.sin(a) * r];\n };\n const positions: number[] = [];\n const normals: number[] = [];\n const face = (a: Vec3, b: Vec3, c: Vec3) => {\n const u: Vec3 = [b[0] - a[0], b[1] - a[1], b[2] - a[2]];\n const v: Vec3 = [c[0] - a[0], c[1] - a[1], c[2] - a[2]];\n const n: Vec3 = [u[1] * v[2] - u[2] * v[1], u[2] * v[0] - u[0] * v[2], u[0] * v[1] - u[1] * v[0]];\n const length = Math.hypot(...n);\n\n // A degenerate face (two points at the apex) is left out\n if (length === 0) return;\n positions.push(...a, ...b, ...c);\n [0, 1, 2].forEach(() => {\n normals.push(n[0] / length, n[1] / length, n[2] / length);\n });\n };\n\n rings.slice(1).forEach((ring, i) => {\n const below = rings[i] ?? ring;\n\n Array.from({ length: SIDES }, (_, k) => k).forEach((k) => {\n const [a, b] = [at(k, below), at(k + 1, below)];\n const [c, d] = [at(k, ring), at(k + 1, ring)];\n\n // Counter-clockwise seen from outside\n face(a, c, b);\n face(b, c, d);\n });\n });\n // The bottom closed: seen from below\n const base = rings[0];\n\n if (base && base[1] > 0) {\n Array.from({ length: SIDES }, (_, k) => k).forEach((k) => {\n face([0, base[0], 0], at(k, base), at(k + 1, base));\n });\n }\n\n return { positions, normals };\n};\n\n/** Lowest and highest of interleaved x, y, z (glTF needs them on positions) */\nconst bounds = (xyz: number[]): { min: number[]; max: number[] } => {\n const axes = [0, 1, 2].map((a) => xyz.filter((_, i) => i % 3 === a));\n\n return { min: axes.map((v) => Math.min(...v)), max: axes.map((v) => Math.max(...v)) };\n};\n\n/**\n * A tree as a glTF binary, about 10 metres high: a trunk and a rounded crown in `colors`, one mesh of two primitives,\n * its front +Z (`ModelInstance.heading` turns it), standing on its origin\n */\nexport const treeModel = (colors: Partial<TreeColors> = {}): Uint8Array<ArrayBuffer> => {\n const { trunk, crown } = { ...DEFAULT_COLORS, ...colors };\n const parts = [\n revolve([\n [0, 0.28],\n [3.2, 0.2],\n ]),\n revolve([\n [2.4, 0.6],\n [3.6, 2.4],\n [5.6, 2.9],\n [7.8, 2.3],\n [9.4, 1.1],\n [10.2, 0],\n ]),\n ];\n // The buffer: each part's positions then normals, 4-byte floats\n const floats = parts.flatMap((p) => [...p.positions, ...p.normals]);\n const bin = new Float32Array(floats);\n const views = parts.flatMap((p, i) => {\n const before = parts.slice(0, i).reduce((n, q) => n + (q.positions.length + q.normals.length) * 4, 0);\n\n return [\n { buffer: 0, byteOffset: before, byteLength: p.positions.length * 4, target: 34962 },\n { buffer: 0, byteOffset: before + p.positions.length * 4, byteLength: p.normals.length * 4, target: 34962 },\n ];\n });\n const accessors = parts.flatMap((p, i) => [\n { bufferView: i * 2, componentType: 5126, count: p.positions.length / 3, type: 'VEC3', ...bounds(p.positions) },\n { bufferView: i * 2 + 1, componentType: 5126, count: p.normals.length / 3, type: 'VEC3' },\n ]);\n const gltf = {\n asset: { version: '2.0', generator: 'isard' },\n scene: 0,\n scenes: [{ nodes: [0] }],\n nodes: [{ mesh: 0 }],\n meshes: [\n {\n primitives: parts.map((_, i) => ({ attributes: { POSITION: i * 2, NORMAL: i * 2 + 1 }, material: i })),\n },\n ],\n materials: [trunk, crown].map((color) => ({\n pbrMetallicRoughness: { baseColorFactor: color, metallicFactor: 0, roughnessFactor: 1 },\n })),\n accessors,\n bufferViews: views,\n buffers: [{ byteLength: bin.byteLength }],\n };\n // The chunks padded to 4 bytes: the JSON with spaces, the binary with zeros\n const json = new TextEncoder().encode(JSON.stringify(gltf));\n const jsonLength = Math.ceil(json.length / 4) * 4;\n const binLength = Math.ceil(bin.byteLength / 4) * 4;\n const out = new Uint8Array(12 + 8 + jsonLength + 8 + binLength);\n const view = new DataView(out.buffer);\n\n view.setUint32(0, 0x46546c67, true);\n view.setUint32(4, 2, true);\n view.setUint32(8, out.length, true);\n view.setUint32(12, jsonLength, true);\n view.setUint32(16, 0x4e4f534a, true);\n out.fill(0x20, 20, 20 + jsonLength);\n out.set(json, 20);\n view.setUint32(20 + jsonLength, binLength, true);\n view.setUint32(24 + jsonLength, 0x004e4942, true);\n out.set(new Uint8Array(bin.buffer), 28 + jsonLength);\n\n return out;\n};\n\n/** Whether a style layer is OpenMapTiles' grass (the lawns of parks and gardens among it) */\nconst isGrass = (layer: StyleLayer): boolean => layer['source-layer'] === 'landcover' && /grass/i.test(layer.id);\n\n/**\n * Whether trees grow on a style layer by default: the woods and forests of the style's fills (OpenMapTiles'\n * `landcover` wood, PLAN IGN's forests) and the grass of its parks and gardens; not the wooded relief of PLAN IGN,\n * which repeats its forests, nor OpenMapTiles' `park` layer (protected areas and historic sites: a river's banks\n * among them)\n */\nexport const isWoodland = (layer: StyleLayer): boolean =>\n layer.type === 'fill' &&\n layer['source-layer'] !== 'oro_relief' &&\n (/wood|forest|for[eê]t/i.test(layer.id) || isGrass(layer));\n\n/** Default spacing of the trees of a layer (metres): close in woods and forests, apart on grass */\nexport const treeSpacing = (layer: StyleLayer): number => (isGrass(layer) ? 25 : 9);\n",
24
24
  "/** The trees of a tile: points scattered over the woods of its polygons, the same each time the tile is cut */\n\nimport { TREE_NUMBERS } from '../../basemap/trees.ts';\nimport { context, filter } from '../../basemap/vectorstyle.ts';\nimport { latitude } from '../../util/geo.ts';\nimport type { Priority } from '../basemap.worker.ts';\nimport { aborted, lonLat, type Renderer, tile } from './tiles.ts';\n\n/** A number in [0, 1) from four integers, the same for the same ones: where a tree stands in its cell, its size */\nexport const treeHash = (a: number, b: number, c: number, d: number): number => {\n let h = Math.imul(a ^ 0x9e3779b9, 0x85ebca6b) ^ Math.imul(b ^ 0xc2b2ae35, 0x27d4eb2f);\n\n h = Math.imul(h ^ (h >>> 15) ^ Math.imul(c, 0x165667b1), 0x2c1b3c6d);\n h = Math.imul(h ^ (h >>> 13) ^ Math.imul(d, 0x297a2d39), 0x297a2d39);\n\n return ((h ^ (h >>> 16)) >>> 0) / 2 ** 32;\n};\n\n/** Whether a point lies in rings (interleaved points, unclosed or closed), even-odd: the holes cut out */\nexport const inRings = (rings: readonly (readonly number[])[], px: number, py: number): boolean =>\n rings.reduce((inside, ring) => {\n const n = ring.length / 2;\n let crossings = 0;\n\n for (let i = 0, j = n - 1; i < n; j = i, i += 1) {\n const [xi, yi, xj, yj] = [ring[i * 2] ?? 0, ring[i * 2 + 1] ?? 0, ring[j * 2] ?? 0, ring[j * 2 + 1] ?? 0];\n\n if (yi > py !== yj > py && px < ((xj - xi) * (py - yi)) / (yj - yi) + xi) crossings += 1;\n }\n\n return crossings % 2 === 1 ? !inside : inside;\n }, false);\n\n/**\n * Points scattered over a polygon (its rings, tile units) on a jittered grid of `cell` tile units, the grid and the\n * jitter fixed by the tile (`seed`): the same trees whenever the tile is cut again, none twice across tiles (the points\n * past the tile's edge left to its neighbour). Past `maxCells` cells over the polygon (a tile of a coarse level), the\n * cells grow until they are no more. Each point with a number in [0, 1) for its size and heading\n */\nexport const scatter = (\n rings: readonly (readonly number[])[],\n extent: number,\n spacing: number,\n seed: [number, number, number],\n maxCells = Number.POSITIVE_INFINITY,\n): [x: number, y: number, k: number][] => {\n const outer = rings[0] ?? [];\n // The bounds of the outer ring (a loop: a spread of a ring of many points would overflow the call stack)\n const bounds = [\n Number.POSITIVE_INFINITY,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ];\n\n for (let i = 0; i + 1 < outer.length; i += 2) {\n const [x, y] = [outer[i] ?? 0, outer[i + 1] ?? 0];\n\n bounds[0] = Math.min(bounds[0] ?? x, x);\n bounds[1] = Math.min(bounds[1] ?? y, y);\n bounds[2] = Math.max(bounds[2] ?? x, x);\n bounds[3] = Math.max(bounds[3] ?? y, y);\n }\n\n const [x0, y0] = [Math.max(0, bounds[0] ?? 0), Math.max(0, bounds[1] ?? 0)];\n const [x1, y1] = [Math.min(extent, bounds[2] ?? 0), Math.min(extent, bounds[3] ?? 0)];\n\n if (!(spacing > 0) || x0 >= x1 || y0 >= y1) return [];\n\n const cells = ((x1 - x0) / spacing) * ((y1 - y0) / spacing);\n const cell = cells > maxCells ? spacing * Math.sqrt(cells / maxCells) : spacing;\n const [cx0, cx1, cy0, cy1] = [\n Math.floor(x0 / cell),\n Math.ceil(x1 / cell),\n Math.floor(y0 / cell),\n Math.ceil(y1 / cell),\n ];\n const [z, x, y] = seed;\n const tileSeed = Math.imul(z + 1, 0x01000193) ^ Math.imul(x, 0x5bd1e995) ^ Math.imul(y, 0x1b873593);\n\n return Array.from({ length: Math.max(0, cy1 - cy0) }, (_, j) => cy0 + j).flatMap((cy) =>\n Array.from({ length: Math.max(0, cx1 - cx0) }, (_, i) => cx0 + i).flatMap((cx): [number, number, number][] => {\n const px = (cx + treeHash(tileSeed, cx, cy, 1)) * cell;\n const py = (cy + treeHash(tileSeed, cx, cy, 2)) * cell;\n\n if (px < 0 || py < 0 || px >= extent || py >= extent || !inRings(rings, px, py)) return [];\n\n return [[px, py, treeHash(tileSeed, cx, cy, 3)]];\n }),\n );\n};\n\n/**\n * Trees over the polygons of the renderer's layers in a tile: longitude, latitude, scale (0.75 to 1.25), heading\n * (degrees) and rank (in [0, 1): the page keeps the lowest far from the view) of each, `spacing[s]` metres apart in layer `s` on a jittered grid; past `maxTrees`, thinned evenly\n */\nexport const trees = async (\n r: Renderer,\n z: number,\n x: number,\n y: number,\n id: number,\n spacing: number[],\n maxTrees: number,\n priority?: Priority,\n) => {\n const url = r.tiles.replace('{z}', String(z)).replace('{x}', String(x)).replace('{y}', String(y));\n const layers = await tile(url, priority);\n\n if (!layers || aborted.has(id)) return undefined;\n\n // Metres across the tile at its middle: the cells in tile units\n const tileMetres = (40075016.686 * Math.cos((latitude((y + 0.5) / 2 ** z) * Math.PI) / 180)) / 2 ** z;\n const found: [x: number, y: number, k: number, extent: number][] = [];\n\n r.layers.forEach((layer, s) => {\n const metres = spacing[s] ?? 0;\n const data = layers.get(layer['source-layer'] ?? '');\n\n if (!data || !(metres > 0)) return;\n\n const cell = (metres / tileMetres) * data.extent;\n\n data.features.forEach((f) => {\n if (f.type !== 3 || !filter(layer.filter, context(f, z))) return;\n\n // Its polygons: an outline (clockwise on screen) and the holes after it\n const polygons = f.geometry.reduce<number[][][]>((list, ring) => {\n let area = 0;\n\n for (let i = 0; i + 1 < ring.length; i += 2) {\n const j = (i + 2) % ring.length;\n\n area += (ring[i] ?? 0) * (ring[j + 1] ?? 0) - (ring[j] ?? 0) * (ring[i + 1] ?? 0);\n }\n if (area > 0) list.push([ring]);\n else if (area < 0) list.at(-1)?.push(ring);\n\n return list;\n }, []);\n\n polygons.forEach((rings) => {\n scatter(rings, data.extent, cell, [z, x, y], maxTrees * 4).forEach(([px, py, k]) => {\n found.push([px, py, k, data.extent]);\n });\n });\n });\n });\n\n // Too many: one in so many kept, the same ones each time\n const keep = found.length > maxTrees ? maxTrees / found.length : 1;\n const kept = found.filter(([, , k]) => keep >= 1 || treeHash(Math.floor(k * 2 ** 31), z, x, y) < keep);\n const out = new Float64Array(kept.length * TREE_NUMBERS);\n\n kept.forEach(([px, py, k, extent], i) => {\n const [lon, lat] = lonLat(z, x, y, extent, px, py);\n const rank = treeHash(Math.floor(k * 2 ** 31), 7, 11, 13);\n\n out.set([lon, lat, 0.75 + 0.5 * k, (k * 7919) % 360, rank], i * TREE_NUMBERS);\n });\n\n return out;\n};\n",
25
25
  "/**\n * Worker of the vector basemaps: fetches and decodes vector tiles (kept for the tiles that share them), draws their\n * fills, lines and circles with a MapLibre style into images (Canvas 2D, off the main thread) for the raster pool,\n * with the style's raster layers under them, and lists the label candidates of the style's symbol layers (their texts\n * and icons) for the page to shape and place. Extrusions are drawn flat, as fills. Or it cuts the fills, lines and\n * buildings of a tile into geometry for the engine to draw as such (`vectors`), with their style per feature (a\n * building's color, height and base height). It also decodes the\n * altitudes of PNG relief tiles and draws the rasters reprojected from other grids (planned by the page), for the\n * map's other layers.\n *\n * A raster tile of level z covers 256 CSS pixels at map zoom z - 1 (MapLibre's 512 px convention): it is drawn from\n * the vector tile of level z - 1 (or the deepest one the source has), with the style at that zoom.\n *\n * This module answers the page's messages; the jobs are in `./basemap/`: the state they share (`tiles.ts`), the\n * images (`raster.ts`), the labels (`labels.ts`), the geometry (`geometry.ts`), the trees (`trees.ts`).\n */\n\nimport type { Value } from '../basemap/mvt.ts';\nimport { type Job, resampler } from '../basemap/resample.ts';\nimport { fetchHeights, type PngEncoding, type Surface } from '../basemap/terrain.ts';\nimport { type LabelCandidate, type RasterSource, type StyleLayer, vectorKind } from '../basemap/vectorstyle.ts';\nimport { type HeaderRules, setHeaderRules, withHeaders } from '../engine/requests.ts';\nimport { decodeGrids, type GridDescription, type StreetFlows } from '../grid-module.ts';\nimport { polygons, tess, tessellate, tessellator, vectors } from './basemap/geometry.ts';\nimport { labels } from './basemap/labels.ts';\nimport { render } from './basemap/raster.ts';\nimport { type StreetWork, streetFlowOf } from './basemap/street.ts';\nimport { aborted, active, cache, cacheShare, renderers, type Sprite } from './basemap/tiles.ts';\nimport { trees } from './basemap/trees.ts';\n\nexport type { LabelCandidate, RasterSource, Sprite };\n\n/** Fetch priority of a request (`fetch`'s `priority`, a hint to the browser) */\nexport type Priority = 'high' | 'low' | 'auto';\n\n/** A tile's image or labels, asked of a worker; or a tile of another layer decoded: the altitudes of a PNG relief\n * tile, a Mercator tile reprojected from the source images of its plan (keeping `cached` of them) */\nexport type BasemapWork =\n | { type: 'render'; key: string; z: number; x: number; y: number; size: number; priority?: Priority }\n /** `zoom`: the zoom the style is evaluated at, past the source's deepest level (`z` by default) */\n | { type: 'labels'; key: string; z: number; x: number; y: number; zoom?: number; priority?: Priority }\n /** The polygons of the renderer's layers (buildings), for extrusions */\n | { type: 'polygons'; key: string; z: number; x: number; y: number; priority?: Priority }\n /** Trees scattered over the polygons of the renderer's layers, `spacing[s]` metres apart in layer `s` (0: none), at\n * most `maxTrees` */\n | {\n type: 'trees';\n key: string;\n z: number;\n x: number;\n y: number;\n spacing: number[];\n maxTrees: number;\n priority?: Priority;\n }\n /** The fills and lines of the renderer's layers cut to the tile, for the engine to draw as geometry; `styles`: their\n * style only, the layers' paint changed (the same features, in the same order). A tile past the source's deepest\n * level is cut from its tile of that level (overzoom); `deepest`, the deepest level asked for (default the\n * source's), is styled past itself, as the map stretches it */\n | {\n type: 'vectors';\n key: string;\n z: number;\n x: number;\n y: number;\n deepest?: number;\n styles?: boolean;\n /** With the prisms of the fills (a relief under them) */\n prism?: boolean;\n priority?: Priority;\n }\n | { type: 'heights'; url: string; encoding: PngEncoding; floor?: number }\n /** The wind of a city's streets round the buildings of the renderer's layers (see `StreetWork`) */\n | ({ type: 'street'; key: string } & StreetWork)\n /** A GRIB2 or NetCDF file (fetched from `url`, or its `bytes`) read into grids by the grid module (`module`) */\n | { type: 'grids'; module: string; url?: string; bytes?: ArrayBuffer }\n | { type: 'reproject'; job: Job; cached: number };\n\nexport type BasemapRequest =\n /** The page's request headers (`setRequestHeaders`) */\n | { type: 'headers'; rules: HeaderRules }\n /** Where the tessellation module is (`isard_tess_bg.wasm`), loaded with the first `vectors` job */\n | { type: 'tess'; url: string }\n | {\n type: 'init';\n /** Renderers by key: each draws its own layers of the same source */\n key: string;\n tiles: string;\n maxzoom: number;\n layers: StyleLayer[];\n /** The style's raster sources, by name, for its raster layers */\n rasters?: Record<string, RasterSource>;\n /** The style's sprites, for the fill patterns (loaded once by the page) */\n sprites?: Sprite[];\n /** Workers of the pool: each keeps its share of the decoded tiles */\n workers?: number;\n }\n | (BasemapWork & { id: number })\n | { type: 'abort'; id: number }\n /** A renderer no longer used: forgotten */\n | { type: 'drop'; key: string };\n\nexport type BasemapResponse =\n | { id: number; image: ImageBitmap }\n | { id: number; missing: true }\n | { id: number; error: string }\n | { id: number; labels: LabelCandidate[] }\n | { id: number; polygons: TilePolygons }\n | { id: number; trees: Float64Array }\n | { id: number; vectors: TileVectors }\n | { id: number; styles: Float32Array }\n | { id: number; heights: Float32Array }\n | { id: number; grids: GridDescription[]; values: Float32Array[] }\n | { id: number; street: StreetFlows };\n\n/** The polygons of a tile in Mercator [0, 1], as the extrusions take them (`PolygonArrays`), and their properties */\nexport interface TilePolygons {\n arrays: {\n points: Float64Array;\n ringStart: Uint32Array;\n polygonStart: Uint32Array;\n feature: Uint32Array;\n };\n properties: Record<string, Value>[];\n}\n\n/**\n * The geometry of a vector tile for the engine (`setVectorTile`), in Mercator [0, 1], cut to the tile: a styled\n * feature is a feature of the tile in one of the renderer's layers (the sublayers, in their order), numbered layer\n * after layer. The polygons and lines of sublayer `s` are `fillStart[s] .. fillStart[s + 1]` and `lineStart[s] ..\n * lineStart[s + 1]` (one more entry than the renderer's layers)\n */\nexport interface TileVectors {\n fills: {\n points: Float64Array;\n ringStart: Uint32Array;\n polygonStart: Uint32Array;\n feature: Uint32Array;\n fillStart: Uint32Array;\n };\n lines: { points: Float64Array; start: Uint32Array; feature: Uint32Array; lineStart: Uint32Array };\n /** The style of each styled feature, `FLOATS` (32) each, as the engine's line layers take it */\n styles: Float32Array;\n /** The tile's corners (west, north, east, south, Mercator): no wall of a building along its edges, where one cut\n * there goes on in the next tile */\n tile?: Float64Array;\n /** Its feature's properties (shared by the styled features of one feature) and its sublayer */\n properties: Record<string, Value>[];\n sublayer: Uint16Array;\n /** The geometry made ready for the GPU by the tessellation module (the engine's `setVectorTileMesh`); without it,\n * the engine does that on the main thread */\n mesh?: TileMesh;\n}\n\n/** A vector tile ready for the GPU, as the tessellation module makes it (`TessellatedTile`) */\nexport interface TileMesh {\n /** Fill vertices, as bytes */\n vertices: Uint8Array;\n indices: Uint32Array;\n /** Per sublayer: its top cap and the rest of its prism, first and end of each */\n fillRanges: Uint32Array;\n prism: boolean;\n /** Line pieces, as bytes */\n pieces: Uint8Array;\n /** Feature and length of each line */\n lineTable: Float32Array;\n /** Per sublayer: its pieces, first and end */\n lineRanges: Uint32Array;\n /** Blocks of the extrusion sublayers (buildings), as bytes */\n blocks: Uint8Array;\n blockIndices: Uint32Array;\n /** Per sublayer: its blocks' triangles, first and end */\n blockRanges: Uint32Array;\n /** Min x, min y, max x, max y of the tile's points */\n bounds: Float64Array;\n}\n\n/** The signals of the relief and reprojection requests in progress, aborted with them */\nconst controllers = new Map<number, AbortController>();\n\n/** Where this worker reads the colors of the relief tiles back */\nconst heightsSurface: Surface = {};\n\n/** The reprojected rasters' source images this worker keeps, shared by every source */\nconst reprojection = resampler();\n\nconst post = (message: BasemapResponse, transfer: Transferable[] = []) =>\n (self as unknown as Worker).postMessage(message, transfer);\n\nself.onmessage = async ({ data }: MessageEvent<BasemapRequest>) => {\n if (data.type === 'headers') {\n setHeaderRules(data.rules);\n\n return;\n }\n if (data.type === 'tess') {\n tess.url = data.url;\n\n return;\n }\n if (data.type === 'init') {\n if (data.workers !== undefined) cache.capacity = cacheShare(data.workers);\n renderers.set(data.key, {\n tiles: data.tiles,\n maxzoom: data.maxzoom,\n layers: data.layers,\n rasters: data.rasters ?? {},\n sprites: data.sprites ?? [],\n patterns: new Map(),\n });\n\n return;\n }\n if (data.type === 'drop') {\n // Its copy of the sprites\n renderers.get(data.key)?.sprites.forEach((sprite) => {\n sprite.image.close();\n });\n renderers.delete(data.key);\n\n return;\n }\n if (data.type === 'abort') {\n // An abort that arrives after the answer is ignored\n if (active.has(data.id)) aborted.add(data.id);\n controllers.get(data.id)?.abort();\n\n return;\n }\n if (data.type === 'heights' || data.type === 'reproject' || data.type === 'grids') {\n await decodeTile(data);\n\n return;\n }\n active.add(data.id);\n\n const r = renderers.get(data.key);\n\n try {\n if (!r) throw new Error(`no renderer ${data.key}`);\n if (data.type === 'render') {\n const image = await render(r, data.z, data.x, data.y, data.size, data.id, data.priority);\n\n if (image) post({ id: data.id, image }, [image]);\n else post({ id: data.id, missing: true });\n } else if (data.type === 'trees') {\n const out = await trees(r, data.z, data.x, data.y, data.id, data.spacing, data.maxTrees, data.priority);\n\n if (!out) post({ id: data.id, missing: true });\n else post({ id: data.id, trees: out }, [out.buffer]);\n } else if (data.type === 'street') {\n const street = await streetFlowOf(r, data, data.id);\n\n post(\n { id: data.id, street },\n [street.eastU, street.eastV, street.northU, street.northV].map((a) => a.buffer),\n );\n } else if (data.type === 'polygons') {\n const tilePolygons = await polygons(r, data.z, data.x, data.y, data.id, data.priority);\n\n if (!tilePolygons) post({ id: data.id, missing: true });\n else {\n const { points, ringStart, polygonStart, feature } = tilePolygons.arrays;\n\n post({ id: data.id, polygons: tilePolygons }, [\n points.buffer,\n ringStart.buffer,\n polygonStart.buffer,\n feature.buffer,\n ]);\n }\n } else if (data.type === 'vectors') {\n const out = await vectors(r, data, data.id, data.styles === true, data.priority);\n\n if (!out) post({ id: data.id, missing: true });\n else if (out instanceof Float32Array) post({ id: data.id, styles: out }, [out.buffer]);\n else {\n const raised = Uint8Array.from(r.layers, (l) => (vectorKind(l) === 'extrusion' ? 1 : 0));\n const mesh = (await tessellator()) ? tessellate(out, raised, data.prism === true) : undefined;\n const { fills, lines } = out;\n\n post({ id: data.id, vectors: mesh ? { ...out, mesh } : out }, [\n ...[fills.points, fills.ringStart, fills.polygonStart, fills.feature, fills.fillStart].map((a) => a.buffer),\n ...[lines.points, lines.start, lines.feature, lines.lineStart].map((a) => a.buffer),\n out.styles.buffer,\n out.sublayer.buffer,\n ...(mesh\n ? [\n mesh.vertices,\n mesh.indices,\n mesh.fillRanges,\n mesh.pieces,\n mesh.lineTable,\n mesh.lineRanges,\n mesh.blocks,\n mesh.blockIndices,\n mesh.blockRanges,\n mesh.bounds,\n ]\n : []\n ).map((a) => a.buffer),\n ]);\n }\n } else {\n post({ id: data.id, labels: await labels(r, data.z, data.x, data.y, data.id, data.priority, data.zoom) });\n }\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n active.delete(data.id);\n aborted.delete(data.id);\n }\n};\n\n/** A file's bytes, with the page's request headers */\nconst fetchBytes = async (url: string, signal: AbortSignal): Promise<ArrayBuffer> => {\n const response = await fetch(url, withHeaders(url, { signal }));\n\n if (!response.ok) throw new Error(`${url}: ${response.status}`);\n\n return response.arrayBuffer();\n};\n\n/** A tile of another layer: the altitudes of a relief tile, or a reprojected raster tile; or a file's grids */\nconst decodeTile = async (data: Extract<BasemapWork, { type: 'heights' | 'reproject' | 'grids' }> & { id: number }) => {\n const controller = new AbortController();\n\n controllers.set(data.id, controller);\n try {\n if (data.type === 'grids') {\n const { module, url, bytes } = data;\n const file = bytes ?? (url ? await fetchBytes(url, controller.signal) : new ArrayBuffer(0));\n const { grids, values } = await decodeGrids(new Uint8Array(file), module);\n\n post(\n { id: data.id, grids, values },\n values.map((v) => v.buffer),\n );\n } else if (data.type === 'heights') {\n const heights = await fetchHeights(data.url, data.encoding, data.floor, controller.signal, heightsSurface);\n\n if (heights) post({ id: data.id, heights }, [heights.buffer]);\n else post({ id: data.id, missing: true });\n } else {\n reprojection.cache.capacity = data.cached;\n\n const image = await reprojection.draw(data.job, controller.signal);\n\n if (image) post({ id: data.id, image }, [image]);\n else post({ id: data.id, missing: true });\n }\n } catch (error) {\n post({ id: data.id, error: String(error) });\n } finally {\n controllers.delete(data.id);\n }\n};\n"
26
26
  ],
27
- "mappings": "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",
28
- "debugId": "9F3F4CC0A5D7049264756E2164756E21",
27
+ "mappings": "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",
28
+ "debugId": "0099C5A222DA236564756E2164756E21",
29
29
  "names": []
30
30
  }