@deck.gl/carto 8.7.5 → 8.7.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -52968,8 +52968,10 @@ const SCALE_FUNCS = {
52968
52968
  point: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scalePoint"],
52969
52969
  quantile: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleQuantile"],
52970
52970
  quantize: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleQuantize"],
52971
- sqrt: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleSqrt"]
52971
+ sqrt: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleSqrt"],
52972
+ custom: d3_scale__WEBPACK_IMPORTED_MODULE_2__["scaleThreshold"]
52972
52973
  };
52974
+ const UNKNOWN_COLOR = '#868d91';
52973
52975
  const AGGREGATION = {
52974
52976
  average: 'MEAN',
52975
52977
  maximum: 'MAX',
@@ -53163,7 +53165,7 @@ function domainFromAttribute(attribute, scaleType) {
53163
53165
 
53164
53166
  function domainFromValues(values, scaleType) {
53165
53167
  if (scaleType === 'ordinal') {
53166
- return [...new Set(values)].sort();
53168
+ return Object(d3_array__WEBPACK_IMPORTED_MODULE_0__["groupSort"])(values, g => -g.length, d => d);
53167
53169
  } else if (scaleType === 'quantile') {
53168
53170
  return values.sort((a, b) => a - b);
53169
53171
  } else if (scaleType === 'log') {
@@ -53221,11 +53223,30 @@ function getColorValueAccessor({
53221
53223
  function getColorAccessor({
53222
53224
  name
53223
53225
  }, scaleType, {
53224
- colors
53226
+ colors,
53227
+ colorMap
53225
53228
  }, opacity, data) {
53226
53229
  const scale = SCALE_FUNCS[scaleType]();
53227
- scale.domain(calculateDomain(data, name, scaleType));
53228
- scale.range(colors);
53230
+ let domain = [];
53231
+ let scaleColor = [];
53232
+
53233
+ if (Array.isArray(colorMap)) {
53234
+ colorMap.forEach(([value, color]) => {
53235
+ domain.push(value);
53236
+ scaleColor.push(color);
53237
+ });
53238
+ } else {
53239
+ domain = calculateDomain(data, name, scaleType);
53240
+ scaleColor = colors;
53241
+ }
53242
+
53243
+ if (scaleType === 'ordinal') {
53244
+ domain = domain.slice(0, scaleColor.length);
53245
+ }
53246
+
53247
+ scale.domain(domain);
53248
+ scale.range(scaleColor);
53249
+ scale.unknown(UNKNOWN_COLOR);
53229
53250
  const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
53230
53251
 
53231
53252
  const accessor = properties => {
@@ -53699,7 +53720,9 @@ function getParameters({
53699
53720
  geoColumn,
53700
53721
  columns,
53701
53722
  schema,
53702
- clientId
53723
+ clientId,
53724
+ aggregationExp,
53725
+ aggregationResLevel
53703
53726
  }) {
53704
53727
  const parameters = [Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('client', clientId || DEFAULT_CLIENT)];
53705
53728
 
@@ -53710,14 +53733,22 @@ function getParameters({
53710
53733
  const sourceName = type === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["MAP_TYPES"].QUERY ? 'q' : 'name';
53711
53734
  parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])(sourceName, source));
53712
53735
 
53713
- if (_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["GEO_COLUMN_SUPPORT"].includes(type) && geoColumn) {
53736
+ if (geoColumn) {
53714
53737
  parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('geo_column', geoColumn));
53715
53738
  }
53716
53739
 
53717
- if (_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["COLUMNS_SUPPORT"].includes(type) && columns) {
53740
+ if (columns) {
53718
53741
  parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('columns', columns.join(',')));
53719
53742
  }
53720
53743
 
53744
+ if (aggregationExp) {
53745
+ parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('aggregationExp', aggregationExp));
53746
+ }
53747
+
53748
+ if (aggregationResLevel) {
53749
+ parameters.push(Object(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["encodeParameter"])('aggregationResLevel', aggregationResLevel));
53750
+ }
53751
+
53721
53752
  return parameters.join('&');
53722
53753
  }
53723
53754
 
@@ -53729,7 +53760,9 @@ async function mapInstantiation({
53729
53760
  geoColumn,
53730
53761
  columns,
53731
53762
  schema,
53732
- clientId
53763
+ clientId,
53764
+ aggregationExp,
53765
+ aggregationResLevel
53733
53766
  }) {
53734
53767
  const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;
53735
53768
  const url = `${baseUrl}?${getParameters({
@@ -53738,7 +53771,9 @@ async function mapInstantiation({
53738
53771
  geoColumn,
53739
53772
  columns,
53740
53773
  schema,
53741
- clientId
53774
+ clientId,
53775
+ aggregationExp,
53776
+ aggregationResLevel
53742
53777
  })}`;
53743
53778
  const {
53744
53779
  accessToken
@@ -53778,7 +53813,11 @@ function checkFetchLayerDataParameters({
53778
53813
  type,
53779
53814
  source,
53780
53815
  connection,
53781
- credentials
53816
+ credentials,
53817
+ geoColumn,
53818
+ columns,
53819
+ aggregationExp,
53820
+ aggregationResLevel
53782
53821
  }) {
53783
53822
  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(connection, 'Must define connection');
53784
53823
  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(type, 'Must define a type');
@@ -53786,6 +53825,21 @@ function checkFetchLayerDataParameters({
53786
53825
  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.apiVersion === _maps_api_common__WEBPACK_IMPORTED_MODULE_1__["API_VERSIONS"].V3, 'Method only available for v3');
53787
53826
  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.apiBaseUrl, 'Must define apiBaseUrl');
53788
53827
  Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(credentials.accessToken, 'Must define an accessToken');
53828
+
53829
+ if (columns) {
53830
+ Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["COLUMNS_SUPPORT"].includes(type), `The columns parameter is not supported by type ${type}`);
53831
+ }
53832
+
53833
+ if (geoColumn) {
53834
+ Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(_maps_api_common__WEBPACK_IMPORTED_MODULE_1__["GEO_COLUMN_SUPPORT"].includes(type), `The geoColumn parameter is not supported by type ${type}`);
53835
+ } else {
53836
+ Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
53837
+ Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
53838
+ }
53839
+
53840
+ if (!aggregationExp) {
53841
+ Object(_utils__WEBPACK_IMPORTED_MODULE_4__["assert"])(!aggregationResLevel, 'Have aggregationResLevel, but aggregationExp parameter is missing');
53842
+ }
53789
53843
  }
53790
53844
 
53791
53845
  async function fetchLayerData({
@@ -53798,7 +53852,9 @@ async function fetchLayerData({
53798
53852
  format,
53799
53853
  formatTiles,
53800
53854
  schema,
53801
- clientId
53855
+ clientId,
53856
+ aggregationExp,
53857
+ aggregationResLevel
53802
53858
  }) {
53803
53859
  // Internally we split data fetching into two parts to allow us to
53804
53860
  // conditionally fetch the actual data, depending on the metadata state
@@ -53817,7 +53873,9 @@ async function fetchLayerData({
53817
53873
  format,
53818
53874
  formatTiles,
53819
53875
  schema,
53820
- clientId
53876
+ clientId,
53877
+ aggregationExp,
53878
+ aggregationResLevel
53821
53879
  });
53822
53880
  const data = await requestData({
53823
53881
  url,
@@ -53846,7 +53904,9 @@ async function _fetchDataUrl({
53846
53904
  format,
53847
53905
  formatTiles,
53848
53906
  schema,
53849
- clientId
53907
+ clientId,
53908
+ aggregationExp,
53909
+ aggregationResLevel
53850
53910
  }) {
53851
53911
  const defaultCredentials = Object(_config__WEBPACK_IMPORTED_MODULE_0__["getDefaultCredentials"])(); // Only pick up default credentials if they have been defined for
53852
53912
  // correct API version
@@ -53858,7 +53918,11 @@ async function _fetchDataUrl({
53858
53918
  type,
53859
53919
  source,
53860
53920
  connection,
53861
- credentials: localCreds
53921
+ credentials: localCreds,
53922
+ geoColumn,
53923
+ columns,
53924
+ aggregationExp,
53925
+ aggregationResLevel
53862
53926
  });
53863
53927
 
53864
53928
  if (!localCreds.mapsUrl) {
@@ -53873,7 +53937,9 @@ async function _fetchDataUrl({
53873
53937
  geoColumn,
53874
53938
  columns,
53875
53939
  schema,
53876
- clientId
53940
+ clientId,
53941
+ aggregationExp,
53942
+ aggregationResLevel
53877
53943
  });
53878
53944
  let url = null;
53879
53945
  let mapFormat;
@@ -14,8 +14,6 @@ exports.getTextPixelOffsetAccessor = getTextPixelOffsetAccessor;
14
14
  exports._domainFromValues = domainFromValues;
15
15
  exports.AGGREGATION = void 0;
16
16
 
17
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
-
19
17
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
20
18
 
21
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -53,8 +51,10 @@ var SCALE_FUNCS = {
53
51
  point: _d3Scale.scalePoint,
54
52
  quantile: _d3Scale.scaleQuantile,
55
53
  quantize: _d3Scale.scaleQuantize,
56
- sqrt: _d3Scale.scaleSqrt
54
+ sqrt: _d3Scale.scaleSqrt,
55
+ custom: _d3Scale.scaleThreshold
57
56
  };
57
+ var UNKNOWN_COLOR = '#868d91';
58
58
  var AGGREGATION = {
59
59
  average: 'MEAN',
60
60
  maximum: 'MAX',
@@ -265,7 +265,11 @@ function domainFromAttribute(attribute, scaleType) {
265
265
 
266
266
  function domainFromValues(values, scaleType) {
267
267
  if (scaleType === 'ordinal') {
268
- return (0, _toConsumableArray2.default)(new Set(values)).sort();
268
+ return (0, _d3Array.groupSort)(values, function (g) {
269
+ return -g.length;
270
+ }, function (d) {
271
+ return d;
272
+ });
269
273
  } else if (scaleType === 'quantile') {
270
274
  return values.sort(function (a, b) {
271
275
  return a - b;
@@ -332,10 +336,33 @@ function getColorValueAccessor(_ref3, colorAggregation, data) {
332
336
 
333
337
  function getColorAccessor(_ref4, scaleType, _ref5, opacity, data) {
334
338
  var name = _ref4.name;
335
- var colors = _ref5.colors;
339
+ var colors = _ref5.colors,
340
+ colorMap = _ref5.colorMap;
336
341
  var scale = SCALE_FUNCS[scaleType]();
337
- scale.domain(calculateDomain(data, name, scaleType));
338
- scale.range(colors);
342
+ var domain = [];
343
+ var scaleColor = [];
344
+
345
+ if (Array.isArray(colorMap)) {
346
+ colorMap.forEach(function (_ref6) {
347
+ var _ref7 = (0, _slicedToArray2.default)(_ref6, 2),
348
+ value = _ref7[0],
349
+ color = _ref7[1];
350
+
351
+ domain.push(value);
352
+ scaleColor.push(color);
353
+ });
354
+ } else {
355
+ domain = calculateDomain(data, name, scaleType);
356
+ scaleColor = colors;
357
+ }
358
+
359
+ if (scaleType === 'ordinal') {
360
+ domain = domain.slice(0, scaleColor.length);
361
+ }
362
+
363
+ scale.domain(domain);
364
+ scale.range(scaleColor);
365
+ scale.unknown(UNKNOWN_COLOR);
339
366
  var alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
340
367
 
341
368
  var accessor = function accessor(properties) {
@@ -350,8 +377,8 @@ function getColorAccessor(_ref4, scaleType, _ref5, opacity, data) {
350
377
  return normalizeAccessor(accessor, data);
351
378
  }
352
379
 
353
- function getSizeAccessor(_ref6, scaleType, range, data) {
354
- var name = _ref6.name;
380
+ function getSizeAccessor(_ref8, scaleType, range, data) {
381
+ var name = _ref8.name;
355
382
  var scale = SCALE_FUNCS[scaleType]();
356
383
  scale.domain(calculateDomain(data, name, scaleType));
357
384
  scale.range(range);
@@ -375,9 +402,9 @@ var FORMATS = {
375
402
  default: String
376
403
  };
377
404
 
378
- function getTextAccessor(_ref7, data) {
379
- var name = _ref7.name,
380
- type = _ref7.type;
405
+ function getTextAccessor(_ref9, data) {
406
+ var name = _ref9.name,
407
+ type = _ref9.type;
381
408
  var format = FORMATS[type] || FORMATS.default;
382
409
 
383
410
  var accessor = function accessor(properties) {
@@ -387,10 +414,10 @@ function getTextAccessor(_ref7, data) {
387
414
  return normalizeAccessor(accessor, data);
388
415
  }
389
416
 
390
- function getTextPixelOffsetAccessor(_ref8, radius) {
391
- var alignment = _ref8.alignment,
392
- anchor = _ref8.anchor,
393
- size = _ref8.size;
417
+ function getTextPixelOffsetAccessor(_ref10, radius) {
418
+ var alignment = _ref10.alignment,
419
+ anchor = _ref10.anchor,
420
+ size = _ref10.size;
394
421
  var padding = 20;
395
422
  var signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;
396
423
  var signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["SCALE_FUNCS","linear","scaleLinear","ordinal","scaleOrdinal","log","scaleLog","point","scalePoint","quantile","scaleQuantile","quantize","scaleQuantize","sqrt","scaleSqrt","AGGREGATION","average","maximum","minimum","sum","AGGREGATION_FUNC","values","accessor","v","length","median","mode","pop","stddev","deviation","variance","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","GeoJsonLayer","propMap","outline","geojson","grid","CPUGridLayer","worldUnitSize","cellSize","heatmap","HeatmapLayer","hexagon","HexagonLayer","H3HexagonLayer","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","TILE_FORMATS","MVT","MVTLayer","CartoTileLayer","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","Set","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","getColorValueAccessor","aggregator","p","getColorAccessor","scale","domain","range","alpha","Math","round","pow","getSizeAccessor","FORMATS","date","s","moment","utc","format","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n opacity: 'opacity',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a = {}, b = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: any; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);\n layer.defaultProps = {...defaultProps, ...layer.defaultProps};\n return layer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return [...new Set(values)].sort();\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(colors);\n const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n\n const accessor = properties => {\n const {r, g, b} = rgb(scale(properties[name]));\n return [r, g, b, alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
1
+ {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["SCALE_FUNCS","linear","scaleLinear","ordinal","scaleOrdinal","log","scaleLog","point","scalePoint","quantile","scaleQuantile","quantize","scaleQuantize","sqrt","scaleSqrt","custom","scaleThreshold","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","AGGREGATION_FUNC","values","accessor","v","length","median","mode","pop","stddev","deviation","variance","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","GeoJsonLayer","propMap","outline","geojson","grid","CPUGridLayer","worldUnitSize","cellSize","heatmap","HeatmapLayer","hexagon","HexagonLayer","H3HexagonLayer","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","TILE_FORMATS","MVT","MVTLayer","CartoTileLayer","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","getColorValueAccessor","aggregator","p","getColorAccessor","colorMap","scale","domain","scaleColor","forEach","value","push","slice","range","unknown","alpha","Math","round","pow","getSizeAccessor","FORMATS","date","s","moment","utc","format","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n opacity: 'opacity',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a = {}, b = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: any; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);\n layer.defaultProps = {...defaultProps, ...layer.defaultProps};\n return layer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors, colorMap},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n\n const accessor = properties => {\n const {r, g, b} = rgb(scale(properties[name]));\n return [r, g, b, alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
@@ -201,7 +201,9 @@ function getParameters(_ref5) {
201
201
  geoColumn = _ref5.geoColumn,
202
202
  columns = _ref5.columns,
203
203
  schema = _ref5.schema,
204
- clientId = _ref5.clientId;
204
+ clientId = _ref5.clientId,
205
+ aggregationExp = _ref5.aggregationExp,
206
+ aggregationResLevel = _ref5.aggregationResLevel;
205
207
  var parameters = [(0, _mapsApiCommon.encodeParameter)('client', clientId || DEFAULT_CLIENT)];
206
208
 
207
209
  if (schema) {
@@ -211,14 +213,22 @@ function getParameters(_ref5) {
211
213
  var sourceName = type === _mapsApiCommon.MAP_TYPES.QUERY ? 'q' : 'name';
212
214
  parameters.push((0, _mapsApiCommon.encodeParameter)(sourceName, source));
213
215
 
214
- if (_mapsApiCommon.GEO_COLUMN_SUPPORT.includes(type) && geoColumn) {
216
+ if (geoColumn) {
215
217
  parameters.push((0, _mapsApiCommon.encodeParameter)('geo_column', geoColumn));
216
218
  }
217
219
 
218
- if (_mapsApiCommon.COLUMNS_SUPPORT.includes(type) && columns) {
220
+ if (columns) {
219
221
  parameters.push((0, _mapsApiCommon.encodeParameter)('columns', columns.join(',')));
220
222
  }
221
223
 
224
+ if (aggregationExp) {
225
+ parameters.push((0, _mapsApiCommon.encodeParameter)('aggregationExp', aggregationExp));
226
+ }
227
+
228
+ if (aggregationResLevel) {
229
+ parameters.push((0, _mapsApiCommon.encodeParameter)('aggregationResLevel', aggregationResLevel));
230
+ }
231
+
222
232
  return parameters.join('&');
223
233
  }
224
234
 
@@ -228,12 +238,12 @@ function mapInstantiation(_x4) {
228
238
 
229
239
  function _mapInstantiation() {
230
240
  _mapInstantiation = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(_ref6) {
231
- var type, source, connection, credentials, geoColumn, columns, schema, clientId, baseUrl, url, accessToken, body;
241
+ var type, source, connection, credentials, geoColumn, columns, schema, clientId, aggregationExp, aggregationResLevel, baseUrl, url, accessToken, body;
232
242
  return _regenerator.default.wrap(function _callee4$(_context4) {
233
243
  while (1) {
234
244
  switch (_context4.prev = _context4.next) {
235
245
  case 0:
236
- type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, schema = _ref6.schema, clientId = _ref6.clientId;
246
+ type = _ref6.type, source = _ref6.source, connection = _ref6.connection, credentials = _ref6.credentials, geoColumn = _ref6.geoColumn, columns = _ref6.columns, schema = _ref6.schema, clientId = _ref6.clientId, aggregationExp = _ref6.aggregationExp, aggregationResLevel = _ref6.aggregationResLevel;
237
247
  baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
238
248
  url = "".concat(baseUrl, "?").concat(getParameters({
239
249
  type: type,
@@ -241,7 +251,9 @@ function _mapInstantiation() {
241
251
  geoColumn: geoColumn,
242
252
  columns: columns,
243
253
  schema: schema,
244
- clientId: clientId
254
+ clientId: clientId,
255
+ aggregationExp: aggregationExp,
256
+ aggregationResLevel: aggregationResLevel
245
257
  }));
246
258
  accessToken = credentials.accessToken;
247
259
 
@@ -299,13 +311,32 @@ function checkFetchLayerDataParameters(_ref7) {
299
311
  var type = _ref7.type,
300
312
  source = _ref7.source,
301
313
  connection = _ref7.connection,
302
- credentials = _ref7.credentials;
314
+ credentials = _ref7.credentials,
315
+ geoColumn = _ref7.geoColumn,
316
+ columns = _ref7.columns,
317
+ aggregationExp = _ref7.aggregationExp,
318
+ aggregationResLevel = _ref7.aggregationResLevel;
303
319
  (0, _utils.assert)(connection, 'Must define connection');
304
320
  (0, _utils.assert)(type, 'Must define a type');
305
321
  (0, _utils.assert)(source, 'Must define a source');
306
322
  (0, _utils.assert)(credentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3, 'Method only available for v3');
307
323
  (0, _utils.assert)(credentials.apiBaseUrl, 'Must define apiBaseUrl');
308
324
  (0, _utils.assert)(credentials.accessToken, 'Must define an accessToken');
325
+
326
+ if (columns) {
327
+ (0, _utils.assert)(_mapsApiCommon.COLUMNS_SUPPORT.includes(type), "The columns parameter is not supported by type ".concat(type));
328
+ }
329
+
330
+ if (geoColumn) {
331
+ (0, _utils.assert)(_mapsApiCommon.GEO_COLUMN_SUPPORT.includes(type), "The geoColumn parameter is not supported by type ".concat(type));
332
+ } else {
333
+ (0, _utils.assert)(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
334
+ (0, _utils.assert)(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
335
+ }
336
+
337
+ if (!aggregationExp) {
338
+ (0, _utils.assert)(!aggregationResLevel, 'Have aggregationResLevel, but aggregationExp parameter is missing');
339
+ }
309
340
  }
310
341
 
311
342
  function fetchLayerData(_x5) {
@@ -314,13 +345,13 @@ function fetchLayerData(_x5) {
314
345
 
315
346
  function _fetchLayerData() {
316
347
  _fetchLayerData = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(_ref8) {
317
- var type, source, connection, credentials, geoColumn, columns, format, formatTiles, schema, clientId, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
348
+ var type, source, connection, credentials, geoColumn, columns, format, formatTiles, schema, clientId, aggregationExp, aggregationResLevel, _yield$_fetchDataUrl, url, accessToken, mapFormat, metadata, data, result;
318
349
 
319
350
  return _regenerator.default.wrap(function _callee5$(_context5) {
320
351
  while (1) {
321
352
  switch (_context5.prev = _context5.next) {
322
353
  case 0:
323
- type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, schema = _ref8.schema, clientId = _ref8.clientId;
354
+ type = _ref8.type, source = _ref8.source, connection = _ref8.connection, credentials = _ref8.credentials, geoColumn = _ref8.geoColumn, columns = _ref8.columns, format = _ref8.format, formatTiles = _ref8.formatTiles, schema = _ref8.schema, clientId = _ref8.clientId, aggregationExp = _ref8.aggregationExp, aggregationResLevel = _ref8.aggregationResLevel;
324
355
  _context5.next = 3;
325
356
  return _fetchDataUrl({
326
357
  type: type,
@@ -332,7 +363,9 @@ function _fetchLayerData() {
332
363
  format: format,
333
364
  formatTiles: formatTiles,
334
365
  schema: schema,
335
- clientId: clientId
366
+ clientId: clientId,
367
+ aggregationExp: aggregationExp,
368
+ aggregationResLevel: aggregationResLevel
336
369
  });
337
370
 
338
371
  case 3:
@@ -377,20 +410,24 @@ function _fetchDataUrl(_x6) {
377
410
 
378
411
  function _fetchDataUrl2() {
379
412
  _fetchDataUrl2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(_ref9) {
380
- var type, source, connection, credentials, geoColumn, columns, format, formatTiles, schema, clientId, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
413
+ var type, source, connection, credentials, geoColumn, columns, format, formatTiles, schema, clientId, aggregationExp, aggregationResLevel, defaultCredentials, localCreds, metadata, url, mapFormat, prioritizedFormats, _i, _prioritizedFormats, f, accessToken;
381
414
 
382
415
  return _regenerator.default.wrap(function _callee6$(_context6) {
383
416
  while (1) {
384
417
  switch (_context6.prev = _context6.next) {
385
418
  case 0:
386
- type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, schema = _ref9.schema, clientId = _ref9.clientId;
419
+ type = _ref9.type, source = _ref9.source, connection = _ref9.connection, credentials = _ref9.credentials, geoColumn = _ref9.geoColumn, columns = _ref9.columns, format = _ref9.format, formatTiles = _ref9.formatTiles, schema = _ref9.schema, clientId = _ref9.clientId, aggregationExp = _ref9.aggregationExp, aggregationResLevel = _ref9.aggregationResLevel;
387
420
  defaultCredentials = (0, _config.getDefaultCredentials)();
388
421
  localCreds = _objectSpread(_objectSpread({}, defaultCredentials.apiVersion === _mapsApiCommon.API_VERSIONS.V3 && defaultCredentials), credentials);
389
422
  checkFetchLayerDataParameters({
390
423
  type: type,
391
424
  source: source,
392
425
  connection: connection,
393
- credentials: localCreds
426
+ credentials: localCreds,
427
+ geoColumn: geoColumn,
428
+ columns: columns,
429
+ aggregationExp: aggregationExp,
430
+ aggregationResLevel: aggregationResLevel
394
431
  });
395
432
 
396
433
  if (!localCreds.mapsUrl) {
@@ -406,7 +443,9 @@ function _fetchDataUrl2() {
406
443
  geoColumn: geoColumn,
407
444
  columns: columns,
408
445
  schema: schema,
409
- clientId: clientId
446
+ clientId: clientId,
447
+ aggregationExp: aggregationExp,
448
+ aggregationResLevel: aggregationResLevel
410
449
  });
411
450
 
412
451
  case 7: