UNPKG

kepler.gl

Version:

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

85 lines (83 loc) 14.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); 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")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project 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 = exports["default"] = LayerSelectorPanelFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pY29ucyIsIl9tYXBMYXllclNlbGVjdG9yIiwiX21hcENvbnRyb2xUb29sdGlwIiwiX21hcENvbnRyb2xQYW5lbCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkxheWVyU2VsZWN0b3JQYW5lbEZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IiwiTWFwQ29udHJvbFBhbmVsRmFjdG9yeSIsIk1hcENvbnRyb2xUb29sdGlwIiwiTWFwQ29udHJvbFBhbmVsIiwiTGF5ZXJTZWxlY3RvclBhbmVsIiwiX3JlZiIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJvblRvZ2dsZU1hcENvbnRyb2wiLCJsYXllcnMiLCJsYXllcnNUb1JlbmRlciIsImlzU3BsaXQiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwidmlzaWJsZUxheWVycyIsIl9yZWYyIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJzaG93IiwiZGlzYWJsZUNsb3NlIiwibGVnZW5kTGF5ZXJzIiwidXNlTWVtbyIsImZpbHRlciIsIl9yZWYzIiwiY29uZmlnIiwiaXNWaXNpYmxlIiwibWFwIiwiX3JlZjQiLCJpZCIsIm5hbWUiLCJsYWJlbCIsIm9uVG9nZ2xlTWVudVBhbmVsIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIk1hcENvbnRyb2xCdXR0b24iLCJrZXkiLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsIkxheWVycyIsImhlaWdodCIsIm1lc3NhZ2UiLCJoZWFkZXIiLCJkaXNwbGF5TmFtZSIsIlJlYWN0IiwibWVtbyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAvbGF5ZXItc2VsZWN0b3ItcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IHtNYXBDb250cm9sQnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtMYXllcnN9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTWFwTGF5ZXJTZWxlY3RvciBmcm9tICcuLi9jb21tb24vbWFwLWxheWVyLXNlbGVjdG9yJztcbmltcG9ydCBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC10b29sdGlwJztcbmltcG9ydCBNYXBDb250cm9sUGFuZWxGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtcGFuZWwnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtNYXBDb250cm9sSXRlbSwgTWFwQ29udHJvbHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5MYXllclNlbGVjdG9yUGFuZWxGYWN0b3J5LmRlcHMgPSBbTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LCBNYXBDb250cm9sUGFuZWxGYWN0b3J5XTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJTZWxlY3RvclBhbmVsUHJvcHMgPSB7XG4gIG9uTWFwVG9nZ2xlTGF5ZXI6IChsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlTWFwQ29udHJvbDogKGNvbnRyb2w6IHN0cmluZykgPT4gdm9pZDtcbiAgbGF5ZXJzOiBSZWFkb25seUFycmF5PExheWVyPjtcbiAgbGF5ZXJzVG9SZW5kZXI6IHtba2V5OiBzdHJpbmddOiBib29sZWFufTtcbiAgaXNTcGxpdDogYm9vbGVhbjtcbiAgbWFwQ29udHJvbHM6IE1hcENvbnRyb2xzO1xuICByZWFkT25seTogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIExheWVyU2VsZWN0b3JQYW5lbEZhY3RvcnkoXG4gIE1hcENvbnRyb2xUb29sdGlwOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3Rvcnk+LFxuICBNYXBDb250cm9sUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xQYW5lbEZhY3Rvcnk+XG4pIHtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGF5ZXItc2VsZWN0b3ItcGFuZWwnKS5MYXllclNlbGVjdG9yUGFuZWxDb21wb25lbnR9ICovXG4gIGNvbnN0IExheWVyU2VsZWN0b3JQYW5lbDogUmVhY3QuRkM8TGF5ZXJTZWxlY3RvclBhbmVsUHJvcHM+ID0gKHtcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgaXNTcGxpdCxcbiAgICBtYXBDb250cm9scyxcbiAgICByZWFkT25seVxuICB9KSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZUxheWVycyA9IG1hcENvbnRyb2xzPy52aXNpYmxlTGF5ZXJzIHx8ICh7fSBhcyBNYXBDb250cm9sSXRlbSk7XG4gICAgY29uc3Qge2FjdGl2ZTogaXNBY3RpdmUsIHNob3csIGRpc2FibGVDbG9zZX0gPSB2aXNpYmxlTGF5ZXJzIHx8IHt9O1xuXG4gICAgY29uc3QgbGVnZW5kTGF5ZXJzID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoKHtjb25maWd9KSA9PiBjb25maWcuaXNWaXNpYmxlKVxuICAgICAgICAgIC5tYXAoKHtpZCwgY29uZmlnfSkgPT4gKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbmFtZTogY29uZmlnLmxhYmVsLFxuICAgICAgICAgICAgLy8gbGF5ZXJcbiAgICAgICAgICAgIGlzVmlzaWJsZTogbGF5ZXJzVG9SZW5kZXJbaWRdXG4gICAgICAgICAgfSkpLFxuICAgICAgW2xheWVycywgbGF5ZXJzVG9SZW5kZXJdXG4gICAgKTtcblxuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBpc1NwbGl0ICYmIHNob3cgJiYgcmVhZE9ubHkgIT09IHRydWUsXG4gICAgICBbaXNTcGxpdCwgc2hvdywgcmVhZE9ubHldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uVG9nZ2xlTWVudVBhbmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgndmlzaWJsZUxheWVycycpO1xuICAgICAgfSxcbiAgICAgIFtvblRvZ2dsZU1hcENvbnRyb2xdXG4gICAgKTtcblxuICAgIHJldHVybiBpc1Zpc2libGUgPyAoXG4gICAgICAhaXNBY3RpdmUgPyAoXG4gICAgICAgIDxNYXBDb250cm9sQnV0dG9uXG4gICAgICAgICAga2V5PXsxfVxuICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlTWVudVBhbmVsfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbWFwLWNvbnRyb2wtYnV0dG9uJywgJ3RvZ2dsZS1sYXllcicsIHtpc0FjdGl2ZX0pfVxuICAgICAgICAgIGRhdGEtdGlwXG4gICAgICAgICAgZGF0YS1mb3I9XCJ0b2dnbGUtbGF5ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPExheWVycyBoZWlnaHQ9XCIyMnB4XCIgLz5cbiAgICAgICAgICA8TWFwQ29udHJvbFRvb2x0aXBcbiAgICAgICAgICAgIGlkPVwidG9nZ2xlLWxheWVyXCJcbiAgICAgICAgICAgIG1lc3NhZ2U9e2lzQWN0aXZlID8gJ3Rvb2x0aXAuaGlkZUxheWVyUGFuZWwnIDogJ3Rvb2x0aXAuc2hvd0xheWVyUGFuZWwnfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxNYXBDb250cm9sUGFuZWxcbiAgICAgICAgICBoZWFkZXI9XCJoZWFkZXIudmlzaWJsZUxheWVyc1wiXG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVNZW51UGFuZWx9XG4gICAgICAgICAgZGlzYWJsZUNsb3NlPXtkaXNhYmxlQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICA8TWFwTGF5ZXJTZWxlY3RvciBsYXllcnM9e2xlZ2VuZExheWVyc30gb25NYXBUb2dnbGVMYXllcj17b25NYXBUb2dnbGVMYXllcn0gLz5cbiAgICAgICAgPC9NYXBDb250cm9sUGFuZWw+XG4gICAgICApXG4gICAgKSA6IG51bGw7XG4gIH07XG5cbiAgTGF5ZXJTZWxlY3RvclBhbmVsLmRpc3BsYXlOYW1lID0gJ0xheWVyU2VsZWN0b3JQYW5lbCc7XG5cbiAgcmV0dXJuIFJlYWN0Lm1lbW8oTGF5ZXJTZWxlY3RvclBhbmVsKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5ZXJTZWxlY3RvclBhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElB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