@deck.gl/carto 8.9.18 → 8.10.0-alpha.1
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 +13 -13
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/layers/h3-tileset-2d.js +8 -8
- package/dist/es5/layers/h3-tileset-2d.js.map +1 -1
- package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/layers/h3-tileset-2d.js +9 -9
- package/dist/esm/layers/h3-tileset-2d.js.map +1 -1
- package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +3 -3
- package/src/api/maps-v3-client.ts +2 -0
- package/src/layers/h3-tileset-2d.ts +18 -11
- package/src/layers/spatial-index-tile-layer.ts +3 -3
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/layers/h3-tileset-2d.d.ts.map +1 -1
- package/typed/layers/spatial-index-tile-layer.d.ts +3 -3
- package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
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.
|
|
12054
|
-
return oversample ? [...new Set(h3Indices.map((i) => (0, import_h3_js.
|
|
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.
|
|
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.
|
|
12094
|
-
indices = (0, import_h3_js.
|
|
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.
|
|
12122
|
+
return (0, import_h3_js.getResolution)(i);
|
|
12123
12123
|
}
|
|
12124
12124
|
getParentIndex(index) {
|
|
12125
|
-
const resolution = (0, import_h3_js.
|
|
12126
|
-
const i = (0, import_h3_js.
|
|
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
|
|
12331
|
+
function getResolution2(quadbin) {
|
|
12332
12332
|
return quadbin >> 52n & 0x1fn;
|
|
12333
12333
|
}
|
|
12334
|
-
function
|
|
12335
|
-
const zparent =
|
|
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
|
}
|
|
@@ -12651,13 +12651,13 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
|
|
|
12651
12651
|
getTileZoom({
|
|
12652
12652
|
q
|
|
12653
12653
|
}) {
|
|
12654
|
-
return Number(
|
|
12654
|
+
return Number(getResolution2(q));
|
|
12655
12655
|
}
|
|
12656
12656
|
getParentIndex({
|
|
12657
12657
|
q
|
|
12658
12658
|
}) {
|
|
12659
12659
|
return {
|
|
12660
|
-
q:
|
|
12660
|
+
q: cellToParent2(q)
|
|
12661
12661
|
};
|
|
12662
12662
|
}
|
|
12663
12663
|
};
|
|
@@ -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":";;;;;;;;;;;;;;;;;;;AAGA;;AAMA;;AAiBA;;AAEA;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAMA,cAAc,GAAG,IAAvB;AACA,IAAMC,cAAc,GAAG,eAAvB;AACA,IAAMC,gBAAgB,GAAG,KAAzB;;SAeeC,O;;;;;uEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACEC,YAAAA,MADF,QACEA,MADF,EAEEC,GAFF,QAEEA,GAFF,EAGWC,aAHX,QAGEC,OAHF,EAIEC,WAJF,QAIEA,WAJF,EAKEC,IALF,QAKEA,IALF,EAMEC,YANF,QAMEA,YANF;AAQQH,YAAAA,OARR,mCASOD,aATP;AAUIK,cAAAA,MAAM,EAAE;AAVZ;;AAaE,gBAAIH,WAAJ,EAAiB;AACfD,cAAAA,OAAO,CAACK,aAAR,oBAAkCJ,WAAlC;AACD;;AAED,gBAAIJ,MAAM,KAAK,MAAf,EAAuB;AACrBG,cAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,kBAA1B;AACD;;AAnBH;AAAA;AAAA,mBAuBiBM,KAAK,CAACR,GAAD,EAAM;AACtBD,cAAAA,MAAM,EAANA,MADsB;AAEtBG,cAAAA,OAAO,EAAPA,OAFsB;AAGtBE,cAAAA,IAAI,EAAJA;AAHsB,aAAN,CAvBtB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,kBA6BU,IAAIK,4BAAJ,cAAkCJ,YAAlC,CA7BV;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAiCeK,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACEX,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEE,OAHF,SAGEA,OAHF,EAIEC,WAJF,SAIEA,WAJF,EAKEC,IALF,SAKEA,IALF,EAMEC,YANF,SAMEA,YANF;AAAA;AAAA,mBAQyBP,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcE,cAAAA,OAAO,EAAPA,OAAd;AAAuBC,cAAAA,WAAW,EAAXA,WAAvB;AAAoCC,cAAAA,IAAI,EAAJA,IAApC;AAA0CC,cAAAA,YAAY,EAAZA;AAA1C,aAAD,CARhC;;AAAA;AAQQM,YAAAA,QARR;AAAA;AAAA;AAAA,mBAWiBA,QAAQ,CAACC,IAAT,EAXjB;;AAAA;AAWIA,YAAAA,IAXJ;AAAA;AAAA;;AAAA;AAAA;AAAA;AAaIA,YAAAA,IAAI,GAAG;AAACC,cAAAA,KAAK,EAAE;AAAR,aAAP;;AAbJ;AAAA,gBAgBOF,QAAQ,CAACG,EAhBhB;AAAA;AAAA;AAAA;;AAAA,kBAiBU,IAAIL,4BAAJ,CAAkBG,IAAI,CAACC,KAAvB,EAA8BR,YAA9B,EAA4CM,QAA5C,CAjBV;;AAAA;AAAA,8CAmBSC,IAnBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAsBeG,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACEhB,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEG,WAHF,SAGEA,WAHF,EAIEa,MAJF,SAIEA,MAJF,EAKEZ,IALF,SAKEA,IALF,EAMEC,YANF,SAMEA,YANF;;AAAA,kBAUMW,MAAM,KAAKC,uBAAQC,MAVzB;AAAA;AAAA;AAAA;;AAAA,8CAWWpB,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcG,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA,IAA3B;AAAiCC,cAAAA,YAAY,EAAZA;AAAjC,aAAD,CAXlB;;AAAA;AAAA;AAAA,mBAcqBK,WAAW,CAAM;AAACX,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcG,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA,IAA3B;AAAiCC,cAAAA,YAAY,EAAZA;AAAjC,aAAN,CAdhC;;AAAA;AAcQc,YAAAA,IAdR;AAAA,8CAeSA,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAjB,GAAwBD,IAfjC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAkDA,SAASE,aAAT,QASgF;AAAA,MAR9EC,IAQ8E,SAR9EA,IAQ8E;AAAA,MAP9EC,MAO8E,SAP9EA,MAO8E;AAAA,MAN9EC,SAM8E,SAN9EA,SAM8E;AAAA,MAL9EC,OAK8E,SAL9EA,OAK8E;AAAA,MAJ9EC,QAI8E,SAJ9EA,QAI8E;AAAA,MAH9EC,cAG8E,SAH9EA,cAG8E;AAAA,MAF9EC,mBAE8E,SAF9EA,mBAE8E;AAAA,MAD9EC,eAC8E,SAD9EA,eAC8E;AAC9E,MAAMC,UAA6B,GAAG;AACpCC,IAAAA,MAAM,EAAEL,QAAQ,IAAI9B,cADgB;AAEpCoC,IAAAA,CAAC,EAAEnC;AAFiC,GAAtC;AAKA,MAAMoC,UAAU,GAAGX,IAAI,KAAKY,yBAAUC,KAAnB,GAA2B,GAA3B,GAAiC,MAApD;AACAL,EAAAA,UAAU,CAACG,UAAD,CAAV,GAAyBV,MAAzB;;AAEA,MAAIM,eAAJ,EAAqB;AACnBC,IAAAA,UAAU,CAACD,eAAX,GAA6BA,eAA7B;AACD;;AAED,MAAIL,SAAJ,EAAe;AAEbM,IAAAA,UAAU,CAACM,UAAX,GAAwBZ,SAAxB;AACD;;AACD,MAAIC,OAAJ,EAAa;AACXK,IAAAA,UAAU,CAACL,OAAX,GAAqBA,OAAO,CAACY,IAAR,CAAa,GAAb,CAArB;AACD;;AACD,MAAIV,cAAJ,EAAoB;AAClBG,IAAAA,UAAU,CAACH,cAAX,GAA4BA,cAA5B;AACD,GAFD,MAEO,IAAIW,uBAAuB,CAACd,SAAD,CAA3B,EAAwC;AAE7CM,IAAAA,UAAU,CAACH,cAAX,GAA4B,YAA5B;AACD;;AACD,MAAIC,mBAAJ,EAAyB;AACvBE,IAAAA,UAAU,CAACF,mBAAX,GAAiCA,mBAAjC;AACD;;AAED,SAAOE,UAAP;AACD;;AAED,SAASQ,uBAAT,CAAiCd,SAAjC,EAAgE;AAC9D,MAAMe,YAAY,GAAGf,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEgB,KAAX,CAAiB,GAAjB,EAAsB,CAAtB,CAArB;AACA,SAAOD,YAAY,KAAK,IAAjB,IAAyBA,YAAY,KAAK,SAAjD;AACD;;SAEqBE,gB;;;;;gFAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLnB,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLmB,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLnB,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLC,QAPK,SAOLA,QAPK,EAQLxB,OARK,SAQLA,OARK,EASLyB,cATK,SASLA,cATK,EAULC,mBAVK,SAULA,mBAVK,EAWLC,eAXK,SAWLA,eAXK;AAaCe,YAAAA,OAbD,aAacD,WAAW,CAACE,OAb1B,cAaqCH,UAbrC,cAamDpB,IAbnD;AAcCQ,YAAAA,UAdD,GAccT,aAAa,CAAC;AAC/BC,cAAAA,IAAI,EAAJA,IAD+B;AAE/BC,cAAAA,MAAM,EAANA,MAF+B;AAG/BC,cAAAA,SAAS,EAATA,SAH+B;AAI/BC,cAAAA,OAAO,EAAPA,OAJ+B;AAK/BC,cAAAA,QAAQ,EAARA,QAL+B;AAM/BE,cAAAA,mBAAmB,EAAnBA,mBAN+B;AAO/BD,cAAAA,cAAc,EAAdA,cAP+B;AAQ/BE,cAAAA,eAAe,EAAfA;AAR+B,aAAD,CAd3B;AAwBCiB,YAAAA,iBAxBD,GAwBqBC,MAAM,CAACC,OAAP,CAAelB,UAAf,EAA2BmB,GAA3B,CAA+B,kBAAkB;AAAA;AAAA,kBAAhBC,GAAgB;AAAA,kBAAXC,KAAW;;AACzE,kBAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,gBAAAA,KAAK,GAAGC,IAAI,CAACC,SAAL,CAAeF,KAAf,CAAR;AACD;;AACD,qBAAO,oCAAgBD,GAAhB,EAAqBC,KAArB,CAAP;AACD,aALyB,CAxBrB;AA8BCnD,YAAAA,GA9BD,aA8BU4C,OA9BV,cA8BqBE,iBAAiB,CAACT,IAAlB,CAAuB,GAAvB,CA9BrB;AA+BElC,YAAAA,WA/BF,GA+BiBwC,WA/BjB,CA+BExC,WA/BF;AAiCCE,YAAAA,YAjCD,GAiCgB;AAACiD,cAAAA,WAAW,EAAEC,6BAAcC,aAA5B;AAA2Cd,cAAAA,UAAU,EAAVA,UAA3C;AAAuDpB,cAAAA,IAAI,EAAJA,IAAvD;AAA6DC,cAAAA,MAAM,EAANA;AAA7D,aAjChB;;AAAA,kBAkCDvB,GAAG,CAACyD,MAAJ,GAAa9D,cAAb,IAA+B2B,IAAI,KAAKY,yBAAUC,KAlCjD;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAmCUzB,WAAW,CAAC;AACvBX,cAAAA,MAAM,EAAE,MADe;AAEvBC,cAAAA,GAAG,EAAE4C,OAFkB;AAGvB1C,cAAAA,OAAO,EAAPA,OAHuB;AAIvBC,cAAAA,WAAW,EAAXA,WAJuB;AAKvBC,cAAAA,IAAI,EAAEgD,IAAI,CAACC,SAAL,CAAevB,UAAf,CALiB;AAMvBzB,cAAAA,YAAY,EAAZA;AANuB,aAAD,CAnCrB;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBA6CQK,WAAW,CAAC;AAACV,cAAAA,GAAG,EAAHA,GAAD;AAAME,cAAAA,OAAO,EAAPA,OAAN;AAAeC,cAAAA,WAAW,EAAXA,WAAf;AAA4BE,cAAAA,YAAY,EAAZA;AAA5B,aAAD,CA7CnB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAgDP,SAASqD,kBAAT,CAA4BC,QAA5B,EAAwD3C,MAAxD,EAAuF;AACrF,MAAM4C,CAAC,GAAGD,QAAQ,CAAC3C,MAAD,CAAlB;;AAEA,MAAI4C,CAAC,IAAI,CAACA,CAAC,CAAC/C,KAAR,IAAiB+C,CAAC,CAAC5D,GAAvB,EAA4B;AAC1B,WAAO4D,CAAC,CAAC5D,GAAF,CAAM,CAAN,CAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS6D,6BAAT,QASyB;AAAA,MARvBvC,IAQuB,SARvBA,IAQuB;AAAA,MAPvBC,MAOuB,SAPvBA,MAOuB;AAAA,MANvBmB,UAMuB,SANvBA,UAMuB;AAAA,MALvBC,WAKuB,SALvBA,WAKuB;AAAA,MAJvBnB,SAIuB,SAJvBA,SAIuB;AAAA,MAHvBC,OAGuB,SAHvBA,OAGuB;AAAA,MAFvBE,cAEuB,SAFvBA,cAEuB;AAAA,MADvBC,mBACuB,SADvBA,mBACuB;AACvB,qBAAOc,UAAP,EAAmB,wBAAnB;AACA,qBAAOpB,IAAP,EAAa,oBAAb;AACA,qBAAOC,MAAP,EAAe,sBAAf;AAEA,qBAAOoB,WAAW,CAACmB,UAAZ,KAA2BC,4BAAaC,EAA/C,EAAmD,8BAAnD;AACA,qBAAOrB,WAAW,CAACsB,UAAnB,EAA+B,wBAA/B;AACA,qBAAOtB,WAAW,CAACxC,WAAnB,EAAgC,4BAAhC;;AAEA,MAAIsB,OAAJ,EAAa;AACX,uBACEyC,+BAAgBC,QAAhB,CAAyB7C,IAAzB,CADF,2DAEoDA,IAFpD;AAID;;AACD,MAAIE,SAAJ,EAAe;AACb,uBACE4C,kCAAmBD,QAAnB,CAA4B7C,IAA5B,CADF,6DAEsDA,IAFtD;AAID,GALD,MAKO;AACL,uBAAO,CAACK,cAAR,EAAwB,yDAAxB;AACA,uBAAO,CAACC,mBAAR,EAA6B,8DAA7B;AACD;AACF;;SAOqByC,c;;;;;8EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACL/C,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLmB,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLnB,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLT,MAPK,SAOLA,MAPK,EAQLsD,WARK,SAQLA,WARK,EASL5C,QATK,SASLA,QATK,EAULxB,OAVK,SAULA,OAVK,EAWLyB,cAXK,SAWLA,cAXK,EAYLC,mBAZK,SAYLA,mBAZK,EAaLC,eAbK,SAaLA,eAbK;AAAA;AAAA,mBAiBiD0C,aAAa,CAAC;AAClEjD,cAAAA,IAAI,EAAJA,IADkE;AAElEC,cAAAA,MAAM,EAANA,MAFkE;AAGlEmB,cAAAA,UAAU,EAAVA,UAHkE;AAIlEC,cAAAA,WAAW,EAAXA,WAJkE;AAKlEnB,cAAAA,SAAS,EAATA,SALkE;AAMlEC,cAAAA,OAAO,EAAPA,OANkE;AAOlET,cAAAA,MAAM,EAANA,MAPkE;AAQlEsD,cAAAA,WAAW,EAAXA,WARkE;AASlE5C,cAAAA,QAAQ,EAARA,QATkE;AAUlExB,cAAAA,OAAO,EAAPA,OAVkE;AAWlEyB,cAAAA,cAAc,EAAdA,cAXkE;AAYlEC,cAAAA,mBAAmB,EAAnBA,mBAZkE;AAalEC,cAAAA,eAAe,EAAfA;AAbkE,aAAD,CAjB9D;;AAAA;AAAA;AAiBE7B,YAAAA,GAjBF,wBAiBEA,GAjBF;AAiBOG,YAAAA,WAjBP,wBAiBOA,WAjBP;AAiBoBqE,YAAAA,SAjBpB,wBAiBoBA,SAjBpB;AAiB+Bb,YAAAA,QAjB/B,wBAiB+BA,QAjB/B;AAiCCtD,YAAAA,YAjCD,GAiCgB;AAACiD,cAAAA,WAAW,EAAEC,6BAAckB,IAA5B;AAAkC/B,cAAAA,UAAU,EAAVA,UAAlC;AAA8CpB,cAAAA,IAAI,EAAJA,IAA9C;AAAoDC,cAAAA,MAAM,EAANA;AAApD,aAjChB;AAAA;AAAA,mBAkCcR,WAAW,CAAC;AAACf,cAAAA,GAAG,EAAHA,GAAD;AAAMgB,cAAAA,MAAM,EAAEwD,SAAd;AAAyBrE,cAAAA,WAAW,EAAXA,WAAzB;AAAsCE,cAAAA,YAAY,EAAZA;AAAtC,aAAD,CAlCzB;;AAAA;AAkCCc,YAAAA,IAlCD;AAmCCuD,YAAAA,MAnCD,GAmCgC;AAACvD,cAAAA,IAAI,EAAJA,IAAD;AAAOH,cAAAA,MAAM,EAAEwD,SAAf;AAA0BG,cAAAA,MAAM,EAAEhB,QAAQ,CAACgB;AAA3C,aAnChC;AAAA,8CAoCED,MApCF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAuCQH,a;;;;;6EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACEjD,YAAAA,IADF,SACEA,IADF,EAEEC,MAFF,SAEEA,MAFF,EAGEmB,UAHF,SAGEA,UAHF,EAIEC,WAJF,SAIEA,WAJF,EAKEnB,SALF,SAKEA,SALF,EAMEC,OANF,SAMEA,OANF,EAOET,MAPF,SAOEA,MAPF,EAQEsD,WARF,SAQEA,WARF,EASE5C,QATF,SASEA,QATF,EAUExB,OAVF,SAUEA,OAVF,EAWEyB,cAXF,SAWEA,cAXF,EAYEC,mBAZF,SAYEA,mBAZF,EAaEC,eAbF,SAaEA,eAbF;AAeQ+C,YAAAA,kBAfR,GAe6B,oCAf7B;AAkBQC,YAAAA,UAlBR,mCAmBQD,kBAAkB,CAACd,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDY,kBAnB7D,GAoBOjC,WApBP;AAsBEkB,YAAAA,6BAA6B,CAAC;AAC5BvC,cAAAA,IAAI,EAAJA,IAD4B;AAE5BC,cAAAA,MAAM,EAANA,MAF4B;AAG5BmB,cAAAA,UAAU,EAAVA,UAH4B;AAI5BC,cAAAA,WAAW,EAAEkC,UAJe;AAK5BrD,cAAAA,SAAS,EAATA,SAL4B;AAM5BC,cAAAA,OAAO,EAAPA,OAN4B;AAO5BE,cAAAA,cAAc,EAAdA,cAP4B;AAQ5BC,cAAAA,mBAAmB,EAAnBA;AAR4B,aAAD,CAA7B;;AAWA,gBAAI,CAACiD,UAAU,CAAChC,OAAhB,EAAyB;AACvBgC,cAAAA,UAAU,CAAChC,OAAX,GAAqB,kCAAqBgC,UAAU,CAACZ,UAAhC,CAArB;AACD;;AAnCH;AAAA,mBAqCyBxB,gBAAgB,CAAC;AACtCnB,cAAAA,IAAI,EAAJA,IADsC;AAEtCC,cAAAA,MAAM,EAANA,MAFsC;AAGtCmB,cAAAA,UAAU,EAAVA,UAHsC;AAItCC,cAAAA,WAAW,EAAEkC,UAJyB;AAKtCrD,cAAAA,SAAS,EAATA,SALsC;AAMtCC,cAAAA,OAAO,EAAPA,OANsC;AAOtCC,cAAAA,QAAQ,EAARA,QAPsC;AAQtCxB,cAAAA,OAAO,EAAPA,OARsC;AAStCyB,cAAAA,cAAc,EAAdA,cATsC;AAUtCC,cAAAA,mBAAmB,EAAnBA,mBAVsC;AAWtCC,cAAAA,eAAe,EAAfA;AAXsC,aAAD,CArCzC;;AAAA;AAqCQ8B,YAAAA,QArCR;AAkDM3D,YAAAA,GAlDN,GAkD2B,IAlD3B;;AAAA,iBAqDMgB,MArDN;AAAA;AAAA;AAAA;;AAsDIwD,YAAAA,SAAS,GAAGxD,MAAZ;AACAhB,YAAAA,GAAG,GAAG0D,kBAAkB,CAACC,QAAD,EAAW3C,MAAX,CAAxB;AACA,+BAAOhB,GAAP,mBAAsBgB,MAAtB;AAxDJ;AAAA;;AAAA;AA2DU8D,YAAAA,kBA3DV,GA2D+B,CAAC7D,uBAAQ8D,OAAT,EAAkB9D,uBAAQmC,IAA1B,EAAgCnC,uBAAQC,MAAxC,EAAgDD,uBAAQ+D,QAAxD,CA3D/B;AAAA,0CA4DoBF,kBA5DpB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AA4DeG,YAAAA,CA5Df;AA6DMjF,YAAAA,GAAG,GAAG0D,kBAAkB,CAACC,QAAD,EAAWsB,CAAX,CAAxB;;AA7DN,iBA8DUjF,GA9DV;AAAA;AAAA;AAAA;;AA+DQwE,YAAAA,SAAS,GAAGS,CAAZ;AA/DR;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAmEI,+BAAOjF,GAAG,IAAIwE,SAAd,EAAyB,iDAAzB;;AAnEJ;AAsEE,gBAAIxD,MAAM,KAAKC,uBAAQ+D,QAAnB,IAA+BV,WAAnC,EAAgD;AAC9CY,wBAAIC,MAAJ,CACEpC,MAAM,CAACqC,MAAP,CAAcC,2BAAd,EAA4BlB,QAA5B,CAAqCG,WAArC,CADF,2CAEoCA,WAFpC;;AAIAtE,cAAAA,GAAG,eAAQ,oCAAgB,aAAhB,EAA+BsE,WAA/B,CAAR,CAAH;AACD;;AAEMnE,YAAAA,WA9ET,GA8EwB0E,UA9ExB,CA8ES1E,WA9ET;AAAA,8CA+ES;AAACH,cAAAA,GAAG,EAAHA,GAAD;AAAMG,cAAAA,WAAW,EAAXA,WAAN;AAAmBqE,cAAAA,SAAS,EAATA,SAAnB;AAA8Bb,cAAAA,QAAQ,EAARA;AAA9B,aA/ET;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAmFe2B,gB;;;;;gFAAf,kBACEC,OADF,EAEEpF,WAFF,EAGEwC,WAHF,EAIEjB,QAJF,EAKExB,OALF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAQIyB,YAAAA,cARJ,GAiBM4D,OAjBN,CAQI5D,cARJ,EASIC,mBATJ,GAiBM2D,OAjBN,CASI3D,mBATJ,EAUoBc,UAVpB,GAiBM6C,OAjBN,CAUIC,cAVJ,EAWI/D,OAXJ,GAiBM8D,OAjBN,CAWI9D,OAXJ,EAYIT,MAZJ,GAiBMuE,OAjBN,CAYIvE,MAZJ,EAaIQ,SAbJ,GAiBM+D,OAjBN,CAaI/D,SAbJ,EAcID,MAdJ,GAiBMgE,OAjBN,CAcIhE,MAdJ,EAeID,IAfJ,GAiBMiE,OAjBN,CAeIjE,IAfJ,EAgBIO,eAhBJ,GAiBM0D,OAjBN,CAgBI1D,eAhBJ;AAAA;AAAA,mBAmBiC0C,aAAa,CAAC;AAC3C5C,cAAAA,cAAc,EAAdA,cAD2C;AAE3CC,cAAAA,mBAAmB,EAAnBA,mBAF2C;AAG3CF,cAAAA,QAAQ,EAARA,QAH2C;AAI3CiB,cAAAA,WAAW,kCAAMA,WAAN;AAAmBxC,gBAAAA,WAAW,EAAXA;AAAnB,gBAJgC;AAK3CuC,cAAAA,UAAU,EAAVA,UAL2C;AAM3CjB,cAAAA,OAAO,EAAPA,OAN2C;AAO3CT,cAAAA,MAAM,EAANA,MAP2C;AAQ3CQ,cAAAA,SAAS,EAATA,SAR2C;AAS3CtB,cAAAA,OAAO,EAAPA,OAT2C;AAU3CqB,cAAAA,MAAM,EAANA,MAV2C;AAW3CD,cAAAA,IAAI,EAAJA,IAX2C;AAY3CO,cAAAA,eAAe,EAAfA;AAZ2C,aAAD,CAnB9C;;AAAA;AAAA;AAmBS7B,YAAAA,GAnBT,yBAmBSA,GAnBT;AAmBcwE,YAAAA,SAnBd,yBAmBcA,SAnBd;AAmCQiB,YAAAA,KAnCR,GAmCgBC,QAAQ,CAAC,IAAIC,GAAJ,CAAQ3F,GAAR,EAAa4F,YAAb,CAA0BC,GAA1B,CAA8B,OAA9B,KAA0C,EAA3C,EAA+C,EAA/C,CAnCxB;;AAAA,kBAoCMJ,KAAK,IAAIF,OAAO,CAACE,KAAR,KAAkBA,KApCjC;AAAA;AAAA;AAAA;;AAAA,8CAqCW,KArCX;;AAAA;AAuCEF,YAAAA,OAAO,CAACE,KAAR,GAAgBA,KAAhB;AAGMpF,YAAAA,YA1CR,GA0CuB;AAACiD,cAAAA,WAAW,EAAEC,6BAAckB,IAA5B;AAAkC/B,cAAAA,UAAU,EAAVA,UAAlC;AAA8CpB,cAAAA,IAAI,EAAJA,IAA9C;AAAoDC,cAAAA,MAAM,EAANA;AAApD,aA1CvB;AAAA;AAAA,mBA2CuBR,WAAW,CAAC;AAACf,cAAAA,GAAG,EAAHA,GAAD;AAAMgB,cAAAA,MAAM,EAAEwD,SAAd;AAAyBrE,cAAAA,WAAW,EAAXA,WAAzB;AAAsCE,cAAAA,YAAY,EAAZA;AAAtC,aAAD,CA3ClC;;AAAA;AA2CEkF,YAAAA,OAAO,CAACpE,IA3CV;AAAA,8CA6CS,IA7CT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAgDe2E,e;;;;;+EAAf,kBACEC,SADF,EAEER,OAFF,EAGEpF,WAHF,EAIEwC,WAJF;AAAA;AAAA;AAAA;AAAA;AAAA;AAMyBD,YAAAA,UANzB,GAMqD6C,OANrD,CAMSC,cANT,EAMqCjE,MANrC,GAMqDgE,OANrD,CAMqChE,MANrC,EAM6CD,IAN7C,GAMqDiE,OANrD,CAM6CjE,IAN7C;AAQQ0E,YAAAA,QARR,GAQmB,mCAAsBrD,WAAW,CAACsB,UAAlC,CARnB;AASMrB,YAAAA,OATN,aASmBoD,QATnB,cAS+BtD,UAT/B;;AAUE,gBAAIpB,IAAI,KAAKY,yBAAUC,KAAvB,EAA8B;AAC5BS,cAAAA,OAAO,IAAImD,SAAX;AACD,aAFD,MAEO;AAELnD,cAAAA,OAAO,cAAOrB,MAAP,cAAiBwE,SAAjB,CAAP;AACD;;AAEK1F,YAAAA,YAjBR,GAiBuB;AAACiD,cAAAA,WAAW,EAAEC,6BAAc0C,UAA5B;AAAwCvD,cAAAA,UAAU,EAAVA,UAAxC;AAAoDpB,cAAAA,IAAI,EAAJA,IAApD;AAA0DC,cAAAA,MAAM,EAANA;AAA1D,aAjBvB;AAkBMvB,YAAAA,GAlBN,GAkBY4C,OAlBZ;;AAmBE,gBAAItB,IAAI,KAAKY,yBAAUC,KAAvB,EAA8B;AAC5BnC,cAAAA,GAAG,eAAQ,oCAAgB,GAAhB,EAAqBuB,MAArB,CAAR,CAAH;AACD;;AArBH,kBAuBMvB,GAAG,CAACyD,MAAJ,GAAa9D,cAAb,IAA+B2B,IAAI,KAAKY,yBAAUC,KAvBxD;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAwBkBzB,WAAW,CAAC;AACxBX,cAAAA,MAAM,EAAE,MADgB;AAExBC,cAAAA,GAAG,EAAE4C,OAFmB;AAGxBzC,cAAAA,WAAW,EAAXA,WAHwB;AAIxBC,cAAAA,IAAI,EAAEgD,IAAI,CAACC,SAAL,CAAe;AAAC6C,gBAAAA,CAAC,EAAE3E;AAAJ,eAAf,CAJkB;AAKxBlB,cAAAA,YAAY,EAAZA;AALwB,aAAD,CAxB7B;;AAAA;AAwBI8F,YAAAA,KAxBJ;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAgCkBzF,WAAW,CAAC;AAACV,cAAAA,GAAG,EAAHA,GAAD;AAAMG,cAAAA,WAAW,EAAXA,WAAN;AAAmBE,cAAAA,YAAY,EAAZA;AAAnB,aAAD,CAhC7B;;AAAA;AAgCI8F,YAAAA,KAhCJ;;AAAA;AAoCSC,YAAAA,UApCT,GAoCuBb,OAAO,CAACpE,IAAR,CAAakF,SAAb,CAAuBC,MAAvB,CAA8B,CAA9B,CApCvB,CAoCSF,UApCT;AAqCQG,YAAAA,KArCR,GAqCgBH,UAAU,CAACI,SAAX,CAAqB,UAAAC,CAAC;AAAA,qBAAIA,CAAC,CAACV,SAAF,KAAgBA,SAApB;AAAA,aAAtB,CArChB;AAsCEK,YAAAA,UAAU,CAACG,KAAD,CAAV,GAAoBJ,KAApB;AAtCF,8CAuCS,IAvCT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA0CeO,iB;;;;;iFAAf,yBAEEhF,QAFF,EAGEiB,WAHF,EAIEzC,OAJF;AAAA;AAAA;AAAA;AAAA;AAAA;AACGyG,YAAAA,QADH,SACGA,QADH,EACaC,KADb,SACaA,KADb;AAMQC,YAAAA,QANR,GAMmBF,QAAQ,CAAC1D,GAAT,CAAa,UAAAsC,OAAO;AAAA,qBACnCD,gBAAgB,CAACC,OAAD,EAAUqB,KAAV,EAAiBjE,WAAjB,EAA8BjB,QAA9B,EAAwCxB,OAAxC,CADmB;AAAA,aAApB,CANnB;AAAA;AAAA,mBASe4G,OAAO,CAACC,GAAR,CAAYF,QAAZ,CATf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAYeG,e;;;;;+EAAf,2BAEErE,WAFF;AAAA;;AAAA;AAAA;AAAA;AAAA;AACGgE,YAAAA,QADH,UACGA,QADH,EACaM,eADb,UACaA,eADb,EAC8BL,KAD9B,UAC8BA,KAD9B;AAIQR,YAAAA,UAJR,GAI4D,EAJ5D;AAKSE,YAAAA,MALT,GAKmBW,eAAe,CAACC,MAAhB,CAAuBC,QAL1C,CAKSb,MALT;AAAA,mDAMsBA,MANtB;;AAAA;AAAA;AAAA,oBAMac,KANb;;AAOI,iDAAsBrE,MAAM,CAACsE,IAAP,CAAYD,KAAK,CAACE,cAAlB,CAAtB,oCAAyD;AAAA;;AAApD,sBAAMC,OAAO,oBAAb;AACH,sBAAMxB,SAAS,4BAAGqB,KAAK,CAACE,cAAN,CAAqBC,OAArB,CAAH,0DAAG,sBAA+BC,IAAjD;;AACA,sBAAIzB,SAAJ,EAAe;AACb,wBAAMR,OAAO,GAAGoB,QAAQ,CAACc,IAAT,CAAc,UAAAhB,CAAC;AAAA,6BAAIA,CAAC,CAACiB,EAAF,KAASN,KAAK,CAACF,MAAN,CAAaS,MAA1B;AAAA,qBAAf,CAAhB;;AACA,wBAAIpC,OAAO,CAACpE,IAAR,CAAakF,SAAb,IAA0Bd,OAAO,CAACjE,IAAR,KAAiBY,yBAAU0F,OAAzD,EAAkE;AAEhExB,sBAAAA,UAAU,CAACyB,IAAX,CAAgB;AAAC9B,wBAAAA,SAAS,EAATA,SAAD;AAAYR,wBAAAA,OAAO,EAAPA;AAAZ,uBAAhB;AACD;AACF;AACF;AAhBL;;AAME,kEAA4B;AAAA;AAW3B;AAjBH;AAAA;AAAA;AAAA;AAAA;;AAmBQuC,YAAAA,kBAnBR,GAmBoE,EAnBpE;;AAAA;AAoBO,kBAAMC,CAAC,mBAAP;;AACH,kBACE,CAACD,kBAAkB,CAACL,IAAnB,CACC;AAAA,oBAAE1B,SAAF,UAAEA,SAAF;AAAA,oBAAaR,OAAb,UAAaA,OAAb;AAAA,uBAA0BQ,SAAS,KAAKgC,CAAC,CAAChC,SAAhB,IAA6BR,OAAO,KAAKwC,CAAC,CAACxC,OAArE;AAAA,eADD,CADH,EAIE;AACAuC,gBAAAA,kBAAkB,CAACD,IAAnB,CAAwBE,CAAxB;AACD;AA3BL;;AAoBE,wCAAgB3B,UAAhB,mCAA4B;AAAA;AAQ3B;;AAEKS,YAAAA,QA9BR,GA8BmBiB,kBAAkB,CAAC7E,GAAnB,CAAuB;AAAA,kBAAE8C,SAAF,UAAEA,SAAF;AAAA,kBAAaR,OAAb,UAAaA,OAAb;AAAA,qBACtCO,eAAe,CAACC,SAAD,EAAYR,OAAZ,EAAqBqB,KAArB,EAA4BjE,WAA5B,CADuB;AAAA,aAAvB,CA9BnB;AAAA;AAAA,mBAiCemE,OAAO,CAACC,GAAR,CAAYF,QAAZ,CAjCf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAqCsBmB,Q;;;;;wEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLC,YAAAA,UADK,UACLA,UADK,EAELvG,QAFK,UAELA,QAFK,EAGLiB,WAHK,UAGLA,WAHK,EAILzC,OAJK,UAILA,OAJK,EAKLgI,WALK,UAKLA,WALK,EAMLC,SANK,UAMLA,SANK;AAeCvD,YAAAA,kBAfD,GAesB,oCAftB;AAgBCC,YAAAA,UAhBD,mCAiBCD,kBAAkB,CAACd,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDY,kBAjBtD,GAkBAjC,WAlBA;AAoBExC,YAAAA,WApBF,GAoBiB0E,UApBjB,CAoBE1E,WApBF;AAsBL,+BAAO8H,UAAP,EAAmB,oEAAnB;AAEA,+BAAOpD,UAAU,CAACf,UAAX,KAA0BC,4BAAaC,EAA9C,EAAkD,8BAAlD;AACA,+BAAOa,UAAU,CAACZ,UAAlB,EAA8B,wBAA9B;;AACA,gBAAI,CAACY,UAAU,CAAChC,OAAhB,EAAyB;AACvBgC,cAAAA,UAAU,CAAChC,OAAX,GAAqB,kCAAqBgC,UAAU,CAACZ,UAAhC,CAArB;AACD;;AAED,gBAAIiE,WAAW,IAAIC,SAAnB,EAA8B;AAC5B,iCAAOA,SAAP,EAAkB,gDAAlB;AACA,iCAAO,OAAOA,SAAP,KAAqB,UAA5B,EAAwC,gCAAxC;AACA,iCACE,OAAOD,WAAP,KAAuB,QAAvB,IAAmCA,WAAW,GAAG,CADnD,EAEE,yCAFF;AAID;;AAEKlI,YAAAA,GAvCD,aAuCU6E,UAAU,CAAChC,OAvCrB,qBAuCuCoF,UAvCvC;AAwCC5H,YAAAA,YAxCD,GAwCgB;AAACiD,cAAAA,WAAW,EAAEC,6BAAc6E,UAA5B;AAAwCC,cAAAA,KAAK,EAAEJ;AAA/C,aAxChB;AAAA;AAAA,mBAyCavH,WAAW,CAAM;AAACV,cAAAA,GAAG,EAAHA,GAAD;AAAME,cAAAA,OAAO,EAAPA,OAAN;AAAeC,cAAAA,WAAW,EAAXA,WAAf;AAA4BE,cAAAA,YAAY,EAAZA;AAA5B,aAAN,CAzCxB;;AAAA;AAyCC4C,YAAAA,GAzCD;;AA8CL,gBAAIiF,WAAJ,EAAiB;AAETI,cAAAA,UAFS,GAEIC,WAAW,2DAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BACP7B,iBAAiB,CAACzD,GAAD,EAAMvB,QAAN,EAAgBmD,UAAhB,EAA4B3E,OAA5B,CADV;;AAAA;AACvBsI,wBAAAA,OADuB;;AAE7B,4BAAIL,SAAS,IAAIK,OAAO,CAACC,IAAR,CAAa,UAAAzG,CAAC;AAAA,iCAAIA,CAAC,KAAK,IAAV;AAAA,yBAAd,CAAjB,EAAgD;AAC9CmG,0BAAAA,SAAS,CAAC,wBAASlF,GAAT,CAAD,CAAT;AACD;;AAJ4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAD,IAK3BiF,WAAW,GAAG,IALa,CAFf;;AAQfQ,cAAAA,eAAe,GAAG,2BAAM;AACtBC,gBAAAA,aAAa,CAACL,UAAD,CAAb;AACD,eAFD;AAGD;;AAEKM,YAAAA,aA3DD,GA2DiB3F,GAAG,CAACgE,eAAJ,CAAoBC,MAApB,CAA2BC,QAA3B,CAAoCb,MAApC,CAA2CuC,MAA3C,CACpB;AAAA,kBAAEvH,IAAF,UAAEA,IAAF;AAAA,qBAAYA,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,OAA3C;AAAA,aADoB,CA3DjB;AA8DCwH,YAAAA,iBA9DD,GA8DqBF,aAAa,CAAC3F,GAAd,CAAkB;AAAA,kBAAEiE,MAAF,UAAEA,MAAF;AAAA,qBAAcA,MAAM,CAACS,MAArB;AAAA,aAAlB,CA9DrB;AA+DL1E,YAAAA,GAAG,CAAC0D,QAAJ,CAAaoC,OAAb,CAAqB,UAAAxD,OAAO,EAAI;AAC9B,kBAAIuD,iBAAiB,CAAC3E,QAAlB,CAA2BoB,OAAO,CAACmC,EAAnC,CAAJ,EAA4C;AAC1C,0CAAiBkB,aAAa,CAACnB,IAAd,CAAmB;AAAA,sBAAEP,MAAF,UAAEA,MAAF;AAAA,yBAAcA,MAAM,CAACS,MAAP,KAAkBpC,OAAO,CAACmC,EAAxC;AAAA,iBAAnB,CAAjB;AAAA,oBAAOR,MAAP,uBAAOA,MAAP;;AACA3B,gBAAAA,OAAO,CAACvE,MAAR,GAAiB,SAAjB;;AAEA,oBAAI,CAACuE,OAAO,CAAC/D,SAAT,IAAsB0F,MAAM,CAACzF,OAAP,CAAeuH,OAAzC,EAAkD;AAChDzD,kBAAAA,OAAO,CAAC/D,SAAR,GAAoB0F,MAAM,CAACzF,OAAP,CAAeuH,OAAnC;AACD;AACF;AACF,aATD;AA/DK;AAAA,mBA2ECtC,iBAAiB,CAACzD,GAAD,EAAMvB,QAAN,EAAgBmD,UAAhB,EAA4B3E,OAA5B,CA3ElB;;AAAA;AAAA;AAAA,mBA8EC8G,eAAe,CAAC/D,GAAD,EAAM4B,UAAN,CA9EhB;;AAAA;AA+ECoE,YAAAA,GA/ED,mCA+EW,wBAAShG,GAAT,CA/EX,GA+E6B;AAACyF,cAAAA,eAAe,EAAfA;AAAD,aA/E7B;AAiFCQ,YAAAA,UAjFD,GAiFcD,GAAG,CAAC3C,MAAJ,CAAWuC,MAAX,CAAkB,UAAAzB,KAAK,EAAI;AAC5C,kBAAM+B,SAAS,GAAG/B,KAAK,CAACgC,KAAN,CAAYD,SAAZ,IAAyB,EAA3C;AACA,qBAAOA,SAAS,CAAChF,QAAV,CAAmB,MAAnB,CAAP;AACD,aAHkB,CAjFd;;AAAA,kBAuFD+E,UAAU,CAACzF,MAAX,IAAqB4F,MAAM,CAACC,QAA5B,IAAwC,CAACC,QAAQ,CAACC,KAAT,CAAeC,KAAf,CAAqB,YAArB,CAvFxC;AAAA;AAAA;AAAA;;AAyFGC,YAAAA,IAzFH,GAyFU,IAAIJ,QAAJ,CACX,OADW,EAEX,6FAFW,CAzFV;AAAA;AAAA,mBA6FGI,IAAI,CAACC,IAAL,GAAYC,IAAZ,CAAiB,UAAA3E,CAAC;AAAA,qBAAIsE,QAAQ,CAACC,KAAT,CAAeK,GAAf,CAAmB5E,CAAnB,CAAJ;AAAA,aAAlB,CA7FH;;AAAA;AAAA,+CAgGEgE,GAhGF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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.
|
|
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.
|
|
61
|
+
return (0, _h3Js.cellToParent)(i, resolution);
|
|
62
62
|
}))) : h3Indices;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
function tileToBoundingBox(index) {
|
|
66
|
-
var coordinates = (0, _h3Js.
|
|
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.
|
|
128
|
-
indices = (0, _h3Js.
|
|
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.
|
|
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.
|
|
168
|
-
var i = (0, _h3Js.
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;
|
|
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
|
|
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 {
|
|
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 =
|
|
32
|
-
return oversample ? [...new Set(h3Indices.map(i =>
|
|
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 =
|
|
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 =
|
|
75
|
-
indices =
|
|
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
|
|
107
|
+
return getResolution(i);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
getParentIndex(index) {
|
|
111
|
-
const resolution =
|
|
112
|
-
const i =
|
|
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","
|
|
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":";AAAA,SAAQA,eAAR,QAA8B,kBAA9B;AAEA,OAAOC,qBAAP,MAAkC,mCAAlC;AACA,OAAOC,sBAAP,MAAmC,oCAAnC;AACAF,eAAe,CAAC,CAACC,qBAAD,EAAwBC,sBAAxB,CAAD,CAAf;AAGA,SAAQC,SAAR,QAAuD,qBAAvD;;AAEA,SAASC,kBAAT,CAA4BC,KAA5B,EAAqD;AACnD,SAAOA,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,MAAME,YAAsD,GAAG;AAC7DC,EAAAA,mBAAmB,EAAE;AADwC,CAA/D;AAaA,eAAe,MAAMC,qBAAN,SAGLN,SAHK,
|
|
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
|
@@ -21,7 +21,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
21
21
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return i=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function jA(e,r){if(e){if(typeof e=="string")return o2(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 o2(e,r)}}function o2(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 Xt(e,r){var t;if(r===void 0){var n=i2(e),c;try{for(n.s();!(c=n.n()).done;){var i=c.value;i!=null&&(t>i||t===void 0&&i>=i)&&(t=i)}}catch(p){n.e(p)}finally{n.f()}}else{var f=-1,s=i2(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 Et(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?zr:Da(c);n>t;){if(n-t>600){var i=n-t+1,f=r-t+1,s=Math.log(i),u=.5*Math.exp(2*s/3),M=.5*Math.sqrt(s*u*(i-u)/i)*(f-i/2<0?-1:1),p=Math.max(t,Math.floor(r-f*u/i+M)),A=Math.min(n,Math.floor(r+(i-f)*u/i+M));Et(e,r,p,A,c)}var h=e[r],g=t,m=n;for(gr(e,t,r),c(e[n],h)>0&&gr(e,t,n);g<m;){for(gr(e,g,m),++g,--m;c(e[g],h)<0;)++g;for(;c(e[m],h)>0;)--m}c(e[t],h)===0?gr(e,t,m):(++m,gr(e,m,n)),m<=r&&(t=m+1),r<=m&&(n=m-1)}return e}function gr(e,r,t){var n=e[r];e[r]=e[t],e[t]=n}function Pt(e,r,t){if(e=Float64Array.from(Sa(e,t)),!!(n=e.length)){if((r=+r)<=0||n<2)return Xt(e);if(r>=1)return wt(e);var n,c=(n-1)*r,i=Math.floor(c),f=wt(Et(e,i).subarray(0,i+1)),s=Xt(e.subarray(i+1));return f+(s-f)*(c-i)}}function Ua(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ar;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,i=Math.floor(c),f=+t(e[i],i,e),s=+t(e[i+1],i+1,e);return f+(s-f)*(c-i)}}function Rt(e,r){return Pt(e,.5,r)}function _t(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,i=new Array(c);++n<c;)i[n]=e+n*t;return i}function Dt(e,r,t){e.prototype=r.prototype=t,t.constructor=e}function Ha(e,r){var t=Object.create(e.prototype);for(var n in r)t[n]=r[n];return t}function yr(){}var vr=.7;var Ft=1/vr;var Ce="\\s*([+-]?\\d+)\\s*",Or="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",h1="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",HA=/^#([0-9a-f]{3,8})$/,YA=new RegExp("^rgb\\(".concat(Ce,",").concat(Ce,",").concat(Ce,"\\)$")),VA=new RegExp("^rgb\\(".concat(h1,",").concat(h1,",").concat(h1,"\\)$")),GA=new RegExp("^rgba\\(".concat(Ce,",").concat(Ce,",").concat(Ce,",").concat(Or,"\\)$")),KA=new RegExp("^rgba\\(".concat(h1,",").concat(h1,",").concat(h1,",").concat(Or,"\\)$")),QA=new RegExp("^hsl\\(".concat(Or,",").concat(h1,",").concat(h1,"\\)$")),JA=new RegExp("^hsla\\(".concat(Or,",").concat(h1,",").concat(h1,",").concat(Or,"\\)$")),f2={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};Dt(yr,Q1,{copy:function(r){return Object.assign(new this.constructor,this,r)},displayable:function(){return this.rgb().displayable()},hex:s2,formatHex:s2,formatHex8:ZA,formatHsl:$A,formatRgb:u2,toString:u2});function s2(){return this.rgb().formatHex()}function ZA(){return this.rgb().formatHex8()}function $A(){return A2(this).formatHsl()}function u2(){return this.rgb().formatRgb()}function Q1(e){var r,t;return e=(e+"").trim().toLowerCase(),(r=HA.exec(e))?(t=r[1].length,r=parseInt(r[1],16),t===6?l2(r):t===3?new j0(r>>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):t===8?kt(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):t===4?kt(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=YA.exec(e))?new j0(r[1],r[2],r[3],1):(r=VA.exec(e))?new j0(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=GA.exec(e))?kt(r[1],r[2],r[3],r[4]):(r=KA.exec(e))?kt(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=QA.exec(e))?p2(r[1],r[2]/100,r[3]/100,1):(r=JA.exec(e))?p2(r[1],r[2]/100,r[3]/100,r[4]):f2.hasOwnProperty(e)?l2(f2[e]):e==="transparent"?new j0(NaN,NaN,NaN,0):null}function l2(e){return new j0(e>>16&255,e>>8&255,e&255,1)}function kt(e,r,t,n){return n<=0&&(e=r=t=NaN),new j0(e,r,t,n)}function e4(e){return e instanceof yr||(e=Q1(e)),e?(e=e.rgb(),new j0(e.r,e.g,e.b,e.opacity)):new j0}function k1(e,r,t,n){return arguments.length===1?e4(e):new j0(e,r,t,n??1)}function j0(e,r,t,n){this.r=+e,this.g=+r,this.b=+t,this.opacity=+n}Dt(j0,k1,Ha(yr,{brighter:function(r){return r=r==null?Ft:Math.pow(Ft,r),new j0(this.r*r,this.g*r,this.b*r,this.opacity)},darker:function(r){return r=r==null?vr:Math.pow(vr,r),new j0(this.r*r,this.g*r,this.b*r,this.opacity)},rgb:function(){return this},clamp:function(){return new j0(fe(this.r),fe(this.g),fe(this.b),jt(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:M2,formatHex:M2,formatHex8:r4,formatRgb:d2,toString:d2}));function M2(){return"#".concat(oe(this.r)).concat(oe(this.g)).concat(oe(this.b))}function r4(){return"#".concat(oe(this.r)).concat(oe(this.g)).concat(oe(this.b)).concat(oe((isNaN(this.opacity)?1:this.opacity)*255))}function d2(){var e=jt(this.opacity);return"".concat(e===1?"rgb(":"rgba(").concat(fe(this.r),", ").concat(fe(this.g),", ").concat(fe(this.b)).concat(e===1?")":", ".concat(e,")"))}function jt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function fe(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function oe(e){return e=fe(e),(e<16?"0":"")+e.toString(16)}function p2(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 A2(e){if(e instanceof i1)return new i1(e.h,e.s,e.l,e.opacity);if(e instanceof yr||(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),i=Math.max(r,t,n),f=NaN,s=i-c,u=(i+c)/2;return s?(r===i?f=(t-n)/s+(t<n)*6:t===i?f=(n-r)/s+2:f=(r-t)/s+4,s/=u<.5?i+c:2-i-c,f*=60):s=u>0&&u<1?0:f,new i1(f,s,u,e.opacity)}function h2(e,r,t,n){return arguments.length===1?A2(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}Dt(i1,h2,Ha(yr,{brighter:function(r){return r=r==null?Ft:Math.pow(Ft,r),new i1(this.h,this.s,this.l*r,this.opacity)},darker:function(r){return r=r==null?vr:Math.pow(vr,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,i=2*n-c;return new j0(Ya(r>=240?r-240:r+120,i,c),Ya(r,i,c),Ya(r<120?r+240:r-120,i,c),this.opacity)},clamp:function(){return new i1(b2(this.h),It(this.s),It(this.l),jt(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=jt(this.opacity);return"".concat(r===1?"hsl(":"hsla(").concat(b2(this.h),", ").concat(It(this.s)*100,"%, ").concat(It(this.l)*100,"%").concat(r===1?")":", ".concat(r,")"))}}));function b2(e){return e=(e||0)%360,e<0?e+360:e}function It(e){return Math.max(0,Math.min(1,e||0))}function Ya(e,r,t){return(e<60?r+(t-r)*e/60:e<180?t:e<240?r+(t-r)*(240-e)/60:r)*255}var Ga=y(X0(),1);function R0(e,r){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(r).domain(e);break}return this}function t4(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=n4(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.
|
|
22
22
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return i=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function n4(e,r){if(e){if(typeof e=="string")return m2(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 m2(e,r)}}function m2(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 Va=Symbol("implicit");function se(){var e=new We,r=[],t=[],n=Va;function c(i){var f=e.get(i);if(f===void 0){if(n!==Va)return n;e.set(i,f=r.push(i)-1)}return t[f%t.length]}return c.domain=function(i){if(!arguments.length)return r.slice();r=[],e=new We;var f=t4(i),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(i){return arguments.length?(t=Array.from(i),c):t.slice()},c.unknown=function(i){return arguments.length?(n=i,c):n},c.copy=function(){return se(r,t).unknown(n)},R0.apply(c,arguments),c}function Ut(){var e=se().unknown(void 0),r=e.domain,t=e.range,n=0,c=1,i,f,s=!1,u=0,M=0,p=.5;delete e.unknown;function A(){var h=r().length,g=c<n,m=g?c:n,T=g?n:c;i=(T-m)/Math.max(1,h-u+M*2),s&&(i=Math.floor(i)),m+=(T-m-i*(h-u))*p,f=i*(1-u),s&&(m=Math.round(m),f=Math.round(f));var L=_t(h).map(function(O){return m+i*O});return t(g?L.reverse():L)}return e.domain=function(h){return arguments.length?(r(h),A()):r()},e.range=function(h){var g,m;return arguments.length?(g=h,m=(0,Ga.default)(g,2),n=m[0],c=m[1],n=+n,c=+c,A()):[n,c]},e.rangeRound=function(h){var g,m;return g=h,m=(0,Ga.default)(g,2),n=m[0],c=m[1],n=+n,c=+c,s=!0,A()},e.bandwidth=function(){return f},e.step=function(){return i},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 Ut(r(),[n,c]).round(s).paddingInner(u).paddingOuter(M).align(p)},R0.apply(A(),arguments)}function z2(e){var r=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return z2(r())},e}function Ka(){return z2(Ut.apply(null,arguments).paddingInner(1))}var S2=y(ae(),1);function Qa(e,r,t,n,c){var i=e*e,f=i*e;return((1-3*e+3*i-f)*r+(4-6*i+3*f)*t+(1+3*e+3*i-3*f)*n+f*c)/6}function g2(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],i=e[n+1],f=n>0?e[n-1]:2*c-i,s=n<r-1?e[n+2]:2*i-c;return Qa((t-n/r)*r,f,c,i,s)}}function v2(e){var r=e.length;return function(t){var n=Math.floor(((t%=1)<0?++t:t)*r),c=e[(n+r-1)%r],i=e[n%r],f=e[(n+1)%r],s=e[(n+2)%r];return Qa((t-n/r)*r,c,i,f,s)}}var Lr=function(e){return function(){return e}};function a4(e,r){return function(t){return e+t*r}}function c4(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 O2(e){return(e=+e)==1?Ht:function(r,t){return t-r?c4(r,t,e):Lr(isNaN(r)?t:r)}}function Ht(e,r){var t=r-e;return t?a4(e,t):Lr(isNaN(e)?r:e)}var Ja=function e(r){var t=O2(r);function n(c,i){var f=t((c=k1(c)).r,(i=k1(i)).r),s=t(c.g,i.g),u=t(c.b,i.b),M=Ht(c.opacity,i.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 y2(e){return function(r){var t=r.length,n=new Array(t),c=new Array(t),i=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,i[f]=s.b||0;return n=e(n),c=e(c),i=e(i),s.opacity=1,function(u){return s.r=n(u),s.g=c(u),s.b=i(u),s+""}}}var $5=y2(g2),eg=y2(v2);function L2(e,r){r||(r=[]);var t=e?Math.min(r.length,e.length):0,n=r.slice(),c;return function(i){for(c=0;c<t;++c)n[c]=e[c]*(1-i)+r[c]*i;return n}}function N2(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function q2(e,r){var t=r?r.length:0,n=e?Math.min(t,e.length):0,c=new Array(n),i=new Array(t),f;for(f=0;f<n;++f)c[f]=ue(e[f],r[f]);for(;f<t;++f)i[f]=r[f];return function(s){for(f=0;f<n;++f)i[f]=c[f](s);return i}}function T2(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}}var Za=y(ae(),1);function x2(e,r){var t={},n={},c;(e===null||(0,Za.default)(e)!=="object")&&(e={}),(r===null||(0,Za.default)(r)!=="object")&&(r={});for(c in r)c in e?t[c]=ue(e[c],r[c]):n[c]=r[c];return function(i){for(c in t)n[c]=t[c](i);return n}}var ec=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,$a=new RegExp(ec.source,"g");function i4(e){return function(){return e}}function o4(e){return function(r){return e(r)+""}}function W2(e,r){var t=ec.lastIndex=$a.lastIndex=0,n,c,i,f=-1,s=[],u=[];for(e=e+"",r=r+"";(n=ec.exec(e))&&(c=$a.exec(r));)(i=c.index)>t&&(i=r.slice(t,i),s[f]?s[f]+=i:s[++f]=i),(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=$a.lastIndex;return t<r.length&&(i=r.slice(t),s[f]?s[f]+=i:s[++f]=i),s.length<2?u[0]?o4(u[0].x):i4(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 ue(e,r){var t=(0,S2.default)(r),n;return r==null||t==="boolean"?Lr(r):(t==="number"?J1:t==="string"?(n=Q1(r))?(r=n,Ja):W2:r instanceof Q1?Ja:r instanceof Date?T2:N2(r)?L2:Array.isArray(r)?q2:typeof r.valueOf!="function"&&typeof r.toString!="function"||isNaN(r)?x2:J1)(e,r)}function rc(e,r){return e=+e,r=+r,function(t){return Math.round(e*(1-t)+r*t)}}function tc(e){return function(){return e}}function nc(e){return+e}var B2=[0,1];function o1(e){return e}function ac(e,r){return(r-=e=+e)?function(t){return(t-e)/r}:tc(isNaN(r)?NaN:.5)}function f4(e,r){var t;return e>r&&(t=e,e=r,r=t),function(n){return Math.max(e,Math.min(r,n))}}function s4(e,r,t){var n=e[0],c=e[1],i=r[0],f=r[1];return c<n?(n=ac(c,n),i=t(f,i)):(n=ac(n,c),i=t(i,f)),function(s){return i(n(s))}}function u4(e,r,t){var n=Math.min(e.length,r.length)-1,c=new Array(n),i=new Array(n),f=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),r=r.slice().reverse());++f<n;)c[f]=ac(e[f],e[f+1]),i[f]=t(r[f],r[f+1]);return function(s){var u=D1(e,s,1,n)-1;return i[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 Nr(){var e=B2,r=B2,t=ue,n,c,i,f=o1,s,u,M;function p(){var h=Math.min(e.length,r.length);return f!==o1&&(f=f4(e[0],e[h-1])),s=h>2?u4:s4,u=M=null,A}function A(h){return h==null||isNaN(h=+h)?i:(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,nc),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=rc,p()},A.clamp=function(h){return arguments.length?(f=h?!0:o1,p()):f!==o1},A.interpolate=function(h){return arguments.length?(t=h,p()):t},A.unknown=function(h){return arguments.length?(i=h,A):i},function(h,g){return n=h,c=g,p()}}function cc(){return Nr()(o1,o1)}function C2(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function le(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 m1(e){return e=le(Math.abs(e)),e?e[1]:NaN}function w2(e,r){return function(t,n){for(var c=t.length,i=[],f=0,s=e[0],u=0;c>0&&s>0&&(u+s+1>n&&(s=Math.max(1,n-u)),i.push(t.substring(c-=s,c+s)),!((u+=s+1)>n));)s=e[f=(f+1)%e.length];return i.reverse().join(r)}}function X2(e){return function(r){return r.replace(/[0-9]/g,function(t){return e[+t]})}}var l4=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function z1(e){if(!(r=l4.exec(e)))throw new Error("invalid format: "+e);var r;return new Yt({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]})}z1.prototype=Yt.prototype;function Yt(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+""}Yt.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 E2(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 ic;function P2(e,r){var t=le(e,r);if(!t)return e+"";var n=t[0],c=t[1],i=c-(ic=Math.max(-8,Math.min(8,Math.floor(c/3)))*3)+1,f=n.length;return i===f?n:i>f?n+new Array(i-f+1).join("0"):i>0?n.slice(0,i)+"."+n.slice(i):"0."+new Array(1-i).join("0")+le(e,Math.max(0,r+i-1))[0]}function oc(e,r){var t=le(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 fc={"%":function(r,t){return(r*100).toFixed(t)},b:function(r){return Math.round(r).toString(2)},c:function(r){return r+""},d:C2,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 oc(r*100,t)},r:oc,s:P2,X:function(r){return Math.round(r).toString(16).toUpperCase()},x:function(r){return Math.round(r).toString(16)}};function sc(e){return e}var R2=Array.prototype.map,_2=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function D2(e){var r=e.grouping===void 0||e.thousands===void 0?sc:w2(R2.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+"",i=e.numerals===void 0?sc:X2(R2.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=z1(A);var h=A.fill,g=A.align,m=A.sign,T=A.symbol,L=A.zero,O=A.width,N=A.comma,W=A.precision,C=A.trim,S=A.type;S==="n"?(N=!0,S="g"):fc[S]||(W===void 0&&(W=12),C=!0,S="g"),(L||h==="0"&&g==="=")&&(L=!0,h="0",g="=");var E=T==="$"?t:T==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():"",H=T==="$"?n:/[%p]/.test(S)?f:"",F=fc[S],t0=/[defgprs%]/.test(S);W=W===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,W)):Math.max(0,Math.min(20,W));function Q(D){var G=E,Z=H,Y,B,x;if(S==="c")Z=F(D)+Z,D="";else{D=+D;var R=D<0||1/D<0;if(D=isNaN(D)?u:F(Math.abs(D),W),C&&(D=E2(D)),R&&+D==0&&m!=="+"&&(R=!1),G=(R?m==="("?m:s:m==="-"||m==="("?"":m)+G,Z=(S==="s"?_2[8+ic/3]:"")+Z+(R&&m==="("?")":""),t0){for(Y=-1,B=D.length;++Y<B;)if(x=D.charCodeAt(Y),48>x||x>57){Z=(x===46?c+D.slice(Y+1):D.slice(Y))+Z,D=D.slice(0,Y);break}}}N&&!L&&(D=r(D,1/0));var k=G.length+D.length+Z.length,I=k<O?new Array(O-k+1).join(h):"";switch(N&&L&&(D=r(I+D,I.length?O-Z.length:1/0),I=""),g){case"<":D=G+D+Z+I;break;case"=":D=G+I+D+Z;break;case"^":D=I.slice(0,k=I.length>>1)+G+D+Z+I.slice(k);break;default:D=I+G+D+Z;break}return i(D)}return Q.toString=function(){return A+""},Q}function p(A,h){var g=M((A=z1(A),A.type="f",A)),m=Math.max(-8,Math.min(8,Math.floor(m1(h)/3)))*3,T=Math.pow(10,-m),L=_2[8+m/3];return function(O){return g(T*O)+L}}return{format:M,formatPrefix:p}}var Vt,I1,Gt;uc({thousands:",",grouping:[3],currency:["$",""]});function uc(e){return Vt=D2(e),I1=Vt.format,Gt=Vt.formatPrefix,Vt}function lc(e){return Math.max(0,-m1(Math.abs(e)))}function Mc(e,r){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(m1(r)/3)))*3-m1(Math.abs(e)))}function dc(e,r){return e=Math.abs(e),r=Math.abs(r)-e,Math.max(0,m1(r)-m1(e))+1}function pc(e,r,t,n){var c=ja(e,r,t),i;switch(n=z1(n??",f"),n.type){case"s":{var f=Math.max(Math.abs(e),Math.abs(r));return n.precision==null&&!isNaN(i=Mc(c,f))&&(n.precision=i),Gt(n,f)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(i=dc(c,Math.max(Math.abs(e),Math.abs(r))))&&(n.precision=i-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(i=lc(c))&&(n.precision=i-(n.type==="%")*2);break}}return I1(n)}function qr(e){var r=e.domain;return e.ticks=function(t){var n=r();return ie(n[0],n[n.length-1],t??10)},e.tickFormat=function(t,n){var c=r();return pc(c[0],c[c.length-1],t??10,n)},e.nice=function(t){t==null&&(t=10);var n=r(),c=0,i=n.length-1,f=n[c],s=n[i],u,M,p=10;for(s<f&&(M=f,f=s,s=M,M=c,c=i,i=M);p-- >0;){if(M=Ct(f,s,t),M===u)return n[c]=f,n[i]=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 Me(){var e=cc();return e.copy=function(){return we(e,Me())},R0.apply(e,arguments),qr(e)}function bc(e,r){e=e.slice();var t=0,n=e.length-1,c=e[t],i=e[n],f;return i<c&&(f=t,t=n,n=f,f=c,c=i,i=f),e[t]=r.floor(c),e[n]=r.ceil(i),e}function k2(e){return Math.log(e)}function I2(e){return Math.exp(e)}function M4(e){return-Math.log(-e)}function d4(e){return-Math.exp(-e)}function p4(e){return isFinite(e)?+("1e"+e):e<0?0:e}function b4(e){return e===10?p4:e===Math.E?Math.exp:function(r){return Math.pow(e,r)}}function A4(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 F2(e){return function(r,t){return-e(-r,t)}}function h4(e){var r=e(k2,I2),t=r.domain,n=10,c,i;function f(){return c=A4(n),i=b4(n),t()[0]<0?(c=F2(c),i=F2(i),e(M4,d4)):e(k2,I2),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),m=c(p),T,L,O=s==null?10:+s,N=[];if(!(n%1)&&m-g<O){if(g=Math.floor(g),m=Math.ceil(m),M>0){for(;g<=m;++g)for(T=1;T<n;++T)if(L=g<0?T/i(-g):T*i(g),!(L<M)){if(L>p)break;N.push(L)}}else for(;g<=m;++g)for(T=n-1;T>=1;--T)if(L=g>0?T/i(-g):T*i(g),!(L<M)){if(L>p)break;N.push(L)}N.length*2<O&&(N=ie(M,p,O))}else N=ie(g,m,Math.min(m-g,O)).map(i);return A?N.reverse():N},r.tickFormat=function(s,u){if(s==null&&(s=10),u==null&&(u=n===10?"s":","),typeof u!="function"&&(!(n%1)&&(u=z1(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/i(Math.round(c(p)));return A*n<n-.5&&(A*=n),A<=M?u(p):""}},r.nice=function(){return t(bc(t(),{floor:function(u){return i(Math.floor(c(u)))},ceil:function(u){return i(Math.ceil(c(u)))}}))},r}function Tr(){var e=h4(Nr()).domain([1,10]);return e.copy=function(){return we(e,Tr()).base(e.base())},R0.apply(e,arguments),e}function j2(e){return function(r){return r<0?-Math.pow(-r,e):Math.pow(r,e)}}function m4(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function z4(e){return e<0?-e*e:e*e}function g4(e){var r=e(o1,o1),t=1;function n(){return t===1?e(o1,o1):t===.5?e(m4,z4):e(j2(t),j2(1/t))}return r.exponent=function(c){return arguments.length?(t=+c,n()):t},qr(r)}function Kt(){var e=g4(Nr());return e.copy=function(){return we(e,Kt()).exponent(e.exponent())},R0.apply(e,arguments),e}function Ac(){return Kt.apply(null,arguments).exponent(.5)}function v4(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=O4(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.
|
|
23
23
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return i=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function O4(e,r){if(e){if(typeof e=="string")return U2(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 U2(e,r)}}function U2(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 xr(){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]=Ua(e,f/s);return i}function i(f){return f==null||isNaN(f=+f)?n:r[D1(t,f)]}return i.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]]},i.domain=function(f){if(!arguments.length)return e.slice();e=[];var s=v4(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(B0),c()},i.range=function(f){return arguments.length?(r=Array.from(f),c()):r.slice()},i.unknown=function(f){return arguments.length?(n=f,i):n},i.quantiles=function(){return t.slice()},i.copy=function(){return xr().domain(e).range(r).unknown(n)},R0.apply(i,arguments)}var H2=y(X0(),1);function Wr(){var e=0,r=1,t=1,n=[.5],c=[0,1],i;function f(u){return u!=null&&u<=u?c[D1(n,u,0,t)]:i}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=(0,H2.default)(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&&(i=u),f},f.thresholds=function(){return n.slice()},f.copy=function(){return Wr().domain([e,r]).range(c).unknown(i)},R0.apply(qr(f),arguments)}function de(){var e=[.5],r=[0,1],t,n=1;function c(i){return i!=null&&i<=i?r[D1(e,i,0,n)]:t}return c.domain=function(i){return arguments.length?(e=Array.from(i),n=Math.min(e.length,r.length-1),c):e.slice()},c.range=function(i){return arguments.length?(r=Array.from(i),n=Math.min(e.length,r.length-1),c):r.slice()},c.invertExtent=function(i){var f=r.indexOf(i);return[e[f-1],e[f]]},c.unknown=function(i){return arguments.length?(t=i,c):t},c.copy=function(){return de().domain(e).range(r).unknown(t)},R0.apply(c,arguments)}var di=y(J2()),Ke=y($2()),pi=y(pe()),xn=y(_1());var Ps=y(Te()),Rs=y(S0()),_s=y(E0()),Wc=y(V1()),Ds=y(I0()),ks=y(F0()),wr=y(P0()),cn=y(T0()),Is=y(mc());var Ms=y(ne()),yc=y(G1());var $0=y(S0()),e1=y(E0());function be(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 N4=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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}(),Sr=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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 i=N4.read(c,c.readVarint()+c.pos),f=i.key,s=i.value;n[f]=s}}}]),e}(),zc=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(e,null,[{key:"read",value:function(t,n){var c=t.readFields(e._readField,{value:[],size:0},n),i=c.value,f=c.size;return{value:new Float32Array(i),size:f}}},{key:"_readField",value:function(t,n,c){t===1?be(Float64Array,c,n):t===2&&(n.size=c.readVarint(!0))}}]),e}(),g1=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(e,null,[{key:"read",value:function(t,n){var c=t.readFields(e._readField,{value:[],size:0},n),i=c.value,f=c.size;return{value:new Uint32Array(i),size:f}}},{key:"_readField",value:function(t,n,c){t===1?c.readPackedVarint(n.value):t===2&&(n.size=c.readVarint(!0))}}]),e}(),gc=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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}(),q4=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&be(Float64Array,c,n)}}]),e}(),Br=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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=q4.read(c,c.readVarint()+c.pos))}}]),e}(),T4=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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=zc.read(c,c.readVarint()+c.pos);else if(t===2)n.globalFeatureIds=g1.read(c,c.readVarint()+c.pos);else if(t===3)n.featureIds=g1.read(c,c.readVarint()+c.pos);else if(t===4)n.properties.push(Sr.read(c,c.readVarint()+c.pos));else if(t===5){var i=Br.read(c,c.readVarint()+c.pos);n.numericProps[i.key]=i.value}else t===6&&n.fields.push(gc.read(c,c.readVarint()+c.pos))}}]),e}(),x4=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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=zc.read(c,c.readVarint()+c.pos);else if(t===2)n.pathIndices=g1.read(c,c.readVarint()+c.pos);else if(t===3)n.globalFeatureIds=g1.read(c,c.readVarint()+c.pos);else if(t===4)n.featureIds=g1.read(c,c.readVarint()+c.pos);else if(t===5)n.properties.push(Sr.read(c,c.readVarint()+c.pos));else if(t===6){var i=Br.read(c,c.readVarint()+c.pos);n.numericProps[i.key]=i.value}else t===7&&n.fields.push(gc.read(c,c.readVarint()+c.pos))}}]),e}(),W4=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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=zc.read(c,c.readVarint()+c.pos);else if(t===2)n.polygonIndices=g1.read(c,c.readVarint()+c.pos);else if(t===3)n.globalFeatureIds=g1.read(c,c.readVarint()+c.pos);else if(t===4)n.featureIds=g1.read(c,c.readVarint()+c.pos);else if(t===5)n.primitivePolygonIndices=g1.read(c,c.readVarint()+c.pos);else if(t===6)n.triangles=g1.read(c,c.readVarint()+c.pos);else if(t===7)n.properties.push(Sr.read(c,c.readVarint()+c.pos));else if(t===8){var i=Br.read(c,c.readVarint()+c.pos);n.numericProps[i.key]=i.value}else t===9&&n.fields.push(gc.read(c,c.readVarint()+c.pos))}}]),e}(),ts=function(){function e(){(0,$0.default)(this,e)}return(0,e1.default)(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=T4.read(c,c.readVarint()+c.pos):t===2?n.lines=x4.read(c,c.readVarint()+c.pos):t===3&&(n.polygons=W4.read(c,c.readVarint()+c.pos))}}]),e}();var us=y(ss());function Re(e,r){var t=new us.default(e),n=r.read(t);return n}var V4={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=(0,Ms.default)(yc.default.mark(function t(n,c){return yc.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",ls(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:ls,options:{}};function ls(e,r){if(!e)return null;var t=Re(e,ts);return t}var ds=V4;var Fs=y(Lc()),Xr=y(_1()),js=y(pe());var L0=1e-6,v1=typeof Float32Array<"u"?Float32Array:Array;var mO=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 G4(){var e=new v1(2);return v1!=Float32Array&&(e[0]=0,e[1]=0),e}function Nc(e,r,t){return e[0]=r[0]+t[0],e[1]=r[1]+t[1],e}function As(e,r){return e[0]=-r[0],e[1]=-r[1],e}function en(e,r,t,n){var c=r[0],i=r[1];return e[0]=c+n*(t[0]-c),e[1]=i+n*(t[1]-i),e}var zO=function(){var e=G4();return function(r,t,n,c,i,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],i(e,e,f),r[s]=e[0],r[s+1]=e[1];return r}}();function K4(){var e=new v1(3);return v1!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function hs(e,r,t){return e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function Q4(e,r,t){return e[0]=r[0]*t[0],e[1]=r[1]*t[1],e[2]=r[2]*t[2],e}function ms(e,r){return e[0]=-r[0],e[1]=-r[1],e[2]=-r[2],e}var zs=Q4;var gO=function(){var e=K4();return function(r,t,n,c,i,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],i(e,e,f),r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2];return r}}();function vs(e,r){var t=r[0],n=r[1],c=r[2],i=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],m=r[12],T=r[13],L=r[14],O=r[15],N=t*s-n*f,W=t*u-c*f,C=t*M-i*f,S=n*u-c*s,E=n*M-i*s,H=c*M-i*u,F=p*T-A*m,t0=p*L-h*m,Q=p*O-g*m,D=A*L-h*T,G=A*O-g*T,Z=h*O-g*L,Y=N*Z-W*G+C*D+S*Q-E*t0+H*F;return Y?(Y=1/Y,e[0]=(s*Z-u*G+M*D)*Y,e[1]=(c*G-n*Z-i*D)*Y,e[2]=(T*H-L*E+O*S)*Y,e[3]=(h*E-A*H-g*S)*Y,e[4]=(u*Q-f*Z-M*t0)*Y,e[5]=(t*Z-c*Q+i*t0)*Y,e[6]=(L*C-m*H-O*W)*Y,e[7]=(p*H-h*C+g*W)*Y,e[8]=(f*G-s*Q+M*F)*Y,e[9]=(n*Q-t*G-i*F)*Y,e[10]=(m*E-T*C+O*N)*Y,e[11]=(A*C-p*E-g*N)*Y,e[12]=(s*t0-f*D-u*F)*Y,e[13]=(t*D-n*t0+c*F)*Y,e[14]=(T*W-m*S-L*N)*Y,e[15]=(p*S-A*W+h*N)*Y,e):null}function rn(e,r,t){var n=r[0],c=r[1],i=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],m=r[11],T=r[12],L=r[13],O=r[14],N=r[15],W=t[0],C=t[1],S=t[2],E=t[3];return e[0]=W*n+C*s+S*A+E*T,e[1]=W*c+C*u+S*h+E*L,e[2]=W*i+C*M+S*g+E*O,e[3]=W*f+C*p+S*m+E*N,W=t[4],C=t[5],S=t[6],E=t[7],e[4]=W*n+C*s+S*A+E*T,e[5]=W*c+C*u+S*h+E*L,e[6]=W*i+C*M+S*g+E*O,e[7]=W*f+C*p+S*m+E*N,W=t[8],C=t[9],S=t[10],E=t[11],e[8]=W*n+C*s+S*A+E*T,e[9]=W*c+C*u+S*h+E*L,e[10]=W*i+C*M+S*g+E*O,e[11]=W*f+C*p+S*m+E*N,W=t[12],C=t[13],S=t[14],E=t[15],e[12]=W*n+C*s+S*A+E*T,e[13]=W*c+C*u+S*h+E*L,e[14]=W*i+C*M+S*g+E*O,e[15]=W*f+C*p+S*m+E*N,e}function Cr(e,r,t){var n=t[0],c=t[1],i=t[2],f,s,u,M,p,A,h,g,m,T,L,O;return r===e?(e[12]=r[0]*n+r[4]*c+r[8]*i+r[12],e[13]=r[1]*n+r[5]*c+r[9]*i+r[13],e[14]=r[2]*n+r[6]*c+r[10]*i+r[14],e[15]=r[3]*n+r[7]*c+r[11]*i+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],m=r[8],T=r[9],L=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]=m,e[9]=T,e[10]=L,e[11]=O,e[12]=f*n+p*c+m*i+r[12],e[13]=s*n+A*c+T*i+r[13],e[14]=u*n+h*c+L*i+r[14],e[15]=M*n+g*c+O*i+r[15]),e}function tn(e,r,t){var n=t[0],c=t[1],i=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]*i,e[9]=r[9]*i,e[10]=r[10]*i,e[11]=r[11]*i,e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15],e}function Os(e,r,t){var n=Math.sin(t),c=Math.cos(t),i=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]=i*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-i*n,e[9]=p*c-f*n,e[10]=A*c-s*n,e[11]=h*c-u*n,e}function ys(e,r,t){var n=Math.sin(t),c=Math.cos(t),i=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]=i*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-i*n,e[5]=p*c-f*n,e[6]=A*c-s*n,e[7]=h*c-u*n,e}function J4(e,r,t,n,c){var i=1/Math.tan(r/2),f;return e[0]=i/t,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,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 Ls=J4;function Tc(e,r){var t=e[0],n=e[1],c=e[2],i=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],m=e[12],T=e[13],L=e[14],O=e[15],N=r[0],W=r[1],C=r[2],S=r[3],E=r[4],H=r[5],F=r[6],t0=r[7],Q=r[8],D=r[9],G=r[10],Z=r[11],Y=r[12],B=r[13],x=r[14],R=r[15];return Math.abs(t-N)<=L0*Math.max(1,Math.abs(t),Math.abs(N))&&Math.abs(n-W)<=L0*Math.max(1,Math.abs(n),Math.abs(W))&&Math.abs(c-C)<=L0*Math.max(1,Math.abs(c),Math.abs(C))&&Math.abs(i-S)<=L0*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(f-E)<=L0*Math.max(1,Math.abs(f),Math.abs(E))&&Math.abs(s-H)<=L0*Math.max(1,Math.abs(s),Math.abs(H))&&Math.abs(u-F)<=L0*Math.max(1,Math.abs(u),Math.abs(F))&&Math.abs(M-t0)<=L0*Math.max(1,Math.abs(M),Math.abs(t0))&&Math.abs(p-Q)<=L0*Math.max(1,Math.abs(p),Math.abs(Q))&&Math.abs(A-D)<=L0*Math.max(1,Math.abs(A),Math.abs(D))&&Math.abs(h-G)<=L0*Math.max(1,Math.abs(h),Math.abs(G))&&Math.abs(g-Z)<=L0*Math.max(1,Math.abs(g),Math.abs(Z))&&Math.abs(m-Y)<=L0*Math.max(1,Math.abs(m),Math.abs(Y))&&Math.abs(T-B)<=L0*Math.max(1,Math.abs(T),Math.abs(B))&&Math.abs(L-x)<=L0*Math.max(1,Math.abs(L),Math.abs(x))&&Math.abs(O-R)<=L0*Math.max(1,Math.abs(O),Math.abs(R))}function Z4(){var e=new v1(4);return v1!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function qs(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 Ts(e,r,t){var n=r[0],c=r[1],i=r[2],f=r[3];return e[0]=t[0]*n+t[4]*c+t[8]*i+t[12]*f,e[1]=t[1]*n+t[5]*c+t[9]*i+t[13]*f,e[2]=t[2]*n+t[6]*c+t[10]*i+t[14]*f,e[3]=t[3]*n+t[7]*c+t[11]*i+t[15]*f,e}var vO=function(){var e=Z4();return function(r,t,n,c,i,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],i(e,e,f),r[s]=e[0],r[s+1]=e[1],r[s+2]=e[2],r[s+3]=e[3];return r}}();var Ss=y(T0());function xs(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 $4(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?xs(Object(t),!0).forEach(function(n){(0,Ss.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):xs(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Bs(e,r){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=eh(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
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return i=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function eh(e,r){if(e){if(typeof e=="string")return Ws(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 Ws(e,r)}}function Ws(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 xc(e,r){var t=r?.globalFeatureId;return t!==void 0?rh(e,t):th(e,r?.type)}function rh(e,r){var t=ws(e),n=Bs(t),c;try{for(n.s();!(c=n.n()).done;){for(var i=c.value,f=0,s=i.featureIds.value[0],u=0;u<i.featureIds.value.length;u++){var M=i.featureIds.value[u];if(M!==s){if(r===i.globalFeatureIds.value[f])return nn(i,f,u);f=u,s=M}}if(r===i.globalFeatureIds.value[f])return nn(i,f,i.featureIds.value.length)}}catch(p){n.e(p)}finally{n.f()}throw new Error("featureId:".concat(r," not found"))}function th(e,r){var t=ws(e,r);return nh(t)}function Cs(e,r,t){switch(e.type){case"Point":return oh(e,r,t);case"LineString":return ih(e,r,t);case"Polygon":return Xs(e,r,t);default:var n=e;throw new Error("Unsupported geometry type: ".concat(n?.type))}}function ws(e,r){var t=Boolean(e.points||e.lines||e.polygons);if(!t)return e.type=r||fh(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 nh(e){var r=[],t=Bs(e),n;try{for(t.s();!(n=t.n()).done;){var c=n.value;if(c.featureIds.value.length!==0){for(var i=0,f=c.featureIds.value[0],s=0;s<c.featureIds.value.length;s++){var u=c.featureIds.value[s];u!==f&&(r.push(nn(c,i,s)),i=s,f=u)}r.push(nn(c,i,c.featureIds.value.length))}}}catch(M){t.e(M)}finally{t.f()}return r}function nn(e,r,t){var n=Cs(e,r,t),c=ch(e,r,t),i=ah(e,r,t);return $4({type:"Feature",geometry:n,properties:c},i)}function ah(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 ch(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 Xs(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}),i=e.primitivePolygonIndices.value.filter(function(O){return O>=r&&O<=t}),f=c.length>2;if(!f){for(var s=[],u=0;u<i.length-1;u++){var M=i[u],p=i[u+1],A=an(n,M,p);s.push(A)}return{type:"Polygon",coordinates:s}}for(var h=[],g=0;g<c.length-1;g++){var m=c[g],T=c[g+1],L=Xs(e,m,T).coordinates;h.push(L)}return{type:"MultiPolygon",coordinates:h}}function ih(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}),i=c.length>2;if(!i){var f=an(n,c[0],c[1]);return{type:"LineString",coordinates:f}}for(var s=[],u=0;u<c.length-1;u++){var M=an(n,c[u],c[u+1]);s.push(M)}return{type:"MultiLineString",coordinates:s}}function oh(e,r,t){var n=e.positions,c=an(n,r,t),i=c.length>1;return i?{type:"MultiPoint",coordinates:c}:{type:"Point",coordinates:c[0]}}function an(e,r,t){r=r||0,t=t||e.value.length/e.size;for(var n=[],c=r;c<t;c++){for(var i=Array(),f=c*e.size;f<(c+1)*e.size;f++)i.push(Number(e.value[f]));n.push(i)}return n}function fh(e){return e.pathIndices?"LineString":e.polygonIndices?"Polygon":"Point"}function sh(e){var r=uh();return function(){var n=(0,wr.default)(e),c;if(r){var i=(0,wr.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,ks.default)(this,c)}}function uh(){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 Es(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 _e(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Es(Object(t),!0).forEach(function(n){(0,cn.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Es(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}(0,Is.registerLoaders)([ds]);var lh=a1.BINARY,Mh=_e(_e({},Xr.MVTLayer.defaultProps),{},{formatTiles:lh}),De=function(e){(0,Ds.default)(t,e);var r=sh(t);function t(){return(0,Rs.default)(this,t),r.apply(this,arguments)}return(0,_s.default)(t,[{key:"initializeState",value:function(){(0,Wc.default)((0,wr.default)(t.prototype),"initializeState",this).call(this);var c=this.props.formatTiles===a1.BINARY;this.setState({binary:c})}},{key:"getTileData",value:function(c){var i=(0,Xr._getURLFromTemplate)(this.state.data,c);if(!i)return Promise.reject("Invalid URL");var f=this.getLoadOptions(),s=this.props,u=s.fetch,M=s.formatTiles,p=c.signal;return M===a1.BINARY&&(f=_e(_e({},f),{},{mimeType:"application/vnd.carto-vector-tile"})),u(i,{propName:"data",layer:this,loadOptions:f,signal:p})}},{key:"renderSubLayers",value:function(c){if(c.data===null)return null;var i=c.tile.bbox,f=i.west,s=i.south,u=i.east,M=i.north,p=_e(_e({},c),{},{autoHighlight:!1,extensions:[new Fs.ClipExtension].concat((0,Ps.default)(c.extensions||[])),clipBounds:[f,s,u,M]}),A=new js.GeoJsonLayer(p);return A}},{key:"getPickingInfo",value:function(c){var i=(0,Wc.default)((0,wr.default)(t.prototype),"getPickingInfo",this).call(this,c);if(this.state.binary&&i.index!==-1){var f=c.sourceLayer.props.data;i.object=xc(f,{globalFeatureId:i.index})}return i}}]),t}(Xr.MVTLayer);(0,cn.default)(De,"layerName","CartoTileLayer");(0,cn.default)(De,"defaultProps",Mh);var Du=y(S0()),ku=y(E0()),Iu=y(ce()),Fu=y(I0()),ju=y(F0()),Dc=y(P0()),Pr=y(T0()),Uu=y(b1()),kc=y(_1());var Ys=y(X0()),Vs=y(S0()),Gs=y(E0()),Ks=y(I0()),Qs=y(F0()),Sc=y(P0()),Ae=y(Te()),Js=y(_1()),U0=y(Hs());function dh(e){var r=ph();return function(){var n=(0,Sc.default)(e),c;if(r){var i=(0,Sc.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,Qs.default)(this,c)}}function ph(){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 Zs(e,r){var t=e.west,n=e.north,c=e.east,i=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(Zs({west:A,north:n,east:p,south:i},r))}return(0,Ae.default)(new Set(u))}var h=2,g=(0,U0.polyfill)([[[t,n],[t,i],[c,i],[c,n],[t,n]]],r+h,!0);return h?(0,Ae.default)(new Set(g.map(function(m){return(0,U0.h3ToParent)(m,r)}))):g}function bh(e){var r=(0,U0.h3ToGeoBoundary)(e),t=r.map(function(u){return u[0]}),n=r.map(function(u){return u[1]}),c=Math.min.apply(Math,(0,Ae.default)(n)),i=Math.min.apply(Math,(0,Ae.default)(t)),f=Math.max.apply(Math,(0,Ae.default)(n)),s=Math.max.apply(Math,(0,Ae.default)(t));return{west:c,south:i,east:f,north:s}}var Ah=2;function on(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-Ah))}var $s=function(e){(0,Ks.default)(t,e);var r=dh(t);function t(){return(0,Vs.default)(this,t),r.apply(this,arguments)}return(0,Gs.default)(t,[{key:"getTileIndices",value:function(c){var i=c.viewport,f=c.minZoom,s=c.maxZoom;if(i.latitude===void 0)return[];var u=i.getBounds(),M=(0,Ys.default)(u,4),p=M[0],A=M[1],h=M[2],g=M[3],m=on(i),T;if(typeof f=="number"&&Number.isFinite(f)&&m<f)return[];if(typeof s=="number"&&Number.isFinite(s)&&m>s){m=s;var L=(0,U0.geoToH3)(i.latitude,i.longitude,s);T=(0,U0.kRing)(L,1)}else T=Zs({west:h,north:g,east:p,south:A},m);return T.map(function(O){return{i:O}})}},{key:"getTileId",value:function(c){var i=c.i;return i}},{key:"getTileMetadata",value:function(c){var i=c.i;return{bbox:bh(i)}}},{key:"getTileZoom",value:function(c){var i=c.i;return(0,U0.h3GetResolution)(i)}},{key:"getParentIndex",value:function(c){var i=(0,U0.h3GetResolution)(c.i),f=(0,U0.h3ToParent)(c.i,i-1);return{i:f}}}]),t}(Js._Tileset2D);var Su=y(S0()),Bu=y(E0()),Cu=y(V1()),wu=y(I0()),Xu=y(F0()),Mn=y(P0()),dn=y(T0()),Eu=y(mc());var tu=y(ne()),wc=y(G1());var Bc=y(S0()),Cc=y(E0());var hh={uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:BigUint64Array,int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:BigInt64Array,float32:Float32Array,float64:Float64Array},mh=function(){function e(){(0,Bc.default)(this,e)}return(0,Cc.default)(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 i=hh[n.type];if(!i)throw Error("Invalid data type: ".concat(n.type));n.data={},be(i,c,n.data)}}}]),e}(),eu=function(){function e(){(0,Bc.default)(this,e)}return(0,Cc.default)(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(mh.read(c,c.readVarint()+c.pos))}}]),e}();var zh={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=(0,tu.default)(wc.default.mark(function t(n,c){return wc.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",ru(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:ru,options:{}};function ru(e,r){if(!e)return null;for(var t=Re(e,eu),n=t.bands,c=t.blockHeight,i=t.blockWidth,f={},s=0;s<n.length;s++){var u=n[s],M=u.name,p=u.data;f[M]=p}return{blockWidth:i,blockHeight:c,cells:{numericProps:f,properties:[]}}}var nu=zh;var xu=y(ne()),_c=y(G1());var fn=y(S0()),sn=y(E0());var gh=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&be(BigUint64Array,c,n)}}]),e}(),vh=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(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=gh.read(c,c.readVarint()+c.pos);else if(t===2)n.properties.push(Sr.read(c,c.readVarint()+c.pos));else if(t===3){var i=Br.read(c,c.readVarint()+c.pos);n.numericProps[i.key]=i.value}}}]),e}(),au=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(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=vh.read(c,c.readVarint()+c.pos))}}]),e}();var Nu=y(T0());var Xh=y(X0()),Eh=y(mu()),zu=[0x5555555555555555n,0x3333333333333333n,0x0f0f0f0f0f0f0f0fn,0x00ff00ff00ff00ffn,0x0000ffff0000ffffn,0x00000000ffffffffn],gu=[0n,1n,2n,4n,8n,16n];function vu(e){return BigInt("0x".concat(e))}function Er(e){return e.toString(16)}function Ou(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 i=gu[5-c],f=zu[4-c];t=(t|t<<i)&f,n=(n|n<<i)&f}var s=0x4000000000000000n|1n<<59n|r<<52n|(t|n<<1n)>>12n|0xfffffffffffffn>>r*2n;return s}function ln(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 i=c,f=c>>1n,s=0;s<6;s++){var u=gu[s],M=zu[s];i=(i|i>>u)&M,f=(f|f>>u)&M}return i=i>>32n-n,f=f>>32n-n,{z:Number(n),x:Number(i),y:Number(f)}}function Rc(e){return e>>52n&0x1fn}function yu(e){var r=Rc(e)-1n,t=e&~(0x1fn<<52n)|r<<52n|0xfffffffffffffn>>r*2n;return t}function Lu(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 Ph(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Lu(Object(t),!0).forEach(function(n){(0,Nu.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Lu(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function qu(e){for(var r=e.cells,t=e.scheme,n=r.indices.value.length,c=[],i=0;i<n;i++){for(var f=t==="h3"?Er(r.indices.value[i]):r.indices.value[i],s=Ph({},r.properties[i]),u=0,M=Object.keys(r.numericProps);u<M.length;u++){var p=M[u];s[p]=r.numericProps[p].value[i]}c.push({id:f,properties:s})}return c}var Rh={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=(0,xu.default)(_c.default.mark(function t(n,c){return _c.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",Tu(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:Tu,options:{cartoSpatialTile:{scheme:"quadbin"}}};function Tu(e,r){var t;if(!e)return null;var n=Re(e,au),c=n.cells,i=r==null||(t=r.cartoSpatialTile)===null||t===void 0?void 0:t.scheme,f={cells:c,scheme:i};return qu(f)}var Wu=Rh;var Pu=y(_1());function _h(e){var r=Dh();return function(){var n=(0,Mn.default)(e),c;if(r){var i=(0,Mn.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,Xu.default)(this,c)}}function Dh(){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,Eu.registerLoaders)([nu,Wu]);function kh(e){return e!=null&&e!==""}var Ih={aggregationResLevel:4},Z1=function(e){(0,wu.default)(t,e);var r=_h(t);function t(){return(0,Su.default)(this,t),r.apply(this,arguments)}return(0,Bu.default)(t,[{key:"updateState",value:function(c){var i=c.props,f=c.oldProps;i.aggregationResLevel!==f.aggregationResLevel&&this.setState({tileset:null}),(0,Cu.default)((0,Mn.default)(t.prototype),"updateState",this).call(this,c)}},{key:"_updateAutoHighlight",value:function(c){var i=this.state.hoveredFeatureId,f=c.object,s;if(f&&(s=f.id),i!==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 i=this.state.hoveredFeatureId,f=c.content,s=kh(i);return!s||!Array.isArray(f)||!this._featureInTile(c,i)?-1:f.findIndex(function(u){return u.id===i})}},{key:"_featureInTile",value:function(c,i){for(var f=this.state.tileset,s=f.getTileZoom,u=f.getParentIndex,M=s(c.index),p=c.index.q?"q":"i",A=(0,dn.default)({},p,i),h=s(A);!(h<=M);)A=u(A),h=s(A);return A[p]===c.index[p]}}]),t}(Pu.TileLayer);(0,dn.default)(Z1,"layerName","SpatialIndexTileLayer");(0,dn.default)(Z1,"defaultProps",Ih);function Ru(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 _u(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Ru(Object(t),!0).forEach(function(n){(0,Pr.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Ru(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Fh(e){var r=jh();return function(){var n=(0,Dc.default)(e),c;if(r){var i=(0,Dc.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,ju.default)(this,c)}}function jh(){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 Uh=function(r){var t=r.data,n=r.tile.index;return!t||!t.length?null:new kc.H3HexagonLayer(r,{getHexagon:function(i){return i.id},centerHexagon:n,highPrecision:!0})},Hh={aggregationResLevel:4},Ie=function(e){(0,Fu.default)(t,e);var r=Fh(t);function t(){var n;(0,Du.default)(this,t);for(var c=arguments.length,i=new Array(c),f=0;f<c;f++)i[f]=arguments[f];return n=r.call.apply(r,[this].concat(i)),(0,Pr.default)((0,Iu.default)(n),"state",void 0),n}return(0,ku.default)(t,[{key:"initializeState",value:function(){kc.H3HexagonLayer._checkH3Lib(),this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var i=c.changeFlags;if(i.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,i=c.data,f=c.tileJSON,s=parseInt(f.minresolution),u=parseInt(f.maxresolution);return this.props.minZoom&&(s=Math.max(s,on({zoom:this.props.minZoom,latitude:0}))),this.props.maxZoom&&(u=Math.min(u,on({zoom:this.props.maxZoom,latitude:0}))),[new Z1(this.props,{id:"h3-tile-layer-".concat(this.props.id),data:i,TilesetClass:$s,renderSubLayers:Uh,minZoom:s,maxZoom:u,loadOptions:_u(_u({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"h3"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(Uu.CompositeLayer);(0,Pr.default)(Ie,"layerName","H3TileLayer");(0,Pr.default)(Ie,"defaultProps",Hh);var Ml=y(S0()),dl=y(E0()),pl=y(ce()),bl=y(I0()),Al=y(F0()),ci=y(P0()),Fr=y(T0()),hl=y(b1());var el=y(S0()),rl=y(E0()),tl=y(I0()),nl=y(F0()),ti=y(P0()),ni=y(T0()),al=y(_1());var kr=y(X0());function Fe(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 Ic(e){if(Array.isArray(e))return Fe(e)}function Fc(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Rr(e,r){if(e){if(typeof e=="string")return Fe(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 Fe(e,r)}}function jc(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
24
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,f=!1,s;return{s:function(){t=t.call(e)},n:function(){var M=t.next();return i=M.done,M},e:function(M){f=!0,s=M},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(f)throw s}}}}function eh(e,r){if(e){if(typeof e=="string")return Ws(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 Ws(e,r)}}function Ws(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 xc(e,r){var t=r?.globalFeatureId;return t!==void 0?rh(e,t):th(e,r?.type)}function rh(e,r){var t=ws(e),n=Bs(t),c;try{for(n.s();!(c=n.n()).done;){for(var i=c.value,f=0,s=i.featureIds.value[0],u=0;u<i.featureIds.value.length;u++){var M=i.featureIds.value[u];if(M!==s){if(r===i.globalFeatureIds.value[f])return nn(i,f,u);f=u,s=M}}if(r===i.globalFeatureIds.value[f])return nn(i,f,i.featureIds.value.length)}}catch(p){n.e(p)}finally{n.f()}throw new Error("featureId:".concat(r," not found"))}function th(e,r){var t=ws(e,r);return nh(t)}function Cs(e,r,t){switch(e.type){case"Point":return oh(e,r,t);case"LineString":return ih(e,r,t);case"Polygon":return Xs(e,r,t);default:var n=e;throw new Error("Unsupported geometry type: ".concat(n?.type))}}function ws(e,r){var t=Boolean(e.points||e.lines||e.polygons);if(!t)return e.type=r||fh(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 nh(e){var r=[],t=Bs(e),n;try{for(t.s();!(n=t.n()).done;){var c=n.value;if(c.featureIds.value.length!==0){for(var i=0,f=c.featureIds.value[0],s=0;s<c.featureIds.value.length;s++){var u=c.featureIds.value[s];u!==f&&(r.push(nn(c,i,s)),i=s,f=u)}r.push(nn(c,i,c.featureIds.value.length))}}}catch(M){t.e(M)}finally{t.f()}return r}function nn(e,r,t){var n=Cs(e,r,t),c=ch(e,r,t),i=ah(e,r,t);return $4({type:"Feature",geometry:n,properties:c},i)}function ah(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 ch(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 Xs(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}),i=e.primitivePolygonIndices.value.filter(function(O){return O>=r&&O<=t}),f=c.length>2;if(!f){for(var s=[],u=0;u<i.length-1;u++){var M=i[u],p=i[u+1],A=an(n,M,p);s.push(A)}return{type:"Polygon",coordinates:s}}for(var h=[],g=0;g<c.length-1;g++){var m=c[g],T=c[g+1],L=Xs(e,m,T).coordinates;h.push(L)}return{type:"MultiPolygon",coordinates:h}}function ih(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}),i=c.length>2;if(!i){var f=an(n,c[0],c[1]);return{type:"LineString",coordinates:f}}for(var s=[],u=0;u<c.length-1;u++){var M=an(n,c[u],c[u+1]);s.push(M)}return{type:"MultiLineString",coordinates:s}}function oh(e,r,t){var n=e.positions,c=an(n,r,t),i=c.length>1;return i?{type:"MultiPoint",coordinates:c}:{type:"Point",coordinates:c[0]}}function an(e,r,t){r=r||0,t=t||e.value.length/e.size;for(var n=[],c=r;c<t;c++){for(var i=Array(),f=c*e.size;f<(c+1)*e.size;f++)i.push(Number(e.value[f]));n.push(i)}return n}function fh(e){return e.pathIndices?"LineString":e.polygonIndices?"Polygon":"Point"}function sh(e){var r=uh();return function(){var n=(0,wr.default)(e),c;if(r){var i=(0,wr.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,ks.default)(this,c)}}function uh(){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 Es(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 _e(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Es(Object(t),!0).forEach(function(n){(0,cn.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Es(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}(0,Is.registerLoaders)([ds]);var lh=a1.BINARY,Mh=_e(_e({},Xr.MVTLayer.defaultProps),{},{formatTiles:lh}),De=function(e){(0,Ds.default)(t,e);var r=sh(t);function t(){return(0,Rs.default)(this,t),r.apply(this,arguments)}return(0,_s.default)(t,[{key:"initializeState",value:function(){(0,Wc.default)((0,wr.default)(t.prototype),"initializeState",this).call(this);var c=this.props.formatTiles===a1.BINARY;this.setState({binary:c})}},{key:"getTileData",value:function(c){var i=(0,Xr._getURLFromTemplate)(this.state.data,c);if(!i)return Promise.reject("Invalid URL");var f=this.getLoadOptions(),s=this.props,u=s.fetch,M=s.formatTiles,p=c.signal;return M===a1.BINARY&&(f=_e(_e({},f),{},{mimeType:"application/vnd.carto-vector-tile"})),u(i,{propName:"data",layer:this,loadOptions:f,signal:p})}},{key:"renderSubLayers",value:function(c){if(c.data===null)return null;var i=c.tile.bbox,f=i.west,s=i.south,u=i.east,M=i.north,p=_e(_e({},c),{},{autoHighlight:!1,extensions:[new Fs.ClipExtension].concat((0,Ps.default)(c.extensions||[])),clipBounds:[f,s,u,M]}),A=new js.GeoJsonLayer(p);return A}},{key:"getPickingInfo",value:function(c){var i=(0,Wc.default)((0,wr.default)(t.prototype),"getPickingInfo",this).call(this,c);if(this.state.binary&&i.index!==-1){var f=c.sourceLayer.props.data;i.object=xc(f,{globalFeatureId:i.index})}return i}}]),t}(Xr.MVTLayer);(0,cn.default)(De,"layerName","CartoTileLayer");(0,cn.default)(De,"defaultProps",Mh);var Du=y(S0()),ku=y(E0()),Iu=y(ce()),Fu=y(I0()),ju=y(F0()),Dc=y(P0()),Pr=y(T0()),Uu=y(b1()),kc=y(_1());var Ys=y(X0()),Vs=y(S0()),Gs=y(E0()),Ks=y(I0()),Qs=y(F0()),Sc=y(P0()),Ae=y(Te()),Js=y(_1()),U0=y(Hs());function dh(e){var r=ph();return function(){var n=(0,Sc.default)(e),c;if(r){var i=(0,Sc.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,Qs.default)(this,c)}}function ph(){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 Zs(e,r){var t=e.west,n=e.north,c=e.east,i=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(Zs({west:A,north:n,east:p,south:i},r))}return(0,Ae.default)(new Set(u))}var h=2,g=(0,U0.polygonToCells)([[[t,n],[t,i],[c,i],[c,n],[t,n]]],r+h,!0);return h?(0,Ae.default)(new Set(g.map(function(m){return(0,U0.cellToParent)(m,r)}))):g}function bh(e){var r=(0,U0.cellToBoundary)(e),t=r.map(function(u){return u[0]}),n=r.map(function(u){return u[1]}),c=Math.min.apply(Math,(0,Ae.default)(n)),i=Math.min.apply(Math,(0,Ae.default)(t)),f=Math.max.apply(Math,(0,Ae.default)(n)),s=Math.max.apply(Math,(0,Ae.default)(t));return{west:c,south:i,east:f,north:s}}var Ah=2;function on(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-Ah))}var $s=function(e){(0,Ks.default)(t,e);var r=dh(t);function t(){return(0,Vs.default)(this,t),r.apply(this,arguments)}return(0,Gs.default)(t,[{key:"getTileIndices",value:function(c){var i=c.viewport,f=c.minZoom,s=c.maxZoom;if(i.latitude===void 0)return[];var u=i.getBounds(),M=(0,Ys.default)(u,4),p=M[0],A=M[1],h=M[2],g=M[3],m=on(i),T;if(typeof f=="number"&&Number.isFinite(f)&&m<f)return[];if(typeof s=="number"&&Number.isFinite(s)&&m>s){m=s;var L=(0,U0.latLngToCell)(i.latitude,i.longitude,s);T=(0,U0.gridDisk)(L,1)}else T=Zs({west:h,north:g,east:p,south:A},m);return T.map(function(O){return{i:O}})}},{key:"getTileId",value:function(c){var i=c.i;return i}},{key:"getTileMetadata",value:function(c){var i=c.i;return{bbox:bh(i)}}},{key:"getTileZoom",value:function(c){var i=c.i;return(0,U0.getResolution)(i)}},{key:"getParentIndex",value:function(c){var i=(0,U0.getResolution)(c.i),f=(0,U0.cellToParent)(c.i,i-1);return{i:f}}}]),t}(Js._Tileset2D);var Su=y(S0()),Bu=y(E0()),Cu=y(V1()),wu=y(I0()),Xu=y(F0()),Mn=y(P0()),dn=y(T0()),Eu=y(mc());var tu=y(ne()),wc=y(G1());var Bc=y(S0()),Cc=y(E0());var hh={uint8:Uint8Array,uint16:Uint16Array,uint32:Uint32Array,uint64:BigUint64Array,int8:Int8Array,int16:Int16Array,int32:Int32Array,int64:BigInt64Array,float32:Float32Array,float64:Float64Array},mh=function(){function e(){(0,Bc.default)(this,e)}return(0,Cc.default)(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 i=hh[n.type];if(!i)throw Error("Invalid data type: ".concat(n.type));n.data={},be(i,c,n.data)}}}]),e}(),eu=function(){function e(){(0,Bc.default)(this,e)}return(0,Cc.default)(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(mh.read(c,c.readVarint()+c.pos))}}]),e}();var zh={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=(0,tu.default)(wc.default.mark(function t(n,c){return wc.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",ru(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:ru,options:{}};function ru(e,r){if(!e)return null;for(var t=Re(e,eu),n=t.bands,c=t.blockHeight,i=t.blockWidth,f={},s=0;s<n.length;s++){var u=n[s],M=u.name,p=u.data;f[M]=p}return{blockWidth:i,blockHeight:c,cells:{numericProps:f,properties:[]}}}var nu=zh;var xu=y(ne()),_c=y(G1());var fn=y(S0()),sn=y(E0());var gh=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(e,null,[{key:"read",value:function(t,n){return t.readFields(e._readField,{value:[]},n)}},{key:"_readField",value:function(t,n,c){t===1&&be(BigUint64Array,c,n)}}]),e}(),vh=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(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=gh.read(c,c.readVarint()+c.pos);else if(t===2)n.properties.push(Sr.read(c,c.readVarint()+c.pos));else if(t===3){var i=Br.read(c,c.readVarint()+c.pos);n.numericProps[i.key]=i.value}}}]),e}(),au=function(){function e(){(0,fn.default)(this,e)}return(0,sn.default)(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=vh.read(c,c.readVarint()+c.pos))}}]),e}();var Nu=y(T0());var Xh=y(X0()),Eh=y(mu()),zu=[0x5555555555555555n,0x3333333333333333n,0x0f0f0f0f0f0f0f0fn,0x00ff00ff00ff00ffn,0x0000ffff0000ffffn,0x00000000ffffffffn],gu=[0n,1n,2n,4n,8n,16n];function vu(e){return BigInt("0x".concat(e))}function Er(e){return e.toString(16)}function Ou(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 i=gu[5-c],f=zu[4-c];t=(t|t<<i)&f,n=(n|n<<i)&f}var s=0x4000000000000000n|1n<<59n|r<<52n|(t|n<<1n)>>12n|0xfffffffffffffn>>r*2n;return s}function ln(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 i=c,f=c>>1n,s=0;s<6;s++){var u=gu[s],M=zu[s];i=(i|i>>u)&M,f=(f|f>>u)&M}return i=i>>32n-n,f=f>>32n-n,{z:Number(n),x:Number(i),y:Number(f)}}function Rc(e){return e>>52n&0x1fn}function yu(e){var r=Rc(e)-1n,t=e&~(0x1fn<<52n)|r<<52n|0xfffffffffffffn>>r*2n;return t}function Lu(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 Ph(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Lu(Object(t),!0).forEach(function(n){(0,Nu.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Lu(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function qu(e){for(var r=e.cells,t=e.scheme,n=r.indices.value.length,c=[],i=0;i<n;i++){for(var f=t==="h3"?Er(r.indices.value[i]):r.indices.value[i],s=Ph({},r.properties[i]),u=0,M=Object.keys(r.numericProps);u<M.length;u++){var p=M[u];s[p]=r.numericProps[p].value[i]}c.push({id:f,properties:s})}return c}var Rh={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=(0,xu.default)(_c.default.mark(function t(n,c){return _c.default.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.abrupt("return",Tu(n,c));case 1:case"end":return f.stop()}},t)}));function r(t,n){return e.apply(this,arguments)}return r}(),parseSync:Tu,options:{cartoSpatialTile:{scheme:"quadbin"}}};function Tu(e,r){var t;if(!e)return null;var n=Re(e,au),c=n.cells,i=r==null||(t=r.cartoSpatialTile)===null||t===void 0?void 0:t.scheme,f={cells:c,scheme:i};return qu(f)}var Wu=Rh;var Pu=y(_1());function _h(e){var r=Dh();return function(){var n=(0,Mn.default)(e),c;if(r){var i=(0,Mn.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,Xu.default)(this,c)}}function Dh(){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,Eu.registerLoaders)([nu,Wu]);function kh(e){return e!=null&&e!==""}var Ih={aggregationResLevel:4},Z1=function(e){(0,wu.default)(t,e);var r=_h(t);function t(){return(0,Su.default)(this,t),r.apply(this,arguments)}return(0,Bu.default)(t,[{key:"updateState",value:function(c){var i=c.props,f=c.oldProps;i.aggregationResLevel!==f.aggregationResLevel&&this.setState({tileset:null}),(0,Cu.default)((0,Mn.default)(t.prototype),"updateState",this).call(this,c)}},{key:"_updateAutoHighlight",value:function(c){var i=this.state.hoveredFeatureId,f=c.object,s;if(f&&(s=f.id),i!==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 i=this.state.hoveredFeatureId,f=c.content,s=kh(i);return!s||!Array.isArray(f)||!this._featureInTile(c,i)?-1:f.findIndex(function(u){return u.id===i})}},{key:"_featureInTile",value:function(c,i){for(var f=this.state.tileset,s=f.getTileZoom,u=f.getParentIndex,M=s(c.index),p=c.index.q?"q":"i",A=(0,dn.default)({},p,i),h=s(A);!(h<=M);)A=u(A),h=s(A);return A[p]===c.index[p]}}]),t}(Pu.TileLayer);(0,dn.default)(Z1,"layerName","SpatialIndexTileLayer");(0,dn.default)(Z1,"defaultProps",Ih);function Ru(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 _u(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?Ru(Object(t),!0).forEach(function(n){(0,Pr.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Ru(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function Fh(e){var r=jh();return function(){var n=(0,Dc.default)(e),c;if(r){var i=(0,Dc.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,ju.default)(this,c)}}function jh(){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 Uh=function(r){var t=r.data,n=r.tile.index;return!t||!t.length?null:new kc.H3HexagonLayer(r,{getHexagon:function(i){return i.id},centerHexagon:n,highPrecision:!0})},Hh={aggregationResLevel:4},Ie=function(e){(0,Fu.default)(t,e);var r=Fh(t);function t(){var n;(0,Du.default)(this,t);for(var c=arguments.length,i=new Array(c),f=0;f<c;f++)i[f]=arguments[f];return n=r.call.apply(r,[this].concat(i)),(0,Pr.default)((0,Iu.default)(n),"state",void 0),n}return(0,ku.default)(t,[{key:"initializeState",value:function(){kc.H3HexagonLayer._checkH3Lib(),this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var i=c.changeFlags;if(i.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,i=c.data,f=c.tileJSON,s=parseInt(f.minresolution),u=parseInt(f.maxresolution);return this.props.minZoom&&(s=Math.max(s,on({zoom:this.props.minZoom,latitude:0}))),this.props.maxZoom&&(u=Math.min(u,on({zoom:this.props.maxZoom,latitude:0}))),[new Z1(this.props,{id:"h3-tile-layer-".concat(this.props.id),data:i,TilesetClass:$s,renderSubLayers:Uh,minZoom:s,maxZoom:u,loadOptions:_u(_u({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"h3"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(Uu.CompositeLayer);(0,Pr.default)(Ie,"layerName","H3TileLayer");(0,Pr.default)(Ie,"defaultProps",Hh);var Ml=y(S0()),dl=y(E0()),pl=y(ce()),bl=y(I0()),Al=y(F0()),ci=y(P0()),Fr=y(T0()),hl=y(b1());var el=y(S0()),rl=y(E0()),tl=y(I0()),nl=y(F0()),ti=y(P0()),ni=y(T0()),al=y(_1());var kr=y(X0());function Fe(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 Ic(e){if(Array.isArray(e))return Fe(e)}function Fc(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Rr(e,r){if(e){if(typeof e=="string")return Fe(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 Fe(e,r)}}function jc(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
25
25
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function je(e){return Ic(e)||Fc(e)||Rr(e)||jc()}function Uc(e){if(Array.isArray(e))return e}function Hc(e,r){var t=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(t!=null){var n=[],c=!0,i=!1,f,s;try{for(t=t.call(e);!(c=(f=t.next()).done)&&(n.push(f.value),!(r&&n.length===r));c=!0);}catch(u){i=!0,s=u}finally{try{!c&&t.return!=null&&t.return()}finally{if(i)throw s}}return n}}function Yc(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
26
26
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _0(e,r){return Uc(e)||Hc(e,r)||Rr(e,r)||Yc()}function Vc(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function Hu(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Gc(e,r,t){return r&&Hu(e.prototype,r),t&&Hu(e,t),e}function h0(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function Ue(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function $1(e,r){var t=Ts([],r,e);return qs(t,t,1/t[3]),t}function _r(e,r,t){return e<r?r:e>t?t:e}function Yh(e){return Math.log(e)*Math.LOG2E}var pn=Math.log2||Yh;function s1(e,r){if(!e)throw new Error(r||"@math.gl/web-mercator: assertion failed.")}var u1=Math.PI,Vu=u1/4,O1=u1/180,Kc=180/u1,Dr=512,Yu=4003e4,Ye=85.051129,Qc=1.5;function bn(e){return Math.pow(2,e)}function y1(e){var r=_0(e,2),t=r[0],n=r[1];s1(Number.isFinite(t)),s1(Number.isFinite(n)&&n>=-90&&n<=90,"invalid latitude");var c=t*O1,i=n*O1,f=Dr*(c+u1)/(2*u1),s=Dr*(u1+Math.log(Math.tan(Vu+i*.5)))/(2*u1);return[f,s]}function H0(e){var r=_0(e,2),t=r[0],n=r[1],c=t/Dr*(2*u1)-u1,i=2*(Math.atan(Math.exp(n/Dr*(2*u1)-u1))-Vu);return[c*Kc,i*Kc]}function Jc(e){var r=e.latitude,t=e.longitude,n=e.highPrecision,c=n===void 0?!1:n;s1(Number.isFinite(r)&&Number.isFinite(t));var i=Dr,f=Math.cos(r*O1),s=i/360,u=s/f,M=i/Yu/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=O1*Math.tan(r*O1)/f,h=s*A/2,g=i/Yu*A,m=g/u*M;p.unitsPerDegree2=[0,h,g],p.unitsPerMeter2=[m,0,m]}return p}function Zc(e){var r=e.height,t=e.pitch,n=e.bearing,c=e.altitude,i=e.scale,f=e.center,s=Ue();Cr(s,s,[0,0,-c]),Os(s,s,-t*O1),ys(s,s,n*O1);var u=i/r;return tn(s,s,[u,u,u]),f&&Cr(s,s,ms([],f)),s}function Gu(e){var r=e.width,t=e.height,n=e.altitude,c=e.pitch,i=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,m=g===void 0?He(Qc):g;n!==void 0&&(m=He(n));var T=m*O1,L=i*O1,O=An(m),N=O;s&&(N+=s[2]*u/Math.cos(L)/t);var W=T*(.5+(f?f[1]:0)/t),C=Math.sin(W)*N/Math.sin(_r(Math.PI/2-L-W,.01,Math.PI-.01)),S=Math.sin(L)*C+N,E=N*10,H=Math.min(S*h,E);return{fov:T,aspect:r/t,focalDistance:O,near:p,far:H}}function $c(e){var r=Gu(e),t=r.fov,n=r.aspect,c=r.near,i=r.far,f=Ls([],t,n,c,i);return f}function He(e){return 2*Math.atan(.5/e)*Kc}function An(e){return .5/Math.tan(.5*e*O1)}function ei(e,r){var t=_0(e,3),n=t[0],c=t[1],i=t[2],f=i===void 0?0:i;return s1(Number.isFinite(n)&&Number.isFinite(c)&&Number.isFinite(f)),$1(r,[n,c,f,1])}function hn(e,r){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=_0(e,3),c=n[0],i=n[1],f=n[2];if(s1(Number.isFinite(c)&&Number.isFinite(i),"invalid pixel coordinate"),Number.isFinite(f)){var s=$1(r,[c,i,f,1]);return s}var u=$1(r,[c,i,0,1]),M=$1(r,[c,i,1,1]),p=u[2],A=M[2],h=p===A?0:((t||0)-p)/(A-p);return en([],u,M,h)}function mn(e){var r=e.width,t=e.height,n=e.bounds,c=e.minExtent,i=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=_0(n,2),A=_0(p[0],2),h=A[0],g=A[1],m=_0(p[1],2),T=m[0],L=m[1],O=Vh(e.padding),N=y1([h,_r(L,-Ye,Ye)]),W=y1([T,_r(g,-Ye,Ye)]),C=[Math.max(Math.abs(W[0]-N[0]),i),Math.max(Math.abs(W[1]-N[1]),i)],S=[r-O.left-O.right-Math.abs(M[0])*2,t-O.top-O.bottom-Math.abs(M[1])*2];s1(S[0]>0&&S[1]>0);var E=S[0]/C[0],H=S[1]/C[1],F=(O.right-O.left)/2/E,t0=(O.bottom-O.top)/2/H,Q=[(W[0]+N[0])/2+F,(W[1]+N[1])/2+t0],D=H0(Q),G=Math.min(s,pn(Math.abs(Math.min(E,H))));return s1(Number.isFinite(G)),{longitude:D[0],latitude:D[1],zoom:G}}function Vh(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(s1(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var Ku=Math.PI/180;function zn(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=e.width,n=e.height,c=e.unproject,i={targetZ:r},f=c([0,n],i),s=c([t,n],i),u,M,p=e.fovy?.5*e.fovy*Ku:Math.atan(.5/e.altitude),A=(90-e.pitch)*Ku;return p>A-.01?(u=Qu(e,0,r),M=Qu(e,t,r)):(u=c([0,0],i),M=c([t,0],i)),[f,s,M,u]}function Qu(e,r,t){var n=e.pixelUnprojectionMatrix,c=$1(n,[r,0,1,1]),i=$1(n,[r,e.height,1,1]),f=t*e.distanceScales.unitsPerMeter[2],s=(f-c[2])/(i[2]-c[2]),u=en([],c,i,s),M=H0(u);return M.push(t),M}var Ju=function(){function e(){var r=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{width:1,height:1};Vc(this,e),h0(this,"latitude",void 0),h0(this,"longitude",void 0),h0(this,"zoom",void 0),h0(this,"pitch",void 0),h0(this,"bearing",void 0),h0(this,"altitude",void 0),h0(this,"fovy",void 0),h0(this,"meterOffset",void 0),h0(this,"center",void 0),h0(this,"width",void 0),h0(this,"height",void 0),h0(this,"scale",void 0),h0(this,"distanceScales",void 0),h0(this,"viewMatrix",void 0),h0(this,"projectionMatrix",void 0),h0(this,"viewProjectionMatrix",void 0),h0(this,"pixelProjectionMatrix",void 0),h0(this,"pixelUnprojectionMatrix",void 0),h0(this,"equals",function(G){return G instanceof e?G.width===r.width&&G.height===r.height&&Tc(G.projectionMatrix,r.projectionMatrix)&&Tc(G.viewMatrix,r.viewMatrix):!1}),h0(this,"project",function(G){var Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=Z.topLeft,B=Y===void 0?!0:Y,x=r.projectPosition(G),R=ei(x,r.pixelProjectionMatrix),k=_0(R,2),I=k[0],a0=k[1],i0=B?a0:r.height-a0;return G.length===2?[I,i0]:[I,i0,R[2]]}),h0(this,"unproject",function(G){var Z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Y=Z.topLeft,B=Y===void 0?!0:Y,x=Z.targetZ,R=x===void 0?void 0:x,k=_0(G,3),I=k[0],a0=k[1],i0=k[2],b0=B?a0:r.height-a0,_=R&&R*r.distanceScales.unitsPerMeter[2],A0=hn([I,b0,i0],r.pixelUnprojectionMatrix,_),r0=r.unprojectPosition(A0),l0=_0(r0,3),k0=l0[0],r1=l0[1],j1=l0[2];return Number.isFinite(i0)?[k0,r1,j1]:Number.isFinite(R)?[k0,r1,R]:[k0,r1]}),h0(this,"projectPosition",function(G){var Z=y1(G),Y=_0(Z,2),B=Y[0],x=Y[1],R=(G[2]||0)*r.distanceScales.unitsPerMeter[2];return[B,x,R]}),h0(this,"unprojectPosition",function(G){var Z=H0(G),Y=_0(Z,2),B=Y[0],x=Y[1],R=(G[2]||0)*r.distanceScales.metersPerUnit[2];return[B,x,R]});var n=t.width,c=t.height,i=t.altitude,f=i===void 0?null:i,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,m=g===void 0?0:g,T=t.pitch,L=T===void 0?0:T,O=t.bearing,N=O===void 0?0:O,W=t.position,C=W===void 0?null:W,S=t.nearZMultiplier,E=S===void 0?.02:S,H=t.farZMultiplier,F=H===void 0?1.01:H;n=n||1,c=c||1,u===null&&f===null?(f=Qc,u=He(f)):u===null?u=He(f):f===null&&(f=An(u));var t0=bn(m);f=Math.max(.75,f);var Q=Jc({longitude:h,latitude:p}),D=y1([h,p]);D.push(0),C&&hs(D,D,zs([],C,Q.unitsPerMeter)),this.projectionMatrix=$c({width:n,height:c,scale:t0,center:D,pitch:L,fovy:u,nearZMultiplier:E,farZMultiplier:F}),this.viewMatrix=Zc({height:c,scale:t0,center:D,pitch:L,bearing:N,altitude:f}),this.width=n,this.height=c,this.scale=t0,this.latitude=p,this.longitude=h,this.zoom=m,this.pitch=L,this.bearing=N,this.altitude=f,this.fovy=u,this.center=D,this.meterOffset=C||[0,0,0],this.distanceScales=Q,this._initMatrices(),Object.freeze(this)}return Gc(e,[{key:"_initMatrices",value:function(){var t=this.width,n=this.height,c=this.projectionMatrix,i=this.viewMatrix,f=Ue();rn(f,f,c),rn(f,f,i),this.viewProjectionMatrix=f;var s=Ue();tn(s,s,[t/2,-n/2,1]),Cr(s,s,[1,-1,0]),rn(s,s,f);var u=vs(Ue(),s);if(!u)throw new Error("Pixel project matrix not invertible");this.pixelProjectionMatrix=s,this.pixelUnprojectionMatrix=u}},{key:"projectFlat",value:function(t){return y1(t)}},{key:"unprojectFlat",value:function(t){return H0(t)}},{key:"getMapCenterByLngLatPosition",value:function(t){var n=t.lngLat,c=t.pos,i=hn(c,this.pixelUnprojectionMatrix),f=y1(n),s=Nc([],f,As([],i)),u=Nc([],this.center,s);return H0(u)}},{key:"fitBounds",value:function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=this.width,i=this.height,f=mn(Object.assign({width:c,height:i,bounds:t},n)),s=f.longitude,u=f.latitude,M=f.zoom;return new e({width:c,height:i,longitude:s,latitude:u,zoom:M})}},{key:"getBounds",value:function(t){var n=this.getBoundingRegion(t),c=Math.min.apply(Math,je(n.map(function(u){return u[0]}))),i=Math.max.apply(Math,je(n.map(function(u){return u[0]}))),f=Math.min.apply(Math,je(n.map(function(u){return u[1]}))),s=Math.max.apply(Math,je(n.map(function(u){return u[1]})));return[[c,f],[i,s]]}},{key:"getBoundingRegion",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return zn(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 Zu=512;function ri(e){var r=ln(e),t=r.x,n=r.y,c=r.z,i=Zu/(1<<c);return[t*i,Zu-n*i,i]}function Kh(e,r){var t=ri(e),n=(0,kr.default)(t,3),c=n[0],i=n[1],f=n[2];return[[c,i],[c+r*f,i-r*f]]}function $u(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,t=Kh(e,r),n=(0,kr.default)(t,2),c=n[0],i=n[1],f=H0(c),s=(0,kr.default)(f,2),u=s[0],M=s[1],p=H0(i),A=(0,kr.default)(p,2),h=A[0],g=A[1];return[h,M,h,g,u,g,u,M,h,M]}function Qh(e){var r=Jh();return function(){var n=(0,ti.default)(e),c;if(r){var i=(0,ti.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,nl.default)(this,c)}}function Jh(){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 Zh={getQuadbin:{type:"accessor",value:function(r){return r.quadbin}}},gn=function(e){(0,tl.default)(t,e);var r=Qh(t);function t(){return(0,el.default)(this,t),r.apply(this,arguments)}return(0,rl.default)(t,[{key:"indexToBounds",value:function(){var c=this.props,i=c.data,f=c.extruded,s=c.getQuadbin,u=f?.99:1;return{data:i,_normalize:!1,positionFormat:"XY",getPolygon:function(p,A){return $u(s(p,A),u)}}}}]),t}(al._GeoCellLayer);(0,ni.default)(gn,"layerName","QuadbinLayer");(0,ni.default)(gn,"defaultProps",Zh);var cl=y(S0()),il=y(E0()),ai=y(V1()),ol=y(I0()),fl=y(F0()),Ir=y(P0()),sl=y(_1());function $h(e){var r=em();return function(){var n=(0,Ir.default)(e),c;if(r){var i=(0,Ir.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,fl.default)(this,c)}}function em(){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 vn=function(e){(0,ol.default)(t,e);var r=$h(t);function t(){return(0,cl.default)(this,t),r.apply(this,arguments)}return(0,il.default)(t,[{key:"getTileIndices",value:function(c){return(0,ai.default)((0,Ir.default)(t.prototype),"getTileIndices",this).call(this,c).map(Ou).map(function(i){return{q:i,i:Er(i)}})}},{key:"getTileId",value:function(c){var i=c.q,f=c.i;return f||Er(i)}},{key:"getTileMetadata",value:function(c){var i=c.q;return(0,ai.default)((0,Ir.default)(t.prototype),"getTileMetadata",this).call(this,ln(i))}},{key:"getTileZoom",value:function(c){var i=c.q;return Number(Rc(i))}},{key:"getParentIndex",value:function(c){var i=c.q;return{q:yu(i)}}}]),t}(sl._Tileset2D);function ul(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 ll(e){for(var r=1;r<arguments.length;r++){var t=arguments[r]!=null?arguments[r]:{};r%2?ul(Object(t),!0).forEach(function(n){(0,Fr.default)(e,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ul(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})}return e}function rm(e){var r=tm();return function(){var n=(0,ci.default)(e),c;if(r){var i=(0,ci.default)(this).constructor;c=Reflect.construct(n,arguments,i)}else c=n.apply(this,arguments);return(0,Al.default)(this,c)}}function tm(){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 nm=function(r){var t=r.data;if(!t||!t.length)return null;var n=typeof t[0].id=="bigint";return new gn(r,{getQuadbin:n?function(c){return c.id}:function(c){return vu(c.id)}})},am={aggregationResLevel:6},Ve=function(e){(0,bl.default)(t,e);var r=rm(t);function t(){var n;(0,Ml.default)(this,t);for(var c=arguments.length,i=new Array(c),f=0;f<c;f++)i[f]=arguments[f];return n=r.call.apply(r,[this].concat(i)),(0,Fr.default)((0,pl.default)(n),"state",void 0),n}return(0,dl.default)(t,[{key:"initializeState",value:function(){this.setState({data:null,tileJSON:null})}},{key:"updateState",value:function(c){var i=c.changeFlags;if(i.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,i=c.data,f=c.tileJSON,s=parseInt(f?.maxresolution);return[new Z1(this.props,{id:"quadbin-tile-layer-".concat(this.props.id),data:i,TilesetClass:vn,renderSubLayers:nm,maxZoom:s,loadOptions:ll(ll({},this.getLoadOptions()),{},{cartoSpatialTile:{scheme:"quadbin"},mimeType:"application/vnd.carto-spatial-tile"})})]}}]),t}(hl.CompositeLayer);(0,Fr.default)(Ve,"layerName","QuadbinTileLayer");(0,Fr.default)(Ve,"defaultProps",am);var ql=y(S0()),Tl=y(E0()),xl=y(ce()),Wl=y(I0()),Sl=y(F0()),li=y(P0()),Nn=y(T0()),Bl=y(b1());var vl=y(X0()),ii=y(S0()),oi=y(E0()),fi=y(V1()),si=y(I0()),Ol=y(F0()),jr=y(P0()),Ur=y(T0()),Ll=y(b1()),ui=y(pe());var ml=`#version 300 es
|
|
27
27
|
#define SHADER_NAME raster-layer-vertex-shader
|
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.
|
|
5
|
+
"version": "8.10.0-alpha.1",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"d3-color": "^3.1.0",
|
|
44
44
|
"d3-format": "^3.1.0",
|
|
45
45
|
"d3-scale": "^4.0.0",
|
|
46
|
-
"h3-js": "^
|
|
46
|
+
"h3-js": "^4.1.0",
|
|
47
47
|
"moment-timezone": "^0.5.33",
|
|
48
48
|
"pbf": "^3.2.1",
|
|
49
49
|
"quadbin": "^0.1.9"
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"@deck.gl/layers": "^8.0.0",
|
|
63
63
|
"@loaders.gl/core": "^3.4.2"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "8a3793449f88140ad1e16da7a190d192904629eb"
|
|
66
66
|
}
|
|
@@ -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 {
|
|
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:
|
|
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
|
-
// `
|
|
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 =
|
|
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 =>
|
|
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 =
|
|
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 =
|
|
93
|
-
indices =
|
|
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
|
|
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 =
|
|
119
|
-
const i =
|
|
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
|
|
19
|
+
export type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps &
|
|
20
20
|
TileLayer<DataT>;
|
|
21
21
|
|
|
22
22
|
/** Properties added by SpatialIndexTileLayer. */
|
|
23
|
-
type _SpatialIndexTileLayerProps
|
|
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
|
|
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;
|
|
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;
|
|
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
|
|
5
|
+
export declare type SpatialIndexTileLayerProps<DataT = any> = _SpatialIndexTileLayerProps & TileLayer<DataT>;
|
|
6
6
|
/** Properties added by SpatialIndexTileLayer. */
|
|
7
|
-
declare type _SpatialIndexTileLayerProps
|
|
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
|
|
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,
|
|
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"}
|