kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
106 lines (85 loc) • 11.7 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addNewLayersToSplitMap = addNewLayersToSplitMap;
exports.computeSplitMapLayers = computeSplitMapLayers;
exports.getInitialMapLayersForSplitMap = getInitialMapLayersForSplitMap;
exports.removeLayerFromSplitMaps = removeLayerFromSplitMaps;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return (0, _typeof2["default"])(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if ((0, _typeof2["default"])(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if ((0, _typeof2["default"])(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/**
* Add new layers to both existing maps
* @param {Object} splitMaps
* @param {Object|Array<Object>} layers
* @returns {Array<Object>} new splitMaps
*/
function addNewLayersToSplitMap(splitMaps, layers) {
var newLayers = Array.isArray(layers) ? layers : [layers];
if (!splitMaps.length || !newLayers.length) {
return splitMaps;
} // add new layer to both maps,
// don't override, if layer.id is already in splitMaps
return splitMaps.map(function (settings) {
return _objectSpread(_objectSpread({}, settings), {}, {
layers: _objectSpread(_objectSpread({}, settings.layers), newLayers.reduce(function (accu, newLayer) {
return [newLayer.id] in settings.layers || !newLayer.config.isVisible ? accu : _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, newLayer.id, newLayer.config.isVisible));
}, {}))
});
});
}
/**
* Remove an existing layer from split map settings
* @param {Object} splitMaps
* @param {Object} layer
* @returns {Object} Maps of custom layer objects
*/
function removeLayerFromSplitMaps(splitMaps, layer) {
if (!splitMaps.length) {
return splitMaps;
}
return splitMaps.map(function (settings) {
// eslint-disable-next-line no-unused-vars
var _settings$layers = settings.layers,
_layer$id = layer.id,
_ = _settings$layers[_layer$id],
newLayers = (0, _objectWithoutProperties2["default"])(_settings$layers, [_layer$id].map(_toPropertyKey));
return _objectSpread(_objectSpread({}, settings), {}, {
layers: newLayers
});
});
}
/**
* This method will compute the default maps layer settings
* based on the current layers visibility
* @param {Array<Object>} layers
* @returns {Array<Object>} layer visibility for each panel
*/
function getInitialMapLayersForSplitMap(layers) {
return layers.filter(function (layer) {
return layer.config.isVisible;
}).reduce(function (newLayers, currentLayer) {
return _objectSpread(_objectSpread({}, newLayers), {}, (0, _defineProperty2["default"])({}, currentLayer.id, currentLayer.config.isVisible));
}, {});
}
/**
* This method will get default splitMap settings based on existing layers
* @param {Array<Object>} layers
* @returns {Array<Object>} split map settings
*/
function computeSplitMapLayers(layers) {
var mapLayers = getInitialMapLayersForSplitMap(layers);
return [{
layers: mapLayers
}, {
layers: (0, _lodash["default"])(mapLayers)
}];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zcGxpdC1tYXAtdXRpbHMuanMiXSwibmFtZXMiOlsiYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcCIsInNwbGl0TWFwcyIsImxheWVycyIsIm5ld0xheWVycyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm1hcCIsInNldHRpbmdzIiwicmVkdWNlIiwiYWNjdSIsIm5ld0xheWVyIiwiaWQiLCJjb25maWciLCJpc1Zpc2libGUiLCJyZW1vdmVMYXllckZyb21TcGxpdE1hcHMiLCJsYXllciIsIl8iLCJnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXAiLCJmaWx0ZXIiLCJjdXJyZW50TGF5ZXIiLCJjb21wdXRlU3BsaXRNYXBMYXllcnMiLCJtYXBMYXllcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7Ozs7Ozs7OztBQUVBOzs7Ozs7QUFNTyxTQUFTQSxzQkFBVCxDQUFnQ0MsU0FBaEMsRUFBMkNDLE1BQTNDLEVBQW1EO0FBQ3hELE1BQU1DLFNBQVMsR0FBR0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILE1BQWQsSUFBd0JBLE1BQXhCLEdBQWlDLENBQUNBLE1BQUQsQ0FBbkQ7O0FBRUEsTUFBSSxDQUFDRCxTQUFTLENBQUNLLE1BQVgsSUFBcUIsQ0FBQ0gsU0FBUyxDQUFDRyxNQUFwQyxFQUE0QztBQUMxQyxXQUFPTCxTQUFQO0FBQ0QsR0FMdUQsQ0FPeEQ7QUFDQTs7O0FBQ0EsU0FBT0EsU0FBUyxDQUFDTSxHQUFWLENBQWMsVUFBQUMsUUFBUTtBQUFBLDJDQUN4QkEsUUFEd0I7QUFFM0JOLE1BQUFBLE1BQU0sa0NBQ0RNLFFBQVEsQ0FBQ04sTUFEUixHQUVEQyxTQUFTLENBQUNNLE1BQVYsQ0FDRCxVQUFDQyxJQUFELEVBQU9DLFFBQVA7QUFBQSxlQUNFLENBQUNBLFFBQVEsQ0FBQ0MsRUFBVixLQUFpQkosUUFBUSxDQUFDTixNQUExQixJQUFvQyxDQUFDUyxRQUFRLENBQUNFLE1BQVQsQ0FBZ0JDLFNBQXJELEdBQ0lKLElBREosbUNBR1NBLElBSFQsNENBSU9DLFFBQVEsQ0FBQ0MsRUFKaEIsRUFJcUJELFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkMsU0FKckMsRUFERjtBQUFBLE9BREMsRUFRRCxFQVJDLENBRkM7QUFGcUI7QUFBQSxHQUF0QixDQUFQO0FBZ0JEO0FBRUQ7Ozs7Ozs7O0FBTU8sU0FBU0Msd0JBQVQsQ0FBa0NkLFNBQWxDLEVBQTZDZSxLQUE3QyxFQUFvRDtBQUN6RCxNQUFJLENBQUNmLFNBQVMsQ0FBQ0ssTUFBZixFQUF1QjtBQUNyQixXQUFPTCxTQUFQO0FBQ0Q7O0FBQ0QsU0FBT0EsU0FBUyxDQUFDTSxHQUFWLENBQWMsVUFBQUMsUUFBUSxFQUFJO0FBQy9CO0FBQ0EsMkJBQXNDQSxRQUFRLENBQUNOLE1BQS9DO0FBQUEsb0JBQVFjLEtBQUssQ0FBQ0osRUFBZDtBQUFBLFFBQW1CSyxDQUFuQjtBQUFBLFFBQXlCZCxTQUF6QjtBQUNBLDJDQUNLSyxRQURMO0FBRUVOLE1BQUFBLE1BQU0sRUFBRUM7QUFGVjtBQUlELEdBUE0sQ0FBUDtBQVFEO0FBRUQ7Ozs7Ozs7O0FBTU8sU0FBU2UsOEJBQVQsQ0FBd0NoQixNQUF4QyxFQUFnRDtBQUNyRCxTQUFPQSxNQUFNLENBQ1ZpQixNQURJLENBQ0csVUFBQUgsS0FBSztBQUFBLFdBQUlBLEtBQUssQ0FBQ0gsTUFBTixDQUFhQyxTQUFqQjtBQUFBLEdBRFIsRUFFSkwsTUFGSSxDQUdILFVBQUNOLFNBQUQsRUFBWWlCLFlBQVo7QUFBQSwyQ0FDS2pCLFNBREwsNENBRUdpQixZQUFZLENBQUNSLEVBRmhCLEVBRXFCUSxZQUFZLENBQUNQLE1BQWIsQ0FBb0JDLFNBRnpDO0FBQUEsR0FIRyxFQU9ILEVBUEcsQ0FBUDtBQVNEO0FBRUQ7Ozs7Ozs7QUFLTyxTQUFTTyxxQkFBVCxDQUErQm5CLE1BQS9CLEVBQXVDO0FBQzVDLE1BQU1vQixTQUFTLEdBQUdKLDhCQUE4QixDQUFDaEIsTUFBRCxDQUFoRDtBQUVBLFNBQU8sQ0FBQztBQUFDQSxJQUFBQSxNQUFNLEVBQUVvQjtBQUFULEdBQUQsRUFBc0I7QUFBQ3BCLElBQUFBLE1BQU0sRUFBRSx3QkFBVW9CLFNBQVY7QUFBVCxHQUF0QixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC5jbG9uZWRlZXAnO1xuXG4vKipcbiAqIEFkZCBuZXcgbGF5ZXJzIHRvIGJvdGggZXhpc3RpbmcgbWFwc1xuICogQHBhcmFtIHtPYmplY3R9IHNwbGl0TWFwc1xuICogQHBhcmFtIHtPYmplY3R8QXJyYXk8T2JqZWN0Pn0gbGF5ZXJzXG4gKiBAcmV0dXJucyB7QXJyYXk8T2JqZWN0Pn0gbmV3IHNwbGl0TWFwc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcChzcGxpdE1hcHMsIGxheWVycykge1xuICBjb25zdCBuZXdMYXllcnMgPSBBcnJheS5pc0FycmF5KGxheWVycykgPyBsYXllcnMgOiBbbGF5ZXJzXTtcblxuICBpZiAoIXNwbGl0TWFwcy5sZW5ndGggfHwgIW5ld0xheWVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4gc3BsaXRNYXBzO1xuICB9XG5cbiAgLy8gYWRkIG5ldyBsYXllciB0byBib3RoIG1hcHMsXG4gIC8vIGRvbid0IG92ZXJyaWRlLCBpZiBsYXllci5pZCBpcyBhbHJlYWR5IGluIHNwbGl0TWFwc1xuICByZXR1cm4gc3BsaXRNYXBzLm1hcChzZXR0aW5ncyA9PiAoe1xuICAgIC4uLnNldHRpbmdzLFxuICAgIGxheWVyczoge1xuICAgICAgLi4uc2V0dGluZ3MubGF5ZXJzLFxuICAgICAgLi4ubmV3TGF5ZXJzLnJlZHVjZShcbiAgICAgICAgKGFjY3UsIG5ld0xheWVyKSA9PlxuICAgICAgICAgIFtuZXdMYXllci5pZF0gaW4gc2V0dGluZ3MubGF5ZXJzIHx8ICFuZXdMYXllci5jb25maWcuaXNWaXNpYmxlXG4gICAgICAgICAgICA/IGFjY3VcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgICAgW25ld0xheWVyLmlkXTogbmV3TGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH1cbiAgfSkpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhbiBleGlzdGluZyBsYXllciBmcm9tIHNwbGl0IG1hcCBzZXR0aW5nc1xuICogQHBhcmFtIHtPYmplY3R9IHNwbGl0TWFwc1xuICogQHBhcmFtIHtPYmplY3R9IGxheWVyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBNYXBzIG9mIGN1c3RvbSBsYXllciBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMYXllckZyb21TcGxpdE1hcHMoc3BsaXRNYXBzLCBsYXllcikge1xuICBpZiAoIXNwbGl0TWFwcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gc3BsaXRNYXBzO1xuICB9XG4gIHJldHVybiBzcGxpdE1hcHMubWFwKHNldHRpbmdzID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBjb25zdCB7W2xheWVyLmlkXTogXywgLi4ubmV3TGF5ZXJzfSA9IHNldHRpbmdzLmxheWVycztcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBsYXllcnM6IG5ld0xheWVyc1xuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHdpbGwgY29tcHV0ZSB0aGUgZGVmYXVsdCBtYXBzIGxheWVyIHNldHRpbmdzXG4gKiBiYXNlZCBvbiB0aGUgY3VycmVudCBsYXllcnMgdmlzaWJpbGl0eVxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBsYXllcnNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBsYXllciB2aXNpYmlsaXR5IGZvciBlYWNoIHBhbmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXAobGF5ZXJzKSB7XG4gIHJldHVybiBsYXllcnNcbiAgICAuZmlsdGVyKGxheWVyID0+IGxheWVyLmNvbmZpZy5pc1Zpc2libGUpXG4gICAgLnJlZHVjZShcbiAgICAgIChuZXdMYXllcnMsIGN1cnJlbnRMYXllcikgPT4gKHtcbiAgICAgICAgLi4ubmV3TGF5ZXJzLFxuICAgICAgICBbY3VycmVudExheWVyLmlkXTogY3VycmVudExheWVyLmNvbmZpZy5pc1Zpc2libGVcbiAgICAgIH0pLFxuICAgICAge31cbiAgICApO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHdpbGwgZ2V0IGRlZmF1bHQgc3BsaXRNYXAgc2V0dGluZ3MgYmFzZWQgb24gZXhpc3RpbmcgbGF5ZXJzXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGxheWVyc1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IHNwbGl0IG1hcCBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNwbGl0TWFwTGF5ZXJzKGxheWVycykge1xuICBjb25zdCBtYXBMYXllcnMgPSBnZXRJbml0aWFsTWFwTGF5ZXJzRm9yU3BsaXRNYXAobGF5ZXJzKTtcblxuICByZXR1cm4gW3tsYXllcnM6IG1hcExheWVyc30sIHtsYXllcnM6IGNsb25lRGVlcChtYXBMYXllcnMpfV07XG59XG4iXX0=