@deck.gl/carto 8.7.10 → 8.8.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/dist.dev.js +33337 -40143
  2. package/dist/es5/api/layer-map.js +17 -5
  3. package/dist/es5/api/layer-map.js.map +1 -1
  4. package/dist/es5/api/maps-api-common.js +1 -0
  5. package/dist/es5/api/maps-api-common.js.map +1 -1
  6. package/dist/es5/api/maps-v3-client.js +9 -23
  7. package/dist/es5/api/maps-v3-client.js.map +1 -1
  8. package/dist/es5/api/parseMap.js +14 -3
  9. package/dist/es5/api/parseMap.js.map +1 -1
  10. package/dist/es5/index.js +16 -0
  11. package/dist/es5/index.js.map +1 -1
  12. package/dist/es5/layers/carto-layer.js +38 -13
  13. package/dist/es5/layers/carto-layer.js.map +1 -1
  14. package/dist/es5/layers/h3-tile-layer.js +107 -0
  15. package/dist/es5/layers/h3-tile-layer.js.map +1 -0
  16. package/dist/es5/layers/h3-tileset-2d.js +175 -0
  17. package/dist/es5/layers/h3-tileset-2d.js.map +1 -0
  18. package/dist/es5/layers/quadkey-tile-layer.js +103 -0
  19. package/dist/es5/layers/quadkey-tile-layer.js.map +1 -0
  20. package/dist/es5/layers/quadkey-tileset-2d.js +89 -0
  21. package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -0
  22. package/dist/es5/layers/spatial-index-tile-layer.js +92 -0
  23. package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -0
  24. package/dist/esm/api/layer-map.js +12 -4
  25. package/dist/esm/api/layer-map.js.map +1 -1
  26. package/dist/esm/api/maps-api-common.js +1 -0
  27. package/dist/esm/api/maps-api-common.js.map +1 -1
  28. package/dist/esm/api/maps-v3-client.js +2 -19
  29. package/dist/esm/api/maps-v3-client.js.map +1 -1
  30. package/dist/esm/api/parseMap.js +15 -4
  31. package/dist/esm/api/parseMap.js.map +1 -1
  32. package/dist/esm/index.js +2 -0
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/layers/carto-layer.js +37 -8
  35. package/dist/esm/layers/carto-layer.js.map +1 -1
  36. package/dist/esm/layers/h3-tile-layer.js +69 -0
  37. package/dist/esm/layers/h3-tile-layer.js.map +1 -0
  38. package/dist/esm/layers/h3-tileset-2d.js +118 -0
  39. package/dist/esm/layers/h3-tileset-2d.js.map +1 -0
  40. package/dist/esm/layers/quadkey-tile-layer.js +63 -0
  41. package/dist/esm/layers/quadkey-tile-layer.js.map +1 -0
  42. package/dist/esm/layers/quadkey-tileset-2d.js +48 -0
  43. package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -0
  44. package/dist/esm/layers/spatial-index-tile-layer.js +57 -0
  45. package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -0
  46. package/dist.min.js +14 -14
  47. package/package.json +9 -8
  48. package/src/api/layer-map.ts +14 -4
  49. package/src/api/maps-api-common.ts +4 -3
  50. package/src/api/maps-v3-client.ts +3 -19
  51. package/src/api/parseMap.ts +20 -5
  52. package/src/index.ts +4 -0
  53. package/src/layers/{carto-layer.js → carto-layer.ts} +162 -23
  54. package/src/layers/h3-tile-layer.js +52 -0
  55. package/src/layers/h3-tileset-2d.js +108 -0
  56. package/src/layers/quadkey-tile-layer.js +47 -0
  57. package/src/layers/quadkey-tileset-2d.js +36 -0
  58. package/src/layers/spatial-index-tile-layer.js +48 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _geoLayers = require("@deck.gl/geo-layers");
23
+
24
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
+
26
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
+
28
+ function tileToQuadkey(tile) {
29
+ var index = '';
30
+
31
+ for (var z = tile.z; z > 0; z--) {
32
+ var b = 0;
33
+ var mask = 1 << z - 1;
34
+ if ((tile.x & mask) !== 0) b++;
35
+ if ((tile.y & mask) !== 0) b += 2;
36
+ index += b.toString();
37
+ }
38
+
39
+ return {
40
+ i: index
41
+ };
42
+ }
43
+
44
+ var QuadkeyTileset2D = function (_Tileset2D) {
45
+ (0, _inherits2.default)(QuadkeyTileset2D, _Tileset2D);
46
+
47
+ var _super = _createSuper(QuadkeyTileset2D);
48
+
49
+ function QuadkeyTileset2D() {
50
+ (0, _classCallCheck2.default)(this, QuadkeyTileset2D);
51
+ return _super.apply(this, arguments);
52
+ }
53
+
54
+ (0, _createClass2.default)(QuadkeyTileset2D, [{
55
+ key: "getTileIndices",
56
+ value: function getTileIndices(opts) {
57
+ return (0, _get2.default)((0, _getPrototypeOf2.default)(QuadkeyTileset2D.prototype), "getTileIndices", this).call(this, opts).map(tileToQuadkey);
58
+ }
59
+ }, {
60
+ key: "getTileId",
61
+ value: function getTileId(_ref) {
62
+ var i = _ref.i;
63
+ return i;
64
+ }
65
+ }, {
66
+ key: "getTileMetadata",
67
+ value: function getTileMetadata() {
68
+ return {};
69
+ }
70
+ }, {
71
+ key: "getTileZoom",
72
+ value: function getTileZoom(_ref2) {
73
+ var i = _ref2.i;
74
+ return i.length;
75
+ }
76
+ }, {
77
+ key: "getParentIndex",
78
+ value: function getParentIndex(index) {
79
+ var i = index.i.slice(0, -1);
80
+ return {
81
+ i: i
82
+ };
83
+ }
84
+ }]);
85
+ return QuadkeyTileset2D;
86
+ }(_geoLayers._Tileset2D);
87
+
88
+ exports.default = QuadkeyTileset2D;
89
+ //# sourceMappingURL=quadkey-tileset-2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.js"],"names":["tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","opts","map","length","slice","Tileset2D"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,SAASA,aAAT,CAAuBC,IAAvB,EAA6B;AAC3B,MAAIC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAIC,CAAC,GAAGF,IAAI,CAACE,CAAlB,EAAqBA,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAIC,CAAC,GAAG,CAAR;AACA,QAAMC,IAAI,GAAG,KAAMF,CAAC,GAAG,CAAvB;AACA,QAAI,CAACF,IAAI,CAACK,CAAL,GAASD,IAAV,MAAoB,CAAxB,EAA2BD,CAAC;AAC5B,QAAI,CAACH,IAAI,CAACM,CAAL,GAASF,IAAV,MAAoB,CAAxB,EAA2BD,CAAC,IAAI,CAAL;AAC3BF,IAAAA,KAAK,IAAIE,CAAC,CAACI,QAAF,EAAT;AACD;;AACD,SAAO;AAACC,IAAAA,CAAC,EAAEP;AAAJ,GAAP;AACD;;IAEoBQ,gB;;;;;;;;;;;;WACnB,wBAAeC,IAAf,EAAqB;AACnB,aAAO,iHAAqBA,IAArB,EAA2BC,GAA3B,CAA+BZ,aAA/B,CAAP;AACD;;;WAED,yBAAe;AAAA,UAAJS,CAAI,QAAJA,CAAI;AACb,aAAOA,CAAP;AACD;;;WAED,2BAAkB;AAChB,aAAO,EAAP;AACD;;;WAED,4BAAiB;AAAA,UAAJA,CAAI,SAAJA,CAAI;AACf,aAAOA,CAAC,CAACI,MAAT;AACD;;;WAED,wBAAeX,KAAf,EAAsB;AACpB,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQK,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,aAAO;AAACL,QAAAA,CAAC,EAADA;AAAD,OAAP;AACD;;;EApB2CM,qB","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\nfunction tileToQuadkey(tile) {\n let index = '';\n for (let z = tile.z; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile.x & mask) !== 0) b++;\n if ((tile.y & mask) !== 0) b += 2;\n index += b.toString();\n }\n return {i: index};\n}\n\nexport default class QuadkeyTileset2D extends Tileset2D {\n getTileIndices(opts) {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata() {\n return {};\n }\n\n getTileZoom({i}) {\n return i.length;\n }\n\n getParentIndex(index) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _geoLayers = require("@deck.gl/geo-layers");
21
+
22
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
+
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+
26
+ function isFeatureIdDefined(value) {
27
+ return value !== undefined && value !== null && value !== '';
28
+ }
29
+
30
+ var SpatialIndexTileLayer = function (_TileLayer) {
31
+ (0, _inherits2.default)(SpatialIndexTileLayer, _TileLayer);
32
+
33
+ var _super = _createSuper(SpatialIndexTileLayer);
34
+
35
+ function SpatialIndexTileLayer() {
36
+ (0, _classCallCheck2.default)(this, SpatialIndexTileLayer);
37
+ return _super.apply(this, arguments);
38
+ }
39
+
40
+ (0, _createClass2.default)(SpatialIndexTileLayer, [{
41
+ key: "_updateAutoHighlight",
42
+ value: function _updateAutoHighlight(info) {
43
+ var hoveredFeatureId = this.state.hoveredFeatureId;
44
+ var hoveredFeature = info.object;
45
+ var newHoveredFeatureId;
46
+
47
+ if (hoveredFeature) {
48
+ newHoveredFeatureId = hoveredFeature.id;
49
+ }
50
+
51
+ if (hoveredFeatureId !== newHoveredFeatureId) {
52
+ var highlightColor = this.props.highlightColor;
53
+
54
+ if (typeof highlightColor === 'function') {
55
+ highlightColor = highlightColor(info);
56
+ }
57
+
58
+ this.setState({
59
+ highlightColor: highlightColor,
60
+ hoveredFeatureId: newHoveredFeatureId
61
+ });
62
+ }
63
+ }
64
+ }, {
65
+ key: "getSubLayerPropsByTile",
66
+ value: function getSubLayerPropsByTile(tile) {
67
+ return {
68
+ highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
69
+ highlightColor: this.state.highlightColor
70
+ };
71
+ }
72
+ }, {
73
+ key: "getHighlightedObjectIndex",
74
+ value: function getHighlightedObjectIndex(tile) {
75
+ var hoveredFeatureId = this.state.hoveredFeatureId;
76
+ var data = tile.content;
77
+ var isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);
78
+
79
+ if (!isFeatureIdPresent || !Array.isArray(data)) {
80
+ return -1;
81
+ }
82
+
83
+ return data.findIndex(function (feature) {
84
+ return feature.id === hoveredFeatureId;
85
+ });
86
+ }
87
+ }]);
88
+ return SpatialIndexTileLayer;
89
+ }(_geoLayers.TileLayer);
90
+
91
+ exports.default = SpatialIndexTileLayer;
92
+ //# sourceMappingURL=spatial-index-tile-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/layers/spatial-index-tile-layer.js"],"names":["isFeatureIdDefined","value","undefined","SpatialIndexTileLayer","info","hoveredFeatureId","state","hoveredFeature","object","newHoveredFeatureId","id","highlightColor","props","setState","tile","highlightedObjectIndex","getHighlightedObjectIndex","data","content","isFeatureIdPresent","Array","isArray","findIndex","feature","TileLayer"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,SAASA,kBAAT,CAA4BC,KAA5B,EAAmC;AACjC,SAAOA,KAAK,KAAKC,SAAV,IAAuBD,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;IAEoBE,qB;;;;;;;;;;;;WACnB,8BAAqBC,IAArB,EAA2B;AACzB,UAAOC,gBAAP,GAA2B,KAAKC,KAAhC,CAAOD,gBAAP;AACA,UAAME,cAAc,GAAGH,IAAI,CAACI,MAA5B;AACA,UAAIC,mBAAJ;;AAEA,UAAIF,cAAJ,EAAoB;AAClBE,QAAAA,mBAAmB,GAAGF,cAAc,CAACG,EAArC;AACD;;AAED,UAAIL,gBAAgB,KAAKI,mBAAzB,EAA8C;AAC5C,YAAKE,cAAL,GAAuB,KAAKC,KAA5B,CAAKD,cAAL;;AACA,YAAI,OAAOA,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,UAAAA,cAAc,GAAGA,cAAc,CAACP,IAAD,CAA/B;AACD;;AAED,aAAKS,QAAL,CAAc;AACZF,UAAAA,cAAc,EAAdA,cADY;AAEZN,UAAAA,gBAAgB,EAAEI;AAFN,SAAd;AAID;AACF;;;WAED,gCAAuBK,IAAvB,EAA6B;AAC3B,aAAO;AACLC,QAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BF,IAA/B,CADnB;AAELH,QAAAA,cAAc,EAAE,KAAKL,KAAL,CAAWK;AAFtB,OAAP;AAID;;;WAED,mCAA0BG,IAA1B,EAAgC;AAC9B,UAAOT,gBAAP,GAA2B,KAAKC,KAAhC,CAAOD,gBAAP;AACA,UAAMY,IAAI,GAAGH,IAAI,CAACI,OAAlB;AAEA,UAAMC,kBAAkB,GAAGnB,kBAAkB,CAACK,gBAAD,CAA7C;;AACA,UAAI,CAACc,kBAAD,IAAuB,CAACC,KAAK,CAACC,OAAN,CAAcJ,IAAd,CAA5B,EAAiD;AAC/C,eAAO,CAAC,CAAR;AACD;;AAED,aAAOA,IAAI,CAACK,SAAL,CAAe,UAAAC,OAAO;AAAA,eAAIA,OAAO,CAACb,EAAR,KAAeL,gBAAnB;AAAA,OAAtB,CAAP;AACD;;;EAxCgDmB,oB","sourcesContent":["import {TileLayer} from '@deck.gl/geo-layers';\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nexport default class SpatialIndexTileLayer extends TileLayer {\n _updateAutoHighlight(info) {\n const {hoveredFeatureId} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n\n if (hoveredFeature) {\n newHoveredFeatureId = hoveredFeature.id;\n }\n\n if (hoveredFeatureId !== newHoveredFeatureId) {\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId\n });\n }\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId} = this.state;\n const data = tile.content;\n\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId);\n if (!isFeatureIdPresent || !Array.isArray(data)) {\n return -1;\n }\n\n return data.findIndex(feature => feature.id === hoveredFeatureId);\n }\n}\n"],"file":"spatial-index-tile-layer.js"}
@@ -26,6 +26,11 @@ export const AGGREGATION = {
26
26
  minimum: 'MIN',
27
27
  sum: 'SUM'
28
28
  };
29
+ export const OPACITY_MAP = {
30
+ getFillColor: 'opacity',
31
+ getLineColor: 'strokeOpacity',
32
+ getTextColor: 'opacity'
33
+ };
29
34
  const AGGREGATION_FUNC = {
30
35
  'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,
31
36
  median,
@@ -58,7 +63,6 @@ const sharedPropMap = {
58
63
  enable3d: 'extruded',
59
64
  elevationScale: 'elevationScale',
60
65
  filled: 'filled',
61
- opacity: 'opacity',
62
66
  strokeColor: 'getLineColor',
63
67
  stroked: 'stroked',
64
68
  thickness: 'getLineWidth',
@@ -254,6 +258,9 @@ function normalizeAccessor(accessor, data) {
254
258
  return accessor;
255
259
  }
256
260
 
261
+ export function opacityToAlpha(opacity) {
262
+ return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
263
+ }
257
264
  export function getColorValueAccessor({
258
265
  name
259
266
  }, colorAggregation, data) {
@@ -290,15 +297,16 @@ export function getColorAccessor({
290
297
  scale.domain(domain);
291
298
  scale.range(scaleColor);
292
299
  scale.unknown(UNKNOWN_COLOR);
293
- const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
300
+ const alpha = opacityToAlpha(opacity);
294
301
 
295
302
  const accessor = properties => {
303
+ const propertyValue = properties[name];
296
304
  const {
297
305
  r,
298
306
  g,
299
307
  b
300
- } = rgb(scale(properties[name]));
301
- return [r, g, b, alpha];
308
+ } = rgb(scale(propertyValue));
309
+ return [r, g, b, propertyValue === null ? 0 : alpha];
302
310
  };
303
311
 
304
312
  return normalizeAccessor(accessor, data);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","scaleThreshold","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","MVTLayer","CartoTileLayer","TILE_FORMATS","assert","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","custom","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","AGGREGATION_FUNC","values","accessor","v","length","mode","pop","stddev","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","propMap","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","MVT","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","utc","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset","_domainFromValues"],"mappings":"AAAA,SAAQA,SAAR,EAAmBC,MAAnB,EAA2BC,SAA3B,EAAsCC,MAAtC,EAA8CC,QAA9C,QAA6D,UAA7D;AACA,SAAQC,GAAR,QAAkB,UAAlB;AACA,SACEC,WADF,EAEEC,YAFF,EAGEC,QAHF,EAIEC,UAJF,EAKEC,aALF,EAMEC,aANF,EAOEC,SAPF,EAQEC,cARF,QASO,UATP;AAUA,SAAQC,MAAM,IAAIC,QAAlB,QAAiC,WAAjC;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAEA,SAAQC,YAAR,EAAsBC,YAAtB,EAAoCC,YAApC,QAAuD,6BAAvD;AACA,SAAQC,YAAR,QAA2B,iBAA3B;AACA,SAAQC,cAAR,EAAwBC,QAAxB,QAAuC,qBAAvC;AAEA,OAAOC,cAAP,MAA2B,4BAA3B;AACA,SAAQC,YAAR,QAA2B,mBAA3B;AACA,SAAQC,MAAR,QAAqB,UAArB;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,MAAM,EAAErB,WADU;AAElBsB,EAAAA,OAAO,EAAErB,YAFS;AAGlBsB,EAAAA,GAAG,EAAErB,QAHa;AAIlBsB,EAAAA,KAAK,EAAErB,UAJW;AAKlBsB,EAAAA,QAAQ,EAAErB,aALQ;AAMlBsB,EAAAA,QAAQ,EAAErB,aANQ;AAOlBsB,EAAAA,IAAI,EAAErB,SAPY;AAQlBsB,EAAAA,MAAM,EAAErB;AARU,CAApB;AAYA,MAAMsB,aAAa,GAAG,SAAtB;AAEA,OAAO,MAAMC,WAAW,GAAG;AACzBC,EAAAA,OAAO,EAAE,MADgB;AAEzBC,EAAAA,OAAO,EAAE,KAFgB;AAGzBC,EAAAA,OAAO,EAAE,KAHgB;AAIzBC,EAAAA,GAAG,EAAE;AAJoB,CAApB;AAOP,MAAMC,gBAAgB,GAAG;AACvB,kBAAgB,CAACC,MAAD,EAASC,QAAT,KAAsBzC,SAAS,CAACwC,MAAD,EAASE,CAAC,IAAIA,CAAC,CAACC,MAAhB,EAAwBF,QAAxB,CAAT,CAA2CE,MAD1D;AAEvB1C,EAAAA,MAFuB;AAIvB2C,EAAAA,IAAI,EAAE,CAACJ,MAAD,EAASC,QAAT,KAAsBzC,SAAS,CAACwC,MAAD,EAASE,CAAC,IAAIA,CAAC,CAACC,MAAhB,EAAwBF,QAAxB,CAAT,CAA2CI,GAA3C,EAJL;AAKvBC,EAAAA,MAAM,EAAEhD,SALe;AAMvBI,EAAAA;AANuB,CAAzB;;AASA,MAAM6C,SAAS,GAAGC,CAAC,IAAI;AACrB,QAAM;AAACC,IAAAA,CAAD;AAAIC,IAAAA,CAAJ;AAAOC,IAAAA,CAAP;AAAUC,IAAAA;AAAV,MAAqBjD,GAAG,CAAC6C,CAAD,CAA9B;AACA,SAAO,CAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAU,MAAMC,OAAhB,CAAP;AACD,CAHD;;AAMA,MAAMC,aAAa,GAAG;AACpBC,EAAAA,KAAK,EAAE,cADa;AAEpBC,EAAAA,SAAS,EAAE,SAFS;AAGpBC,EAAAA,KAAK,EAAE,YAHa;AAIpBC,EAAAA,SAAS,EAAE;AACTC,IAAAA,SAAS,EAAE,0BADF;AAETC,IAAAA,MAAM,EAAE,eAFC;AAGTL,IAAAA,KAAK,EAAE,cAHE;AAITM,IAAAA,IAAI,EAAE;AAJG,GAJS;AAUpBC,EAAAA,SAAS,EAAE;AACTC,IAAAA,QAAQ,EAAE,UADD;AAETC,IAAAA,cAAc,EAAE,gBAFP;AAGTC,IAAAA,MAAM,EAAE,QAHC;AAITZ,IAAAA,OAAO,EAAE,SAJA;AAKTa,IAAAA,WAAW,EAAE,cALJ;AAMTC,IAAAA,OAAO,EAAE,SANA;AAOTC,IAAAA,SAAS,EAAE,cAPF;AAQTC,IAAAA,MAAM,EAAE,gBARC;AASTC,IAAAA,SAAS,EAAE;AATF;AAVS,CAAtB;AAuBA,MAAMC,oBAAoB,GAAG;AAC3BC,EAAAA,gBAAgB,EAAEC,CAAC,KAAK;AAACD,IAAAA,gBAAgB,EAAErC,WAAW,CAACsC,CAAD,CAAX,IAAkBtC,WAAW,CAACI;AAAjD,GAAL,CADQ;AAE3BmC,EAAAA,UAAU,EAAED,CAAC,KAAK;AAACC,IAAAA,UAAU,EAAED,CAAC,CAACE,MAAF,CAASC,GAAT,CAAa5B,SAAb;AAAb,GAAL,CAFc;AAG3B6B,EAAAA,QAAQ,EAAE,UAHiB;AAI3BC,EAAAA,mBAAmB,EAAE,CAAC,0BAAD,EAA6B,0BAA7B,CAJM;AAK3BC,EAAAA,UAAU,EAAE,CAAC,iBAAD,EAAoB,iBAApB;AALe,CAA7B;AAQA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,cAAc,EAAE,CADG;AAEnBC,EAAAA,cAAc,EAAE,QAFG;AAGnBC,EAAAA,gBAAgB,EAAE,QAHC;AAInBC,EAAAA,OAAO,EAAE,IAJU;AAKnBC,EAAAA,aAAa,EAAE;AALI,CAArB;;AAQA,SAASC,aAAT,CAAuBC,CAAC,GAAG,EAA3B,EAA+BnC,CAAC,GAAG,EAAnC,EAAuC;AACrC,SAAO,EAAC,GAAGmC,CAAJ;AAAO,OAAGnC,CAAV;AAAaU,IAAAA,SAAS,EAAE,EAAC,GAAGyB,CAAC,CAACzB,SAAN;AAAiB,SAAGV,CAAC,CAACU;AAAtB;AAAxB,GAAP;AACD;;AAED,OAAO,SAAS0B,QAAT,CACLC,IADK,EAELC,MAFK,EAGLC,OAHK,EAI0C;AAAA;;AAC/C,MAAIF,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,SAA/B,EAA0C;AACxC,WAAOG,YAAY,CAACD,OAAD,CAAnB;AACD;;AAED,QAAME,SAAS,GAAGF,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEE,SAA3B;;AACA,QAAMC,WAAW,GAAGC,CAAC,IAAIA,CAAC,CAACF,SAAD,CAAD,CAAaG,WAAtC;;AAEA,QAAMC,SAAS,sBAAGP,MAAM,CAACQ,OAAV,oDAAG,gBAAgBC,MAAlC;AACA,QAAMC,KAAK,GAAG;AACZvE,IAAAA,KAAK,EAAE;AACLwE,MAAAA,KAAK,EAAElF,YADF;AAELmF,MAAAA,OAAO,EAAE;AAACxC,QAAAA,SAAS,EAAE;AAACyC,UAAAA,OAAO,EAAE;AAAV;AAAZ;AAFJ,KADK;AAKZC,IAAAA,OAAO,EAAE;AACPH,MAAAA,KAAK,EAAElF;AADA,KALG;AAQZsF,IAAAA,IAAI,EAAE;AACJJ,MAAAA,KAAK,EAAErF,YADH;AAEJsF,MAAAA,OAAO,EAAE;AAACxC,QAAAA,SAAS,EAAE,EAAC,GAAGS,oBAAJ;AAA0BmC,UAAAA,aAAa,EAAEjC,CAAC,KAAK;AAACkC,YAAAA,QAAQ,EAAE,OAAOlC;AAAlB,WAAL;AAA1C;AAAZ,OAFL;AAGJO,MAAAA,YAAY,EAAE;AAACc,QAAAA;AAAD;AAHV,KARM;AAaZc,IAAAA,OAAO,EAAE;AACPP,MAAAA,KAAK,EAAEpF,YADA;AAEPqF,MAAAA,OAAO,EAAE;AAACxC,QAAAA,SAAS,EAAE,EAAC,GAAGS,oBAAJ;AAA0BF,UAAAA,MAAM,EAAE;AAAlC;AAAZ,OAFF;AAGPW,MAAAA,YAAY,EAAE;AAACc,QAAAA;AAAD;AAHP,KAbG;AAkBZe,IAAAA,OAAO,EAAE;AACPR,MAAAA,KAAK,EAAEnF,YADA;AAEPoF,MAAAA,OAAO,EAAE;AAACxC,QAAAA,SAAS,EAAE,EAAC,GAAGS,oBAAJ;AAA0BmC,UAAAA,aAAa,EAAEjC,CAAC,KAAK;AAACJ,YAAAA,MAAM,EAAE,OAAOI;AAAhB,WAAL;AAA1C;AAAZ,OAFF;AAGPO,MAAAA,YAAY,EAAE;AAACc,QAAAA;AAAD;AAHP,KAlBG;AAuBZG,IAAAA,SAAS,EAAE;AACTI,MAAAA,KAAK,EAAEjF,cADE;AAETkF,MAAAA,OAAO,EAAE;AAACxC,QAAAA,SAAS,EAAE;AAACe,UAAAA,QAAQ,EAAE;AAAX;AAAZ,OAFA;AAGTG,MAAAA,YAAY,EAAE;AAAC8B,QAAAA,UAAU,EAAEf,CAAC,IAAIA,CAAC,CAACE,SAAD,CAAnB;AAAgC9B,QAAAA,OAAO,EAAE;AAAzC;AAHL;AAvBC,IA4BZsB,IA5BY,CAAd;AA8BAjE,EAAAA,MAAM,CAAC4E,KAAD,oCAAmCX,IAAnC,EAAN;AACAW,EAAAA,KAAK,CAACE,OAAN,GAAgBhB,aAAa,CAAChC,aAAD,EAAgB8C,KAAK,CAACE,OAAtB,CAA7B;AACAF,EAAAA,KAAK,CAACpB,YAAN,GAAqB,EAAC,GAAGA,YAAJ;AAAkB,OAAGoB,KAAK,CAACpB;AAA3B,GAArB;AACA,SAAOoB,KAAP;AACD;;AAED,SAASR,YAAT,CAAsBD,OAAtB,EAA+B;AAC7B,QAAM;AACJoB,IAAAA,IAAI,EAAE;AACJC,MAAAA,KAAK,EAAE,CAACC,OAAD;AADH;AADF,MAIFtB,OAJJ;AAMA,QAAMuB,WAAW,GAAG,IAAIC,GAAJ,CAAQF,OAAR,EAAiBG,YAAjB,CAA8BC,GAA9B,CAAkC,aAAlC,KAAoD9F,YAAY,CAAC+F,GAArF;AAEA,SAAO;AACLjB,IAAAA,KAAK,EAAEa,WAAW,KAAK3F,YAAY,CAAC+F,GAA7B,GAAmCjG,QAAnC,GAA8CC,cADhD;AAELgF,IAAAA,OAAO,EAAEhD,aAFJ;AAGL0B,IAAAA,YAAY,EAAE,EACZ,GAAGA,YADS;AAEZuC,MAAAA,gBAAgB,EAAE,OAFN;AAGZL,MAAAA;AAHY;AAHT,GAAP;AASD;;AAED,SAASM,mBAAT,CAA6BC,SAA7B,EAAwCC,SAAxC,EAA+D;AAC7D,MAAIA,SAAS,KAAK,SAAd,IAA2BA,SAAS,KAAK,OAA7C,EAAsD;AACpD,WAAOD,SAAS,CAACE,UAAV,CAAqB/C,GAArB,CAAyB3B,CAAC,IAAIA,CAAC,CAAC2E,QAAhC,EAA0CC,MAA1C,CAAiD5E,CAAC,IAAIA,CAAC,KAAK6E,SAAN,IAAmB7E,CAAC,KAAK,IAA/E,CAAP;AACD;;AAED,MAAI;AAAC8E,IAAAA;AAAD,MAAQN,SAAZ;;AACA,MAAIC,SAAS,KAAK,KAAd,IAAuBK,GAAG,KAAK,CAAnC,EAAsC;AACpCA,IAAAA,GAAG,GAAG,IAAN;AACD;;AACD,SAAO,CAACA,GAAD,EAAMN,SAAS,CAACO,GAAhB,CAAP;AACD;;AAED,SAASC,gBAAT,CAA0BxF,MAA1B,EAAkCiF,SAAlC,EAAyD;AACvD,MAAIA,SAAS,KAAK,SAAlB,EAA6B;AAC3B,WAAOzH,SAAS,CACdwC,MADc,EAEdU,CAAC,IAAI,CAACA,CAAC,CAACP,MAFM,EAGdmD,CAAC,IAAIA,CAHS,CAAhB;AAKD,GAND,MAMO,IAAI2B,SAAS,KAAK,UAAlB,EAA8B;AACnC,WAAOjF,MAAM,CAACyF,IAAP,CAAY,CAAC3C,CAAD,EAAInC,CAAJ,KAAUmC,CAAC,GAAGnC,CAA1B,CAAP;AACD,GAFM,MAEA,IAAIsE,SAAS,KAAK,KAAlB,EAAyB;AAC9B,UAAM,CAACS,EAAD,EAAKC,EAAL,IAAWpI,MAAM,CAACyC,MAAD,CAAvB;AACA,WAAO,CAAC0F,EAAE,KAAK,CAAP,GAAW,IAAX,GAAkBA,EAAnB,EAAuBC,EAAvB,CAAP;AACD;;AACD,SAAOpI,MAAM,CAACyC,MAAD,CAAb;AACD;;AAED,SAAS4F,eAAT,CAAyBtB,IAAzB,EAA+BuB,IAA/B,EAAqCZ,SAArC,EAAgD;AAC9C,MAAIX,IAAI,CAACwB,SAAT,EAAoB;AAElB,UAAM;AAACC,MAAAA;AAAD,QAAezB,IAAI,CAACwB,SAAL,CAAeE,MAAf,CAAsB,CAAtB,CAArB;AACA,UAAMhB,SAAS,GAAGe,UAAU,CAACE,IAAX,CAAgBnD,CAAC,IAAIA,CAAC,CAACkC,SAAF,KAAgBa,IAArC,CAAlB;AACA,WAAOd,mBAAmB,CAACC,SAAD,EAAYC,SAAZ,CAA1B;AACD,GALD,MAKO,IAAIX,IAAI,CAAC4B,QAAT,EAAmB;AAExB,UAAMlG,MAAM,GAAGsE,IAAI,CAAC4B,QAAL,CAAc/D,GAAd,CAAkB,CAAC;AAACgE,MAAAA;AAAD,KAAD,KAAkBA,UAAU,CAACN,IAAD,CAA9C,CAAf;AACA,WAAOL,gBAAgB,CAACxF,MAAD,EAASiF,SAAT,CAAvB;AACD,GAJM,MAIA,IAAImB,KAAK,CAACC,OAAN,CAAc/B,IAAd,KAAuBA,IAAI,CAAC,CAAD,CAAJ,CAAQuB,IAAR,MAAkBR,SAA7C,EAAwD;AAE7D,UAAMrF,MAAM,GAAGsE,IAAI,CAACnC,GAAL,CAASgE,UAAU,IAAIA,UAAU,CAACN,IAAD,CAAjC,CAAf;AACA,WAAOL,gBAAgB,CAACxF,MAAD,EAASiF,SAAT,CAAvB;AACD;;AAED,SAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;AACD;;AAED,SAASqB,iBAAT,CAA2BrG,QAA3B,EAAqCqE,IAArC,EAA2C;AACzC,MAAIA,IAAI,CAAC4B,QAAL,IAAiB5B,IAAI,CAACwB,SAA1B,EAAqC;AACnC,WAAO,CAAC;AAACK,MAAAA;AAAD,KAAD,KAAkB;AACvB,aAAOlG,QAAQ,CAACkG,UAAD,CAAf;AACD,KAFD;AAGD;;AACD,SAAOlG,QAAP;AACD;;AAED,OAAO,SAASsG,qBAAT,CAA+B;AAACV,EAAAA;AAAD,CAA/B,EAAuC9D,gBAAvC,EAAyDuC,IAAzD,EAAoE;AACzE,QAAMkC,UAAU,GAAGzG,gBAAgB,CAACgC,gBAAD,CAAnC;;AACA,QAAM9B,QAAQ,GAAGD,MAAM,IAAIwG,UAAU,CAACxG,MAAD,EAASyG,CAAC,IAAIA,CAAC,CAACZ,IAAD,CAAf,CAArC;;AACA,SAAOS,iBAAiB,CAACrG,QAAD,EAAWqE,IAAX,CAAxB;AACD;AAED,OAAO,SAASoC,gBAAT,CACL;AAACb,EAAAA;AAAD,CADK,EAELZ,SAFK,EAGL;AAAC/C,EAAAA,MAAD;AAASyE,EAAAA;AAAT,CAHK,EAIL/F,OAJK,EAKL0D,IALK,EAML;AACA,QAAMsC,KAAK,GAAG5H,WAAW,CAACiG,SAAD,CAAX,EAAd;AACA,MAAI4B,MAA2B,GAAG,EAAlC;AACA,MAAIC,UAAoB,GAAG,EAA3B;;AAEA,MAAIV,KAAK,CAACC,OAAN,CAAcM,QAAd,CAAJ,EAA6B;AAC3BA,IAAAA,QAAQ,CAACI,OAAT,CAAiB,CAAC,CAACC,KAAD,EAAQlG,KAAR,CAAD,KAAoB;AACnC+F,MAAAA,MAAM,CAACI,IAAP,CAAYD,KAAZ;AACAF,MAAAA,UAAU,CAACG,IAAX,CAAgBnG,KAAhB;AACD,KAHD;AAID,GALD,MAKO;AACL+F,IAAAA,MAAM,GAAGjB,eAAe,CAACtB,IAAD,EAAOuB,IAAP,EAAaZ,SAAb,CAAxB;AACA6B,IAAAA,UAAU,GAAG5E,MAAb;AACD;;AAED,MAAI+C,SAAS,KAAK,SAAlB,EAA6B;AAC3B4B,IAAAA,MAAM,GAAGA,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgBJ,UAAU,CAAC3G,MAA3B,CAAT;AACD;;AAEDyG,EAAAA,KAAK,CAACC,MAAN,CAAaA,MAAb;AACAD,EAAAA,KAAK,CAACO,KAAN,CAAYL,UAAZ;AACAF,EAAAA,KAAK,CAACQ,OAAN,CAAc3H,aAAd;AACA,QAAM4H,KAAK,GAAGzG,OAAO,KAAKyE,SAAZ,GAAwBiC,IAAI,CAACC,KAAL,CAAW,MAAMD,IAAI,CAACE,GAAL,CAAS5G,OAAT,EAAkB,IAAI,GAAtB,CAAjB,CAAxB,GAAuE,GAArF;;AAEA,QAAMX,QAAQ,GAAGkG,UAAU,IAAI;AAC7B,UAAM;AAAC1F,MAAAA,CAAD;AAAIC,MAAAA,CAAJ;AAAOC,MAAAA;AAAP,QAAYhD,GAAG,CAACiJ,KAAK,CAACT,UAAU,CAACN,IAAD,CAAX,CAAN,CAArB;AACA,WAAO,CAACpF,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAU0G,KAAV,CAAP;AACD,GAHD;;AAIA,SAAOf,iBAAiB,CAACrG,QAAD,EAAWqE,IAAX,CAAxB;AACD;AAED,OAAO,SAASmD,eAAT,CAAyB;AAAC5B,EAAAA;AAAD,CAAzB,EAAiCZ,SAAjC,EAAwDkC,KAAxD,EAAgF7C,IAAhF,EAA2F;AAChG,QAAMsC,KAAK,GAAG5H,WAAW,CAACiG,SAAD,CAAX,EAAd;AACA2B,EAAAA,KAAK,CAACC,MAAN,CAAajB,eAAe,CAACtB,IAAD,EAAOuB,IAAP,EAAaZ,SAAb,CAA5B;AACA2B,EAAAA,KAAK,CAACO,KAAN,CAAYA,KAAZ;;AAEA,QAAMlH,QAAQ,GAAGkG,UAAU,IAAI;AAC7B,WAAOS,KAAK,CAACT,UAAU,CAACN,IAAD,CAAX,CAAZ;AACD,GAFD;;AAGA,SAAOS,iBAAiB,CAACrG,QAAD,EAAWqE,IAAX,CAAxB;AACD;AAED,MAAMoD,OAA+C,GAAG;AACtDC,EAAAA,IAAI,EAAEC,CAAC,IAAItJ,MAAM,CAACuJ,GAAP,CAAWD,CAAX,EAAcxJ,MAAd,CAAqB,oBAArB,CAD2C;AAEtD0J,EAAAA,OAAO,EAAEzJ,QAAQ,CAAC,GAAD,CAFqC;AAGtD0J,EAAAA,KAAK,EAAE1J,QAAQ,CAAC,KAAD,CAHuC;AAItD2J,EAAAA,SAAS,EAAEJ,CAAC,IAAItJ,MAAM,CAACuJ,GAAP,CAAWD,CAAX,EAAcxJ,MAAd,CAAqB,GAArB,CAJsC;AAKtD6J,EAAAA,OAAO,EAAEC;AAL6C,CAAxD;AAQA,OAAO,SAASC,eAAT,CAAyB;AAACtC,EAAAA,IAAD;AAAO7C,EAAAA;AAAP,CAAzB,EAAuCsB,IAAvC,EAA6C;AAClD,QAAMlG,MAAM,GAAGsJ,OAAO,CAAC1E,IAAD,CAAP,IAAiB0E,OAAO,CAACO,OAAxC;;AACA,QAAMhI,QAAQ,GAAGkG,UAAU,IAAI;AAC7B,WAAO/H,MAAM,CAAC+H,UAAU,CAACN,IAAD,CAAX,CAAb;AACD,GAFD;;AAGA,SAAOS,iBAAiB,CAACrG,QAAD,EAAWqE,IAAX,CAAxB;AACD;AAED,OAAO,SAAS8D,0BAAT,CAAoC;AAAClH,EAAAA,SAAD;AAAYC,EAAAA,MAAZ;AAAoBC,EAAAA;AAApB,CAApC,EAA+DQ,MAA/D,EAAuE;AAC5E,QAAMyG,OAAO,GAAG,EAAhB;AACA,QAAMC,KAAK,GAAGnH,MAAM,KAAK,QAAX,GAAsB,CAAtB,GAA0BA,MAAM,KAAK,OAAX,GAAqB,CAArB,GAAyB,CAAC,CAAlE;AACA,QAAMoH,KAAK,GAAGrH,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6BA,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6B,CAAC,CAAzE;AACA,QAAMsH,UAAU,GAAGtH,SAAS,KAAK,QAAd,GAAyB,CAAzB,GAA6BE,IAAhD;;AAEA,QAAMqH,eAAe,GAAGhI,CAAC,IAAI,CAAC6H,KAAK,IAAI7H,CAAC,GAAG4H,OAAR,CAAN,EAAwBE,KAAK,IAAI9H,CAAC,GAAG4H,OAAJ,GAAcG,UAAlB,CAA7B,CAA7B;;AAEA,SAAO,OAAO5G,MAAP,KAAkB,UAAlB,GACH0B,CAAC,IAAI;AACH,WAAOmF,eAAe,CAAC7G,MAAM,CAAC0B,CAAD,CAAP,CAAtB;AACD,GAHE,GAIHmF,eAAe,CAAC7G,MAAD,CAJnB;AAKD;AAED,SAAQ4D,gBAAgB,IAAIkD,iBAA5B","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"}
1
+ {"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","scaleThreshold","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","MVTLayer","CartoTileLayer","TILE_FORMATS","assert","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","custom","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","v","length","mode","pop","stddev","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","propMap","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","MVT","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","opacityToAlpha","Math","round","pow","getColorValueAccessor","aggregator","p","getColorAccessor","colorMap","scale","domain","scaleColor","forEach","value","push","slice","range","unknown","alpha","propertyValue","getSizeAccessor","FORMATS","date","s","utc","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset","_domainFromValues"],"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\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\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 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 opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\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 = opacityToAlpha(opacity);\n\n const accessor = properties => {\n const propertyValue = properties[name];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : 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"}
@@ -24,6 +24,7 @@ export const FORMATS = {
24
24
  };
25
25
  export const TILE_FORMATS = {
26
26
  MVT: 'mvt',
27
+ JSON: 'json',
27
28
  GEOJSON: 'geojson',
28
29
  BINARY: 'binary'
29
30
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,QAAtC;AACP,OAAO,MAAMC,+BAA+B,GAAG,UAAxC;AAGP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;AAOP,OAAO,MAAMC,uBAAuB,GAAG;AACrC,GAACJ,YAAY,CAACC,EAAd,qBAA8BH,6BAA9B,0BADqC;AAErC,GAACE,YAAY,CAACE,EAAd,iCAA0CH,+BAA1C,6BAA4FD,6BAA5F;AAFqC,CAAhC;AAKP,OAAO,MAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;AAMP,OAAO,MAAMC,eAAe,GAAG,CAACJ,SAAS,CAACE,KAAX,CAAxB;AACP,OAAO,MAAMG,kBAAkB,GAAG,CAACL,SAAS,CAACC,KAAX,EAAkBD,SAAS,CAACE,KAA5B,CAA3B;AAGP,OAAO,MAAMI,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE,SADY;AAErBC,EAAAA,MAAM,EAAE,QAFa;AAGrBC,EAAAA,QAAQ,EAAE,UAHW;AAIrBC,EAAAA,IAAI,EAAE;AAJe,CAAhB;AASP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,GAAG,EAAE,KADqB;AAE1BL,EAAAA,OAAO,EAAE,SAFiB;AAG1BM,EAAAA,MAAM,EAAE;AAHkB,CAArB;AAOP,WAAYC,eAAZ;;WAAYA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;GAAAA,e,KAAAA,e;;AAiCZ,OAAO,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AACtF,mBAAUD,IAAV,cAAkBE,kBAAkB,CAACD,KAAD,CAApC;AACD","sourcesContent":["export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\n\nexport type ValuesOf<T extends {}> = T[keyof T];\nexport const API_VERSIONS = {\n V1: 'v1',\n V2: 'v2',\n V3: 'v3'\n} as const;\nexport type ApiVersion = ValuesOf<typeof API_VERSIONS>;\n\nexport const DEFAULT_MAPS_URL_FORMAT = {\n [API_VERSIONS.V1]: `https://${DEFAULT_USER_COMPONENT_IN_URL}.carto.com/api/v1/map`,\n [API_VERSIONS.V2]: `https://maps-api-v2.${DEFAULT_REGION_COMPONENT_IN_URL}.carto.com/user/${DEFAULT_USER_COMPONENT_IN_URL}`\n} as const;\n\nexport const MAP_TYPES = {\n QUERY: 'query',\n TABLE: 'table',\n TILESET: 'tileset'\n} as const;\nexport type MapType = ValuesOf<typeof MAP_TYPES>;\nexport const COLUMNS_SUPPORT = [MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\n\n// AVAILABLE FORMATS\nexport const FORMATS = {\n GEOJSON: 'geojson',\n NDJSON: 'ndjson',\n TILEJSON: 'tilejson',\n JSON: 'json'\n} as const;\nexport type Format = ValuesOf<typeof FORMATS>;\n\n// AVAILABLE FORMATS FOR TILES\nexport const TILE_FORMATS = {\n MVT: 'mvt',\n GEOJSON: 'geojson',\n BINARY: 'binary'\n} as const;\nexport type TileFormat = ValuesOf<typeof TILE_FORMATS>;\n\nexport enum SchemaFieldType {\n Number = 'number',\n Bigint = 'bigint',\n String = 'string',\n Geometry = 'geometry',\n Timestamp = 'timestamp',\n Object = 'object',\n Boolean = 'boolean',\n Variant = 'variant',\n Unknown = 'unknown'\n}\nexport interface SchemaField {\n name: string;\n type: SchemaFieldType; // Field type in the CARTO stack, common for all providers\n}\n\nexport interface MapInstantiation extends MapInstantiationFormats {\n nrows: number;\n size?: number;\n schema?: SchemaField[];\n}\n\ntype MapInstantiationFormats = Record<\n Format,\n {\n url: string[];\n error?: any;\n }\n>;\n\n/**\n * Simple encode parameter\n */\nexport function encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n"],"file":"maps-api-common.js"}
1
+ {"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,QAAtC;AACP,OAAO,MAAMC,+BAA+B,GAAG,UAAxC;AAGP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;AAOP,OAAO,MAAMC,uBAAuB,GAAG;AACrC,GAACJ,YAAY,CAACC,EAAd,qBAA8BH,6BAA9B,0BADqC;AAErC,GAACE,YAAY,CAACE,EAAd,iCAA0CH,+BAA1C,6BAA4FD,6BAA5F;AAFqC,CAAhC;AAKP,OAAO,MAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;AAMP,OAAO,MAAMC,eAA0B,GAAG,CAACJ,SAAS,CAACE,KAAX,CAAnC;AACP,OAAO,MAAMG,kBAA6B,GAAG,CAACL,SAAS,CAACC,KAAX,EAAkBD,SAAS,CAACE,KAA5B,CAAtC;AAGP,OAAO,MAAMI,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE,SADY;AAErBC,EAAAA,MAAM,EAAE,QAFa;AAGrBC,EAAAA,QAAQ,EAAE,UAHW;AAIrBC,EAAAA,IAAI,EAAE;AAJe,CAAhB;AASP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,GAAG,EAAE,KADqB;AAE1BF,EAAAA,IAAI,EAAE,MAFoB;AAG1BH,EAAAA,OAAO,EAAE,SAHiB;AAI1BM,EAAAA,MAAM,EAAE;AAJkB,CAArB;AAQP,WAAYC,eAAZ;;WAAYA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;GAAAA,e,KAAAA,e;;AAiCZ,OAAO,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AACtF,mBAAUD,IAAV,cAAkBE,kBAAkB,CAACD,KAAD,CAApC;AACD","sourcesContent":["export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\n\nexport type ValuesOf<T extends {}> = T[keyof T];\nexport const API_VERSIONS = {\n V1: 'v1',\n V2: 'v2',\n V3: 'v3'\n} as const;\nexport type ApiVersion = ValuesOf<typeof API_VERSIONS>;\n\nexport const DEFAULT_MAPS_URL_FORMAT = {\n [API_VERSIONS.V1]: `https://${DEFAULT_USER_COMPONENT_IN_URL}.carto.com/api/v1/map`,\n [API_VERSIONS.V2]: `https://maps-api-v2.${DEFAULT_REGION_COMPONENT_IN_URL}.carto.com/user/${DEFAULT_USER_COMPONENT_IN_URL}`\n} as const;\n\nexport const MAP_TYPES = {\n QUERY: 'query',\n TABLE: 'table',\n TILESET: 'tileset'\n} as const;\nexport type MapType = ValuesOf<typeof MAP_TYPES>;\nexport const COLUMNS_SUPPORT: MapType[] = [MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT: MapType[] = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\n\n// AVAILABLE FORMATS\nexport const FORMATS = {\n GEOJSON: 'geojson',\n NDJSON: 'ndjson',\n TILEJSON: 'tilejson',\n JSON: 'json'\n} as const;\nexport type Format = ValuesOf<typeof FORMATS>;\n\n// AVAILABLE FORMATS FOR TILES\nexport const TILE_FORMATS = {\n MVT: 'mvt',\n JSON: 'json',\n GEOJSON: 'geojson',\n BINARY: 'binary'\n} as const;\nexport type TileFormat = ValuesOf<typeof TILE_FORMATS>;\n\nexport enum SchemaFieldType {\n Number = 'number',\n Bigint = 'bigint',\n String = 'string',\n Geometry = 'geometry',\n Timestamp = 'timestamp',\n Object = 'object',\n Boolean = 'boolean',\n Variant = 'variant',\n Unknown = 'unknown'\n}\nexport interface SchemaField {\n name: string;\n type: SchemaFieldType; // Field type in the CARTO stack, common for all providers\n}\n\nexport interface MapInstantiation extends MapInstantiationFormats {\n nrows: number;\n size?: number;\n schema: SchemaField[];\n}\n\ntype MapInstantiationFormats = Record<\n Format,\n {\n url: string[];\n error?: any;\n }\n>;\n\n/**\n * Simple encode parameter\n */\nexport function encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n"],"file":"maps-api-common.js"}
@@ -106,17 +106,11 @@ function getParameters({
106
106
  source,
107
107
  geoColumn,
108
108
  columns,
109
- schema,
110
109
  clientId,
111
110
  aggregationExp,
112
111
  aggregationResLevel
113
112
  }) {
114
113
  const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];
115
-
116
- if (schema) {
117
- parameters.push(encodeParameter('schema', true));
118
- }
119
-
120
114
  const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';
121
115
  parameters.push(encodeParameter(sourceName, source));
122
116
 
@@ -146,7 +140,6 @@ export async function mapInstantiation({
146
140
  credentials,
147
141
  geoColumn,
148
142
  columns,
149
- schema,
150
143
  clientId,
151
144
  aggregationExp,
152
145
  aggregationResLevel
@@ -157,7 +150,6 @@ export async function mapInstantiation({
157
150
  source,
158
151
  geoColumn,
159
152
  columns,
160
- schema,
161
153
  clientId,
162
154
  aggregationExp,
163
155
  aggregationResLevel
@@ -237,7 +229,6 @@ export async function fetchLayerData({
237
229
  columns,
238
230
  format,
239
231
  formatTiles,
240
- schema,
241
232
  clientId,
242
233
  aggregationExp,
243
234
  aggregationResLevel
@@ -256,7 +247,6 @@ export async function fetchLayerData({
256
247
  columns,
257
248
  format,
258
249
  formatTiles,
259
- schema,
260
250
  clientId,
261
251
  aggregationExp,
262
252
  aggregationResLevel
@@ -268,13 +258,9 @@ export async function fetchLayerData({
268
258
  });
269
259
  const result = {
270
260
  data,
271
- format: mapFormat
261
+ format: mapFormat,
262
+ schema: metadata.schema
272
263
  };
273
-
274
- if (schema) {
275
- result.schema = metadata.schema;
276
- }
277
-
278
264
  return result;
279
265
  }
280
266
 
@@ -287,7 +273,6 @@ async function _fetchDataUrl({
287
273
  columns,
288
274
  format,
289
275
  formatTiles,
290
- schema,
291
276
  clientId,
292
277
  aggregationExp,
293
278
  aggregationResLevel
@@ -318,7 +303,6 @@ async function _fetchDataUrl({
318
303
  credentials: localCreds,
319
304
  geoColumn,
320
305
  columns,
321
- schema,
322
306
  clientId,
323
307
  aggregationExp,
324
308
  aggregationResLevel
@@ -380,7 +364,6 @@ export async function getData({
380
364
  geoColumn,
381
365
  columns,
382
366
  format,
383
- schema: false,
384
367
  clientId
385
368
  });
386
369
  return layerData.data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","TILE_FORMATS","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","error","Error","requestJson","response","json","ok","dealWithError","requestData","format","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","schema","clientId","aggregationExp","aggregationResLevel","parameters","push","sourceName","QUERY","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","result","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","Object","values","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","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
+ {"version":3,"sources":["../../../src/api/maps-v3-client.ts"],"names":["getDefaultCredentials","buildMapsUrlFromBase","API_VERSIONS","COLUMNS_SUPPORT","encodeParameter","FORMATS","GEO_COLUMN_SUPPORT","MAP_TYPES","TILE_FORMATS","parseMap","log","assert","MAX_GET_LENGTH","DEFAULT_CLIENT","request","method","url","accessToken","body","headers","Accept","Authorization","fetch","error","Error","requestJson","response","json","ok","dealWithError","requestData","format","NDJSON","data","rows","status","getParameters","type","source","geoColumn","columns","clientId","aggregationExp","aggregationResLevel","parameters","sourceName","QUERY","push","join","mapInstantiation","connection","credentials","baseUrl","mapsUrl","length","JSON","stringify","q","client","getUrlFromMetadata","metadata","m","checkFetchLayerDataParameters","apiVersion","V3","apiBaseUrl","includes","fetchLayerData","formatTiles","mapFormat","_fetchDataUrl","result","schema","defaultCredentials","localCreds","prioritizedFormats","GEOJSON","TILEJSON","f","Object","values","getData","deprecated","layerData","_fetchMapDataset","dataset","connectionName","cache","parseInt","URL","searchParams","get","fillInMapDatasets","datasets","token","promises","map","Promise","all","fetchMap","cartoMapId","autoRefresh","onNewData","stopAutoRefresh","intervalId","setInterval","changed","some","v","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 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 clientId,\n aggregationExp,\n aggregationResLevel\n}: Omit<FetchLayerDataParams, 'connection' | 'credentials'>) {\n const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];\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 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 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 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 clientId,\n aggregationExp,\n aggregationResLevel\n });\n\n const data = await requestData({url, format: mapFormat, accessToken});\n const result: FetchLayerDataResult = {data, format: mapFormat, schema: metadata.schema};\n return result;\n}\n\nasync function _fetchDataUrl({\n type,\n source,\n connection,\n credentials,\n geoColumn,\n columns,\n format,\n formatTiles,\n clientId,\n 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 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 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"}