kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
98 lines (96 loc) • 16.7 kB
JavaScript
"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 _constants = require("@kepler.gl/constants");
var _icons = require("../common/icons");
var _styledComponents = require("../common/styled-components");
var _toolbarItem = _interopRequireDefault(require("../common/toolbar-item"));
var _mapControlTooltip = _interopRequireDefault(require("./map-control-tooltip"));
var _mapControlToolbar = _interopRequireDefault(require("./map-control-toolbar"));
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
MapDrawPanelFactory.deps = [_mapControlTooltip["default"], _mapControlToolbar["default"]];
function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
var defaultActionIcons = {
visible: _icons.EyeSeen,
hidden: _icons.EyeUnseen,
polygon: _icons.DrawPolygon,
cursor: _icons.CursorClick,
innerPolygon: _icons.Polygon,
rectangle: _icons.Rectangle
};
var MapDrawPanel = /*#__PURE__*/_react["default"].memo(function (_ref) {
var _mapControls$mapDraw, _mapControls$mapDraw2;
var editor = _ref.editor,
mapControls = _ref.mapControls,
onToggleMapControl = _ref.onToggleMapControl,
onSetEditorMode = _ref.onSetEditorMode,
_ref$actionIcons = _ref.actionIcons,
actionIcons = _ref$actionIcons === void 0 ? defaultActionIcons : _ref$actionIcons;
var isActive = mapControls === null || mapControls === void 0 || (_mapControls$mapDraw = mapControls.mapDraw) === null || _mapControls$mapDraw === void 0 ? void 0 : _mapControls$mapDraw.active;
var onToggleMenuPanel = (0, _react.useCallback)(function () {
return onToggleMapControl('mapDraw');
}, [onToggleMapControl]);
if (!(mapControls !== null && mapControls !== void 0 && (_mapControls$mapDraw2 = mapControls.mapDraw) !== null && _mapControls$mapDraw2 !== void 0 && _mapControls$mapDraw2.show)) {
return null;
}
return /*#__PURE__*/_react["default"].createElement("div", {
className: "map-draw-controls",
style: {
position: 'relative'
}
}, isActive ? /*#__PURE__*/_react["default"].createElement(MapControlToolbar, {
show: isActive
}, /*#__PURE__*/_react["default"].createElement(_toolbarItem["default"], {
className: "edit-feature",
onClick: function onClick() {
return onSetEditorMode(_constants.EDITOR_MODES.EDIT);
},
label: "toolbar.select",
icon: actionIcons.cursor,
active: editor.mode === _constants.EDITOR_MODES.EDIT
}), /*#__PURE__*/_react["default"].createElement(_toolbarItem["default"], {
className: "draw-feature",
onClick: function onClick() {
return onSetEditorMode(_constants.EDITOR_MODES.DRAW_POLYGON);
},
label: "toolbar.polygon",
icon: actionIcons.innerPolygon,
active: editor.mode === _constants.EDITOR_MODES.DRAW_POLYGON
}), /*#__PURE__*/_react["default"].createElement(_toolbarItem["default"], {
className: "draw-rectangle",
onClick: function onClick() {
return onSetEditorMode(_constants.EDITOR_MODES.DRAW_RECTANGLE);
},
label: "toolbar.rectangle",
icon: actionIcons.rectangle,
active: editor.mode === _constants.EDITOR_MODES.DRAW_RECTANGLE
})) : null, /*#__PURE__*/_react["default"].createElement(MapControlTooltip, {
id: "map-draw",
message: "tooltip.DrawOnMap"
}, /*#__PURE__*/_react["default"].createElement(_styledComponents.MapControlButton, {
className: (0, _classnames["default"])('map-control-button', 'map-draw', {
isActive: isActive
}),
onClick: function onClick(e) {
e.preventDefault();
onToggleMenuPanel();
},
active: isActive
}, /*#__PURE__*/_react["default"].createElement(actionIcons.polygon, {
height: "22px"
}))));
});
MapDrawPanel.displayName = 'MapDrawPanel';
return MapDrawPanel;
}
var _default = exports["default"] = MapDrawPanelFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29uc3RhbnRzIiwiX2ljb25zIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfdG9vbGJhckl0ZW0iLCJfbWFwQ29udHJvbFRvb2x0aXAiLCJfbWFwQ29udHJvbFRvb2xiYXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJNYXBEcmF3UGFuZWxGYWN0b3J5IiwiZGVwcyIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIk1hcENvbnRyb2xUb29sYmFyRmFjdG9yeSIsIk1hcENvbnRyb2xUb29sdGlwIiwiTWFwQ29udHJvbFRvb2xiYXIiLCJkZWZhdWx0QWN0aW9uSWNvbnMiLCJ2aXNpYmxlIiwiRXllU2VlbiIsImhpZGRlbiIsIkV5ZVVuc2VlbiIsInBvbHlnb24iLCJEcmF3UG9seWdvbiIsImN1cnNvciIsIkN1cnNvckNsaWNrIiwiaW5uZXJQb2x5Z29uIiwiUG9seWdvbiIsInJlY3RhbmdsZSIsIlJlY3RhbmdsZSIsIk1hcERyYXdQYW5lbCIsIlJlYWN0IiwibWVtbyIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwRHJhdyIsIl9tYXBDb250cm9scyRtYXBEcmF3MiIsImVkaXRvciIsIm1hcENvbnRyb2xzIiwib25Ub2dnbGVNYXBDb250cm9sIiwib25TZXRFZGl0b3JNb2RlIiwiX3JlZiRhY3Rpb25JY29ucyIsImFjdGlvbkljb25zIiwiaXNBY3RpdmUiLCJtYXBEcmF3IiwiYWN0aXZlIiwib25Ub2dnbGVNZW51UGFuZWwiLCJ1c2VDYWxsYmFjayIsInNob3ciLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJwb3NpdGlvbiIsIm9uQ2xpY2siLCJFRElUT1JfTU9ERVMiLCJFRElUIiwibGFiZWwiLCJpY29uIiwibW9kZSIsIkRSQVdfUE9MWUdPTiIsIkRSQVdfUkVDVEFOR0xFIiwiaWQiLCJtZXNzYWdlIiwiTWFwQ29udHJvbEJ1dHRvbiIsImNsYXNzbmFtZXMiLCJwcmV2ZW50RGVmYXVsdCIsImhlaWdodCIsImRpc3BsYXlOYW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC9tYXAtZHJhdy1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2t9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQge0VESVRPUl9NT0RFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtDdXJzb3JDbGljaywgRHJhd1BvbHlnb24sIEV5ZVNlZW4sIEV5ZVVuc2VlbiwgUG9seWdvbiwgUmVjdGFuZ2xlfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtNYXBDb250cm9sQnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFRvb2xiYXJJdGVtIGZyb20gJy4uL2NvbW1vbi90b29sYmFyLWl0ZW0nO1xuaW1wb3J0IE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXRvb2x0aXAnO1xuaW1wb3J0IE1hcENvbnRyb2xUb29sYmFyRmFjdG9yeSBmcm9tICcuL21hcC1jb250cm9sLXRvb2xiYXInO1xuaW1wb3J0IHtFZGl0b3IsIE1hcENvbnRyb2xzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QmFzZVByb3BzfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuXG5NYXBEcmF3UGFuZWxGYWN0b3J5LmRlcHMgPSBbTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LCBNYXBDb250cm9sVG9vbGJhckZhY3RvcnldO1xuXG5leHBvcnQgdHlwZSBNYXBEcmF3UGFuZWxQcm9wcyA9IHtcbiAgZWRpdG9yOiBFZGl0b3I7XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgb25Ub2dnbGVNYXBDb250cm9sOiAoY29udHJvbDogc3RyaW5nKSA9PiB2b2lkO1xuICBvblNldEVkaXRvck1vZGU6IChtb2RlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eTogKCkgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM6IHtbaWQ6IHN0cmluZ106IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+Pn07XG59O1xuXG5mdW5jdGlvbiBNYXBEcmF3UGFuZWxGYWN0b3J5KFxuICBNYXBDb250cm9sVG9vbHRpcDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5PixcbiAgTWFwQ29udHJvbFRvb2xiYXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sYmFyRmFjdG9yeT5cbikge1xuICBjb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gICAgdmlzaWJsZTogRXllU2VlbixcbiAgICBoaWRkZW46IEV5ZVVuc2VlbixcbiAgICBwb2x5Z29uOiBEcmF3UG9seWdvbixcbiAgICBjdXJzb3I6IEN1cnNvckNsaWNrLFxuICAgIGlubmVyUG9seWdvbjogUG9seWdvbixcbiAgICByZWN0YW5nbGU6IFJlY3RhbmdsZVxuICB9O1xuXG4gIGNvbnN0IE1hcERyYXdQYW5lbDogUmVhY3QuRkM8TWFwRHJhd1BhbmVsUHJvcHM+ID0gUmVhY3QubWVtbyhcbiAgICAoe1xuICAgICAgZWRpdG9yLFxuICAgICAgbWFwQ29udHJvbHMsXG4gICAgICBvblRvZ2dsZU1hcENvbnRyb2wsXG4gICAgICBvblNldEVkaXRvck1vZGUsXG4gICAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29uc1xuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gbWFwQ29udHJvbHM/Lm1hcERyYXc/LmFjdGl2ZTtcbiAgICAgIGNvbnN0IG9uVG9nZ2xlTWVudVBhbmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICAgICgpID0+IG9uVG9nZ2xlTWFwQ29udHJvbCgnbWFwRHJhdycpLFxuICAgICAgICBbb25Ub2dnbGVNYXBDb250cm9sXVxuICAgICAgKTtcbiAgICAgIGlmICghbWFwQ29udHJvbHM/Lm1hcERyYXc/LnNob3cpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1kcmF3LWNvbnRyb2xzXCIgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgICAgIDxNYXBDb250cm9sVG9vbGJhciBzaG93PXtpc0FjdGl2ZX0+XG4gICAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImVkaXQtZmVhdHVyZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZXRFZGl0b3JNb2RlKEVESVRPUl9NT0RFUy5FRElUKX1cbiAgICAgICAgICAgICAgICBsYWJlbD1cInRvb2xiYXIuc2VsZWN0XCJcbiAgICAgICAgICAgICAgICBpY29uPXthY3Rpb25JY29ucy5jdXJzb3J9XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0b3IubW9kZSA9PT0gRURJVE9SX01PREVTLkVESVR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRyYXctZmVhdHVyZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZXRFZGl0b3JNb2RlKEVESVRPUl9NT0RFUy5EUkFXX1BPTFlHT04pfVxuICAgICAgICAgICAgICAgIGxhYmVsPVwidG9vbGJhci5wb2x5Z29uXCJcbiAgICAgICAgICAgICAgICBpY29uPXthY3Rpb25JY29ucy5pbm5lclBvbHlnb259XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0b3IubW9kZSA9PT0gRURJVE9SX01PREVTLkRSQVdfUE9MWUdPTn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPFRvb2xiYXJJdGVtXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZHJhdy1yZWN0YW5nbGVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2V0RWRpdG9yTW9kZShFRElUT1JfTU9ERVMuRFJBV19SRUNUQU5HTEUpfVxuICAgICAgICAgICAgICAgIGxhYmVsPVwidG9vbGJhci5yZWN0YW5nbGVcIlxuICAgICAgICAgICAgICAgIGljb249e2FjdGlvbkljb25zLnJlY3RhbmdsZX1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvci5tb2RlID09PSBFRElUT1JfTU9ERVMuRFJBV19SRUNUQU5HTEV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L01hcENvbnRyb2xUb29sYmFyPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxNYXBDb250cm9sVG9vbHRpcCBpZD1cIm1hcC1kcmF3XCIgbWVzc2FnZT1cInRvb2x0aXAuRHJhd09uTWFwXCI+XG4gICAgICAgICAgICA8TWFwQ29udHJvbEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ21hcC1jb250cm9sLWJ1dHRvbicsICdtYXAtZHJhdycsIHtpc0FjdGl2ZX0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgb25Ub2dnbGVNZW51UGFuZWwoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYWN0aXZlPXtpc0FjdGl2ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGFjdGlvbkljb25zLnBvbHlnb24gaGVpZ2h0PVwiMjJweFwiIC8+XG4gICAgICAgICAgICA8L01hcENvbnRyb2xCdXR0b24+XG4gICAgICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBNYXBEcmF3UGFuZWwuZGlzcGxheU5hbWUgPSAnTWFwRHJhd1BhbmVsJztcbiAgcmV0dXJuIE1hcERyYXdQYW5lbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwRHJhd1BhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBSixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU8sa0JBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFBNkQsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNB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