@deck.gl/carto 8.7.0-alpha.7 → 8.7.0-beta.2
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 +42016 -22897
- package/dist/es5/api/layer-map.js +67 -42
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +33 -26
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +23 -18
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/layers/carto-dynamic-tile-layer.js +166 -0
- package/dist/es5/layers/carto-dynamic-tile-layer.js.map +1 -0
- package/dist/es5/layers/carto-layer.js +13 -5
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/esm/api/layer-map.js +50 -35
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +29 -17
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +31 -27
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/layers/carto-dynamic-tile-layer.js +97 -0
- package/dist/esm/layers/carto-dynamic-tile-layer.js.map +1 -0
- package/dist/esm/layers/carto-layer.js +8 -1
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist.min.js +4 -4
- package/package.json +8 -7
- package/src/api/layer-map.js +47 -26
- package/src/api/maps-v3-client.js +35 -18
- package/src/api/parseMap.js +23 -21
- package/src/layers/carto-dynamic-tile-layer.js +86 -0
- package/src/layers/carto-layer.js +10 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/parseMap.js"],"names":["parseMap","json","keplerMapConfig","datasets","log","assert","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","LAYER_MAP","Layer","propMap","defaultProps","dataId","dataset","find","d","data","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","rest","configRest","filter","t","field","name","label","visConfig","opacity","parameters","blendFunc","blendEquation","pickable","tooltip","enabled","autoHighlight","mapProps","source","target","mapping","sourceKey","sourceValue","targetKey","undefined","result","highlightColor","enable3d","colorField","colorScale","sizeField","sizeScale","strokeColorField","strokeColorScale","heightField","heightScale","textLabelField","getFillColor","colorRange","strokeOpacity","getLineColor","getElevation","heightRange","sizeRange","getPointRadius","radiusRange","getText","pointType","radius","getTextPixelOffset"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {\n LAYER_MAP,\n getColorAccessor,\n getSizeAccessor,\n getTextAccessor,\n getTextPixelOffsetAccessor\n} from './layer-map';\nimport {_flatten as flatten, log} from '@deck.gl/core';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n log.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 log.assert(type in LAYER_MAP, `Unsupported layer type: ${type}`);\n const {Layer, propMap, defaultProps} = LAYER_MAP[type];\n\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n log.assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n log.assert(data, `No data loaded for dataId: ${dataId}`);\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 })\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 = {};\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 = {};\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 =\n visConfig.strokeOpacity !== undefined ? visConfig.strokeOpacity / visConfig.opacity : 1;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n strokeColorScale,\n visConfig.colorRange,\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.js"],"names":["parseMap","json","keplerMapConfig","datasets","log","assert","version","config","mapState","mapStyle","visState","layers","layerBlending","interactionConfig","id","title","description","createdAt","updatedAt","initialViewState","extractTextLayers","reverse","map","type","visualChannels","Layer","propMap","defaultProps","dataId","dataset","find","d","data","createBlendingProps","textLabel","createInteractionProps","createStyleProps","createChannelProps","e","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';\n\nexport function parseMap(json) {\n const {keplerMapConfig, datasets} = json;\n log.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 {Layer, propMap, defaultProps} = getLayer(type, config);\n const {dataId} = config;\n const dataset = datasets.find(d => d.id === dataId);\n log.assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n log.assert(data, `No data loaded for dataId: ${dataId}`);\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) {\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 = {};\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 = {};\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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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 _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
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 _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
25
|
+
|
|
26
|
+
var _core = require("@deck.gl/core");
|
|
27
|
+
|
|
28
|
+
var _extensions = require("@deck.gl/extensions");
|
|
29
|
+
|
|
30
|
+
var _geoLayers = require("@deck.gl/geo-layers");
|
|
31
|
+
|
|
32
|
+
var _layers = require("@deck.gl/layers");
|
|
33
|
+
|
|
34
|
+
var _gis = require("@loaders.gl/gis");
|
|
35
|
+
|
|
36
|
+
var _mapsApiCommon = require("../api/maps-api-common");
|
|
37
|
+
|
|
38
|
+
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; }
|
|
39
|
+
|
|
40
|
+
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; }
|
|
41
|
+
|
|
42
|
+
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); }; }
|
|
43
|
+
|
|
44
|
+
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; } }
|
|
45
|
+
|
|
46
|
+
function parseJSON(arrayBuffer) {
|
|
47
|
+
return JSON.parse(new TextDecoder().decode(arrayBuffer));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function parseCartoDynamicTile(arrayBuffer, options) {
|
|
51
|
+
if (!arrayBuffer) return null;
|
|
52
|
+
var formatTiles = options && options.cartoDynamicTile && options.cartoDynamicTile.formatTiles;
|
|
53
|
+
if (formatTiles === 'geojson') return (0, _gis.geojsonToBinary)(parseJSON(arrayBuffer).features);
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
var CartoDynamicTileLoader = {
|
|
58
|
+
name: 'CARTO Dynamic Tile',
|
|
59
|
+
id: 'cartoDynamicTile',
|
|
60
|
+
module: 'carto',
|
|
61
|
+
extensions: ['pbf'],
|
|
62
|
+
mimeTypes: ['application/x-protobuf'],
|
|
63
|
+
category: 'geometry',
|
|
64
|
+
worker: false,
|
|
65
|
+
parse: function () {
|
|
66
|
+
var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
|
|
67
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
68
|
+
while (1) {
|
|
69
|
+
switch (_context.prev = _context.next) {
|
|
70
|
+
case 0:
|
|
71
|
+
return _context.abrupt("return", parseCartoDynamicTile(arrayBuffer, options));
|
|
72
|
+
|
|
73
|
+
case 1:
|
|
74
|
+
case "end":
|
|
75
|
+
return _context.stop();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}, _callee);
|
|
79
|
+
}));
|
|
80
|
+
|
|
81
|
+
function parse(_x, _x2) {
|
|
82
|
+
return _parse.apply(this, arguments);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return parse;
|
|
86
|
+
}(),
|
|
87
|
+
parseSync: parseCartoDynamicTile,
|
|
88
|
+
options: {
|
|
89
|
+
cartoDynamicTile: {
|
|
90
|
+
formatTiles: 'geojson'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
var CartoDynamicTileLayer = function (_MVTLayer) {
|
|
96
|
+
(0, _inherits2.default)(CartoDynamicTileLayer, _MVTLayer);
|
|
97
|
+
|
|
98
|
+
var _super = _createSuper(CartoDynamicTileLayer);
|
|
99
|
+
|
|
100
|
+
function CartoDynamicTileLayer() {
|
|
101
|
+
(0, _classCallCheck2.default)(this, CartoDynamicTileLayer);
|
|
102
|
+
return _super.apply(this, arguments);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
(0, _createClass2.default)(CartoDynamicTileLayer, [{
|
|
106
|
+
key: "getTileData",
|
|
107
|
+
value: function getTileData(tile) {
|
|
108
|
+
var url = (0, _geoLayers._getURLFromTemplate)(this.state.data, tile);
|
|
109
|
+
|
|
110
|
+
if (!url) {
|
|
111
|
+
return Promise.reject('Invalid URL');
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
var loadOptions = this.getLoadOptions();
|
|
115
|
+
var _this$props = this.props,
|
|
116
|
+
fetch = _this$props.fetch,
|
|
117
|
+
formatTiles = _this$props.formatTiles;
|
|
118
|
+
var signal = tile.signal;
|
|
119
|
+
loadOptions = _objectSpread(_objectSpread({}, loadOptions), {}, {
|
|
120
|
+
mimeType: 'application/x-protobuf'
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
if (formatTiles) {
|
|
124
|
+
_core.log.assert(['geojson'].includes(formatTiles), "Invalid value for formatTiles: ".concat(formatTiles));
|
|
125
|
+
|
|
126
|
+
url += "&".concat((0, _mapsApiCommon.encodeParameter)('formatTiles', formatTiles));
|
|
127
|
+
loadOptions.cartoBinaryTile = {
|
|
128
|
+
formatTiles: formatTiles
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return fetch(url, {
|
|
133
|
+
propName: 'data',
|
|
134
|
+
layer: this,
|
|
135
|
+
loadOptions: loadOptions,
|
|
136
|
+
signal: signal
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}, {
|
|
140
|
+
key: "renderSubLayers",
|
|
141
|
+
value: function renderSubLayers(props) {
|
|
142
|
+
if (props.data === null) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
props.autoHighlight = false;
|
|
147
|
+
var _props$tile$bbox = props.tile.bbox,
|
|
148
|
+
west = _props$tile$bbox.west,
|
|
149
|
+
south = _props$tile$bbox.south,
|
|
150
|
+
east = _props$tile$bbox.east,
|
|
151
|
+
north = _props$tile$bbox.north;
|
|
152
|
+
props.extensions = [new _extensions.ClipExtension()];
|
|
153
|
+
props.clipBounds = [west, south, east, north];
|
|
154
|
+
var subLayer = new _layers.GeoJsonLayer(_objectSpread({}, props));
|
|
155
|
+
return subLayer;
|
|
156
|
+
}
|
|
157
|
+
}]);
|
|
158
|
+
return CartoDynamicTileLayer;
|
|
159
|
+
}(_geoLayers.MVTLayer);
|
|
160
|
+
|
|
161
|
+
exports.default = CartoDynamicTileLayer;
|
|
162
|
+
CartoDynamicTileLayer.layerName = 'CartoDynamicTileLayer';
|
|
163
|
+
CartoDynamicTileLayer.defaultProps = _objectSpread(_objectSpread({}, _geoLayers.MVTLayer.defaultProps), {}, {
|
|
164
|
+
loaders: [CartoDynamicTileLoader]
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=carto-dynamic-tile-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/carto-dynamic-tile-layer.js"],"names":["parseJSON","arrayBuffer","JSON","parse","TextDecoder","decode","parseCartoDynamicTile","options","formatTiles","cartoDynamicTile","features","CartoDynamicTileLoader","name","id","module","extensions","mimeTypes","category","worker","parseSync","CartoDynamicTileLayer","tile","url","state","data","Promise","reject","loadOptions","getLoadOptions","props","fetch","signal","mimeType","log","assert","includes","cartoBinaryTile","propName","layer","autoHighlight","bbox","west","south","east","north","ClipExtension","clipBounds","subLayer","GeoJsonLayer","MVTLayer","layerName","defaultProps","loaders"],"mappings":"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","sourcesContent":["/* global TextDecoder */\nimport {log} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\nimport {MVTLayer, _getURLFromTemplate} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {encodeParameter} from '../api/maps-api-common';\n\nfunction parseJSON(arrayBuffer) {\n return JSON.parse(new TextDecoder().decode(arrayBuffer));\n}\n\nfunction parseCartoDynamicTile(arrayBuffer, options) {\n if (!arrayBuffer) return null;\n const formatTiles = options && options.cartoDynamicTile && options.cartoDynamicTile.formatTiles;\n if (formatTiles === 'geojson') return geojsonToBinary(parseJSON(arrayBuffer).features);\n return null;\n}\n\nconst CartoDynamicTileLoader = {\n name: 'CARTO Dynamic Tile',\n id: 'cartoDynamicTile',\n module: 'carto',\n extensions: ['pbf'],\n mimeTypes: ['application/x-protobuf'],\n category: 'geometry',\n worker: false,\n parse: async (arrayBuffer, options) => parseCartoDynamicTile(arrayBuffer, options),\n parseSync: parseCartoDynamicTile,\n options: {\n cartoDynamicTile: {\n formatTiles: 'geojson'\n }\n }\n};\n\nexport default class CartoDynamicTileLayer extends MVTLayer {\n getTileData(tile) {\n let url = _getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n\n let loadOptions = this.getLoadOptions();\n const {fetch, formatTiles} = this.props;\n const {signal} = tile;\n\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf'\n };\n\n if (formatTiles) {\n log.assert(\n ['geojson'].includes(formatTiles),\n `Invalid value for formatTiles: ${formatTiles}`\n );\n url += `&${encodeParameter('formatTiles', formatTiles)}`;\n loadOptions.cartoBinaryTile = {formatTiles};\n }\n\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n if (props.data === null) {\n return null;\n }\n\n props.autoHighlight = false;\n\n const {\n bbox: {west, south, east, north}\n } = props.tile;\n props.extensions = [new ClipExtension()];\n props.clipBounds = [west, south, east, north];\n\n const subLayer = new GeoJsonLayer({\n ...props\n });\n return subLayer;\n }\n}\n\nCartoDynamicTileLayer.layerName = 'CartoDynamicTileLayer';\nCartoDynamicTileLayer.defaultProps = {...MVTLayer.defaultProps, loaders: [CartoDynamicTileLoader]};\n"],"file":"carto-dynamic-tile-layer.js"}
|
|
@@ -29,6 +29,8 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
29
29
|
|
|
30
30
|
var _core = require("@deck.gl/core");
|
|
31
31
|
|
|
32
|
+
var _cartoDynamicTileLayer = _interopRequireDefault(require("./carto-dynamic-tile-layer"));
|
|
33
|
+
|
|
32
34
|
var _geoLayers = require("@deck.gl/geo-layers");
|
|
33
35
|
|
|
34
36
|
var _layers = require("@deck.gl/layers");
|
|
@@ -39,7 +41,7 @@ var _mapsApiCommon = require("../api/maps-api-common");
|
|
|
39
41
|
|
|
40
42
|
var _config = require("../config");
|
|
41
43
|
|
|
42
|
-
var _excluded = ["type", "data", "credentials"];
|
|
44
|
+
var _excluded = ["type", "data", "clientId", "credentials"];
|
|
43
45
|
|
|
44
46
|
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; }
|
|
45
47
|
|
|
@@ -67,6 +69,7 @@ var defaultProps = {
|
|
|
67
69
|
credentials: null,
|
|
68
70
|
connection: null,
|
|
69
71
|
format: null,
|
|
72
|
+
clientId: null,
|
|
70
73
|
geoColumn: null,
|
|
71
74
|
columns: {
|
|
72
75
|
type: 'array',
|
|
@@ -160,14 +163,14 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
160
163
|
key: "_updateData",
|
|
161
164
|
value: function () {
|
|
162
165
|
var _updateData2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
163
|
-
var _this$props, type, source, credentials, rest, localConfig, apiVersion, result;
|
|
166
|
+
var _this$props, type, source, clientId, credentials, rest, localConfig, apiVersion, result;
|
|
164
167
|
|
|
165
168
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
166
169
|
while (1) {
|
|
167
170
|
switch (_context.prev = _context.next) {
|
|
168
171
|
case 0:
|
|
169
172
|
_context.prev = 0;
|
|
170
|
-
_this$props = this.props, type = _this$props.type, source = _this$props.data, credentials = _this$props.credentials, rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
|
|
173
|
+
_this$props = this.props, type = _this$props.type, source = _this$props.data, clientId = _this$props.clientId, credentials = _this$props.credentials, rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
|
|
171
174
|
localConfig = _objectSpread(_objectSpread({}, (0, _config.getDefaultCredentials)()), credentials);
|
|
172
175
|
apiVersion = localConfig.apiVersion;
|
|
173
176
|
|
|
@@ -196,6 +199,7 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
196
199
|
return (0, _api.fetchLayerData)(_objectSpread({
|
|
197
200
|
type: type,
|
|
198
201
|
source: source,
|
|
202
|
+
clientId: clientId,
|
|
199
203
|
credentials: credentials
|
|
200
204
|
}, rest));
|
|
201
205
|
|
|
@@ -248,10 +252,14 @@ var CartoLayer = function (_CompositeLayer) {
|
|
|
248
252
|
format = _this$state.format,
|
|
249
253
|
apiVersion = _this$state.apiVersion;
|
|
250
254
|
if (!data) return null;
|
|
251
|
-
var
|
|
255
|
+
var _this$props2 = this.props,
|
|
256
|
+
type = _this$props2.type,
|
|
257
|
+
updateTriggers = _this$props2.updateTriggers;
|
|
252
258
|
var layer;
|
|
253
259
|
|
|
254
|
-
if (apiVersion === _api.API_VERSIONS.
|
|
260
|
+
if (apiVersion === _api.API_VERSIONS.V3 && type === _mapsApiCommon.MAP_TYPES.TABLE && format === _mapsApiCommon.FORMATS.TILEJSON) {
|
|
261
|
+
layer = _cartoDynamicTileLayer.default;
|
|
262
|
+
} else if (apiVersion === _api.API_VERSIONS.V1 || apiVersion === _api.API_VERSIONS.V2 || format === _mapsApiCommon.FORMATS.TILEJSON) {
|
|
255
263
|
layer = _geoLayers.MVTLayer;
|
|
256
264
|
} else {
|
|
257
265
|
layer = _layers.GeoJsonLayer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/layers/carto-layer.js"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","geoColumn","columns","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","TABLE","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","updateTriggers","layer","FORMATS","TILEJSON","MVTLayer","GeoJsonLayer","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, log} from '@deck.gl/core';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {FORMATS, MAP_TYPES} from '../api/maps-api-common';\nimport {getDefaultCredentials} from '../config';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null}\n};\n\nexport default class CartoLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded() {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props) {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (type !== MAP_TYPES.TABLE) {\n log.assert(!geoColumn, `geoColumn prop is only supported for type ${MAP_TYPES.TABLE}`);\n log.assert(!columns, `columns prop is only supported for type ${MAP_TYPES.TABLE}`);\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n props.type !== oldProps.type ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n this._updateData();\n }\n }\n\n async _updateData() {\n try {\n const {type, data: source, credentials, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {data: await getDataV2({type, source, credentials})};\n } else {\n result = await fetchLayerData({type, source, credentials, ...rest});\n }\n\n this.setState({...result, apiVersion});\n this.props.onDataLoad(result.data);\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err);\n } else {\n throw err;\n }\n }\n }\n\n renderLayers() {\n const {data, format, apiVersion} = this.state;\n\n if (!data) return null;\n\n const {updateTriggers} = this.props;\n\n let layer;\n\n if (\n apiVersion === API_VERSIONS.V1 ||\n apiVersion === API_VERSIONS.V2 ||\n format === FORMATS.TILEJSON\n ) {\n layer = MVTLayer;\n } else {\n layer = GeoJsonLayer;\n }\n\n const {uniqueIdProperty} = defaultProps;\n const props = {uniqueIdProperty, ...this.props};\n delete props.data;\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n\nCartoLayer.layerName = 'CartoLayer';\nCartoLayer.defaultProps = defaultProps;\n"],"file":"carto-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/carto-layer.js"],"names":["defaultProps","data","type","onDataLoad","value","compare","onDataError","optional","uniqueIdProperty","credentials","connection","format","clientId","geoColumn","columns","CartoLayer","state","apiVersion","getSubLayers","length","props","localCreds","log","assert","Object","values","API_VERSIONS","includes","V1","V2","MAP_TYPES","QUERY","TILESET","V3","TABLE","Array","isArray","oldProps","changeFlags","_checkProps","shouldUpdateData","dataChanged","JSON","stringify","setState","_updateData","source","rest","localConfig","result","updateTriggers","layer","FORMATS","TILEJSON","CartoDynamicTileLayer","MVTLayer","GeoJsonLayer","getSubLayerProps","id","layerName","CompositeLayer"],"mappings":"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","sourcesContent":["import {CompositeLayer, log} from '@deck.gl/core';\nimport CartoDynamicTileLayer from './carto-dynamic-tile-layer';\nimport {MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {fetchLayerData, getDataV2, API_VERSIONS} from '../api';\nimport {FORMATS, MAP_TYPES} from '../api/maps-api-common';\nimport {getDefaultCredentials} from '../config';\n\nconst defaultProps = {\n // (String, required): data resource to load. table name, sql query or tileset name.\n data: null,\n // (Enum (MAP_TYPES), required)\n type: null,\n onDataLoad: {type: 'function', value: data => {}, compare: false},\n onDataError: {type: 'function', value: null, compare: false, optional: true},\n uniqueIdProperty: 'cartodb_id',\n\n // override carto credentials for the layer, set to null to read from default\n credentials: null,\n\n /*********************/\n /* API v3 PARAMETERS */\n /**********************/\n // (String, required): connection name at CARTO platform\n connection: null,\n\n // (String, optional): format of data\n format: null,\n\n // (String, optional): clientId identifier used for internal tracing, place here a string to identify the client who is doing the request.\n clientId: null,\n\n // (String, optional): name of the `geo_column` in the CARTO platform. Use this override the default column ('geom'), from which the geometry information should be fetched.\n geoColumn: null,\n\n // (Array<String>, optional): names of columns to fetch. By default, all columns are fetched.\n columns: {type: 'array', value: null}\n};\n\nexport default class CartoLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n data: null,\n apiVersion: null\n };\n }\n\n get isLoaded() {\n return this.getSubLayers().length > 0 && super.isLoaded;\n }\n\n _checkProps(props) {\n const {type, credentials, connection, geoColumn, columns} = props;\n const localCreds = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localCreds;\n\n log.assert(\n Object.values(API_VERSIONS).includes(apiVersion),\n `Invalid apiVersion ${apiVersion}. Use API_VERSIONS enum.`\n );\n\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n log.assert(\n type === MAP_TYPES.QUERY || type === MAP_TYPES.TILESET,\n `Invalid type ${type}. Use type MAP_TYPES.QUERY or MAP_TYPES.TILESET for apiVersion ${apiVersion}`\n );\n log.assert(!connection, `Connection prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!geoColumn, `geoColumn prop is not supported for apiVersion ${apiVersion}`);\n log.assert(!columns, `columns prop is not supported for apiVersion ${apiVersion}`);\n } else if (apiVersion === API_VERSIONS.V3) {\n log.assert(connection, 'Missing mandatory connection parameter');\n log.assert(\n Object.values(MAP_TYPES).includes(type),\n `Invalid type ${type}. Use MAP_TYPES enum.`\n );\n if (type !== MAP_TYPES.TABLE) {\n log.assert(!geoColumn, `geoColumn prop is only supported for type ${MAP_TYPES.TABLE}`);\n log.assert(!columns, `columns prop is only supported for type ${MAP_TYPES.TABLE}`);\n }\n if (columns) {\n log.assert(Array.isArray(columns), 'columns prop must be an Array');\n }\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n this._checkProps(props);\n const shouldUpdateData =\n changeFlags.dataChanged ||\n props.connection !== oldProps.connection ||\n props.geoColumn !== oldProps.geoColumn ||\n JSON.stringify(props.columns) !== JSON.stringify(oldProps.columns) ||\n props.type !== oldProps.type ||\n JSON.stringify(props.credentials) !== JSON.stringify(oldProps.credentials);\n\n if (shouldUpdateData) {\n this.setState({data: null, apiVersion: null});\n this._updateData();\n }\n }\n\n async _updateData() {\n try {\n const {type, data: source, clientId, credentials, ...rest} = this.props;\n const localConfig = {...getDefaultCredentials(), ...credentials};\n const {apiVersion} = localConfig;\n\n let result;\n if (apiVersion === API_VERSIONS.V1 || apiVersion === API_VERSIONS.V2) {\n result = {data: await getDataV2({type, source, credentials})};\n } else {\n result = await fetchLayerData({type, source, clientId, credentials, ...rest});\n }\n\n this.setState({...result, apiVersion});\n this.props.onDataLoad(result.data);\n } catch (err) {\n if (this.props.onDataError) {\n this.props.onDataError(err);\n } else {\n throw err;\n }\n }\n }\n\n renderLayers() {\n const {data, format, apiVersion} = this.state;\n\n if (!data) return null;\n\n const {type, updateTriggers} = this.props;\n\n let layer;\n\n if (apiVersion === API_VERSIONS.V3 && type === MAP_TYPES.TABLE && format === FORMATS.TILEJSON) {\n layer = CartoDynamicTileLayer;\n } else if (\n apiVersion === API_VERSIONS.V1 ||\n apiVersion === API_VERSIONS.V2 ||\n format === FORMATS.TILEJSON\n ) {\n layer = MVTLayer;\n } else {\n layer = GeoJsonLayer;\n }\n\n const {uniqueIdProperty} = defaultProps;\n const props = {uniqueIdProperty, ...this.props};\n delete props.data;\n\n // eslint-disable-next-line new-cap\n return new layer(\n props,\n this.getSubLayerProps({\n id: `carto-${layer.layerName}`,\n data,\n updateTriggers\n })\n );\n }\n}\n\nCartoLayer.layerName = 'CartoLayer';\nCartoLayer.defaultProps = defaultProps;\n"],"file":"carto-layer.js"}
|
|
@@ -3,6 +3,7 @@ import { rgb } from 'd3-color';
|
|
|
3
3
|
import { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt } from 'd3-scale';
|
|
4
4
|
import { format as d3Format } from 'd3-format';
|
|
5
5
|
import moment from 'moment-timezone';
|
|
6
|
+
import { log } from '@deck.gl/core';
|
|
6
7
|
import { H3HexagonLayer, MVTLayer } from '@deck.gl/geo-layers';
|
|
7
8
|
import { GeoJsonLayer } from '@deck.gl/layers';
|
|
8
9
|
const SCALE_FUNCS = {
|
|
@@ -54,44 +55,52 @@ function mergePropMaps(a, b) {
|
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
export
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
export function getLayer(type, config) {
|
|
59
|
+
var _config$columns;
|
|
60
|
+
|
|
61
|
+
const hexagonId = (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.hex_id;
|
|
62
|
+
const layer = {
|
|
63
|
+
point: {
|
|
64
|
+
Layer: GeoJsonLayer,
|
|
65
|
+
propMap: mergePropMaps(sharedPropMap, {
|
|
66
|
+
visConfig: {
|
|
67
|
+
outline: 'stroked'
|
|
68
|
+
}
|
|
69
|
+
}),
|
|
70
|
+
defaultProps
|
|
71
|
+
},
|
|
72
|
+
geojson: {
|
|
73
|
+
Layer: GeoJsonLayer,
|
|
74
|
+
propMap: sharedPropMap,
|
|
75
|
+
defaultProps: { ...defaultProps,
|
|
76
|
+
lineWidthScale: 2
|
|
63
77
|
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
},
|
|
79
|
+
hexagonId: {
|
|
80
|
+
Layer: H3HexagonLayer,
|
|
81
|
+
propMap: mergePropMaps(sharedPropMap, {
|
|
82
|
+
visConfig: {
|
|
83
|
+
coverage: 'coverage',
|
|
84
|
+
elevationScale: 'elevationScale'
|
|
85
|
+
}
|
|
86
|
+
}),
|
|
87
|
+
defaultProps: { ...defaultProps,
|
|
88
|
+
getHexagon: d => d[hexagonId]
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
mvt: {
|
|
92
|
+
Layer: MVTLayer,
|
|
93
|
+
propMap: sharedPropMap,
|
|
94
|
+
defaultProps: { ...defaultProps,
|
|
95
|
+
pointRadiusScale: 0.3,
|
|
96
|
+
lineWidthScale: 2,
|
|
97
|
+
uniqueIdProperty: 'geoid'
|
|
80
98
|
}
|
|
81
|
-
}),
|
|
82
|
-
defaultProps: { ...defaultProps,
|
|
83
|
-
getHexagon: d => d.h3
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
mvt: {
|
|
87
|
-
Layer: MVTLayer,
|
|
88
|
-
propMap: sharedPropMap,
|
|
89
|
-
defaultProps: { ...defaultProps,
|
|
90
|
-
pointRadiusScale: 0.3,
|
|
91
|
-
lineWidthScale: 2
|
|
92
99
|
}
|
|
93
|
-
}
|
|
94
|
-
|
|
100
|
+
}[type];
|
|
101
|
+
log.assert(layer, "Unsupported layer type: ".concat(type));
|
|
102
|
+
return layer;
|
|
103
|
+
}
|
|
95
104
|
|
|
96
105
|
function domainFromAttribute(attribute, scaleType) {
|
|
97
106
|
if (scaleType === 'ordinal' || scaleType === 'point') {
|
|
@@ -112,6 +121,11 @@ function domainFromAttribute(attribute, scaleType) {
|
|
|
112
121
|
function domainFromValues(values, scaleType) {
|
|
113
122
|
if (scaleType === 'ordinal') {
|
|
114
123
|
return [...new Set(values)].sort();
|
|
124
|
+
} else if (scaleType === 'quantile') {
|
|
125
|
+
return values.sort((a, b) => a - b);
|
|
126
|
+
} else if (scaleType === 'log') {
|
|
127
|
+
const [d0, d1] = extent(values);
|
|
128
|
+
return [d0 === 0 ? 1e-5 : d0, d1];
|
|
115
129
|
}
|
|
116
130
|
|
|
117
131
|
return extent(values);
|
|
@@ -217,4 +231,5 @@ export function getTextPixelOffsetAccessor({
|
|
|
217
231
|
return calculateOffset(radius(d));
|
|
218
232
|
} : calculateOffset(radius);
|
|
219
233
|
}
|
|
234
|
+
export { domainFromValues as _domainFromValues };
|
|
220
235
|
//# sourceMappingURL=layer-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/layer-map.js"],"names":["extent","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","format","d3Format","moment","H3HexagonLayer","MVTLayer","GeoJsonLayer","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","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","LAYER_MAP","Layer","propMap","outline","geojson","lineWidthScale","hexagonId","coverage","elevationScale","getHexagon","d","h3","mvt","domainFromAttribute","attribute","scaleType","categories","map","c","category","filter","undefined","min","max","domainFromValues","values","Set","sort","calculateDomain","data","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","utc","integer","float","timestamp","default","String","getTextAccessor","type","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';\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};\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 const LAYER_MAP = {\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.h3}\n },\n mvt: {\n Layer: MVTLayer,\n propMap: sharedPropMap,\n defaultProps: {...defaultProps, pointRadiusScale: 0.3, lineWidthScale: 2}\n }\n};\n\nfunction domainFromAttribute(attribute, scaleType) {\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) {\n if (scaleType === 'ordinal') {\n return [...new Set(values)].sort();\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({name}, scaleType, {colors}, opacity, data) {\n const scale = SCALE_FUNCS[scaleType]();\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, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\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 = {\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"],"file":"layer-map.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/layer-map.js"],"names":["extent","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","format","d3Format","moment","log","H3HexagonLayer","MVTLayer","GeoJsonLayer","SCALE_FUNCS","linear","ordinal","point","quantile","quantize","sqrt","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","hexagonId","columns","hex_id","layer","Layer","propMap","outline","geojson","lineWidthScale","coverage","elevationScale","getHexagon","d","mvt","uniqueIdProperty","assert","domainFromAttribute","attribute","scaleType","categories","map","c","category","filter","undefined","min","max","domainFromValues","values","Set","sort","d0","d1","calculateDomain","data","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","utc","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset","_domainFromValues"],"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 {log} from '@deck.gl/core';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\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};\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(type, config) {\n const hexagonId = config.columns?.hex_id;\n\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 mvt: {\n Layer: MVTLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n pointRadiusScale: 0.3,\n lineWidthScale: 2,\n uniqueIdProperty: 'geoid'\n }\n }\n }[type];\n\n log.assert(layer, `Unsupported layer type: ${type}`);\n\n return layer;\n}\n\nfunction domainFromAttribute(attribute, scaleType) {\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) {\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);\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({name}, scaleType, {colors}, opacity, data) {\n const scale = SCALE_FUNCS[scaleType]();\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, range, data) {\n const scale = SCALE_FUNCS[scaleType]();\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 = {\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"}
|