kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
115 lines (99 loc) • 13.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _styledComponents = require("../common/styled-components");
var _icons = require("../common/icons");
var _mapLayerSelector = _interopRequireDefault(require("../common/map-layer-selector"));
var _mapControlTooltip = _interopRequireDefault(require("./map-control-tooltip"));
var _mapControlPanel = _interopRequireDefault(require("./map-control-panel"));
// Copyright (c) 2021 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
LayerSelectorPanelFactory.deps = [_mapControlTooltip["default"], _mapControlPanel["default"]];
function LayerSelectorPanelFactory(MapControlTooltip, MapControlPanel) {
/** @type {import('./layer-selector-panel').LayerSelectorPanelComponent} */
var LayerSelectorPanel = function LayerSelectorPanel(_ref) {
var onMapToggleLayer = _ref.onMapToggleLayer,
onToggleMapControl = _ref.onToggleMapControl,
layers = _ref.layers,
layersToRender = _ref.layersToRender,
isSplit = _ref.isSplit,
mapControls = _ref.mapControls,
readOnly = _ref.readOnly;
var visibleLayers = (mapControls === null || mapControls === void 0 ? void 0 : mapControls.visibleLayers) || {};
var _ref2 = visibleLayers || {},
isActive = _ref2.active,
show = _ref2.show,
disableClose = _ref2.disableClose;
var legendLayers = (0, _react.useMemo)(function () {
return layers.filter(function (_ref3) {
var config = _ref3.config;
return config.isVisible;
}).map(function (_ref4) {
var id = _ref4.id,
config = _ref4.config;
return {
id: id,
name: config.label,
// layer
isVisible: layersToRender[id]
};
});
}, [layers, layersToRender]);
var isVisible = (0, _react.useMemo)(function () {
return isSplit && show && readOnly !== true;
}, [isSplit, show, readOnly]);
var onToggleMenuPanel = (0, _react.useCallback)(function (event) {
event.preventDefault();
onToggleMapControl('visibleLayers');
}, [onToggleMapControl]);
return isVisible ? !isActive ? /*#__PURE__*/_react["default"].createElement(_styledComponents.MapControlButton, {
key: 1,
onClick: onToggleMenuPanel,
className: (0, _classnames["default"])('map-control-button', 'toggle-layer', {
isActive: isActive
}),
"data-tip": true,
"data-for": "toggle-layer"
}, /*#__PURE__*/_react["default"].createElement(_icons.Layers, {
height: "22px"
}), /*#__PURE__*/_react["default"].createElement(MapControlTooltip, {
id: "toggle-layer",
message: isActive ? 'tooltip.hideLayerPanel' : 'tooltip.showLayerPanel'
})) : /*#__PURE__*/_react["default"].createElement(MapControlPanel, {
header: "header.visibleLayers",
onClick: onToggleMenuPanel,
disableClose: disableClose
}, /*#__PURE__*/_react["default"].createElement(_mapLayerSelector["default"], {
layers: legendLayers,
onMapToggleLayer: onMapToggleLayer
})) : null;
};
LayerSelectorPanel.displayName = 'LayerSelectorPanel';
return /*#__PURE__*/_react["default"].memo(LayerSelectorPanel);
}
var _default = LayerSelectorPanelFactory;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21hcC9sYXllci1zZWxlY3Rvci1wYW5lbC5qcyJdLCJuYW1lcyI6WyJMYXllclNlbGVjdG9yUGFuZWxGYWN0b3J5IiwiZGVwcyIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIk1hcENvbnRyb2xQYW5lbEZhY3RvcnkiLCJNYXBDb250cm9sVG9vbHRpcCIsIk1hcENvbnRyb2xQYW5lbCIsIkxheWVyU2VsZWN0b3JQYW5lbCIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJvblRvZ2dsZU1hcENvbnRyb2wiLCJsYXllcnMiLCJsYXllcnNUb1JlbmRlciIsImlzU3BsaXQiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwidmlzaWJsZUxheWVycyIsImlzQWN0aXZlIiwiYWN0aXZlIiwic2hvdyIsImRpc2FibGVDbG9zZSIsImxlZ2VuZExheWVycyIsImZpbHRlciIsImNvbmZpZyIsImlzVmlzaWJsZSIsIm1hcCIsImlkIiwibmFtZSIsImxhYmVsIiwib25Ub2dnbGVNZW51UGFuZWwiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJSZWFjdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQTNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVdBQSx5QkFBeUIsQ0FBQ0MsSUFBMUIsR0FBaUMsQ0FBQ0MsNkJBQUQsRUFBMkJDLDJCQUEzQixDQUFqQzs7QUFFQSxTQUFTSCx5QkFBVCxDQUFtQ0ksaUJBQW5DLEVBQXNEQyxlQUF0RCxFQUF1RTtBQUNyRTtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsT0FRckI7QUFBQSxRQVBKQyxnQkFPSSxRQVBKQSxnQkFPSTtBQUFBLFFB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XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQge01hcENvbnRyb2xCdXR0b259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7TGF5ZXJzfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IE1hcExheWVyU2VsZWN0b3IgZnJvbSAnLi4vY29tbW9uL21hcC1sYXllci1zZWxlY3Rvcic7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbHRpcCc7XG5pbXBvcnQgTWFwQ29udHJvbFBhbmVsRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXBhbmVsJztcblxuTGF5ZXJTZWxlY3RvclBhbmVsRmFjdG9yeS5kZXBzID0gW01hcENvbnRyb2xUb29sdGlwRmFjdG9yeSwgTWFwQ29udHJvbFBhbmVsRmFjdG9yeV07XG5cbmZ1bmN0aW9uIExheWVyU2VsZWN0b3JQYW5lbEZhY3RvcnkoTWFwQ29udHJvbFRvb2x0aXAsIE1hcENvbnRyb2xQYW5lbCkge1xuICAvKiogQHR5cGUge2ltcG9ydCgnLi9sYXllci1zZWxlY3Rvci1wYW5lbCcpLkxheWVyU2VsZWN0b3JQYW5lbENvbXBvbmVudH0gKi9cbiAgY29uc3QgTGF5ZXJTZWxlY3RvclBhbmVsID0gKHtcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgaXNTcGxpdCxcbiAgICBtYXBDb250cm9scyxcbiAgICByZWFkT25seVxuICB9KSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZUxheWVycyA9IG1hcENvbnRyb2xzPy52aXNpYmxlTGF5ZXJzIHx8IHt9O1xuICAgIGNvbnN0IHthY3RpdmU6IGlzQWN0aXZlLCBzaG93LCBkaXNhYmxlQ2xvc2V9ID0gdmlzaWJsZUxheWVycyB8fCB7fTtcblxuICAgIGNvbnN0IGxlZ2VuZExheWVycyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBsYXllcnNcbiAgICAgICAgICAuZmlsdGVyKCh7Y29uZmlnfSkgPT4gY29uZmlnLmlzVmlzaWJsZSlcbiAgICAgICAgICAubWFwKCh7aWQsIGNvbmZpZ30pID0+ICh7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIG5hbWU6IGNvbmZpZy5sYWJlbCxcbiAgICAgICAgICAgIC8vIGxheWVyXG4gICAgICAgICAgICBpc1Zpc2libGU6IGxheWVyc1RvUmVuZGVyW2lkXVxuICAgICAgICAgIH0pKSxcbiAgICAgIFtsYXllcnMsIGxheWVyc1RvUmVuZGVyXVxuICAgICk7XG5cbiAgICBjb25zdCBpc1Zpc2libGUgPSB1c2VNZW1vKCgpID0+IGlzU3BsaXQgJiYgc2hvdyAmJiByZWFkT25seSAhPT0gdHJ1ZSwgW1xuICAgICAgaXNTcGxpdCxcbiAgICAgIHNob3csXG4gICAgICByZWFkT25seVxuICAgIF0pO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVNZW51UGFuZWwgPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25Ub2dnbGVNYXBDb250cm9sKCd2aXNpYmxlTGF5ZXJzJyk7XG4gICAgICB9LFxuICAgICAgW29uVG9nZ2xlTWFwQ29udHJvbF1cbiAgICApO1xuXG4gICAgcmV0dXJuIGlzVmlzaWJsZSA/IChcbiAgICAgICghaXNBY3RpdmUgPyAoXG4gICAgICAgIDxNYXBDb250cm9sQnV0dG9uXG4gICAgICAgICAga2V5PXsxfVxuICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlTWVudVBhbmVsfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbWFwLWNvbnRyb2wtYnV0dG9uJywgJ3RvZ2dsZS1sYXllcicsIHtpc0FjdGl2ZX0pfVxuICAgICAgICAgIGRhdGEtdGlwXG4gICAgICAgICAgZGF0YS1mb3I9XCJ0b2dnbGUtbGF5ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPExheWVycyBoZWlnaHQ9XCIyMnB4XCIgLz5cbiAgICAgICAgICA8TWFwQ29udHJvbFRvb2x0aXBcbiAgICAgICAgICAgIGlkPVwidG9nZ2xlLWxheWVyXCJcbiAgICAgICAgICAgIG1lc3NhZ2U9e2lzQWN0aXZlID8gJ3Rvb2x0aXAuaGlkZUxheWVyUGFuZWwnIDogJ3Rvb2x0aXAuc2hvd0xheWVyUGFuZWwnfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxNYXBDb250cm9sUGFuZWxcbiAgICAgICAgICBoZWFkZXI9XCJoZWFkZXIudmlzaWJsZUxheWVyc1wiXG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVNZW51UGFuZWx9XG4gICAgICAgICAgZGlzYWJsZUNsb3NlPXtkaXNhYmxlQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICA8TWFwTGF5ZXJTZWxlY3RvciBsYXllcnM9e2xlZ2VuZExheWVyc30gb25NYXBUb2dnbGVMYXllcj17b25NYXBUb2dnbGVMYXllcn0gLz5cbiAgICAgICAgPC9NYXBDb250cm9sUGFuZWw+XG4gICAgICApKVxuICAgICkgOiBudWxsO1xuICB9O1xuXG4gIExheWVyU2VsZWN0b3JQYW5lbC5kaXNwbGF5TmFtZSA9ICdMYXllclNlbGVjdG9yUGFuZWwnO1xuXG4gIHJldHVybiBSZWFjdC5tZW1vKExheWVyU2VsZWN0b3JQYW5lbCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExheWVyU2VsZWN0b3JQYW5lbEZhY3Rvcnk7XG4iXX0=