@deck.gl/carto 9.0.0-alpha.3 → 9.0.0-alpha.5

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 (49) hide show
  1. package/dist/cartoRasterTile-worker.js +1 -1
  2. package/dist/cartoSpatialTile-worker.js +1 -1
  3. package/dist/cartoVectorTile-worker.js +1 -1
  4. package/dist/dist.dev.js +33 -25
  5. package/dist/es5/api/fetch-map.js +16 -8
  6. package/dist/es5/api/fetch-map.js.map +1 -1
  7. package/dist/es5/layers/schema/carto-raster-tile-loader.js +1 -1
  8. package/dist/es5/layers/schema/carto-spatial-tile-loader.js +1 -1
  9. package/dist/es5/layers/schema/carto-vector-tile-loader.js +1 -1
  10. package/dist/es5/layers/utils.js +3 -3
  11. package/dist/es5/layers/utils.js.map +1 -1
  12. package/dist/es5/layers/vector-tile-layer.js +1 -1
  13. package/dist/es5/layers/vector-tile-layer.js.map +1 -1
  14. package/dist/es5/sources/boundary-query-source.js.map +1 -1
  15. package/dist/esm/api/fetch-map.js +13 -4
  16. package/dist/esm/api/fetch-map.js.map +1 -1
  17. package/dist/esm/layers/schema/carto-raster-tile-loader.js +1 -1
  18. package/dist/esm/layers/schema/carto-spatial-tile-loader.js +1 -1
  19. package/dist/esm/layers/schema/carto-vector-tile-loader.js +1 -1
  20. package/dist/esm/layers/utils.js +4 -3
  21. package/dist/esm/layers/utils.js.map +1 -1
  22. package/dist/esm/layers/vector-tile-layer.js +1 -1
  23. package/dist/esm/layers/vector-tile-layer.js.map +1 -1
  24. package/dist/esm/sources/boundary-query-source.js.map +1 -1
  25. package/dist.min.js +40 -40
  26. package/package.json +8 -7
  27. package/src/api/fetch-map.ts +9 -2
  28. package/src/layers/utils.ts +4 -2
  29. package/src/layers/vector-tile-layer.ts +1 -1
  30. package/src/sources/boundary-query-source.ts +1 -1
  31. package/typed/api/fetch-map.d.ts.map +1 -1
  32. package/typed/api/layer-map.d.ts +1 -1
  33. package/typed/layers/h3-tile-layer.d.ts +2 -2
  34. package/typed/layers/h3-tileset-2d.d.ts +1 -1
  35. package/typed/layers/point-label-layer.d.ts +2 -2
  36. package/typed/layers/quadbin-layer.d.ts +2 -2
  37. package/typed/layers/quadbin-tile-layer.d.ts +1 -1
  38. package/typed/layers/quadbin-tileset-2d.d.ts +1 -1
  39. package/typed/layers/raster-layer.d.ts +2 -2
  40. package/typed/layers/raster-tile-layer.d.ts +1 -1
  41. package/typed/layers/spatial-index-tile-layer.d.ts +3 -3
  42. package/typed/layers/utils.d.ts.map +1 -1
  43. package/typed/layers/vector-tile-layer.d.ts +3 -3
  44. package/typed/sources/boundary-query-source.d.ts +1 -1
  45. package/typed/sources/boundary-query-source.d.ts.map +1 -1
  46. package/typed/style/color-bins-style.d.ts +1 -1
  47. package/typed/style/color-categories-style.d.ts +1 -1
  48. package/typed/style/color-continuous-style.d.ts +1 -1
  49. package/typed/package.json +0 -6
@@ -1053,7 +1053,7 @@
1053
1053
  }
1054
1054
 
1055
1055
  // src/layers/schema/carto-raster-tile-loader.ts
1056
- var VERSION = true ? "9.0.0-alpha.3" : "latest";
1056
+ var VERSION = true ? "9.0.0-alpha.5" : "latest";
1057
1057
  var id = "cartoRasterTile";
1058
1058
  var DEFAULT_OPTIONS = {
1059
1059
  cartoRasterTile: {
@@ -1440,7 +1440,7 @@
1440
1440
  }
1441
1441
 
1442
1442
  // src/layers/schema/carto-spatial-tile-loader.ts
1443
- var VERSION = true ? "9.0.0-alpha.3" : "latest";
1443
+ var VERSION = true ? "9.0.0-alpha.5" : "latest";
1444
1444
  var id = "cartoSpatialTile";
1445
1445
  var DEFAULT_OPTIONS = {
1446
1446
  cartoSpatialTile: {
@@ -1668,7 +1668,7 @@
1668
1668
  }
1669
1669
 
1670
1670
  // src/layers/schema/carto-vector-tile-loader.ts
1671
- var VERSION = true ? "9.0.0-alpha.3" : "latest";
1671
+ var VERSION = true ? "9.0.0-alpha.5" : "latest";
1672
1672
  var id = "cartoVectorTile";
1673
1673
  var DEFAULT_OPTIONS = {
1674
1674
  cartoVectorTile: {
package/dist/dist.dev.js CHANGED
@@ -9143,7 +9143,7 @@ var __exports__ = (() => {
9143
9143
  });
9144
9144
 
9145
9145
  // src/layers/h3-tile-layer.ts
9146
- var import_core4 = __toESM(require_core());
9146
+ var import_core5 = __toESM(require_core());
9147
9147
  var import_geo_layers3 = __toESM(require_geo_layers());
9148
9148
 
9149
9149
  // src/layers/h3-tileset-2d.ts
@@ -9368,7 +9368,7 @@ var __exports__ = (() => {
9368
9368
  }
9369
9369
 
9370
9370
  // src/layers/schema/carto-raster-tile-loader.ts
9371
- var VERSION = true ? "9.0.0-alpha.3" : "latest";
9371
+ var VERSION = true ? "9.0.0-alpha.5" : "latest";
9372
9372
  var id = "cartoRasterTile";
9373
9373
  var DEFAULT_OPTIONS = {
9374
9374
  cartoRasterTile: {
@@ -9767,7 +9767,7 @@ var __exports__ = (() => {
9767
9767
  }
9768
9768
 
9769
9769
  // src/layers/schema/carto-spatial-tile-loader.ts
9770
- var VERSION2 = true ? "9.0.0-alpha.3" : "latest";
9770
+ var VERSION2 = true ? "9.0.0-alpha.5" : "latest";
9771
9771
  var id2 = "cartoSpatialTile";
9772
9772
  var DEFAULT_OPTIONS2 = {
9773
9773
  cartoSpatialTile: {
@@ -9871,6 +9871,7 @@ var __exports__ = (() => {
9871
9871
 
9872
9872
  // src/layers/utils.ts
9873
9873
  var import_core3 = __toESM(require_core());
9874
+ var import_core4 = __toESM(require_core());
9874
9875
  function injectAccessToken(loadOptions, accessToken) {
9875
9876
  if (!loadOptions?.fetch?.headers?.Authorization) {
9876
9877
  loadOptions.fetch = {
@@ -9889,9 +9890,10 @@ var __exports__ = (() => {
9889
9890
  ...rest
9890
9891
  } of properties.properties) {
9891
9892
  if (geoid in mapping) {
9892
- throw new Error(`Duplicate geoid key in mapping: ${geoid}`);
9893
+ import_core3.log.warn(`Duplicate geoid key in boundary mapping, using first occurance`)();
9894
+ } else {
9895
+ mapping[geoid] = rest;
9893
9896
  }
9894
- mapping[geoid] = rest;
9895
9897
  }
9896
9898
  for (const type of ["points", "lines", "polygons"]) {
9897
9899
  const geom = geometry[type];
@@ -9941,7 +9943,7 @@ var __exports__ = (() => {
9941
9943
  value: null,
9942
9944
  validate: (value, propType) => propType.optional && value === null || typeof value === "object" && Array.isArray(value.tiles) && value.tiles.every((url) => typeof url === "string"),
9943
9945
  equal: (value1, value2) => {
9944
- return (0, import_core3._deepEqual)(value1, value2, 2);
9946
+ return (0, import_core4._deepEqual)(value1, value2, 2);
9945
9947
  },
9946
9948
  async: true
9947
9949
  };
@@ -9965,7 +9967,7 @@ var __exports__ = (() => {
9965
9967
  var defaultProps2 = {
9966
9968
  data: TilejsonPropType
9967
9969
  };
9968
- var H3TileLayer = class extends import_core4.CompositeLayer {
9970
+ var H3TileLayer = class extends import_core5.CompositeLayer {
9969
9971
  initializeState() {
9970
9972
  import_geo_layers3.H3HexagonLayer._checkH3Lib();
9971
9973
  }
@@ -10017,7 +10019,7 @@ var __exports__ = (() => {
10017
10019
  __publicField(H3TileLayer, "defaultProps", defaultProps2);
10018
10020
 
10019
10021
  // src/layers/point-label-layer.ts
10020
- var import_core5 = __toESM(require_core());
10022
+ var import_core6 = __toESM(require_core());
10021
10023
  var import_layers = __toESM(require_layers());
10022
10024
  var [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];
10023
10025
  var EnhancedTextBackgroundLayer = class extends import_layers._TextBackgroundLayer {
@@ -10058,7 +10060,7 @@ var __exports__ = (() => {
10058
10060
  value: 1
10059
10061
  }
10060
10062
  };
10061
- var PointLabelLayer = class extends import_core5.CompositeLayer {
10063
+ var PointLabelLayer = class extends import_core6.CompositeLayer {
10062
10064
  calculatePixelOffset(secondary) {
10063
10065
  const {
10064
10066
  getTextAnchor: anchor,
@@ -10198,7 +10200,7 @@ var __exports__ = (() => {
10198
10200
  __publicField(PointLabelLayer, "defaultProps", defaultProps3);
10199
10201
 
10200
10202
  // src/layers/quadbin-tile-layer.ts
10201
- var import_core6 = __toESM(require_core());
10203
+ var import_core7 = __toESM(require_core());
10202
10204
 
10203
10205
  // src/layers/quadbin-layer.ts
10204
10206
  var import_geo_layers4 = __toESM(require_geo_layers());
@@ -10319,7 +10321,7 @@ var __exports__ = (() => {
10319
10321
  var defaultProps5 = {
10320
10322
  data: TilejsonPropType
10321
10323
  };
10322
- var QuadbinTileLayer = class extends import_core6.CompositeLayer {
10324
+ var QuadbinTileLayer = class extends import_core7.CompositeLayer {
10323
10325
  getLoadOptions() {
10324
10326
  const loadOptions = super.getLoadOptions() || {};
10325
10327
  const tileJSON = this.props.data;
@@ -10352,10 +10354,10 @@ var __exports__ = (() => {
10352
10354
  __publicField(QuadbinTileLayer, "defaultProps", defaultProps5);
10353
10355
 
10354
10356
  // src/layers/raster-tile-layer.ts
10355
- var import_core8 = __toESM(require_core());
10357
+ var import_core9 = __toESM(require_core());
10356
10358
 
10357
10359
  // src/layers/raster-layer.ts
10358
- var import_core7 = __toESM(require_core());
10360
+ var import_core8 = __toESM(require_core());
10359
10361
  var import_layers2 = __toESM(require_layers());
10360
10362
 
10361
10363
  // src/layers/raster-layer-vertex.glsl.ts
@@ -10500,7 +10502,7 @@ void main(void) {
10500
10502
  }
10501
10503
  };
10502
10504
  __publicField(RasterColumnLayer, "layerName", "RasterColumnLayer");
10503
- var RasterLayer = class extends import_core7.CompositeLayer {
10505
+ var RasterLayer = class extends import_core8.CompositeLayer {
10504
10506
  renderLayers() {
10505
10507
  const {
10506
10508
  data,
@@ -10568,7 +10570,7 @@ void main(void) {
10568
10570
  var defaultProps7 = {
10569
10571
  data: TilejsonPropType
10570
10572
  };
10571
- var RasterTileLayer = class extends import_core8.CompositeLayer {
10573
+ var RasterTileLayer = class extends import_core9.CompositeLayer {
10572
10574
  getLoadOptions() {
10573
10575
  const loadOptions = super.getLoadOptions() || {};
10574
10576
  const tileJSON = this.props.data;
@@ -10599,7 +10601,7 @@ void main(void) {
10599
10601
  __publicField(RasterTileLayer, "defaultProps", defaultProps7);
10600
10602
 
10601
10603
  // src/layers/vector-tile-layer.ts
10602
- var import_core9 = __toESM(require_core2());
10604
+ var import_core10 = __toESM(require_core2());
10603
10605
 
10604
10606
  // src/layers/schema/carto-properties-tile.ts
10605
10607
  var TileReader4 = class {
@@ -10642,7 +10644,7 @@ void main(void) {
10642
10644
 
10643
10645
  // src/layers/schema/carto-vector-tile-loader.ts
10644
10646
  var import_earcut = __toESM(require_earcut());
10645
- var VERSION3 = true ? "9.0.0-alpha.3" : "latest";
10647
+ var VERSION3 = true ? "9.0.0-alpha.5" : "latest";
10646
10648
  var id3 = "cartoVectorTile";
10647
10649
  var DEFAULT_OPTIONS3 = {
10648
10650
  cartoVectorTile: {
@@ -10917,7 +10919,7 @@ void main(void) {
10917
10919
  }
10918
10920
 
10919
10921
  // src/layers/vector-tile-layer.ts
10920
- (0, import_core9.registerLoaders)([carto_properties_tile_loader_default, carto_vector_tile_loader_default]);
10922
+ (0, import_core10.registerLoaders)([carto_properties_tile_loader_default, carto_vector_tile_loader_default]);
10921
10923
  var defaultProps8 = {
10922
10924
  ...import_geo_layers6.MVTLayer.defaultProps,
10923
10925
  data: TilejsonPropType,
@@ -10991,7 +10993,7 @@ void main(void) {
10991
10993
  const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);
10992
10994
  if (!geometry)
10993
10995
  return null;
10994
- return mergeBoundaryData(geometry, attributes);
10996
+ return attributes ? mergeBoundaryData(geometry, attributes) : geometry;
10995
10997
  }
10996
10998
  renderSubLayers(props) {
10997
10999
  if (props.data === null) {
@@ -13477,7 +13479,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13477
13479
  };
13478
13480
 
13479
13481
  // src/api/parse-map.ts
13480
- var import_core10 = __toESM(require_core());
13482
+ var import_core11 = __toESM(require_core());
13481
13483
 
13482
13484
  // src/api/layer-map.ts
13483
13485
  var import_moment_timezone = __toESM(require_moment_timezone2());
@@ -13996,7 +13998,7 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
13996
13998
  ...createLoadOptions(token)
13997
13999
  });
13998
14000
  } catch (e) {
13999
- import_core10.log.error(e.message)();
14001
+ import_core11.log.error(e.message)();
14000
14002
  return void 0;
14001
14003
  }
14002
14004
  })
@@ -14347,7 +14349,8 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14347
14349
  data,
14348
14350
  id: id4,
14349
14351
  source,
14350
- type
14352
+ type,
14353
+ queryParameters
14351
14354
  } = dataset;
14352
14355
  const errorContext = {
14353
14356
  requestType: "Tile stats",
@@ -14368,12 +14371,17 @@ ${formatErrorKey(key)}: ${errorContext[key]}`;
14368
14371
  const headers = {
14369
14372
  Authorization: `Bearer ${accessToken}`
14370
14373
  };
14374
+ const parameters = {};
14375
+ if (type === "query") {
14376
+ parameters.q = source;
14377
+ if (queryParameters) {
14378
+ parameters.queryParameters = JSON.stringify(queryParameters);
14379
+ }
14380
+ }
14371
14381
  const stats = await requestWithParameters({
14372
14382
  baseUrl: baseUrl2,
14373
14383
  headers,
14374
- parameters: type === "query" ? {
14375
- q: source
14376
- } : {},
14384
+ parameters,
14377
14385
  errorContext
14378
14386
  });
14379
14387
  const {
@@ -241,12 +241,12 @@ function _fetchTilestats(_x6, _x7, _x8, _x9) {
241
241
 
242
242
  function _fetchTilestats2() {
243
243
  _fetchTilestats2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(attribute, dataset, accessToken, apiBaseUrl) {
244
- var connection, data, id, source, type, errorContext, statsUrl, baseUrl, headers, stats, attributes, index;
244
+ var connection, data, id, source, type, queryParameters, errorContext, statsUrl, baseUrl, headers, parameters, stats, attributes, index;
245
245
  return _regenerator.default.wrap(function _callee2$(_context2) {
246
246
  while (1) {
247
247
  switch (_context2.prev = _context2.next) {
248
248
  case 0:
249
- connection = dataset.connectionName, data = dataset.data, id = dataset.id, source = dataset.source, type = dataset.type;
249
+ connection = dataset.connectionName, data = dataset.data, id = dataset.id, source = dataset.source, type = dataset.type, queryParameters = dataset.queryParameters;
250
250
  errorContext = {
251
251
  requestType: 'Tile stats',
252
252
  connection: connection,
@@ -274,17 +274,25 @@ function _fetchTilestats2() {
274
274
  headers = {
275
275
  Authorization: "Bearer ".concat(accessToken)
276
276
  };
277
- _context2.next = 10;
277
+ parameters = {};
278
+
279
+ if (type === 'query') {
280
+ parameters.q = source;
281
+
282
+ if (queryParameters) {
283
+ parameters.queryParameters = JSON.stringify(queryParameters);
284
+ }
285
+ }
286
+
287
+ _context2.next = 12;
278
288
  return (0, _requestWithParameters.requestWithParameters)({
279
289
  baseUrl: baseUrl,
280
290
  headers: headers,
281
- parameters: type === 'query' ? {
282
- q: source
283
- } : {},
291
+ parameters: parameters,
284
292
  errorContext: errorContext
285
293
  });
286
294
 
287
- case 10:
295
+ case 12:
288
296
  stats = _context2.sent;
289
297
  attributes = data.tilestats.layers[0].attributes;
290
298
  index = attributes.findIndex(function (d) {
@@ -293,7 +301,7 @@ function _fetchTilestats2() {
293
301
  attributes[index] = stats;
294
302
  return _context2.abrupt("return", true);
295
303
 
296
- case 15:
304
+ case 17:
297
305
  case "end":
298
306
  return _context2.stop();
299
307
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/fetch-map.ts"],"names":["_fetchMapDataset","dataset","accessToken","apiBaseUrl","clientId","headers","aggregationExp","aggregationResLevel","connectionName","columns","format","geoColumn","source","type","queryParameters","cache","globalOptions","tableName","data","split","spatialDataType","spatialDataColumn","options","sqlQuery","cacheChanged","value","_fetchTilestats","attribute","connection","id","errorContext","requestType","CartoAPIError","Error","statsUrl","baseUrl","Authorization","parameters","q","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","Object","keys","visualChannels","channel","name","find","dataId","push","filteredAttributes","a","fetchMap","DEFAULT_API_BASE_URL","cartoMapId","DEFAULT_CLIENT","mapsUrl","autoRefresh","onNewData","mapId","intervalId","setInterval","Date","toUTCString","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","includes","geojson","out","textLayers","pointType","props","length","window","FontFace","document","fonts","check","font","load","then","f","add"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_API_BASE_URL, DEFAULT_CLIENT} from './common';\nimport {buildMapsUrlFromBase, buildStatsUrlFromBase} from './endpoints';\nimport {\n GeojsonResult,\n JsonResult,\n TilejsonResult,\n h3QuerySource,\n h3TableSource,\n quadbinQuerySource,\n quadbinTableSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n} from '../sources';\nimport {parseMap} from './parse-map';\nimport {requestWithParameters} from './request-with-parameters';\nimport {assert} from '../utils';\nimport type {APIErrorContext, Format, MapType, QueryParameters} from './types';\n\ntype Dataset = {\n id: string;\n type: MapType;\n source: string;\n cache?: number;\n connectionName: string;\n geoColumn: string;\n data: TilejsonResult | GeojsonResult | JsonResult;\n columns: string[];\n format: Format;\n aggregationExp: string;\n aggregationResLevel: number;\n queryParameters: QueryParameters;\n};\n\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string,\n clientId?: string,\n headers?: Record<string, string>\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n\n const cache: {value?: number} = {};\n const globalOptions: any = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({...globalOptions, tableName: source});\n } else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = {...globalOptions, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await vectorTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await vectorQuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'h3') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await h3TableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await h3QuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'quadbin') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await quadbinTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await quadbinQuerySource({...options, sqlQuery: source, queryParameters});\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n\n return cacheChanged;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string\n) {\n const {connectionName: connection, data, id, source, type} = dataset;\n const errorContext: APIErrorContext = {requestType: 'Tile stats', connection, type, source};\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n\n const statsUrl = buildStatsUrlFromBase(apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === 'query') {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const headers = {Authorization: `Bearer ${accessToken}`};\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters: type === 'query' ? {q: source} : {},\n errorContext\n });\n\n // Replace tilestats for attribute with value from API\n const {attributes} = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token}: {datasets: Dataset[]; token: string},\n clientId: string,\n apiBaseUrl: string,\n headers?: Record<string, string>\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token}: {datasets: Dataset[]; keplerMapConfig: any; token: string},\n apiBaseUrl: string\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 && dataset.type !== 'tileset' && (dataset.data as TilejsonResult).tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {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, apiBaseUrl)\n );\n return await Promise.all(promises);\n}\n\nexport type FetchMapOptions = {\n apiBaseUrl?: string;\n cartoMapId: string;\n clientId?: string;\n headers?: Record<string, string>;\n mapsUrl?: string;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n};\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId = DEFAULT_CLIENT,\n headers = {},\n mapsUrl,\n autoRefresh,\n onNewData\n}: FetchMapOptions) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\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 baseUrl = `${mapsUrl || buildMapsUrlFromBase(apiBaseUrl)}/public/${cartoMapId}`;\n const errorContext: APIErrorContext = {requestType: 'Public map', mapId: cartoMapId};\n const map = await requestWithParameters({baseUrl, headers, 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, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\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, apiBaseUrl, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\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":"fetch-map.js"}
1
+ {"version":3,"sources":["../../../src/api/fetch-map.ts"],"names":["_fetchMapDataset","dataset","accessToken","apiBaseUrl","clientId","headers","aggregationExp","aggregationResLevel","connectionName","columns","format","geoColumn","source","type","queryParameters","cache","globalOptions","tableName","data","split","spatialDataType","spatialDataColumn","options","sqlQuery","cacheChanged","value","_fetchTilestats","attribute","connection","id","errorContext","requestType","CartoAPIError","Error","statsUrl","baseUrl","Authorization","parameters","q","JSON","stringify","stats","attributes","tilestats","layers","index","findIndex","d","fillInMapDatasets","datasets","token","promises","map","Promise","all","fillInTileStats","keplerMapConfig","config","visState","layer","Object","keys","visualChannels","channel","name","find","dataId","push","filteredAttributes","a","fetchMap","DEFAULT_API_BASE_URL","cartoMapId","DEFAULT_CLIENT","mapsUrl","autoRefresh","onNewData","mapId","intervalId","setInterval","Date","toUTCString","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","filter","geojsonDatasetIds","forEach","includes","geojson","out","textLayers","pointType","props","length","window","FontFace","document","fonts","check","font","load","then","f","add"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\n/**\n * Maps API Client for Carto 3\n */\nimport {CartoAPIError} from './carto-api-error';\nimport {DEFAULT_API_BASE_URL, DEFAULT_CLIENT} from './common';\nimport {buildMapsUrlFromBase, buildStatsUrlFromBase} from './endpoints';\nimport {\n GeojsonResult,\n JsonResult,\n TilejsonResult,\n h3QuerySource,\n h3TableSource,\n quadbinQuerySource,\n quadbinTableSource,\n vectorQuerySource,\n vectorTableSource,\n vectorTilesetSource\n} from '../sources';\nimport {parseMap} from './parse-map';\nimport {requestWithParameters} from './request-with-parameters';\nimport {assert} from '../utils';\nimport type {APIErrorContext, Format, MapType, QueryParameters} from './types';\n\ntype Dataset = {\n id: string;\n type: MapType;\n source: string;\n cache?: number;\n connectionName: string;\n geoColumn: string;\n data: TilejsonResult | GeojsonResult | JsonResult;\n columns: string[];\n format: Format;\n aggregationExp: string;\n aggregationResLevel: number;\n queryParameters: QueryParameters;\n};\n\n/* global clearInterval, setInterval, URL */\n/* eslint-disable complexity, max-statements */\nasync function _fetchMapDataset(\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string,\n clientId?: string,\n headers?: Record<string, string>\n) {\n const {\n aggregationExp,\n aggregationResLevel,\n connectionName,\n columns,\n format,\n geoColumn,\n source,\n type,\n queryParameters\n } = dataset;\n\n const cache: {value?: number} = {};\n const globalOptions: any = {\n accessToken,\n apiBaseUrl,\n cache,\n clientId,\n connectionName,\n format,\n headers\n };\n\n if (type === 'tileset') {\n // TODO do we want a generic tilesetSource?\n // @ts-ignore\n dataset.data = await vectorTilesetSource({...globalOptions, tableName: source});\n } else {\n const [spatialDataType, spatialDataColumn] = geoColumn ? geoColumn.split(':') : ['geom'];\n if (spatialDataType === 'geom') {\n const options = {...globalOptions, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await vectorTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await vectorQuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'h3') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await h3TableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await h3QuerySource({...options, sqlQuery: source, queryParameters});\n }\n } else if (spatialDataType === 'quadbin') {\n const options = {...globalOptions, aggregationExp, aggregationResLevel, spatialDataColumn};\n if (type === 'table') {\n dataset.data = await quadbinTableSource({...options, columns, tableName: source});\n } else if (type === 'query') {\n dataset.data = await quadbinQuerySource({...options, sqlQuery: source, queryParameters});\n }\n }\n }\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n\n return cacheChanged;\n}\n\nasync function _fetchTilestats(\n attribute,\n dataset: Dataset,\n accessToken: string,\n apiBaseUrl: string\n) {\n const {connectionName: connection, data, id, source, type, queryParameters} = dataset;\n const errorContext: APIErrorContext = {requestType: 'Tile stats', connection, type, source};\n if (!('tilestats' in data)) {\n throw new CartoAPIError(new Error(`Invalid dataset for tilestats: ${id}`), errorContext);\n }\n\n const statsUrl = buildStatsUrlFromBase(apiBaseUrl);\n let baseUrl = `${statsUrl}/${connection}/`;\n if (type === 'query') {\n baseUrl += attribute;\n } else {\n // MAP_TYPE.TABLE\n baseUrl += `${source}/${attribute}`;\n }\n\n const headers = {Authorization: `Bearer ${accessToken}`};\n const parameters: Record<string, string> = {};\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext\n });\n\n // Replace tilestats for attribute with value from API\n const {attributes} = data.tilestats.layers[0];\n const index = attributes.findIndex(d => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token}: {datasets: Dataset[]; token: string},\n clientId: string,\n apiBaseUrl: string,\n headers?: Record<string, string>\n) {\n const promises = datasets.map(dataset =>\n _fetchMapDataset(dataset, token, apiBaseUrl, clientId, headers)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig, token}: {datasets: Dataset[]; keplerMapConfig: any; token: string},\n apiBaseUrl: string\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 && dataset.type !== 'tileset' && (dataset.data as TilejsonResult).tilestats) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {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, apiBaseUrl)\n );\n return await Promise.all(promises);\n}\n\nexport type FetchMapOptions = {\n apiBaseUrl?: string;\n cartoMapId: string;\n clientId?: string;\n headers?: Record<string, string>;\n mapsUrl?: string;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n};\n\n/* eslint-disable max-statements */\nexport async function fetchMap({\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId = DEFAULT_CLIENT,\n headers = {},\n mapsUrl,\n autoRefresh,\n onNewData\n}: FetchMapOptions) {\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n assert(apiBaseUrl, 'Must define apiBaseUrl');\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 baseUrl = `${mapsUrl || buildMapsUrlFromBase(apiBaseUrl)}/public/${cartoMapId}`;\n const errorContext: APIErrorContext = {requestType: 'Public map', mapId: cartoMapId};\n const map = await requestWithParameters({baseUrl, headers, 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, apiBaseUrl, {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString()\n });\n if (onNewData && changed.some(v => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\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, apiBaseUrl, headers);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, apiBaseUrl);\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":"fetch-map.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 "9.0.0-alpha.3" !== 'undefined' ? "9.0.0-alpha.3" : 'latest';
20
+ var VERSION = typeof "9.0.0-alpha.5" !== 'undefined' ? "9.0.0-alpha.5" : 'latest';
21
21
  var id = 'cartoRasterTile';
22
22
  var DEFAULT_OPTIONS = {
23
23
  cartoRasterTile: {
@@ -19,7 +19,7 @@ var _utils = require("../../utils");
19
19
 
20
20
  var _spatialjsonUtils = require("./spatialjson-utils");
21
21
 
22
- var VERSION = typeof "9.0.0-alpha.3" !== 'undefined' ? "9.0.0-alpha.3" : 'latest';
22
+ var VERSION = typeof "9.0.0-alpha.5" !== 'undefined' ? "9.0.0-alpha.5" : 'latest';
23
23
  var id = 'cartoSpatialTile';
24
24
  var DEFAULT_OPTIONS = {
25
25
  cartoSpatialTile: {
@@ -19,7 +19,7 @@ var _tileLoaderUtils = require("./tile-loader-utils");
19
19
 
20
20
  var _utils = require("../../utils");
21
21
 
22
- var VERSION = typeof "9.0.0-alpha.3" !== 'undefined' ? "9.0.0-alpha.3" : 'latest';
22
+ var VERSION = typeof "9.0.0-alpha.5" !== 'undefined' ? "9.0.0-alpha.5" : 'latest';
23
23
  var id = 'cartoVectorTile';
24
24
  var DEFAULT_OPTIONS = {
25
25
  cartoVectorTile: {
@@ -56,10 +56,10 @@ function mergeBoundaryData(geometry, properties) {
56
56
  rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
57
57
 
58
58
  if (geoid in mapping) {
59
- throw new Error("Duplicate geoid key in mapping: ".concat(geoid));
59
+ _core.log.warn("Duplicate geoid key in boundary mapping, using first occurance")();
60
+ } else {
61
+ mapping[geoid] = rest;
60
62
  }
61
-
62
- mapping[geoid] = rest;
63
63
  }
64
64
  } catch (err) {
65
65
  _iterator.e(err);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/utils.ts"],"names":["injectAccessToken","loadOptions","accessToken","fetch","headers","Authorization","mergeBoundaryData","geometry","properties","mapping","geoid","rest","Error","type","geom","positions","value","length","map","globalFeatureIds","indices","pathIndices","polygonIndices","size","key","numericProps","sourceProp","TypedArray","constructor","destProp","i","featureId","startIndex","endIndex","fill","TilejsonPropType","validate","propType","optional","Array","isArray","tiles","every","url","equal","value1","value2","async"],"mappings":"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","sourcesContent":["import {Tile as PropertiesTile} from './schema/carto-properties-tile';\nimport {Tile as VectorTile} from './schema/carto-tile';\nimport {_deepEqual as deepEqual} from '@deck.gl/core';\nimport type {TilejsonResult} from '../sources/types';\n\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions: any, accessToken: string): void {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: {...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}`}\n };\n }\n}\n\nexport function mergeBoundaryData(geometry: VectorTile, properties: PropertiesTile): VectorTile {\n const mapping = {};\n for (const {geoid, ...rest} of properties.properties) {\n if (geoid in mapping) {\n throw new Error(`Duplicate geoid key in mapping: ${geoid}`);\n }\n mapping[geoid] = rest;\n }\n\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n\n geom.properties = geom.properties.map(({geoid}) => mapping[geoid]);\n\n // numericProps need to be filled to match length of positions buffer\n const {positions, globalFeatureIds} = geom;\n let indices: Uint16Array | Uint32Array | null = null;\n if (type === 'lines') indices = geom.pathIndices.value;\n if (type === 'polygons') indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor as\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = {value: destProp, size: 1};\n\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n } else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n\n return geometry;\n}\n\nexport const TilejsonPropType = {\n type: 'object' as const,\n value: null as null | TilejsonResult,\n validate: (value: TilejsonResult, propType) =>\n (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n"],"file":"utils.js"}
1
+ {"version":3,"sources":["../../../src/layers/utils.ts"],"names":["injectAccessToken","loadOptions","accessToken","fetch","headers","Authorization","mergeBoundaryData","geometry","properties","mapping","geoid","rest","log","warn","type","geom","positions","value","length","map","globalFeatureIds","indices","pathIndices","polygonIndices","size","key","numericProps","sourceProp","TypedArray","constructor","destProp","i","featureId","startIndex","endIndex","fill","TilejsonPropType","validate","propType","optional","Array","isArray","tiles","every","url","equal","value1","value2","async"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;AASO,SAASA,iBAAT,CAA2BC,WAA3B,EAA6CC,WAA7C,EAAwE;AAAA;;AAC7E,MAAI,EAACD,WAAD,aAACA,WAAD,qCAACA,WAAW,CAAEE,KAAd,wEAAC,mBAAoBC,OAArB,kDAAC,sBAA6BC,aAA9B,CAAJ,EAAiD;AAAA;;AAC/CJ,IAAAA,WAAW,CAACE,KAAZ,mCACKF,WAAW,CAACE,KADjB;AAEEC,MAAAA,OAAO,yDAAMH,WAAW,CAACE,KAAlB,wDAAM,oBAAmBC,OAAzB;AAAkCC,QAAAA,aAAa,mBAAYH,WAAZ;AAA/C;AAFT;AAID;AACF;;AAEM,SAASI,iBAAT,CAA2BC,QAA3B,EAAiDC,UAAjD,EAAyF;AAC9F,MAAMC,OAAO,GAAG,EAAhB;;AAD8F,6CAE/DD,UAAU,CAACA,UAFoD;AAAA;;AAAA;AAE9F,wDAAsD;AAAA;AAAA,UAA1CE,KAA0C,SAA1CA,KAA0C;AAAA,UAAhCC,IAAgC;;AACpD,UAAID,KAAK,IAAID,OAAb,EAAsB;AACpBG,kBAAIC,IAAJ;AACD,OAFD,MAEO;AACLJ,QAAAA,OAAO,CAACC,KAAD,CAAP,GAAiBC,IAAjB;AACD;AACF;AAR6F;AAAA;AAAA;AAAA;AAAA;;AAU9F,0BAAmB,CAAC,QAAD,EAAW,OAAX,EAAoB,UAApB,CAAnB,0BAAoD;AAA/C,QAAMG,IAAI,WAAV;AACH,QAAMC,IAAI,GAAGR,QAAQ,CAACO,IAAD,CAArB;;AACA,QAAIC,IAAI,CAACC,SAAL,CAAeC,KAAf,CAAqBC,MAArB,KAAgC,CAApC,EAAuC;AACrC;AACD;;AAEDH,IAAAA,IAAI,CAACP,UAAL,GAAkBO,IAAI,CAACP,UAAL,CAAgBW,GAAhB,CAAoB;AAAA,UAAET,KAAF,SAAEA,KAAF;AAAA,aAAaD,OAAO,CAACC,KAAD,CAApB;AAAA,KAApB,CAAlB;AAGA,QAAOM,SAAP,GAAsCD,IAAtC,CAAOC,SAAP;AAAA,QAAkBI,gBAAlB,GAAsCL,IAAtC,CAAkBK,gBAAlB;AACA,QAAIC,OAAyC,GAAG,IAAhD;AACA,QAAIP,IAAI,KAAK,OAAb,EAAsBO,OAAO,GAAGN,IAAI,CAACO,WAAL,CAAiBL,KAA3B;AACtB,QAAIH,IAAI,KAAK,UAAb,EAAyBO,OAAO,GAAGN,IAAI,CAACQ,cAAL,CAAoBN,KAA9B;AACzB,QAAMC,MAAM,GAAGF,SAAS,CAACC,KAAV,CAAgBC,MAAhB,GAAyBF,SAAS,CAACQ,IAAlD;;AACA,SAAK,IAAMC,GAAX,IAAkBjB,UAAU,CAACkB,YAA7B,EAA2C;AACzC,UAAMC,UAAU,GAAGnB,UAAU,CAACkB,YAAX,CAAwBD,GAAxB,EAA6BR,KAAhD;AACA,UAAMW,UAAU,GAAGD,UAAU,CAACE,WAA9B;AAGA,UAAMC,QAAQ,GAAG,IAAIF,UAAJ,CAAeV,MAAf,CAAjB;AACAH,MAAAA,IAAI,CAACW,YAAL,CAAkBD,GAAlB,IAAyB;AAACR,QAAAA,KAAK,EAAEa,QAAR;AAAkBN,QAAAA,IAAI,EAAE;AAAxB,OAAzB;;AAEA,UAAI,CAACH,OAAL,EAAc;AACZ,aAAK,IAAIU,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGb,MAApB,EAA4Ba,CAAC,EAA7B,EAAiC;AAE/B,cAAMC,SAAS,GAAGZ,gBAAgB,CAACH,KAAjB,CAAuBc,CAAvB,CAAlB;AACAD,UAAAA,QAAQ,CAACC,CAAD,CAAR,GAAcJ,UAAU,CAACK,SAAD,CAAxB;AACD;AACF,OAND,MAMO;AAEL,aAAK,IAAID,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGV,OAAO,CAACH,MAAR,GAAiB,CAArC,EAAwCa,GAAC,EAAzC,EAA6C;AAC3C,cAAME,UAAU,GAAGZ,OAAO,CAACU,GAAD,CAA1B;AACA,cAAMG,QAAQ,GAAGb,OAAO,CAACU,GAAC,GAAG,CAAL,CAAxB;AACA,cAAMC,UAAS,GAAGZ,gBAAgB,CAACH,KAAjB,CAAuBgB,UAAvB,CAAlB;AACAH,UAAAA,QAAQ,CAACK,IAAT,CAAcR,UAAU,CAACK,UAAD,CAAxB,EAAqCC,UAArC,EAAiDC,QAAjD;AACD;AACF;AACF;AACF;;AAED,SAAO3B,QAAP;AACD;;AAEM,IAAM6B,gBAAgB,GAAG;AAC9BtB,EAAAA,IAAI,EAAE,QADwB;AAE9BG,EAAAA,KAAK,EAAE,IAFuB;AAG9BoB,EAAAA,QAAQ,EAAE,kBAACpB,KAAD,EAAwBqB,QAAxB;AAAA,WACPA,QAAQ,CAACC,QAAT,IAAqBtB,KAAK,KAAK,IAAhC,IACC,sBAAOA,KAAP,MAAiB,QAAjB,IACCuB,KAAK,CAACC,OAAN,CAAcxB,KAAK,CAACyB,KAApB,CADD,IAECzB,KAAK,CAACyB,KAAN,CAAYC,KAAZ,CAAkB,UAAAC,GAAG;AAAA,aAAI,OAAOA,GAAP,KAAe,QAAnB;AAAA,KAArB,CAJM;AAAA,GAHoB;AAQ9BC,EAAAA,KAAK,EAAE,eAACC,MAAD,EAASC,MAAT,EAAoB;AACzB,WAAO,sBAAUD,MAAV,EAAkBC,MAAlB,EAA0B,CAA1B,CAAP;AACD,GAV6B;AAW9BC,EAAAA,KAAK,EAAE;AAXuB,CAAzB","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Tile as PropertiesTile} from './schema/carto-properties-tile';\nimport {Tile as VectorTile} from './schema/carto-tile';\nimport {_deepEqual as deepEqual} from '@deck.gl/core';\nimport type {TilejsonResult} from '../sources/types';\n\n/**\n * Adds access token to Authorization header in loadOptions\n */\nexport function injectAccessToken(loadOptions: any, accessToken: string): void {\n if (!loadOptions?.fetch?.headers?.Authorization) {\n loadOptions.fetch = {\n ...loadOptions.fetch,\n headers: {...loadOptions.fetch?.headers, Authorization: `Bearer ${accessToken}`}\n };\n }\n}\n\nexport function mergeBoundaryData(geometry: VectorTile, properties: PropertiesTile): VectorTile {\n const mapping = {};\n for (const {geoid, ...rest} of properties.properties) {\n if (geoid in mapping) {\n log.warn(`Duplicate geoid key in boundary mapping, using first occurance`)();\n } else {\n mapping[geoid] = rest;\n }\n }\n\n for (const type of ['points', 'lines', 'polygons']) {\n const geom = geometry[type];\n if (geom.positions.value.length === 0) {\n continue;\n }\n\n geom.properties = geom.properties.map(({geoid}) => mapping[geoid]);\n\n // numericProps need to be filled to match length of positions buffer\n const {positions, globalFeatureIds} = geom;\n let indices: Uint16Array | Uint32Array | null = null;\n if (type === 'lines') indices = geom.pathIndices.value;\n if (type === 'polygons') indices = geom.polygonIndices.value;\n const length = positions.value.length / positions.size;\n for (const key in properties.numericProps) {\n const sourceProp = properties.numericProps[key].value;\n const TypedArray = sourceProp.constructor as\n | Float32ArrayConstructor\n | Float64ArrayConstructor;\n const destProp = new TypedArray(length);\n geom.numericProps[key] = {value: destProp, size: 1};\n\n if (!indices) {\n for (let i = 0; i < length; i++) {\n // points\n const featureId = globalFeatureIds.value[i];\n destProp[i] = sourceProp[featureId];\n }\n } else {\n // lines|polygons\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n const featureId = globalFeatureIds.value[startIndex];\n destProp.fill(sourceProp[featureId], startIndex, endIndex);\n }\n }\n }\n }\n\n return geometry;\n}\n\nexport const TilejsonPropType = {\n type: 'object' as const,\n value: null as null | TilejsonResult,\n validate: (value: TilejsonResult, propType) =>\n (propType.optional && value === null) ||\n (typeof value === 'object' &&\n Array.isArray(value.tiles) &&\n value.tiles.every(url => typeof url === 'string')),\n equal: (value1, value2) => {\n return deepEqual(value1, value2, 2);\n },\n async: true\n};\n"],"file":"utils.js"}
@@ -184,7 +184,7 @@ var VectorTileLayer = function (_MVTLayer) {
184
184
  return _context.abrupt("return", null);
185
185
 
186
186
  case 25:
187
- return _context.abrupt("return", (0, _utils.mergeBoundaryData)(geometry, attributes));
187
+ return _context.abrupt("return", attributes ? (0, _utils.mergeBoundaryData)(geometry, attributes) : geometry);
188
188
 
189
189
  case 26:
190
190
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layers/vector-tile-layer.ts"],"names":["CartoPropertiesTileLoader","CartoVectorTileLoader","defaultProps","MVTLayer","data","TilejsonPropType","dataComparator","equal","VectorTileLayer","state","initializeState","setState","binary","updateState","parameters","props","formatTiles","URL","tiles","searchParams","get","mvt","getLoadOptions","loadOptions","tileJSON","accessToken","gis","format","getTileData","tile","properties_tiles","url","Promise","reject","fetch","signal","geometryFetch","propName","layer","propertiesUrl","attributesFetch","all","geometry","attributes","renderSubLayers","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","extensions","ClipExtension","clipBounds","subLayer","GeoJsonLayer","getPickingInfo","params","info","index","sourceLayer","object","globalFeatureId","layerName"],"mappings":"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","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoPropertiesTileLoader from './schema/carto-properties-tile-loader';\nimport CartoVectorTileLoader from './schema/carto-vector-tile-loader';\nregisterLoaders([CartoPropertiesTileLoader, 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 {BinaryFeatureCollection} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport type {TilejsonResult} from '../sources/types';\nimport {TilejsonPropType, injectAccessToken, mergeBoundaryData} from './utils';\n\nconst defaultProps: DefaultProps<VectorTileLayerProps> = {\n ...MVTLayer.defaultProps,\n data: TilejsonPropType,\n dataComparator: TilejsonPropType.equal\n};\n\n/** All properties supported by VectorTileLayer. */\nexport type VectorTileLayerProps = _VectorTileLayerProps & Omit<MVTLayerProps, 'data'>;\n\n/** Properties added by VectorTileLayer. */\ntype _VectorTileLayerProps = {\n data: null | TilejsonResult | Promise<TilejsonResult>;\n};\n\n// TODO Perhaps we can't subclass MVTLayer and keep types. Better to subclass TileLayer instead?\n// @ts-ignore\nexport default class VectorTileLayer<ExtraProps extends {} = {}> extends MVTLayer<\n Required<_VectorTileLayerProps> & ExtraProps\n> {\n static layerName = 'VectorTileLayer';\n static defaultProps = defaultProps;\n\n state!: MVTLayer['state'] & {\n mvt: boolean;\n };\n\n initializeState(): void {\n super.initializeState();\n this.setState({binary: true});\n }\n\n updateState(parameters) {\n const {props} = parameters;\n if (props.data) {\n super.updateState(parameters);\n\n const formatTiles = new URL(props.data.tiles[0]).searchParams.get('formatTiles');\n const mvt = formatTiles === 'mvt';\n this.setState({mvt});\n }\n }\n\n getLoadOptions(): any {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data as TilejsonResult;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.gis = {format: 'binary'}; // Use binary for MVT loading\n return loadOptions;\n }\n\n async getTileData(tile: TileLoadProps) {\n const tileJSON = this.props.data as TilejsonResult;\n const {tiles, properties_tiles} = tileJSON;\n const url = _getURLFromTemplate(tiles, 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\n // Fetch geometry and attributes separately\n const geometryFetch = fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n\n if (!properties_tiles) {\n return await geometryFetch;\n }\n\n const propertiesUrl = _getURLFromTemplate(properties_tiles, tile);\n if (!propertiesUrl) {\n return Promise.reject('Invalid properties URL');\n }\n\n const attributesFetch = fetch(propertiesUrl, {\n propName: 'data',\n layer: this,\n loadOptions,\n signal\n });\n const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);\n if (!geometry) return null;\n\n return mergeBoundaryData(geometry, attributes);\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 if (this.state.mvt) {\n return super.renderSubLayers(props) as GeoJsonLayer;\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 BinaryFeatureCollection, {\n globalFeatureId: info.index\n }) as Feature;\n }\n\n return info;\n }\n}\n"],"file":"vector-tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/layers/vector-tile-layer.ts"],"names":["CartoPropertiesTileLoader","CartoVectorTileLoader","defaultProps","MVTLayer","data","TilejsonPropType","dataComparator","equal","VectorTileLayer","state","initializeState","setState","binary","updateState","parameters","props","formatTiles","URL","tiles","searchParams","get","mvt","getLoadOptions","loadOptions","tileJSON","accessToken","gis","format","getTileData","tile","properties_tiles","url","Promise","reject","fetch","signal","geometryFetch","propName","layer","propertiesUrl","attributesFetch","all","geometry","attributes","renderSubLayers","tileBbox","bbox","west","south","east","north","subLayerProps","autoHighlight","extensions","ClipExtension","clipBounds","subLayer","GeoJsonLayer","getPickingInfo","params","info","index","sourceLayer","object","globalFeatureId","layerName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAIA;;AACA;;AAQA;;AACA;;AAKA;;;;;;;;;;AAlBA,2BAAgB,CAACA,kCAAD,EAA4BC,8BAA5B,CAAhB;;AAoBA,IAAMC,YAAgD,mCACjDC,oBAASD,YADwC;AAEpDE,EAAAA,IAAI,EAAEC,uBAF8C;AAGpDC,EAAAA,cAAc,EAAED,wBAAiBE;AAHmB,EAAtD;;IAgBqBC,e;;;;;;;;;;;;;;;UAMnBC,K;;;;;;SAIAC,e,GAAA,2BAAwB;AACtB;AACA,SAAKC,QAAL,CAAc;AAACC,MAAAA,MAAM,EAAE;AAAT,KAAd;AACD,G;;SAEDC,W,GAAA,qBAAYC,UAAZ,EAAwB;AACtB,QAAOC,KAAP,GAAgBD,UAAhB,CAAOC,KAAP;;AACA,QAAIA,KAAK,CAACX,IAAV,EAAgB;AACd,mHAAkBU,UAAlB;AAEA,UAAME,WAAW,GAAG,IAAIC,GAAJ,CAAQF,KAAK,CAACX,IAAN,CAAWc,KAAX,CAAiB,CAAjB,CAAR,EAA6BC,YAA7B,CAA0CC,GAA1C,CAA8C,aAA9C,CAApB;AACA,UAAMC,GAAG,GAAGL,WAAW,KAAK,KAA5B;AACA,WAAKL,QAAL,CAAc;AAACU,QAAAA,GAAG,EAAHA;AAAD,OAAd;AACD;AACF,G;;SAEDC,c,GAAA,0BAAsB;AACpB,QAAMC,WAAW,GAAG,mHAA0B,EAA9C;AACA,QAAMC,QAAQ,GAAG,KAAKT,KAAL,CAAWX,IAA5B;AACA,kCAAkBmB,WAAlB,EAA+BC,QAAQ,CAACC,WAAxC;AACAF,IAAAA,WAAW,CAACG,GAAZ,GAAkB;AAACC,MAAAA,MAAM,EAAE;AAAT,KAAlB;AACA,WAAOJ,WAAP;AACD,G;;SAEKK,W;iFAAN,iBAAkBC,IAAlB;AAAA;;AAAA;AAAA;AAAA;AAAA;AACQL,cAAAA,QADR,GACmB,KAAKT,KAAL,CAAWX,IAD9B;AAESc,cAAAA,KAFT,GAEoCM,QAFpC,CAESN,KAFT,EAEgBY,gBAFhB,GAEoCN,QAFpC,CAEgBM,gBAFhB;AAGQC,cAAAA,GAHR,GAGc,oCAAoBb,KAApB,EAA2BW,IAA3B,CAHd;;AAAA,kBAIOE,GAJP;AAAA;AAAA;AAAA;;AAAA,+CAKWC,OAAO,CAACC,MAAR,CAAe,aAAf,CALX;;AAAA;AAQQV,cAAAA,WARR,GAQsB,KAAKD,cAAL,EARtB;AASSY,cAAAA,KATT,GASkB,KAAKnB,KATvB,CASSmB,KATT;AAUSC,cAAAA,MAVT,GAUmBN,IAVnB,CAUSM,MAVT;AAaQC,cAAAA,aAbR,GAawBF,KAAK,CAACH,GAAD,EAAM;AAACM,gBAAAA,QAAQ,EAAE,MAAX;AAAmBC,gBAAAA,KAAK,EAAE,IAA1B;AAAgCf,gBAAAA,WAAW,EAAXA,WAAhC;AAA6CY,gBAAAA,MAAM,EAANA;AAA7C,eAAN,CAb7B;;AAAA,kBAeOL,gBAfP;AAAA;AAAA;AAAA;;AAAA;AAAA,qBAgBiBM,aAhBjB;;AAAA;AAAA;;AAAA;AAmBQG,cAAAA,aAnBR,GAmBwB,oCAAoBT,gBAApB,EAAsCD,IAAtC,CAnBxB;;AAAA,kBAoBOU,aApBP;AAAA;AAAA;AAAA;;AAAA,+CAqBWP,OAAO,CAACC,MAAR,CAAe,wBAAf,CArBX;;AAAA;AAwBQO,cAAAA,eAxBR,GAwB0BN,KAAK,CAACK,aAAD,EAAgB;AAC3CF,gBAAAA,QAAQ,EAAE,MADiC;AAE3CC,gBAAAA,KAAK,EAAE,IAFoC;AAG3Cf,gBAAAA,WAAW,EAAXA,WAH2C;AAI3CY,gBAAAA,MAAM,EAANA;AAJ2C,eAAhB,CAxB/B;AAAA;AAAA,qBA8BuCH,OAAO,CAACS,GAAR,CAAY,CAACL,aAAD,EAAgBI,eAAhB,CAAZ,CA9BvC;;AAAA;AAAA;AAAA;AA8BSE,cAAAA,QA9BT;AA8BmBC,cAAAA,UA9BnB;;AAAA,kBA+BOD,QA/BP;AAAA;AAAA;AAAA;;AAAA,+CA+BwB,IA/BxB;;AAAA;AAAA,+CAiCSC,UAAU,GAAG,8BAAkBD,QAAlB,EAA4BC,UAA5B,CAAH,GAA6CD,QAjChE;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,K;;;;;;;;;SAoCAE,e,GAAA,yBACE7B,KADF,EAOuB;AACrB,QAAIA,KAAK,CAACX,IAAN,KAAe,IAAnB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED,QAAI,KAAKK,KAAL,CAAWY,GAAf,EAAoB;AAClB,8HAA6BN,KAA7B;AACD;;AAED,QAAM8B,QAAQ,GAAG9B,KAAK,CAACc,IAAN,CAAWiB,IAA5B;AACA,QAAOC,IAAP,GAAmCF,QAAnC,CAAOE,IAAP;AAAA,QAAaC,KAAb,GAAmCH,QAAnC,CAAaG,KAAb;AAAA,QAAoBC,IAApB,GAAmCJ,QAAnC,CAAoBI,IAApB;AAAA,QAA0BC,KAA1B,GAAmCL,QAAnC,CAA0BK,KAA1B;;AAEA,QAAMC,aAAa,mCACdpC,KADc;AAEjBqC,MAAAA,aAAa,EAAE,KAFE;AAGjBC,MAAAA,UAAU,GAAG,IAAIC,yBAAJ,EAAH,0CAA4BvC,KAAK,CAACsC,UAAN,IAAoB,EAAhD,EAHO;AAIjBE,MAAAA,UAAU,EAAE,CAACR,IAAD,EAAOC,KAAP,EAAcC,IAAd,EAAoBC,KAApB;AAJK,MAAnB;;AAOA,QAAMM,QAAQ,GAAG,IAAIC,oBAAJ,CAAiBN,aAAjB,CAAjB;AACA,WAAOK,QAAP;AACD,G;;SAEDE,c,GAAA,wBAAeC,MAAf,EAAuB;AACrB,QAAMC,IAAI,mHAAwBD,MAAxB,CAAV;;AAEA,QAAI,KAAKlD,KAAL,CAAWG,MAAX,IAAqBgD,IAAI,CAACC,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,UAAOzD,IAAP,GAAeuD,MAAM,CAACG,WAAP,CAAoB/C,KAAnC,CAAOX,IAAP;AACAwD,MAAAA,IAAI,CAACG,MAAL,GAAc,0BAAgB3D,IAAhB,EAAiD;AAC7D4D,QAAAA,eAAe,EAAEJ,IAAI,CAACC;AADuC,OAAjD,CAAd;AAGD;;AAED,WAAOD,IAAP;AACD,G;;;EA/GsEzD,mB;;;AAApDK,e,CAGZyD,S,GAAY,iB;AAHAzD,e,CAIZN,Y,GAAeA,Y","sourcesContent":["import {registerLoaders} from '@loaders.gl/core';\nimport CartoPropertiesTileLoader from './schema/carto-properties-tile-loader';\nimport CartoVectorTileLoader from './schema/carto-vector-tile-loader';\nregisterLoaders([CartoPropertiesTileLoader, 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 {BinaryFeatureCollection} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport type {TilejsonResult} from '../sources/types';\nimport {TilejsonPropType, injectAccessToken, mergeBoundaryData} from './utils';\n\nconst defaultProps: DefaultProps<VectorTileLayerProps> = {\n ...MVTLayer.defaultProps,\n data: TilejsonPropType,\n dataComparator: TilejsonPropType.equal\n};\n\n/** All properties supported by VectorTileLayer. */\nexport type VectorTileLayerProps = _VectorTileLayerProps & Omit<MVTLayerProps, 'data'>;\n\n/** Properties added by VectorTileLayer. */\ntype _VectorTileLayerProps = {\n data: null | TilejsonResult | Promise<TilejsonResult>;\n};\n\n// TODO Perhaps we can't subclass MVTLayer and keep types. Better to subclass TileLayer instead?\n// @ts-ignore\nexport default class VectorTileLayer<ExtraProps extends {} = {}> extends MVTLayer<\n Required<_VectorTileLayerProps> & ExtraProps\n> {\n static layerName = 'VectorTileLayer';\n static defaultProps = defaultProps;\n\n state!: MVTLayer['state'] & {\n mvt: boolean;\n };\n\n initializeState(): void {\n super.initializeState();\n this.setState({binary: true});\n }\n\n updateState(parameters) {\n const {props} = parameters;\n if (props.data) {\n super.updateState(parameters);\n\n const formatTiles = new URL(props.data.tiles[0]).searchParams.get('formatTiles');\n const mvt = formatTiles === 'mvt';\n this.setState({mvt});\n }\n }\n\n getLoadOptions(): any {\n const loadOptions = super.getLoadOptions() || {};\n const tileJSON = this.props.data as TilejsonResult;\n injectAccessToken(loadOptions, tileJSON.accessToken);\n loadOptions.gis = {format: 'binary'}; // Use binary for MVT loading\n return loadOptions;\n }\n\n async getTileData(tile: TileLoadProps) {\n const tileJSON = this.props.data as TilejsonResult;\n const {tiles, properties_tiles} = tileJSON;\n const url = _getURLFromTemplate(tiles, 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\n // Fetch geometry and attributes separately\n const geometryFetch = fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n\n if (!properties_tiles) {\n return await geometryFetch;\n }\n\n const propertiesUrl = _getURLFromTemplate(properties_tiles, tile);\n if (!propertiesUrl) {\n return Promise.reject('Invalid properties URL');\n }\n\n const attributesFetch = fetch(propertiesUrl, {\n propName: 'data',\n layer: this,\n loadOptions,\n signal\n });\n const [geometry, attributes] = await Promise.all([geometryFetch, attributesFetch]);\n if (!geometry) return null;\n\n return attributes ? mergeBoundaryData(geometry, attributes) : geometry;\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 if (this.state.mvt) {\n return super.renderSubLayers(props) as GeoJsonLayer;\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 BinaryFeatureCollection, {\n globalFeatureId: info.index\n }) as Feature;\n }\n\n return info;\n }\n}\n"],"file":"vector-tile-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/sources/boundary-query-source.ts"],"names":["boundaryQuerySource","options","boundaryId","matchingColumn","sqlQuery","queryParameters","urlParameters","JSON","stringify"],"mappings":";;;;;;;;;;;;;AACA;;AAgBO,IAAMA,mBAAmB;AAAA,uEAAG,iBACjCC,OADiC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAG1BC,YAAAA,UAH0B,GAGsCD,OAHtC,CAG1BC,UAH0B,0BAGsCD,OAHtC,CAGdE,cAHc,EAGdA,cAHc,sCAGG,IAHH,0BAGSC,QAHT,GAGsCH,OAHtC,CAGSG,QAHT,EAGmBC,eAHnB,GAGsCJ,OAHtC,CAGmBI,eAHnB;AAI3BC,YAAAA,aAJ2B,GAII;AACnCJ,cAAAA,UAAU,EAAVA,UADmC;AAEnCC,cAAAA,cAAc,EAAdA,cAFmC;AAGnCC,cAAAA,QAAQ,EAARA;AAHmC,aAJJ;;AASjC,gBAAIC,eAAJ,EAAqB;AACnBC,cAAAA,aAAa,CAACD,eAAd,GAAgCE,IAAI,CAACC,SAAL,CAAeH,eAAf,CAAhC;AACD;;AAXgC,6CAY1B,4BAA0B,UAA1B,EAAsCJ,OAAtC,EAA+CK,aAA/C,CAZ0B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAH;;AAAA,kBAAnBN,mBAAmB;AAAA;AAAA;AAAA,GAAzB","sourcesContent":["import {QueryParameters} from '../api';\nimport {baseSource} from './base-source';\nimport type {SourceOptions, TilejsonResult} from './types';\n\nexport type BoundaryQuerySourceOptions = SourceOptions & {\n boundaryId: string;\n matchingColumn?: string;\n sqlQuery: string;\n queryParameters: QueryParameters;\n};\ntype UrlParameters = {\n boundaryId: string;\n matchingColumn: string;\n sqlQuery: string;\n queryParameters?: string;\n};\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<TilejsonResult> {\n const {boundaryId, matchingColumn = 'id', sqlQuery, queryParameters} = options;\n const urlParameters: UrlParameters = {\n boundaryId,\n matchingColumn,\n sqlQuery\n };\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource<UrlParameters>('boundary', options, urlParameters) as Promise<TilejsonResult>;\n};\n"],"file":"boundary-query-source.js"}
1
+ {"version":3,"sources":["../../../src/sources/boundary-query-source.ts"],"names":["boundaryQuerySource","options","boundaryId","matchingColumn","sqlQuery","queryParameters","urlParameters","JSON","stringify"],"mappings":";;;;;;;;;;;;;AACA;;AAgBO,IAAMA,mBAAmB;AAAA,uEAAG,iBACjCC,OADiC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAG1BC,YAAAA,UAH0B,GAGsCD,OAHtC,CAG1BC,UAH0B,0BAGsCD,OAHtC,CAGdE,cAHc,EAGdA,cAHc,sCAGG,IAHH,0BAGSC,QAHT,GAGsCH,OAHtC,CAGSG,QAHT,EAGmBC,eAHnB,GAGsCJ,OAHtC,CAGmBI,eAHnB;AAI3BC,YAAAA,aAJ2B,GAII;AACnCJ,cAAAA,UAAU,EAAVA,UADmC;AAEnCC,cAAAA,cAAc,EAAdA,cAFmC;AAGnCC,cAAAA,QAAQ,EAARA;AAHmC,aAJJ;;AASjC,gBAAIC,eAAJ,EAAqB;AACnBC,cAAAA,aAAa,CAACD,eAAd,GAAgCE,IAAI,CAACC,SAAL,CAAeH,eAAf,CAAhC;AACD;;AAXgC,6CAY1B,4BAA0B,UAA1B,EAAsCJ,OAAtC,EAA+CK,aAA/C,CAZ0B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAH;;AAAA,kBAAnBN,mBAAmB;AAAA;AAAA;AAAA,GAAzB","sourcesContent":["import {QueryParameters} from '../api';\nimport {baseSource} from './base-source';\nimport type {SourceOptions, TilejsonResult} from './types';\n\nexport type BoundaryQuerySourceOptions = SourceOptions & {\n boundaryId: string;\n matchingColumn?: string;\n sqlQuery: string;\n queryParameters?: QueryParameters;\n};\ntype UrlParameters = {\n boundaryId: string;\n matchingColumn: string;\n sqlQuery: string;\n queryParameters?: string;\n};\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<TilejsonResult> {\n const {boundaryId, matchingColumn = 'id', sqlQuery, queryParameters} = options;\n const urlParameters: UrlParameters = {\n boundaryId,\n matchingColumn,\n sqlQuery\n };\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n return baseSource<UrlParameters>('boundary', options, urlParameters) as Promise<TilejsonResult>;\n};\n"],"file":"boundary-query-source.js"}
@@ -107,7 +107,8 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
107
107
  data,
108
108
  id,
109
109
  source,
110
- type
110
+ type,
111
+ queryParameters
111
112
  } = dataset;
112
113
  const errorContext = {
113
114
  requestType: 'Tile stats',
@@ -132,12 +133,20 @@ async function _fetchTilestats(attribute, dataset, accessToken, apiBaseUrl) {
132
133
  const headers = {
133
134
  Authorization: `Bearer ${accessToken}`
134
135
  };
136
+ const parameters = {};
137
+
138
+ if (type === 'query') {
139
+ parameters.q = source;
140
+
141
+ if (queryParameters) {
142
+ parameters.queryParameters = JSON.stringify(queryParameters);
143
+ }
144
+ }
145
+
135
146
  const stats = await requestWithParameters({
136
147
  baseUrl,
137
148
  headers,
138
- parameters: type === 'query' ? {
139
- q: source
140
- } : {},
149
+ parameters,
141
150
  errorContext
142
151
  });
143
152
  const {