UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

99 lines (94 loc) 13.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.addNewLayersToSplitMap = addNewLayersToSplitMap; exports.computeSplitMapLayers = computeSplitMapLayers; exports.getInitialMapLayersForSplitMap = getInitialMapLayersForSplitMap; exports.removeLayerFromSplitMaps = removeLayerFromSplitMaps; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _lodash = _interopRequireDefault(require("lodash.clonedeep")); function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project /** * 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 ( // @ts-ignore 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 @typescript-eslint/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 * @param {Object} options * @returns {Array<Object>} split map settings */ function computeSplitMapLayers(layers, options) { var mapLayers = getInitialMapLayersForSplitMap(layers); var _ref = options || {}, duplicate = _ref.duplicate; // show all visible layers in left map, leave right map empty return [{ layers: mapLayers }, { layers: duplicate ? (0, _lodash["default"])(mapLayers) : {} }]; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdG9Qcm9wZXJ0eUtleSIsInQiLCJpIiwiX3RvUHJpbWl0aXZlIiwiX3R5cGVvZiIsInIiLCJlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJhZGROZXdMYXllcnNUb1NwbGl0TWFwIiwic3BsaXRNYXBzIiwibGF5ZXJzIiwibmV3TGF5ZXJzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwic2V0dGluZ3MiLCJyZWR1Y2UiLCJhY2N1IiwibmV3TGF5ZXIiLCJpZCIsImNvbmZpZyIsImlzVmlzaWJsZSIsInJlbW92ZUxheWVyRnJvbVNwbGl0TWFwcyIsImxheWVyIiwiX3NldHRpbmdzJGxheWVycyIsIl9sYXllciRpZCIsIl8iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwiZ2V0SW5pdGlhbE1hcExheWVyc0ZvclNwbGl0TWFwIiwiY3VycmVudExheWVyIiwiY29tcHV0ZVNwbGl0TWFwTGF5ZXJzIiwib3B0aW9ucyIsIm1hcExheWVycyIsIl9yZWYiLCJkdXBsaWNhdGUiLCJjbG9uZURlZXAiXSwic291cmNlcyI6WyIuLi9zcmMvc3BsaXQtbWFwLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5cbi8qKlxuICogQWRkIG5ldyBsYXllcnMgdG8gYm90aCBleGlzdGluZyBtYXBzXG4gKiBAcGFyYW0ge09iamVjdH0gc3BsaXRNYXBzXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheTxPYmplY3Q+fSBsYXllcnNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBuZXcgc3BsaXRNYXBzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGROZXdMYXllcnNUb1NwbGl0TWFwKHNwbGl0TWFwcywgbGF5ZXJzKSB7XG4gIGNvbnN0IG5ld0xheWVycyA9IEFycmF5LmlzQXJyYXkobGF5ZXJzKSA/IGxheWVycyA6IFtsYXllcnNdO1xuXG4gIGlmICghc3BsaXRNYXBzLmxlbmd0aCB8fCAhbmV3TGF5ZXJzLmxlbmd0aCkge1xuICAgIHJldHVybiBzcGxpdE1hcHM7XG4gIH1cblxuICAvLyBhZGQgbmV3IGxheWVyIHRvIGJvdGggbWFwcyxcbiAgLy8gZG9uJ3Qgb3ZlcnJpZGUsIGlmIGxheWVyLmlkIGlzIGFscmVhZHkgaW4gc3BsaXRNYXBzXG4gIHJldHVybiBzcGxpdE1hcHMubWFwKHNldHRpbmdzID0+ICh7XG4gICAgLi4uc2V0dGluZ3MsXG4gICAgbGF5ZXJzOiB7XG4gICAgICAuLi5zZXR0aW5ncy5sYXllcnMsXG4gICAgICAuLi5uZXdMYXllcnMucmVkdWNlKFxuICAgICAgICAoYWNjdSwgbmV3TGF5ZXIpID0+XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG5ld0xheWVyLmlkIGluIHNldHRpbmdzLmxheWVycyB8fCAhbmV3TGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgICAgICAgPyBhY2N1XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICAgIFtuZXdMYXllci5pZF06IG5ld0xheWVyLmNvbmZpZy5pc1Zpc2libGVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICB9XG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYW4gZXhpc3RpbmcgbGF5ZXIgZnJvbSBzcGxpdCBtYXAgc2V0dGluZ3NcbiAqIEBwYXJhbSB7T2JqZWN0fSBzcGxpdE1hcHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBsYXllclxuICogQHJldHVybnMge09iamVjdH0gTWFwcyBvZiBjdXN0b20gbGF5ZXIgb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGF5ZXJGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbGF5ZXIpIHtcbiAgaWYgKCFzcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHNwbGl0TWFwcztcbiAgfVxuICByZXR1cm4gc3BsaXRNYXBzLm1hcChzZXR0aW5ncyA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IHtbbGF5ZXIuaWRdOiBfLCAuLi5uZXdMYXllcnN9ID0gc2V0dGluZ3MubGF5ZXJzO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGxheWVyczogbmV3TGF5ZXJzXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBjb21wdXRlIHRoZSBkZWZhdWx0IG1hcHMgbGF5ZXIgc2V0dGluZ3NcbiAqIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxheWVycyB2aXNpYmlsaXR5XG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGxheWVyc1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IGxheWVyIHZpc2liaWxpdHkgZm9yIGVhY2ggcGFuZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcChsYXllcnMpIHtcbiAgcmV0dXJuIGxheWVyc1xuICAgIC5maWx0ZXIobGF5ZXIgPT4gbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSlcbiAgICAucmVkdWNlKFxuICAgICAgKG5ld0xheWVycywgY3VycmVudExheWVyKSA9PiAoe1xuICAgICAgICAuLi5uZXdMYXllcnMsXG4gICAgICAgIFtjdXJyZW50TGF5ZXIuaWRdOiBjdXJyZW50TGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2Qgd2lsbCBnZXQgZGVmYXVsdCBzcGxpdE1hcCBzZXR0aW5ncyBiYXNlZCBvbiBleGlzdGluZyBsYXllcnNcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gbGF5ZXJzXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybnMge0FycmF5PE9iamVjdD59IHNwbGl0IG1hcCBzZXR0aW5nc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNwbGl0TWFwTGF5ZXJzKGxheWVycywgb3B0aW9ucz86IHtkdXBsaWNhdGU6IGJvb2xlYW59KSB7XG4gIGNvbnN0IG1hcExheWVycyA9IGdldEluaXRpYWxNYXBMYXllcnNGb3JTcGxpdE1hcChsYXllcnMpO1xuICBjb25zdCB7ZHVwbGljYXRlfSA9IG9wdGlvbnMgfHwge307XG4gIC8vIHNob3cgYWxsIHZpc2libGUgbGF5ZXJzIGluIGxlZnQgbWFwLCBsZWF2ZSByaWdodCBtYXAgZW1wdHlcbiAgcmV0dXJuIFt7bGF5ZXJzOiBtYXBMYXllcnN9LCB7bGF5ZXJzOiBkdXBsaWNhdGUgPyBjbG9uZURlZXAobWFwTGF5ZXJzKSA6IHt9fV07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBeUMsU0FBQUMsZUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLFlBQUEsQ0FBQUYsQ0FBQSxnQ0FBQUcsT0FBQSxDQUFBRixDQUFBLElBQUFBLENB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