@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.
- package/dist/dist.dev.js +1264 -1198
- package/dist/es5/api/layer-map.js +43 -16
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +53 -14
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/layer-map.js +27 -6
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +56 -11
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +2 -2
- package/src/api/layer-map.ts +32 -6
- package/src/api/maps-v3-client.ts +76 -11
|
@@ -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,
|
|
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
|
-
|
|
338
|
-
|
|
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(
|
|
354
|
-
var 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(
|
|
379
|
-
var name =
|
|
380
|
-
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(
|
|
391
|
-
var alignment =
|
|
392
|
-
anchor =
|
|
393
|
-
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 (
|
|
216
|
+
if (geoColumn) {
|
|
215
217
|
parameters.push((0, _mapsApiCommon.encodeParameter)('geo_column', geoColumn));
|
|
216
218
|
}
|
|
217
219
|
|
|
218
|
-
if (
|
|
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":";;;;;;;;;;;;;;;;;;AAGA;;AACA;;AAcA;;AACA;;AACA;;;;;;AAEA,IAAMA,cAAc,GAAG,IAAvB;AACA,IAAMC,cAAc,GAAG,eAAvB;;SAYeC,O;;;;;uEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwBC,YAAAA,MAAxB,QAAwBA,MAAxB,EAAgCC,GAAhC,QAAgCA,GAAhC,EAAqCC,WAArC,QAAqCA,WAArC,EAAkDC,IAAlD,QAAkDA,IAAlD;AACQC,YAAAA,OADR,GAC0C;AACtCC,cAAAA,MAAM,EAAE;AAD8B,aAD1C;;AAKE,gBAAIH,WAAJ,EAAiB;AACfE,cAAAA,OAAO,CAACE,aAAR,oBAAkCJ,WAAlC;AACD;;AAED,gBAAIF,MAAM,KAAK,MAAf,EAAuB;AACrBI,cAAAA,OAAO,CAAC,cAAD,CAAP,GAA0B,kBAA1B;AACD;;AAXH;AAAA;AAAA,mBAeiBG,KAAK,CAACN,GAAD,EAAM;AACtBD,cAAAA,MAAM,EAANA,MADsB;AAEtBI,cAAAA,OAAO,EAAPA,OAFsB;AAGtBD,cAAAA,IAAI,EAAJA;AAHsB,aAAN,CAftB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,kBAqBU,IAAIK,KAAJ,uDArBV;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAyBeC,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACET,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEC,WAHF,SAGEA,WAHF,EAIEC,IAJF,SAIEA,IAJF;AAAA;AAAA,mBAMyBJ,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAD,CANhC;;AAAA;AAMQO,YAAAA,QANR;AAAA;AAAA,mBAOqBA,QAAQ,CAACC,IAAT,EAPrB;;AAAA;AAOQA,YAAAA,IAPR;;AASE,gBAAI,CAACD,QAAQ,CAACE,EAAd,EAAkB;AAChBC,cAAAA,aAAa,CAAC;AAACH,gBAAAA,QAAQ,EAARA,QAAD;AAAWI,gBAAAA,KAAK,EAAEH,IAAI,CAACG;AAAvB,eAAD,CAAb;AACD;;AAXH,8CAYSH,IAZT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAeeI,W;;;;;2EAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACEf,YAAAA,MADF,SACEA,MADF,EAEEC,GAFF,SAEEA,GAFF,EAGEC,WAHF,SAGEA,WAHF,EAIEc,MAJF,SAIEA,MAJF,EAKEb,IALF,SAKEA,IALF;;AAAA,kBASMa,MAAM,KAAKC,uBAAQC,MATzB;AAAA;AAAA;AAAA;;AAAA,8CAUWnB,OAAO,CAAC;AAACC,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAD,CAVlB;;AAAA;AAAA;AAAA,mBAaqBM,WAAW,CAAM;AAACT,cAAAA,MAAM,EAANA,MAAD;AAASC,cAAAA,GAAG,EAAHA,GAAT;AAAcC,cAAAA,WAAW,EAAXA,WAAd;AAA2BC,cAAAA,IAAI,EAAJA;AAA3B,aAAN,CAbhC;;AAAA;AAaQgB,YAAAA,IAbR;AAAA,8CAcSA,IAAI,CAACC,IAAL,GAAYD,IAAI,CAACC,IAAjB,GAAwBD,IAdjC;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAoBA,SAASN,aAAT,QAAuF;AAAA,MAA/DH,QAA+D,SAA/DA,QAA+D;AAAA,MAArDI,KAAqD,SAArDA,KAAqD;;AACrF,UAAQJ,QAAQ,CAACW,MAAjB;AACE,SAAK,GAAL;AACE,YAAM,IAAIb,KAAJ,wBAA0BM,KAA1B,EAAN;;AACF,SAAK,GAAL;AACA,SAAK,GAAL;AACE,YAAM,IAAIN,KAAJ,gCAAkCM,KAAlC,EAAN;;AACF;AACE,YAAM,IAAIN,KAAJ,CAAUM,KAAV,CAAN;AAPJ;AASD;;AAkBD,SAASQ,aAAT,QAO6D;AAAA,MAN3DC,IAM2D,SAN3DA,IAM2D;AAAA,MAL3DC,MAK2D,SAL3DA,MAK2D;AAAA,MAJ3DC,SAI2D,SAJ3DA,SAI2D;AAAA,MAH3DC,OAG2D,SAH3DA,OAG2D;AAAA,MAF3DC,MAE2D,SAF3DA,MAE2D;AAAA,MAD3DC,QAC2D,SAD3DA,QAC2D;AAC3D,MAAMC,UAAU,GAAG,CAAC,oCAAgB,QAAhB,EAA0BD,QAAQ,IAAI9B,cAAtC,CAAD,CAAnB;;AACA,MAAI6B,MAAJ,EAAY;AACVE,IAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,QAAhB,EAA0B,IAA1B,CAAhB;AACD;;AAED,MAAMC,UAAU,GAAGR,IAAI,KAAKS,yBAAUC,KAAnB,GAA2B,GAA3B,GAAiC,MAApD;AACAJ,EAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgBC,UAAhB,EAA4BP,MAA5B,CAAhB;;AAEA,MAAIU,kCAAmBC,QAAnB,CAA4BZ,IAA5B,KAAqCE,SAAzC,EAAoD;AAClDI,IAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,YAAhB,EAA8BL,SAA9B,CAAhB;AACD;;AACD,MAAIW,+BAAgBD,QAAhB,CAAyBZ,IAAzB,KAAkCG,OAAtC,EAA+C;AAC7CG,IAAAA,UAAU,CAACC,IAAX,CAAgB,oCAAgB,SAAhB,EAA2BJ,OAAO,CAACW,IAAR,CAAa,GAAb,CAA3B,CAAhB;AACD;;AAED,SAAOR,UAAU,CAACQ,IAAX,CAAgB,GAAhB,CAAP;AACD;;SAEqBC,gB;;;;;gFAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLf,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLe,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLf,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLC,MAPK,SAOLA,MAPK,EAQLC,QARK,SAQLA,QARK;AAUCa,YAAAA,OAVD,aAUcD,WAAW,CAACE,OAV1B,cAUqCH,UAVrC,cAUmDhB,IAVnD;AAWCtB,YAAAA,GAXD,aAWUwC,OAXV,cAWqBnB,aAAa,CAAC;AAACC,cAAAA,IAAI,EAAJA,IAAD;AAAOC,cAAAA,MAAM,EAANA,MAAP;AAAeC,cAAAA,SAAS,EAATA,SAAf;AAA0BC,cAAAA,OAAO,EAAPA,OAA1B;AAAmCC,cAAAA,MAAM,EAANA,MAAnC;AAA2CC,cAAAA,QAAQ,EAARA;AAA3C,aAAD,CAXlC;AAYE1B,YAAAA,WAZF,GAYiBsC,WAZjB,CAYEtC,WAZF;;AAAA,kBAcDD,GAAG,CAAC0C,MAAJ,GAAa9C,cAAb,IAA+B0B,IAAI,KAAKS,yBAAUC,KAdjD;AAAA;AAAA;AAAA;;AAgBG9B,YAAAA,IAhBH,GAgBUyC,IAAI,CAACC,SAAL,CAAe;AAC1BC,cAAAA,CAAC,EAAEtB,MADuB;AAE1BuB,cAAAA,MAAM,EAAEnB,QAAQ,IAAI9B;AAFM,aAAf,CAhBV;AAAA;AAAA,mBAoBUW,WAAW,CAAC;AAACT,cAAAA,MAAM,EAAE,MAAT;AAAiBC,cAAAA,GAAG,EAAEwC,OAAtB;AAA+BvC,cAAAA,WAAW,EAAXA,WAA/B;AAA4CC,cAAAA,IAAI,EAAJA;AAA5C,aAAD,CApBrB;;AAAA;AAAA;;AAAA;AAAA;AAAA,mBAuBQM,WAAW,CAAC;AAACR,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA;AAAN,aAAD,CAvBnB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AA0BP,SAAS8C,kBAAT,CAA4BC,QAA5B,EAAwDjC,MAAxD,EAAuF;AACrF,MAAMkC,CAAC,GAAGD,QAAQ,CAACjC,MAAD,CAAlB;;AAEA,MAAIkC,CAAC,IAAI,CAACA,CAAC,CAACpC,KAAR,IAAiBoC,CAAC,CAACjD,GAAvB,EAA4B;AAC1B,WAAOiD,CAAC,CAACjD,GAAF,CAAM,CAAN,CAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASkD,6BAAT,QAKyB;AAAA,MAJvB5B,IAIuB,SAJvBA,IAIuB;AAAA,MAHvBC,MAGuB,SAHvBA,MAGuB;AAAA,MAFvBe,UAEuB,SAFvBA,UAEuB;AAAA,MADvBC,WACuB,SADvBA,WACuB;AACvB,qBAAOD,UAAP,EAAmB,wBAAnB;AACA,qBAAOhB,IAAP,EAAa,oBAAb;AACA,qBAAOC,MAAP,EAAe,sBAAf;AAEA,qBAAOgB,WAAW,CAACY,UAAZ,KAA2BC,4BAAaC,EAA/C,EAAmD,8BAAnD;AACA,qBAAOd,WAAW,CAACe,UAAnB,EAA+B,wBAA/B;AACA,qBAAOf,WAAW,CAACtC,WAAnB,EAAgC,4BAAhC;AACD;;SAOqBsD,c;;;;;8EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACLjC,YAAAA,IADK,SACLA,IADK,EAELC,MAFK,SAELA,MAFK,EAGLe,UAHK,SAGLA,UAHK,EAILC,WAJK,SAILA,WAJK,EAKLf,SALK,SAKLA,SALK,EAMLC,OANK,SAMLA,OANK,EAOLV,MAPK,SAOLA,MAPK,EAQLyC,WARK,SAQLA,WARK,EASL9B,MATK,SASLA,MATK,EAULC,QAVK,SAULA,QAVK;AAAA;AAAA,mBAciD8B,aAAa,CAAC;AAClEnC,cAAAA,IAAI,EAAJA,IADkE;AAElEC,cAAAA,MAAM,EAANA,MAFkE;AAGlEe,cAAAA,UAAU,EAAVA,UAHkE;AAIlEC,cAAAA,WAAW,EAAXA,WAJkE;AAKlEf,cAAAA,SAAS,EAATA,SALkE;AAMlEC,cAAAA,OAAO,EAAPA,OANkE;AAOlEV,cAAAA,MAAM,EAANA,MAPkE;AAQlEyC,cAAAA,WAAW,EAAXA,WARkE;AASlE9B,cAAAA,MAAM,EAANA,MATkE;AAUlEC,cAAAA,QAAQ,EAARA;AAVkE,aAAD,CAd9D;;AAAA;AAAA;AAcE3B,YAAAA,GAdF,wBAcEA,GAdF;AAcOC,YAAAA,WAdP,wBAcOA,WAdP;AAcoByD,YAAAA,SAdpB,wBAcoBA,SAdpB;AAc+BV,YAAAA,QAd/B,wBAc+BA,QAd/B;AAAA;AAAA,mBA2BclC,WAAW,CAAC;AAACd,cAAAA,GAAG,EAAHA,GAAD;AAAMe,cAAAA,MAAM,EAAE2C,SAAd;AAAyBzD,cAAAA,WAAW,EAAXA;AAAzB,aAAD,CA3BzB;;AAAA;AA2BCiB,YAAAA,IA3BD;AA4BCyC,YAAAA,MA5BD,GA4BgC;AAACzC,cAAAA,IAAI,EAAJA,IAAD;AAAOH,cAAAA,MAAM,EAAE2C;AAAf,aA5BhC;;AA6BL,gBAAIhC,MAAJ,EAAY;AACViC,cAAAA,MAAM,CAACjC,MAAP,GAAgBsB,QAAQ,CAACtB,MAAzB;AACD;;AA/BI,8CAiCEiC,MAjCF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAoCQF,a;;;;;6EAAf;AAAA;;AAAA;AAAA;AAAA;AAAA;AACEnC,YAAAA,IADF,SACEA,IADF,EAEEC,MAFF,SAEEA,MAFF,EAGEe,UAHF,SAGEA,UAHF,EAIEC,WAJF,SAIEA,WAJF,EAKEf,SALF,SAKEA,SALF,EAMEC,OANF,SAMEA,OANF,EAOEV,MAPF,SAOEA,MAPF,EAQEyC,WARF,SAQEA,WARF,EASE9B,MATF,SASEA,MATF,EAUEC,QAVF,SAUEA,QAVF;AAYQiC,YAAAA,kBAZR,GAY6B,oCAZ7B;AAeQC,YAAAA,UAfR,mCAgBQD,kBAAkB,CAACT,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDO,kBAhB7D,GAiBOrB,WAjBP;AAmBEW,YAAAA,6BAA6B,CAAC;AAAC5B,cAAAA,IAAI,EAAJA,IAAD;AAAOC,cAAAA,MAAM,EAANA,MAAP;AAAee,cAAAA,UAAU,EAAVA,UAAf;AAA2BC,cAAAA,WAAW,EAAEsB;AAAxC,aAAD,CAA7B;;AAEA,gBAAI,CAACA,UAAU,CAACpB,OAAhB,EAAyB;AACvBoB,cAAAA,UAAU,CAACpB,OAAX,GAAqB,kCAAqBoB,UAAU,CAACP,UAAhC,CAArB;AACD;;AAvBH;AAAA,mBAyByBjB,gBAAgB,CAAC;AACtCf,cAAAA,IAAI,EAAJA,IADsC;AAEtCC,cAAAA,MAAM,EAANA,MAFsC;AAGtCe,cAAAA,UAAU,EAAVA,UAHsC;AAItCC,cAAAA,WAAW,EAAEsB,UAJyB;AAKtCrC,cAAAA,SAAS,EAATA,SALsC;AAMtCC,cAAAA,OAAO,EAAPA,OANsC;AAOtCC,cAAAA,MAAM,EAANA,MAPsC;AAQtCC,cAAAA,QAAQ,EAARA;AARsC,aAAD,CAzBzC;;AAAA;AAyBQqB,YAAAA,QAzBR;AAmCMhD,YAAAA,GAnCN,GAmC2B,IAnC3B;;AAAA,iBAsCMe,MAtCN;AAAA;AAAA;AAAA;;AAuCI2C,YAAAA,SAAS,GAAG3C,MAAZ;AACAf,YAAAA,GAAG,GAAG+C,kBAAkB,CAACC,QAAD,EAAWjC,MAAX,CAAxB;AACA,+BAAOf,GAAP,mBAAsBe,MAAtB;AAzCJ;AAAA;;AAAA;AA4CU+C,YAAAA,kBA5CV,GA4C+B,CAAC9C,uBAAQ+C,OAAT,EAAkB/C,uBAAQ2B,IAA1B,EAAgC3B,uBAAQC,MAAxC,EAAgDD,uBAAQgD,QAAxD,CA5C/B;AAAA,0CA6CoBF,kBA7CpB;;AAAA;AAAA;AAAA;AAAA;AAAA;;AA6CeG,YAAAA,CA7Cf;AA8CMjE,YAAAA,GAAG,GAAG+C,kBAAkB,CAACC,QAAD,EAAWiB,CAAX,CAAxB;;AA9CN,iBA+CUjE,GA/CV;AAAA;AAAA;AAAA;;AAgDQ0D,YAAAA,SAAS,GAAGO,CAAZ;AAhDR;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAoDI,+BAAOjE,GAAG,IAAI0D,SAAd,EAAyB,iDAAzB;;AApDJ;AAuDE,gBAAI3C,MAAM,KAAKC,uBAAQgD,QAAnB,IAA+BR,WAAnC,EAAgD;AAC9CU,wBAAIC,MAAJ,CACEC,MAAM,CAACC,MAAP,CAAcC,2BAAd,EAA4BpC,QAA5B,CAAqCsB,WAArC,CADF,2CAEoCA,WAFpC;;AAIAxD,cAAAA,GAAG,eAAQ,oCAAgB,aAAhB,EAA+BwD,WAA/B,CAAR,CAAH;AACD;;AAEMvD,YAAAA,WA/DT,GA+DwB4D,UA/DxB,CA+DS5D,WA/DT;AAAA,8CAgES;AAACD,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA,WAAN;AAAmByD,cAAAA,SAAS,EAATA,SAAnB;AAA8BV,cAAAA,QAAQ,EAARA;AAA9B,aAhET;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAmEsBuB,O;;;;;uEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLjD,YAAAA,IADK,UACLA,IADK,EAELC,MAFK,UAELA,MAFK,EAGLe,UAHK,UAGLA,UAHK,EAILC,WAJK,UAILA,WAJK,EAKLf,SALK,UAKLA,SALK,EAMLC,OANK,UAMLA,OANK,EAOLV,MAPK,UAOLA,MAPK,EAQLY,QARK,UAQLA,QARK;;AAULuC,sBAAIM,UAAJ,CAAe,SAAf,EAA0B,gBAA1B;;AAVK;AAAA,mBAWmBjB,cAAc,CAAC;AACrCjC,cAAAA,IAAI,EAAJA,IADqC;AAErCC,cAAAA,MAAM,EAANA,MAFqC;AAGrCe,cAAAA,UAAU,EAAVA,UAHqC;AAIrCC,cAAAA,WAAW,EAAXA,WAJqC;AAKrCf,cAAAA,SAAS,EAATA,SALqC;AAMrCC,cAAAA,OAAO,EAAPA,OANqC;AAOrCV,cAAAA,MAAM,EAANA,MAPqC;AAQrCW,cAAAA,MAAM,EAAE,KAR6B;AASrCC,cAAAA,QAAQ,EAARA;AATqC,aAAD,CAXjC;;AAAA;AAWC8C,YAAAA,SAXD;AAAA,8CAsBEA,SAAS,CAACvD,IAtBZ;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA0BQwD,gB;;;;;gFAAf,kBACEC,OADF,EAEE1E,WAFF,EAGEsC,WAHF,EAIEZ,QAJF;AAAA;;AAAA;AAAA;AAAA;AAAA;AAMyBW,YAAAA,UANzB,GAMiFqC,OANjF,CAMSC,cANT,EAMqCnD,OANrC,GAMiFkD,OANjF,CAMqClD,OANrC,EAM8CV,MAN9C,GAMiF4D,OANjF,CAM8C5D,MAN9C,EAMsDS,SANtD,GAMiFmD,OANjF,CAMsDnD,SANtD,EAMiED,MANjE,GAMiFoD,OANjF,CAMiEpD,MANjE,EAMyED,IANzE,GAMiFqD,OANjF,CAMyErD,IANzE;AAAA;AAAA,mBAQiCmC,aAAa,CAAC;AAC3C9B,cAAAA,QAAQ,EAARA,QAD2C;AAE3CY,cAAAA,WAAW,kCAAMA,WAAN;AAAmBtC,gBAAAA,WAAW,EAAXA;AAAnB,gBAFgC;AAG3CqC,cAAAA,UAAU,EAAVA,UAH2C;AAI3Cb,cAAAA,OAAO,EAAPA,OAJ2C;AAK3CV,cAAAA,MAAM,EAANA,MAL2C;AAM3CS,cAAAA,SAAS,EAATA,SAN2C;AAO3CD,cAAAA,MAAM,EAANA,MAP2C;AAQ3CD,cAAAA,IAAI,EAAJA;AAR2C,aAAD,CAR9C;;AAAA;AAAA;AAQStB,YAAAA,GART,yBAQSA,GART;AAQc0D,YAAAA,SARd,yBAQcA,SARd;AAoBQmB,YAAAA,KApBR,GAoBgBC,QAAQ,CAAC,IAAIC,GAAJ,CAAQ/E,GAAR,EAAagF,YAAb,CAA0BC,GAA1B,CAA8B,OAA9B,KAA0C,EAA3C,EAA+C,EAA/C,CApBxB;;AAAA,kBAqBMJ,KAAK,IAAIF,OAAO,CAACE,KAAR,KAAkBA,KArBjC;AAAA;AAAA;AAAA;;AAAA,8CAsBW,KAtBX;;AAAA;AAwBEF,YAAAA,OAAO,CAACE,KAAR,GAAgBA,KAAhB;AAxBF;AAAA,mBA2BuB/D,WAAW,CAAC;AAACd,cAAAA,GAAG,EAAHA,GAAD;AAAMe,cAAAA,MAAM,EAAE2C,SAAd;AAAyBzD,cAAAA,WAAW,EAAXA;AAAzB,aAAD,CA3BlC;;AAAA;AA2BE0E,YAAAA,OAAO,CAACzD,IA3BV;AAAA,8CA6BS,IA7BT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAgCegE,iB;;;;;iFAAf,0BAEEvD,QAFF,EAGEY,WAHF;AAAA;AAAA;AAAA;AAAA;AAAA;AACG4C,YAAAA,QADH,UACGA,QADH,EACaC,KADb,UACaA,KADb;AAKQC,YAAAA,QALR,GAKmBF,QAAQ,CAACG,GAAT,CAAa,UAAAX,OAAO;AAAA,qBAAID,gBAAgB,CAACC,OAAD,EAAUS,KAAV,EAAiB7C,WAAjB,EAA8BZ,QAA9B,CAApB;AAAA,aAApB,CALnB;AAAA;AAAA,mBAMe4D,OAAO,CAACC,GAAR,CAAYH,QAAZ,CANf;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SASsBI,Q;;;;;wEAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AACLC,YAAAA,UADK,UACLA,UADK,EAEL/D,QAFK,UAELA,QAFK,EAGLY,WAHK,UAGLA,WAHK,EAILoD,WAJK,UAILA,WAJK,EAKLC,SALK,UAKLA,SALK;AAaChC,YAAAA,kBAbD,GAasB,oCAbtB;AAcCC,YAAAA,UAdD,mCAeCD,kBAAkB,CAACT,UAAnB,KAAkCC,4BAAaC,EAA/C,IAAqDO,kBAftD,GAgBArB,WAhBA;AAkBEtC,YAAAA,WAlBF,GAkBiB4D,UAlBjB,CAkBE5D,WAlBF;AAoBL,+BAAOyF,UAAP,EAAmB,oEAAnB;AAEA,+BAAO7B,UAAU,CAACV,UAAX,KAA0BC,4BAAaC,EAA9C,EAAkD,8BAAlD;AACA,+BAAOQ,UAAU,CAACP,UAAlB,EAA8B,wBAA9B;;AACA,gBAAI,CAACO,UAAU,CAACpB,OAAhB,EAAyB;AACvBoB,cAAAA,UAAU,CAACpB,OAAX,GAAqB,kCAAqBoB,UAAU,CAACP,UAAhC,CAArB;AACD;;AAED,gBAAIqC,WAAW,IAAIC,SAAnB,EAA8B;AAC5B,iCAAOA,SAAP,EAAkB,gDAAlB;AACA,iCAAO,OAAOA,SAAP,KAAqB,UAA5B,EAAwC,gCAAxC;AACA,iCACE,OAAOD,WAAP,KAAuB,QAAvB,IAAmCA,WAAW,GAAG,CADnD,EAEE,yCAFF;AAID;;AAEK3F,YAAAA,GArCD,aAqCU6D,UAAU,CAACpB,OArCrB,qBAqCuCiD,UArCvC;AAAA;AAAA,mBAsCalF,WAAW,CAAM;AAACR,cAAAA,GAAG,EAAHA,GAAD;AAAMC,cAAAA,WAAW,EAAXA;AAAN,aAAN,CAtCxB;;AAAA;AAsCCqF,YAAAA,GAtCD;;AA2CL,gBAAIK,WAAJ,EAAiB;AAETE,cAAAA,UAFS,GAEIC,WAAW,2DAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BACPZ,iBAAiB,CAACI,GAAD,EAAM3D,QAAN,EAAgBkC,UAAhB,CADV;;AAAA;AACvBkC,wBAAAA,OADuB;;AAE7B,4BAAIH,SAAS,IAAIG,OAAO,CAACC,IAAR,CAAa,UAAAC,CAAC;AAAA,iCAAIA,CAAC,KAAK,IAAV;AAAA,yBAAd,CAAjB,EAAgD;AAC9CL,0BAAAA,SAAS,CAAC,wBAASN,GAAT,CAAD,CAAT;AACD;;AAJ4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAD,IAK3BK,WAAW,GAAG,IALa,CAFf;;AAQfO,cAAAA,eAAe,GAAG,2BAAM;AACtBC,gBAAAA,aAAa,CAACN,UAAD,CAAb;AACD,eAFD;AAGD;;AAEKO,YAAAA,aAxDD,GAwDiBd,GAAG,CAACe,eAAJ,CAAoBC,MAApB,CAA2BC,QAA3B,CAAoCC,MAApC,CAA2CC,MAA3C,CACpB;AAAA,kBAAEnF,IAAF,UAAEA,IAAF;AAAA,qBAAYA,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,OAA3C;AAAA,aADoB,CAxDjB;AA2DCoF,YAAAA,iBA3DD,GA2DqBN,aAAa,CAACd,GAAd,CAAkB;AAAA,kBAAEgB,MAAF,UAAEA,MAAF;AAAA,qBAAcA,MAAM,CAACK,MAArB;AAAA,aAAlB,CA3DrB;AA4DLrB,YAAAA,GAAG,CAACH,QAAJ,CAAayB,OAAb,CAAqB,UAAAjC,OAAO,EAAI;AAC9B,kBAAI+B,iBAAiB,CAACxE,QAAlB,CAA2ByC,OAAO,CAACkC,EAAnC,CAAJ,EAA4C;AAC1ClC,gBAAAA,OAAO,CAAC5D,MAAR,GAAiB,SAAjB;AACD;AACF,aAJD;AA5DK;AAAA,mBAmECmE,iBAAiB,CAACI,GAAD,EAAM3D,QAAN,EAAgBkC,UAAhB,CAnElB;;AAAA;AAAA,+EAqEA,wBAASyB,GAAT,CArEA,GAsEA;AAACY,cAAAA,eAAe,EAAfA;AAAD,aAtEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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
|
|
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
|
-
|
|
271
|
-
|
|
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 => {
|