@deck.gl/carto 9.0.0-beta.4 → 9.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/common.d.ts +0 -1
- package/dist/api/common.d.ts.map +1 -1
- package/dist/api/common.js +0 -1
- package/dist/api/fetch-map.d.ts.map +1 -1
- package/dist/api/fetch-map.js +4 -0
- package/dist/api/parse-map.js +4 -4
- package/dist/cartoRasterTile-worker.js +1 -1
- package/dist/cartoSpatialTile-worker.js +1 -1
- package/dist/cartoVectorTile-worker.js +1 -1
- package/dist/dist.dev.js +661 -675
- package/dist/index.cjs +59 -88
- package/dist/index.cjs.map +3 -3
- package/dist/layers/raster-layer-vertex.glsl.js +41 -71
- package/dist/layers/raster-layer.d.ts.map +1 -1
- package/dist/layers/raster-layer.js +2 -5
- package/dist/layers/schema/carto-raster-tile-loader.js +1 -1
- package/dist/layers/schema/carto-spatial-tile-loader.js +1 -1
- package/dist/layers/schema/carto-vector-tile-loader.js +1 -1
- package/dist/sources/base-source.d.ts.map +1 -1
- package/dist/sources/base-source.js +4 -3
- package/dist/sources/types.d.ts +1 -1
- package/dist/sources/types.d.ts.map +1 -1
- package/dist.min.js +50 -80
- package/package.json +4 -4
- package/src/api/common.ts +0 -1
- package/src/api/fetch-map.ts +4 -0
- package/src/layers/raster-layer.ts +2 -5
- package/src/sources/base-source.ts +4 -3
- package/src/sources/types.ts +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.js", "layers/h3-tile-layer.js", "layers/h3-tileset-2d.js", "layers/spatial-index-tile-layer.js", "layers/schema/fast-pbf.js", "layers/schema/carto-raster-tile.js", "layers/schema/tile-loader-utils.js", "utils.js", "layers/schema/carto-raster-tile-loader.js", "layers/schema/carto-tile.js", "layers/schema/carto-spatial-tile.js", "layers/schema/spatialjson-utils.js", "layers/schema/carto-spatial-tile-loader.js", "layers/utils.js", "layers/point-label-layer.js", "layers/quadbin-tile-layer.js", "layers/quadbin-layer.js", "layers/quadbin-utils.js", "layers/quadbin-tileset-2d.js", "layers/raster-tile-layer.js", "layers/raster-layer.js", "layers/raster-layer-vertex.glsl.js", "layers/vector-tile-layer.js", "layers/schema/carto-properties-tile.js", "layers/schema/carto-properties-tile-loader.js", "layers/schema/carto-vector-tile-loader.js", "basemap.js", "style/color-bins-style.js", "style/palette.js", "style/utils.js", "style/color-categories-style.js", "style/color-continuous-style.js", "api/carto-api-error.js", "api/common.js", "api/endpoints.js", "api/request-with-parameters.js", "sources/base-source.js", "sources/boundary-query-source.js", "sources/boundary-table-source.js", "sources/h3-query-source.js", "sources/h3-table-source.js", "sources/h3-tileset-source.js", "sources/raster-source.js", "sources/quadbin-query-source.js", "sources/quadbin-table-source.js", "sources/quadbin-tileset-source.js", "sources/vector-query-source.js", "sources/vector-table-source.js", "sources/vector-tileset-source.js", "api/parse-map.js", "api/layer-map.js", "api/fetch-map.js", "api/query.js"],
|
|
4
|
-
"sourcesContent": ["import { default as H3TileLayer } from \"./layers/h3-tile-layer.js\";\nimport { default as _PointLabelLayer } from \"./layers/point-label-layer.js\";\nimport { default as QuadbinTileLayer } from \"./layers/quadbin-tile-layer.js\";\nimport { default as RasterTileLayer } from \"./layers/raster-tile-layer.js\";\nimport { default as VectorTileLayer } from \"./layers/vector-tile-layer.js\";\nconst CARTO_LAYERS = {\n H3TileLayer,\n _PointLabelLayer,\n QuadbinTileLayer,\n RasterTileLayer,\n VectorTileLayer\n};\nexport { CARTO_LAYERS, H3TileLayer, _PointLabelLayer, QuadbinTileLayer, RasterTileLayer, VectorTileLayer };\nexport { default as BASEMAP } from \"./basemap.js\";\nexport { default as colorBins } from \"./style/color-bins-style.js\";\nexport { default as colorCategories } from \"./style/color-categories-style.js\";\nexport { default as colorContinuous } from \"./style/color-continuous-style.js\";\nexport { CartoAPIError, fetchMap, query } from \"./api/index.js\";\nimport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, SOURCE_DEFAULTS } from \"./sources/index.js\";\nconst CARTO_SOURCES = {\n boundaryQuerySource,\n boundaryTableSource,\n h3QuerySource,\n h3TableSource,\n h3TilesetSource,\n rasterSource,\n quadbinQuerySource,\n quadbinTableSource,\n quadbinTilesetSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n};\nexport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, CARTO_SOURCES, SOURCE_DEFAULTS };\n", "import { CompositeLayer } from '@deck.gl/core';\nimport { H3HexagonLayer } from '@deck.gl/geo-layers';\nimport H3Tileset2D, { getHexagonResolution } from \"./h3-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const { data } = props;\n const { index } = props.tile;\n if (!data || !data.length)\n return null;\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class H3TileLayer extends CompositeLayer {\n static { this.layerName = 'H3TileLayer'; }\n static { this.defaultProps = defaultProps; }\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: 'h3' };\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data } = tileJSON;\n let { minresolution, maxresolution } = tileJSON;\n // Convert Mercator zooms provided in props into H3 res levels\n // and clip into valid range provided from the tilejson\n if (this.props.minZoom) {\n minresolution = Math.max(minresolution, getHexagonResolution({ zoom: this.props.minZoom, latitude: 0 }));\n }\n if (this.props.maxZoom) {\n maxresolution = Math.min(maxresolution, getHexagonResolution({ zoom: this.props.maxZoom, latitude: 0 }));\n }\n // The naming is unfortunate, but minZoom & maxZoom in the context\n // of a Tileset2D refer to the resolution levels, not the Mercator zooms\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `h3-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n // minZoom and maxZoom are H3 resolutions, however we must use this naming as that is what the Tileset2D class expects\n minZoom: minresolution,\n maxZoom: maxresolution,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';\nimport { polygonToCells, latLngToCell, getResolution, cellToBoundary, cellToParent, gridDisk } from 'h3-js';\nfunction getHexagonsInBoundingBox({ west, north, east, south }, resolution) {\n const longitudeSpan = Math.abs(east - west);\n if (longitudeSpan > 180) {\n // This is a known issue in h3-js: polygonToCells does not work correctly\n // when longitude span is larger than 180 degrees.\n const nSegments = Math.ceil(longitudeSpan / 180);\n let h3Indices = [];\n for (let s = 0; s < nSegments; s++) {\n const segmentEast = east + s * 180;\n const segmentWest = Math.min(segmentEast + 179.9999999, west);\n h3Indices = h3Indices.concat(getHexagonsInBoundingBox({ west: segmentWest, north, east: segmentEast, south }, resolution));\n }\n return [...new Set(h3Indices)];\n }\n // `polygonToCells()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polygonToCells([\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ], resolution + oversample, true);\n return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;\n}\nfunction tileToBoundingBox(index) {\n const coordinates = cellToBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return { west, south, east, north };\n}\n// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\nexport function getHexagonResolution(viewport) {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\nexport default class H3Tileset2D extends Tileset2D {\n /**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileIndices({ viewport, minZoom, maxZoom }) {\n if (viewport.latitude === undefined)\n return [];\n const [east, south, west, north] = viewport.getBounds();\n let z = getHexagonResolution(viewport);\n let indices;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n // TODO support `extent` prop\n return [];\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply\n // get a ring centered on the hexagon in the viewport center\n const center = latLngToCell(viewport.latitude, viewport.longitude, maxZoom);\n indices = gridDisk(center, 1);\n }\n else {\n indices = getHexagonsInBoundingBox({ west, north, east, south }, z);\n }\n return indices.map(i => ({ i }));\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({ i }) {\n return i;\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({ i }) {\n return { bbox: tileToBoundingBox(i) };\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({ i }) {\n return getResolution(i);\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index) {\n const resolution = getResolution(index.i);\n const i = cellToParent(index.i, resolution - 1);\n return { i };\n }\n}\n", "import { registerLoaders } from '@loaders.gl/core';\nimport CartoRasterTileLoader from \"./schema/carto-raster-tile-loader.js\";\nimport CartoSpatialTileLoader from \"./schema/carto-spatial-tile-loader.js\";\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\nimport { TileLayer } from '@deck.gl/geo-layers';\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\nconst defaultProps = {};\nexport default class SpatialIndexTileLayer extends TileLayer {\n static { this.layerName = 'SpatialIndexTileLayer'; }\n static { this.defaultProps = defaultProps; }\n _updateAutoHighlight(info) {\n const { hoveredFeatureId } = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId = null;\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let { highlightColor } = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n getHighlightedObjectIndex(tile) {\n const { hoveredFeatureId } = this.state;\n const data = tile.content;\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (!isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)) {\n return -1;\n }\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n _featureInTile(tile, featureId) {\n // TODO: Tile2DHeader index should be generic for H3TileIndex or QuadbinTileIndex\n const tileset = this.state.tileset;\n const tileZoom = tileset.getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n // TODO - Tileset2D methods expect tile index in the shape of {x, y, z}\n let featureIndex = { [KEY]: featureId };\n let featureZoom = tileset.getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = tileset.getParentIndex(featureIndex);\n featureZoom = tileset.getTileZoom(featureIndex);\n }\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n", "// Optimized (100X speed improvement) reading function for binary data\nexport function readPackedTypedArray(TypedArray, pbf, obj) {\n const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;\n obj.value = new TypedArray(pbf.buf.buffer.slice(pbf.pos, end));\n pbf.pos = end;\n return obj.value;\n}\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nconst ARRAY_TYPES = {\n uint8: Uint8Array,\n uint16: Uint16Array,\n uint32: Uint32Array,\n uint64: BigUint64Array,\n int8: Int8Array,\n int16: Int16Array,\n int32: Int32Array,\n int64: BigInt64Array,\n float32: Float32Array,\n float64: Float64Array\n};\n// Band ========================================\nexport class BandReader {\n static read(pbf, end) {\n return pbf.readFields(BandReader._readField, { name: '', type: '', data: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.name = pbf.readString();\n else if (tag === 2)\n obj.type = pbf.readString();\n else if (tag === 3) {\n const TypedArray = ARRAY_TYPES[obj.type];\n if (!TypedArray) {\n throw Error(`Invalid data type: ${obj.type}`);\n }\n obj.data = {};\n readPackedTypedArray(TypedArray, pbf, obj.data);\n }\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { blockWidth: 0, blockHeight: 0, bands: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.blockWidth = pbf.readVarint();\n else if (tag === 2)\n obj.blockHeight = pbf.readVarint();\n else if (tag === 3)\n obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\n", "import Protobuf from 'pbf';\nexport function parsePbf(buffer, TileReader) {\n const pbf = new Protobuf(buffer);\n const tile = TileReader.read(pbf);\n return tile;\n}\n", "import { log } from '@deck.gl/core';\nexport function assert(condition, message) {\n log.assert(condition, message);\n}\n// Returns a Proxy object that allows accessing binary data\n// as if it were JSON properties\nexport function createBinaryProxy(data, index) {\n const { properties, numericProps } = data;\n return new Proxy(properties[index] || {}, {\n get(target, property) {\n if (property in numericProps) {\n return numericProps[property].value[index];\n }\n return target[property];\n },\n has(target, property) {\n return property in numericProps || property in target;\n }\n });\n}\nexport function getWorkerUrl(id, version) {\n // For local testing `yarn build-workers` and then host `modules/carto/dist/`\n // return `http://localhost:8081/dist/${id}-worker.js`;\n return `https://unpkg.com/@deck.gl/carto@${version}/dist/${id}-worker.js`;\n}\nexport function scaleIdentity() {\n let unknown;\n function scale(x) {\n return x === null ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = d => d;\n scale.unknown = u => {\n if (u) {\n unknown = u;\n }\n return unknown;\n };\n scale.copy = () => scaleIdentity().unknown(unknown);\n return scale;\n}\n", "import { TileReader } from \"./carto-raster-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nconst VERSION = typeof \"9.0.0-beta.3\" !== 'undefined' ? \"9.0.0-beta.3\" : 'latest';\nconst id = 'cartoRasterTile';\nconst DEFAULT_OPTIONS = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoRasterTileLoader = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction parseCartoRasterTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const { bands, blockHeight, blockWidth } = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const { name, data } = bands[i];\n numericProps[name] = data;\n }\n return { blockWidth, blockHeight, cells: { numericProps, properties: [] } };\n}\nexport default CartoRasterTileLoader;\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nclass KeyValueObjectReader {\n static read(pbf, end) {\n return pbf.readFields(KeyValueObjectReader._readField, { key: '', value: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.key = pbf.readString();\n else if (tag === 2)\n obj.value = pbf.readString();\n }\n}\n// Properties ========================================\nexport class PropertiesReader {\n static read(pbf, end) {\n return pbf.readFields(PropertiesReader._readField, {}, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1) {\n const { key, value } = KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj[key] = value;\n }\n }\n}\nclass DoublesReader {\n static read(pbf, end) {\n const { value, size } = pbf.readFields(DoublesReader._readField, { value: [], size: 0 }, end);\n return { value: new Float32Array(value), size };\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(Float64Array, pbf, obj);\n else if (tag === 2)\n obj.size = pbf.readVarint(true);\n }\n}\nclass IntsReader {\n static read(pbf, end) {\n const { value, size } = pbf.readFields(IntsReader._readField, { value: [], size: 0 }, end);\n return { value: new Uint32Array(value), size };\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n pbf.readPackedVarint(obj.value);\n else if (tag === 2)\n obj.size = pbf.readVarint(true);\n }\n}\nclass FieldsReader {\n static read(pbf, end) {\n return pbf.readFields(FieldsReader._readField, { id: 0 }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.id = pbf.readVarint();\n }\n}\nclass NumericPropReader {\n static read(pbf, end) {\n return pbf.readFields(NumericPropReader._readField, { value: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(Float64Array, pbf, obj);\n }\n}\nexport class NumericPropKeyValueReader {\n static read(pbf, end) {\n return pbf.readFields(NumericPropKeyValueReader._readField, { key: '', value: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.key = pbf.readString();\n else if (tag === 2)\n obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\nclass PointsReader {\n static read(pbf, end) {\n return pbf.readFields(PointsReader._readField, {\n positions: null,\n globalFeatureIds: null,\n featureIds: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 5) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 6)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\n// Lines ========================================\nclass LinesReader {\n static read(pbf, end) {\n return pbf.readFields(LinesReader._readField, {\n positions: null,\n pathIndices: null,\n globalFeatureIds: null,\n featureIds: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 5)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 6) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 7)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\nclass PolygonsReader {\n static read(pbf, end) {\n return pbf.readFields(PolygonsReader._readField, {\n positions: null,\n polygonIndices: null,\n globalFeatureIds: null,\n featureIds: null,\n primitivePolygonIndices: null,\n triangles: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 5)\n obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 6)\n obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 7)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 8) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 9)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { points: null, lines: null, polygons: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nimport { NumericPropKeyValueReader, PropertiesReader } from \"./carto-tile.js\";\n// Indices =====================================\nexport class IndicesReader {\n static read(pbf, end) {\n return pbf.readFields(IndicesReader._readField, { value: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(BigUint64Array, pbf, obj);\n }\n}\nclass CellsReader {\n static read(pbf, end) {\n return pbf.readFields(CellsReader._readField, { indices: null, properties: [], numericProps: {} }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 3) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { scheme: 0, cells: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.scheme = pbf.readVarint();\n else if (tag === 2)\n obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\n", "import { bigIntToHex } from 'quadbin';\nexport function binaryToSpatialjson(binary) {\n const { cells, scheme } = binary;\n const count = cells.indices.value.length;\n const spatial = [];\n for (let i = 0; i < count; i++) {\n const id = scheme === 'h3' ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];\n const properties = { ...cells.properties[i] };\n for (const key of Object.keys(cells.numericProps)) {\n properties[key] = cells.numericProps[key].value[i];\n }\n spatial.push({ id, properties });\n }\n return spatial;\n}\n", "import { TileReader } from \"./carto-spatial-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nimport { binaryToSpatialjson } from \"./spatialjson-utils.js\";\nconst VERSION = typeof \"9.0.0-beta.3\" !== 'undefined' ? \"9.0.0-beta.3\" : 'latest';\nconst id = 'cartoSpatialTile';\nconst DEFAULT_OPTIONS = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoSpatialTileLoader = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction parseCartoSpatialTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const { cells } = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = { cells, scheme };\n return binaryToSpatialjson(data);\n}\nexport default CartoSpatialTileLoader;\n", "import { log } from '@deck.gl/core';\nimport { _deepEqual as deepEqual } from '@deck.gl/core';\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions, accessToken) {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: { ...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}` }\n };\n }\n}\nexport function mergeBoundaryData(geometry, properties) {\n const mapping = {};\n for (const { geoid, ...rest } of properties.properties) {\n if (geoid in mapping) {\n log.warn('Duplicate geoid key in boundary mapping, using first occurance')();\n }\n else {\n mapping[geoid] = rest;\n }\n }\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n geom.properties = geom.properties.map(({ geoid }) => mapping[geoid]);\n // numericProps need to be filled to match length of positions buffer\n const { positions, globalFeatureIds } = geom;\n let indices = null;\n if (type === 'lines')\n indices = geom.pathIndices.value;\n if (type === 'polygons')\n indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = { value: destProp, size: 1 };\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n }\n else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n return geometry;\n}\nexport const TilejsonPropType = {\n type: 'object',\n value: null,\n validate: (value, propType) => (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n", "import { CompositeLayer } from '@deck.gl/core';\nimport { TextLayer, _TextBackgroundLayer as TextBackgroundLayer } from '@deck.gl/layers';\nconst [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];\nclass EnhancedTextBackgroundLayer extends TextBackgroundLayer {\n static { this.layerName = 'EnhancedTextBackgroundLayer'; }\n getShaders() {\n const shaders = super.getShaders();\n let vs = shaders.vs;\n // Modify shader so that the padding is offset by the pixel offset to ensure the padding\n // always captures the anchor point. As padding is uniform we cannot pass it a per-label value\n vs = vs.replaceAll('padding.', '_padding.');\n vs = vs.replace('void main(void) {', 'void main(void) {\\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);');\n return { ...shaders, vs };\n }\n}\n// TextLayer which includes modified text-background-layer-vertex shader and only renders the\n// primary background layer in the collision pass\nclass EnhancedTextLayer extends TextLayer {\n static { this.layerName = 'EnhancedTextLayer'; }\n filterSubLayer({ layer, renderPass }) {\n const background = layer.id.includes('primary-background');\n if (renderPass === 'collision') {\n return background; // Only draw primary background layer in collision pass\n }\n return !background; // Do not draw background layer in other passes\n }\n}\nconst defaultProps = {\n ...TextLayer.defaultProps,\n getRadius: { type: 'accessor', value: 1 },\n radiusScale: { type: 'number', min: 0, value: 1 }\n};\nexport default class PointLabelLayer extends CompositeLayer {\n static { this.layerName = 'PointLabelLayer'; }\n static { this.defaultProps = defaultProps; }\n calculatePixelOffset(secondary) {\n const { getTextAnchor: anchor, getAlignmentBaseline: alignment, getRadius, getSecondaryText, radiusScale, secondarySizeScale, sizeScale } = this.props;\n const xMult = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const yMult = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n // Padding based on font size (font size / 4)\n const xPadding = sizeScale / 4;\n const yPadding = sizeScale * (1 + 1 / 4);\n // Place secondary label under main label (secondary label always 'top' baseline aligned)\n const secondaryOffset = 0.6 * (1 - yMult) * sizeScale;\n let yOffset = secondary ? secondaryOffset : 0;\n // Special case, position relative to secondary label\n if (anchor === 'middle' && alignment === 'top' && getSecondaryText) {\n yOffset -= secondaryOffset;\n yOffset -= secondarySizeScale;\n yOffset += sizeScale;\n }\n // Padding based on point radius (radius/ 4)\n const radiusPadding = 1 + 1 / 4;\n return typeof getRadius === 'function'\n ? (d, info) => {\n const r = (info ? getRadius(d, info) : 1) * radiusScale * radiusPadding;\n return [xMult * (r + xPadding), yMult * (r + yPadding) + yOffset];\n }\n : [\n xMult * (getRadius * radiusScale * radiusPadding + xPadding),\n yMult * (getRadius * radiusScale * radiusPadding + yPadding) + yOffset\n ];\n }\n calculateBackgroundPadding() {\n const { getTextAnchor: anchor, getAlignmentBaseline: alignment, sizeScale } = this.props;\n // Heuristics to avoid label overlap\n const paddingX = 12 * sizeScale;\n const paddingY = 3 * sizeScale;\n const backgroundPadding = [0, 0, 0, 0];\n if (alignment === 'top') {\n backgroundPadding[TOP] = paddingY;\n }\n else if (alignment === 'bottom') {\n backgroundPadding[BOTTOM] = paddingY;\n }\n else {\n backgroundPadding[TOP] = 0.5 * paddingY;\n backgroundPadding[BOTTOM] = 0.5 * paddingY;\n }\n if (anchor === 'start') {\n backgroundPadding[LEFT] = paddingX;\n }\n else if (anchor === 'end') {\n backgroundPadding[RIGHT] = paddingX;\n }\n else {\n backgroundPadding[LEFT] = 0.5 * paddingX;\n backgroundPadding[RIGHT] = 0.5 * paddingX;\n }\n return backgroundPadding;\n }\n renderTextLayer(id, { updateTriggers: updateTriggersOverride = {}, ...props }) {\n const { data, characterSet, fontFamily, fontSettings, fontWeight, outlineColor, outlineWidth, sizeScale, radiusScale, getAlignmentBaseline, getColor, getPosition, getTextAnchor, updateTriggers } = this.props;\n return new EnhancedTextLayer(this.getSubLayerProps({\n id,\n data,\n characterSet,\n fontFamily,\n fontSettings,\n fontWeight,\n outlineColor,\n outlineWidth,\n sizeScale,\n getAlignmentBaseline,\n getColor,\n getPosition,\n getTextAnchor,\n updateTriggers: {\n ...updateTriggers,\n ...updateTriggersOverride,\n getPixelOffset: [\n updateTriggers.getRadius,\n updateTriggers.getTextAnchor,\n updateTriggers.getAlignmentBaseline,\n radiusScale,\n sizeScale\n ]\n }\n }), {\n getSize: 1,\n _subLayerProps: { background: { type: EnhancedTextBackgroundLayer } }\n }, props);\n }\n renderLayers() {\n const { getText, getSecondaryColor, getSecondaryText, secondaryOutlineColor, secondarySizeScale, updateTriggers } = this.props;\n const getPixelOffset = this.calculatePixelOffset(false);\n const backgroundPadding = this.calculateBackgroundPadding();\n const out = [\n // Text doesn't update via updateTrigger for some reason\n this.renderTextLayer(`${updateTriggers.getText}-primary`, {\n backgroundPadding,\n getText,\n getPixelOffset,\n background: true // Only use background for primary label for faster collisions\n }),\n Boolean(getSecondaryText) &&\n this.renderTextLayer(`${updateTriggers.getSecondaryText}-secondary`, {\n getText: getSecondaryText,\n getPixelOffset: this.calculatePixelOffset(true),\n getAlignmentBaseline: 'top',\n // updateTriggers: {getText: updateTriggers.getSecondaryText},\n // Optional overrides\n ...(getSecondaryColor && { getColor: getSecondaryColor }),\n ...(secondarySizeScale && { sizeScale: secondarySizeScale }),\n ...(secondaryOutlineColor && { outlineColor: secondaryOutlineColor })\n })\n ];\n return out;\n }\n}\n", "import { CompositeLayer } from '@deck.gl/core';\nimport QuadbinLayer from \"./quadbin-layer.js\";\nimport QuadbinTileset2D from \"./quadbin-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { hexToBigInt } from 'quadbin';\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const { data } = props;\n if (!data || !data.length)\n return null;\n const isBigInt = typeof data[0].id === 'bigint';\n return new QuadbinLayer(props, {\n getQuadbin: isBigInt ? d => d.id : d => hexToBigInt(d.id)\n });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class QuadbinTileLayer extends CompositeLayer {\n static { this.layerName = 'QuadbinTileLayer'; }\n static { this.defaultProps = defaultProps; }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: 'quadbin' };\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data, maxresolution: maxZoom } = tileJSON;\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `quadbin-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D,\n renderSubLayers,\n maxZoom,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { _GeoCellLayer as GeoCellLayer } from '@deck.gl/geo-layers';\nimport { getQuadbinPolygon } from \"./quadbin-utils.js\";\nconst defaultProps = {\n getQuadbin: { type: 'accessor', value: (d) => d.quadbin }\n};\nexport default class QuadbinLayer extends GeoCellLayer {\n static { this.layerName = 'QuadbinLayer'; }\n static { this.defaultProps = defaultProps; }\n indexToBounds() {\n const { data, extruded, getQuadbin } = this.props;\n // To avoid z-fighting reduce polygon footprint when extruding\n const coverage = extruded ? 0.99 : 1;\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n getPolygon: (x, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo), coverage),\n updateTriggers: { getPolygon: coverage }\n };\n }\n}\n", "import { worldToLngLat } from '@math.gl/web-mercator';\nimport { cellToTile } from 'quadbin';\nconst TILE_SIZE = 512;\nexport function quadbinToOffset(quadbin) {\n const { x, y, z } = cellToTile(quadbin);\n const scale = TILE_SIZE / (1 << z);\n return [x * scale, TILE_SIZE - y * scale, scale];\n}\nexport function quadbinToWorldBounds(quadbin, coverage) {\n const [xOffset, yOffset, scale] = quadbinToOffset(quadbin);\n return [\n [xOffset, yOffset],\n [xOffset + coverage * scale, yOffset - coverage * scale]\n ];\n}\nexport function getQuadbinPolygon(quadbin, coverage = 1) {\n const [topLeft, bottomRight] = quadbinToWorldBounds(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", "import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';\nimport { bigIntToHex, cellToParent, cellToTile, getResolution, tileToCell } from 'quadbin';\nexport default class QuadbinTileset2D extends Tileset2D {\n // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT\n getTileIndices(opts) {\n return super\n .getTileIndices(opts)\n .map(tileToCell)\n .map(q => ({ q, i: bigIntToHex(q) }));\n }\n // @ts-expect-error TileIndex must be generic\n getTileId({ q, i }) {\n return i || bigIntToHex(q);\n }\n // @ts-expect-error TileIndex must be generic\n getTileMetadata({ q }) {\n return super.getTileMetadata(cellToTile(q));\n }\n // @ts-expect-error TileIndex must be generic\n getTileZoom({ q }) {\n return Number(getResolution(q));\n }\n // @ts-expect-error TileIndex must be generic\n getParentIndex({ q }) {\n return { q: cellToParent(q) };\n }\n}\n", "import { CompositeLayer } from '@deck.gl/core';\nimport RasterLayer from \"./raster-layer.js\";\nimport QuadbinTileset2D from \"./quadbin-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const tileIndex = props.tile?.index?.q;\n if (!tileIndex)\n return null;\n return new RasterLayer(props, { tileIndex });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class RasterTileLayer extends CompositeLayer {\n static { this.layerName = 'RasterTileLayer'; }\n static { this.defaultProps = defaultProps; }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `raster-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D,\n renderSubLayers,\n minZoom,\n maxZoom,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { GL } from '@luma.gl/constants';\nimport { CompositeLayer } from '@deck.gl/core';\nimport { ColumnLayer } from '@deck.gl/layers';\nimport { quadbinToOffset } from \"./quadbin-utils.js\";\nimport vs from \"./raster-layer-vertex.glsl.js\";\nimport { assert, createBinaryProxy } from \"../utils.js\";\nconst defaultProps = {\n ...ColumnLayer.defaultProps,\n extruded: false,\n diskResolution: 4,\n vertices: [\n [-0.5, -0.5],\n [0.5, -0.5],\n [0.5, 0.5],\n [-0.5, 0.5]\n ]\n};\n// Modified ColumnLayer with custom vertex shader\nclass RasterColumnLayer extends ColumnLayer {\n static { this.layerName = 'RasterColumnLayer'; }\n getShaders() {\n const shaders = super.getShaders();\n const data = this.props.data;\n const BLOCK_WIDTH = data.blockWidth || Math.sqrt(data.length);\n return { ...shaders, defines: { ...shaders.defines, BLOCK_WIDTH }, vs };\n }\n initializeState() {\n // Only add attributes needed by shader\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n instanceElevations: {\n size: 1,\n transition: true,\n accessor: 'getElevation'\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n type: GL.UNSIGNED_BYTE,\n normalized: true,\n transition: true,\n accessor: 'getLineColor',\n defaultValue: [255, 255, 255, 255]\n }\n });\n }\n}\n// Adapter layer around RasterColumnLayer that converts data & accessors into correct format\nexport default class RasterLayer extends CompositeLayer {\n static { this.layerName = 'RasterLayer'; }\n static { this.defaultProps = defaultProps; }\n renderLayers() {\n // Rendering props underlying layer\n const { data, getElevation, getFillColor, getLineColor, getLineWidth, tileIndex, updateTriggers } = this.props;\n if (!data || !tileIndex)\n return null;\n const { blockWidth, blockHeight } = data;\n assert(blockWidth === blockHeight, `blockWidth (${blockWidth}) must equal blockHeight (${blockHeight})`);\n const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);\n const offset = [xOffset, yOffset, scale / blockWidth];\n // Filled Column Layer\n const CellLayer = this.getSubLayerClass('column', RasterColumnLayer);\n return new CellLayer(this.props, this.getSubLayerProps({\n id: 'cell',\n updateTriggers,\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n }), {\n data: {\n data, // Pass through data for getSubLayerAccessor()\n length: blockWidth * blockHeight\n },\n offset\n });\n }\n getSubLayerAccessor(accessor) {\n if (typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n // Proxy values back in standard feature format\n return (object, info) => {\n const { data, index } = info;\n const binaryData = data.data;\n const proxy = createBinaryProxy(binaryData.cells, index);\n // @ts-ignore (TS2349) accessor is always function\n return accessor({ properties: proxy }, info);\n };\n }\n}\n", "export default `\\\n#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\n\nin vec3 positions;\nin vec3 normals;\n\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\n\nin vec3 instancePickingColors;\n\n// Custom uniforms\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\n\n// Result\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\n\nvoid main(void) {\n // Rather than positioning using attribute, layout pixel grid using gl_InstanceID\n vec2 common_position = offset.xy;\n float scale = offset.z;\n\n int yIndex = - (gl_InstanceID / BLOCK_WIDTH);\n int xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);\n common_position += scale * vec2(float(xIndex), float(yIndex));\n\n vec4 color = isStroke ? instanceLineColors : instanceFillColors;\n\n // if alpha == 0.0 or z < 0.0, do not render element\n float shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\n float cellWidth = coverage * scale;\n\n // Get position directly from quadbin, rather than projecting\n // Important to set geometry.position before using project_ methods below\n // as geometry.worldPosition is not set (we don't know our lat/long)\n geometry.position = vec4(common_position, 0.0, 1.0);\n if (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\n geometry.position.xyz -= project_uCommonOrigin;\n }\n\n // calculate elevation, if 3d not enabled set to 0\n // cylindar geometry height are between -1.0 to 1.0, transform it to between 0, 1\n float elevation = 0.0;\n // calculate stroke offset\n float strokeOffsetRatio = 1.0;\n\n if (extruded) {\n elevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n } else if (stroked) {\n float halfOffset = project_pixel_size(widthScale) / cellWidth;\n if (isStroke) {\n strokeOffsetRatio -= sign(positions.z) * halfOffset;\n } else {\n strokeOffsetRatio -= halfOffset;\n }\n }\n\n geometry.pickingColor = instancePickingColors;\n\n // project center of column\n vec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;\n vec3 pos = vec3(offset, project_size(elevation));\n DECKGL_FILTER_SIZE(pos, geometry);\n\n geometry.position.xyz += pos;\n gl_Position = project_common_position_to_clipspace(geometry.position);\n\n geometry.normal = project_normal(normals);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n // Light calculations\n if (extruded && !isStroke) {\n#ifdef FLAT_SHADING\n position_commonspace = geometry.position;\n vColor = vec4(color.rgb, color.a * opacity);\n#else\n vec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\n vColor = vec4(lightColor, color.a * opacity);\n#endif\n } else {\n vColor = vec4(color.rgb, color.a * opacity);\n }\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n", "import { registerLoaders } from '@loaders.gl/core';\nimport CartoPropertiesTileLoader from \"./schema/carto-properties-tile-loader.js\";\nimport CartoVectorTileLoader from \"./schema/carto-vector-tile-loader.js\";\nregisterLoaders([CartoPropertiesTileLoader, CartoVectorTileLoader]);\nimport { ClipExtension } from '@deck.gl/extensions';\nimport { MVTLayer, _getURLFromTemplate } from '@deck.gl/geo-layers';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { binaryToGeojson } from '@loaders.gl/gis';\nimport { TilejsonPropType, injectAccessToken, mergeBoundaryData } from \"./utils.js\";\nconst defaultProps = {\n ...MVTLayer.defaultProps,\n data: TilejsonPropType,\n dataComparator: TilejsonPropType.equal\n};\n// @ts-ignore\nexport default class VectorTileLayer extends MVTLayer {\n static { this.layerName = 'VectorTileLayer'; }\n static { this.defaultProps = defaultProps; }\n constructor(...propObjects) {\n // Force externally visible props type, as it is not possible modify via extension\n // @ts-ignore\n super(...propObjects);\n }\n initializeState() {\n super.initializeState();\n this.setState({ binary: true });\n }\n updateState(parameters) {\n const { props } = parameters;\n if (props.data) {\n super.updateState(parameters);\n const formatTiles = new URL(props.data.tiles[0]).searchParams.get('formatTiles');\n const mvt = formatTiles === 'mvt';\n this.setState({ mvt });\n }\n }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.gis = { format: 'binary' }; // Use binary for MVT loading\n return loadOptions;\n }\n async getTileData(tile) {\n const tileJSON = this.props.data;\n const { tiles, properties_tiles } = tileJSON;\n const url = _getURLFromTemplate(tiles, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n const loadOptions = this.getLoadOptions();\n const { fetch } = this.props;\n const { signal } = tile;\n // Fetch geometry and attributes separately\n const geometryFetch = fetch(url, { propName: 'data', layer: this, loadOptions, signal });\n if (!properties_tiles) {\n return await geometryFetch;\n }\n const propertiesUrl = _getURLFromTemplate(properties_tiles, tile);\n if (!propertiesUrl) {\n return Promise.reject('Invalid properties URL');\n }\n const attributesFetch = fetch(propertiesUrl, {\n propName: 'data',\n layer: this,\n loadOptions,\n signal\n });\n const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);\n if (!geometry)\n return null;\n return attributes ? mergeBoundaryData(geometry, attributes) : geometry;\n }\n renderSubLayers(props) {\n if (props.data === null) {\n return null;\n }\n if (this.state.mvt) {\n return super.renderSubLayers(props);\n }\n const tileBbox = props.tile.bbox;\n const { west, south, east, north } = tileBbox;\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n if (this.state.binary && info.index !== -1) {\n const { data } = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {\n globalFeatureId: info.index\n });\n }\n return info;\n }\n}\n", "import { NumericPropKeyValueReader, PropertiesReader } from \"./carto-tile.js\";\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { properties: [], numericProps: {} }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 2) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n }\n}\n", "import { TileReader } from \"./carto-properties-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nconst CartoPropertiesTileLoader = {\n name: 'CARTO Properties Tile',\n version: '1',\n id: 'cartoPropertiesTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-properties-tile'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoPropertiesTile(arrayBuffer, options),\n parseSync: parseCartoPropertiesTile,\n options: {}\n};\nfunction parseCartoPropertiesTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n return parsePbf(arrayBuffer, TileReader);\n}\nexport default CartoPropertiesTileLoader;\n", "import earcut from 'earcut';\nimport { TileReader } from \"./carto-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nconst VERSION = typeof \"9.0.0-beta.3\" !== 'undefined' ? \"9.0.0-beta.3\" : 'latest';\nconst id = 'cartoVectorTile';\nconst DEFAULT_OPTIONS = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoVectorTileLoader = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction triangulatePolygon(polygons, target, { startPosition, endPosition, indices }) {\n const coordLength = polygons.positions.size;\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.value.subarray(start, end);\n // Holes are referenced relative to outer polygon\n const holes = indices.slice(1).map((n) => n - startPosition);\n // Compute triangulation\n const triangles = earcut(polygonPositions, holes, coordLength);\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n target.push(startPosition + triangles[t]);\n }\n}\nfunction triangulate(polygons) {\n const { polygonIndices, primitivePolygonIndices } = polygons;\n const triangles = [];\n let rangeStart = 0;\n for (let i = 0; i < polygonIndices.value.length - 1; i++) {\n const startPosition = polygonIndices.value[i];\n const endPosition = polygonIndices.value[i + 1];\n // Extract hole indices between start & end position\n const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);\n const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);\n rangeStart = rangeEnd;\n triangulatePolygon(polygons, triangles, { startPosition, endPosition, indices });\n }\n polygons.triangles = { value: new Uint32Array(triangles), size: 1 };\n}\nfunction parseCartoVectorTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n if (tile.polygons && !tile.polygons.triangles) {\n triangulate(tile.polygons);\n }\n return tile;\n}\nexport default CartoVectorTileLoader;\n", "const baseUrl = 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json';\nexport default {\n VOYAGER: baseUrl.replace('{basemap}', 'voyager'),\n POSITRON: baseUrl.replace('{basemap}', 'positron'),\n DARK_MATTER: baseUrl.replace('{basemap}', 'dark-matter'),\n VOYAGER_NOLABELS: baseUrl.replace('{basemap}', 'voyager-nolabels'),\n POSITRON_NOLABELS: baseUrl.replace('{basemap}', 'positron-nolabels'),\n DARK_MATTER_NOLABELS: baseUrl.replace('{basemap}', 'dark-matter-nolabels')\n};\n", "import { scaleThreshold } from 'd3-scale';\nimport getPalette, { DEFAULT_PALETTE, NULL_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color bins style based on `d3` `scaleThreshold`.\n *\n * Data values of each attribute are rounded down to the nearest value in the domain and are then\n * styled with the corresponding color.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorBins({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers');\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length + 1) : colors;\n const color = scaleThreshold().domain(domain).range(palette);\n return d => {\n const value = getAttrValue(attr, d);\n return typeof value === 'number' && Number.isFinite(value) ? color(value) : nullColor;\n };\n}\n", "import * as cartoColors from 'cartocolor';\nimport { assert } from \"../utils.js\";\nexport const DEFAULT_PALETTE = 'PurpOr';\nexport const NULL_COLOR = [204, 204, 204];\nexport const OTHERS_COLOR = [119, 119, 119];\nexport default function getPalette(name, numCategories) {\n const palette = cartoColors[name];\n let paletteIndex = numCategories;\n assert(palette, `Palette \"${name}\" not found. Expected a CARTOColors string`);\n const palettesColorVariants = Object.keys(palette)\n .filter(p => p !== 'tags')\n .map(Number);\n const longestPaletteIndex = Math.max(...palettesColorVariants);\n const smallestPaletteIndex = Math.min(...palettesColorVariants);\n if (!Number.isInteger(numCategories) || numCategories > longestPaletteIndex) {\n paletteIndex = longestPaletteIndex;\n }\n else if (numCategories < smallestPaletteIndex) {\n paletteIndex = smallestPaletteIndex;\n }\n let colors = palette[paletteIndex];\n if (palette.tags && palette.tags.includes('qualitative')) {\n colors = colors.slice(0, -1);\n }\n return colors.map(c => hexToRgb(c));\n}\nexport function hexToRgb(hex) {\n // Evaluate #ABC\n let result = /^#?([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})$/i.exec(hex);\n if (result) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n 255\n ];\n }\n // Evaluate #ABCD\n result = /^#?([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})$/i.exec(hex);\n if (result) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n parseInt(result[4] + result[4], 16)\n ];\n }\n // Evaluate #ABCDEF\n result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16), 255];\n }\n // Evaluate #ABCDEFAF\n result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n assert(result, `Hexadecimal color \"${hex}\" was not parsed correctly`);\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n parseInt(result[4], 16)\n ];\n}\n", "import { assert } from \"../utils.js\";\nconst ALLOWED_ATTR_TYPES = Object.freeze(['function', 'string']);\nexport function getAttrValue(attr, d) {\n assert(typeof d === 'object', 'Expected \"data\" to be an object');\n assert(ALLOWED_ATTR_TYPES.includes(typeof attr), 'Expected \"attr\" to be a function or string');\n // Is function\n if (typeof attr === 'function') {\n return attr(d);\n }\n return d?.properties?.[attr];\n}\n", "import getPalette, { DEFAULT_PALETTE, NULL_COLOR, OTHERS_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color category style.\n *\n * Data values of each attribute listed in the domain are mapped one to one\n * with corresponding colors in the range.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorCategories({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR, othersColor = OTHERS_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers or strings');\n const colorsByCategory = {};\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length) : colors;\n for (const [i, c] of domain.entries()) {\n colorsByCategory[c] = palette[i];\n }\n return d => {\n const value = getAttrValue(attr, d);\n return (typeof value === 'number' && Number.isFinite(value)) || typeof value === 'string'\n ? colorsByCategory[value] || othersColor\n : nullColor;\n };\n}\n", "import { scaleLinear } from 'd3-scale';\nimport getPalette, { DEFAULT_PALETTE, NULL_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color continuous style.\n *\n * Data values of each field are interpolated linearly across values in the domain and\n * are then styled with a blend of the corresponding color in the range.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorContinuous({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers');\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length) : colors;\n const color = scaleLinear().domain(domain).range(palette);\n return d => {\n const value = getAttrValue(attr, d);\n return typeof value === 'number' && Number.isFinite(value) ? color(value) : nullColor;\n };\n}\n", "/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n constructor(error, errorContext, response) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n }\n else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n }\n else if (response.status === 404) {\n responseString += 'Not found';\n }\n else {\n responseString += 'Error';\n }\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType')\n continue; // eslint-disable-line no-continue\n message += `\\n${formatErrorKey(key)}: ${errorContext[key]}`;\n }\n message += '\\n';\n super(message);\n this.name = 'CartoAPIError';\n this.response = response;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());\n}\n", "export const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\nexport const DEFAULT_CLIENT = 'deck-gl-carto';\nexport const V3_MINOR_VERSION = '3.3';\nexport const MAX_GET_LENGTH = 8192;\nexport const DEFAULT_PARAMETERS = {\n client: DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n};\nexport const DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n};\n", "function joinPath(...args) {\n return args.map(part => (part.endsWith('/') ? part.slice(0, -1) : part)).join('/');\n}\nfunction buildV3Path(apiBaseUrl, version, endpoint, ...rest) {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\nexport function buildPublicMapUrl({ apiBaseUrl, cartoMapId }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\nexport function buildStatsUrl({ attribute, apiBaseUrl, connectionName, source, type }) {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n // type === 'table'\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, source, attribute);\n}\nexport function buildSourceUrl({ apiBaseUrl, connectionName, endpoint }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\nexport function buildQueryUrl({ apiBaseUrl, connectionName }) {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n", "import { CartoAPIError } from \"./carto-api-error.js\";\nimport { DEFAULT_HEADERS, DEFAULT_PARAMETERS, MAX_GET_LENGTH } from \"./common.js\";\n/**\n * Simple encode parameter\n */\nfunction encodeParameter(name, value) {\n return `${name}=${encodeURIComponent(value)}`;\n}\nconst REQUEST_CACHE = new Map();\nexport async function requestWithParameters({ accessToken, baseUrl, parameters, headers: customHeaders, errorContext }) {\n const key = JSON.stringify({ baseUrl, parameters, customHeaders });\n if (REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n let url = baseUrl;\n if (parameters) {\n const allParameters = { ...DEFAULT_PARAMETERS, ...parameters };\n const encodedParameters = Object.entries(allParameters).map(([key, value]) => {\n return encodeParameter(key, value);\n });\n url += `?${encodedParameters.join('&')}`;\n }\n const headers = { ...DEFAULT_HEADERS, ...customHeaders };\n try {\n /* global fetch */\n let response;\n if (url.length > MAX_GET_LENGTH) {\n response = await fetch(baseUrl, { method: 'POST', body: JSON.stringify(parameters), headers });\n }\n else {\n response = await fetch(url, { headers });\n }\n let json;\n try {\n json = await response.json();\n if (accessToken) {\n json.accessToken = accessToken;\n }\n }\n catch {\n json = { error: '' };\n }\n if (!response.ok) {\n REQUEST_CACHE.delete(key);\n throw new CartoAPIError(json.error, errorContext, response);\n }\n REQUEST_CACHE.set(key, json);\n return json;\n }\n catch (error) {\n throw new CartoAPIError(error, errorContext);\n }\n}\n", "/* eslint-disable camelcase */\nimport { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from \"../api/common.js\";\nimport { buildSourceUrl } from \"../api/endpoints.js\";\nimport { requestWithParameters } from \"../api/request-with-parameters.js\";\nexport const SOURCE_DEFAULTS = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: DEFAULT_CLIENT,\n format: 'tilejson',\n headers: {}\n};\nexport async function baseSource(endpoint, options, urlParameters) {\n const { accessToken, connectionName, cache, ...optionalOptions } = options;\n const mergedOptions = { ...SOURCE_DEFAULTS, accessToken, connectionName, endpoint };\n for (const key in optionalOptions) {\n if (optionalOptions[key]) {\n mergedOptions[key] = optionalOptions[key];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const { format } = mergedOptions;\n const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };\n const errorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(urlParameters, undefined, 2)\n };\n const mapInstantiation = await requestWithParameters({\n baseUrl,\n parameters: urlParameters,\n headers,\n errorContext\n });\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(new URL(dataUrl).searchParams.get('cache') || '', 10);\n }\n errorContext.requestType = 'Map data';\n if (format === 'tilejson') {\n return await requestWithParameters({\n accessToken,\n baseUrl: dataUrl,\n headers,\n errorContext\n });\n }\n return await requestWithParameters({\n baseUrl: dataUrl,\n headers,\n errorContext\n });\n}\n", "import { baseSource } from \"./base-source.js\";\nexport const boundaryQuerySource = async function (options) {\n const { columns, filters, tilesetTableName, matchingColumn = 'id', propertiesSqlQuery, queryParameters } = options;\n const urlParameters = {\n tilesetTableName,\n matchingColumn,\n propertiesSqlQuery\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('boundary', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const boundaryTableSource = async function (options) {\n const { filters, tilesetTableName, columns, matchingColumn = 'id', propertiesTableName } = options;\n const urlParameters = {\n tilesetTableName,\n matchingColumn,\n propertiesTableName\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n return baseSource('boundary', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const h3QuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = 4, sqlQuery, spatialDataColumn = 'h3', queryParameters } = options;\n const urlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType: 'h3',\n q: sqlQuery\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const h3TableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = 4, columns, spatialDataColumn = 'h3', tableName } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'h3'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const h3TilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const rasterSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('raster', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinQuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = 6, sqlQuery, spatialDataColumn = 'quadbin', queryParameters } = options;\n const urlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType: 'quadbin'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinTableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = 6, columns, spatialDataColumn = 'quadbin', tableName } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'quadbin'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const quadbinTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const vectorQuerySource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', sqlQuery, queryParameters } = options;\n const urlParameters = { spatialDataColumn, spatialDataType: 'geo', q: sqlQuery };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const vectorTableSource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', tableName } = options;\n const urlParameters = { name: tableName, spatialDataColumn, spatialDataType: 'geo' };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const vectorTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "import { GL } from '@luma.gl/constants';\nimport { log } from '@deck.gl/core';\nimport { AGGREGATION, getLayer, getColorAccessor, getColorValueAccessor, getSizeAccessor, getTextAccessor, OPACITY_MAP, opacityToAlpha, getIconUrlAccessor, negateAccessor, getMaxMarkerSize } from \"./layer-map.js\";\nimport PointLabelLayer from \"../layers/point-label-layer.js\";\nimport { CollisionFilterExtension } from '@deck.gl/extensions';\nimport { assert } from \"../utils.js\";\nconst collisionFilterExtension = new CollisionFilterExtension();\nexport function parseMap(json) {\n const { keplerMapConfig, datasets, token } = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const { mapState, mapStyle } = keplerMapConfig.config;\n const { layers, layerBlending, interactionConfig } = keplerMapConfig.config.visState;\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n token,\n layers: layers.reverse().map(({ id, type, config, visualChannels }) => {\n try {\n const { dataId } = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const { data } = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const { Layer, propMap, defaultProps } = getLayer(type, config, dataset);\n const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\n });\n }\n catch (e) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\nfunction createParametersProp(layerBlending, parameters) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = GL.FUNC_ADD;\n }\n else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = [GL.FUNC_SUBTRACT, GL.FUNC_ADD];\n }\n return Object.keys(parameters).length ? { parameters } : {};\n}\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n }\n else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n }\n else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\nfunction createStyleProps(config, mapping) {\n const result = {};\n mapProps(config, result, mapping);\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(id, type, config, visualChannels, data) {\n const { colorField, colorScale, radiusField, radiusScale, sizeField, sizeScale, strokeColorField, strokeColorScale } = visualChannels;\n let { heightField, heightScale } = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const { textLabel, visConfig } = config;\n const result = {};\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const { colorAggregation } = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n }\n else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n }\n else if (colorField) {\n const { colorAggregation: aggregation, colorRange: range } = visConfig;\n result.getFillColor = getColorAccessor(colorField, \n // @ts-ignore\n colorScale, { aggregation, range }, visConfig.opacity, data);\n }\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({ geometry, properties }) => {\n const { type, coordinates } = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField, \n // @ts-ignore\n radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);\n }\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const { strokeColorAggregation: aggregation, strokeColorRange: range } = visConfig;\n result.getLineColor = getColorAccessor(strokeColorField, \n // @ts-ignore\n strokeColorScale, \n // @ts-ignore\n { aggregation, range }, opacity, data);\n }\n if (heightField && visConfig.enable3d) {\n result.getElevation = getSizeAccessor(heightField, \n // @ts-ignore\n heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);\n }\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const { getPointRadius, getFillColor } = result;\n const { customMarkersUrl, customMarkersRange, filled: useMaskedIcons } = visConfig;\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(visualChannels.customMarkersField, customMarkersRange, { fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons }, data);\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data));\n }\n }\n else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const { color: getSecondaryColor, field: secondaryField, outlineColor: secondaryOutlineColor, size: secondarySizeScale } = secondaryLabel || {};\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = { sdf: true };\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n type: PointLabelLayer,\n extensions: [collisionFilterExtension],\n collisionEnabled: true,\n collisionGroup,\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? { getRadius: result.getPointRadius }\n : { radiusScale: visConfig.radius }),\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n })\n }\n };\n }\n return result;\n}\nfunction createLoadOptions(accessToken) {\n return {\n loadOptions: { fetch: { headers: { Authorization: `Bearer ${accessToken}` } } }\n };\n}\n", "import { deviation, extent, groupSort, median, variance } from 'd3-array';\nimport { rgb } from 'd3-color';\nimport { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt, scaleThreshold } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport moment from 'moment-timezone';\nimport { CPUGridLayer, HeatmapLayer, HexagonLayer } from '@deck.gl/aggregation-layers';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { H3HexagonLayer } from '@deck.gl/geo-layers';\nimport H3TileLayer from \"../layers/h3-tile-layer.js\";\nimport QuadbinTileLayer from \"../layers/quadbin-tile-layer.js\";\nimport RasterTileLayer from \"../layers/raster-tile-layer.js\";\nimport VectorTileLayer from \"../layers/vector-tile-layer.js\";\nimport { assert, createBinaryProxy, scaleIdentity } from \"../utils.js\";\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold,\n identity: scaleIdentity\n};\nfunction identity(v) {\n return v;\n}\nconst UNKNOWN_COLOR = '#868d91';\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\nconst hexToRGBA = c => {\n const { r, g, b, opacity } = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n// Kepler prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\nconst customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize'\n }\n};\nconst aggregationVisConfig = {\n colorAggregation: x => ({ colorAggregation: AGGREGATION[x] || AGGREGATION.sum }),\n colorRange: x => ({ colorRange: x.colors.map(hexToRGBA) }),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\nfunction mergePropMaps(a = {}, b = {}) {\n return { ...a, ...b, visConfig: { ...a.visConfig, ...b.visConfig } };\n}\nexport function getLayer(type, config, dataset) {\n let basePropMap = sharedPropMap;\n if (config.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);\n }\n if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {\n return getTileLayer(dataset, basePropMap);\n }\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n const hexagonId = config.columns?.hex_id;\n const layerTypeDefs = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {\n columns: {\n altitude: x => ({ parameters: { depthTest: Boolean(x) } })\n },\n visConfig: { outline: 'stroked' }\n }\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: x => ({ cellSize: 1000 * x }) } },\n defaultProps: { getPosition }\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: { visConfig: { ...aggregationVisConfig, radius: 'radiusPixels' } },\n defaultProps: { getPosition }\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: x => ({ radius: 1000 * x }) } },\n defaultProps: { getPosition }\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: { visConfig: { coverage: 'coverage' } },\n defaultProps: { getHexagon: d => d[hexagonId], stroked: false }\n }\n };\n const layer = layerTypeDefs[type];\n assert(layer, `Unsupported layer type: ${type}`);\n return {\n ...layer,\n propMap: mergePropMaps(basePropMap, layer.propMap),\n defaultProps: { ...defaultProps, ...layer.defaultProps }\n };\n}\nexport function layerFromTileDataset(scheme, type) {\n if (type === 'raster') {\n return RasterTileLayer;\n }\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n return VectorTileLayer;\n}\nfunction getTileLayer(dataset, basePropMap) {\n const { aggregationExp, aggregationResLevel, data: { scheme } } = dataset;\n return {\n Layer: layerFromTileDataset(scheme),\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && { aggregationExp }),\n ...(aggregationResLevel && { aggregationResLevel }),\n uniqueIdProperty: 'geoid'\n }\n };\n}\nfunction domainFromAttribute(attribute, scaleType, scaleLength) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles.global\n ? attribute.quantiles.global[scaleLength]\n : attribute.quantiles[scaleLength];\n }\n let { min } = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\nfunction domainFromValues(values, scaleType) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return groupSort(values, g => -g.length, d => d);\n }\n else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n }\n else if (scaleType === 'log') {\n const [d0, d1] = extent(values);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\nfunction calculateDomain(data, name, scaleType, scaleLength) {\n if (data.tilestats) {\n // Tileset data type\n const { attributes } = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType, scaleLength);\n }\n else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({ properties }) => properties[name]);\n return domainFromValues(values, scaleType);\n }\n else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n return [0, 1];\n}\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return (object, info) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n const { data, index } = info;\n const proxy = createBinaryProxy(data, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\nexport function opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\nfunction getAccessorKeys(name, aggregation) {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\nfunction findAccessorKey(keys, properties) {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n throw new Error(`Could not find property for any accessor key: ${keys}`);\n}\nexport function getColorValueAccessor({ name }, colorAggregation, data) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\nexport function getColorAccessor({ name, colorColumn }, scaleType, { aggregation, range }, opacity, data) {\n const scale = calculateLayerScale(colorColumn || name, scaleType, range, data);\n const alpha = opacityToAlpha(opacity);\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const { r, g, b } = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\nfunction calculateLayerScale(name, scaleType, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\n let domain = [];\n let scaleColor = [];\n if (scaleType !== 'identity') {\n const { colorMap, colors } = range;\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n }\n else {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n }\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n return scale;\n}\nconst FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\nexport function getIconUrlAccessor(field, range, { fallbackUrl, maxIconSize, useMaskedIcons }, data) {\n const urlToUnpackedIcon = (url) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n const mapping = {};\n for (const { value, markerUrl } of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n const accessor = properties => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\nexport function getMaxMarkerSize(visConfig, visualChannels) {\n const { radiusRange, radius } = visConfig;\n const { radiusField, sizeField } = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\nexport function negateAccessor(accessor) {\n return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;\n}\nexport function getSizeAccessor({ name }, scaleType, aggregation, range, data) {\n const scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;\n if (scaleType) {\n if (aggregation !== 'count') {\n scale.domain(calculateDomain(data, name, scaleType));\n }\n scale.range(range);\n }\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\n };\n return normalizeAccessor(accessor, data);\n}\nconst FORMATS = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\nexport function getTextAccessor({ name, type }, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\nexport { domainFromValues as _domainFromValues };\n", "/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport { CartoAPIError } from \"./carto-api-error.js\";\nimport { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from \"./common.js\";\nimport { buildPublicMapUrl, buildStatsUrl } from \"./endpoints.js\";\nimport { h3QuerySource, h3TableSource, quadbinQuerySource, quadbinTableSource, vectorQuerySource, vectorTableSource, vectorTilesetSource } from \"../sources/index.js\";\nimport { parseMap } from \"./parse-map.js\";\nimport { requestWithParameters } from \"./request-with-parameters.js\";\nimport { assert } from \"../utils.js\";\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(dataset, accessToken, apiBaseUrl, clientId, headers) {\n const { aggregationExp, aggregationResLevel, connectionName, columns, format, geoColumn, source, type, queryParameters } = dataset;\n const cache = {};\n const globalOptions = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({ ...globalOptions, tableName: source });\n }\n else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = { ...globalOptions, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await vectorTableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await vectorQuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n else if (spatialDataType === 'h3') {\n const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await h3TableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await h3QuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n else if (spatialDataType === 'quadbin') {\n const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await quadbinTableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await quadbinQuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n return cacheChanged;\n}\nasync function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {\n const { connectionName, data, id, source, type, queryParameters } = dataset;\n const errorContext = {\n requestType: 'Tile stats',\n connection: connectionName,\n type,\n source\n };\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n const baseUrl = buildStatsUrl({ attribute, apiBaseUrl, ...dataset });\n const headers = { Authorization: `Bearer ${accessToken}` };\n const parameters = {};\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext\n });\n // Replace tilestats for attribute with value from API\n const { attributes } = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\nasync function fillInMapDatasets({ datasets, token }, clientId, apiBaseUrl, headers) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers));\n return await Promise.all(promises);\n}\nasync function fillInTileStats({ datasets, keplerMapConfig, token }, apiBaseUrl) {\n const attributes = [];\n const { layers } = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset && dataset.type !== 'tileset' && dataset.data.tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({ attribute, dataset });\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes = [];\n for (const a of attributes) {\n if (!filteredAttributes.find(({ attribute, dataset }) => attribute === a.attribute && dataset === a.dataset)) {\n filteredAttributes.push(a);\n }\n }\n const promises = filteredAttributes.map(({ attribute, dataset }) => _fetchTilestats(attribute, dataset, token, apiBaseUrl));\n return await Promise.all(promises);\n}\n/* eslint-disable max-statements */\nexport async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientId = DEFAULT_CLIENT, headers = {}, autoRefresh, onNewData }) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');\n }\n const baseUrl = buildPublicMapUrl({ apiBaseUrl, cartoMapId });\n const errorContext = { requestType: 'Public map', mapId: cartoMapId };\n const map = await requestWithParameters({ baseUrl, headers, errorContext });\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(({ type }) => type === 'geojson' || type === 'point');\n const geojsonDatasetIds = geojsonLayers.map(({ config }) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const { config } = geojsonLayers.find(({ config }) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, apiBaseUrl, headers);\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\n const out = { ...parseMap(map), ...{ stopAutoRefresh } };\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace('Inter', 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)');\n await font.load().then(f => document.fonts.add(f));\n }\n return out;\n}\n", "import { SOURCE_DEFAULTS } from \"../sources/index.js\";\nimport { buildQueryUrl } from \"./endpoints.js\";\nimport { requestWithParameters } from \"./request-with-parameters.js\";\nexport const query = async function (options) {\n const { apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl, connectionName, sqlQuery, queryParameters } = options;\n const urlParameters = { q: sqlQuery };\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n const baseUrl = buildQueryUrl({ apiBaseUrl, connectionName });\n const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };\n const errorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(urlParameters, undefined, 2)\n };\n return await requestWithParameters({\n baseUrl,\n parameters: urlParameters,\n headers,\n errorContext\n });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_core", "import_geo_layers", "h3Indices", "Tileset2D", "import_core", "TileReader", "Protobuf", "id", "TileReader", "TileReader", "id", "VERSION", "id", "DEFAULT_OPTIONS", "TileReader", "import_geo_layers", "import_core", "deepEqual", "defaultProps", "import_core", "TextBackgroundLayer", "defaultProps", "id", "import_core", "import_geo_layers", "import_quadbin", "defaultProps", "GeoCellLayer", "import_geo_layers", "import_quadbin", "Tileset2D", "import_quadbin", "renderSubLayers", "defaultProps", "import_core", "import_core", "import_layers", "defaultProps", "renderSubLayers", "defaultProps", "import_core", "TileReader", "TileReader", "VERSION", "id", "DEFAULT_OPTIONS", "earcut", "TileReader", "import_geo_layers", "import_layers", "defaultProps", "fetch", "import_d3_scale", "baseUrl", "key", "baseUrl", "
|
|
4
|
+
"sourcesContent": ["import { default as H3TileLayer } from \"./layers/h3-tile-layer.js\";\nimport { default as _PointLabelLayer } from \"./layers/point-label-layer.js\";\nimport { default as QuadbinTileLayer } from \"./layers/quadbin-tile-layer.js\";\nimport { default as RasterTileLayer } from \"./layers/raster-tile-layer.js\";\nimport { default as VectorTileLayer } from \"./layers/vector-tile-layer.js\";\nconst CARTO_LAYERS = {\n H3TileLayer,\n _PointLabelLayer,\n QuadbinTileLayer,\n RasterTileLayer,\n VectorTileLayer\n};\nexport { CARTO_LAYERS, H3TileLayer, _PointLabelLayer, QuadbinTileLayer, RasterTileLayer, VectorTileLayer };\nexport { default as BASEMAP } from \"./basemap.js\";\nexport { default as colorBins } from \"./style/color-bins-style.js\";\nexport { default as colorCategories } from \"./style/color-categories-style.js\";\nexport { default as colorContinuous } from \"./style/color-continuous-style.js\";\nexport { CartoAPIError, fetchMap, query } from \"./api/index.js\";\nimport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, SOURCE_DEFAULTS } from \"./sources/index.js\";\nconst CARTO_SOURCES = {\n boundaryQuerySource,\n boundaryTableSource,\n h3QuerySource,\n h3TableSource,\n h3TilesetSource,\n rasterSource,\n quadbinQuerySource,\n quadbinTableSource,\n quadbinTilesetSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n};\nexport { boundaryQuerySource, boundaryTableSource, h3QuerySource, h3TableSource, h3TilesetSource, rasterSource, quadbinQuerySource, quadbinTableSource, quadbinTilesetSource, vectorQuerySource, vectorTableSource, vectorTilesetSource, CARTO_SOURCES, SOURCE_DEFAULTS };\n", "import { CompositeLayer } from '@deck.gl/core';\nimport { H3HexagonLayer } from '@deck.gl/geo-layers';\nimport H3Tileset2D, { getHexagonResolution } from \"./h3-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const { data } = props;\n const { index } = props.tile;\n if (!data || !data.length)\n return null;\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class H3TileLayer extends CompositeLayer {\n static { this.layerName = 'H3TileLayer'; }\n static { this.defaultProps = defaultProps; }\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: 'h3' };\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data } = tileJSON;\n let { minresolution, maxresolution } = tileJSON;\n // Convert Mercator zooms provided in props into H3 res levels\n // and clip into valid range provided from the tilejson\n if (this.props.minZoom) {\n minresolution = Math.max(minresolution, getHexagonResolution({ zoom: this.props.minZoom, latitude: 0 }));\n }\n if (this.props.maxZoom) {\n maxresolution = Math.min(maxresolution, getHexagonResolution({ zoom: this.props.maxZoom, latitude: 0 }));\n }\n // The naming is unfortunate, but minZoom & maxZoom in the context\n // of a Tileset2D refer to the resolution levels, not the Mercator zooms\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `h3-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n // minZoom and maxZoom are H3 resolutions, however we must use this naming as that is what the Tileset2D class expects\n minZoom: minresolution,\n maxZoom: maxresolution,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';\nimport { polygonToCells, latLngToCell, getResolution, cellToBoundary, cellToParent, gridDisk } from 'h3-js';\nfunction getHexagonsInBoundingBox({ west, north, east, south }, resolution) {\n const longitudeSpan = Math.abs(east - west);\n if (longitudeSpan > 180) {\n // This is a known issue in h3-js: polygonToCells does not work correctly\n // when longitude span is larger than 180 degrees.\n const nSegments = Math.ceil(longitudeSpan / 180);\n let h3Indices = [];\n for (let s = 0; s < nSegments; s++) {\n const segmentEast = east + s * 180;\n const segmentWest = Math.min(segmentEast + 179.9999999, west);\n h3Indices = h3Indices.concat(getHexagonsInBoundingBox({ west: segmentWest, north, east: segmentEast, south }, resolution));\n }\n return [...new Set(h3Indices)];\n }\n // `polygonToCells()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polygonToCells([\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ], resolution + oversample, true);\n return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;\n}\nfunction tileToBoundingBox(index) {\n const coordinates = cellToBoundary(index);\n const latitudes = coordinates.map(c => c[0]);\n const longitudes = coordinates.map(c => c[1]);\n const west = Math.min(...longitudes);\n const south = Math.min(...latitudes);\n const east = Math.max(...longitudes);\n const north = Math.max(...latitudes);\n return { west, south, east, north };\n}\n// Resolution conversion function. Takes a WebMercatorViewport and returns\n// a H3 resolution such that the screen space size of the hexagons is\n// similar\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\nexport function getHexagonResolution(viewport) {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\nexport default class H3Tileset2D extends Tileset2D {\n /**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileIndices({ viewport, minZoom, maxZoom }) {\n if (viewport.latitude === undefined)\n return [];\n const [east, south, west, north] = viewport.getBounds();\n let z = getHexagonResolution(viewport);\n let indices;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n // TODO support `extent` prop\n return [];\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply\n // get a ring centered on the hexagon in the viewport center\n const center = latLngToCell(viewport.latitude, viewport.longitude, maxZoom);\n indices = gridDisk(center, 1);\n }\n else {\n indices = getHexagonsInBoundingBox({ west, north, east, south }, z);\n }\n return indices.map(i => ({ i }));\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({ i }) {\n return i;\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({ i }) {\n return { bbox: tileToBoundingBox(i) };\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({ i }) {\n return getResolution(i);\n }\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index) {\n const resolution = getResolution(index.i);\n const i = cellToParent(index.i, resolution - 1);\n return { i };\n }\n}\n", "import { registerLoaders } from '@loaders.gl/core';\nimport CartoRasterTileLoader from \"./schema/carto-raster-tile-loader.js\";\nimport CartoSpatialTileLoader from \"./schema/carto-spatial-tile-loader.js\";\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\nimport { TileLayer } from '@deck.gl/geo-layers';\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\nconst defaultProps = {};\nexport default class SpatialIndexTileLayer extends TileLayer {\n static { this.layerName = 'SpatialIndexTileLayer'; }\n static { this.defaultProps = defaultProps; }\n _updateAutoHighlight(info) {\n const { hoveredFeatureId } = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId = null;\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let { highlightColor } = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n getHighlightedObjectIndex(tile) {\n const { hoveredFeatureId } = this.state;\n const data = tile.content;\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (!isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)) {\n return -1;\n }\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n _featureInTile(tile, featureId) {\n // TODO: Tile2DHeader index should be generic for H3TileIndex or QuadbinTileIndex\n const tileset = this.state.tileset;\n const tileZoom = tileset.getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n // TODO - Tileset2D methods expect tile index in the shape of {x, y, z}\n let featureIndex = { [KEY]: featureId };\n let featureZoom = tileset.getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = tileset.getParentIndex(featureIndex);\n featureZoom = tileset.getTileZoom(featureIndex);\n }\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n", "// Optimized (100X speed improvement) reading function for binary data\nexport function readPackedTypedArray(TypedArray, pbf, obj) {\n const end = pbf.type === 2 ? pbf.readVarint() + pbf.pos : pbf.pos + 1;\n obj.value = new TypedArray(pbf.buf.buffer.slice(pbf.pos, end));\n pbf.pos = end;\n return obj.value;\n}\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nconst ARRAY_TYPES = {\n uint8: Uint8Array,\n uint16: Uint16Array,\n uint32: Uint32Array,\n uint64: BigUint64Array,\n int8: Int8Array,\n int16: Int16Array,\n int32: Int32Array,\n int64: BigInt64Array,\n float32: Float32Array,\n float64: Float64Array\n};\n// Band ========================================\nexport class BandReader {\n static read(pbf, end) {\n return pbf.readFields(BandReader._readField, { name: '', type: '', data: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.name = pbf.readString();\n else if (tag === 2)\n obj.type = pbf.readString();\n else if (tag === 3) {\n const TypedArray = ARRAY_TYPES[obj.type];\n if (!TypedArray) {\n throw Error(`Invalid data type: ${obj.type}`);\n }\n obj.data = {};\n readPackedTypedArray(TypedArray, pbf, obj.data);\n }\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { blockWidth: 0, blockHeight: 0, bands: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.blockWidth = pbf.readVarint();\n else if (tag === 2)\n obj.blockHeight = pbf.readVarint();\n else if (tag === 3)\n obj.bands.push(BandReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\n", "import Protobuf from 'pbf';\nexport function parsePbf(buffer, TileReader) {\n const pbf = new Protobuf(buffer);\n const tile = TileReader.read(pbf);\n return tile;\n}\n", "import { log } from '@deck.gl/core';\nexport function assert(condition, message) {\n log.assert(condition, message);\n}\n// Returns a Proxy object that allows accessing binary data\n// as if it were JSON properties\nexport function createBinaryProxy(data, index) {\n const { properties, numericProps } = data;\n return new Proxy(properties[index] || {}, {\n get(target, property) {\n if (property in numericProps) {\n return numericProps[property].value[index];\n }\n return target[property];\n },\n has(target, property) {\n return property in numericProps || property in target;\n }\n });\n}\nexport function getWorkerUrl(id, version) {\n // For local testing `yarn build-workers` and then host `modules/carto/dist/`\n // return `http://localhost:8081/dist/${id}-worker.js`;\n return `https://unpkg.com/@deck.gl/carto@${version}/dist/${id}-worker.js`;\n}\nexport function scaleIdentity() {\n let unknown;\n function scale(x) {\n return x === null ? unknown : x;\n }\n scale.invert = scale;\n scale.domain = scale.range = d => d;\n scale.unknown = u => {\n if (u) {\n unknown = u;\n }\n return unknown;\n };\n scale.copy = () => scaleIdentity().unknown(unknown);\n return scale;\n}\n", "import { TileReader } from \"./carto-raster-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nconst VERSION = typeof \"9.0.0-beta.5\" !== 'undefined' ? \"9.0.0-beta.5\" : 'latest';\nconst id = 'cartoRasterTile';\nconst DEFAULT_OPTIONS = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoRasterTileLoader = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction parseCartoRasterTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const { bands, blockHeight, blockWidth } = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const { name, data } = bands[i];\n numericProps[name] = data;\n }\n return { blockWidth, blockHeight, cells: { numericProps, properties: [] } };\n}\nexport default CartoRasterTileLoader;\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nclass KeyValueObjectReader {\n static read(pbf, end) {\n return pbf.readFields(KeyValueObjectReader._readField, { key: '', value: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.key = pbf.readString();\n else if (tag === 2)\n obj.value = pbf.readString();\n }\n}\n// Properties ========================================\nexport class PropertiesReader {\n static read(pbf, end) {\n return pbf.readFields(PropertiesReader._readField, {}, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1) {\n const { key, value } = KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj[key] = value;\n }\n }\n}\nclass DoublesReader {\n static read(pbf, end) {\n const { value, size } = pbf.readFields(DoublesReader._readField, { value: [], size: 0 }, end);\n return { value: new Float32Array(value), size };\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(Float64Array, pbf, obj);\n else if (tag === 2)\n obj.size = pbf.readVarint(true);\n }\n}\nclass IntsReader {\n static read(pbf, end) {\n const { value, size } = pbf.readFields(IntsReader._readField, { value: [], size: 0 }, end);\n return { value: new Uint32Array(value), size };\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n pbf.readPackedVarint(obj.value);\n else if (tag === 2)\n obj.size = pbf.readVarint(true);\n }\n}\nclass FieldsReader {\n static read(pbf, end) {\n return pbf.readFields(FieldsReader._readField, { id: 0 }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.id = pbf.readVarint();\n }\n}\nclass NumericPropReader {\n static read(pbf, end) {\n return pbf.readFields(NumericPropReader._readField, { value: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(Float64Array, pbf, obj);\n }\n}\nexport class NumericPropKeyValueReader {\n static read(pbf, end) {\n return pbf.readFields(NumericPropKeyValueReader._readField, { key: '', value: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.key = pbf.readString();\n else if (tag === 2)\n obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\nclass PointsReader {\n static read(pbf, end) {\n return pbf.readFields(PointsReader._readField, {\n positions: null,\n globalFeatureIds: null,\n featureIds: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 5) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 6)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\n// Lines ========================================\nclass LinesReader {\n static read(pbf, end) {\n return pbf.readFields(LinesReader._readField, {\n positions: null,\n pathIndices: null,\n globalFeatureIds: null,\n featureIds: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 5)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 6) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 7)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\nclass PolygonsReader {\n static read(pbf, end) {\n return pbf.readFields(PolygonsReader._readField, {\n positions: null,\n polygonIndices: null,\n globalFeatureIds: null,\n featureIds: null,\n primitivePolygonIndices: null,\n triangles: null,\n properties: [],\n numericProps: {},\n fields: []\n }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 4)\n obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 5)\n obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 6)\n obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 7)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 8) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n else if (tag === 9)\n obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { points: null, lines: null, polygons: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\n", "import { readPackedTypedArray } from \"./fast-pbf.js\";\nimport { NumericPropKeyValueReader, PropertiesReader } from \"./carto-tile.js\";\n// Indices =====================================\nexport class IndicesReader {\n static read(pbf, end) {\n return pbf.readFields(IndicesReader._readField, { value: [] }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n readPackedTypedArray(BigUint64Array, pbf, obj);\n }\n}\nclass CellsReader {\n static read(pbf, end) {\n return pbf.readFields(CellsReader._readField, { indices: null, properties: [], numericProps: {} }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.indices = IndicesReader.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 3) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n }\n}\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { scheme: 0, cells: null }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.scheme = pbf.readVarint();\n else if (tag === 2)\n obj.cells = CellsReader.read(pbf, pbf.readVarint() + pbf.pos);\n }\n}\n", "import { bigIntToHex } from 'quadbin';\nexport function binaryToSpatialjson(binary) {\n const { cells, scheme } = binary;\n const count = cells.indices.value.length;\n const spatial = [];\n for (let i = 0; i < count; i++) {\n const id = scheme === 'h3' ? bigIntToHex(cells.indices.value[i]) : cells.indices.value[i];\n const properties = { ...cells.properties[i] };\n for (const key of Object.keys(cells.numericProps)) {\n properties[key] = cells.numericProps[key].value[i];\n }\n spatial.push({ id, properties });\n }\n return spatial;\n}\n", "import { TileReader } from \"./carto-spatial-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nimport { binaryToSpatialjson } from \"./spatialjson-utils.js\";\nconst VERSION = typeof \"9.0.0-beta.5\" !== 'undefined' ? \"9.0.0-beta.5\" : 'latest';\nconst id = 'cartoSpatialTile';\nconst DEFAULT_OPTIONS = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoSpatialTileLoader = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction parseCartoSpatialTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const { cells } = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = { cells, scheme };\n return binaryToSpatialjson(data);\n}\nexport default CartoSpatialTileLoader;\n", "import { log } from '@deck.gl/core';\nimport { _deepEqual as deepEqual } from '@deck.gl/core';\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions, accessToken) {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: { ...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}` }\n };\n }\n}\nexport function mergeBoundaryData(geometry, properties) {\n const mapping = {};\n for (const { geoid, ...rest } of properties.properties) {\n if (geoid in mapping) {\n log.warn('Duplicate geoid key in boundary mapping, using first occurance')();\n }\n else {\n mapping[geoid] = rest;\n }\n }\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n geom.properties = geom.properties.map(({ geoid }) => mapping[geoid]);\n // numericProps need to be filled to match length of positions buffer\n const { positions, globalFeatureIds } = geom;\n let indices = null;\n if (type === 'lines')\n indices = geom.pathIndices.value;\n if (type === 'polygons')\n indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = { value: destProp, size: 1 };\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n }\n else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n return geometry;\n}\nexport const TilejsonPropType = {\n type: 'object',\n value: null,\n validate: (value, propType) => (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n", "import { CompositeLayer } from '@deck.gl/core';\nimport { TextLayer, _TextBackgroundLayer as TextBackgroundLayer } from '@deck.gl/layers';\nconst [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];\nclass EnhancedTextBackgroundLayer extends TextBackgroundLayer {\n static { this.layerName = 'EnhancedTextBackgroundLayer'; }\n getShaders() {\n const shaders = super.getShaders();\n let vs = shaders.vs;\n // Modify shader so that the padding is offset by the pixel offset to ensure the padding\n // always captures the anchor point. As padding is uniform we cannot pass it a per-label value\n vs = vs.replaceAll('padding.', '_padding.');\n vs = vs.replace('void main(void) {', 'void main(void) {\\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);');\n return { ...shaders, vs };\n }\n}\n// TextLayer which includes modified text-background-layer-vertex shader and only renders the\n// primary background layer in the collision pass\nclass EnhancedTextLayer extends TextLayer {\n static { this.layerName = 'EnhancedTextLayer'; }\n filterSubLayer({ layer, renderPass }) {\n const background = layer.id.includes('primary-background');\n if (renderPass === 'collision') {\n return background; // Only draw primary background layer in collision pass\n }\n return !background; // Do not draw background layer in other passes\n }\n}\nconst defaultProps = {\n ...TextLayer.defaultProps,\n getRadius: { type: 'accessor', value: 1 },\n radiusScale: { type: 'number', min: 0, value: 1 }\n};\nexport default class PointLabelLayer extends CompositeLayer {\n static { this.layerName = 'PointLabelLayer'; }\n static { this.defaultProps = defaultProps; }\n calculatePixelOffset(secondary) {\n const { getTextAnchor: anchor, getAlignmentBaseline: alignment, getRadius, getSecondaryText, radiusScale, secondarySizeScale, sizeScale } = this.props;\n const xMult = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const yMult = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n // Padding based on font size (font size / 4)\n const xPadding = sizeScale / 4;\n const yPadding = sizeScale * (1 + 1 / 4);\n // Place secondary label under main label (secondary label always 'top' baseline aligned)\n const secondaryOffset = 0.6 * (1 - yMult) * sizeScale;\n let yOffset = secondary ? secondaryOffset : 0;\n // Special case, position relative to secondary label\n if (anchor === 'middle' && alignment === 'top' && getSecondaryText) {\n yOffset -= secondaryOffset;\n yOffset -= secondarySizeScale;\n yOffset += sizeScale;\n }\n // Padding based on point radius (radius/ 4)\n const radiusPadding = 1 + 1 / 4;\n return typeof getRadius === 'function'\n ? (d, info) => {\n const r = (info ? getRadius(d, info) : 1) * radiusScale * radiusPadding;\n return [xMult * (r + xPadding), yMult * (r + yPadding) + yOffset];\n }\n : [\n xMult * (getRadius * radiusScale * radiusPadding + xPadding),\n yMult * (getRadius * radiusScale * radiusPadding + yPadding) + yOffset\n ];\n }\n calculateBackgroundPadding() {\n const { getTextAnchor: anchor, getAlignmentBaseline: alignment, sizeScale } = this.props;\n // Heuristics to avoid label overlap\n const paddingX = 12 * sizeScale;\n const paddingY = 3 * sizeScale;\n const backgroundPadding = [0, 0, 0, 0];\n if (alignment === 'top') {\n backgroundPadding[TOP] = paddingY;\n }\n else if (alignment === 'bottom') {\n backgroundPadding[BOTTOM] = paddingY;\n }\n else {\n backgroundPadding[TOP] = 0.5 * paddingY;\n backgroundPadding[BOTTOM] = 0.5 * paddingY;\n }\n if (anchor === 'start') {\n backgroundPadding[LEFT] = paddingX;\n }\n else if (anchor === 'end') {\n backgroundPadding[RIGHT] = paddingX;\n }\n else {\n backgroundPadding[LEFT] = 0.5 * paddingX;\n backgroundPadding[RIGHT] = 0.5 * paddingX;\n }\n return backgroundPadding;\n }\n renderTextLayer(id, { updateTriggers: updateTriggersOverride = {}, ...props }) {\n const { data, characterSet, fontFamily, fontSettings, fontWeight, outlineColor, outlineWidth, sizeScale, radiusScale, getAlignmentBaseline, getColor, getPosition, getTextAnchor, updateTriggers } = this.props;\n return new EnhancedTextLayer(this.getSubLayerProps({\n id,\n data,\n characterSet,\n fontFamily,\n fontSettings,\n fontWeight,\n outlineColor,\n outlineWidth,\n sizeScale,\n getAlignmentBaseline,\n getColor,\n getPosition,\n getTextAnchor,\n updateTriggers: {\n ...updateTriggers,\n ...updateTriggersOverride,\n getPixelOffset: [\n updateTriggers.getRadius,\n updateTriggers.getTextAnchor,\n updateTriggers.getAlignmentBaseline,\n radiusScale,\n sizeScale\n ]\n }\n }), {\n getSize: 1,\n _subLayerProps: { background: { type: EnhancedTextBackgroundLayer } }\n }, props);\n }\n renderLayers() {\n const { getText, getSecondaryColor, getSecondaryText, secondaryOutlineColor, secondarySizeScale, updateTriggers } = this.props;\n const getPixelOffset = this.calculatePixelOffset(false);\n const backgroundPadding = this.calculateBackgroundPadding();\n const out = [\n // Text doesn't update via updateTrigger for some reason\n this.renderTextLayer(`${updateTriggers.getText}-primary`, {\n backgroundPadding,\n getText,\n getPixelOffset,\n background: true // Only use background for primary label for faster collisions\n }),\n Boolean(getSecondaryText) &&\n this.renderTextLayer(`${updateTriggers.getSecondaryText}-secondary`, {\n getText: getSecondaryText,\n getPixelOffset: this.calculatePixelOffset(true),\n getAlignmentBaseline: 'top',\n // updateTriggers: {getText: updateTriggers.getSecondaryText},\n // Optional overrides\n ...(getSecondaryColor && { getColor: getSecondaryColor }),\n ...(secondarySizeScale && { sizeScale: secondarySizeScale }),\n ...(secondaryOutlineColor && { outlineColor: secondaryOutlineColor })\n })\n ];\n return out;\n }\n}\n", "import { CompositeLayer } from '@deck.gl/core';\nimport QuadbinLayer from \"./quadbin-layer.js\";\nimport QuadbinTileset2D from \"./quadbin-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { hexToBigInt } from 'quadbin';\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const { data } = props;\n if (!data || !data.length)\n return null;\n const isBigInt = typeof data[0].id === 'bigint';\n return new QuadbinLayer(props, {\n getQuadbin: isBigInt ? d => d.id : d => hexToBigInt(d.id)\n });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class QuadbinTileLayer extends CompositeLayer {\n static { this.layerName = 'QuadbinTileLayer'; }\n static { this.defaultProps = defaultProps; }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.cartoSpatialTile = { ...loadOptions.cartoSpatialTile, scheme: 'quadbin' };\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data, maxresolution: maxZoom } = tileJSON;\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `quadbin-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D,\n renderSubLayers,\n maxZoom,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { _GeoCellLayer as GeoCellLayer } from '@deck.gl/geo-layers';\nimport { getQuadbinPolygon } from \"./quadbin-utils.js\";\nconst defaultProps = {\n getQuadbin: { type: 'accessor', value: (d) => d.quadbin }\n};\nexport default class QuadbinLayer extends GeoCellLayer {\n static { this.layerName = 'QuadbinLayer'; }\n static { this.defaultProps = defaultProps; }\n indexToBounds() {\n const { data, extruded, getQuadbin } = this.props;\n // To avoid z-fighting reduce polygon footprint when extruding\n const coverage = extruded ? 0.99 : 1;\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n getPolygon: (x, objectInfo) => getQuadbinPolygon(getQuadbin(x, objectInfo), coverage),\n updateTriggers: { getPolygon: coverage }\n };\n }\n}\n", "import { worldToLngLat } from '@math.gl/web-mercator';\nimport { cellToTile } from 'quadbin';\nconst TILE_SIZE = 512;\nexport function quadbinToOffset(quadbin) {\n const { x, y, z } = cellToTile(quadbin);\n const scale = TILE_SIZE / (1 << z);\n return [x * scale, TILE_SIZE - y * scale, scale];\n}\nexport function quadbinToWorldBounds(quadbin, coverage) {\n const [xOffset, yOffset, scale] = quadbinToOffset(quadbin);\n return [\n [xOffset, yOffset],\n [xOffset + coverage * scale, yOffset - coverage * scale]\n ];\n}\nexport function getQuadbinPolygon(quadbin, coverage = 1) {\n const [topLeft, bottomRight] = quadbinToWorldBounds(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", "import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';\nimport { bigIntToHex, cellToParent, cellToTile, getResolution, tileToCell } from 'quadbin';\nexport default class QuadbinTileset2D extends Tileset2D {\n // @ts-expect-error for spatial indices, TileSet2d should be parametrized by TileIndexT\n getTileIndices(opts) {\n return super\n .getTileIndices(opts)\n .map(tileToCell)\n .map(q => ({ q, i: bigIntToHex(q) }));\n }\n // @ts-expect-error TileIndex must be generic\n getTileId({ q, i }) {\n return i || bigIntToHex(q);\n }\n // @ts-expect-error TileIndex must be generic\n getTileMetadata({ q }) {\n return super.getTileMetadata(cellToTile(q));\n }\n // @ts-expect-error TileIndex must be generic\n getTileZoom({ q }) {\n return Number(getResolution(q));\n }\n // @ts-expect-error TileIndex must be generic\n getParentIndex({ q }) {\n return { q: cellToParent(q) };\n }\n}\n", "import { CompositeLayer } from '@deck.gl/core';\nimport RasterLayer from \"./raster-layer.js\";\nimport QuadbinTileset2D from \"./quadbin-tileset-2d.js\";\nimport SpatialIndexTileLayer from \"./spatial-index-tile-layer.js\";\nimport { injectAccessToken, TilejsonPropType } from \"./utils.js\";\nexport const renderSubLayers = props => {\n const tileIndex = props.tile?.index?.q;\n if (!tileIndex)\n return null;\n return new RasterLayer(props, { tileIndex });\n};\nconst defaultProps = {\n data: TilejsonPropType\n};\nexport default class RasterTileLayer extends CompositeLayer {\n static { this.layerName = 'RasterTileLayer'; }\n static { this.defaultProps = defaultProps; }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n return loadOptions;\n }\n renderLayers() {\n const tileJSON = this.props.data;\n if (!tileJSON)\n return null;\n const { tiles: data, minzoom: minZoom, maxzoom: maxZoom } = tileJSON;\n return [\n // @ts-ignore\n new SpatialIndexTileLayer(this.props, {\n id: `raster-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D,\n renderSubLayers,\n minZoom,\n maxZoom,\n loadOptions: this.getLoadOptions()\n })\n ];\n }\n}\n", "import { CompositeLayer } from '@deck.gl/core';\nimport { ColumnLayer } from '@deck.gl/layers';\nimport { quadbinToOffset } from \"./quadbin-utils.js\";\nimport vs from \"./raster-layer-vertex.glsl.js\";\nimport { assert, createBinaryProxy } from \"../utils.js\";\nconst defaultProps = {\n ...ColumnLayer.defaultProps,\n extruded: false,\n diskResolution: 4,\n vertices: [\n [-0.5, -0.5],\n [0.5, -0.5],\n [0.5, 0.5],\n [-0.5, 0.5]\n ]\n};\n// Modified ColumnLayer with custom vertex shader\nclass RasterColumnLayer extends ColumnLayer {\n static { this.layerName = 'RasterColumnLayer'; }\n getShaders() {\n const shaders = super.getShaders();\n const data = this.props.data;\n const BLOCK_WIDTH = data.blockWidth || Math.sqrt(data.length);\n return { ...shaders, defines: { ...shaders.defines, BLOCK_WIDTH }, vs };\n }\n initializeState() {\n // Only add attributes needed by shader\n const attributeManager = this.getAttributeManager();\n /* eslint-disable max-len */\n attributeManager.addInstanced({\n instanceElevations: {\n size: 1,\n transition: true,\n accessor: 'getElevation'\n },\n instanceFillColors: {\n size: this.props.colorFormat.length,\n type: 'unorm8',\n transition: true,\n accessor: 'getFillColor',\n defaultValue: [0, 0, 0, 255]\n },\n instanceLineColors: {\n size: this.props.colorFormat.length,\n type: 'unorm8',\n transition: true,\n accessor: 'getLineColor',\n defaultValue: [255, 255, 255, 255]\n }\n });\n }\n}\n// Adapter layer around RasterColumnLayer that converts data & accessors into correct format\nexport default class RasterLayer extends CompositeLayer {\n static { this.layerName = 'RasterLayer'; }\n static { this.defaultProps = defaultProps; }\n renderLayers() {\n // Rendering props underlying layer\n const { data, getElevation, getFillColor, getLineColor, getLineWidth, tileIndex, updateTriggers } = this.props;\n if (!data || !tileIndex)\n return null;\n const { blockWidth, blockHeight } = data;\n assert(blockWidth === blockHeight, `blockWidth (${blockWidth}) must equal blockHeight (${blockHeight})`);\n const [xOffset, yOffset, scale] = quadbinToOffset(tileIndex);\n const offset = [xOffset, yOffset, scale / blockWidth];\n // Filled Column Layer\n const CellLayer = this.getSubLayerClass('column', RasterColumnLayer);\n return new CellLayer(this.props, this.getSubLayerProps({\n id: 'cell',\n updateTriggers,\n getElevation: this.getSubLayerAccessor(getElevation),\n getFillColor: this.getSubLayerAccessor(getFillColor),\n getLineColor: this.getSubLayerAccessor(getLineColor),\n getLineWidth: this.getSubLayerAccessor(getLineWidth)\n }), {\n data: {\n data, // Pass through data for getSubLayerAccessor()\n length: blockWidth * blockHeight\n },\n offset\n });\n }\n getSubLayerAccessor(accessor) {\n if (typeof accessor !== 'function') {\n return super.getSubLayerAccessor(accessor);\n }\n // Proxy values back in standard feature format\n return (object, info) => {\n const { data, index } = info;\n const binaryData = data.data;\n const proxy = createBinaryProxy(binaryData.cells, index);\n // @ts-ignore (TS2349) accessor is always function\n return accessor({ properties: proxy }, info);\n };\n }\n}\n", "export default `\\\n#version 300 es\n#define SHADER_NAME raster-layer-vertex-shader\nin vec3 positions;\nin vec3 normals;\nin float instanceElevations;\nin vec4 instanceFillColors;\nin vec4 instanceLineColors;\nin vec3 instancePickingColors;\nuniform float opacity;\nuniform bool extruded;\nuniform bool stroked;\nuniform bool isStroke;\nuniform float coverage;\nuniform float elevationScale;\nuniform float widthScale;\nuniform vec3 offset;\nout vec4 vColor;\n#ifdef FLAT_SHADING\nout vec4 position_commonspace;\n#endif\nvoid main(void) {\nvec2 common_position = offset.xy;\nfloat scale = offset.z;\nint yIndex = - (gl_InstanceID / BLOCK_WIDTH);\nint xIndex = gl_InstanceID + (yIndex * BLOCK_WIDTH);\ncommon_position += scale * vec2(float(xIndex), float(yIndex));\nvec4 color = isStroke ? instanceLineColors : instanceFillColors;\nfloat shouldRender = float(color.a > 0.0 && instanceElevations >= 0.0);\nfloat cellWidth = coverage * scale;\ngeometry.position = vec4(common_position, 0.0, 1.0);\nif (project_uProjectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {\ngeometry.position.xyz -= project_uCommonOrigin;\n}\nfloat elevation = 0.0;\nfloat strokeOffsetRatio = 1.0;\nif (extruded) {\nelevation = instanceElevations * (positions.z + 1.0) / 2.0 * elevationScale;\n} else if (stroked) {\nfloat halfOffset = project_pixel_size(widthScale) / cellWidth;\nif (isStroke) {\nstrokeOffsetRatio -= sign(positions.z) * halfOffset;\n} else {\nstrokeOffsetRatio -= halfOffset;\n}\n}\ngeometry.pickingColor = instancePickingColors;\nvec2 offset = (vec2(0.5) + positions.xy * strokeOffsetRatio) * cellWidth * shouldRender;\nvec3 pos = vec3(offset, project_size(elevation));\nDECKGL_FILTER_SIZE(pos, geometry);\ngeometry.position.xyz += pos;\ngl_Position = project_common_position_to_clipspace(geometry.position);\ngeometry.normal = project_normal(normals);\nDECKGL_FILTER_GL_POSITION(gl_Position, geometry);\nif (extruded && !isStroke) {\n#ifdef FLAT_SHADING\nposition_commonspace = geometry.position;\nvColor = vec4(color.rgb, color.a * opacity);\n#else\nvec3 lightColor = lighting_getLightColor(color.rgb, project_uCameraPosition, geometry.position.xyz, geometry.normal);\nvColor = vec4(lightColor, color.a * opacity);\n#endif\n} else {\nvColor = vec4(color.rgb, color.a * opacity);\n}\nDECKGL_FILTER_COLOR(vColor, geometry);\n}\n`;\n", "import { registerLoaders } from '@loaders.gl/core';\nimport CartoPropertiesTileLoader from \"./schema/carto-properties-tile-loader.js\";\nimport CartoVectorTileLoader from \"./schema/carto-vector-tile-loader.js\";\nregisterLoaders([CartoPropertiesTileLoader, CartoVectorTileLoader]);\nimport { ClipExtension } from '@deck.gl/extensions';\nimport { MVTLayer, _getURLFromTemplate } from '@deck.gl/geo-layers';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { binaryToGeojson } from '@loaders.gl/gis';\nimport { TilejsonPropType, injectAccessToken, mergeBoundaryData } from \"./utils.js\";\nconst defaultProps = {\n ...MVTLayer.defaultProps,\n data: TilejsonPropType,\n dataComparator: TilejsonPropType.equal\n};\n// @ts-ignore\nexport default class VectorTileLayer extends MVTLayer {\n static { this.layerName = 'VectorTileLayer'; }\n static { this.defaultProps = defaultProps; }\n constructor(...propObjects) {\n // Force externally visible props type, as it is not possible modify via extension\n // @ts-ignore\n super(...propObjects);\n }\n initializeState() {\n super.initializeState();\n this.setState({ binary: true });\n }\n updateState(parameters) {\n const { props } = parameters;\n if (props.data) {\n super.updateState(parameters);\n const formatTiles = new URL(props.data.tiles[0]).searchParams.get('formatTiles');\n const mvt = formatTiles === 'mvt';\n this.setState({ mvt });\n }\n }\n getLoadOptions() {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.gis = { format: 'binary' }; // Use binary for MVT loading\n return loadOptions;\n }\n async getTileData(tile) {\n const tileJSON = this.props.data;\n const { tiles, properties_tiles } = tileJSON;\n const url = _getURLFromTemplate(tiles, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n const loadOptions = this.getLoadOptions();\n const { fetch } = this.props;\n const { signal } = tile;\n // Fetch geometry and attributes separately\n const geometryFetch = fetch(url, { propName: 'data', layer: this, loadOptions, signal });\n if (!properties_tiles) {\n return await geometryFetch;\n }\n const propertiesUrl = _getURLFromTemplate(properties_tiles, tile);\n if (!propertiesUrl) {\n return Promise.reject('Invalid properties URL');\n }\n const attributesFetch = fetch(propertiesUrl, {\n propName: 'data',\n layer: this,\n loadOptions,\n signal\n });\n const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);\n if (!geometry)\n return null;\n return attributes ? mergeBoundaryData(geometry, attributes) : geometry;\n }\n renderSubLayers(props) {\n if (props.data === null) {\n return null;\n }\n if (this.state.mvt) {\n return super.renderSubLayers(props);\n }\n const tileBbox = props.tile.bbox;\n const { west, south, east, north } = tileBbox;\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n if (this.state.binary && info.index !== -1) {\n const { data } = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {\n globalFeatureId: info.index\n });\n }\n return info;\n }\n}\n", "import { NumericPropKeyValueReader, PropertiesReader } from \"./carto-tile.js\";\nexport class TileReader {\n static read(pbf, end) {\n return pbf.readFields(TileReader._readField, { properties: [], numericProps: {} }, end);\n }\n static _readField(tag, obj, pbf) {\n if (tag === 1)\n obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 2) {\n const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);\n obj.numericProps[entry.key] = entry.value;\n }\n }\n}\n", "import { TileReader } from \"./carto-properties-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nconst CartoPropertiesTileLoader = {\n name: 'CARTO Properties Tile',\n version: '1',\n id: 'cartoPropertiesTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-properties-tile'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoPropertiesTile(arrayBuffer, options),\n parseSync: parseCartoPropertiesTile,\n options: {}\n};\nfunction parseCartoPropertiesTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n return parsePbf(arrayBuffer, TileReader);\n}\nexport default CartoPropertiesTileLoader;\n", "import earcut from 'earcut';\nimport { TileReader } from \"./carto-tile.js\";\nimport { parsePbf } from \"./tile-loader-utils.js\";\nimport { getWorkerUrl } from \"../../utils.js\";\nconst VERSION = typeof \"9.0.0-beta.5\" !== 'undefined' ? \"9.0.0-beta.5\" : 'latest';\nconst id = 'cartoVectorTile';\nconst DEFAULT_OPTIONS = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\nconst CartoVectorTileLoader = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options) => parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\nfunction triangulatePolygon(polygons, target, { startPosition, endPosition, indices }) {\n const coordLength = polygons.positions.size;\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.value.subarray(start, end);\n // Holes are referenced relative to outer polygon\n const holes = indices.slice(1).map((n) => n - startPosition);\n // Compute triangulation\n const triangles = earcut(polygonPositions, holes, coordLength);\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n target.push(startPosition + triangles[t]);\n }\n}\nfunction triangulate(polygons) {\n const { polygonIndices, primitivePolygonIndices } = polygons;\n const triangles = [];\n let rangeStart = 0;\n for (let i = 0; i < polygonIndices.value.length - 1; i++) {\n const startPosition = polygonIndices.value[i];\n const endPosition = polygonIndices.value[i + 1];\n // Extract hole indices between start & end position\n const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);\n const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);\n rangeStart = rangeEnd;\n triangulatePolygon(polygons, triangles, { startPosition, endPosition, indices });\n }\n polygons.triangles = { value: new Uint32Array(triangles), size: 1 };\n}\nfunction parseCartoVectorTile(arrayBuffer, options) {\n if (!arrayBuffer)\n return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n if (tile.polygons && !tile.polygons.triangles) {\n triangulate(tile.polygons);\n }\n return tile;\n}\nexport default CartoVectorTileLoader;\n", "const baseUrl = 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json';\nexport default {\n VOYAGER: baseUrl.replace('{basemap}', 'voyager'),\n POSITRON: baseUrl.replace('{basemap}', 'positron'),\n DARK_MATTER: baseUrl.replace('{basemap}', 'dark-matter'),\n VOYAGER_NOLABELS: baseUrl.replace('{basemap}', 'voyager-nolabels'),\n POSITRON_NOLABELS: baseUrl.replace('{basemap}', 'positron-nolabels'),\n DARK_MATTER_NOLABELS: baseUrl.replace('{basemap}', 'dark-matter-nolabels')\n};\n", "import { scaleThreshold } from 'd3-scale';\nimport getPalette, { DEFAULT_PALETTE, NULL_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color bins style based on `d3` `scaleThreshold`.\n *\n * Data values of each attribute are rounded down to the nearest value in the domain and are then\n * styled with the corresponding color.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorBins({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers');\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length + 1) : colors;\n const color = scaleThreshold().domain(domain).range(palette);\n return d => {\n const value = getAttrValue(attr, d);\n return typeof value === 'number' && Number.isFinite(value) ? color(value) : nullColor;\n };\n}\n", "import * as cartoColors from 'cartocolor';\nimport { assert } from \"../utils.js\";\nexport const DEFAULT_PALETTE = 'PurpOr';\nexport const NULL_COLOR = [204, 204, 204];\nexport const OTHERS_COLOR = [119, 119, 119];\nexport default function getPalette(name, numCategories) {\n const palette = cartoColors[name];\n let paletteIndex = numCategories;\n assert(palette, `Palette \"${name}\" not found. Expected a CARTOColors string`);\n const palettesColorVariants = Object.keys(palette)\n .filter(p => p !== 'tags')\n .map(Number);\n const longestPaletteIndex = Math.max(...palettesColorVariants);\n const smallestPaletteIndex = Math.min(...palettesColorVariants);\n if (!Number.isInteger(numCategories) || numCategories > longestPaletteIndex) {\n paletteIndex = longestPaletteIndex;\n }\n else if (numCategories < smallestPaletteIndex) {\n paletteIndex = smallestPaletteIndex;\n }\n let colors = palette[paletteIndex];\n if (palette.tags && palette.tags.includes('qualitative')) {\n colors = colors.slice(0, -1);\n }\n return colors.map(c => hexToRgb(c));\n}\nexport function hexToRgb(hex) {\n // Evaluate #ABC\n let result = /^#?([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})$/i.exec(hex);\n if (result) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n 255\n ];\n }\n // Evaluate #ABCD\n result = /^#?([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})([a-f\\d]{1})$/i.exec(hex);\n if (result) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n parseInt(result[4] + result[4], 16)\n ];\n }\n // Evaluate #ABCDEF\n result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16), 255];\n }\n // Evaluate #ABCDEFAF\n result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n assert(result, `Hexadecimal color \"${hex}\" was not parsed correctly`);\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n parseInt(result[4], 16)\n ];\n}\n", "import { assert } from \"../utils.js\";\nconst ALLOWED_ATTR_TYPES = Object.freeze(['function', 'string']);\nexport function getAttrValue(attr, d) {\n assert(typeof d === 'object', 'Expected \"data\" to be an object');\n assert(ALLOWED_ATTR_TYPES.includes(typeof attr), 'Expected \"attr\" to be a function or string');\n // Is function\n if (typeof attr === 'function') {\n return attr(d);\n }\n return d?.properties?.[attr];\n}\n", "import getPalette, { DEFAULT_PALETTE, NULL_COLOR, OTHERS_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color category style.\n *\n * Data values of each attribute listed in the domain are mapped one to one\n * with corresponding colors in the range.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorCategories({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR, othersColor = OTHERS_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers or strings');\n const colorsByCategory = {};\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length) : colors;\n for (const [i, c] of domain.entries()) {\n colorsByCategory[c] = palette[i];\n }\n return d => {\n const value = getAttrValue(attr, d);\n return (typeof value === 'number' && Number.isFinite(value)) || typeof value === 'string'\n ? colorsByCategory[value] || othersColor\n : nullColor;\n };\n}\n", "import { scaleLinear } from 'd3-scale';\nimport getPalette, { DEFAULT_PALETTE, NULL_COLOR } from \"./palette.js\";\nimport { assert } from \"../utils.js\";\nimport { getAttrValue } from \"./utils.js\";\n/**\n * Helper function for quickly creating a color continuous style.\n *\n * Data values of each field are interpolated linearly across values in the domain and\n * are then styled with a blend of the corresponding color in the range.\n *\n * @return accessor that maps objects to `Color` values\n */\nexport default function colorContinuous({ attr, domain, colors = DEFAULT_PALETTE, nullColor = NULL_COLOR }) {\n assert(Array.isArray(domain), 'Expected \"domain\" to be an array of numbers');\n const palette = typeof colors === 'string' ? getPalette(colors, domain.length) : colors;\n const color = scaleLinear().domain(domain).range(palette);\n return d => {\n const value = getAttrValue(attr, d);\n return typeof value === 'number' && Number.isFinite(value) ? color(value) : nullColor;\n };\n}\n", "/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n constructor(error, errorContext, response) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n }\n else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n }\n else if (response.status === 404) {\n responseString += 'Not found';\n }\n else {\n responseString += 'Error';\n }\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType')\n continue; // eslint-disable-line no-continue\n message += `\\n${formatErrorKey(key)}: ${errorContext[key]}`;\n }\n message += '\\n';\n super(message);\n this.name = 'CartoAPIError';\n this.response = response;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase());\n}\n", "export const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\nexport const DEFAULT_CLIENT = 'deck-gl-carto';\nexport const V3_MINOR_VERSION = '3.3';\nexport const MAX_GET_LENGTH = 8192;\nexport const DEFAULT_PARAMETERS = {\n v: V3_MINOR_VERSION\n};\nexport const DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n};\n", "function joinPath(...args) {\n return args.map(part => (part.endsWith('/') ? part.slice(0, -1) : part)).join('/');\n}\nfunction buildV3Path(apiBaseUrl, version, endpoint, ...rest) {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\nexport function buildPublicMapUrl({ apiBaseUrl, cartoMapId }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\nexport function buildStatsUrl({ attribute, apiBaseUrl, connectionName, source, type }) {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n // type === 'table'\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, source, attribute);\n}\nexport function buildSourceUrl({ apiBaseUrl, connectionName, endpoint }) {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\nexport function buildQueryUrl({ apiBaseUrl, connectionName }) {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n", "import { CartoAPIError } from \"./carto-api-error.js\";\nimport { DEFAULT_HEADERS, DEFAULT_PARAMETERS, MAX_GET_LENGTH } from \"./common.js\";\n/**\n * Simple encode parameter\n */\nfunction encodeParameter(name, value) {\n return `${name}=${encodeURIComponent(value)}`;\n}\nconst REQUEST_CACHE = new Map();\nexport async function requestWithParameters({ accessToken, baseUrl, parameters, headers: customHeaders, errorContext }) {\n const key = JSON.stringify({ baseUrl, parameters, customHeaders });\n if (REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key);\n }\n let url = baseUrl;\n if (parameters) {\n const allParameters = { ...DEFAULT_PARAMETERS, ...parameters };\n const encodedParameters = Object.entries(allParameters).map(([key, value]) => {\n return encodeParameter(key, value);\n });\n url += `?${encodedParameters.join('&')}`;\n }\n const headers = { ...DEFAULT_HEADERS, ...customHeaders };\n try {\n /* global fetch */\n let response;\n if (url.length > MAX_GET_LENGTH) {\n response = await fetch(baseUrl, { method: 'POST', body: JSON.stringify(parameters), headers });\n }\n else {\n response = await fetch(url, { headers });\n }\n let json;\n try {\n json = await response.json();\n if (accessToken) {\n json.accessToken = accessToken;\n }\n }\n catch {\n json = { error: '' };\n }\n if (!response.ok) {\n REQUEST_CACHE.delete(key);\n throw new CartoAPIError(json.error, errorContext, response);\n }\n REQUEST_CACHE.set(key, json);\n return json;\n }\n catch (error) {\n throw new CartoAPIError(error, errorContext);\n }\n}\n", "/* eslint-disable camelcase */\nimport { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from \"../api/common.js\";\nimport { buildSourceUrl } from \"../api/endpoints.js\";\nimport { requestWithParameters } from \"../api/request-with-parameters.js\";\nexport const SOURCE_DEFAULTS = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: DEFAULT_CLIENT,\n format: 'tilejson',\n headers: {}\n};\nexport async function baseSource(endpoint, options, urlParameters) {\n const { accessToken, connectionName, cache, ...optionalOptions } = options;\n const mergedOptions = { ...SOURCE_DEFAULTS, accessToken, connectionName, endpoint };\n for (const key in optionalOptions) {\n if (optionalOptions[key]) {\n mergedOptions[key] = optionalOptions[key];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const { clientId, format } = mergedOptions;\n const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };\n const parameters = { client: clientId, ...urlParameters };\n const errorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2)\n };\n const mapInstantiation = await requestWithParameters({\n baseUrl,\n parameters,\n headers,\n errorContext\n });\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(new URL(dataUrl).searchParams.get('cache') || '', 10);\n }\n errorContext.requestType = 'Map data';\n if (format === 'tilejson') {\n return await requestWithParameters({\n accessToken,\n baseUrl: dataUrl,\n headers,\n errorContext\n });\n }\n return await requestWithParameters({\n baseUrl: dataUrl,\n headers,\n errorContext\n });\n}\n", "import { baseSource } from \"./base-source.js\";\nexport const boundaryQuerySource = async function (options) {\n const { columns, filters, tilesetTableName, matchingColumn = 'id', propertiesSqlQuery, queryParameters } = options;\n const urlParameters = {\n tilesetTableName,\n matchingColumn,\n propertiesSqlQuery\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('boundary', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const boundaryTableSource = async function (options) {\n const { filters, tilesetTableName, columns, matchingColumn = 'id', propertiesTableName } = options;\n const urlParameters = {\n tilesetTableName,\n matchingColumn,\n propertiesTableName\n };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n return baseSource('boundary', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const h3QuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = 4, sqlQuery, spatialDataColumn = 'h3', queryParameters } = options;\n const urlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType: 'h3',\n q: sqlQuery\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const h3TableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = 4, columns, spatialDataColumn = 'h3', tableName } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'h3'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const h3TilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const rasterSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('raster', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinQuerySource = async function (options) {\n const { aggregationExp, aggregationResLevel = 6, sqlQuery, spatialDataColumn = 'quadbin', queryParameters } = options;\n const urlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType: 'quadbin'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const quadbinTableSource = async function (options) {\n const { aggregationExp, aggregationResLevel = 6, columns, spatialDataColumn = 'quadbin', tableName } = options;\n const urlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType: 'quadbin'\n };\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const quadbinTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const vectorQuerySource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', sqlQuery, queryParameters } = options;\n const urlParameters = { spatialDataColumn, spatialDataType: 'geo', q: sqlQuery };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource('query', options, urlParameters);\n};\n", "/* eslint-disable camelcase */\nimport { baseSource } from \"./base-source.js\";\nexport const vectorTableSource = async function (options) {\n const { columns, filters, spatialDataColumn = 'geom', tableName } = options;\n const urlParameters = { name: tableName, spatialDataColumn, spatialDataType: 'geo' };\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = JSON.stringify(filters);\n }\n return baseSource('table', options, urlParameters);\n};\n", "import { baseSource } from \"./base-source.js\";\nexport const vectorTilesetSource = async function (options) {\n const { tableName } = options;\n const urlParameters = { name: tableName };\n return baseSource('tileset', options, urlParameters);\n};\n", "import { GL } from '@luma.gl/constants';\nimport { log } from '@deck.gl/core';\nimport { AGGREGATION, getLayer, getColorAccessor, getColorValueAccessor, getSizeAccessor, getTextAccessor, OPACITY_MAP, opacityToAlpha, getIconUrlAccessor, negateAccessor, getMaxMarkerSize } from \"./layer-map.js\";\nimport PointLabelLayer from \"../layers/point-label-layer.js\";\nimport { CollisionFilterExtension } from '@deck.gl/extensions';\nimport { assert } from \"../utils.js\";\nconst collisionFilterExtension = new CollisionFilterExtension();\nexport function parseMap(json) {\n const { keplerMapConfig, datasets, token } = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const { mapState, mapStyle } = keplerMapConfig.config;\n const { layers, layerBlending, interactionConfig } = keplerMapConfig.config.visState;\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n token,\n layers: layers.reverse().map(({ id, type, config, visualChannels }) => {\n try {\n const { dataId } = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const { data } = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const { Layer, propMap, defaultProps } = getLayer(type, config, dataset);\n const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\n });\n }\n catch (e) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\nfunction createParametersProp(layerBlending, parameters) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [770, 772];\n parameters.blendEquation = 32774;\n }\n else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [1, 775, 770, 772];\n parameters.blendEquation = [32778, 32774];\n }\n return Object.keys(parameters).length ? { parameters } : {};\n}\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n }\n else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n }\n else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\nfunction createStyleProps(config, mapping) {\n const result = {};\n mapProps(config, result, mapping);\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(id, type, config, visualChannels, data) {\n const { colorField, colorScale, radiusField, radiusScale, sizeField, sizeScale, strokeColorField, strokeColorScale } = visualChannels;\n let { heightField, heightScale } = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const { textLabel, visConfig } = config;\n const result = {};\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const { colorAggregation } = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n }\n else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n }\n else if (colorField) {\n const { colorAggregation: aggregation, colorRange: range } = visConfig;\n result.getFillColor = getColorAccessor(colorField, \n // @ts-ignore\n colorScale, { aggregation, range }, visConfig.opacity, data);\n }\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({ geometry, properties }) => {\n const { type, coordinates } = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField, \n // @ts-ignore\n radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);\n }\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const { strokeColorAggregation: aggregation, strokeColorRange: range } = visConfig;\n result.getLineColor = getColorAccessor(strokeColorField, \n // @ts-ignore\n strokeColorScale, \n // @ts-ignore\n { aggregation, range }, opacity, data);\n }\n if (heightField && visConfig.enable3d) {\n result.getElevation = getSizeAccessor(heightField, \n // @ts-ignore\n heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);\n }\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const { getPointRadius, getFillColor } = result;\n const { customMarkersUrl, customMarkersRange, filled: useMaskedIcons } = visConfig;\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(visualChannels.customMarkersField, customMarkersRange, { fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons }, data);\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data));\n }\n }\n else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const { color: getSecondaryColor, field: secondaryField, outlineColor: secondaryOutlineColor, size: secondarySizeScale } = secondaryLabel || {};\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = { sdf: true };\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n type: PointLabelLayer,\n extensions: [collisionFilterExtension],\n collisionEnabled: true,\n collisionGroup,\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? { getRadius: result.getPointRadius }\n : { radiusScale: visConfig.radius }),\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n })\n }\n };\n }\n return result;\n}\nfunction createLoadOptions(accessToken) {\n return {\n loadOptions: { fetch: { headers: { Authorization: `Bearer ${accessToken}` } } }\n };\n}\n", "import { deviation, extent, groupSort, median, variance } from 'd3-array';\nimport { rgb } from 'd3-color';\nimport { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt, scaleThreshold } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport moment from 'moment-timezone';\nimport { CPUGridLayer, HeatmapLayer, HexagonLayer } from '@deck.gl/aggregation-layers';\nimport { GeoJsonLayer } from '@deck.gl/layers';\nimport { H3HexagonLayer } from '@deck.gl/geo-layers';\nimport H3TileLayer from \"../layers/h3-tile-layer.js\";\nimport QuadbinTileLayer from \"../layers/quadbin-tile-layer.js\";\nimport RasterTileLayer from \"../layers/raster-tile-layer.js\";\nimport VectorTileLayer from \"../layers/vector-tile-layer.js\";\nimport { assert, createBinaryProxy, scaleIdentity } from \"../utils.js\";\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold,\n identity: scaleIdentity\n};\nfunction identity(v) {\n return v;\n}\nconst UNKNOWN_COLOR = '#868d91';\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\nconst hexToRGBA = c => {\n const { r, g, b, opacity } = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n// Kepler prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\nconst customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize'\n }\n};\nconst aggregationVisConfig = {\n colorAggregation: x => ({ colorAggregation: AGGREGATION[x] || AGGREGATION.sum }),\n colorRange: x => ({ colorRange: x.colors.map(hexToRGBA) }),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\nfunction mergePropMaps(a = {}, b = {}) {\n return { ...a, ...b, visConfig: { ...a.visConfig, ...b.visConfig } };\n}\nexport function getLayer(type, config, dataset) {\n let basePropMap = sharedPropMap;\n if (config.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(sharedPropMap, customMarkersPropsMap);\n }\n if (type === 'mvt' || type === 'tileset' || type === 'h3' || type === 'quadbin') {\n return getTileLayer(dataset, basePropMap);\n }\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n const hexagonId = config.columns?.hex_id;\n const layerTypeDefs = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {\n columns: {\n altitude: x => ({ parameters: { depthTest: Boolean(x) } })\n },\n visConfig: { outline: 'stroked' }\n }\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: x => ({ cellSize: 1000 * x }) } },\n defaultProps: { getPosition }\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: { visConfig: { ...aggregationVisConfig, radius: 'radiusPixels' } },\n defaultProps: { getPosition }\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: { visConfig: { ...aggregationVisConfig, worldUnitSize: x => ({ radius: 1000 * x }) } },\n defaultProps: { getPosition }\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: { visConfig: { coverage: 'coverage' } },\n defaultProps: { getHexagon: d => d[hexagonId], stroked: false }\n }\n };\n const layer = layerTypeDefs[type];\n assert(layer, `Unsupported layer type: ${type}`);\n return {\n ...layer,\n propMap: mergePropMaps(basePropMap, layer.propMap),\n defaultProps: { ...defaultProps, ...layer.defaultProps }\n };\n}\nexport function layerFromTileDataset(scheme, type) {\n if (type === 'raster') {\n return RasterTileLayer;\n }\n if (scheme === 'h3') {\n return H3TileLayer;\n }\n if (scheme === 'quadbin') {\n return QuadbinTileLayer;\n }\n return VectorTileLayer;\n}\nfunction getTileLayer(dataset, basePropMap) {\n const { aggregationExp, aggregationResLevel, data: { scheme } } = dataset;\n return {\n Layer: layerFromTileDataset(scheme),\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && { aggregationExp }),\n ...(aggregationResLevel && { aggregationResLevel }),\n uniqueIdProperty: 'geoid'\n }\n };\n}\nfunction domainFromAttribute(attribute, scaleType, scaleLength) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles.global\n ? attribute.quantiles.global[scaleLength]\n : attribute.quantiles[scaleLength];\n }\n let { min } = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\nfunction domainFromValues(values, scaleType) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return groupSort(values, g => -g.length, d => d);\n }\n else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n }\n else if (scaleType === 'log') {\n const [d0, d1] = extent(values);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\nfunction calculateDomain(data, name, scaleType, scaleLength) {\n if (data.tilestats) {\n // Tileset data type\n const { attributes } = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType, scaleLength);\n }\n else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({ properties }) => properties[name]);\n return domainFromValues(values, scaleType);\n }\n else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n return [0, 1];\n}\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return (object, info) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n const { data, index } = info;\n const proxy = createBinaryProxy(data, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\nexport function opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\nfunction getAccessorKeys(name, aggregation) {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat([aggregation, aggregation.toUpperCase()].map(a => `${name}_${a}`));\n }\n return keys;\n}\nfunction findAccessorKey(keys, properties) {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n throw new Error(`Could not find property for any accessor key: ${keys}`);\n}\nexport function getColorValueAccessor({ name }, colorAggregation, data) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\nexport function getColorAccessor({ name, colorColumn }, scaleType, { aggregation, range }, opacity, data) {\n const scale = calculateLayerScale(colorColumn || name, scaleType, range, data);\n const alpha = opacityToAlpha(opacity);\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const { r, g, b } = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\nfunction calculateLayerScale(name, scaleType, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\n let domain = [];\n let scaleColor = [];\n if (scaleType !== 'identity') {\n const { colorMap, colors } = range;\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n }\n else {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n }\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n return scale;\n}\nconst FALLBACK_ICON = 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\nexport function getIconUrlAccessor(field, range, { fallbackUrl, maxIconSize, useMaskedIcons }, data) {\n const urlToUnpackedIcon = (url) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n const mapping = {};\n for (const { value, markerUrl } of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n const accessor = properties => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\nexport function getMaxMarkerSize(visConfig, visualChannels) {\n const { radiusRange, radius } = visConfig;\n const { radiusField, sizeField } = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\nexport function negateAccessor(accessor) {\n return typeof accessor === 'function' ? (d, i) => -accessor(d, i) : -accessor;\n}\nexport function getSizeAccessor({ name }, scaleType, aggregation, range, data) {\n const scale = scaleType ? SCALE_FUNCS[scaleType]() : identity;\n if (scaleType) {\n if (aggregation !== 'count') {\n scale.domain(calculateDomain(data, name, scaleType));\n }\n scale.range(range);\n }\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = properties => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\n };\n return normalizeAccessor(accessor, data);\n}\nconst FORMATS = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\nexport function getTextAccessor({ name, type }, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\nexport { domainFromValues as _domainFromValues };\n", "/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport { CartoAPIError } from \"./carto-api-error.js\";\nimport { DEFAULT_API_BASE_URL, DEFAULT_CLIENT } from \"./common.js\";\nimport { buildPublicMapUrl, buildStatsUrl } from \"./endpoints.js\";\nimport { h3QuerySource, h3TableSource, quadbinQuerySource, quadbinTableSource, vectorQuerySource, vectorTableSource, vectorTilesetSource } from \"../sources/index.js\";\nimport { parseMap } from \"./parse-map.js\";\nimport { requestWithParameters } from \"./request-with-parameters.js\";\nimport { assert } from \"../utils.js\";\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(dataset, accessToken, apiBaseUrl, clientId, headers) {\n const { aggregationExp, aggregationResLevel, connectionName, columns, format, geoColumn, source, type, queryParameters } = dataset;\n const cache = {};\n const globalOptions = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({ ...globalOptions, tableName: source });\n }\n else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = { ...globalOptions, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await vectorTableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await vectorQuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n else if (spatialDataType === 'h3') {\n const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await h3TableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await h3QuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n else if (spatialDataType === 'quadbin') {\n const options = { ...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn };\n if (type === 'table') {\n dataset.data = await quadbinTableSource({ ...options, columns, tableName: source });\n }\n else if (type === 'query') {\n dataset.data = await quadbinQuerySource({ ...options, sqlQuery: source, queryParameters });\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n return cacheChanged;\n}\nasync function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {\n const { connectionName, data, id, source, type, queryParameters } = dataset;\n const errorContext = {\n requestType: 'Tile stats',\n connection: connectionName,\n type,\n source\n };\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n const baseUrl = buildStatsUrl({ attribute, apiBaseUrl, ...dataset });\n const client = new URLSearchParams(data.tiles[0]).get('client');\n const headers = { Authorization: `Bearer ${accessToken}` };\n const parameters = {};\n if (client) {\n parameters.client = client;\n }\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext\n });\n // Replace tilestats for attribute with value from API\n const { attributes } = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\nasync function fillInMapDatasets({ datasets, token }, clientId, apiBaseUrl, headers) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers));\n return await Promise.all(promises);\n}\nasync function fillInTileStats({ datasets, keplerMapConfig, token }, apiBaseUrl) {\n const attributes = [];\n const { layers } = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset && dataset.type !== 'tileset' && dataset.data.tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({ attribute, dataset });\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes = [];\n for (const a of attributes) {\n if (!filteredAttributes.find(({ attribute, dataset }) => attribute === a.attribute && dataset === a.dataset)) {\n filteredAttributes.push(a);\n }\n }\n const promises = filteredAttributes.map(({ attribute, dataset }) => _fetchTilestats(attribute, dataset, token, apiBaseUrl));\n return await Promise.all(promises);\n}\n/* eslint-disable max-statements */\nexport async function fetchMap({ apiBaseUrl = DEFAULT_API_BASE_URL, cartoMapId, clientId = DEFAULT_CLIENT, headers = {}, autoRefresh, onNewData }) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(typeof autoRefresh === 'number' && autoRefresh > 0, '`autoRefresh` must be a positive number');\n }\n const baseUrl = buildPublicMapUrl({ apiBaseUrl, cartoMapId });\n const errorContext = { requestType: 'Public map', mapId: cartoMapId };\n const map = await requestWithParameters({ baseUrl, headers, errorContext });\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(({ type }) => type === 'geojson' || type === 'point');\n const geojsonDatasetIds = geojsonLayers.map(({ config }) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const { config } = geojsonLayers.find(({ config }) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, apiBaseUrl, headers);\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\n const out = { ...parseMap(map), ...{ stopAutoRefresh } };\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace('Inter', 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)');\n await font.load().then(f => document.fonts.add(f));\n }\n return out;\n}\n", "import { SOURCE_DEFAULTS } from \"../sources/index.js\";\nimport { buildQueryUrl } from \"./endpoints.js\";\nimport { requestWithParameters } from \"./request-with-parameters.js\";\nexport const query = async function (options) {\n const { apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl, connectionName, sqlQuery, queryParameters } = options;\n const urlParameters = { q: sqlQuery };\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n const baseUrl = buildQueryUrl({ apiBaseUrl, connectionName });\n const headers = { Authorization: `Bearer ${options.accessToken}`, ...options.headers };\n const errorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(urlParameters, undefined, 2)\n };\n return await requestWithParameters({\n baseUrl,\n parameters: urlParameters,\n headers,\n errorContext\n });\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_core", "import_geo_layers", "h3Indices", "Tileset2D", "import_core", "TileReader", "Protobuf", "id", "TileReader", "TileReader", "id", "VERSION", "id", "DEFAULT_OPTIONS", "TileReader", "import_geo_layers", "import_core", "deepEqual", "defaultProps", "import_core", "TextBackgroundLayer", "defaultProps", "id", "import_core", "import_geo_layers", "import_quadbin", "defaultProps", "GeoCellLayer", "import_geo_layers", "import_quadbin", "Tileset2D", "import_quadbin", "renderSubLayers", "defaultProps", "import_core", "import_core", "import_layers", "defaultProps", "renderSubLayers", "defaultProps", "import_core", "TileReader", "TileReader", "VERSION", "id", "DEFAULT_OPTIONS", "earcut", "TileReader", "import_geo_layers", "import_layers", "defaultProps", "fetch", "import_d3_scale", "baseUrl", "key", "baseUrl", "import_core", "import_d3_scale", "import_layers", "import_geo_layers", "defaultProps", "data", "moment", "d3Format", "import_extensions", "id", "defaultProps", "data", "type", "id", "baseUrl", "config", "baseUrl"]
|
|
7
7
|
}
|