@deck.gl/carto 8.7.7 → 8.7.10

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.
@@ -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:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","parameters","push","sourceName","MAP_TYPES","QUERY","GEO_COLUMN_SUPPORT","includes","COLUMNS_SUPPORT","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","keplerMapConfig","config","visState","layers","filter","geojsonDatasetIds","dataId","forEach","id"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (GEO_COLUMN_SUPPORT.includes(type) && geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (COLUMNS_SUPPORT.includes(type) && columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({type, source, geoColumn, columns, schema, clientId})}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({type, source, connection, credentials: localCreds});\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema,\n clientId\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false,\n clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, format, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n source,\n type\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\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 dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","Error","requestJson","response","json","ok","dealWithError","error","requestData","format","FORMATS","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","aggregationExp","aggregationResLevel","parameters","push","sourceName","MAP_TYPES","QUERY","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","API_VERSIONS","V3","apiBaseUrl","COLUMNS_SUPPORT","includes","GEO_COLUMN_SUPPORT","fetchLayerData","formatTiles","_fetchDataUrl","mapFormat","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","log","assert","Object","values","TILE_FORMATS","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","intervalId","setInterval","changed","some","v","stopAutoRefresh","clearInterval","geojsonLayers","keplerMapConfig","config","visState","layers","filter","geojsonDatasetIds","dataId","forEach","id"],"mappings":"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","sourcesContent":["/**\n * Maps API Client for Carto 3\n */\nimport {getDefaultCredentials, buildMapsUrlFromBase, CloudNativeCredentials} from '../config';\nimport {\n API_VERSIONS,\n COLUMNS_SUPPORT,\n encodeParameter,\n Format,\n FORMATS,\n GEO_COLUMN_SUPPORT,\n MapInstantiation,\n MapType,\n MAP_TYPES,\n SchemaField,\n TileFormat,\n TILE_FORMATS\n} from './maps-api-common';\nimport {parseMap} from './parseMap';\nimport {log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nconst MAX_GET_LENGTH = 2048;\nconst DEFAULT_CLIENT = 'deck-gl-carto';\n\ninterface RequestParams {\n method?: string;\n url: string;\n accessToken?: string;\n body?: any;\n}\n\n/**\n * Request against Maps API\n */\nasync function request({method, url, accessToken, body}: RequestParams): Promise<Response> {\n const headers: Record<string, string> = {\n Accept: 'application/json'\n };\n\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n }\n\n if (method === 'POST') {\n headers['Content-Type'] = 'application/json';\n }\n\n try {\n /* global fetch */\n return await fetch(url, {\n method,\n headers,\n body\n });\n } catch (error) {\n throw new Error(`Failed to connect to Maps API: ${error}`);\n }\n}\n\nasync function requestJson<T = unknown>({\n method,\n url,\n accessToken,\n body\n}: RequestParams): Promise<T> {\n const response = await request({method, url, accessToken, body});\n const json = await response.json();\n\n if (!response.ok) {\n dealWithError({response, error: json.error});\n }\n return json as T;\n}\n\nasync function requestData({\n method,\n url,\n accessToken,\n format,\n body\n}: RequestParams & {\n format: Format;\n}): Promise<Response | unknown> {\n if (format === FORMATS.NDJSON) {\n return request({method, url, accessToken, body});\n }\n\n const data = await requestJson<any>({method, url, accessToken, body});\n return data.rows ? data.rows : data;\n}\n\n/**\n * Display proper message from Maps API error\n */\nfunction dealWithError({response, error}: {response: Response; error?: string}): never {\n switch (response.status) {\n case 400:\n throw new Error(`Bad request. ${error}`);\n case 401:\n case 403:\n throw new Error(`Unauthorized access. ${error}`);\n default:\n throw new Error(error);\n }\n}\n\ntype FetchLayerDataParams = {\n type: MapType;\n source: string;\n connection: string;\n credentials: CloudNativeCredentials;\n geoColumn?: string;\n columns?: string[];\n schema?: boolean;\n clientId?: string;\n format?: Format;\n formatTiles?: TileFormat;\n aggregationExp?: string;\n aggregationResLevel?: number;\n};\n\n/**\n * Build a URL with all required parameters\n */\nfunction getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\n if (schema) {\n parameters.push(encodeParameter('schema', true));\n }\n\n const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';\n parameters.push(encodeParameter(sourceName, source));\n\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\n if (aggregationExp) {\n parameters.push(encodeParameter('aggregationExp', aggregationExp));\n }\n if (aggregationResLevel) {\n parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));\n }\n\n return parameters.join('&');\n}\n\nexport async function mapInstantiation({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams): Promise<MapInstantiation> {\n const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;\n const url = `${baseUrl}?${getParameters({\n type,\n source,\n geoColumn,\n columns,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n })}`;\n const {accessToken} = credentials;\n\n if (url.length > MAX_GET_LENGTH && type === MAP_TYPES.QUERY) {\n // need to be a POST request\n const body = JSON.stringify({\n q: source,\n client: clientId || DEFAULT_CLIENT\n });\n return await requestJson({method: 'POST', url: baseUrl, accessToken, body});\n }\n\n return await requestJson({url, accessToken});\n}\n\nfunction getUrlFromMetadata(metadata: MapInstantiation, format: Format): string | null {\n const m = metadata[format];\n\n if (m && !m.error && m.url) {\n return m.url[0];\n }\n\n return null;\n}\n\nfunction checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n assert(connection, 'Must define connection');\n assert(type, 'Must define a type');\n assert(source, 'Must define a source');\n\n assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');\n assert(credentials.accessToken, 'Must define an accessToken');\n\n if (columns) {\n assert(\n COLUMNS_SUPPORT.includes(type),\n `The columns parameter is not supported by type ${type}`\n );\n }\n if (geoColumn) {\n assert(\n GEO_COLUMN_SUPPORT.includes(type),\n `The geoColumn parameter is not supported by type ${type}`\n );\n } else {\n assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');\n assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');\n }\n\n if (!aggregationExp) {\n assert(\n !aggregationResLevel,\n 'Have aggregationResLevel, but aggregationExp parameter is missing'\n );\n }\n}\n\nexport interface FetchLayerDataResult {\n data: any;\n format: Format;\n schema?: SchemaField[];\n}\nexport async function fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams): Promise<FetchLayerDataResult> {\n // Internally we split data fetching into two parts to allow us to\n // conditionally fetch the actual data, depending on the metadata state\n const {url, accessToken, mapFormat, metadata} = await _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat};\n if (schema) {\n result.schema = metadata.schema;\n }\n\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n}: FetchLayerDataParams) {\n const defaultCredentials = getDefaultCredentials();\n // Only pick up default credentials if they have been defined for\n // correct API version\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n };\n checkFetchLayerDataParameters({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n aggregationExp,\n aggregationResLevel\n });\n\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n const metadata = await mapInstantiation({\n type,\n source,\n connection,\n credentials: localCreds,\n geoColumn,\n columns,\n schema,\n clientId,\n aggregationExp,\n aggregationResLevel\n });\n let url: string | null = null;\n let mapFormat: Format | undefined;\n\n if (format) {\n mapFormat = format;\n url = getUrlFromMetadata(metadata, format);\n assert(url, `Format ${format} not available`);\n } else {\n // guess map format\n const prioritizedFormats = [FORMATS.GEOJSON, FORMATS.JSON, FORMATS.NDJSON, FORMATS.TILEJSON];\n for (const f of prioritizedFormats) {\n url = getUrlFromMetadata(metadata, f);\n if (url) {\n mapFormat = f;\n break;\n }\n }\n assert(url && mapFormat, 'Unsupported data formats received from backend.');\n }\n\n if (format === FORMATS.TILEJSON && formatTiles) {\n log.assert(\n Object.values(TILE_FORMATS).includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}. Use value from TILE_FORMATS`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n }\n\n const {accessToken} = localCreds;\n return {url, accessToken, mapFormat, metadata};\n}\n\nexport async function getData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n clientId\n}: FetchLayerDataParams) {\n log.deprecated('getData', 'fetchLayerData')();\n const layerData = await fetchLayerData({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n schema: false,\n clientId\n });\n return layerData.data;\n}\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset,\n accessToken: string,\n credentials: CloudNativeCredentials,\n clientId?: string\n) {\n const {connectionName: connection, columns, format, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n clientId,\n credentials: {...credentials, accessToken},\n connection,\n columns,\n format,\n geoColumn,\n source,\n type\n });\n\n // Extract the last time the data changed\n const cache = parseInt(new URL(url).searchParams.get('cache') || '', 10);\n if (cache && dataset.cache === cache) {\n return false;\n }\n dataset.cache = cache;\n\n // Only fetch if the data has changed\n dataset.data = await requestData({url, format: mapFormat, accessToken});\n\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, token},\n clientId: string,\n credentials: CloudNativeCredentials\n) {\n const promises = datasets.map(dataset => _fetchMapDataset(dataset, token, credentials, clientId));\n return await Promise.all(promises);\n}\n\nexport async function fetchMap({\n cartoMapId,\n clientId,\n credentials,\n autoRefresh,\n onNewData\n}: {\n cartoMapId: string;\n clientId: string;\n credentials?: CloudNativeCredentials;\n autoRefresh?: number;\n onNewData?: (map: any) => void;\n}) {\n const defaultCredentials = getDefaultCredentials();\n const localCreds = {\n ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),\n ...credentials\n } as CloudNativeCredentials;\n const {accessToken} = localCreds;\n\n assert(cartoMapId, 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})');\n\n assert(localCreds.apiVersion === API_VERSIONS.V3, 'Method only available for v3');\n assert(localCreds.apiBaseUrl, 'Must define apiBaseUrl');\n if (!localCreds.mapsUrl) {\n localCreds.mapsUrl = buildMapsUrlFromBase(localCreds.apiBaseUrl);\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const url = `${localCreds.mapsUrl}/public/${cartoMapId}`;\n const map = await requestJson<any>({url, accessToken});\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, clientId, localCreds);\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 dataset.format = 'geojson';\n }\n });\n\n // Mutates map.datasets so that dataset.data contains data\n await fillInMapDatasets(map, clientId, localCreds);\n return {\n ...parseMap(map),\n ...{stopAutoRefresh}\n };\n}\n"],"file":"maps-v3-client.js"}
@@ -1,6 +1,6 @@
1
1
  import { deviation, extent, groupSort, median, variance } from 'd3-array';
2
2
  import { rgb } from 'd3-color';
3
- import { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt } from 'd3-scale';
3
+ import { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt, scaleThreshold } from 'd3-scale';
4
4
  import { format as d3Format } from 'd3-format';
5
5
  import moment from 'moment-timezone';
6
6
  import { CPUGridLayer, HeatmapLayer, HexagonLayer } from '@deck.gl/aggregation-layers';
@@ -16,8 +16,10 @@ const SCALE_FUNCS = {
16
16
  point: scalePoint,
17
17
  quantile: scaleQuantile,
18
18
  quantize: scaleQuantize,
19
- sqrt: scaleSqrt
19
+ sqrt: scaleSqrt,
20
+ custom: scaleThreshold
20
21
  };
22
+ const UNKNOWN_COLOR = '#868d91';
21
23
  export const AGGREGATION = {
22
24
  average: 'MEAN',
23
25
  maximum: 'MAX',
@@ -209,7 +211,7 @@ function domainFromAttribute(attribute, scaleType) {
209
211
 
210
212
  function domainFromValues(values, scaleType) {
211
213
  if (scaleType === 'ordinal') {
212
- return [...new Set(values)].sort();
214
+ return groupSort(values, g => -g.length, d => d);
213
215
  } else if (scaleType === 'quantile') {
214
216
  return values.sort((a, b) => a - b);
215
217
  } else if (scaleType === 'log') {
@@ -264,11 +266,30 @@ export function getColorValueAccessor({
264
266
  export function getColorAccessor({
265
267
  name
266
268
  }, scaleType, {
267
- colors
269
+ colors,
270
+ colorMap
268
271
  }, opacity, data) {
269
272
  const scale = SCALE_FUNCS[scaleType]();
270
- scale.domain(calculateDomain(data, name, scaleType));
271
- scale.range(colors);
273
+ let domain = [];
274
+ let scaleColor = [];
275
+
276
+ if (Array.isArray(colorMap)) {
277
+ colorMap.forEach(([value, color]) => {
278
+ domain.push(value);
279
+ scaleColor.push(color);
280
+ });
281
+ } else {
282
+ domain = calculateDomain(data, name, scaleType);
283
+ scaleColor = colors;
284
+ }
285
+
286
+ if (scaleType === 'ordinal') {
287
+ domain = domain.slice(0, scaleColor.length);
288
+ }
289
+
290
+ scale.domain(domain);
291
+ scale.range(scaleColor);
292
+ scale.unknown(UNKNOWN_COLOR);
272
293
  const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
273
294
 
274
295
  const accessor = properties => {