@deck.gl/carto 8.7.1 → 8.7.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.
- package/dist/dist.dev.js +9851 -1639
- package/dist/es5/api/layer-map.js +93 -16
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +5 -4
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +10 -0
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/esm/api/layer-map.js +82 -14
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +4 -2
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +5 -0
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist.min.js +138 -138
- package/package.json +2 -2
- package/src/api/layer-map.ts +45 -14
- package/src/api/maps-v3-client.ts +4 -3
- package/src/api/parseMap.ts +6 -1
|
@@ -28,10 +28,12 @@ var _d3Format = require("d3-format");
|
|
|
28
28
|
|
|
29
29
|
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
30
30
|
|
|
31
|
-
var
|
|
31
|
+
var _aggregationLayers = require("@deck.gl/aggregation-layers");
|
|
32
32
|
|
|
33
33
|
var _layers = require("@deck.gl/layers");
|
|
34
34
|
|
|
35
|
+
var _geoLayers = require("@deck.gl/geo-layers");
|
|
36
|
+
|
|
35
37
|
var _cartoTileLayer = _interopRequireDefault(require("../layers/carto-tile-layer"));
|
|
36
38
|
|
|
37
39
|
var _mapsApiCommon = require("./maps-api-common");
|
|
@@ -51,6 +53,17 @@ var SCALE_FUNCS = {
|
|
|
51
53
|
quantize: _d3Scale.scaleQuantize,
|
|
52
54
|
sqrt: _d3Scale.scaleSqrt
|
|
53
55
|
};
|
|
56
|
+
|
|
57
|
+
var hexToRGBA = function hexToRGBA(c) {
|
|
58
|
+
var _rgb = (0, _d3Color.rgb)(c),
|
|
59
|
+
r = _rgb.r,
|
|
60
|
+
g = _rgb.g,
|
|
61
|
+
b = _rgb.b,
|
|
62
|
+
opacity = _rgb.opacity;
|
|
63
|
+
|
|
64
|
+
return [r, g, b, 255 * opacity];
|
|
65
|
+
};
|
|
66
|
+
|
|
54
67
|
var sharedPropMap = {
|
|
55
68
|
color: 'getFillColor',
|
|
56
69
|
isVisible: 'visible',
|
|
@@ -63,6 +76,7 @@ var sharedPropMap = {
|
|
|
63
76
|
},
|
|
64
77
|
visConfig: {
|
|
65
78
|
enable3d: 'extruded',
|
|
79
|
+
elevationScale: 'elevationScale',
|
|
66
80
|
filled: 'filled',
|
|
67
81
|
opacity: 'opacity',
|
|
68
82
|
strokeColor: 'getLineColor',
|
|
@@ -72,6 +86,17 @@ var sharedPropMap = {
|
|
|
72
86
|
wireframe: 'wireframe'
|
|
73
87
|
}
|
|
74
88
|
};
|
|
89
|
+
var aggregationVisConfig = {
|
|
90
|
+
colorAggregation: 'colorAggregation',
|
|
91
|
+
colorRange: function colorRange(x) {
|
|
92
|
+
return {
|
|
93
|
+
colorRange: x.colors.map(hexToRGBA)
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
coverage: 'coverage',
|
|
97
|
+
elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],
|
|
98
|
+
percentile: ['lowerPercentile', 'upperPercentile']
|
|
99
|
+
};
|
|
75
100
|
var RADIUS_DOWNSCALE = 0.2;
|
|
76
101
|
var defaultProps = {
|
|
77
102
|
lineMiterLimit: 2,
|
|
@@ -82,7 +107,9 @@ var defaultProps = {
|
|
|
82
107
|
wrapLongitude: false
|
|
83
108
|
};
|
|
84
109
|
|
|
85
|
-
function mergePropMaps(
|
|
110
|
+
function mergePropMaps() {
|
|
111
|
+
var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
112
|
+
var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
86
113
|
return _objectSpread(_objectSpread(_objectSpread({}, a), b), {}, {
|
|
87
114
|
visConfig: _objectSpread(_objectSpread({}, a.visConfig), b.visConfig)
|
|
88
115
|
});
|
|
@@ -95,40 +122,86 @@ function getLayer(type, config, dataset) {
|
|
|
95
122
|
return getTileLayer(dataset);
|
|
96
123
|
}
|
|
97
124
|
|
|
125
|
+
var geoColumn = dataset === null || dataset === void 0 ? void 0 : dataset.geoColumn;
|
|
126
|
+
|
|
127
|
+
var getPosition = function getPosition(d) {
|
|
128
|
+
return d[geoColumn].coordinates;
|
|
129
|
+
};
|
|
130
|
+
|
|
98
131
|
var hexagonId = (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.hex_id;
|
|
99
132
|
var layer = {
|
|
100
133
|
point: {
|
|
101
134
|
Layer: _layers.GeoJsonLayer,
|
|
102
|
-
propMap:
|
|
135
|
+
propMap: {
|
|
103
136
|
visConfig: {
|
|
104
137
|
outline: 'stroked'
|
|
105
138
|
}
|
|
106
|
-
}
|
|
107
|
-
defaultProps: defaultProps
|
|
139
|
+
}
|
|
108
140
|
},
|
|
109
141
|
geojson: {
|
|
110
142
|
Layer: _layers.GeoJsonLayer,
|
|
111
|
-
|
|
112
|
-
defaultProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
|
|
143
|
+
defaultProps: {
|
|
113
144
|
lineWidthScale: 2
|
|
114
|
-
}
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
grid: {
|
|
148
|
+
Layer: _aggregationLayers.CPUGridLayer,
|
|
149
|
+
propMap: {
|
|
150
|
+
visConfig: _objectSpread(_objectSpread({}, aggregationVisConfig), {}, {
|
|
151
|
+
worldUnitSize: function worldUnitSize(x) {
|
|
152
|
+
return {
|
|
153
|
+
cellSize: 1000 * x
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
})
|
|
157
|
+
},
|
|
158
|
+
defaultProps: {
|
|
159
|
+
getPosition: getPosition
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
heatmap: {
|
|
163
|
+
Layer: _aggregationLayers.HeatmapLayer,
|
|
164
|
+
propMap: {
|
|
165
|
+
visConfig: _objectSpread(_objectSpread({}, aggregationVisConfig), {}, {
|
|
166
|
+
radius: 'radiusPixels'
|
|
167
|
+
})
|
|
168
|
+
},
|
|
169
|
+
defaultProps: {
|
|
170
|
+
getPosition: getPosition
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
hexagon: {
|
|
174
|
+
Layer: _aggregationLayers.HexagonLayer,
|
|
175
|
+
propMap: {
|
|
176
|
+
visConfig: _objectSpread(_objectSpread({}, aggregationVisConfig), {}, {
|
|
177
|
+
worldUnitSize: function worldUnitSize(x) {
|
|
178
|
+
return {
|
|
179
|
+
radius: 1000 * x
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
})
|
|
183
|
+
},
|
|
184
|
+
defaultProps: {
|
|
185
|
+
getPosition: getPosition
|
|
186
|
+
}
|
|
115
187
|
},
|
|
116
188
|
hexagonId: {
|
|
117
189
|
Layer: _geoLayers.H3HexagonLayer,
|
|
118
|
-
propMap:
|
|
190
|
+
propMap: {
|
|
119
191
|
visConfig: {
|
|
120
|
-
coverage: 'coverage'
|
|
121
|
-
elevationScale: 'elevationScale'
|
|
192
|
+
coverage: 'coverage'
|
|
122
193
|
}
|
|
123
|
-
}
|
|
124
|
-
defaultProps:
|
|
194
|
+
},
|
|
195
|
+
defaultProps: {
|
|
125
196
|
getHexagon: function getHexagon(d) {
|
|
126
197
|
return d[hexagonId];
|
|
127
198
|
}
|
|
128
|
-
}
|
|
199
|
+
}
|
|
129
200
|
}
|
|
130
201
|
}[type];
|
|
131
202
|
(0, _utils.assert)(layer, "Unsupported layer type: ".concat(type));
|
|
203
|
+
layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);
|
|
204
|
+
layer.defaultProps = _objectSpread(_objectSpread({}, defaultProps), layer.defaultProps);
|
|
132
205
|
return layer;
|
|
133
206
|
}
|
|
134
207
|
|
|
@@ -231,8 +304,12 @@ function getColorAccessor(_ref3, scaleType, _ref4, opacity, data) {
|
|
|
231
304
|
var alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
|
|
232
305
|
|
|
233
306
|
var accessor = function accessor(properties) {
|
|
234
|
-
var
|
|
235
|
-
|
|
307
|
+
var _rgb2 = (0, _d3Color.rgb)(scale(properties[name])),
|
|
308
|
+
r = _rgb2.r,
|
|
309
|
+
g = _rgb2.g,
|
|
310
|
+
b = _rgb2.b;
|
|
311
|
+
|
|
312
|
+
return [r, g, b, alpha];
|
|
236
313
|
};
|
|
237
314
|
|
|
238
315
|
return normalizeAccessor(accessor, data);
|
|
@@ -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","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","filled","opacity","strokeColor","stroked","thickness","radius","wireframe","RADIUS_DOWNSCALE","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusScale","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","b","getLayer","type","config","dataset","getTileLayer","hexagonId","columns","hex_id","layer","Layer","GeoJsonLayer","propMap","outline","geojson","lineWidthScale","H3HexagonLayer","coverage","elevationScale","getHexagon","d","data","tiles","tileUrl","formatTiles","URL","searchParams","get","TILE_FORMATS","MVT","MVTLayer","CartoTileLayer","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","map","c","category","filter","undefined","min","max","domainFromValues","values","Set","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","accessor","getColorAccessor","colors","scale","domain","range","alpha","Math","round","pow","rgba","r","g","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 {extent} 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';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\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\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 filled: 'filled',\n opacity: 'opacity',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst RADIUS_DOWNSCALE = 0.2;\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusScale: RADIUS_DOWNSCALE,\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 hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: mergePropMaps(sharedPropMap, {\n visConfig: {outline: 'stroked'}\n }),\n defaultProps\n },\n geojson: {\n Layer: GeoJsonLayer,\n propMap: sharedPropMap,\n defaultProps: {...defaultProps, lineWidthScale: 2}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: mergePropMaps(sharedPropMap, {\n visConfig: {coverage: 'coverage', elevationScale: 'elevationScale'}\n }),\n defaultProps: {...defaultProps, getHexagon: d => d[hexagonId]}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\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 pointRadiusScale: 0.3,\n lineWidthScale: 2,\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 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 rgba = rgb(scale(properties[name]));\n return [rgba.r, rgba.g, rgba.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 => {\n r = RADIUS_DOWNSCALE * r;\n return [signX * (r + padding), signY * (r + padding + sizeOffset)];\n };\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","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","colorRange","x","colors","map","coverage","elevationPercentile","percentile","RADIUS_DOWNSCALE","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusScale","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","GeoJsonLayer","propMap","outline","geojson","lineWidthScale","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","values","Set","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","accessor","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 {extent} 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\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: 'colorAggregation',\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst RADIUS_DOWNSCALE = 0.2;\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusScale: RADIUS_DOWNSCALE,\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 defaultProps: {lineWidthScale: 2}\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]}\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 pointRadiusScale: 0.3,\n lineWidthScale: 2,\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 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 => {\n r = RADIUS_DOWNSCALE * r;\n return [signX * (r + padding), signY * (r + padding + sizeOffset)];\n };\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"}
|
|
@@ -528,24 +528,25 @@ function _fetchMapDataset(_x8, _x9, _x10, _x11) {
|
|
|
528
528
|
|
|
529
529
|
function _fetchMapDataset2() {
|
|
530
530
|
_fetchMapDataset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee8(dataset, accessToken, credentials, clientId) {
|
|
531
|
-
var connection, columns, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
531
|
+
var connection, columns, format, geoColumn, source, type, _yield$_fetchDataUrl2, url, mapFormat, cache;
|
|
532
532
|
|
|
533
533
|
return _regenerator.default.wrap(function _callee8$(_context8) {
|
|
534
534
|
while (1) {
|
|
535
535
|
switch (_context8.prev = _context8.next) {
|
|
536
536
|
case 0:
|
|
537
|
-
connection = dataset.connectionName, columns = dataset.columns, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
|
|
537
|
+
connection = dataset.connectionName, columns = dataset.columns, format = dataset.format, geoColumn = dataset.geoColumn, source = dataset.source, type = dataset.type;
|
|
538
538
|
_context8.next = 3;
|
|
539
539
|
return _fetchDataUrl({
|
|
540
|
+
clientId: clientId,
|
|
540
541
|
credentials: _objectSpread(_objectSpread({}, credentials), {}, {
|
|
541
542
|
accessToken: accessToken
|
|
542
543
|
}),
|
|
543
544
|
connection: connection,
|
|
544
545
|
columns: columns,
|
|
546
|
+
format: format,
|
|
545
547
|
geoColumn: geoColumn,
|
|
546
548
|
source: source,
|
|
547
|
-
type: type
|
|
548
|
-
clientId: clientId
|
|
549
|
+
type: type
|
|
549
550
|
});
|
|
550
551
|
|
|
551
552
|
case 3:
|
|
@@ -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","TABLE","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","includes","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"],"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 encodeParameter,\n Format,\n FORMATS,\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 (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\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, geoColumn, source, type} = dataset;\n // First fetch metadata\n const {url, mapFormat} = await _fetchDataUrl({\n credentials: {...credentials, accessToken},\n connection,\n columns,\n geoColumn,\n source,\n type,\n clientId\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 // 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","parameters","push","sourceName","MAP_TYPES","QUERY","TABLE","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","includes","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"],"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 encodeParameter,\n Format,\n FORMATS,\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 (type === MAP_TYPES.TABLE) {\n if (geoColumn) {\n parameters.push(encodeParameter('geo_column', geoColumn));\n }\n if (columns) {\n parameters.push(encodeParameter('columns', columns.join(',')));\n }\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 // 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"}
|
package/dist/es5/api/parseMap.js
CHANGED
|
@@ -9,6 +9,8 @@ exports.parseMap = parseMap;
|
|
|
9
9
|
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
12
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
15
|
|
|
14
16
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
@@ -147,6 +149,12 @@ function mapProps(source, target, mapping) {
|
|
|
147
149
|
|
|
148
150
|
if (typeof targetKey === 'string') {
|
|
149
151
|
target[targetKey] = sourceValue;
|
|
152
|
+
} else if (typeof targetKey === 'function') {
|
|
153
|
+
var _Object$entries$ = (0, _slicedToArray2.default)(Object.entries(targetKey(sourceValue))[0], 2),
|
|
154
|
+
key = _Object$entries$[0],
|
|
155
|
+
value = _Object$entries$[1];
|
|
156
|
+
|
|
157
|
+
target[key] = value;
|
|
150
158
|
} else if ((0, _typeof2.default)(targetKey) === 'object') {
|
|
151
159
|
mapProps(sourceValue, target, targetKey);
|
|
152
160
|
}
|
|
@@ -182,6 +190,8 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
182
190
|
|
|
183
191
|
if (colorField) {
|
|
184
192
|
result.getFillColor = (0, _layerMap.getColorAccessor)(colorField, colorScale, visConfig.colorRange, 1, data);
|
|
193
|
+
} else if (type === 'grid' || type === 'hexagon') {
|
|
194
|
+
result.colorScaleType = colorScale;
|
|
185
195
|
}
|
|
186
196
|
|
|
187
197
|
if (strokeColorField) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["parseMap","json","keplerMapConfig","datasets","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","log","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","strokeOpacity","getLineColor","strokeColorRange","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n getLayer,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createBlendingProps(layerBlending),\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...createStyleProps(config, propMap),\n ...createChannelProps(visualChannels, type, config, data) // Must come after style\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction extractTextLayers(layers) {\n return flatten(\n layers.map(({id, config, ...rest}) => {\n const {textLabel, ...configRest} = config;\n return [\n // Original layer without textLabel\n {id, config: configRest, ...rest},\n\n // One layer per valid text label, with full opacity\n ...textLabel\n .filter(t => t.field)\n .map(t => {\n return {\n id: `${id}-label-${t.field.name}`,\n config: {\n textLabel: t,\n ...configRest,\n label: `${config.label}-label-${t.field.name}`,\n visConfig: {...configRest.visConfig, opacity: 1}\n },\n ...rest\n };\n })\n ];\n })\n );\n}\n\nfunction createBlendingProps(layerBlending) {\n if (layerBlending === 'additive') {\n return {\n parameters: {\n blendFunc: [GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: GL.FUNC_ADD\n }\n };\n } else if (layerBlending === 'subtractive') {\n return {\n parameters: {\n blendFunc: [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: [GL.FUNC_SUBTRACT, GL.FUNC_ADD]\n }\n };\n }\n\n return {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity */\nfunction createChannelProps(visualChannels, type, config, data) {\n const {colorField, colorScale, sizeField, sizeScale, strokeColorField, strokeColorScale} =\n visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n const textLabelField = textLabel && textLabel.field;\n if (colorField) {\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n visConfig.colorRange,\n 1, // Rely on layer opacity\n data\n );\n }\n if (strokeColorField) {\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.strokeColorRange,\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n if (textLabelField) {\n result.getText = getTextAccessor(textLabelField, data);\n result.pointType = 'text';\n const radius = result.getPointRadius || visConfig.radius;\n result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);\n }\n\n return result;\n}\n"],"file":"parseMap.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["parseMap","json","keplerMapConfig","datasets","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","log","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","Object","entries","key","value","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","colorScaleType","strokeOpacity","getLineColor","strokeColorRange","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n getLayer,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const {mapState, mapStyle} = keplerMapConfig.config;\n const {layers, layerBlending, interactionConfig} = keplerMapConfig.config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n mapStyle,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n const {Layer, propMap, defaultProps} = getLayer(type, config, dataset);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createBlendingProps(layerBlending),\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...createStyleProps(config, propMap),\n ...createChannelProps(visualChannels, type, config, data) // Must come after style\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction extractTextLayers(layers) {\n return flatten(\n layers.map(({id, config, ...rest}) => {\n const {textLabel, ...configRest} = config;\n return [\n // Original layer without textLabel\n {id, config: configRest, ...rest},\n\n // One layer per valid text label, with full opacity\n ...textLabel\n .filter(t => t.field)\n .map(t => {\n return {\n id: `${id}-label-${t.field.name}`,\n config: {\n textLabel: t,\n ...configRest,\n label: `${config.label}-label-${t.field.name}`,\n visConfig: {...configRest.visConfig, opacity: 1}\n },\n ...rest\n };\n })\n ];\n })\n );\n}\n\nfunction createBlendingProps(layerBlending) {\n if (layerBlending === 'additive') {\n return {\n parameters: {\n blendFunc: [GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: GL.FUNC_ADD\n }\n };\n } else if (layerBlending === 'subtractive') {\n return {\n parameters: {\n blendFunc: [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA],\n blendEquation: [GL.FUNC_SUBTRACT, GL.FUNC_ADD]\n }\n };\n }\n\n return {};\n}\n\nfunction createInteractionProps(interactionConfig) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable\n };\n}\n\nfunction mapProps(source, target, mapping) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity */\nfunction createChannelProps(visualChannels, type, config, data) {\n const {colorField, colorScale, sizeField, sizeScale, strokeColorField, strokeColorScale} =\n visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n const textLabelField = textLabel && textLabel.field;\n if (colorField) {\n result.getFillColor = getColorAccessor(\n colorField,\n colorScale,\n visConfig.colorRange,\n 1, // Rely on layer opacity\n data\n );\n } else if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n }\n if (strokeColorField) {\n const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.strokeColorRange,\n opacity,\n data\n );\n }\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n heightScale,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n if (sizeField) {\n result.getPointRadius = getSizeAccessor(\n sizeField,\n sizeScale,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n if (textLabelField) {\n result.getText = getTextAccessor(textLabelField, data);\n result.pointType = 'text';\n const radius = result.getPointRadius || visConfig.radius;\n result.getTextPixelOffset = getTextPixelOffsetAccessor(textLabel, radius);\n }\n\n return result;\n}\n"],"file":"parseMap.js"}
|