@deck.gl/carto 8.9.3 → 8.9.5
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 +359 -174
- package/dist/es5/api/layer-map.js +44 -44
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +22 -4
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +64 -48
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/point-label-layer.js +268 -0
- package/dist/es5/layers/point-label-layer.js.map +1 -0
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js +1 -9
- package/dist/es5/layers/schema/carto-spatial-tile-loader.js.map +1 -1
- package/dist/es5/layers/schema/carto-spatial-tile.js +5 -31
- package/dist/es5/layers/schema/carto-spatial-tile.js.map +1 -1
- package/dist/es5/layers/schema/carto-tile.js +12 -6
- package/dist/es5/layers/schema/carto-tile.js.map +1 -1
- package/dist/es5/layers/schema/carto-vector-tile-loader.js +1 -21
- package/dist/es5/layers/schema/carto-vector-tile-loader.js.map +1 -1
- package/dist/es5/layers/schema/fast-pbf.js +22 -0
- package/dist/es5/layers/schema/fast-pbf.js.map +1 -0
- package/dist/es5/layers/schema/tile-loader-utils.js +0 -17
- package/dist/es5/layers/schema/tile-loader-utils.js.map +1 -1
- package/dist/es5/layers/spatial-index-tile-layer.js +19 -1
- package/dist/es5/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist/esm/api/layer-map.js +29 -21
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +12 -1
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +59 -44
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/point-label-layer.js +198 -0
- package/dist/esm/layers/point-label-layer.js.map +1 -0
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js +2 -4
- package/dist/esm/layers/schema/carto-spatial-tile-loader.js.map +1 -1
- package/dist/esm/layers/schema/carto-spatial-tile.js +3 -28
- package/dist/esm/layers/schema/carto-spatial-tile.js.map +1 -1
- package/dist/esm/layers/schema/carto-tile.js +12 -6
- package/dist/esm/layers/schema/carto-tile.js.map +1 -1
- package/dist/esm/layers/schema/carto-vector-tile-loader.js +2 -18
- package/dist/esm/layers/schema/carto-vector-tile-loader.js.map +1 -1
- package/dist/esm/layers/schema/fast-pbf.js +13 -0
- package/dist/esm/layers/schema/fast-pbf.js.map +1 -0
- package/dist/esm/layers/schema/tile-loader-utils.js +0 -16
- package/dist/esm/layers/schema/tile-loader-utils.js.map +1 -1
- package/dist/esm/layers/spatial-index-tile-layer.js +21 -1
- package/dist/esm/layers/spatial-index-tile-layer.js.map +1 -1
- package/dist.min.js +24 -23
- package/package.json +2 -2
- package/src/api/layer-map.ts +21 -25
- package/src/api/maps-v3-client.ts +19 -4
- package/src/api/parseMap.ts +67 -44
- package/src/api/types.ts +1 -0
- package/src/index.ts +1 -0
- package/src/layers/point-label-layer.ts +266 -0
- package/src/layers/schema/carto-spatial-tile-loader.ts +2 -5
- package/src/layers/schema/carto-spatial-tile.ts +5 -30
- package/src/layers/schema/carto-tile.ts +11 -12
- package/src/layers/schema/carto-vector-tile-loader.ts +2 -9
- package/src/layers/schema/fast-pbf.ts +13 -0
- package/src/layers/schema/tile-loader-utils.ts +0 -15
- package/src/layers/spatial-index-tile-layer.ts +22 -1
- package/typed/api/layer-map.d.ts +1 -2
- package/typed/api/layer-map.d.ts.map +1 -1
- package/typed/api/maps-v3-client.d.ts +4 -1
- package/typed/api/maps-v3-client.d.ts.map +1 -1
- package/typed/api/parseMap.d.ts +1 -1
- package/typed/api/parseMap.d.ts.map +1 -1
- package/typed/api/types.d.ts +1 -0
- package/typed/api/types.d.ts.map +1 -1
- package/typed/index.d.ts +1 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/layers/point-label-layer.d.ts +56 -0
- package/typed/layers/point-label-layer.d.ts.map +1 -0
- package/typed/layers/schema/carto-spa-tile.d.ts +57 -0
- package/typed/layers/schema/carto-spa-tile.d.ts.map +1 -0
- package/typed/layers/schema/carto-spatial-tile-loader.d.ts.map +1 -1
- package/typed/layers/schema/carto-spatial-tile.d.ts +2 -2
- package/typed/layers/schema/carto-spatial-tile.d.ts.map +1 -1
- package/typed/layers/schema/carto-tile.d.ts +2 -9
- package/typed/layers/schema/carto-tile.d.ts.map +1 -1
- package/typed/layers/schema/carto-vector-tile-loader.d.ts.map +1 -1
- package/typed/layers/schema/fast-pbf.d.ts +3 -0
- package/typed/layers/schema/fast-pbf.d.ts.map +1 -0
- package/typed/layers/schema/tile-loader-utils.d.ts +0 -3
- package/typed/layers/schema/tile-loader-utils.d.ts.map +1 -1
- package/typed/layers/spatial-index-tile-layer.d.ts +1 -0
- package/typed/layers/spatial-index-tile-layer.d.ts.map +1 -1
- package/typed/api/index.js +0 -3
- package/typed/api/layer-map.js +0 -264
- package/typed/api/maps-api-common.js +0 -50
- package/typed/api/maps-client.js +0 -125
- package/typed/api/maps-v3-client.js +0 -304
- package/typed/api/parseMap.js +0 -178
- package/typed/basemap.js +0 -9
- package/typed/config.js +0 -35
- package/typed/index.js +0 -10
- package/typed/layers/carto-layer.js +0 -173
- package/typed/layers/carto-tile-layer.js +0 -105
- package/typed/layers/h3-tile-layer.js +0 -47
- package/typed/layers/h3-tileset-2d.js +0 -85
- package/typed/layers/quadkey-tile-layer.js +0 -42
- package/typed/layers/quadkey-tileset-2d.js +0 -36
- package/typed/layers/schema/carto-tile.js +0 -161
- package/typed/layers/spatial-index-tile-layer.js +0 -40
- package/typed/style/color-bins-style.js +0 -12
- package/typed/style/color-categories-style.js +0 -16
- package/typed/style/color-continuous-style.js +0 -12
- package/typed/style/palette.js +0 -62
- package/typed/style/utils.js +0 -15
- package/typed/utils.js +0 -4
package/dist/es5/api/parseMap.js
CHANGED
|
@@ -7,29 +7,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.parseMap = parseMap;
|
|
9
9
|
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
10
12
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
13
|
|
|
12
14
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
15
|
|
|
14
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
-
|
|
16
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
|
-
|
|
18
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
19
17
|
|
|
20
18
|
var _layerMap = require("./layer-map");
|
|
21
19
|
|
|
20
|
+
var _pointLabelLayer = _interopRequireDefault(require("../layers/point-label-layer"));
|
|
21
|
+
|
|
22
22
|
var _core = require("@deck.gl/core");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _extensions = require("@deck.gl/extensions");
|
|
25
25
|
|
|
26
|
-
var
|
|
27
|
-
_excluded2 = ["textLabel"];
|
|
26
|
+
var _utils = require("../utils");
|
|
28
27
|
|
|
29
28
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
30
29
|
|
|
31
30
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
32
31
|
|
|
32
|
+
var collisionFilterExtension = new _extensions.CollisionFilterExtension();
|
|
33
|
+
|
|
33
34
|
function parseMap(json) {
|
|
34
35
|
var keplerMapConfig = json.keplerMapConfig,
|
|
35
36
|
datasets = json.datasets,
|
|
@@ -51,7 +52,7 @@ function parseMap(json) {
|
|
|
51
52
|
initialViewState: mapState,
|
|
52
53
|
mapStyle: mapStyle,
|
|
53
54
|
token: token,
|
|
54
|
-
layers:
|
|
55
|
+
layers: layers.reverse().map(function (_ref) {
|
|
55
56
|
var id = _ref.id,
|
|
56
57
|
type = _ref.type,
|
|
57
58
|
config = _ref.config,
|
|
@@ -75,7 +76,7 @@ function parseMap(json) {
|
|
|
75
76
|
return new Layer(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
76
77
|
id: id,
|
|
77
78
|
data: data
|
|
78
|
-
}, defaultProps),
|
|
79
|
+
}, defaultProps), createInteractionProps(interactionConfig)), styleProps), createChannelProps(id, type, config, visualChannels, data)), createParametersProp(layerBlending, styleProps.parameters || {})), createLoadOptions(token)));
|
|
79
80
|
} catch (e) {
|
|
80
81
|
_core.log.error(e.message)();
|
|
81
82
|
|
|
@@ -85,34 +86,6 @@ function parseMap(json) {
|
|
|
85
86
|
};
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
function extractTextLayers(layers) {
|
|
89
|
-
return (0, _core._flatten)(layers.map(function (_ref2) {
|
|
90
|
-
var id = _ref2.id,
|
|
91
|
-
config = _ref2.config,
|
|
92
|
-
rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
93
|
-
var textLabel = config.textLabel,
|
|
94
|
-
configRest = (0, _objectWithoutProperties2.default)(config, _excluded2);
|
|
95
|
-
return [_objectSpread({
|
|
96
|
-
id: id,
|
|
97
|
-
config: configRest
|
|
98
|
-
}, rest)].concat((0, _toConsumableArray2.default)(textLabel.filter(function (t) {
|
|
99
|
-
return t.field;
|
|
100
|
-
}).map(function (t) {
|
|
101
|
-
return _objectSpread({
|
|
102
|
-
id: "".concat(id, "-label-").concat(t.field.name),
|
|
103
|
-
config: _objectSpread(_objectSpread({
|
|
104
|
-
textLabel: t
|
|
105
|
-
}, configRest), {}, {
|
|
106
|
-
label: "".concat(config.label, "-label-").concat(t.field.name),
|
|
107
|
-
visConfig: _objectSpread(_objectSpread({}, configRest.visConfig), {}, {
|
|
108
|
-
opacity: 1
|
|
109
|
-
})
|
|
110
|
-
})
|
|
111
|
-
}, rest);
|
|
112
|
-
})));
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
|
|
116
89
|
function createParametersProp(layerBlending, parameters) {
|
|
117
90
|
if (layerBlending === 'additive') {
|
|
118
91
|
parameters.blendFunc = [770, 772];
|
|
@@ -180,7 +153,7 @@ function createStyleProps(config, mapping) {
|
|
|
180
153
|
return result;
|
|
181
154
|
}
|
|
182
155
|
|
|
183
|
-
function createChannelProps(
|
|
156
|
+
function createChannelProps(id, type, config, visualChannels, data) {
|
|
184
157
|
var colorField = visualChannels.colorField,
|
|
185
158
|
colorScale = visualChannels.colorScale,
|
|
186
159
|
radiusField = visualChannels.radiusField,
|
|
@@ -200,7 +173,6 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
200
173
|
var textLabel = config.textLabel,
|
|
201
174
|
visConfig = config.visConfig;
|
|
202
175
|
var result = {};
|
|
203
|
-
var textLabelField = textLabel && textLabel.field;
|
|
204
176
|
|
|
205
177
|
if (type === 'grid' || type === 'hexagon') {
|
|
206
178
|
result.colorScaleType = colorScale;
|
|
@@ -232,9 +204,9 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
232
204
|
|
|
233
205
|
if (altitude) {
|
|
234
206
|
result.dataTransform = function (data) {
|
|
235
|
-
data.features.forEach(function (
|
|
236
|
-
var geometry =
|
|
237
|
-
properties =
|
|
207
|
+
data.features.forEach(function (_ref2) {
|
|
208
|
+
var geometry = _ref2.geometry,
|
|
209
|
+
properties = _ref2.properties;
|
|
238
210
|
var type = geometry.type,
|
|
239
211
|
coordinates = geometry.coordinates;
|
|
240
212
|
|
|
@@ -266,12 +238,7 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
266
238
|
result.getElevation = (0, _layerMap.getSizeAccessor)(heightField, heightScale, visConfig.heightAggregation, visConfig.heightRange || visConfig.sizeRange, data);
|
|
267
239
|
}
|
|
268
240
|
|
|
269
|
-
if (
|
|
270
|
-
result.getText = (0, _layerMap.getTextAccessor)(textLabelField, data);
|
|
271
|
-
result.pointType = 'text';
|
|
272
|
-
var radius = result.getPointRadius || visConfig.radius;
|
|
273
|
-
result.getTextPixelOffset = (0, _layerMap.getTextPixelOffsetAccessor)(textLabel, radius);
|
|
274
|
-
} else if (visConfig.customMarkers) {
|
|
241
|
+
if (visConfig.customMarkers) {
|
|
275
242
|
var maxIconSize = (0, _layerMap.getMaxMarkerSize)(visConfig, visualChannels);
|
|
276
243
|
var getPointRadius = result.getPointRadius,
|
|
277
244
|
getFillColor = result.getFillColor;
|
|
@@ -310,6 +277,55 @@ function createChannelProps(visualChannels, type, config, data) {
|
|
|
310
277
|
if (visualChannels.rotationField) {
|
|
311
278
|
result.getIconAngle = (0, _layerMap.negateAccessor)((0, _layerMap.getSizeAccessor)(visualChannels.rotationField, undefined, null, undefined, data));
|
|
312
279
|
}
|
|
280
|
+
} else if (type === 'point' || type === 'tileset') {
|
|
281
|
+
result.pointType = 'circle';
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (textLabel && textLabel.length && textLabel[0].field) {
|
|
285
|
+
var _textLabel = (0, _slicedToArray2.default)(textLabel, 2),
|
|
286
|
+
mainLabel = _textLabel[0],
|
|
287
|
+
secondaryLabel = _textLabel[1];
|
|
288
|
+
|
|
289
|
+
var collisionGroup = id;
|
|
290
|
+
result.getTextAlignmentBaseline = mainLabel.alignment;
|
|
291
|
+
result.getTextAnchor = mainLabel.anchor;
|
|
292
|
+
result.getTextColor = mainLabel.color;
|
|
293
|
+
result.textOutlineColor = mainLabel.outlineColor;
|
|
294
|
+
result.textSizeScale = mainLabel.size;
|
|
295
|
+
|
|
296
|
+
var _ref3 = secondaryLabel || {},
|
|
297
|
+
getSecondaryColor = _ref3.color,
|
|
298
|
+
secondaryField = _ref3.field,
|
|
299
|
+
secondaryOutlineColor = _ref3.outlineColor,
|
|
300
|
+
secondarySizeScale = _ref3.size;
|
|
301
|
+
|
|
302
|
+
result.getText = mainLabel.field && (0, _layerMap.getTextAccessor)(mainLabel.field, data);
|
|
303
|
+
var getSecondaryText = secondaryField && (0, _layerMap.getTextAccessor)(secondaryField, data);
|
|
304
|
+
result.pointType = "".concat(result.pointType, "+text");
|
|
305
|
+
result.textCharacterSet = 'auto';
|
|
306
|
+
result.textFontFamily = 'Inter, sans';
|
|
307
|
+
result.textFontSettings = {
|
|
308
|
+
sdf: true
|
|
309
|
+
};
|
|
310
|
+
result.textFontWeight = 600;
|
|
311
|
+
result.textOutlineWidth = 3;
|
|
312
|
+
result._subLayerProps = _objectSpread(_objectSpread({}, result._subLayerProps), {}, {
|
|
313
|
+
'points-text': _objectSpread(_objectSpread({
|
|
314
|
+
type: _pointLabelLayer.default,
|
|
315
|
+
extensions: [collisionFilterExtension],
|
|
316
|
+
collisionEnabled: true,
|
|
317
|
+
collisionGroup: collisionGroup
|
|
318
|
+
}, result.getPointRadius ? {
|
|
319
|
+
getRadius: result.getPointRadius
|
|
320
|
+
} : {
|
|
321
|
+
radiusScale: visConfig.radius
|
|
322
|
+
}), secondaryField && {
|
|
323
|
+
getSecondaryText: getSecondaryText,
|
|
324
|
+
getSecondaryColor: getSecondaryColor,
|
|
325
|
+
secondarySizeScale: secondarySizeScale,
|
|
326
|
+
secondaryOutlineColor: secondaryOutlineColor
|
|
327
|
+
})
|
|
328
|
+
});
|
|
313
329
|
}
|
|
314
330
|
|
|
315
331
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["parseMap","json","keplerMapConfig","datasets","token","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","styleProps","createStyleProps","textLabel","createInteractionProps","createChannelProps","createParametersProp","parameters","createLoadOptions","e","log","error","message","undefined","rest","configRest","filter","t","field","name","label","visConfig","opacity","blendFunc","blendEquation","Object","keys","length","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","entries","key","value","result","stroked","getLineColor","getFillColor","colorAccessor","OPACITY_MAP","Array","isArray","color","opacityKey","highlightColor","enable3d","colorField","colorScale","radiusField","radiusScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","colorScaleType","colorAggregation","AGGREGATION","getColorValue","getColorWeight","aggregation","range","colorRange","altitude","columns","dataTransform","features","forEach","geometry","properties","coordinates","getPointRadius","sizeAggregation","radiusRange","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","getText","pointType","radius","getTextPixelOffset","customMarkers","maxIconSize","customMarkersUrl","customMarkersRange","useMaskedIcons","filled","getIcon","customMarkersField","fallbackUrl","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","accessToken","fetch","headers","Authorization"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\nimport {assert} from '../utils';\nimport {MapDataset, MapTextSubLayerConfig, VisualChannels} from './types';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets, token} = 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 token,\n layers: extractTextLayers(layers.reverse()).map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset: MapDataset | null = 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 const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...(!config.textLabel && createInteractionProps(interactionConfig)),\n ...styleProps,\n ...createChannelProps(visualChannels, type, config, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\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 createParametersProp(layerBlending, parameters: Record<string, any>) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = GL.FUNC_ADD;\n } else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = [GL.FUNC_SUBTRACT, GL.FUNC_ADD];\n }\n\n return Object.keys(parameters).length ? {parameters} : {};\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: MapTextSubLayerConfig, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(\n visualChannels: VisualChannels,\n type: string,\n config: MapTextSubLayerConfig,\n data\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n 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\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({geometry, properties}) => {\n const {type, coordinates} = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\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 } else if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n const {customMarkersUrl, customMarkersRange, filled: useMaskedIcons} = visConfig;\n\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n {fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons},\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data)\n );\n }\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}}\n };\n}\n"],"file":"parseMap.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/parseMap.ts"],"names":["collisionFilterExtension","CollisionFilterExtension","parseMap","json","keplerMapConfig","datasets","token","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","reverse","map","type","visualChannels","dataId","dataset","find","d","data","Layer","propMap","defaultProps","styleProps","createStyleProps","createInteractionProps","createChannelProps","createParametersProp","parameters","createLoadOptions","e","log","error","message","undefined","blendFunc","blendEquation","Object","keys","length","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","entries","key","value","result","stroked","getLineColor","getFillColor","colorAccessor","OPACITY_MAP","Array","isArray","color","opacityKey","opacity","visConfig","highlightColor","enable3d","colorField","colorScale","radiusField","radiusScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabel","colorScaleType","colorAggregation","AGGREGATION","getColorValue","getColorWeight","name","aggregation","range","colorRange","altitude","columns","dataTransform","features","forEach","geometry","properties","coordinates","getPointRadius","sizeAggregation","radiusRange","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","customMarkers","maxIconSize","customMarkersUrl","customMarkersRange","useMaskedIcons","filled","pointType","getIcon","customMarkersField","fallbackUrl","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","field","mainLabel","secondaryLabel","collisionGroup","getTextAlignmentBaseline","alignment","getTextAnchor","anchor","getTextColor","textOutlineColor","outlineColor","textSizeScale","size","getSecondaryColor","secondaryField","secondaryOutlineColor","secondarySizeScale","getText","getSecondaryText","textCharacterSet","textFontFamily","textFontSettings","sdf","textFontWeight","textOutlineWidth","PointLabelLayer","extensions","collisionEnabled","getRadius","radius","accessToken","fetch","headers","Authorization"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n AGGREGATION,\n getLayer,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize\n} from './layer-map';\nimport PointLabelLayer from '../layers/point-label-layer';\nimport {log} from '@deck.gl/core';\nimport {CollisionFilterExtension} from '@deck.gl/extensions';\nimport {assert} from '../utils';\nimport {MapDataset, MapLayerConfig, VisualChannels} from './types';\n\nconst collisionFilterExtension = new CollisionFilterExtension();\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets, token} = 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 token,\n layers: layers.reverse().map(({id, type, config, visualChannels}) => {\n try {\n const {dataId} = config;\n const dataset: MapDataset | null = 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 const styleProps = createStyleProps(config, propMap);\n return new Layer({\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(layerBlending, styleProps.parameters || {}), // Must come after style\n ...createLoadOptions(token)\n });\n } catch (e: any) {\n log.error(e.message)();\n return undefined;\n }\n })\n };\n}\n\nfunction createParametersProp(layerBlending, parameters: Record<string, any>) {\n if (layerBlending === 'additive') {\n parameters.blendFunc = [GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = GL.FUNC_ADD;\n } else if (layerBlending === 'subtractive') {\n parameters.blendFunc = [GL.ONE, GL.ONE_MINUS_DST_COLOR, GL.SRC_ALPHA, GL.DST_ALPHA];\n parameters.blendEquation = [GL.FUNC_SUBTRACT, GL.FUNC_ADD];\n }\n\n return Object.keys(parameters).length ? {parameters} : {};\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: MapLayerConfig, mapping) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d ? [255, 255, 255, 60] : [252, 242, 26, 255];\n return result;\n}\n\n/* eslint-disable complexity, max-statements */\nfunction createChannelProps(\n id: string,\n type: string,\n config: MapLayerConfig,\n visualChannels: VisualChannels,\n data\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n 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\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(colorField, colorAggregation, data);\n } else {\n result.getColorWeight = d => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = data => {\n data.features.forEach(({geometry, properties}) => {\n const {type, coordinates} = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n });\n return data;\n };\n }\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} = visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n\n if (heightField) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n const {customMarkersUrl, customMarkersRange, filled: useMaskedIcons} = visConfig;\n\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n {fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons},\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap'\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high'\n }\n }\n }\n };\n\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(visualChannels.rotationField, undefined, null, undefined, data)\n );\n }\n } else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale\n } = mainLabel);\n const {\n color: getSecondaryColor,\n field: secondaryField,\n outlineColor: secondaryOutlineColor,\n size: secondarySizeScale\n } = secondaryLabel || {};\n\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText = secondaryField && getTextAccessor(secondaryField, data);\n\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = {sdf: true};\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n type: PointLabelLayer,\n extensions: [collisionFilterExtension],\n collisionEnabled: true,\n collisionGroup,\n\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? {getRadius: result.getPointRadius}\n : {radiusScale: visConfig.radius}),\n\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor\n })\n }\n };\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}}\n };\n}\n"],"file":"parseMap.js"}
|
package/dist/es5/index.js
CHANGED
|
@@ -35,6 +35,12 @@ Object.defineProperty(exports, "_H3TileLayer", {
|
|
|
35
35
|
return _h3TileLayer.default;
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
+
Object.defineProperty(exports, "_PointLabelLayer", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function get() {
|
|
41
|
+
return _pointLabelLayer.default;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
38
44
|
Object.defineProperty(exports, "_QuadbinTileLayer", {
|
|
39
45
|
enumerable: true,
|
|
40
46
|
get: function get() {
|
|
@@ -128,6 +134,8 @@ var _cartoTileLayer = _interopRequireDefault(require("./layers/carto-tile-layer"
|
|
|
128
134
|
|
|
129
135
|
var _h3TileLayer = _interopRequireDefault(require("./layers/h3-tile-layer"));
|
|
130
136
|
|
|
137
|
+
var _pointLabelLayer = _interopRequireDefault(require("./layers/point-label-layer"));
|
|
138
|
+
|
|
131
139
|
var _quadbinTileLayer = _interopRequireDefault(require("./layers/quadbin-tile-layer"));
|
|
132
140
|
|
|
133
141
|
var _basemap = _interopRequireDefault(require("./basemap"));
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA","sourcesContent":["export {getDefaultCredentials, setDefaultCredentials} from './config';\nexport {default as CartoLayer} from './layers/carto-layer';\nexport {default as _CartoTileLayer} from './layers/carto-tile-layer';\nexport {default as _H3TileLayer} from './layers/h3-tile-layer';\nexport {default as _PointLabelLayer} from './layers/point-label-layer';\nexport {default as _QuadbinTileLayer} from './layers/quadbin-tile-layer';\nexport {default as BASEMAP} from './basemap';\nexport {default as colorBins} from './style/color-bins-style';\nexport {default as colorCategories} from './style/color-categories-style';\nexport {default as colorContinuous} from './style/color-continuous-style';\nexport {\n FORMATS,\n TILE_FORMATS,\n MAP_TYPES,\n API_VERSIONS,\n CartoAPIError,\n fetchLayerData,\n fetchMap,\n getDataV2 as _getDataV2,\n mapInstantiation as _mapInstantiation\n} from './api';\nexport type {APIErrorContext, QueryParameters} from './api';\nexport type {CartoLayerProps} from './layers/carto-layer';\n"],"file":"index.js"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _core = require("@deck.gl/core");
|
|
27
|
+
|
|
28
|
+
var _layers = require("@deck.gl/layers");
|
|
29
|
+
|
|
30
|
+
var _excluded = ["updateTriggers"];
|
|
31
|
+
|
|
32
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
33
|
+
|
|
34
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
35
|
+
|
|
36
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
37
|
+
|
|
38
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
+
|
|
40
|
+
var LEFT = 0,
|
|
41
|
+
TOP = 1,
|
|
42
|
+
RIGHT = 2,
|
|
43
|
+
BOTTOM = 3;
|
|
44
|
+
|
|
45
|
+
var EnhancedTextBackgroundLayer = function (_TextBackgroundLayer) {
|
|
46
|
+
(0, _inherits2.default)(EnhancedTextBackgroundLayer, _TextBackgroundLayer);
|
|
47
|
+
|
|
48
|
+
var _super = _createSuper(EnhancedTextBackgroundLayer);
|
|
49
|
+
|
|
50
|
+
function EnhancedTextBackgroundLayer() {
|
|
51
|
+
(0, _classCallCheck2.default)(this, EnhancedTextBackgroundLayer);
|
|
52
|
+
return _super.apply(this, arguments);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
(0, _createClass2.default)(EnhancedTextBackgroundLayer, [{
|
|
56
|
+
key: "getShaders",
|
|
57
|
+
value: function getShaders() {
|
|
58
|
+
var shaders = (0, _get2.default)((0, _getPrototypeOf2.default)(EnhancedTextBackgroundLayer.prototype), "getShaders", this).call(this);
|
|
59
|
+
var vs = shaders.vs;
|
|
60
|
+
vs = vs.replaceAll('padding.', '_padding.');
|
|
61
|
+
vs = vs.replace('void main(void) {', 'void main(void) {\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);');
|
|
62
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
63
|
+
vs: vs
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}]);
|
|
67
|
+
return EnhancedTextBackgroundLayer;
|
|
68
|
+
}(_layers._TextBackgroundLayer);
|
|
69
|
+
|
|
70
|
+
(0, _defineProperty2.default)(EnhancedTextBackgroundLayer, "layerName", 'EnhancedTextBackgroundLayer');
|
|
71
|
+
|
|
72
|
+
var EnhancedTextLayer = function (_TextLayer) {
|
|
73
|
+
(0, _inherits2.default)(EnhancedTextLayer, _TextLayer);
|
|
74
|
+
|
|
75
|
+
var _super2 = _createSuper(EnhancedTextLayer);
|
|
76
|
+
|
|
77
|
+
function EnhancedTextLayer() {
|
|
78
|
+
(0, _classCallCheck2.default)(this, EnhancedTextLayer);
|
|
79
|
+
return _super2.apply(this, arguments);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
(0, _createClass2.default)(EnhancedTextLayer, [{
|
|
83
|
+
key: "filterSubLayer",
|
|
84
|
+
value: function filterSubLayer(_ref) {
|
|
85
|
+
var layer = _ref.layer,
|
|
86
|
+
renderPass = _ref.renderPass;
|
|
87
|
+
var background = layer.id.includes('primary-background');
|
|
88
|
+
|
|
89
|
+
if (renderPass === 'collision') {
|
|
90
|
+
return background;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return !background;
|
|
94
|
+
}
|
|
95
|
+
}]);
|
|
96
|
+
return EnhancedTextLayer;
|
|
97
|
+
}(_layers.TextLayer);
|
|
98
|
+
|
|
99
|
+
(0, _defineProperty2.default)(EnhancedTextLayer, "layerName", 'EnhancedTextLayer');
|
|
100
|
+
|
|
101
|
+
var defaultProps = _objectSpread(_objectSpread({}, _layers.TextLayer.defaultProps), {}, {
|
|
102
|
+
getRadius: {
|
|
103
|
+
type: 'accessor',
|
|
104
|
+
value: 1
|
|
105
|
+
},
|
|
106
|
+
radiusScale: {
|
|
107
|
+
type: 'number',
|
|
108
|
+
min: 0,
|
|
109
|
+
value: 1
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
var PointLabelLayer = function (_CompositeLayer) {
|
|
114
|
+
(0, _inherits2.default)(PointLabelLayer, _CompositeLayer);
|
|
115
|
+
|
|
116
|
+
var _super3 = _createSuper(PointLabelLayer);
|
|
117
|
+
|
|
118
|
+
function PointLabelLayer() {
|
|
119
|
+
(0, _classCallCheck2.default)(this, PointLabelLayer);
|
|
120
|
+
return _super3.apply(this, arguments);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
(0, _createClass2.default)(PointLabelLayer, [{
|
|
124
|
+
key: "calculatePixelOffset",
|
|
125
|
+
value: function calculatePixelOffset(secondary) {
|
|
126
|
+
var _this$props = this.props,
|
|
127
|
+
anchor = _this$props.getTextAnchor,
|
|
128
|
+
alignment = _this$props.getAlignmentBaseline,
|
|
129
|
+
getRadius = _this$props.getRadius,
|
|
130
|
+
getSecondaryText = _this$props.getSecondaryText,
|
|
131
|
+
radiusScale = _this$props.radiusScale,
|
|
132
|
+
secondarySizeScale = _this$props.secondarySizeScale,
|
|
133
|
+
sizeScale = _this$props.sizeScale;
|
|
134
|
+
var xMult = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;
|
|
135
|
+
var yMult = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;
|
|
136
|
+
var xPadding = sizeScale / 4;
|
|
137
|
+
var yPadding = sizeScale * (1 + 1 / 4);
|
|
138
|
+
var secondaryOffset = 0.6 * (1 - yMult) * sizeScale;
|
|
139
|
+
var yOffset = secondary ? secondaryOffset : 0;
|
|
140
|
+
|
|
141
|
+
if (anchor === 'middle' && alignment === 'top' && getSecondaryText) {
|
|
142
|
+
yOffset -= secondaryOffset;
|
|
143
|
+
yOffset -= secondarySizeScale;
|
|
144
|
+
yOffset += sizeScale;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
var radiusPadding = 1 + 1 / 4;
|
|
148
|
+
return typeof getRadius === 'function' ? function (d, info) {
|
|
149
|
+
var r = (info ? getRadius(d, info) : 1) * radiusScale * radiusPadding;
|
|
150
|
+
return [xMult * (r + xPadding), yMult * (r + yPadding) + yOffset];
|
|
151
|
+
} : [xMult * (getRadius * radiusScale * radiusPadding + xPadding), yMult * (getRadius * radiusScale * radiusPadding + yPadding) + yOffset];
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
key: "calculateBackgroundPadding",
|
|
155
|
+
value: function calculateBackgroundPadding() {
|
|
156
|
+
var _this$props2 = this.props,
|
|
157
|
+
anchor = _this$props2.getTextAnchor,
|
|
158
|
+
alignment = _this$props2.getAlignmentBaseline,
|
|
159
|
+
sizeScale = _this$props2.sizeScale;
|
|
160
|
+
var paddingX = 12 * sizeScale;
|
|
161
|
+
var paddingY = 3 * sizeScale;
|
|
162
|
+
var backgroundPadding = [0, 0, 0, 0];
|
|
163
|
+
|
|
164
|
+
if (alignment === 'top') {
|
|
165
|
+
backgroundPadding[TOP] = paddingY;
|
|
166
|
+
} else if (alignment === 'bottom') {
|
|
167
|
+
backgroundPadding[BOTTOM] = paddingY;
|
|
168
|
+
} else {
|
|
169
|
+
backgroundPadding[TOP] = 0.5 * paddingY;
|
|
170
|
+
backgroundPadding[BOTTOM] = 0.5 * paddingY;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (anchor === 'start') {
|
|
174
|
+
backgroundPadding[LEFT] = paddingX;
|
|
175
|
+
} else if (anchor === 'end') {
|
|
176
|
+
backgroundPadding[RIGHT] = paddingX;
|
|
177
|
+
} else {
|
|
178
|
+
backgroundPadding[LEFT] = 0.5 * paddingX;
|
|
179
|
+
backgroundPadding[RIGHT] = 0.5 * paddingX;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return backgroundPadding;
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "renderTextLayer",
|
|
186
|
+
value: function renderTextLayer(id, _ref2) {
|
|
187
|
+
var _ref2$updateTriggers = _ref2.updateTriggers,
|
|
188
|
+
updateTriggersOverride = _ref2$updateTriggers === void 0 ? {} : _ref2$updateTriggers,
|
|
189
|
+
props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
190
|
+
var _this$props3 = this.props,
|
|
191
|
+
data = _this$props3.data,
|
|
192
|
+
characterSet = _this$props3.characterSet,
|
|
193
|
+
fontFamily = _this$props3.fontFamily,
|
|
194
|
+
fontSettings = _this$props3.fontSettings,
|
|
195
|
+
fontWeight = _this$props3.fontWeight,
|
|
196
|
+
outlineColor = _this$props3.outlineColor,
|
|
197
|
+
outlineWidth = _this$props3.outlineWidth,
|
|
198
|
+
sizeScale = _this$props3.sizeScale,
|
|
199
|
+
radiusScale = _this$props3.radiusScale,
|
|
200
|
+
getAlignmentBaseline = _this$props3.getAlignmentBaseline,
|
|
201
|
+
getColor = _this$props3.getColor,
|
|
202
|
+
getPosition = _this$props3.getPosition,
|
|
203
|
+
getTextAnchor = _this$props3.getTextAnchor,
|
|
204
|
+
updateTriggers = _this$props3.updateTriggers;
|
|
205
|
+
return new EnhancedTextLayer(this.getSubLayerProps({
|
|
206
|
+
id: id,
|
|
207
|
+
data: data,
|
|
208
|
+
characterSet: characterSet,
|
|
209
|
+
fontFamily: fontFamily,
|
|
210
|
+
fontSettings: fontSettings,
|
|
211
|
+
fontWeight: fontWeight,
|
|
212
|
+
outlineColor: outlineColor,
|
|
213
|
+
outlineWidth: outlineWidth,
|
|
214
|
+
sizeScale: sizeScale,
|
|
215
|
+
getAlignmentBaseline: getAlignmentBaseline,
|
|
216
|
+
getColor: getColor,
|
|
217
|
+
getPosition: getPosition,
|
|
218
|
+
getTextAnchor: getTextAnchor,
|
|
219
|
+
updateTriggers: _objectSpread(_objectSpread(_objectSpread({}, updateTriggers), updateTriggersOverride), {}, {
|
|
220
|
+
getPixelOffset: [updateTriggers.getRadius, updateTriggers.getTextAnchor, updateTriggers.getAlignmentBaseline, radiusScale, sizeScale]
|
|
221
|
+
})
|
|
222
|
+
}), {
|
|
223
|
+
getSize: 1,
|
|
224
|
+
_subLayerProps: {
|
|
225
|
+
background: {
|
|
226
|
+
type: EnhancedTextBackgroundLayer
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}, props);
|
|
230
|
+
}
|
|
231
|
+
}, {
|
|
232
|
+
key: "renderLayers",
|
|
233
|
+
value: function renderLayers() {
|
|
234
|
+
var _this$props4 = this.props,
|
|
235
|
+
getText = _this$props4.getText,
|
|
236
|
+
getSecondaryColor = _this$props4.getSecondaryColor,
|
|
237
|
+
getSecondaryText = _this$props4.getSecondaryText,
|
|
238
|
+
secondaryOutlineColor = _this$props4.secondaryOutlineColor,
|
|
239
|
+
secondarySizeScale = _this$props4.secondarySizeScale,
|
|
240
|
+
updateTriggers = _this$props4.updateTriggers;
|
|
241
|
+
var getPixelOffset = this.calculatePixelOffset(false);
|
|
242
|
+
var backgroundPadding = this.calculateBackgroundPadding();
|
|
243
|
+
var out = [this.renderTextLayer("".concat(updateTriggers.getText, "-primary"), {
|
|
244
|
+
backgroundPadding: backgroundPadding,
|
|
245
|
+
getText: getText,
|
|
246
|
+
getPixelOffset: getPixelOffset,
|
|
247
|
+
background: true
|
|
248
|
+
}), Boolean(getSecondaryText) && this.renderTextLayer("".concat(updateTriggers.getSecondaryText, "-secondary"), _objectSpread(_objectSpread(_objectSpread({
|
|
249
|
+
getText: getSecondaryText,
|
|
250
|
+
getPixelOffset: this.calculatePixelOffset(true),
|
|
251
|
+
getAlignmentBaseline: 'top'
|
|
252
|
+
}, getSecondaryColor && {
|
|
253
|
+
getColor: getSecondaryColor
|
|
254
|
+
}), secondarySizeScale && {
|
|
255
|
+
sizeScale: secondarySizeScale
|
|
256
|
+
}), secondaryOutlineColor && {
|
|
257
|
+
outlineColor: secondaryOutlineColor
|
|
258
|
+
}))];
|
|
259
|
+
return out;
|
|
260
|
+
}
|
|
261
|
+
}]);
|
|
262
|
+
return PointLabelLayer;
|
|
263
|
+
}(_core.CompositeLayer);
|
|
264
|
+
|
|
265
|
+
exports.default = PointLabelLayer;
|
|
266
|
+
(0, _defineProperty2.default)(PointLabelLayer, "layerName", 'PointLabelLayer');
|
|
267
|
+
(0, _defineProperty2.default)(PointLabelLayer, "defaultProps", defaultProps);
|
|
268
|
+
//# sourceMappingURL=point-label-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/point-label-layer.ts"],"names":["LEFT","TOP","RIGHT","BOTTOM","EnhancedTextBackgroundLayer","shaders","vs","replaceAll","replace","TextBackgroundLayer","EnhancedTextLayer","layer","renderPass","background","id","includes","TextLayer","defaultProps","getRadius","type","value","radiusScale","min","PointLabelLayer","secondary","props","anchor","getTextAnchor","alignment","getAlignmentBaseline","getSecondaryText","secondarySizeScale","sizeScale","xMult","yMult","xPadding","yPadding","secondaryOffset","yOffset","radiusPadding","d","info","r","paddingX","paddingY","backgroundPadding","updateTriggers","updateTriggersOverride","data","characterSet","fontFamily","fontSettings","fontWeight","outlineColor","outlineWidth","getColor","getPosition","getSubLayerProps","getPixelOffset","getSize","_subLayerProps","getText","getSecondaryColor","secondaryOutlineColor","calculatePixelOffset","calculateBackgroundPadding","out","renderTextLayer","Boolean","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n DefaultProps,\n Layer,\n LayersList\n} from '@deck.gl/core';\nimport {\n TextLayer,\n TextLayerProps,\n _TextBackgroundLayer as TextBackgroundLayer\n} from '@deck.gl/layers';\n\nconst [LEFT, TOP, RIGHT, BOTTOM] = [0, 1, 2, 3];\n\nclass EnhancedTextBackgroundLayer extends TextBackgroundLayer {\n static layerName = 'EnhancedTextBackgroundLayer';\n\n getShaders() {\n const shaders = super.getShaders();\n let vs = shaders.vs;\n\n // Modify shader so that the padding is offset by the pixel offset to ensure the padding\n // always captures the anchor point. As padding is uniform we cannot pass it a per-label value\n vs = vs.replaceAll('padding.', '_padding.');\n vs = vs.replace(\n 'void main(void) {',\n 'void main(void) {\\n vec4 _padding = padding + instancePixelOffsets.xyxy * vec4(1.0, 1.0, -1.0, -1.0);'\n );\n\n return {...shaders, vs};\n }\n}\n\n// TextLayer which includes modified text-background-layer-vertex shader and only renders the\n// primary background layer in the collision pass\nclass EnhancedTextLayer extends TextLayer {\n static layerName = 'EnhancedTextLayer';\n\n filterSubLayer({layer, renderPass}) {\n const background = layer.id.includes('primary-background');\n if (renderPass === 'collision') {\n return background; // Only draw primary background layer in collision pass\n }\n\n return !background; // Do not draw background layer in other passes\n }\n}\n\nconst defaultProps: DefaultProps<PointLabelLayerProps> = {\n ...TextLayer.defaultProps,\n getRadius: {type: 'accessor', value: 1},\n radiusScale: {type: 'number', min: 0, value: 1}\n};\n\n/** All properties supported by PointLabelLayer. */\nexport type PointLabelLayerProps<DataT = any> = _PointLabelLayerProps<DataT> &\n TextLayerProps &\n CompositeLayerProps;\n\n/** Properties added by PointLabelLayer. */\ntype _PointLabelLayerProps<DataT> = TextLayerProps<DataT> & {\n /**\n * Radius multiplier.\n * @default 1\n */\n radiusScale?: number;\n /**\n * Radius accessor.\n * @default 1\n */\n getRadius?: Accessor<DataT, number>;\n /**\n * Secondary label text accessor\n */\n getSecondaryText?: Accessor<DataT, string>;\n /**\n * Secondary label color accessor\n * @default [0, 0, 0, 255]\n */\n getSecondaryColor?: Accessor<DataT, Color>;\n /**\n * Secondary label color of outline around the text, in `[r, g, b, [a]]`. Each channel is a number between 0-255 and `a` is 255 if not supplied.\n * @default [0, 0, 0, 255]\n */\n secondaryOutlineColor?: Color;\n /**\n * Secondary label text size multiplier.\n * @default 1\n */\n secondarySizeScale?: number;\n};\n\nexport default class PointLabelLayer<\n DataT = any,\n ExtraProps extends {} = {}\n> extends CompositeLayer<ExtraProps & Required<_PointLabelLayerProps<DataT>>> {\n static layerName = 'PointLabelLayer';\n static defaultProps = defaultProps;\n\n calculatePixelOffset(secondary) {\n const {\n getTextAnchor: anchor,\n getAlignmentBaseline: alignment,\n getRadius,\n getSecondaryText,\n radiusScale,\n secondarySizeScale,\n sizeScale\n } = this.props;\n const xMult = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const yMult = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n\n // Padding based on font size (font size / 4)\n const xPadding = sizeScale / 4;\n const yPadding = sizeScale * (1 + 1 / 4);\n\n // Place secondary label under main label (secondary label always 'top' baseline aligned)\n const secondaryOffset = 0.6 * (1 - yMult) * sizeScale;\n let yOffset = secondary ? secondaryOffset : 0;\n\n // Special case, position relative to secondary label\n if (anchor === 'middle' && alignment === 'top' && getSecondaryText) {\n yOffset -= secondaryOffset;\n yOffset -= secondarySizeScale;\n yOffset += sizeScale;\n }\n\n // Padding based on point radius (radius/ 4)\n const radiusPadding = 1 + 1 / 4;\n\n return typeof getRadius === 'function'\n ? (d, info) => {\n const r = (info ? getRadius(d, info) : 1) * radiusScale * radiusPadding;\n return [xMult * (r + xPadding), yMult * (r + yPadding) + yOffset];\n }\n : [\n xMult * (getRadius * radiusScale * radiusPadding + xPadding),\n yMult * (getRadius * radiusScale * radiusPadding + yPadding) + yOffset\n ];\n }\n\n calculateBackgroundPadding() {\n const {getTextAnchor: anchor, getAlignmentBaseline: alignment, sizeScale} = this.props;\n\n // Heuristics to avoid label overlap\n const paddingX = 12 * sizeScale;\n const paddingY = 3 * sizeScale;\n const backgroundPadding = [0, 0, 0, 0];\n if (alignment === 'top') {\n backgroundPadding[TOP] = paddingY;\n } else if (alignment === 'bottom') {\n backgroundPadding[BOTTOM] = paddingY;\n } else {\n backgroundPadding[TOP] = 0.5 * paddingY;\n backgroundPadding[BOTTOM] = 0.5 * paddingY;\n }\n if (anchor === 'start') {\n backgroundPadding[LEFT] = paddingX;\n } else if (anchor === 'end') {\n backgroundPadding[RIGHT] = paddingX;\n } else {\n backgroundPadding[LEFT] = 0.5 * paddingX;\n backgroundPadding[RIGHT] = 0.5 * paddingX;\n }\n\n return backgroundPadding;\n }\n\n renderTextLayer(id, {updateTriggers: updateTriggersOverride = {}, ...props}): EnhancedTextLayer {\n const {\n data,\n\n characterSet,\n fontFamily,\n fontSettings,\n fontWeight,\n outlineColor,\n outlineWidth,\n sizeScale,\n radiusScale,\n\n getAlignmentBaseline,\n getColor,\n getPosition,\n getTextAnchor,\n\n updateTriggers\n } = this.props;\n\n return new EnhancedTextLayer(\n this.getSubLayerProps({\n id,\n data,\n\n characterSet,\n fontFamily,\n fontSettings,\n fontWeight,\n outlineColor,\n outlineWidth,\n sizeScale,\n\n getAlignmentBaseline,\n getColor,\n getPosition,\n getTextAnchor,\n\n updateTriggers: {\n ...updateTriggers,\n ...updateTriggersOverride,\n getPixelOffset: [\n updateTriggers.getRadius,\n updateTriggers.getTextAnchor,\n updateTriggers.getAlignmentBaseline,\n radiusScale,\n sizeScale\n ]\n }\n }),\n {\n getSize: 1,\n _subLayerProps: {background: {type: EnhancedTextBackgroundLayer}}\n },\n props\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {\n getText,\n getSecondaryColor,\n getSecondaryText,\n secondaryOutlineColor,\n secondarySizeScale,\n updateTriggers\n } = this.props;\n const getPixelOffset = this.calculatePixelOffset(false);\n const backgroundPadding = this.calculateBackgroundPadding();\n const out = [\n // Text doesn't update via updateTrigger for some reason\n this.renderTextLayer(`${updateTriggers.getText}-primary`, {\n backgroundPadding,\n getText,\n getPixelOffset,\n background: true // Only use background for primary label for faster collisions\n }),\n Boolean(getSecondaryText) &&\n this.renderTextLayer(`${updateTriggers.getSecondaryText}-secondary`, {\n getText: getSecondaryText,\n getPixelOffset: this.calculatePixelOffset(true),\n getAlignmentBaseline: 'top',\n // updateTriggers: {getText: updateTriggers.getSecondaryText},\n\n // Optional overrides\n ...(getSecondaryColor && {getColor: getSecondaryColor}),\n ...(secondarySizeScale && {sizeScale: secondarySizeScale}),\n ...(secondaryOutlineColor && {outlineColor: secondaryOutlineColor})\n })\n ];\n\n return out;\n }\n}\n"],"file":"point-label-layer.js"}
|