@deck.gl/carto 9.4.0-beta.1 → 9.4.0-beta.3

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.
@@ -1,260 +0,0 @@
1
- // deck.gl
2
- // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
4
- import { log } from '@deck.gl/core';
5
- import { AGGREGATION, getLayer, getColorAccessor, getColorValueAccessor, getSizeAccessor, getTextAccessor, OPACITY_MAP, opacityToAlpha, getIconUrlAccessor, negateAccessor, getMaxMarkerSize } from "./layer-map.js";
6
- import { assert } from "../utils.js";
7
- export function parseMap(json) {
8
- const { keplerMapConfig, datasets, token } = json;
9
- assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');
10
- const { mapState, mapStyle } = keplerMapConfig.config;
11
- const { layers, layerBlending, interactionConfig } = keplerMapConfig.config.visState;
12
- return {
13
- id: json.id,
14
- title: json.title,
15
- description: json.description,
16
- createdAt: json.createdAt,
17
- updatedAt: json.updatedAt,
18
- initialViewState: mapState,
19
- /** @deprecated Use `basemap`. */
20
- mapStyle,
21
- token,
22
- layers: layers.reverse().map(({ id, type, config, visualChannels }) => {
23
- try {
24
- const { dataId } = config;
25
- const dataset = datasets.find(d => d.id === dataId);
26
- assert(dataset, `No dataset matching dataId: ${dataId}`);
27
- const { data } = dataset;
28
- assert(data, `No data loaded for dataId: ${dataId}`);
29
- const { Layer, propMap, defaultProps } = getLayer(type, config, dataset);
30
- const styleProps = createStyleProps(config, propMap);
31
- return new Layer({
32
- id,
33
- data,
34
- ...defaultProps,
35
- ...createInteractionProps(interactionConfig),
36
- ...styleProps,
37
- ...createChannelProps(id, type, config, visualChannels, data), // Must come after style
38
- ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style
39
- ...createLoadOptions(token)
40
- });
41
- }
42
- catch (e) {
43
- log.error(e.message)();
44
- return undefined;
45
- }
46
- })
47
- };
48
- }
49
- function createParametersProp(layerBlending, parameters) {
50
- if (layerBlending === 'additive') {
51
- parameters.blendColorSrcFactor = parameters.blendAlphaSrcFactor = 'src-alpha';
52
- parameters.blendColorDstFactor = parameters.blendAlphaDstFactor = 'dst-alpha';
53
- parameters.blendColorOperation = parameters.blendAlphaOperation = 'add';
54
- }
55
- else if (layerBlending === 'subtractive') {
56
- parameters.blendColorSrcFactor = 'one';
57
- parameters.blendColorDstFactor = 'one-minus-dst';
58
- parameters.blendAlphaSrcFactor = 'src-alpha';
59
- parameters.blendAlphaDstFactor = 'dst-alpha';
60
- parameters.blendColorOperation = 'subtract';
61
- parameters.blendAlphaOperation = 'add';
62
- }
63
- return Object.keys(parameters).length ? { parameters } : {};
64
- }
65
- function createInteractionProps(interactionConfig) {
66
- const pickable = interactionConfig && interactionConfig.tooltip.enabled;
67
- return {
68
- autoHighlight: pickable,
69
- pickable
70
- };
71
- }
72
- function mapProps(source, target, mapping) {
73
- for (const sourceKey in mapping) {
74
- const sourceValue = source[sourceKey];
75
- const targetKey = mapping[sourceKey];
76
- if (sourceValue === undefined) {
77
- // eslint-disable-next-line no-continue
78
- continue;
79
- }
80
- if (typeof targetKey === 'string') {
81
- target[targetKey] = sourceValue;
82
- }
83
- else if (typeof targetKey === 'function') {
84
- const [key, value] = Object.entries(targetKey(sourceValue))[0];
85
- target[key] = value;
86
- }
87
- else if (typeof targetKey === 'object') {
88
- // Nested definition, recurse down one level (also handles arrays)
89
- mapProps(sourceValue, target, targetKey);
90
- }
91
- }
92
- }
93
- function createStyleProps(config, mapping) {
94
- const result = {};
95
- mapProps(config, result, mapping);
96
- // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on
97
- // `strokeColor` always being set when `stroke: true`.
98
- if (result.stroked && !result.getLineColor) {
99
- result.getLineColor = result.getFillColor;
100
- }
101
- for (const colorAccessor in OPACITY_MAP) {
102
- if (Array.isArray(result[colorAccessor])) {
103
- const color = [...result[colorAccessor]];
104
- const opacityKey = OPACITY_MAP[colorAccessor];
105
- const opacity = config.visConfig[opacityKey];
106
- color[3] = opacityToAlpha(opacity);
107
- result[colorAccessor] = color;
108
- }
109
- }
110
- result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];
111
- return result;
112
- }
113
- /* eslint-disable complexity, max-statements */
114
- function createChannelProps(id, type, config, visualChannels, data) {
115
- const { colorField, colorScale, radiusField, radiusScale, sizeField, sizeScale, strokeColorField, strokeColorScale, weightField } = visualChannels;
116
- let { heightField, heightScale } = visualChannels;
117
- if (type === 'hexagonId') {
118
- heightField = sizeField;
119
- heightScale = sizeScale;
120
- }
121
- const { textLabel, visConfig } = config;
122
- const result = {};
123
- if (type === 'grid' || type === 'hexagon') {
124
- result.colorScaleType = colorScale;
125
- if (colorField) {
126
- const { colorAggregation } = config.visConfig;
127
- if (!AGGREGATION[colorAggregation]) {
128
- result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);
129
- }
130
- else {
131
- result.getColorWeight = d => d[colorField.name];
132
- }
133
- }
134
- }
135
- else if (colorField) {
136
- const { colorAggregation: aggregation, colorRange: range } = visConfig;
137
- result.getFillColor = getColorAccessor(colorField,
138
- // @ts-ignore
139
- colorScale, { aggregation, range }, visConfig.opacity, data);
140
- }
141
- if (type === 'point') {
142
- const altitude = config.columns?.altitude;
143
- if (altitude) {
144
- result.dataTransform = data => {
145
- data.features.forEach(({ geometry, properties }) => {
146
- const { type, coordinates } = geometry;
147
- if (type === 'Point') {
148
- coordinates[2] = properties[altitude];
149
- }
150
- });
151
- return data;
152
- };
153
- }
154
- }
155
- if (radiusField || sizeField) {
156
- result.getPointRadius = getSizeAccessor(
157
- // @ts-ignore
158
- radiusField || sizeField,
159
- // @ts-ignore
160
- radiusScale || sizeScale, visConfig.sizeAggregation, visConfig.radiusRange || visConfig.sizeRange, data);
161
- }
162
- if (strokeColorField) {
163
- const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;
164
- const opacity = visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;
165
- const { strokeColorAggregation: aggregation, strokeColorRange: range } = visConfig;
166
- result.getLineColor = getColorAccessor(strokeColorField,
167
- // @ts-ignore
168
- strokeColorScale,
169
- // @ts-ignore
170
- { aggregation, range }, opacity, data);
171
- }
172
- if (heightField && visConfig.enable3d) {
173
- result.getElevation = getSizeAccessor(heightField,
174
- // @ts-ignore
175
- heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
176
- }
177
- if (weightField) {
178
- result.getWeight = getSizeAccessor(weightField, undefined, visConfig.weightAggregation, undefined, data);
179
- }
180
- if (visConfig.customMarkers) {
181
- const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);
182
- const { getPointRadius, getFillColor } = result;
183
- const { customMarkersUrl, customMarkersRange, filled: useMaskedIcons } = visConfig;
184
- result.pointType = 'icon';
185
- result.getIcon = getIconUrlAccessor(visualChannels.customMarkersField, customMarkersRange, { fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons }, data);
186
- result._subLayerProps = {
187
- 'points-icon': {
188
- loadOptions: {
189
- image: {
190
- type: 'imagebitmap'
191
- },
192
- imagebitmap: {
193
- resizeWidth: maxIconSize,
194
- resizeHeight: maxIconSize,
195
- resizeQuality: 'high'
196
- }
197
- }
198
- }
199
- };
200
- if (getFillColor && useMaskedIcons) {
201
- result.getIconColor = getFillColor;
202
- }
203
- if (getPointRadius) {
204
- result.getIconSize = getPointRadius;
205
- }
206
- if (visualChannels.rotationField) {
207
- result.getIconAngle = negateAccessor(getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data));
208
- }
209
- }
210
- else if (type === 'point' || type === 'tileset') {
211
- result.pointType = 'circle';
212
- }
213
- if (textLabel && textLabel.length && textLabel[0].field) {
214
- const [mainLabel, secondaryLabel] = textLabel;
215
- const collisionGroup = id;
216
- ({
217
- alignment: result.getTextAlignmentBaseline,
218
- anchor: result.getTextAnchor,
219
- color: result.getTextColor,
220
- outlineColor: result.textOutlineColor,
221
- size: result.textSizeScale
222
- } = mainLabel);
223
- const { color: getSecondaryColor, field: secondaryField, outlineColor: secondaryOutlineColor, size: secondarySizeScale } = secondaryLabel || {};
224
- result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);
225
- const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);
226
- result.pointType = `${result.pointType}+text`;
227
- result.textCharacterSet = 'auto';
228
- result.textFontFamily = 'Inter, sans';
229
- result.textFontSettings = { sdf: true };
230
- result.textFontWeight = 600;
231
- result.textOutlineWidth = 3;
232
- result._subLayerProps = {
233
- ...result._subLayerProps,
234
- 'points-text': {
235
- // The following props are injected by default by VectorTileLayer:
236
- // type: PointLabelLayer,
237
- // extensions: [new CollisionFilterExtension()],
238
- collisionEnabled: true,
239
- collisionGroup,
240
- // getPointRadius already has radiusScale baked in, so only pass one or the other
241
- ...(result.getPointRadius
242
- ? { getRadius: result.getPointRadius }
243
- : { radiusScale: visConfig.radius }),
244
- ...(secondaryField && {
245
- getSecondaryText,
246
- getSecondaryColor,
247
- secondarySizeScale,
248
- secondaryOutlineColor
249
- })
250
- }
251
- };
252
- }
253
- return result;
254
- }
255
- function createLoadOptions(accessToken) {
256
- return {
257
- loadOptions: { core: { fetch: { headers: { Authorization: `Bearer ${accessToken}` } } } }
258
- };
259
- }
260
- //# sourceMappingURL=parse-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-map.js","sourceRoot":"","sources":["../../src/api/parse-map.ts"],"names":[],"mappings":"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"}