{"version":3,"file":"index.cjs","sources":["../node_modules/tilebelt/index.js","../node_modules/@mapbox/tile-cover/index.js","../src/index.ts"],"sourcesContent":["// a tile is an array [x,y,z]\nvar d2r = Math.PI / 180,\n    r2d = 180 / Math.PI;\n\nfunction tileToBBOX (tile) {\n    var e = tile2lon(tile[0]+1,tile[2]);\n    var w = tile2lon(tile[0],tile[2]);\n    var s = tile2lat(tile[1]+1,tile[2]);\n    var n = tile2lat(tile[1],tile[2]);\n    return [w,s,e,n];\n}\n\nfunction tileToGeoJSON (tile) {\n    var bbox = tileToBBOX(tile);\n    var poly = {\n        type: 'Polygon',\n        coordinates:\n            [\n                [\n                    [bbox[0],bbox[1]],\n                    [bbox[0], bbox[3]],\n                    [bbox[2], bbox[3]],\n                    [bbox[2], bbox[1]],\n                    [bbox[0], bbox[1]]\n                ]\n            ]\n    };\n    return poly;\n}\n\nfunction tile2lon(x, z) {\n    return (x/Math.pow(2,z)*360-180);\n}\n\nfunction tile2lat(y, z) {\n    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);\n    return (r2d*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));\n}\n\nfunction pointToTile(lon, lat, z) {\n    var tile = pointToTileFraction(lon, lat, z);\n    tile[0] = Math.floor(tile[0]);\n    tile[1] = Math.floor(tile[1]);\n    return tile;\n}\n\nfunction getChildren (tile) {\n    return [\n        [tile[0]*2, tile[1]*2, tile[2]+1],\n        [tile[0]*2+1, tile[1]*2, tile[2 ]+1],\n        [tile[0]*2+1, tile[1]*2+1, tile[2]+1],\n        [tile[0]*2, tile[1]*2+1, tile[2]+1],\n    ];\n}\n\nfunction getParent (tile) {\n    // top left\n    if(tile[0]%2===0 && tile[1]%2===0) {\n        return [tile[0]/2, tile[1]/2, tile[2]-1];\n    }\n    // bottom left\n    else if((tile[0]%2===0) && (!tile[1]%2===0)) {\n        return [tile[0]/2, (tile[1]-1)/2, tile[2]-1];\n    }\n    // top right\n    else if((!tile[0]%2===0) && (tile[1]%2===0)) {\n        return [(tile[0]-1)/2, (tile[1])/2, tile[2]-1];\n    }\n    // bottom right\n    else {\n        return [(tile[0]-1)/2, (tile[1]-1)/2, tile[2]-1];\n    }\n}\n\nfunction getSiblings (tile) {\n    return getChildren(getParent(tile));\n}\n\nfunction hasSiblings(tile, tiles) {\n    var siblings = getSiblings(tile);\n    for (var i = 0; i < siblings.length; i++) {\n        if (!hasTile(tiles, siblings[i])) return false;\n    }\n    return true;\n}\n\nfunction hasTile(tiles, tile) {\n    for (var i = 0; i < tiles.length; i++) {\n        if (tilesEqual(tiles[i], tile)) return true;\n    }\n    return false;\n}\n\nfunction tilesEqual(tile1, tile2) {\n    return (\n        tile1[0] === tile2[0] &&\n        tile1[1] === tile2[1] &&\n        tile1[2] === tile2[2]\n    );\n}\n\nfunction tileToQuadkey(tile) {\n  var index = '';\n  for (var z = tile[2]; z > 0; z--) {\n      var b = 0;\n      var mask = 1 << (z - 1);\n      if ((tile[0] & mask) !== 0) b++;\n      if ((tile[1] & mask) !== 0) b += 2;\n      index += b.toString();\n  }\n  return index;\n}\n\nfunction quadkeyToTile(quadkey) {\n    var x = 0;\n    var y = 0;\n    var z = quadkey.length;\n\n    for (var i = z; i > 0; i--) {\n        var mask = 1 << (i - 1);\n        switch (quadkey[z - i]) {\n            case '0':\n                break;\n\n            case '1':\n                x |= mask;\n                break;\n\n            case '2':\n                y |= mask;\n                break;\n\n            case '3':\n                x |= mask;\n                y |= mask;\n                break;\n        }\n    }\n    return [x,y,z];\n}\n\nfunction bboxToTile(bboxCoords) {\n    var min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n    var max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n    var bbox = [min[0], min[1], max[0], max[1]];\n\n    var z = getBboxZoom(bbox);\n    if (z === 0) return [0,0,0];\n    var x = bbox[0] >>> (32 - z);\n    var y = bbox[1] >>> (32 - z);\n    return [x,y,z];\n}\n\nfunction getBboxZoom(bbox) {\n    var MAX_ZOOM = 28;\n    for (var z = 0; z < MAX_ZOOM; z++) {\n        var mask = 1 << (32 - (z + 1));\n        if (((bbox[0] & mask) != (bbox[2] & mask)) ||\n            ((bbox[1] & mask) != (bbox[3] & mask))) {\n            return z;\n        }\n    }\n\n    return MAX_ZOOM;\n}\n\nfunction pointToTileFraction(lon, lat, z) {\n    var sin = Math.sin(lat * d2r),\n        z2 = Math.pow(2, z),\n        x = z2 * (lon / 360 + 0.5),\n        y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n    return [x, y, z];\n}\n\nmodule.exports = {\n    tileToGeoJSON: tileToGeoJSON,\n    tileToBBOX: tileToBBOX,\n    getChildren: getChildren,\n    getParent: getParent,\n    getSiblings: getSiblings,\n    hasTile: hasTile,\n    hasSiblings: hasSiblings,\n    tilesEqual: tilesEqual,\n    tileToQuadkey: tileToQuadkey,\n    quadkeyToTile: quadkeyToTile,\n    pointToTile: pointToTile,\n    bboxToTile: bboxToTile,\n    pointToTileFraction: pointToTileFraction\n};\n","var tilebelt = require('tilebelt');\n\n/**\n * Given a geometry, create cells and return them in a format easily readable\n * by any software that reads GeoJSON.\n *\n * @alias geojson\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Object} FeatureCollection of cells formatted as GeoJSON Features\n */\nexports.geojson = function (geom, limits) {\n    return {\n        type: 'FeatureCollection',\n        features: getTiles(geom, limits).map(tileToFeature)\n    };\n};\n\nfunction tileToFeature(t) {\n    return {\n        type: 'Feature',\n        geometry: tilebelt.tileToGeoJSON(t),\n        properties: {}\n    };\n}\n\n/**\n * Given a geometry, create cells and return them in their raw form,\n * as an array of cell identifiers.\n *\n * @alias tiles\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<Array<number>>} An array of tiles given as [x, y, z] arrays\n */\nexports.tiles = getTiles;\n\n/**\n * Given a geometry, create cells and return them as\n * [quadkey](http://msdn.microsoft.com/en-us/library/bb259689.aspx) indexes.\n *\n * @alias indexes\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<String>} An array of tiles given as quadkeys.\n */\nexports.indexes = function (geom, limits) {\n    return getTiles(geom, limits).map(tilebelt.tileToQuadkey);\n};\n\nfunction getTiles(geom, limits) {\n    var i, tile,\n        coords = geom.coordinates,\n        maxZoom = limits.max_zoom,\n        tileHash = {},\n        tiles = [];\n\n    if (geom.type === 'Point') {\n        return [tilebelt.pointToTile(coords[0], coords[1], maxZoom)];\n\n    } else if (geom.type === 'MultiPoint') {\n        for (i = 0; i < coords.length; i++) {\n            tile = tilebelt.pointToTile(coords[i][0], coords[i][1], maxZoom);\n            tileHash[toID(tile[0], tile[1], tile[2])] = true;\n        }\n    } else if (geom.type === 'LineString') {\n        lineCover(tileHash, coords, maxZoom);\n\n    } else if (geom.type === 'MultiLineString') {\n        for (i = 0; i < coords.length; i++) {\n            lineCover(tileHash, coords[i], maxZoom);\n        }\n    } else if (geom.type === 'Polygon') {\n        polygonCover(tileHash, tiles, coords, maxZoom);\n\n    } else if (geom.type === 'MultiPolygon') {\n        for (i = 0; i < coords.length; i++) {\n            polygonCover(tileHash, tiles, coords[i], maxZoom);\n        }\n    } else {\n        throw new Error('Geometry type not implemented');\n    }\n\n    if (limits.min_zoom !== maxZoom) {\n        // sync tile hash and tile array so that both contain the same tiles\n        var len = tiles.length;\n        appendHashTiles(tileHash, tiles);\n        for (i = 0; i < len; i++) {\n            var t = tiles[i];\n            tileHash[toID(t[0], t[1], t[2])] = true;\n        }\n        return mergeTiles(tileHash, tiles, limits);\n    }\n\n    appendHashTiles(tileHash, tiles);\n    return tiles;\n}\n\nfunction mergeTiles(tileHash, tiles, limits) {\n    var mergedTiles = [];\n\n    for (var z = limits.max_zoom; z > limits.min_zoom; z--) {\n\n        var parentTileHash = {};\n        var parentTiles = [];\n\n        for (var i = 0; i < tiles.length; i++) {\n            var t = tiles[i];\n\n            if (t[0] % 2 === 0 && t[1] % 2 === 0) {\n                var id2 = toID(t[0] + 1, t[1], z),\n                    id3 = toID(t[0], t[1] + 1, z),\n                    id4 = toID(t[0] + 1, t[1] + 1, z);\n\n                if (tileHash[id2] && tileHash[id3] && tileHash[id4]) {\n                    tileHash[toID(t[0], t[1], t[2])] = false;\n                    tileHash[id2] = false;\n                    tileHash[id3] = false;\n                    tileHash[id4] = false;\n\n                    var parentTile = [t[0] / 2, t[1] / 2, z - 1];\n\n                    if (z - 1 === limits.min_zoom) mergedTiles.push(parentTile);\n                    else {\n                        parentTileHash[toID(t[0] / 2, t[1] / 2, z - 1)] = true;\n                        parentTiles.push(parentTile);\n                    }\n                }\n            }\n        }\n\n        for (i = 0; i < tiles.length; i++) {\n            t = tiles[i];\n            if (tileHash[toID(t[0], t[1], t[2])]) mergedTiles.push(t);\n        }\n\n        tileHash = parentTileHash;\n        tiles = parentTiles;\n    }\n\n    return mergedTiles;\n}\n\nfunction polygonCover(tileHash, tileArray, geom, zoom) {\n    var intersections = [];\n\n    for (var i = 0; i < geom.length; i++) {\n        var ring = [];\n        lineCover(tileHash, geom[i], zoom, ring);\n\n        for (var j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n            var m = (j + 1) % len;\n            var y = ring[j][1];\n\n            // add interesction if it's not local extremum or duplicate\n            if ((y > ring[k][1] || y > ring[m][1]) && // not local minimum\n                (y < ring[k][1] || y < ring[m][1]) && // not local maximum\n                y !== ring[m][1]) intersections.push(ring[j]);\n        }\n    }\n\n    intersections.sort(compareTiles); // sort by y, then x\n\n    for (i = 0; i < intersections.length; i += 2) {\n        // fill tiles between pairs of intersections\n        y = intersections[i][1];\n        for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {\n            var id = toID(x, y, zoom);\n            if (!tileHash[id]) {\n                tileArray.push([x, y, zoom]);\n            }\n        }\n    }\n}\n\nfunction compareTiles(a, b) {\n    return (a[1] - b[1]) || (a[0] - b[0]);\n}\n\nfunction lineCover(tileHash, coords, maxZoom, ring) {\n    var prevX, prevY;\n\n    for (var i = 0; i < coords.length - 1; i++) {\n        var start = tilebelt.pointToTileFraction(coords[i][0], coords[i][1], maxZoom),\n            stop = tilebelt.pointToTileFraction(coords[i + 1][0], coords[i + 1][1], maxZoom),\n            x0 = start[0],\n            y0 = start[1],\n            x1 = stop[0],\n            y1 = stop[1],\n            dx = x1 - x0,\n            dy = y1 - y0;\n\n        if (dy === 0 && dx === 0) continue;\n\n        var sx = dx > 0 ? 1 : -1,\n            sy = dy > 0 ? 1 : -1,\n            x = Math.floor(x0),\n            y = Math.floor(y0),\n            tMaxX = dx === 0 ? Infinity : Math.abs(((dx > 0 ? 1 : 0) + x - x0) / dx),\n            tMaxY = dy === 0 ? Infinity : Math.abs(((dy > 0 ? 1 : 0) + y - y0) / dy),\n            tdx = Math.abs(sx / dx),\n            tdy = Math.abs(sy / dy);\n\n        if (x !== prevX || y !== prevY) {\n            tileHash[toID(x, y, maxZoom)] = true;\n            if (ring && y !== prevY) ring.push([x, y]);\n            prevX = x;\n            prevY = y;\n        }\n\n        while (tMaxX < 1 || tMaxY < 1) {\n            if (tMaxX < tMaxY) {\n                tMaxX += tdx;\n                x += sx;\n            } else {\n                tMaxY += tdy;\n                y += sy;\n            }\n            tileHash[toID(x, y, maxZoom)] = true;\n            if (ring && y !== prevY) ring.push([x, y]);\n            prevX = x;\n            prevY = y;\n        }\n    }\n\n    if (ring && y === ring[0][1]) ring.pop();\n}\n\nfunction appendHashTiles(hash, tiles) {\n    var keys = Object.keys(hash);\n    for (var i = 0; i < keys.length; i++) {\n        tiles.push(fromID(+keys[i]));\n    }\n}\n\nfunction toID(x, y, z) {\n    var dim = 2 * (1 << z);\n    return ((dim * y + x) * 32) + z;\n}\n\nfunction fromID(id) {\n    var z = id % 32,\n        dim = 2 * (1 << z),\n        xy = ((id - z) / 32),\n        x = xy % dim,\n        y = ((xy - x) / dim) % dim;\n    return [x, y, z];\n}\n","import {tiles} from '@mapbox/tile-cover';\nimport {worldToLngLat} from '@math.gl/web-mercator';\nimport type {Polygon} from 'geojson';\n\nconst B = [\n  0x5555555555555555n,\n  0x3333333333333333n,\n  0x0f0f0f0f0f0f0f0fn,\n  0x00ff00ff00ff00ffn,\n  0x0000ffff0000ffffn,\n  0x00000000ffffffffn\n];\nconst S = [0n, 1n, 2n, 4n, 8n, 16n];\n\ntype Quadbin = bigint;\ntype Tile = {x: number; y: number; z: number};\n\nconst TILE_SIZE = 512;\n\nexport function cellToOffset(quadbin: Quadbin): [number, number, number] {\n  const {x, y, z} = cellToTile(quadbin);\n  const scale = TILE_SIZE / (1 << z);\n  return [x * scale, TILE_SIZE - y * scale, scale];\n}\n\nexport function cellToWorldBounds(quadbin: Quadbin, coverage: number): [number[], number[]] {\n  const [xOffset, yOffset, scale] = cellToOffset(quadbin);\n  return [\n    [xOffset, yOffset],\n    [xOffset + coverage * scale, yOffset - coverage * scale]\n  ];\n}\n\nexport function getCellPolygon(quadbin: Quadbin, coverage = 1): number[] {\n  const [topLeft, bottomRight] = cellToWorldBounds(quadbin, coverage);\n  const [w, n] = worldToLngLat(topLeft);\n  const [e, s] = worldToLngLat(bottomRight);\n  return [e, n, e, s, w, s, w, n, e, n];\n}\n\nexport function hexToBigInt(hex: string): bigint {\n  return BigInt(`0x${hex}`);\n}\n\nexport function bigIntToHex(index: bigint): string {\n  return index.toString(16);\n}\n\nexport function tileToCell(tile: Tile): Quadbin {\n  if (tile.z < 0 || tile.z > 26) {\n    throw new Error('Wrong zoom');\n  }\n  const z = BigInt(tile.z);\n  let x = BigInt(tile.x) << (32n - z);\n  let y = BigInt(tile.y) << (32n - z);\n\n  for (let i = 0; i < 5; i++) {\n    const s = S[5 - i];\n    const b = B[4 - i];\n    x = (x | (x << s)) & b;\n    y = (y | (y << s)) & b;\n  }\n\n  const quadbin =\n    0x4000000000000000n |\n    (1n << 59n) | // | (mode << 59) | (mode_dep << 57)\n    (z << 52n) |\n    ((x | (y << 1n)) >> 12n) |\n    (0xfffffffffffffn >> (z * 2n));\n  return quadbin;\n}\n\nexport function cellToTile(quadbin: Quadbin): Tile {\n  const mode = (quadbin >> 59n) & 7n;\n  const modeDep = (quadbin >> 57n) & 3n;\n  const z = (quadbin >> 52n) & 0x1fn;\n  const q = (quadbin & 0xfffffffffffffn) << 12n;\n\n  if (mode !== 1n && modeDep !== 0n) {\n    throw new Error('Wrong mode');\n  }\n\n  let x = q;\n  let y = q >> 1n;\n\n  for (let i = 0; i < 6; i++) {\n    const s = S[i];\n    const b = B[i];\n    x = (x | (x >> s)) & b;\n    y = (y | (y >> s)) & b;\n  }\n\n  x = x >> (32n - z);\n  y = y >> (32n - z);\n\n  return {z: Number(z), x: Number(x), y: Number(y)};\n}\n\nexport function getResolution(quadbin: Quadbin): bigint {\n  return (quadbin >> 52n) & 0x1fn;\n}\n\nexport function cellToParent(quadbin: Quadbin): Quadbin {\n  const zparent = getResolution(quadbin) - 1n;\n  const parent =\n    (quadbin & ~(0x1fn << 52n)) | (zparent << 52n) | (0xfffffffffffffn >> (zparent * 2n));\n  return parent;\n}\n\n/**\n * Returns the children of a cell.\n *\n * @privateRemarks Order of the child cells would, preferably, be\n *  row-major starting from NW and ending at SE.\n */\nexport function cellToChildren(quadbin: Quadbin, resolution: bigint): Quadbin[] {\n  if (resolution < 0 || resolution > 26 || resolution < getResolution(quadbin)) {\n    throw new Error('Invalid resolution');\n  }\n\n  const zoomLevelMask = ~(0x1fn << 52n);\n  const blockRange = 1n << ((resolution - ((quadbin >> 52n) & 0x1fn)) << 1n);\n  const sqrtBlockRange = 1n << (resolution - ((quadbin >> 52n) & 0x1fn));\n  const blockShift = 52n - (resolution << 1n);\n\n  const childBase =\n    ((quadbin & zoomLevelMask) | (resolution << 52n)) & ~((blockRange - 1n) << blockShift);\n\n  const children: Quadbin[] = [];\n  for (let blockRow = 0n; blockRow < sqrtBlockRange; blockRow++) {\n    for (let blockColumn = 0n; blockColumn < sqrtBlockRange; blockColumn++) {\n      children.push(childBase | ((blockRow * sqrtBlockRange + blockColumn) << blockShift));\n    }\n  }\n\n  return children;\n}\n\nexport function geometryToCells(geometry, resolution: bigint): Quadbin[] {\n  const zoom = Number(resolution);\n  return tiles(geometry, {\n    min_zoom: zoom,\n    max_zoom: zoom\n  }).map(([x, y, z]) => tileToCell({x, y, z}));\n}\n\nexport function cellToBoundary(cell: Quadbin): Polygon {\n  const bbox = getCellPolygon(cell);\n  const boundary = [\n    [bbox[0], bbox[1]],\n    [bbox[2], bbox[3]],\n    [bbox[4], bbox[5]],\n    [bbox[6], bbox[7]],\n    [bbox[0], bbox[1]]\n  ];\n\n  return {type: 'Polygon', coordinates: [boundary]};\n}\n"],"names":["B","S","TILE_SIZE","cellToOffset","quadbin","x","y","z","cellToTile","scale","cellToWorldBounds","coverage","xOffset","yOffset","getCellPolygon","topLeft","bottomRight","w","n","worldToLngLat","e","s","hexToBigInt","hex","BigInt","bigIntToHex","index","toString","tileToCell","tile","Error","i","b","mode","modeDep","q","Number","getResolution","cellToParent","zparent","parent","cellToChildren","resolution","zoomLevelMask","blockRange","sqrtBlockRange","blockShift","childBase","children","blockRow","blockColumn","push","geometryToCells","geometry","zoom","tiles","min_zoom","max_zoom","map","_ref","cellToBoundary","cell","bbox","boundary","type","coordinates"],"mappings":"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"}