@deck.gl/carto 8.9.25 → 8.9.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/LICENSE +19 -0
  2. package/dist/cartoRasterTile-worker.js +2 -2
  3. package/dist/cartoSpatialTile-worker.js +2 -2
  4. package/dist/cartoVectorTile-worker.js +502 -2
  5. package/dist/dist.dev.js +521 -17
  6. package/dist/es5/api/maps-v3-client.js +1 -1
  7. package/dist/es5/api/maps-v3-client.js.map +1 -1
  8. package/dist/es5/layers/carto-tile-layer.js +1 -10
  9. package/dist/es5/layers/carto-tile-layer.js.map +1 -1
  10. package/dist/es5/layers/h3-tile-layer.js +1 -2
  11. package/dist/es5/layers/h3-tile-layer.js.map +1 -1
  12. package/dist/es5/layers/quadbin-tile-layer.js +1 -2
  13. package/dist/es5/layers/quadbin-tile-layer.js.map +1 -1
  14. package/dist/es5/layers/schema/carto-raster-tile-loader.js +2 -2
  15. package/dist/es5/layers/schema/carto-raster-tile-loader.js.map +1 -1
  16. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +2 -2
  17. package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  18. package/dist/es5/layers/schema/carto-vector-tile-loader.js +53 -2
  19. package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
  20. package/dist/esm/api/maps-v3-client.js +1 -1
  21. package/dist/esm/api/maps-v3-client.js.map +1 -1
  22. package/dist/esm/layers/carto-tile-layer.js +2 -10
  23. package/dist/esm/layers/carto-tile-layer.js.map +1 -1
  24. package/dist/esm/layers/h3-tile-layer.js +1 -2
  25. package/dist/esm/layers/h3-tile-layer.js.map +1 -1
  26. package/dist/esm/layers/quadbin-tile-layer.js +1 -2
  27. package/dist/esm/layers/quadbin-tile-layer.js.map +1 -1
  28. package/dist/esm/layers/schema/carto-raster-tile-loader.js +2 -2
  29. package/dist/esm/layers/schema/carto-raster-tile-loader.js.map +1 -1
  30. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +2 -2
  31. package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
  32. package/dist/esm/layers/schema/carto-vector-tile-loader.js +53 -2
  33. package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
  34. package/dist.min.js +24 -24
  35. package/package.json +2 -2
  36. package/src/api/maps-v3-client.ts +1 -1
  37. package/src/layers/carto-tile-layer.ts +2 -12
  38. package/src/layers/h3-tile-layer.ts +1 -2
  39. package/src/layers/quadbin-tile-layer.ts +1 -2
  40. package/src/layers/schema/carto-raster-tile-loader.ts +1 -1
  41. package/src/layers/schema/carto-spatial-tile-loader.ts +1 -1
  42. package/src/layers/schema/carto-vector-tile-loader.ts +57 -4
  43. package/typed/layers/carto-tile-layer.d.ts.map +1 -1
  44. package/typed/layers/h3-tile-layer.d.ts.map +1 -1
  45. package/typed/layers/quadbin-tile-layer.d.ts.map +1 -1
  46. package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","error","ok","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","MAP_TYPES","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","REQUEST_TYPES","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","q","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.1';\n\nexport type Headers = Record<string, string>;\ninterface RequestParams {\n method?: string;\n url: string;\n headers?: Headers;\n accessToken?: string;\n body?: any;\n errorContext: APIErrorContext;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({\n method,\n url,\n headers: customHeaders,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<Response> {\n const headers: Headers = {\n ...customHeaders,\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new CartoAPIError(error as Error, errorContext);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n headers,\n accessToken,\n body,\n errorContext\n}: RequestParams): Promise<T> {\n const response = await request({method, url, headers, accessToken, body, errorContext});\n let json;\n try {\n json = await response.json();\n } catch (error) {\n json = {error: ''};\n }\n\n if (!response.ok) {\n throw new CartoAPIError(json.error, errorContext, response);\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body,\n errorContext\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body, errorContext});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body, errorContext});\n return data.rows ? data.rows : data;\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n headers?: Headers;\n aggregationExp?: string;\n aggregationResLevel?: number;\n queryParameters?: QueryParameters;\n};\n\ntype MapsAPIParameters = {\n client: string;\n v: string;\n q?: string;\n name?: string;\n queryParameters?: QueryParameters;\n geo_column?: string;\n columns?: string;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {\n const parameters: MapsAPIParameters = {\n client: clientId || DEFAULT_CLIENT,\n v: V3_MINOR_VERSION\n };\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters[sourceName] = source;\n\n if (queryParameters) {\n parameters.queryParameters = queryParameters;\n }\n\n if (geoColumn) {\n parameters.geo_column = geoColumn;\n }\n if (columns) {\n parameters.columns = columns.join(',');\n }\n if (aggregationExp) {\n parameters.aggregationExp = aggregationExp;\n } else if (isSpatialIndexGeoColumn(geoColumn)) {\n // Default aggregationExp required for spatial index layers\n parameters.aggregationExp = '1 AS value';\n }\n if (aggregationResLevel) {\n parameters.aggregationResLevel = aggregationResLevel;\n }\n\n return parameters;\n}\n\nfunction isSpatialIndexGeoColumn(geoColumn: string | undefined) {\n const spatialIndex = geoColumn?.split(':')[0];\n return spatialIndex === 'h3' || spatialIndex === 'quadbin';\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const parameters = getParameters({\n type,\n source,\n geoColumn,\n columns,\n clientId,\n aggregationResLevel,\n aggregationExp,\n queryParameters\n });\n const encodedParameters = Object.entries(parameters).map(([key, value]) => {\n if (typeof value !== 'string') {\n value = JSON.stringify(value);\n }\n return encodeParameter(key, value);\n });\n const url = `${baseUrl}?${encodedParameters.join('&')}`;\n const {accessToken} = credentials;\n\n const errorContext = {requestType: REQUEST_TYPES.INSTANTIATION, connection, type, source};\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n return await requestJson({\n method: 'POST',\n url: baseUrl,\n headers,\n accessToken,\n body: JSON.stringify(parameters),\n errorContext\n });\n }\n\n return await requestJson({url, headers, accessToken, errorContext});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format?: Format;\n schema: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n const data = await requestData({url, format: mapFormat, accessToken, errorContext});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n clientId,\n headers,\n aggregationExp,\n aggregationResLevel,\n queryParameters\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string,\n headers?: Headers\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName: connection,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n aggregationExp,\n aggregationResLevel,\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n headers,\n source,\n type,\n queryParameters\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};\n dataset.data = await requestData({url, format: mapFormat, accessToken, errorContext});\n\n return true;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials\n) {\n const {connectionName: connection, source, type} = dataset;\n\n const statsUrl = buildStatsUrlFromBase(credentials.apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === MAP_TYPES.QUERY) {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const errorContext = {requestType: REQUEST_TYPES.TILE_STATS, connection, type, source};\n let url = baseUrl;\n if (type === MAP_TYPES.QUERY) {\n url += `?${encodeParameter('q', source)}`;\n }\n let stats;\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n stats = await requestJson({\n method: 'POST',\n url: baseUrl,\n accessToken,\n body: JSON.stringify({q: source}),\n errorContext\n });\n } else {\n stats = await requestJson({url, accessToken, errorContext});\n }\n\n // Replace tilestats for attribute with value from API\n const {attributes} = dataset.data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials,\n headers?: Headers\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, credentials, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token},\n credentials: CloudNativeCredentials\n) {\n const attributes: {attribute?: string; dataset?: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find(d => d.id === layer.config.dataId);\n if (dataset.data.tilestats && dataset.type !== MAP_TYPES.TILESET) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute?: string; dataset?: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) => attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, token, credentials)\n );\n return await Promise.all(promises);\n}\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n headers,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n headers?: Headers;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const errorContext = {requestType: REQUEST_TYPES.PUBLIC_MAP, mapId: cartoMapId};\n const map = await requestJson<any>({url, headers, accessToken, errorContext});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds, headers);\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(({config}) => config.dataId);\n map.datasets.forEach(dataset => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(({config}) => config.dataId === dataset.id);\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, localCreds);\n const out = {...parseMap(map), ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter(layer => {\n const pointType = layer.props.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (textLayers.length && window.FontFace && !document.fonts.check('12px Inter')) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then(f => document.fonts.add(f));\n }\n\n return out;\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","V3_MINOR_VERSION","request","method","url","customHeaders","headers","accessToken","body","errorContext","Accept","Authorization","fetch","CartoAPIError","requestJson","response","json","error","ok","requestData","format","FORMATS","NDJSON","data","rows","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","queryParameters","parameters","client","v","sourceName","MAP_TYPES","QUERY","geo_column","join","isSpatialIndexGeoColumn","spatialIndex","split","mapInstantiation","connection","credentials","baseUrl","mapsUrl","encodedParameters","Object","entries","map","key","value","JSON","stringify","requestType","REQUEST_TYPES","INSTANTIATION","length","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","DATA","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","values","TILE_FORMATS","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","_fetchTilestats","attribute","statsUrl","TILE_STATS","q","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","keys","visualChannels","channel","name","find","id","dataId","TILESET","push","filteredAttributes","a","fetchMap","cartoMapId","autoRefresh","onNewData","PUBLIC_MAP","mapId","intervalId","setInterval","changed","some","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","geojson","out","textLayers","pointType","props","window","FontFace","document","fonts","check","font","load","then","add"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {\n getDefaultCredentials,\n buildMapsUrlFromBase,\n buildStatsUrlFromBase,\n CloudNativeCredentials\n} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n QueryParameters,\n REQUEST_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\n\nimport {APIErrorContext, CartoAPIError} from './carto-api-error';\n\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 8192;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\nconst V3_MINOR_VERSION = '3.2';\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"}
@@ -81,17 +81,8 @@ var CartoTileLayer = function (_MVTLayer) {
81
81
  }
82
82
 
83
83
  var loadOptions = this.getLoadOptions();
84
- var _this$props = this.props,
85
- fetch = _this$props.fetch,
86
- formatTiles = _this$props.formatTiles;
84
+ var fetch = this.props.fetch;
87
85
  var signal = tile.signal;
88
-
89
- if (formatTiles === _mapsApiCommon.TILE_FORMATS.BINARY) {
90
- loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
91
- mimeType: 'application/vnd.carto-vector-tile'
92
- });
93
- }
94
-
95
86
  return fetch(url, {
96
87
  propName: 'data',
97
88
  layer: this,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["CartoVectorTileLoader","defaultTileFormat","TILE_FORMATS","BINARY","defaultProps","MVTLayer","formatTiles","CartoTileLayer","binary","props","setState","tile","url","state","data","Promise","reject","loadOptions","getLoadOptions","fetch","signal","mimeType","propName","layer","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","extensions","ClipExtension","clipBounds","subLayer","GeoJsonLayer","params","info","index","sourceLayer","object","globalFeatureId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AAQA;;AACA;;AAEA;;;;;;;;;;AAfA,2BAAgB,CAACA,8BAAD,CAAhB;AAkBA,IAAMC,iBAAiB,GAAGC,4BAAaC,MAAvC;;AAEA,IAAMC,YAA+C,mCAChDC,oBAASD,YADuC;AAEnDE,EAAAA,WAAW,EAAEL;AAFsC,EAArD;;IAmBqBM,c;;;;;;;;;;;;WAMnB,2BAAwB;AACtB;AACA,UAAMC,MAAM,GAAG,KAAKC,KAAL,CAAWH,WAAX,KAA2BJ,4BAAaC,MAAvD;AACA,WAAKO,QAAL,CAAc;AAACF,QAAAA,MAAM,EAANA;AAAD,OAAd;AACD;;;WAED,qBAAYG,IAAZ,EAAiC;AAC/B,UAAMC,GAAG,GAAG,oCAAoB,KAAKC,KAAL,CAAWC,IAA/B,EAAqCH,IAArC,CAAZ;;AACA,UAAI,CAACC,GAAL,EAAU;AACR,eAAOG,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AAED,UAAIC,WAAW,GAAG,KAAKC,cAAL,EAAlB;AACA,wBAA6B,KAAKT,KAAlC;AAAA,UAAOU,KAAP,eAAOA,KAAP;AAAA,UAAcb,WAAd,eAAcA,WAAd;AACA,UAAOc,MAAP,GAAiBT,IAAjB,CAAOS,MAAP;;AAIA,UAAId,WAAW,KAAKJ,4BAAaC,MAAjC,EAAyC;AACvCc,QAAAA,WAAW,mCACNA,WADM;AAETI,UAAAA,QAAQ,EAAE;AAFD,UAAX;AAID;;AAED,aAAOF,KAAK,CAACP,GAAD,EAAM;AAACU,QAAAA,QAAQ,EAAE,MAAX;AAAmBC,QAAAA,KAAK,EAAE,IAA1B;AAAgCN,QAAAA,WAAW,EAAXA,WAAhC;AAA6CG,QAAAA,MAAM,EAANA;AAA7C,OAAN,CAAZ;AACD;;;WAED,yBACEX,KADF,EAOuB;AACrB,UAAIA,KAAK,CAACK,IAAN,KAAe,IAAnB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,UAAMU,QAAQ,GAAGf,KAAK,CAACE,IAAN,CAAWc,IAA5B;AACA,UAAOC,IAAP,GAAmCF,QAAnC,CAAOE,IAAP;AAAA,UAAaC,KAAb,GAAmCH,QAAnC,CAAaG,KAAb;AAAA,UAAoBC,IAApB,GAAmCJ,QAAnC,CAAoBI,IAApB;AAAA,UAA0BC,KAA1B,GAAmCL,QAAnC,CAA0BK,KAA1B;;AAEA,UAAMC,aAAa,mCACdrB,KADc;AAEjBsB,QAAAA,aAAa,EAAE,KAFE;AAGjBC,QAAAA,UAAU,GAAG,IAAIC,yBAAJ,EAAH,0CAA4BxB,KAAK,CAACuB,UAAN,IAAoB,EAAhD,EAHO;AAIjBE,QAAAA,UAAU,EAAE,CAACR,IAAD,EAAOC,KAAP,EAAcC,IAAd,EAAoBC,KAApB;AAJK,QAAnB;;AAOA,UAAMM,QAAQ,GAAG,IAAIC,oBAAJ,CAAiBN,aAAjB,CAAjB;AACA,aAAOK,QAAP;AACD;;;WAED,wBAAeE,MAAf,EAAuB;AACrB,UAAMC,IAAI,kHAAwBD,MAAxB,CAAV;;AAEA,UAAI,KAAKxB,KAAL,CAAWL,MAAX,IAAqB8B,IAAI,CAACC,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,YAAOzB,IAAP,GAAeuB,MAAM,CAACG,WAAP,CAAoB/B,KAAnC,CAAOK,IAAP;AACAwB,QAAAA,IAAI,CAACG,MAAL,GAAc,0BAAgB3B,IAAhB,EAAwC;AACpD4B,UAAAA,eAAe,EAAEJ,IAAI,CAACC;AAD8B,SAAxC,CAAd;AAGD;;AAED,aAAOD,IAAP;AACD;;;EAvEqEjC,mB;;;8BAAnDE,c,eAGA,gB;8BAHAA,c,kBAIGH,Y","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoVectorTileLoader from './schema/carto-vector-tile-loader';\nregisterLoaders([CartoVectorTileLoader]);\n\nimport {DefaultProps} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport type {Feature} from 'geojson';\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst defaultProps: DefaultProps<CartoTileLayerProps> = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps = _CartoTileLayerProps & MVTLayerProps;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<ExtraProps extends {} = {}> extends MVTLayer<\n Required<_CartoTileLayerProps> & ExtraProps\n> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n const binary = this.props.formatTiles === TILE_FORMATS.BINARY;\n this.setState({binary});\n }\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n // The backend doesn't yet support our custom mime-type, so force it here\n // TODO remove once backend sends the correct mime-type\n if (formatTiles === TILE_FORMATS.BINARY) {\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/vnd.carto-vector-tile'\n };\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n\n return info;\n }\n}\n"],"file":"carto-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/carto-tile-layer.ts"],"names":["CartoVectorTileLoader","defaultTileFormat","TILE_FORMATS","BINARY","defaultProps","MVTLayer","formatTiles","CartoTileLayer","binary","props","setState","tile","url","state","data","Promise","reject","loadOptions","getLoadOptions","fetch","signal","propName","layer","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","extensions","ClipExtension","clipBounds","subLayer","GeoJsonLayer","params","info","index","sourceLayer","object","globalFeatureId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAIA;;AACA;;AAQA;;AACA;;AAEA;;;;;;;;;;AAfA,2BAAgB,CAACA,8BAAD,CAAhB;AAkBA,IAAMC,iBAAiB,GAAGC,4BAAaC,MAAvC;;AAEA,IAAMC,YAA+C,mCAChDC,oBAASD,YADuC;AAEnDE,EAAAA,WAAW,EAAEL;AAFsC,EAArD;;IAmBqBM,c;;;;;;;;;;;;WAMnB,2BAAwB;AACtB;AACA,UAAMC,MAAM,GAAG,KAAKC,KAAL,CAAWH,WAAX,KAA2BJ,4BAAaC,MAAvD;AACA,WAAKO,QAAL,CAAc;AAACF,QAAAA,MAAM,EAANA;AAAD,OAAd;AACD;;;WAED,qBAAYG,IAAZ,EAAiC;AAC/B,UAAMC,GAAG,GAAG,oCAAoB,KAAKC,KAAL,CAAWC,IAA/B,EAAqCH,IAArC,CAAZ;;AACA,UAAI,CAACC,GAAL,EAAU;AACR,eAAOG,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AAED,UAAMC,WAAW,GAAG,KAAKC,cAAL,EAApB;AACA,UAAOC,KAAP,GAAgB,KAAKV,KAArB,CAAOU,KAAP;AACA,UAAOC,MAAP,GAAiBT,IAAjB,CAAOS,MAAP;AACA,aAAOD,KAAK,CAACP,GAAD,EAAM;AAACS,QAAAA,QAAQ,EAAE,MAAX;AAAmBC,QAAAA,KAAK,EAAE,IAA1B;AAAgCL,QAAAA,WAAW,EAAXA,WAAhC;AAA6CG,QAAAA,MAAM,EAANA;AAA7C,OAAN,CAAZ;AACD;;;WAED,yBACEX,KADF,EAOuB;AACrB,UAAIA,KAAK,CAACK,IAAN,KAAe,IAAnB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,UAAMS,QAAQ,GAAGd,KAAK,CAACE,IAAN,CAAWa,IAA5B;AACA,UAAOC,IAAP,GAAmCF,QAAnC,CAAOE,IAAP;AAAA,UAAaC,KAAb,GAAmCH,QAAnC,CAAaG,KAAb;AAAA,UAAoBC,IAApB,GAAmCJ,QAAnC,CAAoBI,IAApB;AAAA,UAA0BC,KAA1B,GAAmCL,QAAnC,CAA0BK,KAA1B;;AAEA,UAAMC,aAAa,mCACdpB,KADc;AAEjBqB,QAAAA,aAAa,EAAE,KAFE;AAGjBC,QAAAA,UAAU,GAAG,IAAIC,yBAAJ,EAAH,0CAA4BvB,KAAK,CAACsB,UAAN,IAAoB,EAAhD,EAHO;AAIjBE,QAAAA,UAAU,EAAE,CAACR,IAAD,EAAOC,KAAP,EAAcC,IAAd,EAAoBC,KAApB;AAJK,QAAnB;;AAOA,UAAMM,QAAQ,GAAG,IAAIC,oBAAJ,CAAiBN,aAAjB,CAAjB;AACA,aAAOK,QAAP;AACD;;;WAED,wBAAeE,MAAf,EAAuB;AACrB,UAAMC,IAAI,kHAAwBD,MAAxB,CAAV;;AAEA,UAAI,KAAKvB,KAAL,CAAWL,MAAX,IAAqB6B,IAAI,CAACC,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,YAAOxB,IAAP,GAAesB,MAAM,CAACG,WAAP,CAAoB9B,KAAnC,CAAOK,IAAP;AACAuB,QAAAA,IAAI,CAACG,MAAL,GAAc,0BAAgB1B,IAAhB,EAAwC;AACpD2B,UAAAA,eAAe,EAAEJ,IAAI,CAACC;AAD8B,SAAxC,CAAd;AAGD;;AAED,aAAOD,IAAP;AACD;;;EA7DqEhC,mB;;;8BAAnDE,c,eAGA,gB;8BAHAA,c,kBAIGH,Y","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoVectorTileLoader from './schema/carto-vector-tile-loader';\nregisterLoaders([CartoVectorTileLoader]);\n\nimport {DefaultProps} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {\n MVTLayer,\n MVTLayerProps,\n TileLayer,\n _getURLFromTemplate,\n _Tile2DHeader,\n _TileLoadProps as TileLoadProps\n} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport {TileFormat, TILE_FORMATS} from '../api/maps-api-common';\nimport type {Feature} from 'geojson';\n\nconst defaultTileFormat = TILE_FORMATS.BINARY;\n\nconst defaultProps: DefaultProps<CartoTileLayerProps> = {\n ...MVTLayer.defaultProps,\n formatTiles: defaultTileFormat\n};\n\n/** All properties supported by CartoTileLayer. */\nexport type CartoTileLayerProps = _CartoTileLayerProps & MVTLayerProps;\n\n/** Properties added by CartoTileLayer. */\ntype _CartoTileLayerProps = {\n /** Use to override the default tile data format.\n *\n * Possible values are: `TILE_FORMATS.BINARY`, `TILE_FORMATS.GEOJSON` and `TILE_FORMATS.MVT`.\n *\n * Only supported when `apiVersion` is `API_VERSIONS.V3` and `format` is `FORMATS.TILEJSON`.\n */\n formatTiles?: TileFormat;\n};\n\nexport default class CartoTileLayer<ExtraProps extends {} = {}> extends MVTLayer<\n Required<_CartoTileLayerProps> & ExtraProps\n> {\n static layerName = 'CartoTileLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n const binary = this.props.formatTiles === TILE_FORMATS.BINARY;\n this.setState({binary});\n }\n\n getTileData(tile: TileLoadProps) {\n const url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n const loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n const {signal} = tile;\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: any;\n _offset: number;\n tile: _Tile2DHeader;\n }\n ): GeoJsonLayer | null {\n if (props.data === null) {\n return null;\n }\n\n const tileBbox = props.tile.bbox as any;\n const {west, south, east, north} = tileBbox;\n\n const subLayerProps = {\n ...props,\n autoHighlight: false,\n extensions: [new ClipExtension(), ...(props.extensions || [])],\n clipBounds: [west, south, east, north]\n };\n\n const subLayer = new GeoJsonLayer(subLayerProps);\n return subLayer;\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n\n return info;\n }\n}\n"],"file":"carto-tile-layer.js"}
@@ -137,8 +137,7 @@ var H3TileLayer = function (_CompositeLayer) {
137
137
  loadOptions: _objectSpread(_objectSpread({}, this.getLoadOptions()), {}, {
138
138
  cartoSpatialTile: {
139
139
  scheme: 'h3'
140
- },
141
- mimeType: 'application/vnd.carto-spatial-tile'
140
+ }
142
141
  })
143
142
  })];
144
143
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/h3-tile-layer.ts"],"names":["renderSubLayers","props","data","index","tile","length","H3HexagonLayer","getHexagon","d","id","centerHexagon","highPrecision","defaultProps","aggregationResLevel","H3TileLayer","_checkH3Lib","setState","tileJSON","changeFlags","dataChanged","tiles","state","minresolution","parseInt","maxresolution","minZoom","Math","max","zoom","latitude","maxZoom","min","SpatialIndexTileLayer","TilesetClass","H3Tileset2D","loadOptions","getLoadOptions","cartoSpatialTile","scheme","mimeType","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D, {getHexagonResolution} from './h3-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nconst defaultProps: DefaultProps<H3HexagonLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by H3TileLayer. */\nexport type H3TileLayerProps<DataT = any> = _H3TileLayerProps<DataT> & CompositeLayerProps;\n\n// TODO: use type from h3-hexagon-layer when available\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype H3HexagonLayerProps<DataT = any> = Record<string, any>;\n\n/** Properties added by H3TileLayer. */\ntype _H3TileLayerProps<DataT> = H3HexagonLayerProps<DataT> & {\n data: string;\n aggregationResLevel?: number;\n};\n\nexport default class H3TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_H3TileLayerProps<DataT>>\n> {\n static layerName = 'H3TileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n\n initializeState(): void {\n H3HexagonLayer._checkH3Lib();\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n let minresolution = parseInt(tileJSON.minresolution);\n let maxresolution = parseInt(tileJSON.maxresolution);\n\n // Convert Mercator zooms provided in props into H3 res levels\n // and clip into valid range provided from the tilejson\n if (this.props.minZoom) {\n minresolution = Math.max(\n minresolution,\n getHexagonResolution({zoom: this.props.minZoom, latitude: 0})\n );\n }\n if (this.props.maxZoom) {\n maxresolution = Math.min(\n maxresolution,\n getHexagonResolution({zoom: this.props.maxZoom, latitude: 0})\n );\n }\n\n // The naming is unfortunate, but minZoom & maxZoom in the context\n // of a Tileset2D refer to the resolution levels, not the Mercator zooms\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `h3-tile-layer-${this.props.id}`,\n data,\n // @ts-expect-error Tileset2D should be generic over TileIndex\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n // minZoom and maxZoom are H3 resolutions, however we must use this naming as that is what the Tileset2D class expects\n minZoom: minresolution,\n maxZoom: maxresolution,\n loadOptions: {\n ...this.getLoadOptions(),\n cartoSpatialTile: {scheme: 'h3'},\n mimeType: 'application/vnd.carto-spatial-tile'\n }\n })\n ];\n }\n}\n"],"file":"h3-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/h3-tile-layer.ts"],"names":["renderSubLayers","props","data","index","tile","length","H3HexagonLayer","getHexagon","d","id","centerHexagon","highPrecision","defaultProps","aggregationResLevel","H3TileLayer","_checkH3Lib","setState","tileJSON","changeFlags","dataChanged","tiles","state","minresolution","parseInt","maxresolution","minZoom","Math","max","zoom","latitude","maxZoom","min","SpatialIndexTileLayer","TilesetClass","H3Tileset2D","loadOptions","getLoadOptions","cartoSpatialTile","scheme","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport {H3HexagonLayer} from '@deck.gl/geo-layers';\nimport H3Tileset2D, {getHexagonResolution} from './h3-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\n\nconst renderSubLayers = props => {\n const {data} = props;\n const {index} = props.tile;\n if (!data || !data.length) return null;\n\n return new H3HexagonLayer(props, {\n getHexagon: d => d.id,\n centerHexagon: index,\n highPrecision: true\n });\n};\n\nconst defaultProps: DefaultProps<H3HexagonLayerProps> = {\n aggregationResLevel: 4\n};\n\n/** All properties supported by H3TileLayer. */\nexport type H3TileLayerProps<DataT = any> = _H3TileLayerProps<DataT> & CompositeLayerProps;\n\n// TODO: use type from h3-hexagon-layer when available\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype H3HexagonLayerProps<DataT = any> = Record<string, any>;\n\n/** Properties added by H3TileLayer. */\ntype _H3TileLayerProps<DataT> = H3HexagonLayerProps<DataT> & {\n data: string;\n aggregationResLevel?: number;\n};\n\nexport default class H3TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_H3TileLayerProps<DataT>>\n> {\n static layerName = 'H3TileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n\n initializeState(): void {\n H3HexagonLayer._checkH3Lib();\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n let minresolution = parseInt(tileJSON.minresolution);\n let maxresolution = parseInt(tileJSON.maxresolution);\n\n // Convert Mercator zooms provided in props into H3 res levels\n // and clip into valid range provided from the tilejson\n if (this.props.minZoom) {\n minresolution = Math.max(\n minresolution,\n getHexagonResolution({zoom: this.props.minZoom, latitude: 0})\n );\n }\n if (this.props.maxZoom) {\n maxresolution = Math.min(\n maxresolution,\n getHexagonResolution({zoom: this.props.maxZoom, latitude: 0})\n );\n }\n\n // The naming is unfortunate, but minZoom & maxZoom in the context\n // of a Tileset2D refer to the resolution levels, not the Mercator zooms\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `h3-tile-layer-${this.props.id}`,\n data,\n // @ts-expect-error Tileset2D should be generic over TileIndex\n TilesetClass: H3Tileset2D,\n renderSubLayers,\n // minZoom and maxZoom are H3 resolutions, however we must use this naming as that is what the Tileset2D class expects\n minZoom: minresolution,\n maxZoom: maxresolution,\n loadOptions: {\n ...this.getLoadOptions(),\n cartoSpatialTile: {scheme: 'h3'}\n }\n })\n ];\n }\n}\n"],"file":"h3-tile-layer.js"}
@@ -115,8 +115,7 @@ var QuadbinTileLayer = function (_CompositeLayer) {
115
115
  loadOptions: _objectSpread(_objectSpread({}, this.getLoadOptions()), {}, {
116
116
  cartoSpatialTile: {
117
117
  scheme: 'quadbin'
118
- },
119
- mimeType: 'application/vnd.carto-spatial-tile'
118
+ }
120
119
  })
121
120
  })];
122
121
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/quadbin-tile-layer.ts"],"names":["renderSubLayers","props","data","length","isBigInt","id","QuadbinLayer","getQuadbin","d","defaultProps","aggregationResLevel","QuadbinTileLayer","setState","tileJSON","changeFlags","dataChanged","tiles","state","maxZoom","parseInt","maxresolution","SpatialIndexTileLayer","TilesetClass","QuadbinTileset2D","loadOptions","getLoadOptions","cartoSpatialTile","scheme","mimeType","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;AACA;;;;;;;;;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK,EAAI;AACtC,MAAOC,IAAP,GAAeD,KAAf,CAAOC,IAAP;AACA,MAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,MAAMC,QAAQ,GAAG,OAAOF,IAAI,CAAC,CAAD,CAAJ,CAAQG,EAAf,KAAsB,QAAvC;AACA,SAAO,IAAIC,qBAAJ,CAAiBL,KAAjB,EAAwB;AAC7BM,IAAAA,UAAU,EAAEH,QAAQ,GAAG,UAAAI,CAAC;AAAA,aAAIA,CAAC,CAACH,EAAN;AAAA,KAAJ,GAAe,UAAAG,CAAC;AAAA,aAAI,0BAAYA,CAAC,CAACH,EAAd,CAAJ;AAAA;AADP,GAAxB,CAAP;AAGD,CAPM;;;AASP,IAAMI,YAAiD,GAAG;AACxDC,EAAAA,mBAAmB,EAAE;AADmC,CAA1D;;IAcqBC,gB;;;;;;;;;;;;;;;;;;;;;WAWnB,2BAAwB;AACtB,WAAKC,QAAL,CAAc;AAACV,QAAAA,IAAI,EAAE,IAAP;AAAaW,QAAAA,QAAQ,EAAE;AAAvB,OAAd;AACD;;;WAED,2BAAyD;AAAA,UAA5CC,WAA4C,QAA5CA,WAA4C;;AACvD,UAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,YAAKb,IAAL,GAAa,KAAKD,KAAlB,CAAKC,IAAL;AACA,YAAMW,QAAQ,GAAGX,IAAjB;AACAA,QAAAA,IAAI,GAAIW,QAAD,CAAkBG,KAAzB;AACA,aAAKJ,QAAL,CAAc;AAACV,UAAAA,IAAI,EAAJA,IAAD;AAAOW,UAAAA,QAAQ,EAARA;AAAP,SAAd;AACD;AACF;;;WAED,wBAA0C;AACxC,wBAAyB,KAAKI,KAA9B;AAAA,UAAOf,IAAP,eAAOA,IAAP;AAAA,UAAaW,QAAb,eAAaA,QAAb;AACA,UAAMK,OAAO,GAAGC,QAAQ,CAACN,QAAD,aAACA,QAAD,uBAACA,QAAQ,CAAEO,aAAX,CAAxB;AACA,aAAO,CACL,IAAIC,8BAAJ,CAA0B,KAAKpB,KAA/B,EAAsC;AACpCI,QAAAA,EAAE,+BAAwB,KAAKJ,KAAL,CAAWI,EAAnC,CADkC;AAEpCH,QAAAA,IAAI,EAAJA,IAFoC;AAIpCoB,QAAAA,YAAY,EAAEC,yBAJsB;AAKpCvB,QAAAA,eAAe,EAAfA,eALoC;AAMpCkB,QAAAA,OAAO,EAAPA,OANoC;AAOpCM,QAAAA,WAAW,kCACN,KAAKC,cAAL,EADM;AAETC,UAAAA,gBAAgB,EAAE;AAACC,YAAAA,MAAM,EAAE;AAAT,WAFT;AAGTC,UAAAA,QAAQ,EAAE;AAHD;AAPyB,OAAtC,CADK,CAAP;AAeD;;;EAvCOC,oB;;;8BAHWlB,gB,eAIA,kB;8BAJAA,gB,kBAKGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport QuadbinLayer, {QuadbinLayerProps} from './quadbin-layer';\nimport QuadbinTileset2D from './quadbin-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\nimport {hexToBigInt} from 'quadbin';\n\nexport const renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n const isBigInt = typeof data[0].id === 'bigint';\n return new QuadbinLayer(props, {\n getQuadbin: isBigInt ? d => d.id : d => hexToBigInt(d.id)\n });\n};\n\nconst defaultProps: DefaultProps<QuadbinTileLayerProps> = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadbinTileLayer. */\nexport type QuadbinTileLayerProps<DataT = any> = _QuadbinTileLayerProps<DataT> &\n CompositeLayerProps;\n\n/** Properties added by QuadbinTileLayer. */\ntype _QuadbinTileLayerProps<DataT> = QuadbinLayerProps<DataT> & {\n data: string;\n aggregationResLevel?: number;\n};\n\nexport default class QuadbinTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends CompositeLayer<ExtraProps & Required<_QuadbinTileLayerProps<DataT>>> {\n static layerName = 'QuadbinTileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n initializeState(): void {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON?.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadbin-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D as any,\n renderSubLayers,\n maxZoom,\n loadOptions: {\n ...this.getLoadOptions(),\n cartoSpatialTile: {scheme: 'quadbin'},\n mimeType: 'application/vnd.carto-spatial-tile'\n }\n })\n ];\n }\n}\n"],"file":"quadbin-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/quadbin-tile-layer.ts"],"names":["renderSubLayers","props","data","length","isBigInt","id","QuadbinLayer","getQuadbin","d","defaultProps","aggregationResLevel","QuadbinTileLayer","setState","tileJSON","changeFlags","dataChanged","tiles","state","maxZoom","parseInt","maxresolution","SpatialIndexTileLayer","TilesetClass","QuadbinTileset2D","loadOptions","getLoadOptions","cartoSpatialTile","scheme","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAQA;;AACA;;AACA;;AACA;;;;;;;;;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK,EAAI;AACtC,MAAOC,IAAP,GAAeD,KAAf,CAAOC,IAAP;AACA,MAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,MAAMC,QAAQ,GAAG,OAAOF,IAAI,CAAC,CAAD,CAAJ,CAAQG,EAAf,KAAsB,QAAvC;AACA,SAAO,IAAIC,qBAAJ,CAAiBL,KAAjB,EAAwB;AAC7BM,IAAAA,UAAU,EAAEH,QAAQ,GAAG,UAAAI,CAAC;AAAA,aAAIA,CAAC,CAACH,EAAN;AAAA,KAAJ,GAAe,UAAAG,CAAC;AAAA,aAAI,0BAAYA,CAAC,CAACH,EAAd,CAAJ;AAAA;AADP,GAAxB,CAAP;AAGD,CAPM;;;AASP,IAAMI,YAAiD,GAAG;AACxDC,EAAAA,mBAAmB,EAAE;AADmC,CAA1D;;IAcqBC,gB;;;;;;;;;;;;;;;;;;;;;WAWnB,2BAAwB;AACtB,WAAKC,QAAL,CAAc;AAACV,QAAAA,IAAI,EAAE,IAAP;AAAaW,QAAAA,QAAQ,EAAE;AAAvB,OAAd;AACD;;;WAED,2BAAyD;AAAA,UAA5CC,WAA4C,QAA5CA,WAA4C;;AACvD,UAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,YAAKb,IAAL,GAAa,KAAKD,KAAlB,CAAKC,IAAL;AACA,YAAMW,QAAQ,GAAGX,IAAjB;AACAA,QAAAA,IAAI,GAAIW,QAAD,CAAkBG,KAAzB;AACA,aAAKJ,QAAL,CAAc;AAACV,UAAAA,IAAI,EAAJA,IAAD;AAAOW,UAAAA,QAAQ,EAARA;AAAP,SAAd;AACD;AACF;;;WAED,wBAA0C;AACxC,wBAAyB,KAAKI,KAA9B;AAAA,UAAOf,IAAP,eAAOA,IAAP;AAAA,UAAaW,QAAb,eAAaA,QAAb;AACA,UAAMK,OAAO,GAAGC,QAAQ,CAACN,QAAD,aAACA,QAAD,uBAACA,QAAQ,CAAEO,aAAX,CAAxB;AACA,aAAO,CACL,IAAIC,8BAAJ,CAA0B,KAAKpB,KAA/B,EAAsC;AACpCI,QAAAA,EAAE,+BAAwB,KAAKJ,KAAL,CAAWI,EAAnC,CADkC;AAEpCH,QAAAA,IAAI,EAAJA,IAFoC;AAIpCoB,QAAAA,YAAY,EAAEC,yBAJsB;AAKpCvB,QAAAA,eAAe,EAAfA,eALoC;AAMpCkB,QAAAA,OAAO,EAAPA,OANoC;AAOpCM,QAAAA,WAAW,kCACN,KAAKC,cAAL,EADM;AAETC,UAAAA,gBAAgB,EAAE;AAACC,YAAAA,MAAM,EAAE;AAAT;AAFT;AAPyB,OAAtC,CADK,CAAP;AAcD;;;EAtCOC,oB;;;8BAHWjB,gB,eAIA,kB;8BAJAA,gB,kBAKGF,Y","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayersList,\n UpdateParameters,\n DefaultProps\n} from '@deck.gl/core';\nimport QuadbinLayer, {QuadbinLayerProps} from './quadbin-layer';\nimport QuadbinTileset2D from './quadbin-tileset-2d';\nimport SpatialIndexTileLayer from './spatial-index-tile-layer';\nimport {hexToBigInt} from 'quadbin';\n\nexport const renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n const isBigInt = typeof data[0].id === 'bigint';\n return new QuadbinLayer(props, {\n getQuadbin: isBigInt ? d => d.id : d => hexToBigInt(d.id)\n });\n};\n\nconst defaultProps: DefaultProps<QuadbinTileLayerProps> = {\n aggregationResLevel: 6\n};\n\n/** All properties supported by QuadbinTileLayer. */\nexport type QuadbinTileLayerProps<DataT = any> = _QuadbinTileLayerProps<DataT> &\n CompositeLayerProps;\n\n/** Properties added by QuadbinTileLayer. */\ntype _QuadbinTileLayerProps<DataT> = QuadbinLayerProps<DataT> & {\n data: string;\n aggregationResLevel?: number;\n};\n\nexport default class QuadbinTileLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends CompositeLayer<ExtraProps & Required<_QuadbinTileLayerProps<DataT>>> {\n static layerName = 'QuadbinTileLayer';\n static defaultProps = defaultProps;\n\n state!: {\n tileJSON: any;\n data: any;\n };\n initializeState(): void {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({changeFlags}: UpdateParameters<this>): void {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = (tileJSON as any).tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n const {data, tileJSON} = this.state;\n const maxZoom = parseInt(tileJSON?.maxresolution);\n return [\n new SpatialIndexTileLayer(this.props, {\n id: `quadbin-tile-layer-${this.props.id}`,\n data,\n // TODO: Tileset2D should be generic over TileIndex type\n TilesetClass: QuadbinTileset2D as any,\n renderSubLayers,\n maxZoom,\n loadOptions: {\n ...this.getLoadOptions(),\n cartoSpatialTile: {scheme: 'quadbin'}\n }\n })\n ];\n }\n}\n"],"file":"quadbin-tile-layer.js"}
@@ -17,7 +17,7 @@ var _tileLoaderUtils = require("./tile-loader-utils");
17
17
 
18
18
  var _utils = require("../../utils");
19
19
 
20
- var VERSION = typeof "8.9.24" !== 'undefined' ? "8.9.24" : 'latest';
20
+ var VERSION = typeof "8.9.25" !== 'undefined' ? "8.9.25" : 'latest';
21
21
  var id = 'cartoRasterTile';
22
22
  var DEFAULT_OPTIONS = {
23
23
  cartoRasterTile: {
@@ -55,7 +55,7 @@ var CartoRasterTileLoader = {
55
55
  return parse;
56
56
  }(),
57
57
  parseSync: parseCartoRasterTile,
58
- worker: false,
58
+ worker: true,
59
59
  options: DEFAULT_OPTIONS
60
60
  };
61
61
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoRasterTile","workerUrl","CartoRasterTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoRasterTile","parseSync","worker","tile","TileReader","bands","blockHeight","blockWidth","numericProps","i","length","data","cells","properties"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AACA;;AAGA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,iBAAX;AAQA,IAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAE,yBAAaH,EAAb,EAAiBD,OAAjB;AADI;AADmC,CAAtD;AAMA,IAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAAE,EAAFA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CADf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KARyC;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,KAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAwBA,SAASa,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGiB;AACf,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMK,IAAI,GAAG,+BAASL,WAAT,EAAsBM,2BAAtB,CAAb;AACA,MAAOC,KAAP,GAAyCF,IAAzC,CAAOE,KAAP;AAAA,MAAcC,WAAd,GAAyCH,IAAzC,CAAcG,WAAd;AAAA,MAA2BC,UAA3B,GAAyCJ,IAAzC,CAA2BI,UAA3B;AACA,MAAMC,YAAY,GAAG,EAArB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACK,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,mBAAqBJ,KAAK,CAACI,CAAD,CAA1B;AAAA,QAAOlB,IAAP,YAAOA,IAAP;AAAA,QAAaoB,IAAb,YAAaA,IAAb;AACAH,IAAAA,YAAY,CAACjB,IAAD,CAAZ,GAAqBoB,IAArB;AACD;;AACD,SAAO;AAACJ,IAAAA,UAAU,EAAVA,UAAD;AAAaD,IAAAA,WAAW,EAAXA,WAAb;AAA0BM,IAAAA,KAAK,EAAE;AAACJ,MAAAA,YAAY,EAAZA,YAAD;AAAeK,MAAAA,UAAU,EAAE;AAA3B;AAAjC,GAAP;AACD;;eAEcvB,qB","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {TileReader} from './carto-raster-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {NumericProps, Properties} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoRasterTile';\n\ntype CartoRasterTileLoaderOptions = LoaderOptions & {\n cartoRasterTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoRasterTileLoaderOptions = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoRasterTileLoader: LoaderWithParser = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoRasterTileLoaderOptions) =>\n parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: false, // TODO set to true once workers deployed to unpkg\n options: DEFAULT_OPTIONS\n};\n\nexport type Raster = {\n blockWidth: number;\n blockHeight: number;\n cells: {\n numericProps: NumericProps;\n properties: Properties[];\n };\n};\n\nfunction parseCartoRasterTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoRasterTileLoaderOptions\n): Raster | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const {bands, blockHeight, blockWidth} = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const {name, data} = bands[i];\n numericProps[name] = data;\n }\n return {blockWidth, blockHeight, cells: {numericProps, properties: []}};\n}\n\nexport default CartoRasterTileLoader;\n"],"file":"carto-raster-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-raster-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoRasterTile","workerUrl","CartoRasterTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoRasterTile","parseSync","worker","tile","TileReader","bands","blockHeight","blockWidth","numericProps","i","length","data","cells","properties"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AACA;;AAGA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,iBAAX;AAQA,IAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAE,yBAAaH,EAAb,EAAiBD,OAAjB;AADI;AADmC,CAAtD;AAMA,IAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAAE,EAAFA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CADf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KARyC;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,IAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAwBA,SAASa,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGiB;AACf,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMK,IAAI,GAAG,+BAASL,WAAT,EAAsBM,2BAAtB,CAAb;AACA,MAAOC,KAAP,GAAyCF,IAAzC,CAAOE,KAAP;AAAA,MAAcC,WAAd,GAAyCH,IAAzC,CAAcG,WAAd;AAAA,MAA2BC,UAA3B,GAAyCJ,IAAzC,CAA2BI,UAA3B;AACA,MAAMC,YAAY,GAAG,EAArB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAACK,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,mBAAqBJ,KAAK,CAACI,CAAD,CAA1B;AAAA,QAAOlB,IAAP,YAAOA,IAAP;AAAA,QAAaoB,IAAb,YAAaA,IAAb;AACAH,IAAAA,YAAY,CAACjB,IAAD,CAAZ,GAAqBoB,IAArB;AACD;;AACD,SAAO;AAACJ,IAAAA,UAAU,EAAVA,UAAD;AAAaD,IAAAA,WAAW,EAAXA,WAAb;AAA0BM,IAAAA,KAAK,EAAE;AAACJ,MAAAA,YAAY,EAAZA,YAAD;AAAeK,MAAAA,UAAU,EAAE;AAA3B;AAAjC,GAAP;AACD;;eAEcvB,qB","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {TileReader} from './carto-raster-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {NumericProps, Properties} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoRasterTile';\n\ntype CartoRasterTileLoaderOptions = LoaderOptions & {\n cartoRasterTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoRasterTileLoaderOptions = {\n cartoRasterTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoRasterTileLoader: LoaderWithParser = {\n name: 'CARTO Raster Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-raster-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoRasterTileLoaderOptions) =>\n parseCartoRasterTile(arrayBuffer, options),\n parseSync: parseCartoRasterTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nexport type Raster = {\n blockWidth: number;\n blockHeight: number;\n cells: {\n numericProps: NumericProps;\n properties: Properties[];\n };\n};\n\nfunction parseCartoRasterTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoRasterTileLoaderOptions\n): Raster | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n const {bands, blockHeight, blockWidth} = tile;\n const numericProps = {};\n for (let i = 0; i < bands.length; i++) {\n const {name, data} = bands[i];\n numericProps[name] = data;\n }\n return {blockWidth, blockHeight, cells: {numericProps, properties: []}};\n}\n\nexport default CartoRasterTileLoader;\n"],"file":"carto-raster-tile-loader.js"}
@@ -19,7 +19,7 @@ var _utils = require("../../utils");
19
19
 
20
20
  var _spatialjsonUtils = require("./spatialjson-utils");
21
21
 
22
- var VERSION = typeof "8.9.24" !== 'undefined' ? "8.9.24" : 'latest';
22
+ var VERSION = typeof "8.9.25" !== 'undefined' ? "8.9.25" : 'latest';
23
23
  var id = 'cartoSpatialTile';
24
24
  var DEFAULT_OPTIONS = {
25
25
  cartoSpatialTile: {
@@ -58,7 +58,7 @@ var CartoSpatialTileLoader = {
58
58
  return parse;
59
59
  }(),
60
60
  parseSync: parseCartoSpatialTile,
61
- worker: false,
61
+ worker: true,
62
62
  options: DEFAULT_OPTIONS
63
63
  };
64
64
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoSpatialTile","scheme","workerUrl","CartoSpatialTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","worker","tile","TileReader","cells","data"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,kBAAX;AASA,IAAMC,eAA8C,GAAG;AACrDC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,MAAM,EAAE,SADQ;AAEhBC,IAAAA,SAAS,EAAE,yBAAaJ,EAAb,EAAiBD,OAAjB;AAFK;AADmC,CAAvD;AAOA,IAAMM,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAER,OAFsC;AAG/CC,EAAAA,EAAE,EAAFA,EAH+C;AAI/CQ,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CADhB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAR0C;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CE,EAAAA,MAAM,EAAE,KAXuC;AAY/CH,EAAAA,OAAO,EAAEb;AAZsC,CAAjD;;AAeA,SAASc,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AAAA;;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMK,IAAU,GAAG,+BAASL,WAAT,EAAsBM,4BAAtB,CAAnB;AAEA,MAAOC,KAAP,GAAgBF,IAAhB,CAAOE,KAAP;AACA,MAAMjB,MAAM,GAAGW,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEZ,gBAAZ,0DAAG,sBAA2BC,MAA1C;AACA,MAAMkB,IAAI,GAAG;AAACD,IAAAA,KAAK,EAALA,KAAD;AAAQjB,IAAAA,MAAM,EAANA;AAAR,GAAb;AAEA,SAAO,2CAAoBkB,IAApB,CAAP;AACD;;eAEchB,sB","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {IndexScheme, binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoSpatialTile';\n\ntype CartoSpatialTileLoaderOptions = LoaderOptions & {\n cartoSpatialTile?: {\n scheme: IndexScheme;\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoSpatialTileLoaderOptions = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoSpatialTileLoaderOptions) =>\n parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: false, // TODO set to true once workers deployed to unpkg\n options: DEFAULT_OPTIONS\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoSpatialTileLoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = {cells, scheme};\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-spatial-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoSpatialTile","scheme","workerUrl","CartoSpatialTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoSpatialTile","parseSync","worker","tile","TileReader","cells","data"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,kBAAX;AASA,IAAMC,eAA8C,GAAG;AACrDC,EAAAA,gBAAgB,EAAE;AAChBC,IAAAA,MAAM,EAAE,SADQ;AAEhBC,IAAAA,SAAS,EAAE,yBAAaJ,EAAb,EAAiBD,OAAjB;AAFK;AADmC,CAAvD;AAOA,IAAMM,sBAAwC,GAAG;AAC/CC,EAAAA,IAAI,EAAE,oBADyC;AAE/CC,EAAAA,OAAO,EAAER,OAFsC;AAG/CC,EAAAA,EAAE,EAAFA,EAH+C;AAI/CQ,EAAAA,MAAM,EAAE,OAJuC;AAK/CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALmC;AAM/CC,EAAAA,SAAS,EAAE,CAAC,oCAAD,CANoC;AAO/CC,EAAAA,QAAQ,EAAE,UAPqC;AAQ/CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,qBAAqB,CAACF,WAAD,EAAcC,OAAd,CADhB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAR0C;AAU/CE,EAAAA,SAAS,EAAED,qBAVoC;AAW/CE,EAAAA,MAAM,EAAE,IAXuC;AAY/CH,EAAAA,OAAO,EAAEb;AAZsC,CAAjD;;AAeA,SAASc,qBAAT,CACEF,WADF,EAEEC,OAFF,EAGsB;AAAA;;AACpB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMK,IAAU,GAAG,+BAASL,WAAT,EAAsBM,4BAAtB,CAAnB;AAEA,MAAOC,KAAP,GAAgBF,IAAhB,CAAOE,KAAP;AACA,MAAMjB,MAAM,GAAGW,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEZ,gBAAZ,0DAAG,sBAA2BC,MAA1C;AACA,MAAMkB,IAAI,GAAG;AAACD,IAAAA,KAAK,EAALA,KAAD;AAAQjB,IAAAA,MAAM,EAANA;AAAR,GAAb;AAEA,SAAO,2CAAoBkB,IAApB,CAAP;AACD;;eAEchB,sB","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\n\nimport {Tile, TileReader} from './carto-spatial-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\nimport {IndexScheme, binaryToSpatialjson, SpatialJson} from './spatialjson-utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoSpatialTile';\n\ntype CartoSpatialTileLoaderOptions = LoaderOptions & {\n cartoSpatialTile?: {\n scheme: IndexScheme;\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoSpatialTileLoaderOptions = {\n cartoSpatialTile: {\n scheme: 'quadbin',\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoSpatialTileLoader: LoaderWithParser = {\n name: 'CARTO Spatial Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-spatial-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoSpatialTileLoaderOptions) =>\n parseCartoSpatialTile(arrayBuffer, options),\n parseSync: parseCartoSpatialTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction parseCartoSpatialTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoSpatialTileLoaderOptions\n): SpatialJson | null {\n if (!arrayBuffer) return null;\n const tile: Tile = parsePbf(arrayBuffer, TileReader);\n\n const {cells} = tile;\n const scheme = options?.cartoSpatialTile?.scheme;\n const data = {cells, scheme};\n\n return binaryToSpatialjson(data);\n}\n\nexport default CartoSpatialTileLoader;\n"],"file":"carto-spatial-tile-loader.js"}
@@ -11,13 +11,15 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
 
12
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
13
 
14
+ var _earcut = _interopRequireDefault(require("earcut"));
15
+
14
16
  var _cartoTile = require("./carto-tile");
15
17
 
16
18
  var _tileLoaderUtils = require("./tile-loader-utils");
17
19
 
18
20
  var _utils = require("../../utils");
19
21
 
20
- var VERSION = typeof "8.9.24" !== 'undefined' ? "8.9.24" : 'latest';
22
+ var VERSION = typeof "8.9.25" !== 'undefined' ? "8.9.25" : 'latest';
21
23
  var id = 'cartoVectorTile';
22
24
  var DEFAULT_OPTIONS = {
23
25
  cartoVectorTile: {
@@ -55,13 +57,62 @@ var CartoVectorTileLoader = {
55
57
  return parse;
56
58
  }(),
57
59
  parseSync: parseCartoVectorTile,
58
- worker: false,
60
+ worker: true,
59
61
  options: DEFAULT_OPTIONS
60
62
  };
61
63
 
64
+ function triangulatePolygon(polygons, target, _ref) {
65
+ var startPosition = _ref.startPosition,
66
+ endPosition = _ref.endPosition,
67
+ indices = _ref.indices;
68
+ var coordLength = polygons.positions.size;
69
+ var start = startPosition * coordLength;
70
+ var end = endPosition * coordLength;
71
+ var polygonPositions = polygons.positions.value.subarray(start, end);
72
+ var holes = indices.slice(1).map(function (n) {
73
+ return n - startPosition;
74
+ });
75
+ var triangles = (0, _earcut.default)(polygonPositions, holes, coordLength);
76
+
77
+ for (var t = 0, tl = triangles.length; t < tl; ++t) {
78
+ target.push(startPosition + triangles[t]);
79
+ }
80
+ }
81
+
82
+ function triangulate(polygons) {
83
+ var polygonIndices = polygons.polygonIndices,
84
+ positions = polygons.positions,
85
+ primitivePolygonIndices = polygons.primitivePolygonIndices;
86
+ var triangles = [];
87
+ var rangeStart = 0;
88
+
89
+ for (var i = 0; i < polygonIndices.value.length - 1; i++) {
90
+ var startPosition = polygonIndices.value[i];
91
+ var endPosition = polygonIndices.value[i + 1];
92
+ var rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);
93
+ var indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);
94
+ rangeStart = rangeEnd;
95
+ triangulatePolygon(polygons, triangles, {
96
+ startPosition: startPosition,
97
+ endPosition: endPosition,
98
+ indices: indices
99
+ });
100
+ }
101
+
102
+ polygons.triangles = {
103
+ value: new Uint32Array(triangles),
104
+ size: 1
105
+ };
106
+ }
107
+
62
108
  function parseCartoVectorTile(arrayBuffer, options) {
63
109
  if (!arrayBuffer) return null;
64
110
  var tile = (0, _tileLoaderUtils.parsePbf)(arrayBuffer, _cartoTile.TileReader);
111
+
112
+ if (tile.polygons && !tile.polygons.triangles) {
113
+ triangulate(tile.polygons);
114
+ }
115
+
65
116
  return tile;
66
117
  }
67
118
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/layers/schema/carto-vector-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoVectorTile","workerUrl","CartoVectorTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoVectorTile","parseSync","worker","tile","TileReader"],"mappings":";;;;;;;;;;;;;AAGA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,iBAAX;AAQA,IAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAE,yBAAaH,EAAb,EAAiBD,OAAjB;AADI;AADmC,CAAtD;AAMA,IAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAAE,EAAFA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CADf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KARyC;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,KAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAeA,SAASa,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGyB;AACvB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMK,IAAI,GAAG,+BAASL,WAAT,EAAsBM,qBAAtB,CAAb;AAGA,SAAOD,IAAP;AACD;;eAEcb,qB","sourcesContent":["import {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\n\nimport {TileReader} from './carto-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoVectorTile';\n\ntype CartoVectorTileLoaderOptions = LoaderOptions & {\n cartoVectorTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoVectorTileLoaderOptions = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoVectorTileLoader: LoaderWithParser = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoVectorTileLoaderOptions) =>\n parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: false, // TODO set to true once workers deployed to unpkg\n options: DEFAULT_OPTIONS\n};\n\nfunction parseCartoVectorTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoVectorTileLoaderOptions\n): BinaryFeatures | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n\n // Note: there is slight, difference in `numericProps` type, however geojson/mvtlayer can cope with this\n return tile as unknown as BinaryFeatures;\n}\n\nexport default CartoVectorTileLoader;\n"],"file":"carto-vector-tile-loader.js"}
1
+ {"version":3,"sources":["../../../../src/layers/schema/carto-vector-tile-loader.ts"],"names":["VERSION","id","DEFAULT_OPTIONS","cartoVectorTile","workerUrl","CartoVectorTileLoader","name","version","module","extensions","mimeTypes","category","parse","arrayBuffer","options","parseCartoVectorTile","parseSync","worker","triangulatePolygon","polygons","target","startPosition","endPosition","indices","coordLength","positions","size","start","end","polygonPositions","value","subarray","holes","slice","map","n","triangles","t","tl","length","push","triangulate","polygonIndices","primitivePolygonIndices","rangeStart","i","rangeEnd","indexOf","Uint32Array","tile","TileReader"],"mappings":";;;;;;;;;;;;;AAAA;;AAIA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,QAAnE;AACA,IAAMC,EAAE,GAAG,iBAAX;AAQA,IAAMC,eAA6C,GAAG;AACpDC,EAAAA,eAAe,EAAE;AACfC,IAAAA,SAAS,EAAE,yBAAaH,EAAb,EAAiBD,OAAjB;AADI;AADmC,CAAtD;AAMA,IAAMK,qBAAuC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,mBADwC;AAE9CC,EAAAA,OAAO,EAAEP,OAFqC;AAG9CC,EAAAA,EAAE,EAAFA,EAH8C;AAI9CO,EAAAA,MAAM,EAAE,OAJsC;AAK9CC,EAAAA,UAAU,EAAE,CAAC,KAAD,CALkC;AAM9CC,EAAAA,SAAS,EAAE,CAAC,mCAAD,CANmC;AAO9CC,EAAAA,QAAQ,EAAE,UAPoC;AAQ9CC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBC,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CACLC,oBAAoB,CAACF,WAAD,EAAcC,OAAd,CADf;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KARyC;AAU9CE,EAAAA,SAAS,EAAED,oBAVmC;AAW9CE,EAAAA,MAAM,EAAE,IAXsC;AAY9CH,EAAAA,OAAO,EAAEZ;AAZqC,CAAhD;;AAeA,SAASgB,kBAAT,CACEC,QADF,EAEEC,MAFF,QAQQ;AAAA,MAJJC,aAII,QAJJA,aAII;AAAA,MAHJC,WAGI,QAHJA,WAGI;AAAA,MAFJC,OAEI,QAFJA,OAEI;AACN,MAAMC,WAAW,GAAGL,QAAQ,CAACM,SAAT,CAAmBC,IAAvC;AACA,MAAMC,KAAK,GAAGN,aAAa,GAAGG,WAA9B;AACA,MAAMI,GAAG,GAAGN,WAAW,GAAGE,WAA1B;AAGA,MAAMK,gBAAgB,GAAGV,QAAQ,CAACM,SAAT,CAAmBK,KAAnB,CAAyBC,QAAzB,CAAkCJ,KAAlC,EAAyCC,GAAzC,CAAzB;AAGA,MAAMI,KAAK,GAAGT,OAAO,CAACU,KAAR,CAAc,CAAd,EAAiBC,GAAjB,CAAqB,UAACC,CAAD;AAAA,WAAeA,CAAC,GAAGd,aAAnB;AAAA,GAArB,CAAd;AAGA,MAAMe,SAAS,GAAG,qBAAOP,gBAAP,EAAyBG,KAAzB,EAAgCR,WAAhC,CAAlB;;AAIA,OAAK,IAAIa,CAAC,GAAG,CAAR,EAAWC,EAAE,GAAGF,SAAS,CAACG,MAA/B,EAAuCF,CAAC,GAAGC,EAA3C,EAA+C,EAAED,CAAjD,EAAoD;AAClDjB,IAAAA,MAAM,CAACoB,IAAP,CAAYnB,aAAa,GAAGe,SAAS,CAACC,CAAD,CAArC;AACD;AACF;;AAED,SAASI,WAAT,CAAqBtB,QAArB,EAAsD;AACpD,MAAOuB,cAAP,GAA6DvB,QAA7D,CAAOuB,cAAP;AAAA,MAAuBjB,SAAvB,GAA6DN,QAA7D,CAAuBM,SAAvB;AAAA,MAAkCkB,uBAAlC,GAA6DxB,QAA7D,CAAkCwB,uBAAlC;AACA,MAAMP,SAAS,GAAG,EAAlB;AAEA,MAAIQ,UAAU,GAAG,CAAjB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,cAAc,CAACZ,KAAf,CAAqBS,MAArB,GAA8B,CAAlD,EAAqDM,CAAC,EAAtD,EAA0D;AACxD,QAAMxB,aAAa,GAAGqB,cAAc,CAACZ,KAAf,CAAqBe,CAArB,CAAtB;AACA,QAAMvB,WAAW,GAAGoB,cAAc,CAACZ,KAAf,CAAqBe,CAAC,GAAG,CAAzB,CAApB;AAGA,QAAMC,QAAQ,GAAGH,uBAAuB,CAACb,KAAxB,CAA8BiB,OAA9B,CAAsCzB,WAAtC,CAAjB;AACA,QAAMC,OAAO,GAAGoB,uBAAuB,CAACb,KAAxB,CAA8BC,QAA9B,CAAuCa,UAAvC,EAAmDE,QAAnD,CAAhB;AACAF,IAAAA,UAAU,GAAGE,QAAb;AAEA5B,IAAAA,kBAAkB,CAACC,QAAD,EAAWiB,SAAX,EAAsB;AAACf,MAAAA,aAAa,EAAbA,aAAD;AAAgBC,MAAAA,WAAW,EAAXA,WAAhB;AAA6BC,MAAAA,OAAO,EAAPA;AAA7B,KAAtB,CAAlB;AACD;;AAEDJ,EAAAA,QAAQ,CAACiB,SAAT,GAAqB;AAACN,IAAAA,KAAK,EAAE,IAAIkB,WAAJ,CAAgBZ,SAAhB,CAAR;AAAoCV,IAAAA,IAAI,EAAE;AAA1C,GAArB;AACD;;AAED,SAASX,oBAAT,CACEF,WADF,EAEEC,OAFF,EAGyB;AACvB,MAAI,CAACD,WAAL,EAAkB,OAAO,IAAP;AAClB,MAAMoC,IAAI,GAAG,+BAASpC,WAAT,EAAsBqC,qBAAtB,CAAb;;AAEA,MAAID,IAAI,CAAC9B,QAAL,IAAiB,CAAC8B,IAAI,CAAC9B,QAAL,CAAciB,SAApC,EAA+C;AAC7CK,IAAAA,WAAW,CAACQ,IAAI,CAAC9B,QAAN,CAAX;AACD;;AAED,SAAO8B,IAAP;AACD;;eAEc5C,qB","sourcesContent":["import earcut from 'earcut';\nimport {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures, BinaryPolygonFeatures, TypedArray} from '@loaders.gl/schema';\n\nimport {TileReader} from './carto-tile';\nimport {parsePbf} from './tile-loader-utils';\nimport {getWorkerUrl} from '../../utils';\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\nconst id = 'cartoVectorTile';\n\ntype CartoVectorTileLoaderOptions = LoaderOptions & {\n cartoVectorTile?: {\n workerUrl: string;\n };\n};\n\nconst DEFAULT_OPTIONS: CartoVectorTileLoaderOptions = {\n cartoVectorTile: {\n workerUrl: getWorkerUrl(id, VERSION)\n }\n};\n\nconst CartoVectorTileLoader: LoaderWithParser = {\n name: 'CARTO Vector Tile',\n version: VERSION,\n id,\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/vnd.carto-vector-tile'],\n category: 'geometry',\n parse: async (arrayBuffer, options?: CartoVectorTileLoaderOptions) =>\n parseCartoVectorTile(arrayBuffer, options),\n parseSync: parseCartoVectorTile,\n worker: true,\n options: DEFAULT_OPTIONS\n};\n\nfunction triangulatePolygon(\n polygons: BinaryPolygonFeatures,\n target: number[],\n {\n startPosition,\n endPosition,\n indices\n }: {startPosition: number; endPosition: number; indices: TypedArray}\n): void {\n const coordLength = polygons.positions.size;\n const start = startPosition * coordLength;\n const end = endPosition * coordLength;\n\n // Extract positions and holes for just this polygon\n const polygonPositions = polygons.positions.value.subarray(start, end);\n\n // Holes are referenced relative to outer polygon\n const holes = indices.slice(1).map((n: number) => n - startPosition);\n\n // Compute triangulation\n const triangles = earcut(polygonPositions, holes, coordLength);\n\n // Indices returned by triangulation are relative to start\n // of polygon, so we need to offset\n for (let t = 0, tl = triangles.length; t < tl; ++t) {\n target.push(startPosition + triangles[t]);\n }\n}\n\nfunction triangulate(polygons: BinaryPolygonFeatures) {\n const {polygonIndices, positions, primitivePolygonIndices} = polygons;\n const triangles = [];\n\n let rangeStart = 0;\n for (let i = 0; i < polygonIndices.value.length - 1; i++) {\n const startPosition = polygonIndices.value[i];\n const endPosition = polygonIndices.value[i + 1];\n\n // Extract hole indices between start & end position\n const rangeEnd = primitivePolygonIndices.value.indexOf(endPosition);\n const indices = primitivePolygonIndices.value.subarray(rangeStart, rangeEnd);\n rangeStart = rangeEnd;\n\n triangulatePolygon(polygons, triangles, {startPosition, endPosition, indices});\n }\n\n polygons.triangles = {value: new Uint32Array(triangles), size: 1};\n}\n\nfunction parseCartoVectorTile(\n arrayBuffer: ArrayBuffer,\n options?: CartoVectorTileLoaderOptions\n): BinaryFeatures | null {\n if (!arrayBuffer) return null;\n const tile = parsePbf(arrayBuffer, TileReader);\n\n if (tile.polygons && !tile.polygons.triangles) {\n triangulate(tile.polygons);\n }\n\n return tile;\n}\n\nexport default CartoVectorTileLoader;\n"],"file":"carto-vector-tile-loader.js"}
@@ -6,7 +6,7 @@ import { log } from '@deck.gl/core';
6
6
  import { assert } from '../utils';
7
7
  const MAX_GET_LENGTH = 8192;
8
8
  const DEFAULT_CLIENT = 'deck-gl-carto';
9
- const V3_MINOR_VERSION = '3.1';
9
+ const V3_MINOR_VERSION = '3.2';
10
10
 
11
11
  async function request({
12
12
  method,