UNPKG

tmp-react-map-gl-draw

Version:

A lite version editing layer with react

178 lines (133 loc) 16.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _v = _interopRequireDefault(require("uuid/v1")); var _constants = require("../constants"); var _baseMode = _interopRequireDefault(require("./base-mode")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var DrawRectangleMode = /*#__PURE__*/ function (_BaseMode) { _inherits(DrawRectangleMode, _BaseMode); function DrawRectangleMode() { var _getPrototypeOf2; var _this; _classCallCheck(this, DrawRectangleMode); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DrawRectangleMode)).call.apply(_getPrototypeOf2, [this].concat(args))); _defineProperty(_assertThisInitialized(_this), "handleClick", function (event, props) { var data = props.data; var tentativeFeature = _this.getTentativeFeature(); // close rectangle and commit if (tentativeFeature) { // clear guides _this.setTentativeFeature(null); var coordinates = (0, _utils.updateRectanglePosition)(tentativeFeature, 2, event.mapCoords); if (!coordinates) { return; } // close rectangle coordinates = [].concat(_toConsumableArray(coordinates), [coordinates[0]]); tentativeFeature = { type: 'Feature', properties: { // TODO deprecate id id: tentativeFeature.properties.id, renderType: _constants.RENDER_TYPE.RECTANGLE }, geometry: { type: _constants.GEOJSON_TYPE.POLYGON, coordinates: [coordinates] } }; var updatedData = data.addFeature(tentativeFeature).getObject(); // commit rectangle props.onEdit({ editType: _constants.EDIT_TYPE.ADD_FEATURE, updatedData: updatedData, editContext: null }); } else { // create a tentativeFeature tentativeFeature = { type: 'Feature', properties: { // TODO deprecate id id: (0, _v["default"])(), renderType: _constants.RENDER_TYPE.RECTANGLE, guideType: _constants.GUIDE_TYPE.TENTATIVE }, geometry: { type: 'LineString', coordinates: [event.mapCoords, event.mapCoords, event.mapCoords, event.mapCoords] } }; _this.setTentativeFeature(tentativeFeature); } }); _defineProperty(_assertThisInitialized(_this), "getEditHandlesFromFeature", function (feature, featureIndex) { var coordinates = (0, _utils.getFeatureCoordinates)(feature); return coordinates && coordinates.map(function (coord, i) { return { type: 'Feature', properties: { // TODO remove renderType renderType: _constants.RENDER_TYPE.RECTANGLE, guideType: _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE, featureIndex: featureIndex, positionIndexes: [i] }, geometry: { type: _constants.GEOJSON_TYPE.POINT, coordinates: [coord] } }; }); }); _defineProperty(_assertThisInitialized(_this), "getGuides", function (props) { var tentativeFeature = _this.getTentativeFeature(); var coordinates = (0, _utils.getFeatureCoordinates)(tentativeFeature); if (!coordinates) { return null; } var event = props.lastPointerMoveEvent; // update tentative feature var newCoordinates = (0, _utils.updateRectanglePosition)(tentativeFeature, 2, event.mapCoords); tentativeFeature = { type: 'Feature', properties: { // TODO deprecate id and renderType id: (0, _v["default"])(), guideType: _constants.GUIDE_TYPE.TENTATIVE, renderType: _constants.RENDER_TYPE.RECTANGLE }, geometry: { type: _constants.GEOJSON_TYPE.LINE_STRING, coordinates: newCoordinates } }; var editHandles = _this.getEditHandlesFromFeature(tentativeFeature); return { tentativeFeature: tentativeFeature, editHandles: editHandles }; }); return _this; } return DrawRectangleMode; }(_baseMode["default"]); exports["default"] = DrawRectangleMode; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2RyYXctcmVjdGFuZ2xlLW1vZGUuanMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZU1vZGUiLCJldmVudCIsInByb3BzIiwiZGF0YSIsInRlbnRhdGl2ZUZlYXR1cmUiLCJnZXRUZW50YXRpdmVGZWF0dXJlIiwic2V0VGVudGF0aXZlRmVhdHVyZSIsImNvb3JkaW5hdGVzIiwibWFwQ29vcmRzIiwidHlwZSIsInByb3BlcnRpZXMiLCJpZCIsInJlbmRlclR5cGUiLCJSRU5ERVJfVFlQRSIsIlJFQ1RBTkdMRSIsImdlb21ldHJ5IiwiR0VPSlNPTl9UWVBFIiwiUE9MWUdPTiIsInVwZGF0ZWREYXRhIiwiYWRkRmVhdHVyZSIsImdldE9iamVjdCIsIm9uRWRpdCIsImVkaXRUeXBlIiwiRURJVF9UWVBFIiwiQUREX0ZFQVRVUkUiLCJlZGl0Q29udGV4dCIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJURU5UQVRJVkUiLCJmZWF0dXJlIiwiZmVhdHVyZUluZGV4IiwibWFwIiwiY29vcmQiLCJpIiwiQ1VSU09SX0VESVRfSEFORExFIiwicG9zaXRpb25JbmRleGVzIiwiUE9JTlQiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsIm5ld0Nvb3JkaW5hdGVzIiwiTElORV9TVFJJTkciLCJlZGl0SGFuZGxlcyIsImdldEVkaXRIYW5kbGVzRnJvbUZlYXR1cmUiLCJCYXNlTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUdBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUNMLFVBQUNDLEtBQUQsRUFBb0JDLEtBQXBCLEVBQTREO0FBQUEsVUFDaEVDLElBRGdFLEdBQ3ZERCxLQUR1RCxDQUNoRUMsSUFEZ0U7O0FBR3hFLFVBQUlDLGdCQUFnQixHQUFHLE1BQUtDLG1CQUFMLEVBQXZCLENBSHdFLENBS3hFOzs7QUFDQSxVQUFJRCxnQkFBSixFQUFz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aEIsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsVUFBTU4sS0FBSyxHQUFHQyxLQUFLLENBQUNtQyxvQkFBcEIsQ0FSbUQsQ0FTbkQ7O0FBQ0EsVUFBTUMsY0FBYyxHQUFHLG9DQUF3QmxDLGdCQUF4QixFQUEwQyxDQUExQyxFQUE2Q0gsS0FBSyxDQUFDTyxTQUFuRCxDQUF2QjtBQUVBSixNQUFBQSxnQkFBZ0IsR0FBRztBQUNqQkssUUFBQUEsSUFBSSxFQUFFLFNBRFc7QUFFakJDLFFBQUFBLFVBQVUsRUFBRTtBQUNWO0FBQ0FDLFVBQUFBLEVBQUUsRUFBRSxvQkFGTTtBQUdWZSxVQUFBQSxTQUFTLEVBQUVDLHNCQUFXQyxTQUhaO0FBSVZoQixVQUFBQSxVQUFVLEVBQUVDLHVCQUFZQztBQUpkLFNBRks7QUFRakJDLFFBQUFBLFFBQVEsRUFBRTtBQUNSTixVQUFBQSxJQUFJLEVBQUVPLHdCQUFhdUIsV0FEWDtBQUVSaEMsVUFBQUEsV0FBVyxFQUFFK0I7QUFGTDtBQVJPLE9BQW5COztBQWNBLFVBQU1FLFdBQVcsR0FBRyxNQUFLQyx5QkFBTCxDQUErQnJDLGdCQUEvQixDQUFwQjs7QUFFQSxhQUFPO0FBQ0xBLFFBQUFBLGdCQUFnQixFQUFoQkEsZ0JBREs7QUFFTG9DLFFBQUFBLFdBQVcsRUFBWEE7QUFGSyxPQUFQO0FBSUQsSzs7Ozs7O0VBbkg0Q0Usb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUsIENsaWNrRXZlbnQsIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmltcG9ydCB1dWlkIGZyb20gJ3V1aWQvdjEnO1xuaW1wb3J0IHR5cGUgeyBNb2RlUHJvcHMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IEVESVRfVFlQRSwgR0VPSlNPTl9UWVBFLCBHVUlERV9UWVBFLCBSRU5ERVJfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQmFzZU1vZGUgZnJvbSAnLi9iYXNlLW1vZGUnO1xuaW1wb3J0IHsgZ2V0RmVhdHVyZUNvb3JkaW5hdGVzLCB1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcmF3UmVjdGFuZ2xlTW9kZSBleHRlbmRzIEJhc2VNb2RlIHtcbiAgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBwcm9wcztcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG5cbiAgICAvLyBjbG9zZSByZWN0YW5nbGUgYW5kIGNvbW1pdFxuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICAvLyBjbGVhciBndWlkZXNcbiAgICAgIHRoaXMuc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcblxuICAgICAgbGV0IGNvb3JkaW5hdGVzID0gdXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24odGVudGF0aXZlRmVhdHVyZSwgMiwgZXZlbnQubWFwQ29vcmRzKTtcbiAgICAgIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBjbG9zZSByZWN0YW5nbGVcbiAgICAgIGNvb3JkaW5hdGVzID0gWy4uLmNvb3JkaW5hdGVzLCBjb29yZGluYXRlc1swXV07XG5cbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIGlkXG4gICAgICAgICAgaWQ6IHRlbnRhdGl2ZUZlYXR1cmUucHJvcGVydGllcy5pZCxcbiAgICAgICAgICByZW5kZXJUeXBlOiBSRU5ERVJfVFlQRS5SRUNUQU5HTEVcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiBHRU9KU09OX1RZUEUuUE9MWUdPTixcbiAgICAgICAgICBjb29yZGluYXRlczogW2Nvb3JkaW5hdGVzXVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IGRhdGEuYWRkRmVhdHVyZSh0ZW50YXRpdmVGZWF0dXJlKS5nZXRPYmplY3QoKTtcblxuICAgICAgLy8gY29tbWl0IHJlY3RhbmdsZVxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgZWRpdFR5cGU6IEVESVRfVFlQRS5BRERfRkVBVFVSRSxcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIGVkaXRDb250ZXh0OiBudWxsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY3JlYXRlIGEgdGVudGF0aXZlRmVhdHVyZVxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgLy8gVE9ETyBkZXByZWNhdGUgaWRcbiAgICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICAgIHJlbmRlclR5cGU6IFJFTkRFUl9UWVBFLlJFQ1RBTkdMRSxcbiAgICAgICAgICBndWlkZVR5cGU6IEdVSURFX1RZUEUuVEVOVEFUSVZFXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbZXZlbnQubWFwQ29vcmRzLCBldmVudC5tYXBDb29yZHMsIGV2ZW50Lm1hcENvb3JkcywgZXZlbnQubWFwQ29vcmRzXVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldFRlbnRhdGl2ZUZlYXR1cmUodGVudGF0aXZlRmVhdHVyZSk7XG4gICAgfVxuICB9O1xuXG4gIGdldEVkaXRIYW5kbGVzRnJvbUZlYXR1cmUgPSAoZmVhdHVyZTogRmVhdHVyZSwgZmVhdHVyZUluZGV4OiA/bnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgcmV0dXJuIChcbiAgICAgIGNvb3JkaW5hdGVzICYmXG4gICAgICBjb29yZGluYXRlcy5tYXAoKGNvb3JkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC8vIFRPRE8gcmVtb3ZlIHJlbmRlclR5cGVcbiAgICAgICAgICAgIHJlbmRlclR5cGU6IFJFTkRFUl9UWVBFLlJFQ1RBTkdMRSxcbiAgICAgICAgICAgIGd1aWRlVHlwZTogR1VJREVfVFlQRS5DVVJTT1JfRURJVF9IQU5ETEUsXG4gICAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFtpXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6IEdFT0pTT05fVFlQRS5QT0lOVCxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY29vcmRdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIGdldEd1aWRlcyA9IChwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikgPT4ge1xuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXModGVudGF0aXZlRmVhdHVyZSk7XG5cbiAgICBpZiAoIWNvb3JkaW5hdGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuICAgIC8vIHVwZGF0ZSB0ZW50YXRpdmUgZmVhdHVyZVxuICAgIGNvbnN0IG5ld0Nvb3JkaW5hdGVzID0gdXBkYXRlUmVjdGFuZ2xlUG9zaXRpb24odGVudGF0aXZlRmVhdHVyZSwgMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIGlkIGFuZCByZW5kZXJUeXBlXG4gICAgICAgIGlkOiB1dWlkKCksXG4gICAgICAgIGd1aWRlVHlwZTogR1VJREVfVFlQRS5URU5UQVRJVkUsXG4gICAgICAgIHJlbmRlclR5cGU6IFJFTkRFUl9UWVBFLlJFQ1RBTkdMRVxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6IEdFT0pTT05fVFlQRS5MSU5FX1NUUklORyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IG5ld0Nvb3JkaW5hdGVzXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gdGhpcy5nZXRFZGl0SGFuZGxlc0Zyb21GZWF0dXJlKHRlbnRhdGl2ZUZlYXR1cmUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUsXG4gICAgICBlZGl0SGFuZGxlc1xuICAgIH07XG4gIH07XG59XG4iXX0=