@deck.gl/carto 8.9.22 → 8.10.0-alpha.2

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/dist.dev.js CHANGED
@@ -12050,11 +12050,11 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12050
12050
  return [...new Set(h3Indices2)];
12051
12051
  }
12052
12052
  const oversample = 2;
12053
- const h3Indices = (0, import_h3_js.polyfill)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
12054
- return oversample ? [...new Set(h3Indices.map((i) => (0, import_h3_js.h3ToParent)(i, resolution)))] : h3Indices;
12053
+ const h3Indices = (0, import_h3_js.polygonToCells)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
12054
+ return oversample ? [...new Set(h3Indices.map((i) => (0, import_h3_js.cellToParent)(i, resolution)))] : h3Indices;
12055
12055
  }
12056
12056
  function tileToBoundingBox(index) {
12057
- const coordinates = (0, import_h3_js.h3ToGeoBoundary)(index);
12057
+ const coordinates = (0, import_h3_js.cellToBoundary)(index);
12058
12058
  const latitudes = coordinates.map((c) => c[0]);
12059
12059
  const longitudes = coordinates.map((c) => c[1]);
12060
12060
  const west = Math.min(...longitudes);
@@ -12090,8 +12090,8 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12090
12090
  }
12091
12091
  if (typeof maxZoom === "number" && Number.isFinite(maxZoom) && z > maxZoom) {
12092
12092
  z = maxZoom;
12093
- const center = (0, import_h3_js.geoToH3)(viewport.latitude, viewport.longitude, maxZoom);
12094
- indices = (0, import_h3_js.kRing)(center, 1);
12093
+ const center = (0, import_h3_js.latLngToCell)(viewport.latitude, viewport.longitude, maxZoom);
12094
+ indices = (0, import_h3_js.gridDisk)(center, 1);
12095
12095
  } else {
12096
12096
  indices = getHexagonsInBoundingBox({
12097
12097
  west,
@@ -12119,11 +12119,11 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12119
12119
  getTileZoom({
12120
12120
  i
12121
12121
  }) {
12122
- return (0, import_h3_js.h3GetResolution)(i);
12122
+ return (0, import_h3_js.getResolution)(i);
12123
12123
  }
12124
12124
  getParentIndex(index) {
12125
- const resolution = (0, import_h3_js.h3GetResolution)(index.i);
12126
- const i = (0, import_h3_js.h3ToParent)(index.i, resolution - 1);
12125
+ const resolution = (0, import_h3_js.getResolution)(index.i);
12126
+ const i = (0, import_h3_js.cellToParent)(index.i, resolution - 1);
12127
12127
  return {
12128
12128
  i
12129
12129
  };
@@ -12328,11 +12328,11 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12328
12328
  y = y >> 32n - z;
12329
12329
  return { z: Number(z), x: Number(x), y: Number(y) };
12330
12330
  }
12331
- function getResolution(quadbin) {
12331
+ function getResolution2(quadbin) {
12332
12332
  return quadbin >> 52n & 0x1fn;
12333
12333
  }
12334
- function cellToParent(quadbin) {
12335
- const zparent = getResolution(quadbin) - 1n;
12334
+ function cellToParent2(quadbin) {
12335
+ const zparent = getResolution2(quadbin) - 1n;
12336
12336
  const parent = quadbin & ~(0x1fn << 52n) | zparent << 52n | 0xfffffffffffffn >> zparent * 2n;
12337
12337
  return parent;
12338
12338
  }
@@ -12654,13 +12654,13 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
12654
12654
  getTileZoom({
12655
12655
  q
12656
12656
  }) {
12657
- return Number(getResolution(q));
12657
+ return Number(getResolution2(q));
12658
12658
  }
12659
12659
  getParentIndex({
12660
12660
  q
12661
12661
  }) {
12662
12662
  return {
12663
- q: cellToParent(q)
12663
+ q: cellToParent2(q)
12664
12664
  };
12665
12665
  }
12666
12666
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","error","ok","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","MAP_TYPES","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","REQUEST_TYPES","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","q","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\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.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\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: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\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(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\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, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\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\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\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(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","error","ok","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","MAP_TYPES","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","REQUEST_TYPES","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","q","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n /* eslint-disable-next-line camelcase */\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n /* eslint-disable-next-line camelcase */\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\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.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\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: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\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(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\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, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\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\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\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(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
@@ -56,14 +56,14 @@ function getHexagonsInBoundingBox(_ref, resolution) {
56
56
  }
57
57
 
58
58
  var oversample = 2;
59
- var h3Indices = (0, _h3Js.polyfill)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
59
+ var h3Indices = (0, _h3Js.polygonToCells)([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
60
60
  return oversample ? (0, _toConsumableArray2.default)(new Set(h3Indices.map(function (i) {
61
- return (0, _h3Js.h3ToParent)(i, resolution);
61
+ return (0, _h3Js.cellToParent)(i, resolution);
62
62
  }))) : h3Indices;
63
63
  }
64
64
 
65
65
  function tileToBoundingBox(index) {
66
- var coordinates = (0, _h3Js.h3ToGeoBoundary)(index);
66
+ var coordinates = (0, _h3Js.cellToBoundary)(index);
67
67
  var latitudes = coordinates.map(function (c) {
68
68
  return c[0];
69
69
  });
@@ -124,8 +124,8 @@ var H3Tileset2D = function (_Tileset2D) {
124
124
 
125
125
  if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
126
126
  z = maxZoom;
127
- var center = (0, _h3Js.geoToH3)(viewport.latitude, viewport.longitude, maxZoom);
128
- indices = (0, _h3Js.kRing)(center, 1);
127
+ var center = (0, _h3Js.latLngToCell)(viewport.latitude, viewport.longitude, maxZoom);
128
+ indices = (0, _h3Js.gridDisk)(center, 1);
129
129
  } else {
130
130
  indices = getHexagonsInBoundingBox({
131
131
  west: west,
@@ -159,13 +159,13 @@ var H3Tileset2D = function (_Tileset2D) {
159
159
  key: "getTileZoom",
160
160
  value: function getTileZoom(_ref5) {
161
161
  var i = _ref5.i;
162
- return (0, _h3Js.h3GetResolution)(i);
162
+ return (0, _h3Js.getResolution)(i);
163
163
  }
164
164
  }, {
165
165
  key: "getParentIndex",
166
166
  value: function getParentIndex(index) {
167
- var resolution = (0, _h3Js.h3GetResolution)(index.i);
168
- var i = (0, _h3Js.h3ToParent)(index.i, resolution - 1);
167
+ var resolution = (0, _h3Js.getResolution)(index.i);
168
+ var i = (0, _h3Js.cellToParent)(index.i, resolution - 1);
169
169
  return {
170
170
  i: i
171
171
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["getHexagonsInBoundingBox","resolution","west","north","east","south","longitudeSpan","Math","abs","nSegments","ceil","h3Indices","s","segmentEast","segmentWest","min","concat","Set","oversample","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","minZoom","maxZoom","undefined","getBounds","z","indices","Number","isFinite","center","longitude","bbox","Tileset2D"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {polyfill, geoToH3, h3GetResolution, h3ToGeoBoundary, h3ToParent, kRing} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\n const longitudeSpan = Math.abs(east - west);\n if (longitudeSpan > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n const nSegments = Math.ceil(longitudeSpan / 180);\n let h3Indices: string[] = [];\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(\n getHexagonsInBoundingBox({west: segmentWest, north, east: segmentEast, south}, resolution)\n );\n }\n return [...new Set(h3Indices)];\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\n const coordinates = h3ToGeoBoundary(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\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): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\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}): H3TileIndex[] {\n if (viewport.latitude === undefined) return [];\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\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\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 = geoToH3(viewport.latitude, viewport.longitude, maxZoom);\n indices = kRing(center, 1);\n } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return h3GetResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["getHexagonsInBoundingBox","resolution","west","north","east","south","longitudeSpan","Math","abs","nSegments","ceil","h3Indices","s","segmentEast","segmentWest","min","concat","Set","oversample","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","minZoom","maxZoom","undefined","getBounds","z","indices","Number","isFinite","center","longitude","bbox","Tileset2D"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {\n polygonToCells,\n latLngToCell,\n getResolution,\n cellToBoundary,\n cellToParent,\n gridDisk\n} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\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: string[] = [];\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(\n getHexagonsInBoundingBox({west: segmentWest, north, east: segmentEast, south}, resolution)\n );\n }\n return [...new Set(h3Indices)];\n }\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 [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\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\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): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\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}): H3TileIndex[] {\n if (viewport.latitude === undefined) return [];\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\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\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 } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return getResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = getResolution(index.i);\n const i = cellToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["CartoRasterTileLoader","CartoSpatialTileLoader","isFeatureIdDefined","value","undefined","defaultProps","aggregationResLevel","SpatialIndexTileLayer","params","props","oldProps","setState","tileset","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","_featureInTile","findIndex","feature","featureId","getTileZoom","getParentIndex","tileZoom","index","KEY","q","featureIndex","featureZoom","TileLayer"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport CartoRasterTileLoader from './schema/carto-raster-tile-loader';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {TileLayer, _Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nconst defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by SpatialIndexTileLayer. */\nexport type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps<DataT> &\n TileLayer<DataT>;\n\n/** Properties added by SpatialIndexTileLayer. */\ntype _SpatialIndexTileLayerProps<DataT = any> = {\n aggregationResLevel?: number;\n};\n\nexport default class SpatialIndexTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps<DataT>>> {\n static layerName = 'SpatialIndexTileLayer';\n static defaultProps = defaultProps;\n\n updateState(params: UpdateParameters<this>) {\n const {props, oldProps} = params;\n if (props.aggregationResLevel !== oldProps.aggregationResLevel) {\n // Tileset cache is invalid when resLevel changes\n this.setState({tileset: null});\n }\n\n super.updateState(params);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (\n !isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)\n ) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n\n _featureInTile(tile: Tile2DHeader, featureId: BigInt | number) {\n const {getTileZoom, getParentIndex} = this.state.tileset;\n const tileZoom = getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n let featureIndex = {[KEY]: featureId};\n let featureZoom = getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = getParentIndex(featureIndex);\n featureZoom = getTileZoom(featureIndex);\n }\n\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["CartoRasterTileLoader","CartoSpatialTileLoader","isFeatureIdDefined","value","undefined","defaultProps","aggregationResLevel","SpatialIndexTileLayer","params","props","oldProps","setState","tileset","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","_featureInTile","findIndex","feature","featureId","getTileZoom","getParentIndex","tileZoom","index","KEY","q","featureIndex","featureZoom","TileLayer"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport CartoRasterTileLoader from './schema/carto-raster-tile-loader';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {TileLayer, _Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nconst defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by SpatialIndexTileLayer. */\nexport type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps &\n TileLayer<DataT>;\n\n/** Properties added by SpatialIndexTileLayer. */\ntype _SpatialIndexTileLayerProps = {\n aggregationResLevel?: number;\n};\n\nexport default class SpatialIndexTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps>> {\n static layerName = 'SpatialIndexTileLayer';\n static defaultProps = defaultProps;\n\n updateState(params: UpdateParameters<this>) {\n const {props, oldProps} = params;\n if (props.aggregationResLevel !== oldProps.aggregationResLevel) {\n // Tileset cache is invalid when resLevel changes\n this.setState({tileset: null});\n }\n\n super.updateState(params);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (\n !isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)\n ) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n\n _featureInTile(tile: Tile2DHeader, featureId: BigInt | number) {\n const {getTileZoom, getParentIndex} = this.state.tileset;\n const tileZoom = getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n let featureIndex = {[KEY]: featureId};\n let featureZoom = getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = getParentIndex(featureIndex);\n featureZoom = getTileZoom(featureIndex);\n }\n\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","buildStatsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","REQUEST_TYPES","TILE_FORMATS","CartoAPIError","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","headers","customHeaders","accessToken","body","errorContext","Accept","Authorization","fetch","error","requestJson","response","json","ok","requestData","format","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","values","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","q","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","keys","visualChannels","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","stopAutoRefresh","intervalId","setInterval","changed","some","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\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.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\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: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\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(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\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, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\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\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\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(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","buildStatsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","REQUEST_TYPES","TILE_FORMATS","CartoAPIError","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","headers","customHeaders","accessToken","body","errorContext","Accept","Authorization","fetch","error","requestJson","response","json","ok","requestData","format","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","values","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","stats","q","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","channel","keys","visualChannels","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","stopAutoRefresh","intervalId","setInterval","changed","some","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n /* eslint-disable-next-line camelcase */\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n /* eslint-disable-next-line camelcase */\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\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.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\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: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\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(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\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, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\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\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\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(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
@@ -1,5 +1,5 @@
1
1
  import { _Tileset2D as Tileset2D } from '@deck.gl/geo-layers';
2
- import { polyfill, geoToH3, h3GetResolution, h3ToGeoBoundary, h3ToParent, kRing } from 'h3-js';
2
+ import { polygonToCells, latLngToCell, getResolution, cellToBoundary, cellToParent, gridDisk } from 'h3-js';
3
3
 
4
4
  function getHexagonsInBoundingBox({
5
5
  west,
@@ -28,12 +28,12 @@ function getHexagonsInBoundingBox({
28
28
  }
29
29
 
30
30
  const oversample = 2;
31
- const h3Indices = polyfill([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
32
- return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;
31
+ const h3Indices = polygonToCells([[[west, north], [west, south], [east, south], [east, north], [west, north]]], resolution + oversample, true);
32
+ return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;
33
33
  }
34
34
 
35
35
  function tileToBoundingBox(index) {
36
- const coordinates = h3ToGeoBoundary(index);
36
+ const coordinates = cellToBoundary(index);
37
37
  const latitudes = coordinates.map(c => c[0]);
38
38
  const longitudes = coordinates.map(c => c[1]);
39
39
  const west = Math.min(...longitudes);
@@ -71,8 +71,8 @@ export default class H3Tileset2D extends Tileset2D {
71
71
 
72
72
  if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {
73
73
  z = maxZoom;
74
- const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);
75
- indices = kRing(center, 1);
74
+ const center = latLngToCell(viewport.latitude, viewport.longitude, maxZoom);
75
+ indices = gridDisk(center, 1);
76
76
  } else {
77
77
  indices = getHexagonsInBoundingBox({
78
78
  west,
@@ -104,12 +104,12 @@ export default class H3Tileset2D extends Tileset2D {
104
104
  getTileZoom({
105
105
  i
106
106
  }) {
107
- return h3GetResolution(i);
107
+ return getResolution(i);
108
108
  }
109
109
 
110
110
  getParentIndex(index) {
111
- const resolution = h3GetResolution(index.i);
112
- const i = h3ToParent(index.i, resolution - 1);
111
+ const resolution = getResolution(index.i);
112
+ const i = cellToParent(index.i, resolution - 1);
113
113
  return {
114
114
  i
115
115
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","polyfill","geoToH3","h3GetResolution","h3ToGeoBoundary","h3ToParent","kRing","getHexagonsInBoundingBox","west","north","east","south","resolution","longitudeSpan","Math","abs","nSegments","ceil","h3Indices","s","segmentEast","segmentWest","min","concat","Set","oversample","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","getTileIndices","minZoom","maxZoom","undefined","getBounds","z","indices","Number","isFinite","center","longitude","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {polyfill, geoToH3, h3GetResolution, h3ToGeoBoundary, h3ToParent, kRing} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\n const longitudeSpan = Math.abs(east - west);\n if (longitudeSpan > 180) {\n // This is a known issue in h3-js: polyfill does not work correctly\n // when longitude span is larger than 180 degrees.\n const nSegments = Math.ceil(longitudeSpan / 180);\n let h3Indices: string[] = [];\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(\n getHexagonsInBoundingBox({west: segmentWest, north, east: segmentEast, south}, resolution)\n );\n }\n return [...new Set(h3Indices)];\n }\n\n // `polyfill()` fills based on hexagon center, which means tiles vanish\n // prematurely. Get more accurate coverage by oversampling\n const oversample = 2;\n const h3Indices = polyfill(\n [\n [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\n const coordinates = h3ToGeoBoundary(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\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): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\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}): H3TileIndex[] {\n if (viewport.latitude === undefined) return [];\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\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\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 = geoToH3(viewport.latitude, viewport.longitude, maxZoom);\n indices = kRing(center, 1);\n } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return h3GetResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = h3GetResolution(index.i);\n const i = h3ToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tileset-2d.ts"],"names":["_Tileset2D","Tileset2D","polygonToCells","latLngToCell","getResolution","cellToBoundary","cellToParent","gridDisk","getHexagonsInBoundingBox","west","north","east","south","resolution","longitudeSpan","Math","abs","nSegments","ceil","h3Indices","s","segmentEast","segmentWest","min","concat","Set","oversample","map","i","tileToBoundingBox","index","coordinates","latitudes","c","longitudes","max","BIAS","getHexagonResolution","viewport","hexagonScaleFactor","zoom","latitudeScaleFactor","log","cos","PI","latitude","floor","H3Tileset2D","getTileIndices","minZoom","maxZoom","undefined","getBounds","z","indices","Number","isFinite","center","longitude","getTileId","getTileMetadata","bbox","getTileZoom","getParentIndex"],"mappings":"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","sourcesContent":["import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';\nimport {\n polygonToCells,\n latLngToCell,\n getResolution,\n cellToBoundary,\n cellToParent,\n gridDisk\n} from 'h3-js';\n\nexport type H3TileIndex = {i: string};\n\nfunction getHexagonsInBoundingBox(\n {west, north, east, south}: GeoBoundingBox,\n resolution: number\n): string[] {\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: string[] = [];\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(\n getHexagonsInBoundingBox({west: segmentWest, north, east: segmentEast, south}, resolution)\n );\n }\n return [...new Set(h3Indices)];\n }\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 [\n [west, north],\n [west, south],\n [east, south],\n [east, north],\n [west, north]\n ]\n ],\n resolution + oversample,\n true\n );\n\n return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;\n}\n\nfunction tileToBoundingBox(index: string): GeoBoundingBox {\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\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): number {\n const hexagonScaleFactor = (2 / 3) * viewport.zoom;\n const latitudeScaleFactor = Math.log(1 / Math.cos((Math.PI * viewport.latitude) / 180));\n\n // Clip and bias\n return Math.max(0, Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS));\n}\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}): H3TileIndex[] {\n if (viewport.latitude === undefined) return [];\n const [east, south, west, north] = viewport.getBounds();\n\n let z = getHexagonResolution(viewport);\n let indices: string[];\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\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 } else {\n indices = getHexagonsInBoundingBox({west, north, east, south}, z);\n }\n\n return indices.map(i => ({i}));\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileId({i}: H3TileIndex): string {\n return i;\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileMetadata({i}: H3TileIndex) {\n return {bbox: tileToBoundingBox(i)};\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getTileZoom({i}: H3TileIndex): number {\n return getResolution(i);\n }\n\n // @ts-expect-error Tileset2D should be generic over TileIndex\n getParentIndex(index: H3TileIndex): H3TileIndex {\n const resolution = getResolution(index.i);\n const i = cellToParent(index.i, resolution - 1);\n return {i};\n }\n}\n"],"file":"h3-tileset-2d.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["registerLoaders","CartoRasterTileLoader","CartoSpatialTileLoader","TileLayer","isFeatureIdDefined","value","undefined","defaultProps","aggregationResLevel","SpatialIndexTileLayer","updateState","params","props","oldProps","setState","tileset","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","getSubLayerPropsByTile","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","_featureInTile","findIndex","feature","featureId","getTileZoom","getParentIndex","tileZoom","index","KEY","q","featureIndex","featureZoom"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport CartoRasterTileLoader from './schema/carto-raster-tile-loader';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {TileLayer, _Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nconst defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by SpatialIndexTileLayer. */\nexport type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps<DataT> &\n TileLayer<DataT>;\n\n/** Properties added by SpatialIndexTileLayer. */\ntype _SpatialIndexTileLayerProps<DataT = any> = {\n aggregationResLevel?: number;\n};\n\nexport default class SpatialIndexTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps<DataT>>> {\n static layerName = 'SpatialIndexTileLayer';\n static defaultProps = defaultProps;\n\n updateState(params: UpdateParameters<this>) {\n const {props, oldProps} = params;\n if (props.aggregationResLevel !== oldProps.aggregationResLevel) {\n // Tileset cache is invalid when resLevel changes\n this.setState({tileset: null});\n }\n\n super.updateState(params);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (\n !isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)\n ) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n\n _featureInTile(tile: Tile2DHeader, featureId: BigInt | number) {\n const {getTileZoom, getParentIndex} = this.state.tileset;\n const tileZoom = getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n let featureIndex = {[KEY]: featureId};\n let featureZoom = getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = getParentIndex(featureIndex);\n featureZoom = getTileZoom(featureIndex);\n }\n\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.ts"],"names":["registerLoaders","CartoRasterTileLoader","CartoSpatialTileLoader","TileLayer","isFeatureIdDefined","value","undefined","defaultProps","aggregationResLevel","SpatialIndexTileLayer","updateState","params","props","oldProps","setState","tileset","_updateAutoHighlight","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","getSubLayerPropsByTile","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","_featureInTile","findIndex","feature","featureId","getTileZoom","getParentIndex","tileZoom","index","KEY","q","featureIndex","featureZoom"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport {DefaultProps, UpdateParameters} from '@deck.gl/core';\nimport CartoRasterTileLoader from './schema/carto-raster-tile-loader';\nimport CartoSpatialTileLoader from './schema/carto-spatial-tile-loader';\nregisterLoaders([CartoRasterTileLoader, CartoSpatialTileLoader]);\n\nimport {PickingInfo} from '@deck.gl/core';\nimport {TileLayer, _Tile2DHeader as Tile2DHeader} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nconst defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by SpatialIndexTileLayer. */\nexport type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps &\n TileLayer<DataT>;\n\n/** Properties added by SpatialIndexTileLayer. */\ntype _SpatialIndexTileLayerProps = {\n aggregationResLevel?: number;\n};\n\nexport default class SpatialIndexTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps>> {\n static layerName = 'SpatialIndexTileLayer';\n static defaultProps = defaultProps;\n\n updateState(params: UpdateParameters<this>) {\n const {props, oldProps} = params;\n if (props.aggregationResLevel !== oldProps.aggregationResLevel) {\n // Tileset cache is invalid when resLevel changes\n this.setState({tileset: null});\n }\n\n super.updateState(params);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile: Tile2DHeader) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (\n !isFeatureIdPresent ||\n !Array.isArray(data) ||\n // Quick check for whether id is within tile. data.findIndex is expensive\n !this._featureInTile(tile, hoveredFeatureId)\n ) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n\n _featureInTile(tile: Tile2DHeader, featureId: BigInt | number) {\n const {getTileZoom, getParentIndex} = this.state.tileset;\n const tileZoom = getTileZoom(tile.index);\n // @ts-ignore\n const KEY = tile.index.q ? 'q' : 'i';\n let featureIndex = {[KEY]: featureId};\n let featureZoom = getTileZoom(featureIndex);\n while (!(featureZoom <= tileZoom)) {\n featureIndex = getParentIndex(featureIndex);\n featureZoom = getTileZoom(featureIndex);\n }\n\n return featureIndex[KEY] === tile.index[KEY];\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
package/dist.min.js CHANGED
@@ -23,7 +23,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
23
23
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return o=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function Hd(e,r){if(e){if(typeof e=="string")return ni(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return ni(e,r)}}function ni(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function ut(e,r){var t;if(r===void 0){var n=ti(e),c;try{for(n.s();!(c=n.n()).done;){var o=c.value;o!=null&&(t>o||t===void 0&&o>=o)&&(t=o)}}catch(p){n.e(p)}finally{n.f()}}else{var f=-1,s=ti(e),u;try{for(s.s();!(u=s.n()).done;){var M=u.value;(M=r(M,++f,e))!=null&&(t>M||t===void 0&&M>=M)&&(t=M)}}catch(p){s.e(p)}finally{s.f()}}return t}function lt(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:e.length-1,c=arguments.length>4?arguments[4]:void 0;for(c=c===void 0?dr:Zn(c);n>t;){if(n-t>600){var o=n-t+1,f=r-t+1,s=Math.log(o),u=.5*Math.exp(2*s/3),M=.5*Math.sqrt(s*u*(o-u)/o)*(f-o/2<0?-1:1),p=Math.max(t,Math.floor(r-f*u/o+M)),A=Math.min(n,Math.floor(r+(o-f)*u/o+M));lt(e,r,p,A,c)}var h=e[r],g=t,z=n;for(pr(e,t,r),c(e[n],h)>0&&pr(e,t,n);g<z;){for(pr(e,g,z),++g,--z;c(e[g],h)<0;)++g;for(;c(e[z],h)>0;)--z}c(e[t],h)===0?pr(e,t,z):(++z,pr(e,z,n)),z<=r&&(t=z+1),r<=z&&(n=z-1)}return e}function pr(e,r,t){var n=e[r];e[r]=e[t],e[t]=n}function Mt(e,r,t){if(e=Float64Array.from(Gn(e,t)),!!(n=e.length)){if((r=+r)<=0||n<2)return ut(e);if(r>=1)return st(e);var n,c=(n-1)*r,o=Math.floor(c),f=st(lt(e,o).subarray(0,o+1)),s=ut(e.subarray(o+1));return f+(s-f)*(c-o)}}function na(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ur;if(n=e.length){if((r=+r)<=0||n<2)return+t(e[0],0,e);if(r>=1)return+t(e[n-1],n-1,e);var n,c=(n-1)*r,o=Math.floor(c),f=+t(e[o],o,e),s=+t(e[o+1],o+1,e);return f+(s-f)*(c-o)}}function dt(e,r){return Mt(e,.5,r)}function pt(e,r,t){e=+e,r=+r,t=(c=arguments.length)<2?(r=e,e=0,1):c<3?1:+t;for(var n=-1,c=Math.max(0,Math.ceil((r-e)/t))|0,o=new Array(c);++n<c;)o[n]=e+n*t;return o}function bt(e,r,t){e.prototype=r.prototype=t,t.constructor=e}function aa(e,r){var t=Object.create(e.prototype);for(var n in r)t[n]=r[n];return t}function hr(){}var br=.7;var mt=1/br;var xe="\\s*([+-]?\\d+)\\s*",Ar="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",A1="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Vd=/^#([0-9a-f]{3,8})$/,Gd=new RegExp("^rgb\\(".concat(xe,",").concat(xe,",").concat(xe,"\\)$")),Kd=new RegExp("^rgb\\(".concat(A1,",").concat(A1,",").concat(A1,"\\)$")),Qd=new RegExp("^rgba\\(".concat(xe,",").concat(xe,",").concat(xe,",").concat(Ar,"\\)$")),Jd=new RegExp("^rgba\\(".concat(A1,",").concat(A1,",").concat(A1,",").concat(Ar,"\\)$")),Zd=new RegExp("^hsl\\(".concat(Ar,",").concat(A1,",").concat(A1,"\\)$")),$d=new RegExp("^hsla\\(".concat(Ar,",").concat(A1,",").concat(A1,",").concat(Ar,"\\)$")),ai={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};bt(hr,Q1,{copy:function(r){return Object.assign(new this.constructor,this,r)},displayable:function(){return this.rgb().displayable()},hex:ci,formatHex:ci,formatHex8:ep,formatHsl:rp,formatRgb:oi,toString:oi});function ci(){return this.rgb().formatHex()}function ep(){return this.rgb().formatHex8()}function rp(){return Mi(this).formatHsl()}function oi(){return this.rgb().formatRgb()}function Q1(e){var r,t;return e=(e+"").trim().toLowerCase(),(r=Vd.exec(e))?(t=r[1].length,r=parseInt(r[1],16),t===6?ii(r):t===3?new G0(r>>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):t===8?At(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):t===4?At(r>>12&15|r>>8&240,r>>8&15|r>>4&240,r>>4&15|r&240,((r&15)<<4|r&15)/255):null):(r=Gd.exec(e))?new G0(r[1],r[2],r[3],1):(r=Kd.exec(e))?new G0(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=Qd.exec(e))?At(r[1],r[2],r[3],r[4]):(r=Jd.exec(e))?At(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=Zd.exec(e))?ui(r[1],r[2]/100,r[3]/100,1):(r=$d.exec(e))?ui(r[1],r[2]/100,r[3]/100,r[4]):ai.hasOwnProperty(e)?ii(ai[e]):e==="transparent"?new G0(NaN,NaN,NaN,0):null}function ii(e){return new G0(e>>16&255,e>>8&255,e&255,1)}function At(e,r,t,n){return n<=0&&(e=r=t=NaN),new G0(e,r,t,n)}function tp(e){return e instanceof hr||(e=Q1(e)),e?(e=e.rgb(),new G0(e.r,e.g,e.b,e.opacity)):new G0}function k1(e,r,t,n){return arguments.length===1?tp(e):new G0(e,r,t,n??1)}function G0(e,r,t,n){this.r=+e,this.g=+r,this.b=+t,this.opacity=+n}bt(G0,k1,aa(hr,{brighter:function(r){return r=r==null?mt:Math.pow(mt,r),new G0(this.r*r,this.g*r,this.b*r,this.opacity)},darker:function(r){return r=r==null?br:Math.pow(br,r),new G0(this.r*r,this.g*r,this.b*r,this.opacity)},rgb:function(){return this},clamp:function(){return new G0(ce(this.r),ce(this.g),ce(this.b),zt(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:fi,formatHex:fi,formatHex8:np,formatRgb:si,toString:si}));function fi(){return"#".concat(ae(this.r)).concat(ae(this.g)).concat(ae(this.b))}function np(){return"#".concat(ae(this.r)).concat(ae(this.g)).concat(ae(this.b)).concat(ae((isNaN(this.opacity)?1:this.opacity)*255))}function si(){var e=zt(this.opacity);return"".concat(e===1?"rgb(":"rgba(").concat(ce(this.r),", ").concat(ce(this.g),", ").concat(ce(this.b)).concat(e===1?")":", ".concat(e,")"))}function zt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ce(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ae(e){return e=ce(e),(e<16?"0":"")+e.toString(16)}function ui(e,r,t,n){return n<=0?e=r=t=NaN:t<=0||t>=1?e=r=NaN:r<=0&&(e=NaN),new i1(e,r,t,n)}function Mi(e){if(e instanceof i1)return new i1(e.h,e.s,e.l,e.opacity);if(e instanceof hr||(e=Q1(e)),!e)return new i1;if(e instanceof i1)return e;e=e.rgb();var r=e.r/255,t=e.g/255,n=e.b/255,c=Math.min(r,t,n),o=Math.max(r,t,n),f=NaN,s=o-c,u=(o+c)/2;return s?(r===o?f=(t-n)/s+(t<n)*6:t===o?f=(n-r)/s+2:f=(r-t)/s+4,s/=u<.5?o+c:2-o-c,f*=60):s=u>0&&u<1?0:f,new i1(f,s,u,e.opacity)}function di(e,r,t,n){return arguments.length===1?Mi(e):new i1(e,r,t,n??1)}function i1(e,r,t,n){this.h=+e,this.s=+r,this.l=+t,this.opacity=+n}bt(i1,di,aa(hr,{brighter:function(r){return r=r==null?mt:Math.pow(mt,r),new i1(this.h,this.s,this.l*r,this.opacity)},darker:function(r){return r=r==null?br:Math.pow(br,r),new i1(this.h,this.s,this.l*r,this.opacity)},rgb:function(){var r=this.h%360+(this.h<0)*360,t=isNaN(r)||isNaN(this.s)?0:this.s,n=this.l,c=n+(n<.5?n:1-n)*t,o=2*n-c;return new G0(ca(r>=240?r-240:r+120,o,c),ca(r,o,c),ca(r<120?r+240:r-120,o,c),this.opacity)},clamp:function(){return new i1(li(this.h),ht(this.s),ht(this.l),zt(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var r=zt(this.opacity);return"".concat(r===1?"hsl(":"hsla(").concat(li(this.h),", ").concat(ht(this.s)*100,"%, ").concat(ht(this.l)*100,"%").concat(r===1?")":", ".concat(r,")"))}}));function li(e){return e=(e||0)%360,e<0?e+360:e}function ht(e){return Math.max(0,Math.min(1,e||0))}function ca(e,r,t){return(e<60?r+(t-r)*e/60:e<180?t:e<240?r+(t-r)*(240-e)/60:r)*255}function H0(e,r){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(r).domain(e);break}return this}function ap(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=cp(e))||r&&e&&typeof e.length=="number"){t&&(e=t);var n=0,c=function(){};return{s:c,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(M){throw M},f:c}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
24
24
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return o=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function cp(e,r){if(e){if(typeof e=="string")return pi(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return pi(e,r)}}function pi(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}var oa=Symbol("implicit");function oe(){var e=new Te,r=[],t=[],n=oa;function c(o){var f=e.get(o);if(f===void 0){if(n!==oa)return n;e.set(o,f=r.push(o)-1)}return t[f%t.length]}return c.domain=function(o){if(!arguments.length)return r.slice();r=[],e=new Te;var f=ap(o),s;try{for(f.s();!(s=f.n()).done;){var u=s.value;e.has(u)||e.set(u,r.push(u)-1)}}catch(M){f.e(M)}finally{f.f()}return c},c.range=function(o){return arguments.length?(t=Array.from(o),c):t.slice()},c.unknown=function(o){return arguments.length?(n=o,c):n},c.copy=function(){return oe(r,t).unknown(n)},H0.apply(c,arguments),c}function gt(){var e=oe().unknown(void 0),r=e.domain,t=e.range,n=0,c=1,o,f,s=!1,u=0,M=0,p=.5;delete e.unknown;function A(){var h=r().length,g=c<n,z=g?c:n,N=g?n:c;o=(N-z)/Math.max(1,h-u+M*2),s&&(o=Math.floor(o)),z+=(N-z-o*(h-u))*p,f=o*(1-u),s&&(z=Math.round(z),f=Math.round(f));var y=pt(h).map(function(O){return z+o*O});return t(g?y.reverse():y)}return e.domain=function(h){return arguments.length?(r(h),A()):r()},e.range=function(h){var g,z;return arguments.length?(g=h,z=G(g,2),n=z[0],c=z[1],n=+n,c=+c,A()):[n,c]},e.rangeRound=function(h){var g,z;return g=h,z=G(g,2),n=z[0],c=z[1],n=+n,c=+c,s=!0,A()},e.bandwidth=function(){return f},e.step=function(){return o},e.round=function(h){return arguments.length?(s=!!h,A()):s},e.padding=function(h){return arguments.length?(u=Math.min(1,M=+h),A()):u},e.paddingInner=function(h){return arguments.length?(u=Math.min(1,h),A()):u},e.paddingOuter=function(h){return arguments.length?(M=+h,A()):M},e.align=function(h){return arguments.length?(p=Math.max(0,Math.min(1,h)),A()):p},e.copy=function(){return gt(r(),[n,c]).round(s).paddingInner(u).paddingOuter(M).align(p)},H0.apply(A(),arguments)}function bi(e){var r=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return bi(r())},e}function ia(){return bi(gt.apply(null,arguments).paddingInner(1))}function fa(e,r,t,n,c){var o=e*e,f=o*e;return((1-3*e+3*o-f)*r+(4-6*o+3*f)*t+(1+3*e+3*o-3*f)*n+f*c)/6}function Ai(e){var r=e.length-1;return function(t){var n=t<=0?t=0:t>=1?(t=1,r-1):Math.floor(t*r),c=e[n],o=e[n+1],f=n>0?e[n-1]:2*c-o,s=n<r-1?e[n+2]:2*o-c;return fa((t-n/r)*r,f,c,o,s)}}function hi(e){var r=e.length;return function(t){var n=Math.floor(((t%=1)<0?++t:t)*r),c=e[(n+r-1)%r],o=e[n%r],f=e[(n+1)%r],s=e[(n+2)%r];return fa((t-n/r)*r,c,o,f,s)}}var mr=function(e){return function(){return e}};function op(e,r){return function(t){return e+t*r}}function ip(e,r,t){return e=Math.pow(e,t),r=Math.pow(r,t)-e,t=1/t,function(n){return Math.pow(e+n*r,t)}}function mi(e){return(e=+e)==1?vt:function(r,t){return t-r?ip(r,t,e):mr(isNaN(r)?t:r)}}function vt(e,r){var t=r-e;return t?op(e,t):mr(isNaN(e)?r:e)}var sa=function e(r){var t=mi(r);function n(c,o){var f=t((c=k1(c)).r,(o=k1(o)).r),s=t(c.g,o.g),u=t(c.b,o.b),M=vt(c.opacity,o.opacity);return function(p){return c.r=f(p),c.g=s(p),c.b=u(p),c.opacity=M(p),c+""}}return n.gamma=e,n}(1);function zi(e){return function(r){var t=r.length,n=new Array(t),c=new Array(t),o=new Array(t),f,s;for(f=0;f<t;++f)s=k1(r[f]),n[f]=s.r||0,c[f]=s.g||0,o[f]=s.b||0;return n=e(n),c=e(c),o=e(o),s.opacity=1,function(u){return s.r=n(u),s.g=c(u),s.b=o(u),s+""}}}var Zh=zi(Ai),$h=zi(hi);function gi(e,r){r||(r=[]);var t=e?Math.min(r.length,e.length):0,n=r.slice(),c;return function(o){for(c=0;c<t;++c)n[c]=e[c]*(1-o)+r[c]*o;return n}}function vi(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Oi(e,r){var t=r?r.length:0,n=e?Math.min(t,e.length):0,c=new Array(n),o=new Array(t),f;for(f=0;f<n;++f)c[f]=ie(e[f],r[f]);for(;f<t;++f)o[f]=r[f];return function(s){for(f=0;f<n;++f)o[f]=c[f](s);return o}}function yi(e,r){var t=new Date;return e=+e,r=+r,function(n){return t.setTime(e*(1-n)+r*n),t}}function J1(e,r){return e=+e,r=+r,function(t){return e*(1-t)+r*t}}function Li(e,r){var t={},n={},c;(e===null||k0(e)!=="object")&&(e={}),(r===null||k0(r)!=="object")&&(r={});for(c in r)c in e?t[c]=ie(e[c],r[c]):n[c]=r[c];return function(o){for(c in t)n[c]=t[c](o);return n}}var la=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ua=new RegExp(la.source,"g");function fp(e){return function(){return e}}function sp(e){return function(r){return e(r)+""}}function Ni(e,r){var t=la.lastIndex=ua.lastIndex=0,n,c,o,f=-1,s=[],u=[];for(e=e+"",r=r+"";(n=la.exec(e))&&(c=ua.exec(r));)(o=c.index)>t&&(o=r.slice(t,o),s[f]?s[f]+=o:s[++f]=o),(n=n[0])===(c=c[0])?s[f]?s[f]+=c:s[++f]=c:(s[++f]=null,u.push({i:f,x:J1(n,c)})),t=ua.lastIndex;return t<r.length&&(o=r.slice(t),s[f]?s[f]+=o:s[++f]=o),s.length<2?u[0]?sp(u[0].x):fp(r):(r=u.length,function(M){for(var p=0,A;p<r;++p)s[(A=u[p]).i]=A.x(M);return s.join("")})}function ie(e,r){var t=k0(r),n;return r==null||t==="boolean"?mr(r):(t==="number"?J1:t==="string"?(n=Q1(r))?(r=n,sa):Ni:r instanceof Q1?sa:r instanceof Date?yi:vi(r)?gi:Array.isArray(r)?Oi:typeof r.valueOf!="function"&&typeof r.toString!="function"||isNaN(r)?Li:J1)(e,r)}function Ma(e,r){return e=+e,r=+r,function(t){return Math.round(e*(1-t)+r*t)}}function da(e){return function(){return e}}function pa(e){return+e}var Ti=[0,1];function f1(e){return e}function ba(e,r){return(r-=e=+e)?function(t){return(t-e)/r}:da(isNaN(r)?NaN:.5)}function up(e,r){var t;return e>r&&(t=e,e=r,r=t),function(n){return Math.max(e,Math.min(r,n))}}function lp(e,r,t){var n=e[0],c=e[1],o=r[0],f=r[1];return c<n?(n=ba(c,n),o=t(f,o)):(n=ba(n,c),o=t(o,f)),function(s){return o(n(s))}}function Mp(e,r,t){var n=Math.min(e.length,r.length)-1,c=new Array(n),o=new Array(n),f=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),r=r.slice().reverse());++f<n;)c[f]=ba(e[f],e[f+1]),o[f]=t(r[f],r[f+1]);return function(s){var u=D1(e,s,1,n)-1;return o[u](c[u](s))}}function We(e,r){return r.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function zr(){var e=Ti,r=Ti,t=ie,n,c,o,f=f1,s,u,M;function p(){var h=Math.min(e.length,r.length);return f!==f1&&(f=up(e[0],e[h-1])),s=h>2?Mp:lp,u=M=null,A}function A(h){return h==null||isNaN(h=+h)?o:(u||(u=s(e.map(n),r,t)))(n(f(h)))}return A.invert=function(h){return f(c((M||(M=s(r,e.map(n),J1)))(h)))},A.domain=function(h){return arguments.length?(e=Array.from(h,pa),p()):e.slice()},A.range=function(h){return arguments.length?(r=Array.from(h),p()):r.slice()},A.rangeRound=function(h){return r=Array.from(h),t=Ma,p()},A.clamp=function(h){return arguments.length?(f=h?!0:f1,p()):f!==f1},A.interpolate=function(h){return arguments.length?(t=h,p()):t},A.unknown=function(h){return arguments.length?(o=h,A):o},function(h,g){return n=h,c=g,p()}}function Aa(){return zr()(f1,f1)}function qi(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function fe(e,r){if((t=(e=r?e.toExponential(r-1):e.toExponential()).indexOf("e"))<0)return null;var t,n=e.slice(0,t);return[n.length>1?n[0]+n.slice(2):n,+e.slice(t+1)]}function h1(e){return e=fe(Math.abs(e)),e?e[1]:NaN}function xi(e,r){return function(t,n){for(var c=t.length,o=[],f=0,s=e[0],u=0;c>0&&s>0&&(u+s+1>n&&(s=Math.max(1,n-u)),o.push(t.substring(c-=s,c+s)),!((u+=s+1)>n));)s=e[f=(f+1)%e.length];return o.reverse().join(r)}}function Wi(e){return function(r){return r.replace(/[0-9]/g,function(t){return e[+t]})}}var dp=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function m1(e){if(!(r=dp.exec(e)))throw new Error("invalid format: "+e);var r;return new Ot({fill:r[1],align:r[2],sign:r[3],symbol:r[4],zero:r[5],width:r[6],comma:r[7],precision:r[8]&&r[8].slice(1),trim:r[9],type:r[10]})}m1.prototype=Ot.prototype;function Ot(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}Ot.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Si(e){e:for(var r=e.length,t=1,n=-1,c;t<r;++t)switch(e[t]){case".":n=c=t;break;case"0":n===0&&(n=t),c=t;break;default:if(!+e[t])break e;n>0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(c+1):e}var ha;function Bi(e,r){var t=fe(e,r);if(!t)return e+"";var n=t[0],c=t[1],o=c-(ha=Math.max(-8,Math.min(8,Math.floor(c/3)))*3)+1,f=n.length;return o===f?n:o>f?n+new Array(o-f+1).join("0"):o>0?n.slice(0,o)+"."+n.slice(o):"0."+new Array(1-o).join("0")+fe(e,Math.max(0,r+o-1))[0]}function ma(e,r){var t=fe(e,r);if(!t)return e+"";var n=t[0],c=t[1];return c<0?"0."+new Array(-c).join("0")+n:n.length>c+1?n.slice(0,c+1)+"."+n.slice(c+1):n+new Array(c-n.length+2).join("0")}var za={"%":function(r,t){return(r*100).toFixed(t)},b:function(r){return Math.round(r).toString(2)},c:function(r){return r+""},d:qi,e:function(r,t){return r.toExponential(t)},f:function(r,t){return r.toFixed(t)},g:function(r,t){return r.toPrecision(t)},o:function(r){return Math.round(r).toString(8)},p:function(r,t){return ma(r*100,t)},r:ma,s:Bi,X:function(r){return Math.round(r).toString(16).toUpperCase()},x:function(r){return Math.round(r).toString(16)}};function ga(e){return e}var Ci=Array.prototype.map,wi=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function Xi(e){var r=e.grouping===void 0||e.thousands===void 0?ga:xi(Ci.call(e.grouping,Number),e.thousands+""),t=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",c=e.decimal===void 0?".":e.decimal+"",o=e.numerals===void 0?ga:Wi(Ci.call(e.numerals,String)),f=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function M(A){A=m1(A);var h=A.fill,g=A.align,z=A.sign,N=A.symbol,y=A.zero,O=A.width,L=A.comma,x=A.precision,B=A.trim,S=A.type;S==="n"?(L=!0,S="g"):za[S]||(x===void 0&&(x=12),B=!0,S="g"),(y||h==="0"&&g==="=")&&(y=!0,h="0",g="=");var X=N==="$"?t:N==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():"",H=N==="$"?n:/[%p]/.test(S)?f:"",k=za[S],f0=/[defgprs%]/.test(S);x=x===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function e0(D){var J=X,t0=H,Y,q0,W;if(S==="c")t0=k(D)+t0,D="";else{D=+D;var q=D<0||1/D<0;if(D=isNaN(D)?u:k(Math.abs(D),x),B&&(D=Si(D)),q&&+D==0&&z!=="+"&&(q=!1),J=(q?z==="("?z:s:z==="-"||z==="("?"":z)+J,t0=(S==="s"?wi[8+ha/3]:"")+t0+(q&&z==="("?")":""),f0){for(Y=-1,q0=D.length;++Y<q0;)if(W=D.charCodeAt(Y),48>W||W>57){t0=(W===46?c+D.slice(Y+1):D.slice(Y))+t0,D=D.slice(0,Y);break}}}L&&!y&&(D=r(D,1/0));var C=J.length+D.length+t0.length,F=C<O?new Array(O-C+1).join(h):"";switch(L&&y&&(D=r(F+D,F.length?O-t0.length:1/0),F=""),g){case"<":D=J+D+t0+F;break;case"=":D=J+F+D+t0;break;case"^":D=F.slice(0,C=F.length>>1)+J+D+t0+F.slice(C);break;default:D=F+J+D+t0;break}return o(D)}return e0.toString=function(){return A+""},e0}function p(A,h){var g=M((A=m1(A),A.type="f",A)),z=Math.max(-8,Math.min(8,Math.floor(h1(h)/3)))*3,N=Math.pow(10,-z),y=wi[8+z/3];return function(O){return g(N*O)+y}}return{format:M,formatPrefix:p}}var yt,I1,Lt;va({thousands:",",grouping:[3],currency:["$",""]});function va(e){return yt=Xi(e),I1=yt.format,Lt=yt.formatPrefix,yt}function Oa(e){return Math.max(0,-h1(Math.abs(e)))}function ya(e,r){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(h1(r)/3)))*3-h1(Math.abs(e)))}function La(e,r){return e=Math.abs(e),r=Math.abs(r)-e,Math.max(0,h1(r)-h1(e))+1}function Na(e,r,t,n){var c=ta(e,r,t),o;switch(n=m1(n??",f"),n.type){case"s":{var f=Math.max(Math.abs(e),Math.abs(r));return n.precision==null&&!isNaN(o=ya(c,f))&&(n.precision=o),Lt(n,f)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(o=La(c,Math.max(Math.abs(e),Math.abs(r))))&&(n.precision=o-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(o=Oa(c))&&(n.precision=o-(n.type==="%")*2);break}}return I1(n)}function gr(e){var r=e.domain;return e.ticks=function(t){var n=r();return ne(n[0],n[n.length-1],t??10)},e.tickFormat=function(t,n){var c=r();return Na(c[0],c[c.length-1],t??10,n)},e.nice=function(t){t==null&&(t=10);var n=r(),c=0,o=n.length-1,f=n[c],s=n[o],u,M,p=10;for(s<f&&(M=f,f=s,s=M,M=c,c=o,o=M);p-- >0;){if(M=ft(f,s,t),M===u)return n[c]=f,n[o]=s,r(n);if(M>0)f=Math.floor(f/M)*M,s=Math.ceil(s/M)*M;else if(M<0)f=Math.ceil(f*M)/M,s=Math.floor(s*M)/M;else break;u=M}return e},e}function se(){var e=Aa();return e.copy=function(){return We(e,se())},H0.apply(e,arguments),gr(e)}function Ta(e,r){e=e.slice();var t=0,n=e.length-1,c=e[t],o=e[n],f;return o<c&&(f=t,t=n,n=f,f=c,c=o,o=f),e[t]=r.floor(c),e[n]=r.ceil(o),e}function Ei(e){return Math.log(e)}function Pi(e){return Math.exp(e)}function pp(e){return-Math.log(-e)}function bp(e){return-Math.exp(-e)}function Ap(e){return isFinite(e)?+("1e"+e):e<0?0:e}function hp(e){return e===10?Ap:e===Math.E?Math.exp:function(r){return Math.pow(e,r)}}function mp(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),function(r){return Math.log(r)/e})}function Ri(e){return function(r,t){return-e(-r,t)}}function zp(e){var r=e(Ei,Pi),t=r.domain,n=10,c,o;function f(){return c=mp(n),o=hp(n),t()[0]<0?(c=Ri(c),o=Ri(o),e(pp,bp)):e(Ei,Pi),r}return r.base=function(s){return arguments.length?(n=+s,f()):n},r.domain=function(s){return arguments.length?(t(s),f()):t()},r.ticks=function(s){var u=t(),M=u[0],p=u[u.length-1],A=p<M;if(A){var h=[p,M];M=h[0],p=h[1]}var g=c(M),z=c(p),N,y,O=s==null?10:+s,L=[];if(!(n%1)&&z-g<O){if(g=Math.floor(g),z=Math.ceil(z),M>0){for(;g<=z;++g)for(N=1;N<n;++N)if(y=g<0?N/o(-g):N*o(g),!(y<M)){if(y>p)break;L.push(y)}}else for(;g<=z;++g)for(N=n-1;N>=1;--N)if(y=g>0?N/o(-g):N*o(g),!(y<M)){if(y>p)break;L.push(y)}L.length*2<O&&(L=ne(M,p,O))}else L=ne(g,z,Math.min(z-g,O)).map(o);return A?L.reverse():L},r.tickFormat=function(s,u){if(s==null&&(s=10),u==null&&(u=n===10?"s":","),typeof u!="function"&&(!(n%1)&&(u=m1(u)).precision==null&&(u.trim=!0),u=I1(u)),s===1/0)return u;var M=Math.max(1,n*s/r.ticks().length);return function(p){var A=p/o(Math.round(c(p)));return A*n<n-.5&&(A*=n),A<=M?u(p):""}},r.nice=function(){return t(Ta(t(),{floor:function(u){return o(Math.floor(c(u)))},ceil:function(u){return o(Math.ceil(c(u)))}}))},r}function vr(){var e=zp(zr()).domain([1,10]);return e.copy=function(){return We(e,vr()).base(e.base())},H0.apply(e,arguments),e}function _i(e){return function(r){return r<0?-Math.pow(-r,e):Math.pow(r,e)}}function gp(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function vp(e){return e<0?-e*e:e*e}function Op(e){var r=e(f1,f1),t=1;function n(){return t===1?e(f1,f1):t===.5?e(gp,vp):e(_i(t),_i(1/t))}return r.exponent=function(c){return arguments.length?(t=+c,n()):t},gr(r)}function Nt(){var e=Op(zr());return e.copy=function(){return We(e,Nt()).exponent(e.exponent())},H0.apply(e,arguments),e}function qa(){return Nt.apply(null,arguments).exponent(.5)}function yp(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=Lp(e))||r&&e&&typeof e.length=="number"){t&&(e=t);var n=0,c=function(){};return{s:c,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(M){throw M},f:c}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
25
25
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return o=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function Lp(e,r){if(e){if(typeof e=="string")return Di(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return Di(e,r)}}function Di(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function Or(){var e=[],r=[],t=[],n;function c(){var f=0,s=Math.max(1,r.length);for(t=new Array(s-1);++f<s;)t[f-1]=na(e,f/s);return o}function o(f){return f==null||isNaN(f=+f)?n:r[D1(t,f)]}return o.invertExtent=function(f){var s=r.indexOf(f);return s<0?[NaN,NaN]:[s>0?t[s-1]:e[0],s<t.length?t[s]:e[e.length-1]]},o.domain=function(f){if(!arguments.length)return e.slice();e=[];var s=yp(f),u;try{for(s.s();!(u=s.n()).done;){var M=u.value;M!=null&&!isNaN(M=+M)&&e.push(M)}}catch(p){s.e(p)}finally{s.f()}return e.sort(I0),c()},o.range=function(f){return arguments.length?(r=Array.from(f),c()):r.slice()},o.unknown=function(f){return arguments.length?(n=f,o):n},o.quantiles=function(){return t.slice()},o.copy=function(){return Or().domain(e).range(r).unknown(n)},H0.apply(o,arguments)}function yr(){var e=0,r=1,t=1,n=[.5],c=[0,1],o;function f(u){return u!=null&&u<=u?c[D1(n,u,0,t)]:o}function s(){var u=-1;for(n=new Array(t);++u<t;)n[u]=((u+1)*r-(u-t)*e)/(t+1);return f}return f.domain=function(u){var M,p;return arguments.length?(M=u,p=G(M,2),e=p[0],r=p[1],e=+e,r=+r,s()):[e,r]},f.range=function(u){return arguments.length?(t=(c=Array.from(u)).length-1,s()):c.slice()},f.invertExtent=function(u){var M=c.indexOf(u);return M<0?[NaN,NaN]:M<1?[e,n[0]]:M>=t?[n[t-1],r]:[n[M-1],n[M]]},f.unknown=function(u){return arguments.length&&(o=u),f},f.thresholds=function(){return n.slice()},f.copy=function(){return yr().domain([e,r]).range(c).unknown(o)},H0.apply(gr(f),arguments)}function ue(){var e=[.5],r=[0,1],t,n=1;function c(o){return o!=null&&o<=o?r[D1(e,o,0,n)]:t}return c.domain=function(o){return arguments.length?(e=Array.from(o),n=Math.min(e.length,r.length-1),c):e.slice()},c.range=function(o){return arguments.length?(r=Array.from(o),n=Math.min(e.length,r.length-1),c):r.slice()},c.invertExtent=function(o){var f=r.indexOf(o);return[e[f-1],e[f]]},c.unknown=function(o){return arguments.length?(t=o,c):t},c.copy=function(){return ue().domain(e).range(r).unknown(t)},H0.apply(c,arguments)}var tc=a0(Hi()),je=a0(Vi()),nc=a0(le()),Qt=a0(_1());var Wf=a0(Wa());var Xa=a0(G1());function Me(e,r,t){var n=r.type===2?r.readVarint()+r.pos:r.pos+1;return t.value=new e(r.buf.buffer.slice(r.pos,n)),r.pos=n,t.value}var qp=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{key:"",value:""},n)}},{key:"_readField",value:function(t,n,c){t===1?n.key=c.readString():t===2&&(n.value=c.readString())}}]),e}(),Lr=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{},n)}},{key:"_readField",value:function(t,n,c){if(t===1){var o=qp.read(c,c.readVarint()+c.pos),f=o.key,s=o.value;n[f]=s}}}]),e}(),Sa=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){var c=t.readFields(e._readField,{value:[],size:0},n),o=c.value,f=c.size;return{value:new Float32Array(o),size:f}}},{key:"_readField",value:function(t,n,c){t===1?Me(Float64Array,c,n):t===2&&(n.size=c.readVarint(!0))}}]),e}(),z1=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){var c=t.readFields(e._readField,{value:[],size:0},n),o=c.value,f=c.size;return{value:new Uint32Array(o),size:f}}},{key:"_readField",value:function(t,n,c){t===1?c.readPackedVarint(n.value):t===2&&(n.size=c.readVarint(!0))}}]),e}(),Ba=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{id:0},n)}},{key:"_readField",value:function(t,n,c){t===1&&(n.id=c.readVarint())}}]),e}(),xp=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&Me(Float64Array,c,n)}}]),e}(),Nr=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{key:"",value:null},n)}},{key:"_readField",value:function(t,n,c){t===1?n.key=c.readString():t===2&&(n.value=xp.read(c,c.readVarint()+c.pos))}}]),e}(),Wp=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{positions:null,globalFeatureIds:null,featureIds:null,properties:[],numericProps:{},fields:[]},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.positions=Sa.read(c,c.readVarint()+c.pos);else if(t===2)n.globalFeatureIds=z1.read(c,c.readVarint()+c.pos);else if(t===3)n.featureIds=z1.read(c,c.readVarint()+c.pos);else if(t===4)n.properties.push(Lr.read(c,c.readVarint()+c.pos));else if(t===5){var o=Nr.read(c,c.readVarint()+c.pos);n.numericProps[o.key]=o.value}else t===6&&n.fields.push(Ba.read(c,c.readVarint()+c.pos))}}]),e}(),Sp=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{positions:null,pathIndices:null,globalFeatureIds:null,featureIds:null,properties:[],numericProps:{},fields:[]},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.positions=Sa.read(c,c.readVarint()+c.pos);else if(t===2)n.pathIndices=z1.read(c,c.readVarint()+c.pos);else if(t===3)n.globalFeatureIds=z1.read(c,c.readVarint()+c.pos);else if(t===4)n.featureIds=z1.read(c,c.readVarint()+c.pos);else if(t===5)n.properties.push(Lr.read(c,c.readVarint()+c.pos));else if(t===6){var o=Nr.read(c,c.readVarint()+c.pos);n.numericProps[o.key]=o.value}else t===7&&n.fields.push(Ba.read(c,c.readVarint()+c.pos))}}]),e}(),Bp=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{positions:null,polygonIndices:null,globalFeatureIds:null,featureIds:null,primitivePolygonIndices:null,triangles:null,properties:[],numericProps:{},fields:[]},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.positions=Sa.read(c,c.readVarint()+c.pos);else if(t===2)n.polygonIndices=z1.read(c,c.readVarint()+c.pos);else if(t===3)n.globalFeatureIds=z1.read(c,c.readVarint()+c.pos);else if(t===4)n.featureIds=z1.read(c,c.readVarint()+c.pos);else if(t===5)n.primitivePolygonIndices=z1.read(c,c.readVarint()+c.pos);else if(t===6)n.triangles=z1.read(c,c.readVarint()+c.pos);else if(t===7)n.properties.push(Lr.read(c,c.readVarint()+c.pos));else if(t===8){var o=Nr.read(c,c.readVarint()+c.pos);n.numericProps[o.key]=o.value}else t===9&&n.fields.push(Ba.read(c,c.readVarint()+c.pos))}}]),e}(),Qi=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{points:null,lines:null,polygons:null},n)}},{key:"_readField",value:function(t,n,c){t===1?n.points=Wp.read(c,c.readVarint()+c.pos):t===2?n.lines=Sp.read(c,c.readVarint()+c.pos):t===3&&(n.polygons=Bp.read(c,c.readVarint()+c.pos))}}]),e}();var af=a0(nf());function we(e,r){var t=new af.default(e),n=r.read(t);return n}var Kp={name:"CARTO Vector Tile",version:"1",id:"cartoVectorTile",module:"carto",extensions:["pbf"],mimeTypes:["application/vnd.carto-vector-tile"],category:"geometry",worker:!1,parse:function(){var e=N0(Xa.default.mark(function t(n,c){return Xa.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",cf(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:cf,options:{}};function cf(e,r){if(!e)return null;var t=we(e,Qi);return t}var of=Kp;var Sf=a0(Ea()),qr=a0(_1()),Bf=a0(le());var X0=1e-6,g1=typeof Float32Array<"u"?Float32Array:Array;var y5=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var e=0,r=arguments.length;r--;)e+=arguments[r]*arguments[r];return Math.sqrt(e)});function Qp(){var e=new g1(2);return g1!=Float32Array&&(e[0]=0,e[1]=0),e}function Pa(e,r,t){return e[0]=r[0]+t[0],e[1]=r[1]+t[1],e}function uf(e,r){return e[0]=-r[0],e[1]=-r[1],e}function St(e,r,t,n){var c=r[0],o=r[1];return e[0]=c+n*(t[0]-c),e[1]=o+n*(t[1]-o),e}var L5=function(){var e=Qp();return function(r,t,n,c,o,f){var s,u;for(t||(t=2),n||(n=0),c?u=Math.min(c*t+n,r.length):u=r.length,s=n;s<u;s+=t)e[0]=r[s],e[1]=r[s+1],o(e,e,f),r[s]=e[0],r[s+1]=e[1];return r}}();function Jp(){var e=new g1(3);return g1!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function lf(e,r,t){return e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function Zp(e,r,t){return e[0]=r[0]*t[0],e[1]=r[1]*t[1],e[2]=r[2]*t[2],e}function Mf(e,r){return e[0]=-r[0],e[1]=-r[1],e[2]=-r[2],e}var df=Zp;var N5=function(){var e=Jp();return function(r,t,n,c,o,f){var s,u;for(t||(t=3),n||(n=0),c?u=Math.min(c*t+n,r.length):u=r.length,s=n;s<u;s+=t)e[0]=r[s],e[1]=r[s+1],e[2]=r[s+2],o(e,e,f),r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2];return r}}();function bf(e,r){var t=r[0],n=r[1],c=r[2],o=r[3],f=r[4],s=r[5],u=r[6],M=r[7],p=r[8],A=r[9],h=r[10],g=r[11],z=r[12],N=r[13],y=r[14],O=r[15],L=t*s-n*f,x=t*u-c*f,B=t*M-o*f,S=n*u-c*s,X=n*M-o*s,H=c*M-o*u,k=p*N-A*z,f0=p*y-h*z,e0=p*O-g*z,D=A*y-h*N,J=A*O-g*N,t0=h*O-g*y,Y=L*t0-x*J+B*D+S*e0-X*f0+H*k;return Y?(Y=1/Y,e[0]=(s*t0-u*J+M*D)*Y,e[1]=(c*J-n*t0-o*D)*Y,e[2]=(N*H-y*X+O*S)*Y,e[3]=(h*X-A*H-g*S)*Y,e[4]=(u*e0-f*t0-M*f0)*Y,e[5]=(t*t0-c*e0+o*f0)*Y,e[6]=(y*B-z*H-O*x)*Y,e[7]=(p*H-h*B+g*x)*Y,e[8]=(f*J-s*e0+M*k)*Y,e[9]=(n*e0-t*J-o*k)*Y,e[10]=(z*X-N*B+O*L)*Y,e[11]=(A*B-p*X-g*L)*Y,e[12]=(s*f0-f*D-u*k)*Y,e[13]=(t*D-n*f0+c*k)*Y,e[14]=(N*x-z*S-y*L)*Y,e[15]=(p*S-A*x+h*L)*Y,e):null}function Bt(e,r,t){var n=r[0],c=r[1],o=r[2],f=r[3],s=r[4],u=r[5],M=r[6],p=r[7],A=r[8],h=r[9],g=r[10],z=r[11],N=r[12],y=r[13],O=r[14],L=r[15],x=t[0],B=t[1],S=t[2],X=t[3];return e[0]=x*n+B*s+S*A+X*N,e[1]=x*c+B*u+S*h+X*y,e[2]=x*o+B*M+S*g+X*O,e[3]=x*f+B*p+S*z+X*L,x=t[4],B=t[5],S=t[6],X=t[7],e[4]=x*n+B*s+S*A+X*N,e[5]=x*c+B*u+S*h+X*y,e[6]=x*o+B*M+S*g+X*O,e[7]=x*f+B*p+S*z+X*L,x=t[8],B=t[9],S=t[10],X=t[11],e[8]=x*n+B*s+S*A+X*N,e[9]=x*c+B*u+S*h+X*y,e[10]=x*o+B*M+S*g+X*O,e[11]=x*f+B*p+S*z+X*L,x=t[12],B=t[13],S=t[14],X=t[15],e[12]=x*n+B*s+S*A+X*N,e[13]=x*c+B*u+S*h+X*y,e[14]=x*o+B*M+S*g+X*O,e[15]=x*f+B*p+S*z+X*L,e}function Tr(e,r,t){var n=t[0],c=t[1],o=t[2],f,s,u,M,p,A,h,g,z,N,y,O;return r===e?(e[12]=r[0]*n+r[4]*c+r[8]*o+r[12],e[13]=r[1]*n+r[5]*c+r[9]*o+r[13],e[14]=r[2]*n+r[6]*c+r[10]*o+r[14],e[15]=r[3]*n+r[7]*c+r[11]*o+r[15]):(f=r[0],s=r[1],u=r[2],M=r[3],p=r[4],A=r[5],h=r[6],g=r[7],z=r[8],N=r[9],y=r[10],O=r[11],e[0]=f,e[1]=s,e[2]=u,e[3]=M,e[4]=p,e[5]=A,e[6]=h,e[7]=g,e[8]=z,e[9]=N,e[10]=y,e[11]=O,e[12]=f*n+p*c+z*o+r[12],e[13]=s*n+A*c+N*o+r[13],e[14]=u*n+h*c+y*o+r[14],e[15]=M*n+g*c+O*o+r[15]),e}function Ct(e,r,t){var n=t[0],c=t[1],o=t[2];return e[0]=r[0]*n,e[1]=r[1]*n,e[2]=r[2]*n,e[3]=r[3]*n,e[4]=r[4]*c,e[5]=r[5]*c,e[6]=r[6]*c,e[7]=r[7]*c,e[8]=r[8]*o,e[9]=r[9]*o,e[10]=r[10]*o,e[11]=r[11]*o,e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15],e}function Af(e,r,t){var n=Math.sin(t),c=Math.cos(t),o=r[4],f=r[5],s=r[6],u=r[7],M=r[8],p=r[9],A=r[10],h=r[11];return r!==e&&(e[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15]),e[4]=o*c+M*n,e[5]=f*c+p*n,e[6]=s*c+A*n,e[7]=u*c+h*n,e[8]=M*c-o*n,e[9]=p*c-f*n,e[10]=A*c-s*n,e[11]=h*c-u*n,e}function hf(e,r,t){var n=Math.sin(t),c=Math.cos(t),o=r[0],f=r[1],s=r[2],u=r[3],M=r[4],p=r[5],A=r[6],h=r[7];return r!==e&&(e[8]=r[8],e[9]=r[9],e[10]=r[10],e[11]=r[11],e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15]),e[0]=o*c+M*n,e[1]=f*c+p*n,e[2]=s*c+A*n,e[3]=u*c+h*n,e[4]=M*c-o*n,e[5]=p*c-f*n,e[6]=A*c-s*n,e[7]=h*c-u*n,e}function $p(e,r,t,n,c){var o=1/Math.tan(r/2),f;return e[0]=o/t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,c!=null&&c!==1/0?(f=1/(n-c),e[10]=(c+n)*f,e[14]=2*c*n*f):(e[10]=-1,e[14]=-2*n),e}var mf=$p;function _a(e,r){var t=e[0],n=e[1],c=e[2],o=e[3],f=e[4],s=e[5],u=e[6],M=e[7],p=e[8],A=e[9],h=e[10],g=e[11],z=e[12],N=e[13],y=e[14],O=e[15],L=r[0],x=r[1],B=r[2],S=r[3],X=r[4],H=r[5],k=r[6],f0=r[7],e0=r[8],D=r[9],J=r[10],t0=r[11],Y=r[12],q0=r[13],W=r[14],q=r[15];return Math.abs(t-L)<=X0*Math.max(1,Math.abs(t),Math.abs(L))&&Math.abs(n-x)<=X0*Math.max(1,Math.abs(n),Math.abs(x))&&Math.abs(c-B)<=X0*Math.max(1,Math.abs(c),Math.abs(B))&&Math.abs(o-S)<=X0*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(f-X)<=X0*Math.max(1,Math.abs(f),Math.abs(X))&&Math.abs(s-H)<=X0*Math.max(1,Math.abs(s),Math.abs(H))&&Math.abs(u-k)<=X0*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(M-f0)<=X0*Math.max(1,Math.abs(M),Math.abs(f0))&&Math.abs(p-e0)<=X0*Math.max(1,Math.abs(p),Math.abs(e0))&&Math.abs(A-D)<=X0*Math.max(1,Math.abs(A),Math.abs(D))&&Math.abs(h-J)<=X0*Math.max(1,Math.abs(h),Math.abs(J))&&Math.abs(g-t0)<=X0*Math.max(1,Math.abs(g),Math.abs(t0))&&Math.abs(z-Y)<=X0*Math.max(1,Math.abs(z),Math.abs(Y))&&Math.abs(N-q0)<=X0*Math.max(1,Math.abs(N),Math.abs(q0))&&Math.abs(y-W)<=X0*Math.max(1,Math.abs(y),Math.abs(W))&&Math.abs(O-q)<=X0*Math.max(1,Math.abs(O),Math.abs(q))}function eb(){var e=new g1(4);return g1!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function gf(e,r,t){return e[0]=r[0]*t,e[1]=r[1]*t,e[2]=r[2]*t,e[3]=r[3]*t,e}function vf(e,r,t){var n=r[0],c=r[1],o=r[2],f=r[3];return e[0]=t[0]*n+t[4]*c+t[8]*o+t[12]*f,e[1]=t[1]*n+t[5]*c+t[9]*o+t[13]*f,e[2]=t[2]*n+t[6]*c+t[10]*o+t[14]*f,e[3]=t[3]*n+t[7]*c+t[11]*o+t[15]*f,e}var T5=function(){var e=eb();return function(r,t,n,c,o,f){var s,u;for(t||(t=4),n||(n=0),c?u=Math.min(c*t+n,r.length):u=r.length,s=n;s<u;s+=t)e[0]=r[s],e[1]=r[s+1],e[2]=r[s+2],e[3]=r[s+3],o(e,e,f),r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2],r[s+3]=e[3];return r}}();function Of(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function rb(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Of(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Of(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Lf(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=tb(e))||r&&e&&typeof e.length=="number"){t&&(e=t);var n=0,c=function(){};return{s:c,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(M){throw M},f:c}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
26
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return o=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function tb(e,r){if(e){if(typeof e=="string")return yf(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return yf(e,r)}}function yf(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function Da(e,r){var t=r?.globalFeatureId;return t!==void 0?nb(e,t):ab(e,r?.type)}function nb(e,r){var t=Tf(e),n=Lf(t),c;try{for(n.s();!(c=n.n()).done;){for(var o=c.value,f=0,s=o.featureIds.value[0],u=0;u<o.featureIds.value.length;u++){var M=o.featureIds.value[u];if(M!==s){if(r===o.globalFeatureIds.value[f])return wt(o,f,u);f=u,s=M}}if(r===o.globalFeatureIds.value[f])return wt(o,f,o.featureIds.value.length)}}catch(p){n.e(p)}finally{n.f()}throw new Error("featureId:".concat(r," not found"))}function ab(e,r){var t=Tf(e,r);return cb(t)}function Nf(e,r,t){switch(e.type){case"Point":return sb(e,r,t);case"LineString":return fb(e,r,t);case"Polygon":return qf(e,r,t);default:var n=e;throw new Error("Unsupported geometry type: ".concat(n?.type))}}function Tf(e,r){var t=Boolean(e.points||e.lines||e.polygons);if(!t)return e.type=r||ub(e),[e];var n=[];return e.points&&(e.points.type="Point",n.push(e.points)),e.lines&&(e.lines.type="LineString",n.push(e.lines)),e.polygons&&(e.polygons.type="Polygon",n.push(e.polygons)),n}function cb(e){var r=[],t=Lf(e),n;try{for(t.s();!(n=t.n()).done;){var c=n.value;if(c.featureIds.value.length!==0){for(var o=0,f=c.featureIds.value[0],s=0;s<c.featureIds.value.length;s++){var u=c.featureIds.value[s];u!==f&&(r.push(wt(c,o,s)),o=s,f=u)}r.push(wt(c,o,c.featureIds.value.length))}}}catch(M){t.e(M)}finally{t.f()}return r}function wt(e,r,t){var n=Nf(e,r,t),c=ib(e,r,t),o=ob(e,r,t);return rb({type:"Feature",geometry:n,properties:c},o)}function ob(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2?arguments[2]:void 0;return e.fields&&e.fields[e.featureIds.value[r]]}function ib(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2?arguments[2]:void 0,n=Object.assign({},e.properties[e.featureIds.value[r]]);for(var c in e.numericProps)n[c]=e.numericProps[c].value[r];return n}function qf(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1/0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1/0,n=e.positions,c=e.polygonIndices.value.filter(function(O){return O>=r&&O<=t}),o=e.primitivePolygonIndices.value.filter(function(O){return O>=r&&O<=t}),f=c.length>2;if(!f){for(var s=[],u=0;u<o.length-1;u++){var M=o[u],p=o[u+1],A=Xt(n,M,p);s.push(A)}return{type:"Polygon",coordinates:s}}for(var h=[],g=0;g<c.length-1;g++){var z=c[g],N=c[g+1],y=qf(e,z,N).coordinates;h.push(y)}return{type:"MultiPolygon",coordinates:h}}function fb(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1/0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1/0,n=e.positions,c=e.pathIndices.value.filter(function(p){return p>=r&&p<=t}),o=c.length>2;if(!o){var f=Xt(n,c[0],c[1]);return{type:"LineString",coordinates:f}}for(var s=[],u=0;u<c.length-1;u++){var M=Xt(n,c[u],c[u+1]);s.push(M)}return{type:"MultiLineString",coordinates:s}}function sb(e,r,t){var n=e.positions,c=Xt(n,r,t),o=c.length>1;return o?{type:"MultiPoint",coordinates:c}:{type:"Point",coordinates:c[0]}}function Xt(e,r,t){r=r||0,t=t||e.value.length/e.size;for(var n=[],c=r;c<t;c++){for(var o=Array(),f=c*e.size;f<(c+1)*e.size;f++)o.push(Number(e.value[f]));n.push(o)}return n}function ub(e){return e.pathIndices?"LineString":e.polygonIndices?"Polygon":"Point"}function lb(e){var r=Mb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Mb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function xf(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function Xe(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?xf(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):xf(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}(0,Wf.registerLoaders)([of]);var db=c1.BINARY,pb=Xe(Xe({},qr.MVTLayer.defaultProps),{},{formatTiles:db}),Ee=function(e){d0(t,e);var r=lb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"initializeState",value:function(){z0(V(t.prototype),"initializeState",this).call(this);var c=this.props.formatTiles===c1.BINARY;this.setState({binary:c})}},{key:"getTileData",value:function(c){var o=(0,qr._getURLFromTemplate)(this.state.data,c);if(!o)return Promise.reject("Invalid URL");var f=this.getLoadOptions(),s=this.props,u=s.fetch,M=s.formatTiles,p=c.signal;return M===c1.BINARY&&(f=Xe(Xe({},f),{},{mimeType:"application/vnd.carto-vector-tile"})),u(o,{propName:"data",layer:this,loadOptions:f,signal:p})}},{key:"renderSubLayers",value:function(c){if(c.data===null)return null;var o=c.tile.bbox,f=o.west,s=o.south,u=o.east,M=o.north,p=Xe(Xe({},c),{},{autoHighlight:!1,extensions:[new Sf.ClipExtension].concat(B0(c.extensions||[])),clipBounds:[f,s,u,M]}),A=new Bf.GeoJsonLayer(p);return A}},{key:"getPickingInfo",value:function(c){var o=z0(V(t.prototype),"getPickingInfo",this).call(this,c);if(this.state.binary&&o.index!==-1){var f=c.sourceLayer.props.data;o.object=Da(f,{globalFeatureId:o.index})}return o}}]),t}(qr.MVTLayer);R(Ee,"layerName","CartoTileLayer");R(Ee,"defaultProps",pb);var p2=a0(b1()),Ya=a0(_1());var Xf=a0(_1()),K0=a0(wf());function bb(e){var r=Ab();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Ab(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ef(e,r){var t=e.west,n=e.north,c=e.east,o=e.south,f=Math.abs(c-t);if(f>180){for(var s=Math.ceil(f/180),u=[],M=0;M<s;M++){var p=c+M*180,A=Math.min(p+179.9999999,t);u=u.concat(Ef({west:A,north:n,east:p,south:o},r))}return B0(new Set(u))}var h=2,g=(0,K0.polyfill)([[[t,n],[t,o],[c,o],[c,n],[t,n]]],r+h,!0);return h?B0(new Set(g.map(function(z){return(0,K0.h3ToParent)(z,r)}))):g}function hb(e){var r=(0,K0.h3ToGeoBoundary)(e),t=r.map(function(u){return u[0]}),n=r.map(function(u){return u[1]}),c=Math.min.apply(Math,B0(n)),o=Math.min.apply(Math,B0(t)),f=Math.max.apply(Math,B0(n)),s=Math.max.apply(Math,B0(t));return{west:c,south:o,east:f,north:s}}var mb=2;function Et(e){var r=.6666666666666666*e.zoom,t=Math.log(1/Math.cos(Math.PI*e.latitude/180));return Math.max(0,Math.floor(r+t-mb))}var Pf=function(e){d0(t,e);var r=bb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"getTileIndices",value:function(c){var o=c.viewport,f=c.minZoom,s=c.maxZoom;if(o.latitude===void 0)return[];var u=o.getBounds(),M=G(u,4),p=M[0],A=M[1],h=M[2],g=M[3],z=Et(o),N;if(typeof f=="number"&&Number.isFinite(f)&&z<f)return[];if(typeof s=="number"&&Number.isFinite(s)&&z>s){z=s;var y=(0,K0.geoToH3)(o.latitude,o.longitude,s);N=(0,K0.kRing)(y,1)}else N=Ef({west:h,north:g,east:p,south:A},z);return N.map(function(O){return{i:O}})}},{key:"getTileId",value:function(c){var o=c.i;return o}},{key:"getTileMetadata",value:function(c){var o=c.i;return{bbox:hb(o)}}},{key:"getTileZoom",value:function(c){var o=c.i;return(0,K0.h3GetResolution)(o)}},{key:"getParentIndex",value:function(c){var o=(0,K0.h3GetResolution)(c.i),f=(0,K0.h3ToParent)(c.i,o-1);return{i:f}}}]),t}(Xf._Tileset2D);var u2=a0(Wa());var ka=a0(G1());var zb={uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:BigUint64Array,int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:BigInt64Array,float32:Float32Array,float64:Float64Array},gb=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{name:"",type:"",data:null},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.name=c.readString();else if(t===2)n.type=c.readString();else if(t===3){var o=zb[n.type];if(!o)throw Error("Invalid data type: ".concat(n.type));n.data={},Me(o,c,n.data)}}}]),e}(),Rf=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{blockWidth:0,blockHeight:0,bands:[]},n)}},{key:"_readField",value:function(t,n,c){t===1?n.blockWidth=c.readVarint():t===2?n.blockHeight=c.readVarint():t===3&&n.bands.push(gb.read(c,c.readVarint()+c.pos))}}]),e}();var vb={name:"CARTO Raster Tile",version:"1",id:"cartoRasterTile",module:"carto",extensions:["pbf"],mimeTypes:["application/vnd.carto-raster-tile"],category:"geometry",worker:!1,parse:function(){var e=N0(ka.default.mark(function t(n,c){return ka.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",_f(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:_f,options:{}};function _f(e,r){if(!e)return null;for(var t=we(e,Rf),n=t.bands,c=t.blockHeight,o=t.blockWidth,f={},s=0;s<n.length;s++){var u=n[s],M=u.name,p=u.data;f[M]=p}return{blockWidth:o,blockHeight:c,cells:{numericProps:f,properties:[]}}}var Df=vb;var Ha=a0(G1());var Ob=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&Me(BigUint64Array,c,n)}}]),e}(),yb=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{indices:null,properties:[],numericProps:{}},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.indices=Ob.read(c,c.readVarint()+c.pos);else if(t===2)n.properties.push(Lr.read(c,c.readVarint()+c.pos));else if(t===3){var o=Nr.read(c,c.readVarint()+c.pos);n.numericProps[o.key]=o.value}}}]),e}(),kf=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{scheme:0,cells:null},n)}},{key:"_readField",value:function(t,n,c){t===1?n.scheme=c.readVarint():t===2&&(n.cells=yb.read(c,c.readVarint()+c.pos))}}]),e}();var Pb=a0(e2()),r2=[0x5555555555555555n,0x3333333333333333n,0x0f0f0f0f0f0f0f0fn,0x00ff00ff00ff00ffn,0x0000ffff0000ffffn,0x00000000ffffffffn],t2=[0n,1n,2n,4n,8n,16n];function n2(e){return BigInt("0x".concat(e))}function xr(e){return e.toString(16)}function a2(e){if(e.z<0||e.z>26)throw new Error("Wrong zoom");for(var r=BigInt(e.z),t=BigInt(e.x)<<32n-r,n=BigInt(e.y)<<32n-r,c=0;c<5;c++){var o=t2[5-c],f=r2[4-c];t=(t|t<<o)&f,n=(n|n<<o)&f}var s=0x4000000000000000n|1n<<59n|r<<52n|(t|n<<1n)>>12n|0xfffffffffffffn>>r*2n;return s}function Rt(e){var r=e>>59n&7n,t=e>>57n&3n,n=e>>52n&0x1fn,c=(e&0xfffffffffffffn)<<12n;if(r!==1n&&t!==0n)throw new Error("Wrong mode");for(var o=c,f=c>>1n,s=0;s<6;s++){var u=t2[s],M=r2[s];o=(o|o>>u)&M,f=(f|f>>u)&M}return o=o>>32n-n,f=f>>32n-n,{z:Number(n),x:Number(o),y:Number(f)}}function Ua(e){return e>>52n&0x1fn}function c2(e){var r=Ua(e)-1n,t=e&~(0x1fn<<52n)|r<<52n|0xfffffffffffffn>>r*2n;return t}function o2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function Rb(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?o2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function i2(e){for(var r=e.cells,t=e.scheme,n=r.indices.value.length,c=[],o=0;o<n;o++){for(var f=t==="h3"?xr(r.indices.value[o]):r.indices.value[o],s=Rb({},r.properties[o]),u=0,M=Object.keys(r.numericProps);u<M.length;u++){var p=M[u];s[p]=r.numericProps[p].value[o]}c.push({id:f,properties:s})}return c}var _b={name:"CARTO Spatial Tile",version:"1",id:"cartoSpatialTile",module:"carto",extensions:["pbf"],mimeTypes:["application/vnd.carto-spatial-tile"],category:"geometry",worker:!1,parse:function(){var e=N0(Ha.default.mark(function t(n,c){return Ha.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",f2(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:f2,options:{cartoSpatialTile:{scheme:"quadbin"}}};function f2(e,r){var t;if(!e)return null;var n=we(e,kf),c=n.cells,o=r==null||(t=r.cartoSpatialTile)===null||t===void 0?void 0:t.scheme,f={cells:c,scheme:o};return i2(f)}var s2=_b;var l2=a0(_1());function Db(e){var r=kb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function kb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}(0,u2.registerLoaders)([Df,s2]);function Ib(e){return e!=null&&e!==""}var Fb={aggregationResLevel:4},Z1=function(e){d0(t,e);var r=Db(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"updateState",value:function(c){var o=c.props,f=c.oldProps;o.aggregationResLevel!==f.aggregationResLevel&&this.setState({tileset:null}),z0(V(t.prototype),"updateState",this).call(this,c)}},{key:"_updateAutoHighlight",value:function(c){var o=this.state.hoveredFeatureId,f=c.object,s;if(f&&(s=f.id),o!==s){var u=this.props.highlightColor;typeof u=="function"&&(u=u(c)),this.setState({highlightColor:u,hoveredFeatureId:s})}}},{key:"getSubLayerPropsByTile",value:function(c){return{highlightedObjectIndex:this.getHighlightedObjectIndex(c),highlightColor:this.state.highlightColor}}},{key:"getHighlightedObjectIndex",value:function(c){var o=this.state.hoveredFeatureId,f=c.content,s=Ib(o);return!s||!Array.isArray(f)||!this._featureInTile(c,o)?-1:f.findIndex(function(u){return u.id===o})}},{key:"_featureInTile",value:function(c,o){for(var f=this.state.tileset,s=f.getTileZoom,u=f.getParentIndex,M=s(c.index),p=c.index.q?"q":"i",A=R({},p,o),h=s(A);!(h<=M);)A=u(A),h=s(A);return A[p]===c.index[p]}}]),t}(l2.TileLayer);R(Z1,"layerName","SpatialIndexTileLayer");R(Z1,"defaultProps",Fb);function M2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function d2(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?M2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):M2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function jb(e){var r=Ub();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Ub(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Hb=function(r){var t=r.data,n=r.tile.index;return!t||!t.length?null:new Ya.H3HexagonLayer(r,{getHexagon:function(o){return o.id},centerHexagon:n,highPrecision:!0})},Yb={aggregationResLevel:4},Re=function(e){d0(t,e);var r=jb(t);function t(){var n;Q(this,t);for(var c=arguments.length,o=new Array(c),f=0;f<c;f++)o[f]=arguments[f];return n=r.call.apply(r,[this].concat(o)),R(U0(n),"state",void 0),n}return $(t,[{key:"initializeState",value:function(){Ya.H3HexagonLayer._checkH3Lib(),this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var o=c.changeFlags;if(o.dataChanged){var f=this.props.data,s=f;f=s.tiles,this.setState({data:f,tileJSON:s})}}},{key:"renderLayers",value:function(){var c=this.state,o=c.data,f=c.tileJSON,s=parseInt(f.minresolution),u=parseInt(f.maxresolution);return this.props.minZoom&&(s=Math.max(s,Et({zoom:this.props.minZoom,latitude:0}))),this.props.maxZoom&&(u=Math.min(u,Et({zoom:this.props.maxZoom,latitude:0}))),[new Z1(this.props,{id:"h3-tile-layer-".concat(this.props.id),data:o,TilesetClass:Pf,renderSubLayers:Hb,minZoom:s,maxZoom:u,loadOptions:d2(d2({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"h3"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(p2.CompositeLayer);R(Re,"layerName","H3TileLayer");R(Re,"defaultProps",Yb);var q2=a0(b1());var y2=a0(_1());function _e(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function $1(e,r){var t=vf([],r,e);return gf(t,t,1/t[3]),t}function Wr(e,r,t){return e<r?r:e>t?t:e}function Vb(e){return Math.log(e)*Math.LOG2E}var _t=Math.log2||Vb;function u1(e,r){if(!e)throw new Error(r||"@math.gl/web-mercator: assertion failed.")}var l1=Math.PI,A2=l1/4,v1=l1/180,Va=180/l1,Sr=512,b2=4003e4,ke=85.051129,Ga=1.5;function Dt(e){return Math.pow(2,e)}function O1(e){var r=G(e,2),t=r[0],n=r[1];u1(Number.isFinite(t)),u1(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var c=t*v1,o=n*v1,f=Sr*(c+l1)/(2*l1),s=Sr*(l1+Math.log(Math.tan(A2+o*.5)))/(2*l1);return[f,s]}function Q0(e){var r=G(e,2),t=r[0],n=r[1],c=t/Sr*(2*l1)-l1,o=2*(Math.atan(Math.exp(n/Sr*(2*l1)-l1))-A2);return[c*Va,o*Va]}function Ka(e){var r=e.latitude,t=e.longitude,n=e.highPrecision,c=n===void 0?!1:n;u1(Number.isFinite(r)&&Number.isFinite(t));var o=Sr,f=Math.cos(r*v1),s=o/360,u=s/f,M=o/b2/f,p={unitsPerMeter:[M,M,M],metersPerUnit:[1/M,1/M,1/M],unitsPerDegree:[s,u,M],degreesPerUnit:[1/s,1/u,1/M]};if(c){var A=v1*Math.tan(r*v1)/f,h=s*A/2,g=o/b2*A,z=g/u*M;p.unitsPerDegree2=[0,h,g],p.unitsPerMeter2=[z,0,z]}return p}function Qa(e){var r=e.height,t=e.pitch,n=e.bearing,c=e.altitude,o=e.scale,f=e.center,s=_e();Tr(s,s,[0,0,-c]),Af(s,s,-t*v1),hf(s,s,n*v1);var u=o/r;return Ct(s,s,[u,u,u]),f&&Tr(s,s,Mf([],f)),s}function h2(e){var r=e.width,t=e.height,n=e.altitude,c=e.pitch,o=c===void 0?0:c,f=e.offset,s=e.center,u=e.scale,M=e.nearZMultiplier,p=M===void 0?1:M,A=e.farZMultiplier,h=A===void 0?1:A,g=e.fovy,z=g===void 0?De(Ga):g;n!==void 0&&(z=De(n));var N=z*v1,y=o*v1,O=kt(z),L=O;s&&(L+=s[2]*u/Math.cos(y)/t);var x=N*(.5+(f?f[1]:0)/t),B=Math.sin(x)*L/Math.sin(Wr(Math.PI/2-y-x,.01,Math.PI-.01)),S=Math.sin(y)*B+L,X=L*10,H=Math.min(S*h,X);return{fov:N,aspect:r/t,focalDistance:O,near:p,far:H}}function Ja(e){var r=h2(e),t=r.fov,n=r.aspect,c=r.near,o=r.far,f=mf([],t,n,c,o);return f}function De(e){return 2*Math.atan(.5/e)*Va}function kt(e){return .5/Math.tan(.5*e*v1)}function Za(e,r){var t=G(e,3),n=t[0],c=t[1],o=t[2],f=o===void 0?0:o;return u1(Number.isFinite(n)&&Number.isFinite(c)&&Number.isFinite(f)),$1(r,[n,c,f,1])}function It(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=G(e,3),c=n[0],o=n[1],f=n[2];if(u1(Number.isFinite(c)&&Number.isFinite(o),"invalid pixel coordinate"),Number.isFinite(f)){var s=$1(r,[c,o,f,1]);return s}var u=$1(r,[c,o,0,1]),M=$1(r,[c,o,1,1]),p=u[2],A=M[2],h=p===A?0:((t||0)-p)/(A-p);return St([],u,M,h)}function Ft(e){var r=e.width,t=e.height,n=e.bounds,c=e.minExtent,o=c===void 0?0:c,f=e.maxZoom,s=f===void 0?24:f,u=e.offset,M=u===void 0?[0,0]:u,p=G(n,2),A=G(p[0],2),h=A[0],g=A[1],z=G(p[1],2),N=z[0],y=z[1],O=Gb(e.padding),L=O1([h,Wr(y,-ke,ke)]),x=O1([N,Wr(g,-ke,ke)]),B=[Math.max(Math.abs(x[0]-L[0]),o),Math.max(Math.abs(x[1]-L[1]),o)],S=[r-O.left-O.right-Math.abs(M[0])*2,t-O.top-O.bottom-Math.abs(M[1])*2];u1(S[0]>0&&S[1]>0);var X=S[0]/B[0],H=S[1]/B[1],k=(O.right-O.left)/2/X,f0=(O.bottom-O.top)/2/H,e0=[(x[0]+L[0])/2+k,(x[1]+L[1])/2+f0],D=Q0(e0),J=Math.min(s,_t(Math.abs(Math.min(X,H))));return u1(Number.isFinite(J)),{longitude:D[0],latitude:D[1],zoom:J}}function Gb(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(u1(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var m2=Math.PI/180;function jt(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=e.width,n=e.height,c=e.unproject,o={targetZ:r},f=c([0,n],o),s=c([t,n],o),u,M,p=e.fovy?.5*e.fovy*m2:Math.atan(.5/e.altitude),A=(90-e.pitch)*m2;return p>A-.01?(u=z2(e,0,r),M=z2(e,t,r)):(u=c([0,0],o),M=c([t,0],o)),[f,s,M,u]}function z2(e,r,t){var n=e.pixelUnprojectionMatrix,c=$1(n,[r,0,1,1]),o=$1(n,[r,e.height,1,1]),f=t*e.distanceScales.unitsPerMeter[2],s=(f-c[2])/(o[2]-c[2]),u=St([],c,o,s),M=Q0(u);return M.push(t),M}var g2=function(){function e(){var r=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Q(this,e),R(this,"latitude",void 0),R(this,"longitude",void 0),R(this,"zoom",void 0),R(this,"pitch",void 0),R(this,"bearing",void 0),R(this,"altitude",void 0),R(this,"fovy",void 0),R(this,"meterOffset",void 0),R(this,"center",void 0),R(this,"width",void 0),R(this,"height",void 0),R(this,"scale",void 0),R(this,"distanceScales",void 0),R(this,"viewMatrix",void 0),R(this,"projectionMatrix",void 0),R(this,"viewProjectionMatrix",void 0),R(this,"pixelProjectionMatrix",void 0),R(this,"pixelUnprojectionMatrix",void 0),R(this,"equals",function(J){return J instanceof e?J.width===r.width&&J.height===r.height&&_a(J.projectionMatrix,r.projectionMatrix)&&_a(J.viewMatrix,r.viewMatrix):!1}),R(this,"project",function(J){var t0=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=t0.topLeft,q0=Y===void 0?!0:Y,W=r.projectPosition(J),q=Za(W,r.pixelProjectionMatrix),C=G(q,2),F=C[0],U=C[1],o0=q0?U:r.height-U;return J.length===2?[F,o0]:[F,o0,q[2]]}),R(this,"unproject",function(J){var t0=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=t0.topLeft,q0=Y===void 0?!0:Y,W=t0.targetZ,q=W===void 0?void 0:W,C=G(J,3),F=C[0],U=C[1],o0=C[2],A0=q0?U:r.height-U,_=q&&q*r.distanceScales.unitsPerMeter[2],v0=It([F,A0,o0],r.pixelUnprojectionMatrix,_),r0=r.unprojectPosition(v0),O0=G(r0,3),C0=O0[0],E0=O0[1],j1=O0[2];return Number.isFinite(o0)?[C0,E0,j1]:Number.isFinite(q)?[C0,E0,q]:[C0,E0]}),R(this,"projectPosition",function(J){var t0=O1(J),Y=G(t0,2),q0=Y[0],W=Y[1],q=(J[2]||0)*r.distanceScales.unitsPerMeter[2];return[q0,W,q]}),R(this,"unprojectPosition",function(J){var t0=Q0(J),Y=G(t0,2),q0=Y[0],W=Y[1],q=(J[2]||0)*r.distanceScales.metersPerUnit[2];return[q0,W,q]});var n=t.width,c=t.height,o=t.altitude,f=o===void 0?null:o,s=t.fovy,u=s===void 0?null:s,M=t.latitude,p=M===void 0?0:M,A=t.longitude,h=A===void 0?0:A,g=t.zoom,z=g===void 0?0:g,N=t.pitch,y=N===void 0?0:N,O=t.bearing,L=O===void 0?0:O,x=t.position,B=x===void 0?null:x,S=t.nearZMultiplier,X=S===void 0?.02:S,H=t.farZMultiplier,k=H===void 0?1.01:H;n=n||1,c=c||1,u===null&&f===null?(f=Ga,u=De(f)):u===null?u=De(f):f===null&&(f=kt(u));var f0=Dt(z);f=Math.max(.75,f);var e0=Ka({longitude:h,latitude:p}),D=O1([h,p]);D.push(0),B&&lf(D,D,df([],B,e0.unitsPerMeter)),this.projectionMatrix=Ja({width:n,height:c,scale:f0,center:D,pitch:y,fovy:u,nearZMultiplier:X,farZMultiplier:k}),this.viewMatrix=Qa({height:c,scale:f0,center:D,pitch:y,bearing:L,altitude:f}),this.width=n,this.height=c,this.scale=f0,this.latitude=p,this.longitude=h,this.zoom=z,this.pitch=y,this.bearing=L,this.altitude=f,this.fovy=u,this.center=D,this.meterOffset=B||[0,0,0],this.distanceScales=e0,this._initMatrices(),Object.freeze(this)}return $(e,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,c=this.projectionMatrix,o=this.viewMatrix,f=_e();Bt(f,f,c),Bt(f,f,o),this.viewProjectionMatrix=f;var s=_e();Ct(s,s,[t/2,-n/2,1]),Tr(s,s,[1,-1,0]),Bt(s,s,f);var u=bf(_e(),s);if(!u)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=s,this.pixelUnprojectionMatrix=u}},{key:"projectFlat",value:function(t){return O1(t)}},{key:"unprojectFlat",value:function(t){return Q0(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,c=t.pos,o=It(c,this.pixelUnprojectionMatrix),f=O1(n),s=Pa([],f,uf([],o)),u=Pa([],this.center,s);return Q0(u)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=this.width,o=this.height,f=Ft(Object.assign({width:c,height:o,bounds:t},n)),s=f.longitude,u=f.latitude,M=f.zoom;return new e({width:c,height:o,longitude:s,latitude:u,zoom:M})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),c=Math.min.apply(Math,B0(n.map(function(u){return u[0]}))),o=Math.max.apply(Math,B0(n.map(function(u){return u[0]}))),f=Math.min.apply(Math,B0(n.map(function(u){return u[1]}))),s=Math.max.apply(Math,B0(n.map(function(u){return u[1]})));return[[c,f],[o,s]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return jt(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,c=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:c})}}]),e}();var v2=512;function $a(e){var r=Rt(e),t=r.x,n=r.y,c=r.z,o=v2/(1<<c);return[t*o,v2-n*o,o]}function Qb(e,r){var t=$a(e),n=G(t,3),c=n[0],o=n[1],f=n[2];return[[c,o],[c+r*f,o-r*f]]}function O2(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,t=Qb(e,r),n=G(t,2),c=n[0],o=n[1],f=Q0(c),s=G(f,2),u=s[0],M=s[1],p=Q0(o),A=G(p,2),h=A[0],g=A[1];return[h,M,h,g,u,g,u,M,h,M]}function Jb(e){var r=Zb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Zb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var $b={getQuadbin:{type:"accessor",value:function(r){return r.quadbin}}},Ut=function(e){d0(t,e);var r=Jb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"indexToBounds",value:function(){var c=this.props,o=c.data,f=c.extruded,s=c.getQuadbin,u=f?.99:1;return{data:o,_normalize:!1,positionFormat:"XY",getPolygon:function(p,A){return O2(s(p,A),u)},updateTriggers:{getPolygon:u}}}}]),t}(y2._GeoCellLayer);R(Ut,"layerName","QuadbinLayer");R(Ut,"defaultProps",$b);var L2=a0(_1());function e3(e){var r=r3();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function r3(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ht=function(e){d0(t,e);var r=e3(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"getTileIndices",value:function(c){return z0(V(t.prototype),"getTileIndices",this).call(this,c).map(a2).map(function(o){return{q:o,i:xr(o)}})}},{key:"getTileId",value:function(c){var o=c.q,f=c.i;return f||xr(o)}},{key:"getTileMetadata",value:function(c){var o=c.q;return z0(V(t.prototype),"getTileMetadata",this).call(this,Rt(o))}},{key:"getTileZoom",value:function(c){var o=c.q;return Number(Ua(o))}},{key:"getParentIndex",value:function(c){var o=c.q;return{q:c2(o)}}}]),t}(L2._Tileset2D);function N2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function T2(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?N2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):N2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function t3(e){var r=n3();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function n3(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var a3=function(r){var t=r.data;if(!t||!t.length)return null;var n=typeof t[0].id=="bigint";return new Ut(r,{getQuadbin:n?function(c){return c.id}:function(c){return n2(c.id)}})},c3={aggregationResLevel:6},Ie=function(e){d0(t,e);var r=t3(t);function t(){var n;Q(this,t);for(var c=arguments.length,o=new Array(c),f=0;f<c;f++)o[f]=arguments[f];return n=r.call.apply(r,[this].concat(o)),R(U0(n),"state",void 0),n}return $(t,[{key:"initializeState",value:function(){this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var o=c.changeFlags;if(o.dataChanged){var f=this.props.data,s=f;f=s.tiles,this.setState({data:f,tileJSON:s})}}},{key:"renderLayers",value:function(){var c=this.state,o=c.data,f=c.tileJSON,s=parseInt(f?.maxresolution);return[new Z1(this.props,{id:"quadbin-tile-layer-".concat(this.props.id),data:o,TilesetClass:Ht,renderSubLayers:a3,maxZoom:s,loadOptions:T2(T2({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"quadbin"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(q2.CompositeLayer);R(Ie,"layerName","QuadbinTileLayer");R(Ie,"defaultProps",c3);var X2=a0(b1());var C2=a0(b1()),ec=a0(le());var x2=`#version 300 es
26
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return o=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!o&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function tb(e,r){if(e){if(typeof e=="string")return yf(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if(t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set")return Array.from(e);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return yf(e,r)}}function yf(e,r){(r==null||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function Da(e,r){var t=r?.globalFeatureId;return t!==void 0?nb(e,t):ab(e,r?.type)}function nb(e,r){var t=Tf(e),n=Lf(t),c;try{for(n.s();!(c=n.n()).done;){for(var o=c.value,f=0,s=o.featureIds.value[0],u=0;u<o.featureIds.value.length;u++){var M=o.featureIds.value[u];if(M!==s){if(r===o.globalFeatureIds.value[f])return wt(o,f,u);f=u,s=M}}if(r===o.globalFeatureIds.value[f])return wt(o,f,o.featureIds.value.length)}}catch(p){n.e(p)}finally{n.f()}throw new Error("featureId:".concat(r," not found"))}function ab(e,r){var t=Tf(e,r);return cb(t)}function Nf(e,r,t){switch(e.type){case"Point":return sb(e,r,t);case"LineString":return fb(e,r,t);case"Polygon":return qf(e,r,t);default:var n=e;throw new Error("Unsupported geometry type: ".concat(n?.type))}}function Tf(e,r){var t=Boolean(e.points||e.lines||e.polygons);if(!t)return e.type=r||ub(e),[e];var n=[];return e.points&&(e.points.type="Point",n.push(e.points)),e.lines&&(e.lines.type="LineString",n.push(e.lines)),e.polygons&&(e.polygons.type="Polygon",n.push(e.polygons)),n}function cb(e){var r=[],t=Lf(e),n;try{for(t.s();!(n=t.n()).done;){var c=n.value;if(c.featureIds.value.length!==0){for(var o=0,f=c.featureIds.value[0],s=0;s<c.featureIds.value.length;s++){var u=c.featureIds.value[s];u!==f&&(r.push(wt(c,o,s)),o=s,f=u)}r.push(wt(c,o,c.featureIds.value.length))}}}catch(M){t.e(M)}finally{t.f()}return r}function wt(e,r,t){var n=Nf(e,r,t),c=ib(e,r,t),o=ob(e,r,t);return rb({type:"Feature",geometry:n,properties:c},o)}function ob(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2?arguments[2]:void 0;return e.fields&&e.fields[e.featureIds.value[r]]}function ib(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2?arguments[2]:void 0,n=Object.assign({},e.properties[e.featureIds.value[r]]);for(var c in e.numericProps)n[c]=e.numericProps[c].value[r];return n}function qf(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1/0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1/0,n=e.positions,c=e.polygonIndices.value.filter(function(O){return O>=r&&O<=t}),o=e.primitivePolygonIndices.value.filter(function(O){return O>=r&&O<=t}),f=c.length>2;if(!f){for(var s=[],u=0;u<o.length-1;u++){var M=o[u],p=o[u+1],A=Xt(n,M,p);s.push(A)}return{type:"Polygon",coordinates:s}}for(var h=[],g=0;g<c.length-1;g++){var z=c[g],N=c[g+1],y=qf(e,z,N).coordinates;h.push(y)}return{type:"MultiPolygon",coordinates:h}}function fb(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1/0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1/0,n=e.positions,c=e.pathIndices.value.filter(function(p){return p>=r&&p<=t}),o=c.length>2;if(!o){var f=Xt(n,c[0],c[1]);return{type:"LineString",coordinates:f}}for(var s=[],u=0;u<c.length-1;u++){var M=Xt(n,c[u],c[u+1]);s.push(M)}return{type:"MultiLineString",coordinates:s}}function sb(e,r,t){var n=e.positions,c=Xt(n,r,t),o=c.length>1;return o?{type:"MultiPoint",coordinates:c}:{type:"Point",coordinates:c[0]}}function Xt(e,r,t){r=r||0,t=t||e.value.length/e.size;for(var n=[],c=r;c<t;c++){for(var o=Array(),f=c*e.size;f<(c+1)*e.size;f++)o.push(Number(e.value[f]));n.push(o)}return n}function ub(e){return e.pathIndices?"LineString":e.polygonIndices?"Polygon":"Point"}function lb(e){var r=Mb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Mb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function xf(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function Xe(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?xf(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):xf(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}(0,Wf.registerLoaders)([of]);var db=c1.BINARY,pb=Xe(Xe({},qr.MVTLayer.defaultProps),{},{formatTiles:db}),Ee=function(e){d0(t,e);var r=lb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"initializeState",value:function(){z0(V(t.prototype),"initializeState",this).call(this);var c=this.props.formatTiles===c1.BINARY;this.setState({binary:c})}},{key:"getTileData",value:function(c){var o=(0,qr._getURLFromTemplate)(this.state.data,c);if(!o)return Promise.reject("Invalid URL");var f=this.getLoadOptions(),s=this.props,u=s.fetch,M=s.formatTiles,p=c.signal;return M===c1.BINARY&&(f=Xe(Xe({},f),{},{mimeType:"application/vnd.carto-vector-tile"})),u(o,{propName:"data",layer:this,loadOptions:f,signal:p})}},{key:"renderSubLayers",value:function(c){if(c.data===null)return null;var o=c.tile.bbox,f=o.west,s=o.south,u=o.east,M=o.north,p=Xe(Xe({},c),{},{autoHighlight:!1,extensions:[new Sf.ClipExtension].concat(B0(c.extensions||[])),clipBounds:[f,s,u,M]}),A=new Bf.GeoJsonLayer(p);return A}},{key:"getPickingInfo",value:function(c){var o=z0(V(t.prototype),"getPickingInfo",this).call(this,c);if(this.state.binary&&o.index!==-1){var f=c.sourceLayer.props.data;o.object=Da(f,{globalFeatureId:o.index})}return o}}]),t}(qr.MVTLayer);R(Ee,"layerName","CartoTileLayer");R(Ee,"defaultProps",pb);var p2=a0(b1()),Ya=a0(_1());var Xf=a0(_1()),K0=a0(wf());function bb(e){var r=Ab();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Ab(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ef(e,r){var t=e.west,n=e.north,c=e.east,o=e.south,f=Math.abs(c-t);if(f>180){for(var s=Math.ceil(f/180),u=[],M=0;M<s;M++){var p=c+M*180,A=Math.min(p+179.9999999,t);u=u.concat(Ef({west:A,north:n,east:p,south:o},r))}return B0(new Set(u))}var h=2,g=(0,K0.polygonToCells)([[[t,n],[t,o],[c,o],[c,n],[t,n]]],r+h,!0);return h?B0(new Set(g.map(function(z){return(0,K0.cellToParent)(z,r)}))):g}function hb(e){var r=(0,K0.cellToBoundary)(e),t=r.map(function(u){return u[0]}),n=r.map(function(u){return u[1]}),c=Math.min.apply(Math,B0(n)),o=Math.min.apply(Math,B0(t)),f=Math.max.apply(Math,B0(n)),s=Math.max.apply(Math,B0(t));return{west:c,south:o,east:f,north:s}}var mb=2;function Et(e){var r=.6666666666666666*e.zoom,t=Math.log(1/Math.cos(Math.PI*e.latitude/180));return Math.max(0,Math.floor(r+t-mb))}var Pf=function(e){d0(t,e);var r=bb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"getTileIndices",value:function(c){var o=c.viewport,f=c.minZoom,s=c.maxZoom;if(o.latitude===void 0)return[];var u=o.getBounds(),M=G(u,4),p=M[0],A=M[1],h=M[2],g=M[3],z=Et(o),N;if(typeof f=="number"&&Number.isFinite(f)&&z<f)return[];if(typeof s=="number"&&Number.isFinite(s)&&z>s){z=s;var y=(0,K0.latLngToCell)(o.latitude,o.longitude,s);N=(0,K0.gridDisk)(y,1)}else N=Ef({west:h,north:g,east:p,south:A},z);return N.map(function(O){return{i:O}})}},{key:"getTileId",value:function(c){var o=c.i;return o}},{key:"getTileMetadata",value:function(c){var o=c.i;return{bbox:hb(o)}}},{key:"getTileZoom",value:function(c){var o=c.i;return(0,K0.getResolution)(o)}},{key:"getParentIndex",value:function(c){var o=(0,K0.getResolution)(c.i),f=(0,K0.cellToParent)(c.i,o-1);return{i:f}}}]),t}(Xf._Tileset2D);var u2=a0(Wa());var ka=a0(G1());var zb={uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:BigUint64Array,int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:BigInt64Array,float32:Float32Array,float64:Float64Array},gb=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{name:"",type:"",data:null},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.name=c.readString();else if(t===2)n.type=c.readString();else if(t===3){var o=zb[n.type];if(!o)throw Error("Invalid data type: ".concat(n.type));n.data={},Me(o,c,n.data)}}}]),e}(),Rf=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{blockWidth:0,blockHeight:0,bands:[]},n)}},{key:"_readField",value:function(t,n,c){t===1?n.blockWidth=c.readVarint():t===2?n.blockHeight=c.readVarint():t===3&&n.bands.push(gb.read(c,c.readVarint()+c.pos))}}]),e}();var vb={name:"CARTO Raster Tile",version:"1",id:"cartoRasterTile",module:"carto",extensions:["pbf"],mimeTypes:["application/vnd.carto-raster-tile"],category:"geometry",worker:!1,parse:function(){var e=N0(ka.default.mark(function t(n,c){return ka.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",_f(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:_f,options:{}};function _f(e,r){if(!e)return null;for(var t=we(e,Rf),n=t.bands,c=t.blockHeight,o=t.blockWidth,f={},s=0;s<n.length;s++){var u=n[s],M=u.name,p=u.data;f[M]=p}return{blockWidth:o,blockHeight:c,cells:{numericProps:f,properties:[]}}}var Df=vb;var Ha=a0(G1());var Ob=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&Me(BigUint64Array,c,n)}}]),e}(),yb=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{indices:null,properties:[],numericProps:{}},n)}},{key:"_readField",value:function(t,n,c){if(t===1)n.indices=Ob.read(c,c.readVarint()+c.pos);else if(t===2)n.properties.push(Lr.read(c,c.readVarint()+c.pos));else if(t===3){var o=Nr.read(c,c.readVarint()+c.pos);n.numericProps[o.key]=o.value}}}]),e}(),kf=function(){function e(){Q(this,e)}return $(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{scheme:0,cells:null},n)}},{key:"_readField",value:function(t,n,c){t===1?n.scheme=c.readVarint():t===2&&(n.cells=yb.read(c,c.readVarint()+c.pos))}}]),e}();var Pb=a0(e2()),r2=[0x5555555555555555n,0x3333333333333333n,0x0f0f0f0f0f0f0f0fn,0x00ff00ff00ff00ffn,0x0000ffff0000ffffn,0x00000000ffffffffn],t2=[0n,1n,2n,4n,8n,16n];function n2(e){return BigInt("0x".concat(e))}function xr(e){return e.toString(16)}function a2(e){if(e.z<0||e.z>26)throw new Error("Wrong zoom");for(var r=BigInt(e.z),t=BigInt(e.x)<<32n-r,n=BigInt(e.y)<<32n-r,c=0;c<5;c++){var o=t2[5-c],f=r2[4-c];t=(t|t<<o)&f,n=(n|n<<o)&f}var s=0x4000000000000000n|1n<<59n|r<<52n|(t|n<<1n)>>12n|0xfffffffffffffn>>r*2n;return s}function Rt(e){var r=e>>59n&7n,t=e>>57n&3n,n=e>>52n&0x1fn,c=(e&0xfffffffffffffn)<<12n;if(r!==1n&&t!==0n)throw new Error("Wrong mode");for(var o=c,f=c>>1n,s=0;s<6;s++){var u=t2[s],M=r2[s];o=(o|o>>u)&M,f=(f|f>>u)&M}return o=o>>32n-n,f=f>>32n-n,{z:Number(n),x:Number(o),y:Number(f)}}function Ua(e){return e>>52n&0x1fn}function c2(e){var r=Ua(e)-1n,t=e&~(0x1fn<<52n)|r<<52n|0xfffffffffffffn>>r*2n;return t}function o2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function Rb(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?o2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function i2(e){for(var r=e.cells,t=e.scheme,n=r.indices.value.length,c=[],o=0;o<n;o++){for(var f=t==="h3"?xr(r.indices.value[o]):r.indices.value[o],s=Rb({},r.properties[o]),u=0,M=Object.keys(r.numericProps);u<M.length;u++){var p=M[u];s[p]=r.numericProps[p].value[o]}c.push({id:f,properties:s})}return c}var _b={name:"CARTO Spatial Tile",version:"1",id:"cartoSpatialTile",module:"carto",extensions:["pbf"],mimeTypes:["application/vnd.carto-spatial-tile"],category:"geometry",worker:!1,parse:function(){var e=N0(Ha.default.mark(function t(n,c){return Ha.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",f2(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:f2,options:{cartoSpatialTile:{scheme:"quadbin"}}};function f2(e,r){var t;if(!e)return null;var n=we(e,kf),c=n.cells,o=r==null||(t=r.cartoSpatialTile)===null||t===void 0?void 0:t.scheme,f={cells:c,scheme:o};return i2(f)}var s2=_b;var l2=a0(_1());function Db(e){var r=kb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function kb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}(0,u2.registerLoaders)([Df,s2]);function Ib(e){return e!=null&&e!==""}var Fb={aggregationResLevel:4},Z1=function(e){d0(t,e);var r=Db(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"updateState",value:function(c){var o=c.props,f=c.oldProps;o.aggregationResLevel!==f.aggregationResLevel&&this.setState({tileset:null}),z0(V(t.prototype),"updateState",this).call(this,c)}},{key:"_updateAutoHighlight",value:function(c){var o=this.state.hoveredFeatureId,f=c.object,s;if(f&&(s=f.id),o!==s){var u=this.props.highlightColor;typeof u=="function"&&(u=u(c)),this.setState({highlightColor:u,hoveredFeatureId:s})}}},{key:"getSubLayerPropsByTile",value:function(c){return{highlightedObjectIndex:this.getHighlightedObjectIndex(c),highlightColor:this.state.highlightColor}}},{key:"getHighlightedObjectIndex",value:function(c){var o=this.state.hoveredFeatureId,f=c.content,s=Ib(o);return!s||!Array.isArray(f)||!this._featureInTile(c,o)?-1:f.findIndex(function(u){return u.id===o})}},{key:"_featureInTile",value:function(c,o){for(var f=this.state.tileset,s=f.getTileZoom,u=f.getParentIndex,M=s(c.index),p=c.index.q?"q":"i",A=R({},p,o),h=s(A);!(h<=M);)A=u(A),h=s(A);return A[p]===c.index[p]}}]),t}(l2.TileLayer);R(Z1,"layerName","SpatialIndexTileLayer");R(Z1,"defaultProps",Fb);function M2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function d2(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?M2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):M2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function jb(e){var r=Ub();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Ub(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Hb=function(r){var t=r.data,n=r.tile.index;return!t||!t.length?null:new Ya.H3HexagonLayer(r,{getHexagon:function(o){return o.id},centerHexagon:n,highPrecision:!0})},Yb={aggregationResLevel:4},Re=function(e){d0(t,e);var r=jb(t);function t(){var n;Q(this,t);for(var c=arguments.length,o=new Array(c),f=0;f<c;f++)o[f]=arguments[f];return n=r.call.apply(r,[this].concat(o)),R(U0(n),"state",void 0),n}return $(t,[{key:"initializeState",value:function(){Ya.H3HexagonLayer._checkH3Lib(),this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var o=c.changeFlags;if(o.dataChanged){var f=this.props.data,s=f;f=s.tiles,this.setState({data:f,tileJSON:s})}}},{key:"renderLayers",value:function(){var c=this.state,o=c.data,f=c.tileJSON,s=parseInt(f.minresolution),u=parseInt(f.maxresolution);return this.props.minZoom&&(s=Math.max(s,Et({zoom:this.props.minZoom,latitude:0}))),this.props.maxZoom&&(u=Math.min(u,Et({zoom:this.props.maxZoom,latitude:0}))),[new Z1(this.props,{id:"h3-tile-layer-".concat(this.props.id),data:o,TilesetClass:Pf,renderSubLayers:Hb,minZoom:s,maxZoom:u,loadOptions:d2(d2({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"h3"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(p2.CompositeLayer);R(Re,"layerName","H3TileLayer");R(Re,"defaultProps",Yb);var q2=a0(b1());var y2=a0(_1());function _e(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function $1(e,r){var t=vf([],r,e);return gf(t,t,1/t[3]),t}function Wr(e,r,t){return e<r?r:e>t?t:e}function Vb(e){return Math.log(e)*Math.LOG2E}var _t=Math.log2||Vb;function u1(e,r){if(!e)throw new Error(r||"@math.gl/web-mercator: assertion failed.")}var l1=Math.PI,A2=l1/4,v1=l1/180,Va=180/l1,Sr=512,b2=4003e4,ke=85.051129,Ga=1.5;function Dt(e){return Math.pow(2,e)}function O1(e){var r=G(e,2),t=r[0],n=r[1];u1(Number.isFinite(t)),u1(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var c=t*v1,o=n*v1,f=Sr*(c+l1)/(2*l1),s=Sr*(l1+Math.log(Math.tan(A2+o*.5)))/(2*l1);return[f,s]}function Q0(e){var r=G(e,2),t=r[0],n=r[1],c=t/Sr*(2*l1)-l1,o=2*(Math.atan(Math.exp(n/Sr*(2*l1)-l1))-A2);return[c*Va,o*Va]}function Ka(e){var r=e.latitude,t=e.longitude,n=e.highPrecision,c=n===void 0?!1:n;u1(Number.isFinite(r)&&Number.isFinite(t));var o=Sr,f=Math.cos(r*v1),s=o/360,u=s/f,M=o/b2/f,p={unitsPerMeter:[M,M,M],metersPerUnit:[1/M,1/M,1/M],unitsPerDegree:[s,u,M],degreesPerUnit:[1/s,1/u,1/M]};if(c){var A=v1*Math.tan(r*v1)/f,h=s*A/2,g=o/b2*A,z=g/u*M;p.unitsPerDegree2=[0,h,g],p.unitsPerMeter2=[z,0,z]}return p}function Qa(e){var r=e.height,t=e.pitch,n=e.bearing,c=e.altitude,o=e.scale,f=e.center,s=_e();Tr(s,s,[0,0,-c]),Af(s,s,-t*v1),hf(s,s,n*v1);var u=o/r;return Ct(s,s,[u,u,u]),f&&Tr(s,s,Mf([],f)),s}function h2(e){var r=e.width,t=e.height,n=e.altitude,c=e.pitch,o=c===void 0?0:c,f=e.offset,s=e.center,u=e.scale,M=e.nearZMultiplier,p=M===void 0?1:M,A=e.farZMultiplier,h=A===void 0?1:A,g=e.fovy,z=g===void 0?De(Ga):g;n!==void 0&&(z=De(n));var N=z*v1,y=o*v1,O=kt(z),L=O;s&&(L+=s[2]*u/Math.cos(y)/t);var x=N*(.5+(f?f[1]:0)/t),B=Math.sin(x)*L/Math.sin(Wr(Math.PI/2-y-x,.01,Math.PI-.01)),S=Math.sin(y)*B+L,X=L*10,H=Math.min(S*h,X);return{fov:N,aspect:r/t,focalDistance:O,near:p,far:H}}function Ja(e){var r=h2(e),t=r.fov,n=r.aspect,c=r.near,o=r.far,f=mf([],t,n,c,o);return f}function De(e){return 2*Math.atan(.5/e)*Va}function kt(e){return .5/Math.tan(.5*e*v1)}function Za(e,r){var t=G(e,3),n=t[0],c=t[1],o=t[2],f=o===void 0?0:o;return u1(Number.isFinite(n)&&Number.isFinite(c)&&Number.isFinite(f)),$1(r,[n,c,f,1])}function It(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=G(e,3),c=n[0],o=n[1],f=n[2];if(u1(Number.isFinite(c)&&Number.isFinite(o),"invalid pixel coordinate"),Number.isFinite(f)){var s=$1(r,[c,o,f,1]);return s}var u=$1(r,[c,o,0,1]),M=$1(r,[c,o,1,1]),p=u[2],A=M[2],h=p===A?0:((t||0)-p)/(A-p);return St([],u,M,h)}function Ft(e){var r=e.width,t=e.height,n=e.bounds,c=e.minExtent,o=c===void 0?0:c,f=e.maxZoom,s=f===void 0?24:f,u=e.offset,M=u===void 0?[0,0]:u,p=G(n,2),A=G(p[0],2),h=A[0],g=A[1],z=G(p[1],2),N=z[0],y=z[1],O=Gb(e.padding),L=O1([h,Wr(y,-ke,ke)]),x=O1([N,Wr(g,-ke,ke)]),B=[Math.max(Math.abs(x[0]-L[0]),o),Math.max(Math.abs(x[1]-L[1]),o)],S=[r-O.left-O.right-Math.abs(M[0])*2,t-O.top-O.bottom-Math.abs(M[1])*2];u1(S[0]>0&&S[1]>0);var X=S[0]/B[0],H=S[1]/B[1],k=(O.right-O.left)/2/X,f0=(O.bottom-O.top)/2/H,e0=[(x[0]+L[0])/2+k,(x[1]+L[1])/2+f0],D=Q0(e0),J=Math.min(s,_t(Math.abs(Math.min(X,H))));return u1(Number.isFinite(J)),{longitude:D[0],latitude:D[1],zoom:J}}function Gb(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(u1(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var m2=Math.PI/180;function jt(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=e.width,n=e.height,c=e.unproject,o={targetZ:r},f=c([0,n],o),s=c([t,n],o),u,M,p=e.fovy?.5*e.fovy*m2:Math.atan(.5/e.altitude),A=(90-e.pitch)*m2;return p>A-.01?(u=z2(e,0,r),M=z2(e,t,r)):(u=c([0,0],o),M=c([t,0],o)),[f,s,M,u]}function z2(e,r,t){var n=e.pixelUnprojectionMatrix,c=$1(n,[r,0,1,1]),o=$1(n,[r,e.height,1,1]),f=t*e.distanceScales.unitsPerMeter[2],s=(f-c[2])/(o[2]-c[2]),u=St([],c,o,s),M=Q0(u);return M.push(t),M}var g2=function(){function e(){var r=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Q(this,e),R(this,"latitude",void 0),R(this,"longitude",void 0),R(this,"zoom",void 0),R(this,"pitch",void 0),R(this,"bearing",void 0),R(this,"altitude",void 0),R(this,"fovy",void 0),R(this,"meterOffset",void 0),R(this,"center",void 0),R(this,"width",void 0),R(this,"height",void 0),R(this,"scale",void 0),R(this,"distanceScales",void 0),R(this,"viewMatrix",void 0),R(this,"projectionMatrix",void 0),R(this,"viewProjectionMatrix",void 0),R(this,"pixelProjectionMatrix",void 0),R(this,"pixelUnprojectionMatrix",void 0),R(this,"equals",function(J){return J instanceof e?J.width===r.width&&J.height===r.height&&_a(J.projectionMatrix,r.projectionMatrix)&&_a(J.viewMatrix,r.viewMatrix):!1}),R(this,"project",function(J){var t0=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=t0.topLeft,q0=Y===void 0?!0:Y,W=r.projectPosition(J),q=Za(W,r.pixelProjectionMatrix),C=G(q,2),F=C[0],U=C[1],o0=q0?U:r.height-U;return J.length===2?[F,o0]:[F,o0,q[2]]}),R(this,"unproject",function(J){var t0=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=t0.topLeft,q0=Y===void 0?!0:Y,W=t0.targetZ,q=W===void 0?void 0:W,C=G(J,3),F=C[0],U=C[1],o0=C[2],A0=q0?U:r.height-U,_=q&&q*r.distanceScales.unitsPerMeter[2],v0=It([F,A0,o0],r.pixelUnprojectionMatrix,_),r0=r.unprojectPosition(v0),O0=G(r0,3),C0=O0[0],E0=O0[1],j1=O0[2];return Number.isFinite(o0)?[C0,E0,j1]:Number.isFinite(q)?[C0,E0,q]:[C0,E0]}),R(this,"projectPosition",function(J){var t0=O1(J),Y=G(t0,2),q0=Y[0],W=Y[1],q=(J[2]||0)*r.distanceScales.unitsPerMeter[2];return[q0,W,q]}),R(this,"unprojectPosition",function(J){var t0=Q0(J),Y=G(t0,2),q0=Y[0],W=Y[1],q=(J[2]||0)*r.distanceScales.metersPerUnit[2];return[q0,W,q]});var n=t.width,c=t.height,o=t.altitude,f=o===void 0?null:o,s=t.fovy,u=s===void 0?null:s,M=t.latitude,p=M===void 0?0:M,A=t.longitude,h=A===void 0?0:A,g=t.zoom,z=g===void 0?0:g,N=t.pitch,y=N===void 0?0:N,O=t.bearing,L=O===void 0?0:O,x=t.position,B=x===void 0?null:x,S=t.nearZMultiplier,X=S===void 0?.02:S,H=t.farZMultiplier,k=H===void 0?1.01:H;n=n||1,c=c||1,u===null&&f===null?(f=Ga,u=De(f)):u===null?u=De(f):f===null&&(f=kt(u));var f0=Dt(z);f=Math.max(.75,f);var e0=Ka({longitude:h,latitude:p}),D=O1([h,p]);D.push(0),B&&lf(D,D,df([],B,e0.unitsPerMeter)),this.projectionMatrix=Ja({width:n,height:c,scale:f0,center:D,pitch:y,fovy:u,nearZMultiplier:X,farZMultiplier:k}),this.viewMatrix=Qa({height:c,scale:f0,center:D,pitch:y,bearing:L,altitude:f}),this.width=n,this.height=c,this.scale=f0,this.latitude=p,this.longitude=h,this.zoom=z,this.pitch=y,this.bearing=L,this.altitude=f,this.fovy=u,this.center=D,this.meterOffset=B||[0,0,0],this.distanceScales=e0,this._initMatrices(),Object.freeze(this)}return $(e,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,c=this.projectionMatrix,o=this.viewMatrix,f=_e();Bt(f,f,c),Bt(f,f,o),this.viewProjectionMatrix=f;var s=_e();Ct(s,s,[t/2,-n/2,1]),Tr(s,s,[1,-1,0]),Bt(s,s,f);var u=bf(_e(),s);if(!u)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=s,this.pixelUnprojectionMatrix=u}},{key:"projectFlat",value:function(t){return O1(t)}},{key:"unprojectFlat",value:function(t){return Q0(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,c=t.pos,o=It(c,this.pixelUnprojectionMatrix),f=O1(n),s=Pa([],f,uf([],o)),u=Pa([],this.center,s);return Q0(u)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=this.width,o=this.height,f=Ft(Object.assign({width:c,height:o,bounds:t},n)),s=f.longitude,u=f.latitude,M=f.zoom;return new e({width:c,height:o,longitude:s,latitude:u,zoom:M})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),c=Math.min.apply(Math,B0(n.map(function(u){return u[0]}))),o=Math.max.apply(Math,B0(n.map(function(u){return u[0]}))),f=Math.min.apply(Math,B0(n.map(function(u){return u[1]}))),s=Math.max.apply(Math,B0(n.map(function(u){return u[1]})));return[[c,f],[o,s]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return jt(this,t.z||0)}},{key:"getLocationAtPoint",value:function(t){var n=t.lngLat,c=t.pos;return this.getMapCenterByLngLatPosition({lngLat:n,pos:c})}}]),e}();var v2=512;function $a(e){var r=Rt(e),t=r.x,n=r.y,c=r.z,o=v2/(1<<c);return[t*o,v2-n*o,o]}function Qb(e,r){var t=$a(e),n=G(t,3),c=n[0],o=n[1],f=n[2];return[[c,o],[c+r*f,o-r*f]]}function O2(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,t=Qb(e,r),n=G(t,2),c=n[0],o=n[1],f=Q0(c),s=G(f,2),u=s[0],M=s[1],p=Q0(o),A=G(p,2),h=A[0],g=A[1];return[h,M,h,g,u,g,u,M,h,M]}function Jb(e){var r=Zb();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function Zb(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var $b={getQuadbin:{type:"accessor",value:function(r){return r.quadbin}}},Ut=function(e){d0(t,e);var r=Jb(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"indexToBounds",value:function(){var c=this.props,o=c.data,f=c.extruded,s=c.getQuadbin,u=f?.99:1;return{data:o,_normalize:!1,positionFormat:"XY",getPolygon:function(p,A){return O2(s(p,A),u)},updateTriggers:{getPolygon:u}}}}]),t}(y2._GeoCellLayer);R(Ut,"layerName","QuadbinLayer");R(Ut,"defaultProps",$b);var L2=a0(_1());function e3(e){var r=r3();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function r3(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ht=function(e){d0(t,e);var r=e3(t);function t(){return Q(this,t),r.apply(this,arguments)}return $(t,[{key:"getTileIndices",value:function(c){return z0(V(t.prototype),"getTileIndices",this).call(this,c).map(a2).map(function(o){return{q:o,i:xr(o)}})}},{key:"getTileId",value:function(c){var o=c.q,f=c.i;return f||xr(o)}},{key:"getTileMetadata",value:function(c){var o=c.q;return z0(V(t.prototype),"getTileMetadata",this).call(this,Rt(o))}},{key:"getTileZoom",value:function(c){var o=c.q;return Number(Ua(o))}},{key:"getParentIndex",value:function(c){var o=c.q;return{q:c2(o)}}}]),t}(L2._Tileset2D);function N2(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable})),t.push.apply(t,n)}return t}function T2(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?N2(Object(t),!0).forEach(function(n){R(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):N2(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function t3(e){var r=n3();return function(){var n=V(e),c;if(r){var o=V(this).constructor;c=Reflect.construct(n,arguments,o)}else c=n.apply(this,arguments);return g0(this,c)}}function n3(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var a3=function(r){var t=r.data;if(!t||!t.length)return null;var n=typeof t[0].id=="bigint";return new Ut(r,{getQuadbin:n?function(c){return c.id}:function(c){return n2(c.id)}})},c3={aggregationResLevel:6},Ie=function(e){d0(t,e);var r=t3(t);function t(){var n;Q(this,t);for(var c=arguments.length,o=new Array(c),f=0;f<c;f++)o[f]=arguments[f];return n=r.call.apply(r,[this].concat(o)),R(U0(n),"state",void 0),n}return $(t,[{key:"initializeState",value:function(){this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var o=c.changeFlags;if(o.dataChanged){var f=this.props.data,s=f;f=s.tiles,this.setState({data:f,tileJSON:s})}}},{key:"renderLayers",value:function(){var c=this.state,o=c.data,f=c.tileJSON,s=parseInt(f?.maxresolution);return[new Z1(this.props,{id:"quadbin-tile-layer-".concat(this.props.id),data:o,TilesetClass:Ht,renderSubLayers:a3,maxZoom:s,loadOptions:T2(T2({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"quadbin"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(q2.CompositeLayer);R(Ie,"layerName","QuadbinTileLayer");R(Ie,"defaultProps",c3);var X2=a0(b1());var C2=a0(b1()),ec=a0(le());var x2=`#version 300 es
27
27
  #define SHADER_NAME raster-layer-vertex-shader
28
28
 
29
29
  in vec3 positions;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/carto",
3
3
  "description": "CARTO official integration with Deck.gl. Build geospatial applications using CARTO and Deck.gl.",
4
4
  "license": "MIT",
5
- "version": "8.9.22",
5
+ "version": "8.10.0-alpha.2",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -44,7 +44,7 @@
44
44
  "d3-color": "^3.1.0",
45
45
  "d3-format": "^3.1.0",
46
46
  "d3-scale": "^4.0.0",
47
- "h3-js": "^3.7.0",
47
+ "h3-js": "^4.1.0",
48
48
  "moment-timezone": "^0.5.33",
49
49
  "pbf": "^3.2.1",
50
50
  "quadbin": "^0.1.9"
@@ -63,5 +63,5 @@
63
63
  "@deck.gl/layers": "^8.0.0",
64
64
  "@loaders.gl/core": "^3.4.2"
65
65
  },
66
- "gitHead": "cc0ff51f4f8b234c7b5015a0e0dced6217433a5b"
66
+ "gitHead": "888ee50db498da4b42697854e79e46cdbb881470"
67
67
  }
@@ -142,6 +142,7 @@ type MapsAPIParameters = {
142
142
  q?: string;
143
143
  name?: string;
144
144
  queryParameters?: QueryParameters;
145
+ /* eslint-disable-next-line camelcase */
145
146
  geo_column?: string;
146
147
  columns?: string;
147
148
  aggregationExp?: string;
@@ -174,6 +175,7 @@ function getParameters({
174
175
  }
175
176
 
176
177
  if (geoColumn) {
178
+ /* eslint-disable-next-line camelcase */
177
179
  parameters.geo_column = geoColumn;
178
180
  }
179
181
  if (columns) {
@@ -1,5 +1,12 @@
1
1
  import {_Tileset2D as Tileset2D, GeoBoundingBox} from '@deck.gl/geo-layers';
2
- import {polyfill, geoToH3, h3GetResolution, h3ToGeoBoundary, h3ToParent, kRing} from 'h3-js';
2
+ import {
3
+ polygonToCells,
4
+ latLngToCell,
5
+ getResolution,
6
+ cellToBoundary,
7
+ cellToParent,
8
+ gridDisk
9
+ } from 'h3-js';
3
10
 
4
11
  export type H3TileIndex = {i: string};
5
12
 
@@ -9,7 +16,7 @@ function getHexagonsInBoundingBox(
9
16
  ): string[] {
10
17
  const longitudeSpan = Math.abs(east - west);
11
18
  if (longitudeSpan > 180) {
12
- // This is a known issue in h3-js: polyfill does not work correctly
19
+ // This is a known issue in h3-js: polygonToCells does not work correctly
13
20
  // when longitude span is larger than 180 degrees.
14
21
  const nSegments = Math.ceil(longitudeSpan / 180);
15
22
  let h3Indices: string[] = [];
@@ -23,10 +30,10 @@ function getHexagonsInBoundingBox(
23
30
  return [...new Set(h3Indices)];
24
31
  }
25
32
 
26
- // `polyfill()` fills based on hexagon center, which means tiles vanish
33
+ // `polygonToCells()` fills based on hexagon center, which means tiles vanish
27
34
  // prematurely. Get more accurate coverage by oversampling
28
35
  const oversample = 2;
29
- const h3Indices = polyfill(
36
+ const h3Indices = polygonToCells(
30
37
  [
31
38
  [
32
39
  [west, north],
@@ -40,11 +47,11 @@ function getHexagonsInBoundingBox(
40
47
  true
41
48
  );
42
49
 
43
- return oversample ? [...new Set(h3Indices.map(i => h3ToParent(i, resolution)))] : h3Indices;
50
+ return oversample ? [...new Set(h3Indices.map(i => cellToParent(i, resolution)))] : h3Indices;
44
51
  }
45
52
 
46
53
  function tileToBoundingBox(index: string): GeoBoundingBox {
47
- const coordinates = h3ToGeoBoundary(index);
54
+ const coordinates = cellToBoundary(index);
48
55
  const latitudes = coordinates.map(c => c[0]);
49
56
  const longitudes = coordinates.map(c => c[1]);
50
57
  const west = Math.min(...longitudes);
@@ -89,8 +96,8 @@ export default class H3Tileset2D extends Tileset2D {
89
96
 
90
97
  // Once we are at max zoom, getHexagonsInBoundingBox doesn't work, simply
91
98
  // get a ring centered on the hexagon in the viewport center
92
- const center = geoToH3(viewport.latitude, viewport.longitude, maxZoom);
93
- indices = kRing(center, 1);
99
+ const center = latLngToCell(viewport.latitude, viewport.longitude, maxZoom);
100
+ indices = gridDisk(center, 1);
94
101
  } else {
95
102
  indices = getHexagonsInBoundingBox({west, north, east, south}, z);
96
103
  }
@@ -110,13 +117,13 @@ export default class H3Tileset2D extends Tileset2D {
110
117
 
111
118
  // @ts-expect-error Tileset2D should be generic over TileIndex
112
119
  getTileZoom({i}: H3TileIndex): number {
113
- return h3GetResolution(i);
120
+ return getResolution(i);
114
121
  }
115
122
 
116
123
  // @ts-expect-error Tileset2D should be generic over TileIndex
117
124
  getParentIndex(index: H3TileIndex): H3TileIndex {
118
- const resolution = h3GetResolution(index.i);
119
- const i = h3ToParent(index.i, resolution - 1);
125
+ const resolution = getResolution(index.i);
126
+ const i = cellToParent(index.i, resolution - 1);
120
127
  return {i};
121
128
  }
122
129
  }
@@ -16,18 +16,18 @@ const defaultProps: DefaultProps<SpatialIndexTileLayerProps> = {
16
16
  };
17
17
 
18
18
  /** All properties supported by SpatialIndexTileLayer. */
19
- export type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps<DataT> &
19
+ export type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps &
20
20
  TileLayer<DataT>;
21
21
 
22
22
  /** Properties added by SpatialIndexTileLayer. */
23
- type _SpatialIndexTileLayerProps<DataT = any> = {
23
+ type _SpatialIndexTileLayerProps = {
24
24
  aggregationResLevel?: number;
25
25
  };
26
26
 
27
27
  export default class SpatialIndexTileLayer<
28
28
  DataT = any,
29
29
  ExtraProps extends {} = {}
30
- > extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps<DataT>>> {
30
+ > extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps>> {
31
31
  static layerName = 'SpatialIndexTileLayer';
32
32
  static defaultProps = defaultProps;
33
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"maps-v3-client.d.ts","sourceRoot":"","sources":["../../src/api/maps-v3-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,sBAAsB,EACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,MAAM,EAGN,gBAAgB,EAChB,OAAO,EAEP,eAAe,EAEf,WAAW,EACX,UAAU,EAEX,MAAM,mBAAmB,CAAC;AAY3B,oBAAY,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAsF7C,aAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AA+DF,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkClD;AA+CD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AACD,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuBtD;AAgOD,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;4BA+B6B,IAAI;IA7iBlC;;OAEG;;;;;;;;;;GA+lBF"}
1
+ {"version":3,"file":"maps-v3-client.d.ts","sourceRoot":"","sources":["../../src/api/maps-v3-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,sBAAsB,EACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,MAAM,EAGN,gBAAgB,EAChB,OAAO,EAEP,eAAe,EAEf,WAAW,EACX,UAAU,EAEX,MAAM,mBAAmB,CAAC;AAY3B,oBAAY,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAsF7C,aAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAiEF,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkClD;AA+CD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AACD,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuBtD;AAgOD,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;4BA+B6B,IAAI;IA/iBlC;;OAEG;;;;;;;;;;GAimBF"}
@@ -1 +1 @@
1
- {"version":3,"file":"h3-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,SAAS,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAG5E,oBAAY,WAAW,GAAG;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AA0DtC,wBAAgB,oBAAoB,CAAC,QAAQ,KAAA,GAAG,MAAM,CAMrD;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD;;;;OAIG;IAEH,cAAc,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC;;;;KAAA,GAAG,WAAW,EAAE;IAyB3D,SAAS,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKnC,eAAe,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW;;;IAKhC,WAAW,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKrC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAKhD"}
1
+ {"version":3,"file":"h3-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/layers/h3-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,SAAS,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAU5E,oBAAY,WAAW,GAAG;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AA0DtC,wBAAgB,oBAAoB,CAAC,QAAQ,KAAA,GAAG,MAAM,CAMrD;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS;IAChD;;;;OAIG;IAEH,cAAc,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAC;;;;KAAA,GAAG,WAAW,EAAE;IAyB3D,SAAS,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKnC,eAAe,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW;;;IAKhC,WAAW,CAAC,EAAC,CAAC,EAAC,EAAE,WAAW,GAAG,MAAM;IAKrC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW;CAKhD"}
@@ -2,12 +2,12 @@ import { DefaultProps, UpdateParameters } from '@deck.gl/core/typed';
2
2
  import { PickingInfo } from '@deck.gl/core/typed';
3
3
  import { TileLayer, _Tile2DHeader as Tile2DHeader } from '@deck.gl/geo-layers/typed';
4
4
  /** All properties supported by SpatialIndexTileLayer. */
5
- export declare type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps<DataT> & TileLayer<DataT>;
5
+ export declare type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps & TileLayer<DataT>;
6
6
  /** Properties added by SpatialIndexTileLayer. */
7
- declare type _SpatialIndexTileLayerProps<DataT = any> = {
7
+ declare type _SpatialIndexTileLayerProps = {
8
8
  aggregationResLevel?: number;
9
9
  };
10
- export default class SpatialIndexTileLayer<DataT = any, ExtraProps extends {} = {}> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps<DataT>>> {
10
+ export default class SpatialIndexTileLayer<DataT = any, ExtraProps extends {} = {}> extends TileLayer<DataT, ExtraProps & Required<_SpatialIndexTileLayerProps>> {
11
11
  static layerName: string;
12
12
  static defaultProps: DefaultProps<SpatialIndexTileLayerProps<any>>;
13
13
  updateState(params: UpdateParameters<this>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"spatial-index-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/spatial-index-tile-layer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAK7D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAE,aAAa,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAU7E,yDAAyD;AACzD,oBAAY,0BAA0B,CAAC,KAAK,GAAG,GAAG,IAAI,2BAA2B,CAAC,KAAK,CAAC,GACtF,SAAS,CAAC,KAAK,CAAC,CAAC;AAEnB,iDAAiD;AACjD,aAAK,2BAA2B,CAAC,KAAK,GAAG,GAAG,IAAI;IAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,SAAS,SAA2B;IAC3C,MAAM,CAAC,YAAY,gDAAgB;IAEnC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAU1C,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAsBvD,sBAAsB,CAAC,IAAI,EAAE,YAAY;;;;IAOzC,yBAAyB,CAAC,IAAI,EAAE,YAAY;IAiB5C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAc9D"}
1
+ {"version":3,"file":"spatial-index-tile-layer.d.ts","sourceRoot":"","sources":["../../src/layers/spatial-index-tile-layer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAK7D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAE,aAAa,IAAI,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAU7E,yDAAyD;AACzD,oBAAY,0BAA0B,CAAC,KAAK,GAAG,GAAG,IAAI,2BAA2B,GAC/E,SAAS,CAAC,KAAK,CAAC,CAAC;AAEnB,iDAAiD;AACjD,aAAK,2BAA2B,GAAG;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAQ,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAC5E,MAAM,CAAC,SAAS,SAA2B;IAC3C,MAAM,CAAC,YAAY,gDAAgB;IAEnC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAU1C,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAsBvD,sBAAsB,CAAC,IAAI,EAAE,YAAY;;;;IAOzC,yBAAyB,CAAC,IAAI,EAAE,YAAY;IAiB5C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAc9D"}