diff --git a/.gitignore b/.gitignore index 9a40a46f8..cdd7ef7df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -**/dist/* -**/dist-esm/* -**/dist-es6/* -**/dist-types/* +#**/dist/* +#**/dist-esm/* +#**/dist-es6/* +#**/dist-types/* node_modules/ coverage/ diff --git a/modules/edit-modes/dist-es6/geojson-types.js b/modules/edit-modes/dist-es6/geojson-types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist-es6/geojson-types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/index.js b/modules/edit-modes/dist-es6/index.js new file mode 100644 index 000000000..d00bac6ab --- /dev/null +++ b/modules/edit-modes/dist-es6/index.js @@ -0,0 +1,275 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "GeoJsonEditMode", { + enumerable: true, + get: function get() { + return _geojsonEditMode.GeoJsonEditMode; + } +}); +Object.defineProperty(exports, "ModifyMode", { + enumerable: true, + get: function get() { + return _modifyMode.ModifyMode; + } +}); +Object.defineProperty(exports, "ResizeCircleMode", { + enumerable: true, + get: function get() { + return _resizeCircleMode.ResizeCircleMode; + } +}); +Object.defineProperty(exports, "TranslateMode", { + enumerable: true, + get: function get() { + return _translateMode.TranslateMode; + } +}); +Object.defineProperty(exports, "ScaleMode", { + enumerable: true, + get: function get() { + return _scaleMode.ScaleMode; + } +}); +Object.defineProperty(exports, "RotateMode", { + enumerable: true, + get: function get() { + return _rotateMode.RotateMode; + } +}); +Object.defineProperty(exports, "DuplicateMode", { + enumerable: true, + get: function get() { + return _duplicateMode.DuplicateMode; + } +}); +Object.defineProperty(exports, "ExtendLineStringMode", { + enumerable: true, + get: function get() { + return _extendLineStringMode.ExtendLineStringMode; + } +}); +Object.defineProperty(exports, "SplitPolygonMode", { + enumerable: true, + get: function get() { + return _splitPolygonMode.SplitPolygonMode; + } +}); +Object.defineProperty(exports, "ExtrudeMode", { + enumerable: true, + get: function get() { + return _extrudeMode.ExtrudeMode; + } +}); +Object.defineProperty(exports, "ElevationMode", { + enumerable: true, + get: function get() { + return _elevationMode.ElevationMode; + } +}); +Object.defineProperty(exports, "TransformMode", { + enumerable: true, + get: function get() { + return _transformMode.TransformMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _drawPointMode.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _drawLineStringMode.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _drawPolygonMode.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _drawRectangleMode.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawSquareFromCenterMode", { + enumerable: true, + get: function get() { + return _drawSquareFromCenterMode.DrawSquareFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _drawCircleByDiameterMode.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _drawCircleFromCenterMode.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawEllipseByBoundingBoxMode", { + enumerable: true, + get: function get() { + return _drawEllipseByBoundingBoxMode.DrawEllipseByBoundingBoxMode; + } +}); +Object.defineProperty(exports, "DrawEllipseUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _drawEllipseUsingThreePointsMode.DrawEllipseUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "DrawRectangleUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _drawRectangleUsingThreePointsMode.DrawRectangleUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "Draw90DegreePolygonMode", { + enumerable: true, + get: function get() { + return _draw90degreePolygonMode.Draw90DegreePolygonMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _drawPolygonByDraggingMode.DrawPolygonByDraggingMode; + } +}); +Object.defineProperty(exports, "ImmutableFeatureCollection", { + enumerable: true, + get: function get() { + return _immutableFeatureCollection.ImmutableFeatureCollection; + } +}); +Object.defineProperty(exports, "ViewMode", { + enumerable: true, + get: function get() { + return _viewMode.ViewMode; + } +}); +Object.defineProperty(exports, "MeasureDistanceMode", { + enumerable: true, + get: function get() { + return _measureDistanceMode.MeasureDistanceMode; + } +}); +Object.defineProperty(exports, "MeasureAreaMode", { + enumerable: true, + get: function get() { + return _measureAreaMode.MeasureAreaMode; + } +}); +Object.defineProperty(exports, "MeasureAngleMode", { + enumerable: true, + get: function get() { + return _measureAngleMode.MeasureAngleMode; + } +}); +Object.defineProperty(exports, "CompositeMode", { + enumerable: true, + get: function get() { + return _compositeMode.CompositeMode; + } +}); +Object.defineProperty(exports, "SnappableMode", { + enumerable: true, + get: function get() { + return _snappableMode.SnappableMode; + } +}); +Object.defineProperty(exports, "_memoize", { + enumerable: true, + get: function get() { + return _memoize["default"]; + } +}); +exports.utils = void 0; + +var _geojsonEditMode = require("./lib/geojson-edit-mode"); + +var _modifyMode = require("./lib/modify-mode"); + +var _resizeCircleMode = require("./lib/resize-circle-mode"); + +var _translateMode = require("./lib/translate-mode"); + +var _scaleMode = require("./lib/scale-mode"); + +var _rotateMode = require("./lib/rotate-mode"); + +var _duplicateMode = require("./lib/duplicate-mode"); + +var _extendLineStringMode = require("./lib/extend-line-string-mode"); + +var _splitPolygonMode = require("./lib/split-polygon-mode"); + +var _extrudeMode = require("./lib/extrude-mode"); + +var _elevationMode = require("./lib/elevation-mode"); + +var _transformMode = require("./lib/transform-mode"); + +var _drawPointMode = require("./lib/draw-point-mode"); + +var _drawLineStringMode = require("./lib/draw-line-string-mode"); + +var _drawPolygonMode = require("./lib/draw-polygon-mode"); + +var _drawRectangleMode = require("./lib/draw-rectangle-mode"); + +var _drawSquareFromCenterMode = require("./lib/draw-square-from-center-mode"); + +var _drawCircleByDiameterMode = require("./lib/draw-circle-by-diameter-mode"); + +var _drawCircleFromCenterMode = require("./lib/draw-circle-from-center-mode"); + +var _drawEllipseByBoundingBoxMode = require("./lib/draw-ellipse-by-bounding-box-mode"); + +var _drawEllipseUsingThreePointsMode = require("./lib/draw-ellipse-using-three-points-mode"); + +var _drawRectangleUsingThreePointsMode = require("./lib/draw-rectangle-using-three-points-mode"); + +var _draw90degreePolygonMode = require("./lib/draw-90degree-polygon-mode"); + +var _drawPolygonByDraggingMode = require("./lib/draw-polygon-by-dragging-mode"); + +var _immutableFeatureCollection = require("./lib/immutable-feature-collection"); + +var _viewMode = require("./lib/view-mode"); + +var _measureDistanceMode = require("./lib/measure-distance-mode"); + +var _measureAreaMode = require("./lib/measure-area-mode"); + +var _measureAngleMode = require("./lib/measure-angle-mode"); + +var _compositeMode = require("./lib/composite-mode"); + +var _snappableMode = require("./lib/snappable-mode"); + +var _memoize = _interopRequireDefault(require("./memoize")); + +var utils = _interopRequireWildcard(require("./utils")); + +exports.utils = utils; + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUEyQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnLi9saWIvZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlVHlwZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IgfSBmcm9tICcuL2xpYi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcblxuLy8gQWx0ZXIgbW9kZXNcbmV4cG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL2xpYi9tb2RpZnktbW9kZSc7XG5leHBvcnQgeyBSZXNpemVDaXJjbGVNb2RlIH0gZnJvbSAnLi9saWIvcmVzaXplLWNpcmNsZS1tb2RlJztcbmV4cG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL2xpYi90cmFuc2xhdGUtbW9kZSc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL2xpYi9zY2FsZS1tb2RlJztcbmV4cG9ydCB7IFJvdGF0ZU1vZGUgfSBmcm9tICcuL2xpYi9yb3RhdGUtbW9kZSc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnLi9saWIvZHVwbGljYXRlLW1vZGUnO1xuZXhwb3J0IHsgRXh0ZW5kTGluZVN0cmluZ01vZGUgfSBmcm9tICcuL2xpYi9leHRlbmQtbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBTcGxpdFBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvc3BsaXQtcG9seWdvbi1tb2RlJztcbmV4cG9ydCB7IEV4dHJ1ZGVNb2RlIH0gZnJvbSAnLi9saWIvZXh0cnVkZS1tb2RlJztcbmV4cG9ydCB7IEVsZXZhdGlvbk1vZGUgfSBmcm9tICcuL2xpYi9lbGV2YXRpb24tbW9kZSc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnLi9saWIvdHJhbnNmb3JtLW1vZGUnO1xuXG4vLyBEcmF3IG1vZGVzXG5leHBvcnQgeyBEcmF3UG9pbnRNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1wb2ludC1tb2RlJztcbmV4cG9ydCB7IERyYXdMaW5lU3RyaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBEcmF3UG9seWdvbk1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXBvbHlnb24tbW9kZSc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZSc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LWNpcmNsZS1ieS1kaWFtZXRlci1tb2RlJztcbmV4cG9ydCB7IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSB9IGZyb20gJy4vbGliL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtbW9kZSc7XG5leHBvcnQgeyBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcG9seWdvbi1ieS1kcmFnZ2luZy1tb2RlJztcbmV4cG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJy4vbGliL3ZpZXctbW9kZSc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnLi9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJy4vbGliL21lYXN1cmUtYXJlYS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBbmdsZU1vZGUgfSBmcm9tICcuL2xpYi9tZWFzdXJlLWFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgQ29tcG9zaXRlTW9kZSB9IGZyb20gJy4vbGliL2NvbXBvc2l0ZS1tb2RlJztcbmV4cG9ydCB7IFNuYXBwYWJsZU1vZGUgfSBmcm9tICcuL2xpYi9zbmFwcGFibGUtbW9kZSc7XG5cbi8vIEV4cGVyaW1lbnRhbFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBfbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZSc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgU2NyZWVuQ29vcmRpbmF0ZXMsXG4gIEVkaXRBY3Rpb24sXG4gIFBpY2ssXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVmlld3BvcnQsXG4gIFRvb2x0aXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFBvc2l0aW9uLFxuICBQb2ludENvb3JkaW5hdGVzLFxuICBMaW5lU3RyaW5nQ29vcmRpbmF0ZXMsXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbiAgTXVsdGlQb2ludENvb3JkaW5hdGVzLFxuICBNdWx0aUxpbmVTdHJpbmdDb29yZGluYXRlcyxcbiAgTXVsdGlQb2x5Z29uQ29vcmRpbmF0ZXMsXG4gIEFueUNvb3JkaW5hdGVzLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgUG9seWdvbixcbiAgTXVsdGlQb2ludCxcbiAgTXVsdGlMaW5lU3RyaW5nLFxuICBNdWx0aVBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uYWwsXG4gIEJvdW5kaW5nQm94QXJyYXksXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEFueUdlb0pzb24sXG59IGZyb20gJy4vZ2VvanNvbi10eXBlcyc7XG5cbi8vIFV0aWxzXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IHV0aWxzIH07XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/composite-mode.js b/modules/edit-modes/dist-es6/lib/composite-mode.js new file mode 100644 index 000000000..6bf77b99e --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/composite-mode.js @@ -0,0 +1,150 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompositeMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 CompositeMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(CompositeMode, _GeoJsonEditMode); + + var _super = _createSuper(CompositeMode); + + function CompositeMode(modes) { + var _this; + + _classCallCheck(this, CompositeMode); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_modes", void 0); + + _this._modes = modes; + return _this; + } + + _createClass(CompositeMode, [{ + key: "_coalesce", + value: function _coalesce(callback) { + var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var result; + + for (var i = 0; i < this._modes.length; i++) { + result = callback(this._modes[i]); + + if (resultEval ? resultEval(result) : result) { + break; + } + } + + return result; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + this._coalesce(function (handler) { + return handler.handleClick(event, props); + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + return this._coalesce(function (handler) { + return handler.handlePointerMove(event, props); + }); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleStartDragging(event, props); + }); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleStopDragging(event, props); + }); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleDragging(event, props); + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + // TODO: Combine the guides *BUT* make sure if none of the results have + // changed to return the same object so that "guides !== this.state.guides" + // in editable-geojson-layer works. + var allGuides = []; + + var _iterator = _createForOfIteratorHelper(this._modes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var mode = _step.value; + allGuides.push.apply(allGuides, _toConsumableArray(mode.getGuides(props).features)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + type: 'FeatureCollection', + features: allGuides + }; + } + }]); + + return CompositeMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.CompositeMode = CompositeMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9zaXRlLW1vZGUudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZSIsIm1vZGVzIiwiX21vZGVzIiwiY2FsbGJhY2siLCJyZXN1bHRFdmFsIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsImV2ZW50IiwicHJvcHMiLCJfY29hbGVzY2UiLCJoYW5kbGVyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVEcmFnZ2luZyIsImFsbEd1aWRlcyIsIm1vZGUiLCJwdXNoIiwiZ2V0R3VpZGVzIiwiZmVhdHVyZXMiLCJ0eXBlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFHWCx5QkFBWUMsS0FBWixFQUEyQztBQUFBOztBQUFBOztBQUN6Qzs7QUFEeUM7O0FBRXpDLFVBQUtDLE1BQUwsR0FBY0QsS0FBZDtBQUZ5QztBQUcxQzs7Ozs4QkFHQ0UsUSxFQUVHO0FBQUEsVUFESEMsVUFDRyx1RUFEbUQsSUFDbkQ7QUFDSCxVQUFJQyxNQUFKOztBQUVBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLSixNQUFMLENBQVlLLE1BQWhDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDRCxRQUFBQSxNQUFNLEdBQUdGLFFBQVEsQ0FBQyxLQUFLRCxNQUFMLENBQVlJLENBQVosQ0FBRCxDQUFqQjs7QUFDQSxZQUFJRixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0MsTUFBRCxDQUFiLEdBQXdCQSxNQUF0QyxFQUE4QztBQUM1QztBQUNEO0FBQ0Y7O0FBRUQsYUFBT0EsTUFBUDtBQUNEOzs7Z0NBRVdHLEssRUFBbUJDLEssRUFBMkM7QUFDeEUsV0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0JKLEtBQXBCLEVBQTJCQyxLQUEzQixDQUFiO0FBQUEsT0FBZjtBQUNEOzs7c0NBRWlCRCxLLEVBQXlCQyxLLEVBQTJDO0FBQ3BGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNFLGlCQUFSLENBQTBCTCxLQUExQixFQUFpQ0MsS0FBakMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNHLG1CQUFSLENBQTRCTixLQUE1QixFQUFtQ0MsS0FBbkMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7dUNBRWtCRCxLLEVBQTBCQyxLLEVBQTJDO0FBQ3RGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNJLGtCQUFSLENBQTJCUCxLQUEzQixFQUFrQ0MsS0FBbEMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7bUNBRWNELEssRUFBc0JDLEssRUFBMkM7QUFDOUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0ssY0FBUixDQUF1QlIsS0FBdkIsRUFBOEJDLEtBQTlCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzhCQUVTQSxLLEVBQTZEO0FBQ3JFO0FBQ0E7QUFDQTtBQUVBLFVBQU1RLFNBQVMsR0FBRyxFQUFsQjs7QUFMcUUsaURBTWxELEtBQUtmLE1BTjZDO0FBQUE7O0FBQUE7QUFNckUsNERBQWdDO0FBQUEsY0FBckJnQixJQUFxQjtBQUM5QkQsVUFBQUEsU0FBUyxDQUFDRSxJQUFWLE9BQUFGLFNBQVMscUJBQVNDLElBQUksQ0FBQ0UsU0FBTCxDQUFlWCxLQUFmLEVBQXNCWSxRQUEvQixFQUFUO0FBQ0Q7QUFSb0U7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVckUsYUFBTztBQUNMQyxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTEQsUUFBQUEsUUFBUSxFQUFFSjtBQUZMLE9BQVA7QUFJRDs7OztFQTFEZ0NNLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX21vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKG1vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlcyA9IG1vZGVzO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogR2VvSnNvbkVkaXRNb2RlKSA9PiBULFxuICAgIHJlc3VsdEV2YWw6IChhcmcwOiBUKSA9PiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGxcbiAgKTogVCB7XG4gICAgbGV0IHJlc3VsdDogVDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbW9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMuX21vZGVzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiBDb21iaW5lIHRoZSBndWlkZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZ3VpZGVzICE9PSB0aGlzLnN0YXRlLmd1aWRlc1wiXG4gICAgLy8gaW4gZWRpdGFibGUtZ2VvanNvbi1sYXllciB3b3Jrcy5cblxuICAgIGNvbnN0IGFsbEd1aWRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiB0aGlzLl9tb2Rlcykge1xuICAgICAgYWxsR3VpZGVzLnB1c2goLi4ubW9kZS5nZXRHdWlkZXMocHJvcHMpLmZlYXR1cmVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBhbGxHdWlkZXMsXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-90degree-polygon-mode.js b/modules/edit-modes/dist-es6/lib/draw-90degree-polygon-mode.js new file mode 100644 index 000000000..d067ac0cd --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-90degree-polygon-mode.js @@ -0,0 +1,284 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Draw90DegreePolygonMode = void 0; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var Draw90DegreePolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(Draw90DegreePolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(Draw90DegreePolygonMode); + + function Draw90DegreePolygonMode() { + _classCallCheck(this, Draw90DegreePolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(Draw90DegreePolygonMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var clickSequence = this.getClickSequence(); + var mapCoords = props.lastPointerMoveEvent.mapCoords; + var p3; + + if (clickSequence.length === 1) { + p3 = mapCoords; + } else { + var p1 = clickSequence[clickSequence.length - 2]; + var p2 = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, mapCoords); + + var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1); + + p3 = _generatePointsParall2[0]; + } + + var tentativeFeature; + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [p3]) + } + }; + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])] + } + }; + } + + return tentativeFeature; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0 || !props.lastPointerMoveEvent) { + return guides; + } + + var tentativeFeature = this.createTentativeFeature(props); + guides.features.push(tentativeFeature); + guides.features = guides.features.concat((0, _utils.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + guides.features = guides.features.slice(0, -1); + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(Draw90DegreePolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var tentativeFeature = this.getTentativeGuide(props); + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); + + if (!tentativeFeature) { + // nothing else to do + return; + } + + if (clickSequence.length === 3 && tentativeFeature.geometry.type === 'LineString') { + var lineString = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon + + clickSequence[clickSequence.length - 1] = lineString.coordinates[lineString.coordinates.length - 1]; + } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon + + clickSequence[clickSequence.length - 1] = polygon.coordinates[0][polygon.coordinates[0].length - 2]; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + + if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + var polygonToAdd = { + type: 'Polygon', + coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0])) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + mapCoords: event.mapCoords, + picks: [], + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + cancelPan: function cancelPan() {}, + sourceEvent: null + }; + this.handlePointerMove(fakePointerMoveEvent, props); + } + }, { + key: "finalizedCoordinates", + value: function finalizedCoordinates(coords) { + // Remove the hovered position + var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])]; + var pt = this.getIntermediatePoint(_toConsumableArray(coords)); + + if (!pt) { + // if intermediate point with 90 degree not available + // try remove the last clicked point and get the intermediate point. + var tc = _toConsumableArray(coords); + + tc.splice(-3, 1); + pt = this.getIntermediatePoint(_toConsumableArray(tc)); + + if (pt) { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])]; + } + } else { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])]; + } + + return coordinates; + } + }, { + key: "getIntermediatePoint", + value: function getIntermediatePoint(coordinates) { + var pt; + + if (coordinates.length > 4) { + var _ref = _toConsumableArray(coordinates), + p1 = _ref[0], + p2 = _ref[1]; + + var angle1 = (0, _bearing["default"])(p1, p2); + var p3 = coordinates[coordinates.length - 3]; + var p4 = coordinates[coordinates.length - 4]; + var angle2 = (0, _bearing["default"])(p3, p4); + var angles = { + first: [], + second: [] + }; // calculate 3 right angle points for first and last points in lineString + + [1, 2, 3].forEach(function (factor) { + var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise + + angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1); + var newAngle2 = angle2 + factor * 90; + angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2); + }); + var distance = (0, _distance["default"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString + // If there is intersection point for any 2 lines, will be the 90 degree point. + + [0, 1, 2].forEach(function (indexFirst) { + var line1 = (0, _helpers.lineString)([p1, (0, _destination["default"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]); + [0, 1, 2].forEach(function (indexSecond) { + var line2 = (0, _helpers.lineString)([p3, (0, _destination["default"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]); + var fc = (0, _lineIntersect["default"])(line1, line2); + + if (fc && fc.features.length) { + // found the intersect point + pt = fc.features[0].geometry.coordinates; + } + }); + }); + } + + return pt; + } + }]); + + return Draw90DegreePolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.Draw90DegreePolygonMode = Draw90DegreePolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJwcm9wcyIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwMyIsImxlbmd0aCIsInAxIiwicDIiLCJ0ZW50YXRpdmVGZWF0dXJlIiwidHlwZSIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ3VpZGVzIiwiZmVhdHVyZXMiLCJjcmVhdGVUZW50YXRpdmVGZWF0dXJlIiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsInBpY2tzIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJhZGRDbGlja1NlcXVlbmNlIiwibGluZVN0cmluZyIsInBvbHlnb24iLCJjbGlja2VkRWRpdEhhbmRsZSIsIkFycmF5IiwiaXNBcnJheSIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwib25FZGl0IiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImNhbmNlbFBhbiIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsIm5ld0FuZ2xlMiIsImRpc3RhbmNlIiwiaW5kZXhGaXJzdCIsImxpbmUxIiwiaW5kZXhTZWNvbmQiLCJsaW5lMiIsImZjIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFhQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHVCOzs7Ozs7Ozs7Ozs7OzJDQUNZQyxLLEVBQXVEO0FBQzVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUQ0RSxVQUdwRUMsU0FIb0UsR0FHdERILEtBQUssQ0FBQ0ksb0JBSGdELENBR3BFRCxTQUhvRTtBQUs1RSxVQUFJRSxFQUFKOztBQUNBLFVBQUlKLGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUE3QixFQUFnQztBQUM5QkQsUUFBQUEsRUFBRSxHQUFHRixTQUFMO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBTUksRUFBRSxHQUFHTixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQUF4QjtBQUNBLFlBQU1FLEVBQUUsR0FBR1AsYUFBYSxDQUFDQSxhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBeEIsQ0FBeEI7O0FBRkssb0NBR0UsK0NBQW1DQyxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNMLFNBQTNDLENBSEY7O0FBQUE7O0FBR0pFLFFBQUFBLEVBSEk7QUFJTjs7QUFFRCxVQUFJSSxnQkFBSjs7QUFFQSxVQUFJUixhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUI7QUFDQUcsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDakJDLFVBQUFBLElBQUksRUFBRSxTQURXO0FBRWpCQyxVQUFBQSxVQUFVLEVBQUU7QUFDVkMsWUFBQUEsU0FBUyxFQUFFO0FBREQsV0FGSztBQUtqQkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JILFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJJLFlB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QUFRLEdBQUcsMEJBQWEsb0JBQU10RCxFQUFOLENBQWIsRUFBd0Isb0JBQU1GLEVBQU4sQ0FBeEIsQ0FBakIsQ0FqQjBCLENBa0IxQjtBQUNBOztBQUNBLFNBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVVvRCxPQUFWLENBQWtCLFVBQUNLLFVBQUQsRUFBZ0I7QUFDaEMsY0FBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCeEQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0JzRCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDQyxLQUFQLENBQWFPLFVBQWIsQ0FBMUIsRUFBb0RqRCxRQUFwRCxDQUE2REMsV0FGbEMsQ0FBZixDQUFkO0FBSUEsV0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVTJDLE9BQVYsQ0FBa0IsVUFBQ08sV0FBRCxFQUFpQjtBQUNqQyxnQkFBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCNUQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0J3RCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDRSxNQUFQLENBQWNRLFdBQWQsQ0FBMUIsRUFBc0RuRCxRQUF0RCxDQUErREMsV0FGcEMsQ0FBZixDQUFkO0FBSUEsZ0JBQU1vRCxFQUFFLEdBQUcsK0JBQWNILEtBQWQsRUFBcUJFLEtBQXJCLENBQVg7O0FBQ0EsZ0JBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDbEQsUUFBSCxDQUFZVixNQUF0QixFQUE4QjtBQUM1QjtBQUNBeUMsY0FBQUEsRUFBRSxHQUFHbUIsRUFBRSxDQUFDbEQsUUFBSCxDQUFZLENBQVosRUFBZUgsUUFBZixDQUF3QkMsV0FBN0I7QUFDRDtBQUNGLFdBVkQ7QUFXRCxTQWhCRDtBQWlCRDs7QUFDRCxhQUFPaUMsRUFBUDtBQUNEOzs7O0VBdE0wQ29CLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBMaW5lU3RyaW5nLCBQb3NpdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgZXh0ZW5kcyBHZW9Kc29uRWRpdE1vZGUge1xuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgeyBtYXBDb29yZHMgfSA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgbGV0IHAzO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcDMgPSBtYXBDb29yZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgcDIgPSBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV07XG4gICAgICBbcDNdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhwMSwgcDIsIG1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPCAzKSB7XG4gICAgICAvLyBEcmF3IGEgTGluZVN0cmluZyBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCBwM10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDAgfHwgIXByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50KSB7XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5jcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuXG4gICAgZ3VpZGVzLmZlYXR1cmVzID0gZ3VpZGVzLmZlYXR1cmVzLmNvbmNhdChcbiAgICAgIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkodGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgLTEpXG4gICAgKTtcblxuICAgIC8vIFNsaWNlIG9mZiB0aGUgaGFuZGxlcyB0aGF0IGFyZSBhcmUgbmV4dCB0byB0aGUgcG9pbnRlclxuICAgIGd1aWRlcy5mZWF0dXJlcyA9IGd1aWRlcy5mZWF0dXJlcy5zbGljZSgwLCAtMSk7XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKCF0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICAvLyBub3RoaW5nIGVsc2UgdG8gZG9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDMgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICAvLyBUd2VhayB0aGUgY2xpY2tlZCBwb3NpdGlvbiB0byBiZSB0aGUgc25hcHBlZCA5MCBkZWdyZWUgcG9pbnQgYWxvbmcgdGhlIHBvbHlnb25cbiAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSA9XG4gICAgICAgIGxpbmVTdHJpbmcuY29vcmRpbmF0ZXNbbGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMyAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIC8vIFR3ZWFrIHRoZSBjbGlja2VkIHBvc2l0aW9uIHRvIGJlIHRoZSBzbmFwcGVkIDkwIGRlZ3JlZSBwb2ludCBhbG9uZyB0aGUgcG9seWdvblxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgcG9seWdvbi5jb29yZGluYXRlc1swXVtwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDJdO1xuXG4gICAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAgIChjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKHBvbHlnb25Ub0FkZCwgcHJvcHMpO1xuICAgICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50OiBQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIG1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICBjYW5jZWxQYW46ICgpID0+IHt9LFxuICAgICAgc291cmNlRXZlbnQ6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGZpbmFsaXplZENvb3JkaW5hdGVzKGNvb3JkczogUG9zaXRpb25bXSkge1xuICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgIGxldCBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgY29vcmRzWzBdXV07XG4gICAgbGV0IHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4uY29vcmRzXSk7XG4gICAgaWYgKCFwdCkge1xuICAgICAgLy8gaWYgaW50ZXJtZWRpYXRlIHBvaW50IHdpdGggOTAgZGVncmVlIG5vdCBhdmFpbGFibGVcbiAgICAgIC8vIHRyeSByZW1vdmUgdGhlIGxhc3QgY2xpY2tlZCBwb2ludCBhbmQgZ2V0IHRoZSBpbnRlcm1lZGlhdGUgcG9pbnQuXG4gICAgICBjb25zdCB0YyA9IFsuLi5jb29yZHNdO1xuICAgICAgdGMuc3BsaWNlKC0zLCAxKTtcbiAgICAgIHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4udGNdKTtcbiAgICAgIGlmIChwdCkge1xuICAgICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0zKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cblxuICBnZXRJbnRlcm1lZGlhdGVQb2ludChjb29yZGluYXRlczogUG9zaXRpb25bXSkge1xuICAgIGxldCBwdDtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID4gNCkge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBbLi4uY29vcmRpbmF0ZXNdO1xuICAgICAgY29uc3QgYW5nbGUxID0gYmVhcmluZyhwMSwgcDIpO1xuICAgICAgY29uc3QgcDMgPSBjb29yZGluYXRlc1tjb29yZGluYXRlcy5sZW5ndGggLSAzXTtcbiAgICAgIGNvbnN0IHA0ID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gNF07XG4gICAgICBjb25zdCBhbmdsZTIgPSBiZWFyaW5nKHAzLCBwNCk7XG5cbiAgICAgIGNvbnN0IGFuZ2xlcyA9IHsgZmlyc3Q6IFtdLCBzZWNvbmQ6IFtdIH07XG4gICAgICAvLyBjYWxjdWxhdGUgMyByaWdodCBhbmdsZSBwb2ludHMgZm9yIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBpbiBsaW5lU3RyaW5nXG4gICAgICBbMSwgMiwgM10uZm9yRWFjaCgoZmFjdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMSA9IGFuZ2xlMSArIGZhY3RvciAqIDkwO1xuICAgICAgICAvLyBjb252ZXJ0IGFuZ2xlcyB0byAwIHRvIC0xODAgZm9yIGFudGktY2xvY2sgYW5kIDAgdG8gMTgwIGZvciBjbG9jayB3aXNlXG4gICAgICAgIGFuZ2xlcy5maXJzdC5wdXNoKG5ld0FuZ2xlMSA+IDE4MCA/IG5ld0FuZ2xlMSAtIDM2MCA6IG5ld0FuZ2xlMSk7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMiA9IGFuZ2xlMiArIGZhY3RvciAqIDkwO1xuICAgICAgICBhbmdsZXMuc2Vjb25kLnB1c2gobmV3QW5nbGUyID4gMTgwID8gbmV3QW5nbGUyIC0gMzYwIDogbmV3QW5nbGUyKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb2ludChwMSksIHBvaW50KHAzKSk7XG4gICAgICAvLyBEcmF3IGltYWdpbmFyeSByaWdodCBhbmdsZSBsaW5lcyBmb3IgYm90aCBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgLy8gSWYgdGhlcmUgaXMgaW50ZXJzZWN0aW9uIHBvaW50IGZvciBhbnkgMiBsaW5lcywgd2lsbCBiZSB0aGUgOTAgZGVncmVlIHBvaW50LlxuICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4Rmlyc3QpID0+IHtcbiAgICAgICAgY29uc3QgbGluZTEgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgICBwMyxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uKHAzLCBkaXN0YW5jZSwgYW5nbGVzLnNlY29uZFtpbmRleFNlY29uZF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGNvbnN0IGZjID0gbGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xuICAgICAgICAgIGlmIChmYyAmJiBmYy5mZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBpbnRlcnNlY3QgcG9pbnRcbiAgICAgICAgICAgIHB0ID0gZmMuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHQ7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-circle-by-diameter-mode.js b/modules/edit-modes/dist-es6/lib/draw-circle-by-diameter-mode.js new file mode 100644 index 000000000..944111619 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-circle-by-diameter-mode.js @@ -0,0 +1,82 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleByDiameterMode = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawCircleByDiameterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawCircleByDiameterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawCircleByDiameterMode); + + function DrawCircleByDiameterMode() { + _classCallCheck(this, DrawCircleByDiameterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleByDiameterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // Default turf value for circle is 64 + var _ref = modeConfig || {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? 64 : _ref$steps; + + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var radius = Math.max((0, _distance["default"])(coord1, centerCoordinates), 0.001); + var geometry = (0, _circle["default"])(centerCoordinates, radius, options); + geometry.properties = geometry.properties || {}; + geometry.properties.shape = 'Circle'; + return geometry; + } + }]); + + return DrawCircleByDiameterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawCircleByDiameterMode = DrawCircleByDiameterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtYnktZGlhbWV0ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJjZW50ZXJDb29yZGluYXRlcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsd0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLE0sRUFBa0JDLE0sRUFBa0JDLFUsRUFBcUM7QUFDMUY7QUFEMEYsaUJBRW5FQSxVQUFVLElBQUksRUFGcUQ7QUFBQSw0QkFFbEZDLEtBRmtGO0FBQUEsVUFFbEZBLEtBRmtGLDJCQUUxRSxFQUYwRTs7QUFHMUYsVUFBTUMsT0FBTyxHQUFHO0FBQUVELFFBQUFBLEtBQUssRUFBTEE7QUFBRixPQUFoQjs7QUFFQSxVQUFJQSxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2JFLFFBQUFBLE9BQU8sQ0FBQ0MsSUFBUix5Q0FEYSxDQUN5Qzs7QUFDdERGLFFBQUFBLE9BQU8sQ0FBQ0QsS0FBUixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQU1JLGlCQUFpQixHQUFHLDhDQUF3QlAsTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTU8sTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU1YsTUFBVCxFQUFpQk8saUJBQWpCLENBQVQsRUFBOEMsS0FBOUMsQ0FBZjtBQUVBLFVBQU1JLFFBQVEsR0FBRyx3QkFBT0osaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUFqQjtBQUVBTyxNQUFBQSxRQUFRLENBQUNDLFVBQVQsR0FBc0JELFFBQVEsQ0FBQ0MsVUFBVCxJQUF1QixFQUE3QztBQUNBRCxNQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0JDLEtBQXBCLEdBQTRCLFFBQTVCO0FBRUEsYUFBT0YsUUFBUDtBQUNEOzs7O0VBcEIyQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY2VudGVyQ29vcmRpbmF0ZXMpLCAwLjAwMSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeSA9IGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-circle-from-center-mode.js b/modules/edit-modes/dist-es6/lib/draw-circle-from-center-mode.js new file mode 100644 index 000000000..4121759a1 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-circle-from-center-mode.js @@ -0,0 +1,79 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleFromCenterMode = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawCircleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawCircleFromCenterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawCircleFromCenterMode); + + function DrawCircleFromCenterMode() { + _classCallCheck(this, DrawCircleFromCenterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleFromCenterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // Default turf value for circle is 64 + var _ref = modeConfig || {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? 64 : _ref$steps; + + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var radius = Math.max((0, _distance["default"])(coord1, coord2), 0.001); + var geometry = (0, _circle["default"])(coord1, radius, options); + geometry.properties = geometry.properties || {}; + geometry.properties.shape = 'Circle'; + return geometry; + } + }]); + + return DrawCircleFromCenterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawCircleFromCenterMode = DrawCircleFromCenterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ2VvbWV0cnkiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBRDBGLGlCQUVuRUEsVUFBVSxJQUFJLEVBRnFEO0FBQUEsNEJBRWxGQyxLQUZrRjtBQUFBLFVBRWxGQSxLQUZrRiwyQkFFMUUsRUFGMEU7O0FBRzFGLFVBQU1DLE9BQU8sR0FBRztBQUFFRCxRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBaEI7O0FBRUEsVUFBSUEsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiRSxRQUFBQSxPQUFPLENBQUNDLElBQVIseUNBRGEsQ0FDeUM7O0FBQ3RERixRQUFBQSxPQUFPLENBQUNELEtBQVIsR0FBZ0IsQ0FBaEI7QUFDRDs7QUFFRCxVQUFNSSxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTVCxNQUFULEVBQWlCQyxNQUFqQixDQUFULEVBQW1DLEtBQW5DLENBQWY7QUFDQSxVQUFNUyxRQUFRLEdBQUcsd0JBQU9WLE1BQVAsRUFBZU8sTUFBZixFQUF1QkgsT0FBdkIsQ0FBakI7QUFFQU0sTUFBQUEsUUFBUSxDQUFDQyxVQUFULEdBQXNCRCxRQUFRLENBQUNDLFVBQVQsSUFBdUIsRUFBN0M7QUFDQUQsTUFBQUEsUUFBUSxDQUFDQyxVQUFULENBQW9CQyxLQUFwQixHQUE0QixRQUE1QjtBQUVBLGFBQU9GLFFBQVA7QUFDRDs7OztFQWxCMkNHLHdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY29vcmQyKSwgMC4wMDEpO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gY2lyY2xlKGNvb3JkMSwgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-ellipse-by-bounding-box-mode.js b/modules/edit-modes/dist-es6/lib/draw-ellipse-by-bounding-box-mode.js new file mode 100644 index 000000000..7cffd0b50 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-ellipse-by-bounding-box-mode.js @@ -0,0 +1,75 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseByBoundingBoxMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawEllipseByBoundingBoxMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawEllipseByBoundingBoxMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawEllipseByBoundingBoxMode); + + function DrawEllipseByBoundingBoxMode() { + _classCallCheck(this, DrawEllipseByBoundingBoxMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseByBoundingBoxMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + var minX = Math.min(coord1[0], coord2[0]); + var minY = Math.min(coord1[1], coord2[1]); + var maxX = Math.max(coord1[0], coord2[0]); + var maxY = Math.max(coord1[1], coord2[1]); + var polygonPoints = (0, _bboxPolygon["default"])([minX, minY, maxX, maxY]).geometry.coordinates[0]; + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var xSemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore + + return (0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis); + } + }]); + + return DrawEllipseByBoundingBoxMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawEllipseByBoundingBoxMode = DrawEllipseByBoundingBoxMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLWJ5LWJvdW5kaW5nLWJveC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibWluWCIsIk1hdGgiLCJtaW4iLCJtaW5ZIiwibWF4WCIsIm1heCIsIm1heFkiLCJwb2x5Z29uUG9pbnRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwieVNlbWlBeGlzIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSw0Qjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBQ0EsVUFBTUssSUFBSSxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBZixFQUFvQkMsTUFBTSxDQUFDLENBQUQsQ0FBMUIsQ0FBYjtBQUNBLFVBQU1NLElBQUksR0FBR0gsSUFBSSxDQUFDSSxHQUFMLENBQVNSLE1BQU0sQ0FBQyxDQUFELENBQWYsRUFBb0JDLE1BQU0sQ0FBQyxDQUFELENBQTFCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBRUEsVUFBTVMsYUFBYSxHQUFHLDZCQUFZLENBQUNQLElBQUQsRUFBT0csSUFBUCxFQUFhQyxJQUFiLEVBQW1CRSxJQUFuQixDQUFaLEVBQXNDRSxRQUF0QyxDQUErQ0MsV0FBL0MsQ0FBMkQsQ0FBM0QsQ0FBdEI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBRyw4Q0FBd0JiLE1BQXhCLEVBQWdDQyxNQUFoQyxDQUExQjtBQUVBLFVBQU1hLFNBQVMsR0FBR1YsSUFBSSxDQUFDSSxHQUFMLENBQVMsMEJBQVMsb0JBQU1FLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQVQsRUFBa0Msb0JBQU1BLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQWxDLENBQVQsRUFBcUUsS0FBckUsQ0FBbEI7QUFDQSxVQUFNSyxTQUFTLEdBQUdYLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCLENBVjBGLENBWTFGOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0MsU0FBdEMsQ0FBUDtBQUNEOzs7O0VBZitDQyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgbWluWCA9IE1hdGgubWluKGNvb3JkMVswXSwgY29vcmQyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29vcmQxWzFdLCBjb29yZDJbMV0pO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChjb29yZDFbMF0sIGNvb3JkMlswXSk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KGNvb3JkMVsxXSwgY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuXG4gICAgY29uc3QgeFNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbMV0pKSwgMC4wMDEpO1xuICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHBvaW50KHBvbHlnb25Qb2ludHNbMF0pLCBwb2ludChwb2x5Z29uUG9pbnRzWzNdKSksIDAuMDAxKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZWxsaXBzZShjZW50ZXJDb29yZGluYXRlcywgeFNlbWlBeGlzLCB5U2VtaUF4aXMpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-ellipse-using-three-points-mode.js b/modules/edit-modes/dist-es6/lib/draw-ellipse-using-three-points-mode.js new file mode 100644 index 000000000..deb772726 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-ellipse-using-three-points-mode.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseUsingThreePointsMode = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _threeClickPolygonMode = require("./three-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawEllipseUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) { + _inherits(DrawEllipseUsingThreePointsMode, _ThreeClickPolygonMod); + + var _super = _createSuper(DrawEllipseUsingThreePointsMode); + + function DrawEllipseUsingThreePointsMode() { + _classCallCheck(this, DrawEllipseUsingThreePointsMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseUsingThreePointsMode, [{ + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var xSemiAxis = Math.max((0, _distance["default"])(centerCoordinates, (0, _helpers.point)(coord3)), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])(coord1, coord2), 0.001) / 2; + var options = { + angle: (0, _bearing["default"])(coord1, coord2) + }; // @ts-ignore + + return (0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis, options); + } + }]); + + return DrawEllipseUsingThreePointsMode; +}(_threeClickPolygonMode.ThreeClickPolygonMode); + +exports.DrawEllipseUsingThreePointsMode = DrawEllipseUsingThreePointsMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJtb2RlQ29uZmlnIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJ4U2VtaUF4aXMiLCJNYXRoIiwibWF4IiwieVNlbWlBeGlzIiwib3B0aW9ucyIsImFuZ2xlIiwiVGhyZWVDbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLCtCOzs7Ozs7Ozs7Ozs7O3lDQUVUQyxNLEVBQ0FDLE0sRUFDQUMsTSxFQUNBQyxVLEVBQ3VDO0FBQ3ZDLFVBQU1DLGlCQUFpQixHQUFHLDhDQUF3QkosTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTUksU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEIsb0JBQU1GLE1BQU4sQ0FBNUIsQ0FBVCxFQUFxRCxLQUFyRCxDQUFsQjtBQUNBLFVBQU1NLFNBQVMsR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVMsMEJBQVNQLE1BQVQsRUFBaUJDLE1BQWpCLENBQVQsRUFBbUMsS0FBbkMsSUFBNEMsQ0FBOUQ7QUFDQSxVQUFNUSxPQUFPLEdBQUc7QUFBRUMsUUFBQUEsS0FBSyxFQUFFLHlCQUFRVixNQUFSLEVBQWdCQyxNQUFoQjtBQUFULE9BQWhCLENBSnVDLENBS3ZDOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0csU0FBdEMsRUFBaURDLE9BQWpELENBQVA7QUFDRDs7OztFQWJrREUsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnQHR1cmYvZWxsaXBzZSc7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFRocmVlQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBjb29yZDM6IFBvc2l0aW9uLFxuICAgIG1vZGVDb25maWc6IGFueVxuICApOiBGZWF0dXJlT2Y8UG9seWdvbj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGNvb3JkMSwgY29vcmQyKTtcbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoY29vcmQzKSksIDAuMDAxKTtcbiAgICBjb25zdCB5U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjb29yZDEsIGNvb3JkMiksIDAuMDAxKSAvIDI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYW5nbGU6IGJlYXJpbmcoY29vcmQxLCBjb29yZDIpIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGxpcHNlKGNlbnRlckNvb3JkaW5hdGVzLCB4U2VtaUF4aXMsIHlTZW1pQXhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-line-string-mode.js b/modules/edit-modes/dist-es6/lib/draw-line-string-mode.js new file mode 100644 index 000000000..f9ed127f2 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-line-string-mode.js @@ -0,0 +1,181 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawLineStringMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawLineStringMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawLineStringMode); + + function DrawLineStringMode() { + _classCallCheck(this, DrawLineStringMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawLineStringMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) { + // They clicked the last point (or double-clicked), so add the LineString + var lineStringToAdd = { + type: 'LineString', + coordinates: _toConsumableArray(clickSequence) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureAction(lineStringToAdd, props.data); + + if (editAction) { + props.onEdit(editAction); + } + } else if (positionAdded) { + // new tentative point + props.onEdit({ + // data is the same + updatedData: props.data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + var key = event.key; + + if (key === 'Enter') { + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1) { + var lineStringToAdd = { + type: 'LineString', + coordinates: _toConsumableArray(clickSequence) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureAction(lineStringToAdd, props.data); + + if (editAction) { + props.onEdit(editAction); + } + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var guides = { + type: 'FeatureCollection', + features: [] + }; + var tentativeFeature; + + if (clickSequence.length > 0) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }; + } + + if (tentativeFeature) { + guides.features.push(tentativeFeature); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }]); + + return DrawLineStringMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawLineStringMode = DrawLineStringMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1saW5lLXN0cmluZy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdMaW5lU3RyaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lU3RyaW5nVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImRhdGEiLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsImtleSIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsImd1aWRlcyIsImZlYXR1cmVzIiwidGVudGF0aXZlRmVhdHVyZSIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwicHVzaCIsImVkaXRIYW5kbGVzIiwibWFwIiwiY2xpY2tlZENvb3JkIiwiaW5kZXgiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxrQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUFBLFVBQzFEQyxLQUQwRCxHQUNoREYsS0FEZ0QsQ0FDMURFLEtBRDBEO0FBRWxFLFVBQU1DLGlCQUFpQixHQUFHLGdDQUFvQkQsS0FBcEIsQ0FBMUI7QUFFQSxVQUFJRSxhQUFhLEdBQUcsS0FBcEI7O0FBQ0EsVUFBSSxD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QUEsV0FBVywrQkFBTVQsYUFBTixHQUF3QnNCLFVBQXhCO0FBRkg7QUFMTyxTQUFuQjtBQVVEOztBQUVELFVBQUlHLGdCQUFKLEVBQXNCO0FBQ3BCRixRQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JJLElBQWhCLENBQXFCSCxnQkFBckI7QUFDRDs7QUFFRCxVQUFNSSxXQUFXLEdBQUc3QixhQUFhLENBQUM4QixHQUFkLENBQWtCLFVBQUNDLFlBQUQsRUFBZUMsS0FBZjtBQUFBLGVBQTBCO0FBQzlEeEIsVUFBQUEsSUFBSSxFQUFFLFNBRHdEO0FBRTlESCxVQUFBQSxVQUFVLEVBQUU7QUFDVnFCLFlBQUFBLFNBQVMsRUFBRSxZQUREO0FBRVZPLFlBQUFBLGNBQWMsRUFBRSxVQUZOO0FBR1ZDLFlBQUFBLFlBQVksRUFBRSxDQUFDLENBSEw7QUFJVjVCLFlBQUFBLGVBQWUsRUFBRSxDQUFDMEIsS0FBRDtBQUpQLFdBRmtEO0FBUTlETCxVQUFBQSxRQUFRLEVBQUU7QUFDUm5CLFlBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFlBQUFBLFdBQVcsRUFBRXNCO0FBRkw7QUFSb0QsU0FBMUI7QUFBQSxPQUFsQixDQUFwQjs7QUFjQSwwQkFBQVIsTUFBTSxDQUFDQyxRQUFQLEVBQWdCSSxJQUFoQiw0Q0FBd0JDLFdBQXhCLEdBM0NxRSxDQTRDckU7OztBQUNBLGFBQU9OLE1BQVA7QUFDRDs7O3NDQUVpQjdCLEssRUFBeUJDLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ3dDLGNBQU4sQ0FBcUIsTUFBckI7QUFDRDs7OztFQS9HcUNDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZywgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQsIE1vZGVQcm9wcywgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdMaW5lU3RyaW5nTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICBjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXSA9PT0gY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gYWRkIHRoZSBMaW5lU3RyaW5nXG5cbiAgICAgIGNvbnN0IGxpbmVTdHJpbmdUb0FkZDogTGluZVN0cmluZyA9IHtcbiAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2VdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihsaW5lU3RyaW5nVG9BZGQsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsaW5lU3RyaW5nVG9BZGQ6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZV0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24obGluZVN0cmluZ1RvQWRkLCBwcm9wcy5kYXRhKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-point-mode.js b/modules/edit-modes/dist-es6/lib/draw-point-mode.js new file mode 100644 index 000000000..d5397314a --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-point-mode.js @@ -0,0 +1,87 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPointMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawPointMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawPointMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawPointMode); + + function DrawPointMode() { + _classCallCheck(this, DrawPointMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawPointMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + return { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Point', + coordinates: lastCoords[0] + } + }; + } + }, { + key: "handleClick", + value: function handleClick(_ref, props) { + var mapCoords = _ref.mapCoords; + var geometry = { + type: 'Point', + coordinates: mapCoords + }; // @ts-ignore + + props.onEdit(this.getAddFeatureAction(geometry, props.data)); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(DrawPointMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }]); + + return DrawPointMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawPointMode = DrawPointMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2ludC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2ludE1vZGUiLCJwcm9wcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm9uRWRpdCIsImdldEFkZEZlYXR1cmVBY3Rpb24iLCJkYXRhIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGE7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLFVBQVUsR0FBR0Qsb0JBQW9CLEdBQUcsQ0FBQ0Esb0JBQW9CLENBQUNFLFNBQXRCLENBQUgsR0FBc0MsRUFBN0U7QUFFQSxhQUFPO0FBQ0xDLFFBQUFBLElBQUksRUFBRSxTQUREO0FBRUxDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUU7QUFERCxTQUZQO0FBS0xDLFFBQUFBLFFBQVEsRUFBRTtBQUNSSCxVQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSSSxVQUFBQSxXQUFXLEVBQUVOLFVBQVUsQ0FBQyxDQUFEO0FBRmY7QUFMTCxPQUFQO0FBVUQ7OztzQ0FFc0NGLEssRUFBMkM7QUFBQSxVQUFwRUcsU0FBb0UsUUFBcEVBLFNBQW9FO0FBQ2hGLFVBQU1JLFFBQVEsR0FBRztBQUNmSCxRQUFBQSxJQUFJLEVBQUUsT0FEUztBQUVmSSxRQUFBQSxXQUFXLEVBQUVMO0FBRkUsT0FBakIsQ0FEZ0YsQ0FLaEY7O0FBQ0FILE1BQUFBLEtBQUssQ0FBQ1MsTUFBTixDQUFhLEtBQUtDLG1CQUFMLENBQXlCSCxRQUF6QixFQUFtQ1AsS0FBSyxDQUFDVyxJQUF6QyxDQUFiO0FBQ0Q7OztzQ0FFaUJDLEssRUFBeUJaLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ2EsY0FBTixDQUFxQixNQUFyQjs7QUFDQSwyRkFBd0JELEtBQXhCLEVBQStCWixLQUEvQjtBQUNEOzs7O0VBN0JnQ2MsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFRlbnRhdGl2ZUZlYXR1cmUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBsYXN0Q29vcmRzWzBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soeyBtYXBDb29yZHMgfTogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogbWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzLm9uRWRpdCh0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnksIHByb3BzLmRhdGEpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgc3VwZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-polygon-by-dragging-mode.js b/modules/edit-modes/dist-es6/lib/draw-polygon-by-dragging-mode.js new file mode 100644 index 000000000..0b58ae17b --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-polygon-by-dragging-mode.js @@ -0,0 +1,137 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonByDraggingMode = void 0; + +var _lodash = _interopRequireDefault(require("lodash.throttle")); + +var _utils = require("../utils"); + +var _drawPolygonMode = require("./draw-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DrawPolygonByDraggingMode = /*#__PURE__*/function (_DrawPolygonMode) { + _inherits(DrawPolygonByDraggingMode, _DrawPolygonMode); + + var _super = _createSuper(DrawPolygonByDraggingMode); + + function DrawPolygonByDraggingMode() { + var _this; + + _classCallCheck(this, DrawPolygonByDraggingMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "handleDraggingThrottled", null); + + return _this; + } + + _createClass(DrawPolygonByDraggingMode, [{ + key: "handleClick", + value: function handleClick(event, props) {// No-op + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + event.cancelPan(); + + if (props.modeConfig && props.modeConfig.throttleMs) { + this.handleDraggingThrottled = (0, _lodash["default"])(this.handleDraggingAux, props.modeConfig.throttleMs); + } else { + this.handleDraggingThrottled = this.handleDraggingAux; + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); // @ts-ignore + + if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) { + // @ts-ignore + this.handleDraggingThrottled.cancel(); + } + + if (clickSequence.length > 2) { + // Complete the polygon. + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "handleDraggingAux", + value: function handleDraggingAux(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one. + this.addClickSequence(event); + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (this.handleDraggingThrottled) { + this.handleDraggingThrottled(event, props); + } + } + }]); + + return DrawPolygonByDraggingMode; +}(_drawPolygonMode.DrawPolygonMode); + +exports.DrawPolygonByDraggingMode = DrawPolygonByDraggingMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLWJ5LWRyYWdnaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJjYW5jZWxQYW4iLCJtb2RlQ29uZmlnIiwidGhyb3R0bGVNcyIsImhhbmRsZURyYWdnaW5nVGhyb3R0bGVkIiwiaGFuZGxlRHJhZ2dpbmdBdXgiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJjYW5jZWwiLCJsZW5ndGgiLCJwb2x5Z29uVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwiRHJhd1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJYUEseUI7Ozs7Ozs7Ozs7Ozs7Ozs7OEVBQ21ELEk7Ozs7Ozs7Z0NBRWxEQyxLLEVBQW1CQyxLLEVBQXFDLENBQ2xFO0FBQ0Q7Ozt3Q0FFbUJELEssRUFBMkJDLEssRUFBcUM7QUFDbEZELE1BQUFBLEtBQUssQ0FBQ0UsU0FBTjs7QUFDQSxVQUFJRCxLQUFLLENBQUNFLFVBQU4sSUFBb0JGLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQsYUFBS0MsdUJBQUwsR0FBK0Isd0JBQVMsS0FBS0MsaUJBQWQsRUFBaUNMLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBbEQsQ0FBL0I7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLQyx1QkFBTCxHQUErQixLQUFLQyxpQkFBcEM7QUFDRDtBQUNGOzs7dUNBRWtCTixLLEVBQTBCQyxLLEVBQXFDO0FBQ2hGLFdBQUtNLGdCQUFMLENBQXNCUCxLQUF0QjtBQUNBLFVBQU1RLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QixDQUZnRixDQUdoRjs7QUFDQSxVQUFJLEtBQUtKLHVCQUFMLElBQWdDLEtBQUtBLHVCQUFMLENBQTZCSyxNQUFqRSxFQUF5RTtBQUN2RTtBQUNBLGFBQUtMLHVCQUFMLENBQTZCSyxNQUE3QjtBQUNEOztBQUVELFVBQUlGLGFBQWEsQ0FBQ0csTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUM1QjtBQUNBLFlBQU1DLFlBQXFCLEdBQUc7QUFDNUJDLFVBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkMsVUFBQUEsV0FBVyxFQUFFLDhCQUFLTixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFNBQTlCO0FBS0EsYUFBS08sa0JBQUw7QUFFQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNMLFlBQXpDLEVBQXVEWCxLQUF2RCxDQUFuQjs7QUFDQSxZQUFJZSxVQUFKLEVBQWdCO0FBQ2RmLFVBQUFBLEtBQUssQ0FBQ2lCLE1BQU4sQ0FBYUYsVUFBYjtBQUNEO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBc0JDLEssRUFBcUM7QUFBQSxVQUNuRWtCLEtBRG1FLEdBQ3pEbkIsS0FEeUQsQ0FDbkVtQixLQURtRTtBQUUzRSxVQUFNQyxpQkFBaUIsR0FBRyxnQ0FBb0JELEtBQXBCLENBQTFCOztBQUVBLFVBQUksQ0FBQ0MsaUJBQUwsRUFBd0I7QUFDdEI7QUFDQSxhQUFLYixnQkFBTCxDQUFzQlAsS0FBdEI7QUFDRDtBQUNGOzs7bUNBRWNBLEssRUFBc0JDLEssRUFBcUM7QUFDeEUsVUFBSSxLQUFLSSx1QkFBVCxFQUFrQztBQUNoQyxhQUFLQSx1QkFBTCxDQUE2QkwsS0FBN0IsRUFBb0NDLEtBQXBDO0FBQ0Q7QUFDRjs7OztFQXZENENvQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG50eXBlIERyYWdnaW5nSGFuZGxlciA9IChldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIGV4dGVuZHMgRHJhd1BvbHlnb25Nb2RlIHtcbiAgaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQ6IERyYWdnaW5nSGFuZGxlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIE5vLW9wXG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gICAgaWYgKHByb3BzLm1vZGVDb25maWcgJiYgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKSB7XG4gICAgICB0aGlzLmhhbmRsZURyYWdnaW5nVGhyb3R0bGVkID0gdGhyb3R0bGUodGhpcy5oYW5kbGVEcmFnZ2luZ0F1eCwgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCA9IHRoaXMuaGFuZGxlRHJhZ2dpbmdBdXg7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQgJiYgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZC5jYW5jZWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHBvbHlnb24uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmdBdXgoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lLlxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCkge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZChldmVudCwgcHJvcHMpO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-polygon-mode.js b/modules/edit-modes/dist-es6/lib/draw-polygon-mode.js new file mode 100644 index 000000000..f8a716643 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-polygon-mode.js @@ -0,0 +1,205 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawPolygonMode); + + function DrawPolygonMode() { + _classCallCheck(this, DrawPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawPolygonMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 1 || clickSequence.length === 2) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }; + } else if (clickSequence.length > 2) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), lastCoords, [clickSequence[0]])] + } + }; + } + + return tentativeFeature; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + var tentativeFeature = this.createTentativeFeature(props); + + if (tentativeFeature) { + guides.features.push(tentativeFeature); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + // Remove the hovered position + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } else if (positionAdded) { + // new tentative point + props.onEdit({ + // data is the same + updatedData: props.data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (event.key === 'Enter') { + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2) { + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(DrawPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }]); + + return DrawPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawPolygonMode = DrawPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25Nb2RlIiwicHJvcHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInRlbnRhdGl2ZUZlYXR1cmUiLCJsZW5ndGgiLCJ0eXBlIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUiLCJwdXNoIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiZXZlbnQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJBcnJheSIsImlzQXJyYXkiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImRhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwicG9zaXRpb24iLCJrZXkiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGU7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUVBLFVBQU1DLFVBQVUs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QixjQUFNd0IsWUFBcUIsR0FBRztBQUM1QnZCLFlBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkksWUFBQUEsV0FBVyxFQUFFLDhCQUFLVixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFdBQTlCO0FBSUEsZUFBSzhCLGtCQUFMO0FBRUEsY0FBTUMsVUFBVSxHQUFHLEtBQUtDLG1DQUFMLENBQXlDSCxZQUF6QyxFQUF1RC9CLEtBQXZELENBQW5COztBQUNBLGNBQUlpQyxVQUFKLEVBQWdCO0FBQ2RqQyxZQUFBQSxLQUFLLENBQUNtQyxNQUFOLENBQWFGLFVBQWI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7O3NDQUNpQlQsSyxFQUF5QnhCLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQzBDLGNBQU4sQ0FBcUIsTUFBckI7O0FBQ0EsNkZBQXdCbEIsS0FBeEIsRUFBK0J4QixLQUEvQjtBQUNEOzs7O0VBcElrQzJDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICBsZXQgdGVudGF0aXZlRmVhdHVyZTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEgfHwgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyKSB7XG4gICAgICB0ZW50YXRpdmVGZWF0dXJlID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW1suLi5jbGlja1NlcXVlbmNlLCAuLi5sYXN0Q29vcmRzLCBjbGlja1NlcXVlbmNlWzBdXV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgZ3VpZGVzID0ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBbXSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gY2xpY2tTZXF1ZW5jZS5tYXAoKGNsaWNrZWRDb29yZCwgaW5kZXgpID0+ICh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2V4aXN0aW5nJyxcbiAgICAgICAgZmVhdHVyZUluZGV4OiAtMSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbaW5kZXhdLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBjbGlja2VkQ29vcmQsXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKC4uLmVkaXRIYW5kbGVzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMiAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHxcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSlcbiAgICApIHtcbiAgICAgIC8vIFRoZXkgY2xpY2tlZCB0aGUgZmlyc3Qgb3IgbGFzdCBwb2ludCAob3IgZG91YmxlLWNsaWNrZWQpLCBzbyBjb21wbGV0ZSB0aGUgcG9seWdvblxuXG4gICAgICAvLyBSZW1vdmUgdGhlIGhvdmVyZWQgcG9zaXRpb25cbiAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICBjb29yZGluYXRlczogW1suLi5jbGlja1NlcXVlbmNlLCBjbGlja1NlcXVlbmNlWzBdXV0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uQWRkZWQpIHtcbiAgICAgIC8vIG5ldyB0ZW50YXRpdmUgcG9pbnRcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIGRhdGEgaXMgdGhlIHNhbWVcbiAgICAgICAgdXBkYXRlZERhdGE6IHByb3BzLmRhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnYWRkVGVudGF0aXZlUG9zaXRpb24nLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-rectangle-mode.js b/modules/edit-modes/dist-es6/lib/draw-rectangle-mode.js new file mode 100644 index 000000000..2522e8042 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-rectangle-mode.js @@ -0,0 +1,62 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawRectangleMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawRectangleMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawRectangleMode); + + function DrawRectangleMode() { + _classCallCheck(this, DrawRectangleMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + var rectangle = (0, _bboxPolygon["default"])([coord1[0], coord1[1], coord2[0], coord2[1]]); + rectangle.properties = rectangle.properties || {}; + rectangle.properties.shape = 'Rectangle'; // @ts-ignore + + return rectangle; + } + }]); + + return DrawRectangleMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawRectangleMode = DrawRectangleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJyZWN0YW5nbGUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGlCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGLFVBQU1DLFNBQVMsR0FBRyw2QkFBWSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCQyxNQUFNLENBQUMsQ0FBRCxDQUE3QixFQUFrQ0EsTUFBTSxDQUFDLENBQUQsQ0FBeEMsQ0FBWixDQUFsQjtBQUNBRSxNQUFBQSxTQUFTLENBQUNDLFVBQVYsR0FBdUJELFNBQVMsQ0FBQ0MsVUFBVixJQUF3QixFQUEvQztBQUNBRCxNQUFBQSxTQUFTLENBQUNDLFVBQVYsQ0FBcUJDLEtBQXJCLEdBQTZCLFdBQTdCLENBSDBGLENBSzFGOztBQUNBLGFBQU9GLFNBQVA7QUFDRDs7OztFQVJvQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZU1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-rectangle-using-three-points-mode.js b/modules/edit-modes/dist-es6/lib/draw-rectangle-using-three-points-mode.js new file mode 100644 index 000000000..9a506e1f6 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-rectangle-using-three-points-mode.js @@ -0,0 +1,85 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleUsingThreePointsMode = void 0; + +var _utils = require("../utils"); + +var _threeClickPolygonMode = require("./three-click-polygon-mode"); + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawRectangleUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) { + _inherits(DrawRectangleUsingThreePointsMode, _ThreeClickPolygonMod); + + var _super = _createSuper(DrawRectangleUsingThreePointsMode); + + function DrawRectangleUsingThreePointsMode() { + _classCallCheck(this, DrawRectangleUsingThreePointsMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleUsingThreePointsMode, [{ + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(coord1, coord2, coord3), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + return { + type: 'Feature', + properties: { + shape: 'Rectangle' + }, + geometry: { + type: 'Polygon', + coordinates: [[// Draw a polygon containing all the points of the LineString, + // then the points orthogonal to the lineString, + // then back to the starting position + coord1, coord2, p3, p4, coord1]] + } + }; + } + }]); + + return DrawRectangleUsingThreePointsMode; +}(_threeClickPolygonMode.ThreeClickPolygonMode); + +exports.DrawRectangleUsingThreePointsMode = DrawRectangleUsingThreePointsMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtdXNpbmctdGhyZWUtcG9pbnRzLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIiwiY29vcmQxIiwiY29vcmQyIiwiY29vcmQzIiwibW9kZUNvbmZpZyIsInAzIiwicDQiLCJ0eXBlIiwicHJvcGVydGllcyIsInNoYXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsaUM7Ozs7Ozs7Ozs7Ozs7eUNBRVRDLE0sRUFDQUMsTSxFQUNBQyxNLEVBQ0FDLFUsRUFDdUM7QUFBQSxrQ0FDdEIsK0NBQW1DSCxNQUFuQyxFQUEyQ0MsTUFBM0MsRUFBbURDLE1BQW5ELENBRHNCO0FBQUE7QUFBQSxVQUNoQ0UsRUFEZ0M7QUFBQSxVQUM1QkMsRUFENEI7O0FBR3ZDLGFBQU87QUFDTEMsUUFBQUEsSUFBSSxFQUFFLFNBREQ7QUFFTEMsUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLEtBQUssRUFBRTtBQURHLFNBRlA7QUFLTEMsUUFBQUEsUUFBUSxFQUFFO0FBQ1JILFVBQUFBLElBQUksRUFBRSxTQURFO0FBRVJJLFVBQUFBLFdBQVcsRUFBRSxDQUNYLENBQ0U7QUFDQTtBQUNBO0FBQ0FWLFVBQUFBLE1BSkYsRUFLRUMsTUFMRixFQU1FRyxFQU5GLEVBT0VDLEVBUEYsRUFRRUwsTUFSRixDQURXO0FBRkw7QUFMTCxPQUFQO0FBcUJEOzs7O0VBOUJvRFcsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIGV4dGVuZHMgVGhyZWVDbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgY29vcmQxOiBQb3NpdGlvbixcbiAgICBjb29yZDI6IFBvc2l0aW9uLFxuICAgIGNvb3JkMzogUG9zaXRpb24sXG4gICAgbW9kZUNvbmZpZzogYW55XG4gICk6IEZlYXR1cmVPZjxQb2x5Z29uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtwMywgcDRdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhjb29yZDEsIGNvb3JkMiwgY29vcmQzKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNoYXBlOiAnUmVjdGFuZ2xlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIHBvaW50cyBvcnRob2dvbmFsIHRvIHRoZSBsaW5lU3RyaW5nLFxuICAgICAgICAgICAgLy8gdGhlbiBiYWNrIHRvIHRoZSBzdGFydGluZyBwb3NpdGlvblxuICAgICAgICAgICAgY29vcmQxLFxuICAgICAgICAgICAgY29vcmQyLFxuICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICBwNCxcbiAgICAgICAgICAgIGNvb3JkMSxcbiAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/draw-square-from-center-mode.js b/modules/edit-modes/dist-es6/lib/draw-square-from-center-mode.js new file mode 100644 index 000000000..7c39cff29 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/draw-square-from-center-mode.js @@ -0,0 +1,85 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawSquareFromCenterMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _along = _interopRequireDefault(require("@turf/along")); + +var _helpers = require("@turf/helpers"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawSquareFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawSquareFromCenterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawSquareFromCenterMode); + + function DrawSquareFromCenterMode() { + _classCallCheck(this, DrawSquareFromCenterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawSquareFromCenterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // get the coordinates of the other two rectangle vertices + var coord3 = [coord2[0], coord1[1]]; + var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side + + var distance1 = (0, _distance["default"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1)); + var distance2 = (0, _distance["default"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1)); + var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin + + var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex + + var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex + + var newPoint = (0, _along["default"])(line, shortestDistance); + var corner = newPoint.geometry.coordinates; // determine the longitude and latitude values of the opposite corner + + var longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]); + var latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]); + var square = (0, _bboxPolygon["default"])([longitude, latitude, corner[0], corner[1]]); + square.properties = square.properties || {}; + square.properties.shape = 'Square'; // @ts-ignore + + return square; + } + }]); + + return DrawSquareFromCenterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawSquareFromCenterMode = DrawSquareFromCenterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwiY29vcmQzIiwiY29vcmQ0IiwiZGlzdGFuY2UxIiwiZGlzdGFuY2UyIiwic2hvcnRlc3REaXN0YW5jZSIsImNsb3Nlc3RQb2ludCIsImxpbmUiLCJuZXdQb2ludCIsImNvcm5lciIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsb25naXR1ZGUiLCJNYXRoIiwiYWJzIiwibGF0aXR1ZGUiLCJzcXVhcmUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUNGLE1BQU0sQ0FBQyxDQUFELENBQVAsRUFBWUQsTUFBTSxDQUFDLENBQUQsQ0FBbEIsQ0FBZjtBQUNBLFVBQU1JLE1BQU0sR0FBRyxDQUFDSixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWYsQ0FIMEYsQ0FLMUY7O0FBQ0EsVUFBTUksU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1ILE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTSxTQUFTLEdBQUcsMEJBQWEsb0JBQU1GLE1BQU4sQ0FBYixFQUE0QixvQkFBTUosTUFBTixDQUE1QixDQUFsQjtBQUNBLFVBQU1PLGdCQUFnQixHQUFHRixTQUFTLElBQUlDLFNBQWIsR0FBeUJELFNBQXpCLEdBQXFDQyxTQUE5RCxDQVIwRixDQVUxRjs7QUFDQSxVQUFNRSxZQUFZLEdBQUdILFNBQVMsSUFBSUMsU0FBYixHQUF5QkgsTUFBekIsR0FBa0NDLE1BQXZELENBWDBGLENBYTFGOztBQUNBLFVBQU1LLElBQUksR0FBRyx5QkFBZSxDQUFDRCxZQUFELEVBQWVQLE1BQWYsQ0FBZixDQUFiLENBZDBGLENBZ0IxRjs7QUFDQSxVQUFNUyxRQUFRLEdBQUcsdUJBQVVELElBQVYsRUFBZ0JGLGdCQUFoQixDQUFqQjtBQUNBLFVBQU1JLE1BQU0sR0FBR0QsUUFBUSxDQUFDRSxRQUFULENBQWtCQyxXQUFqQyxDQWxCMEYsQ0FvQjFGOztBQUNBLFVBQU1DLFNBQVMsR0FDYmQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUFsQixHQUNJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUlBLFVBQU1NLFFBQVEsR0FDWmpCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FIbEI7QUFLQSxVQUFNTyxNQUFNLEdBQUcsNkJBQVksQ0FBQ0osU0FBRCxFQUFZRyxRQUFaLEVBQXNCTixNQUFNLENBQUMsQ0FBRCxDQUE1QixFQUFpQ0EsTUFBTSxDQUFDLENBQUQsQ0FBdkMsQ0FBWixDQUFmO0FBQ0FPLE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxHQUFvQkQsTUFBTSxDQUFDQyxVQUFQLElBQXFCLEVBQXpDO0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsS0FBbEIsR0FBMEIsUUFBMUIsQ0FoQzBGLENBa0MxRjs7QUFDQSxhQUFPRixNQUFQO0FBQ0Q7Ozs7RUFyQzJDRyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkFsb25nIGZyb20gJ0B0dXJmL2Fsb25nJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHR1cmZMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHZhbHVlcyBvZiB0aGUgb3Bwb3NpdGUgY29ybmVyXG4gICAgY29uc3QgbG9uZ2l0dWRlID1cbiAgICAgIGNvb3JkMVswXSA+IGNvcm5lclswXVxuICAgICAgICA/IGNvb3JkMVswXSArIE1hdGguYWJzKGNvb3JkMVswXSAtIGNvcm5lclswXSlcbiAgICAgICAgOiBjb29yZDFbMF0gLSBNYXRoLmFicyhjb29yZDFbMF0gLSBjb3JuZXJbMF0pO1xuICAgIGNvbnN0IGxhdGl0dWRlID1cbiAgICAgIGNvb3JkMVsxXSA+IGNvcm5lclsxXVxuICAgICAgICA/IGNvb3JkMVsxXSArIE1hdGguYWJzKGNvb3JkMVsxXSAtIGNvcm5lclsxXSlcbiAgICAgICAgOiBjb29yZDFbMV0gLSBNYXRoLmFicyhjb29yZDFbMV0gLSBjb3JuZXJbMV0pO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2xvbmdpdHVkZSwgbGF0aXR1ZGUsIGNvcm5lclswXSwgY29ybmVyWzFdXSk7XG4gICAgc3F1YXJlLnByb3BlcnRpZXMgPSBzcXVhcmUucHJvcGVydGllcyB8fCB7fTtcbiAgICBzcXVhcmUucHJvcGVydGllcy5zaGFwZSA9ICdTcXVhcmUnO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzcXVhcmU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/duplicate-mode.js b/modules/edit-modes/dist-es6/lib/duplicate-mode.js new file mode 100644 index 000000000..28c1a166b --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/duplicate-mode.js @@ -0,0 +1,71 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DuplicateMode = void 0; + +var _translateMode = require("./translate-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DuplicateMode = /*#__PURE__*/function (_TranslateMode) { + _inherits(DuplicateMode, _TranslateMode); + + var _super = _createSuper(DuplicateMode); + + function DuplicateMode() { + _classCallCheck(this, DuplicateMode); + + return _super.apply(this, arguments); + } + + _createClass(DuplicateMode, [{ + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + _get(_getPrototypeOf(DuplicateMode.prototype), "handleStartDragging", this).call(this, event, props); + + if (this._geometryBeforeTranslate) { + props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data)); + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._isTranslatable) { + props.onUpdateCursor('copy'); + } else { + props.onUpdateCursor(null); + } + } + }]); + + return DuplicateMode; +}(_translateMode.TranslateMode); + +exports.DuplicateMode = DuplicateMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHVwbGljYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiRHVwbGljYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJvbkVkaXQiLCJnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24iLCJkYXRhIiwiX2lzVHJhbnNsYXRhYmxlIiwib25VcGRhdGVDdXJzb3IiLCJUcmFuc2xhdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozt3Q0FDU0MsSyxFQUEyQkMsSyxFQUFxQztBQUNsRiw2RkFBMEJELEtBQTFCLEVBQWlDQyxLQUFqQzs7QUFFQSxVQUFJLEtBQUtDLHdCQUFULEVBQW1DO0FBQ2pDRCxRQUFBQSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxLQUFLQyx3QkFBTCxDQUE4QixLQUFLRix3QkFBbkMsRUFBNkRELEtBQUssQ0FBQ0ksSUFBbkUsQ0FBYjtBQUNEO0FBQ0Y7OztpQ0FFWUosSyxFQUFxQztBQUNoRCxVQUFJLEtBQUtLLGVBQVQsRUFBMEI7QUFDeEJMLFFBQUFBLEtBQUssQ0FBQ00sY0FBTixDQUFxQixNQUFyQjtBQUNELE9BRkQsTUFFTztBQUNMTixRQUFBQSxLQUFLLENBQUNNLGNBQU4sQ0FBcUIsSUFBckI7QUFDRDtBQUNGOzs7O0VBZmdDQyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXJ0RHJhZ2dpbmdFdmVudCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL3RyYW5zbGF0ZS1tb2RlJztcblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZU1vZGUgZXh0ZW5kcyBUcmFuc2xhdGVNb2RlIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHN1cGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvcHMub25FZGl0KHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlLCBwcm9wcy5kYXRhKSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY29weScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/edit-mode.js b/modules/edit-modes/dist-es6/lib/edit-mode.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/edit-mode.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/elevation-mode.js b/modules/edit-modes/dist-es6/lib/elevation-mode.js new file mode 100644 index 000000000..35bf0f63e --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/elevation-mode.js @@ -0,0 +1,125 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ElevationMode = void 0; + +var _utils = require("../utils"); + +var _modifyMode = require("./modify-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultCalculateElevationChange(_ref) { + var pointerDownScreenCoords = _ref.pointerDownScreenCoords, + screenCoords = _ref.screenCoords; + return 10 * (pointerDownScreenCoords[1] - screenCoords[1]); +} + +var ElevationMode = /*#__PURE__*/function (_ModifyMode) { + _inherits(ElevationMode, _ModifyMode); + + var _super = _createSuper(ElevationMode); + + function ElevationMode() { + _classCallCheck(this, ElevationMode); + + return _super.apply(this, arguments); + } + + _createClass(ElevationMode, [{ + key: "makeElevatedEvent", + value: function makeElevatedEvent(event, position, props) { + var _ref2 = props.modeConfig || {}, + _ref2$minElevation = _ref2.minElevation, + minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation, + _ref2$maxElevation = _ref2.maxElevation, + maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation, + _ref2$calculateElevat = _ref2.calculateElevationChange, + calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat; + + if (!event.pointerDownScreenCoords) { + return event; + } // $FlowFixMe - really, I know it has something at index 2 + + + var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport + + elevation += calculateElevationChange({ + pointerDownScreenCoords: event.pointerDownScreenCoords, + screenCoords: event.screenCoords + }); + elevation = Math.min(elevation, maxElevation); + elevation = Math.max(elevation, minElevation); + return Object.assign({}, event, { + mapCoords: [position[0], position[1], elevation] + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore + + _get(_getPrototypeOf(ElevationMode.prototype), "handlePointerMove", this).call(this, this.makeElevatedEvent(event, position, props), props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.picks); + var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore + + _get(_getPrototypeOf(ElevationMode.prototype), "handleStopDragging", this).call(this, this.makeElevatedEvent(event, position, props), props); + } + }, { + key: "getCursor", + value: function getCursor(event) { + var cursor = _get(_getPrototypeOf(ElevationMode.prototype), "getCursor", this).call(this, event); + + if (cursor === 'cell') { + cursor = 'ns-resize'; + } + + return cursor; + } + }], [{ + key: "calculateElevationChangeWithViewport", + value: function calculateElevationChangeWithViewport(viewport, _ref3) { + var pointerDownScreenCoords = _ref3.pointerDownScreenCoords, + screenCoords = _ref3.screenCoords; + // Source: https://gis.stackexchange.com/a/127949/111804 + var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom); + return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2; + } + }]); + + return ElevationMode; +}(_modifyMode.ModifyMode); + +exports.ElevationMode = ElevationMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZWxldmF0aW9uLW1vZGUudHMiXSwibmFtZXMiOlsiZGVmYXVsdENhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwic2NyZWVuQ29vcmRzIiwiRWxldmF0aW9uTW9kZSIsImV2ZW50IiwicG9zaXRpb24iLCJwcm9wcyIsIm1vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwibWFrZUVsZXZhdGVkRXZlbnQiLCJwaWNrcyIsImN1cnNvciIsInZpZXdwb3J0IiwibWV0ZXJzUGVyUGl4ZWwiLCJjb3MiLCJsYXRpdHVkZSIsIlBJIiwicG93Iiwiem9vbSIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLCtCQUFULE9BTUc7QUFBQSxNQUxEQyx1QkFLQyxRQUxEQSx1QkFLQztBQUFBLE1BSkRDLFlBSUMsUUFKREEsWUFJQztBQUNELFNBQU8sTUFBTUQsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBL0MsQ0FBUDtBQUNEOztJQUVZQyxhOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ0FDLFEsRUFDQUMsSyxFQUNxQjtBQUFBLGtCQUtqQkEsS0FBSyxDQUFDQyxVQUFOLElBQW9CLEVBTEg7QUFBQSxxQ0FFbkJDLFlBRm1CO0FBQUEsVUFFbkJBLFlBRm1CLG1DQUVKLENBRkk7QUFBQSxxQ0FHbkJDLFlBSG1CO0FBQUEsVUFHbkJBLFlBSG1CLG1DQUdKLEtBSEk7QUFBQSx3Q0FJbkJDLHdCQUptQjtBQUFBLFVBSW5CQSx3QkFKbUIsc0NBSVFWLCtCQUpSOztBQU9yQixVQUFJLENBQUNJLEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNELE9BVG9CLENBV3JCOzs7QUFDQSxVQUFJTyxTQUFTLEdBQUdOLFFBQVEsQ0FBQ08sTUFBVCxLQUFvQixDQUFwQixHQUF3QlAsUUFBUSxDQUFDLENBQUQsQ0FBaEMsR0FBc0MsQ0FBdEQsQ0FacUIsQ0FjckI7O0FBQ0FNLE1BQUFBLFNBQVMsSUFBSUQsd0JBQXdCLENBQUM7QUFDcENULFFBQUFBLHVCQUF1QixFQUFFRyxLQUFLLENBQUNILHVCQURLO0FBRXBDQyxRQUFBQSxZQUFZLEVBQUVFLEtBQUssQ0FBQ0Y7QUFGZ0IsT0FBRCxDQUFyQztBQUlBUyxNQUFBQSxTQUFTLEdBQUdFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxTQUFULEVBQW9CRixZQUFwQixDQUFaO0FBQ0FFLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDRSxHQUFMLENBQVNKLFNBQVQsRUFBb0JILFlBQXBCLENBQVo7QUFFQSxhQUFPUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCYixLQUFsQixFQUF5QjtBQUM5QmMsUUFBQUEsU0FBUyxFQUFFLENBQUNiLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJNLFNBQTNCO0FBRG1CLE9BQXpCLENBQVA7QUFHRDs7O3NDQUVpQlAsSyxFQUF5QkUsSyxFQUFxQztBQUM5RSxVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNnQixnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGOEUsQ0FHOUU7O0FBQ0EsMkZBQXdCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF4QixFQUF3RUEsS0FBeEU7QUFDRDs7O3VDQUVrQkYsSyxFQUEwQkUsSyxFQUFxQztBQUNoRixVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNvQixLQUExQixDQUFuQjtBQUNBLFVBQU1uQixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGZ0YsQ0FHaEY7O0FBQ0EsNEZBQXlCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF6QixFQUF5RUEsS0FBekU7QUFDRDs7OzhCQUVTRixLLEVBQW9EO0FBQzVELFVBQUlxQixNQUFNLGdGQUFtQnJCLEtBQW5CLENBQVY7O0FBQ0EsVUFBSXFCLE1BQU0sS0FBSyxNQUFmLEVBQXVCO0FBQ3JCQSxRQUFBQSxNQUFNLEdBQUcsV0FBVDtBQUNEOztBQUNELGFBQU9BLE1BQVA7QUFDRDs7O3lEQUdDQyxRLFNBUVE7QUFBQSxVQU5OekIsdUJBTU0sU0FOTkEsdUJBTU07QUFBQSxVQUxOQyxZQUtNLFNBTE5BLFlBS007QUFDUjtBQUNBLFVBQU15QixjQUFjLEdBQ2pCLGVBQWVkLElBQUksQ0FBQ2UsR0FBTCxDQUFVRixRQUFRLENBQUNHLFFBQVQsR0FBb0JoQixJQUFJLENBQUNpQixFQUExQixHQUFnQyxHQUF6QyxDQUFoQixHQUFpRWpCLElBQUksQ0FBQ2tCLEdBQUwsQ0FBUyxDQUFULEVBQVlMLFFBQVEsQ0FBQ00sSUFBckIsQ0FEbkU7QUFHQSxhQUFRTCxjQUFjLElBQUkxQix1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUE3QyxDQUFmLEdBQW9FLENBQTNFO0FBQ0Q7Ozs7RUFyRWdDK0Isc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlUHJvcHMsIFBvaW50ZXJNb3ZlRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9kaWZ5TW9kZSB9IGZyb20gJy4vbW9kaWZ5LW1vZGUnO1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlKHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gIHNjcmVlbkNvb3Jkcyxcbn06IHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xufSkge1xuICByZXR1cm4gMTAgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pO1xufVxuXG5leHBvcnQgY2xhc3MgRWxldmF0aW9uTW9kZSBleHRlbmRzIE1vZGlmeU1vZGUge1xuICBtYWtlRWxldmF0ZWRFdmVudChcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudCB8IFN0b3BEcmFnZ2luZ0V2ZW50LFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbixcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFldmVudC5wb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIC8vICRGbG93Rml4TWUgLSByZWFsbHksIEkga25vdyBpdCBoYXMgc29tZXRoaW5nIGF0IGluZGV4IDJcbiAgICBsZXQgZWxldmF0aW9uID0gcG9zaXRpb24ubGVuZ3RoID09PSAzID8gcG9zaXRpb25bMl0gOiAwO1xuXG4gICAgLy8gY2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlIGlzIGNvbmZpZ3VyYWJsZSBiZWNhdXNlIChhdCB0aGlzIHRpbWUpIG1vZGVzIGFyZSBub3QgYXdhcmUgb2YgdGhlIHZpZXdwb3J0XG4gICAgZWxldmF0aW9uICs9IGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSh7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBzY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICB9KTtcbiAgICBlbGV2YXRpb24gPSBNYXRoLm1pbihlbGV2YXRpb24sIG1heEVsZXZhdGlvbik7XG4gICAgZWxldmF0aW9uID0gTWF0aC5tYXgoZWxldmF0aW9uLCBtaW5FbGV2YXRpb24pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IFtwb3NpdGlvblswXSwgcG9zaXRpb25bMV0sIGVsZXZhdGlvbl0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbiwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5tYWtlRWxldmF0ZWRFdmVudChldmVudCwgcG9zaXRpb24sIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGN1cnNvciA9IHN1cGVyLmdldEN1cnNvcihldmVudCk7XG4gICAgaWYgKGN1cnNvciA9PT0gJ2NlbGwnKSB7XG4gICAgICBjdXJzb3IgPSAnbnMtcmVzaXplJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2VXaXRoVmlld3BvcnQoXG4gICAgdmlld3BvcnQ6IGFueSxcbiAgICB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICB9OiB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICAvLyBTb3VyY2U6IGh0dHBzOi8vZ2lzLnN0YWNrZXhjaGFuZ2UuY29tL2EvMTI3OTQ5LzExMTgwNFxuICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID1cbiAgICAgICgxNTY1NDMuMDMzOTIgKiBNYXRoLmNvcygodmlld3BvcnQubGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpIC8gTWF0aC5wb3coMiwgdmlld3BvcnQuem9vbSk7XG5cbiAgICByZXR1cm4gKG1ldGVyc1BlclBpeGVsICogKHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdIC0gc2NyZWVuQ29vcmRzWzFdKSkgLyAyO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/extend-line-string-mode.js b/modules/edit-modes/dist-es6/lib/extend-line-string-mode.js new file mode 100644 index 000000000..a372cab26 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/extend-line-string-mode.js @@ -0,0 +1,138 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtendLineStringMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ExtendLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ExtendLineStringMode, _GeoJsonEditMode); + + var _super = _createSuper(ExtendLineStringMode); + + function ExtendLineStringMode() { + _classCallCheck(this, ExtendLineStringMode); + + return _super.apply(this, arguments); + } + + _createClass(ExtendLineStringMode, [{ + key: "getSingleSelectedLineString", + value: function getSingleSelectedLineString(props) { + var selectedGeometry = this.getSelectedGeometry(props); + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + return selectedGeometry; + } + + return null; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var selectedIndexes = props.selectedIndexes; + var selectedLineString = this.getSingleSelectedLineString(props); + + if (!selectedLineString) { + console.warn("ExtendLineStringMode only supported for single LineString selection"); // eslint-disable-line + + return; + } // Extend the LineString + + + var positionIndexes = [selectedLineString.coordinates.length]; + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.drawAtFront) { + positionIndexes = [0]; + } + + var featureIndex = selectedIndexes[0]; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: event.mapCoords + } + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var selectedLineString = this.getSingleSelectedLineString(props); + + if (!selectedLineString) { + // nothing to do + // @ts-ignore + return guides; + } + + var mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords; // Draw an extension line starting from one end of the selected LineString to the cursor + + var startPosition = null; + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.drawAtFront) { + startPosition = selectedLineString.coordinates[0]; + } else { + startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1]; + } + + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [startPosition, mapCoords] + } + }); // @ts-ignore + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }]); + + return ExtendLineStringMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ExtendLineStringMode = ExtendLineStringMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0ZW5kLWxpbmUtc3RyaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRXh0ZW5kTGluZVN0cmluZ01vZGUiLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidHlwZSIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleGVzIiwic2VsZWN0ZWRMaW5lU3RyaW5nIiwiZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nIiwiY29uc29sZSIsIndhcm4iLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsIm1vZGVDb25maWciLCJkcmF3QXRGcm9udCIsImZlYXR1cmVJbmRleCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwiYWRkUG9zaXRpb24iLCJtYXBDb29yZHMiLCJnZXRPYmplY3QiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJwb3NpdGlvbiIsImd1aWRlcyIsImZlYXR1cmVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJzdGFydFBvc2l0aW9uIiwicHVzaCIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxvQjs7Ozs7Ozs7Ozs7OztnREFDaUJDLEssRUFBb0U7QUFDOUYsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsQ0FBeUJGLEtBQXpCLENBQXpCOztBQUVBLFVBQUlDLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FBQ0UsSUFBakIsS0FBMEIsWUFBbEQsRUFBZ0U7QUFDOUQsZUFBT0YsZ0JBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O2dDQUVXRyxLLEVBQW1CSixLLEVBQXFDO0FB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LGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24sIExpbmVTdHJpbmcsIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuZExpbmVTdHJpbmdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogTGluZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkocHJvcHMpO1xuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEdlb21ldHJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRJbmRleGVzIH0gPSBwcm9wcztcbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG5cbiAgICBpZiAoIXNlbGVjdGVkTGluZVN0cmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBFeHRlbmRMaW5lU3RyaW5nTW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRlbmQgdGhlIExpbmVTdHJpbmdcbiAgICBsZXQgcG9zaXRpb25JbmRleGVzID0gW3NlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGhdO1xuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgIH1cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQubWFwQ29vcmRzKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcHJvcHMub25FZGl0KHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG4gICAgaWYgKCFzZWxlY3RlZExpbmVTdHJpbmcpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwQ29vcmRzID0gcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gRHJhdyBhbiBleHRlbnNpb24gbGluZSBzdGFydGluZyBmcm9tIG9uZSBlbmQgb2YgdGhlIHNlbGVjdGVkIExpbmVTdHJpbmcgdG8gdGhlIGN1cnNvclxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1tzZWxlY3RlZExpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBtYXBDb29yZHNdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/extrude-mode.js b/modules/edit-modes/dist-es6/lib/extrude-mode.js new file mode 100644 index 000000000..b2803dcd0 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/extrude-mode.js @@ -0,0 +1,321 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtrudeMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _utils = require("../utils"); + +var _modifyMode = require("./modify-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ExtrudeMode = /*#__PURE__*/function (_ModifyMode) { + _inherits(ExtrudeMode, _ModifyMode); + + var _super = _createSuper(ExtrudeMode); + + function ExtrudeMode() { + var _this; + + _classCallCheck(this, ExtrudeMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "isPointAdded", false); + + return _this; + } + + _createClass(ExtrudeMode, [{ + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + var featureIndex = editHandle.properties.featureIndex; + var positionIndexes = editHandle.properties.positionIndexes; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); + positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + // p3 and p4 are end points for moving (extruding) edge + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'extruding', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: this.nextPositionIndexes(positionIndexes, size), + position: p3 + } + }); + event.cancelPan(); + } + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var _editHandle$propertie = editHandle.properties, + positionIndexes = _editHandle$propertie.positionIndexes, + featureIndex = _editHandle$propertie.featureIndex; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + + if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) { + updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2); + } + + if (!this.isOrthogonal(this.prevPositionIndexes(positionIndexes, size), featureIndex, size, props.data)) { + updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1); + this.isPointAdded = true; + } + + props.onEdit({ + updatedData: updatedData.getObject(), + editType: 'startExtruding', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: p1 + } + }); + } + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (selectedFeatureIndexes.length && editHandle) { + var featureIndex = editHandle.properties.featureIndex; + var positionIndexes = editHandle.properties.positionIndexes; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); + positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + // p3 and p4 are end points for new moved (extruded) edge + var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), + _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2), + p3 = _generatePointsParall4[0], + p4 = _generatePointsParall4[1]; + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'extruded', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: p3 + } + }); + } + } + + this.isPointAdded = false; + } + }, { + key: "coordinatesSize", + value: function coordinatesSize(positionIndexes, featureIndex, _ref) { + var features = _ref.features; + var size = 0; + + if (Array.isArray(positionIndexes)) { + var feature = features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes = _slicedToArray(positionIndexes, 2), + a = _positionIndexes[0], + b = _positionIndexes[1]; + + if (coordinates.length && coordinates[a].length) { + size = coordinates[a][b].length; + } + } else { + var _positionIndexes2 = _slicedToArray(positionIndexes, 1), + _b = _positionIndexes2[0]; + + if (coordinates.length && coordinates[_b].length) { + size = coordinates[_b].length; + } + } + } + + return size; + } + }, { + key: "getBearing", + value: function getBearing(p1, p2) { + var angle = (0, _bearing["default"])(p1, p2); + + if (angle < 0) { + return Math.floor(360 + angle); + } + + return Math.floor(angle); + } + }, { + key: "isOrthogonal", + value: function isOrthogonal(positionIndexes, featureIndex, size, features) { + if (!Array.isArray(positionIndexes)) { + return false; + } + + if (positionIndexes[positionIndexes.length - 1] === size - 1) { + positionIndexes[positionIndexes.length - 1] = 0; + } + + var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, features); + var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex, features); + var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features); + var prevAngle = this.getBearing(currentPoint, prevPoint); + var nextAngle = this.getBearing(currentPoint, nextPoint); + return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle)); + } + }, { + key: "nextPositionIndexes", + value: function nextPositionIndexes(positionIndexes, size) { + if (!Array.isArray(positionIndexes)) { + return []; + } + + var next = _toConsumableArray(positionIndexes); + + if (next.length) { + next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1; + } + + return next; + } + }, { + key: "prevPositionIndexes", + value: function prevPositionIndexes(positionIndexes, size) { + if (!Array.isArray(positionIndexes)) { + return []; + } + + var prev = _toConsumableArray(positionIndexes); + + if (prev.length) { + prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1; + } + + return prev; + } + }, { + key: "getPointForPositionIndexes", + value: function getPointForPositionIndexes(positionIndexes, featureIndex, _ref2) { + var features = _ref2.features; + var p1; + + if (Array.isArray(positionIndexes)) { + var feature = features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes3 = _slicedToArray(positionIndexes, 3), + a = _positionIndexes3[0], + b = _positionIndexes3[1], + c = _positionIndexes3[2]; + + if (coordinates.length && coordinates[a].length) { + p1 = coordinates[a][b][c]; + } + } else { + var _positionIndexes4 = _slicedToArray(positionIndexes, 2), + _b2 = _positionIndexes4[0], + _c = _positionIndexes4[1]; + + if (coordinates.length && coordinates[_b2].length) { + p1 = coordinates[_b2][_c]; + } + } + } + + return p1; + } + }]); + + return ExtrudeMode; +}(_modifyMode.ModifyMode); + +exports.ExtrudeMode = ExtrudeMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0cnVkZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkV4dHJ1ZGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiZmVhdHVyZUluZGV4IiwicHJvcGVydGllcyIsInBvc2l0aW9uSW5kZXhlcyIsInNpemUiLCJjb29yZGluYXRlc1NpemUiLCJkYXRhIiwiaXNQb2ludEFkZGVkIiwibmV4dFBvc2l0aW9uSW5kZXhlcyIsInAxIiwiZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMiLCJwcmV2UG9zaXRpb25JbmRleGVzIiwicDIiLCJtYXBDb29yZHMiLCJwMyIsInA0IiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VQb3NpdGlvbiIsImdldE9iamVjdCIsIm9uRWRpdCIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsInBvc2l0aW9uIiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkSW5kZXhlcyIsInBpY2tzIiwibGVuZ3RoIiwiaXNPcnRob2dvbmFsIiwiYWRkUG9zaXRpb24iLCJmZWF0dXJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsImdlb21ldHJ5IiwiYSIsImIiLCJhbmdsZSIsIk1hdGgiLCJmbG9vciIsInByZXZQb2ludCIsIm5leHRQb2ludCIsImN1cnJlbnRQb2ludCIsInByZXZBbmdsZSIsImdldEJlYXJpbmciLCJuZXh0QW5nbGUiLCJpbmNsdWRlcyIsImFicyIsIm5leHQiLCJwcmV2IiwiYyIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQU9BOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFc7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBR0ks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Q0FBZVYsTUFBekMsRUFBaUQ7QUFDL0NwQixZQUFBQSxFQUFFLEdBQUcyQixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTzVDLEVBQVA7QUFDRDs7OztFQWpQOEI2QyxzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IE1vZGVQcm9wcywgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCwgRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL21vZGlmeS1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dHJ1ZGVNb2RlIGV4dGVuZHMgTW9kaWZ5TW9kZSB7XG4gIC8vIHRoaXMgbW9kZSBpcyBidXN0ZWQgPShcblxuICBpc1BvaW50QWRkZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCB9ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHsgcG9zaXRpb25JbmRleGVzIH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpXG4gICAgICAgIDogcG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgIHByb3BzLmRhdGFcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbW92aW5nIChleHRydWRpbmcpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRpbmcnLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgICAgIGlmICghdGhpcy5pc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHNpemUsIHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc09ydGhvZ29uYWwoXG4gICAgICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBwcm9wcy5kYXRhXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwMSk7XG4gICAgICAgICAgdGhpcy5pc1BvaW50QWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICAgICAgZWRpdFR5cGU6ICdzdGFydEV4dHJ1ZGluZycsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG4gICAgICBsZXQgeyBwb3NpdGlvbkluZGV4ZXMgfSA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4LCBwcm9wcy5kYXRhKTtcbiAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICAvLyBwMyBhbmQgcDQgYXJlIGVuZCBwb2ludHMgZm9yIG5ldyBtb3ZlZCAoZXh0cnVkZWQpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRlZCcsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc1BvaW50QWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICB7IGZlYXR1cmVzIH06IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XTtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgICBpZiAocG9zaXRpb25JbmRleGVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBjb25zdCBbYSwgYl0gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSA9IGNvb3JkaW5hdGVzW2FdW2JdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2JdID0gcG9zaXRpb25JbmRleGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cblxuICBnZXRCZWFyaW5nKHAxOiBhbnksIHAyOiBhbnkpIHtcbiAgICBjb25zdCBhbmdsZSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcigzNjAgKyBhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGFuZ2xlKTtcbiAgfVxuXG4gIGlzT3J0aG9nb25hbChcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgZmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIGZlYXR1cmVzXG4gICAgKTtcbiAgICBjb25zdCBuZXh0UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBmZWF0dXJlc1xuICAgICk7XG4gICAgY29uc3QgY3VycmVudFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgZmVhdHVyZXMpO1xuICAgIGNvbnN0IHByZXZBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIHByZXZQb2ludCk7XG4gICAgY29uc3QgbmV4dEFuZ2xlID0gdGhpcy5nZXRCZWFyaW5nKGN1cnJlbnRQb2ludCwgbmV4dFBvaW50KTtcbiAgICByZXR1cm4gWzg5LCA5MCwgOTEsIDI2OSwgMjcwLCAyNzFdLmluY2x1ZGVzKE1hdGguYWJzKHByZXZBbmdsZSAtIG5leHRBbmdsZSkpO1xuICB9XG5cbiAgbmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLCBzaXplOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJldiA9IFsuLi5wb3NpdGlvbkluZGV4ZXNdO1xuICAgIGlmIChwcmV2Lmxlbmd0aCkge1xuICAgICAgcHJldltwcmV2Lmxlbmd0aCAtIDFdID0gcHJldltwcmV2Lmxlbmd0aCAtIDFdID09PSAwID8gc2l6ZSAtIDIgOiBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gLSAxO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIGdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHsgZmVhdHVyZXMgfTogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKSB7XG4gICAgbGV0IHAxO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBmZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAvLyBmb3IgTXVsdGkgcG9seWdvbnMsIGxlbmd0aCB3aWxsIGJlIDNcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFthLCBiLCBjXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCAmJiBjb29yZGluYXRlc1thXS5sZW5ndGgpIHtcbiAgICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgICAgcDEgPSBjb29yZGluYXRlc1tiXVtjXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/geojson-edit-mode.js b/modules/edit-modes/dist-es6/lib/geojson-edit-mode.js new file mode 100644 index 000000000..900e95dc8 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/geojson-edit-mode.js @@ -0,0 +1,325 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getIntermediatePosition = getIntermediatePosition; +exports.GeoJsonEditMode = void 0; + +var _union = _interopRequireDefault(require("@turf/union")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _intersect = _interopRequireDefault(require("@turf/intersect")); + +var _rewind = _interopRequireDefault(require("@turf/rewind")); + +var _utils = require("../utils"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 DEFAULT_GUIDES = { + type: 'FeatureCollection', + features: [] +}; +var DEFAULT_TOOLTIPS = []; // Main interface for `EditMode`s that edit GeoJSON + +var GeoJsonEditMode = /*#__PURE__*/function () { + function GeoJsonEditMode() { + _classCallCheck(this, GeoJsonEditMode); + + _defineProperty(this, "_clickSequence", []); + } + + _createClass(GeoJsonEditMode, [{ + key: "getGuides", + value: function getGuides(props) { + return DEFAULT_GUIDES; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + return DEFAULT_TOOLTIPS; + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature(props) { + if (props.selectedIndexes.length === 1) { + return props.data.features[props.selectedIndexes[0]]; + } + + return null; + } + }, { + key: "getSelectedGeometry", + value: function getSelectedGeometry(props) { + var feature = this.getSelectedFeature(props); + + if (feature) { + return feature.geometry; + } + + return null; + } + }, { + key: "getSelectedFeaturesAsFeatureCollection", + value: function getSelectedFeaturesAsFeatureCollection(props) { + var features = props.data.features; + var selectedFeatures = props.selectedIndexes.map(function (selectedIndex) { + return features[selectedIndex]; + }); + return { + type: 'FeatureCollection', + features: selectedFeatures + }; + } + }, { + key: "getClickSequence", + value: function getClickSequence() { + return this._clickSequence; + } + }, { + key: "addClickSequence", + value: function addClickSequence(_ref) { + var mapCoords = _ref.mapCoords; + + this._clickSequence.push(mapCoords); + } + }, { + key: "resetClickSequence", + value: function resetClickSequence() { + this._clickSequence = []; + } + }, { + key: "getTentativeGuide", + value: function getTentativeGuide(props) { + var guides = this.getGuides(props); // @ts-ignore + + return guides.features.find(function (f) { + return f.properties && f.properties.guideType === 'tentative'; + }); + } + }, { + key: "isSelectionPicked", + value: function isSelectionPicked(picks, props) { + if (!picks.length) return false; + var pickedFeatures = (0, _utils.getNonGuidePicks)(picks).map(function (_ref2) { + var index = _ref2.index; + return index; + }); + var pickedHandles = (0, _utils.getPickedEditHandles)(picks).map(function (_ref3) { + var properties = _ref3.properties; + return properties.featureIndex; + }); + var pickedIndexes = new Set([].concat(_toConsumableArray(pickedFeatures), _toConsumableArray(pickedHandles))); + return props.selectedIndexes.some(function (index) { + return pickedIndexes.has(index); + }); + } + }, { + key: "rewindPolygon", + value: function rewindPolygon(feature) { + var geometry = feature.geometry; + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + if (isPolygonal) { + // @ts-ignore + return (0, _rewind["default"])(feature); + } + + return feature; + } + }, { + key: "getAddFeatureAction", + value: function getAddFeatureAction(featureOrGeometry, features) { + // Unsure why flow can't deal with Geometry type, but there I fixed it + var featureOrGeometryAsAny = featureOrGeometry; + var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : { + type: 'Feature', + properties: {}, + geometry: featureOrGeometryAsAny + }; + var rewindFeature = this.rewindPolygon(feature); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features).addFeature(rewindFeature).getObject(); + return { + updatedData: updatedData, + editType: 'addFeature', + editContext: { + featureIndexes: [updatedData.features.length - 1] + } + }; + } + }, { + key: "getAddManyFeaturesAction", + value: function getAddManyFeaturesAction(_ref4, features) { + var featuresToAdd = _ref4.features; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features); + var initialIndex = updatedData.getObject().features.length; + var updatedIndexes = []; + + var _iterator = _createForOfIteratorHelper(featuresToAdd), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + var properties = feature.properties, + geometry = feature.geometry; + var geometryAsAny = geometry; + updatedData = updatedData.addFeature({ + type: 'Feature', + properties: properties, + geometry: geometryAsAny + }); + updatedIndexes.push(initialIndex + updatedIndexes.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + updatedData: updatedData.getObject(), + editType: 'addFeature', + editContext: { + featureIndexes: updatedIndexes + } + }; + } + }, { + key: "getAddFeatureOrBooleanPolygonAction", + value: function getAddFeatureOrBooleanPolygonAction(featureOrGeometry, props) { + var featureOrGeometryAsAny = featureOrGeometry; + var selectedFeature = this.getSelectedFeature(props); + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.booleanOperation) { + if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection'); + return null; + } + + var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : { + type: 'Feature', + geometry: featureOrGeometryAsAny + }; + var updatedGeometry; + + if (modeConfig.booleanOperation === 'union') { + updatedGeometry = (0, _union["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'difference') { + // @ts-ignore + updatedGeometry = (0, _difference["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'intersection') { + // @ts-ignore + updatedGeometry = (0, _intersect["default"])(selectedFeature, feature); + } else { + // eslint-disable-next-line no-console,no-undef + console.warn("Invalid booleanOperation ".concat(modeConfig.booleanOperation)); + return null; + } + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Boolean operation erased entire polygon.'); + return null; + } + + var featureIndex = props.selectedIndexes[0]; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, updatedGeometry.geometry).getObject(); + var editAction = { + updatedData: updatedData, + editType: 'unionGeometry', + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + + return this.getAddFeatureAction(featureOrGeometry, props.data); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + return null; + } + }, { + key: "handleClick", + value: function handleClick(event, props) {} + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var tentativeFeature = this.createTentativeFeature(props); + + if (tentativeFeature) { + props.onEdit({ + updatedData: props.data, + editType: 'updateTentativeFeature', + editContext: { + feature: tentativeFeature + } + }); + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) {} + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) {} + }, { + key: "handleDragging", + value: function handleDragging(event, props) {} + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (event.key === 'Escape') { + this.resetClickSequence(); + props.onEdit({ + // Because the new drawing feature is dropped, so the data will keep as the same. + updatedData: props.data, + editType: 'cancelFeature', + editContext: {} + }); + } + } + }]); + + return GeoJsonEditMode; +}(); + +exports.GeoJsonEditMode = GeoJsonEditMode; + +function getIntermediatePosition(position1, position2) { + var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore + + return intermediatePosition; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ2VvanNvbi1lZGl0LW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9HVUlERVMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJERUZBVUxUX1RPT0xUSVBTIiwiR2VvSnNvbkVkaXRNb2RlIiwicHJvcHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJsZW5ndGgiLCJkYXRhIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsIm1hcCIsInNlbGVjdGVkSW5kZXgiLCJfY2xpY2tTZXF1ZW5jZSIsIm1hcENvb3JkcyIsInB1c2giLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJmaW5kIiwiZiIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJwaWNrcyIsInBpY2tlZEZlYXR1cmVzIiwiaW5kZXgiLCJwaWNrZWRIYW5kbGVzIiwiZmVhdHVyZUluZGV4IiwicGlja2VkSW5kZXhlcyIsIlNldCIsInNvbWUiLCJoYXMiLCJpc1BvbHlnb25hbCIsImZlYXR1cmVPckdlb21ldHJ5IiwiZmVhdHVyZU9yR2VvbWV0cnlBc0FueSIsInJld2luZEZlYXR1cmUiLCJyZXdpbmRQb2x5Z29uIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImFkZEZlYXR1cmUiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJmZWF0dXJlc1RvQWRkIiwiaW5pdGlhbEluZGV4IiwidXBkYXRlZEluZGV4ZXMiLCJnZW9tZXRyeUFzQW55Iiwic2VsZWN0ZWRGZWF0dXJlIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZWRHZW9tZXRyeSIsInJlcGxhY2VHZW9tZXRyeSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiZXZlbnQiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiY3JlYXRlVGVudGF0aXZlRmVhdHVyZSIsIm9uRWRpdCIsImtleSIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBZ0JBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU1BLGNBQXNDLEdBQUc7QUFDN0NDLEVBQUFBLElBQUksRUFBRSxtQkFEdUM7QUFFN0NDLEVBQUFBLFFBQVEsRUFBRTtBQUZtQyxDQUEvQztBQUlBLElBQU1DLGdCQUEyQixHQUFHLEVBQXBDLEMsQ0FFQTs7SUFPYUMsZTs7Ozs0Q0FDa0IsRTs7Ozs7OEJBRW5CQyxLLEVBQTZEO0FBQ3JFLGFBQU9MLGNBQVA7QUFDRDs7O2dDQUVXSyxLLEVBQWdEO0FBQzFELGFBQU9GLGdCQUFQO0FBQ0Q7Ozt1Q0FFa0JFLEssRUFBaUU7QUFDbEYsVUFBSUEsS0FBSyxDQUFDQyxlQUFOLENBQXNCQyxNQUF0QixLQUFpQyxDQUFyQyxFQUF3QztBQUN0QyxlQUFPRixLQUFLLENBQUNHLElBQU4sQ0FBV04sUUFBWCxDQUFvQkcsS0FBSyxDQUFDQyxlQUFOLENBQXNCLENBQXRCLENBQXBCLENBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O3dDQUVtQkQsSyxFQUFrRTtBQUNwRixVQUFNSSxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JMLEtBQXhCLENBQWhCOztBQUNBLFVBQUlJLE9BQUosRUFBYTtBQUNYLGVBQU9BLE9BQU8sQ0FBQ0UsUUFBZjtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7MkRBRXNDTixLLEVBQXdEO0FBQUEsVUFDckZILFFBRHFGLEdBQ3hFRyxLQUFLLENBQUNHLElBRGtFLENBQ3JGTixRQURxRjtBQUU3RixVQUFNVSxnQkFBZ0IsR0FBR1AsS0FBSyxDQUFDQyxlQUFOLENBQXNCTyxHQUF0QixDQUEwQixVQUFDQyxhQUFEO0FBQUEsZUFBbUJaLFFBQVEsQ0FBQ1ksYUFBRCxDQUEzQjtBQUFBLE9BQTFCLENBQXpCO0FBQ0EsYUFBTztBQUNMYixRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTEMsUUFBQUEsUUFBUSxFQUFFVTtBQUZMLE9BQVA7QUFJRDs7O3VDQUU4QjtBQUM3QixhQUFPLEtBQUtHLGNBQVo7QUFDRDs7OzJDQUVpRDtBQUFBLFVBQS9CQyxTQUErQixRQUEvQkEsU0FBK0I7O0FBQ2hELFdBQUtELGNBQUwsQ0FBb0JFLElBQXBCLENBQXlCRCxTQUF6QjtBQUNEOzs7eUNBRTBCO0FBQ3pCLFdBQUtELGNBQUwsR0FBc0IsRUFBdEI7QUFDRDs7O3NDQUVpQlYsSyxFQUEwRTtBQUMxRixVQUFNYSxNQUFNLEdBQUcsS0FBS0MsU0FBTCxDQUFlZCxLQUFmLENBQWYsQ0FEMEYsQ0FHMUY7O0FBQ0EsYUFBT2EsTUFBTSxDQUFDaEIsUUFBUCxDQUFnQmtCLElBQWhCLENBQXFCLFVBQUNDLENBQUQ7QUFBQSxlQUFPQSxDQUFDLENBQUNDLFVBQUYsSUFBZ0JELENBQUMsQ0FBQ0MsVUFBRixDQUFhQyxTQUFiLEtBQTJCLFdBQWxEO0FBQUEsT0FBckIsQ0FBUDtBQUNEOzs7c0NBRWlCQyxLLEVBQWVuQixLLEVBQThDO0FBQzdFLFVBQUksQ0FBQ21CLEtBQUssQ0FBQ2pCLE1BQVgsRUFBbUIsT0FBTyxLQUFQO0FBQ25CLFVBQU1rQixjQUFjLEdBQUcsNkJBQWlCRCxLQUFqQixFQUF3QlgsR0FBeEIsQ0FBNEI7QUFBQSxZQUFHYSxLQUFILFNBQUdBLEtBQUg7QUFBQSxlQUFlQSxLQUFmO0FBQUEsT0FBNUIsQ0FBdkI7QUFDQSxVQUFNQyxhQUFhLEdBQUcsaUNBQXFCSCxLQUFyQixFQUE0QlgsR0FBNUIsQ0FDcEI7QUFBQSxZQUFHUyxVQUFILFNBQUdBLFVBQUg7QUFBQSxlQUFvQkEsVUFBVSxDQUFDTSxZQUEvQjtBQUFBLE9BRG9CLENBQXRCO0FBR0EsVUFBTUMsYUFBYSxHQUFHLElBQUlDLEdBQUosOEJBQVlMLGNBQVosc0JBQStCRSxhQUEvQixHQUF0QjtBQUNBLGFBQU90QixLQUFLLENBQUNDLGVBQU4sQ0FBc0J5QixJQUF0QixDQUEyQixVQUFDTCxLQUFEO0FBQUEsZUFBV0csYUFBYSxDQUFDRyxHQUFkLENBQWtCTixLQUFsQixDQUFYO0FBQUEsT0FBM0IsQ0FBUDtBQUNEOzs7a0NBRWFqQixPLEVBQTJCO0FBQUEsVUFDL0JFLFFBRCtCLEdBQ2xCRixPQURrQixDQUMvQkUsUUFEK0I7QUFHdkMsVUFBTXNCLFdBQVcsR0FBR3RCLFFBQVEsQ0FBQ1YsSUFBVCxLQUFrQixTQUFsQixJQUErQlUsUUFBUSxDQUFDVixJQUFULEtBQWtCLGNBQXJFOztBQUNBLFVBQUlnQyxXQUFKLEVBQWlCO0FBQ2Y7QUFDQSxlQUFPLHdCQUFPeEIsT0FBUCxDQUFQO0FBQ0Q7O0FBRUQsYUFBT0EsT0FBUDtBQUNEOzs7d0NBR0N5QixpQixFQUNBaEMsUSxFQUNtQjtBQUNuQjtBQUNBLFVBQU1pQyxzQkFBMkIsR0FBR0QsaUJBQXBDO0FBRUEsVUFBTXpCLE9BQVksR0FDaEIwQixzQkFBc0IsQ0FBQ2xDLElBQXZCLEtBQWdDLFNBQWhDLEdBQ0lrQyxzQkFESixHQUVJO0FBQ0VsQyxRQUFBQSxJQUFJLEVBQUUsU0FEUjtBQUVFcUIsUUFBQUEsVUFBVSxFQUFFLEVBRmQ7QUFHRVgsUUFBQUEsUUFBUSxFQUFFd0I7QUFIWixPQUhOO0FBU0EsVUFBTUMsYUFBYSxHQUFHLEtBQUtDLGFBQUwsQ0FBbUI1QixPQUFuQixDQUF0QjtBQUNBLFVBQU02QixXQUFXLEdBQUcsSUFBSUMsc0RBQUosQ0FBK0JyQyxRQUEvQixFQUNqQnNDLFVBRGlCLENBQ05KLGFBRE0sRUFFakJLLFNBRmlCLEVBQXBCO0FBSUEsYUFBTztBQUNMSCxRQUFBQSxXQUFXLEVBQVhBLFdBREs7QUFFTEksUUFBQUEsUUFBUSxFQUFFLFlBRkw7QUFHTEMsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDTixXQUFXLENBQUNwQyxRQUFaLENBQXFCSyxNQUFyQixHQUE4QixDQUEvQjtBQURMO0FBSFIsT0FBUDtBQU9EOzs7b0RBSUNMLFEsRUFDbUI7QUFBQSxVQUZQMkMsYUFFTyxTQUZqQjNDLFFBRWlCO0FBQ25CLFVBQUlvQyxXQUFXLEdBQUcsSUFBSUMsc0RBQUosQ0FBK0JyQyxRQUEvQixDQUFsQjtBQUNBLFVBQU00QyxZQUFZLEdBQUdSLFdBQVcsQ0FBQ0csU0FBWixHQUF3QnZDLFFBQXhCLENBQWlDSyxNQUF0RDtBQUNBLFVBQU13QyxjQUFjLEdBQUcsRUFBdkI7O0FBSG1CLGlEQUlHRixhQUpIO0FBQUE7O0FBQUE7QUFJbkIsNERBQXFDO0FBQUEsY0FBMUJwQyxPQUEwQjtBQUFBLGNBQzNCYSxVQUQyQixHQUNGYixPQURFLENBQzNCYSxVQUQyQjtBQUFBLGNBQ2ZYLFFBRGUsR0FDRkYsT0FERSxDQUNmRSxRQURlO0FBRW5DLGNBQU1xQyxhQUFrQixHQUFHckMsUUFBM0I7QUFDQTJCLFVBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDRSxVQUFaLENBQXVCO0FBQ25DdkMsWUFBQUEsSUFBSSxFQUFFLFNBRDZCO0FBRW5DcUIsWUFBQUEsVUFBVSxFQUFWQSxVQUZtQztBQUduQ1gsWUFBQUEsUUFBUSxFQUFFcUM7QUFIeUIsV0FBdkIsQ0FBZDtBQUtBRCxVQUFBQSxjQUFjLENBQUM5QixJQUFmLENBQW9CNkIsWUFBWSxHQUFHQyxjQUFjLENBQUN4QyxNQUFsRDtBQUNEO0FBYmtCO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBZW5CLGFBQU87QUFDTCtCLFFBQUFBLFdBQVcsRUFBRUEsV0FBVyxDQUFDRyxTQUFaLEVBRFI7QUFFTEMsUUFBQUEsUUFBUSxFQUFFLFlBRkw7QUFHTEMsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRUc7QUFETDtBQUhSLE9BQVA7QUFPRDs7O3dEQUdDYixpQixFQUNBN0IsSyxFQUNzQztBQUN0QyxVQUFNOEIsc0JBQTJCLEdBQUdELGlCQUFwQztBQUVBLFVBQU1lLGVBQWUsR0FBRyxLQUFLdkMsa0JBQUwsQ0FBd0JMLEtBQXhCLENBQXhCO0FBSHNDLFVBSTlCNkMsVUFKOEIsR0FJZjdDLEtBSmUsQ0FJOUI2QyxVQUo4Qjs7QUFLdEMsVUFBSUEsVUFBVSxJQUFJQSxVQUFVLENBQUNDLGdCQUE3QixFQUErQztBQUM3QyxZQUNFLENBQUNGLGVBQUQsSUFDQ0EsZUFBZSxDQUFDdEMsUUFBaEIsQ0FBeUJWLElBQXpCLEtBQWtDLFNBQWxDLElBQ0NnRCxlQUFlLENBQUN0QyxRQUFoQixDQUF5QlYsSUFBekIsS0FBa0MsY0FIdEMsRUFJRTtBQUNBO0FBQ0FtRCxVQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRSw4RUFERjtBQUdBLGlCQUFPLElBQVA7QUFDRDs7QUFFRCxZQUFNNUMsT0FBTyxHQUNYMEIsc0JBQXNCLENBQUNsQyxJQUF2QixLQUFnQyxTQUFoQyxHQUNJa0Msc0JBREosR0FFSTtBQUNFbEMsVUFBQUEsSUFBSSxFQUFFLFNBRFI7QUFFRVUsVUFBQUEsUUFBUSxFQUFFd0I7QUFGWixTQUhOO0FBUUEsWUFBSW1CLGVBQUo7O0FBQ0EsWUFBSUosVUFBVSxDQUFDQyxnQkFBWCxLQUFnQyxPQUFwQyxFQUE2QztBQUMzQ0csVUFBQUEsZUFBZSxHQUFHLHVCQUFVTCxlQUFWLEVBQTJCeEMsT0FBM0IsQ0FBbEI7QUFDRCxTQUZELE1BRU8sSUFBSXlDLFVBQVUsQ0FBQ0MsZ0JBQVgsS0FBZ0MsWUFBcEMsRUFBa0Q7QUFDdkQ7QUFDQUcsVUFBQUEsZUFBZSxHQUFHLDRCQUFlTCxlQUFmLEVBQWdDeEMsT0FBaEMsQ0FBbEI7QUFDRCxTQUhNLE1BR0EsSUFBSXlDLFVBQVUsQ0FBQ0MsZ0JBQVgsS0FBZ0MsY0FBcEMsRUFBb0Q7QUFDekQ7QUFDQUcsVUFBQUEsZUFBZSxHQUFHLDJCQUFjTCxlQUFkLEVBQStCeEMsT0FBL0IsQ0FBbEI7QUFDRCxTQUhNLE1BR0E7QUFDTDtBQUNBMkMsVUFBQUEsT0FBTyxDQUFDQyxJQUFSLG9DQUF5Q0gsVUFBVSxDQUFDQyxnQkFBcEQ7QUFDQSxpQkFBTyxJQUFQO0FBQ0Q7O0FBRUQsWUFBSSxDQUFDRyxlQUFMLEVBQXNCO0FBQ3BCO0FBQ0FGLFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLDBEQUFiO0FBQ0EsaUJBQU8sSUFBUDtBQUNEOztBQUVELFlBQU16QixZQUFZLEdBQUd2QixLQUFLLENBQUNDLGVBQU4sQ0FBc0IsQ0FBdEIsQ0FBckI7QUFFQSxZQUFNZ0MsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCbEMsS0FBSyxDQUFDRyxJQUFyQyxFQUNqQitDLGVBRGlCLENBQ0QzQixZQURDLEVBQ2EwQixlQUFlLENBQUMzQyxRQUQ3QixFQUVqQjhCLFNBRmlCLEVBQXBCO0FBSUEsWUFBTWUsVUFBNkIsR0FBRztBQUNwQ2xCLFVBQUFBLFdBQVcsRUFBWEEsV0FEb0M7QUFFcENJLFVBQUFBLFFBQVEsRUFBRSxlQUYwQjtBQUdwQ0MsVUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFlBQUFBLGNBQWMsRUFBRSxDQUFDaEIsWUFBRDtBQURMO0FBSHVCLFNBQXRDO0FBUUEsZUFBTzRCLFVBQVA7QUFDRDs7QUFDRCxhQUFPLEtBQUtDLG1CQUFMLENBQXlCdkIsaUJBQXpCLEVBQTRDN0IsS0FBSyxDQUFDRyxJQUFsRCxDQUFQO0FBQ0Q7OzsyQ0FFc0JILEssRUFBdUQ7QUFDNUUsYUFBTyxJQUFQO0FBQ0Q7OztnQ0FFV3FELEssRUFBbUJyRCxLLEVBQTJDLENBQUU7OztzQ0FDMURxRCxLLEVBQXlCckQsSyxFQUEyQztBQUNwRixVQUFNc0QsZ0JBQWdCLEdBQUcsS0FBS0Msc0JBQUwsQ0FBNEJ2RCxLQUE1QixDQUF6Qjs7QUFDQSxVQUFJc0QsZ0JBQUosRUFBc0I7QUFDcEJ0RCxRQUFBQSxLQUFLLENBQUN3RCxNQUFOLENBQWE7QUFDWHZCLFVBQUFBLFdBQVcsRUFBRWpDLEtBQUssQ0FBQ0csSUFEUjtBQUVYa0MsVUFBQUEsUUFBUSxFQUFFLHdCQUZDO0FBR1hDLFVBQUFBLFdBQVcsRUFBRTtBQUNYbEMsWUFBQUEsT0FBTyxFQUFFa0Q7QUFERTtBQUhGLFNBQWI7QUFPRDtBQUNGOzs7d0NBQ21CRCxLLEVBQTJCckQsSyxFQUEyQyxDQUFFOzs7dUNBQ3pFcUQsSyxFQUEwQnJELEssRUFBMkMsQ0FBRTs7O21DQUMzRXFELEssRUFBc0JyRCxLLEVBQTJDLENBQUU7OztnQ0FFdEVxRCxLLEVBQXNCckQsSyxFQUEyQztBQUMzRSxVQUFJcUQsS0FBSyxDQUFDSSxHQUFOLEtBQWMsUUFBbEIsRUFBNEI7QUFDMUIsYUFBS0Msa0JBQUw7QUFDQTFELFFBQUFBLEtBQUssQ0FBQ3dELE1BQU4sQ0FBYTtBQUNYO0FBQ0F2QixVQUFBQSxXQUFXLEVBQUVqQyxLQUFLLENBQUNHLElBRlI7QUFHWGtDLFVBQUFBLFFBQVEsRUFBRSxlQUhDO0FBSVhDLFVBQUFBLFdBQVcsRUFBRTtBQUpGLFNBQWI7QUFNRDtBQUNGOzs7Ozs7OztBQUdJLFNBQVNxQix1QkFBVCxDQUFpQ0MsU0FBakMsRUFBc0RDLFNBQXRELEVBQXFGO0FBQzFGLE1BQU1DLG9CQUFvQixHQUFHLENBQzNCLENBQUNGLFNBQVMsQ0FBQyxDQUFELENBQVQsR0FBZUMsU0FBUyxDQUFDLENBQUQsQ0FBekIsSUFBZ0MsR0FETCxFQUUzQixDQUFDRCxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWVDLFNBQVMsQ0FBQyxDQUFELENBQXpCLElBQWdDLEdBRkwsQ0FBN0IsQ0FEMEYsQ0FLMUY7O0FBQ0EsU0FBT0Msb0JBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmVW5pb24gZnJvbSAnQHR1cmYvdW5pb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZJbnRlcnNlY3QgZnJvbSAnQHR1cmYvaW50ZXJzZWN0JztcbmltcG9ydCByZXdpbmQgZnJvbSAnQHR1cmYvcmV3aW5kJztcblxuaW1wb3J0IHtcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUGljayxcbiAgVG9vbHRpcCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9seWdvbiwgR2VvbWV0cnksIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlcywgZ2V0Tm9uR3VpZGVQaWNrcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVkaXRNb2RlIH0gZnJvbSAnLi9lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5jb25zdCBERUZBVUxUX0dVSURFUzogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgZmVhdHVyZXM6IFtdLFxufTtcbmNvbnN0IERFRkFVTFRfVE9PTFRJUFM6IFRvb2x0aXBbXSA9IFtdO1xuXG4vLyBNYWluIGludGVyZmFjZSBmb3IgYEVkaXRNb2RlYHMgdGhhdCBlZGl0IEdlb0pTT05cbmV4cG9ydCB0eXBlIEdlb0pzb25FZGl0TW9kZVR5cGUgPSBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0pzb25FZGl0TW9kZUNvbnN0cnVjdG9yIHtcbiAgbmV3ICgpOiBHZW9Kc29uRWRpdE1vZGVUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2VvSnNvbkVkaXRNb2RlIGltcGxlbWVudHMgRWRpdE1vZGU8RmVhdHVyZUNvbGxlY3Rpb24sIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgX2NsaWNrU2VxdWVuY2U6IFBvc2l0aW9uW10gPSBbXTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gREVGQVVMVF9HVUlERVM7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIERFRkFVTFRfVE9PTFRJUFM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBwcm9wcy5kYXRhLmZlYXR1cmVzW3Byb3BzLnNlbGVjdGVkSW5kZXhlc1swXV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEdlb21ldHJ5IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gcHJvcHMuZGF0YTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzLm1hcCgoc2VsZWN0ZWRJbmRleCkgPT4gZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IHNlbGVjdGVkRmVhdHVyZXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICBhZGRDbGlja1NlcXVlbmNlKHsgbWFwQ29vcmRzIH06IENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlLnB1c2gobWFwQ29vcmRzKTtcbiAgfVxuXG4gIHJlc2V0Q2xpY2tTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlID0gW107XG4gIH1cblxuICBnZXRUZW50YXRpdmVHdWlkZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLmdldEd1aWRlcyhwcm9wcyk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcy5mZWF0dXJlcy5maW5kKChmKSA9PiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gJ3RlbnRhdGl2ZScpO1xuICB9XG5cbiAgaXNTZWxlY3Rpb25QaWNrZWQocGlja3M6IFBpY2tbXSwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBpY2tzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHBpY2tlZEZlYXR1cmVzID0gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrcykubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBwaWNrZWRIYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpLm1hcChcbiAgICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXhcbiAgICApO1xuICAgIGNvbnN0IHBpY2tlZEluZGV4ZXMgPSBuZXcgU2V0KFsuLi5waWNrZWRGZWF0dXJlcywgLi4ucGlja2VkSGFuZGxlc10pO1xuICAgIHJldHVybiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaGFzKGluZGV4KSk7XG4gIH1cblxuICByZXdpbmRQb2x5Z29uKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgaWYgKGlzUG9seWdvbmFsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcmV3aW5kKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlO1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZUFjdGlvbihcbiAgICBmZWF0dXJlT3JHZW9tZXRyeTogR2VvbWV0cnkgfCBGZWF0dXJlLFxuICAgIGZlYXR1cmVzOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3QgZmVhdHVyZTogYW55ID1cbiAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgID8gZmVhdHVyZU9yR2VvbWV0cnlBc0FueVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgfTtcblxuICAgIGNvbnN0IHJld2luZEZlYXR1cmUgPSB0aGlzLnJld2luZFBvbHlnb24oZmVhdHVyZSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZXMpXG4gICAgICAuYWRkRmVhdHVyZShyZXdpbmRGZWF0dXJlKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24oXG4gICAgeyBmZWF0dXJlczogZmVhdHVyZXNUb0FkZCB9OiBGZWF0dXJlQ29sbGVjdGlvbixcbiAgICBmZWF0dXJlczogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24ge1xuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlcyk7XG4gICAgY29uc3QgaW5pdGlhbEluZGV4ID0gdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCkuZmVhdHVyZXMubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZWRJbmRleGVzID0gW107XG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzVG9BZGQpIHtcbiAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgZ2VvbWV0cnkgfSA9IGZlYXR1cmU7XG4gICAgICBjb25zdCBnZW9tZXRyeUFzQW55OiBhbnkgPSBnZW9tZXRyeTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWRJbmRleGVzLnB1c2goaW5pdGlhbEluZGV4ICsgdXBkYXRlZEluZGV4ZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiB1cGRhdGVkSW5kZXhlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKFxuICAgIGZlYXR1cmVPckdlb21ldHJ5OiBQb2x5Z29uIHwgRmVhdHVyZSxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUocHJvcHMpO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgICAgPyBmZWF0dXJlT3JHZW9tZXRyeUFzQW55XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgICB9O1xuXG4gICAgICBsZXQgdXBkYXRlZEdlb21ldHJ5O1xuICAgICAgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ3VuaW9uJykge1xuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmVW5pb24oc2VsZWN0ZWRGZWF0dXJlLCBmZWF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAnZGlmZmVyZW5jZScpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmRGlmZmVyZW5jZShzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkludGVyc2VjdChzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGJvb2xlYW5PcGVyYXRpb24gJHttb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb259YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oJ0NhbmNlbGluZyBlZGl0LiBCb29sZWFuIG9wZXJhdGlvbiBlcmFzZWQgZW50aXJlIHBvbHlnb24uJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnkpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbjogR2VvSnNvbkVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBZGRGZWF0dXJlQWN0aW9uKGZlYXR1cmVPckdlb21ldHJ5LCBwcm9wcy5kYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmU6IHRlbnRhdGl2ZUZlYXR1cmUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHt9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIG5ldyBkcmF3aW5nIGZlYXR1cmUgaXMgZHJvcHBlZCwgc28gdGhlIGRhdGEgd2lsbCBrZWVwIGFzIHRoZSBzYW1lLlxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjYW5jZWxGZWF0dXJlJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihwb3NpdGlvbjE6IFBvc2l0aW9uLCBwb3NpdGlvbjI6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICBjb25zdCBpbnRlcm1lZGlhdGVQb3NpdGlvbiA9IFtcbiAgICAocG9zaXRpb24xWzBdICsgcG9zaXRpb24yWzBdKSAvIDIuMCxcbiAgICAocG9zaXRpb24xWzFdICsgcG9zaXRpb24yWzFdKSAvIDIuMCxcbiAgXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW50ZXJtZWRpYXRlUG9zaXRpb247XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/immutable-feature-collection.js b/modules/edit-modes/dist-es6/lib/immutable-feature-collection.js new file mode 100644 index 000000000..a1973136d --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/immutable-feature-collection.js @@ -0,0 +1,376 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImmutableFeatureCollection = void 0; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 ImmutableFeatureCollection = /*#__PURE__*/function () { + function ImmutableFeatureCollection(featureCollection) { + _classCallCheck(this, ImmutableFeatureCollection); + + _defineProperty(this, "featureCollection", void 0); + + this.featureCollection = featureCollection; + } + + _createClass(ImmutableFeatureCollection, [{ + key: "getObject", + value: function getObject() { + return this.featureCollection; + } + /** + * Replaces the position deeply nested withing the given feature's geometry. + * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position to replace + * @param updatedPosition The updated position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "replacePosition", + value: function replacePosition(featureIndex, positionIndexes, updatedPosition) { + var geometry = this.featureCollection.features[featureIndex].geometry; + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyReplacePosition(geometry.coordinates, positionIndexes, updatedPosition, isPolygonal) + }); + + return this.replaceGeometry(featureIndex, updatedGeometry); + } + /** + * Removes a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the postion to remove + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "removePosition", + value: function removePosition(featureIndex, positionIndexes) { + var geometry = this.featureCollection.features[featureIndex].geometry; + + if (geometry.type === 'Point') { + throw Error("Can't remove a position from a Point or there'd be nothing left"); + } + + if (geometry.type === 'MultiPoint' && // only 1 point left + geometry.coordinates.length < 2) { + throw Error("Can't remove the last point of a MultiPoint or there'd be nothing left"); + } + + if (geometry.type === 'LineString' && // only 2 positions + geometry.coordinates.length < 3) { + throw Error("Can't remove position. LineString must have at least two positions"); + } + + if (geometry.type === 'Polygon' && // outer ring is a triangle + geometry.coordinates[0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from outer ring + positionIndexes[0] === 0) { + throw Error("Can't remove position. Polygon's outer ring must have at least four positions"); + } + + if (geometry.type === 'MultiLineString' && // only 1 LineString left + geometry.coordinates.length === 1 && // only 2 positions + geometry.coordinates[0].length < 3) { + throw Error("Can't remove position. MultiLineString must have at least two positions"); + } + + if (geometry.type === 'MultiPolygon' && // only 1 polygon left + geometry.coordinates.length === 1 && // outer ring is a triangle + geometry.coordinates[0][0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from first polygon + positionIndexes[0] === 0 && // trying to remove from outer ring + positionIndexes[1] === 0) { + throw Error("Can't remove position. MultiPolygon's outer ring must have at least four positions"); + } + + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal) + }); // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles) + + + pruneGeometryIfNecessary(updatedGeometry); + return this.replaceGeometry(featureIndex, updatedGeometry); + } + /** + * Adds a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position that will proceed the new position + * @param positionToAdd The new position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "addPosition", + value: function addPosition(featureIndex, positionIndexes, positionToAdd) { + var geometry = this.featureCollection.features[featureIndex].geometry; + + if (geometry.type === 'Point') { + throw new Error('Unable to add a position to a Point feature'); + } + + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyAddPosition(geometry.coordinates, positionIndexes, positionToAdd, isPolygonal) + }); + + return this.replaceGeometry(featureIndex, updatedGeometry); + } + }, { + key: "replaceGeometry", + value: function replaceGeometry(featureIndex, geometry) { + var updatedFeature = _objectSpread({}, this.featureCollection.features[featureIndex], { + geometry: geometry + }); + + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: [].concat(_toConsumableArray(this.featureCollection.features.slice(0, featureIndex)), [updatedFeature], _toConsumableArray(this.featureCollection.features.slice(featureIndex + 1))) + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }, { + key: "addFeature", + value: function addFeature(feature) { + return this.addFeatures([feature]); + } + }, { + key: "addFeatures", + value: function addFeatures(features) { + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: [].concat(_toConsumableArray(this.featureCollection.features), _toConsumableArray(features)) + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }, { + key: "deleteFeature", + value: function deleteFeature(featureIndex) { + return this.deleteFeatures([featureIndex]); + } + }, { + key: "deleteFeatures", + value: function deleteFeatures(featureIndexes) { + var features = _toConsumableArray(this.featureCollection.features); + + featureIndexes.sort(); + + for (var i = featureIndexes.length - 1; i >= 0; i--) { + var featureIndex = featureIndexes[i]; + + if (featureIndex >= 0 && featureIndex < features.length) { + features.splice(featureIndex, 1); + } + } + + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: features + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }]); + + return ImmutableFeatureCollection; +}(); + +exports.ImmutableFeatureCollection = ImmutableFeatureCollection; + +function getUpdatedPosition(updatedPosition, previousPosition) { + // This function checks if the updatedPosition is missing elevation + // and copies it from previousPosition + if (updatedPosition.length === 2 && previousPosition.length === 3) { + var elevation = previousPosition[2]; + return [updatedPosition[0], updatedPosition[1], elevation]; + } + + return updatedPosition; +} + +function immutablyReplacePosition(coordinates, positionIndexes, updatedPosition, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + return getUpdatedPosition(updatedPosition, coordinates); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]])], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); + + if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) { + // for polygons, the first point is repeated at the end of the array + // so, update it on both ends of the array + updated[0] = getUpdatedPosition(updatedPosition, coordinates[0]); + updated[coordinates.length - 1] = getUpdatedPosition(updatedPosition, coordinates[0]); + } + + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyReplacePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), updatedPosition, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function immutablyRemovePosition(coordinates, positionIndexes, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + throw Error('Must specify the index of the position to remove'); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); + + if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) { + // for polygons, the first point is repeated at the end of the array + // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate + if (positionIndexes[0] === 0) { + // change the last to be the same as the first + updated[updated.length - 1] = updated[0]; + } else if (positionIndexes[0] === coordinates.length - 1) { + // change the first to be the same as the last + updated[0] = updated[updated.length - 1]; + } + } + + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyRemovePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function immutablyAddPosition(coordinates, positionIndexes, positionToAdd, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + throw Error('Must specify the index of the position to remove'); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [positionToAdd], _toConsumableArray(coordinates.slice(positionIndexes[0]))); + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyAddPosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), positionToAdd, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function pruneGeometryIfNecessary(geometry) { + switch (geometry.type) { + case 'Polygon': + prunePolygonIfNecessary(geometry); + break; + + case 'MultiLineString': + pruneMultiLineStringIfNecessary(geometry); + break; + + case 'MultiPolygon': + pruneMultiPolygonIfNecessary(geometry); + break; + + default: + // Not downgradable + break; + } +} + +function prunePolygonIfNecessary(geometry) { + var polygon = geometry.coordinates; // If any hole is no longer a polygon, remove the hole entirely + + for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) { + if (removeHoleIfNecessary(polygon, holeIndex)) { + // It was removed, so keep the index the same + holeIndex--; + } + } +} + +function pruneMultiLineStringIfNecessary(geometry) { + for (var lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++) { + var lineString = geometry.coordinates[lineStringIndex]; + + if (lineString.length === 1) { + // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString) + geometry.coordinates.splice(lineStringIndex, 1); // Keep the index the same + + lineStringIndex--; + } + } +} + +function pruneMultiPolygonIfNecessary(geometry) { + for (var polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) { + var polygon = geometry.coordinates[polygonIndex]; + var outerRing = polygon[0]; // If the outer ring is no longer a polygon, remove the whole polygon + + if (outerRing.length <= 3) { + geometry.coordinates.splice(polygonIndex, 1); // It was removed, so keep the index the same + + polygonIndex--; + } + + for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) { + if (removeHoleIfNecessary(polygon, holeIndex)) { + // It was removed, so keep the index the same + holeIndex--; + } + } + } +} + +function removeHoleIfNecessary(polygon, holeIndex) { + var hole = polygon[holeIndex]; + + if (hole.length <= 3) { + polygon.splice(holeIndex, 1); + return true; + } + + return false; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6WyJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImZlYXR1cmVDb2xsZWN0aW9uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwidXBkYXRlZFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJmZWF0dXJlcyIsImlzUG9seWdvbmFsIiwidHlwZSIsInVwZGF0ZWRHZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaW1tdXRhYmx5UmVwbGFjZVBvc2l0aW9uIiwicmVwbGFjZUdlb21ldHJ5IiwiRXJyb3IiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJpbW11dGFibHlSZW1vdmVQb3NpdGlvbiIsInBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeSIsInBvc2l0aW9uVG9BZGQiLCJpbW11dGFibHlBZGRQb3NpdGlvbiIsInVwZGF0ZWRGZWF0dXJlIiwidXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uIiwic2xpY2UiLCJmZWF0dXJlIiwiYWRkRmVhdHVyZXMiLCJkZWxldGVGZWF0dXJlcyIsImZlYXR1cmVJbmRleGVzIiwic29ydCIsImkiLCJzcGxpY2UiLCJnZXRVcGRhdGVkUG9zaXRpb24iLCJwcmV2aW91c1Bvc2l0aW9uIiwiZWxldmF0aW9uIiwidXBkYXRlZCIsInBydW5lUG9seWdvbklmTmVjZXNzYXJ5IiwicHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeSIsInBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkiLCJwb2x5Z29uIiwiaG9sZUluZGV4IiwicmVtb3ZlSG9sZUlmTmVjZXNzYXJ5IiwibGluZVN0cmluZ0luZGV4IiwibGluZVN0cmluZyIsInBvbHlnb25JbmRleCIsIm91dGVyUmluZyIsImhvbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXYUEsMEI7QUFHWCxzQ0FBWUMsaUJBQVosRUFBa0Q7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S0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uLFxuICBNdWx0aUxpbmVTdHJpbmcsXG4gIE11bHRpUG9seWdvbixcbiAgUG9zaXRpb24sXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbn0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICBnZXRPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgd2l0aGluZyB0aGUgZ2l2ZW4gZmVhdHVyZSdzIGdlb21ldHJ5LlxuICAgKiBXb3JrcyB3aXRoIFBvaW50LCBNdWx0aVBvaW50LCBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcsIFBvbHlnb24sIGFuZCBNdWx0aVBvbHlnb24uXG4gICAqXG4gICAqIEBwYXJhbSBmZWF0dXJlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBmZWF0dXJlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gcG9zaXRpb25JbmRleGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGluZGV4ZXMgb2YgdGhlIHBvc2l0aW9uIHRvIHJlcGxhY2VcbiAgICogQHBhcmFtIHVwZGF0ZWRQb3NpdGlvbiBUaGUgdXBkYXRlZCBwb3NpdGlvbiB0byBwbGFjZSBpbiB0aGUgcmVzdWx0IChpLmUuIFtsbmcsIGxhdF0pXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbmV3IGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAgd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gcmVwbGFjZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICByZXBsYWNlUG9zaXRpb24oXG4gICAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gICAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgdXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBjb25zdCBpc1BvbHlnb25hbCA9IGdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJztcbiAgICBjb25zdCB1cGRhdGVkR2VvbWV0cnk6IGFueSA9IHtcbiAgICAgIC4uLmdlb21ldHJ5LFxuICAgICAgY29vcmRpbmF0ZXM6IGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgdXBkYXRlZFBvc2l0aW9uLFxuICAgICAgICBpc1BvbHlnb25hbFxuICAgICAgKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcG9zaXRpb24gZGVlcGx5IG5lc3RlZCBpbiBhIEdlb0pTT04gZ2VvbWV0cnkgY29vcmRpbmF0ZXMgYXJyYXkuXG4gICAqIFdvcmtzIHdpdGggTXVsdGlQb2ludCwgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nLCBQb2x5Z29uLCBhbmQgTXVsdGlQb2x5Z29uLlxuICAgKlxuICAgKiBAcGFyYW0gZmVhdHVyZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgZmVhdHVyZSB0byB1cGRhdGVcbiAgICogQHBhcmFtIHBvc2l0aW9uSW5kZXhlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpbmRleGVzIG9mIHRoZSBwb3N0aW9uIHRvIHJlbW92ZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb25gIHdpdGggdGhlIGdpdmVuIGNvb3JkaW5hdGUgcmVtb3ZlZC4gRG9lcyBub3QgbW9kaWZ5IHRoaXMgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYC5cbiAgICovXG4gIHJlbW92ZVBvc2l0aW9uKFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNbZmVhdHVyZUluZGV4XS5nZW9tZXRyeTtcblxuICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2FuJ3QgcmVtb3ZlIGEgcG9zaXRpb24gZnJvbSBhIFBvaW50IG9yIHRoZXJlJ2QgYmUgbm90aGluZyBsZWZ0YCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvaW50JyAmJiAvLyBvbmx5IDEgcG9pbnQgbGVmdFxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIDwgMlxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSB0aGUgbGFzdCBwb2ludCBvZiBhIE11bHRpUG9pbnQgb3IgdGhlcmUnZCBiZSBub3RoaW5nIGxlZnRgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnICYmIC8vIG9ubHkgMiBwb3NpdGlvbnNcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA8IDNcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIExpbmVTdHJpbmcgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBwb3NpdGlvbnNgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nICYmIC8vIG91dGVyIHJpbmcgaXMgYSB0cmlhbmdsZVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgNSAmJlxuICAgICAgQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIFBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2ApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlMaW5lU3RyaW5nJyAmJiAvLyBvbmx5IDEgTGluZVN0cmluZyBsZWZ0XG4gICAgICBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggPT09IDEgJiYgLy8gb25seSAyIHBvc2l0aW9uc1xuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgM1xuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSBwb3NpdGlvbi4gTXVsdGlMaW5lU3RyaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gcG9zaXRpb25zYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nICYmIC8vIG9ubHkgMSBwb2x5Z29uIGxlZnRcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMSAmJiAvLyBvdXRlciByaW5nIGlzIGEgdHJpYW5nbGVcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA8IDUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkocG9zaXRpb25JbmRleGVzKSAmJiAvLyB0cnlpbmcgdG8gcmVtb3ZlIGZyb20gZmlyc3QgcG9seWdvblxuICAgICAgcG9zaXRpb25JbmRleGVzWzBdID09PSAwICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMV0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ2FuJ3QgcmVtb3ZlIHBvc2l0aW9uLiBNdWx0aVBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlSZW1vdmVQb3NpdGlvbihnZW9tZXRyeS5jb29yZGluYXRlcywgcG9zaXRpb25JbmRleGVzLCBpc1BvbHlnb25hbCksXG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSBpbmNvbXBsZXRlIGdlb21ldHJpZXMgbmVlZCBwcnVuZWQgKGUuZy4gaG9sZXMgdGhhdCB3ZXJlIHRyaWFuZ2xlcylcbiAgICBwcnVuZUdlb21ldHJ5SWZOZWNlc3NhcnkodXBkYXRlZEdlb21ldHJ5KTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgaW4gYSBHZW9KU09OIGdlb21ldHJ5IGNvb3JkaW5hdGVzIGFycmF5LlxuICAgKiBXb3JrcyB3aXRoIE11bHRpUG9pbnQsIExpbmVTdHJpbmcsIE11bHRpTGluZVN0cmluZywgUG9seWdvbiwgYW5kIE11bHRpUG9seWdvbi5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBwb3NpdGlvbkluZGV4ZXMgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5kZXhlcyBvZiB0aGUgcG9zaXRpb24gdGhhdCB3aWxsIHByb2NlZWQgdGhlIG5ldyBwb3NpdGlvblxuICAgKiBAcGFyYW0gcG9zaXRpb25Ub0FkZCBUaGUgbmV3IHBvc2l0aW9uIHRvIHBsYWNlIGluIHRoZSByZXN1bHQgKGkuZS4gW2xuZywgbGF0XSlcbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYCB3aXRoIHRoZSBnaXZlbiBjb29yZGluYXRlIHJlbW92ZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICBhZGRQb3NpdGlvbihcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBwb3NpdGlvblRvQWRkOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGEgcG9zaXRpb24gdG8gYSBQb2ludCBmZWF0dXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb25Ub0FkZCxcbiAgICAgICAgaXNQb2x5Z29uYWxcbiAgICAgICksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICByZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4OiBudW1iZXIsIGdlb21ldHJ5OiBHZW9tZXRyeSk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZTogYW55ID0ge1xuICAgICAgLi4udGhpcy5mZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdLFxuICAgICAgZ2VvbWV0cnksXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogW1xuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKDAsIGZlYXR1cmVJbmRleCksXG4gICAgICAgIHVwZGF0ZWRGZWF0dXJlLFxuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKGZlYXR1cmVJbmRleCArIDEpLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgYWRkRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmFkZEZlYXR1cmVzKFtmZWF0dXJlXSk7XG4gIH1cblxuICBhZGRGZWF0dXJlcyhmZWF0dXJlczogRmVhdHVyZVtdKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMsIC4uLmZlYXR1cmVzXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgZGVsZXRlRmVhdHVyZShmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZlYXR1cmVzKFtmZWF0dXJlSW5kZXhdKTtcbiAgfVxuXG4gIGRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNdO1xuICAgIGZlYXR1cmVJbmRleGVzLnNvcnQoKTtcbiAgICBmb3IgKGxldCBpID0gZmVhdHVyZUluZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IGZlYXR1cmVJbmRleGVzW2ldO1xuICAgICAgaWYgKGZlYXR1cmVJbmRleCA+PSAwICYmIGZlYXR1cmVJbmRleCA8IGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICBmZWF0dXJlcy5zcGxpY2UoZmVhdHVyZUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgZmVhdHVyZXMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24odXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbjogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB1cGRhdGVkUG9zaXRpb24gaXMgbWlzc2luZyBlbGV2YXRpb25cbiAgLy8gYW5kIGNvcGllcyBpdCBmcm9tIHByZXZpb3VzUG9zaXRpb25cbiAgaWYgKHVwZGF0ZWRQb3NpdGlvbi5sZW5ndGggPT09IDIgJiYgcHJldmlvdXNQb3NpdGlvbi5sZW5ndGggPT09IDMpIHtcbiAgICBjb25zdCBlbGV2YXRpb24gPSAocHJldmlvdXNQb3NpdGlvbiBhcyBhbnkpWzJdO1xuICAgIHJldHVybiBbdXBkYXRlZFBvc2l0aW9uWzBdLCB1cGRhdGVkUG9zaXRpb25bMV0sIGVsZXZhdGlvbl07XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZFBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlSZXBsYWNlUG9zaXRpb24oXG4gIGNvb3JkaW5hdGVzOiBhbnksXG4gIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB1cGRhdGVkUG9zaXRpb246IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXMpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uLCBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dKSxcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICAgIF07XG5cbiAgICBpZiAoXG4gICAgICBpc1BvbHlnb25hbCAmJlxuICAgICAgKHBvc2l0aW9uSW5kZXhlc1swXSA9PT0gMCB8fCBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBmb3IgcG9seWdvbnMsIHRoZSBmaXJzdCBwb2ludCBpcyByZXBlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgLy8gc28sIHVwZGF0ZSBpdCBvbiBib3RoIGVuZHMgb2YgdGhlIGFycmF5XG4gICAgICB1cGRhdGVkWzBdID0gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXNbMF0pO1xuICAgICAgdXBkYXRlZFtjb29yZGluYXRlcy5sZW5ndGggLSAxXSA9IGdldFVwZGF0ZWRQb3NpdGlvbih1cGRhdGVkUG9zaXRpb24sIGNvb3JkaW5hdGVzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgIGNvb3JkaW5hdGVzW3Bvc2l0aW9uSW5kZXhlc1swXV0sXG4gICAgICBwb3NpdGlvbkluZGV4ZXMuc2xpY2UoMSwgcG9zaXRpb25JbmRleGVzLmxlbmd0aCksXG4gICAgICB1cGRhdGVkUG9zaXRpb24sXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGltbXV0YWJseVJlbW92ZVBvc2l0aW9uKFxuICBjb29yZGluYXRlczogYW55LFxuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXNQb2x5Z29uYWw6IGJvb2xlYW5cbik6IGFueSB7XG4gIGlmICghcG9zaXRpb25JbmRleGVzKSB7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgRXJyb3IoJ011c3Qgc3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uIHRvIHJlbW92ZScpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0gKyAxKSxcbiAgICBdO1xuXG4gICAgaWYgKFxuICAgICAgaXNQb2x5Z29uYWwgJiZcbiAgICAgIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHwgcG9zaXRpb25JbmRleGVzWzBdID09PSBjb29yZGluYXRlcy5sZW5ndGggLSAxKVxuICAgICkge1xuICAgICAgLy8gZm9yIHBvbHlnb25zLCB0aGUgZmlyc3QgcG9pbnQgaXMgcmVwZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgIC8vIHNvLCBpZiB0aGUgZmlyc3QvbGFzdCBjb29yZGluYXRlIGlzIHRvIGJlIHJlbW92ZWQsIGNvb3JkaW5hdGVzWzFdIHdpbGwgYmUgdGhlIG5ldyBmaXJzdC9sYXN0IGNvb3JkaW5hdGVcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDApIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBsYXN0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdFxuICAgICAgICB1cGRhdGVkW3VwZGF0ZWQubGVuZ3RoIC0gMV0gPSB1cGRhdGVkWzBdO1xuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBmaXJzdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdFxuICAgICAgICB1cGRhdGVkWzBdID0gdXBkYXRlZFt1cGRhdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSBpbm5lciBhcnJheVxuICByZXR1cm4gW1xuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgaW1tdXRhYmx5UmVtb3ZlUG9zaXRpb24oXG4gICAgICBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dLFxuICAgICAgcG9zaXRpb25JbmRleGVzLnNsaWNlKDEsIHBvc2l0aW9uSW5kZXhlcy5sZW5ndGgpLFxuICAgICAgaXNQb2x5Z29uYWxcbiAgICApLFxuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgY29vcmRpbmF0ZXM6IGFueSxcbiAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uVG9BZGQ6IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBFcnJvcignTXVzdCBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb24gdG8gcmVtb3ZlJyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCB1cGRhdGVkID0gW1xuICAgICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UoMCwgcG9zaXRpb25JbmRleGVzWzBdKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIF07XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseUFkZFBvc2l0aW9uKFxuICAgICAgY29vcmRpbmF0ZXNbcG9zaXRpb25JbmRleGVzWzBdXSxcbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5zbGljZSgxLCBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIHBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeShnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICBwcnVuZVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aUxpbmVTdHJpbmcnOlxuICAgICAgcHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgcHJ1bmVNdWx0aVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gTm90IGRvd25ncmFkYWJsZVxuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IFBvbHlnb24pIHtcbiAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gIC8vIElmIGFueSBob2xlIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgaG9sZSBlbnRpcmVseVxuICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICBpZiAocmVtb3ZlSG9sZUlmTmVjZXNzYXJ5KHBvbHlnb24sIGhvbGVJbmRleCkpIHtcbiAgICAgIC8vIEl0IHdhcyByZW1vdmVkLCBzbyBrZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgaG9sZUluZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlMaW5lU3RyaW5nSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpTGluZVN0cmluZykge1xuICBmb3IgKGxldCBsaW5lU3RyaW5nSW5kZXggPSAwOyBsaW5lU3RyaW5nSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGxpbmVTdHJpbmdJbmRleCsrKSB7XG4gICAgY29uc3QgbGluZVN0cmluZyA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW2xpbmVTdHJpbmdJbmRleF07XG4gICAgaWYgKGxpbmVTdHJpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBPbmx5IGEgc2luZ2xlIHBvc2l0aW9uIGxlZnQgb24gdGhpcyBMaW5lU3RyaW5nLCBzbyByZW1vdmUgaXQgKGNhbid0IGhhdmUgUG9pbnQgaW4gTXVsdGlMaW5lU3RyaW5nKVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMuc3BsaWNlKGxpbmVTdHJpbmdJbmRleCwgMSk7XG4gICAgICAvLyBLZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgbGluZVN0cmluZ0luZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpUG9seWdvbikge1xuICBmb3IgKGxldCBwb2x5Z29uSW5kZXggPSAwOyBwb2x5Z29uSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IHBvbHlnb25JbmRleCsrKSB7XG4gICAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW3BvbHlnb25JbmRleF07XG4gICAgY29uc3Qgb3V0ZXJSaW5nID0gcG9seWdvblswXTtcblxuICAgIC8vIElmIHRoZSBvdXRlciByaW5nIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgd2hvbGUgcG9seWdvblxuICAgIGlmIChvdXRlclJpbmcubGVuZ3RoIDw9IDMpIHtcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLnNwbGljZShwb2x5Z29uSW5kZXgsIDEpO1xuICAgICAgLy8gSXQgd2FzIHJlbW92ZWQsIHNvIGtlZXAgdGhlIGluZGV4IHRoZSBzYW1lXG4gICAgICBwb2x5Z29uSW5kZXgtLTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICAgIGlmIChyZW1vdmVIb2xlSWZOZWNlc3NhcnkocG9seWdvbiwgaG9sZUluZGV4KSkge1xuICAgICAgICAvLyBJdCB3YXMgcmVtb3ZlZCwgc28ga2VlcCB0aGUgaW5kZXggdGhlIHNhbWVcbiAgICAgICAgaG9sZUluZGV4LS07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUhvbGVJZk5lY2Vzc2FyeShwb2x5Z29uOiBQb2x5Z29uQ29vcmRpbmF0ZXMsIGhvbGVJbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IGhvbGUgPSBwb2x5Z29uW2hvbGVJbmRleF07XG4gIGlmIChob2xlLmxlbmd0aCA8PSAzKSB7XG4gICAgcG9seWdvbi5zcGxpY2UoaG9sZUluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/measure-angle-mode.js b/modules/edit-modes/dist-es6/lib/measure-angle-mode.js new file mode 100644 index 000000000..b1dba378e --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/measure-angle-mode.js @@ -0,0 +1,213 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureAngleMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _center = _interopRequireDefault(require("@turf/center")); + +var _memoize = _interopRequireDefault(require("../memoize")); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DEFAULT_TOOLTIPS = []; + +var MeasureAngleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(MeasureAngleMode, _GeoJsonEditMode); + + var _super = _createSuper(MeasureAngleMode); + + function MeasureAngleMode() { + var _this; + + _classCallCheck(this, MeasureAngleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_getTooltips", (0, _memoize["default"])(function (_ref) { + var modeConfig = _ref.modeConfig, + vertex = _ref.vertex, + point1 = _ref.point1, + point2 = _ref.point2; + var tooltips = DEFAULT_TOOLTIPS; + + if (vertex && point1 && point2) { + var _ref2 = modeConfig || {}, + formatTooltip = _ref2.formatTooltip, + measurementCallback = _ref2.measurementCallback; + + var units = 'deg'; + var angle1 = (0, _bearing["default"])(vertex, point1); + var angle2 = (0, _bearing["default"])(vertex, point2); + var angle = Math.abs(angle1 - angle2); + + if (angle > 180) { + angle = 360 - angle; + } + + var text; + + if (formatTooltip) { + text = formatTooltip(angle); + } else { + // By default, round to 2 decimal places and append units + // @ts-ignore + text = "".concat(parseFloat(angle).toFixed(2), " ").concat(units); + } + + if (measurementCallback) { + measurementCallback(angle); + } + + var position = (0, _center["default"])({ + type: 'FeatureCollection', + features: [point1, point2].map(function (p) { + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: p + } + }; + }) + }).geometry.coordinates; + tooltips = [{ + position: position, + text: text + }]; + } + + return tooltips; + })); + + return _this; + } + + _createClass(MeasureAngleMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + if (this.getClickSequence().length >= 3) { + this.resetClickSequence(); + } + + this.addClickSequence(event); + } // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked + + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "getPoints", + value: function getPoints(props) { + var clickSequence = this.getClickSequence(); + + var points = _toConsumableArray(clickSequence); + + if (clickSequence.length < 3 && props.lastPointerMoveEvent) { + points.push(props.lastPointerMoveEvent.mapCoords); + } + + return points; + } // Return features that can be used as a guide for editing the data + + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var features = guides.features; + var points = this.getPoints(props); + + if (points.length > 2) { + features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [points[1], points[0], points[2]] + } + }); + } else if (points.length > 1) { + features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [points[1], points[0]] + } + }); + } + + return guides; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var points = this.getPoints(props); + return this._getTooltips({ + modeConfig: props.modeConfig, + vertex: points[0], + point1: points[1], + point2: points[2] + }); + } + }]); + + return MeasureAngleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.MeasureAngleMode = MeasureAngleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hbmdsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVE9PTFRJUFMiLCJNZWFzdXJlQW5nbGVNb2RlIiwibW9kZUNvbmZpZyIsInZlcnRleCIsInBvaW50MSIsInBvaW50MiIsInRvb2x0aXBzIiwiZm9ybWF0VG9vbHRpcCIsIm1lYXN1cmVtZW50Q2FsbGJhY2siLCJ1bml0cyIsImFuZ2xlMSIsImFuZ2xlMiIsImFuZ2xlIiwiTWF0aCIsImFicyIsInRleHQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsInBvc2l0aW9uIiwidHlwZSIsImZlYXR1cmVzIiwibWFwIiwicCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVudCIsInByb3BzIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImFkZENsaWNrU2VxdWVuY2UiLCJvblVwZGF0ZUN1cnNvciIsImNsaWNrU2VxdWVuY2UiLCJwb2ludHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsInB1c2giLCJtYXBDb29yZHMiLCJndWlkZXMiLCJnZXRQb2ludHMiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiX2dldFRvb2x0aXBzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBQ0kseUJBQVEsZ0JBQTRDO0FBQUEsVUFBekNDLFVBQXlDLFFBQXpDQSxVQUF5QztBQUFBLFVBQTdCQyxNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxVQUFyQkMsTUFBcUIsUUFBckJBLE1BQXFCO0FBQUEsVUFBYkMsTUFBYSxRQUFiQSxNQUFhO0FBQ2pFLFVBQUlDLFFBQVEsR0FBR04sZ0JBQWY7O0FBRUEsVUFB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UUFBQUEsTUFBTSxFQUFFNEIsTUFBTSxDQUFDLENBQUQ7QUFKUyxPQUFsQixDQUFQO0FBTUQ7Ozs7RUFsSG1DUyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgbWVtb2l6ZSBmcm9tICcuLi9tZW1vaXplJztcblxuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQW5nbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dldFRvb2x0aXBzID0gbWVtb2l6ZSgoeyBtb2RlQ29uZmlnLCB2ZXJ0ZXgsIHBvaW50MSwgcG9pbnQyIH0pID0+IHtcbiAgICBsZXQgdG9vbHRpcHMgPSBERUZBVUxUX1RPT0xUSVBTO1xuXG4gICAgaWYgKHZlcnRleCAmJiBwb2ludDEgJiYgcG9pbnQyKSB7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdkZWcnO1xuXG4gICAgICBjb25zdCBhbmdsZTEgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50MSk7XG4gICAgICBjb25zdCBhbmdsZTIgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50Mik7XG4gICAgICBsZXQgYW5nbGUgPSBNYXRoLmFicyhhbmdsZTEgLSBhbmdsZTIpO1xuICAgICAgaWYgKGFuZ2xlID4gMTgwKSB7XG4gICAgICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYW5nbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcyBhbmQgYXBwZW5kIHVuaXRzXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoYW5nbGUpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhhbmdsZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdHVyZkNlbnRlcih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBbcG9pbnQxLCBwb2ludDJdLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogcCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgdG9vbHRpcHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcHM7XG4gIH0pO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGggPj0gMykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcG9pbnRlciBpcyBkb3duLCB1cCwgYW5kIHdoZXRoZXIgc29tZXRoaW5nIHdhcyBwaWNrZWRcbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgfVxuXG4gIGdldFBvaW50cyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IHBvaW50cyA9IFsuLi5jbGlja1NlcXVlbmNlXTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIHBvaW50cy5wdXNoKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50cztcbiAgfVxuXG4gIC8vIFJldHVybiBmZWF0dXJlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ3VpZGUgZm9yIGVkaXRpbmcgdGhlIGRhdGFcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ3VpZGVzOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBndWlkZXM7XG5cbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGZlYXR1cmVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3BvaW50c1sxXSwgcG9pbnRzWzBdLCBwb2ludHNbMl1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHMubGVuZ3RoID4gMSkge1xuICAgICAgZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczogeyBndWlkZVR5cGU6ICd0ZW50YXRpdmUnIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcG9pbnRzWzFdLCBwb2ludHNbMF1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGdldFRvb2x0aXBzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVG9vbHRpcFtdIHtcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9vbHRpcHMoe1xuICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIHZlcnRleDogcG9pbnRzWzBdLFxuICAgICAgcG9pbnQxOiBwb2ludHNbMV0sXG4gICAgICBwb2ludDI6IHBvaW50c1syXSxcbiAgICB9KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/measure-area-mode.js b/modules/edit-modes/dist-es6/lib/measure-area-mode.js new file mode 100644 index 000000000..c28a3df45 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/measure-area-mode.js @@ -0,0 +1,114 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureAreaMode = void 0; + +var _area = _interopRequireDefault(require("@turf/area")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _drawPolygonMode = require("./draw-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DEFAULT_TOOLTIPS = []; + +var MeasureAreaMode = /*#__PURE__*/function (_DrawPolygonMode) { + _inherits(MeasureAreaMode, _DrawPolygonMode); + + var _super = _createSuper(MeasureAreaMode); + + function MeasureAreaMode() { + _classCallCheck(this, MeasureAreaMode); + + return _super.apply(this, arguments); + } + + _createClass(MeasureAreaMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var propsWithoutEdit = _objectSpread({}, props, { + // @ts-ignore + onEdit: function onEdit() {} + }); + + _get(_getPrototypeOf(MeasureAreaMode.prototype), "handleClick", this).call(this, event, propsWithoutEdit); + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var tentativeGuide = this.getTentativeGuide(props); + + if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') { + var modeConfig = props.modeConfig; + + var _ref = modeConfig || {}, + formatTooltip = _ref.formatTooltip, + measurementCallback = _ref.measurementCallback; + + var units = 'sq. m'; + var centroid = (0, _centroid["default"])(tentativeGuide); + var area = (0, _area["default"])(tentativeGuide); + var text; + + if (formatTooltip) { + text = formatTooltip(area); + } else { + // By default, round to 2 decimal places and append units + // @ts-ignore + text = "".concat(parseFloat(area).toFixed(2), " ").concat(units); + } + + if (measurementCallback) { + measurementCallback(area); + } + + return [{ + position: centroid.geometry.coordinates, + text: text + }]; + } + + return DEFAULT_TOOLTIPS; + } + }]); + + return MeasureAreaMode; +}(_drawPolygonMode.DrawPolygonMode); + +exports.MeasureAreaMode = MeasureAreaMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hcmVhLW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9UT09MVElQUyIsIk1lYXN1cmVBcmVhTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwcm9wc1dpdGhvdXRFZGl0Iiwib25FZGl0IiwidGVudGF0aXZlR3VpZGUiLCJnZXRUZW50YXRpdmVHdWlkZSIsImdlb21ldHJ5IiwidHlwZSIsIm1vZGVDb25maWciLCJmb3JtYXRUb29sdGlwIiwibWVhc3VyZW1lbnRDYWxsYmFjayIsInVuaXRzIiwiY2VudHJvaWQiLCJhcmVhIiwidGV4dCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsIkRyYXdQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZTs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxnQkFBZ0IscUJBQ2pCRCxLQURpQjtBQUVwQjtBQUNBRSxRQUFBQSxNQUFNLEVBQUUsa0JBQU0sQ0FBRTtBQUhJLFFBQXRCOztBQU1BLHVGQUFrQkgsS0FBbEIsRUFBeUJFLGdCQUF6QjtBQUNEOzs7Z0NBRVdELEssRUFBZ0Q7QUFDMUQsVUFBTUcsY0FBYyxHQUFHLEtBQUtDLGlCQUFMLENBQXVCSixLQUF2QixDQUF2Qjs7QUFFQSxVQUFJRyxjQUFjLElBQUlBLGNBQWMsQ0FBQ0UsUUFBZixDQUF3QkMsSUFBeEIsS0FBaUMsU0FBdkQsRUFBa0U7QUFBQSxZQUN4REMsVUFEd0QsR0FDekNQLEtBRHlDLENBQ3hETyxVQUR3RDs7QUFBQSxtQkFFakJBLFVBQVUsSUFBSSxFQUZHO0FBQUEsWUFFeERDLGFBRndELFFBRXhEQSxhQUZ3RDtBQUFBLFlBRXpDQyxtQkFGeUMsUUFFekNBLG1CQUZ5Qzs7QUFHaEUsWUFBTUMsS0FBSyxHQUFHLE9BQWQ7QUFFQSxZQUFNQyxRQUFRLEdBQUcsMEJBQWFSLGNBQWIsQ0FBakI7QUFDQSxZQUFNUyxJQUFJLEdBQUcsc0JBQVNULGNBQVQsQ0FBYjtBQUVBLFlBQUlVLElBQUo7O0FBQ0EsWUFBSUwsYUFBSixFQUFtQjtBQUNqQkssVUFBQUEsSUFBSSxHQUFHTCxhQUFhLENBQUNJLElBQUQsQ0FBcEI7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBO0FBQ0FDLFVBQUFBLElBQUksYUFBTUMsVUFBVSxDQUFDRixJQUFELENBQVYsQ0FBaUJHLE9BQWpCLENBQXlCLENBQXpCLENBQU4sY0FBcUNMLEtBQXJDLENBQUo7QUFDRDs7QUFFRCxZQUFJRCxtQkFBSixFQUF5QjtBQUN2QkEsVUFBQUEsbUJBQW1CLENBQUNHLElBQUQsQ0FBbkI7QUFDRDs7QUFFRCxlQUFPLENBQ0w7QUFDRUksVUFBQUEsUUFBUSxFQUFFTCxRQUFRLENBQUNOLFFBQVQsQ0FBa0JZLFdBRDlCO0FBRUVKLFVBQUFBLElBQUksRUFBSkE7QUFGRixTQURLLENBQVA7QUFNRDs7QUFDRCxhQUFPaEIsZ0JBQVA7QUFDRDs7OztFQTNDa0NxQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQXJlYSBmcm9tICdAdHVyZi9hcmVhJztcbmltcG9ydCB0dXJmQ2VudHJvaWQgZnJvbSAnQHR1cmYvY2VudHJvaWQnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQXJlYU1vZGUgZXh0ZW5kcyBEcmF3UG9seWdvbk1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwcm9wc1dpdGhvdXRFZGl0ID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvbkVkaXQ6ICgpID0+IHt9LFxuICAgIH07XG5cbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCwgcHJvcHNXaXRob3V0RWRpdCk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgdGVudGF0aXZlR3VpZGUgPSB0aGlzLmdldFRlbnRhdGl2ZUd1aWRlKHByb3BzKTtcblxuICAgIGlmICh0ZW50YXRpdmVHdWlkZSAmJiB0ZW50YXRpdmVHdWlkZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdzcS4gbSc7XG5cbiAgICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRlbnRhdGl2ZUd1aWRlKTtcbiAgICAgIGNvbnN0IGFyZWEgPSB0dXJmQXJlYSh0ZW50YXRpdmVHdWlkZSk7XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYXJlYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0ID0gYCR7cGFyc2VGbG9hdChhcmVhKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWFzdXJlbWVudENhbGxiYWNrKSB7XG4gICAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soYXJlYSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX1RPT0xUSVBTO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/measure-distance-mode.js b/modules/edit-modes/dist-es6/lib/measure-distance-mode.js new file mode 100644 index 000000000..7ccb6fb33 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/measure-distance-mode.js @@ -0,0 +1,278 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureDistanceMode = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 MeasureDistanceMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(MeasureDistanceMode, _GeoJsonEditMode); + + var _super = _createSuper(MeasureDistanceMode); + + function MeasureDistanceMode() { + var _this; + + _classCallCheck(this, MeasureDistanceMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isMeasuringSessionFinished", false); + + _defineProperty(_assertThisInitialized(_this), "_currentTooltips", []); + + _defineProperty(_assertThisInitialized(_this), "_currentDistance", 0); + + _defineProperty(_assertThisInitialized(_this), "_calculateDistanceForTooltip", function (_ref) { + var positionA = _ref.positionA, + positionB = _ref.positionB, + modeConfig = _ref.modeConfig; + + var _ref2 = modeConfig || {}, + turfOptions = _ref2.turfOptions, + measurementCallback = _ref2.measurementCallback; + + var distance = (0, _distance["default"])(positionA, positionB, turfOptions); + + if (measurementCallback) { + measurementCallback(distance); + } + + return distance; + }); + + return _this; + } + + _createClass(MeasureDistanceMode, [{ + key: "_formatTooltip", + value: function _formatTooltip(distance, modeConfig) { + var _ref3 = modeConfig || {}, + formatTooltip = _ref3.formatTooltip, + turfOptions = _ref3.turfOptions; + + var units = turfOptions && turfOptions.units || 'kilometers'; + var text; + + if (formatTooltip) { + text = formatTooltip(distance); + } else { + // By default, round to 2 decimal places and append units + text = "".concat(parseFloat(distance).toFixed(2), " ").concat(units); + } + + return text; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var modeConfig = props.modeConfig, + data = props.data, + onEdit = props.onEdit; // restart measuring session + + if (this._isMeasuringSessionFinished) { + this._isMeasuringSessionFinished = false; + this.resetClickSequence(); + this._currentTooltips = []; + this._currentDistance = 0; + } + + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) { + // They clicked the last point (or double-clicked), so add the LineString + this._isMeasuringSessionFinished = true; + } else if (positionAdded) { + if (clickSequence.length > 1) { + this._currentDistance += this._calculateDistanceForTooltip({ + positionA: clickSequence[clickSequence.length - 2], + positionB: clickSequence[clickSequence.length - 1], + modeConfig: modeConfig + }); + + this._currentTooltips.push({ + position: event.mapCoords, + text: this._formatTooltip(this._currentDistance, modeConfig) + }); + } // new tentative point + + + onEdit({ + // data is the same + updatedData: data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (this._isMeasuringSessionFinished) return; + event.stopPropagation(); + var key = event.key; + var clickSequenceLength = this.getClickSequence().length; + + switch (key) { + case 'Escape': + this._isMeasuringSessionFinished = true; + + if (clickSequenceLength === 1) { + this.resetClickSequence(); + this._currentTooltips = []; + } // force update drawings + + + props.onUpdateCursor('cell'); + break; + + case 'Enter': + this.handleClick(props.lastPointerMoveEvent, props); + this._isMeasuringSessionFinished = true; + break; + + default: + break; + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent && !this._isMeasuringSessionFinished ? [lastPointerMoveEvent.mapCoords] : []; + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length > 0) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var positions = this.getClickSequence(); + + if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) { + var distance = this._calculateDistanceForTooltip({ + positionA: positions[positions.length - 1], + positionB: lastPointerMoveEvent.mapCoords, + modeConfig: props.modeConfig + }); + + return [].concat(_toConsumableArray(this._currentTooltips), [{ + position: lastPointerMoveEvent.mapCoords, + text: this._formatTooltip(this._currentDistance + distance, modeConfig) + }]); + } + + return this._currentTooltips; + } + }]); + + return MeasureDistanceMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.MeasureDistanceMode = MeasureDistanceMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlLnRzIl0sIm5hbWVzIjpbIk1lYXN1cmVEaXN0YW5jZU1vZGUiLCJwb3NpdGlvbkEiLCJwb3NpdGlvbkIiLCJtb2RlQ29uZmlnIiwidHVyZk9wdGlvbnMiLCJtZWFzdXJlbWVudENhbGxiYWNrIiwiZGlzdGFuY2UiLCJmb3JtYXRUb29sdGlwIiwidW5pdHMiLCJ0ZXh0IiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJldmVudCIsInByb3BzIiwiZGF0YSIsIm9uRWRpdCIsIl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsIl9jdXJyZW50VG9vbHRpcHMiLCJfY3VycmVudERpc3RhbmNlIiwicGlja3MiLCJjbGlja2VkRWRpdEhhbmRsZSIsInBvc2l0aW9uQWRkZWQiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJwcm9wZXJ0aWVzIiwicG9zaXRpb25JbmRleGVzIiwiX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCIsInB1c2giLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsIl9mb3JtYXRUb29sdGlwIiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0Iiwic3RvcFByb3BhZ2F0aW9uIiwia2V5IiwiY2xpY2tTZXF1ZW5jZUxlbmd0aCIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlQ2xpY2siLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImxhc3RDb29yZHMiLCJndWlkZXMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25zIiwiR2VvSnNv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QUFBLFFBQVEsRUFBRVcsb0JBQW9CLENBQUNWLFNBRGpDO0FBRUV6QixVQUFBQSxJQUFJLEVBQUUsS0FBSzBCLGNBQUwsQ0FBb0IsS0FBS2hCLGdCQUFMLEdBQXdCYixRQUE1QyxFQUFzREgsVUFBdEQ7QUFGUixTQUZGO0FBT0Q7O0FBRUQsYUFBTyxLQUFLZSxnQkFBWjtBQUNEOzs7O0VBdkxzQ3lDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLCBUb29sdGlwIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgTWVhc3VyZURpc3RhbmNlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICBfY3VycmVudFRvb2x0aXBzID0gW107XG4gIF9jdXJyZW50RGlzdGFuY2UgPSAwO1xuXG4gIF9jYWxjdWxhdGVEaXN0YW5jZUZvclRvb2x0aXAgPSAoeyBwb3NpdGlvbkEsIHBvc2l0aW9uQiwgbW9kZUNvbmZpZyB9KSA9PiB7XG4gICAgY29uc3QgeyB0dXJmT3B0aW9ucywgbWVhc3VyZW1lbnRDYWxsYmFjayB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcbiAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb3NpdGlvbkEsIHBvc2l0aW9uQiwgdHVyZk9wdGlvbnMpO1xuXG4gICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soZGlzdGFuY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXN0YW5jZTtcbiAgfTtcblxuICBfZm9ybWF0VG9vbHRpcChkaXN0YW5jZSwgbW9kZUNvbmZpZz8pIHtcbiAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIHR1cmZPcHRpb25zIH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IHVuaXRzID0gKHR1cmZPcHRpb25zICYmIHR1cmZPcHRpb25zLnVuaXRzKSB8fCAna2lsb21ldGVycyc7XG5cbiAgICBsZXQgdGV4dDtcbiAgICBpZiAoZm9ybWF0VG9vbHRpcCkge1xuICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoZGlzdGFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgIHRleHQgPSBgJHtwYXJzZUZsb2F0KGRpc3RhbmNlKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IG1vZGVDb25maWcsIGRhdGEsIG9uRWRpdCB9ID0gcHJvcHM7XG5cbiAgICAvLyByZXN0YXJ0IG1lYXN1cmluZyBzZXNzaW9uXG4gICAgaWYgKHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcyA9IFtdO1xuICAgICAgdGhpcy5fY3VycmVudERpc3RhbmNlID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgbGV0IHBvc2l0aW9uQWRkZWQgPSBmYWxzZTtcbiAgICBpZiAoIWNsaWNrZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBEb24ndCBhZGQgYW5vdGhlciBwb2ludCByaWdodCBuZXh0IHRvIGFuIGV4aXN0aW5nIG9uZVxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICAgIHBvc2l0aW9uQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGFkZCB0aGUgTGluZVN0cmluZ1xuICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50RGlzdGFuY2UgKz0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgICBwb3NpdGlvbkE6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXSxcbiAgICAgICAgICBwb3NpdGlvbkI6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICBtb2RlQ29uZmlnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fY3VycmVudFRvb2x0aXBzLnB1c2goe1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UsIG1vZGVDb25maWcpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgb25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCkgcmV0dXJuO1xuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZUxlbmd0aCA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpLmxlbmd0aDtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGlmIChjbGlja1NlcXVlbmNlTGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VG9vbHRpcHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb3JjZSB1cGRhdGUgZHJhd2luZ3NcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2socHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGxhc3RDb29yZHMgPVxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgIXRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkXG4gICAgICAgID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc11cbiAgICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCAuLi5sYXN0Q29vcmRzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gY2xpY2tTZXF1ZW5jZS5tYXAoKGNsaWNrZWRDb29yZCwgaW5kZXgpID0+ICh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2V4aXN0aW5nJyxcbiAgICAgICAgZmVhdHVyZUluZGV4OiAtMSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbaW5kZXhdLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBjbGlja2VkQ29vcmQsXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKC4uLmVkaXRIYW5kbGVzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCwgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA+IDAgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgIXRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHRoaXMuX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCh7XG4gICAgICAgIHBvc2l0aW9uQTogcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXSxcbiAgICAgICAgcG9zaXRpb25COiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMsXG4gICAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnRoaXMuX2N1cnJlbnRUb29sdGlwcyxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMsXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UgKyBkaXN0YW5jZSwgbW9kZUNvbmZpZyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9vbHRpcHM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/modify-mode.js b/modules/edit-modes/dist-es6/lib/modify-mode.js new file mode 100644 index 000000000..f525da8b2 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/modify-mode.js @@ -0,0 +1,303 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ModifyMode = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ModifyMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ModifyMode, _GeoJsonEditMode); + + var _super = _createSuper(ModifyMode); + + function ModifyMode() { + _classCallCheck(this, ModifyMode); + + return _super.apply(this, arguments); + } + + _createClass(ModifyMode, [{ + key: "getGuides", + value: function getGuides(props) { + var _this = this; + + var handles = []; + var data = props.data, + lastPointerMoveEvent = props.lastPointerMoveEvent; + var features = data.features; + var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks; + var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; + + var _iterator = _createForOfIteratorHelper(props.selectedIndexes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _index = _step.value; + + if (_index < features.length) { + var geometry = features[_index].geometry; + handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, _index))); + } else { + console.warn("selectedFeatureIndexes out of range ".concat(_index)); // eslint-disable-line no-console,no-undef + } + } // intermediate edit handle + + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (picks && picks.length && mapCoords) { + var existingEditHandle = (0, _utils.getPickedExistingEditHandle)(picks); // don't show intermediate point when too close to an existing edit handle + + var featureAsPick = !existingEditHandle && picks.find(function (pick) { + return !pick.isGuide; + }); // is the feature in the pick selected + + if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && props.selectedIndexes.includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'intermediate', + featureIndex: featureAsPick.index, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]) + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + } + } + + return { + type: 'FeatureCollection', + features: handles + }; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint, viewport) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + if (viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var pickedExistingHandle = (0, _utils.getPickedExistingEditHandle)(event.picks); + var pickedIntermediateHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (pickedExistingHandle) { + var _pickedExistingHandle = pickedExistingHandle.properties, + featureIndex = _pickedExistingHandle.featureIndex, + positionIndexes = _pickedExistingHandle.positionIndexes; + var updatedData; + + try { + updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject(); + } catch (ignored) {// This happens if user attempts to remove the last point + } + + if (updatedData) { + props.onEdit({ + updatedData: updatedData, + editType: 'removePosition', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: pickedExistingHandle.geometry.coordinates + } + }); + } + } else if (pickedIntermediateHandle) { + var _pickedIntermediateHa = pickedIntermediateHandle.properties, + _featureIndex = _pickedIntermediateHa.featureIndex, + _positionIndexes = _pickedIntermediateHa.positionIndexes; + + var _updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(_featureIndex, _positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject(); + + if (_updatedData) { + props.onEdit({ + updatedData: _updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [_featureIndex], + positionIndexes: _positionIndexes, + position: pickedIntermediateHandle.geometry.coordinates + } + }); + } + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + // Cancel map panning if pointer went down on an edit handle + event.cancelPan(); + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'movePosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var cursor = this.getCursor(event); + props.onUpdateCursor(cursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'finishMovePosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "getCursor", + value: function getCursor(event) { + var picks = event && event.picks || []; + var handlesPicked = (0, _utils.getPickedEditHandles)(picks); + + if (handlesPicked.length) { + return 'cell'; + } + + return null; + } + }]); + + return ModifyMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ModifyMode = ModifyMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kaWZ5LW1vZGUudHMiXSwibmFtZXMiOlsiTW9kaWZ5TW9kZSIsInByb3BzIiwiaGFuZGxlcyIsImRhdGEiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImZlYXR1cmVzIiwicGlja3MiLCJtYXBDb29yZHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJpbmRleCIsImxlbmd0aCIsImdlb21ldHJ5IiwicHVzaCIsImNvbnNvbGUiLCJ3YXJuIiwiZXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInR5cGUiLCJpbmNsdWRlcyIsImludGVybWVkaWF0ZVBvaW50IiwicG9zaXRpb25JbmRleFByZWZpeCIsInJlZmVyZW5jZVBvaW50IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsIm5lYXJlc3RQb2ludE9uTGluZSIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsInByb3BlcnRpZXMiLCJkaXN0IiwicG9zaXRpb24iLCJndWlkZVR5cGUiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsInBvc2l0aW9uSW5kZXhlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwibG9nIiwiZXZlbnQiLCJwaWNrZWRFeGlzdGluZ0hhbmRsZSIsInBpY2tlZEludGVybWVkaWF0ZUhhbmRsZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJyZW1vdmVQb3NpdGlvbiIsImdldE9iamVjdCIsImlnbm9yZWQiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJhZGRQb3NpdGlvbiIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiY2FuY2VsUGFuIiwiZWRpdEhhbmRsZVByb3BlcnRpZXMiLCJyZXBsYWNlUG9zaXRpb24iLCJjdXJzb3IiLCJnZXRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJoYW5kbGVzUGlja2VkIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFxQkE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFU7Ozs7Ozs7Ozs7Ozs7OEJBQ0RDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBRHFFLFVBRzdEQyxJQUg2RCxHQUc5QkYsS0FIOEIsQ0FHN0RFLElBSDZEO0FBQUEsVUFHdkRDLG9CQUh1RCxHQUc5QkgsS0FIOEIsQ0FHdkRHLG9CQUh1RDtBQUFBLFVBSTdEQyxRQUo2RCxHQUloREYsSUFKZ0QsQ0FJN0RFLFFBSjZEO0FBS3JFLFVBQU1DLEtBQUssR0FBR0Ysb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRSxLQUEzRDtBQUNBLFVBQU1DLFNBQVMsR0FBR0gsb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRyxTQUEvRDs7QUFOcUUsaURBUWpETixLQUFLLENBQUNPLGVBUjJDO0FBQUE7O0FBQUE7QUFRckUsNERBQTJDO0FBQUEsY0FBaENDLE1BQWdDOztBQUN6QyxjQUFJQSxNQUFLLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBckIsRUFBNkI7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05OLFFBQVEsQ0FBQ0ksTUFBRCxDQURGLENBQ25CRSxRQURtQjtBQUUzQlQsWUFBQUEsT0FBTyxDQUFDVSxJQUFSLE9BQUFWLE9BQU8scUJBQVMsc0NBQTBCUyxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBVCxFQUFQO0FBQ0QsV0FIRCxNQUdPO0FBQ0xJLFlBQUFBLE9BQU8sQ0FBQ0MsSUFBUiwrQ0FBb0RMLE1BQXBELEdBREssQ0FDeUQ7QUFDL0Q7QUFDRixTQWZvRSxDQWlCckU7O0FBakJxRTtBQUFBO0FBQUE7QUFB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QWhCLElBQTBCLEVBQXhDO0FBRUEsVUFBTThELGFBQWEsR0FBRyxpQ0FBcUI5RCxLQUFyQixDQUF0Qjs7QUFDQSxVQUFJOEQsYUFBYSxDQUFDMUQsTUFBbEIsRUFBMEI7QUFDeEIsZUFBTyxNQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUF2UDZCMkQsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmVhcmVzdFBvaW50T25MaW5lIGZyb20gJ0B0dXJmL25lYXJlc3QtcG9pbnQtb24tbGluZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0b0xpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMsXG4gIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbiAgTmVhcmVzdFBvaW50VHlwZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGluZVN0cmluZywgUG9pbnQsIEZlYXR1cmVDb2xsZWN0aW9uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgVmlld3BvcnQsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgTW9kaWZ5TW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcblxuICAgIGNvbnN0IHsgZGF0YSwgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IGRhdGE7XG4gICAgY29uc3QgcGlja3MgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5waWNrcztcbiAgICBjb25zdCBtYXBDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIHByb3BzLnNlbGVjdGVkSW5kZXhlcykge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgb3V0IG9mIHJhbmdlICR7aW5kZXh9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGludGVybWVkaWF0ZSBlZGl0IGhhbmRsZVxuICAgIGlmIChwaWNrcyAmJiBwaWNrcy5sZW5ndGggJiYgbWFwQ29vcmRzKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0VkaXRIYW5kbGUgPSBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUocGlja3MpO1xuICAgICAgLy8gZG9uJ3Qgc2hvdyBpbnRlcm1lZGlhdGUgcG9pbnQgd2hlbiB0b28gY2xvc2UgdG8gYW4gZXhpc3RpbmcgZWRpdCBoYW5kbGVcbiAgICAgIGNvbnN0IGZlYXR1cmVBc1BpY2sgPSAhZXhpc3RpbmdFZGl0SGFuZGxlICYmIHBpY2tzLmZpbmQoKHBpY2spID0+ICFwaWNrLmlzR3VpZGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgICFmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS50eXBlLmluY2x1ZGVzKCdQb2ludCcpICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMubmVhcmVzdFBvaW50T25MaW5lKFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgbmVhcmVzdFBvaW50T25MaW5lKFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgcGlja2VkRXhpc3RpbmdIYW5kbGUgPSBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGNvbnN0IHBpY2tlZEludGVybWVkaWF0ZUhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuXG4gICAgaWYgKHBpY2tlZEV4aXN0aW5nSGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzIH0gPSBwaWNrZWRFeGlzdGluZ0hhbmRsZS5wcm9wZXJ0aWVzO1xuXG4gICAgICBsZXQgdXBkYXRlZERhdGE7XG4gICAgICB0cnkge1xuICAgICAgICB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZW1vdmVQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcylcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG4gICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB1c2VyIGF0dGVtcHRzIHRvIHJlbW92ZSB0aGUgbGFzdCBwb2ludFxuICAgICAgfVxuXG4gICAgICBpZiAodXBkYXRlZERhdGEpIHtcbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgICBlZGl0VHlwZTogJ3JlbW92ZVBvc2l0aW9uJyxcbiAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHBpY2tlZEV4aXN0aW5nSGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzIH0gPSBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgaWYgKHVwZGF0ZWREYXRhKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgY29uc3QgZWRpdEhhbmRsZVByb3BlcnRpZXMgPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlUG9zaXRpb24oXG4gICAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBldmVudC5tYXBDb29yZHNcbiAgICAgICAgKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ21vdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXgsXG4gICAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIGV2ZW50Lm1hcENvb3Jkc1xuICAgICAgICApXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnZmluaXNoTW92ZVBvc2l0aW9uJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEN1cnNvcihldmVudDogUG9pbnRlck1vdmVFdmVudCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBpY2tzID0gKGV2ZW50ICYmIGV2ZW50LnBpY2tzKSB8fCBbXTtcblxuICAgIGNvbnN0IGhhbmRsZXNQaWNrZWQgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gICAgaWYgKGhhbmRsZXNQaWNrZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ2NlbGwnO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/resize-circle-mode.js b/modules/edit-modes/dist-es6/lib/resize-circle-mode.js new file mode 100644 index 000000000..505e8ac7b --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/resize-circle-mode.js @@ -0,0 +1,246 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ResizeCircleMode = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _center = _interopRequireDefault(require("@turf/center")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ResizeCircleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ResizeCircleMode, _GeoJsonEditMode); + + var _super = _createSuper(ResizeCircleMode); + + function ResizeCircleMode() { + var _this; + + _classCallCheck(this, ResizeCircleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isResizing", false); + + return _this; + } + + _createClass(ResizeCircleMode, [{ + key: "getGuides", + value: function getGuides(props) { + var _this2 = this; + + var handles = []; + var selectedFeatureIndexes = props.selectedIndexes; + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks; + var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; // intermediate edit handle + + if (picks && picks.length && mapCoords && selectedFeatureIndexes.length === 1 && !this._isResizing) { + var featureAsPick = picks.find(function (pick) { + return !pick.isGuide; + }); // is the feature in the pick selected + + if (featureAsPick && featureAsPick.object.properties.shape && featureAsPick.object.properties.shape.includes('Circle') && props.selectedIndexes.includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this2.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'intermediate', + featureIndex: featureAsPick.index, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]) + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + } + } + + return { + type: 'FeatureCollection', + features: handles + }; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint, viewport) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + if (viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + // Cancel map panning if pointer went down on an edit handle + event.cancelPan(); + var editHandleProperties = editHandle.properties; + var feature = this.getSelectedFeature(props); + var center = (0, _center["default"])(feature).geometry.coordinates; + var numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1; + var radius = Math.max((0, _distance["default"])(center, event.mapCoords), 0.001); + var _ref = {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? numberOfSteps : _ref$steps; + var options = { + steps: steps + }; + var updatedFeature = (0, _circle["default"])(center, radius, options); + var geometry = updatedFeature.geometry; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, geometry).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'circleResize', + editContext: { + featureIndexes: [editHandleProperties.featureIndex] + } + }); + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isResizing) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'intermediate' ? selectedEditHandle : null; + } + + var cursor = this.getCursor(event); + props.onUpdateCursor(cursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isResizing = true; + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isResizing) { + props.onEdit({ + updatedData: props.data, + editType: 'circleResizeEnd', + editContext: { + featureIndexes: props.selectedIndexes + } + }); + this._selectedEditHandle = null; + this._isResizing = false; + } + } + }, { + key: "getCursor", + value: function getCursor(event) { + var picks = event && event.picks || []; + var handlesPicked = (0, _utils.getPickedEditHandles)(picks); + + if (handlesPicked.length) { + return 'cell'; + } + + return null; + } + }]); + + return ResizeCircleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ResizeCircleMode = ResizeCircleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVzaXplLWNpcmNsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIlJlc2l6ZUNpcmNsZU1vZGUiLCJwcm9wcyIsImhhbmRsZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRJbmRleGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwaWNrcyIsIm1hcENvb3JkcyIsImxlbmd0aCIsIl9pc1Jlc2l6aW5nIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInByb3BlcnRpZXMiLCJzaGFwZSIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsIm5lYXJlc3RQb2ludE9uTGluZSIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsImRpc3QiLCJwb3NpdGlvbiIsInB1c2giLCJ0eXBlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJmZWF0dXJlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwiY29uc29sZSIsImxvZyIsImV2ZW50IiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJjYW5jZWxQYW4iLCJlZGl0SGFuZGxlUHJvcGVydGllcyIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJjZW50ZXIiLCJudW1iZXJPZlN0ZXBzIiwiT2JqZWN0IiwiZW50cmllcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJzdGVwcyIsIm9wdGlvbnMiLCJ1cGRhdGVkRmVhdHVyZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwiX3NlbGVjdGVkRWRpdEhhbmRsZSIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlc1BpY2tlZCIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBa0JBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUVHLEs7Ozs7Ozs7OEJBRUpDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUdGLEtBQUssQ0FBQ0csZUFBckM7QUFGcUUsVUFJN0RDLG9CQUo2RCxHQUlwQ0osS0FKb0MsQ0FJN0RJLG9CQUo2RDtBQUtyRSxVQUFNQyxLQUFLLEdBQUdELG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0MsS0FBM0Q7QUFDQSxVQUFNQyxTQUFTLEdBQUdGLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0UsU0FBL0QsQ0FOcUUsQ0FRckU7O0FBQ0EsVUFDRUQsS0FBSyxJQUNMQSxLQUFLLENBQUNFLE1BRE4sSUFFQUQsU0FGQSxJQUdBSixzQkFBc0IsQ0FBQ0ssTUFBdkIsS0FBa0MsQ0FIbEMsSUFJQSxDQUFDLEtBQUtDLFdBTFIsRUFNRTtBQUNBLFlBQU1DLGFBQWEsR0FBR0osS0FBSyxDQUFDSyxJQUFOLENBQVcsVUFBQ0MsSUFBRDtBQUFBLGlCQUFVLENBQUNBLElBQUksQ0FBQ0MsT0FBaEI7QUFBQSxTQUFYLENBQXRCLENBREEsQ0FHQTs7QUFDQSxZQUNFSCxhQUFhLElBQ2JBLGFBQWEsQ0FBQ0ksTUFBZCxDQUFxQkMsVUFBckIsQ0FBZ0NDLEtBRGhDLElBRUFOLGFBQWEsQ0FBQ0ksTUFBZCxDQUFxQkMsVUFBckIsQ0FBZ0NDLEtBQWhDLENBQXNDQyxRQUF0QyxDQUErQyxRQUEvQyxDQUZBLElBR0FoQixLQUFLLENBQUNHLGVBQU4sQ0FBc0JhLFFBQXRCLENBQStCUCxhQUFhLENBQUNRLEtBQTdDLENBSkYsRUFLRTtBQUNBLGNBQUlDLGlCQUFzRCxHQUFHLElBQTdEO0FBQ0EsY0FBSUMsbUJBQW1CLEdBQUcsRUFBMUI7QUFDQSxjQUFNQyxjQUFjLEdBQUcsb0JBQU1kLFNBQU4sQ0FBdkIsQ0FIQSxDQUlBOztBQUNBLHNEQUNFRyxhQUFhLENBQUNJLE1BQWQsQ0FBcUJRLFFBQXJCLENBQThCQyxXQURoQyxFQUVFLEVBRkYsRUFHRSxVQUFDQyxVQUFELEVBQWFDLE1BQWIsRUFBd0I7QUFDdEIsZ0JBQU1DLGlCQUFpQixHQUFHLHlCQUFhRixVQUFiLENBQTFCOztBQUNBLGdCQUFNRywwQkFBMEIsR0FBRyxNQUFJLENBQUNDLGtCQUFMLEVBQ2pDO0FBQ0FGLFlBQUFBLGlCQUZpQyxFQUdqQ0wsY0FIaUMsRUFJakNwQixLQUFLLENBQUM0QixVQUFOLElBQW9CNUIsS0FBSyxDQUFDNEIsVUFBTixDQUFpQkMsUUFKSixDQUFuQzs7QUFNQSxnQkFDRSxDQUFDWCxpQkFBRCxJQUNBUSwwQkFBMEIsQ0FBQ1osVUFBM0IsQ0FBc0NnQixJQUF0QyxHQUE2Q1osaUJBQWlCLENBQUNKLFVBQWxCLENBQTZCZ0IsSUFGNUUsRUFHRTtBQUNBWixjQUFBQSxpQkFBaUIsR0FBR1EsMEJBQXBCO0FBQ0FQLGNBQUFBLG1CQUFtQixHQUFHSyxNQUF0QjtBQUNEO0FBQ0YsV0FsQkgsRUFMQSxDQXlCQTs7QUFDQSxjQUFJTixpQkFBSixFQUF1QjtBQUFBLHFDQUlqQkEsaUJBSmlCO0FBQUEsZ0JBRU1hLFFBRk4sc0JBRW5CVixRQUZtQixDQUVQQyxXQUZPO0FBQUEsZ0JBR0xMLEtBSEssc0JBR25CSCxVQUhtQixDQUdMRyxLQUhLO0FBS3JCaEIsWUFBQUEsT0FBTyxDQUFDK0IsSUFBUixDQUFhO0FBQ1hDLGNBQUFBLElBQUksRUFBRSxTQURLO0FBRVhuQixjQUFBQSxVQUFVLEVBQUU7QUFDVm9CLGdCQUFBQSxTQUFTLEVBQUUsWUFERDtBQUVWQyxnQkFBQUEsY0FBYyxFQUFFLGNBRk47QUFHVkMsZ0JBQUFBLFlBQVksRUFBRTNCLGFBQWEsQ0FBQ1EsS0FIbEI7QUFJVm9CLGdCQUFBQSxlQUFlLCtCQUFNbEIsbUJBQU4sSUFBMkJGLEtBQUssR0FBRyxDQUFuQztBQUpMLGVBRkQ7QUFRWEksY0FBQUEsUUFBUSxFQUFFO0FBQ1JZLGdCQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSWCxnQkFBQUEsV0FBVyxFQUFFUztBQUZMO0FBUkMsYUFBYjtBQWFEO0FBQ0Y7QUFDRjs7QUFFRCxhQUFPO0FBQ0xFLFFBQUFBLElBQUksRUFBRSxtQkFERDtBQUVMSyxRQUFBQSxRQUFRLEVBQUVyQztBQUZMLE9BQVA7QUFJRCxLLENBRUQ7Ozs7dUNBRUVzQyxJLEVBQ0FDLE8sRUFDQVgsUSxFQUNrQjtBQUFBLFVBQ1ZQLFdBRFUsR0FDTWlCLElBQUksQ0FBQ2xCLFFBRFgsQ0FDVkMsV0FEVTs7QUFFbEIsVUFBSUEsV0FBVyxDQUFDbUIsSUFBWixDQUFpQixVQUFDQyxLQUFEO0FBQUEsZUFBV0EsS0FBSyxDQUFDbkMsTUFBTixHQUFlLENBQTFCO0FBQUEsT0FBakIsQ0FBSixFQUFtRDtBQUNqRCxZQUFJc0IsUUFBSixFQUFjO0FBQ1o7QUFDQSxpQkFBTyx3Q0FBNEJVLElBQTVCLEVBQWtDQyxPQUFsQyxFQUEyQ1gsUUFBM0MsQ0FBUDtBQUNELFNBSmdELENBS2pEOzs7QUFDQWMsUUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQ0Usa0ZBREY7QUFHRDs7QUFFRCxhQUFPLHFDQUFtQkwsSUFBbkIsRUFBeUJDLE9BQXpCLENBQVA7QUFDRDs7O21DQUVjSyxLLEVBQXNCN0MsSyxFQUEyQztBQUM5RSxVQUFNOEMsVUFBVSxHQUFHLGdDQUFvQkQsS0FBSyxDQUFDRSxnQkFBMUIsQ0FBbkI7O0FBRUEsVUFBSUQsVUFBSixFQUFnQjtBQUNkO0FBQ0FELFFBQUFBLEtBQUssQ0FBQ0csU0FBTjtBQUVBLFlBQU1DLG9CQUFvQixHQUFHSCxVQUFVLENBQUNoQyxVQUF4QztBQUVBLFlBQU1vQyxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JuRCxLQUF4QixDQUFoQjtBQUNBLFlBQU1vRCxNQUFNLEdBQUcsd0JBQVdGLE9BQVgsRUFBb0I3QixRQUFwQixDQUE2QkMsV0FBNUM7QUFDQSxZQUFNK0IsYUFBYSxHQUFHQyxNQUFNLENBQUNDLE9BQVAsQ0FBZUwsT0FBTyxDQUFDN0IsUUFBUixDQUFpQkMsV0FBakIsQ0FBNkIsQ0FBN0IsQ0FBZixFQUFnRGYsTUFBaEQsR0FBeUQsQ0FBL0U7QUFDQSxZQUFNaUQsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU04sTUFBVCxFQUFpQlAsS0FBSyxDQUFDdkMsU0FBdkIsQ0FBVCxFQUE0QyxLQUE1QyxDQUFmO0FBVGMsbUJBV29CLEVBWHBCO0FBQUEsOEJBV05xRCxLQVhNO0FBQUEsWUFXTkEsS0FYTSwyQkFXRU4sYUFYRjtBQVlkLFlBQU1PLE9BQU8sR0FBRztBQUFFRCxVQUFBQSxLQUFLLEVBQUxBO0FBQUYsU0FBaEI7QUFDQSxZQUFNRSxjQUFjLEdBQUcsd0JBQU9ULE1BQVAsRUFBZUksTUFBZixFQUF1QkksT0FBdkIsQ0FBdkI7QUFDQSxZQUFNdkMsUUFBUSxHQUFHd0MsY0FBYyxDQUFDeEMsUUFBaEM7QUFFQSxZQUFNeUMsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCL0QsS0FBSyxDQUFDZ0UsSUFBckMsRUFDakJDLGVBRGlCLENBQ0RoQixvQkFBb0IsQ0FBQ2IsWUFEcEIsRUFDa0NmLFFBRGxDLEVBRWpCNkMsU0FGaUIsRUFBcEI7QUFJQWxFLFFBQUFBLEtBQUssQ0FBQ21FLE1BQU4sQ0FBYTtBQUNYTCxVQUFBQSxXQUFXLEVBQVhBLFdBRFc7QUFFWE0sVUFBQUEsUUFBUSxFQUFFLGNBRkM7QUFHWEMsVUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFlBQUFBLGNBQWMsRUFBRSxDQUFDckIsb0JBQW9CLENBQUNiLFlBQXRCO0FBREw7QUFIRixTQUFiO0FBT0Q7QUFDRjs7O3NDQUVpQlMsSyxFQUF5QjdDLEssRUFBMkM7QUFDcEYsVUFBSSxDQUFDLEtBQUtRLFdBQVYsRUFBdUI7QUFDckIsWUFBTStELGtCQUFrQixHQUFHLGdDQUFvQjFCLEtBQUssQ0FBQ3hDLEtBQTFCLENBQTNCO0FBQ0EsYUFBS21FLG1CQUFMLEdBQ0VELGtCQUFrQixJQUFJQSxrQkFBa0IsQ0FBQ3pELFVBQW5CLENBQThCcUIsY0FBOUIsS0FBaUQsY0FBdkUsR0FDSW9DLGtCQURKLEdBRUksSUFITjtBQUlEOztBQUVELFVBQU1FLE1BQU0sR0FBRyxLQUFLQyxTQUFMLENBQWU3QixLQUFmLENBQWY7QUFDQTdDLE1BQUFBLEtBQUssQ0FBQzJFLGNBQU4sQ0FBcUJGLE1BQXJCO0FBQ0Q7Ozt3Q0FFbUI1QixLLEVBQTJCN0MsSyxFQUFxQztBQUNsRixVQUFJLEtBQUt3RSxtQkFBVCxFQUE4QjtBQUM1QixhQUFLaEUsV0FBTCxHQUFtQixJQUFuQjtBQUNEO0FBQ0Y7Ozt1Q0FFa0JxQyxLLEVBQTBCN0MsSyxFQUFxQztBQUNoRixVQUFJLEtBQUtRLFdBQVQsRUFBc0I7QUFDcEJSLFFBQUFBLEtBQUssQ0FBQ21FLE1BQU4sQ0FBYTtBQUNYTCxVQUFBQSxXQUFXLEVBQUU5RCxLQUFLLENBQUNnRSxJQURSO0FBRVhJLFVBQUFBLFFBQVEsRUFBRSxpQkFGQztBQUdYQyxVQUFBQSxXQUFXLEVBQUU7QUFDWEMsWUFBQUEsY0FBYyxFQUFFdEUsS0FBSyxDQUFDRztBQURYO0FBSEYsU0FBYjtBQVFBLGFBQUtxRSxtQkFBTCxHQUEyQixJQUEzQjtBQUNBLGFBQUtoRSxXQUFMLEdBQW1CLEtBQW5CO0FBQ0Q7QUFDRjs7OzhCQUVTcUMsSyxFQUFvRDtBQUM1RCxVQUFNeEMsS0FBSyxHQUFJd0MsS0FBSyxJQUFJQSxLQUFLLENBQUN4QyxLQUFoQixJQUEwQixFQUF4QztBQUVBLFVBQU11RSxhQUFhLEdBQUcsaUNBQXFCdkUsS0FBckIsQ0FBdEI7O0FBQ0EsVUFBSXVFLGFBQWEsQ0FBQ3JFLE1BQWxCLEVBQTBCO0FBQ3hCLGVBQU8sTUFBUDtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7O0VBbExtQ3NFLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZDZW50ZXIgZnJvbSAnQHR1cmYvY2VudGVyJztcbmltcG9ydCB7XG4gIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMsXG4gIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExpbmVTdHJpbmcsIFBvaW50LCBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQge1xuICBNb2RlUHJvcHMsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIFZpZXdwb3J0LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBSZXNpemVDaXJjbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfaXNSZXNpemluZyA9IGZhbHNlO1xuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgcGlja3MgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5waWNrcztcbiAgICBjb25zdCBtYXBDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICAvLyBpbnRlcm1lZGlhdGUgZWRpdCBoYW5kbGVcbiAgICBpZiAoXG4gICAgICBwaWNrcyAmJlxuICAgICAgcGlja3MubGVuZ3RoICYmXG4gICAgICBtYXBDb29yZHMgJiZcbiAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICAhdGhpcy5faXNSZXNpemluZ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZUFzUGljayA9IHBpY2tzLmZpbmQoKHBpY2spID0+ICFwaWNrLmlzR3VpZGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgIGZlYXR1cmVBc1BpY2sub2JqZWN0LnByb3BlcnRpZXMuc2hhcGUgJiZcbiAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QucHJvcGVydGllcy5zaGFwZS5pbmNsdWRlcygnQ2lyY2xlJykgJiZcbiAgICAgICAgcHJvcHMuc2VsZWN0ZWRJbmRleGVzLmluY2x1ZGVzKGZlYXR1cmVBc1BpY2suaW5kZXgpXG4gICAgICApIHtcbiAgICAgICAgbGV0IGludGVybWVkaWF0ZVBvaW50OiBOZWFyZXN0UG9pbnRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgICAgIGxldCBwb3NpdGlvbkluZGV4UHJlZml4ID0gW107XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVBvaW50ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgICAgICAgLy8gcHJvY2VzcyBhbGwgbGluZXMgb2YgdGhlIChzaW5nbGUpIGZlYXR1cmVcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICAobGluZVN0cmluZywgcHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lU3RyaW5nRmVhdHVyZSA9IHRvTGluZVN0cmluZyhsaW5lU3RyaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnRPbkxpbmUoXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbGluZVN0cmluZ0ZlYXR1cmUsXG4gICAgICAgICAgICAgIHJlZmVyZW5jZVBvaW50LFxuICAgICAgICAgICAgICBwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcudmlld3BvcnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFpbnRlcm1lZGlhdGVQb2ludCB8fFxuICAgICAgICAgICAgICBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3QgPCBpbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVQb2ludCA9IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50O1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4UHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgLy8gdGFjayBvbiB0aGUgbG9uZSBpbnRlcm1lZGlhdGUgcG9pbnQgdG8gdGhlIHNldCBvZiBoYW5kbGVzXG4gICAgICAgIGlmIChpbnRlcm1lZGlhdGVQb2ludCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbiB9LFxuICAgICAgICAgICAgcHJvcGVydGllczogeyBpbmRleCB9LFxuICAgICAgICAgIH0gPSBpbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICBoYW5kbGVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdpbnRlcm1lZGlhdGUnLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXg6IGZlYXR1cmVBc1BpY2suaW5kZXgsXG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogWy4uLnBvc2l0aW9uSW5kZXhQcmVmaXgsIGluZGV4ICsgMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IGhhbmRsZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIHR1cmYuanMgZG9lcyBub3Qgc3VwcG9ydCBlbGV2YXRpb24gZm9yIG5lYXJlc3RQb2ludE9uTGluZVxuICBuZWFyZXN0UG9pbnRPbkxpbmUoXG4gICAgbGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LFxuICAgIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0IHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBOZWFyZXN0UG9pbnRUeXBlIHtcbiAgICBjb25zdCB7IGNvb3JkaW5hdGVzIH0gPSBsaW5lLmdlb21ldHJ5O1xuICAgIGlmIChjb29yZGluYXRlcy5zb21lKChjb29yZCkgPT4gY29vcmQubGVuZ3RoID4gMikpIHtcbiAgICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgICAvLyBUaGlzIGxpbmUgaGFzIGVsZXZhdGlvbiwgd2UgbmVlZCB0byB1c2UgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtXG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUobGluZSwgaW5Qb2ludCwgdmlld3BvcnQpO1xuICAgICAgfVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnRWRpdGluZyAzRCBwb2ludCBidXQgbW9kZUNvbmZpZy52aWV3cG9ydCBub3QgcHJvdmlkZWQuIEZhbGxpbmcgYmFjayB0byAyRCBsb2dpYy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZWFyZXN0UG9pbnRPbkxpbmUobGluZSwgaW5Qb2ludCk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICAvLyBDYW5jZWwgbWFwIHBhbm5pbmcgaWYgcG9pbnRlciB3ZW50IGRvd24gb24gYW4gZWRpdCBoYW5kbGVcbiAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuXG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICAgIGNvbnN0IGNlbnRlciA9IHR1cmZDZW50ZXIoZmVhdHVyZSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICBjb25zdCBudW1iZXJPZlN0ZXBzID0gT2JqZWN0LmVudHJpZXMoZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSkubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNlbnRlciwgZXZlbnQubWFwQ29vcmRzKSwgMC4wMDEpO1xuXG4gICAgICBjb25zdCB7IHN0ZXBzID0gbnVtYmVyT2ZTdGVwcyB9ID0ge307XG4gICAgICBjb25zdCBvcHRpb25zID0geyBzdGVwcyB9O1xuICAgICAgY29uc3QgdXBkYXRlZEZlYXR1cmUgPSBjaXJjbGUoY2VudGVyLCByYWRpdXMsIG9wdGlvbnMpO1xuICAgICAgY29uc3QgZ2VvbWV0cnkgPSB1cGRhdGVkRmVhdHVyZS5nZW9tZXRyeTtcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLnJlcGxhY2VHZW9tZXRyeShlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXgsIGdlb21ldHJ5KVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2NpcmNsZVJlc2l6ZScsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc1Jlc2l6aW5nKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSA9XG4gICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZSAmJiBzZWxlY3RlZEVkaXRIYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgICAgICAgICA/IHNlbGVjdGVkRWRpdEhhbmRsZVxuICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9pc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1Jlc2l6aW5nKSB7XG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjaXJjbGVSZXNpemVFbmQnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUmVzaXppbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJzb3IoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaWNrcyA9IChldmVudCAmJiBldmVudC5waWNrcykgfHwgW107XG5cbiAgICBjb25zdCBoYW5kbGVzUGlja2VkID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICAgIGlmIChoYW5kbGVzUGlja2VkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdjZWxsJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/rotate-mode.js b/modules/edit-modes/dist-es6/lib/rotate-mode.js new file mode 100644 index 000000000..bd2e113f4 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/rotate-mode.js @@ -0,0 +1,258 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotateMode = void 0; + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _meta = require("@turf/meta"); + +var _invariant = require("@turf/invariant"); + +var _helpers = require("@turf/helpers"); + +var _transformRotate = _interopRequireDefault(require("@turf/transform-rotate")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 RotateMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(RotateMode, _GeoJsonEditMode); + + var _super = _createSuper(RotateMode); + + function RotateMode() { + var _this; + + _classCallCheck(this, RotateMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingRotated", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isRotating", false); + + _defineProperty(_assertThisInitialized(_this), "_isSinglePointGeometrySelected", function (geometry) { + var _ref = geometry || {}, + features = _ref.features; + + if (Array.isArray(features) && features.length === 1) { + // @ts-ignore + var _getGeom = (0, _invariant.getGeom)(features[0]), + type = _getGeom.type; + + return type === 'Point'; + } + + return false; + }); + + _defineProperty(_assertThisInitialized(_this), "getIsRotating", function () { + return _this._isRotating; + }); + + return _this; + } + + _createClass(RotateMode, [{ + key: "getGuides", + value: function getGuides(props) { + var selectedGeometry = this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props); + + if (this._isSinglePointGeometrySelected(selectedGeometry)) { + return { + type: 'FeatureCollection', + features: [] + }; + } + + if (this._isRotating) { + // Display rotate pivot + return (0, _helpers.featureCollection)([(0, _centroid["default"])(selectedGeometry)]); + } + + var boundingBox = (0, _bboxPolygon["default"])((0, _bbox["default"])(selectedGeometry)); + var previousCoord = null; + var topEdgeMidpointCoords = null; + var longestEdgeLength = 0; + (0, _meta.coordEach)(boundingBox, function (coord) { + if (previousCoord) { + // @ts-ignore + var edgeMidpoint = (0, _geojsonEditMode.getIntermediatePosition)(coord, previousCoord); + + if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) { + // Get the top edge midpoint of the enveloping box + topEdgeMidpointCoords = edgeMidpoint; + } // Get the length of the longest edge of the enveloping box + + + var edgeDistance = (0, _distance["default"])(coord, previousCoord); + longestEdgeLength = Math.max(longestEdgeLength, edgeDistance); + } + + previousCoord = coord; + }); // Scale the length of the line between the rotate handler and the enveloping box + // relative to the length of the longest edge of the enveloping box + + var rotateHandleCoords = topEdgeMidpointCoords && [topEdgeMidpointCoords[0], topEdgeMidpointCoords[1] + longestEdgeLength / 1000]; + var lineFromEnvelopeToRotateHandle = (0, _helpers.lineString)([topEdgeMidpointCoords, rotateHandleCoords]); + var rotateHandle = (0, _helpers.point)(rotateHandleCoords, { + guideType: 'editHandle', + editHandleType: 'rotate' + }); // @ts-ignore + + return (0, _helpers.featureCollection)([// @ts-ignore + (0, _polygonToLine["default"])(boundingBox), // @ts-ignore + rotateHandle, // @ts-ignore + lineFromEnvelopeToRotateHandle]); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isRotating) { + return; + } + + var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotating', props); + + if (rotateAction) { + props.onEdit(rotateAction); + } + + event.cancelPan(); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isRotating) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'rotate' ? selectedEditHandle : null; + } + + this.updateCursor(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isRotating = true; + this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isRotating) { + // Rotate the geometry + var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotated', props); + + if (rotateAction) { + props.onEdit(rotateAction); + } + + this._geometryBeingRotated = null; + this._selectedEditHandle = null; + this._isRotating = false; + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._selectedEditHandle) { + // TODO: look at doing SVG cursors to get a better "rotate" cursor + props.onUpdateCursor('crosshair'); + } else { + props.onUpdateCursor(null); + } + } + }, { + key: "getRotateAction", + value: function getRotateAction(startDragPoint, currentPoint, editType, props) { + if (!this._geometryBeingRotated) { + return null; + } + + var centroid = (0, _centroid["default"])(this._geometryBeingRotated); + var angle = getRotationAngle(centroid, startDragPoint, currentPoint); // @ts-ignore + + var rotatedFeatures = (0, _transformRotate["default"])( // @ts-ignore + this._geometryBeingRotated, angle, { + pivot: centroid + }); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = rotatedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + editContext: { + featureIndexes: selectedIndexes + } + }; + } + }]); + + return RotateMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.RotateMode = RotateMode; + +function getRotationAngle(centroid, startDragPoint, currentPoint) { + var bearing1 = (0, _bearing["default"])(centroid, startDragPoint); + var bearing2 = (0, _bearing["default"])(centroid, currentPoint); + return bearing2 - bearing1; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcm90YXRlLW1vZGUudHMiXSwibmFtZXMiOlsiUm90YXRlTW9kZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ0eXBlIiwiX2lzUm90YXRpbmciLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJfZ2VvbWV0cnlCZWluZ1JvdGF0ZWQiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwicHJldmlvdXNDb29yZCIsInRvcEVkZ2VNaWRwb2ludENvb3JkcyIsImxvbmdlc3RFZGdlTGVuZ3RoIiwiY29vcmQiLCJlZGdlTWlkcG9pbnQiLCJlZGdlRGlzdGFuY2UiLCJNYXRoIiwibWF4Iiwicm90YXRlSGFuZGxlQ29vcmRzIiwibGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlIiwicm90YXRlSGFuZGxlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJldmVudCIsInJvdGF0ZUFjdGlvbiIsImdldFJvdGF0ZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwicGlja3MiLCJfc2VsZWN0ZWRFZGl0SGFuZGxlIiwicHJvcGVydGllcyIsInVwZGF0ZUN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsImNlbnRyb2lkIiwiYW5nbGUiLCJnZXRSb3RhdGlvbkFuZ2xlIiwicm90YXRlZEZlYXR1cmVzIiwicGl2b3QiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIkdlb0pzb25FZGl0TW9kZSIsImJlYXJpbmcxIiwiYmVhcmluZzIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVVBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHRyxLOztxRkFFbUIsVUFBQ0MsUUFBRCxFQUE2RDtBQUFBLGlCQUN2RUEsUUFBUSxJQUFJLEVBRDJEO0FBQUEsVUFDcEZDLFFBRG9GLFFBQ3BGQSxRQURvRjs7QUFFNUYsVUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsS0FBMkJBLFFBQVEsQ0FBQ0csTUFBVCxLQUFvQixDQUFuRCxFQUFzRDtBQUNwRDtBQURvRCx1QkFFbkMsd0JBQVFILFFBQVEsQ0FBQyxDQUFELENBQWhCLENBRm1DO0FBQUEsWUFFNUNJLElBRjRDLFlBRTVDQSxJQUY0Qzs7QUFHcEQsZUFBT0EsSUFBSSxLQUFLLE9BQWhCO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsSzs7b0VBRWU7QUFBQSxhQUFNLE1BQUtDLFdBQVg7QUFBQSxLOzs7Ozs7OzhCQUVOQyxLLEVBQTZEO0FBQ3JFLFVBQU1DLGdCQUFnQixHQUNwQixLQUFLQyxxQkFBTCxJQUE4QixLQUFLQyxzQ0FBTCxDQUE0Q0gsS0FBNUMsQ0FEaEM7O0FBR0EsVUFBSSxLQUFLSSw4QkFBTCxDQUFvQ0gsZ0JBQXBDLENBQUosRUFBMkQ7QUFDekQsZUFBTztBQUFFSCxVQUFBQSxJQUFJLEVBQUUsbUJBQVI7QUFBNkJKLFVBQUFBLFFBQVEsRUFBRTtBQUF2QyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLSyxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsZUFBTyxnQ0FBa0IsQ0FBQywwQkFBYUUsZ0JBQWIsQ0FBRCxDQUFs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LENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGVBQWUsQ0FBQzlDLE1BQXBDLEVBQTRDK0MsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNQyxhQUFhLEdBQUdGLGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1FLFlBQVksR0FBR1IsZUFBZSxDQUFDNUMsUUFBaEIsQ0FBeUJrRCxDQUF6QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ08sZUFBWixDQUE0QkYsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ3JELFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0wrQyxRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ1EsU0FBWixFQURSO0FBRUxkLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMZSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFUDtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBbEw2QlEsZ0M7Ozs7QUFxTGhDLFNBQVNkLGdCQUFULENBQTBCRixRQUExQixFQUE4Q0gsY0FBOUMsRUFBd0VDLFlBQXhFLEVBQWdHO0FBQzlGLE1BQU1tQixRQUFRLEdBQUcseUJBQVlqQixRQUFaLEVBQXNCSCxjQUF0QixDQUFqQjtBQUNBLE1BQU1xQixRQUFRLEdBQUcseUJBQVlsQixRQUFaLEVBQXNCRixZQUF0QixDQUFqQjtBQUNBLFNBQU9vQixRQUFRLEdBQUdELFFBQWxCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBjb29yZEVhY2ggfSBmcm9tICdAdHVyZi9tZXRhJztcbmltcG9ydCB7IGdldEdlb20gfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uLCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCBwb2x5Z29uVG9MaW5lIGZyb20gJ0B0dXJmL3BvbHlnb24tdG8tbGluZSc7XG5pbXBvcnQge1xuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBNb2RlUHJvcHMsXG4gIEVkaXRIYW5kbGVGZWF0dXJlLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uLCBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUm90YXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2dlb21ldHJ5QmVpbmdSb3RhdGVkOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1JvdGF0aW5nID0gZmFsc2U7XG5cbiAgX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkID0gKGdlb21ldHJ5OiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBnZW9tZXRyeSB8fCB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykgJiYgZmVhdHVyZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGdldEdlb20oZmVhdHVyZXNbMF0pO1xuICAgICAgcmV0dXJuIHR5cGUgPT09ICdQb2ludCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBnZXRJc1JvdGF0aW5nID0gKCkgPT4gdGhpcy5faXNSb3RhdGluZztcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID1cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkIHx8IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgaWYgKHRoaXMuX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkKHNlbGVjdGVkR2VvbWV0cnkpKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNSb3RhdGluZykge1xuICAgICAgLy8gRGlzcGxheSByb3RhdGUgcGl2b3RcbiAgICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbdHVyZkNlbnRyb2lkKHNlbGVjdGVkR2VvbWV0cnkpXSkgYXMgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGJib3hQb2x5Z29uKGJib3goc2VsZWN0ZWRHZW9tZXRyeSkpO1xuXG4gICAgbGV0IHByZXZpb3VzQ29vcmQgPSBudWxsO1xuICAgIGxldCB0b3BFZGdlTWlkcG9pbnRDb29yZHMgPSBudWxsO1xuICAgIGxldCBsb25nZXN0RWRnZUxlbmd0aCA9IDA7XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCkgPT4ge1xuICAgICAgaWYgKHByZXZpb3VzQ29vcmQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBlZGdlTWlkcG9pbnQgPSBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGlmICghdG9wRWRnZU1pZHBvaW50Q29vcmRzIHx8IGVkZ2VNaWRwb2ludFsxXSA+IHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSkge1xuICAgICAgICAgIC8vIEdldCB0aGUgdG9wIGVkZ2UgbWlkcG9pbnQgb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgICAgdG9wRWRnZU1pZHBvaW50Q29vcmRzID0gZWRnZU1pZHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGVkZ2VEaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGxvbmdlc3RFZGdlTGVuZ3RoID0gTWF0aC5tYXgobG9uZ2VzdEVkZ2VMZW5ndGgsIGVkZ2VEaXN0YW5jZSk7XG4gICAgICB9XG4gICAgICBwcmV2aW91c0Nvb3JkID0gY29vcmQ7XG4gICAgfSk7XG5cbiAgICAvLyBTY2FsZSB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGJldHdlZW4gdGhlIHJvdGF0ZSBoYW5kbGVyIGFuZCB0aGUgZW52ZWxvcGluZyBib3hcbiAgICAvLyByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgY29uc3Qgcm90YXRlSGFuZGxlQ29vcmRzID0gdG9wRWRnZU1pZHBvaW50Q29vcmRzICYmIFtcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1swXSxcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSArIGxvbmdlc3RFZGdlTGVuZ3RoIC8gMTAwMCxcbiAgICBdO1xuXG4gICAgY29uc3QgbGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlID0gbGluZVN0cmluZyhbdG9wRWRnZU1pZHBvaW50Q29vcmRzLCByb3RhdGVIYW5kbGVDb29yZHNdKTtcbiAgICBjb25zdCByb3RhdGVIYW5kbGUgPSBwb2ludChyb3RhdGVIYW5kbGVDb29yZHMsIHtcbiAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgZWRpdEhhbmRsZVR5cGU6ICdyb3RhdGUnLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24oW1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9seWdvblRvTGluZShib3VuZGluZ0JveCksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByb3RhdGVIYW5kbGUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaW5lRnJvbUVudmVsb3BlVG9Sb3RhdGVIYW5kbGUsXG4gICAgXSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3JvdGF0aW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAocm90YXRlQWN0aW9uKSB7XG4gICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNSb3RhdGluZykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPVxuICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGUgJiYgc2VsZWN0ZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdyb3RhdGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1JvdGF0aW5nKSB7XG4gICAgICAvLyBSb3RhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3JvdGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKHJvdGF0ZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDdXJzb3IocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBUT0RPOiBsb29rIGF0IGRvaW5nIFNWRyBjdXJzb3JzIHRvIGdldCBhIGJldHRlciBcInJvdGF0ZVwiIGN1cnNvclxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2Nyb3NzaGFpcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50LCBjdXJyZW50UG9pbnQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByb3RhdGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVJvdGF0ZShcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkLFxuICAgICAgYW5nbGUsXG4gICAgICB7XG4gICAgICAgIHBpdm90OiBjZW50cm9pZCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3QgYmVhcmluZzEgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBiZWFyaW5nMiA9IHR1cmZCZWFyaW5nKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gYmVhcmluZzIgLSBiZWFyaW5nMTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/scale-mode.js b/modules/edit-modes/dist-es6/lib/scale-mode.js new file mode 100644 index 000000000..8240fd387 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/scale-mode.js @@ -0,0 +1,298 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ScaleMode = void 0; + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _helpers = require("@turf/helpers"); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _meta = require("@turf/meta"); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformScale = _interopRequireDefault(require("@turf/transform-scale")); + +var _invariant = require("@turf/invariant"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ScaleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ScaleMode, _GeoJsonEditMode); + + var _super = _createSuper(ScaleMode); + + function ScaleMode() { + var _this; + + _classCallCheck(this, ScaleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingScaled", void 0); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_cornerGuidePoints", void 0); + + _defineProperty(_assertThisInitialized(_this), "_cursor", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isScaling", false); + + _defineProperty(_assertThisInitialized(_this), "_isSinglePointGeometrySelected", function (geometry) { + var _ref = geometry || {}, + features = _ref.features; + + if (Array.isArray(features) && features.length === 1) { + // @ts-ignore + var _getGeom = (0, _invariant.getGeom)(features[0]), + type = _getGeom.type; + + return type === 'Point'; + } + + return false; + }); + + _defineProperty(_assertThisInitialized(_this), "_getOppositeScaleHandle", function (selectedHandle) { + var selectedHandleIndex = selectedHandle && selectedHandle.properties && Array.isArray(selectedHandle.properties.positionIndexes) && selectedHandle.properties.positionIndexes[0]; + + if (typeof selectedHandleIndex !== 'number') { + return null; + } + + var guidePointCount = _this._cornerGuidePoints.length; + var oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount; + return _this._cornerGuidePoints.find(function (p) { + if (!Array.isArray(p.properties.positionIndexes)) { + return false; + } + + return p.properties.positionIndexes[0] === oppositeIndex; + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_getUpdatedData", function (props, editedData) { + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = editedData.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return updatedData.getObject(); + }); + + _defineProperty(_assertThisInitialized(_this), "isEditHandleSelected", function () { + return Boolean(_this._selectedEditHandle); + }); + + _defineProperty(_assertThisInitialized(_this), "getScaleAction", function (startDragPoint, currentPoint, editType, props) { + if (!_this._selectedEditHandle) { + return null; + } + + var oppositeHandle = _this._getOppositeScaleHandle(_this._selectedEditHandle); + + var origin = (0, _invariant.getCoord)(oppositeHandle); // @ts-ignore + + var scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint); // @ts-ignore + + var scaledFeatures = (0, _transformScale["default"])( // @ts-ignore + _this._geometryBeingScaled, scaleFactor, { + origin: origin + }); + return { + updatedData: _this._getUpdatedData(props, scaledFeatures), + editType: editType, + editContext: { + featureIndexes: props.selectedIndexes + } + }; + }); + + _defineProperty(_assertThisInitialized(_this), "updateCursor", function (props) { + if (_this._selectedEditHandle) { + if (_this._cursor) { + props.onUpdateCursor(_this._cursor); + } + + var cursorGeometry = _this.getSelectedFeaturesAsFeatureCollection(props); // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse) + + + var centroid = (0, _centroid["default"])(cursorGeometry); + var bearing = (0, _bearing["default"])(centroid, _this._selectedEditHandle); + var positiveBearing = bearing < 0 ? bearing + 180 : bearing; + + if (positiveBearing >= 0 && positiveBearing <= 90 || positiveBearing >= 180 && positiveBearing <= 270) { + _this._cursor = 'nesw-resize'; + props.onUpdateCursor('nesw-resize'); + } else { + _this._cursor = 'nwse-resize'; + props.onUpdateCursor('nwse-resize'); + } + } else { + props.onUpdateCursor(null); + _this._cursor = null; + } + }); + + return _this; + } + + _createClass(ScaleMode, [{ + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isScaling) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'scale' ? selectedEditHandle : null; + + if (selectedEditHandle) { + this.updateCursor(props); + } + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isScaling = true; + this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props); + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isScaling) { + return; + } + + props.onUpdateCursor(this._cursor); + var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaling', props); + + if (scaleAction) { + props.onEdit(scaleAction); + } + + event.cancelPan(); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isScaling) { + // Scale the geometry + var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaled', props); + + if (scaleAction) { + props.onEdit(scaleAction); + } + + props.onUpdateCursor(null); + this._geometryBeingScaled = null; + this._selectedEditHandle = null; + this._cursor = null; + this._isScaling = false; + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + this._cornerGuidePoints = []; + var selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props); // Add buffer to the enveloping box if a single Point feature is selected + + if (this._isSinglePointGeometrySelected(selectedGeometry)) { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var boundingBox = (0, _bboxPolygon["default"])((0, _bbox["default"])(selectedGeometry)); + boundingBox.properties.mode = 'scale'; + var cornerGuidePoints = []; + (0, _meta.coordEach)(boundingBox, function (coord, coordIndex) { + if (coordIndex < 4) { + // Get corner midpoint guides from the enveloping box + var cornerPoint = (0, _helpers.point)(coord, { + guideType: 'editHandle', + editHandleType: 'scale', + positionIndexes: [coordIndex] + }); + cornerGuidePoints.push(cornerPoint); + } + }); + this._cornerGuidePoints = cornerGuidePoints; // @ts-ignore + + return (0, _helpers.featureCollection)([(0, _polygonToLine["default"])(boundingBox)].concat(_toConsumableArray(this._cornerGuidePoints))); + } + }]); + + return ScaleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ScaleMode = ScaleMode; + +function getScaleFactor(centroid, startDragPoint, currentPoint) { + var startDistance = (0, _distance["default"])(centroid, startDragPoint); + var endDistance = (0, _distance["default"])(centroid, currentPoint); + return endDistance / startDistance; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2NhbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJTY2FsZU1vZGUiLCJnZW9tZXRyeSIsImZlYXR1cmVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwidHlwZSIsInNlbGVjdGVkSGFuZGxlIiwic2VsZWN0ZWRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJndWlkZVBvaW50Q291bnQiLCJfY29ybmVyR3VpZGVQb2ludHMiLCJvcHBvc2l0ZUluZGV4IiwiZmluZCIsInAiLCJwcm9wcyIsImVkaXRlZERhdGEiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiQm9vbGVhbiIsIl9zZWxlY3RlZEVkaXRIYW5kbGUiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwib3Bwb3NpdGVIYW5kbGUiLCJfZ2V0T3Bwb3NpdGVTY2FsZUhhbmRsZSIsIm9yaWdpbiIsInNjYWxlRmFjdG9yIiwiZ2V0U2NhbGVGYWN0b3IiLCJzY2FsZWRGZWF0dXJlcyIsIl9nZW9tZXRyeUJlaW5nU2NhbGVkIiwiX2dldFVwZGF0ZWREYXRhIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIl9jdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvckdlb21ldHJ5IiwiZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24iLCJjZW50cm9pZCIsImJlYXJpbmciLCJwb3NpdGl2ZUJlYXJpbmciLCJldmVudCIsIl9pc1NjYWxpbmciLCJzZWxlY3RlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImVkaXRIYW5kbGVUeXBlIiwidXBkYXRlQ3Vyc29yIiwic2NhbGVBY3Rpb24iLCJnZXRTY2FsZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRHZW9tZXRyeSIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwibW9kZSIsImNvcm5lckd1aWRlUG9pbnRzIiwiY29vcmQiLCJjb29yZEluZGV4IiwiY29ybmVyUG9pbnQiLCJndWlkZVR5cGUiLCJwdXNoIiwiR2VvSnNvbkVkaXRNb2RlIiwic3RhcnREaXN0YW5jZSIsImVuZERpc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFXQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUtFLEs7O3FGQUVvQixVQUFDQyxRQUFELEVBQTZEO0FBQUEsaUJBQ3ZFQSxRQUFRLElBQUksRUFEMkQ7QUFBQSxVQUNwRkMsUUFEb0YsUUFDcEZBLFFBRG9GOztBQUU1RixVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsUUFBZCxLQUEyQkEsUUFBUSxDQUFDRyxNQUFULEtBQW9CLENBQW5ELEVBQXNEO0FBQ3BEO0FBRG9ELHVCQUVuQyx3QkFBUUgsUUFBUSxDQUFDLENBQUQsQ0FBaEIsQ0FGbUM7QUFBQSxZQUU1Q0ksSUFGNEMsWUFFNUNBLElBRjRDOztBQUdwRCxlQUFPQSxJQUFJLEtBQUssT0FBaEI7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLOzs4RUFFeUIsVUFBQ0MsY0FBRCxFQUF1QztBQUMvRCxVQUFNQyxtQkFBbUIsR0FDdkJELGNBQWMsSUFDZEEsY0FBYyxDQUFDRSxVQURmLElBRUFOLEtBQUssQ0FBQ0MsT0FBTixDQUFjRyxjQUFjLENBQUNFLFVBQWYsQ0FBMEJDLGVBQXhDLENBRkEsSUFHQUgsY0FBYyxDQUFDRSxVQUFm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QXJCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgcG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IHsgY29vcmRFYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IGdldENvb3JkLCBnZXRHZW9tIH0gZnJvbSAnQHR1cmYvaW52YXJpYW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgU2NhbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVpbmdTY2FsZWQ6IEZlYXR1cmVDb2xsZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29ybmVyR3VpZGVQb2ludHM6IEFycmF5PEVkaXRIYW5kbGVGZWF0dXJlPjtcbiAgX2N1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzU2NhbGluZyA9IGZhbHNlO1xuXG4gIF9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCA9IChnZW9tZXRyeTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZ2VvbWV0cnkgfHwge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmVhdHVyZXMpICYmIGZlYXR1cmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgeyB0eXBlIH0gPSBnZXRHZW9tKGZlYXR1cmVzWzBdKTtcbiAgICAgIHJldHVybiB0eXBlID09PSAnUG9pbnQnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUgPSAoc2VsZWN0ZWRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVJbmRleCA9XG4gICAgICBzZWxlY3RlZEhhbmRsZSAmJlxuICAgICAgc2VsZWN0ZWRIYW5kbGUucHJvcGVydGllcyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcykgJiZcbiAgICAgIHNlbGVjdGVkSGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZEhhbmRsZUluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGd1aWRlUG9pbnRDb3VudCA9IHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzLmxlbmd0aDtcbiAgICBjb25zdCBvcHBvc2l0ZUluZGV4ID0gKHNlbGVjdGVkSGFuZGxlSW5kZXggKyBndWlkZVBvaW50Q291bnQgLyAyKSAlIGd1aWRlUG9pbnRDb3VudDtcbiAgICByZXR1cm4gdGhpcy5fY29ybmVyR3VpZGVQb2ludHMuZmluZCgocCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHAucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBvcHBvc2l0ZUluZGV4O1xuICAgIH0pO1xuICB9O1xuXG4gIF9nZXRVcGRhdGVkRGF0YSA9IChwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgZWRpdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb24pID0+IHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gZWRpdGVkRGF0YS5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKTtcbiAgfTtcblxuICBpc0VkaXRIYW5kbGVTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IEJvb2xlYW4odGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcblxuICBnZXRTY2FsZUFjdGlvbiA9IChcbiAgICBzdGFydERyYWdQb2ludDogUG9zaXRpb24sXG4gICAgY3VycmVudFBvaW50OiBQb3NpdGlvbixcbiAgICBlZGl0VHlwZTogc3RyaW5nLFxuICAgIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+XG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHBvc2l0ZUhhbmRsZSA9IHRoaXMuX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcbiAgICBjb25zdCBvcmlnaW4gPSBnZXRDb29yZChvcHBvc2l0ZUhhbmRsZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Iob3JpZ2luLCBzdGFydERyYWdQb2ludCwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVNjYWxlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCxcbiAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgeyBvcmlnaW4gfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHRoaXMuX2dldFVwZGF0ZWREYXRhKHByb3BzLCBzY2FsZWRGZWF0dXJlcyksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgdXBkYXRlQ3Vyc29yID0gKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgaWYgKHRoaXMuX2N1cnNvcikge1xuICAgICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcih0aGlzLl9jdXJzb3IpO1xuICAgICAgfVxuICAgICAgY29uc3QgY3Vyc29yR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgICAgLy8gR2V0IHJlc2l6ZSBjdXJzb3IgZGlyZWN0aW9uIGZyb20gdGhlIGhvdmVyZWQgc2NhbGUgZWRpdEhhbmRsZSAoZS5nLiBuZXN3IG9yIG53c2UpXG4gICAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZChjdXJzb3JHZW9tZXRyeSk7XG4gICAgICBjb25zdCBiZWFyaW5nID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSk7XG4gICAgICBjb25zdCBwb3NpdGl2ZUJlYXJpbmcgPSBiZWFyaW5nIDwgMCA/IGJlYXJpbmcgKyAxODAgOiBiZWFyaW5nO1xuICAgICAgaWYgKFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDAgJiYgcG9zaXRpdmVCZWFyaW5nIDw9IDkwKSB8fFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDE4MCAmJiBwb3NpdGl2ZUJlYXJpbmcgPD0gMjcwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2N1cnNvciA9ICduZXN3LXJlc2l6ZSc7XG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCduZXN3LXJlc2l6ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3Vyc29yID0gJ253c2UtcmVzaXplJztcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ253c2UtcmVzaXplJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKG51bGwpO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnc2NhbGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChzZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9pc1NjYWxpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNTY2FsaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IodGhpcy5fY3Vyc29yKTtcblxuICAgIGNvbnN0IHNjYWxlQWN0aW9uID0gdGhpcy5nZXRTY2FsZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3NjYWxpbmcnLFxuICAgICAgcHJvcHNcbiAgICApO1xuICAgIGlmIChzY2FsZUFjdGlvbikge1xuICAgICAgcHJvcHMub25FZGl0KHNjYWxlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzU2NhbGluZykge1xuICAgICAgLy8gU2NhbGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBzY2FsZUFjdGlvbiA9IHRoaXMuZ2V0U2NhbGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICdzY2FsZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcbiAgICAgIGlmIChzY2FsZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoc2NhbGVBY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IG51bGw7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPSBudWxsO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzU2NhbGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgLy8gQWRkIGJ1ZmZlciB0byB0aGUgZW52ZWxvcGluZyBib3ggaWYgYSBzaW5nbGUgUG9pbnQgZmVhdHVyZSBpcyBzZWxlY3RlZFxuICAgIGlmICh0aGlzLl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZChzZWxlY3RlZEdlb21ldHJ5KSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSBiYm94UG9seWdvbihiYm94KHNlbGVjdGVkR2VvbWV0cnkpKTtcbiAgICBib3VuZGluZ0JveC5wcm9wZXJ0aWVzLm1vZGUgPSAnc2NhbGUnO1xuICAgIGNvbnN0IGNvcm5lckd1aWRlUG9pbnRzID0gW107XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCwgY29vcmRJbmRleCkgPT4ge1xuICAgICAgaWYgKGNvb3JkSW5kZXggPCA0KSB7XG4gICAgICAgIC8vIEdldCBjb3JuZXIgbWlkcG9pbnQgZ3VpZGVzIGZyb20gdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50ID0gcG9pbnQoY29vcmQsIHtcbiAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ3NjYWxlJyxcbiAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFtjb29yZEluZGV4XSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvcm5lckd1aWRlUG9pbnRzLnB1c2goY29ybmVyUG9pbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY29ybmVyR3VpZGVQb2ludHMgPSBjb3JuZXJHdWlkZVBvaW50cztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uKFtwb2x5Z29uVG9MaW5lKGJvdW5kaW5nQm94KSwgLi4udGhpcy5fY29ybmVyR3VpZGVQb2ludHNdKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY2FsZUZhY3RvcihjZW50cm9pZDogUG9zaXRpb24sIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbiwgY3VycmVudFBvaW50OiBQb3NpdGlvbikge1xuICBjb25zdCBzdGFydERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGNlbnRyb2lkLCBzdGFydERyYWdQb2ludCk7XG4gIGNvbnN0IGVuZERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gZW5kRGlzdGFuY2UgLyBzdGFydERpc3RhbmNlO1xufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/snappable-mode.js b/modules/edit-modes/dist-es6/lib/snappable-mode.js new file mode 100644 index 000000000..d0b0423ef --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/snappable-mode.js @@ -0,0 +1,242 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SnappableMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 SnappableMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(SnappableMode, _GeoJsonEditMode); + + var _super = _createSuper(SnappableMode); + + function SnappableMode(handler) { + var _this; + + _classCallCheck(this, SnappableMode); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_handler", void 0); + + _this._handler = handler; + return _this; + } + + _createClass(SnappableMode, [{ + key: "_getSnappedMouseEvent", + value: function _getSnappedMouseEvent(event, snapSource, snapTarget) { + return Object.assign(event, { + mapCoords: snapTarget.geometry.coordinates, + pointerDownMapCoords: snapSource && snapSource.geometry.coordinates + }); + } + }, { + key: "_getPickedSnapTarget", + value: function _getPickedSnapTarget(picks) { + return (0, _utils.getPickedEditHandles)(picks).find(function (handle) { + return handle.properties.editHandleType === 'snap-target'; + }); + } + }, { + key: "_getPickedSnapSource", + value: function _getPickedSnapSource(pointerDownPicks) { + return (0, _utils.getPickedSnapSourceEditHandle)(pointerDownPicks); + } + }, { + key: "_getUpdatedSnapSourceHandle", + value: function _getUpdatedSnapSourceHandle(snapSourceHandle, data) { + var _snapSourceHandle$pro = snapSourceHandle.properties, + featureIndex = _snapSourceHandle$pro.featureIndex, + positionIndexes = _snapSourceHandle$pro.positionIndexes; + + if (!Array.isArray(positionIndexes)) { + return snapSourceHandle; + } + + var snapSourceFeature = data.features[featureIndex]; // $FlowFixMe + + var snapSourceCoordinates = positionIndexes.reduce(function (a, b) { + return a[b]; + }, snapSourceFeature.geometry.coordinates); + return _objectSpread({}, snapSourceHandle, { + geometry: { + type: 'Point', + coordinates: snapSourceCoordinates + } + }); + } // If additionalSnapTargets is present in modeConfig and is populated, this + // method will return those features along with the features + // that live in the current layer. Otherwise, this method will simply return the + // features from the current layer + + }, { + key: "_getSnapTargets", + value: function _getSnapTargets(props) { + var _ref = props.modeConfig || {}, + additionalSnapTargets = _ref.additionalSnapTargets; + + additionalSnapTargets = additionalSnapTargets || []; + var features = [].concat(_toConsumableArray(props.data.features), _toConsumableArray(additionalSnapTargets)); + return features; + } + }, { + key: "_getSnapTargetHandles", + value: function _getSnapTargetHandles(props) { + var handles = []; + + var features = this._getSnapTargets(props); + + for (var i = 0; i < features.length; i++) { + // Filter out the currently selected feature(s) + var isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i); + + if (isCurrentIndexFeatureNotSelected) { + var geometry = features[i].geometry; + handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, i, 'snap-target'))); + } + } + + return handles; + } // If no snap handle has been picked, only display the edit handles of the + // selected feature. If a snap handle has been picked, display said snap handle + // along with all snappable points on all non-selected features. + + }, { + key: "getGuides", + value: function getGuides(props) { + var modeConfig = props.modeConfig, + lastPointerMoveEvent = props.lastPointerMoveEvent; + + var _ref2 = modeConfig || {}, + enableSnapping = _ref2.enableSnapping; + + var guides = { + type: 'FeatureCollection', + features: _toConsumableArray(this._handler.getGuides(props).features) + }; + + if (!enableSnapping) { + return guides; + } + + var snapSourceHandle = lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks); // They started dragging a handle + // So render the picked handle (in its updated location) and all possible snap targets + + + if (snapSourceHandle) { + var _guides$features; + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(this._getSnapTargetHandles(props)).concat([this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)])); + + return guides; + } // Render the possible snap source handles + + + var features = props.data.features; + + var _iterator = _createForOfIteratorHelper(props.selectedIndexes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var index = _step.value; + + if (index < features.length) { + var _guides$features2; + + var geometry = features[index].geometry; + + (_guides$features2 = guides.features).push.apply(_guides$features2, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, index, 'snap-source'))); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return guides; + } + }, { + key: "_getSnapAwareEvent", + value: function _getSnapAwareEvent(event, props) { + var snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks); + + var snapTarget = this._getPickedSnapTarget(event.picks); + + return snapSource && snapTarget ? this._getSnappedMouseEvent(event, snapSource, snapTarget) : event; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + this._handler.handleStartDragging(event, props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + this._handler.handleDragging(this._getSnapAwareEvent(event, props), props); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props); + } + }]); + + return SnappableMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.SnappableMode = SnappableMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc25hcHBhYmxlLW1vZGUudHMiXSwibmFtZXMiOlsiU25hcHBhYmxlTW9kZSIsImhhbmRsZXIiLCJfaGFuZGxlciIsImV2ZW50Iiwic25hcFNvdXJjZSIsInNuYXBUYXJnZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXBDb29yZHMiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJwaWNrcyIsImZpbmQiLCJoYW5kbGUiLCJwcm9wZXJ0aWVzIiwiZWRpdEhhbmRsZVR5cGUiLCJwb2ludGVyRG93blBpY2tzIiwic25hcFNvdXJjZUhhbmRsZSIsImRhdGEiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJzbmFwU291cmNlRmVhdHVyZSIsImZlYXR1cmVzIiwic25hcFNvdXJjZUNvb3JkaW5hdGVzIiwicmVkdWNlIiwiYSIsImIiLCJ0eXBlIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwiYWRkaXRpb25hbFNuYXBUYXJnZXRzIiwiaGFuZGxlcyIsIl9nZXRTbmFwVGFyZ2V0cyIsImkiLCJsZW5ndGgiLCJpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCIsInNlbGVjdGVkSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiZW5hYmxlU25hcHBpbmciLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJfZ2V0UGlja2VkU25hcFNvdXJjZSIsIl9nZXRTbmFwVGFyZ2V0SGFuZGxlcyIsIl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZSIsImluZGV4IiwiX2dldFBpY2tlZFNuYXBUYXJnZXQiLCJfZ2V0U25hcHBlZE1vdXNlRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiX2dldFNuYXBBd2FyZUV2ZW50IiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsIkdl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S0FBcEU7QUFDRDs7O3NDQUVpQjVCLEssRUFBeUI0QixLLEVBQXFDO0FBQzlFLFdBQUs3QixRQUFMLENBQWNzRCxpQkFBZCxDQUFnQyxLQUFLRixrQkFBTCxDQUF3Qm5ELEtBQXhCLEVBQStCNEIsS0FBL0IsQ0FBaEMsRUFBdUVBLEtBQXZFO0FBQ0Q7Ozs7RUF4SmdDMEIsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZSwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgUGljayxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlcyxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbnR5cGUgTW92ZW1lbnRUeXBlRXZlbnQgPSBQb2ludGVyTW92ZUV2ZW50IHwgU3RhcnREcmFnZ2luZ0V2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQgfCBEcmFnZ2luZ0V2ZW50O1xuXG5leHBvcnQgY2xhc3MgU25hcHBhYmxlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9oYW5kbGVyOiBHZW9Kc29uRWRpdE1vZGU7XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogR2VvSnNvbkVkaXRNb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9oYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIF9nZXRTbmFwcGVkTW91c2VFdmVudDxUIGV4dGVuZHMgTW92ZW1lbnRUeXBlRXZlbnQ+KFxuICAgIGV2ZW50OiBULFxuICAgIHNuYXBTb3VyY2U6IEVkaXRIYW5kbGVGZWF0dXJlLFxuICAgIHNuYXBUYXJnZXQ6IEVkaXRIYW5kbGVGZWF0dXJlXG4gICk6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IHNuYXBUYXJnZXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3Jkczogc25hcFNvdXJjZSAmJiBzbmFwU291cmNlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBUYXJnZXQocGlja3M6IFBpY2tbXSk6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKS5maW5kKFxuICAgICAgKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXRhcmdldCdcbiAgICApO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBTb3VyY2UoXG4gICAgcG9pbnRlckRvd25QaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShwb2ludGVyRG93blBpY2tzKTtcbiAgfVxuXG4gIF9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShcbiAgICBzbmFwU291cmNlSGFuZGxlOiBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcyB9ID0gc25hcFNvdXJjZUhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gc25hcFNvdXJjZUhhbmRsZTtcbiAgICB9XG4gICAgY29uc3Qgc25hcFNvdXJjZUZlYXR1cmUgPSBkYXRhLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgY29uc3Qgc25hcFNvdXJjZUNvb3JkaW5hdGVzOiBQb3NpdGlvbiA9IHBvc2l0aW9uSW5kZXhlcy5yZWR1Y2UoXG4gICAgICAoYTogYW55W10sIGI6IG51bWJlcikgPT4gYVtiXSxcbiAgICAgIHNuYXBTb3VyY2VGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zbmFwU291cmNlSGFuZGxlLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHNuYXBTb3VyY2VDb29yZGluYXRlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyBpcyBwcmVzZW50IGluIG1vZGVDb25maWcgYW5kIGlzIHBvcHVsYXRlZCwgdGhpc1xuICAvLyBtZXRob2Qgd2lsbCByZXR1cm4gdGhvc2UgZmVhdHVyZXMgYWxvbmcgd2l0aCB0aGUgZmVhdHVyZXNcbiAgLy8gdGhhdCBsaXZlIGluIHRoZSBjdXJyZW50IGxheWVyLiBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHdpbGwgc2ltcGx5IHJldHVybiB0aGVcbiAgLy8gZmVhdHVyZXMgZnJvbSB0aGUgY3VycmVudCBsYXllclxuICBfZ2V0U25hcFRhcmdldHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcbiAgICBhZGRpdGlvbmFsU25hcFRhcmdldHMgPSBhZGRpdGlvbmFsU25hcFRhcmdldHMgfHwgW107XG5cbiAgICBjb25zdCBmZWF0dXJlcyA9IFsuLi5wcm9wcy5kYXRhLmZlYXR1cmVzLCAuLi5hZGRpdGlvbmFsU25hcFRhcmdldHNdO1xuICAgIHJldHVybiBmZWF0dXJlcztcbiAgfVxuXG4gIF9nZXRTbmFwVGFyZ2V0SGFuZGxlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuX2dldFNuYXBUYXJnZXRzKHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlKHMpXG4gICAgICBjb25zdCBpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCA9ICFwcm9wcy5zZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdzbmFwLXRhcmdldCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICAvLyBJZiBubyBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIG9ubHkgZGlzcGxheSB0aGUgZWRpdCBoYW5kbGVzIG9mIHRoZVxuICAvLyBzZWxlY3RlZCBmZWF0dXJlLiBJZiBhIHNuYXAgaGFuZGxlIGhhcyBiZWVuIHBpY2tlZCwgZGlzcGxheSBzYWlkIHNuYXAgaGFuZGxlXG4gIC8vIGFsb25nIHdpdGggYWxsIHNuYXBwYWJsZSBwb2ludHMgb24gYWxsIG5vbi1zZWxlY3RlZCBmZWF0dXJlcy5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBtb2RlQ29uZmlnLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuX2hhbmRsZXIuZ2V0R3VpZGVzKHByb3BzKS5mZWF0dXJlc10sXG4gICAgfTtcblxuICAgIGlmICghZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc25hcFNvdXJjZUhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIHRoaXMuX2dldFBpY2tlZFNuYXBTb3VyY2UobGFzdFBvaW50ZXJNb3ZlRXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICAvLyBUaGV5IHN0YXJ0ZWQgZHJhZ2dpbmcgYSBoYW5kbGVcbiAgICAvLyBTbyByZW5kZXIgdGhlIHBpY2tlZCBoYW5kbGUgKGluIGl0cyB1cGRhdGVkIGxvY2F0aW9uKSBhbmQgYWxsIHBvc3NpYmxlIHNuYXAgdGFyZ2V0c1xuICAgIGlmIChzbmFwU291cmNlSGFuZGxlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaChcbiAgICAgICAgLi4udGhpcy5fZ2V0U25hcFRhcmdldEhhbmRsZXMocHJvcHMpLFxuICAgICAgICB0aGlzLl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShzbmFwU291cmNlSGFuZGxlLCBwcm9wcy5kYXRhKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGd1aWRlcztcbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgdGhlIHBvc3NpYmxlIHNuYXAgc291cmNlIGhhbmRsZXNcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBwcm9wcy5kYXRhO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5nZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KGdlb21ldHJ5LCBpbmRleCwgJ3NuYXAtc291cmNlJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQ8VCBleHRlbmRzIE1vdmVtZW50VHlwZUV2ZW50PihcbiAgICBldmVudDogVCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBUIHtcbiAgICBjb25zdCBzbmFwU291cmNlID0gdGhpcy5fZ2V0UGlja2VkU25hcFNvdXJjZShwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBzbmFwVGFyZ2V0ID0gdGhpcy5fZ2V0UGlja2VkU25hcFRhcmdldChldmVudC5waWNrcyk7XG5cbiAgICByZXR1cm4gc25hcFNvdXJjZSAmJiBzbmFwVGFyZ2V0XG4gICAgICA/IHRoaXMuX2dldFNuYXBwZWRNb3VzZUV2ZW50KGV2ZW50LCBzbmFwU291cmNlLCBzbmFwVGFyZ2V0KVxuICAgICAgOiBldmVudDtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQsIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVEcmFnZ2luZyh0aGlzLl9nZXRTbmFwQXdhcmVFdmVudChldmVudCwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVBvaW50ZXJNb3ZlKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50LCBwcm9wcyksIHByb3BzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/split-polygon-mode.js b/modules/edit-modes/dist-es6/lib/split-polygon-mode.js new file mode 100644 index 000000000..cfbfcdd9f --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/split-polygon-mode.js @@ -0,0 +1,289 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SplitPolygonMode = void 0; + +var _booleanPointInPolygon = _interopRequireDefault(require("@turf/boolean-point-in-polygon")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _helpers = require("@turf/helpers"); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _nearestPointOnLine = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var SplitPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(SplitPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(SplitPolygonMode); + + function SplitPolygonMode() { + _classCallCheck(this, SplitPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(SplitPolygonMode, [{ + key: "calculateMapCoords", + value: function calculateMapCoords(clickSequence, mapCoords, props) { + var modeConfig = props.modeConfig; + + if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) { + return mapCoords; + } + + if (clickSequence.length === 1) { + // if first point is clicked, then find closest polygon point and build ~90deg vector + var firstPoint = clickSequence[0]; + var selectedGeometry = this.getSelectedGeometry(props); // @ts-ignore + + var feature = (0, _polygonToLine["default"])(selectedGeometry); + var lines = feature.type === 'FeatureCollection' ? feature.features : [feature]; + var minDistance = Number.MAX_SAFE_INTEGER; + var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it. + + lines.forEach(function (line) { + var snapPoint = (0, _nearestPointOnLine["default"])(line, firstPoint); + var distanceFromOrigin = (0, _distance["default"])(snapPoint, firstPoint); + + if (minDistance > distanceFromOrigin) { + minDistance = distanceFromOrigin; + closestPoint = snapPoint; + } + }); + + if (closestPoint) { + // closest point is used as 90degree entry to the polygon + var lastBearing = (0, _bearing["default"])(firstPoint, closestPoint); + var currentDistance = (0, _distance["default"])(firstPoint, mapCoords, { + units: 'meters' + }); + return (0, _destination["default"])(firstPoint, currentDistance, lastBearing, { + units: 'meters' + }).geometry.coordinates; + } + + return mapCoords; + } // Allow only 90 degree turns + + + var lastPoint = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, mapCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1), + approximatePoint = _generatePointsParall2[0]; // align point with current ground + + + var nearestPt = (0, _nearestPointOnLine["default"])((0, _helpers.lineString)([lastPoint, approximatePoint]), mapCoords).geometry.coordinates; + return nearestPt; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0 || !props.lastPointerMoveEvent) { + // nothing to do yet + return guides; + } + + var mapCoords = props.lastPointerMoveEvent.mapCoords; + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateMapCoords(clickSequence, mapCoords, props)]) + } + }); + return guides; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var tentativeFeature = this.getTentativeGuide(props); + var selectedGeometry = this.getSelectedGeometry(props); + + if (!selectedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('A polygon must be selected for splitting'); + return; + } + + var clickSequence = this.getClickSequence(); + + if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + clickSequence.push(tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]); + } else { + this.addClickSequence(event); + } + + var pt = { + type: 'Point', + coordinates: clickSequence[clickSequence.length - 1] + }; // @ts-ignore + + var isPointInPolygon = (0, _booleanPointInPolygon["default"])(pt, selectedGeometry); + + if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) { + this.resetClickSequence(); // @ts-ignore + + var isLineInterectingWithPolygon = (0, _lineIntersect["default"])(tentativeFeature, selectedGeometry); + + if (isLineInterectingWithPolygon.features.length === 0) { + return; + } + + var editAction = this.splitPolygon(tentativeFeature, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "splitPolygon", + value: function splitPolygon(tentativeFeature, props) { + var selectedGeometry = this.getSelectedGeometry(props); + var featureIndex = props.selectedIndexes[0]; + var modeConfig = props.modeConfig || {}; // Default gap in between the polygon + + var _modeConfig$gap = modeConfig.gap, + gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap, + _modeConfig$units = modeConfig.units, + units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units; + + if (gap === 0) { + gap = 0.1; + units = 'centimeters'; + } + + var buffer = (0, _buffer["default"])(tentativeFeature, gap, { + units: units + }); // @ts-ignore + + var updatedGeometry = (0, _difference["default"])(selectedGeometry, buffer); + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Split Polygon erased'); + return null; + } + + var _updatedGeometry$geom = updatedGeometry.geometry, + type = _updatedGeometry$geom.type, + coordinates = _updatedGeometry$geom.coordinates; + var updatedCoordinates = []; + + if (type === 'Polygon') { + // Update the coordinates as per Multipolygon + // @ts-ignore + updatedCoordinates = coordinates.map(function (c) { + return [c]; + }); + } else { + // Handle Case when Multipolygon has holes + // @ts-ignore + updatedCoordinates = coordinates.reduce(function (agg, prev) { + prev.forEach(function (p) { + agg.push([p]); + }); + return agg; + }, []); + } // Update the type to Mulitpolygon + + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, { + type: 'MultiPolygon', + coordinates: updatedCoordinates + }); + var editAction = { + updatedData: updatedData.getObject(), + editType: 'split', + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + }]); + + return SplitPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.SplitPolygonMode = SplitPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3BsaXQtcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlNwbGl0UG9seWdvbk1vZGUiLCJjbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJnZXRDbGlja1NlcXVlbmNlIiwiZ3VpZGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwdXNoIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImNhbGN1bGF0ZU1hcENvb3JkcyIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwiY29uc29sZSIsIndhcm4iLCJhZGRDbGlja1NlcXVlbmNlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsImVkaXRBY3Rpb24iLCJzcGxpdFBvbHlnb24iLCJvbkVkaXQiLCJvblVwZGF0ZUN1cnNvciIsImZlYXR1cmVJbmRleCIsInNlbGVjdGVkSW5kZXhlcyIsImdhcCIsImJ1ZmZlciIsInVwZGF0ZWRHZW9tZXRyeSIsInVwZGF0ZWRDb29yZGluYXRlcyIsIm1hcCIsImMiLCJyZWR1Y2UiLCJhZ2ciLCJwcmV2IiwicCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZ0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLGEsRUFBb0JDLFMsRUFBZ0JDLEssRUFBcUM7QUFDMUYsVUFBTUMsVUFBVSxHQUFHRCxLQUFLLENBQUNDLFVBQXpCOztBQUNBLFVBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNBLFVBQVUsQ0FBQ0MsWUFBM0IsSUFBMkMsQ0FBQ0osYUFBYSxDQUFDSyxNQUE5RCxFQUFzRTtBQUNwRSxlQUFPSixTQUFQO0FBQ0Q7O0FBQ0QsVUFBSUQsYUFBYSxDQUFDSyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHTixhQUFhLENBQUMsQ0FBRCxDQUFoQztBQUNBLFlBQU1PLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLENBQXlCTixLQUF6QixDQUF6QixDQUg4QixDQUk5Qjs7QUFDQSxZQUFNTyxPQUFPLEdBQUcsK0JBQWtCRixnQkFBbEIsQ0FBaEI7QUFFQSxZQUFNRyxLQUFLLEdBQUdELE9BQU8sQ0FBQ0UsSUFBUixLQUFpQixtQkFBakIsR0FBdUNGLE9BQU8sQ0FBQ0csUUFBL0MsR0FBMEQsQ0FBQ0gsT0FBRCxDQUF4RTtBQUNBLFlBQUlJLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxnQkFBekI7QUFDQSxZQUFJQyxZQUFZLEdBQUcsSUFBbkIsQ0FUOEIsQ0FVOUI7O0FBQ0FOLFFBQUFBLEtBQUssQ0FBQ08sT0FB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QjtBQUNBO0FBQ0E0QyxRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQytCLEdBQVosQ0FBZ0IsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPLENBQUNBLENBQUQsQ0FBUDtBQUFBLFNBQWhCLENBQXJCO0FBQ0QsT0FKRCxNQUlPO0FBQ0w7QUFDQTtBQUNBRixRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQ2lDLE1BQVosQ0FBbUIsVUFBQ0MsR0FBRCxFQUFNQyxJQUFOLEVBQWU7QUFDckRBLFVBQUFBLElBQUksQ0FBQzNDLE9BQUwsQ0FBYSxVQUFDNEMsQ0FBRCxFQUFPO0FBQ2xCRixZQUFBQSxHQUFHLENBQUMzQixJQUFKLENBQVMsQ0FBQzZCLENBQUQsQ0FBVDtBQUNELFdBRkQ7QUFHQSxpQkFBT0YsR0FBUDtBQUNELFNBTG9CLEVBS2xCLEVBTGtCLENBQXJCO0FBTUQsT0FwQ21GLENBc0NwRjs7O0FBQ0EsVUFBTUcsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCN0QsS0FBSyxDQUFDOEQsSUFBckMsRUFBMkNDLGVBQTNDLENBQTJEZixZQUEzRCxFQUF5RTtBQUMzRnZDLFFBQUFBLElBQUksRUFBRSxjQURxRjtBQUUzRmMsUUFBQUEsV0FBVyxFQUFFOEI7QUFGOEUsT0FBekUsQ0FBcEI7QUFLQSxVQUFNVCxVQUE2QixHQUFHO0FBQ3BDZ0IsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNJLFNBQVosRUFEdUI7QUFFcENDLFFBQUFBLFFBQVEsRUFBRSxPQUYwQjtBQUdwQ0MsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDbkIsWUFBRDtBQURMO0FBSHVCLE9BQXRDO0FBUUEsYUFBT0osVUFBUDtBQUNEOzs7O0VBakxtQ3dCLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJvb2xlYW5Qb2ludEluUG9seWdvbiBmcm9tICdAdHVyZi9ib29sZWFuLXBvaW50LWluLXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZEZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgdHVyZlBvbHlnb25Ub0xpbmUgZnJvbSAnQHR1cmYvcG9seWdvbi10by1saW5lJztcbmltcG9ydCBuZWFyZXN0UG9pbnRPbkxpbmUgZnJvbSAnQHR1cmYvbmVhcmVzdC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBTcGxpdFBvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY2FsY3VsYXRlTWFwQ29vcmRzKGNsaWNrU2VxdWVuY2U6IGFueSwgbWFwQ29vcmRzOiBhbnksIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKCFtb2RlQ29uZmlnIHx8ICFtb2RlQ29uZmlnLmxvY2s5MERlZ3JlZSB8fCAhY2xpY2tTZXF1ZW5jZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBtYXBDb29yZHM7XG4gICAgfVxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gaWYgZmlyc3QgcG9pbnQgaXMgY2xpY2tlZCwgdGhlbiBmaW5kIGNsb3Nlc3QgcG9seWdvbiBwb2ludCBhbmQgYnVpbGQgfjkwZGVnIHZlY3RvclxuICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0dXJmUG9seWdvblRvTGluZShzZWxlY3RlZEdlb21ldHJ5KTtcblxuICAgICAgY29uc3QgbGluZXMgPSBmZWF0dXJlLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgPyBmZWF0dXJlLmZlYXR1cmVzIDogW2ZlYXR1cmVdO1xuICAgICAgbGV0IG1pbkRpc3RhbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICBsZXQgY2xvc2VzdFBvaW50ID0gbnVsbDtcbiAgICAgIC8vIElmIE11bHRpcG9seWdvbiwgdGhlbiB3ZSBzaG91bGQgZmluZCBuZWFyZXN0IHBvbHlnb24gbGluZSBhbmQgc3RpY2sgc3BsaXQgdG8gaXQuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHNuYXBQb2ludCA9IG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBmaXJzdFBvaW50KTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tT3JpZ2luID0gdHVyZkRpc3RhbmNlKHNuYXBQb2ludCwgZmlyc3RQb2ludCk7XG4gICAgICAgIGlmIChtaW5EaXN0YW5jZSA+IGRpc3RhbmNlRnJvbU9yaWdpbikge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VGcm9tT3JpZ2luO1xuICAgICAgICAgIGNsb3Nlc3RQb2ludCA9IHNuYXBQb2ludDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjbG9zZXN0UG9pbnQpIHtcbiAgICAgICAgLy8gY2xvc2VzdCBwb2ludCBpcyB1c2VkIGFzIDkwZGVncmVlIGVudHJ5IHRvIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IGxhc3RCZWFyaW5nID0gdHVyZkJlYXJpbmcoZmlyc3RQb2ludCwgY2xvc2VzdFBvaW50KTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGZpcnN0UG9pbnQsIG1hcENvb3JkcywgeyB1bml0czogJ21ldGVycycgfSk7XG4gICAgICAgIHJldHVybiB0dXJmRGVzdGluYXRpb24oZmlyc3RQb2ludCwgY3VycmVudERpc3RhbmNlLCBsYXN0QmVhcmluZywge1xuICAgICAgICAgIHVuaXRzOiAnbWV0ZXJzJyxcbiAgICAgICAgfSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwQ29vcmRzO1xuICAgIH1cbiAgICAvLyBBbGxvdyBvbmx5IDkwIGRlZ3JlZSB0dXJuc1xuICAgIGNvbnN0IGxhc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBbYXBwcm94aW1hdGVQb2ludF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdLFxuICAgICAgbGFzdFBvaW50LFxuICAgICAgbWFwQ29vcmRzXG4gICAgKTtcbiAgICAvLyBhbGlnbiBwb2ludCB3aXRoIGN1cnJlbnQgZ3JvdW5kXG4gICAgY29uc3QgbmVhcmVzdFB0ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmVTdHJpbmcoW2xhc3RQb2ludCwgYXBwcm94aW1hdGVQb2ludF0pLCBtYXBDb29yZHMpXG4gICAgICAuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgcmV0dXJuIG5lYXJlc3RQdDtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCB8fCAhcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWFwQ29vcmRzIH0gPSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudDtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVNYXBDb29yZHMoY2xpY2tTZXF1ZW5jZSwgbWFwQ29vcmRzLCBwcm9wcyldLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVHdWlkZShwcm9wcyk7XG5cbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZS5wdXNoKFxuICAgICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3RlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHQgPSB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmIHRlbnRhdGl2ZUZlYXR1cmUgJiYgIWlzUG9pbnRJblBvbHlnb24pIHtcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uID0gbGluZUludGVyc2VjdCh0ZW50YXRpdmVGZWF0dXJlLCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICAgIGlmIChpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uLmZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLnNwbGl0UG9seWdvbih0ZW50YXRpdmVGZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgc3BsaXRQb2x5Z29uKHRlbnRhdGl2ZUZlYXR1cmU6IFRlbnRhdGl2ZUZlYXR1cmUsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wcyk7XG4gICAgY29uc3QgZmVhdHVyZUluZGV4ID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gRGVmYXVsdCBnYXAgaW4gYmV0d2VlbiB0aGUgcG9seWdvblxuICAgIGxldCB7IGdhcCA9IDAuMSwgdW5pdHMgPSAnY2VudGltZXRlcnMnIH0gPSBtb2RlQ29uZmlnO1xuICAgIGlmIChnYXAgPT09IDApIHtcbiAgICAgIGdhcCA9IDAuMTtcbiAgICAgIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJztcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIFNwbGl0IFBvbHlnb24gZXJhc2VkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHR5cGUsIGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnk7XG4gICAgbGV0IHVwZGF0ZWRDb29yZGluYXRlcyA9IFtdO1xuICAgIGlmICh0eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgYXMgcGVyIE11bHRpcG9seWdvblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMubWFwKChjKSA9PiBbY10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgQ2FzZSB3aGVuIE11bHRpcG9seWdvbiBoYXMgaG9sZXNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRDb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzLnJlZHVjZSgoYWdnLCBwcmV2KSA9PiB7XG4gICAgICAgIHByZXYuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKFtwXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWdnO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdHlwZSB0byBNdWxpdHBvbHlnb25cbiAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKS5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB7XG4gICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJyxcbiAgICAgIGNvb3JkaW5hdGVzOiB1cGRhdGVkQ29vcmRpbmF0ZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGl0QWN0aW9uOiBHZW9Kc29uRWRpdEFjdGlvbiA9IHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlOiAnc3BsaXQnLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/three-click-polygon-mode.js b/modules/edit-modes/dist-es6/lib/three-click-polygon-mode.js new file mode 100644 index 000000000..04929b882 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/three-click-polygon-mode.js @@ -0,0 +1,140 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ThreeClickPolygonMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ThreeClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ThreeClickPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(ThreeClickPolygonMode); + + function ThreeClickPolygonMode() { + _classCallCheck(this, ThreeClickPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(ThreeClickPolygonMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); + var tentativeFeature = this.getTentativeGuide(props); + + if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props); + this.resetClickSequence(); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return guides; + } + + var hoveredCoord = lastPointerMoveEvent.mapCoords; + + if (clickSequence.length === 1) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], hoveredCoord] + } + }); + } else { + var polygon = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig); + + if (polygon) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: polygon.geometry + }); + } + } + + return guides; + } + }, { + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(ThreeClickPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 2) { + tentativeFeature = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], lastCoords[0], props.modeConfig); + } + + return tentativeFeature; + } + }]); + + return ThreeClickPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ThreeClickPolygonMode = ThreeClickPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGhyZWUtY2xpY2stcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSIsImV2ZW50IiwicHJvcHMiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJvbkVkaXQiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsIm1vZGVDb25maWciLCJndWlkZXMiLCJmZWF0dXJlcyIsImhvdmVyZWRDb29yZCIsIm1hcENvb3JkcyIsInB1c2giLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uIiwiZ2V0VGhyZWVDbGlja1BvbHlnb24iLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxxQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxXQUFLQyxnQkFBTCxDQUFzQkYsS0FBdEI7QUFDQSxVQUFNRyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFDQSxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBdkIsQ0FBekI7O0FBRUEsVUFDRUUsYUFBYSxDQUFDSSxNQUFkLEdBQXVCLENBQXZCLElBQ0FGLGdCQURBLElBRUFBLGdCQUFnQixDQUFDRyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUs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ImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgcHJvcHMpO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJlZENvb3JkID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgaG92ZXJlZENvb3JkXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVswXSxcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVsxXSxcbiAgICAgICAgaG92ZXJlZENvb3JkLFxuICAgICAgICBtb2RlQ29uZmlnXG4gICAgICApO1xuICAgICAgaWYgKHBvbHlnb24pIHtcbiAgICAgICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBnZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICBjb29yZDE6IFBvc2l0aW9uLFxuICAgIGNvb3JkMjogUG9zaXRpb24sXG4gICAgY29vcmQzOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMF0sXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMV0sXG4gICAgICAgIGxhc3RDb29yZHNbMF0sXG4gICAgICAgIHByb3BzLm1vZGVDb25maWdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/transform-mode.js b/modules/edit-modes/dist-es6/lib/transform-mode.js new file mode 100644 index 000000000..25e6070bc --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/transform-mode.js @@ -0,0 +1,140 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TransformMode = void 0; + +var _helpers = require("@turf/helpers"); + +var _translateMode = require("./translate-mode"); + +var _scaleMode = require("./scale-mode"); + +var _rotateMode = require("./rotate-mode"); + +var _compositeMode = require("./composite-mode"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var TransformMode = /*#__PURE__*/function (_CompositeMode) { + _inherits(TransformMode, _CompositeMode); + + var _super = _createSuper(TransformMode); + + function TransformMode() { + _classCallCheck(this, TransformMode); + + return _super.call(this, [new _translateMode.TranslateMode(), new _scaleMode.ScaleMode(), new _rotateMode.RotateMode()]); + } + + _createClass(TransformMode, [{ + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var updatedCursor = null; + + _get(_getPrototypeOf(TransformMode.prototype), "handlePointerMove", this).call(this, event, _objectSpread({}, props, { + onUpdateCursor: function onUpdateCursor(cursor) { + updatedCursor = cursor || updatedCursor; + } + })); + + props.onUpdateCursor(updatedCursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var scaleMode = null; + var translateMode = null; + var filteredModes = []; // If the user selects a scaling edit handle that overlaps with part of the selected feature, + // it is possible for both scale and translate actions to be triggered. This logic prevents + // this simultaneous action trigger from happening by putting a higher priority on scaling + // since the user needs to be more precise to hover over a scaling edit handle. + + this._modes.forEach(function (mode) { + if (mode instanceof _translateMode.TranslateMode) { + translateMode = mode; + } else { + if (mode instanceof _scaleMode.ScaleMode) { + scaleMode = mode; + } + + filteredModes.push(mode); + } + }); + + if (scaleMode instanceof _scaleMode.ScaleMode && !scaleMode.isEditHandleSelected()) { + filteredModes.push(translateMode); + } + + filteredModes.filter(Boolean).forEach(function (mode) { + return mode.handleStartDragging(event, props); + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + var compositeGuides = _get(_getPrototypeOf(TransformMode.prototype), "getGuides", this).call(this, props); + + var rotateMode = (this._modes || []).find(function (mode) { + return mode instanceof _rotateMode.RotateMode; + }); + + if (rotateMode instanceof _rotateMode.RotateMode) { + var nonEnvelopeGuides = compositeGuides.features.filter(function (guide) { + var _ref = guide.properties || {}, + editHandleType = _ref.editHandleType, + mode = _ref.mode; // Both scale and rotate modes have the same enveloping box as a guide - only need one + + + var guidesToFilterOut = [mode]; // Do not render scaling edit handles if rotating + + if (rotateMode.getIsRotating()) { + guidesToFilterOut.push(editHandleType); + } + + return !guidesToFilterOut.includes('scale'); + }); // @ts-ignore + + compositeGuides = (0, _helpers.featureCollection)(nonEnvelopeGuides); + } + + return compositeGuides; + } + }]); + + return TransformMode; +}(_compositeMode.CompositeMode); + +exports.TransformMode = TransformMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNmb3JtLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNmb3JtTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJTY2FsZU1vZGUiLCJSb3RhdGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsInVwZGF0ZWRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvciIsInNjYWxlTW9kZSIsInRyYW5zbGF0ZU1vZGUiLCJmaWx0ZXJlZE1vZGVzIiwiX21vZGVzIiwiZm9yRWFjaCIsIm1vZGUiLCJwdXNoIiwiaXNFZGl0SGFuZGxlU2VsZWN0ZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImNvbXBvc2l0ZUd1aWRlcyIsInJvdGF0ZU1vZGUiLCJmaW5kIiwibm9uRW52ZWxvcGVHdWlkZXMiLCJmZWF0dXJlcyIsImd1aWRlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ3VpZGVzVG9GaWx0ZXJPdXQiLCJnZXRJc1JvdGF0aW5nIiwiaW5jbHVkZXMiLCJDb21wb3NpdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFDWCwyQkFBYztBQUFBOztBQUFBLDZCQUNOLENBQUMsSUFBSUMsNEJBQUosRUFBRCxFQUFzQixJQUFJQyxvQkFBSixFQUF0QixFQUF1QyxJQUFJQyxzQkFBSixFQUF2QyxDQURNO0FBRWI7Ozs7c0NBRWlCQyxLLEVBQXlCQyxLLEVBQXFDO0FBQzlFLFVBQUlDLGFBQWEsR0FBRyxJQUFwQjs7QUFDQSwyRkFBd0JGLEtBQXhCLG9CQUNLQyxLQURMO0FBRUVFLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ0MsTUFBRCxFQUFZO0FBQzFCRixVQUFBQSxhQUFhLEdBQUdFLE1BQU0sSUFBSUYsYUFBMUI7QUFDRDtBQUpIOztBQU1BRCxNQUFBQSxLQUFLLENBQUNFLGNBQU4sQ0FBcUJELGFBQXJCO0FBQ0Q7Ozt3Q0FFbUJGLEssRUFBMkJDLEssRUFBcUM7QUFDbEYsVUFBSUksU0FBUyxHQUFHLElBQWhCO0FBQ0EsVUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEVBQXRCLENBSGtGLENBS2xGO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQUtDLE1BQUwsQ0FBWUMsT0FBWixDQUFvQixVQUFDQyxJQUFELEVBQVU7QUFDNUIsWUFBSUEsSUFBSSxZQUFZYiw0QkFBcEIsRUFBbUM7QUFDakNTLFVBQUFBLGFBQWEsR0FBR0ksSUFBaEI7QUFDRCxTQUZELE1BRU87QUFDTCxjQUFJQSxJQUFJLFlBQVlaLG9CQUFwQixFQUErQjtBQUM3Qk8sWUFBQUEsU0FBUyxHQUFHSyxJQUFaO0FBQ0Q7O0FBQ0RILFVBQUFBLGFBQWEsQ0FBQ0ksSUFBZCxDQUFtQkQsSUFBbkI7QUFDRDtBQUNGLE9BVEQ7O0FBV0EsVUFBSUwsU0FBUyxZQUFZUCxvQkFBckIsSUFBa0MsQ0FBQ08sU0FBUyxDQUFDTyxvQkFBVixFQUF2QyxFQUF5RTtBQUN2RUwsUUFBQUEsYUFBYSxDQUFDSSxJQUFkLENBQW1CTCxhQUFuQjtBQUNEOztBQUVEQyxNQUFBQSxhQUFhLENBQUNNLE1BQWQsQ0FBcUJDLE9BQXJCLEVBQThCTCxPQUE5QixDQUFzQyxVQUFDQyxJQUFEO0FBQUEsZUFBVUEsSUFBSSxDQUFDSyxtQkFBTCxDQUF5QmYsS0FBekIsRUFBZ0NDLEtBQWhDLENBQVY7QUFBQSxPQUF0QztBQUNEOzs7OEJBRVNBLEssRUFBcUM7QUFDN0MsVUFBSWUsZUFBZSxnRkFBbUJmLEtBQW5CLENBQW5COztBQUNBLFVBQU1nQixVQUFVLEdBQUcsQ0FBQyxLQUFLVCxNQUFMLElBQWUsRUFBaEIsRUFBb0JVLElBQXBCLENBQXlCLFVBQUNSLElBQUQ7QUFBQSxlQUFVQSxJQUFJLFlBQVlYLHNCQUExQjtBQUFBLE9BQXpCLENBQW5COztBQUVBLFVBQUlrQixVQUFVLFlBQVlsQixzQkFBMUIsRUFBc0M7QUFDcEMsWUFBTW9CLGlCQUFpQixHQUFHSCxlQUFlLENBQUNJLFFBQWhCLENBQXlCUCxNQUF6QixDQUFnQyxVQUFDUSxLQUFELEVBQVc7QUFBQSxxQkFDakNBLEtBQUssQ0FBQ0MsVUFBUCxJQUE2QixFQURLO0FBQUEsY0FDM0RDLGNBRDJELFFBQzNEQSxjQUQyRDtBQUFBLGNBQzNDYixJQUQyQyxRQUMzQ0EsSUFEMkMsRUFFbkU7OztBQUNBLGNBQU1jLGlCQUFpQixHQUFHLENBQUNkLElBQUQsQ0FBMUIsQ0FIbUUsQ0FJbkU7O0FBQ0EsY0FBSU8sVUFBVSxDQUFDUSxhQUFYLEVBQUosRUFBZ0M7QUFDOUJELFlBQUFBLGlCQUFpQixDQUFDYixJQUFsQixDQUF1QlksY0FBdkI7QUFDRDs7QUFDRCxpQkFBTyxDQUFDQyxpQkFBaUIsQ0FBQ0UsUUFBbEIsQ0FBMkIsT0FBM0IsQ0FBUjtBQUNELFNBVHlCLENBQTFCLENBRG9DLENBV3BDOztBQUNBVixRQUFBQSxlQUFlLEdBQUcsZ0NBQWtCRyxpQkFBbEIsQ0FBbEI7QUFDRDs7QUFDRCxhQUFPSCxlQUFQO0FBQ0Q7Ozs7RUE5RGdDVyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFN0YXJ0RHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2RlIH0gZnJvbSAnLi90cmFuc2xhdGUtbW9kZSc7XG5pbXBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL3NjYWxlLW1vZGUnO1xuaW1wb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJy4vcm90YXRlLW1vZGUnO1xuXG5pbXBvcnQgeyBDb21wb3NpdGVNb2RlIH0gZnJvbSAnLi9jb21wb3NpdGUtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Nb2RlIGV4dGVuZHMgQ29tcG9zaXRlTW9kZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFtuZXcgVHJhbnNsYXRlTW9kZSgpLCBuZXcgU2NhbGVNb2RlKCksIG5ldyBSb3RhdGVNb2RlKCldKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCB1cGRhdGVkQ3Vyc29yID0gbnVsbDtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcikgPT4ge1xuICAgICAgICB1cGRhdGVkQ3Vyc29yID0gY3Vyc29yIHx8IHVwZGF0ZWRDdXJzb3I7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHVwZGF0ZWRDdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBzY2FsZU1vZGUgPSBudWxsO1xuICAgIGxldCB0cmFuc2xhdGVNb2RlID0gbnVsbDtcbiAgICBjb25zdCBmaWx0ZXJlZE1vZGVzID0gW107XG5cbiAgICAvLyBJZiB0aGUgdXNlciBzZWxlY3RzIGEgc2NhbGluZyBlZGl0IGhhbmRsZSB0aGF0IG92ZXJsYXBzIHdpdGggcGFydCBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZSxcbiAgICAvLyBpdCBpcyBwb3NzaWJsZSBmb3IgYm90aCBzY2FsZSBhbmQgdHJhbnNsYXRlIGFjdGlvbnMgdG8gYmUgdHJpZ2dlcmVkLiBUaGlzIGxvZ2ljIHByZXZlbnRzXG4gICAgLy8gdGhpcyBzaW11bHRhbmVvdXMgYWN0aW9uIHRyaWdnZXIgZnJvbSBoYXBwZW5pbmcgYnkgcHV0dGluZyBhIGhpZ2hlciBwcmlvcml0eSBvbiBzY2FsaW5nXG4gICAgLy8gc2luY2UgdGhlIHVzZXIgbmVlZHMgdG8gYmUgbW9yZSBwcmVjaXNlIHRvIGhvdmVyIG92ZXIgYSBzY2FsaW5nIGVkaXQgaGFuZGxlLlxuICAgIHRoaXMuX21vZGVzLmZvckVhY2goKG1vZGUpID0+IHtcbiAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgVHJhbnNsYXRlTW9kZSkge1xuICAgICAgICB0cmFuc2xhdGVNb2RlID0gbW9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlKSB7XG4gICAgICAgICAgc2NhbGVNb2RlID0gbW9kZTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJlZE1vZGVzLnB1c2gobW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGVNb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlICYmICFzY2FsZU1vZGUuaXNFZGl0SGFuZGxlU2VsZWN0ZWQoKSkge1xuICAgICAgZmlsdGVyZWRNb2Rlcy5wdXNoKHRyYW5zbGF0ZU1vZGUpO1xuICAgIH1cblxuICAgIGZpbHRlcmVkTW9kZXMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKG1vZGUpID0+IG1vZGUuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgcHJvcHMpKTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBjb21wb3NpdGVHdWlkZXMgPSBzdXBlci5nZXRHdWlkZXMocHJvcHMpO1xuICAgIGNvbnN0IHJvdGF0ZU1vZGUgPSAodGhpcy5fbW9kZXMgfHwgW10pLmZpbmQoKG1vZGUpID0+IG1vZGUgaW5zdGFuY2VvZiBSb3RhdGVNb2RlKTtcblxuICAgIGlmIChyb3RhdGVNb2RlIGluc3RhbmNlb2YgUm90YXRlTW9kZSkge1xuICAgICAgY29uc3Qgbm9uRW52ZWxvcGVHdWlkZXMgPSBjb21wb3NpdGVHdWlkZXMuZmVhdHVyZXMuZmlsdGVyKChndWlkZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGVkaXRIYW5kbGVUeXBlLCBtb2RlIH0gPSAoZ3VpZGUucHJvcGVydGllcyBhcyBhbnkpIHx8IHt9O1xuICAgICAgICAvLyBCb3RoIHNjYWxlIGFuZCByb3RhdGUgbW9kZXMgaGF2ZSB0aGUgc2FtZSBlbnZlbG9waW5nIGJveCBhcyBhIGd1aWRlIC0gb25seSBuZWVkIG9uZVxuICAgICAgICBjb25zdCBndWlkZXNUb0ZpbHRlck91dCA9IFttb2RlXTtcbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBzY2FsaW5nIGVkaXQgaGFuZGxlcyBpZiByb3RhdGluZ1xuICAgICAgICBpZiAocm90YXRlTW9kZS5nZXRJc1JvdGF0aW5nKCkpIHtcbiAgICAgICAgICBndWlkZXNUb0ZpbHRlck91dC5wdXNoKGVkaXRIYW5kbGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWd1aWRlc1RvRmlsdGVyT3V0LmluY2x1ZGVzKCdzY2FsZScpO1xuICAgICAgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb21wb3NpdGVHdWlkZXMgPSBmZWF0dXJlQ29sbGVjdGlvbihub25FbnZlbG9wZUd1aWRlcyk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb3NpdGVHdWlkZXM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/translate-mode.js b/modules/edit-modes/dist-es6/lib/translate-mode.js new file mode 100644 index 000000000..63220c6e1 --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/translate-mode.js @@ -0,0 +1,163 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TranslateMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformTranslate = _interopRequireDefault(require("@turf/transform-translate")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 TranslateMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(TranslateMode, _GeoJsonEditMode); + + var _super = _createSuper(TranslateMode); + + function TranslateMode() { + var _this; + + _classCallCheck(this, TranslateMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeforeTranslate", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isTranslatable", void 0); + + return _this; + } + + _createClass(TranslateMode, [{ + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isTranslatable) { + // Nothing to do + return; + } + + if (this._geometryBeforeTranslate) { + // Translate the geometry + var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translating', props); + + if (editAction) { + props.onEdit(editAction); + } + } // cancel map panning + + + event.cancelPan(); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props); + this.updateCursor(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (!this._isTranslatable) { + return; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._geometryBeforeTranslate) { + // Translate the geometry + var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translated', props); + + if (editAction) { + props.onEdit(editAction); + } + + this._geometryBeforeTranslate = null; + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._isTranslatable) { + props.onUpdateCursor('move'); + } else { + props.onUpdateCursor(null); + } + } + }, { + key: "getTranslateAction", + value: function getTranslateAction(startDragPoint, currentPoint, editType, props) { + if (!this._geometryBeforeTranslate) { + return null; + } + + var p1 = (0, _helpers.point)(startDragPoint); + var p2 = (0, _helpers.point)(currentPoint); + var distanceMoved = (0, _distance["default"])(p1, p2); + var direction = (0, _bearing["default"])(p1, p2); + var movedFeatures = (0, _transformTranslate["default"])( // @ts-ignore + this._geometryBeforeTranslate, distanceMoved, direction); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = movedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + editContext: { + featureIndexes: selectedIndexes + } + }; + } + }]); + + return TranslateMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.TranslateMode = TranslateMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNsYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfaXNUcmFuc2xhdGFibGUiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJlZGl0QWN0aW9uIiwiZ2V0VHJhbnNsYXRlQWN0aW9uIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJtYXBDb29yZHMiLCJvbkVkaXQiLCJjYW5jZWxQYW4iLCJpc1NlbGVjdGlvblBpY2tlZCIsInBvaW50ZXJEb3duUGlja3MiLCJwaWNrcyIsInVwZGF0ZUN1cnNvciIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwib25VcGRhdGVDdXJzb3IiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwicDEiLCJwMiIsImRpc3RhbmNlTW92ZWQiLCJkaXJlY3Rpb24iLCJtb3ZlZEZlYXR1cmVzIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJpIiwibGVuZ3RoIiwic2VsZWN0ZWRJbmRleCIsIm1vdmVkRmVhdHVyZSIsImZlYXR1cmVzIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJnZXRPYmplY3QiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FJSUMsSyxFQUFzQkMsSyxFQUFxQztBQUN4RSxVQUFJLENBQUMsS0FBS0MsZUFBVixFQUEyQjtBQUN6QjtBQUNBO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLQyx3QkFBVCxFQUFtQztBQUNqQztBQUNBLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxrQkFBTCxDQUNqQkwsS0FBSyxDQUFDTSxvQkFEVyxFQUVqQk4sS0FBSyxDQUFDTyxTQUZXLEVBR2pCLGFBSGlCLEVBSWpCTixLQUppQixDQUFuQjs7QUFPQSxZQUFJRyxVQUFKLEVBQWdCO0FBQ2RILFVBQUFBLEtBQUssQ0FBQ08sTUFBTixDQUFhSixVQUFiO0FBQ0Q7QUFDRixPQWxCdUUsQ0FvQnhFOzs7QUFDQUosTUFBQUEsS0FBSyxDQUFDUyxTQUFOO0FBQ0Q7OztzQ0FFaUJULEssRUFBeUJDLEssRUFBcUM7QUFDOUUsV0FBS0MsZUFBTCxHQUF1QixLQUFLUSxpQkFBTCxDQUF1QlYsS0FBSyxDQUFDVyxnQkFBTixJQUEwQlgsS0FBSyxDQUFDWSxLQUF2RCxFQUE4RFgsS0FBOUQsQ0FBdkI7QUFFQSxXQUFLWSxZQUFMLENBQWtCWixLQUFsQjtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQXFDO0FBQ2xGLFVBQUksQ0FBQyxLQUFLQyxlQUFWLEVBQTJCO0FBQ3pCO0FBQ0Q7O0FBRUQsV0FBS0Msd0JBQUwsR0FBZ0MsS0FBS1csc0NBQUwsQ0FBNENiLEtBQTVDLENBQWhDO0FBQ0Q7Ozt1Q0FFa0JELEssRUFBMEJDLEssRUFBcUM7QUFDaEYsVUFBSSxLQUFLRSx3QkFBVCxFQUFtQztBQUNqQztBQUNBLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxrQkFBTCxDQUNqQkwsS0FBSyxDQUFDTSxvQkFEVyxFQUVqQk4sS0FBSyxDQUFDTyxTQUZXLEVBR2pCLFlBSGlCLEVBSWpCTixLQUppQixDQUFuQjs7QUFPQSxZQUFJRyxVQUFKLEVBQWdCO0FBQ2RILFVBQUFBLEtBQUssQ0FBQ08sTUFBTixDQUFhSixVQUFiO0FBQ0Q7O0FBRUQsYUFBS0Qsd0JBQUwsR0FBZ0MsSUFBaEM7QUFDRDtBQUNGOzs7aUNBRVlGLEssRUFBcUM7QUFDaEQsVUFBSSxLQUFLQyxlQUFULEVBQTBCO0FBQ3hCRCxRQUFBQSxLQUFLLENBQUNjLGNBQU4sQ0FBcUIsTUFBckI7QUFDRCxPQUZELE1BRU87QUFDTGQsUUFBQUEsS0FBSyxDQUFDYyxjQUFOLENBQXFCLElBQXJCO0FBQ0Q7QUFDRjs7O3VDQUdDQyxjLEVBQ0FDLFksRUFDQUMsUSxFQUNBakIsSyxFQUNzQztBQUN0QyxVQUFJLENBQUMsS0FBS0Usd0JBQVYsRUFBb0M7QUFDbEMsZUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsVUFBTWdCLEVBQUUsR0FBRyxvQkFBTUgsY0FBTixDQUFYO0FBQ0EsVUFBTUksRUFBRSxHQUFHLG9CQUFNSCxZQUFOLENBQVg7QUFFQSxVQUFNSSxhQUFhLEdBQUcsMEJBQWFGLEVBQWIsRUFBaUJDLEVBQWpCLENBQXRCO0FBQ0EsVUFBTUUsU0FBUyxHQUFHLHlCQUFZSCxFQUFaLEVBQWdCQyxFQUFoQixDQUFsQjtBQUVBLFVBQU1HLGFBQWEsR0FBRyxxQ0FDcEI7QUFDQSxXQUFLcEIsd0JBRmUsRUFHcEJrQixhQUhvQixFQUlwQkMsU0FKb0IsQ0FBdEI7QUFPQSxVQUFJRSxXQUFXLEdBQUcsSUFBSUMsc0RBQUosQ0FBK0J4QixLQUFLLENBQUN5QixJQUFyQyxDQUFsQjtBQUVBLFVBQU1DLGVBQWUsR0FBRzFCLEtBQUssQ0FBQzBCLGVBQTlCOztBQUNBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsZUFBZSxDQUFDRSxNQUFwQyxFQUE0Q0QsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNRSxhQUFhLEdBQUdILGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1HLFlBQVksR0FBR1IsYUFBYSxDQUFDUyxRQUFkLENBQXVCSixDQUF2QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ1MsZUFBWixDQUE0QkgsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ0csUUFBeEQsQ0FBZDtBQUNEOztBQUVELGFBQU87QUFDTFYsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNXLFNBQVosRUFEUjtBQUVMakIsUUFBQUEsUUFBUSxFQUFSQSxRQUZLO0FBR0xrQixRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFVjtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBMUdnQ1csZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHVyZkJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlIGZyb20gJ0B0dXJmL3RyYW5zZm9ybS10cmFuc2xhdGUnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1RyYW5zbGF0YWJsZTogYm9vbGVhbjtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGluZycsXG4gICAgICAgIHByb3BzXG4gICAgICApO1xuXG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIG1hcCBwYW5uaW5nXG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9pc1RyYW5zbGF0YWJsZSA9IHRoaXMuaXNTZWxlY3Rpb25QaWNrZWQoZXZlbnQucG9pbnRlckRvd25QaWNrcyB8fCBldmVudC5waWNrcywgcHJvcHMpO1xuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldFRyYW5zbGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3RyYW5zbGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignbW92ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwMSA9IHBvaW50KHN0YXJ0RHJhZ1BvaW50KTtcbiAgICBjb25zdCBwMiA9IHBvaW50KGN1cnJlbnRQb2ludCk7XG5cbiAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdHVyZkJlYXJpbmcocDEsIHAyKTtcblxuICAgIGNvbnN0IG1vdmVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUsXG4gICAgICBkaXN0YW5jZU1vdmVkLFxuICAgICAgZGlyZWN0aW9uXG4gICAgKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXhlc1tpXTtcbiAgICAgIGNvbnN0IG1vdmVkRmVhdHVyZSA9IG1vdmVkRmVhdHVyZXMuZmVhdHVyZXNbaV07XG4gICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLnJlcGxhY2VHZW9tZXRyeShzZWxlY3RlZEluZGV4LCBtb3ZlZEZlYXR1cmUuZ2VvbWV0cnkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBzZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/two-click-polygon-mode.js b/modules/edit-modes/dist-es6/lib/two-click-polygon-mode.js new file mode 100644 index 000000000..4e21566ee --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/two-click-polygon-mode.js @@ -0,0 +1,170 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TwoClickPolygonMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var TwoClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(TwoClickPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(TwoClickPolygonMode); + + function TwoClickPolygonMode() { + _classCallCheck(this, TwoClickPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(TwoClickPolygonMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + if (props.modeConfig && props.modeConfig.dragToDraw) { + // handled in drag handlers + return; + } + + this.addClickSequence(event); + this.checkAndFinishPolygon(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (!props.modeConfig || !props.modeConfig.dragToDraw) { + // handled in click handlers + return; + } + + this.addClickSequence(event); + event.cancelPan(); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (!props.modeConfig || !props.modeConfig.dragToDraw) { + // handled in click handlers + return; + } + + this.addClickSequence(event); + this.checkAndFinishPolygon(props); + } + }, { + key: "checkAndFinishPolygon", + value: function checkAndFinishPolygon(props) { + var clickSequence = this.getClickSequence(); + var tentativeFeature = this.getTentativeGuide(props); + + if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var feature = { + type: 'Feature', + properties: { + shape: tentativeFeature.properties.shape + }, + geometry: { + type: 'Polygon', + coordinates: tentativeFeature.geometry.coordinates + } + }; + var editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props); + this.resetClickSequence(); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return guides; + } + + var corner1 = clickSequence[0]; + var corner2 = lastPointerMoveEvent.mapCoords; + var polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig); + + if (polygon) { + guides.features.push({ + type: 'Feature', + properties: { + shape: polygon.properties && polygon.properties.shape, + guideType: 'tentative' + }, + geometry: polygon.geometry + }); + } + + return guides; + } + }, { + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(TwoClickPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 1) { + tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig); + } + + return tentativeFeature; + } + }]); + + return TwoClickPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.TwoClickPolygonMode = TwoClickPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHdvLWNsaWNrLXBvbHlnb24tbW9kZS50cyJdLCJuYW1lcyI6WyJUd29DbGlja1BvbHlnb25Nb2RlIiwiZXZlbnQiLCJwcm9wcyIsIm1vZGVDb25maWciLCJkcmFnVG9EcmF3IiwiYWRkQ2xpY2tTZXF1ZW5jZSIsImNoZWNrQW5kRmluaXNoUG9seWdvbiIsImNhbmNlbFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiZmVhdHVyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImNvb3JkaW5hdGVzIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwib25FZGl0IiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNvcm5lcjEiLCJjb3JuZXIyIiwibWFwQ29vcmRzIiwicG9seWdvbiIsImdldFR3b0NsaWNrUG9seWdvbiIsInB1c2giLCJndWlkZVR5cGUiLCJjb29yZDEiLCJjb29yZDIiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxtQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFJQSxLQUFLLENBQUNDLFVBQU4sSUFBb0JELEtBQUssQ0FBQ0MsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQ7QUFDQTtBQUNEOztBQUVELFdBQUtDLGdCQUFMLENBQXNCSixLQUF0QjtBQUVBLFdBQUtLLHFCQUFMLENBQTJCSixLQUEzQjtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLFVBQUks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SUFBUDtBQUNEOzs7c0NBRWlCRixLLEVBQXlCQyxLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpQyxjQUFOLENBQXFCLE1BQXJCOztBQUNBLGlHQUF3QmxDLEtBQXhCLEVBQStCQyxLQUEvQjtBQUNEOzs7MkNBRXNCQSxLLEVBQXVEO0FBQUEsVUFDcEVxQixvQkFEb0UsR0FDM0NyQixLQUQyQyxDQUNwRXFCLG9CQURvRTtBQUU1RSxVQUFNZixhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNMkIsVUFBVSxHQUFHYixvQkFBb0IsR0FBRyxDQUFDQSxvQkFBb0IsQ0FBQ0ssU0FBdEIsQ0FBSCxHQUFzQyxFQUE3RTtBQUVBLFVBQUlsQixnQkFBSjs7QUFDQSxVQUFJRixhQUFhLENBQUNJLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUJGLFFBQUFBLGdCQUFnQixHQUFHLEtBQUtvQixrQkFBTCxDQUF3QnRCLGFBQWEsQ0FBQyxDQUFELENBQXJDLEVBQTBDNEIsVUFBVSxDQUFDLENBQUQsQ0FBcEQsRUFBeURsQyxLQUFLLENBQUNDLFVBQS9ELENBQW5CO0FBQ0Q7O0FBRUQsYUFBT08sZ0JBQVA7QUFDRDs7OztFQXRIc0MyQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVHdvQ2xpY2tQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBkcmFnIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcblxuICAgIHRoaXMuY2hlY2tBbmRGaW5pc2hQb2x5Z29uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLm1vZGVDb25maWcgfHwgIXByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBjbGljayBoYW5kbGVyc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICghcHJvcHMubW9kZUNvbmZpZyB8fCAhcHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3KSB7XG4gICAgICAvLyBoYW5kbGVkIGluIGNsaWNrIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG5cbiAgICB0aGlzLmNoZWNrQW5kRmluaXNoUG9seWdvbihwcm9wcyk7XG4gIH1cblxuICBjaGVja0FuZEZpbmlzaFBvbHlnb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZTogRmVhdHVyZU9mPFBvbHlnb24+ID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzaGFwZTogdGVudGF0aXZlRmVhdHVyZS5wcm9wZXJ0aWVzLnNoYXBlLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihmZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50LCBtb2RlQ29uZmlnIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUd29DbGlja1BvbHlnb24oY29ybmVyMSwgY29ybmVyMiwgbW9kZUNvbmZpZyk7XG4gICAgaWYgKHBvbHlnb24pIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgc2hhcGU6IHBvbHlnb24ucHJvcGVydGllcyAmJiBwb2x5Z29uLnByb3BlcnRpZXMuc2hhcGUsXG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VHdvQ2xpY2tQb2x5Z29uKGNsaWNrU2VxdWVuY2VbMF0sIGxhc3RDb29yZHNbMF0sIHByb3BzLm1vZGVDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/lib/view-mode.js b/modules/edit-modes/dist-es6/lib/view-mode.js new file mode 100644 index 000000000..dfdb4d97c --- /dev/null +++ b/modules/edit-modes/dist-es6/lib/view-mode.js @@ -0,0 +1,43 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ViewMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ViewMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ViewMode, _GeoJsonEditMode); + + var _super = _createSuper(ViewMode); + + function ViewMode() { + _classCallCheck(this, ViewMode); + + return _super.apply(this, arguments); + } + + return ViewMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ViewMode = ViewMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy1tb2RlLnRzIl0sIm5hbWVzIjpbIlZpZXdNb2RlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFE7Ozs7Ozs7Ozs7OztFQUFpQkMsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIFZpZXdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHt9XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/memoize.js b/modules/edit-modes/dist-es6/memoize.js new file mode 100644 index 000000000..da173bc92 --- /dev/null +++ b/modules/edit-modes/dist-es6/memoize.js @@ -0,0 +1,56 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = memoize; + +// port from @deck.gl/core +function isEqual(a, b) { + if (a === b) { + return true; + } + + if (Array.isArray(a)) { + // Special treatment for arrays: compare 1-level deep + // This is to support equality of matrix/coordinate props + var len = a.length; + + if (!b || b.length !== len) { + return false; + } + + for (var i = 0; i < len; i++) { + if (a[i] !== b[i]) { + return false; + } + } + + return true; + } + + return false; +} +/** + * Speed up consecutive function calls by caching the result of calls with identical input + * https://en.wikipedia.org/wiki/Memoization + * @param {function} compute - the function to be memoized + */ + + +function memoize(compute) { + var cachedArgs = {}; + var cachedResult; + return function (args) { + for (var key in args) { + if (!isEqual(args[key], cachedArgs[key])) { + cachedResult = compute(args); + cachedArgs = args; + break; + } + } + + return cachedResult; + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1vaXplLnRzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhIiwiYiIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJtZW1vaXplIiwiY29tcHV0ZSIsImNhY2hlZEFyZ3MiLCJjYWNoZWRSZXN1bHQiLCJhcmdzIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUF5QkMsQ0FBekIsRUFBaUM7QUFDL0IsTUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWCxXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQSxRQUFNSSxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ssTUFBZDs7QUFDQSxRQUFJLENBQUNKLENBQUQsSUFBTUEsQ0FBQyxDQUFDSSxNQUFGLEtBQWFELEdBQXZCLEVBQTRCO0FBQzFCLGFBQU8sS0FBUDtBQUNEOztBQUVELFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsR0FBcEIsRUFBeUJFLENBQUMsRUFBMUIsRUFBOEI7QUFDNUIsVUFBSU4sQ0FBQyxDQUFDTSxDQUFELENBQUQsS0FBU0wsQ0FBQyxDQUFDSyxDQUFELENBQWQsRUFBbUI7QUFDakIsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFDRCxTQUFPLEtBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS2UsU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBb0M7QUFDakQsTUFBSUMsVUFBVSxHQUFHLEVBQWpCO0FBQ0EsTUFBSUMsWUFBSjtBQUVBLFNBQU8sVUFBQ0MsSUFBRCxFQUFlO0FBQ3BCLFNBQUssSUFBTUMsR0FBWCxJQUFrQkQsSUFBbEIsRUFBd0I7QUFDdEIsVUFBSSxDQUFDWixPQUFPLENBQUNZLElBQUksQ0FBQ0MsR0FBRCxDQUFMLEVBQVlILFVBQVUsQ0FBQ0csR0FBRCxDQUF0QixDQUFaLEVBQTBDO0FBQ3hDRixRQUFBQSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csSUFBRCxDQUF0QjtBQUNBRixRQUFBQSxVQUFVLEdBQUdFLElBQWI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsWUFBUDtBQUNELEdBVEQ7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIHBvcnQgZnJvbSBAZGVjay5nbC9jb3JlXG5mdW5jdGlvbiBpc0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzOiBjb21wYXJlIDEtbGV2ZWwgZGVlcFxuICAgIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBlcXVhbGl0eSBvZiBtYXRyaXgvY29vcmRpbmF0ZSBwcm9wc1xuICAgIGNvbnN0IGxlbiA9IGEubGVuZ3RoO1xuICAgIGlmICghYiB8fCBiLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BlZWQgdXAgY29uc2VjdXRpdmUgZnVuY3Rpb24gY2FsbHMgYnkgY2FjaGluZyB0aGUgcmVzdWx0IG9mIGNhbGxzIHdpdGggaWRlbnRpY2FsIGlucHV0XG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1vaXphdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcHV0ZSAtIHRoZSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplKGNvbXB1dGU6IEZ1bmN0aW9uKSB7XG4gIGxldCBjYWNoZWRBcmdzID0ge307XG4gIGxldCBjYWNoZWRSZXN1bHQ7XG5cbiAgcmV0dXJuIChhcmdzOiBhbnkpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmdzKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoYXJnc1trZXldLCBjYWNoZWRBcmdzW2tleV0pKSB7XG4gICAgICAgIGNhY2hlZFJlc3VsdCA9IGNvbXB1dGUoYXJncyk7XG4gICAgICAgIGNhY2hlZEFyZ3MgPSBhcmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/types.js b/modules/edit-modes/dist-es6/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist-es6/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-es6/utils.js b/modules/edit-modes/dist-es6/utils.js new file mode 100644 index 000000000..b8fb66482 --- /dev/null +++ b/modules/edit-modes/dist-es6/utils.js @@ -0,0 +1,351 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; +exports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints; +exports.distance2d = distance2d; +exports.mix = mix; +exports.nearestPointOnProjectedLine = nearestPointOnProjectedLine; +exports.getPickedEditHandle = getPickedEditHandle; +exports.getPickedSnapSourceEditHandle = getPickedSnapSourceEditHandle; +exports.getNonGuidePicks = getNonGuidePicks; +exports.getPickedExistingEditHandle = getPickedExistingEditHandle; +exports.getPickedIntermediateEditHandle = getPickedIntermediateEditHandle; +exports.getPickedEditHandles = getPickedEditHandles; +exports.getEditHandlesForGeometry = getEditHandlesForGeometry; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _pointToLineDistance = _interopRequireDefault(require("@turf/point-to-line-distance")); + +var _helpers = require("@turf/helpers"); + +var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} + +function generatePointsParallelToLinePoints(p1, p2, mapCoords) { + var lineString = { + type: 'LineString', + coordinates: [p1, p2] + }; + var pt = (0, _helpers.point)(mapCoords); + var ddistance = (0, _pointToLineDistance["default"])(pt, lineString); + var lineBearing = (0, _bearing["default"])(p1, p2); // Check if current point is to the left or right of line + // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y) + // then (x−x1)(y2−y1)−(y−y1)(x2−x1) + + var isPointToLeftOfLine = (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string + + var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString + // Add the distance as the current position moves away from the lineString + + var p3 = (0, _destination["default"])(p2, ddistance, orthogonalBearing); + var p4 = (0, _destination["default"])(p1, ddistance, orthogonalBearing); + return [p3.geometry.coordinates, p4.geometry.coordinates]; +} + +function distance2d(x1, y1, x2, y2) { + var dx = x1 - x2; + var dy = y1 - y2; + return Math.sqrt(dx * dx + dy * dy); +} + +function mix(a, b, ratio) { + return b * ratio + a * (1 - ratio); +} + +function nearestPointOnProjectedLine(line, inPoint, viewport) { + var wmViewport = new _viewportMercatorProject["default"](viewport); // Project the line to viewport, then find the nearest point + + var coordinates = line.geometry.coordinates; + var projectedCoords = coordinates.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 3), + x = _ref2[0], + y = _ref2[1], + _ref2$ = _ref2[2], + z = _ref2$ === void 0 ? 0 : _ref2$; + + return wmViewport.project([x, y, z]); + }); //@ts-ignore + + var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), + _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2), + x = _wmViewport$project2[0], + y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords)); + + + var minDistance = Infinity; + var minPointInfo = {}; + projectedCoords.forEach(function (_ref3, index) { + var _ref4 = _slicedToArray(_ref3, 2), + x2 = _ref4[0], + y2 = _ref4[1]; + + if (index === 0) { + return; + } + + var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2), + x1 = _projectedCoords[0], + y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index] + // convert to Ax + By + C = 0 + + + var A = y1 - y2; + var B = x2 - x1; + var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line + + var div = A * A + B * B; + var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds + + if (distance < minDistance) { + minDistance = distance; + minPointInfo = { + index: index, + x0: (B * (B * x - A * y) - A * C) / div, + y0: (A * (-B * x + A * y) - B * C) / div + }; + } + }); //@ts-ignore + + var _minPointInfo = minPointInfo, + index = _minPointInfo.index, + x0 = _minPointInfo.x0, + y0 = _minPointInfo.y0; + + var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3), + x1 = _projectedCoords2[0], + y1 = _projectedCoords2[1], + _projectedCoords2$ = _projectedCoords2[2], + z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$; + + var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3), + x2 = _projectedCoords$inde[0], + y2 = _projectedCoords$inde[1], + _projectedCoords$inde2 = _projectedCoords$inde[2], + z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z + + + var lineLength = distance2d(x1, y1, x2, y2); + var startToPointLength = distance2d(x1, y1, x0, y0); + var ratio = startToPointLength / lineLength; + var z0 = mix(z1, z2, ratio); + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: wmViewport.unproject([x0, y0, z0]) + }, + properties: { + // TODO: calculate the distance in proper units + dist: minDistance, + index: index - 1 + } + }; +} + +function getPickedEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.length ? handles[0] : null; +} + +function getPickedSnapSourceEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (handle) { + return handle.properties.editHandleType === 'snap-source'; + }); +} + +function getNonGuidePicks(picks) { + return picks && picks.filter(function (pick) { + return !pick.isGuide; + }); +} + +function getPickedExistingEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (_ref5) { + var properties = _ref5.properties; + return properties.featureIndex >= 0 && properties.editHandleType === 'existing'; + }); +} + +function getPickedIntermediateEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (_ref6) { + var properties = _ref6.properties; + return properties.featureIndex >= 0 && properties.editHandleType === 'intermediate'; + }); +} + +function getPickedEditHandles(picks) { + var handles = picks && picks.filter(function (pick) { + return pick.isGuide && pick.object.properties.guideType === 'editHandle'; + }).map(function (pick) { + return pick.object; + }) || []; + return handles; +} + +function getEditHandlesForGeometry(geometry, featureIndex) { + var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing'; + var handles = []; + + switch (geometry.type) { + case 'Point': + // positions are not nested + handles = [{ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: editHandleType, + positionIndexes: [], + featureIndex: featureIndex + }, + geometry: { + type: 'Point', + coordinates: geometry.coordinates + } + }]; + break; + + case 'MultiPoint': + case 'LineString': + // positions are nested 1 level + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType)); + break; + + case 'Polygon': + case 'MultiLineString': + // positions are nested 2 levels + for (var a = 0; a < geometry.coordinates.length; a++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType)); + + if (geometry.type === 'Polygon') { + // Don't repeat the first/last handle for Polygons + handles = handles.slice(0, -1); + } + } + + break; + + case 'MultiPolygon': + // positions are nested 3 levels + for (var _a = 0; _a < geometry.coordinates.length; _a++) { + for (var b = 0; b < geometry.coordinates[_a].length; b++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons + + handles = handles.slice(0, -1); + } + } + + break; + + default: + //@ts-ignore + throw Error("Unhandled geometry type: ".concat(geometry.type)); + } + + return handles; +} + +function getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) { + var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing'; + var editHandles = []; + + for (var i = 0; i < coordinates.length; i++) { + var position = coordinates[i]; + editHandles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]), + featureIndex: featureIndex, + editHandleType: editHandleType + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + + return editHandles; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJtYXBDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsImdldFBpY2tlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImhhbmRsZXMiLCJnZXRQaWNrZWRFZGl0SGFuZGxlcyIsImdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlIiwiZmluZCIsImhhbmRsZSIsImVkaXRIYW5kbGVUeXBlIiwiZ2V0Tm9uR3VpZGVQaWNrcyIsImZpbHRlciIsInBpY2siLCJpc0d1aWRlIiwiZ2V0UGlja2VkRXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUluZGV4IiwiZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSIsIm9iamVjdCIsImd1aWRlVHlwZSIsImdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkiLCJwb3NpdGlvbkluZGV4ZXMiLCJjb25jYXQiLCJnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzIiwic2xpY2UiLCJFcnJvciIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJlZGl0SGFuZGxlcyIsInBvc2l0aW9uIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhTyxTQUFTQSxXQUFULENBQ0xDLEtBREssRUFHNkI7QUFBQSxNQURsQ0MsWUFDa0MsdUVBRGUsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLENBQVQsRUFBWSxHQUFaLENBQ2Y7O0FBQ2xDLE1BQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBWixFQUFpQkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLEdBQTVCLEVBQWlDQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBNUMsRUFBaURBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVyxHQUE1RCxDQUFQO0FBQ0QsQyxDQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSwrQkFBVCxDQUNMQyxLQURLLEVBRUxDLE1BRkssRUFH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QUFNaUIsV0FBVyxHQUFHLEVBQXBCOztBQUNBLE9BQUssSUFBSXZGLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdRLFdBQVcsQ0FBQ1AsTUFBaEMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7QUFDM0MsUUFBTXdGLFFBQVEsR0FBR2hGLFdBQVcsQ0FBQ1IsQ0FBRCxDQUE1QjtBQUNBdUYsSUFBQUEsV0FBVyxDQUFDRSxJQUFaLENBQWlCO0FBQ2ZsRixNQUFBQSxJQUFJLEVBQUUsU0FEUztBQUVmc0QsTUFBQUEsVUFBVSxFQUFFO0FBQ1ZrQixRQUFBQSxTQUFTLEVBQUUsWUFERDtBQUVWRSxRQUFBQSxlQUFlLCtCQUFNSyxtQkFBTixJQUEyQnRGLENBQTNCLEVBRkw7QUFHVjRFLFFBQUFBLFlBQVksRUFBWkEsWUFIVTtBQUlWTixRQUFBQSxjQUFjLEVBQWRBO0FBSlUsT0FGRztBQVFmdEQsTUFBQUEsUUFBUSxFQUFFO0FBQ1JULFFBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFFBQUFBLFdBQVcsRUFBRWdGO0FBRkw7QUFSSyxLQUFqQjtBQWFEOztBQUNELFNBQU9ELFdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBwb2ludFRvTGluZURpc3RhbmNlIGZyb20gJ0B0dXJmL3BvaW50LXRvLWxpbmUtZGlzdGFuY2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCBXZWJNZXJjYXRvclZpZXdwb3J0IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHsgVmlld3BvcnQsIFBpY2ssIEVkaXRIYW5kbGVGZWF0dXJlLCBFZGl0SGFuZGxlVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgR2VvbWV0cnksXG4gIFBvc2l0aW9uLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgRmVhdHVyZU9mLFxuICBGZWF0dXJlV2l0aFByb3BzLFxufSBmcm9tICcuL2dlb2pzb24tdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZWFyZXN0UG9pbnRUeXBlID0gRmVhdHVyZVdpdGhQcm9wczxQb2ludCwgeyBkaXN0OiBudW1iZXI7IGluZGV4OiBudW1iZXIgfT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RlY2tDb2xvcihcbiAgY29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcixcbiAgZGVmYXVsdENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDAsIDI1NV1cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBkZWZhdWx0Q29sb3I7XG4gIH1cbiAgcmV0dXJuIFtjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAyNTUsIGNvbG9yWzJdICogMjU1LCBjb2xvclszXSAqIDI1NV07XG59XG5cbi8vXG4vLyBhIEdlb0pTT04gaGVscGVyIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHdpdGhcbi8vIGFuIGFyZ3VtZW50IHRoYXQgaXMgdGhlIG1vc3QgZGVlcGx5LW5lc3RlZCBhcnJheSBoYXZpbmcgZWxlbWVudHNcbi8vIHRoYXQgYXJlIGFycmF5cyBvZiBwcmltaXRpdmVzIGFzIGFuIGFyZ3VtZW50LCBlLmcuXG4vL1xuLy8ge1xuLy8gICBcInR5cGVcIjogXCJNdWx0aVBvbHlnb25cIixcbi8vICAgXCJjb29yZGluYXRlc1wiOiBbXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy8gICAgICAgXSxcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy8gICAgICAgXVxuLy8gICBdXG4vLyB9XG4vL1xuLy8gdGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBvbjpcbi8vXG4vLyBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vL1xuLy8gYW5kXG4vL1xuLy8gW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgYXJyYXk6IEFycmF5PGFueT4sXG4gIHByZWZpeDogQXJyYXk8bnVtYmVyPixcbiAgZm46IEZ1bmN0aW9uXG4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5WzBdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhhcnJheVtpXSwgWy4uLnByZWZpeCwgaV0sIGZuKSkge1xuICAgICAgZm4oYXJyYXksIHByZWZpeCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhcbiAgcDE6IFBvc2l0aW9uLFxuICBwMjogUG9zaXRpb24sXG4gIG1hcENvb3JkczogUG9zaXRpb25cbik6IFBvc2l0aW9uW10ge1xuICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0ge1xuICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICBjb29yZGluYXRlczogW3AxLCBwMl0sXG4gIH07XG4gIGNvbnN0IHB0ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgY29uc3QgZGRpc3RhbmNlID0gcG9pbnRUb0xpbmVEaXN0YW5jZShwdCwgbGluZVN0cmluZyk7XG4gIGNvbnN0IGxpbmVCZWFyaW5nID0gYmVhcmluZyhwMSwgcDIpO1xuXG4gIC8vIENoZWNrIGlmIGN1cnJlbnQgcG9pbnQgaXMgdG8gdGhlIGxlZnQgb3IgcmlnaHQgb2YgbGluZVxuICAvLyBMaW5lIGZyb20gQT0oeDEseTEpIHRvIEI9KHgyLHkyKSBhIHBvaW50IFA9KHgseSlcbiAgLy8gdGhlbiAoeOKIkngxKSh5MuKIknkxKeKIkih54oiSeTEpKHgy4oiSeDEpXG4gIGNvbnN0IGlzUG9pbnRUb0xlZnRPZkxpbmUgPVxuICAgIChtYXBDb29yZHNbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgLSAobWFwQ29vcmRzWzFdIC0gcDFbMV0pICogKHAyWzBdIC0gcDFbMF0pO1xuXG4gIC8vIEJlYXJpbmcgdG8gZHJhdyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHN0cmluZ1xuICBjb25zdCBvcnRob2dvbmFsQmVhcmluZyA9IGlzUG9pbnRUb0xlZnRPZkxpbmUgPCAwID8gbGluZUJlYXJpbmcgLSA5MCA6IGxpbmVCZWFyaW5nIC0gMjcwO1xuXG4gIC8vIEdldCBjb29yZGluYXRlcyBmb3IgdGhlIHBvaW50IHAzIGFuZCBwNCB3aGljaCBhcmUgcGVycGVuZGljdWxhciB0byB0aGUgbGluZVN0cmluZ1xuICAvLyBBZGQgdGhlIGRpc3RhbmNlIGFzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGluZVN0cmluZ1xuICBjb25zdCBwMyA9IGRlc3RpbmF0aW9uKHAyLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgY29uc3QgcDQgPSBkZXN0aW5hdGlvbihwMSwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG5cbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdIGFzIFBvc2l0aW9uW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZTJkKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkeCA9IHgxIC0geDI7XG4gIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXgoYTogbnVtYmVyLCBiOiBudW1iZXIsIHJhdGlvOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYiAqIHJhdGlvICsgYSAqICgxIC0gcmF0aW8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKFxuICBsaW5lOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0OiBWaWV3cG9ydFxuKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gIGNvbnN0IHdtVmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIC8vIFByb2plY3QgdGhlIGxpbmUgdG8gdmlld3BvcnQsIHRoZW4gZmluZCB0aGUgbmVhcmVzdCBwb2ludFxuICBjb25zdCBjb29yZGluYXRlczogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBsaW5lLmdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIGFueTtcbiAgY29uc3QgcHJvamVjdGVkQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChbeCwgeSwgeiA9IDBdKSA9PiB3bVZpZXdwb3J0LnByb2plY3QoW3gsIHksIHpdKSk7XG4gIC8vQHRzLWlnbm9yZVxuICBjb25zdCBbeCwgeV0gPSB3bVZpZXdwb3J0LnByb2plY3QoaW5Qb2ludC5nZW9tZXRyeS5jb29yZGluYXRlcyk7XG4gIC8vIGNvbnNvbGUubG9nKCdwcm9qZWN0ZWRDb29yZHMnLCBKU09OLnN0cmluZ2lmeShwcm9qZWN0ZWRDb29yZHMpKTtcblxuICBsZXQgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pblBvaW50SW5mbyA9IHt9O1xuXG4gIHByb2plY3RlZENvb3Jkcy5mb3JFYWNoKChbeDIsIHkyXSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbeDEsIHkxXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdO1xuXG4gICAgLy8gbGluZSBmcm9tIHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdIHRvIHByb2plY3RlZENvb3Jkc1tpbmRleF1cbiAgICAvLyBjb252ZXJ0IHRvIEF4ICsgQnkgKyBDID0gMFxuICAgIGNvbnN0IEEgPSB5MSAtIHkyO1xuICAgIGNvbnN0IEIgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEMgPSB4MSAqIHkyIC0geDIgKiB5MTtcblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RhbmNlX2Zyb21fYV9wb2ludF90b19hX2xpbmVcbiAgICBjb25zdCBkaXYgPSBBICogQSArIEIgKiBCO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5hYnMoQSAqIHggKyBCICogeSArIEMpIC8gTWF0aC5zcXJ0KGRpdik7XG5cbiAgICAvLyBUT0RPOiBDaGVjayBpZiBpbnNpZGUgYm91bmRzXG5cbiAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIG1pblBvaW50SW5mbyA9IHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHgwOiAoQiAqIChCICogeCAtIEEgKiB5KSAtIEEgKiBDKSAvIGRpdixcbiAgICAgICAgeTA6IChBICogKC1CICogeCArIEEgKiB5KSAtIEIgKiBDKSAvIGRpdixcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbiAgLy9AdHMtaWdub3JlXG4gIGNvbnN0IHsgaW5kZXgsIHgwLCB5MCB9ID0gbWluUG9pbnRJbmZvO1xuICBjb25zdCBbeDEsIHkxLCB6MSA9IDBdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV07XG4gIGNvbnN0IFt4MiwgeTIsIHoyID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aGF0IHJhdGlvIG9mIHRoZSBsaW5lIHdlIGFyZSBvbiB0byBmaW5kIHRoZSBwcm9wZXIgelxuICBjb25zdCBsaW5lTGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgyLCB5Mik7XG4gIGNvbnN0IHN0YXJ0VG9Qb2ludExlbmd0aCA9IGRpc3RhbmNlMmQoeDEsIHkxLCB4MCwgeTApO1xuICBjb25zdCByYXRpbyA9IHN0YXJ0VG9Qb2ludExlbmd0aCAvIGxpbmVMZW5ndGg7XG4gIGNvbnN0IHowID0gbWl4KHoxLCB6MiwgcmF0aW8pO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgIGdlb21ldHJ5OiB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IHdtVmlld3BvcnQudW5wcm9qZWN0KFt4MCwgeTAsIHowXSksXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyBUT0RPOiBjYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGluIHByb3BlciB1bml0c1xuICAgICAgZGlzdDogbWluRGlzdGFuY2UsXG4gICAgICBpbmRleDogaW5kZXggLSAxLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMubGVuZ3RoID8gaGFuZGxlc1swXSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShcbiAgcGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWRcbik6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhbmRsZXMgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gIHJldHVybiBoYW5kbGVzLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXNvdXJjZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrczogUGlja1tdKTogUGlja1tdIHtcbiAgcmV0dXJuIHBpY2tzICYmIHBpY2tzLmZpbHRlcigocGljaykgPT4gIXBpY2suaXNHdWlkZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5maW5kKFxuICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXggPj0gMCAmJiBwcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnZXhpc3RpbmcnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRJbnRlcm1lZGlhdGVFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMuZmluZChcbiAgICAoeyBwcm9wZXJ0aWVzIH0pID0+IHByb3BlcnRpZXMuZmVhdHVyZUluZGV4ID49IDAgJiYgcHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGhhbmRsZXMgPVxuICAgIChwaWNrcyAmJlxuICAgICAgcGlja3NcbiAgICAgICAgLmZpbHRlcigocGljaykgPT4gcGljay5pc0d1aWRlICYmIHBpY2sub2JqZWN0LnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSAnZWRpdEhhbmRsZScpXG4gICAgICAgIC5tYXAoKHBpY2spID0+IHBpY2sub2JqZWN0KSkgfHxcbiAgICBbXTtcblxuICByZXR1cm4gaGFuZGxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoXG4gIGdlb21ldHJ5OiBHZW9tZXRyeSxcbiAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gIGVkaXRIYW5kbGVUeXBlOiBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZydcbik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICBsZXQgaGFuZGxlczogRWRpdEhhbmRsZUZlYXR1cmVbXSA9IFtdO1xuXG4gIHN3aXRjaCAoZ2VvbWV0cnkudHlwZSkge1xuICAgIGNhc2UgJ1BvaW50JzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbm90IG5lc3RlZFxuICAgICAgaGFuZGxlcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlLFxuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbXSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAxIGxldmVsXG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIFtdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAyIGxldmVsc1xuICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGErKykge1xuICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlc1thXSwgW2FdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgLy8gRG9uJ3QgcmVwZWF0IHRoZSBmaXJzdC9sYXN0IGhhbmRsZSBmb3IgUG9seWdvbnNcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDMgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGZvciAobGV0IGIgPSAwOyBiIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbYV0ubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlc1thXVtiXSxcbiAgICAgICAgICAgICAgW2EsIGJdLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGdlb21ldHJ5IHR5cGU6ICR7Z2VvbWV0cnkudHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICBjb29yZGluYXRlczogYW55W10sXG4gIHBvc2l0aW9uSW5kZXhQcmVmaXg6IG51bWJlcltdLFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLi4ucG9zaXRpb25JbmRleFByZWZpeCwgaV0sXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZWRpdEhhbmRsZXM7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist-types/geojson-types.d.ts b/modules/edit-modes/dist-types/geojson-types.d.ts new file mode 100644 index 000000000..ff4f3a6e2 --- /dev/null +++ b/modules/edit-modes/dist-types/geojson-types.d.ts @@ -0,0 +1,59 @@ +export declare type Position = [number, number] | [number, number, number]; +export declare type PointCoordinates = Position; +export declare type LineStringCoordinates = Position[]; +export declare type PolygonCoordinates = Position[][]; +export declare type MultiPointCoordinates = Position[]; +export declare type MultiLineStringCoordinates = Position[][]; +export declare type MultiPolygonCoordinates = Position[][][]; +export declare type AnyCoordinates = PointCoordinates | LineStringCoordinates | PolygonCoordinates | MultiPointCoordinates | MultiLineStringCoordinates | MultiPolygonCoordinates; +export declare type Point = { + type: 'Point'; + coordinates: PointCoordinates; +}; +export declare type LineString = { + type: 'LineString'; + coordinates: LineStringCoordinates; +}; +export declare type Polygon = { + type: 'Polygon'; + coordinates: PolygonCoordinates; +}; +export declare type MultiPoint = { + type: 'MultiPoint'; + coordinates: MultiPointCoordinates; +}; +export declare type MultiLineString = { + type: 'MultiLineString'; + coordinates: MultiLineStringCoordinates; +}; +export declare type MultiPolygon = { + type: 'MultiPolygon'; + coordinates: MultiPolygonCoordinates; +}; +export declare type Geometry = Point | LineString | Polygon | MultiPoint | MultiLineString | MultiPolygon; +export declare type Polygonal = Polygon | MultiPolygon; +export declare type BoundingBoxArray = [number, number, number, number]; +export declare type FeatureOf = { + type: 'Feature'; + geometry: T; + properties?: { + [key: string]: any; + }; + id?: string | number; + bbox?: BoundingBoxArray; +}; +export declare type FeatureWithProps = { + type: 'Feature'; + geometry: T; + properties: P; +}; +export declare type Feature = FeatureOf | FeatureOf | FeatureOf | FeatureOf | FeatureOf | FeatureOf; +export declare type FeatureCollection = { + type: 'FeatureCollection'; + features: Feature[]; + properties?: {}; + id?: string | number; + bbox?: BoundingBoxArray; +}; +export declare type AnyGeoJson = Feature | FeatureCollection; +//# sourceMappingURL=geojson-types.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/geojson-types.d.ts.map b/modules/edit-modes/dist-types/geojson-types.d.ts.map new file mode 100644 index 000000000..6d49dd79d --- /dev/null +++ b/modules/edit-modes/dist-types/geojson-types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"geojson-types.d.ts","sourceRoot":"","sources":["../src/geojson-types.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACnE,oBAAY,gBAAgB,GAAG,QAAQ,CAAC;AACxC,oBAAY,qBAAqB,GAAG,QAAQ,EAAE,CAAC;AAC/C,oBAAY,kBAAkB,GAAG,QAAQ,EAAE,EAAE,CAAC;AAC9C,oBAAY,qBAAqB,GAAG,QAAQ,EAAE,CAAC;AAC/C,oBAAY,0BAA0B,GAAG,QAAQ,EAAE,EAAE,CAAC;AACtD,oBAAY,uBAAuB,GAAG,QAAQ,EAAE,EAAE,EAAE,CAAC;AAErD,oBAAY,cAAc,GACtB,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,qBAAqB,GACrB,0BAA0B,GAC1B,uBAAuB,CAAC;AAE5B,oBAAY,KAAK,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,oBAAY,OAAO,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,kBAAkB,CAAC;CACjC,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,0BAA0B,CAAC;CACzC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,EAAE,uBAAuB,CAAC;CACtC,CAAC;AAEF,oBAAY,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,eAAe,GAAG,YAAY,CAAC;AAElG,oBAAY,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;AAI/C,oBAAY,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhE,oBAAY,SAAS,CAAC,CAAC,SAAS,QAAQ,IAAI;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,CAAC,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,oBAAY,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,IAAI;IACpD,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,EAAE,CAAC,CAAC;CACf,CAAC;AAEF,oBAAY,OAAO,GACf,SAAS,CAAC,KAAK,CAAC,GAChB,SAAS,CAAC,UAAU,CAAC,GACrB,SAAS,CAAC,OAAO,CAAC,GAClB,SAAS,CAAC,UAAU,CAAC,GACrB,SAAS,CAAC,eAAe,CAAC,GAC1B,SAAS,CAAC,YAAY,CAAC,CAAC;AAE5B,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,EAAE,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,oBAAY,UAAU,GAAG,OAAO,GAAG,iBAAiB,CAAC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/index.d.ts b/modules/edit-modes/dist-types/index.d.ts new file mode 100644 index 000000000..387d4342f --- /dev/null +++ b/modules/edit-modes/dist-types/index.d.ts @@ -0,0 +1,40 @@ +export type { EditMode } from './lib/edit-mode'; +export type { GeoJsonEditModeType } from './lib/geojson-edit-mode'; +export type { GeoJsonEditModeConstructor } from './lib/geojson-edit-mode'; +export { GeoJsonEditMode } from './lib/geojson-edit-mode'; +export { ModifyMode } from './lib/modify-mode'; +export { ResizeCircleMode } from './lib/resize-circle-mode'; +export { TranslateMode } from './lib/translate-mode'; +export { ScaleMode } from './lib/scale-mode'; +export { RotateMode } from './lib/rotate-mode'; +export { DuplicateMode } from './lib/duplicate-mode'; +export { ExtendLineStringMode } from './lib/extend-line-string-mode'; +export { SplitPolygonMode } from './lib/split-polygon-mode'; +export { ExtrudeMode } from './lib/extrude-mode'; +export { ElevationMode } from './lib/elevation-mode'; +export { TransformMode } from './lib/transform-mode'; +export { DrawPointMode } from './lib/draw-point-mode'; +export { DrawLineStringMode } from './lib/draw-line-string-mode'; +export { DrawPolygonMode } from './lib/draw-polygon-mode'; +export { DrawRectangleMode } from './lib/draw-rectangle-mode'; +export { DrawSquareFromCenterMode } from './lib/draw-square-from-center-mode'; +export { DrawCircleByDiameterMode } from './lib/draw-circle-by-diameter-mode'; +export { DrawCircleFromCenterMode } from './lib/draw-circle-from-center-mode'; +export { DrawEllipseByBoundingBoxMode } from './lib/draw-ellipse-by-bounding-box-mode'; +export { DrawEllipseUsingThreePointsMode } from './lib/draw-ellipse-using-three-points-mode'; +export { DrawRectangleUsingThreePointsMode } from './lib/draw-rectangle-using-three-points-mode'; +export { Draw90DegreePolygonMode } from './lib/draw-90degree-polygon-mode'; +export { DrawPolygonByDraggingMode } from './lib/draw-polygon-by-dragging-mode'; +export { ImmutableFeatureCollection } from './lib/immutable-feature-collection'; +export { ViewMode } from './lib/view-mode'; +export { MeasureDistanceMode } from './lib/measure-distance-mode'; +export { MeasureAreaMode } from './lib/measure-area-mode'; +export { MeasureAngleMode } from './lib/measure-angle-mode'; +export { CompositeMode } from './lib/composite-mode'; +export { SnappableMode } from './lib/snappable-mode'; +export { default as _memoize } from './memoize'; +export type { ScreenCoordinates, EditAction, Pick, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps, GuideFeatureCollection, Viewport, Tooltip, } from './types'; +export type { Position, PointCoordinates, LineStringCoordinates, PolygonCoordinates, MultiPointCoordinates, MultiLineStringCoordinates, MultiPolygonCoordinates, AnyCoordinates, Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, Geometry, Polygonal, BoundingBoxArray, FeatureOf, FeatureWithProps, Feature, FeatureCollection, AnyGeoJson, } from './geojson-types'; +import * as utils from './utils'; +export { utils }; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/index.d.ts.map b/modules/edit-modes/dist-types/index.d.ts.map new file mode 100644 index 000000000..54e82269d --- /dev/null +++ b/modules/edit-modes/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/composite-mode.d.ts b/modules/edit-modes/dist-types/lib/composite-mode.d.ts new file mode 100644 index 000000000..61877a55d --- /dev/null +++ b/modules/edit-modes/dist-types/lib/composite-mode.d.ts @@ -0,0 +1,15 @@ +import { FeatureCollection } from '../geojson-types'; +import { ModeProps, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class CompositeMode extends GeoJsonEditMode { + _modes: Array; + constructor(modes: Array); + _coalesce(callback: (arg0: GeoJsonEditMode) => T, resultEval?: (arg0: T) => boolean | null | undefined): T; + handleClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; +} +//# sourceMappingURL=composite-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/composite-mode.d.ts.map b/modules/edit-modes/dist-types/lib/composite-mode.d.ts.map new file mode 100644 index 000000000..a14518e64 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/composite-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"composite-mode.d.ts","sourceRoot":"","sources":["../../src/lib/composite-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,eAAe;IAChD,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;gBAEnB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC;IAKzC,SAAS,CAAC,CAAC,EACT,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,CAAC,EACtC,UAAU,GAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,GAAG,SAAgB,GACzD,CAAC;IAaJ,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIzE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIrF,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIzF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIvF,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAI/E,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;CAevE"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts new file mode 100644 index 000000000..8aa7ec717 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts @@ -0,0 +1,12 @@ +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { Position, FeatureCollection } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class Draw90DegreePolygonMode extends GeoJsonEditMode { + createTentativeFeature(props: ModeProps): TentativeFeature; + getGuides(props: ModeProps): GuideFeatureCollection; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleClick(event: ClickEvent, props: ModeProps): void; + finalizedCoordinates(coords: Position[]): Position[][]; + getIntermediatePoint(coordinates: Position[]): any; +} +//# sourceMappingURL=draw-90degree-polygon-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts.map new file mode 100644 index 000000000..78ccf7c3b --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-90degree-polygon-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-90degree-polygon-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-90degree-polygon-mode.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAuB,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;IA6C7E,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAyBtE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAK9E,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA8DlE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE;IAmBvC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE;CA0C7C"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts new file mode 100644 index 000000000..f98e46465 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { TwoClickPolygonMode } from './two-click-polygon-mode'; +export declare class DrawCircleByDiameterMode extends TwoClickPolygonMode { + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf; +} +//# sourceMappingURL=draw-circle-by-diameter-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts.map new file mode 100644 index 000000000..1407d7047 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-circle-by-diameter-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-circle-by-diameter-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-circle-by-diameter-mode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;CAoB5F"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts new file mode 100644 index 000000000..3b02a5873 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { TwoClickPolygonMode } from './two-click-polygon-mode'; +export declare class DrawCircleFromCenterMode extends TwoClickPolygonMode { + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf; +} +//# sourceMappingURL=draw-circle-from-center-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts.map new file mode 100644 index 000000000..e0109cd89 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-circle-from-center-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-circle-from-center-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-circle-from-center-mode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;CAkB5F"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts new file mode 100644 index 000000000..e276c495a --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { TwoClickPolygonMode } from './two-click-polygon-mode'; +export declare class DrawEllipseByBoundingBoxMode extends TwoClickPolygonMode { + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf; +} +//# sourceMappingURL=draw-ellipse-by-bounding-box-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts.map new file mode 100644 index 000000000..42cf1ca7b --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-ellipse-by-bounding-box-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-ellipse-by-bounding-box-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-ellipse-by-bounding-box-mode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,4BAA6B,SAAQ,mBAAmB;IACnE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;CAe5F"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts new file mode 100644 index 000000000..0f5717579 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { ThreeClickPolygonMode } from './three-click-polygon-mode'; +export declare class DrawEllipseUsingThreePointsMode extends ThreeClickPolygonMode { + getThreeClickPolygon(coord1: Position, coord2: Position, coord3: Position, modeConfig: any): FeatureOf | null | undefined; +} +//# sourceMappingURL=draw-ellipse-using-three-points-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts.map new file mode 100644 index 000000000..b21998568 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-ellipse-using-three-points-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-ellipse-using-three-points-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-ellipse-using-three-points-mode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBAAa,+BAAgC,SAAQ,qBAAqB;IACxE,oBAAoB,CAClB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,GAAG,GACd,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;CAQzC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts new file mode 100644 index 000000000..bf7fbc9ef --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts @@ -0,0 +1,10 @@ +import { FeatureCollection } from '../geojson-types'; +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class DrawLineStringMode extends GeoJsonEditMode { + handleClick(event: ClickEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; +} +//# sourceMappingURL=draw-line-string-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts.map new file mode 100644 index 000000000..14bb5e57e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-line-string-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-line-string-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-line-string-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAE3F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA2ClE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAiBrE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAgDtE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAG/E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts new file mode 100644 index 000000000..b56716f52 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts @@ -0,0 +1,9 @@ +import { ClickEvent, PointerMoveEvent, ModeProps, TentativeFeature } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class DrawPointMode extends GeoJsonEditMode { + createTentativeFeature(props: ModeProps): TentativeFeature; + handleClick({ mapCoords }: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; +} +//# sourceMappingURL=draw-point-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts.map new file mode 100644 index 000000000..6965a5a17 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-point-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-point-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-point-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,eAAe;IAChD,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;IAgB7E,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IASjF,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAI/E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts new file mode 100644 index 000000000..6082f313e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts @@ -0,0 +1,14 @@ +import { ClickEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { DrawPolygonMode } from './draw-polygon-mode'; +declare type DraggingHandler = (event: DraggingEvent, props: ModeProps) => void; +export declare class DrawPolygonByDraggingMode extends DrawPolygonMode { + handleDraggingThrottled: DraggingHandler | null | undefined; + handleClick(event: ClickEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleDraggingAux(event: DraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; +} +export {}; +//# sourceMappingURL=draw-polygon-by-dragging-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts.map new file mode 100644 index 000000000..b03a4625f --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-polygon-by-dragging-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-polygon-by-dragging-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-polygon-by-dragging-mode.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAW,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,aAAK,eAAe,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;AAE3F,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,uBAAuB,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAQ;IAEnE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAIlE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IASlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAyBhF,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAU3E,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAKzE"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts new file mode 100644 index 000000000..360179e43 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts @@ -0,0 +1,11 @@ +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class DrawPolygonMode extends GeoJsonEditMode { + createTentativeFeature(props: ModeProps): TentativeFeature; + getGuides(props: ModeProps): GuideFeatureCollection; + handleClick(event: ClickEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; +} +//# sourceMappingURL=draw-polygon-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts.map new file mode 100644 index 000000000..8ae79b32d --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-polygon-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-polygon-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-polygon-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAW,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;IAkC7E,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAgCtE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA6ClE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAiBrE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAI/E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts new file mode 100644 index 000000000..72eba6bd4 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { TwoClickPolygonMode } from './two-click-polygon-mode'; +export declare class DrawRectangleMode extends TwoClickPolygonMode { + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf; +} +//# sourceMappingURL=draw-rectangle-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts.map new file mode 100644 index 000000000..ce62874ec --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-rectangle-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-rectangle-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-rectangle-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;CAQ5F"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts new file mode 100644 index 000000000..787fbf907 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { ThreeClickPolygonMode } from './three-click-polygon-mode'; +export declare class DrawRectangleUsingThreePointsMode extends ThreeClickPolygonMode { + getThreeClickPolygon(coord1: Position, coord2: Position, coord3: Position, modeConfig: any): FeatureOf | null | undefined; +} +//# sourceMappingURL=draw-rectangle-using-three-points-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts.map new file mode 100644 index 000000000..d1373c17d --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-rectangle-using-three-points-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-rectangle-using-three-points-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-rectangle-using-three-points-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBAAa,iCAAkC,SAAQ,qBAAqB;IAC1E,oBAAoB,CAClB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,GAAG,GACd,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;CAyBzC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts b/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts new file mode 100644 index 000000000..e75f3b25a --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts @@ -0,0 +1,6 @@ +import { Position, Polygon, FeatureOf } from '../geojson-types'; +import { TwoClickPolygonMode } from './two-click-polygon-mode'; +export declare class DrawSquareFromCenterMode extends TwoClickPolygonMode { + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf; +} +//# sourceMappingURL=draw-square-from-center-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts.map b/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts.map new file mode 100644 index 000000000..733f1f34d --- /dev/null +++ b/modules/edit-modes/dist-types/lib/draw-square-from-center-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-square-from-center-mode.d.ts","sourceRoot":"","sources":["../../src/lib/draw-square-from-center-mode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;CAqC5F"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts b/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts new file mode 100644 index 000000000..1fb2e79a4 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts @@ -0,0 +1,8 @@ +import { StartDraggingEvent, ModeProps } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { TranslateMode } from './translate-mode'; +export declare class DuplicateMode extends TranslateMode { + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + updateCursor(props: ModeProps): void; +} +//# sourceMappingURL=duplicate-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts.map b/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts.map new file mode 100644 index 000000000..b2f5ca724 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/duplicate-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"duplicate-mode.d.ts","sourceRoot":"","sources":["../../src/lib/duplicate-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAQlF,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAOjD"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/edit-mode.d.ts b/modules/edit-modes/dist-types/lib/edit-mode.d.ts new file mode 100644 index 000000000..3c5a9d8a8 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/edit-mode.d.ts @@ -0,0 +1,12 @@ +import { ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, Tooltip, ModeProps } from '../types'; +export interface EditMode { + handleClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; + getGuides(props: ModeProps): TGuides | undefined; + getTooltips(props: ModeProps): Tooltip[]; +} +//# sourceMappingURL=edit-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/edit-mode.d.ts.map b/modules/edit-modes/dist-types/lib/edit-mode.d.ts.map new file mode 100644 index 000000000..43fe83bca --- /dev/null +++ b/modules/edit-modes/dist-types/lib/edit-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edit-mode.d.ts","sourceRoot":"","sources":["../../src/lib/edit-mode.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,QAAQ,CAAC,KAAK,EAAE,OAAO;IAEtC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAE9D,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAE1E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAE9E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAE5E,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAEpE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAEjE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;IAExD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,EAAE,CAAC;CACjD"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/elevation-mode.d.ts b/modules/edit-modes/dist-types/lib/elevation-mode.d.ts new file mode 100644 index 000000000..72e7394d4 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/elevation-mode.d.ts @@ -0,0 +1,14 @@ +import { ModeProps, PointerMoveEvent, StopDraggingEvent } from '../types'; +import { Position, FeatureCollection } from '../geojson-types'; +import { ModifyMode } from './modify-mode'; +export declare class ElevationMode extends ModifyMode { + makeElevatedEvent(event: PointerMoveEvent | StopDraggingEvent, position: Position, props: ModeProps): Record; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + getCursor(event: PointerMoveEvent): string | null | undefined; + static calculateElevationChangeWithViewport(viewport: any, { pointerDownScreenCoords, screenCoords, }: { + pointerDownScreenCoords: Position; + screenCoords: Position; + }): number; +} +//# sourceMappingURL=elevation-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/elevation-mode.d.ts.map b/modules/edit-modes/dist-types/lib/elevation-mode.d.ts.map new file mode 100644 index 000000000..b97f197d2 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/elevation-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"elevation-mode.d.ts","sourceRoot":"","sources":["../../src/lib/elevation-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAY3C,qBAAa,aAAc,SAAQ,UAAU;IAC3C,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,EAC3C,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA2BtB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAO9E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAOhF,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAQ7D,MAAM,CAAC,oCAAoC,CACzC,QAAQ,EAAE,GAAG,EACb,EACE,uBAAuB,EACvB,YAAY,GACb,EAAE;QACD,uBAAuB,EAAE,QAAQ,CAAC;QAClC,YAAY,EAAE,QAAQ,CAAC;KACxB,GACA,MAAM;CAOV"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts b/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts new file mode 100644 index 000000000..ba7e4193e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts @@ -0,0 +1,10 @@ +import { LineString, FeatureCollection } from '../geojson-types'; +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ExtendLineStringMode extends GeoJsonEditMode { + getSingleSelectedLineString(props: ModeProps): LineString | null | undefined; + handleClick(event: ClickEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; +} +//# sourceMappingURL=extend-line-string-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts.map b/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts.map new file mode 100644 index 000000000..d9a9ae400 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/extend-line-string-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"extend-line-string-mode.d.ts","sourceRoot":"","sources":["../../src/lib/extend-line-string-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAS/F,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAgClE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAsCtE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAG/E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/extrude-mode.d.ts b/modules/edit-modes/dist-types/lib/extrude-mode.d.ts new file mode 100644 index 000000000..bfbff0261 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/extrude-mode.d.ts @@ -0,0 +1,16 @@ +import { FeatureCollection } from '../geojson-types'; +import { ModeProps, StartDraggingEvent, StopDraggingEvent, DraggingEvent } from '../types'; +import { ModifyMode } from './modify-mode'; +export declare class ExtrudeMode extends ModifyMode { + isPointAdded: boolean; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + coordinatesSize(positionIndexes: number[] | null | undefined, featureIndex: number, { features }: FeatureCollection): number; + getBearing(p1: any, p2: any): number; + isOrthogonal(positionIndexes: number[] | null | undefined, featureIndex: number, size: number, features: FeatureCollection): boolean; + nextPositionIndexes(positionIndexes: number[] | null | undefined, size: number): number[]; + prevPositionIndexes(positionIndexes: number[] | null | undefined, size: number): number[]; + getPointForPositionIndexes(positionIndexes: number[] | null | undefined, featureIndex: number, { features }: FeatureCollection): any; +} +//# sourceMappingURL=extrude-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/extrude-mode.d.ts.map b/modules/edit-modes/dist-types/lib/extrude-mode.d.ts.map new file mode 100644 index 000000000..3cd0f9971 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/extrude-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"extrude-mode.d.ts","sourceRoot":"","sources":["../../src/lib/extrude-mode.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,qBAAa,WAAY,SAAQ,UAAU;IAGzC,YAAY,UAAS;IAErB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IA0C/E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA8ClF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA0ChF,eAAe,CACb,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC5C,YAAY,EAAE,MAAM,EACpB,EAAE,QAAQ,EAAE,EAAE,iBAAiB;IAsBjC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;IAQ3B,YAAY,CACV,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC5C,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB;IAwB7B,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAWzF,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAWzF,0BAA0B,CACxB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC5C,YAAY,EAAE,MAAM,EACpB,EAAE,QAAQ,EAAE,EAAE,iBAAiB;CAqBlC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts b/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts new file mode 100644 index 000000000..8f9e952e6 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts @@ -0,0 +1,34 @@ +import { EditAction, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, Pick, Tooltip, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { FeatureCollection, Feature, Polygon, Geometry, Position } from '../geojson-types'; +import { EditMode } from './edit-mode'; +export declare type GeoJsonEditAction = EditAction; +export declare type GeoJsonEditModeType = EditMode; +export interface GeoJsonEditModeConstructor { + new (): GeoJsonEditModeType; +} +export declare class GeoJsonEditMode implements EditMode { + _clickSequence: Position[]; + getGuides(props: ModeProps): GuideFeatureCollection; + getTooltips(props: ModeProps): Tooltip[]; + getSelectedFeature(props: ModeProps): Feature | null | undefined; + getSelectedGeometry(props: ModeProps): Geometry | null | undefined; + getSelectedFeaturesAsFeatureCollection(props: ModeProps): FeatureCollection; + getClickSequence(): Position[]; + addClickSequence({ mapCoords }: ClickEvent): void; + resetClickSequence(): void; + getTentativeGuide(props: ModeProps): TentativeFeature | null | undefined; + isSelectionPicked(picks: Pick[], props: ModeProps): boolean; + rewindPolygon(feature: Feature): Feature; + getAddFeatureAction(featureOrGeometry: Geometry | Feature, features: FeatureCollection): GeoJsonEditAction; + getAddManyFeaturesAction({ features: featuresToAdd }: FeatureCollection, features: FeatureCollection): GeoJsonEditAction; + getAddFeatureOrBooleanPolygonAction(featureOrGeometry: Polygon | Feature, props: ModeProps): GeoJsonEditAction | null | undefined; + createTentativeFeature(props: ModeProps): TentativeFeature; + handleClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; +} +export declare function getIntermediatePosition(position1: Position, position2: Position): Position; +//# sourceMappingURL=geojson-edit-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts.map b/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts.map new file mode 100644 index 000000000..355e92f7d --- /dev/null +++ b/modules/edit-modes/dist-types/lib/geojson-edit-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"geojson-edit-mode.d.ts","sourceRoot":"","sources":["../../src/lib/geojson-edit-mode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts b/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts new file mode 100644 index 000000000..e1c80fdff --- /dev/null +++ b/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts @@ -0,0 +1,44 @@ +import { Feature, FeatureCollection, Geometry, Position } from '../geojson-types'; +export declare class ImmutableFeatureCollection { + featureCollection: FeatureCollection; + constructor(featureCollection: FeatureCollection); + getObject(): FeatureCollection; + /** + * Replaces the position deeply nested withing the given feature's geometry. + * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position to replace + * @param updatedPosition The updated position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`. + */ + replacePosition(featureIndex: number, positionIndexes: number[] | null | undefined, updatedPosition: Position): ImmutableFeatureCollection; + /** + * Removes a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the postion to remove + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + removePosition(featureIndex: number, positionIndexes: number[] | null | undefined): ImmutableFeatureCollection; + /** + * Adds a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position that will proceed the new position + * @param positionToAdd The new position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + addPosition(featureIndex: number, positionIndexes: number[] | null | undefined, positionToAdd: Position): ImmutableFeatureCollection; + replaceGeometry(featureIndex: number, geometry: Geometry): ImmutableFeatureCollection; + addFeature(feature: Feature): ImmutableFeatureCollection; + addFeatures(features: Feature[]): ImmutableFeatureCollection; + deleteFeature(featureIndex: number): ImmutableFeatureCollection; + deleteFeatures(featureIndexes: number[]): ImmutableFeatureCollection; +} +//# sourceMappingURL=immutable-feature-collection.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts.map b/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts.map new file mode 100644 index 000000000..d7592c878 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/immutable-feature-collection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"immutable-feature-collection.d.ts","sourceRoot":"","sources":["../../src/lib/immutable-feature-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,QAAQ,EAIR,QAAQ,EAET,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,0BAA0B;IACrC,iBAAiB,EAAE,iBAAiB,CAAC;gBAEzB,iBAAiB,EAAE,iBAAiB;IAIhD,SAAS;IAIT;;;;;;;;;OASG;IACH,eAAe,CACb,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC5C,eAAe,EAAE,QAAQ,GACxB,0BAA0B;IAiB7B;;;;;;;;OAQG;IACH,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAC3C,0BAA0B;IA0D7B;;;;;;;;;OASG;IACH,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC5C,aAAa,EAAE,QAAQ,GACtB,0BAA0B;IAqB7B,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,0BAA0B;IAkBrF,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,0BAA0B;IAIxD,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,0BAA0B;IAS5D,aAAa,CAAC,YAAY,EAAE,MAAM;IAIlC,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE;CAiBxC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts b/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts new file mode 100644 index 000000000..64e3be3d5 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts @@ -0,0 +1,12 @@ +import { ClickEvent, PointerMoveEvent, Tooltip, ModeProps, GuideFeatureCollection } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class MeasureAngleMode extends GeoJsonEditMode { + _getTooltips: (args: any) => any; + handleClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + getPoints(props: ModeProps): import("../geojson-types").Position[]; + getGuides(props: ModeProps): GuideFeatureCollection; + getTooltips(props: ModeProps): Tooltip[]; +} +//# sourceMappingURL=measure-angle-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts.map b/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts.map new file mode 100644 index 000000000..8de9bd8b0 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-angle-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"measure-angle-mode.d.ts","sourceRoot":"","sources":["../../src/lib/measure-angle-mode.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,YAAY,qBA+CT;IAEH,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IASzE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAIrF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAa7C,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IA6BtE,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,EAAE;CAU5D"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts b/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts new file mode 100644 index 000000000..319949bc7 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts @@ -0,0 +1,8 @@ +import { ClickEvent, Tooltip, ModeProps } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { DrawPolygonMode } from './draw-polygon-mode'; +export declare class MeasureAreaMode extends DrawPolygonMode { + handleClick(event: ClickEvent, props: ModeProps): void; + getTooltips(props: ModeProps): Tooltip[]; +} +//# sourceMappingURL=measure-area-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts.map b/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts.map new file mode 100644 index 000000000..9334cef09 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-area-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"measure-area-mode.d.ts","sourceRoot":"","sources":["../../src/lib/measure-area-mode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAUlE,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,EAAE;CAiC5D"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts b/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts new file mode 100644 index 000000000..2fdb2fdfb --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts @@ -0,0 +1,20 @@ +import { FeatureCollection } from '../geojson-types'; +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, Tooltip } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class MeasureDistanceMode extends GeoJsonEditMode { + _isMeasuringSessionFinished: boolean; + _currentTooltips: any[]; + _currentDistance: number; + _calculateDistanceForTooltip: ({ positionA, positionB, modeConfig }: { + positionA: any; + positionB: any; + modeConfig: any; + }) => any; + _formatTooltip(distance: any, modeConfig?: any): any; + handleClick(event: ClickEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + getTooltips(props: ModeProps): Tooltip[]; +} +//# sourceMappingURL=measure-distance-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts.map b/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts.map new file mode 100644 index 000000000..20747f6d5 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/measure-distance-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"measure-distance-mode.d.ts","sourceRoot":"","sources":["../../src/lib/measure-distance-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,2BAA2B,UAAS;IACpC,gBAAgB,QAAM;IACtB,gBAAgB,SAAK;IAErB,4BAA4B;;;;cAS1B;IAEF,cAAc,CAAC,QAAQ,KAAA,EAAE,UAAU,CAAC,KAAA;IAepC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAuDlE,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA2BrE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IA8CtE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAI9E,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,EAAE;CAqB5D"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/modify-mode.d.ts b/modules/edit-modes/dist-types/lib/modify-mode.d.ts new file mode 100644 index 000000000..767eb1885 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/modify-mode.d.ts @@ -0,0 +1,15 @@ +import { NearestPointType } from '../utils'; +import { LineString, Point, FeatureCollection, FeatureOf } from '../geojson-types'; +import { ModeProps, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, Viewport, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ModifyMode extends GeoJsonEditMode { + getGuides(props: ModeProps): GuideFeatureCollection; + nearestPointOnLine(line: FeatureOf, inPoint: FeatureOf, viewport: Viewport | null | undefined): NearestPointType; + handleClick(event: ClickEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + getCursor(event: PointerMoveEvent): string | null | undefined; +} +//# sourceMappingURL=modify-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/modify-mode.d.ts.map b/modules/edit-modes/dist-types/lib/modify-mode.d.ts.map new file mode 100644 index 000000000..e0d460039 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/modify-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modify-mode.d.ts","sourceRoot":"","sources":["../../src/lib/modify-mode.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,UAAW,SAAQ,eAAe;IAC7C,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAmFtE,kBAAkB,CAChB,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAC3B,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EACzB,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GACpC,gBAAgB;IAgBnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAgDlE,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IA6B/E,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAKrF,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA2BlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA0BhF,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;CAS9D"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts b/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts new file mode 100644 index 000000000..099658c61 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts @@ -0,0 +1,16 @@ +import { NearestPointType } from '../utils'; +import { LineString, Point, FeatureCollection, FeatureOf } from '../geojson-types'; +import { ModeProps, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, Viewport, EditHandleFeature, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ResizeCircleMode extends GeoJsonEditMode { + _selectedEditHandle: EditHandleFeature | null | undefined; + _isResizing: boolean; + getGuides(props: ModeProps): GuideFeatureCollection; + nearestPointOnLine(line: FeatureOf, inPoint: FeatureOf, viewport: Viewport | null | undefined): NearestPointType; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + getCursor(event: PointerMoveEvent): string | null | undefined; +} +//# sourceMappingURL=resize-circle-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts.map b/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts.map new file mode 100644 index 000000000..1da4634d8 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/resize-circle-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"resize-circle-mode.d.ts","sourceRoot":"","sources":["../../src/lib/resize-circle-mode.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,WAAW,UAAS;IAEpB,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IA+EtE,kBAAkB,CAChB,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAC3B,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EACzB,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GACpC,gBAAgB;IAgBnB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAiC/E,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAarF,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAMlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAehF,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;CAS9D"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/rotate-mode.d.ts b/modules/edit-modes/dist-types/lib/rotate-mode.d.ts new file mode 100644 index 000000000..85937485e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/rotate-mode.d.ts @@ -0,0 +1,18 @@ +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps, EditHandleFeature, GuideFeatureCollection } from '../types'; +import { FeatureCollection, Position } from '../geojson-types'; +import { GeoJsonEditMode, GeoJsonEditAction } from './geojson-edit-mode'; +export declare class RotateMode extends GeoJsonEditMode { + _selectedEditHandle: EditHandleFeature | null | undefined; + _geometryBeingRotated: FeatureCollection | null | undefined; + _isRotating: boolean; + _isSinglePointGeometrySelected: (geometry: FeatureCollection) => boolean; + getIsRotating: () => boolean; + getGuides(props: ModeProps): GuideFeatureCollection; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + updateCursor(props: ModeProps): void; + getRotateAction(startDragPoint: Position, currentPoint: Position, editType: string, props: ModeProps): GeoJsonEditAction | null | undefined; +} +//# sourceMappingURL=rotate-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/rotate-mode.d.ts.map b/modules/edit-modes/dist-types/lib/rotate-mode.d.ts.map new file mode 100644 index 000000000..dc8cd1b54 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/rotate-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"rotate-mode.d.ts","sourceRoot":"","sources":["../../src/lib/rotate-mode.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAC;AAGlG,qBAAa,UAAW,SAAQ,eAAe;IAC7C,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,qBAAqB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5D,WAAW,UAAS;IAEpB,8BAA8B,2CAQ5B;IAEF,aAAa,gBAA0B;IAEvC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAyDtE,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAkBxE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAY9E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAOlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAoBhF,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAShD,eAAe,CACb,cAAc,EAAE,QAAQ,EACxB,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAClC,iBAAiB,GAAG,IAAI,GAAG,SAAS;CAkCxC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/scale-mode.d.ts b/modules/edit-modes/dist-types/lib/scale-mode.d.ts new file mode 100644 index 000000000..7f91bd880 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/scale-mode.d.ts @@ -0,0 +1,40 @@ +import { FeatureCollection, Position } from '../geojson-types'; +import { ModeProps, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, EditHandleFeature, GuideFeatureCollection } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ScaleMode extends GeoJsonEditMode { + _geometryBeingScaled: FeatureCollection | null | undefined; + _selectedEditHandle: EditHandleFeature | null | undefined; + _cornerGuidePoints: Array; + _cursor: string | null | undefined; + _isScaling: boolean; + _isSinglePointGeometrySelected: (geometry: FeatureCollection) => boolean; + _getOppositeScaleHandle: (selectedHandle: import("../geojson-types").FeatureWithProps) => import("../geojson-types").FeatureWithProps; + _getUpdatedData: (props: ModeProps, editedData: FeatureCollection) => FeatureCollection; + isEditHandleSelected: () => boolean; + getScaleAction: (startDragPoint: Position, currentPoint: Position, editType: string, props: ModeProps) => { + updatedData: FeatureCollection; + editType: string; + editContext: { + featureIndexes: number[]; + }; + }; + updateCursor: (props: ModeProps) => void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; +} +//# sourceMappingURL=scale-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/scale-mode.d.ts.map b/modules/edit-modes/dist-types/lib/scale-mode.d.ts.map new file mode 100644 index 000000000..f62b8d058 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/scale-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"scale-mode.d.ts","sourceRoot":"","sources":["../../src/lib/scale-mode.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,qBAAa,SAAU,SAAQ,eAAe;IAC5C,oBAAoB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,UAAU,UAAS;IAEnB,8BAA8B,2CAQ5B;IAEF,uBAAuB;;;;;;;;;;;;OAkBrB;IAEF,eAAe,4FASb;IAEF,oBAAoB,gBAAoD;IAExE,cAAc;;;;;;MA6BZ;IAEF,YAAY,gDAyBV;IAEF,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAc9E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAOlF,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAoBxE,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAsBhF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;CA6BvE"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/snappable-mode.d.ts b/modules/edit-modes/dist-types/lib/snappable-mode.d.ts new file mode 100644 index 000000000..505de9c47 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/snappable-mode.d.ts @@ -0,0 +1,22 @@ +import { Feature, FeatureCollection } from '../geojson-types'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps, Pick, GuideFeatureCollection, EditHandleFeature } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +declare type MovementTypeEvent = PointerMoveEvent | StartDraggingEvent | StopDraggingEvent | DraggingEvent; +export declare class SnappableMode extends GeoJsonEditMode { + _handler: GeoJsonEditMode; + constructor(handler: GeoJsonEditMode); + _getSnappedMouseEvent(event: T, snapSource: EditHandleFeature, snapTarget: EditHandleFeature): T; + _getPickedSnapTarget(picks: Pick[]): EditHandleFeature | null | undefined; + _getPickedSnapSource(pointerDownPicks: Pick[] | null | undefined): EditHandleFeature | null | undefined; + _getUpdatedSnapSourceHandle(snapSourceHandle: EditHandleFeature, data: FeatureCollection): EditHandleFeature; + _getSnapTargets(props: ModeProps): Feature[]; + _getSnapTargetHandles(props: ModeProps): EditHandleFeature[]; + getGuides(props: ModeProps): GuideFeatureCollection; + _getSnapAwareEvent(event: T, props: ModeProps): T; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; +} +export {}; +//# sourceMappingURL=snappable-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/snappable-mode.d.ts.map b/modules/edit-modes/dist-types/lib/snappable-mode.d.ts.map new file mode 100644 index 000000000..74fc41805 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/snappable-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"snappable-mode.d.ts","sourceRoot":"","sources":["../../src/lib/snappable-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,IAAI,EACJ,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAMlB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,aAAK,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,aAAa,CAAC;AAEnG,qBAAa,aAAc,SAAQ,eAAe;IAChD,QAAQ,EAAE,eAAe,CAAC;gBAEd,OAAO,EAAE,eAAe;IAKpC,qBAAqB,CAAC,CAAC,SAAS,iBAAiB,EAC/C,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC5B,CAAC;IAOJ,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,GAAG,IAAI,GAAG,SAAS;IAMzE,oBAAoB,CAClB,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAC1C,iBAAiB,GAAG,IAAI,GAAG,SAAS;IAIvC,2BAA2B,CACzB,gBAAgB,EAAE,iBAAiB,EACnC,IAAI,EAAE,iBAAiB,GACtB,iBAAiB;IA0BpB,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,EAAE;IAQ/D,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,EAAE;IAmB/E,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAuCtE,kBAAkB,CAAC,CAAC,SAAS,iBAAiB,EAC5C,KAAK,EAAE,CAAC,EACR,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAClC,CAAC;IASJ,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAIlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAIhF,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAIxE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAG/E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts b/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts new file mode 100644 index 000000000..1cf29509e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts @@ -0,0 +1,11 @@ +import { FeatureCollection } from '../geojson-types'; +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class SplitPolygonMode extends GeoJsonEditMode { + calculateMapCoords(clickSequence: any, mapCoords: any, props: ModeProps): any; + getGuides(props: ModeProps): GuideFeatureCollection; + handleClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + splitPolygon(tentativeFeature: TentativeFeature, props: ModeProps): import("../types").EditAction; +} +//# sourceMappingURL=split-polygon-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts.map b/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts.map new file mode 100644 index 000000000..ecdd5219e --- /dev/null +++ b/modules/edit-modes/dist-types/lib/split-polygon-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"split-polygon-mode.d.ts","sourceRoot":"","sources":["../../src/lib/split-polygon-mode.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAqB,MAAM,qBAAqB,CAAC;AAGzE,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,kBAAkB,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAgD1F,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IA6BtE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA0ClE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAI9E,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAsDrF"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts b/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts new file mode 100644 index 000000000..e394b440b --- /dev/null +++ b/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts @@ -0,0 +1,11 @@ +import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { Position, Polygon, FeatureOf, FeatureCollection } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ThreeClickPolygonMode extends GeoJsonEditMode { + handleClick(event: ClickEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; + getThreeClickPolygon(coord1: Position, coord2: Position, coord3: Position, modeConfig: any): FeatureOf | null | undefined; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + createTentativeFeature(props: ModeProps): TentativeFeature; +} +//# sourceMappingURL=three-click-polygon-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts.map b/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts.map new file mode 100644 index 000000000..5f7401150 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/three-click-polygon-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"three-click-polygon-mode.d.ts","sourceRoot":"","sources":["../../src/lib/three-click-polygon-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAmBlE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAgDtE,oBAAoB,CAClB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,GAAG,GACd,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;IAIxC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAK9E,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;CAkB9E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/transform-mode.d.ts b/modules/edit-modes/dist-types/lib/transform-mode.d.ts new file mode 100644 index 000000000..957d6c341 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/transform-mode.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent, ModeProps, StartDraggingEvent } from '../types'; +import { FeatureCollection } from '../geojson-types'; +import { CompositeMode } from './composite-mode'; +export declare class TransformMode extends CompositeMode { + constructor(); + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + getGuides(props: ModeProps): import("../types").GuideFeatureCollection; +} +//# sourceMappingURL=transform-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/transform-mode.d.ts.map b/modules/edit-modes/dist-types/lib/transform-mode.d.ts.map new file mode 100644 index 000000000..142543a2c --- /dev/null +++ b/modules/edit-modes/dist-types/lib/transform-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"transform-mode.d.ts","sourceRoot":"","sources":["../../src/lib/transform-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,aAAc,SAAQ,aAAa;;IAK9C,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAW9E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA2BlF,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;CAoB9C"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/translate-mode.d.ts b/modules/edit-modes/dist-types/lib/translate-mode.d.ts new file mode 100644 index 000000000..828f9b104 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/translate-mode.d.ts @@ -0,0 +1,14 @@ +import { FeatureCollection, Position } from '../geojson-types'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps } from '../types'; +import { GeoJsonEditMode, GeoJsonEditAction } from './geojson-edit-mode'; +export declare class TranslateMode extends GeoJsonEditMode { + _geometryBeforeTranslate: FeatureCollection | null | undefined; + _isTranslatable: boolean; + handleDragging(event: DraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + updateCursor(props: ModeProps): void; + getTranslateAction(startDragPoint: Position, currentPoint: Position, editType: string, props: ModeProps): GeoJsonEditAction | null | undefined; +} +//# sourceMappingURL=translate-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/translate-mode.d.ts.map b/modules/edit-modes/dist-types/lib/translate-mode.d.ts.map new file mode 100644 index 000000000..8d0e78493 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/translate-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate-mode.d.ts","sourceRoot":"","sources":["../../src/lib/translate-mode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGzE,qBAAa,aAAc,SAAQ,eAAe;IAChD,wBAAwB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/D,eAAe,EAAE,OAAO,CAAC;IAEzB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAwBxE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAM9E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAQlF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAkBhF,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAQhD,kBAAkB,CAChB,cAAc,EAAE,QAAQ,EACxB,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAClC,iBAAiB,GAAG,IAAI,GAAG,SAAS;CAkCxC"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts b/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts new file mode 100644 index 000000000..6b4666409 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts @@ -0,0 +1,14 @@ +import { ClickEvent, StartDraggingEvent, StopDraggingEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from '../types'; +import { Polygon, FeatureCollection, FeatureOf, Position } from '../geojson-types'; +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class TwoClickPolygonMode extends GeoJsonEditMode { + handleClick(event: ClickEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + checkAndFinishPolygon(props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection; + getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf | null | undefined; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + createTentativeFeature(props: ModeProps): TentativeFeature; +} +//# sourceMappingURL=two-click-polygon-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts.map b/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts.map new file mode 100644 index 000000000..cd05f51c2 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/two-click-polygon-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"two-click-polygon-mode.d.ts","sourceRoot":"","sources":["../../src/lib/two-click-polygon-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAWlE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAUzF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAUvF,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA6BzD,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB;IAgCtE,kBAAkB,CAChB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,GAAG,GACd,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS;IAIxC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAK9E,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;CAa9E"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/view-mode.d.ts b/modules/edit-modes/dist-types/lib/view-mode.d.ts new file mode 100644 index 000000000..87d332729 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/view-mode.d.ts @@ -0,0 +1,4 @@ +import { GeoJsonEditMode } from './geojson-edit-mode'; +export declare class ViewMode extends GeoJsonEditMode { +} +//# sourceMappingURL=view-mode.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/lib/view-mode.d.ts.map b/modules/edit-modes/dist-types/lib/view-mode.d.ts.map new file mode 100644 index 000000000..9bf1893d2 --- /dev/null +++ b/modules/edit-modes/dist-types/lib/view-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"view-mode.d.ts","sourceRoot":"","sources":["../../src/lib/view-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,QAAS,SAAQ,eAAe;CAAG"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/memoize.d.ts b/modules/edit-modes/dist-types/memoize.d.ts new file mode 100644 index 000000000..04905ab7d --- /dev/null +++ b/modules/edit-modes/dist-types/memoize.d.ts @@ -0,0 +1,7 @@ +/** + * Speed up consecutive function calls by caching the result of calls with identical input + * https://en.wikipedia.org/wiki/Memoization + * @param {function} compute - the function to be memoized + */ +export default function memoize(compute: Function): (args: any) => any; +//# sourceMappingURL=memoize.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/memoize.d.ts.map b/modules/edit-modes/dist-types/memoize.d.ts.map new file mode 100644 index 000000000..03a4e8ec4 --- /dev/null +++ b/modules/edit-modes/dist-types/memoize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../src/memoize.ts"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,QAAQ,sBAchD"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/types.d.ts b/modules/edit-modes/dist-types/types.d.ts new file mode 100644 index 000000000..20d87efc0 --- /dev/null +++ b/modules/edit-modes/dist-types/types.d.ts @@ -0,0 +1,83 @@ +import { Position, Point, Geometry, FeatureWithProps } from './geojson-types'; +export declare type ScreenCoordinates = [number, number]; +export declare type EditAction = { + updatedData: TData; + editType: string; + editContext: any; +}; +export declare type Pick = { + object: any; + index: number; + isGuide: boolean; +}; +export declare type Viewport = { + width: number; + height: number; + longitude: number; + latitude: number; + zoom: number; + bearing?: number; + pitch?: number; +}; +export declare type BasePointerEvent = { + picks: Pick[]; + screenCoords: ScreenCoordinates; + mapCoords: Position; + sourceEvent: any; +}; +export declare type ClickEvent = BasePointerEvent; +export declare type StartDraggingEvent = BasePointerEvent & { + pointerDownPicks?: Pick[] | null | undefined; + pointerDownScreenCoords: ScreenCoordinates; + pointerDownMapCoords: Position; + cancelPan: () => void; +}; +export declare type StopDraggingEvent = BasePointerEvent & { + pointerDownPicks?: Pick[] | null | undefined; + pointerDownScreenCoords: ScreenCoordinates; + pointerDownMapCoords: Position; +}; +export declare type DraggingEvent = BasePointerEvent & { + pointerDownPicks?: Pick[] | null | undefined; + pointerDownScreenCoords: ScreenCoordinates; + pointerDownMapCoords: Position; + cancelPan: () => void; +}; +export declare type PointerMoveEvent = BasePointerEvent & { + pointerDownPicks?: Pick[] | null | undefined; + pointerDownScreenCoords?: ScreenCoordinates | null | undefined; + pointerDownMapCoords?: Position | null | undefined; + cancelPan: () => void; +}; +export declare type Tooltip = { + position: Position; + text: string; +}; +export declare type EditHandleType = 'existing' | 'intermediate' | 'snap-source' | 'snap-target' | 'scale' | 'rotate'; +export declare type EditHandleFeature = FeatureWithProps; +export declare type TentativeFeature = FeatureWithProps; +export declare type GuideFeature = EditHandleFeature | TentativeFeature; +export declare type GuideFeatureCollection = { + type: 'FeatureCollection'; + features: Readonly[]; + properties?: {}; +}; +export declare type ModeProps = { + data: TData; + modeConfig: any; + selectedIndexes: number[]; + cursor: string | null | undefined; + lastPointerMoveEvent: PointerMoveEvent; + onEdit: (editAction: EditAction) => void; + onUpdateCursor: (cursor: string | null | undefined) => void; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/types.d.ts.map b/modules/edit-modes/dist-types/types.d.ts.map new file mode 100644 index 000000000..302efcd52 --- /dev/null +++ b/modules/edit-modes/dist-types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/edit-modes/dist-types/utils.d.ts b/modules/edit-modes/dist-types/utils.d.ts new file mode 100644 index 000000000..6b82ad2da --- /dev/null +++ b/modules/edit-modes/dist-types/utils.d.ts @@ -0,0 +1,20 @@ +import { Viewport, Pick, EditHandleFeature, EditHandleType } from './types'; +import { Geometry, Position, Point, LineString, FeatureOf, FeatureWithProps } from './geojson-types'; +export declare type NearestPointType = FeatureWithProps; +export declare function toDeckColor(color?: [number, number, number, number] | number, defaultColor?: [number, number, number, number]): [number, number, number, number]; +export declare function recursivelyTraverseNestedArrays(array: Array, prefix: Array, fn: Function): boolean; +export declare function generatePointsParallelToLinePoints(p1: Position, p2: Position, mapCoords: Position): Position[]; +export declare function distance2d(x1: number, y1: number, x2: number, y2: number): number; +export declare function mix(a: number, b: number, ratio: number): number; +export declare function nearestPointOnProjectedLine(line: FeatureOf, inPoint: FeatureOf, viewport: Viewport): NearestPointType; +export declare function getPickedEditHandle(picks: Pick[] | null | undefined): EditHandleFeature | null | undefined; +export declare function getPickedSnapSourceEditHandle(picks: Pick[] | null | undefined): EditHandleFeature | null | undefined; +export declare function getNonGuidePicks(picks: Pick[]): Pick[]; +export declare function getPickedExistingEditHandle(picks: Pick[] | null | undefined): EditHandleFeature | null | undefined; +export declare function getPickedIntermediateEditHandle(picks: Pick[] | null | undefined): EditHandleFeature | null | undefined; +export declare function getPickedEditHandles(picks: Pick[] | null | undefined): EditHandleFeature[]; +export declare function getEditHandlesForGeometry(geometry: Geometry, featureIndex: number, editHandleType?: EditHandleType): EditHandleFeature[]; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/modules/edit-modes/dist-types/utils.d.ts.map b/modules/edit-modes/dist-types/utils.d.ts.map new file mode 100644 index 000000000..de72f2c7a --- /dev/null +++ b/modules/edit-modes/dist-types/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,oBAAY,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExF,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EACjD,YAAY,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAoB,GAChE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKlC;AA2BD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EACrB,EAAE,EAAE,QAAQ,WAYb;AAED,wBAAgB,kCAAkC,CAChD,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,QAAQ,GAClB,QAAQ,EAAE,CAwBZ;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAC3B,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EACzB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CA+DlB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/B,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAGtC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/B,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAGtC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAEtD;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/B,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAKtC;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAC/B,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAKtC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAS1F;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,GAAE,cAA2B,GAC1C,iBAAiB,EAAE,CAmErB"} \ No newline at end of file diff --git a/modules/edit-modes/dist/geojson-types.js b/modules/edit-modes/dist/geojson-types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist/geojson-types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/index.js b/modules/edit-modes/dist/index.js new file mode 100644 index 000000000..d00bac6ab --- /dev/null +++ b/modules/edit-modes/dist/index.js @@ -0,0 +1,275 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "GeoJsonEditMode", { + enumerable: true, + get: function get() { + return _geojsonEditMode.GeoJsonEditMode; + } +}); +Object.defineProperty(exports, "ModifyMode", { + enumerable: true, + get: function get() { + return _modifyMode.ModifyMode; + } +}); +Object.defineProperty(exports, "ResizeCircleMode", { + enumerable: true, + get: function get() { + return _resizeCircleMode.ResizeCircleMode; + } +}); +Object.defineProperty(exports, "TranslateMode", { + enumerable: true, + get: function get() { + return _translateMode.TranslateMode; + } +}); +Object.defineProperty(exports, "ScaleMode", { + enumerable: true, + get: function get() { + return _scaleMode.ScaleMode; + } +}); +Object.defineProperty(exports, "RotateMode", { + enumerable: true, + get: function get() { + return _rotateMode.RotateMode; + } +}); +Object.defineProperty(exports, "DuplicateMode", { + enumerable: true, + get: function get() { + return _duplicateMode.DuplicateMode; + } +}); +Object.defineProperty(exports, "ExtendLineStringMode", { + enumerable: true, + get: function get() { + return _extendLineStringMode.ExtendLineStringMode; + } +}); +Object.defineProperty(exports, "SplitPolygonMode", { + enumerable: true, + get: function get() { + return _splitPolygonMode.SplitPolygonMode; + } +}); +Object.defineProperty(exports, "ExtrudeMode", { + enumerable: true, + get: function get() { + return _extrudeMode.ExtrudeMode; + } +}); +Object.defineProperty(exports, "ElevationMode", { + enumerable: true, + get: function get() { + return _elevationMode.ElevationMode; + } +}); +Object.defineProperty(exports, "TransformMode", { + enumerable: true, + get: function get() { + return _transformMode.TransformMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _drawPointMode.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _drawLineStringMode.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _drawPolygonMode.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _drawRectangleMode.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawSquareFromCenterMode", { + enumerable: true, + get: function get() { + return _drawSquareFromCenterMode.DrawSquareFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _drawCircleByDiameterMode.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _drawCircleFromCenterMode.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawEllipseByBoundingBoxMode", { + enumerable: true, + get: function get() { + return _drawEllipseByBoundingBoxMode.DrawEllipseByBoundingBoxMode; + } +}); +Object.defineProperty(exports, "DrawEllipseUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _drawEllipseUsingThreePointsMode.DrawEllipseUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "DrawRectangleUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _drawRectangleUsingThreePointsMode.DrawRectangleUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "Draw90DegreePolygonMode", { + enumerable: true, + get: function get() { + return _draw90degreePolygonMode.Draw90DegreePolygonMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _drawPolygonByDraggingMode.DrawPolygonByDraggingMode; + } +}); +Object.defineProperty(exports, "ImmutableFeatureCollection", { + enumerable: true, + get: function get() { + return _immutableFeatureCollection.ImmutableFeatureCollection; + } +}); +Object.defineProperty(exports, "ViewMode", { + enumerable: true, + get: function get() { + return _viewMode.ViewMode; + } +}); +Object.defineProperty(exports, "MeasureDistanceMode", { + enumerable: true, + get: function get() { + return _measureDistanceMode.MeasureDistanceMode; + } +}); +Object.defineProperty(exports, "MeasureAreaMode", { + enumerable: true, + get: function get() { + return _measureAreaMode.MeasureAreaMode; + } +}); +Object.defineProperty(exports, "MeasureAngleMode", { + enumerable: true, + get: function get() { + return _measureAngleMode.MeasureAngleMode; + } +}); +Object.defineProperty(exports, "CompositeMode", { + enumerable: true, + get: function get() { + return _compositeMode.CompositeMode; + } +}); +Object.defineProperty(exports, "SnappableMode", { + enumerable: true, + get: function get() { + return _snappableMode.SnappableMode; + } +}); +Object.defineProperty(exports, "_memoize", { + enumerable: true, + get: function get() { + return _memoize["default"]; + } +}); +exports.utils = void 0; + +var _geojsonEditMode = require("./lib/geojson-edit-mode"); + +var _modifyMode = require("./lib/modify-mode"); + +var _resizeCircleMode = require("./lib/resize-circle-mode"); + +var _translateMode = require("./lib/translate-mode"); + +var _scaleMode = require("./lib/scale-mode"); + +var _rotateMode = require("./lib/rotate-mode"); + +var _duplicateMode = require("./lib/duplicate-mode"); + +var _extendLineStringMode = require("./lib/extend-line-string-mode"); + +var _splitPolygonMode = require("./lib/split-polygon-mode"); + +var _extrudeMode = require("./lib/extrude-mode"); + +var _elevationMode = require("./lib/elevation-mode"); + +var _transformMode = require("./lib/transform-mode"); + +var _drawPointMode = require("./lib/draw-point-mode"); + +var _drawLineStringMode = require("./lib/draw-line-string-mode"); + +var _drawPolygonMode = require("./lib/draw-polygon-mode"); + +var _drawRectangleMode = require("./lib/draw-rectangle-mode"); + +var _drawSquareFromCenterMode = require("./lib/draw-square-from-center-mode"); + +var _drawCircleByDiameterMode = require("./lib/draw-circle-by-diameter-mode"); + +var _drawCircleFromCenterMode = require("./lib/draw-circle-from-center-mode"); + +var _drawEllipseByBoundingBoxMode = require("./lib/draw-ellipse-by-bounding-box-mode"); + +var _drawEllipseUsingThreePointsMode = require("./lib/draw-ellipse-using-three-points-mode"); + +var _drawRectangleUsingThreePointsMode = require("./lib/draw-rectangle-using-three-points-mode"); + +var _draw90degreePolygonMode = require("./lib/draw-90degree-polygon-mode"); + +var _drawPolygonByDraggingMode = require("./lib/draw-polygon-by-dragging-mode"); + +var _immutableFeatureCollection = require("./lib/immutable-feature-collection"); + +var _viewMode = require("./lib/view-mode"); + +var _measureDistanceMode = require("./lib/measure-distance-mode"); + +var _measureAreaMode = require("./lib/measure-area-mode"); + +var _measureAngleMode = require("./lib/measure-angle-mode"); + +var _compositeMode = require("./lib/composite-mode"); + +var _snappableMode = require("./lib/snappable-mode"); + +var _memoize = _interopRequireDefault(require("./memoize")); + +var utils = _interopRequireWildcard(require("./utils")); + +exports.utils = utils; + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUEyQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnLi9saWIvZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlVHlwZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcbmV4cG9ydCB0eXBlIHsgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IgfSBmcm9tICcuL2xpYi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vbGliL2dlb2pzb24tZWRpdC1tb2RlJztcblxuLy8gQWx0ZXIgbW9kZXNcbmV4cG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL2xpYi9tb2RpZnktbW9kZSc7XG5leHBvcnQgeyBSZXNpemVDaXJjbGVNb2RlIH0gZnJvbSAnLi9saWIvcmVzaXplLWNpcmNsZS1tb2RlJztcbmV4cG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL2xpYi90cmFuc2xhdGUtbW9kZSc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL2xpYi9zY2FsZS1tb2RlJztcbmV4cG9ydCB7IFJvdGF0ZU1vZGUgfSBmcm9tICcuL2xpYi9yb3RhdGUtbW9kZSc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnLi9saWIvZHVwbGljYXRlLW1vZGUnO1xuZXhwb3J0IHsgRXh0ZW5kTGluZVN0cmluZ01vZGUgfSBmcm9tICcuL2xpYi9leHRlbmQtbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBTcGxpdFBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvc3BsaXQtcG9seWdvbi1tb2RlJztcbmV4cG9ydCB7IEV4dHJ1ZGVNb2RlIH0gZnJvbSAnLi9saWIvZXh0cnVkZS1tb2RlJztcbmV4cG9ydCB7IEVsZXZhdGlvbk1vZGUgfSBmcm9tICcuL2xpYi9lbGV2YXRpb24tbW9kZSc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnLi9saWIvdHJhbnNmb3JtLW1vZGUnO1xuXG4vLyBEcmF3IG1vZGVzXG5leHBvcnQgeyBEcmF3UG9pbnRNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1wb2ludC1tb2RlJztcbmV4cG9ydCB7IERyYXdMaW5lU3RyaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctbGluZS1zdHJpbmctbW9kZSc7XG5leHBvcnQgeyBEcmF3UG9seWdvbk1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LXBvbHlnb24tbW9kZSc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZSc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICcuL2xpYi9kcmF3LWNpcmNsZS1ieS1kaWFtZXRlci1tb2RlJztcbmV4cG9ydCB7IERyYXdDaXJjbGVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJy4vbGliL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLW1vZGUnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSB9IGZyb20gJy4vbGliL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtbW9kZSc7XG5leHBvcnQgeyBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlIH0gZnJvbSAnLi9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlJztcbmV4cG9ydCB7IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlIH0gZnJvbSAnLi9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJy4vbGliL2RyYXctcG9seWdvbi1ieS1kcmFnZ2luZy1tb2RlJztcbmV4cG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJy4vbGliL3ZpZXctbW9kZSc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnLi9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJy4vbGliL21lYXN1cmUtYXJlYS1tb2RlJztcbmV4cG9ydCB7IE1lYXN1cmVBbmdsZU1vZGUgfSBmcm9tICcuL2xpYi9tZWFzdXJlLWFuZ2xlLW1vZGUnO1xuZXhwb3J0IHsgQ29tcG9zaXRlTW9kZSB9IGZyb20gJy4vbGliL2NvbXBvc2l0ZS1tb2RlJztcbmV4cG9ydCB7IFNuYXBwYWJsZU1vZGUgfSBmcm9tICcuL2xpYi9zbmFwcGFibGUtbW9kZSc7XG5cbi8vIEV4cGVyaW1lbnRhbFxuZXhwb3J0IHsgZGVmYXVsdCBhcyBfbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZSc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgU2NyZWVuQ29vcmRpbmF0ZXMsXG4gIEVkaXRBY3Rpb24sXG4gIFBpY2ssXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVmlld3BvcnQsXG4gIFRvb2x0aXAsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFBvc2l0aW9uLFxuICBQb2ludENvb3JkaW5hdGVzLFxuICBMaW5lU3RyaW5nQ29vcmRpbmF0ZXMsXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbiAgTXVsdGlQb2ludENvb3JkaW5hdGVzLFxuICBNdWx0aUxpbmVTdHJpbmdDb29yZGluYXRlcyxcbiAgTXVsdGlQb2x5Z29uQ29vcmRpbmF0ZXMsXG4gIEFueUNvb3JkaW5hdGVzLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgUG9seWdvbixcbiAgTXVsdGlQb2ludCxcbiAgTXVsdGlMaW5lU3RyaW5nLFxuICBNdWx0aVBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uYWwsXG4gIEJvdW5kaW5nQm94QXJyYXksXG4gIEZlYXR1cmVPZixcbiAgRmVhdHVyZVdpdGhQcm9wcyxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEFueUdlb0pzb24sXG59IGZyb20gJy4vZ2VvanNvbi10eXBlcyc7XG5cbi8vIFV0aWxzXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IHV0aWxzIH07XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/composite-mode.js b/modules/edit-modes/dist/lib/composite-mode.js new file mode 100644 index 000000000..6bf77b99e --- /dev/null +++ b/modules/edit-modes/dist/lib/composite-mode.js @@ -0,0 +1,150 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompositeMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 CompositeMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(CompositeMode, _GeoJsonEditMode); + + var _super = _createSuper(CompositeMode); + + function CompositeMode(modes) { + var _this; + + _classCallCheck(this, CompositeMode); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_modes", void 0); + + _this._modes = modes; + return _this; + } + + _createClass(CompositeMode, [{ + key: "_coalesce", + value: function _coalesce(callback) { + var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var result; + + for (var i = 0; i < this._modes.length; i++) { + result = callback(this._modes[i]); + + if (resultEval ? resultEval(result) : result) { + break; + } + } + + return result; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + this._coalesce(function (handler) { + return handler.handleClick(event, props); + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + return this._coalesce(function (handler) { + return handler.handlePointerMove(event, props); + }); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleStartDragging(event, props); + }); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleStopDragging(event, props); + }); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + return this._coalesce(function (handler) { + return handler.handleDragging(event, props); + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + // TODO: Combine the guides *BUT* make sure if none of the results have + // changed to return the same object so that "guides !== this.state.guides" + // in editable-geojson-layer works. + var allGuides = []; + + var _iterator = _createForOfIteratorHelper(this._modes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var mode = _step.value; + allGuides.push.apply(allGuides, _toConsumableArray(mode.getGuides(props).features)); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + type: 'FeatureCollection', + features: allGuides + }; + } + }]); + + return CompositeMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.CompositeMode = CompositeMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9zaXRlLW1vZGUudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZSIsIm1vZGVzIiwiX21vZGVzIiwiY2FsbGJhY2siLCJyZXN1bHRFdmFsIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsImV2ZW50IiwicHJvcHMiLCJfY29hbGVzY2UiLCJoYW5kbGVyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVEcmFnZ2luZyIsImFsbEd1aWRlcyIsIm1vZGUiLCJwdXNoIiwiZ2V0R3VpZGVzIiwiZmVhdHVyZXMiLCJ0eXBlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFHWCx5QkFBWUMsS0FBWixFQUEyQztBQUFBOztBQUFBOztBQUN6Qzs7QUFEeUM7O0FBRXpDLFVBQUtDLE1BQUwsR0FBY0QsS0FBZDtBQUZ5QztBQUcxQzs7Ozs4QkFHQ0UsUSxFQUVHO0FBQUEsVUFESEMsVUFDRyx1RUFEbUQsSUFDbkQ7QUFDSCxVQUFJQyxNQUFKOztBQUVBLFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLSixNQUFMLENBQVlLLE1BQWhDLEVBQXdDRCxDQUFDLEVBQXpDLEVBQTZDO0FBQzNDRCxRQUFBQSxNQUFNLEdBQUdGLFFBQVEsQ0FBQyxLQUFLRCxNQUFMLENBQVlJLENBQVosQ0FBRCxDQUFqQjs7QUFDQSxZQUFJRixVQUFVLEdBQUdBLFVBQVUsQ0FBQ0MsTUFBRCxDQUFiLEdBQXdCQSxNQUF0QyxFQUE4QztBQUM1QztBQUNEO0FBQ0Y7O0FBRUQsYUFBT0EsTUFBUDtBQUNEOzs7Z0NBRVdHLEssRUFBbUJDLEssRUFBMkM7QUFDeEUsV0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0JKLEtBQXBCLEVBQTJCQyxLQUEzQixDQUFiO0FBQUEsT0FBZjtBQUNEOzs7c0NBRWlCRCxLLEVBQXlCQyxLLEVBQTJDO0FBQ3BGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNFLGlCQUFSLENBQTBCTCxLQUExQixFQUFpQ0MsS0FBakMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNHLG1CQUFSLENBQTRCTixLQUE1QixFQUFtQ0MsS0FBbkMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7dUNBRWtCRCxLLEVBQTBCQyxLLEVBQTJDO0FBQ3RGLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNJLGtCQUFSLENBQTJCUCxLQUEzQixFQUFrQ0MsS0FBbEMsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7bUNBRWNELEssRUFBc0JDLEssRUFBMkM7QUFDOUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0ssY0FBUixDQUF1QlIsS0FBdkIsRUFBOEJDLEtBQTlCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzhCQUVTQSxLLEVBQTZEO0FBQ3JFO0FBQ0E7QUFDQTtBQUVBLFVBQU1RLFNBQVMsR0FBRyxFQUFsQjs7QUFMcUUsaURBTWxELEtBQUtmLE1BTjZDO0FBQUE7O0FBQUE7QUFNckUsNERBQWdDO0FBQUEsY0FBckJnQixJQUFxQjtBQUM5QkQsVUFBQUEsU0FBUyxDQUFDRSxJQUFWLE9BQUFGLFNBQVMscUJBQVNDLElBQUksQ0FBQ0UsU0FBTCxDQUFlWCxLQUFmLEVBQXNCWSxRQUEvQixFQUFUO0FBQ0Q7QUFSb0U7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFVckUsYUFBTztBQUNMQyxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTEQsUUFBQUEsUUFBUSxFQUFFSjtBQUZMLE9BQVA7QUFJRDs7OztFQTFEZ0NNLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX21vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKG1vZGVzOiBBcnJheTxHZW9Kc29uRWRpdE1vZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9tb2RlcyA9IG1vZGVzO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogR2VvSnNvbkVkaXRNb2RlKSA9PiBULFxuICAgIHJlc3VsdEV2YWw6IChhcmcwOiBUKSA9PiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGxcbiAgKTogVCB7XG4gICAgbGV0IHJlc3VsdDogVDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbW9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMuX21vZGVzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICAvLyBUT0RPOiBDb21iaW5lIHRoZSBndWlkZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZ3VpZGVzICE9PSB0aGlzLnN0YXRlLmd1aWRlc1wiXG4gICAgLy8gaW4gZWRpdGFibGUtZ2VvanNvbi1sYXllciB3b3Jrcy5cblxuICAgIGNvbnN0IGFsbEd1aWRlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiB0aGlzLl9tb2Rlcykge1xuICAgICAgYWxsR3VpZGVzLnB1c2goLi4ubW9kZS5nZXRHdWlkZXMocHJvcHMpLmZlYXR1cmVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBhbGxHdWlkZXMsXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-90degree-polygon-mode.js b/modules/edit-modes/dist/lib/draw-90degree-polygon-mode.js new file mode 100644 index 000000000..d067ac0cd --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-90degree-polygon-mode.js @@ -0,0 +1,284 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Draw90DegreePolygonMode = void 0; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var Draw90DegreePolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(Draw90DegreePolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(Draw90DegreePolygonMode); + + function Draw90DegreePolygonMode() { + _classCallCheck(this, Draw90DegreePolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(Draw90DegreePolygonMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var clickSequence = this.getClickSequence(); + var mapCoords = props.lastPointerMoveEvent.mapCoords; + var p3; + + if (clickSequence.length === 1) { + p3 = mapCoords; + } else { + var p1 = clickSequence[clickSequence.length - 2]; + var p2 = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, mapCoords); + + var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1); + + p3 = _generatePointsParall2[0]; + } + + var tentativeFeature; + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [p3]) + } + }; + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])] + } + }; + } + + return tentativeFeature; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0 || !props.lastPointerMoveEvent) { + return guides; + } + + var tentativeFeature = this.createTentativeFeature(props); + guides.features.push(tentativeFeature); + guides.features = guides.features.concat((0, _utils.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + guides.features = guides.features.slice(0, -1); + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(Draw90DegreePolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var tentativeFeature = this.getTentativeGuide(props); + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); + + if (!tentativeFeature) { + // nothing else to do + return; + } + + if (clickSequence.length === 3 && tentativeFeature.geometry.type === 'LineString') { + var lineString = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon + + clickSequence[clickSequence.length - 1] = lineString.coordinates[lineString.coordinates.length - 1]; + } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; // Tweak the clicked position to be the snapped 90 degree point along the polygon + + clickSequence[clickSequence.length - 1] = polygon.coordinates[0][polygon.coordinates[0].length - 2]; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + + if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + var polygonToAdd = { + type: 'Polygon', + coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0])) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + mapCoords: event.mapCoords, + picks: [], + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + cancelPan: function cancelPan() {}, + sourceEvent: null + }; + this.handlePointerMove(fakePointerMoveEvent, props); + } + }, { + key: "finalizedCoordinates", + value: function finalizedCoordinates(coords) { + // Remove the hovered position + var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])]; + var pt = this.getIntermediatePoint(_toConsumableArray(coords)); + + if (!pt) { + // if intermediate point with 90 degree not available + // try remove the last clicked point and get the intermediate point. + var tc = _toConsumableArray(coords); + + tc.splice(-3, 1); + pt = this.getIntermediatePoint(_toConsumableArray(tc)); + + if (pt) { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])]; + } + } else { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])]; + } + + return coordinates; + } + }, { + key: "getIntermediatePoint", + value: function getIntermediatePoint(coordinates) { + var pt; + + if (coordinates.length > 4) { + var _ref = _toConsumableArray(coordinates), + p1 = _ref[0], + p2 = _ref[1]; + + var angle1 = (0, _bearing["default"])(p1, p2); + var p3 = coordinates[coordinates.length - 3]; + var p4 = coordinates[coordinates.length - 4]; + var angle2 = (0, _bearing["default"])(p3, p4); + var angles = { + first: [], + second: [] + }; // calculate 3 right angle points for first and last points in lineString + + [1, 2, 3].forEach(function (factor) { + var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise + + angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1); + var newAngle2 = angle2 + factor * 90; + angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2); + }); + var distance = (0, _distance["default"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString + // If there is intersection point for any 2 lines, will be the 90 degree point. + + [0, 1, 2].forEach(function (indexFirst) { + var line1 = (0, _helpers.lineString)([p1, (0, _destination["default"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]); + [0, 1, 2].forEach(function (indexSecond) { + var line2 = (0, _helpers.lineString)([p3, (0, _destination["default"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]); + var fc = (0, _lineIntersect["default"])(line1, line2); + + if (fc && fc.features.length) { + // found the intersect point + pt = fc.features[0].geometry.coordinates; + } + }); + }); + } + + return pt; + } + }]); + + return Draw90DegreePolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.Draw90DegreePolygonMode = Draw90DegreePolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy05MGRlZ3JlZS1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhdzkwRGVncmVlUG9seWdvbk1vZGUiLCJwcm9wcyIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwMyIsImxlbmd0aCIsInAxIiwicDIiLCJ0ZW50YXRpdmVGZWF0dXJlIiwidHlwZSIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ3VpZGVzIiwiZmVhdHVyZXMiLCJjcmVhdGVUZW50YXRpdmVGZWF0dXJlIiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsInBpY2tzIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJhZGRDbGlja1NlcXVlbmNlIiwibGluZVN0cmluZyIsInBvbHlnb24iLCJjbGlja2VkRWRpdEhhbmRsZSIsIkFycmF5IiwiaXNBcnJheSIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwib25FZGl0IiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImNhbmNlbFBhbiIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsIm5ld0FuZ2xlMiIsImRpc3RhbmNlIiwiaW5kZXhGaXJzdCIsImxpbmUxIiwiaW5kZXhTZWNvbmQiLCJsaW5lMiIsImZjIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFhQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHVCOzs7Ozs7Ozs7Ozs7OzJDQUNZQyxLLEVBQXVEO0FBQzVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUQ0RSxVQUdwRUMsU0FIb0UsR0FHdERILEtBQUssQ0FBQ0ksb0JBSGdELENBR3BFRCxTQUhvRTtBQUs1RSxVQUFJRSxFQUFKOztBQUNBLFVBQUlKLGFBQWEsQ0FBQ0ssTUFBZCxLQUF5QixDQUE3QixFQUFnQztBQUM5QkQsUUFBQUEsRUFBRSxHQUFHRixTQUFMO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsWUFBTUksRUFBRSxHQUFHTixhQUFhLENBQUNBLGFBQWEsQ0FBQ0ssTUFBZCxHQUF1QixDQUF4QixDQUF4QjtBQUNBLFlBQU1FLEVBQUUsR0FBR1AsYUFBYSxDQUFDQSxhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBeEIsQ0FBeEI7O0FBRkssb0NBR0UsK0NBQW1DQyxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNMLFNBQTNDLENBSEY7O0FBQUE7O0FBR0pFLFFBQUFBLEVBSEk7QUFJTjs7QUFFRCxVQUFJSSxnQkFBSjs7QUFFQSxVQUFJUixhQUFhLENBQUNLLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUI7QUFDQUcsUUFBQUEsZ0JBQWdCLEdBQUc7QUFDakJDLFVBQUFBLElBQUksRUFBRSxTQURXO0FBRWpCQyxVQUFBQSxVQUFVLEVBQUU7QUFDVkMsWUFBQUEsU0FBUyxFQUFFO0FBREQsV0FGSztBQUtqQkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JILFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJJLFlB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QUFRLEdBQUcsMEJBQWEsb0JBQU10RCxFQUFOLENBQWIsRUFBd0Isb0JBQU1GLEVBQU4sQ0FBeEIsQ0FBakIsQ0FqQjBCLENBa0IxQjtBQUNBOztBQUNBLFNBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVVvRCxPQUFWLENBQWtCLFVBQUNLLFVBQUQsRUFBZ0I7QUFDaEMsY0FBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCeEQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0JzRCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDQyxLQUFQLENBQWFPLFVBQWIsQ0FBMUIsRUFBb0RqRCxRQUFwRCxDQUE2REMsV0FGbEMsQ0FBZixDQUFkO0FBSUEsV0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVTJDLE9BQVYsQ0FBa0IsVUFBQ08sV0FBRCxFQUFpQjtBQUNqQyxnQkFBTUMsS0FBSyxHQUFHLHlCQUFlLENBQzNCNUQsRUFEMkIsRUFFM0IsNkJBQVlBLEVBQVosRUFBZ0J3RCxRQUFoQixFQUEwQlAsTUFBTSxDQUFDRSxNQUFQLENBQWNRLFdBQWQsQ0FBMUIsRUFBc0RuRCxRQUF0RCxDQUErREMsV0FGcEMsQ0FBZixDQUFkO0FBSUEsZ0JBQU1vRCxFQUFFLEdBQUcsK0JBQWNILEtBQWQsRUFBcUJFLEtBQXJCLENBQVg7O0FBQ0EsZ0JBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDbEQsUUFBSCxDQUFZVixNQUF0QixFQUE4QjtBQUM1QjtBQUNBeUMsY0FBQUEsRUFBRSxHQUFHbUIsRUFBRSxDQUFDbEQsUUFBSCxDQUFZLENBQVosRUFBZUgsUUFBZixDQUF3QkMsV0FBN0I7QUFDRDtBQUNGLFdBVkQ7QUFXRCxTQWhCRDtBQWlCRDs7QUFDRCxhQUFPaUMsRUFBUDtBQUNEOzs7O0VBdE0wQ29CLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0dXJmTGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBMaW5lU3RyaW5nLCBQb3NpdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgZXh0ZW5kcyBHZW9Kc29uRWRpdE1vZGUge1xuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgeyBtYXBDb29yZHMgfSA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgbGV0IHAzO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcDMgPSBtYXBDb29yZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHAxID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgcDIgPSBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMV07XG4gICAgICBbcDNdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhwMSwgcDIsIG1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgbGV0IHRlbnRhdGl2ZUZlYXR1cmU7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPCAzKSB7XG4gICAgICAvLyBEcmF3IGEgTGluZVN0cmluZyBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCBwM10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDAgfHwgIXByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50KSB7XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5jcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuXG4gICAgZ3VpZGVzLmZlYXR1cmVzID0gZ3VpZGVzLmZlYXR1cmVzLmNvbmNhdChcbiAgICAgIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkodGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgLTEpXG4gICAgKTtcblxuICAgIC8vIFNsaWNlIG9mZiB0aGUgaGFuZGxlcyB0aGF0IGFyZSBhcmUgbmV4dCB0byB0aGUgcG9pbnRlclxuICAgIGd1aWRlcy5mZWF0dXJlcyA9IGd1aWRlcy5mZWF0dXJlcy5zbGljZSgwLCAtMSk7XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKCF0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICAvLyBub3RoaW5nIGVsc2UgdG8gZG9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDMgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICAvLyBUd2VhayB0aGUgY2xpY2tlZCBwb3NpdGlvbiB0byBiZSB0aGUgc25hcHBlZCA5MCBkZWdyZWUgcG9pbnQgYWxvbmcgdGhlIHBvbHlnb25cbiAgICAgIGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSA9XG4gICAgICAgIGxpbmVTdHJpbmcuY29vcmRpbmF0ZXNbbGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGggLSAxXTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMyAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIC8vIFR3ZWFrIHRoZSBjbGlja2VkIHBvc2l0aW9uIHRvIGJlIHRoZSBzbmFwcGVkIDkwIGRlZ3JlZSBwb2ludCBhbG9uZyB0aGUgcG9seWdvblxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgcG9seWdvbi5jb29yZGluYXRlc1swXVtwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDJdO1xuXG4gICAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAgIChjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKHBvbHlnb25Ub0FkZCwgcHJvcHMpO1xuICAgICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50OiBQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIG1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICBjYW5jZWxQYW46ICgpID0+IHt9LFxuICAgICAgc291cmNlRXZlbnQ6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGZpbmFsaXplZENvb3JkaW5hdGVzKGNvb3JkczogUG9zaXRpb25bXSkge1xuICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgIGxldCBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgY29vcmRzWzBdXV07XG4gICAgbGV0IHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4uY29vcmRzXSk7XG4gICAgaWYgKCFwdCkge1xuICAgICAgLy8gaWYgaW50ZXJtZWRpYXRlIHBvaW50IHdpdGggOTAgZGVncmVlIG5vdCBhdmFpbGFibGVcbiAgICAgIC8vIHRyeSByZW1vdmUgdGhlIGxhc3QgY2xpY2tlZCBwb2ludCBhbmQgZ2V0IHRoZSBpbnRlcm1lZGlhdGUgcG9pbnQuXG4gICAgICBjb25zdCB0YyA9IFsuLi5jb29yZHNdO1xuICAgICAgdGMuc3BsaWNlKC0zLCAxKTtcbiAgICAgIHB0ID0gdGhpcy5nZXRJbnRlcm1lZGlhdGVQb2ludChbLi4udGNdKTtcbiAgICAgIGlmIChwdCkge1xuICAgICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0zKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb29yZGluYXRlcyA9IFtbLi4uY29vcmRzLnNsaWNlKDAsIC0yKSwgcHQsIGNvb3Jkc1swXV1dO1xuICAgIH1cbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cblxuICBnZXRJbnRlcm1lZGlhdGVQb2ludChjb29yZGluYXRlczogUG9zaXRpb25bXSkge1xuICAgIGxldCBwdDtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID4gNCkge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBbLi4uY29vcmRpbmF0ZXNdO1xuICAgICAgY29uc3QgYW5nbGUxID0gYmVhcmluZyhwMSwgcDIpO1xuICAgICAgY29uc3QgcDMgPSBjb29yZGluYXRlc1tjb29yZGluYXRlcy5sZW5ndGggLSAzXTtcbiAgICAgIGNvbnN0IHA0ID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gNF07XG4gICAgICBjb25zdCBhbmdsZTIgPSBiZWFyaW5nKHAzLCBwNCk7XG5cbiAgICAgIGNvbnN0IGFuZ2xlcyA9IHsgZmlyc3Q6IFtdLCBzZWNvbmQ6IFtdIH07XG4gICAgICAvLyBjYWxjdWxhdGUgMyByaWdodCBhbmdsZSBwb2ludHMgZm9yIGZpcnN0IGFuZCBsYXN0IHBvaW50cyBpbiBsaW5lU3RyaW5nXG4gICAgICBbMSwgMiwgM10uZm9yRWFjaCgoZmFjdG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMSA9IGFuZ2xlMSArIGZhY3RvciAqIDkwO1xuICAgICAgICAvLyBjb252ZXJ0IGFuZ2xlcyB0byAwIHRvIC0xODAgZm9yIGFudGktY2xvY2sgYW5kIDAgdG8gMTgwIGZvciBjbG9jayB3aXNlXG4gICAgICAgIGFuZ2xlcy5maXJzdC5wdXNoKG5ld0FuZ2xlMSA+IDE4MCA/IG5ld0FuZ2xlMSAtIDM2MCA6IG5ld0FuZ2xlMSk7XG4gICAgICAgIGNvbnN0IG5ld0FuZ2xlMiA9IGFuZ2xlMiArIGZhY3RvciAqIDkwO1xuICAgICAgICBhbmdsZXMuc2Vjb25kLnB1c2gobmV3QW5nbGUyID4gMTgwID8gbmV3QW5nbGUyIC0gMzYwIDogbmV3QW5nbGUyKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb2ludChwMSksIHBvaW50KHAzKSk7XG4gICAgICAvLyBEcmF3IGltYWdpbmFyeSByaWdodCBhbmdsZSBsaW5lcyBmb3IgYm90aCBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgLy8gSWYgdGhlcmUgaXMgaW50ZXJzZWN0aW9uIHBvaW50IGZvciBhbnkgMiBsaW5lcywgd2lsbCBiZSB0aGUgOTAgZGVncmVlIHBvaW50LlxuICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4Rmlyc3QpID0+IHtcbiAgICAgICAgY29uc3QgbGluZTEgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSB0dXJmTGluZVN0cmluZyhbXG4gICAgICAgICAgICBwMyxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uKHAzLCBkaXN0YW5jZSwgYW5nbGVzLnNlY29uZFtpbmRleFNlY29uZF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGNvbnN0IGZjID0gbGluZUludGVyc2VjdChsaW5lMSwgbGluZTIpO1xuICAgICAgICAgIGlmIChmYyAmJiBmYy5mZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGZvdW5kIHRoZSBpbnRlcnNlY3QgcG9pbnRcbiAgICAgICAgICAgIHB0ID0gZmMuZmVhdHVyZXNbMF0uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcHQ7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-circle-by-diameter-mode.js b/modules/edit-modes/dist/lib/draw-circle-by-diameter-mode.js new file mode 100644 index 000000000..944111619 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-circle-by-diameter-mode.js @@ -0,0 +1,82 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleByDiameterMode = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawCircleByDiameterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawCircleByDiameterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawCircleByDiameterMode); + + function DrawCircleByDiameterMode() { + _classCallCheck(this, DrawCircleByDiameterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleByDiameterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // Default turf value for circle is 64 + var _ref = modeConfig || {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? 64 : _ref$steps; + + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var radius = Math.max((0, _distance["default"])(coord1, centerCoordinates), 0.001); + var geometry = (0, _circle["default"])(centerCoordinates, radius, options); + geometry.properties = geometry.properties || {}; + geometry.properties.shape = 'Circle'; + return geometry; + } + }]); + + return DrawCircleByDiameterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawCircleByDiameterMode = DrawCircleByDiameterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtYnktZGlhbWV0ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJjZW50ZXJDb29yZGluYXRlcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlR3b0NsaWNrUG9seWdvbk1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsd0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLE0sRUFBa0JDLE0sRUFBa0JDLFUsRUFBcUM7QUFDMUY7QUFEMEYsaUJBRW5FQSxVQUFVLElBQUksRUFGcUQ7QUFBQSw0QkFFbEZDLEtBRmtGO0FBQUEsVUFFbEZBLEtBRmtGLDJCQUUxRSxFQUYwRTs7QUFHMUYsVUFBTUMsT0FBTyxHQUFHO0FBQUVELFFBQUFBLEtBQUssRUFBTEE7QUFBRixPQUFoQjs7QUFFQSxVQUFJQSxLQUFLLEdBQUcsQ0FBWixFQUFlO0FBQ2JFLFFBQUFBLE9BQU8sQ0FBQ0MsSUFBUix5Q0FEYSxDQUN5Qzs7QUFDdERGLFFBQUFBLE9BQU8sQ0FBQ0QsS0FBUixHQUFnQixDQUFoQjtBQUNEOztBQUVELFVBQU1JLGlCQUFpQixHQUFHLDhDQUF3QlAsTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTU8sTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU1YsTUFBVCxFQUFpQk8saUJBQWpCLENBQVQsRUFBOEMsS0FBOUMsQ0FBZjtBQUVBLFVBQU1JLFFBQVEsR0FBRyx3QkFBT0osaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUFqQjtBQUVBTyxNQUFBQSxRQUFRLENBQUNDLFVBQVQsR0FBc0JELFFBQVEsQ0FBQ0MsVUFBVCxJQUF1QixFQUE3QztBQUNBRCxNQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0JDLEtBQXBCLEdBQTRCLFFBQTVCO0FBRUEsYUFBT0YsUUFBUDtBQUNEOzs7O0VBcEIyQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY2VudGVyQ29vcmRpbmF0ZXMpLCAwLjAwMSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeSA9IGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-circle-from-center-mode.js b/modules/edit-modes/dist/lib/draw-circle-from-center-mode.js new file mode 100644 index 000000000..4121759a1 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-circle-from-center-mode.js @@ -0,0 +1,79 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleFromCenterMode = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawCircleFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawCircleFromCenterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawCircleFromCenterMode); + + function DrawCircleFromCenterMode() { + _classCallCheck(this, DrawCircleFromCenterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleFromCenterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // Default turf value for circle is 64 + var _ref = modeConfig || {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? 64 : _ref$steps; + + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var radius = Math.max((0, _distance["default"])(coord1, coord2), 0.001); + var geometry = (0, _circle["default"])(coord1, radius, options); + geometry.properties = geometry.properties || {}; + geometry.properties.shape = 'Circle'; + return geometry; + } + }]); + + return DrawCircleFromCenterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawCircleFromCenterMode = DrawCircleFromCenterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1jaXJjbGUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwic3RlcHMiLCJvcHRpb25zIiwiY29uc29sZSIsIndhcm4iLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ2VvbWV0cnkiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBRDBGLGlCQUVuRUEsVUFBVSxJQUFJLEVBRnFEO0FBQUEsNEJBRWxGQyxLQUZrRjtBQUFBLFVBRWxGQSxLQUZrRiwyQkFFMUUsRUFGMEU7O0FBRzFGLFVBQU1DLE9BQU8sR0FBRztBQUFFRCxRQUFBQSxLQUFLLEVBQUxBO0FBQUYsT0FBaEI7O0FBRUEsVUFBSUEsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiRSxRQUFBQSxPQUFPLENBQUNDLElBQVIseUNBRGEsQ0FDeUM7O0FBQ3RERixRQUFBQSxPQUFPLENBQUNELEtBQVIsR0FBZ0IsQ0FBaEI7QUFDRDs7QUFFRCxVQUFNSSxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTVCxNQUFULEVBQWlCQyxNQUFqQixDQUFULEVBQW1DLEtBQW5DLENBQWY7QUFDQSxVQUFNUyxRQUFRLEdBQUcsd0JBQU9WLE1BQVAsRUFBZU8sTUFBZixFQUF1QkgsT0FBdkIsQ0FBakI7QUFFQU0sTUFBQUEsUUFBUSxDQUFDQyxVQUFULEdBQXNCRCxRQUFRLENBQUNDLFVBQVQsSUFBdUIsRUFBN0M7QUFDQUQsTUFBQUEsUUFBUSxDQUFDQyxVQUFULENBQW9CQyxLQUFwQixHQUE0QixRQUE1QjtBQUVBLGFBQU9GLFFBQVA7QUFDRDs7OztFQWxCMkNHLHdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNpcmNsZSBmcm9tICdAdHVyZi9jaXJjbGUnO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFR3b0NsaWNrUG9seWdvbihjb29yZDE6IFBvc2l0aW9uLCBjb29yZDI6IFBvc2l0aW9uLCBtb2RlQ29uZmlnOiBhbnkpOiBGZWF0dXJlT2Y8UG9seWdvbj4ge1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNvb3JkMSwgY29vcmQyKSwgMC4wMDEpO1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gY2lyY2xlKGNvb3JkMSwgcmFkaXVzLCBvcHRpb25zKTtcblxuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMgPSBnZW9tZXRyeS5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIGdlb21ldHJ5LnByb3BlcnRpZXMuc2hhcGUgPSAnQ2lyY2xlJztcblxuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-ellipse-by-bounding-box-mode.js b/modules/edit-modes/dist/lib/draw-ellipse-by-bounding-box-mode.js new file mode 100644 index 000000000..7cffd0b50 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-ellipse-by-bounding-box-mode.js @@ -0,0 +1,75 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseByBoundingBoxMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawEllipseByBoundingBoxMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawEllipseByBoundingBoxMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawEllipseByBoundingBoxMode); + + function DrawEllipseByBoundingBoxMode() { + _classCallCheck(this, DrawEllipseByBoundingBoxMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseByBoundingBoxMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + var minX = Math.min(coord1[0], coord2[0]); + var minY = Math.min(coord1[1], coord2[1]); + var maxX = Math.max(coord1[0], coord2[0]); + var maxY = Math.max(coord1[1], coord2[1]); + var polygonPoints = (0, _bboxPolygon["default"])([minX, minY, maxX, maxY]).geometry.coordinates[0]; + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var xSemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore + + return (0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis); + } + }]); + + return DrawEllipseByBoundingBoxMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawEllipseByBoundingBoxMode = DrawEllipseByBoundingBoxMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLWJ5LWJvdW5kaW5nLWJveC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwibWluWCIsIk1hdGgiLCJtaW4iLCJtaW5ZIiwibWF4WCIsIm1heCIsIm1heFkiLCJwb2x5Z29uUG9pbnRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwieVNlbWlBeGlzIiwiVHdvQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSw0Qjs7Ozs7Ozs7Ozs7Ozt1Q0FDUUMsTSxFQUFrQkMsTSxFQUFrQkMsVSxFQUFxQztBQUMxRixVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBQ0EsVUFBTUssSUFBSSxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBU0wsTUFBTSxDQUFDLENBQUQsQ0FBZixFQUFvQkMsTUFBTSxDQUFDLENBQUQsQ0FBMUIsQ0FBYjtBQUNBLFVBQU1NLElBQUksR0FBR0gsSUFBSSxDQUFDSSxHQUFMLENBQVNSLE1BQU0sQ0FBQyxDQUFELENBQWYsRUFBb0JDLE1BQU0sQ0FBQyxDQUFELENBQTFCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixNQUFNLENBQUMsQ0FBRCxDQUFmLEVBQW9CQyxNQUFNLENBQUMsQ0FBRCxDQUExQixDQUFiO0FBRUEsVUFBTVMsYUFBYSxHQUFHLDZCQUFZLENBQUNQLElBQUQsRUFBT0csSUFBUCxFQUFhQyxJQUFiLEVBQW1CRSxJQUFuQixDQUFaLEVBQXNDRSxRQUF0QyxDQUErQ0MsV0FBL0MsQ0FBMkQsQ0FBM0QsQ0FBdEI7QUFDQSxVQUFNQyxpQkFBaUIsR0FBRyw4Q0FBd0JiLE1BQXhCLEVBQWdDQyxNQUFoQyxDQUExQjtBQUVBLFVBQU1hLFNBQVMsR0FBR1YsSUFBSSxDQUFDSSxHQUFMLENBQVMsMEJBQVMsb0JBQU1FLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQVQsRUFBa0Msb0JBQU1BLGFBQWEsQ0FBQyxDQUFELENBQW5CLENBQWxDLENBQVQsRUFBcUUsS0FBckUsQ0FBbEI7QUFDQSxVQUFNSyxTQUFTLEdBQUdYLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCLENBVjBGLENBWTFGOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0MsU0FBdEMsQ0FBUDtBQUNEOzs7O0VBZitDQyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgbWluWCA9IE1hdGgubWluKGNvb3JkMVswXSwgY29vcmQyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29vcmQxWzFdLCBjb29yZDJbMV0pO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChjb29yZDFbMF0sIGNvb3JkMlswXSk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KGNvb3JkMVsxXSwgY29vcmQyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29vcmQxLCBjb29yZDIpO1xuXG4gICAgY29uc3QgeFNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbMV0pKSwgMC4wMDEpO1xuICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHBvaW50KHBvbHlnb25Qb2ludHNbMF0pLCBwb2ludChwb2x5Z29uUG9pbnRzWzNdKSksIDAuMDAxKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZWxsaXBzZShjZW50ZXJDb29yZGluYXRlcywgeFNlbWlBeGlzLCB5U2VtaUF4aXMpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-ellipse-using-three-points-mode.js b/modules/edit-modes/dist/lib/draw-ellipse-using-three-points-mode.js new file mode 100644 index 000000000..deb772726 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-ellipse-using-three-points-mode.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseUsingThreePointsMode = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _threeClickPolygonMode = require("./three-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawEllipseUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) { + _inherits(DrawEllipseUsingThreePointsMode, _ThreeClickPolygonMod); + + var _super = _createSuper(DrawEllipseUsingThreePointsMode); + + function DrawEllipseUsingThreePointsMode() { + _classCallCheck(this, DrawEllipseUsingThreePointsMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseUsingThreePointsMode, [{ + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + var centerCoordinates = (0, _geojsonEditMode.getIntermediatePosition)(coord1, coord2); + var xSemiAxis = Math.max((0, _distance["default"])(centerCoordinates, (0, _helpers.point)(coord3)), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])(coord1, coord2), 0.001) / 2; + var options = { + angle: (0, _bearing["default"])(coord1, coord2) + }; // @ts-ignore + + return (0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis, options); + } + }]); + + return DrawEllipseUsingThreePointsMode; +}(_threeClickPolygonMode.ThreeClickPolygonMode); + +exports.DrawEllipseUsingThreePointsMode = DrawEllipseUsingThreePointsMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1lbGxpcHNlLXVzaW5nLXRocmVlLXBvaW50cy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJtb2RlQ29uZmlnIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJ4U2VtaUF4aXMiLCJNYXRoIiwibWF4IiwieVNlbWlBeGlzIiwib3B0aW9ucyIsImFuZ2xlIiwiVGhyZWVDbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLCtCOzs7Ozs7Ozs7Ozs7O3lDQUVUQyxNLEVBQ0FDLE0sRUFDQUMsTSxFQUNBQyxVLEVBQ3VDO0FBQ3ZDLFVBQU1DLGlCQUFpQixHQUFHLDhDQUF3QkosTUFBeEIsRUFBZ0NDLE1BQWhDLENBQTFCO0FBQ0EsVUFBTUksU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEIsb0JBQU1GLE1BQU4sQ0FBNUIsQ0FBVCxFQUFxRCxLQUFyRCxDQUFsQjtBQUNBLFVBQU1NLFNBQVMsR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVMsMEJBQVNQLE1BQVQsRUFBaUJDLE1BQWpCLENBQVQsRUFBbUMsS0FBbkMsSUFBNEMsQ0FBOUQ7QUFDQSxVQUFNUSxPQUFPLEdBQUc7QUFBRUMsUUFBQUEsS0FBSyxFQUFFLHlCQUFRVixNQUFSLEVBQWdCQyxNQUFoQjtBQUFULE9BQWhCLENBSnVDLENBS3ZDOztBQUNBLGFBQU8seUJBQVFHLGlCQUFSLEVBQTJCQyxTQUEzQixFQUFzQ0csU0FBdEMsRUFBaURDLE9BQWpELENBQVA7QUFDRDs7OztFQWJrREUsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IGVsbGlwc2UgZnJvbSAnQHR1cmYvZWxsaXBzZSc7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uTW9kZSB7XG4gIGdldFRocmVlQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBjb29yZDM6IFBvc2l0aW9uLFxuICAgIG1vZGVDb25maWc6IGFueVxuICApOiBGZWF0dXJlT2Y8UG9seWdvbj4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGNvb3JkMSwgY29vcmQyKTtcbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoY29vcmQzKSksIDAuMDAxKTtcbiAgICBjb25zdCB5U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjb29yZDEsIGNvb3JkMiksIDAuMDAxKSAvIDI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYW5nbGU6IGJlYXJpbmcoY29vcmQxLCBjb29yZDIpIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbGxpcHNlKGNlbnRlckNvb3JkaW5hdGVzLCB4U2VtaUF4aXMsIHlTZW1pQXhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-line-string-mode.js b/modules/edit-modes/dist/lib/draw-line-string-mode.js new file mode 100644 index 000000000..f9ed127f2 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-line-string-mode.js @@ -0,0 +1,181 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawLineStringMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawLineStringMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawLineStringMode); + + function DrawLineStringMode() { + _classCallCheck(this, DrawLineStringMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawLineStringMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) { + // They clicked the last point (or double-clicked), so add the LineString + var lineStringToAdd = { + type: 'LineString', + coordinates: _toConsumableArray(clickSequence) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureAction(lineStringToAdd, props.data); + + if (editAction) { + props.onEdit(editAction); + } + } else if (positionAdded) { + // new tentative point + props.onEdit({ + // data is the same + updatedData: props.data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + var key = event.key; + + if (key === 'Enter') { + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1) { + var lineStringToAdd = { + type: 'LineString', + coordinates: _toConsumableArray(clickSequence) + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureAction(lineStringToAdd, props.data); + + if (editAction) { + props.onEdit(editAction); + } + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var guides = { + type: 'FeatureCollection', + features: [] + }; + var tentativeFeature; + + if (clickSequence.length > 0) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }; + } + + if (tentativeFeature) { + guides.features.push(tentativeFeature); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }]); + + return DrawLineStringMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawLineStringMode = DrawLineStringMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1saW5lLXN0cmluZy1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdMaW5lU3RyaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJsaW5lU3RyaW5nVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImRhdGEiLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsImtleSIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsImd1aWRlcyIsImZlYXR1cmVzIiwidGVudGF0aXZlRmVhdHVyZSIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwicHVzaCIsImVkaXRIYW5kbGVzIiwibWFwIiwiY2xpY2tlZENvb3JkIiwiaW5kZXgiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxrQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUFBLFVBQzFEQyxLQUQwRCxHQUNoREYsS0FEZ0QsQ0FDMURFLEtBRDBEO0FBRWxFLFVBQU1DLGlCQUFpQixHQUFHLGdDQUFvQkQsS0FBcEIsQ0FBMUI7QUFFQSxVQUFJRSxhQUFhLEdBQUcsS0FBcEI7O0FBQ0EsVUFBSSxDQUFDRCxpQkFBTCxFQUF3QjtBQUN0QjtBQUNBLGFBQUtFLGdCQUFMLENBQXNCTCxLQUF0QjtBQUNBSSxRQUFBQSxhQUFhLEdBQUcsSUFBaEI7QUFDRDs7QUFDRCxVQUFNRSxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFDRUQsYUFBYSxDQUFDRSxNQUFkLEdBQXVCLENBQXZCLElBQ0FMLGlCQURBLElBRUFNLEtBQUssQ0FBQ0MsT0FBTixDQUFjUCxpQkFBaUIsQ0FBQ1EsVUFBbEIsQ0FBNkJDLGVBQTNDLENBRkEsSUFHQVQsaUJBQWlCLENBQUNRLFVBQWxCLENBQTZCQyxlQUE3QixDQUE2QyxDQUE3QyxNQUFvRE4sYUFBYSxDQUFDRSxNQUFkLEdBQXVCLENBSjdFLEVBS0U7QUFDQTtBQUVBLFlBQU1LLGVBQTJCLEdBQUc7QUFDbENDLFVBQUFBLElBQUksRUFBRSxZQUQ0QjtBQUVsQ0MsVUFBQUEsV0FBVyxxQkFBTVQsYUFBTjtBQUZ1QixTQUFwQztBQUtBLGFBQUtVLGtCQUFMO0FBRUEsWUFBTUMsVUFBVSxHQUFHLEtBQUtDLG1CQUFMLENBQXlCTCxlQUF6QixFQUEwQ1osS0FBSyxDQUFDa0IsSUFBaEQsQ0FBbkI7O0FBQ0EsWUFBSUYsVUFBSixFQUFnQjtBQUNkaEIsVUFBQUEsS0FBSyxDQUFDbUIsTUFBTixDQUFhSCxVQUFiO0FBQ0Q7QUFDRixPQW5CRCxNQW1CTyxJQUFJYixhQUFKLEVBQW1CO0FBQ3hCO0FBQ0FILFFBQUFBLEtBQUssQ0FBQ21CLE1BQU4sQ0FBYTtBQUNYO0FBQ0FDLFVBQUFBLFdBQVcsRUFBRXBCLEtBQUssQ0FBQ2tCLElBRlI7QUFHWEcsVUFBQUEsUUFBUSxFQUFFLHNCQUhDO0FBSVhDLFVBQUFBLFdBQVcsRUFBRTtBQUNYQyxZQUFBQSxRQUFRLEVBQUV4QixLQUFLLENBQUN5QjtBQURMO0FBSkYsU0FBYjtBQVFEO0FBQ0Y7OztnQ0FDV3pCLEssRUFBc0JDLEssRUFBcUM7QUFBQSxVQUM3RHlCLEdBRDZELEdBQ3JEMUIsS0FEcUQsQ0FDN0QwQixHQUQ2RDs7QUFFckUsVUFBSUEsR0FBRyxLQUFLLE9BQVosRUFBcUI7QUFDbkIsWUFBTXBCLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFDQSxZQUFJRCxhQUFhLENBQUNFLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUIsY0FBTUssZUFBMkIsR0FBRztBQUNsQ0MsWUFBQUEsSUFBSSxFQUFFLFlBRDRCO0FBRWxDQyxZQUFBQSxXQUFXLHFCQUFNVCxhQUFOO0FBRnVCLFdBQXBDO0FBSUEsZUFBS1Usa0JBQUw7QUFDQSxjQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUJBQUwsQ0FBeUJMLGVBQXpCLEVBQTBDWixLQUFLLENBQUNrQixJQUFoRCxDQUFuQjs7QUFDQSxjQUFJRixVQUFKLEVBQWdCO0FBQ2RoQixZQUFBQSxLQUFLLENBQUNtQixNQUFOLENBQWFILFVBQWI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7OzhCQUNTaEIsSyxFQUE2RDtBQUFBOztBQUFBLFVBQzdEMEIsb0JBRDZELEdBQ3BDMUIsS0FEb0MsQ0FDN0QwQixvQkFENkQ7QUFFckUsVUFBTXJCLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUVBLFVBQU1xQixVQUFVLEdBQUdELG9CQUFvQixHQUFHLENBQUNBLG9CQUFvQixDQUFDRixTQUF0QixDQUFILEdBQXNDLEVBQTdFO0FBRUEsVUFBTUksTUFBTSxHQUFHO0FBQ2JmLFFBQUFBLElBQUksRUFBRSxtQkFETztBQUViZ0IsUUFBQUEsUUFBUSxFQUFFO0FBRkcsT0FBZjtBQUtBLFVBQUlDLGdCQUFKOztBQUNBLFVBQUl6QixhQUFhLENBQUNFLE1BQWQsR0FBdUIsQ0FBM0IsRUFBOEI7QUFDNUJ1QixRQUFBQSxnQkFBZ0IsR0FBRztBQUNqQmpCLFVBQUFBLElBQUksRUFBRSxTQURXO0FBRWpCSCxVQUFBQSxVQUFVLEVBQUU7QUFDVnFCLFlBQUFBLFNBQVMsRUFBRTtBQURELFdBRks7QUFLakJDLFVBQUFBLFFBQVEsRUFBRTtBQUNSbkIsWUFBQUEsSUFBSSxFQUFFLFlBREU7QUFFUkMsWUFBQUEsV0FBVywrQkFBTVQsYUFBTixHQUF3QnNCLFVBQXhCO0FBRkg7QUFMTyxTQUFuQjtBQVVEOztBQUVELFVBQUlHLGdCQUFKLEVBQXNCO0FBQ3BCRixRQUFBQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JJLElBQWhCLENBQXFCSCxnQkFBckI7QUFDRDs7QUFFRCxVQUFNSSxXQUFXLEdBQUc3QixhQUFhLENBQUM4QixHQUFkLENBQWtCLFVBQUNDLFlBQUQsRUFBZUMsS0FBZjtBQUFBLGVBQTBCO0FBQzlEeEIsVUFBQUEsSUFBSSxFQUFFLFNBRHdEO0FBRTlESCxVQUFBQSxVQUFVLEVBQUU7QUFDVnFCLFlBQUFBLFNBQVMsRUFBRSxZQUREO0FBRVZPLFlBQUFBLGNBQWMsRUFBRSxVQUZOO0FBR1ZDLFlBQUFBLFlBQVksRUFBRSxDQUFDLENBSEw7QUFJVjVCLFlBQUFBLGVBQWUsRUFBRSxDQUFDMEIsS0FBRDtBQUpQLFdBRmtEO0FBUTlETCxVQUFBQSxRQUFRLEVBQUU7QUFDUm5CLFlBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFlBQUFBLFdBQVcsRUFBRXNCO0FBRkw7QUFSb0QsU0FBMUI7QUFBQSxPQUFsQixDQUFwQjs7QUFjQSwwQkFBQVIsTUFBTSxDQUFDQyxRQUFQLEVBQWdCSSxJQUFoQiw0Q0FBd0JDLFdBQXhCLEdBM0NxRSxDQTRDckU7OztBQUNBLGFBQU9OLE1BQVA7QUFDRDs7O3NDQUVpQjdCLEssRUFBeUJDLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ3dDLGNBQU4sQ0FBcUIsTUFBckI7QUFDRDs7OztFQS9HcUNDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZywgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQsIE1vZGVQcm9wcywgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldFBpY2tlZEVkaXRIYW5kbGUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdMaW5lU3RyaW5nTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICBjbGlja2VkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXSA9PT0gY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICAvLyBUaGV5IGNsaWNrZWQgdGhlIGxhc3QgcG9pbnQgKG9yIGRvdWJsZS1jbGlja2VkKSwgc28gYWRkIHRoZSBMaW5lU3RyaW5nXG5cbiAgICAgIGNvbnN0IGxpbmVTdHJpbmdUb0FkZDogTGluZVN0cmluZyA9IHtcbiAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2VdLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihsaW5lU3RyaW5nVG9BZGQsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IGtleSB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsaW5lU3RyaW5nVG9BZGQ6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZV0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24obGluZVN0cmluZ1RvQWRkLCBwcm9wcy5kYXRhKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh0ZW50YXRpdmVGZWF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlcyA9IGNsaWNrU2VxdWVuY2UubWFwKChjbGlja2VkQ29vcmQsIGluZGV4KSA9PiAoe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgIGZlYXR1cmVJbmRleDogLTEsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2luZGV4XSxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogY2xpY2tlZENvb3JkLFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5lZGl0SGFuZGxlcyk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-point-mode.js b/modules/edit-modes/dist/lib/draw-point-mode.js new file mode 100644 index 000000000..d5397314a --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-point-mode.js @@ -0,0 +1,87 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPointMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawPointMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawPointMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawPointMode); + + function DrawPointMode() { + _classCallCheck(this, DrawPointMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawPointMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + return { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Point', + coordinates: lastCoords[0] + } + }; + } + }, { + key: "handleClick", + value: function handleClick(_ref, props) { + var mapCoords = _ref.mapCoords; + var geometry = { + type: 'Point', + coordinates: mapCoords + }; // @ts-ignore + + props.onEdit(this.getAddFeatureAction(geometry, props.data)); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(DrawPointMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }]); + + return DrawPointMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawPointMode = DrawPointMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2ludC1tb2RlLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2ludE1vZGUiLCJwcm9wcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInR5cGUiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIm9uRWRpdCIsImdldEFkZEZlYXR1cmVBY3Rpb24iLCJkYXRhIiwiZXZlbnQiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGE7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLFVBQVUsR0FBR0Qsb0JBQW9CLEdBQUcsQ0FBQ0Esb0JBQW9CLENBQUNFLFNBQXRCLENBQUgsR0FBc0MsRUFBN0U7QUFFQSxhQUFPO0FBQ0xDLFFBQUFBLElBQUksRUFBRSxTQUREO0FBRUxDLFFBQUFBLFVBQVUsRUFBRTtBQUNWQyxVQUFBQSxTQUFTLEVBQUU7QUFERCxTQUZQO0FBS0xDLFFBQUFBLFFBQVEsRUFBRTtBQUNSSCxVQUFBQSxJQUFJLEVBQUUsT0FERTtBQUVSSSxVQUFBQSxXQUFXLEVBQUVOLFVBQVUsQ0FBQyxDQUFEO0FBRmY7QUFMTCxPQUFQO0FBVUQ7OztzQ0FFc0NGLEssRUFBMkM7QUFBQSxVQUFwRUcsU0FBb0UsUUFBcEVBLFNBQW9FO0FBQ2hGLFVBQU1JLFFBQVEsR0FBRztBQUNmSCxRQUFBQSxJQUFJLEVBQUUsT0FEUztBQUVmSSxRQUFBQSxXQUFXLEVBQUVMO0FBRkUsT0FBakIsQ0FEZ0YsQ0FLaEY7O0FBQ0FILE1BQUFBLEtBQUssQ0FBQ1MsTUFBTixDQUFhLEtBQUtDLG1CQUFMLENBQXlCSCxRQUF6QixFQUFtQ1AsS0FBSyxDQUFDVyxJQUF6QyxDQUFiO0FBQ0Q7OztzQ0FFaUJDLEssRUFBeUJaLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQ2EsY0FBTixDQUFxQixNQUFyQjs7QUFDQSwyRkFBd0JELEtBQXhCLEVBQStCWixLQUEvQjtBQUNEOzs7O0VBN0JnQ2MsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFRlbnRhdGl2ZUZlYXR1cmUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBsYXN0Q29vcmRzWzBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soeyBtYXBDb29yZHMgfTogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogbWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHByb3BzLm9uRWRpdCh0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnksIHByb3BzLmRhdGEpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gICAgc3VwZXIuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHByb3BzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-polygon-by-dragging-mode.js b/modules/edit-modes/dist/lib/draw-polygon-by-dragging-mode.js new file mode 100644 index 000000000..0b58ae17b --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-polygon-by-dragging-mode.js @@ -0,0 +1,137 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonByDraggingMode = void 0; + +var _lodash = _interopRequireDefault(require("lodash.throttle")); + +var _utils = require("../utils"); + +var _drawPolygonMode = require("./draw-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DrawPolygonByDraggingMode = /*#__PURE__*/function (_DrawPolygonMode) { + _inherits(DrawPolygonByDraggingMode, _DrawPolygonMode); + + var _super = _createSuper(DrawPolygonByDraggingMode); + + function DrawPolygonByDraggingMode() { + var _this; + + _classCallCheck(this, DrawPolygonByDraggingMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "handleDraggingThrottled", null); + + return _this; + } + + _createClass(DrawPolygonByDraggingMode, [{ + key: "handleClick", + value: function handleClick(event, props) {// No-op + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + event.cancelPan(); + + if (props.modeConfig && props.modeConfig.throttleMs) { + this.handleDraggingThrottled = (0, _lodash["default"])(this.handleDraggingAux, props.modeConfig.throttleMs); + } else { + this.handleDraggingThrottled = this.handleDraggingAux; + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); // @ts-ignore + + if (this.handleDraggingThrottled && this.handleDraggingThrottled.cancel) { + // @ts-ignore + this.handleDraggingThrottled.cancel(); + } + + if (clickSequence.length > 2) { + // Complete the polygon. + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "handleDraggingAux", + value: function handleDraggingAux(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one. + this.addClickSequence(event); + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (this.handleDraggingThrottled) { + this.handleDraggingThrottled(event, props); + } + } + }]); + + return DrawPolygonByDraggingMode; +}(_drawPolygonMode.DrawPolygonMode); + +exports.DrawPolygonByDraggingMode = DrawPolygonByDraggingMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLWJ5LWRyYWdnaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJjYW5jZWxQYW4iLCJtb2RlQ29uZmlnIiwidGhyb3R0bGVNcyIsImhhbmRsZURyYWdnaW5nVGhyb3R0bGVkIiwiaGFuZGxlRHJhZ2dpbmdBdXgiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJjYW5jZWwiLCJsZW5ndGgiLCJwb2x5Z29uVG9BZGQiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwiRHJhd1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJYUEseUI7Ozs7Ozs7Ozs7Ozs7Ozs7OEVBQ21ELEk7Ozs7Ozs7Z0NBRWxEQyxLLEVBQW1CQyxLLEVBQXFDLENBQ2xFO0FBQ0Q7Ozt3Q0FFbUJELEssRUFBMkJDLEssRUFBcUM7QUFDbEZELE1BQUFBLEtBQUssQ0FBQ0UsU0FBTjs7QUFDQSxVQUFJRCxLQUFLLENBQUNFLFVBQU4sSUFBb0JGLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQsYUFBS0MsdUJBQUwsR0FBK0Isd0JBQVMsS0FBS0MsaUJBQWQsRUFBaUNMLEtBQUssQ0FBQ0UsVUFBTixDQUFpQkMsVUFBbEQsQ0FBL0I7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLQyx1QkFBTCxHQUErQixLQUFLQyxpQkFBcEM7QUFDRDtBQUNGOzs7dUNBRWtCTixLLEVBQTBCQyxLLEVBQXFDO0FBQ2hGLFdBQUtNLGdCQUFMLENBQXNCUCxLQUF0QjtBQUNBLFVBQU1RLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QixDQUZnRixDQUdoRjs7QUFDQSxVQUFJLEtBQUtKLHVCQUFMLElBQWdDLEtBQUtBLHVCQUFMLENBQTZCSyxNQUFqRSxFQUF5RTtBQUN2RTtBQUNBLGFBQUtMLHVCQUFMLENBQTZCSyxNQUE3QjtBQUNEOztBQUVELFVBQUlGLGFBQWEsQ0FBQ0csTUFBZCxHQUF1QixDQUEzQixFQUE4QjtBQUM1QjtBQUNBLFlBQU1DLFlBQXFCLEdBQUc7QUFDNUJDLFVBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkMsVUFBQUEsV0FBVyxFQUFFLDhCQUFLTixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFNBQTlCO0FBS0EsYUFBS08sa0JBQUw7QUFFQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNMLFlBQXpDLEVBQXVEWCxLQUF2RCxDQUFuQjs7QUFDQSxZQUFJZSxVQUFKLEVBQWdCO0FBQ2RmLFVBQUFBLEtBQUssQ0FBQ2lCLE1BQU4sQ0FBYUYsVUFBYjtBQUNEO0FBQ0Y7QUFDRjs7O3NDQUVpQmhCLEssRUFBc0JDLEssRUFBcUM7QUFBQSxVQUNuRWtCLEtBRG1FLEdBQ3pEbkIsS0FEeUQsQ0FDbkVtQixLQURtRTtBQUUzRSxVQUFNQyxpQkFBaUIsR0FBRyxnQ0FBb0JELEtBQXBCLENBQTFCOztBQUVBLFVBQUksQ0FBQ0MsaUJBQUwsRUFBd0I7QUFDdEI7QUFDQSxhQUFLYixnQkFBTCxDQUFzQlAsS0FBdEI7QUFDRDtBQUNGOzs7bUNBRWNBLEssRUFBc0JDLEssRUFBcUM7QUFDeEUsVUFBSSxLQUFLSSx1QkFBVCxFQUFrQztBQUNoQyxhQUFLQSx1QkFBTCxDQUE2QkwsS0FBN0IsRUFBb0NDLEtBQXBDO0FBQ0Q7QUFDRjs7OztFQXZENENvQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG50eXBlIERyYWdnaW5nSGFuZGxlciA9IChldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBEcmF3UG9seWdvbkJ5RHJhZ2dpbmdNb2RlIGV4dGVuZHMgRHJhd1BvbHlnb25Nb2RlIHtcbiAgaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQ6IERyYWdnaW5nSGFuZGxlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIE5vLW9wXG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gICAgaWYgKHByb3BzLm1vZGVDb25maWcgJiYgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKSB7XG4gICAgICB0aGlzLmhhbmRsZURyYWdnaW5nVGhyb3R0bGVkID0gdGhyb3R0bGUodGhpcy5oYW5kbGVEcmFnZ2luZ0F1eCwgcHJvcHMubW9kZUNvbmZpZy50aHJvdHRsZU1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCA9IHRoaXMuaGFuZGxlRHJhZ2dpbmdBdXg7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQgJiYgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZC5jYW5jZWwpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuaGFuZGxlRHJhZ2dpbmdUaHJvdHRsZWQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHBvbHlnb24uXG4gICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkLCBwcm9wcyk7XG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmdBdXgoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgeyBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lLlxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZCkge1xuICAgICAgdGhpcy5oYW5kbGVEcmFnZ2luZ1Rocm90dGxlZChldmVudCwgcHJvcHMpO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-polygon-mode.js b/modules/edit-modes/dist/lib/draw-polygon-mode.js new file mode 100644 index 000000000..f8a716643 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-polygon-mode.js @@ -0,0 +1,205 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(DrawPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(DrawPolygonMode); + + function DrawPolygonMode() { + _classCallCheck(this, DrawPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawPolygonMode, [{ + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 1 || clickSequence.length === 2) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }; + } else if (clickSequence.length > 2) { + tentativeFeature = { + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), lastCoords, [clickSequence[0]])] + } + }; + } + + return tentativeFeature; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + var tentativeFeature = this.createTentativeFeature(props); + + if (tentativeFeature) { + guides.features.push(tentativeFeature); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + // Remove the hovered position + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } else if (positionAdded) { + // new tentative point + props.onEdit({ + // data is the same + updatedData: props.data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (event.key === 'Enter') { + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2) { + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [clickSequence[0]])] + }; + this.resetClickSequence(); + var editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(DrawPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }]); + + return DrawPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.DrawPolygonMode = DrawPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1wb2x5Z29uLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1BvbHlnb25Nb2RlIiwicHJvcHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGFzdENvb3JkcyIsIm1hcENvb3JkcyIsInRlbnRhdGl2ZUZlYXR1cmUiLCJsZW5ndGgiLCJ0eXBlIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUiLCJwdXNoIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiZXZlbnQiLCJwaWNrcyIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9zaXRpb25BZGRlZCIsImFkZENsaWNrU2VxdWVuY2UiLCJBcnJheSIsImlzQXJyYXkiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJvbkVkaXQiLCJ1cGRhdGVkRGF0YSIsImRhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwicG9zaXRpb24iLCJrZXkiLCJvblVwZGF0ZUN1cnNvciIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGU7Ozs7Ozs7Ozs7Ozs7MkNBQ1lDLEssRUFBdUQ7QUFBQSxVQUNwRUMsb0JBRG9FLEdBQzNDRCxLQUQyQyxDQUNwRUMsb0JBRG9FO0FBRTVFLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0QjtBQUVBLFVBQU1DLFVBQVUs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QixjQUFNd0IsWUFBcUIsR0FBRztBQUM1QnZCLFlBQUFBLElBQUksRUFBRSxTQURzQjtBQUU1QkksWUFBQUEsV0FBVyxFQUFFLDhCQUFLVixhQUFMLElBQW9CQSxhQUFhLENBQUMsQ0FBRCxDQUFqQztBQUZlLFdBQTlCO0FBSUEsZUFBSzhCLGtCQUFMO0FBRUEsY0FBTUMsVUFBVSxHQUFHLEtBQUtDLG1DQUFMLENBQXlDSCxZQUF6QyxFQUF1RC9CLEtBQXZELENBQW5COztBQUNBLGNBQUlpQyxVQUFKLEVBQWdCO0FBQ2RqQyxZQUFBQSxLQUFLLENBQUNtQyxNQUFOLENBQWFGLFVBQWI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7O3NDQUNpQlQsSyxFQUF5QnhCLEssRUFBcUM7QUFDOUVBLE1BQUFBLEtBQUssQ0FBQzBDLGNBQU4sQ0FBcUIsTUFBckI7O0FBQ0EsNkZBQXdCbEIsS0FBeEIsRUFBK0J4QixLQUEvQjtBQUNEOzs7O0VBcElrQzJDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGxhc3RDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCA/IFtsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHNdIDogW107XG5cbiAgICBsZXQgdGVudGF0aXZlRmVhdHVyZTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEgfHwgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRlbnRhdGl2ZUZlYXR1cmUgPSB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgLi4ubGFzdENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyKSB7XG4gICAgICB0ZW50YXRpdmVGZWF0dXJlID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW1suLi5jbGlja1NlcXVlbmNlLCAuLi5sYXN0Q29vcmRzLCBjbGlja1NlcXVlbmNlWzBdXV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgZ3VpZGVzID0ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBbXSxcbiAgICB9O1xuXG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHRlbnRhdGl2ZUZlYXR1cmUpO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gY2xpY2tTZXF1ZW5jZS5tYXAoKGNsaWNrZWRDb29yZCwgaW5kZXgpID0+ICh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2V4aXN0aW5nJyxcbiAgICAgICAgZmVhdHVyZUluZGV4OiAtMSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbaW5kZXhdLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBjbGlja2VkQ29vcmQsXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKC4uLmVkaXRIYW5kbGVzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBsZXQgcG9zaXRpb25BZGRlZCA9IGZhbHNlO1xuICAgIGlmICghY2xpY2tlZEVkaXRIYW5kbGUpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbm90aGVyIHBvaW50IHJpZ2h0IG5leHQgdG8gYW4gZXhpc3Rpbmcgb25lXG4gICAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICAgICAgcG9zaXRpb25BZGRlZCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChcbiAgICAgIGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMiAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpICYmXG4gICAgICAoY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHxcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSlcbiAgICApIHtcbiAgICAgIC8vIFRoZXkgY2xpY2tlZCB0aGUgZmlyc3Qgb3IgbGFzdCBwb2ludCAob3IgZG91YmxlLWNsaWNrZWQpLCBzbyBjb21wbGV0ZSB0aGUgcG9seWdvblxuXG4gICAgICAvLyBSZW1vdmUgdGhlIGhvdmVyZWQgcG9zaXRpb25cbiAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICBjb29yZGluYXRlczogW1suLi5jbGlja1NlcXVlbmNlLCBjbGlja1NlcXVlbmNlWzBdXV0sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uQWRkZWQpIHtcbiAgICAgIC8vIG5ldyB0ZW50YXRpdmUgcG9pbnRcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIGRhdGEgaXMgdGhlIHNhbWVcbiAgICAgICAgdXBkYXRlZERhdGE6IHByb3BzLmRhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnYWRkVGVudGF0aXZlUG9zaXRpb24nLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMikge1xuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQsIHByb3BzKTtcbiAgICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwgcHJvcHMpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-rectangle-mode.js b/modules/edit-modes/dist/lib/draw-rectangle-mode.js new file mode 100644 index 000000000..2522e8042 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-rectangle-mode.js @@ -0,0 +1,62 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawRectangleMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawRectangleMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawRectangleMode); + + function DrawRectangleMode() { + _classCallCheck(this, DrawRectangleMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + var rectangle = (0, _bboxPolygon["default"])([coord1[0], coord1[1], coord2[0], coord2[1]]); + rectangle.properties = rectangle.properties || {}; + rectangle.properties.shape = 'Rectangle'; // @ts-ignore + + return rectangle; + } + }]); + + return DrawRectangleMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawRectangleMode = DrawRectangleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3UmVjdGFuZ2xlTW9kZSIsImNvb3JkMSIsImNvb3JkMiIsIm1vZGVDb25maWciLCJyZWN0YW5nbGUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLGlCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGLFVBQU1DLFNBQVMsR0FBRyw2QkFBWSxDQUFDSCxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCQyxNQUFNLENBQUMsQ0FBRCxDQUE3QixFQUFrQ0EsTUFBTSxDQUFDLENBQUQsQ0FBeEMsQ0FBWixDQUFsQjtBQUNBRSxNQUFBQSxTQUFTLENBQUNDLFVBQVYsR0FBdUJELFNBQVMsQ0FBQ0MsVUFBVixJQUF3QixFQUEvQztBQUNBRCxNQUFBQSxTQUFTLENBQUNDLFVBQVYsQ0FBcUJDLEtBQXJCLEdBQTZCLFdBQTdCLENBSDBGLENBSzFGOztBQUNBLGFBQU9GLFNBQVA7QUFDRDs7OztFQVJvQ0csd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7IFBvc2l0aW9uLCBQb2x5Z29uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFR3b0NsaWNrUG9seWdvbk1vZGUgfSBmcm9tICcuL3R3by1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZU1vZGUgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKGNvb3JkMTogUG9zaXRpb24sIGNvb3JkMjogUG9zaXRpb24sIG1vZGVDb25maWc6IGFueSk6IEZlYXR1cmVPZjxQb2x5Z29uPiB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gYmJveFBvbHlnb24oW2Nvb3JkMVswXSwgY29vcmQxWzFdLCBjb29yZDJbMF0sIGNvb3JkMlsxXV0pO1xuICAgIHJlY3RhbmdsZS5wcm9wZXJ0aWVzID0gcmVjdGFuZ2xlLnByb3BlcnRpZXMgfHwge307XG4gICAgcmVjdGFuZ2xlLnByb3BlcnRpZXMuc2hhcGUgPSAnUmVjdGFuZ2xlJztcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVjdGFuZ2xlO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-rectangle-using-three-points-mode.js b/modules/edit-modes/dist/lib/draw-rectangle-using-three-points-mode.js new file mode 100644 index 000000000..9a506e1f6 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-rectangle-using-three-points-mode.js @@ -0,0 +1,85 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleUsingThreePointsMode = void 0; + +var _utils = require("../utils"); + +var _threeClickPolygonMode = require("./three-click-polygon-mode"); + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawRectangleUsingThreePointsMode = /*#__PURE__*/function (_ThreeClickPolygonMod) { + _inherits(DrawRectangleUsingThreePointsMode, _ThreeClickPolygonMod); + + var _super = _createSuper(DrawRectangleUsingThreePointsMode); + + function DrawRectangleUsingThreePointsMode() { + _classCallCheck(this, DrawRectangleUsingThreePointsMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleUsingThreePointsMode, [{ + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(coord1, coord2, coord3), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + return { + type: 'Feature', + properties: { + shape: 'Rectangle' + }, + geometry: { + type: 'Polygon', + coordinates: [[// Draw a polygon containing all the points of the LineString, + // then the points orthogonal to the lineString, + // then back to the starting position + coord1, coord2, p3, p4, coord1]] + } + }; + } + }]); + + return DrawRectangleUsingThreePointsMode; +}(_threeClickPolygonMode.ThreeClickPolygonMode); + +exports.DrawRectangleUsingThreePointsMode = DrawRectangleUsingThreePointsMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1yZWN0YW5nbGUtdXNpbmctdGhyZWUtcG9pbnRzLW1vZGUudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIiwiY29vcmQxIiwiY29vcmQyIiwiY29vcmQzIiwibW9kZUNvbmZpZyIsInAzIiwicDQiLCJ0eXBlIiwicHJvcGVydGllcyIsInNoYXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsaUM7Ozs7Ozs7Ozs7Ozs7eUNBRVRDLE0sRUFDQUMsTSxFQUNBQyxNLEVBQ0FDLFUsRUFDdUM7QUFBQSxrQ0FDdEIsK0NBQW1DSCxNQUFuQyxFQUEyQ0MsTUFBM0MsRUFBbURDLE1BQW5ELENBRHNCO0FBQUE7QUFBQSxVQUNoQ0UsRUFEZ0M7QUFBQSxVQUM1QkMsRUFENEI7O0FBR3ZDLGFBQU87QUFDTEMsUUFBQUEsSUFBSSxFQUFFLFNBREQ7QUFFTEMsUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLEtBQUssRUFBRTtBQURHLFNBRlA7QUFLTEMsUUFBQUEsUUFBUSxFQUFFO0FBQ1JILFVBQUFBLElBQUksRUFBRSxTQURFO0FBRVJJLFVBQUFBLFdBQVcsRUFBRSxDQUNYLENBQ0U7QUFDQTtBQUNBO0FBQ0FWLFVBQUFBLE1BSkYsRUFLRUMsTUFMRixFQU1FRyxFQU5GLEVBT0VDLEVBUEYsRUFRRUwsTUFSRixDQURXO0FBRkw7QUFMTCxPQUFQO0FBcUJEOzs7O0VBOUJvRFcsNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlIGV4dGVuZHMgVGhyZWVDbGlja1BvbHlnb25Nb2RlIHtcbiAgZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgY29vcmQxOiBQb3NpdGlvbixcbiAgICBjb29yZDI6IFBvc2l0aW9uLFxuICAgIGNvb3JkMzogUG9zaXRpb24sXG4gICAgbW9kZUNvbmZpZzogYW55XG4gICk6IEZlYXR1cmVPZjxQb2x5Z29uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtwMywgcDRdID0gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhjb29yZDEsIGNvb3JkMiwgY29vcmQzKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHNoYXBlOiAnUmVjdGFuZ2xlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgW1xuICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgIC8vIHRoZW4gdGhlIHBvaW50cyBvcnRob2dvbmFsIHRvIHRoZSBsaW5lU3RyaW5nLFxuICAgICAgICAgICAgLy8gdGhlbiBiYWNrIHRvIHRoZSBzdGFydGluZyBwb3NpdGlvblxuICAgICAgICAgICAgY29vcmQxLFxuICAgICAgICAgICAgY29vcmQyLFxuICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICBwNCxcbiAgICAgICAgICAgIGNvb3JkMSxcbiAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/draw-square-from-center-mode.js b/modules/edit-modes/dist/lib/draw-square-from-center-mode.js new file mode 100644 index 000000000..7c39cff29 --- /dev/null +++ b/modules/edit-modes/dist/lib/draw-square-from-center-mode.js @@ -0,0 +1,85 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawSquareFromCenterMode = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _along = _interopRequireDefault(require("@turf/along")); + +var _helpers = require("@turf/helpers"); + +var _twoClickPolygonMode = require("./two-click-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DrawSquareFromCenterMode = /*#__PURE__*/function (_TwoClickPolygonMode) { + _inherits(DrawSquareFromCenterMode, _TwoClickPolygonMode); + + var _super = _createSuper(DrawSquareFromCenterMode); + + function DrawSquareFromCenterMode() { + _classCallCheck(this, DrawSquareFromCenterMode); + + return _super.apply(this, arguments); + } + + _createClass(DrawSquareFromCenterMode, [{ + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + // get the coordinates of the other two rectangle vertices + var coord3 = [coord2[0], coord1[1]]; + var coord4 = [coord1[0], coord2[1]]; // determine the shortest distance to the origin, which will be the length of each square side + + var distance1 = (0, _distance["default"])((0, _helpers.point)(coord3), (0, _helpers.point)(coord1)); + var distance2 = (0, _distance["default"])((0, _helpers.point)(coord4), (0, _helpers.point)(coord1)); + var shortestDistance = distance1 <= distance2 ? distance1 : distance2; // determine which coordinate pair of the two is closest to the origin + + var closestPoint = distance1 <= distance2 ? coord3 : coord4; // create a linestring which will used to locate the second square vertex + + var line = (0, _helpers.lineString)([closestPoint, coord2]); // get the coordinates of the second square vertex + + var newPoint = (0, _along["default"])(line, shortestDistance); + var corner = newPoint.geometry.coordinates; // determine the longitude and latitude values of the opposite corner + + var longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]); + var latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]); + var square = (0, _bboxPolygon["default"])([longitude, latitude, corner[0], corner[1]]); + square.properties = square.properties || {}; + square.properties.shape = 'Square'; // @ts-ignore + + return square; + } + }]); + + return DrawSquareFromCenterMode; +}(_twoClickPolygonMode.TwoClickPolygonMode); + +exports.DrawSquareFromCenterMode = DrawSquareFromCenterMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHJhdy1zcXVhcmUtZnJvbS1jZW50ZXItbW9kZS50cyJdLCJuYW1lcyI6WyJEcmF3U3F1YXJlRnJvbUNlbnRlck1vZGUiLCJjb29yZDEiLCJjb29yZDIiLCJtb2RlQ29uZmlnIiwiY29vcmQzIiwiY29vcmQ0IiwiZGlzdGFuY2UxIiwiZGlzdGFuY2UyIiwic2hvcnRlc3REaXN0YW5jZSIsImNsb3Nlc3RQb2ludCIsImxpbmUiLCJuZXdQb2ludCIsImNvcm5lciIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsb25naXR1ZGUiLCJNYXRoIiwiYWJzIiwibGF0aXR1ZGUiLCJzcXVhcmUiLCJwcm9wZXJ0aWVzIiwic2hhcGUiLCJUd29DbGlja1BvbHlnb25Nb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLHdCOzs7Ozs7Ozs7Ozs7O3VDQUNRQyxNLEVBQWtCQyxNLEVBQWtCQyxVLEVBQXFDO0FBQzFGO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUNGLE1BQU0sQ0FBQyxDQUFELENBQVAsRUFBWUQsTUFBTSxDQUFDLENBQUQsQ0FBbEIsQ0FBZjtBQUNBLFVBQU1JLE1BQU0sR0FBRyxDQUFDSixNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlDLE1BQU0sQ0FBQyxDQUFELENBQWxCLENBQWYsQ0FIMEYsQ0FLMUY7O0FBQ0EsVUFBTUksU0FBUyxHQUFHLDBCQUFhLG9CQUFNRixNQUFOLENBQWIsRUFBNEIsb0JBQU1ILE1BQU4sQ0FBNUIsQ0FBbEI7QUFDQSxVQUFNTSxTQUFTLEdBQUcsMEJBQWEsb0JBQU1GLE1BQU4sQ0FBYixFQUE0QixvQkFBTUosTUFBTixDQUE1QixDQUFsQjtBQUNBLFVBQU1PLGdCQUFnQixHQUFHRixTQUFTLElBQUlDLFNBQWIsR0FBeUJELFNBQXpCLEdBQXFDQyxTQUE5RCxDQVIwRixDQVUxRjs7QUFDQSxVQUFNRSxZQUFZLEdBQUdILFNBQVMsSUFBSUMsU0FBYixHQUF5QkgsTUFBekIsR0FBa0NDLE1BQXZELENBWDBGLENBYTFGOztBQUNBLFVBQU1LLElBQUksR0FBRyx5QkFBZSxDQUFDRCxZQUFELEVBQWVQLE1BQWYsQ0FBZixDQUFiLENBZDBGLENBZ0IxRjs7QUFDQSxVQUFNUyxRQUFRLEdBQUcsdUJBQVVELElBQVYsRUFBZ0JGLGdCQUFoQixDQUFqQjtBQUNBLFVBQU1JLE1BQU0sR0FBR0QsUUFBUSxDQUFDRSxRQUFULENBQWtCQyxXQUFqQyxDQWxCMEYsQ0FvQjFGOztBQUNBLFVBQU1DLFNBQVMsR0FDYmQsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUFsQixHQUNJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQURoQixHQUVJWCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVllLElBQUksQ0FBQ0MsR0FBTCxDQUFTaEIsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZVyxNQUFNLENBQUMsQ0FBRCxDQUEzQixDQUhsQjtBQUlBLFVBQU1NLFFBQVEsR0FDWmpCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FDSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FEaEIsR0FFSVgsTUFBTSxDQUFDLENBQUQsQ0FBTixHQUFZZSxJQUFJLENBQUNDLEdBQUwsQ0FBU2hCLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWVcsTUFBTSxDQUFDLENBQUQsQ0FBM0IsQ0FIbEI7QUFLQSxVQUFNTyxNQUFNLEdBQUcsNkJBQVksQ0FBQ0osU0FBRCxFQUFZRyxRQUFaLEVBQXNCTixNQUFNLENBQUMsQ0FBRCxDQUE1QixFQUFpQ0EsTUFBTSxDQUFDLENBQUQsQ0FBdkMsQ0FBWixDQUFmO0FBQ0FPLE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxHQUFvQkQsTUFBTSxDQUFDQyxVQUFQLElBQXFCLEVBQXpDO0FBQ0FELE1BQUFBLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQkMsS0FBbEIsR0FBMEIsUUFBMUIsQ0FoQzBGLENBa0MxRjs7QUFDQSxhQUFPRixNQUFQO0FBQ0Q7Ozs7RUFyQzJDRyx3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkFsb25nIGZyb20gJ0B0dXJmL2Fsb25nJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIGFzIHR1cmZMaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgUG9seWdvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25Nb2RlIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1tb2RlJztcblxuZXhwb3J0IGNsYXNzIERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSBleHRlbmRzIFR3b0NsaWNrUG9seWdvbk1vZGUge1xuICBnZXRUd29DbGlja1BvbHlnb24oY29vcmQxOiBQb3NpdGlvbiwgY29vcmQyOiBQb3NpdGlvbiwgbW9kZUNvbmZpZzogYW55KTogRmVhdHVyZU9mPFBvbHlnb24+IHtcbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBvdGhlciB0d28gcmVjdGFuZ2xlIHZlcnRpY2VzXG4gICAgY29uc3QgY29vcmQzID0gW2Nvb3JkMlswXSwgY29vcmQxWzFdXTtcbiAgICBjb25zdCBjb29yZDQgPSBbY29vcmQxWzBdLCBjb29yZDJbMV1dO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBzaG9ydGVzdCBkaXN0YW5jZSB0byB0aGUgb3JpZ2luLCB3aGljaCB3aWxsIGJlIHRoZSBsZW5ndGggb2YgZWFjaCBzcXVhcmUgc2lkZVxuICAgIGNvbnN0IGRpc3RhbmNlMSA9IHR1cmZEaXN0YW5jZShwb2ludChjb29yZDMpLCBwb2ludChjb29yZDEpKTtcbiAgICBjb25zdCBkaXN0YW5jZTIgPSB0dXJmRGlzdGFuY2UocG9pbnQoY29vcmQ0KSwgcG9pbnQoY29vcmQxKSk7XG4gICAgY29uc3Qgc2hvcnRlc3REaXN0YW5jZSA9IGRpc3RhbmNlMSA8PSBkaXN0YW5jZTIgPyBkaXN0YW5jZTEgOiBkaXN0YW5jZTI7XG5cbiAgICAvLyBkZXRlcm1pbmUgd2hpY2ggY29vcmRpbmF0ZSBwYWlyIG9mIHRoZSB0d28gaXMgY2xvc2VzdCB0byB0aGUgb3JpZ2luXG4gICAgY29uc3QgY2xvc2VzdFBvaW50ID0gZGlzdGFuY2UxIDw9IGRpc3RhbmNlMiA/IGNvb3JkMyA6IGNvb3JkNDtcblxuICAgIC8vIGNyZWF0ZSBhIGxpbmVzdHJpbmcgd2hpY2ggd2lsbCB1c2VkIHRvIGxvY2F0ZSB0aGUgc2Vjb25kIHNxdWFyZSB2ZXJ0ZXhcbiAgICBjb25zdCBsaW5lID0gdHVyZkxpbmVTdHJpbmcoW2Nsb3Nlc3RQb2ludCwgY29vcmQyXSk7XG5cbiAgICAvLyBnZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBzZWNvbmQgc3F1YXJlIHZlcnRleFxuICAgIGNvbnN0IG5ld1BvaW50ID0gdHVyZkFsb25nKGxpbmUsIHNob3J0ZXN0RGlzdGFuY2UpO1xuICAgIGNvbnN0IGNvcm5lciA9IG5ld1BvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHZhbHVlcyBvZiB0aGUgb3Bwb3NpdGUgY29ybmVyXG4gICAgY29uc3QgbG9uZ2l0dWRlID1cbiAgICAgIGNvb3JkMVswXSA+IGNvcm5lclswXVxuICAgICAgICA/IGNvb3JkMVswXSArIE1hdGguYWJzKGNvb3JkMVswXSAtIGNvcm5lclswXSlcbiAgICAgICAgOiBjb29yZDFbMF0gLSBNYXRoLmFicyhjb29yZDFbMF0gLSBjb3JuZXJbMF0pO1xuICAgIGNvbnN0IGxhdGl0dWRlID1cbiAgICAgIGNvb3JkMVsxXSA+IGNvcm5lclsxXVxuICAgICAgICA/IGNvb3JkMVsxXSArIE1hdGguYWJzKGNvb3JkMVsxXSAtIGNvcm5lclsxXSlcbiAgICAgICAgOiBjb29yZDFbMV0gLSBNYXRoLmFicyhjb29yZDFbMV0gLSBjb3JuZXJbMV0pO1xuXG4gICAgY29uc3Qgc3F1YXJlID0gYmJveFBvbHlnb24oW2xvbmdpdHVkZSwgbGF0aXR1ZGUsIGNvcm5lclswXSwgY29ybmVyWzFdXSk7XG4gICAgc3F1YXJlLnByb3BlcnRpZXMgPSBzcXVhcmUucHJvcGVydGllcyB8fCB7fTtcbiAgICBzcXVhcmUucHJvcGVydGllcy5zaGFwZSA9ICdTcXVhcmUnO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzcXVhcmU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/duplicate-mode.js b/modules/edit-modes/dist/lib/duplicate-mode.js new file mode 100644 index 000000000..28c1a166b --- /dev/null +++ b/modules/edit-modes/dist/lib/duplicate-mode.js @@ -0,0 +1,71 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DuplicateMode = void 0; + +var _translateMode = require("./translate-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DuplicateMode = /*#__PURE__*/function (_TranslateMode) { + _inherits(DuplicateMode, _TranslateMode); + + var _super = _createSuper(DuplicateMode); + + function DuplicateMode() { + _classCallCheck(this, DuplicateMode); + + return _super.apply(this, arguments); + } + + _createClass(DuplicateMode, [{ + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + _get(_getPrototypeOf(DuplicateMode.prototype), "handleStartDragging", this).call(this, event, props); + + if (this._geometryBeforeTranslate) { + props.onEdit(this.getAddManyFeaturesAction(this._geometryBeforeTranslate, props.data)); + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._isTranslatable) { + props.onUpdateCursor('copy'); + } else { + props.onUpdateCursor(null); + } + } + }]); + + return DuplicateMode; +}(_translateMode.TranslateMode); + +exports.DuplicateMode = DuplicateMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZHVwbGljYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiRHVwbGljYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJvbkVkaXQiLCJnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24iLCJkYXRhIiwiX2lzVHJhbnNsYXRhYmxlIiwib25VcGRhdGVDdXJzb3IiLCJUcmFuc2xhdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozt3Q0FDU0MsSyxFQUEyQkMsSyxFQUFxQztBQUNsRiw2RkFBMEJELEtBQTFCLEVBQWlDQyxLQUFqQzs7QUFFQSxVQUFJLEtBQUtDLHdCQUFULEVBQW1DO0FBQ2pDRCxRQUFBQSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxLQUFLQyx3QkFBTCxDQUE4QixLQUFLRix3QkFBbkMsRUFBNkRELEtBQUssQ0FBQ0ksSUFBbkUsQ0FBYjtBQUNEO0FBQ0Y7OztpQ0FFWUosSyxFQUFxQztBQUNoRCxVQUFJLEtBQUtLLGVBQVQsRUFBMEI7QUFDeEJMLFFBQUFBLEtBQUssQ0FBQ00sY0FBTixDQUFxQixNQUFyQjtBQUNELE9BRkQsTUFFTztBQUNMTixRQUFBQSxLQUFLLENBQUNNLGNBQU4sQ0FBcUIsSUFBckI7QUFDRDtBQUNGOzs7O0VBZmdDQyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXJ0RHJhZ2dpbmdFdmVudCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZGUgfSBmcm9tICcuL3RyYW5zbGF0ZS1tb2RlJztcblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZU1vZGUgZXh0ZW5kcyBUcmFuc2xhdGVNb2RlIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHN1cGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgcHJvcHMub25FZGl0KHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlLCBwcm9wcy5kYXRhKSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY29weScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/edit-mode.js b/modules/edit-modes/dist/lib/edit-mode.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist/lib/edit-mode.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/elevation-mode.js b/modules/edit-modes/dist/lib/elevation-mode.js new file mode 100644 index 000000000..35bf0f63e --- /dev/null +++ b/modules/edit-modes/dist/lib/elevation-mode.js @@ -0,0 +1,125 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ElevationMode = void 0; + +var _utils = require("../utils"); + +var _modifyMode = require("./modify-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultCalculateElevationChange(_ref) { + var pointerDownScreenCoords = _ref.pointerDownScreenCoords, + screenCoords = _ref.screenCoords; + return 10 * (pointerDownScreenCoords[1] - screenCoords[1]); +} + +var ElevationMode = /*#__PURE__*/function (_ModifyMode) { + _inherits(ElevationMode, _ModifyMode); + + var _super = _createSuper(ElevationMode); + + function ElevationMode() { + _classCallCheck(this, ElevationMode); + + return _super.apply(this, arguments); + } + + _createClass(ElevationMode, [{ + key: "makeElevatedEvent", + value: function makeElevatedEvent(event, position, props) { + var _ref2 = props.modeConfig || {}, + _ref2$minElevation = _ref2.minElevation, + minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation, + _ref2$maxElevation = _ref2.maxElevation, + maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation, + _ref2$calculateElevat = _ref2.calculateElevationChange, + calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat; + + if (!event.pointerDownScreenCoords) { + return event; + } // $FlowFixMe - really, I know it has something at index 2 + + + var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable because (at this time) modes are not aware of the viewport + + elevation += calculateElevationChange({ + pointerDownScreenCoords: event.pointerDownScreenCoords, + screenCoords: event.screenCoords + }); + elevation = Math.min(elevation, maxElevation); + elevation = Math.max(elevation, minElevation); + return Object.assign({}, event, { + mapCoords: [position[0], position[1], elevation] + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore + + _get(_getPrototypeOf(ElevationMode.prototype), "handlePointerMove", this).call(this, this.makeElevatedEvent(event, position, props), props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.picks); + var position = editHandle ? editHandle.geometry.coordinates : event.mapCoords; // @ts-ignore + + _get(_getPrototypeOf(ElevationMode.prototype), "handleStopDragging", this).call(this, this.makeElevatedEvent(event, position, props), props); + } + }, { + key: "getCursor", + value: function getCursor(event) { + var cursor = _get(_getPrototypeOf(ElevationMode.prototype), "getCursor", this).call(this, event); + + if (cursor === 'cell') { + cursor = 'ns-resize'; + } + + return cursor; + } + }], [{ + key: "calculateElevationChangeWithViewport", + value: function calculateElevationChangeWithViewport(viewport, _ref3) { + var pointerDownScreenCoords = _ref3.pointerDownScreenCoords, + screenCoords = _ref3.screenCoords; + // Source: https://gis.stackexchange.com/a/127949/111804 + var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom); + return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2; + } + }]); + + return ElevationMode; +}(_modifyMode.ModifyMode); + +exports.ElevationMode = ElevationMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZWxldmF0aW9uLW1vZGUudHMiXSwibmFtZXMiOlsiZGVmYXVsdENhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwic2NyZWVuQ29vcmRzIiwiRWxldmF0aW9uTW9kZSIsImV2ZW50IiwicG9zaXRpb24iLCJwcm9wcyIsIm1vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwibWFwQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwibWFrZUVsZXZhdGVkRXZlbnQiLCJwaWNrcyIsImN1cnNvciIsInZpZXdwb3J0IiwibWV0ZXJzUGVyUGl4ZWwiLCJjb3MiLCJsYXRpdHVkZSIsIlBJIiwicG93Iiwiem9vbSIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLCtCQUFULE9BTUc7QUFBQSxNQUxEQyx1QkFLQyxRQUxEQSx1QkFLQztBQUFBLE1BSkRDLFlBSUMsUUFKREEsWUFJQztBQUNELFNBQU8sTUFBTUQsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBL0MsQ0FBUDtBQUNEOztJQUVZQyxhOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ0FDLFEsRUFDQUMsSyxFQUNxQjtBQUFBLGtCQUtqQkEsS0FBSyxDQUFDQyxVQUFOLElBQW9CLEVBTEg7QUFBQSxxQ0FFbkJDLFlBRm1CO0FBQUEsVUFFbkJBLFlBRm1CLG1DQUVKLENBRkk7QUFBQSxxQ0FHbkJDLFlBSG1CO0FBQUEsVUFHbkJBLFlBSG1CLG1DQUdKLEtBSEk7QUFBQSx3Q0FJbkJDLHdCQUptQjtBQUFBLFVBSW5CQSx3QkFKbUIsc0NBSVFWLCtCQUpSOztBQU9yQixVQUFJLENBQUNJLEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNELE9BVG9CLENBV3JCOzs7QUFDQSxVQUFJTyxTQUFTLEdBQUdOLFFBQVEsQ0FBQ08sTUFBVCxLQUFvQixDQUFwQixHQUF3QlAsUUFBUSxDQUFDLENBQUQsQ0FBaEMsR0FBc0MsQ0FBdEQsQ0FacUIsQ0FjckI7O0FBQ0FNLE1BQUFBLFNBQVMsSUFBSUQsd0JBQXdCLENBQUM7QUFDcENULFFBQUFBLHVCQUF1QixFQUFFRyxLQUFLLENBQUNILHVCQURLO0FBRXBDQyxRQUFBQSxZQUFZLEVBQUVFLEtBQUssQ0FBQ0Y7QUFGZ0IsT0FBRCxDQUFyQztBQUlBUyxNQUFBQSxTQUFTLEdBQUdFLElBQUksQ0FBQ0MsR0FBTCxDQUFTSCxTQUFULEVBQW9CRixZQUFwQixDQUFaO0FBQ0FFLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDRSxHQUFMLENBQVNKLFNBQVQsRUFBb0JILFlBQXBCLENBQVo7QUFFQSxhQUFPUSxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCYixLQUFsQixFQUF5QjtBQUM5QmMsUUFBQUEsU0FBUyxFQUFFLENBQUNiLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkJNLFNBQTNCO0FBRG1CLE9BQXpCLENBQVA7QUFHRDs7O3NDQUVpQlAsSyxFQUF5QkUsSyxFQUFxQztBQUM5RSxVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNnQixnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGOEUsQ0FHOUU7O0FBQ0EsMkZBQXdCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF4QixFQUF3RUEsS0FBeEU7QUFDRDs7O3VDQUVrQkYsSyxFQUEwQkUsSyxFQUFxQztBQUNoRixVQUFNYSxVQUFVLEdBQUcsZ0NBQW9CZixLQUFLLENBQUNvQixLQUExQixDQUFuQjtBQUNBLFVBQU1uQixRQUFRLEdBQUdjLFVBQVUsR0FBR0EsVUFBVSxDQUFDRSxRQUFYLENBQW9CQyxXQUF2QixHQUFxQ2xCLEtBQUssQ0FBQ2MsU0FBdEUsQ0FGZ0YsQ0FHaEY7O0FBQ0EsNEZBQXlCLEtBQUtLLGlCQUFMLENBQXVCbkIsS0FBdkIsRUFBOEJDLFFBQTlCLEVBQXdDQyxLQUF4QyxDQUF6QixFQUF5RUEsS0FBekU7QUFDRDs7OzhCQUVTRixLLEVBQW9EO0FBQzVELFVBQUlxQixNQUFNLGdGQUFtQnJCLEtBQW5CLENBQVY7O0FBQ0EsVUFBSXFCLE1BQU0sS0FBSyxNQUFmLEVBQXVCO0FBQ3JCQSxRQUFBQSxNQUFNLEdBQUcsV0FBVDtBQUNEOztBQUNELGFBQU9BLE1BQVA7QUFDRDs7O3lEQUdDQyxRLFNBUVE7QUFBQSxVQU5OekIsdUJBTU0sU0FOTkEsdUJBTU07QUFBQSxVQUxOQyxZQUtNLFNBTE5BLFlBS007QUFDUjtBQUNBLFVBQU15QixjQUFjLEdBQ2pCLGVBQWVkLElBQUksQ0FBQ2UsR0FBTCxDQUFVRixRQUFRLENBQUNHLFFBQVQsR0FBb0JoQixJQUFJLENBQUNpQixFQUExQixHQUFnQyxHQUF6QyxDQUFoQixHQUFpRWpCLElBQUksQ0FBQ2tCLEdBQUwsQ0FBUyxDQUFULEVBQVlMLFFBQVEsQ0FBQ00sSUFBckIsQ0FEbkU7QUFHQSxhQUFRTCxjQUFjLElBQUkxQix1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUE3QyxDQUFmLEdBQW9FLENBQTNFO0FBQ0Q7Ozs7RUFyRWdDK0Isc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2RlUHJvcHMsIFBvaW50ZXJNb3ZlRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9kaWZ5TW9kZSB9IGZyb20gJy4vbW9kaWZ5LW1vZGUnO1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlKHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gIHNjcmVlbkNvb3Jkcyxcbn06IHtcbiAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xufSkge1xuICByZXR1cm4gMTAgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pO1xufVxuXG5leHBvcnQgY2xhc3MgRWxldmF0aW9uTW9kZSBleHRlbmRzIE1vZGlmeU1vZGUge1xuICBtYWtlRWxldmF0ZWRFdmVudChcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudCB8IFN0b3BEcmFnZ2luZ0V2ZW50LFxuICAgIHBvc2l0aW9uOiBQb3NpdGlvbixcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgaWYgKCFldmVudC5wb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH1cblxuICAgIC8vICRGbG93Rml4TWUgLSByZWFsbHksIEkga25vdyBpdCBoYXMgc29tZXRoaW5nIGF0IGluZGV4IDJcbiAgICBsZXQgZWxldmF0aW9uID0gcG9zaXRpb24ubGVuZ3RoID09PSAzID8gcG9zaXRpb25bMl0gOiAwO1xuXG4gICAgLy8gY2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlIGlzIGNvbmZpZ3VyYWJsZSBiZWNhdXNlIChhdCB0aGlzIHRpbWUpIG1vZGVzIGFyZSBub3QgYXdhcmUgb2YgdGhlIHZpZXdwb3J0XG4gICAgZWxldmF0aW9uICs9IGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZSh7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBzY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICB9KTtcbiAgICBlbGV2YXRpb24gPSBNYXRoLm1pbihlbGV2YXRpb24sIG1heEVsZXZhdGlvbik7XG4gICAgZWxldmF0aW9uID0gTWF0aC5tYXgoZWxldmF0aW9uLCBtaW5FbGV2YXRpb24pO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IFtwb3NpdGlvblswXSwgcG9zaXRpb25bMV0sIGVsZXZhdGlvbl0sXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbiwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGVkaXRIYW5kbGUgPyBlZGl0SGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzIDogZXZlbnQubWFwQ29vcmRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5tYWtlRWxldmF0ZWRFdmVudChldmVudCwgcG9zaXRpb24sIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGN1cnNvciA9IHN1cGVyLmdldEN1cnNvcihldmVudCk7XG4gICAgaWYgKGN1cnNvciA9PT0gJ2NlbGwnKSB7XG4gICAgICBjdXJzb3IgPSAnbnMtcmVzaXplJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2VXaXRoVmlld3BvcnQoXG4gICAgdmlld3BvcnQ6IGFueSxcbiAgICB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICB9OiB7XG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgICBzY3JlZW5Db29yZHM6IFBvc2l0aW9uO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICAvLyBTb3VyY2U6IGh0dHBzOi8vZ2lzLnN0YWNrZXhjaGFuZ2UuY29tL2EvMTI3OTQ5LzExMTgwNFxuICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID1cbiAgICAgICgxNTY1NDMuMDMzOTIgKiBNYXRoLmNvcygodmlld3BvcnQubGF0aXR1ZGUgKiBNYXRoLlBJKSAvIDE4MCkpIC8gTWF0aC5wb3coMiwgdmlld3BvcnQuem9vbSk7XG5cbiAgICByZXR1cm4gKG1ldGVyc1BlclBpeGVsICogKHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdIC0gc2NyZWVuQ29vcmRzWzFdKSkgLyAyO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/extend-line-string-mode.js b/modules/edit-modes/dist/lib/extend-line-string-mode.js new file mode 100644 index 000000000..a372cab26 --- /dev/null +++ b/modules/edit-modes/dist/lib/extend-line-string-mode.js @@ -0,0 +1,138 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtendLineStringMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ExtendLineStringMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ExtendLineStringMode, _GeoJsonEditMode); + + var _super = _createSuper(ExtendLineStringMode); + + function ExtendLineStringMode() { + _classCallCheck(this, ExtendLineStringMode); + + return _super.apply(this, arguments); + } + + _createClass(ExtendLineStringMode, [{ + key: "getSingleSelectedLineString", + value: function getSingleSelectedLineString(props) { + var selectedGeometry = this.getSelectedGeometry(props); + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + return selectedGeometry; + } + + return null; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var selectedIndexes = props.selectedIndexes; + var selectedLineString = this.getSingleSelectedLineString(props); + + if (!selectedLineString) { + console.warn("ExtendLineStringMode only supported for single LineString selection"); // eslint-disable-line + + return; + } // Extend the LineString + + + var positionIndexes = [selectedLineString.coordinates.length]; + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.drawAtFront) { + positionIndexes = [0]; + } + + var featureIndex = selectedIndexes[0]; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: event.mapCoords + } + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var selectedLineString = this.getSingleSelectedLineString(props); + + if (!selectedLineString) { + // nothing to do + // @ts-ignore + return guides; + } + + var mapCoords = props.lastPointerMoveEvent && props.lastPointerMoveEvent.mapCoords; // Draw an extension line starting from one end of the selected LineString to the cursor + + var startPosition = null; + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.drawAtFront) { + startPosition = selectedLineString.coordinates[0]; + } else { + startPosition = selectedLineString.coordinates[selectedLineString.coordinates.length - 1]; + } + + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [startPosition, mapCoords] + } + }); // @ts-ignore + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }]); + + return ExtendLineStringMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ExtendLineStringMode = ExtendLineStringMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0ZW5kLWxpbmUtc3RyaW5nLW1vZGUudHMiXSwibmFtZXMiOlsiRXh0ZW5kTGluZVN0cmluZ01vZGUiLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidHlwZSIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleGVzIiwic2VsZWN0ZWRMaW5lU3RyaW5nIiwiZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nIiwiY29uc29sZSIsIndhcm4iLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsIm1vZGVDb25maWciLCJkcmF3QXRGcm9udCIsImZlYXR1cmVJbmRleCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwiYWRkUG9zaXRpb24iLCJtYXBDb29yZHMiLCJnZXRPYmplY3QiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJwb3NpdGlvbiIsImd1aWRlcyIsImZlYXR1cmVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJzdGFydFBvc2l0aW9uIiwicHVzaCIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsIm9uVXBkYXRlQ3Vyc29yIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxvQjs7Ozs7Ozs7Ozs7OztnREFDaUJDLEssRUFBb0U7QUFDOUYsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsQ0FBeUJGLEtBQXpCLENBQXpCOztBQUVBLFVBQUlDLGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FBQ0UsSUFBakIsS0FBMEIsWUFBbEQsRUFBZ0U7QUFDOUQsZUFBT0YsZ0JBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O2dDQUVXRyxLLEVBQW1CSixLLEVBQXFDO0FB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LGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24sIExpbmVTdHJpbmcsIEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuZExpbmVTdHJpbmdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgZ2V0U2luZ2xlU2VsZWN0ZWRMaW5lU3RyaW5nKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogTGluZVN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkocHJvcHMpO1xuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZEdlb21ldHJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRJbmRleGVzIH0gPSBwcm9wcztcbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG5cbiAgICBpZiAoIXNlbGVjdGVkTGluZVN0cmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBFeHRlbmRMaW5lU3RyaW5nTW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRlbmQgdGhlIExpbmVTdHJpbmdcbiAgICBsZXQgcG9zaXRpb25JbmRleGVzID0gW3NlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlcy5sZW5ndGhdO1xuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgIH1cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQubWFwQ29vcmRzKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcHJvcHMub25FZGl0KHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBndWlkZXMgPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdCBzZWxlY3RlZExpbmVTdHJpbmcgPSB0aGlzLmdldFNpbmdsZVNlbGVjdGVkTGluZVN0cmluZyhwcm9wcyk7XG4gICAgaWYgKCFzZWxlY3RlZExpbmVTdHJpbmcpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwQ29vcmRzID0gcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgLy8gRHJhdyBhbiBleHRlbnNpb24gbGluZSBzdGFydGluZyBmcm9tIG9uZSBlbmQgb2YgdGhlIHNlbGVjdGVkIExpbmVTdHJpbmcgdG8gdGhlIGN1cnNvclxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5kcmF3QXRGcm9udCkge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGVkTGluZVN0cmluZy5jb29yZGluYXRlc1tzZWxlY3RlZExpbmVTdHJpbmcuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBtYXBDb29yZHNdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/extrude-mode.js b/modules/edit-modes/dist/lib/extrude-mode.js new file mode 100644 index 000000000..b2803dcd0 --- /dev/null +++ b/modules/edit-modes/dist/lib/extrude-mode.js @@ -0,0 +1,321 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtrudeMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _utils = require("../utils"); + +var _modifyMode = require("./modify-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ExtrudeMode = /*#__PURE__*/function (_ModifyMode) { + _inherits(ExtrudeMode, _ModifyMode); + + var _super = _createSuper(ExtrudeMode); + + function ExtrudeMode() { + var _this; + + _classCallCheck(this, ExtrudeMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "isPointAdded", false); + + return _this; + } + + _createClass(ExtrudeMode, [{ + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + var featureIndex = editHandle.properties.featureIndex; + var positionIndexes = editHandle.properties.positionIndexes; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); + positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + // p3 and p4 are end points for moving (extruding) edge + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'extruding', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: this.nextPositionIndexes(positionIndexes, size), + position: p3 + } + }); + event.cancelPan(); + } + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var _editHandle$propertie = editHandle.properties, + positionIndexes = _editHandle$propertie.positionIndexes, + featureIndex = _editHandle$propertie.featureIndex; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + + if (!this.isOrthogonal(positionIndexes, featureIndex, size, props.data)) { + updatedData = updatedData.addPosition(featureIndex, positionIndexes, p2); + } + + if (!this.isOrthogonal(this.prevPositionIndexes(positionIndexes, size), featureIndex, size, props.data)) { + updatedData = updatedData.addPosition(featureIndex, positionIndexes, p1); + this.isPointAdded = true; + } + + props.onEdit({ + updatedData: updatedData.getObject(), + editType: 'startExtruding', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: p1 + } + }); + } + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (selectedFeatureIndexes.length && editHandle) { + var featureIndex = editHandle.properties.featureIndex; + var positionIndexes = editHandle.properties.positionIndexes; + var size = this.coordinatesSize(positionIndexes, featureIndex, props.data); + positionIndexes = this.isPointAdded ? this.nextPositionIndexes(positionIndexes, size) : positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, props.data); + var p2 = this.getPointForPositionIndexes(positionIndexes, featureIndex, props.data); + + if (p1 && p2) { + // p3 and p4 are end points for new moved (extruded) edge + var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.mapCoords), + _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2), + p3 = _generatePointsParall4[0], + p4 = _generatePointsParall4[1]; + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(featureIndex, positionIndexes, p3).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'extruded', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: p3 + } + }); + } + } + + this.isPointAdded = false; + } + }, { + key: "coordinatesSize", + value: function coordinatesSize(positionIndexes, featureIndex, _ref) { + var features = _ref.features; + var size = 0; + + if (Array.isArray(positionIndexes)) { + var feature = features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes = _slicedToArray(positionIndexes, 2), + a = _positionIndexes[0], + b = _positionIndexes[1]; + + if (coordinates.length && coordinates[a].length) { + size = coordinates[a][b].length; + } + } else { + var _positionIndexes2 = _slicedToArray(positionIndexes, 1), + _b = _positionIndexes2[0]; + + if (coordinates.length && coordinates[_b].length) { + size = coordinates[_b].length; + } + } + } + + return size; + } + }, { + key: "getBearing", + value: function getBearing(p1, p2) { + var angle = (0, _bearing["default"])(p1, p2); + + if (angle < 0) { + return Math.floor(360 + angle); + } + + return Math.floor(angle); + } + }, { + key: "isOrthogonal", + value: function isOrthogonal(positionIndexes, featureIndex, size, features) { + if (!Array.isArray(positionIndexes)) { + return false; + } + + if (positionIndexes[positionIndexes.length - 1] === size - 1) { + positionIndexes[positionIndexes.length - 1] = 0; + } + + var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex, features); + var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex, features); + var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex, features); + var prevAngle = this.getBearing(currentPoint, prevPoint); + var nextAngle = this.getBearing(currentPoint, nextPoint); + return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle)); + } + }, { + key: "nextPositionIndexes", + value: function nextPositionIndexes(positionIndexes, size) { + if (!Array.isArray(positionIndexes)) { + return []; + } + + var next = _toConsumableArray(positionIndexes); + + if (next.length) { + next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1; + } + + return next; + } + }, { + key: "prevPositionIndexes", + value: function prevPositionIndexes(positionIndexes, size) { + if (!Array.isArray(positionIndexes)) { + return []; + } + + var prev = _toConsumableArray(positionIndexes); + + if (prev.length) { + prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1; + } + + return prev; + } + }, { + key: "getPointForPositionIndexes", + value: function getPointForPositionIndexes(positionIndexes, featureIndex, _ref2) { + var features = _ref2.features; + var p1; + + if (Array.isArray(positionIndexes)) { + var feature = features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes3 = _slicedToArray(positionIndexes, 3), + a = _positionIndexes3[0], + b = _positionIndexes3[1], + c = _positionIndexes3[2]; + + if (coordinates.length && coordinates[a].length) { + p1 = coordinates[a][b][c]; + } + } else { + var _positionIndexes4 = _slicedToArray(positionIndexes, 2), + _b2 = _positionIndexes4[0], + _c = _positionIndexes4[1]; + + if (coordinates.length && coordinates[_b2].length) { + p1 = coordinates[_b2][_c]; + } + } + } + + return p1; + } + }]); + + return ExtrudeMode; +}(_modifyMode.ModifyMode); + +exports.ExtrudeMode = ExtrudeMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXh0cnVkZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkV4dHJ1ZGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiZmVhdHVyZUluZGV4IiwicHJvcGVydGllcyIsInBvc2l0aW9uSW5kZXhlcyIsInNpemUiLCJjb29yZGluYXRlc1NpemUiLCJkYXRhIiwiaXNQb2ludEFkZGVkIiwibmV4dFBvc2l0aW9uSW5kZXhlcyIsInAxIiwiZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMiLCJwcmV2UG9zaXRpb25JbmRleGVzIiwicDIiLCJtYXBDb29yZHMiLCJwMyIsInA0IiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VQb3NpdGlvbiIsImdldE9iamVjdCIsIm9uRWRpdCIsImVkaXRUeXBlIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsInBvc2l0aW9uIiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkSW5kZXhlcyIsInBpY2tzIiwibGVuZ3RoIiwiaXNPcnRob2dvbmFsIiwiYWRkUG9zaXRpb24iLCJmZWF0dXJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsImdlb21ldHJ5IiwiYSIsImIiLCJhbmdsZSIsIk1hdGgiLCJmbG9vciIsInByZXZQb2ludCIsIm5leHRQb2ludCIsImN1cnJlbnRQb2ludCIsInByZXZBbmdsZSIsImdldEJlYXJpbmciLCJuZXh0QW5nbGUiLCJpbmNsdWRlcyIsImFicyIsIm5leHQiLCJwcmV2IiwiYyIsIk1vZGlmeU1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQU9BOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFc7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBR0ksSzs7Ozs7OzttQ0FFQUMsSyxFQUFzQkMsSyxFQUEyQztBQUM5RSxVQUFNQyxVQUFVLEdBQUcsZ0NBQW9CRixLQUFLLENBQUNHLGdCQUExQixDQUFuQjs7QUFFQSxVQUFJRCxVQUFKLEVBQWdCO0FBQUEsWUFDTkUsWUFETSxHQUNXRixVQUFVLENBQUNHLFVBRHRCLENBQ05ELFlBRE07QUFBQSxZQUVSRSxlQUZRLEdBRVlKLFVBQVUsQ0FBQ0csVUFGdkIsQ0FFUkMsZUFGUTtBQUlkLFlBQU1DLElBQUksR0FBRyxLQUFLQyxlQUFMLENBQXFCRixlQUFyQixFQUFzQ0YsWUFBdEMsRUFBb0RILEtBQUssQ0FBQ1EsSUFBMUQsQ0FBYjtBQUNBSCxRQUFBQSxlQUFlLEdBQUcsS0FBS0ksWUFBTCxHQUNkLEtBQUtDLG1CQUFMLENBQXlCTCxlQUF6QixFQUEwQ0MsSUFBMUMsQ0FEYyxHQUVkRCxlQUZKLENBTGMsQ0FRZDs7QUFDQSxZQUFNTSxFQUFFLEdBQUcsS0FBS0MsMEJBQUwsQ0FDVCxLQUFLQyxtQkFBTCxDQUF5QlIsZUFBekIsRUFBMENDLElBQTFDLENBRFMsRUFFVEgsWUFGUyxFQUdUSCxLQUFLLENBQUNRLElBSEcsQ0FBWDtBQUtBLFlBQU1NLEVBQUUsR0FBRyxLQUFLRiwwQkFBTCxDQUFnQ1AsZUFBaEMsRUFBaURGLFlBQWpELEVBQStESCxLQUFLLENBQUNRLElBQXJFLENBQVg7O0FBQ0EsWUFBSUcsRUFBRSxJQUFJRyxFQUFWLEVBQWM7QUFDWjtBQURZLHNDQUVLLCtDQUFtQ0gsRUFBbkMsRUFBdUNHLEVBQXZDLEVBQTJDZixLQUFLLENBQUNnQixTQUFqRCxDQUZMO0FBQUE7QUFBQSxjQUVMQyxFQUZLO0FBQUEsY0FFREMsRUFGQzs7QUFJWixjQUFNQyxXQUFXLEdBQUcsSUFBSUMsc0RBQUosQ0FBK0JuQixLQUFLLENBQUNRLElBQXJDLEVBQ2pCWSxlQURpQixDQUNEakIsWUFEQyxFQUNhLEtBQUtVLG1CQUFMLENBQXlCUixlQUF6QixFQUEwQ0MsSUFBMUMsQ0FEYixFQUM4RFcsRUFEOUQsRUFFakJHLGVBRmlCLENBRURqQixZQUZDLEVBRWFFLGVBRmIsRUFFOEJXLEVBRjlCLEVBR2pCSyxTQUhpQixFQUFwQjtBQUtBckIsVUFBQUEsS0FBSyxDQUFDc0IsTUFBTixDQUFhO0FBQ1hKLFlBQUFBLFdBQVcsRUFBWEEsV0FEVztBQUVYSyxZQUFBQSxRQUFRLEVBQUUsV0FGQztBQUdYQyxZQUFBQSxXQUFXLEVBQUU7QUFDWEMsY0FBQUEsY0FBYyxFQUFFLENBQUN0QixZQUFELENBREw7QUFFWEUsY0FBQUEsZUFBZSxFQUFFLEtBQUtLLG1CQUFMLENBQXlCTCxlQUF6QixFQUEwQ0MsSUFBMUMsQ0FGTjtBQUdYb0IsY0FBQUEsUUFBUSxFQUFFVjtBQUhDO0FBSEYsV0FBYjtBQVVBakIsVUFBQUEsS0FBSyxDQUFDNEIsU0FBTjtBQUNEO0FBQ0Y7QUFDRjs7O3dDQUVtQjVCLEssRUFBMkJDLEssRUFBcUM7QUFDbEYsVUFBTTRCLHNCQUFzQixHQUFHNUIsS0FBSyxDQUFDNkIsZUFBckM7QUFFQSxVQUFNNUIsVUFBVSxHQUFHLDRDQUFnQ0YsS0FBSyxDQUFDK0IsS0FBdEMsQ0FBbkI7O0FBQ0EsVUFBSUYsc0JBQXNCLENBQUNHLE1BQXZCLElBQWlDOUIsVUFBckMsRUFBaUQ7QUFBQSxvQ0FDTEEsVUFBVSxDQUFDRyxVQUROO0FBQUEsWUFDdkNDLGVBRHVDLHlCQUN2Q0EsZUFEdUM7QUFBQSxZQUN0QkYsWUFEc0IseUJBQ3RCQSxZQURzQjtBQUcvQyxZQUFNRyxJQUFJLEdBQUcsS0FBS0MsZUFBTCxDQUFxQkYsZUFBckIsRUFBc0NGLFlBQXRDLEVBQW9ESCxLQUFLLENBQUNRLElBQTFELENBQWIsQ0FIK0MsQ0FJL0M7O0FBQ0EsWUFBTUcsRUFBRSxHQUFHLEtBQUtDLDBCQUFMLENBQ1QsS0FBS0MsbUJBQUwsQ0FBeUJSLGVBQXpCLEVBQTBDQyxJQUExQyxDQURTLEVBRVRILFlBRlMsRUFHVEgsS0FBSyxDQUFDUSxJQUhHLENBQVg7QUFLQSxZQUFNTSxFQUFFLEdBQUcsS0FBS0YsMEJBQUwsQ0FBZ0NQLGVBQWhDLEVBQWlERixZQUFqRCxFQUErREgsS0FBSyxDQUFDUSxJQUFyRSxDQUFYOztBQUVBLFlBQUlHLEVBQUUsSUFBSUcsRUFBVixFQUFjO0FBQ1osY0FBSUksV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCbkIsS0FBSyxDQUFDUSxJQUFyQyxDQUFsQjs7QUFDQSxjQUFJLENBQUMsS0FBS3dCLFlBQUwsQ0FBa0IzQixlQUFsQixFQUFtQ0YsWUFBbkMsRUFBaURHLElBQWpELEVBQXVETixLQUFLLENBQUNRLElBQTdELENBQUwsRUFBeUU7QUFDdkVVLFlBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDZSxXQUFaLENBQXdCOUIsWUFBeEIsRUFBc0NFLGVBQXRDLEVBQXVEUyxFQUF2RCxDQUFkO0FBQ0Q7O0FBQ0QsY0FDRSxDQUFDLEtBQUtrQixZQUFMLENBQ0MsS0FBS25CLG1CQUFMLENBQXlCUixlQUF6QixFQUEwQ0MsSUFBMUMsQ0FERCxFQUVDSCxZQUZELEVBR0NHLElBSEQsRUFJQ04sS0FBSyxDQUFDUSxJQUpQLENBREgsRUFPRTtBQUNBVSxZQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ2UsV0FBWixDQUF3QjlCLFlBQXhCLEVBQXNDRSxlQUF0QyxFQUF1RE0sRUFBdkQsQ0FBZDtBQUNBLGlCQUFLRixZQUFMLEdBQW9CLElBQXBCO0FBQ0Q7O0FBRURULFVBQUFBLEtBQUssQ0FBQ3NCLE1BQU4sQ0FBYTtBQUNYSixZQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ0csU0FBWixFQURGO0FBRVhFLFlBQUFBLFFBQVEsRUFBRSxnQkFGQztBQUdYQyxZQUFBQSxXQUFXLEVBQUU7QUFDWEMsY0FBQUEsY0FBYyxFQUFFLENBQUN0QixZQUFELENBREw7QUFFWEUsY0FBQUEsZUFBZSxFQUFmQSxlQUZXO0FBR1hxQixjQUFBQSxRQUFRLEVBQUVmO0FBSEM7QUFIRixXQUFiO0FBU0Q7QUFDRjtBQUNGOzs7dUNBRWtCWixLLEVBQTBCQyxLLEVBQXFDO0FBQ2hGLFVBQU00QixzQkFBc0IsR0FBRzVCLEtBQUssQ0FBQzZCLGVBQXJDO0FBQ0EsVUFBTTVCLFVBQVUsR0FBRyxnQ0FBb0JGLEtBQUssQ0FBQ0csZ0JBQTFCLENBQW5COztBQUNBLFVBQUkwQixzQkFBc0IsQ0FBQ0csTUFBdkIsSUFBaUM5QixVQUFyQyxFQUFpRDtBQUFBLFlBQ3ZDRSxZQUR1QyxHQUN0QkYsVUFBVSxDQUFDRyxVQURXLENBQ3ZDRCxZQUR1QztBQUFBLFlBRXpDRSxlQUZ5QyxHQUVyQkosVUFBVSxDQUFDRyxVQUZVLENBRXpDQyxlQUZ5QztBQUkvQyxZQUFNQyxJQUFJLEdBQUcsS0FBS0MsZUFBTCxDQUFxQkYsZUFBckIsRUFBc0NGLFlBQXRDLEVBQW9ESCxLQUFLLENBQUNRLElBQTFELENBQWI7QUFDQUgsUUFBQUEsZUFBZSxHQUFHLEtBQUtJLFlBQUwsR0FDZCxLQUFLQyxtQkFBTCxDQUF5QkwsZUFBekIsRUFBMENDLElBQTFDLENBRGMsR0FFZEQsZUFGSixDQUwrQyxDQVEvQzs7QUFDQSxZQUFNTSxFQUFFLEdBQUcsS0FBS0MsMEJBQUwsQ0FDVCxLQUFLQyxtQkFBTCxDQUF5QlIsZUFBekIsRUFBMENDLElBQTFDLENBRFMsRUFFVEgsWUFGUyxFQUdUSCxLQUFLLENBQUNRLElBSEcsQ0FBWDtBQUtBLFlBQU1NLEVBQUUsR0FBRyxLQUFLRiwwQkFBTCxDQUFnQ1AsZUFBaEMsRUFBaURGLFlBQWpELEVBQStESCxLQUFLLENBQUNRLElBQXJFLENBQVg7O0FBRUEsWUFBSUcsRUFBRSxJQUFJRyxFQUFWLEVBQWM7QUFDWjtBQURZLHVDQUVLLCtDQUFtQ0gsRUFBbkMsRUFBdUNHLEVBQXZDLEVBQTJDZixLQUFLLENBQUNnQixTQUFqRCxDQUZMO0FBQUE7QUFBQSxjQUVMQyxFQUZLO0FBQUEsY0FFREMsRUFGQzs7QUFJWixjQUFNQyxXQUFXLEdBQUcsSUFBSUMsc0RBQUosQ0FBK0JuQixLQUFLLENBQUNRLElBQXJDLEVBQ2pCWSxlQURpQixDQUNEakIsWUFEQyxFQUNhLEtBQUtVLG1CQUFMLENBQXlCUixlQUF6QixFQUEwQ0MsSUFBMUMsQ0FEYixFQUM4RFcsRUFEOUQsRUFFakJHLGVBRmlCLENBRURqQixZQUZDLEVBRWFFLGVBRmIsRUFFOEJXLEVBRjlCLEVBR2pCSyxTQUhpQixFQUFwQjtBQUtBckIsVUFBQUEsS0FBSyxDQUFDc0IsTUFBTixDQUFhO0FBQ1hKLFlBQUFBLFdBQVcsRUFBWEEsV0FEVztBQUVYSyxZQUFBQSxRQUFRLEVBQUUsVUFGQztBQUdYQyxZQUFBQSxXQUFXLEVBQUU7QUFDWEMsY0FBQUEsY0FBYyxFQUFFLENBQUN0QixZQUFELENBREw7QUFFWEUsY0FBQUEsZUFBZSxFQUFmQSxlQUZXO0FBR1hxQixjQUFBQSxRQUFRLEVBQUVWO0FBSEM7QUFIRixXQUFiO0FBU0Q7QUFDRjs7QUFDRCxXQUFLUCxZQUFMLEdBQW9CLEtBQXBCO0FBQ0Q7OztvQ0FHQ0osZSxFQUNBRixZLFFBRUE7QUFBQSxVQURFK0IsUUFDRixRQURFQSxRQUNGO0FBQ0EsVUFBSTVCLElBQUksR0FBRyxDQUFYOztBQUNBLFVBQUk2QixLQUFLLENBQUNDLE9BQU4sQ0FBYy9CLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxZQUFNZ0MsT0FBTyxHQUFHSCxRQUFRLENBQUMvQixZQUFELENBQXhCO0FBQ0EsWUFBTW1DLFdBQWdCLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUixDQUFpQkQsV0FBMUMsQ0FGa0MsQ0FHbEM7O0FBQ0EsWUFBSWpDLGVBQWUsQ0FBQzBCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQUEsZ0RBQ2pCMUIsZUFEaUI7QUFBQSxjQUN6Qm1DLENBRHlCO0FBQUEsY0FDdEJDLENBRHNCOztBQUVoQyxjQUFJSCxXQUFXLENBQUNQLE1BQVosSUFBc0JPLFdBQVcsQ0FBQ0UsQ0FBRCxDQUFYLENBQWVULE1BQXpDLEVBQWlEO0FBQy9DekIsWUFBQUEsSUFBSSxHQUFHZ0MsV0FBVyxDQUFDRSxDQUFELENBQVgsQ0FBZUMsQ0FBZixFQUFrQlYsTUFBekI7QUFDRDtBQUNGLFNBTEQsTUFLTztBQUFBLGlEQUNPMUIsZUFEUDtBQUFBLGNBQ0VvQyxFQURGOztBQUVMLGNBQUlILFdBQVcsQ0FBQ1AsTUFBWixJQUFzQk8sV0FBVyxDQUFDRyxFQUFELENBQVgsQ0FBZVYsTUFBekMsRUFBaUQ7QUFDL0N6QixZQUFBQSxJQUFJLEdBQUdnQyxXQUFXLENBQUNHLEVBQUQsQ0FBWCxDQUFlVixNQUF0QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxhQUFPekIsSUFBUDtBQUNEOzs7K0JBRVVLLEUsRUFBU0csRSxFQUFTO0FBQzNCLFVBQU00QixLQUFLLEdBQUcseUJBQVEvQixFQUFSLEVBQVlHLEVBQVosQ0FBZDs7QUFDQSxVQUFJNEIsS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiLGVBQU9DLElBQUksQ0FBQ0MsS0FBTCxDQUFXLE1BQU1GLEtBQWpCLENBQVA7QUFDRDs7QUFDRCxhQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0YsS0FBWCxDQUFQO0FBQ0Q7OztpQ0FHQ3JDLGUsRUFDQUYsWSxFQUNBRyxJLEVBQ0E0QixRLEVBQ0E7QUFDQSxVQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTixDQUFjL0IsZUFBZCxDQUFMLEVBQXFDO0FBQ25DLGVBQU8sS0FBUDtBQUNEOztBQUNELFVBQUlBLGVBQWUsQ0FBQ0EsZUFBZSxDQUFDMEIsTUFBaEIsR0FBeUIsQ0FBMUIsQ0FBZixLQUFnRHpCLElBQUksR0FBRyxDQUEzRCxFQUE4RDtBQUM1REQsUUFBQUEsZUFBZSxDQUFDQSxlQUFlLENBQUMwQixNQUFoQixHQUF5QixDQUExQixDQUFmLEdBQThDLENBQTlDO0FBQ0Q7O0FBQ0QsVUFBTWMsU0FBUyxHQUFHLEtBQUtqQywwQkFBTCxDQUNoQixLQUFLQyxtQkFBTCxDQUF5QlIsZUFBekIsRUFBMENDLElBQTFDLENBRGdCLEVBRWhCSCxZQUZnQixFQUdoQitCLFFBSGdCLENBQWxCO0FBS0EsVUFBTVksU0FBUyxHQUFHLEtBQUtsQywwQkFBTCxDQUNoQixLQUFLRixtQkFBTCxDQUF5QkwsZUFBekIsRUFBMENDLElBQTFDLENBRGdCLEVBRWhCSCxZQUZnQixFQUdoQitCLFFBSGdCLENBQWxCO0FBS0EsVUFBTWEsWUFBWSxHQUFHLEtBQUtuQywwQkFBTCxDQUFnQ1AsZUFBaEMsRUFBaURGLFlBQWpELEVBQStEK0IsUUFBL0QsQ0FBckI7QUFDQSxVQUFNYyxTQUFTLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkYsWUFBaEIsRUFBOEJGLFNBQTlCLENBQWxCO0FBQ0EsVUFBTUssU0FBUyxHQUFHLEtBQUtELFVBQUwsQ0FBZ0JGLFlBQWhCLEVBQThCRCxTQUE5QixDQUFsQjtBQUNBLGFBQU8sQ0FBQyxFQUFELEVBQUssRUFBTCxFQUFTLEVBQVQsRUFBYSxHQUFiLEVBQWtCLEdBQWxCLEVBQXVCLEdBQXZCLEVBQTRCSyxRQUE1QixDQUFxQ1IsSUFBSSxDQUFDUyxHQUFMLENBQVNKLFNBQVMsR0FBR0UsU0FBckIsQ0FBckMsQ0FBUDtBQUNEOzs7d0NBRW1CN0MsZSxFQUE4Q0MsSSxFQUF3QjtBQUN4RixVQUFJLENBQUM2QixLQUFLLENBQUNDLE9BQU4sQ0FBYy9CLGVBQWQsQ0FBTCxFQUFxQztBQUNuQyxlQUFPLEVBQVA7QUFDRDs7QUFDRCxVQUFNZ0QsSUFBSSxzQkFBT2hELGVBQVAsQ0FBVjs7QUFDQSxVQUFJZ0QsSUFBSSxDQUFDdEIsTUFBVCxFQUFpQjtBQUNmc0IsUUFBQUEsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEdBQXdCc0IsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEtBQTBCekIsSUFBSSxHQUFHLENBQWpDLEdBQXFDLENBQXJDLEdBQXlDK0MsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEdBQXdCLENBQXpGO0FBQ0Q7O0FBQ0QsYUFBT3NCLElBQVA7QUFDRDs7O3dDQUVtQmhELGUsRUFBOENDLEksRUFBd0I7QUFDeEYsVUFBSSxDQUFDNkIsS0FBSyxDQUFDQyxPQUFOLENBQWMvQixlQUFkLENBQUwsRUFBcUM7QUFDbkMsZUFBTyxFQUFQO0FBQ0Q7O0FBQ0QsVUFBTWlELElBQUksc0JBQU9qRCxlQUFQLENBQVY7O0FBQ0EsVUFBSWlELElBQUksQ0FBQ3ZCLE1BQVQsRUFBaUI7QUFDZnVCLFFBQUFBLElBQUksQ0FBQ0EsSUFBSSxDQUFDdkIsTUFBTCxHQUFjLENBQWYsQ0FBSixHQUF3QnVCLElBQUksQ0FBQ0EsSUFBSSxDQUFDdkIsTUFBTCxHQUFjLENBQWYsQ0FBSixLQUEwQixDQUExQixHQUE4QnpCLElBQUksR0FBRyxDQUFyQyxHQUF5Q2dELElBQUksQ0FBQ0EsSUFBSSxDQUFDdkIsTUFBTCxHQUFjLENBQWYsQ0FBSixHQUF3QixDQUF6RjtBQUNEOztBQUNELGFBQU91QixJQUFQO0FBQ0Q7OzsrQ0FHQ2pELGUsRUFDQUYsWSxTQUVBO0FBQUEsVUFERStCLFFBQ0YsU0FERUEsUUFDRjtBQUNBLFVBQUl2QixFQUFKOztBQUNBLFVBQUl3QixLQUFLLENBQUNDLE9BQU4sQ0FBYy9CLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxZQUFNZ0MsT0FBTyxHQUFHSCxRQUFRLENBQUMvQixZQUFELENBQXhCO0FBQ0EsWUFBTW1DLFdBQWdCLEdBQUdELE9BQU8sQ0FBQ0UsUUFBUixDQUFpQkQsV0FBMUMsQ0FGa0MsQ0FHbEM7O0FBQ0EsWUFBSWpDLGVBQWUsQ0FBQzBCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQUEsaURBQ2QxQixlQURjO0FBQUEsY0FDekJtQyxDQUR5QjtBQUFBLGNBQ3RCQyxDQURzQjtBQUFBLGNBQ25CYyxDQURtQjs7QUFFaEMsY0FBSWpCLFdBQVcsQ0FBQ1AsTUFBWixJQUFzQk8sV0FBVyxDQUFDRSxDQUFELENBQVgsQ0FBZVQsTUFBekMsRUFBaUQ7QUFDL0NwQixZQUFBQSxFQUFFLEdBQUcyQixXQUFXLENBQUNFLENBQUQsQ0FBWCxDQUFlQyxDQUFmLEVBQWtCYyxDQUFsQixDQUFMO0FBQ0Q7QUFDRixTQUxELE1BS087QUFBQSxpREFDVWxELGVBRFY7QUFBQSxjQUNFb0MsR0FERjtBQUFBLGNBQ0tjLEVBREw7O0FBRUwsY0FBSWpCLFdBQVcsQ0FBQ1AsTUFBWixJQUFzQk8sV0FBVyxDQUFDRyxHQUFELENBQVgsQ0FBZVYsTUFBekMsRUFBaUQ7QUFDL0NwQixZQUFBQSxFQUFFLEdBQUcyQixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsYUFBTzVDLEVBQVA7QUFDRDs7OztFQWpQOEI2QyxzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IE1vZGVQcm9wcywgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCwgRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1vZGlmeU1vZGUgfSBmcm9tICcuL21vZGlmeS1tb2RlJztcbmltcG9ydCB7IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi9pbW11dGFibGUtZmVhdHVyZS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIEV4dHJ1ZGVNb2RlIGV4dGVuZHMgTW9kaWZ5TW9kZSB7XG4gIC8vIHRoaXMgbW9kZSBpcyBidXN0ZWQgPShcblxuICBpc1BvaW50QWRkZWQgPSBmYWxzZTtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCB9ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgICAgbGV0IHsgcG9zaXRpb25JbmRleGVzIH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpXG4gICAgICAgIDogcG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgIHByb3BzLmRhdGFcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHByb3BzLmRhdGEpO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbW92aW5nIChleHRydWRpbmcpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRpbmcnLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHNpemUgPSB0aGlzLmNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgICAgIGlmICghdGhpcy5pc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzLCBmZWF0dXJlSW5kZXgsIHNpemUsIHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc09ydGhvZ29uYWwoXG4gICAgICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBwcm9wcy5kYXRhXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwMSk7XG4gICAgICAgICAgdGhpcy5pc1BvaW50QWRkZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICAgICAgZWRpdFR5cGU6ICdzdGFydEV4dHJ1ZGluZycsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4IH0gPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG4gICAgICBsZXQgeyBwb3NpdGlvbkluZGV4ZXMgfSA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4LCBwcm9wcy5kYXRhKTtcbiAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgcHJvcHMuZGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgcHJvcHMuZGF0YSk7XG5cbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICAvLyBwMyBhbmQgcDQgYXJlIGVuZCBwb2ludHMgZm9yIG5ldyBtb3ZlZCAoZXh0cnVkZWQpIGVkZ2VcbiAgICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZXZlbnQubWFwQ29vcmRzKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSwgcDQpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgcDMpXG4gICAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdleHRydWRlZCcsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwMyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5pc1BvaW50QWRkZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICB7IGZlYXR1cmVzIH06IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICBjb25zdCBmZWF0dXJlID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XTtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgICBpZiAocG9zaXRpb25JbmRleGVzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICBjb25zdCBbYSwgYl0gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgICAgc2l6ZSA9IGNvb3JkaW5hdGVzW2FdW2JdLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgW2JdID0gcG9zaXRpb25JbmRleGVzO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cblxuICBnZXRCZWFyaW5nKHAxOiBhbnksIHAyOiBhbnkpIHtcbiAgICBjb25zdCBhbmdsZSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICBpZiAoYW5nbGUgPCAwKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcigzNjAgKyBhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLmZsb29yKGFuZ2xlKTtcbiAgfVxuXG4gIGlzT3J0aG9nb25hbChcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgZmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uXG4gICkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIGZlYXR1cmVzXG4gICAgKTtcbiAgICBjb25zdCBuZXh0UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBmZWF0dXJlc1xuICAgICk7XG4gICAgY29uc3QgY3VycmVudFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGZlYXR1cmVJbmRleCwgZmVhdHVyZXMpO1xuICAgIGNvbnN0IHByZXZBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIHByZXZQb2ludCk7XG4gICAgY29uc3QgbmV4dEFuZ2xlID0gdGhpcy5nZXRCZWFyaW5nKGN1cnJlbnRQb2ludCwgbmV4dFBvaW50KTtcbiAgICByZXR1cm4gWzg5LCA5MCwgOTEsIDI2OSwgMjcwLCAyNzFdLmluY2x1ZGVzKE1hdGguYWJzKHByZXZBbmdsZSAtIG5leHRBbmdsZSkpO1xuICB9XG5cbiAgbmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLCBzaXplOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgcHJldiA9IFsuLi5wb3NpdGlvbkluZGV4ZXNdO1xuICAgIGlmIChwcmV2Lmxlbmd0aCkge1xuICAgICAgcHJldltwcmV2Lmxlbmd0aCAtIDFdID0gcHJldltwcmV2Lmxlbmd0aCAtIDFdID09PSAwID8gc2l6ZSAtIDIgOiBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gLSAxO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIGdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHsgZmVhdHVyZXMgfTogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKSB7XG4gICAgbGV0IHAxO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBvc2l0aW9uSW5kZXhlcykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBmZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICAvLyBmb3IgTXVsdGkgcG9seWdvbnMsIGxlbmd0aCB3aWxsIGJlIDNcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFthLCBiLCBjXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCAmJiBjb29yZGluYXRlc1thXS5sZW5ndGgpIHtcbiAgICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgICAgcDEgPSBjb29yZGluYXRlc1tiXVtjXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/geojson-edit-mode.js b/modules/edit-modes/dist/lib/geojson-edit-mode.js new file mode 100644 index 000000000..900e95dc8 --- /dev/null +++ b/modules/edit-modes/dist/lib/geojson-edit-mode.js @@ -0,0 +1,325 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getIntermediatePosition = getIntermediatePosition; +exports.GeoJsonEditMode = void 0; + +var _union = _interopRequireDefault(require("@turf/union")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _intersect = _interopRequireDefault(require("@turf/intersect")); + +var _rewind = _interopRequireDefault(require("@turf/rewind")); + +var _utils = require("../utils"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 DEFAULT_GUIDES = { + type: 'FeatureCollection', + features: [] +}; +var DEFAULT_TOOLTIPS = []; // Main interface for `EditMode`s that edit GeoJSON + +var GeoJsonEditMode = /*#__PURE__*/function () { + function GeoJsonEditMode() { + _classCallCheck(this, GeoJsonEditMode); + + _defineProperty(this, "_clickSequence", []); + } + + _createClass(GeoJsonEditMode, [{ + key: "getGuides", + value: function getGuides(props) { + return DEFAULT_GUIDES; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + return DEFAULT_TOOLTIPS; + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature(props) { + if (props.selectedIndexes.length === 1) { + return props.data.features[props.selectedIndexes[0]]; + } + + return null; + } + }, { + key: "getSelectedGeometry", + value: function getSelectedGeometry(props) { + var feature = this.getSelectedFeature(props); + + if (feature) { + return feature.geometry; + } + + return null; + } + }, { + key: "getSelectedFeaturesAsFeatureCollection", + value: function getSelectedFeaturesAsFeatureCollection(props) { + var features = props.data.features; + var selectedFeatures = props.selectedIndexes.map(function (selectedIndex) { + return features[selectedIndex]; + }); + return { + type: 'FeatureCollection', + features: selectedFeatures + }; + } + }, { + key: "getClickSequence", + value: function getClickSequence() { + return this._clickSequence; + } + }, { + key: "addClickSequence", + value: function addClickSequence(_ref) { + var mapCoords = _ref.mapCoords; + + this._clickSequence.push(mapCoords); + } + }, { + key: "resetClickSequence", + value: function resetClickSequence() { + this._clickSequence = []; + } + }, { + key: "getTentativeGuide", + value: function getTentativeGuide(props) { + var guides = this.getGuides(props); // @ts-ignore + + return guides.features.find(function (f) { + return f.properties && f.properties.guideType === 'tentative'; + }); + } + }, { + key: "isSelectionPicked", + value: function isSelectionPicked(picks, props) { + if (!picks.length) return false; + var pickedFeatures = (0, _utils.getNonGuidePicks)(picks).map(function (_ref2) { + var index = _ref2.index; + return index; + }); + var pickedHandles = (0, _utils.getPickedEditHandles)(picks).map(function (_ref3) { + var properties = _ref3.properties; + return properties.featureIndex; + }); + var pickedIndexes = new Set([].concat(_toConsumableArray(pickedFeatures), _toConsumableArray(pickedHandles))); + return props.selectedIndexes.some(function (index) { + return pickedIndexes.has(index); + }); + } + }, { + key: "rewindPolygon", + value: function rewindPolygon(feature) { + var geometry = feature.geometry; + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + if (isPolygonal) { + // @ts-ignore + return (0, _rewind["default"])(feature); + } + + return feature; + } + }, { + key: "getAddFeatureAction", + value: function getAddFeatureAction(featureOrGeometry, features) { + // Unsure why flow can't deal with Geometry type, but there I fixed it + var featureOrGeometryAsAny = featureOrGeometry; + var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : { + type: 'Feature', + properties: {}, + geometry: featureOrGeometryAsAny + }; + var rewindFeature = this.rewindPolygon(feature); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features).addFeature(rewindFeature).getObject(); + return { + updatedData: updatedData, + editType: 'addFeature', + editContext: { + featureIndexes: [updatedData.features.length - 1] + } + }; + } + }, { + key: "getAddManyFeaturesAction", + value: function getAddManyFeaturesAction(_ref4, features) { + var featuresToAdd = _ref4.features; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(features); + var initialIndex = updatedData.getObject().features.length; + var updatedIndexes = []; + + var _iterator = _createForOfIteratorHelper(featuresToAdd), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + var properties = feature.properties, + geometry = feature.geometry; + var geometryAsAny = geometry; + updatedData = updatedData.addFeature({ + type: 'Feature', + properties: properties, + geometry: geometryAsAny + }); + updatedIndexes.push(initialIndex + updatedIndexes.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + updatedData: updatedData.getObject(), + editType: 'addFeature', + editContext: { + featureIndexes: updatedIndexes + } + }; + } + }, { + key: "getAddFeatureOrBooleanPolygonAction", + value: function getAddFeatureOrBooleanPolygonAction(featureOrGeometry, props) { + var featureOrGeometryAsAny = featureOrGeometry; + var selectedFeature = this.getSelectedFeature(props); + var modeConfig = props.modeConfig; + + if (modeConfig && modeConfig.booleanOperation) { + if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection'); + return null; + } + + var feature = featureOrGeometryAsAny.type === 'Feature' ? featureOrGeometryAsAny : { + type: 'Feature', + geometry: featureOrGeometryAsAny + }; + var updatedGeometry; + + if (modeConfig.booleanOperation === 'union') { + updatedGeometry = (0, _union["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'difference') { + // @ts-ignore + updatedGeometry = (0, _difference["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'intersection') { + // @ts-ignore + updatedGeometry = (0, _intersect["default"])(selectedFeature, feature); + } else { + // eslint-disable-next-line no-console,no-undef + console.warn("Invalid booleanOperation ".concat(modeConfig.booleanOperation)); + return null; + } + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Boolean operation erased entire polygon.'); + return null; + } + + var featureIndex = props.selectedIndexes[0]; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, updatedGeometry.geometry).getObject(); + var editAction = { + updatedData: updatedData, + editType: 'unionGeometry', + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + + return this.getAddFeatureAction(featureOrGeometry, props.data); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + return null; + } + }, { + key: "handleClick", + value: function handleClick(event, props) {} + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var tentativeFeature = this.createTentativeFeature(props); + + if (tentativeFeature) { + props.onEdit({ + updatedData: props.data, + editType: 'updateTentativeFeature', + editContext: { + feature: tentativeFeature + } + }); + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) {} + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) {} + }, { + key: "handleDragging", + value: function handleDragging(event, props) {} + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (event.key === 'Escape') { + this.resetClickSequence(); + props.onEdit({ + // Because the new drawing feature is dropped, so the data will keep as the same. + updatedData: props.data, + editType: 'cancelFeature', + editContext: {} + }); + } + } + }]); + + return GeoJsonEditMode; +}(); + +exports.GeoJsonEditMode = GeoJsonEditMode; + +function getIntermediatePosition(position1, position2) { + var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore + + return intermediatePosition; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZ2VvanNvbi1lZGl0LW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9HVUlERVMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJERUZBVUxUX1RPT0xUSVBTIiwiR2VvSnNvbkVkaXRNb2RlIiwicHJvcHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJsZW5ndGgiLCJkYXRhIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsIm1hcCIsInNlbGVjdGVkSW5kZXgiLCJfY2xpY2tTZXF1ZW5jZSIsIm1hcENvb3JkcyIsInB1c2giLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJmaW5kIiwiZiIsInByb3BlcnRpZXMiLCJndWlkZVR5cGUiLCJwaWNrcyIsInBpY2tlZEZlYXR1cmVzIiwiaW5kZXgiLCJwaWNrZWRIYW5kbGVzIiwiZmVhdHVyZUluZGV4IiwicGlja2VkSW5kZXhlcyIsIlNldCIsInNvbWUiLCJoYXMiLCJpc1BvbHlnb25hbCIsImZlYXR1cmVPckdlb21ldHJ5IiwiZmVhdHVyZU9yR2VvbWV0cnlBc0FueSIsInJld2luZEZlYXR1cmUiLCJyZXdpbmRQb2x5Z29uIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImFkZEZlYXR1cmUiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJmZWF0dXJlc1RvQWRkIiwiaW5pdGlhbEluZGV4IiwidXBkYXRlZEluZGV4ZXMiLCJnZW9tZXRyeUFzQW55Iiwic2VsZWN0ZWRGZWF0dXJlIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJjb25zb2xlIiwid2FybiIsInVwZGF0ZWRHZW9tZXRyeSIsInJlcGxhY2VHZW9tZXRyeSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiZXZlbnQiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiY3JlYXRlVGVudGF0aXZlRmVhdHVyZSIsIm9uRWRpdCIsImtleSIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBZ0JBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLElBQU1BLGNBQXNDLEdBQUc7QUFDN0NDLEVBQUFBLElBQUksRUFBRSxtQkFEdUM7QUFFN0NDLEVBQUFBLFFBQVEsRUFBRTtBQUZtQyxDQUEvQztBQUlBLElBQU1DLGdCQUEyQixHQUFHLEVBQXBDLEMsQ0FFQTs7SUFPYUMsZTs7Ozs0Q0FDa0IsRTs7Ozs7OEJBRW5CQyxLLEVBQTZEO0FBQ3JFLGFBQU9MLGNBQVA7QUFDRDs7O2dDQUVXSyxLLEVBQWdEO0FBQzFELGFBQU9GLGdCQUFQO0FBQ0Q7Ozt1Q0FFa0JFLEssRUFBaUU7QUFDbEYsVUFBSUEsS0FBSyxDQUFDQyxlQUFOLENBQXNCQyxNQUF0QixLQUFpQyxDQUFyQyxFQUF3QztBQUN0QyxlQUFPRixLQUFLLENBQUNHLElBQU4sQ0FBV04sUUFBWCxDQUFvQkcsS0FBSyxDQUFDQyxlQUFOLENBQXNCLENBQXRCLENBQXBCLENBQVA7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDRDs7O3dDQUVtQkQsSyxFQUFrRTtBQUNwRixVQUFNSSxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JMLEtBQXhCLENBQWhCOztBQUNBLFVBQUlJLE9BQUosRUFBYTtBQUNYLGVBQU9BLE9BQU8sQ0FBQ0UsUUFBZjtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7MkRBRXNDTixLLEVBQXdEO0FBQUEsVUFDckZILFFBRHFGLEdBQ3hFRyxLQUFLLENBQUNHLElBRGtFLENBQ3JGTixRQURxRjtBQUU3RixVQUFNVSxnQkFBZ0IsR0FBR1AsS0FBSyxDQUFDQyxlQUFOLENBQXNCTyxHQUF0QixDQUEwQixV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SyxFQUEyQyxDQUFFOzs7dUNBQ3pFcUQsSyxFQUEwQnJELEssRUFBMkMsQ0FBRTs7O21DQUMzRXFELEssRUFBc0JyRCxLLEVBQTJDLENBQUU7OztnQ0FFdEVxRCxLLEVBQXNCckQsSyxFQUEyQztBQUMzRSxVQUFJcUQsS0FBSyxDQUFDSSxHQUFOLEtBQWMsUUFBbEIsRUFBNEI7QUFDMUIsYUFBS0Msa0JBQUw7QUFDQTFELFFBQUFBLEtBQUssQ0FBQ3dELE1BQU4sQ0FBYTtBQUNYO0FBQ0F2QixVQUFBQSxXQUFXLEVBQUVqQyxLQUFLLENBQUNHLElBRlI7QUFHWGtDLFVBQUFBLFFBQVEsRUFBRSxlQUhDO0FBSVhDLFVBQUFBLFdBQVcsRUFBRTtBQUpGLFNBQWI7QUFNRDtBQUNGOzs7Ozs7OztBQUdJLFNBQVNxQix1QkFBVCxDQUFpQ0MsU0FBakMsRUFBc0RDLFNBQXRELEVBQXFGO0FBQzFGLE1BQU1DLG9CQUFvQixHQUFHLENBQzNCLENBQUNGLFNBQVMsQ0FBQyxDQUFELENBQVQsR0FBZUMsU0FBUyxDQUFDLENBQUQsQ0FBekIsSUFBZ0MsR0FETCxFQUUzQixDQUFDRCxTQUFTLENBQUMsQ0FBRCxDQUFULEdBQWVDLFNBQVMsQ0FBQyxDQUFELENBQXpCLElBQWdDLEdBRkwsQ0FBN0IsQ0FEMEYsQ0FLMUY7O0FBQ0EsU0FBT0Msb0JBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmVW5pb24gZnJvbSAnQHR1cmYvdW5pb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZJbnRlcnNlY3QgZnJvbSAnQHR1cmYvaW50ZXJzZWN0JztcbmltcG9ydCByZXdpbmQgZnJvbSAnQHR1cmYvcmV3aW5kJztcblxuaW1wb3J0IHtcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUGljayxcbiAgVG9vbHRpcCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9seWdvbiwgR2VvbWV0cnksIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlcywgZ2V0Tm9uR3VpZGVQaWNrcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVkaXRNb2RlIH0gZnJvbSAnLi9lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgdHlwZSBHZW9Kc29uRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5jb25zdCBERUZBVUxUX0dVSURFUzogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgZmVhdHVyZXM6IFtdLFxufTtcbmNvbnN0IERFRkFVTFRfVE9PTFRJUFM6IFRvb2x0aXBbXSA9IFtdO1xuXG4vLyBNYWluIGludGVyZmFjZSBmb3IgYEVkaXRNb2RlYHMgdGhhdCBlZGl0IEdlb0pTT05cbmV4cG9ydCB0eXBlIEdlb0pzb25FZGl0TW9kZVR5cGUgPSBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZUNvbGxlY3Rpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb0pzb25FZGl0TW9kZUNvbnN0cnVjdG9yIHtcbiAgbmV3ICgpOiBHZW9Kc29uRWRpdE1vZGVUeXBlO1xufVxuXG5leHBvcnQgY2xhc3MgR2VvSnNvbkVkaXRNb2RlIGltcGxlbWVudHMgRWRpdE1vZGU8RmVhdHVyZUNvbGxlY3Rpb24sIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgX2NsaWNrU2VxdWVuY2U6IFBvc2l0aW9uW10gPSBbXTtcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gREVGQVVMVF9HVUlERVM7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIERFRkFVTFRfVE9PTFRJUFM7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHByb3BzLnNlbGVjdGVkSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBwcm9wcy5kYXRhLmZlYXR1cmVzW3Byb3BzLnNlbGVjdGVkSW5kZXhlc1swXV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEdlb21ldHJ5IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gcHJvcHMuZGF0YTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzLm1hcCgoc2VsZWN0ZWRJbmRleCkgPT4gZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IHNlbGVjdGVkRmVhdHVyZXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICBhZGRDbGlja1NlcXVlbmNlKHsgbWFwQ29vcmRzIH06IENsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlLnB1c2gobWFwQ29vcmRzKTtcbiAgfVxuXG4gIHJlc2V0Q2xpY2tTZXF1ZW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja1NlcXVlbmNlID0gW107XG4gIH1cblxuICBnZXRUZW50YXRpdmVHdWlkZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRlbnRhdGl2ZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLmdldEd1aWRlcyhwcm9wcyk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcy5mZWF0dXJlcy5maW5kKChmKSA9PiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gJ3RlbnRhdGl2ZScpO1xuICB9XG5cbiAgaXNTZWxlY3Rpb25QaWNrZWQocGlja3M6IFBpY2tbXSwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBib29sZWFuIHtcbiAgICBpZiAoIXBpY2tzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHBpY2tlZEZlYXR1cmVzID0gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrcykubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBwaWNrZWRIYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpLm1hcChcbiAgICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXhcbiAgICApO1xuICAgIGNvbnN0IHBpY2tlZEluZGV4ZXMgPSBuZXcgU2V0KFsuLi5waWNrZWRGZWF0dXJlcywgLi4ucGlja2VkSGFuZGxlc10pO1xuICAgIHJldHVybiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaGFzKGluZGV4KSk7XG4gIH1cblxuICByZXdpbmRQb2x5Z29uKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgaWYgKGlzUG9seWdvbmFsKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcmV3aW5kKGZlYXR1cmUpO1xuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlO1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZUFjdGlvbihcbiAgICBmZWF0dXJlT3JHZW9tZXRyeTogR2VvbWV0cnkgfCBGZWF0dXJlLFxuICAgIGZlYXR1cmVzOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3QgZmVhdHVyZTogYW55ID1cbiAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgID8gZmVhdHVyZU9yR2VvbWV0cnlBc0FueVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgfTtcblxuICAgIGNvbnN0IHJld2luZEZlYXR1cmUgPSB0aGlzLnJld2luZFBvbHlnb24oZmVhdHVyZSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZXMpXG4gICAgICAuYWRkRmVhdHVyZShyZXdpbmRGZWF0dXJlKVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRNYW55RmVhdHVyZXNBY3Rpb24oXG4gICAgeyBmZWF0dXJlczogZmVhdHVyZXNUb0FkZCB9OiBGZWF0dXJlQ29sbGVjdGlvbixcbiAgICBmZWF0dXJlczogRmVhdHVyZUNvbGxlY3Rpb25cbiAgKTogR2VvSnNvbkVkaXRBY3Rpb24ge1xuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlcyk7XG4gICAgY29uc3QgaW5pdGlhbEluZGV4ID0gdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCkuZmVhdHVyZXMubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZWRJbmRleGVzID0gW107XG4gICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzVG9BZGQpIHtcbiAgICAgIGNvbnN0IHsgcHJvcGVydGllcywgZ2VvbWV0cnkgfSA9IGZlYXR1cmU7XG4gICAgICBjb25zdCBnZW9tZXRyeUFzQW55OiBhbnkgPSBnZW9tZXRyeTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZWRJbmRleGVzLnB1c2goaW5pdGlhbEluZGV4ICsgdXBkYXRlZEluZGV4ZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiB1cGRhdGVkSW5kZXhlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uKFxuICAgIGZlYXR1cmVPckdlb21ldHJ5OiBQb2x5Z29uIHwgRmVhdHVyZSxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZlYXR1cmVPckdlb21ldHJ5QXNBbnk6IGFueSA9IGZlYXR1cmVPckdlb21ldHJ5O1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUocHJvcHMpO1xuICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgIGZlYXR1cmVPckdlb21ldHJ5QXNBbnkudHlwZSA9PT0gJ0ZlYXR1cmUnXG4gICAgICAgICAgPyBmZWF0dXJlT3JHZW9tZXRyeUFzQW55XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IGZlYXR1cmVPckdlb21ldHJ5QXNBbnksXG4gICAgICAgICAgICB9O1xuXG4gICAgICBsZXQgdXBkYXRlZEdlb21ldHJ5O1xuICAgICAgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ3VuaW9uJykge1xuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmVW5pb24oc2VsZWN0ZWRGZWF0dXJlLCBmZWF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAnZGlmZmVyZW5jZScpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmRGlmZmVyZW5jZShzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkludGVyc2VjdChzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKGBJbnZhbGlkIGJvb2xlYW5PcGVyYXRpb24gJHttb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb259YCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oJ0NhbmNlbGluZyBlZGl0LiBCb29sZWFuIG9wZXJhdGlvbiBlcmFzZWQgZW50aXJlIHBvbHlnb24uJyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnkpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY29uc3QgZWRpdEFjdGlvbjogR2VvSnNvbkVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBZGRGZWF0dXJlQWN0aW9uKGZlYXR1cmVPckdlb21ldHJ5LCBwcm9wcy5kYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZVRlbnRhdGl2ZUZlYXR1cmUocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBUZW50YXRpdmVGZWF0dXJlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuY3JlYXRlVGVudGF0aXZlRmVhdHVyZShwcm9wcyk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VwZGF0ZVRlbnRhdGl2ZUZlYXR1cmUnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmU6IHRlbnRhdGl2ZUZlYXR1cmUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHt9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIG5ldyBkcmF3aW5nIGZlYXR1cmUgaXMgZHJvcHBlZCwgc28gdGhlIGRhdGEgd2lsbCBrZWVwIGFzIHRoZSBzYW1lLlxuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjYW5jZWxGZWF0dXJlJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHt9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihwb3NpdGlvbjE6IFBvc2l0aW9uLCBwb3NpdGlvbjI6IFBvc2l0aW9uKTogUG9zaXRpb24ge1xuICBjb25zdCBpbnRlcm1lZGlhdGVQb3NpdGlvbiA9IFtcbiAgICAocG9zaXRpb24xWzBdICsgcG9zaXRpb24yWzBdKSAvIDIuMCxcbiAgICAocG9zaXRpb24xWzFdICsgcG9zaXRpb24yWzFdKSAvIDIuMCxcbiAgXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaW50ZXJtZWRpYXRlUG9zaXRpb247XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/immutable-feature-collection.js b/modules/edit-modes/dist/lib/immutable-feature-collection.js new file mode 100644 index 000000000..a1973136d --- /dev/null +++ b/modules/edit-modes/dist/lib/immutable-feature-collection.js @@ -0,0 +1,376 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImmutableFeatureCollection = void 0; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 ImmutableFeatureCollection = /*#__PURE__*/function () { + function ImmutableFeatureCollection(featureCollection) { + _classCallCheck(this, ImmutableFeatureCollection); + + _defineProperty(this, "featureCollection", void 0); + + this.featureCollection = featureCollection; + } + + _createClass(ImmutableFeatureCollection, [{ + key: "getObject", + value: function getObject() { + return this.featureCollection; + } + /** + * Replaces the position deeply nested withing the given feature's geometry. + * Works with Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position to replace + * @param updatedPosition The updated position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given position replaced. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "replacePosition", + value: function replacePosition(featureIndex, positionIndexes, updatedPosition) { + var geometry = this.featureCollection.features[featureIndex].geometry; + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyReplacePosition(geometry.coordinates, positionIndexes, updatedPosition, isPolygonal) + }); + + return this.replaceGeometry(featureIndex, updatedGeometry); + } + /** + * Removes a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the postion to remove + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "removePosition", + value: function removePosition(featureIndex, positionIndexes) { + var geometry = this.featureCollection.features[featureIndex].geometry; + + if (geometry.type === 'Point') { + throw Error("Can't remove a position from a Point or there'd be nothing left"); + } + + if (geometry.type === 'MultiPoint' && // only 1 point left + geometry.coordinates.length < 2) { + throw Error("Can't remove the last point of a MultiPoint or there'd be nothing left"); + } + + if (geometry.type === 'LineString' && // only 2 positions + geometry.coordinates.length < 3) { + throw Error("Can't remove position. LineString must have at least two positions"); + } + + if (geometry.type === 'Polygon' && // outer ring is a triangle + geometry.coordinates[0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from outer ring + positionIndexes[0] === 0) { + throw Error("Can't remove position. Polygon's outer ring must have at least four positions"); + } + + if (geometry.type === 'MultiLineString' && // only 1 LineString left + geometry.coordinates.length === 1 && // only 2 positions + geometry.coordinates[0].length < 3) { + throw Error("Can't remove position. MultiLineString must have at least two positions"); + } + + if (geometry.type === 'MultiPolygon' && // only 1 polygon left + geometry.coordinates.length === 1 && // outer ring is a triangle + geometry.coordinates[0][0].length < 5 && Array.isArray(positionIndexes) && // trying to remove from first polygon + positionIndexes[0] === 0 && // trying to remove from outer ring + positionIndexes[1] === 0) { + throw Error("Can't remove position. MultiPolygon's outer ring must have at least four positions"); + } + + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal) + }); // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles) + + + pruneGeometryIfNecessary(updatedGeometry); + return this.replaceGeometry(featureIndex, updatedGeometry); + } + /** + * Adds a position deeply nested in a GeoJSON geometry coordinates array. + * Works with MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon. + * + * @param featureIndex The index of the feature to update + * @param positionIndexes An array containing the indexes of the position that will proceed the new position + * @param positionToAdd The new position to place in the result (i.e. [lng, lat]) + * + * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`. + */ + + }, { + key: "addPosition", + value: function addPosition(featureIndex, positionIndexes, positionToAdd) { + var geometry = this.featureCollection.features[featureIndex].geometry; + + if (geometry.type === 'Point') { + throw new Error('Unable to add a position to a Point feature'); + } + + var isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon'; + + var updatedGeometry = _objectSpread({}, geometry, { + coordinates: immutablyAddPosition(geometry.coordinates, positionIndexes, positionToAdd, isPolygonal) + }); + + return this.replaceGeometry(featureIndex, updatedGeometry); + } + }, { + key: "replaceGeometry", + value: function replaceGeometry(featureIndex, geometry) { + var updatedFeature = _objectSpread({}, this.featureCollection.features[featureIndex], { + geometry: geometry + }); + + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: [].concat(_toConsumableArray(this.featureCollection.features.slice(0, featureIndex)), [updatedFeature], _toConsumableArray(this.featureCollection.features.slice(featureIndex + 1))) + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }, { + key: "addFeature", + value: function addFeature(feature) { + return this.addFeatures([feature]); + } + }, { + key: "addFeatures", + value: function addFeatures(features) { + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: [].concat(_toConsumableArray(this.featureCollection.features), _toConsumableArray(features)) + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }, { + key: "deleteFeature", + value: function deleteFeature(featureIndex) { + return this.deleteFeatures([featureIndex]); + } + }, { + key: "deleteFeatures", + value: function deleteFeatures(featureIndexes) { + var features = _toConsumableArray(this.featureCollection.features); + + featureIndexes.sort(); + + for (var i = featureIndexes.length - 1; i >= 0; i--) { + var featureIndex = featureIndexes[i]; + + if (featureIndex >= 0 && featureIndex < features.length) { + features.splice(featureIndex, 1); + } + } + + var updatedFeatureCollection = _objectSpread({}, this.featureCollection, { + features: features + }); + + return new ImmutableFeatureCollection(updatedFeatureCollection); + } + }]); + + return ImmutableFeatureCollection; +}(); + +exports.ImmutableFeatureCollection = ImmutableFeatureCollection; + +function getUpdatedPosition(updatedPosition, previousPosition) { + // This function checks if the updatedPosition is missing elevation + // and copies it from previousPosition + if (updatedPosition.length === 2 && previousPosition.length === 3) { + var elevation = previousPosition[2]; + return [updatedPosition[0], updatedPosition[1], elevation]; + } + + return updatedPosition; +} + +function immutablyReplacePosition(coordinates, positionIndexes, updatedPosition, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + return getUpdatedPosition(updatedPosition, coordinates); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]])], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); + + if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) { + // for polygons, the first point is repeated at the end of the array + // so, update it on both ends of the array + updated[0] = getUpdatedPosition(updatedPosition, coordinates[0]); + updated[coordinates.length - 1] = getUpdatedPosition(updatedPosition, coordinates[0]); + } + + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyReplacePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), updatedPosition, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function immutablyRemovePosition(coordinates, positionIndexes, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + throw Error('Must specify the index of the position to remove'); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); + + if (isPolygonal && (positionIndexes[0] === 0 || positionIndexes[0] === coordinates.length - 1)) { + // for polygons, the first point is repeated at the end of the array + // so, if the first/last coordinate is to be removed, coordinates[1] will be the new first/last coordinate + if (positionIndexes[0] === 0) { + // change the last to be the same as the first + updated[updated.length - 1] = updated[0]; + } else if (positionIndexes[0] === coordinates.length - 1) { + // change the first to be the same as the last + updated[0] = updated[updated.length - 1]; + } + } + + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyRemovePosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function immutablyAddPosition(coordinates, positionIndexes, positionToAdd, isPolygonal) { + if (!positionIndexes) { + return coordinates; + } + + if (positionIndexes.length === 0) { + throw Error('Must specify the index of the position to remove'); + } + + if (positionIndexes.length === 1) { + var updated = [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [positionToAdd], _toConsumableArray(coordinates.slice(positionIndexes[0]))); + return updated; + } // recursively update inner array + + + return [].concat(_toConsumableArray(coordinates.slice(0, positionIndexes[0])), [immutablyAddPosition(coordinates[positionIndexes[0]], positionIndexes.slice(1, positionIndexes.length), positionToAdd, isPolygonal)], _toConsumableArray(coordinates.slice(positionIndexes[0] + 1))); +} + +function pruneGeometryIfNecessary(geometry) { + switch (geometry.type) { + case 'Polygon': + prunePolygonIfNecessary(geometry); + break; + + case 'MultiLineString': + pruneMultiLineStringIfNecessary(geometry); + break; + + case 'MultiPolygon': + pruneMultiPolygonIfNecessary(geometry); + break; + + default: + // Not downgradable + break; + } +} + +function prunePolygonIfNecessary(geometry) { + var polygon = geometry.coordinates; // If any hole is no longer a polygon, remove the hole entirely + + for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) { + if (removeHoleIfNecessary(polygon, holeIndex)) { + // It was removed, so keep the index the same + holeIndex--; + } + } +} + +function pruneMultiLineStringIfNecessary(geometry) { + for (var lineStringIndex = 0; lineStringIndex < geometry.coordinates.length; lineStringIndex++) { + var lineString = geometry.coordinates[lineStringIndex]; + + if (lineString.length === 1) { + // Only a single position left on this LineString, so remove it (can't have Point in MultiLineString) + geometry.coordinates.splice(lineStringIndex, 1); // Keep the index the same + + lineStringIndex--; + } + } +} + +function pruneMultiPolygonIfNecessary(geometry) { + for (var polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) { + var polygon = geometry.coordinates[polygonIndex]; + var outerRing = polygon[0]; // If the outer ring is no longer a polygon, remove the whole polygon + + if (outerRing.length <= 3) { + geometry.coordinates.splice(polygonIndex, 1); // It was removed, so keep the index the same + + polygonIndex--; + } + + for (var holeIndex = 1; holeIndex < polygon.length; holeIndex++) { + if (removeHoleIfNecessary(polygon, holeIndex)) { + // It was removed, so keep the index the same + holeIndex--; + } + } + } +} + +function removeHoleIfNecessary(polygon, holeIndex) { + var hole = polygon[holeIndex]; + + if (hole.length <= 3) { + polygon.splice(holeIndex, 1); + return true; + } + + return false; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6WyJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImZlYXR1cmVDb2xsZWN0aW9uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwidXBkYXRlZFBvc2l0aW9uIiwiZ2VvbWV0cnkiLCJmZWF0dXJlcyIsImlzUG9seWdvbmFsIiwidHlwZSIsInVwZGF0ZWRHZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiaW1tdXRhYmx5UmVwbGFjZVBvc2l0aW9uIiwicmVwbGFjZUdlb21ldHJ5IiwiRXJyb3IiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJpbW11dGFibHlSZW1vdmVQb3NpdGlvbiIsInBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeSIsInBvc2l0aW9uVG9BZGQiLCJpbW11dGFibHlBZGRQb3NpdGlvbiIsInVwZGF0ZWRGZWF0dXJlIiwidXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uIiwic2xpY2UiLCJmZWF0dXJlIiwiYWRkRmVhdHVyZXMiLCJkZWxldGVGZWF0dXJlcyIsImZlYXR1cmVJbmRleGVzIiwic29ydCIsImkiLCJzcGxpY2UiLCJnZXRVcGRhdGVkUG9zaXRpb24iLCJwcmV2aW91c1Bvc2l0aW9uIiwiZWxldmF0aW9uIiwidXBkYXRlZCIsInBydW5lUG9seWdvbklmTmVjZXNzYXJ5IiwicHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeSIsInBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkiLCJwb2x5Z29uIiwiaG9sZUluZGV4IiwicmVtb3ZlSG9sZUlmTmVjZXNzYXJ5IiwibGluZVN0cmluZ0luZGV4IiwibGluZVN0cmluZyIsInBvbHlnb25JbmRleCIsIm91dGVyUmluZyIsImhvbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXYUEsMEI7QUFHWCxzQ0FBWUMsaUJBQVosRUFBa0Q7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S0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEdlb21ldHJ5LFxuICBQb2x5Z29uLFxuICBNdWx0aUxpbmVTdHJpbmcsXG4gIE11bHRpUG9seWdvbixcbiAgUG9zaXRpb24sXG4gIFBvbHlnb25Db29yZGluYXRlcyxcbn0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICBnZXRPYmplY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZUNvbGxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgd2l0aGluZyB0aGUgZ2l2ZW4gZmVhdHVyZSdzIGdlb21ldHJ5LlxuICAgKiBXb3JrcyB3aXRoIFBvaW50LCBNdWx0aVBvaW50LCBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcsIFBvbHlnb24sIGFuZCBNdWx0aVBvbHlnb24uXG4gICAqXG4gICAqIEBwYXJhbSBmZWF0dXJlSW5kZXggVGhlIGluZGV4IG9mIHRoZSBmZWF0dXJlIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gcG9zaXRpb25JbmRleGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGluZGV4ZXMgb2YgdGhlIHBvc2l0aW9uIHRvIHJlcGxhY2VcbiAgICogQHBhcmFtIHVwZGF0ZWRQb3NpdGlvbiBUaGUgdXBkYXRlZCBwb3NpdGlvbiB0byBwbGFjZSBpbiB0aGUgcmVzdWx0IChpLmUuIFtsbmcsIGxhdF0pXG4gICAqXG4gICAqIEByZXR1cm5zIEEgbmV3IGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAgd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gcmVwbGFjZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICByZXBsYWNlUG9zaXRpb24oXG4gICAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gICAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgdXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBjb25zdCBpc1BvbHlnb25hbCA9IGdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJyB8fCBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJztcbiAgICBjb25zdCB1cGRhdGVkR2VvbWV0cnk6IGFueSA9IHtcbiAgICAgIC4uLmdlb21ldHJ5LFxuICAgICAgY29vcmRpbmF0ZXM6IGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgdXBkYXRlZFBvc2l0aW9uLFxuICAgICAgICBpc1BvbHlnb25hbFxuICAgICAgKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcG9zaXRpb24gZGVlcGx5IG5lc3RlZCBpbiBhIEdlb0pTT04gZ2VvbWV0cnkgY29vcmRpbmF0ZXMgYXJyYXkuXG4gICAqIFdvcmtzIHdpdGggTXVsdGlQb2ludCwgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nLCBQb2x5Z29uLCBhbmQgTXVsdGlQb2x5Z29uLlxuICAgKlxuICAgKiBAcGFyYW0gZmVhdHVyZUluZGV4IFRoZSBpbmRleCBvZiB0aGUgZmVhdHVyZSB0byB1cGRhdGVcbiAgICogQHBhcmFtIHBvc2l0aW9uSW5kZXhlcyBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpbmRleGVzIG9mIHRoZSBwb3N0aW9uIHRvIHJlbW92ZVxuICAgKlxuICAgKiBAcmV0dXJucyBBIG5ldyBgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb25gIHdpdGggdGhlIGdpdmVuIGNvb3JkaW5hdGUgcmVtb3ZlZC4gRG9lcyBub3QgbW9kaWZ5IHRoaXMgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYC5cbiAgICovXG4gIHJlbW92ZVBvc2l0aW9uKFxuICAgIGZlYXR1cmVJbmRleDogbnVtYmVyLFxuICAgIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNbZmVhdHVyZUluZGV4XS5nZW9tZXRyeTtcblxuICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ2FuJ3QgcmVtb3ZlIGEgcG9zaXRpb24gZnJvbSBhIFBvaW50IG9yIHRoZXJlJ2QgYmUgbm90aGluZyBsZWZ0YCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvaW50JyAmJiAvLyBvbmx5IDEgcG9pbnQgbGVmdFxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIDwgMlxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSB0aGUgbGFzdCBwb2ludCBvZiBhIE11bHRpUG9pbnQgb3IgdGhlcmUnZCBiZSBub3RoaW5nIGxlZnRgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnICYmIC8vIG9ubHkgMiBwb3NpdGlvbnNcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA8IDNcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIExpbmVTdHJpbmcgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBwb3NpdGlvbnNgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nICYmIC8vIG91dGVyIHJpbmcgaXMgYSB0cmlhbmdsZVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgNSAmJlxuICAgICAgQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKGBDYW4ndCByZW1vdmUgcG9zaXRpb24uIFBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2ApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlMaW5lU3RyaW5nJyAmJiAvLyBvbmx5IDEgTGluZVN0cmluZyBsZWZ0XG4gICAgICBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggPT09IDEgJiYgLy8gb25seSAyIHBvc2l0aW9uc1xuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoIDwgM1xuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoYENhbid0IHJlbW92ZSBwb3NpdGlvbi4gTXVsdGlMaW5lU3RyaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gcG9zaXRpb25zYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nICYmIC8vIG9ubHkgMSBwb2x5Z29uIGxlZnRcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA9PT0gMSAmJiAvLyBvdXRlciByaW5nIGlzIGEgdHJpYW5nbGVcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA8IDUgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkocG9zaXRpb25JbmRleGVzKSAmJiAvLyB0cnlpbmcgdG8gcmVtb3ZlIGZyb20gZmlyc3QgcG9seWdvblxuICAgICAgcG9zaXRpb25JbmRleGVzWzBdID09PSAwICYmIC8vIHRyeWluZyB0byByZW1vdmUgZnJvbSBvdXRlciByaW5nXG4gICAgICBwb3NpdGlvbkluZGV4ZXNbMV0gPT09IDBcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ2FuJ3QgcmVtb3ZlIHBvc2l0aW9uLiBNdWx0aVBvbHlnb24ncyBvdXRlciByaW5nIG11c3QgaGF2ZSBhdCBsZWFzdCBmb3VyIHBvc2l0aW9uc2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlSZW1vdmVQb3NpdGlvbihnZW9tZXRyeS5jb29yZGluYXRlcywgcG9zaXRpb25JbmRleGVzLCBpc1BvbHlnb25hbCksXG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSBpbmNvbXBsZXRlIGdlb21ldHJpZXMgbmVlZCBwcnVuZWQgKGUuZy4gaG9sZXMgdGhhdCB3ZXJlIHRyaWFuZ2xlcylcbiAgICBwcnVuZUdlb21ldHJ5SWZOZWNlc3NhcnkodXBkYXRlZEdlb21ldHJ5KTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHBvc2l0aW9uIGRlZXBseSBuZXN0ZWQgaW4gYSBHZW9KU09OIGdlb21ldHJ5IGNvb3JkaW5hdGVzIGFycmF5LlxuICAgKiBXb3JrcyB3aXRoIE11bHRpUG9pbnQsIExpbmVTdHJpbmcsIE11bHRpTGluZVN0cmluZywgUG9seWdvbiwgYW5kIE11bHRpUG9seWdvbi5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBwb3NpdGlvbkluZGV4ZXMgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5kZXhlcyBvZiB0aGUgcG9zaXRpb24gdGhhdCB3aWxsIHByb2NlZWQgdGhlIG5ldyBwb3NpdGlvblxuICAgKiBAcGFyYW0gcG9zaXRpb25Ub0FkZCBUaGUgbmV3IHBvc2l0aW9uIHRvIHBsYWNlIGluIHRoZSByZXN1bHQgKGkuZS4gW2xuZywgbGF0XSlcbiAgICpcbiAgICogQHJldHVybnMgQSBuZXcgYEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uYCB3aXRoIHRoZSBnaXZlbiBjb29yZGluYXRlIHJlbW92ZWQuIERvZXMgbm90IG1vZGlmeSB0aGlzIGBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbmAuXG4gICAqL1xuICBhZGRQb3NpdGlvbihcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBwb3NpdGlvblRvQWRkOiBQb3NpdGlvblxuICApOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnk7XG5cbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gYWRkIGEgcG9zaXRpb24gdG8gYSBQb2ludCBmZWF0dXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNQb2x5Z29uYWwgPSBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbic7XG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5OiBhbnkgPSB7XG4gICAgICAuLi5nZW9tZXRyeSxcbiAgICAgIGNvb3JkaW5hdGVzOiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgcG9zaXRpb25Ub0FkZCxcbiAgICAgICAgaXNQb2x5Z29uYWxcbiAgICAgICksXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHVwZGF0ZWRHZW9tZXRyeSk7XG4gIH1cblxuICByZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4OiBudW1iZXIsIGdlb21ldHJ5OiBHZW9tZXRyeSk6IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZTogYW55ID0ge1xuICAgICAgLi4udGhpcy5mZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdLFxuICAgICAgZ2VvbWV0cnksXG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogW1xuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKDAsIGZlYXR1cmVJbmRleCksXG4gICAgICAgIHVwZGF0ZWRGZWF0dXJlLFxuICAgICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNsaWNlKGZlYXR1cmVJbmRleCArIDEpLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgYWRkRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmFkZEZlYXR1cmVzKFtmZWF0dXJlXSk7XG4gIH1cblxuICBhZGRGZWF0dXJlcyhmZWF0dXJlczogRmVhdHVyZVtdKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHVwZGF0ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMsIC4uLmZlYXR1cmVzXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24pO1xuICB9XG5cbiAgZGVsZXRlRmVhdHVyZShmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZlYXR1cmVzKFtmZWF0dXJlSW5kZXhdKTtcbiAgfVxuXG4gIGRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXSkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gWy4uLnRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNdO1xuICAgIGZlYXR1cmVJbmRleGVzLnNvcnQoKTtcbiAgICBmb3IgKGxldCBpID0gZmVhdHVyZUluZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IGZlYXR1cmVJbmRleGVzW2ldO1xuICAgICAgaWYgKGZlYXR1cmVJbmRleCA+PSAwICYmIGZlYXR1cmVJbmRleCA8IGZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICBmZWF0dXJlcy5zcGxpY2UoZmVhdHVyZUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICAuLi50aGlzLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgZmVhdHVyZXMsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24odXBkYXRlZEZlYXR1cmVDb2xsZWN0aW9uKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uOiBQb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbjogUG9zaXRpb24pOiBQb3NpdGlvbiB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB1cGRhdGVkUG9zaXRpb24gaXMgbWlzc2luZyBlbGV2YXRpb25cbiAgLy8gYW5kIGNvcGllcyBpdCBmcm9tIHByZXZpb3VzUG9zaXRpb25cbiAgaWYgKHVwZGF0ZWRQb3NpdGlvbi5sZW5ndGggPT09IDIgJiYgcHJldmlvdXNQb3NpdGlvbi5sZW5ndGggPT09IDMpIHtcbiAgICBjb25zdCBlbGV2YXRpb24gPSAocHJldmlvdXNQb3NpdGlvbiBhcyBhbnkpWzJdO1xuICAgIHJldHVybiBbdXBkYXRlZFBvc2l0aW9uWzBdLCB1cGRhdGVkUG9zaXRpb25bMV0sIGVsZXZhdGlvbl07XG4gIH1cblxuICByZXR1cm4gdXBkYXRlZFBvc2l0aW9uO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlSZXBsYWNlUG9zaXRpb24oXG4gIGNvb3JkaW5hdGVzOiBhbnksXG4gIHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB1cGRhdGVkUG9zaXRpb246IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXMpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICBnZXRVcGRhdGVkUG9zaXRpb24odXBkYXRlZFBvc2l0aW9uLCBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dKSxcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICAgIF07XG5cbiAgICBpZiAoXG4gICAgICBpc1BvbHlnb25hbCAmJlxuICAgICAgKHBvc2l0aW9uSW5kZXhlc1swXSA9PT0gMCB8fCBwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICAvLyBmb3IgcG9seWdvbnMsIHRoZSBmaXJzdCBwb2ludCBpcyByZXBlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBhcnJheVxuICAgICAgLy8gc28sIHVwZGF0ZSBpdCBvbiBib3RoIGVuZHMgb2YgdGhlIGFycmF5XG4gICAgICB1cGRhdGVkWzBdID0gZ2V0VXBkYXRlZFBvc2l0aW9uKHVwZGF0ZWRQb3NpdGlvbiwgY29vcmRpbmF0ZXNbMF0pO1xuICAgICAgdXBkYXRlZFtjb29yZGluYXRlcy5sZW5ndGggLSAxXSA9IGdldFVwZGF0ZWRQb3NpdGlvbih1cGRhdGVkUG9zaXRpb24sIGNvb3JkaW5hdGVzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseVJlcGxhY2VQb3NpdGlvbihcbiAgICAgIGNvb3JkaW5hdGVzW3Bvc2l0aW9uSW5kZXhlc1swXV0sXG4gICAgICBwb3NpdGlvbkluZGV4ZXMuc2xpY2UoMSwgcG9zaXRpb25JbmRleGVzLmxlbmd0aCksXG4gICAgICB1cGRhdGVkUG9zaXRpb24sXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGltbXV0YWJseVJlbW92ZVBvc2l0aW9uKFxuICBjb29yZGluYXRlczogYW55LFxuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXNQb2x5Z29uYWw6IGJvb2xlYW5cbik6IGFueSB7XG4gIGlmICghcG9zaXRpb25JbmRleGVzKSB7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgRXJyb3IoJ011c3Qgc3BlY2lmeSB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uIHRvIHJlbW92ZScpO1xuICB9XG4gIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdXBkYXRlZCA9IFtcbiAgICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0gKyAxKSxcbiAgICBdO1xuXG4gICAgaWYgKFxuICAgICAgaXNQb2x5Z29uYWwgJiZcbiAgICAgIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDAgfHwgcG9zaXRpb25JbmRleGVzWzBdID09PSBjb29yZGluYXRlcy5sZW5ndGggLSAxKVxuICAgICkge1xuICAgICAgLy8gZm9yIHBvbHlnb25zLCB0aGUgZmlyc3QgcG9pbnQgaXMgcmVwZWF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXlcbiAgICAgIC8vIHNvLCBpZiB0aGUgZmlyc3QvbGFzdCBjb29yZGluYXRlIGlzIHRvIGJlIHJlbW92ZWQsIGNvb3JkaW5hdGVzWzFdIHdpbGwgYmUgdGhlIG5ldyBmaXJzdC9sYXN0IGNvb3JkaW5hdGVcbiAgICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IDApIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBsYXN0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdFxuICAgICAgICB1cGRhdGVkW3VwZGF0ZWQubGVuZ3RoIC0gMV0gPSB1cGRhdGVkWzBdO1xuICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNvb3JkaW5hdGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gY2hhbmdlIHRoZSBmaXJzdCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgbGFzdFxuICAgICAgICB1cGRhdGVkWzBdID0gdXBkYXRlZFt1cGRhdGVkLmxlbmd0aCAtIDFdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIC8vIHJlY3Vyc2l2ZWx5IHVwZGF0ZSBpbm5lciBhcnJheVxuICByZXR1cm4gW1xuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKDAsIHBvc2l0aW9uSW5kZXhlc1swXSksXG4gICAgaW1tdXRhYmx5UmVtb3ZlUG9zaXRpb24oXG4gICAgICBjb29yZGluYXRlc1twb3NpdGlvbkluZGV4ZXNbMF1dLFxuICAgICAgcG9zaXRpb25JbmRleGVzLnNsaWNlKDEsIHBvc2l0aW9uSW5kZXhlcy5sZW5ndGgpLFxuICAgICAgaXNQb2x5Z29uYWxcbiAgICApLFxuICAgIC4uLmNvb3JkaW5hdGVzLnNsaWNlKHBvc2l0aW9uSW5kZXhlc1swXSArIDEpLFxuICBdO1xufVxuXG5mdW5jdGlvbiBpbW11dGFibHlBZGRQb3NpdGlvbihcbiAgY29vcmRpbmF0ZXM6IGFueSxcbiAgcG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHBvc2l0aW9uVG9BZGQ6IFBvc2l0aW9uLFxuICBpc1BvbHlnb25hbDogYm9vbGVhblxuKTogYW55IHtcbiAgaWYgKCFwb3NpdGlvbkluZGV4ZXMpIHtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBFcnJvcignTXVzdCBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgcG9zaXRpb24gdG8gcmVtb3ZlJyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCB1cGRhdGVkID0gW1xuICAgICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UoMCwgcG9zaXRpb25JbmRleGVzWzBdKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICAuLi5jb29yZGluYXRlcy5zbGljZShwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIF07XG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG4gIH1cblxuICAvLyByZWN1cnNpdmVseSB1cGRhdGUgaW5uZXIgYXJyYXlcbiAgcmV0dXJuIFtcbiAgICAuLi5jb29yZGluYXRlcy5zbGljZSgwLCBwb3NpdGlvbkluZGV4ZXNbMF0pLFxuICAgIGltbXV0YWJseUFkZFBvc2l0aW9uKFxuICAgICAgY29vcmRpbmF0ZXNbcG9zaXRpb25JbmRleGVzWzBdXSxcbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5zbGljZSgxLCBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoKSxcbiAgICAgIHBvc2l0aW9uVG9BZGQsXG4gICAgICBpc1BvbHlnb25hbFxuICAgICksXG4gICAgLi4uY29vcmRpbmF0ZXMuc2xpY2UocG9zaXRpb25JbmRleGVzWzBdICsgMSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIHBydW5lR2VvbWV0cnlJZk5lY2Vzc2FyeShnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICBwcnVuZVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aUxpbmVTdHJpbmcnOlxuICAgICAgcHJ1bmVNdWx0aUxpbmVTdHJpbmdJZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgcHJ1bmVNdWx0aVBvbHlnb25JZk5lY2Vzc2FyeShnZW9tZXRyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gTm90IGRvd25ncmFkYWJsZVxuICAgICAgYnJlYWs7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IFBvbHlnb24pIHtcbiAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuXG4gIC8vIElmIGFueSBob2xlIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgaG9sZSBlbnRpcmVseVxuICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICBpZiAocmVtb3ZlSG9sZUlmTmVjZXNzYXJ5KHBvbHlnb24sIGhvbGVJbmRleCkpIHtcbiAgICAgIC8vIEl0IHdhcyByZW1vdmVkLCBzbyBrZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgaG9sZUluZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlMaW5lU3RyaW5nSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpTGluZVN0cmluZykge1xuICBmb3IgKGxldCBsaW5lU3RyaW5nSW5kZXggPSAwOyBsaW5lU3RyaW5nSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGxpbmVTdHJpbmdJbmRleCsrKSB7XG4gICAgY29uc3QgbGluZVN0cmluZyA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW2xpbmVTdHJpbmdJbmRleF07XG4gICAgaWYgKGxpbmVTdHJpbmcubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBPbmx5IGEgc2luZ2xlIHBvc2l0aW9uIGxlZnQgb24gdGhpcyBMaW5lU3RyaW5nLCBzbyByZW1vdmUgaXQgKGNhbid0IGhhdmUgUG9pbnQgaW4gTXVsdGlMaW5lU3RyaW5nKVxuICAgICAgZ2VvbWV0cnkuY29vcmRpbmF0ZXMuc3BsaWNlKGxpbmVTdHJpbmdJbmRleCwgMSk7XG4gICAgICAvLyBLZWVwIHRoZSBpbmRleCB0aGUgc2FtZVxuICAgICAgbGluZVN0cmluZ0luZGV4LS07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lTXVsdGlQb2x5Z29uSWZOZWNlc3NhcnkoZ2VvbWV0cnk6IE11bHRpUG9seWdvbikge1xuICBmb3IgKGxldCBwb2x5Z29uSW5kZXggPSAwOyBwb2x5Z29uSW5kZXggPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IHBvbHlnb25JbmRleCsrKSB7XG4gICAgY29uc3QgcG9seWdvbiA9IGdlb21ldHJ5LmNvb3JkaW5hdGVzW3BvbHlnb25JbmRleF07XG4gICAgY29uc3Qgb3V0ZXJSaW5nID0gcG9seWdvblswXTtcblxuICAgIC8vIElmIHRoZSBvdXRlciByaW5nIGlzIG5vIGxvbmdlciBhIHBvbHlnb24sIHJlbW92ZSB0aGUgd2hvbGUgcG9seWdvblxuICAgIGlmIChvdXRlclJpbmcubGVuZ3RoIDw9IDMpIHtcbiAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzLnNwbGljZShwb2x5Z29uSW5kZXgsIDEpO1xuICAgICAgLy8gSXQgd2FzIHJlbW92ZWQsIHNvIGtlZXAgdGhlIGluZGV4IHRoZSBzYW1lXG4gICAgICBwb2x5Z29uSW5kZXgtLTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBob2xlSW5kZXggPSAxOyBob2xlSW5kZXggPCBwb2x5Z29uLmxlbmd0aDsgaG9sZUluZGV4KyspIHtcbiAgICAgIGlmIChyZW1vdmVIb2xlSWZOZWNlc3NhcnkocG9seWdvbiwgaG9sZUluZGV4KSkge1xuICAgICAgICAvLyBJdCB3YXMgcmVtb3ZlZCwgc28ga2VlcCB0aGUgaW5kZXggdGhlIHNhbWVcbiAgICAgICAgaG9sZUluZGV4LS07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUhvbGVJZk5lY2Vzc2FyeShwb2x5Z29uOiBQb2x5Z29uQ29vcmRpbmF0ZXMsIGhvbGVJbmRleDogbnVtYmVyKSB7XG4gIGNvbnN0IGhvbGUgPSBwb2x5Z29uW2hvbGVJbmRleF07XG4gIGlmIChob2xlLmxlbmd0aCA8PSAzKSB7XG4gICAgcG9seWdvbi5zcGxpY2UoaG9sZUluZGV4LCAxKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/measure-angle-mode.js b/modules/edit-modes/dist/lib/measure-angle-mode.js new file mode 100644 index 000000000..b1dba378e --- /dev/null +++ b/modules/edit-modes/dist/lib/measure-angle-mode.js @@ -0,0 +1,213 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureAngleMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _center = _interopRequireDefault(require("@turf/center")); + +var _memoize = _interopRequireDefault(require("../memoize")); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DEFAULT_TOOLTIPS = []; + +var MeasureAngleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(MeasureAngleMode, _GeoJsonEditMode); + + var _super = _createSuper(MeasureAngleMode); + + function MeasureAngleMode() { + var _this; + + _classCallCheck(this, MeasureAngleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_getTooltips", (0, _memoize["default"])(function (_ref) { + var modeConfig = _ref.modeConfig, + vertex = _ref.vertex, + point1 = _ref.point1, + point2 = _ref.point2; + var tooltips = DEFAULT_TOOLTIPS; + + if (vertex && point1 && point2) { + var _ref2 = modeConfig || {}, + formatTooltip = _ref2.formatTooltip, + measurementCallback = _ref2.measurementCallback; + + var units = 'deg'; + var angle1 = (0, _bearing["default"])(vertex, point1); + var angle2 = (0, _bearing["default"])(vertex, point2); + var angle = Math.abs(angle1 - angle2); + + if (angle > 180) { + angle = 360 - angle; + } + + var text; + + if (formatTooltip) { + text = formatTooltip(angle); + } else { + // By default, round to 2 decimal places and append units + // @ts-ignore + text = "".concat(parseFloat(angle).toFixed(2), " ").concat(units); + } + + if (measurementCallback) { + measurementCallback(angle); + } + + var position = (0, _center["default"])({ + type: 'FeatureCollection', + features: [point1, point2].map(function (p) { + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: p + } + }; + }) + }).geometry.coordinates; + tooltips = [{ + position: position, + text: text + }]; + } + + return tooltips; + })); + + return _this; + } + + _createClass(MeasureAngleMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + if (this.getClickSequence().length >= 3) { + this.resetClickSequence(); + } + + this.addClickSequence(event); + } // Called when the pointer moved, regardless of whether the pointer is down, up, and whether something was picked + + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "getPoints", + value: function getPoints(props) { + var clickSequence = this.getClickSequence(); + + var points = _toConsumableArray(clickSequence); + + if (clickSequence.length < 3 && props.lastPointerMoveEvent) { + points.push(props.lastPointerMoveEvent.mapCoords); + } + + return points; + } // Return features that can be used as a guide for editing the data + + }, { + key: "getGuides", + value: function getGuides(props) { + var guides = { + type: 'FeatureCollection', + features: [] + }; + var features = guides.features; + var points = this.getPoints(props); + + if (points.length > 2) { + features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [points[1], points[0], points[2]] + } + }); + } else if (points.length > 1) { + features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [points[1], points[0]] + } + }); + } + + return guides; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var points = this.getPoints(props); + return this._getTooltips({ + modeConfig: props.modeConfig, + vertex: points[0], + point1: points[1], + point2: points[2] + }); + } + }]); + + return MeasureAngleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.MeasureAngleMode = MeasureAngleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hbmdsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVE9PTFRJUFMiLCJNZWFzdXJlQW5nbGVNb2RlIiwibW9kZUNvbmZpZyIsInZlcnRleCIsInBvaW50MSIsInBvaW50MiIsInRvb2x0aXBzIiwiZm9ybWF0VG9vbHRpcCIsIm1lYXN1cmVtZW50Q2FsbGJhY2siLCJ1bml0cyIsImFuZ2xlMSIsImFuZ2xlMiIsImFuZ2xlIiwiTWF0aCIsImFicyIsInRleHQiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsInBvc2l0aW9uIiwidHlwZSIsImZlYXR1cmVzIiwibWFwIiwicCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJldmVudCIsInByb3BzIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImFkZENsaWNrU2VxdWVuY2UiLCJvblVwZGF0ZUN1cnNvciIsImNsaWNrU2VxdWVuY2UiLCJwb2ludHMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsInB1c2giLCJtYXBDb29yZHMiLCJndWlkZXMiLCJnZXRQb2ludHMiLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiX2dldFRvb2x0aXBzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFJQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7bUVBQ0kseUJBQVEsZ0JBQTRDO0FBQUEsVUFBekNDLFVBQXlDLFFBQXpDQSxVQUF5QztBQUFBLFVBQTdCQyxNQUE2QixRQUE3QkEsTUFBNkI7QUFBQSxVQUFyQkMsTUFBcUIsUUFBckJBLE1BQXFCO0FBQUEsVUFBYkMsTUFBYSxRQUFiQSxNQUFhO0FBQ2pFLFVBQUlDLFFBQVEsR0FBR04sZ0JBQWY7O0FBRUEsVUFB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UUFBQUEsTUFBTSxFQUFFNEIsTUFBTSxDQUFDLENBQUQ7QUFKUyxPQUFsQixDQUFQO0FBTUQ7Ozs7RUFsSG1DUyxnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB0dXJmQ2VudGVyIGZyb20gJ0B0dXJmL2NlbnRlcic7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgbWVtb2l6ZSBmcm9tICcuLi9tZW1vaXplJztcblxuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQW5nbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dldFRvb2x0aXBzID0gbWVtb2l6ZSgoeyBtb2RlQ29uZmlnLCB2ZXJ0ZXgsIHBvaW50MSwgcG9pbnQyIH0pID0+IHtcbiAgICBsZXQgdG9vbHRpcHMgPSBERUZBVUxUX1RPT0xUSVBTO1xuXG4gICAgaWYgKHZlcnRleCAmJiBwb2ludDEgJiYgcG9pbnQyKSB7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdkZWcnO1xuXG4gICAgICBjb25zdCBhbmdsZTEgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50MSk7XG4gICAgICBjb25zdCBhbmdsZTIgPSB0dXJmQmVhcmluZyh2ZXJ0ZXgsIHBvaW50Mik7XG4gICAgICBsZXQgYW5nbGUgPSBNYXRoLmFicyhhbmdsZTEgLSBhbmdsZTIpO1xuICAgICAgaWYgKGFuZ2xlID4gMTgwKSB7XG4gICAgICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYW5nbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgcm91bmQgdG8gMiBkZWNpbWFsIHBsYWNlcyBhbmQgYXBwZW5kIHVuaXRzXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGV4dCA9IGAke3BhcnNlRmxvYXQoYW5nbGUpLnRvRml4ZWQoMil9ICR7dW5pdHN9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgICAgbWVhc3VyZW1lbnRDYWxsYmFjayhhbmdsZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdHVyZkNlbnRlcih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBbcG9pbnQxLCBwb2ludDJdLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogcCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgdG9vbHRpcHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICB0ZXh0LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9vbHRpcHM7XG4gIH0pO1xuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmdldENsaWNrU2VxdWVuY2UoKS5sZW5ndGggPj0gMykge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZENsaWNrU2VxdWVuY2UoZXZlbnQpO1xuICB9XG5cbiAgLy8gQ2FsbGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcG9pbnRlciBpcyBkb3duLCB1cCwgYW5kIHdoZXRoZXIgc29tZXRoaW5nIHdhcyBwaWNrZWRcbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgfVxuXG4gIGdldFBvaW50cyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IHBvaW50cyA9IFsuLi5jbGlja1NlcXVlbmNlXTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMgJiYgcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIHBvaW50cy5wdXNoKHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50cztcbiAgfVxuXG4gIC8vIFJldHVybiBmZWF0dXJlcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ3VpZGUgZm9yIGVkaXRpbmcgdGhlIGRhdGFcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgZ3VpZGVzOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uID0geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBndWlkZXM7XG5cbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGZlYXR1cmVzLnB1c2goe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHsgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogW3BvaW50c1sxXSwgcG9pbnRzWzBdLCBwb2ludHNbMl1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHMubGVuZ3RoID4gMSkge1xuICAgICAgZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczogeyBndWlkZVR5cGU6ICd0ZW50YXRpdmUnIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbcG9pbnRzWzFdLCBwb2ludHNbMF1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGdldFRvb2x0aXBzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVG9vbHRpcFtdIHtcbiAgICBjb25zdCBwb2ludHMgPSB0aGlzLmdldFBvaW50cyhwcm9wcyk7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0VG9vbHRpcHMoe1xuICAgICAgbW9kZUNvbmZpZzogcHJvcHMubW9kZUNvbmZpZyxcbiAgICAgIHZlcnRleDogcG9pbnRzWzBdLFxuICAgICAgcG9pbnQxOiBwb2ludHNbMV0sXG4gICAgICBwb2ludDI6IHBvaW50c1syXSxcbiAgICB9KTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/measure-area-mode.js b/modules/edit-modes/dist/lib/measure-area-mode.js new file mode 100644 index 000000000..c28a3df45 --- /dev/null +++ b/modules/edit-modes/dist/lib/measure-area-mode.js @@ -0,0 +1,114 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureAreaMode = void 0; + +var _area = _interopRequireDefault(require("@turf/area")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _drawPolygonMode = require("./draw-polygon-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var DEFAULT_TOOLTIPS = []; + +var MeasureAreaMode = /*#__PURE__*/function (_DrawPolygonMode) { + _inherits(MeasureAreaMode, _DrawPolygonMode); + + var _super = _createSuper(MeasureAreaMode); + + function MeasureAreaMode() { + _classCallCheck(this, MeasureAreaMode); + + return _super.apply(this, arguments); + } + + _createClass(MeasureAreaMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var propsWithoutEdit = _objectSpread({}, props, { + // @ts-ignore + onEdit: function onEdit() {} + }); + + _get(_getPrototypeOf(MeasureAreaMode.prototype), "handleClick", this).call(this, event, propsWithoutEdit); + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var tentativeGuide = this.getTentativeGuide(props); + + if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') { + var modeConfig = props.modeConfig; + + var _ref = modeConfig || {}, + formatTooltip = _ref.formatTooltip, + measurementCallback = _ref.measurementCallback; + + var units = 'sq. m'; + var centroid = (0, _centroid["default"])(tentativeGuide); + var area = (0, _area["default"])(tentativeGuide); + var text; + + if (formatTooltip) { + text = formatTooltip(area); + } else { + // By default, round to 2 decimal places and append units + // @ts-ignore + text = "".concat(parseFloat(area).toFixed(2), " ").concat(units); + } + + if (measurementCallback) { + measurementCallback(area); + } + + return [{ + position: centroid.geometry.coordinates, + text: text + }]; + } + + return DEFAULT_TOOLTIPS; + } + }]); + + return MeasureAreaMode; +}(_drawPolygonMode.DrawPolygonMode); + +exports.MeasureAreaMode = MeasureAreaMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1hcmVhLW1vZGUudHMiXSwibmFtZXMiOlsiREVGQVVMVF9UT09MVElQUyIsIk1lYXN1cmVBcmVhTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwcm9wc1dpdGhvdXRFZGl0Iiwib25FZGl0IiwidGVudGF0aXZlR3VpZGUiLCJnZXRUZW50YXRpdmVHdWlkZSIsImdlb21ldHJ5IiwidHlwZSIsIm1vZGVDb25maWciLCJmb3JtYXRUb29sdGlwIiwibWVhc3VyZW1lbnRDYWxsYmFjayIsInVuaXRzIiwiY2VudHJvaWQiLCJhcmVhIiwidGV4dCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsIkRyYXdQb2x5Z29uTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxnQkFBZ0IsR0FBRyxFQUF6Qjs7SUFFYUMsZTs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxnQkFBZ0IscUJBQ2pCRCxLQURpQjtBQUVwQjtBQUNBRSxRQUFBQSxNQUFNLEVBQUUsa0JBQU0sQ0FBRTtBQUhJLFFBQXRCOztBQU1BLHVGQUFrQkgsS0FBbEIsRUFBeUJFLGdCQUF6QjtBQUNEOzs7Z0NBRVdELEssRUFBZ0Q7QUFDMUQsVUFBTUcsY0FBYyxHQUFHLEtBQUtDLGlCQUFMLENBQXVCSixLQUF2QixDQUF2Qjs7QUFFQSxVQUFJRyxjQUFjLElBQUlBLGNBQWMsQ0FBQ0UsUUFBZixDQUF3QkMsSUFBeEIsS0FBaUMsU0FBdkQsRUFBa0U7QUFBQSxZQUN4REMsVUFEd0QsR0FDekNQLEtBRHlDLENBQ3hETyxVQUR3RDs7QUFBQSxtQkFFakJBLFVBQVUsSUFBSSxFQUZHO0FBQUEsWUFFeERDLGFBRndELFFBRXhEQSxhQUZ3RDtBQUFBLFlBRXpDQyxtQkFGeUMsUUFFekNBLG1CQUZ5Qzs7QUFHaEUsWUFBTUMsS0FBSyxHQUFHLE9BQWQ7QUFFQSxZQUFNQyxRQUFRLEdBQUcsMEJBQWFSLGNBQWIsQ0FBakI7QUFDQSxZQUFNUyxJQUFJLEdBQUcsc0JBQVNULGNBQVQsQ0FBYjtBQUVBLFlBQUlVLElBQUo7O0FBQ0EsWUFBSUwsYUFBSixFQUFtQjtBQUNqQkssVUFBQUEsSUFBSSxHQUFHTCxhQUFhLENBQUNJLElBQUQsQ0FBcEI7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBO0FBQ0FDLFVBQUFBLElBQUksYUFBTUMsVUFBVSxDQUFDRixJQUFELENBQVYsQ0FBaUJHLE9BQWpCLENBQXlCLENBQXpCLENBQU4sY0FBcUNMLEtBQXJDLENBQUo7QUFDRDs7QUFFRCxZQUFJRCxtQkFBSixFQUF5QjtBQUN2QkEsVUFBQUEsbUJBQW1CLENBQUNHLElBQUQsQ0FBbkI7QUFDRDs7QUFFRCxlQUFPLENBQ0w7QUFDRUksVUFBQUEsUUFBUSxFQUFFTCxRQUFRLENBQUNOLFFBQVQsQ0FBa0JZLFdBRDlCO0FBRUVKLFVBQUFBLElBQUksRUFBSkE7QUFGRixTQURLLENBQVA7QUFNRDs7QUFDRCxhQUFPaEIsZ0JBQVA7QUFDRDs7OztFQTNDa0NxQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0dXJmQXJlYSBmcm9tICdAdHVyZi9hcmVhJztcbmltcG9ydCB0dXJmQ2VudHJvaWQgZnJvbSAnQHR1cmYvY2VudHJvaWQnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgVG9vbHRpcCwgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IERyYXdQb2x5Z29uTW9kZSB9IGZyb20gJy4vZHJhdy1wb2x5Z29uLW1vZGUnO1xuXG5jb25zdCBERUZBVUxUX1RPT0xUSVBTID0gW107XG5cbmV4cG9ydCBjbGFzcyBNZWFzdXJlQXJlYU1vZGUgZXh0ZW5kcyBEcmF3UG9seWdvbk1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwcm9wc1dpdGhvdXRFZGl0ID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBvbkVkaXQ6ICgpID0+IHt9LFxuICAgIH07XG5cbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCwgcHJvcHNXaXRob3V0RWRpdCk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgdGVudGF0aXZlR3VpZGUgPSB0aGlzLmdldFRlbnRhdGl2ZUd1aWRlKHByb3BzKTtcblxuICAgIGlmICh0ZW50YXRpdmVHdWlkZSAmJiB0ZW50YXRpdmVHdWlkZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHsgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIG1lYXN1cmVtZW50Q2FsbGJhY2sgfSA9IG1vZGVDb25maWcgfHwge307XG4gICAgICBjb25zdCB1bml0cyA9ICdzcS4gbSc7XG5cbiAgICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRlbnRhdGl2ZUd1aWRlKTtcbiAgICAgIGNvbnN0IGFyZWEgPSB0dXJmQXJlYSh0ZW50YXRpdmVHdWlkZSk7XG5cbiAgICAgIGxldCB0ZXh0O1xuICAgICAgaWYgKGZvcm1hdFRvb2x0aXApIHtcbiAgICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoYXJlYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0ZXh0ID0gYCR7cGFyc2VGbG9hdChhcmVhKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWFzdXJlbWVudENhbGxiYWNrKSB7XG4gICAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soYXJlYSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogY2VudHJvaWQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBERUZBVUxUX1RPT0xUSVBTO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/measure-distance-mode.js b/modules/edit-modes/dist/lib/measure-distance-mode.js new file mode 100644 index 000000000..7ccb6fb33 --- /dev/null +++ b/modules/edit-modes/dist/lib/measure-distance-mode.js @@ -0,0 +1,278 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MeasureDistanceMode = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 MeasureDistanceMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(MeasureDistanceMode, _GeoJsonEditMode); + + var _super = _createSuper(MeasureDistanceMode); + + function MeasureDistanceMode() { + var _this; + + _classCallCheck(this, MeasureDistanceMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isMeasuringSessionFinished", false); + + _defineProperty(_assertThisInitialized(_this), "_currentTooltips", []); + + _defineProperty(_assertThisInitialized(_this), "_currentDistance", 0); + + _defineProperty(_assertThisInitialized(_this), "_calculateDistanceForTooltip", function (_ref) { + var positionA = _ref.positionA, + positionB = _ref.positionB, + modeConfig = _ref.modeConfig; + + var _ref2 = modeConfig || {}, + turfOptions = _ref2.turfOptions, + measurementCallback = _ref2.measurementCallback; + + var distance = (0, _distance["default"])(positionA, positionB, turfOptions); + + if (measurementCallback) { + measurementCallback(distance); + } + + return distance; + }); + + return _this; + } + + _createClass(MeasureDistanceMode, [{ + key: "_formatTooltip", + value: function _formatTooltip(distance, modeConfig) { + var _ref3 = modeConfig || {}, + formatTooltip = _ref3.formatTooltip, + turfOptions = _ref3.turfOptions; + + var units = turfOptions && turfOptions.units || 'kilometers'; + var text; + + if (formatTooltip) { + text = formatTooltip(distance); + } else { + // By default, round to 2 decimal places and append units + text = "".concat(parseFloat(distance).toFixed(2), " ").concat(units); + } + + return text; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var modeConfig = props.modeConfig, + data = props.data, + onEdit = props.onEdit; // restart measuring session + + if (this._isMeasuringSessionFinished) { + this._isMeasuringSessionFinished = false; + this.resetClickSequence(); + this._currentTooltips = []; + this._currentDistance = 0; + } + + var picks = event.picks; + var clickedEditHandle = (0, _utils.getPickedEditHandle)(picks); + var positionAdded = false; + + if (!clickedEditHandle) { + // Don't add another point right next to an existing one + this.addClickSequence(event); + positionAdded = true; + } + + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1) { + // They clicked the last point (or double-clicked), so add the LineString + this._isMeasuringSessionFinished = true; + } else if (positionAdded) { + if (clickSequence.length > 1) { + this._currentDistance += this._calculateDistanceForTooltip({ + positionA: clickSequence[clickSequence.length - 2], + positionB: clickSequence[clickSequence.length - 1], + modeConfig: modeConfig + }); + + this._currentTooltips.push({ + position: event.mapCoords, + text: this._formatTooltip(this._currentDistance, modeConfig) + }); + } // new tentative point + + + onEdit({ + // data is the same + updatedData: data, + editType: 'addTentativePosition', + editContext: { + position: event.mapCoords + } + }); + } + } + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) { + if (this._isMeasuringSessionFinished) return; + event.stopPropagation(); + var key = event.key; + var clickSequenceLength = this.getClickSequence().length; + + switch (key) { + case 'Escape': + this._isMeasuringSessionFinished = true; + + if (clickSequenceLength === 1) { + this.resetClickSequence(); + this._currentTooltips = []; + } // force update drawings + + + props.onUpdateCursor('cell'); + break; + + case 'Enter': + this.handleClick(props.lastPointerMoveEvent, props); + this._isMeasuringSessionFinished = true; + break; + + default: + break; + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var _guides$features; + + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent && !this._isMeasuringSessionFinished ? [lastPointerMoveEvent.mapCoords] : []; + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length > 0) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), lastCoords) + } + }); + } + + var editHandles = clickSequence.map(function (clickedCoord, index) { + return { + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'existing', + featureIndex: -1, + positionIndexes: [index] + }, + geometry: { + type: 'Point', + coordinates: clickedCoord + } + }; + }); + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(editHandles)); // @ts-ignore + + + return guides; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var positions = this.getClickSequence(); + + if (positions.length > 0 && lastPointerMoveEvent && !this._isMeasuringSessionFinished) { + var distance = this._calculateDistanceForTooltip({ + positionA: positions[positions.length - 1], + positionB: lastPointerMoveEvent.mapCoords, + modeConfig: props.modeConfig + }); + + return [].concat(_toConsumableArray(this._currentTooltips), [{ + position: lastPointerMoveEvent.mapCoords, + text: this._formatTooltip(this._currentDistance + distance, modeConfig) + }]); + } + + return this._currentTooltips; + } + }]); + + return MeasureDistanceMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.MeasureDistanceMode = MeasureDistanceMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWVhc3VyZS1kaXN0YW5jZS1tb2RlLnRzIl0sIm5hbWVzIjpbIk1lYXN1cmVEaXN0YW5jZU1vZGUiLCJwb3NpdGlvbkEiLCJwb3NpdGlvbkIiLCJtb2RlQ29uZmlnIiwidHVyZk9wdGlvbnMiLCJtZWFzdXJlbWVudENhbGxiYWNrIiwiZGlzdGFuY2UiLCJmb3JtYXRUb29sdGlwIiwidW5pdHMiLCJ0ZXh0IiwicGFyc2VGbG9hdCIsInRvRml4ZWQiLCJldmVudCIsInByb3BzIiwiZGF0YSIsIm9uRWRpdCIsIl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsIl9jdXJyZW50VG9vbHRpcHMiLCJfY3VycmVudERpc3RhbmNlIiwicGlja3MiLCJjbGlja2VkRWRpdEhhbmRsZSIsInBvc2l0aW9uQWRkZWQiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJwcm9wZXJ0aWVzIiwicG9zaXRpb25JbmRleGVzIiwiX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCIsInB1c2giLCJwb3NpdGlvbiIsIm1hcENvb3JkcyIsIl9mb3JtYXRUb29sdGlwIiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0Iiwic3RvcFByb3BhZ2F0aW9uIiwia2V5IiwiY2xpY2tTZXF1ZW5jZUxlbmd0aCIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlQ2xpY2siLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImxhc3RDb29yZHMiLCJndWlkZXMiLCJ0eXBlIiwiZmVhdHVyZXMiLCJndWlkZVR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZWRpdEhhbmRsZXMiLCJtYXAiLCJjbGlja2VkQ29vcmQiLCJpbmRleCIsImVkaXRIYW5kbGVUeXBlIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25zIiwiR2VvSnNv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QUFBLFFBQVEsRUFBRVcsb0JBQW9CLENBQUNWLFNBRGpDO0FBRUV6QixVQUFBQSxJQUFJLEVBQUUsS0FBSzBCLGNBQUwsQ0FBb0IsS0FBS2hCLGdCQUFMLEdBQXdCYixRQUE1QyxFQUFzREgsVUFBdEQ7QUFGUixTQUZGO0FBT0Q7O0FBRUQsYUFBTyxLQUFLZSxnQkFBWjtBQUNEOzs7O0VBdkxzQ3lDLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCwgTW9kZVByb3BzLCBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLCBUb29sdGlwIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgTWVhc3VyZURpc3RhbmNlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICBfY3VycmVudFRvb2x0aXBzID0gW107XG4gIF9jdXJyZW50RGlzdGFuY2UgPSAwO1xuXG4gIF9jYWxjdWxhdGVEaXN0YW5jZUZvclRvb2x0aXAgPSAoeyBwb3NpdGlvbkEsIHBvc2l0aW9uQiwgbW9kZUNvbmZpZyB9KSA9PiB7XG4gICAgY29uc3QgeyB0dXJmT3B0aW9ucywgbWVhc3VyZW1lbnRDYWxsYmFjayB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcbiAgICBjb25zdCBkaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShwb3NpdGlvbkEsIHBvc2l0aW9uQiwgdHVyZk9wdGlvbnMpO1xuXG4gICAgaWYgKG1lYXN1cmVtZW50Q2FsbGJhY2spIHtcbiAgICAgIG1lYXN1cmVtZW50Q2FsbGJhY2soZGlzdGFuY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXN0YW5jZTtcbiAgfTtcblxuICBfZm9ybWF0VG9vbHRpcChkaXN0YW5jZSwgbW9kZUNvbmZpZz8pIHtcbiAgICBjb25zdCB7IGZvcm1hdFRvb2x0aXAsIHR1cmZPcHRpb25zIH0gPSBtb2RlQ29uZmlnIHx8IHt9O1xuICAgIGNvbnN0IHVuaXRzID0gKHR1cmZPcHRpb25zICYmIHR1cmZPcHRpb25zLnVuaXRzKSB8fCAna2lsb21ldGVycyc7XG5cbiAgICBsZXQgdGV4dDtcbiAgICBpZiAoZm9ybWF0VG9vbHRpcCkge1xuICAgICAgdGV4dCA9IGZvcm1hdFRvb2x0aXAoZGlzdGFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCeSBkZWZhdWx0LCByb3VuZCB0byAyIGRlY2ltYWwgcGxhY2VzIGFuZCBhcHBlbmQgdW5pdHNcbiAgICAgIHRleHQgPSBgJHtwYXJzZUZsb2F0KGRpc3RhbmNlKS50b0ZpeGVkKDIpfSAke3VuaXRzfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB7IG1vZGVDb25maWcsIGRhdGEsIG9uRWRpdCB9ID0gcHJvcHM7XG5cbiAgICAvLyByZXN0YXJ0IG1lYXN1cmluZyBzZXNzaW9uXG4gICAgaWYgKHRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRUb29sdGlwcyA9IFtdO1xuICAgICAgdGhpcy5fY3VycmVudERpc3RhbmNlID0gMDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCBjbGlja2VkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUocGlja3MpO1xuXG4gICAgbGV0IHBvc2l0aW9uQWRkZWQgPSBmYWxzZTtcbiAgICBpZiAoIWNsaWNrZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBEb24ndCBhZGQgYW5vdGhlciBwb2ludCByaWdodCBuZXh0IHRvIGFuIGV4aXN0aW5nIG9uZVxuICAgICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICAgIHBvc2l0aW9uQWRkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoXG4gICAgICBjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiZcbiAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICBBcnJheS5pc0FycmF5KGNsaWNrZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzKSAmJlxuICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXNbMF0gPT09IGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGFkZCB0aGUgTGluZVN0cmluZ1xuICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb25BZGRlZCkge1xuICAgICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50RGlzdGFuY2UgKz0gdGhpcy5fY2FsY3VsYXRlRGlzdGFuY2VGb3JUb29sdGlwKHtcbiAgICAgICAgICBwb3NpdGlvbkE6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXSxcbiAgICAgICAgICBwb3NpdGlvbkI6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICAgICAgICBtb2RlQ29uZmlnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fY3VycmVudFRvb2x0aXBzLnB1c2goe1xuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UsIG1vZGVDb25maWcpLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gbmV3IHRlbnRhdGl2ZSBwb2ludFxuICAgICAgb25FZGl0KHtcbiAgICAgICAgLy8gZGF0YSBpcyB0aGUgc2FtZVxuICAgICAgICB1cGRhdGVkRGF0YTogZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRUZW50YXRpdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCkgcmV0dXJuO1xuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgeyBrZXkgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZUxlbmd0aCA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpLmxlbmd0aDtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLl9pc01lYXN1cmluZ1Nlc3Npb25GaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGlmIChjbGlja1NlcXVlbmNlTGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VG9vbHRpcHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb3JjZSB1cGRhdGUgZHJhd2luZ3NcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2NlbGwnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2socHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzKTtcbiAgICAgICAgdGhpcy5faXNNZWFzdXJpbmdTZXNzaW9uRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGxhc3RDb29yZHMgPVxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgIXRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkXG4gICAgICAgID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc11cbiAgICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGd1aWRlcyA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFsuLi5jbGlja1NlcXVlbmNlLCAuLi5sYXN0Q29vcmRzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gY2xpY2tTZXF1ZW5jZS5tYXAoKGNsaWNrZWRDb29yZCwgaW5kZXgpID0+ICh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2V4aXN0aW5nJyxcbiAgICAgICAgZmVhdHVyZUluZGV4OiAtMSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbaW5kZXhdLFxuICAgICAgfSxcbiAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBjbGlja2VkQ29vcmQsXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKC4uLmVkaXRIYW5kbGVzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGd1aWRlcztcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCdjZWxsJyk7XG4gIH1cblxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCwgbW9kZUNvbmZpZyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAocG9zaXRpb25zLmxlbmd0aCA+IDAgJiYgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgJiYgIXRoaXMuX2lzTWVhc3VyaW5nU2Vzc2lvbkZpbmlzaGVkKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZSA9IHRoaXMuX2NhbGN1bGF0ZURpc3RhbmNlRm9yVG9vbHRpcCh7XG4gICAgICAgIHBvc2l0aW9uQTogcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXSxcbiAgICAgICAgcG9zaXRpb25COiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMsXG4gICAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnRoaXMuX2N1cnJlbnRUb29sdGlwcyxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHMsXG4gICAgICAgICAgdGV4dDogdGhpcy5fZm9ybWF0VG9vbHRpcCh0aGlzLl9jdXJyZW50RGlzdGFuY2UgKyBkaXN0YW5jZSwgbW9kZUNvbmZpZyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VG9vbHRpcHM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/modify-mode.js b/modules/edit-modes/dist/lib/modify-mode.js new file mode 100644 index 000000000..f525da8b2 --- /dev/null +++ b/modules/edit-modes/dist/lib/modify-mode.js @@ -0,0 +1,303 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ModifyMode = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ModifyMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ModifyMode, _GeoJsonEditMode); + + var _super = _createSuper(ModifyMode); + + function ModifyMode() { + _classCallCheck(this, ModifyMode); + + return _super.apply(this, arguments); + } + + _createClass(ModifyMode, [{ + key: "getGuides", + value: function getGuides(props) { + var _this = this; + + var handles = []; + var data = props.data, + lastPointerMoveEvent = props.lastPointerMoveEvent; + var features = data.features; + var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks; + var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; + + var _iterator = _createForOfIteratorHelper(props.selectedIndexes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _index = _step.value; + + if (_index < features.length) { + var geometry = features[_index].geometry; + handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, _index))); + } else { + console.warn("selectedFeatureIndexes out of range ".concat(_index)); // eslint-disable-line no-console,no-undef + } + } // intermediate edit handle + + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (picks && picks.length && mapCoords) { + var existingEditHandle = (0, _utils.getPickedExistingEditHandle)(picks); // don't show intermediate point when too close to an existing edit handle + + var featureAsPick = !existingEditHandle && picks.find(function (pick) { + return !pick.isGuide; + }); // is the feature in the pick selected + + if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && props.selectedIndexes.includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'intermediate', + featureIndex: featureAsPick.index, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]) + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + } + } + + return { + type: 'FeatureCollection', + features: handles + }; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint, viewport) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + if (viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var pickedExistingHandle = (0, _utils.getPickedExistingEditHandle)(event.picks); + var pickedIntermediateHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (pickedExistingHandle) { + var _pickedExistingHandle = pickedExistingHandle.properties, + featureIndex = _pickedExistingHandle.featureIndex, + positionIndexes = _pickedExistingHandle.positionIndexes; + var updatedData; + + try { + updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject(); + } catch (ignored) {// This happens if user attempts to remove the last point + } + + if (updatedData) { + props.onEdit({ + updatedData: updatedData, + editType: 'removePosition', + editContext: { + featureIndexes: [featureIndex], + positionIndexes: positionIndexes, + position: pickedExistingHandle.geometry.coordinates + } + }); + } + } else if (pickedIntermediateHandle) { + var _pickedIntermediateHa = pickedIntermediateHandle.properties, + _featureIndex = _pickedIntermediateHa.featureIndex, + _positionIndexes = _pickedIntermediateHa.positionIndexes; + + var _updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(_featureIndex, _positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject(); + + if (_updatedData) { + props.onEdit({ + updatedData: _updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [_featureIndex], + positionIndexes: _positionIndexes, + position: pickedIntermediateHandle.geometry.coordinates + } + }); + } + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + // Cancel map panning if pointer went down on an edit handle + event.cancelPan(); + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'movePosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var cursor = this.getCursor(event); + props.onUpdateCursor(cursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedIntermediateEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).addPosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'addPosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + var selectedFeatureIndexes = props.selectedIndexes; + var editHandle = (0, _utils.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var editHandleProperties = editHandle.properties; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replacePosition(editHandleProperties.featureIndex, editHandleProperties.positionIndexes, event.mapCoords).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'finishMovePosition', + editContext: { + featureIndexes: [editHandleProperties.featureIndex], + positionIndexes: editHandleProperties.positionIndexes, + position: event.mapCoords + } + }); + } + } + }, { + key: "getCursor", + value: function getCursor(event) { + var picks = event && event.picks || []; + var handlesPicked = (0, _utils.getPickedEditHandles)(picks); + + if (handlesPicked.length) { + return 'cell'; + } + + return null; + } + }]); + + return ModifyMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ModifyMode = ModifyMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kaWZ5LW1vZGUudHMiXSwibmFtZXMiOlsiTW9kaWZ5TW9kZSIsInByb3BzIiwiaGFuZGxlcyIsImRhdGEiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImZlYXR1cmVzIiwicGlja3MiLCJtYXBDb29yZHMiLCJzZWxlY3RlZEluZGV4ZXMiLCJpbmRleCIsImxlbmd0aCIsImdlb21ldHJ5IiwicHVzaCIsImNvbnNvbGUiLCJ3YXJuIiwiZXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInR5cGUiLCJpbmNsdWRlcyIsImludGVybWVkaWF0ZVBvaW50IiwicG9zaXRpb25JbmRleFByZWZpeCIsInJlZmVyZW5jZVBvaW50IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsIm5lYXJlc3RQb2ludE9uTGluZSIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsInByb3BlcnRpZXMiLCJkaXN0IiwicG9zaXRpb24iLCJndWlkZVR5cGUiLCJlZGl0SGFuZGxlVHlwZSIsImZlYXR1cmVJbmRleCIsInBvc2l0aW9uSW5kZXhlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwibG9nIiwiZXZlbnQiLCJwaWNrZWRFeGlzdGluZ0hhbmRsZSIsInBpY2tlZEludGVybWVkaWF0ZUhhbmRsZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJyZW1vdmVQb3NpdGlvbiIsImdldE9iamVjdCIsImlnbm9yZWQiLCJvbkVkaXQiLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZUluZGV4ZXMiLCJhZGRQb3NpdGlvbiIsImVkaXRIYW5kbGUiLCJwb2ludGVyRG93blBpY2tzIiwiY2FuY2VsUGFuIiwiZWRpdEhhbmRsZVByb3BlcnRpZXMiLCJyZXBsYWNlUG9zaXRpb24iLCJjdXJzb3IiLCJnZXRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJoYW5kbGVzUGlja2VkIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFxQkE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFU7Ozs7Ozs7Ozs7Ozs7OEJBQ0RDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBRHFFLFVBRzdEQyxJQUg2RCxHQUc5QkYsS0FIOEIsQ0FHN0RFLElBSDZEO0FBQUEsVUFHdkRDLG9CQUh1RCxHQUc5QkgsS0FIOEIsQ0FHdkRHLG9CQUh1RDtBQUFBLFVBSTdEQyxRQUo2RCxHQUloREYsSUFKZ0QsQ0FJN0RFLFFBSjZEO0FBS3JFLFVBQU1DLEtBQUssR0FBR0Ysb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRSxLQUEzRDtBQUNBLFVBQU1DLFNBQVMsR0FBR0gsb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDRyxTQUEvRDs7QUFOcUUsaURBUWpETixLQUFLLENBQUNPLGVBUjJDO0FBQUE7O0FBQUE7QUFRckUsNERBQTJDO0FBQUEsY0FBaENDLE1BQWdDOztBQUN6QyxjQUFJQSxNQUFLLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBckIsRUFBNkI7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05OLFFBQVEsQ0FBQ0ksTUFBRCxDQURGLENBQ25CRSxRQURtQjtBQUUzQlQsWUFBQUEsT0FBTyxDQUFDVSxJQUFSLE9BQUFWLE9BQU8scUJBQVMsc0NBQTBCUyxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBVCxFQUFQO0FBQ0QsV0FIRCxNQUdPO0FBQ0xJLFlBQUFBLE9BQU8sQ0FBQ0MsSUFBUiwrQ0FBb0RMLE1BQXBELEdBREssQ0FDeUQ7QUFDL0Q7QUFDRixTQWZvRSxDQWlCckU7O0FBakJxRTtBQUFBO0FBQUE7QUFB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QWhCLElBQTBCLEVBQXhDO0FBRUEsVUFBTThELGFBQWEsR0FBRyxpQ0FBcUI5RCxLQUFyQixDQUF0Qjs7QUFDQSxVQUFJOEQsYUFBYSxDQUFDMUQsTUFBbEIsRUFBMEI7QUFDeEIsZUFBTyxNQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUF2UDZCMkQsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmVhcmVzdFBvaW50T25MaW5lIGZyb20gJ0B0dXJmL25lYXJlc3QtcG9pbnQtb24tbGluZSc7XG5pbXBvcnQgeyBwb2ludCwgbGluZVN0cmluZyBhcyB0b0xpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMsXG4gIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIGdldFBpY2tlZEV4aXN0aW5nRWRpdEhhbmRsZSxcbiAgZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSxcbiAgTmVhcmVzdFBvaW50VHlwZSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGluZVN0cmluZywgUG9pbnQsIEZlYXR1cmVDb2xsZWN0aW9uLCBGZWF0dXJlT2YgfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIE1vZGVQcm9wcyxcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgVmlld3BvcnQsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgTW9kaWZ5TW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcblxuICAgIGNvbnN0IHsgZGF0YSwgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IGRhdGE7XG4gICAgY29uc3QgcGlja3MgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5waWNrcztcbiAgICBjb25zdCBtYXBDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIHByb3BzLnNlbGVjdGVkSW5kZXhlcykge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgb3V0IG9mIHJhbmdlICR7aW5kZXh9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGludGVybWVkaWF0ZSBlZGl0IGhhbmRsZVxuICAgIGlmIChwaWNrcyAmJiBwaWNrcy5sZW5ndGggJiYgbWFwQ29vcmRzKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0VkaXRIYW5kbGUgPSBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUocGlja3MpO1xuICAgICAgLy8gZG9uJ3Qgc2hvdyBpbnRlcm1lZGlhdGUgcG9pbnQgd2hlbiB0b28gY2xvc2UgdG8gYW4gZXhpc3RpbmcgZWRpdCBoYW5kbGVcbiAgICAgIGNvbnN0IGZlYXR1cmVBc1BpY2sgPSAhZXhpc3RpbmdFZGl0SGFuZGxlICYmIHBpY2tzLmZpbmQoKHBpY2spID0+ICFwaWNrLmlzR3VpZGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgICFmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS50eXBlLmluY2x1ZGVzKCdQb2ludCcpICYmXG4gICAgICAgIHByb3BzLnNlbGVjdGVkSW5kZXhlcy5pbmNsdWRlcyhmZWF0dXJlQXNQaWNrLmluZGV4KVxuICAgICAgKSB7XG4gICAgICAgIGxldCBpbnRlcm1lZGlhdGVQb2ludDogTmVhcmVzdFBvaW50VHlwZSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBsZXQgcG9zaXRpb25JbmRleFByZWZpeCA9IFtdO1xuICAgICAgICBjb25zdCByZWZlcmVuY2VQb2ludCA9IHBvaW50KG1hcENvb3Jkcyk7XG4gICAgICAgIC8vIHByb2Nlc3MgYWxsIGxpbmVzIG9mIHRoZSAoc2luZ2xlKSBmZWF0dXJlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMoXG4gICAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgKGxpbmVTdHJpbmcsIHByZWZpeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZVN0cmluZ0ZlYXR1cmUgPSB0b0xpbmVTdHJpbmcobGluZVN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCA9IHRoaXMubmVhcmVzdFBvaW50T25MaW5lKFxuICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIGxpbmVTdHJpbmdGZWF0dXJlLFxuICAgICAgICAgICAgICByZWZlcmVuY2VQb2ludCxcbiAgICAgICAgICAgICAgcHJvcHMubW9kZUNvbmZpZyAmJiBwcm9wcy5tb2RlQ29uZmlnLnZpZXdwb3J0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhaW50ZXJtZWRpYXRlUG9pbnQgfHxcbiAgICAgICAgICAgICAgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0IDwgaW50ZXJtZWRpYXRlUG9pbnQucHJvcGVydGllcy5kaXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlUG9pbnQgPSBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICAgICAgcG9zaXRpb25JbmRleFByZWZpeCA9IHByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIC8vIHRhY2sgb24gdGhlIGxvbmUgaW50ZXJtZWRpYXRlIHBvaW50IHRvIHRoZSBzZXQgb2YgaGFuZGxlc1xuICAgICAgICBpZiAoaW50ZXJtZWRpYXRlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBnZW9tZXRyeTogeyBjb29yZGluYXRlczogcG9zaXRpb24gfSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgaW5kZXggfSxcbiAgICAgICAgICB9ID0gaW50ZXJtZWRpYXRlUG9pbnQ7XG4gICAgICAgICAgaGFuZGxlcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgZ3VpZGVUeXBlOiAnZWRpdEhhbmRsZScsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlOiAnaW50ZXJtZWRpYXRlJyxcbiAgICAgICAgICAgICAgZmVhdHVyZUluZGV4OiBmZWF0dXJlQXNQaWNrLmluZGV4LFxuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpbmRleCArIDFdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBwb3NpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBoYW5kbGVzLFxuICAgIH07XG4gIH1cblxuICAvLyB0dXJmLmpzIGRvZXMgbm90IHN1cHBvcnQgZWxldmF0aW9uIGZvciBuZWFyZXN0UG9pbnRPbkxpbmVcbiAgbmVhcmVzdFBvaW50T25MaW5lKFxuICAgIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgICBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+LFxuICAgIHZpZXdwb3J0OiBWaWV3cG9ydCB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLy8gVGhpcyBsaW5lIGhhcyBlbGV2YXRpb24sIHdlIG5lZWQgdG8gdXNlIGFsdGVybmF0aXZlIGFsZ29yaXRobVxuICAgICAgICByZXR1cm4gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKGxpbmUsIGluUG9pbnQsIHZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgcGlja2VkRXhpc3RpbmdIYW5kbGUgPSBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGNvbnN0IHBpY2tlZEludGVybWVkaWF0ZUhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuXG4gICAgaWYgKHBpY2tlZEV4aXN0aW5nSGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzIH0gPSBwaWNrZWRFeGlzdGluZ0hhbmRsZS5wcm9wZXJ0aWVzO1xuXG4gICAgICBsZXQgdXBkYXRlZERhdGE7XG4gICAgICB0cnkge1xuICAgICAgICB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKVxuICAgICAgICAgIC5yZW1vdmVQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcylcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG4gICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiB1c2VyIGF0dGVtcHRzIHRvIHJlbW92ZSB0aGUgbGFzdCBwb2ludFxuICAgICAgfVxuXG4gICAgICBpZiAodXBkYXRlZERhdGEpIHtcbiAgICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgICBlZGl0VHlwZTogJ3JlbW92ZVBvc2l0aW9uJyxcbiAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHBpY2tlZEV4aXN0aW5nSGFuZGxlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlKSB7XG4gICAgICBjb25zdCB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzIH0gPSBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgaWYgKHVwZGF0ZWREYXRhKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwaWNrZWRJbnRlcm1lZGlhdGVIYW5kbGUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZWRpdEhhbmRsZSkge1xuICAgICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgICBldmVudC5jYW5jZWxQYW4oKTtcblxuICAgICAgY29uc3QgZWRpdEhhbmRsZVByb3BlcnRpZXMgPSBlZGl0SGFuZGxlLnByb3BlcnRpZXM7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC5yZXBsYWNlUG9zaXRpb24oXG4gICAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMuZmVhdHVyZUluZGV4LFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBldmVudC5tYXBDb29yZHNcbiAgICAgICAgKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ21vdmVQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEludGVybWVkaWF0ZUVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLmFkZFBvc2l0aW9uKFxuICAgICAgICAgIGVkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgZXZlbnQubWFwQ29vcmRzXG4gICAgICAgIClcbiAgICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIHBvc2l0aW9uOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSBwcm9wcy5zZWxlY3RlZEluZGV4ZXM7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICBlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXgsXG4gICAgICAgICAgZWRpdEhhbmRsZVByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgIGV2ZW50Lm1hcENvb3Jkc1xuICAgICAgICApXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnZmluaXNoTW92ZVBvc2l0aW9uJyxcbiAgICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGVQcm9wZXJ0aWVzLmZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlUHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEN1cnNvcihldmVudDogUG9pbnRlck1vdmVFdmVudCk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBpY2tzID0gKGV2ZW50ICYmIGV2ZW50LnBpY2tzKSB8fCBbXTtcblxuICAgIGNvbnN0IGhhbmRsZXNQaWNrZWQgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gICAgaWYgKGhhbmRsZXNQaWNrZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ2NlbGwnO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/resize-circle-mode.js b/modules/edit-modes/dist/lib/resize-circle-mode.js new file mode 100644 index 000000000..505e8ac7b --- /dev/null +++ b/modules/edit-modes/dist/lib/resize-circle-mode.js @@ -0,0 +1,246 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ResizeCircleMode = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _center = _interopRequireDefault(require("@turf/center")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ResizeCircleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ResizeCircleMode, _GeoJsonEditMode); + + var _super = _createSuper(ResizeCircleMode); + + function ResizeCircleMode() { + var _this; + + _classCallCheck(this, ResizeCircleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isResizing", false); + + return _this; + } + + _createClass(ResizeCircleMode, [{ + key: "getGuides", + value: function getGuides(props) { + var _this2 = this; + + var handles = []; + var selectedFeatureIndexes = props.selectedIndexes; + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var picks = lastPointerMoveEvent && lastPointerMoveEvent.picks; + var mapCoords = lastPointerMoveEvent && lastPointerMoveEvent.mapCoords; // intermediate edit handle + + if (picks && picks.length && mapCoords && selectedFeatureIndexes.length === 1 && !this._isResizing) { + var featureAsPick = picks.find(function (pick) { + return !pick.isGuide; + }); // is the feature in the pick selected + + if (featureAsPick && featureAsPick.object.properties.shape && featureAsPick.object.properties.shape.includes('Circle') && props.selectedIndexes.includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(mapCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this2.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: 'intermediate', + featureIndex: featureAsPick.index, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]) + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + } + } + + return { + type: 'FeatureCollection', + features: handles + }; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint, viewport) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + if (viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + var editHandle = (0, _utils.getPickedEditHandle)(event.pointerDownPicks); + + if (editHandle) { + // Cancel map panning if pointer went down on an edit handle + event.cancelPan(); + var editHandleProperties = editHandle.properties; + var feature = this.getSelectedFeature(props); + var center = (0, _center["default"])(feature).geometry.coordinates; + var numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1; + var radius = Math.max((0, _distance["default"])(center, event.mapCoords), 0.001); + var _ref = {}, + _ref$steps = _ref.steps, + steps = _ref$steps === void 0 ? numberOfSteps : _ref$steps; + var options = { + steps: steps + }; + var updatedFeature = (0, _circle["default"])(center, radius, options); + var geometry = updatedFeature.geometry; + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(editHandleProperties.featureIndex, geometry).getObject(); + props.onEdit({ + updatedData: updatedData, + editType: 'circleResize', + editContext: { + featureIndexes: [editHandleProperties.featureIndex] + } + }); + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isResizing) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'intermediate' ? selectedEditHandle : null; + } + + var cursor = this.getCursor(event); + props.onUpdateCursor(cursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isResizing = true; + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isResizing) { + props.onEdit({ + updatedData: props.data, + editType: 'circleResizeEnd', + editContext: { + featureIndexes: props.selectedIndexes + } + }); + this._selectedEditHandle = null; + this._isResizing = false; + } + } + }, { + key: "getCursor", + value: function getCursor(event) { + var picks = event && event.picks || []; + var handlesPicked = (0, _utils.getPickedEditHandles)(picks); + + if (handlesPicked.length) { + return 'cell'; + } + + return null; + } + }]); + + return ResizeCircleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ResizeCircleMode = ResizeCircleMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVzaXplLWNpcmNsZS1tb2RlLnRzIl0sIm5hbWVzIjpbIlJlc2l6ZUNpcmNsZU1vZGUiLCJwcm9wcyIsImhhbmRsZXMiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRJbmRleGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwaWNrcyIsIm1hcENvb3JkcyIsImxlbmd0aCIsIl9pc1Jlc2l6aW5nIiwiZmVhdHVyZUFzUGljayIsImZpbmQiLCJwaWNrIiwiaXNHdWlkZSIsIm9iamVjdCIsInByb3BlcnRpZXMiLCJzaGFwZSIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJsaW5lU3RyaW5nIiwicHJlZml4IiwibGluZVN0cmluZ0ZlYXR1cmUiLCJjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludCIsIm5lYXJlc3RQb2ludE9uTGluZSIsIm1vZGVDb25maWciLCJ2aWV3cG9ydCIsImRpc3QiLCJwb3NpdGlvbiIsInB1c2giLCJ0eXBlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJmZWF0dXJlcyIsImxpbmUiLCJpblBvaW50Iiwic29tZSIsImNvb3JkIiwiY29uc29sZSIsImxvZyIsImV2ZW50IiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJjYW5jZWxQYW4iLCJlZGl0SGFuZGxlUHJvcGVydGllcyIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJjZW50ZXIiLCJudW1iZXJPZlN0ZXBzIiwiT2JqZWN0IiwiZW50cmllcyIsInJhZGl1cyIsIk1hdGgiLCJtYXgiLCJzdGVwcyIsIm9wdGlvbnMiLCJ1cGRhdGVkRmVhdHVyZSIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwiX3NlbGVjdGVkRWRpdEhhbmRsZSIsImN1cnNvciIsImdldEN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwiaGFuZGxlc1BpY2tlZCIsIkdlb0pzb25FZGl0TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBa0JBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tFQUVHLEs7Ozs7Ozs7OEJBRUpDLEssRUFBNkQ7QUFBQTs7QUFDckUsVUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUdGLEtBQUssQ0FBQ0csZUFBckM7QUFGcUUsVUFJN0RDLG9CQUo2RCxHQUlwQ0osS0FKb0MsQ0FJN0RJLG9CQUo2RDtBQUtyRSxVQUFNQyxLQUFLLEdBQUdELG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0MsS0FBM0Q7QUFDQSxVQUFNQyxTQUFTLEdBQUdGLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQ0UsU0FBL0QsQ0FOcUUsQ0FRckU7O0FBQ0EsVUFDRUQsS0FBSyxJQUNMQSxLQUFLLENBQUNFLE1BRE4sSUFFQUQsU0FGQSxJQUdBSixzQkFBc0IsQ0FBQ0ssTUFBdkIsS0FBa0MsQ0FIbEMsSUFJQSxDQUFDLEtBQUtDLFdBTFIsRUFNRTtBQUNBLFlBQU1DLGFBQWEsR0FBR0osS0FBSyxDQUFDSyxJQUFOLENBQVcsVUFBQ0MsSUFBRDtBQUFBLGlCQUFVLENBQUNBLElBQUksQ0FBQ0MsT0FBaEI7QUFBQSxTQUFYLENBQXRCLENBREEsQ0FHQTs7QUFDQSxZQUNFSCxhQUFhLElBQ2JBLGFBQWEsQ0FBQ0ksTUFBZCxDQUFxQkMsVUFBckIsQ0FB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aUNBQXFCdkUsS0FBckIsQ0FBdEI7O0FBQ0EsVUFBSXVFLGFBQWEsQ0FBQ3JFLE1BQWxCLEVBQTBCO0FBQ3hCLGVBQU8sTUFBUDtBQUNEOztBQUNELGFBQU8sSUFBUDtBQUNEOzs7O0VBbExtQ3NFLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZDZW50ZXIgZnJvbSAnQHR1cmYvY2VudGVyJztcbmltcG9ydCB7XG4gIHJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMsXG4gIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZSxcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZXMsXG4gIGdldFBpY2tlZEVkaXRIYW5kbGUsXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExpbmVTdHJpbmcsIFBvaW50LCBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZU9mIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQge1xuICBNb2RlUHJvcHMsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIFZpZXdwb3J0LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBSZXNpemVDaXJjbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfaXNSZXNpemluZyA9IGZhbHNlO1xuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuXG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgcGlja3MgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5waWNrcztcbiAgICBjb25zdCBtYXBDb29yZHMgPSBsYXN0UG9pbnRlck1vdmVFdmVudCAmJiBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICAvLyBpbnRlcm1lZGlhdGUgZWRpdCBoYW5kbGVcbiAgICBpZiAoXG4gICAgICBwaWNrcyAmJlxuICAgICAgcGlja3MubGVuZ3RoICYmXG4gICAgICBtYXBDb29yZHMgJiZcbiAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoID09PSAxICYmXG4gICAgICAhdGhpcy5faXNSZXNpemluZ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZUFzUGljayA9IHBpY2tzLmZpbmQoKHBpY2spID0+ICFwaWNrLmlzR3VpZGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgIGZlYXR1cmVBc1BpY2sub2JqZWN0LnByb3BlcnRpZXMuc2hhcGUgJiZcbiAgICAgICAgZmVhdHVyZUFzUGljay5vYmplY3QucHJvcGVydGllcy5zaGFwZS5pbmNsdWRlcygnQ2lyY2xlJykgJiZcbiAgICAgICAgcHJvcHMuc2VsZWN0ZWRJbmRleGVzLmluY2x1ZGVzKGZlYXR1cmVBc1BpY2suaW5kZXgpXG4gICAgICApIHtcbiAgICAgICAgbGV0IGludGVybWVkaWF0ZVBvaW50OiBOZWFyZXN0UG9pbnRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgICAgIGxldCBwb3NpdGlvbkluZGV4UHJlZml4ID0gW107XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVBvaW50ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgICAgICAgLy8gcHJvY2VzcyBhbGwgbGluZXMgb2YgdGhlIChzaW5nbGUpIGZlYXR1cmVcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICAobGluZVN0cmluZywgcHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lU3RyaW5nRmVhdHVyZSA9IHRvTGluZVN0cmluZyhsaW5lU3RyaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50ID0gdGhpcy5uZWFyZXN0UG9pbnRPbkxpbmUoXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgbGluZVN0cmluZ0ZlYXR1cmUsXG4gICAgICAgICAgICAgIHJlZmVyZW5jZVBvaW50LFxuICAgICAgICAgICAgICBwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcudmlld3BvcnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFpbnRlcm1lZGlhdGVQb2ludCB8fFxuICAgICAgICAgICAgICBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3QgPCBpbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVQb2ludCA9IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50O1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4UHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgLy8gdGFjayBvbiB0aGUgbG9uZSBpbnRlcm1lZGlhdGUgcG9pbnQgdG8gdGhlIHNldCBvZiBoYW5kbGVzXG4gICAgICAgIGlmIChpbnRlcm1lZGlhdGVQb2ludCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbiB9LFxuICAgICAgICAgICAgcHJvcGVydGllczogeyBpbmRleCB9LFxuICAgICAgICAgIH0gPSBpbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICBoYW5kbGVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdpbnRlcm1lZGlhdGUnLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXg6IGZlYXR1cmVBc1BpY2suaW5kZXgsXG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogWy4uLnBvc2l0aW9uSW5kZXhQcmVmaXgsIGluZGV4ICsgMV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IGhhbmRsZXMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIHR1cmYuanMgZG9lcyBub3Qgc3VwcG9ydCBlbGV2YXRpb24gZm9yIG5lYXJlc3RQb2ludE9uTGluZVxuICBuZWFyZXN0UG9pbnRPbkxpbmUoXG4gICAgbGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LFxuICAgIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gICAgdmlld3BvcnQ6IFZpZXdwb3J0IHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBOZWFyZXN0UG9pbnRUeXBlIHtcbiAgICBjb25zdCB7IGNvb3JkaW5hdGVzIH0gPSBsaW5lLmdlb21ldHJ5O1xuICAgIGlmIChjb29yZGluYXRlcy5zb21lKChjb29yZCkgPT4gY29vcmQubGVuZ3RoID4gMikpIHtcbiAgICAgIGlmICh2aWV3cG9ydCkge1xuICAgICAgICAvLyBUaGlzIGxpbmUgaGFzIGVsZXZhdGlvbiwgd2UgbmVlZCB0byB1c2UgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtXG4gICAgICAgIHJldHVybiBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUobGluZSwgaW5Qb2ludCwgdmlld3BvcnQpO1xuICAgICAgfVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnRWRpdGluZyAzRCBwb2ludCBidXQgbW9kZUNvbmZpZy52aWV3cG9ydCBub3QgcHJvdmlkZWQuIEZhbGxpbmcgYmFjayB0byAyRCBsb2dpYy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZWFyZXN0UG9pbnRPbkxpbmUobGluZSwgaW5Qb2ludCk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5wb2ludGVyRG93blBpY2tzKTtcblxuICAgIGlmIChlZGl0SGFuZGxlKSB7XG4gICAgICAvLyBDYW5jZWwgbWFwIHBhbm5pbmcgaWYgcG9pbnRlciB3ZW50IGRvd24gb24gYW4gZWRpdCBoYW5kbGVcbiAgICAgIGV2ZW50LmNhbmNlbFBhbigpO1xuXG4gICAgICBjb25zdCBlZGl0SGFuZGxlUHJvcGVydGllcyA9IGVkaXRIYW5kbGUucHJvcGVydGllcztcblxuICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICAgIGNvbnN0IGNlbnRlciA9IHR1cmZDZW50ZXIoZmVhdHVyZSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICBjb25zdCBudW1iZXJPZlN0ZXBzID0gT2JqZWN0LmVudHJpZXMoZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSkubGVuZ3RoIC0gMTtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNlbnRlciwgZXZlbnQubWFwQ29vcmRzKSwgMC4wMDEpO1xuXG4gICAgICBjb25zdCB7IHN0ZXBzID0gbnVtYmVyT2ZTdGVwcyB9ID0ge307XG4gICAgICBjb25zdCBvcHRpb25zID0geyBzdGVwcyB9O1xuICAgICAgY29uc3QgdXBkYXRlZEZlYXR1cmUgPSBjaXJjbGUoY2VudGVyLCByYWRpdXMsIG9wdGlvbnMpO1xuICAgICAgY29uc3QgZ2VvbWV0cnkgPSB1cGRhdGVkRmVhdHVyZS5nZW9tZXRyeTtcblxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSlcbiAgICAgICAgLnJlcGxhY2VHZW9tZXRyeShlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXgsIGdlb21ldHJ5KVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIHByb3BzLm9uRWRpdCh7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2NpcmNsZVJlc2l6ZScsXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlUHJvcGVydGllcy5mZWF0dXJlSW5kZXhdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pc1Jlc2l6aW5nKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSA9XG4gICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZSAmJiBzZWxlY3RlZEVkaXRIYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgICAgICAgICA/IHNlbGVjdGVkRWRpdEhhbmRsZVxuICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJzb3IgPSB0aGlzLmdldEN1cnNvcihldmVudCk7XG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IoY3Vyc29yKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9pc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1Jlc2l6aW5nKSB7XG4gICAgICBwcm9wcy5vbkVkaXQoe1xuICAgICAgICB1cGRhdGVkRGF0YTogcHJvcHMuZGF0YSxcbiAgICAgICAgZWRpdFR5cGU6ICdjaXJjbGVSZXNpemVFbmQnLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUmVzaXppbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRDdXJzb3IoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwaWNrcyA9IChldmVudCAmJiBldmVudC5waWNrcykgfHwgW107XG5cbiAgICBjb25zdCBoYW5kbGVzUGlja2VkID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICAgIGlmIChoYW5kbGVzUGlja2VkLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdjZWxsJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/rotate-mode.js b/modules/edit-modes/dist/lib/rotate-mode.js new file mode 100644 index 000000000..bd2e113f4 --- /dev/null +++ b/modules/edit-modes/dist/lib/rotate-mode.js @@ -0,0 +1,258 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotateMode = void 0; + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _meta = require("@turf/meta"); + +var _invariant = require("@turf/invariant"); + +var _helpers = require("@turf/helpers"); + +var _transformRotate = _interopRequireDefault(require("@turf/transform-rotate")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 RotateMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(RotateMode, _GeoJsonEditMode); + + var _super = _createSuper(RotateMode); + + function RotateMode() { + var _this; + + _classCallCheck(this, RotateMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingRotated", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isRotating", false); + + _defineProperty(_assertThisInitialized(_this), "_isSinglePointGeometrySelected", function (geometry) { + var _ref = geometry || {}, + features = _ref.features; + + if (Array.isArray(features) && features.length === 1) { + // @ts-ignore + var _getGeom = (0, _invariant.getGeom)(features[0]), + type = _getGeom.type; + + return type === 'Point'; + } + + return false; + }); + + _defineProperty(_assertThisInitialized(_this), "getIsRotating", function () { + return _this._isRotating; + }); + + return _this; + } + + _createClass(RotateMode, [{ + key: "getGuides", + value: function getGuides(props) { + var selectedGeometry = this._geometryBeingRotated || this.getSelectedFeaturesAsFeatureCollection(props); + + if (this._isSinglePointGeometrySelected(selectedGeometry)) { + return { + type: 'FeatureCollection', + features: [] + }; + } + + if (this._isRotating) { + // Display rotate pivot + return (0, _helpers.featureCollection)([(0, _centroid["default"])(selectedGeometry)]); + } + + var boundingBox = (0, _bboxPolygon["default"])((0, _bbox["default"])(selectedGeometry)); + var previousCoord = null; + var topEdgeMidpointCoords = null; + var longestEdgeLength = 0; + (0, _meta.coordEach)(boundingBox, function (coord) { + if (previousCoord) { + // @ts-ignore + var edgeMidpoint = (0, _geojsonEditMode.getIntermediatePosition)(coord, previousCoord); + + if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) { + // Get the top edge midpoint of the enveloping box + topEdgeMidpointCoords = edgeMidpoint; + } // Get the length of the longest edge of the enveloping box + + + var edgeDistance = (0, _distance["default"])(coord, previousCoord); + longestEdgeLength = Math.max(longestEdgeLength, edgeDistance); + } + + previousCoord = coord; + }); // Scale the length of the line between the rotate handler and the enveloping box + // relative to the length of the longest edge of the enveloping box + + var rotateHandleCoords = topEdgeMidpointCoords && [topEdgeMidpointCoords[0], topEdgeMidpointCoords[1] + longestEdgeLength / 1000]; + var lineFromEnvelopeToRotateHandle = (0, _helpers.lineString)([topEdgeMidpointCoords, rotateHandleCoords]); + var rotateHandle = (0, _helpers.point)(rotateHandleCoords, { + guideType: 'editHandle', + editHandleType: 'rotate' + }); // @ts-ignore + + return (0, _helpers.featureCollection)([// @ts-ignore + (0, _polygonToLine["default"])(boundingBox), // @ts-ignore + rotateHandle, // @ts-ignore + lineFromEnvelopeToRotateHandle]); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isRotating) { + return; + } + + var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotating', props); + + if (rotateAction) { + props.onEdit(rotateAction); + } + + event.cancelPan(); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isRotating) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'rotate' ? selectedEditHandle : null; + } + + this.updateCursor(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isRotating = true; + this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(props); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isRotating) { + // Rotate the geometry + var rotateAction = this.getRotateAction(event.pointerDownMapCoords, event.mapCoords, 'rotated', props); + + if (rotateAction) { + props.onEdit(rotateAction); + } + + this._geometryBeingRotated = null; + this._selectedEditHandle = null; + this._isRotating = false; + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._selectedEditHandle) { + // TODO: look at doing SVG cursors to get a better "rotate" cursor + props.onUpdateCursor('crosshair'); + } else { + props.onUpdateCursor(null); + } + } + }, { + key: "getRotateAction", + value: function getRotateAction(startDragPoint, currentPoint, editType, props) { + if (!this._geometryBeingRotated) { + return null; + } + + var centroid = (0, _centroid["default"])(this._geometryBeingRotated); + var angle = getRotationAngle(centroid, startDragPoint, currentPoint); // @ts-ignore + + var rotatedFeatures = (0, _transformRotate["default"])( // @ts-ignore + this._geometryBeingRotated, angle, { + pivot: centroid + }); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = rotatedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + editContext: { + featureIndexes: selectedIndexes + } + }; + } + }]); + + return RotateMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.RotateMode = RotateMode; + +function getRotationAngle(centroid, startDragPoint, currentPoint) { + var bearing1 = (0, _bearing["default"])(centroid, startDragPoint); + var bearing2 = (0, _bearing["default"])(centroid, currentPoint); + return bearing2 - bearing1; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcm90YXRlLW1vZGUudHMiXSwibmFtZXMiOlsiUm90YXRlTW9kZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ0eXBlIiwiX2lzUm90YXRpbmciLCJwcm9wcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJfZ2VvbWV0cnlCZWluZ1JvdGF0ZWQiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwicHJldmlvdXNDb29yZCIsInRvcEVkZ2VNaWRwb2ludENvb3JkcyIsImxvbmdlc3RFZGdlTGVuZ3RoIiwiY29vcmQiLCJlZGdlTWlkcG9pbnQiLCJlZGdlRGlzdGFuY2UiLCJNYXRoIiwibWF4Iiwicm90YXRlSGFuZGxlQ29vcmRzIiwibGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlIiwicm90YXRlSGFuZGxlIiwiZ3VpZGVUeXBlIiwiZWRpdEhhbmRsZVR5cGUiLCJldmVudCIsInJvdGF0ZUFjdGlvbiIsImdldFJvdGF0ZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRFZGl0SGFuZGxlIiwicGlja3MiLCJfc2VsZWN0ZWRFZGl0SGFuZGxlIiwicHJvcGVydGllcyIsInVwZGF0ZUN1cnNvciIsIm9uVXBkYXRlQ3Vyc29yIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsImNlbnRyb2lkIiwiYW5nbGUiLCJnZXRSb3RhdGlvbkFuZ2xlIiwicm90YXRlZEZlYXR1cmVzIiwicGl2b3QiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIkdlb0pzb25FZGl0TW9kZSIsImJlYXJpbmcxIiwiYmVhcmluZzIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVVBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrRUFHRyxLOztxRkFFbUIsVUFBQ0MsUUFBRCxFQUE2RDtBQUFBLGlCQUN2RUEsUUFBUSxJQUFJLEVBRDJEO0FBQUEsVUFDcEZDLFFBRG9GLFFBQ3BGQSxRQURvRjs7QUFFNUYsVUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFFBQWQsS0FBMkJBLFFBQVEsQ0FBQ0csTUFBVCxLQUFvQixDQUFuRCxFQUFzRDtBQUNwRDtBQURvRCx1QkFFbkMsd0JBQVFILFFBQVEsQ0FBQyxDQUFELENBQWhCLENBRm1DO0FBQUEsWUFFNUNJLElBRjRDLFlBRTVDQSxJQUY0Qzs7QUFHcEQsZUFBT0EsSUFBSSxLQUFLLE9BQWhCO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0QsSzs7b0VBRWU7QUFBQSxhQUFNLE1BQUtDLFdBQVg7QUFBQSxLOzs7Ozs7OzhCQUVOQyxLLEVBQTZEO0FBQ3JFLFVBQU1DLGdCQUFnQixHQUNwQixLQUFLQyxxQkFBTCxJQUE4QixLQUFLQyxzQ0FBTCxDQUE0Q0gsS0FBNUMsQ0FEaEM7O0FBR0EsVUFBSSxLQUFLSSw4QkFBTCxDQUFvQ0gsZ0JBQXBDLENBQUosRUFBMkQ7QUFDekQsZUFBTztBQUFFSCxVQUFBQSxJQUFJLEVBQUUsbUJBQVI7QUFBNkJKLFVBQUFBLFFBQVEsRUFBRTtBQUF2QyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLSyxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsZUFBTyxnQ0FBa0IsQ0FBQywwQkFBYUUsZ0JBQWIsQ0FBRCxDQUFsQixDQUFQO0FBQ0Q7O0FBRUQsVUFBTUksV0FBVyxHQUFHLDZCQUFZLHNCQUFLSixnQkFBTCxDQUFaLENBQXBCO0FBRUEsVUFBSUssYUFBYSxHQUFHLElBQXBCO0FBQ0EsVUFBSUMscUJBQXFCLEdBQUcsSUFBNUI7QUFDQSxVQUFJQyxpQkFBaUIsR0FBRyxDQUF4QjtBQUVBLDJCQUFVSCxXQUFWLEVBQXVCLFVBQUNJLEtBQUQsRUFBVztBQUNoQyxZQUFJSCxhQUFKLEVBQW1CO0FBQ2pCO0FBQ0EsY0FBTUksWUFBWSxHQUFHLDhDQUF3QkQsS0FBeEIsRUFBK0JILGFBQS9CLENBQXJCOztBQUNBLGNBQUksQ0FBQ0MscUJBQUQsSUFBMEJHLFlBQVksQ0FBQyxDQUFELENBQVosR0FBa0JILHFCQUFxQixDQUFDLENBQUQsQ0FBckUsRUFBMEU7QUFDeEU7QUFDQUEsWUFBQUEscUJBQXFCLEdBQUdHLFlBQXhCO0FBQ0QsV0FOZ0IsQ0FPakI7OztBQUNBLGNBQU1DLFlBQVksR0FBRywwQkFBYUYsS0FBYixFQUFvQkgsYUFBcEIsQ0FBckI7QUFDQUUsVUFBQUEsaUJBQWlCLEdBQUdJLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxpQkFBVCxFQUE0QkcsWUFBNUIsQ0FBcEI7QUFDRDs7QUFDREwsUUFBQUEsYUFBYSxHQUFHRyxLQUFoQjtBQUNELE9BYkQsRUFuQnFFLENBa0NyRTtBQUNBOztBQUNBLFVBQU1LLGtCQUFrQixHQUFHUCxxQkFBcUIsSUFBSSxDQUNsREEscUJBQXFCLENBQUMsQ0FBRCxDQUQ2QixFQUVsREEscUJBQXFCLENBQUMsQ0FBRCxDQUFyQixHQUEyQkMsaUJBQWlCLEdBQUcsSUFGRyxDQUFwRDtBQUtBLFVBQU1PLDhCQUE4QixHQUFHLHlCQUFXLENBQUNSLHFCQUFELEVBQXdCTyxrQkFBeEIsQ0FBWCxDQUF2QztBQUNBLFVBQU1FLFlBQVksR0FBRyxvQkFBTUYsa0JBQU4sRUFBMEI7QUFDN0NHLFFBQUFBLFNBQVMsRUFBRSxZQURrQztBQUU3Q0MsUUFBQUEsY0FBYyxFQUFFO0FBRjZCLE9BQTFCLENBQXJCLENBMUNxRSxDQThDckU7O0FBQ0EsYUFBTyxnQ0FBa0IsQ0FDdkI7QUFDQSxxQ0FBY2IsV0FBZCxDQUZ1QixFQUd2QjtBQUNBVyxNQUFBQSxZQUp1QixFQUt2QjtBQUNBRCxNQUFBQSw4QkFOdUIsQ0FBbEIsQ0FBUDtBQVFEOzs7bUNBRWNJLEssRUFBc0JuQixLLEVBQXFDO0FBQ3hFLFVBQUksQ0FBQyxLQUFLRCxXQUFWLEVBQXVCO0FBQ3JCO0FBQ0Q7O0FBRUQsVUFBTXFCLFlBQVksR0FBRyxLQUFLQyxlQUFMLENBQ25CRixLQUFLLENBQUNHLG9CQURhLEVBRW5CSCxLQUFLLENBQUNJLFNBRmEsRUFHbkIsVUFIbUIsRUFJbkJ2QixLQUptQixDQUFyQjs7QUFNQSxVQUFJb0IsWUFBSixFQUFrQjtBQUNoQnBCLFFBQUFBLEtBQUssQ0FBQ3dCLE1BQU4sQ0FBYUosWUFBYjtBQUNEOztBQUVERCxNQUFBQSxLQUFLLENBQUNNLFNBQU47QUFDRDs7O3NDQUVpQk4sSyxFQUF5Qm5CLEssRUFBcUM7QUFDOUUsVUFBSSxDQUFDLEtBQUtELFdBQVYsRUFBdUI7QUFDckIsWUFBTTJCLGtCQUFrQixHQUFHLGdDQUFvQlAsS0FBSyxDQUFDUSxLQUExQixDQUEzQjtBQUNBLGFBQUtDLG1CQUFMLEdBQ0VGLGtCQUFrQixJQUFJQSxrQkFBa0IsQ0FBQ0csVUFBbkIsQ0FBOEJYLGNBQTlCLEtBQWlELFFBQXZFLEdBQ0lRLGtCQURKLEdBRUksSUFITjtBQUlEOztBQUVELFdBQUtJLFlBQUwsQ0FBa0I5QixLQUFsQjtBQUNEOzs7d0NBRW1CbUIsSyxFQUEyQm5CLEssRUFBcUM7QUFDbEYsVUFBSSxLQUFLNEIsbUJBQVQsRUFBOEI7QUFDNUIsYUFBSzdCLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxhQUFLRyxxQkFBTCxHQUE2QixLQUFLQyxzQ0FBTCxDQUE0Q0gsS0FBNUMsQ0FBN0I7QUFDRDtBQUNGOzs7dUNBRWtCbUIsSyxFQUEwQm5CLEssRUFBcUM7QUFDaEYsVUFBSSxLQUFLRCxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsWUFBTXFCLFlBQVksR0FBRyxLQUFLQyxlQUFMLENBQ25CRixLQUFLLENBQUNHLG9CQURhLEVBRW5CSCxLQUFLLENBQUNJLFNBRmEsRUFHbkIsU0FIbUIsRUFJbkJ2QixLQUptQixDQUFyQjs7QUFPQSxZQUFJb0IsWUFBSixFQUFrQjtBQUNoQnBCLFVBQUFBLEtBQUssQ0FBQ3dCLE1BQU4sQ0FBYUosWUFBYjtBQUNEOztBQUVELGFBQUtsQixxQkFBTCxHQUE2QixJQUE3QjtBQUNBLGFBQUswQixtQkFBTCxHQUEyQixJQUEzQjtBQUNBLGFBQUs3QixXQUFMLEdBQW1CLEtBQW5CO0FBQ0Q7QUFDRjs7O2lDQUVZQyxLLEVBQXFDO0FBQ2hELFVBQUksS0FBSzRCLG1CQUFULEVBQThCO0FBQzVCO0FBQ0E1QixRQUFBQSxLQUFLLENBQUMrQixjQUFOLENBQXFCLFdBQXJCO0FBQ0QsT0FIRCxNQUdPO0FBQ0wvQixRQUFBQSxLQUFLLENBQUMrQixjQUFOLENBQXFCLElBQXJCO0FBQ0Q7QUFDRjs7O29DQUdDQyxjLEVBQ0FDLFksRUFDQUMsUSxFQUNBbEMsSyxFQUNzQztBQUN0QyxVQUFJLENBQUMsS0FBS0UscUJBQVYsRUFBaUM7QUFDL0IsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsVUFBTWlDLFFBQVEsR0FBRywwQkFBYSxLQUFLakMscUJBQWxCLENBQWpCO0FBQ0EsVUFBTWtDLEtBQUssR0FBR0MsZ0JBQWdCLENBQUNGLFFBQUQsRUFBV0gsY0FBWCxFQUEyQkMsWUFBM0IsQ0FBOUIsQ0FOc0MsQ0FPdEM7O0FBQ0EsVUFBTUssZUFBa0MsR0FBRyxrQ0FDekM7QUFDQSxXQUFLcEMscUJBRm9DLEVBR3pDa0MsS0FIeUMsRUFJekM7QUFDRUcsUUFBQUEsS0FBSyxFQUFFSjtBQURULE9BSnlDLENBQTNDO0FBU0EsVUFBSUssV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCekMsS0FBSyxDQUFDMEMsSUFBckMsQ0FBbEI7QUFFQSxVQUFNQyxlQUFlLEdBQUczQyxLQUFLLENBQUMyQyxlQUE5Qjs7QUFDQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdELGVBQWUsQ0FBQzlDLE1BQXBDLEVBQTRDK0MsQ0FBQyxFQUE3QyxFQUFpRDtBQUMvQyxZQUFNQyxhQUFhLEdBQUdGLGVBQWUsQ0FBQ0MsQ0FBRCxDQUFyQztBQUNBLFlBQU1FLFlBQVksR0FBR1IsZUFBZSxDQUFDNUMsUUFBaEIsQ0FBeUJrRCxDQUF6QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ08sZUFBWixDQUE0QkYsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ3JELFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0wrQyxRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ1EsU0FBWixFQURSO0FBRUxkLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMZSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsY0FBYyxFQUFFUDtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBbEw2QlEsZ0M7Ozs7QUFxTGhDLFNBQVNkLGdCQUFULENBQTBCRixRQUExQixFQUE4Q0gsY0FBOUMsRUFBd0VDLFlBQXhFLEVBQWdHO0FBQzlGLE1BQU1tQixRQUFRLEdBQUcseUJBQVlqQixRQUFaLEVBQXNCSCxjQUF0QixDQUFqQjtBQUNBLE1BQU1xQixRQUFRLEdBQUcseUJBQVlsQixRQUFaLEVBQXNCRixZQUF0QixDQUFqQjtBQUNBLFNBQU9vQixRQUFRLEdBQUdELFFBQWxCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgeyBjb29yZEVhY2ggfSBmcm9tICdAdHVyZi9tZXRhJztcbmltcG9ydCB7IGdldEdlb20gfSBmcm9tICdAdHVyZi9pbnZhcmlhbnQnO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uLCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCBwb2x5Z29uVG9MaW5lIGZyb20gJ0B0dXJmL3BvbHlnb24tdG8tbGluZSc7XG5pbXBvcnQge1xuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBNb2RlUHJvcHMsXG4gIEVkaXRIYW5kbGVGZWF0dXJlLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvc2l0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uLCBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbiB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgUm90YXRlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9zZWxlY3RlZEVkaXRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2dlb21ldHJ5QmVpbmdSb3RhdGVkOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1JvdGF0aW5nID0gZmFsc2U7XG5cbiAgX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkID0gKGdlb21ldHJ5OiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBnZW9tZXRyeSB8fCB7fTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykgJiYgZmVhdHVyZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGdldEdlb20oZmVhdHVyZXNbMF0pO1xuICAgICAgcmV0dXJuIHR5cGUgPT09ICdQb2ludCc7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBnZXRJc1JvdGF0aW5nID0gKCkgPT4gdGhpcy5faXNSb3RhdGluZztcblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID1cbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkIHx8IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgaWYgKHRoaXMuX2lzU2luZ2xlUG9pbnRHZW9tZXRyeVNlbGVjdGVkKHNlbGVjdGVkR2VvbWV0cnkpKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLCBmZWF0dXJlczogW10gfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNSb3RhdGluZykge1xuICAgICAgLy8gRGlzcGxheSByb3RhdGUgcGl2b3RcbiAgICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbihbdHVyZkNlbnRyb2lkKHNlbGVjdGVkR2VvbWV0cnkpXSkgYXMgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGJib3hQb2x5Z29uKGJib3goc2VsZWN0ZWRHZW9tZXRyeSkpO1xuXG4gICAgbGV0IHByZXZpb3VzQ29vcmQgPSBudWxsO1xuICAgIGxldCB0b3BFZGdlTWlkcG9pbnRDb29yZHMgPSBudWxsO1xuICAgIGxldCBsb25nZXN0RWRnZUxlbmd0aCA9IDA7XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCkgPT4ge1xuICAgICAgaWYgKHByZXZpb3VzQ29vcmQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBlZGdlTWlkcG9pbnQgPSBnZXRJbnRlcm1lZGlhdGVQb3NpdGlvbihjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGlmICghdG9wRWRnZU1pZHBvaW50Q29vcmRzIHx8IGVkZ2VNaWRwb2ludFsxXSA+IHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSkge1xuICAgICAgICAgIC8vIEdldCB0aGUgdG9wIGVkZ2UgbWlkcG9pbnQgb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgICAgdG9wRWRnZU1pZHBvaW50Q29vcmRzID0gZWRnZU1pZHBvaW50O1xuICAgICAgICB9XG4gICAgICAgIC8vIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGVkZ2VEaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjb29yZCwgcHJldmlvdXNDb29yZCk7XG4gICAgICAgIGxvbmdlc3RFZGdlTGVuZ3RoID0gTWF0aC5tYXgobG9uZ2VzdEVkZ2VMZW5ndGgsIGVkZ2VEaXN0YW5jZSk7XG4gICAgICB9XG4gICAgICBwcmV2aW91c0Nvb3JkID0gY29vcmQ7XG4gICAgfSk7XG5cbiAgICAvLyBTY2FsZSB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGJldHdlZW4gdGhlIHJvdGF0ZSBoYW5kbGVyIGFuZCB0aGUgZW52ZWxvcGluZyBib3hcbiAgICAvLyByZWxhdGl2ZSB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGVkZ2Ugb2YgdGhlIGVudmVsb3BpbmcgYm94XG4gICAgY29uc3Qgcm90YXRlSGFuZGxlQ29vcmRzID0gdG9wRWRnZU1pZHBvaW50Q29vcmRzICYmIFtcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1swXSxcbiAgICAgIHRvcEVkZ2VNaWRwb2ludENvb3Jkc1sxXSArIGxvbmdlc3RFZGdlTGVuZ3RoIC8gMTAwMCxcbiAgICBdO1xuXG4gICAgY29uc3QgbGluZUZyb21FbnZlbG9wZVRvUm90YXRlSGFuZGxlID0gbGluZVN0cmluZyhbdG9wRWRnZU1pZHBvaW50Q29vcmRzLCByb3RhdGVIYW5kbGVDb29yZHNdKTtcbiAgICBjb25zdCByb3RhdGVIYW5kbGUgPSBwb2ludChyb3RhdGVIYW5kbGVDb29yZHMsIHtcbiAgICAgIGd1aWRlVHlwZTogJ2VkaXRIYW5kbGUnLFxuICAgICAgZWRpdEhhbmRsZVR5cGU6ICdyb3RhdGUnLFxuICAgIH0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24oW1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9seWdvblRvTGluZShib3VuZGluZ0JveCksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByb3RhdGVIYW5kbGUsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaW5lRnJvbUVudmVsb3BlVG9Sb3RhdGVIYW5kbGUsXG4gICAgXSk7XG4gIH1cblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3JvdGF0aW5nJyxcbiAgICAgIHByb3BzXG4gICAgKTtcbiAgICBpZiAocm90YXRlQWN0aW9uKSB7XG4gICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNSb3RhdGluZykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPVxuICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGUgJiYgc2VsZWN0ZWRFZGl0SGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdyb3RhdGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICh0aGlzLl9pc1JvdGF0aW5nKSB7XG4gICAgICAvLyBSb3RhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCByb3RhdGVBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3JvdGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKHJvdGF0ZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQocm90YXRlQWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQgPSBudWxsO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzUm90YXRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDdXJzb3IocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICAvLyBUT0RPOiBsb29rIGF0IGRvaW5nIFNWRyBjdXJzb3JzIHRvIGdldCBhIGJldHRlciBcInJvdGF0ZVwiIGN1cnNvclxuICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ2Nyb3NzaGFpcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50LCBjdXJyZW50UG9pbnQpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByb3RhdGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVJvdGF0ZShcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkLFxuICAgICAgYW5nbGUsXG4gICAgICB7XG4gICAgICAgIHBpdm90OiBjZW50cm9pZCxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3QgYmVhcmluZzEgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBiZWFyaW5nMiA9IHR1cmZCZWFyaW5nKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gYmVhcmluZzIgLSBiZWFyaW5nMTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/scale-mode.js b/modules/edit-modes/dist/lib/scale-mode.js new file mode 100644 index 000000000..8240fd387 --- /dev/null +++ b/modules/edit-modes/dist/lib/scale-mode.js @@ -0,0 +1,298 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ScaleMode = void 0; + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _helpers = require("@turf/helpers"); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _meta = require("@turf/meta"); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformScale = _interopRequireDefault(require("@turf/transform-scale")); + +var _invariant = require("@turf/invariant"); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ScaleMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ScaleMode, _GeoJsonEditMode); + + var _super = _createSuper(ScaleMode); + + function ScaleMode() { + var _this; + + _classCallCheck(this, ScaleMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingScaled", void 0); + + _defineProperty(_assertThisInitialized(_this), "_selectedEditHandle", void 0); + + _defineProperty(_assertThisInitialized(_this), "_cornerGuidePoints", void 0); + + _defineProperty(_assertThisInitialized(_this), "_cursor", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isScaling", false); + + _defineProperty(_assertThisInitialized(_this), "_isSinglePointGeometrySelected", function (geometry) { + var _ref = geometry || {}, + features = _ref.features; + + if (Array.isArray(features) && features.length === 1) { + // @ts-ignore + var _getGeom = (0, _invariant.getGeom)(features[0]), + type = _getGeom.type; + + return type === 'Point'; + } + + return false; + }); + + _defineProperty(_assertThisInitialized(_this), "_getOppositeScaleHandle", function (selectedHandle) { + var selectedHandleIndex = selectedHandle && selectedHandle.properties && Array.isArray(selectedHandle.properties.positionIndexes) && selectedHandle.properties.positionIndexes[0]; + + if (typeof selectedHandleIndex !== 'number') { + return null; + } + + var guidePointCount = _this._cornerGuidePoints.length; + var oppositeIndex = (selectedHandleIndex + guidePointCount / 2) % guidePointCount; + return _this._cornerGuidePoints.find(function (p) { + if (!Array.isArray(p.properties.positionIndexes)) { + return false; + } + + return p.properties.positionIndexes[0] === oppositeIndex; + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_getUpdatedData", function (props, editedData) { + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = editedData.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return updatedData.getObject(); + }); + + _defineProperty(_assertThisInitialized(_this), "isEditHandleSelected", function () { + return Boolean(_this._selectedEditHandle); + }); + + _defineProperty(_assertThisInitialized(_this), "getScaleAction", function (startDragPoint, currentPoint, editType, props) { + if (!_this._selectedEditHandle) { + return null; + } + + var oppositeHandle = _this._getOppositeScaleHandle(_this._selectedEditHandle); + + var origin = (0, _invariant.getCoord)(oppositeHandle); // @ts-ignore + + var scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint); // @ts-ignore + + var scaledFeatures = (0, _transformScale["default"])( // @ts-ignore + _this._geometryBeingScaled, scaleFactor, { + origin: origin + }); + return { + updatedData: _this._getUpdatedData(props, scaledFeatures), + editType: editType, + editContext: { + featureIndexes: props.selectedIndexes + } + }; + }); + + _defineProperty(_assertThisInitialized(_this), "updateCursor", function (props) { + if (_this._selectedEditHandle) { + if (_this._cursor) { + props.onUpdateCursor(_this._cursor); + } + + var cursorGeometry = _this.getSelectedFeaturesAsFeatureCollection(props); // Get resize cursor direction from the hovered scale editHandle (e.g. nesw or nwse) + + + var centroid = (0, _centroid["default"])(cursorGeometry); + var bearing = (0, _bearing["default"])(centroid, _this._selectedEditHandle); + var positiveBearing = bearing < 0 ? bearing + 180 : bearing; + + if (positiveBearing >= 0 && positiveBearing <= 90 || positiveBearing >= 180 && positiveBearing <= 270) { + _this._cursor = 'nesw-resize'; + props.onUpdateCursor('nesw-resize'); + } else { + _this._cursor = 'nwse-resize'; + props.onUpdateCursor('nwse-resize'); + } + } else { + props.onUpdateCursor(null); + _this._cursor = null; + } + }); + + return _this; + } + + _createClass(ScaleMode, [{ + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + if (!this._isScaling) { + var selectedEditHandle = (0, _utils.getPickedEditHandle)(event.picks); + this._selectedEditHandle = selectedEditHandle && selectedEditHandle.properties.editHandleType === 'scale' ? selectedEditHandle : null; + + if (selectedEditHandle) { + this.updateCursor(props); + } + } + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (this._selectedEditHandle) { + this._isScaling = true; + this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(props); + } + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isScaling) { + return; + } + + props.onUpdateCursor(this._cursor); + var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaling', props); + + if (scaleAction) { + props.onEdit(scaleAction); + } + + event.cancelPan(); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._isScaling) { + // Scale the geometry + var scaleAction = this.getScaleAction(event.pointerDownMapCoords, event.mapCoords, 'scaled', props); + + if (scaleAction) { + props.onEdit(scaleAction); + } + + props.onUpdateCursor(null); + this._geometryBeingScaled = null; + this._selectedEditHandle = null; + this._cursor = null; + this._isScaling = false; + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + this._cornerGuidePoints = []; + var selectedGeometry = this.getSelectedFeaturesAsFeatureCollection(props); // Add buffer to the enveloping box if a single Point feature is selected + + if (this._isSinglePointGeometrySelected(selectedGeometry)) { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var boundingBox = (0, _bboxPolygon["default"])((0, _bbox["default"])(selectedGeometry)); + boundingBox.properties.mode = 'scale'; + var cornerGuidePoints = []; + (0, _meta.coordEach)(boundingBox, function (coord, coordIndex) { + if (coordIndex < 4) { + // Get corner midpoint guides from the enveloping box + var cornerPoint = (0, _helpers.point)(coord, { + guideType: 'editHandle', + editHandleType: 'scale', + positionIndexes: [coordIndex] + }); + cornerGuidePoints.push(cornerPoint); + } + }); + this._cornerGuidePoints = cornerGuidePoints; // @ts-ignore + + return (0, _helpers.featureCollection)([(0, _polygonToLine["default"])(boundingBox)].concat(_toConsumableArray(this._cornerGuidePoints))); + } + }]); + + return ScaleMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ScaleMode = ScaleMode; + +function getScaleFactor(centroid, startDragPoint, currentPoint) { + var startDistance = (0, _distance["default"])(centroid, startDragPoint); + var endDistance = (0, _distance["default"])(centroid, currentPoint); + return endDistance / startDistance; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc2NhbGUtbW9kZS50cyJdLCJuYW1lcyI6WyJTY2FsZU1vZGUiLCJnZW9tZXRyeSIsImZlYXR1cmVzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwidHlwZSIsInNlbGVjdGVkSGFuZGxlIiwic2VsZWN0ZWRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJndWlkZVBvaW50Q291bnQiLCJfY29ybmVyR3VpZGVQb2ludHMiLCJvcHBvc2l0ZUluZGV4IiwiZmluZCIsInAiLCJwcm9wcyIsImVkaXRlZERhdGEiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImkiLCJzZWxlY3RlZEluZGV4IiwibW92ZWRGZWF0dXJlIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiQm9vbGVhbiIsIl9zZWxlY3RlZEVkaXRIYW5kbGUiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwib3Bwb3NpdGVIYW5kbGUiLCJfZ2V0T3Bwb3NpdGVTY2FsZUhhbmRsZSIsIm9yaWdpbiIsInNjYWxlRmFjdG9yIiwiZ2V0U2NhbGVGYWN0b3IiLCJzY2FsZWRGZWF0dXJlcyIsIl9nZW9tZXRyeUJlaW5nU2NhbGVkIiwiX2dldFVwZGF0ZWREYXRhIiwiZWRpdENvbnRleHQiLCJmZWF0dXJlSW5kZXhlcyIsIl9jdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvckdlb21ldHJ5IiwiZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24iLCJjZW50cm9pZCIsImJlYXJpbmciLCJwb3NpdGl2ZUJlYXJpbmciLCJldmVudCIsIl9pc1NjYWxpbmciLCJzZWxlY3RlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImVkaXRIYW5kbGVUeXBlIiwidXBkYXRlQ3Vyc29yIiwic2NhbGVBY3Rpb24iLCJnZXRTY2FsZUFjdGlvbiIsInBvaW50ZXJEb3duTWFwQ29vcmRzIiwibWFwQ29vcmRzIiwib25FZGl0IiwiY2FuY2VsUGFuIiwic2VsZWN0ZWRHZW9tZXRyeSIsIl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCIsImJvdW5kaW5nQm94IiwibW9kZSIsImNvcm5lckd1aWRlUG9pbnRzIiwiY29vcmQiLCJjb29yZEluZGV4IiwiY29ybmVyUG9pbnQiLCJndWlkZVR5cGUiLCJwdXNoIiwiR2VvSnNvbkVkaXRNb2RlIiwic3RhcnREaXN0YW5jZSIsImVuZERpc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFXQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUtFLEs7O3FGQUVvQixVQUFDQyxRQUFELEVBQTZEO0FBQUEsaUJBQ3ZFQSxRQUFRLElBQUksRUFEMkQ7QUFBQSxVQUNwRkMsUUFEb0YsUUFDcEZBLFFBRG9GOztBQUU1RixVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsUUFBZCxLQUEyQkEsUUFBUSxDQUFDRyxNQUFULEtBQW9CLENBQW5ELEVBQXNEO0FBQ3BEO0FBRG9ELHVCQUVuQyx3QkFBUUgsUUFBUSxDQUFDLENBQUQsQ0FBaEIsQ0FGbUM7QUFBQSxZQUU1Q0ksSUFGNEMsWUFFNUNBLElBRjRDOztBQUdwRCxlQUFPQSxJQUFJLEtBQUssT0FBaEI7QUFDRDs7QUFDRCxhQUFPLEtBQVA7QUFDRCxLOzs4RUFFeUIsVUFBQ0MsY0FBRCxFQUF1QztBQUMvRCxVQUFNQyxtQkFBbUIsR0FDdkJELGNBQWMsSUFDZEEsY0FBYyxDQUFDRSxVQURmLElBRUFOLEtBQUssQ0FBQ0MsT0FBTixDQUFjRyxjQUFjLENBQUNFLFVBQWYsQ0FBMEJDLGVBQXhDLENBRkEsSUFHQUgsY0FBYyxDQUFDRSxVQUFm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QXJCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuaW1wb3J0IGJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkNlbnRyb2lkIGZyb20gJ0B0dXJmL2NlbnRyb2lkJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgcG9pbnQsIGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgcG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IHsgY29vcmRFYWNoIH0gZnJvbSAnQHR1cmYvbWV0YSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IGdldENvb3JkLCBnZXRHZW9tIH0gZnJvbSAnQHR1cmYvaW52YXJpYW50JztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgTW9kZVByb3BzLFxuICBQb2ludGVyTW92ZUV2ZW50LFxuICBTdGFydERyYWdnaW5nRXZlbnQsXG4gIFN0b3BEcmFnZ2luZ0V2ZW50LFxuICBEcmFnZ2luZ0V2ZW50LFxuICBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2ltbXV0YWJsZS1mZWF0dXJlLWNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgU2NhbGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVpbmdTY2FsZWQ6IEZlYXR1cmVDb2xsZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3NlbGVjdGVkRWRpdEhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29ybmVyR3VpZGVQb2ludHM6IEFycmF5PEVkaXRIYW5kbGVGZWF0dXJlPjtcbiAgX2N1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2lzU2NhbGluZyA9IGZhbHNlO1xuXG4gIF9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZCA9IChnZW9tZXRyeTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlcyB9ID0gZ2VvbWV0cnkgfHwge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmVhdHVyZXMpICYmIGZlYXR1cmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgeyB0eXBlIH0gPSBnZXRHZW9tKGZlYXR1cmVzWzBdKTtcbiAgICAgIHJldHVybiB0eXBlID09PSAnUG9pbnQnO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUgPSAoc2VsZWN0ZWRIYW5kbGU6IEVkaXRIYW5kbGVGZWF0dXJlKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVJbmRleCA9XG4gICAgICBzZWxlY3RlZEhhbmRsZSAmJlxuICAgICAgc2VsZWN0ZWRIYW5kbGUucHJvcGVydGllcyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShzZWxlY3RlZEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlcykgJiZcbiAgICAgIHNlbGVjdGVkSGFuZGxlLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZEhhbmRsZUluZGV4ICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGd1aWRlUG9pbnRDb3VudCA9IHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzLmxlbmd0aDtcbiAgICBjb25zdCBvcHBvc2l0ZUluZGV4ID0gKHNlbGVjdGVkSGFuZGxlSW5kZXggKyBndWlkZVBvaW50Q291bnQgLyAyKSAlIGd1aWRlUG9pbnRDb3VudDtcbiAgICByZXR1cm4gdGhpcy5fY29ybmVyR3VpZGVQb2ludHMuZmluZCgocCkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHAucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwLnByb3BlcnRpZXMucG9zaXRpb25JbmRleGVzWzBdID09PSBvcHBvc2l0ZUluZGV4O1xuICAgIH0pO1xuICB9O1xuXG4gIF9nZXRVcGRhdGVkRGF0YSA9IChwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgZWRpdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb24pID0+IHtcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMuZGF0YSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gZWRpdGVkRGF0YS5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKTtcbiAgfTtcblxuICBpc0VkaXRIYW5kbGVTZWxlY3RlZCA9ICgpOiBib29sZWFuID0+IEJvb2xlYW4odGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcblxuICBnZXRTY2FsZUFjdGlvbiA9IChcbiAgICBzdGFydERyYWdQb2ludDogUG9zaXRpb24sXG4gICAgY3VycmVudFBvaW50OiBQb3NpdGlvbixcbiAgICBlZGl0VHlwZTogc3RyaW5nLFxuICAgIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+XG4gICkgPT4ge1xuICAgIGlmICghdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHBvc2l0ZUhhbmRsZSA9IHRoaXMuX2dldE9wcG9zaXRlU2NhbGVIYW5kbGUodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKTtcbiAgICBjb25zdCBvcmlnaW4gPSBnZXRDb29yZChvcHBvc2l0ZUhhbmRsZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVGYWN0b3Iob3JpZ2luLCBzdGFydERyYWdQb2ludCwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXM6IEZlYXR1cmVDb2xsZWN0aW9uID0gdHVyZlRyYW5zZm9ybVNjYWxlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCxcbiAgICAgIHNjYWxlRmFjdG9yLFxuICAgICAgeyBvcmlnaW4gfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHRoaXMuX2dldFVwZGF0ZWREYXRhKHByb3BzLCBzY2FsZWRGZWF0dXJlcyksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgdXBkYXRlQ3Vyc29yID0gKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSkge1xuICAgICAgaWYgKHRoaXMuX2N1cnNvcikge1xuICAgICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcih0aGlzLl9jdXJzb3IpO1xuICAgICAgfVxuICAgICAgY29uc3QgY3Vyc29yR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uKHByb3BzKTtcblxuICAgICAgLy8gR2V0IHJlc2l6ZSBjdXJzb3IgZGlyZWN0aW9uIGZyb20gdGhlIGhvdmVyZWQgc2NhbGUgZWRpdEhhbmRsZSAoZS5nLiBuZXN3IG9yIG53c2UpXG4gICAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZChjdXJzb3JHZW9tZXRyeSk7XG4gICAgICBjb25zdCBiZWFyaW5nID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHRoaXMuX3NlbGVjdGVkRWRpdEhhbmRsZSk7XG4gICAgICBjb25zdCBwb3NpdGl2ZUJlYXJpbmcgPSBiZWFyaW5nIDwgMCA/IGJlYXJpbmcgKyAxODAgOiBiZWFyaW5nO1xuICAgICAgaWYgKFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDAgJiYgcG9zaXRpdmVCZWFyaW5nIDw9IDkwKSB8fFxuICAgICAgICAocG9zaXRpdmVCZWFyaW5nID49IDE4MCAmJiBwb3NpdGl2ZUJlYXJpbmcgPD0gMjcwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuX2N1cnNvciA9ICduZXN3LXJlc2l6ZSc7XG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKCduZXN3LXJlc2l6ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY3Vyc29yID0gJ253c2UtcmVzaXplJztcbiAgICAgICAgcHJvcHMub25VcGRhdGVDdXJzb3IoJ253c2UtcmVzaXplJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKG51bGwpO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKCF0aGlzLl9pc1NjYWxpbmcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlID1cbiAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlICYmIHNlbGVjdGVkRWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnc2NhbGUnXG4gICAgICAgICAgPyBzZWxlY3RlZEVkaXRIYW5kbGVcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgIGlmIChzZWxlY3RlZEVkaXRIYW5kbGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRFZGl0SGFuZGxlKSB7XG4gICAgICB0aGlzLl9pc1NjYWxpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNTY2FsaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvcHMub25VcGRhdGVDdXJzb3IodGhpcy5fY3Vyc29yKTtcblxuICAgIGNvbnN0IHNjYWxlQWN0aW9uID0gdGhpcy5nZXRTY2FsZUFjdGlvbihcbiAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgZXZlbnQubWFwQ29vcmRzLFxuICAgICAgJ3NjYWxpbmcnLFxuICAgICAgcHJvcHNcbiAgICApO1xuICAgIGlmIChzY2FsZUFjdGlvbikge1xuICAgICAgcHJvcHMub25FZGl0KHNjYWxlQWN0aW9uKTtcbiAgICB9XG5cbiAgICBldmVudC5jYW5jZWxQYW4oKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzU2NhbGluZykge1xuICAgICAgLy8gU2NhbGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBzY2FsZUFjdGlvbiA9IHRoaXMuZ2V0U2NhbGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICdzY2FsZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcbiAgICAgIGlmIChzY2FsZUFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoc2NhbGVBY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcblxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IG51bGw7XG4gICAgICB0aGlzLl9zZWxlY3RlZEVkaXRIYW5kbGUgPSBudWxsO1xuICAgICAgdGhpcy5fY3Vyc29yID0gbnVsbDtcbiAgICAgIHRoaXMuX2lzU2NhbGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHRoaXMuX2Nvcm5lckd1aWRlUG9pbnRzID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuXG4gICAgLy8gQWRkIGJ1ZmZlciB0byB0aGUgZW52ZWxvcGluZyBib3ggaWYgYSBzaW5nbGUgUG9pbnQgZmVhdHVyZSBpcyBzZWxlY3RlZFxuICAgIGlmICh0aGlzLl9pc1NpbmdsZVBvaW50R2VvbWV0cnlTZWxlY3RlZChzZWxlY3RlZEdlb21ldHJ5KSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJywgZmVhdHVyZXM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSBiYm94UG9seWdvbihiYm94KHNlbGVjdGVkR2VvbWV0cnkpKTtcbiAgICBib3VuZGluZ0JveC5wcm9wZXJ0aWVzLm1vZGUgPSAnc2NhbGUnO1xuICAgIGNvbnN0IGNvcm5lckd1aWRlUG9pbnRzID0gW107XG5cbiAgICBjb29yZEVhY2goYm91bmRpbmdCb3gsIChjb29yZCwgY29vcmRJbmRleCkgPT4ge1xuICAgICAgaWYgKGNvb3JkSW5kZXggPCA0KSB7XG4gICAgICAgIC8vIEdldCBjb3JuZXIgbWlkcG9pbnQgZ3VpZGVzIGZyb20gdGhlIGVudmVsb3BpbmcgYm94XG4gICAgICAgIGNvbnN0IGNvcm5lclBvaW50ID0gcG9pbnQoY29vcmQsIHtcbiAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ3NjYWxlJyxcbiAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IFtjb29yZEluZGV4XSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvcm5lckd1aWRlUG9pbnRzLnB1c2goY29ybmVyUG9pbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY29ybmVyR3VpZGVQb2ludHMgPSBjb3JuZXJHdWlkZVBvaW50cztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uKFtwb2x5Z29uVG9MaW5lKGJvdW5kaW5nQm94KSwgLi4udGhpcy5fY29ybmVyR3VpZGVQb2ludHNdKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY2FsZUZhY3RvcihjZW50cm9pZDogUG9zaXRpb24sIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbiwgY3VycmVudFBvaW50OiBQb3NpdGlvbikge1xuICBjb25zdCBzdGFydERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGNlbnRyb2lkLCBzdGFydERyYWdQb2ludCk7XG4gIGNvbnN0IGVuZERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGNlbnRyb2lkLCBjdXJyZW50UG9pbnQpO1xuICByZXR1cm4gZW5kRGlzdGFuY2UgLyBzdGFydERpc3RhbmNlO1xufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/snappable-mode.js b/modules/edit-modes/dist/lib/snappable-mode.js new file mode 100644 index 000000000..d0b0423ef --- /dev/null +++ b/modules/edit-modes/dist/lib/snappable-mode.js @@ -0,0 +1,242 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SnappableMode = void 0; + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 SnappableMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(SnappableMode, _GeoJsonEditMode); + + var _super = _createSuper(SnappableMode); + + function SnappableMode(handler) { + var _this; + + _classCallCheck(this, SnappableMode); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_handler", void 0); + + _this._handler = handler; + return _this; + } + + _createClass(SnappableMode, [{ + key: "_getSnappedMouseEvent", + value: function _getSnappedMouseEvent(event, snapSource, snapTarget) { + return Object.assign(event, { + mapCoords: snapTarget.geometry.coordinates, + pointerDownMapCoords: snapSource && snapSource.geometry.coordinates + }); + } + }, { + key: "_getPickedSnapTarget", + value: function _getPickedSnapTarget(picks) { + return (0, _utils.getPickedEditHandles)(picks).find(function (handle) { + return handle.properties.editHandleType === 'snap-target'; + }); + } + }, { + key: "_getPickedSnapSource", + value: function _getPickedSnapSource(pointerDownPicks) { + return (0, _utils.getPickedSnapSourceEditHandle)(pointerDownPicks); + } + }, { + key: "_getUpdatedSnapSourceHandle", + value: function _getUpdatedSnapSourceHandle(snapSourceHandle, data) { + var _snapSourceHandle$pro = snapSourceHandle.properties, + featureIndex = _snapSourceHandle$pro.featureIndex, + positionIndexes = _snapSourceHandle$pro.positionIndexes; + + if (!Array.isArray(positionIndexes)) { + return snapSourceHandle; + } + + var snapSourceFeature = data.features[featureIndex]; // $FlowFixMe + + var snapSourceCoordinates = positionIndexes.reduce(function (a, b) { + return a[b]; + }, snapSourceFeature.geometry.coordinates); + return _objectSpread({}, snapSourceHandle, { + geometry: { + type: 'Point', + coordinates: snapSourceCoordinates + } + }); + } // If additionalSnapTargets is present in modeConfig and is populated, this + // method will return those features along with the features + // that live in the current layer. Otherwise, this method will simply return the + // features from the current layer + + }, { + key: "_getSnapTargets", + value: function _getSnapTargets(props) { + var _ref = props.modeConfig || {}, + additionalSnapTargets = _ref.additionalSnapTargets; + + additionalSnapTargets = additionalSnapTargets || []; + var features = [].concat(_toConsumableArray(props.data.features), _toConsumableArray(additionalSnapTargets)); + return features; + } + }, { + key: "_getSnapTargetHandles", + value: function _getSnapTargetHandles(props) { + var handles = []; + + var features = this._getSnapTargets(props); + + for (var i = 0; i < features.length; i++) { + // Filter out the currently selected feature(s) + var isCurrentIndexFeatureNotSelected = !props.selectedIndexes.includes(i); + + if (isCurrentIndexFeatureNotSelected) { + var geometry = features[i].geometry; + handles.push.apply(handles, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, i, 'snap-target'))); + } + } + + return handles; + } // If no snap handle has been picked, only display the edit handles of the + // selected feature. If a snap handle has been picked, display said snap handle + // along with all snappable points on all non-selected features. + + }, { + key: "getGuides", + value: function getGuides(props) { + var modeConfig = props.modeConfig, + lastPointerMoveEvent = props.lastPointerMoveEvent; + + var _ref2 = modeConfig || {}, + enableSnapping = _ref2.enableSnapping; + + var guides = { + type: 'FeatureCollection', + features: _toConsumableArray(this._handler.getGuides(props).features) + }; + + if (!enableSnapping) { + return guides; + } + + var snapSourceHandle = lastPointerMoveEvent && this._getPickedSnapSource(lastPointerMoveEvent.pointerDownPicks); // They started dragging a handle + // So render the picked handle (in its updated location) and all possible snap targets + + + if (snapSourceHandle) { + var _guides$features; + + (_guides$features = guides.features).push.apply(_guides$features, _toConsumableArray(this._getSnapTargetHandles(props)).concat([this._getUpdatedSnapSourceHandle(snapSourceHandle, props.data)])); + + return guides; + } // Render the possible snap source handles + + + var features = props.data.features; + + var _iterator = _createForOfIteratorHelper(props.selectedIndexes), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var index = _step.value; + + if (index < features.length) { + var _guides$features2; + + var geometry = features[index].geometry; + + (_guides$features2 = guides.features).push.apply(_guides$features2, _toConsumableArray((0, _utils.getEditHandlesForGeometry)(geometry, index, 'snap-source'))); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return guides; + } + }, { + key: "_getSnapAwareEvent", + value: function _getSnapAwareEvent(event, props) { + var snapSource = this._getPickedSnapSource(props.lastPointerMoveEvent.pointerDownPicks); + + var snapTarget = this._getPickedSnapTarget(event.picks); + + return snapSource && snapTarget ? this._getSnappedMouseEvent(event, snapSource, snapTarget) : event; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + this._handler.handleStartDragging(event, props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + this._handler.handleStopDragging(this._getSnapAwareEvent(event, props), props); + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) { + this._handler.handleDragging(this._getSnapAwareEvent(event, props), props); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + this._handler.handlePointerMove(this._getSnapAwareEvent(event, props), props); + } + }]); + + return SnappableMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.SnappableMode = SnappableMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc25hcHBhYmxlLW1vZGUudHMiXSwibmFtZXMiOlsiU25hcHBhYmxlTW9kZSIsImhhbmRsZXIiLCJfaGFuZGxlciIsImV2ZW50Iiwic25hcFNvdXJjZSIsInNuYXBUYXJnZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXBDb29yZHMiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJwaWNrcyIsImZpbmQiLCJoYW5kbGUiLCJwcm9wZXJ0aWVzIiwiZWRpdEhhbmRsZVR5cGUiLCJwb2ludGVyRG93blBpY2tzIiwic25hcFNvdXJjZUhhbmRsZSIsImRhdGEiLCJmZWF0dXJlSW5kZXgiLCJwb3NpdGlvbkluZGV4ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJzbmFwU291cmNlRmVhdHVyZSIsImZlYXR1cmVzIiwic25hcFNvdXJjZUNvb3JkaW5hdGVzIiwicmVkdWNlIiwiYSIsImIiLCJ0eXBlIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwiYWRkaXRpb25hbFNuYXBUYXJnZXRzIiwiaGFuZGxlcyIsIl9nZXRTbmFwVGFyZ2V0cyIsImkiLCJsZW5ndGgiLCJpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCIsInNlbGVjdGVkSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiZW5hYmxlU25hcHBpbmciLCJndWlkZXMiLCJnZXRHdWlkZXMiLCJfZ2V0UGlja2VkU25hcFNvdXJjZSIsIl9nZXRTbmFwVGFyZ2V0SGFuZGxlcyIsIl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZSIsImluZGV4IiwiX2dldFBpY2tlZFNuYXBUYXJnZXQiLCJfZ2V0U25hcHBlZE1vdXNlRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiX2dldFNuYXBBd2FyZUV2ZW50IiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsIkdl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S0FBcEU7QUFDRDs7O3NDQUVpQjVCLEssRUFBeUI0QixLLEVBQXFDO0FBQzlFLFdBQUs3QixRQUFMLENBQWNzRCxpQkFBZCxDQUFnQyxLQUFLRixrQkFBTCxDQUF3Qm5ELEtBQXhCLEVBQStCNEIsS0FBL0IsQ0FBaEMsRUFBdUVBLEtBQXZFO0FBQ0Q7Ozs7RUF4SmdDMEIsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZSwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7XG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIERyYWdnaW5nRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgUGljayxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRWRpdEhhbmRsZUZlYXR1cmUsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlcyxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgR2VvSnNvbkVkaXRNb2RlIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5cbnR5cGUgTW92ZW1lbnRUeXBlRXZlbnQgPSBQb2ludGVyTW92ZUV2ZW50IHwgU3RhcnREcmFnZ2luZ0V2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQgfCBEcmFnZ2luZ0V2ZW50O1xuXG5leHBvcnQgY2xhc3MgU25hcHBhYmxlTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIF9oYW5kbGVyOiBHZW9Kc29uRWRpdE1vZGU7XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogR2VvSnNvbkVkaXRNb2RlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9oYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIF9nZXRTbmFwcGVkTW91c2VFdmVudDxUIGV4dGVuZHMgTW92ZW1lbnRUeXBlRXZlbnQ+KFxuICAgIGV2ZW50OiBULFxuICAgIHNuYXBTb3VyY2U6IEVkaXRIYW5kbGVGZWF0dXJlLFxuICAgIHNuYXBUYXJnZXQ6IEVkaXRIYW5kbGVGZWF0dXJlXG4gICk6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGV2ZW50LCB7XG4gICAgICBtYXBDb29yZHM6IHNuYXBUYXJnZXQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3Jkczogc25hcFNvdXJjZSAmJiBzbmFwU291cmNlLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBUYXJnZXQocGlja3M6IFBpY2tbXSk6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKS5maW5kKFxuICAgICAgKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXRhcmdldCdcbiAgICApO1xuICB9XG5cbiAgX2dldFBpY2tlZFNuYXBTb3VyY2UoXG4gICAgcG9pbnRlckRvd25QaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShwb2ludGVyRG93blBpY2tzKTtcbiAgfVxuXG4gIF9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShcbiAgICBzbmFwU291cmNlSGFuZGxlOiBFZGl0SGFuZGxlRmVhdHVyZSxcbiAgICBkYXRhOiBGZWF0dXJlQ29sbGVjdGlvblxuICApOiBFZGl0SGFuZGxlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcyB9ID0gc25hcFNvdXJjZUhhbmRsZS5wcm9wZXJ0aWVzO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwb3NpdGlvbkluZGV4ZXMpKSB7XG4gICAgICByZXR1cm4gc25hcFNvdXJjZUhhbmRsZTtcbiAgICB9XG4gICAgY29uc3Qgc25hcFNvdXJjZUZlYXR1cmUgPSBkYXRhLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG5cbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgY29uc3Qgc25hcFNvdXJjZUNvb3JkaW5hdGVzOiBQb3NpdGlvbiA9IHBvc2l0aW9uSW5kZXhlcy5yZWR1Y2UoXG4gICAgICAoYTogYW55W10sIGI6IG51bWJlcikgPT4gYVtiXSxcbiAgICAgIHNuYXBTb3VyY2VGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zbmFwU291cmNlSGFuZGxlLFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHNuYXBTb3VyY2VDb29yZGluYXRlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIElmIGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyBpcyBwcmVzZW50IGluIG1vZGVDb25maWcgYW5kIGlzIHBvcHVsYXRlZCwgdGhpc1xuICAvLyBtZXRob2Qgd2lsbCByZXR1cm4gdGhvc2UgZmVhdHVyZXMgYWxvbmcgd2l0aCB0aGUgZmVhdHVyZXNcbiAgLy8gdGhhdCBsaXZlIGluIHRoZSBjdXJyZW50IGxheWVyLiBPdGhlcndpc2UsIHRoaXMgbWV0aG9kIHdpbGwgc2ltcGx5IHJldHVybiB0aGVcbiAgLy8gZmVhdHVyZXMgZnJvbSB0aGUgY3VycmVudCBsYXllclxuICBfZ2V0U25hcFRhcmdldHMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gcHJvcHMubW9kZUNvbmZpZyB8fCB7fTtcbiAgICBhZGRpdGlvbmFsU25hcFRhcmdldHMgPSBhZGRpdGlvbmFsU25hcFRhcmdldHMgfHwgW107XG5cbiAgICBjb25zdCBmZWF0dXJlcyA9IFsuLi5wcm9wcy5kYXRhLmZlYXR1cmVzLCAuLi5hZGRpdGlvbmFsU25hcFRhcmdldHNdO1xuICAgIHJldHVybiBmZWF0dXJlcztcbiAgfVxuXG4gIF9nZXRTbmFwVGFyZ2V0SGFuZGxlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICAgIGNvbnN0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuX2dldFNuYXBUYXJnZXRzKHByb3BzKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlKHMpXG4gICAgICBjb25zdCBpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCA9ICFwcm9wcy5zZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdzbmFwLXRhcmdldCcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICAvLyBJZiBubyBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIG9ubHkgZGlzcGxheSB0aGUgZWRpdCBoYW5kbGVzIG9mIHRoZVxuICAvLyBzZWxlY3RlZCBmZWF0dXJlLiBJZiBhIHNuYXAgaGFuZGxlIGhhcyBiZWVuIHBpY2tlZCwgZGlzcGxheSBzYWlkIHNuYXAgaGFuZGxlXG4gIC8vIGFsb25nIHdpdGggYWxsIHNuYXBwYWJsZSBwb2ludHMgb24gYWxsIG5vbi1zZWxlY3RlZCBmZWF0dXJlcy5cbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBtb2RlQ29uZmlnLCBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gbW9kZUNvbmZpZyB8fCB7fTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogWy4uLnRoaXMuX2hhbmRsZXIuZ2V0R3VpZGVzKHByb3BzKS5mZWF0dXJlc10sXG4gICAgfTtcblxuICAgIGlmICghZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc25hcFNvdXJjZUhhbmRsZTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50ICYmIHRoaXMuX2dldFBpY2tlZFNuYXBTb3VyY2UobGFzdFBvaW50ZXJNb3ZlRXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICAvLyBUaGV5IHN0YXJ0ZWQgZHJhZ2dpbmcgYSBoYW5kbGVcbiAgICAvLyBTbyByZW5kZXIgdGhlIHBpY2tlZCBoYW5kbGUgKGluIGl0cyB1cGRhdGVkIGxvY2F0aW9uKSBhbmQgYWxsIHBvc3NpYmxlIHNuYXAgdGFyZ2V0c1xuICAgIGlmIChzbmFwU291cmNlSGFuZGxlKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaChcbiAgICAgICAgLi4udGhpcy5fZ2V0U25hcFRhcmdldEhhbmRsZXMocHJvcHMpLFxuICAgICAgICB0aGlzLl9nZXRVcGRhdGVkU25hcFNvdXJjZUhhbmRsZShzbmFwU291cmNlSGFuZGxlLCBwcm9wcy5kYXRhKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGd1aWRlcztcbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgdGhlIHBvc3NpYmxlIHNuYXAgc291cmNlIGhhbmRsZXNcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSBwcm9wcy5kYXRhO1xuICAgIGZvciAoY29uc3QgaW5kZXggb2YgcHJvcHMuc2VsZWN0ZWRJbmRleGVzKSB7XG4gICAgICBpZiAoaW5kZXggPCBmZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgeyBnZW9tZXRyeSB9ID0gZmVhdHVyZXNbaW5kZXhdO1xuICAgICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCguLi5nZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KGdlb21ldHJ5LCBpbmRleCwgJ3NuYXAtc291cmNlJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQ8VCBleHRlbmRzIE1vdmVtZW50VHlwZUV2ZW50PihcbiAgICBldmVudDogVCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBUIHtcbiAgICBjb25zdCBzbmFwU291cmNlID0gdGhpcy5fZ2V0UGlja2VkU25hcFNvdXJjZShwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudC5wb2ludGVyRG93blBpY2tzKTtcbiAgICBjb25zdCBzbmFwVGFyZ2V0ID0gdGhpcy5fZ2V0UGlja2VkU25hcFRhcmdldChldmVudC5waWNrcyk7XG5cbiAgICByZXR1cm4gc25hcFNvdXJjZSAmJiBzbmFwVGFyZ2V0XG4gICAgICA/IHRoaXMuX2dldFNuYXBwZWRNb3VzZUV2ZW50KGV2ZW50LCBzbmFwU291cmNlLCBzbmFwVGFyZ2V0KVxuICAgICAgOiBldmVudDtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQsIHByb3BzKSwgcHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ2dpbmcoZXZlbnQ6IERyYWdnaW5nRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5faGFuZGxlci5oYW5kbGVEcmFnZ2luZyh0aGlzLl9nZXRTbmFwQXdhcmVFdmVudChldmVudCwgcHJvcHMpLCBwcm9wcyk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9oYW5kbGVyLmhhbmRsZVBvaW50ZXJNb3ZlKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50LCBwcm9wcyksIHByb3BzKTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/split-polygon-mode.js b/modules/edit-modes/dist/lib/split-polygon-mode.js new file mode 100644 index 000000000..cfbfcdd9f --- /dev/null +++ b/modules/edit-modes/dist/lib/split-polygon-mode.js @@ -0,0 +1,289 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SplitPolygonMode = void 0; + +var _booleanPointInPolygon = _interopRequireDefault(require("@turf/boolean-point-in-polygon")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _helpers = require("@turf/helpers"); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _nearestPointOnLine = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _utils = require("../utils"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var SplitPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(SplitPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(SplitPolygonMode); + + function SplitPolygonMode() { + _classCallCheck(this, SplitPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(SplitPolygonMode, [{ + key: "calculateMapCoords", + value: function calculateMapCoords(clickSequence, mapCoords, props) { + var modeConfig = props.modeConfig; + + if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) { + return mapCoords; + } + + if (clickSequence.length === 1) { + // if first point is clicked, then find closest polygon point and build ~90deg vector + var firstPoint = clickSequence[0]; + var selectedGeometry = this.getSelectedGeometry(props); // @ts-ignore + + var feature = (0, _polygonToLine["default"])(selectedGeometry); + var lines = feature.type === 'FeatureCollection' ? feature.features : [feature]; + var minDistance = Number.MAX_SAFE_INTEGER; + var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it. + + lines.forEach(function (line) { + var snapPoint = (0, _nearestPointOnLine["default"])(line, firstPoint); + var distanceFromOrigin = (0, _distance["default"])(snapPoint, firstPoint); + + if (minDistance > distanceFromOrigin) { + minDistance = distanceFromOrigin; + closestPoint = snapPoint; + } + }); + + if (closestPoint) { + // closest point is used as 90degree entry to the polygon + var lastBearing = (0, _bearing["default"])(firstPoint, closestPoint); + var currentDistance = (0, _distance["default"])(firstPoint, mapCoords, { + units: 'meters' + }); + return (0, _destination["default"])(firstPoint, currentDistance, lastBearing, { + units: 'meters' + }).geometry.coordinates; + } + + return mapCoords; + } // Allow only 90 degree turns + + + var lastPoint = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, mapCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1), + approximatePoint = _generatePointsParall2[0]; // align point with current ground + + + var nearestPt = (0, _nearestPointOnLine["default"])((0, _helpers.lineString)([lastPoint, approximatePoint]), mapCoords).geometry.coordinates; + return nearestPt; + } + }, { + key: "getGuides", + value: function getGuides(props) { + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0 || !props.lastPointerMoveEvent) { + // nothing to do yet + return guides; + } + + var mapCoords = props.lastPointerMoveEvent.mapCoords; + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateMapCoords(clickSequence, mapCoords, props)]) + } + }); + return guides; + } + }, { + key: "handleClick", + value: function handleClick(event, props) { + var tentativeFeature = this.getTentativeGuide(props); + var selectedGeometry = this.getSelectedGeometry(props); + + if (!selectedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('A polygon must be selected for splitting'); + return; + } + + var clickSequence = this.getClickSequence(); + + if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + clickSequence.push(tentativeFeature.geometry.coordinates[tentativeFeature.geometry.coordinates.length - 1]); + } else { + this.addClickSequence(event); + } + + var pt = { + type: 'Point', + coordinates: clickSequence[clickSequence.length - 1] + }; // @ts-ignore + + var isPointInPolygon = (0, _booleanPointInPolygon["default"])(pt, selectedGeometry); + + if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) { + this.resetClickSequence(); // @ts-ignore + + var isLineInterectingWithPolygon = (0, _lineIntersect["default"])(tentativeFeature, selectedGeometry); + + if (isLineInterectingWithPolygon.features.length === 0) { + return; + } + + var editAction = this.splitPolygon(tentativeFeature, props); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + } + }, { + key: "splitPolygon", + value: function splitPolygon(tentativeFeature, props) { + var selectedGeometry = this.getSelectedGeometry(props); + var featureIndex = props.selectedIndexes[0]; + var modeConfig = props.modeConfig || {}; // Default gap in between the polygon + + var _modeConfig$gap = modeConfig.gap, + gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap, + _modeConfig$units = modeConfig.units, + units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units; + + if (gap === 0) { + gap = 0.1; + units = 'centimeters'; + } + + var buffer = (0, _buffer["default"])(tentativeFeature, gap, { + units: units + }); // @ts-ignore + + var updatedGeometry = (0, _difference["default"])(selectedGeometry, buffer); + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Split Polygon erased'); + return null; + } + + var _updatedGeometry$geom = updatedGeometry.geometry, + type = _updatedGeometry$geom.type, + coordinates = _updatedGeometry$geom.coordinates; + var updatedCoordinates = []; + + if (type === 'Polygon') { + // Update the coordinates as per Multipolygon + // @ts-ignore + updatedCoordinates = coordinates.map(function (c) { + return [c]; + }); + } else { + // Handle Case when Multipolygon has holes + // @ts-ignore + updatedCoordinates = coordinates.reduce(function (agg, prev) { + prev.forEach(function (p) { + agg.push([p]); + }); + return agg; + }, []); + } // Update the type to Mulitpolygon + + + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, { + type: 'MultiPolygon', + coordinates: updatedCoordinates + }); + var editAction = { + updatedData: updatedData.getObject(), + editType: 'split', + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + }]); + + return SplitPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.SplitPolygonMode = SplitPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3BsaXQtcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlNwbGl0UG9seWdvbk1vZGUiLCJjbGlja1NlcXVlbmNlIiwibWFwQ29vcmRzIiwicHJvcHMiLCJtb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJnZXRDbGlja1NlcXVlbmNlIiwiZ3VpZGVzIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwdXNoIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsImNhbGN1bGF0ZU1hcENvb3JkcyIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwiY29uc29sZSIsIndhcm4iLCJhZGRDbGlja1NlcXVlbmNlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsImVkaXRBY3Rpb24iLCJzcGxpdFBvbHlnb24iLCJvbkVkaXQiLCJvblVwZGF0ZUN1cnNvciIsImZlYXR1cmVJbmRleCIsInNlbGVjdGVkSW5kZXhlcyIsImdhcCIsImJ1ZmZlciIsInVwZGF0ZWRHZW9tZXRyeSIsInVwZGF0ZWRDb29yZGluYXRlcyIsIm1hcCIsImMiLCJyZWR1Y2UiLCJhZ2ciLCJwcmV2IiwicCIsInVwZGF0ZWREYXRhIiwiSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJkYXRhIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZWRpdFR5cGUiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsZ0I7Ozs7Ozs7Ozs7Ozs7dUNBQ1FDLGEsRUFBb0JDLFMsRUFBZ0JDLEssRUFBcUM7QUFDMUYsVUFBTUMsVUFBVSxHQUFHRCxLQUFLLENBQUNDLFVBQXpCOztBQUNBLFVBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNBLFVBQVUsQ0FBQ0MsWUFBM0IsSUFBMkMsQ0FBQ0osYUFBYSxDQUFDSyxNQUE5RCxFQUFzRTtBQUNwRSxlQUFPSixTQUFQO0FBQ0Q7O0FBQ0QsVUFBSUQsYUFBYSxDQUFDSyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsWUFBTUMsVUFBVSxHQUFHTixhQUFhLENBQUMsQ0FBRCxDQUFoQztBQUNBLFlBQU1PLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLENBQXlCTixLQUF6QixDQUF6QixDQUg4QixDQUk5Qjs7QUFDQSxZQUFNTyxPQUFPLEdBQUcsK0JBQWtCRixnQkFBbEIsQ0FBaEI7QUFFQSxZQUFNRyxLQUFLLEdBQUdELE9BQU8sQ0FBQ0UsSUFBUixLQUFpQixtQkFBakIsR0FBdUNGLE9BQU8sQ0FBQ0csUUFBL0MsR0FBMEQsQ0FBQ0gsT0FBRCxDQUF4RTtBQUNBLFlBQUlJLFdBQVcsR0FBR0MsTUFBTSxDQUFDQyxnQkFBekI7QUFDQSxZQUFJQyxZQUFZLEdBQUcsSUFBbkIsQ0FUOEIsQ0FVOUI7O0FBQ0FOLFFBQUFBLEtBQUssQ0FBQ08sT0FB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QjtBQUNBO0FBQ0E0QyxRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQytCLEdBQVosQ0FBZ0IsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPLENBQUNBLENBQUQsQ0FBUDtBQUFBLFNBQWhCLENBQXJCO0FBQ0QsT0FKRCxNQUlPO0FBQ0w7QUFDQTtBQUNBRixRQUFBQSxrQkFBa0IsR0FBRzlCLFdBQVcsQ0FBQ2lDLE1BQVosQ0FBbUIsVUFBQ0MsR0FBRCxFQUFNQyxJQUFOLEVBQWU7QUFDckRBLFVBQUFBLElBQUksQ0FBQzNDLE9BQUwsQ0FBYSxVQUFDNEMsQ0FBRCxFQUFPO0FBQ2xCRixZQUFBQSxHQUFHLENBQUMzQixJQUFKLENBQVMsQ0FBQzZCLENBQUQsQ0FBVDtBQUNELFdBRkQ7QUFHQSxpQkFBT0YsR0FBUDtBQUNELFNBTG9CLEVBS2xCLEVBTGtCLENBQXJCO0FBTUQsT0FwQ21GLENBc0NwRjs7O0FBQ0EsVUFBTUcsV0FBVyxHQUFHLElBQUlDLHNEQUFKLENBQStCN0QsS0FBSyxDQUFDOEQsSUFBckMsRUFBMkNDLGVBQTNDLENBQTJEZixZQUEzRCxFQUF5RTtBQUMzRnZDLFFBQUFBLElBQUksRUFBRSxjQURxRjtBQUUzRmMsUUFBQUEsV0FBVyxFQUFFOEI7QUFGOEUsT0FBekUsQ0FBcEI7QUFLQSxVQUFNVCxVQUE2QixHQUFHO0FBQ3BDZ0IsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNJLFNBQVosRUFEdUI7QUFFcENDLFFBQUFBLFFBQVEsRUFBRSxPQUYwQjtBQUdwQ0MsUUFBQUEsV0FBVyxFQUFFO0FBQ1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDbkIsWUFBRDtBQURMO0FBSHVCLE9BQXRDO0FBUUEsYUFBT0osVUFBUDtBQUNEOzs7O0VBakxtQ3dCLGdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJvb2xlYW5Qb2ludEluUG9seWdvbiBmcm9tICdAdHVyZi9ib29sZWFuLXBvaW50LWluLXBvbHlnb24nO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCBsaW5lSW50ZXJzZWN0IGZyb20gJ0B0dXJmL2xpbmUtaW50ZXJzZWN0JztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB0dXJmQmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB0dXJmRGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHR1cmZEZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgdHVyZlBvbHlnb25Ub0xpbmUgZnJvbSAnQHR1cmYvcG9seWdvbi10by1saW5lJztcbmltcG9ydCBuZWFyZXN0UG9pbnRPbkxpbmUgZnJvbSAnQHR1cmYvbmVhcmVzdC1wb2ludC1vbi1saW5lJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgTW9kZVByb3BzLFxuICBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uLFxuICBUZW50YXRpdmVGZWF0dXJlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBTcGxpdFBvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgY2FsY3VsYXRlTWFwQ29vcmRzKGNsaWNrU2VxdWVuY2U6IGFueSwgbWFwQ29vcmRzOiBhbnksIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHByb3BzLm1vZGVDb25maWc7XG4gICAgaWYgKCFtb2RlQ29uZmlnIHx8ICFtb2RlQ29uZmlnLmxvY2s5MERlZ3JlZSB8fCAhY2xpY2tTZXF1ZW5jZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBtYXBDb29yZHM7XG4gICAgfVxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gaWYgZmlyc3QgcG9pbnQgaXMgY2xpY2tlZCwgdGhlbiBmaW5kIGNsb3Nlc3QgcG9seWdvbiBwb2ludCBhbmQgYnVpbGQgfjkwZGVnIHZlY3RvclxuICAgICAgY29uc3QgZmlyc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSB0dXJmUG9seWdvblRvTGluZShzZWxlY3RlZEdlb21ldHJ5KTtcblxuICAgICAgY29uc3QgbGluZXMgPSBmZWF0dXJlLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgPyBmZWF0dXJlLmZlYXR1cmVzIDogW2ZlYXR1cmVdO1xuICAgICAgbGV0IG1pbkRpc3RhbmNlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICBsZXQgY2xvc2VzdFBvaW50ID0gbnVsbDtcbiAgICAgIC8vIElmIE11bHRpcG9seWdvbiwgdGhlbiB3ZSBzaG91bGQgZmluZCBuZWFyZXN0IHBvbHlnb24gbGluZSBhbmQgc3RpY2sgc3BsaXQgdG8gaXQuXG4gICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IHNuYXBQb2ludCA9IG5lYXJlc3RQb2ludE9uTGluZShsaW5lLCBmaXJzdFBvaW50KTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tT3JpZ2luID0gdHVyZkRpc3RhbmNlKHNuYXBQb2ludCwgZmlyc3RQb2ludCk7XG4gICAgICAgIGlmIChtaW5EaXN0YW5jZSA+IGRpc3RhbmNlRnJvbU9yaWdpbikge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VGcm9tT3JpZ2luO1xuICAgICAgICAgIGNsb3Nlc3RQb2ludCA9IHNuYXBQb2ludDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjbG9zZXN0UG9pbnQpIHtcbiAgICAgICAgLy8gY2xvc2VzdCBwb2ludCBpcyB1c2VkIGFzIDkwZGVncmVlIGVudHJ5IHRvIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IGxhc3RCZWFyaW5nID0gdHVyZkJlYXJpbmcoZmlyc3RQb2ludCwgY2xvc2VzdFBvaW50KTtcbiAgICAgICAgY29uc3QgY3VycmVudERpc3RhbmNlID0gdHVyZkRpc3RhbmNlKGZpcnN0UG9pbnQsIG1hcENvb3JkcywgeyB1bml0czogJ21ldGVycycgfSk7XG4gICAgICAgIHJldHVybiB0dXJmRGVzdGluYXRpb24oZmlyc3RQb2ludCwgY3VycmVudERpc3RhbmNlLCBsYXN0QmVhcmluZywge1xuICAgICAgICAgIHVuaXRzOiAnbWV0ZXJzJyxcbiAgICAgICAgfSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwQ29vcmRzO1xuICAgIH1cbiAgICAvLyBBbGxvdyBvbmx5IDkwIGRlZ3JlZSB0dXJuc1xuICAgIGNvbnN0IGxhc3RQb2ludCA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBbYXBwcm94aW1hdGVQb2ludF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDJdLFxuICAgICAgbGFzdFBvaW50LFxuICAgICAgbWFwQ29vcmRzXG4gICAgKTtcbiAgICAvLyBhbGlnbiBwb2ludCB3aXRoIGN1cnJlbnQgZ3JvdW5kXG4gICAgY29uc3QgbmVhcmVzdFB0ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmVTdHJpbmcoW2xhc3RQb2ludCwgYXBwcm94aW1hdGVQb2ludF0pLCBtYXBDb29yZHMpXG4gICAgICAuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgcmV0dXJuIG5lYXJlc3RQdDtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCB8fCAhcHJvcHMubGFzdFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgbWFwQ29vcmRzIH0gPSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudDtcblxuICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgIH0sXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVNYXBDb29yZHMoY2xpY2tTZXF1ZW5jZSwgbWFwQ29vcmRzLCBwcm9wcyldLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVHdWlkZShwcm9wcyk7XG5cbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KHByb3BzKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZS5wdXNoKFxuICAgICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzW3RlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoIC0gMV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHQgPSB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAxXSxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBpc1BvaW50SW5Qb2x5Z29uID0gYm9vbGVhblBvaW50SW5Qb2x5Z29uKHB0LCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmIHRlbnRhdGl2ZUZlYXR1cmUgJiYgIWlzUG9pbnRJblBvbHlnb24pIHtcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uID0gbGluZUludGVyc2VjdCh0ZW50YXRpdmVGZWF0dXJlLCBzZWxlY3RlZEdlb21ldHJ5KTtcbiAgICAgIGlmIChpc0xpbmVJbnRlcmVjdGluZ1dpdGhQb2x5Z29uLmZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLnNwbGl0UG9seWdvbih0ZW50YXRpdmVGZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICB9XG5cbiAgc3BsaXRQb2x5Z29uKHRlbnRhdGl2ZUZlYXR1cmU6IFRlbnRhdGl2ZUZlYXR1cmUsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeShwcm9wcyk7XG4gICAgY29uc3QgZmVhdHVyZUluZGV4ID0gcHJvcHMuc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSBwcm9wcy5tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gRGVmYXVsdCBnYXAgaW4gYmV0d2VlbiB0aGUgcG9seWdvblxuICAgIGxldCB7IGdhcCA9IDAuMSwgdW5pdHMgPSAnY2VudGltZXRlcnMnIH0gPSBtb2RlQ29uZmlnO1xuICAgIGlmIChnYXAgPT09IDApIHtcbiAgICAgIGdhcCA9IDAuMTtcbiAgICAgIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJztcbiAgICB9XG5cbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICBpZiAoIXVwZGF0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIFNwbGl0IFBvbHlnb24gZXJhc2VkJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHR5cGUsIGNvb3JkaW5hdGVzIH0gPSB1cGRhdGVkR2VvbWV0cnkuZ2VvbWV0cnk7XG4gICAgbGV0IHVwZGF0ZWRDb29yZGluYXRlcyA9IFtdO1xuICAgIGlmICh0eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgYXMgcGVyIE11bHRpcG9seWdvblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMubWFwKChjKSA9PiBbY10pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgQ2FzZSB3aGVuIE11bHRpcG9seWdvbiBoYXMgaG9sZXNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRDb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzLnJlZHVjZSgoYWdnLCBwcmV2KSA9PiB7XG4gICAgICAgIHByZXYuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKFtwXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWdnO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdHlwZSB0byBNdWxpdHBvbHlnb25cbiAgICBjb25zdCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKS5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCB7XG4gICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJyxcbiAgICAgIGNvb3JkaW5hdGVzOiB1cGRhdGVkQ29vcmRpbmF0ZXMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBlZGl0QWN0aW9uOiBHZW9Kc29uRWRpdEFjdGlvbiA9IHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlOiAnc3BsaXQnLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/three-click-polygon-mode.js b/modules/edit-modes/dist/lib/three-click-polygon-mode.js new file mode 100644 index 000000000..04929b882 --- /dev/null +++ b/modules/edit-modes/dist/lib/three-click-polygon-mode.js @@ -0,0 +1,140 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ThreeClickPolygonMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ThreeClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ThreeClickPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(ThreeClickPolygonMode); + + function ThreeClickPolygonMode() { + _classCallCheck(this, ThreeClickPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(ThreeClickPolygonMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + this.addClickSequence(event); + var clickSequence = this.getClickSequence(); + var tentativeFeature = this.getTentativeGuide(props); + + if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props); + this.resetClickSequence(); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return guides; + } + + var hoveredCoord = lastPointerMoveEvent.mapCoords; + + if (clickSequence.length === 1) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], hoveredCoord] + } + }); + } else { + var polygon = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig); + + if (polygon) { + guides.features.push({ + type: 'Feature', + properties: { + guideType: 'tentative' + }, + geometry: polygon.geometry + }); + } + } + + return guides; + } + }, { + key: "getThreeClickPolygon", + value: function getThreeClickPolygon(coord1, coord2, coord3, modeConfig) { + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(ThreeClickPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 2) { + tentativeFeature = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], lastCoords[0], props.modeConfig); + } + + return tentativeFeature; + } + }]); + + return ThreeClickPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ThreeClickPolygonMode = ThreeClickPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGhyZWUtY2xpY2stcG9seWdvbi1tb2RlLnRzIl0sIm5hbWVzIjpbIlRocmVlQ2xpY2tQb2x5Z29uTW9kZSIsImV2ZW50IiwicHJvcHMiLCJhZGRDbGlja1NlcXVlbmNlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJ0ZW50YXRpdmVGZWF0dXJlIiwiZ2V0VGVudGF0aXZlR3VpZGUiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJvbkVkaXQiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsIm1vZGVDb25maWciLCJndWlkZXMiLCJmZWF0dXJlcyIsImhvdmVyZWRDb29yZCIsIm1hcENvb3JkcyIsInB1c2giLCJwcm9wZXJ0aWVzIiwiZ3VpZGVUeXBlIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uIiwiZ2V0VGhyZWVDbGlja1BvbHlnb24iLCJjb29yZDEiLCJjb29yZDIiLCJjb29yZDMiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxxQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxXQUFLQyxnQkFBTCxDQUFzQkYsS0FBdEI7QUFDQSxVQUFNRyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFDQSxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBdkIsQ0FBekI7O0FBRUEsVUFDRUUsYUFBYSxDQUFDSSxNQUFkLEdBQXVCLENBQXZCLElBQ0FGLGdCQURBLElBRUFBLGdCQUFnQixDQUFDRyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUs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ImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9zaXRpb24sIFBvbHlnb24sIEZlYXR1cmVPZiwgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25Nb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSwgcHJvcHMpO1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVDb25maWcgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGNvbnN0IGd1aWRlczogR3VpZGVGZWF0dXJlQ29sbGVjdGlvbiA9IHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogW10sXG4gICAgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiBndWlkZXM7XG4gICAgfVxuXG4gICAgY29uc3QgaG92ZXJlZENvb3JkID0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQubWFwQ29vcmRzO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICBndWlkZXMuZmVhdHVyZXMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGd1aWRlVHlwZTogJ3RlbnRhdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgaG92ZXJlZENvb3JkXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVswXSxcbiAgICAgICAgY2xpY2tTZXF1ZW5jZVsxXSxcbiAgICAgICAgaG92ZXJlZENvb3JkLFxuICAgICAgICBtb2RlQ29uZmlnXG4gICAgICApO1xuICAgICAgaWYgKHBvbHlnb24pIHtcbiAgICAgICAgZ3VpZGVzLmZlYXR1cmVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICd0ZW50YXRpdmUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBndWlkZXM7XG4gIH1cblxuICBnZXRUaHJlZUNsaWNrUG9seWdvbihcbiAgICBjb29yZDE6IFBvc2l0aW9uLFxuICAgIGNvb3JkMjogUG9zaXRpb24sXG4gICAgY29vcmQzOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGhyZWVDbGlja1BvbHlnb24oXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMF0sXG4gICAgICAgIGNsaWNrU2VxdWVuY2VbMV0sXG4gICAgICAgIGxhc3RDb29yZHNbMF0sXG4gICAgICAgIHByb3BzLm1vZGVDb25maWdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/transform-mode.js b/modules/edit-modes/dist/lib/transform-mode.js new file mode 100644 index 000000000..25e6070bc --- /dev/null +++ b/modules/edit-modes/dist/lib/transform-mode.js @@ -0,0 +1,140 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TransformMode = void 0; + +var _helpers = require("@turf/helpers"); + +var _translateMode = require("./translate-mode"); + +var _scaleMode = require("./scale-mode"); + +var _rotateMode = require("./rotate-mode"); + +var _compositeMode = require("./composite-mode"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var TransformMode = /*#__PURE__*/function (_CompositeMode) { + _inherits(TransformMode, _CompositeMode); + + var _super = _createSuper(TransformMode); + + function TransformMode() { + _classCallCheck(this, TransformMode); + + return _super.call(this, [new _translateMode.TranslateMode(), new _scaleMode.ScaleMode(), new _rotateMode.RotateMode()]); + } + + _createClass(TransformMode, [{ + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + var updatedCursor = null; + + _get(_getPrototypeOf(TransformMode.prototype), "handlePointerMove", this).call(this, event, _objectSpread({}, props, { + onUpdateCursor: function onUpdateCursor(cursor) { + updatedCursor = cursor || updatedCursor; + } + })); + + props.onUpdateCursor(updatedCursor); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + var scaleMode = null; + var translateMode = null; + var filteredModes = []; // If the user selects a scaling edit handle that overlaps with part of the selected feature, + // it is possible for both scale and translate actions to be triggered. This logic prevents + // this simultaneous action trigger from happening by putting a higher priority on scaling + // since the user needs to be more precise to hover over a scaling edit handle. + + this._modes.forEach(function (mode) { + if (mode instanceof _translateMode.TranslateMode) { + translateMode = mode; + } else { + if (mode instanceof _scaleMode.ScaleMode) { + scaleMode = mode; + } + + filteredModes.push(mode); + } + }); + + if (scaleMode instanceof _scaleMode.ScaleMode && !scaleMode.isEditHandleSelected()) { + filteredModes.push(translateMode); + } + + filteredModes.filter(Boolean).forEach(function (mode) { + return mode.handleStartDragging(event, props); + }); + } + }, { + key: "getGuides", + value: function getGuides(props) { + var compositeGuides = _get(_getPrototypeOf(TransformMode.prototype), "getGuides", this).call(this, props); + + var rotateMode = (this._modes || []).find(function (mode) { + return mode instanceof _rotateMode.RotateMode; + }); + + if (rotateMode instanceof _rotateMode.RotateMode) { + var nonEnvelopeGuides = compositeGuides.features.filter(function (guide) { + var _ref = guide.properties || {}, + editHandleType = _ref.editHandleType, + mode = _ref.mode; // Both scale and rotate modes have the same enveloping box as a guide - only need one + + + var guidesToFilterOut = [mode]; // Do not render scaling edit handles if rotating + + if (rotateMode.getIsRotating()) { + guidesToFilterOut.push(editHandleType); + } + + return !guidesToFilterOut.includes('scale'); + }); // @ts-ignore + + compositeGuides = (0, _helpers.featureCollection)(nonEnvelopeGuides); + } + + return compositeGuides; + } + }]); + + return TransformMode; +}(_compositeMode.CompositeMode); + +exports.TransformMode = TransformMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNmb3JtLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNmb3JtTW9kZSIsIlRyYW5zbGF0ZU1vZGUiLCJTY2FsZU1vZGUiLCJSb3RhdGVNb2RlIiwiZXZlbnQiLCJwcm9wcyIsInVwZGF0ZWRDdXJzb3IiLCJvblVwZGF0ZUN1cnNvciIsImN1cnNvciIsInNjYWxlTW9kZSIsInRyYW5zbGF0ZU1vZGUiLCJmaWx0ZXJlZE1vZGVzIiwiX21vZGVzIiwiZm9yRWFjaCIsIm1vZGUiLCJwdXNoIiwiaXNFZGl0SGFuZGxlU2VsZWN0ZWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImNvbXBvc2l0ZUd1aWRlcyIsInJvdGF0ZU1vZGUiLCJmaW5kIiwibm9uRW52ZWxvcGVHdWlkZXMiLCJmZWF0dXJlcyIsImd1aWRlIiwicHJvcGVydGllcyIsImVkaXRIYW5kbGVUeXBlIiwiZ3VpZGVzVG9GaWx0ZXJPdXQiLCJnZXRJc1JvdGF0aW5nIiwiaW5jbHVkZXMiLCJDb21wb3NpdGVNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7QUFDWCwyQkFBYztBQUFBOztBQUFBLDZCQUNOLENBQUMsSUFBSUMsNEJBQUosRUFBRCxFQUFzQixJQUFJQyxvQkFBSixFQUF0QixFQUF1QyxJQUFJQyxzQkFBSixFQUF2QyxDQURNO0FBRWI7Ozs7c0NBRWlCQyxLLEVBQXlCQyxLLEVBQXFDO0FBQzlFLFVBQUlDLGFBQWEsR0FBRyxJQUFwQjs7QUFDQSwyRkFBd0JGLEtBQXhCLG9CQUNLQyxLQURMO0FBRUVFLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ0MsTUFBRCxFQUFZO0FBQzFCRixVQUFBQSxhQUFhLEdBQUdFLE1BQU0sSUFBSUYsYUFBMUI7QUFDRDtBQUpIOztBQU1BRCxNQUFBQSxLQUFLLENBQUNFLGNBQU4sQ0FBcUJELGFBQXJCO0FBQ0Q7Ozt3Q0FFbUJGLEssRUFBMkJDLEssRUFBcUM7QUFDbEYsVUFBSUksU0FBUyxHQUFHLElBQWhCO0FBQ0EsVUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEVBQXRCLENBSGtGLENBS2xGO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFdBQUtDLE1BQUwsQ0FBWUMsT0FBWixDQUFvQixVQUFDQyxJQUFELEVBQVU7QUFDNUIsWUFBSUEsSUFBSSxZQUFZYiw0QkFBcEIsRUFBbUM7QUFDakNTLFVBQUFBLGFBQWEsR0FBR0ksSUFBaEI7QUFDRCxTQUZELE1BRU87QUFDTCxjQUFJQSxJQUFJLFlBQVlaLG9CQUFwQixFQUErQjtBQUM3Qk8sWUFBQUEsU0FBUyxHQUFHSyxJQUFaO0FBQ0Q7O0FBQ0RILFVBQUFBLGFBQWEsQ0FBQ0ksSUFBZCxDQUFtQkQsSUFBbkI7QUFDRDtBQUNGLE9BVEQ7O0FBV0EsVUFBSUwsU0FBUyxZQUFZUCxvQkFBckIsSUFBa0MsQ0FBQ08sU0FBUyxDQUFDTyxvQkFBVixFQUF2QyxFQUF5RTtBQUN2RUwsUUFBQUEsYUFBYSxDQUFDSSxJQUFkLENBQW1CTCxhQUFuQjtBQUNEOztBQUVEQyxNQUFBQSxhQUFhLENBQUNNLE1BQWQsQ0FBcUJDLE9BQXJCLEVBQThCTCxPQUE5QixDQUFzQyxVQUFDQyxJQUFEO0FBQUEsZUFBVUEsSUFBSSxDQUFDSyxtQkFBTCxDQUF5QmYsS0FBekIsRUFBZ0NDLEtBQWhDLENBQVY7QUFBQSxPQUF0QztBQUNEOzs7OEJBRVNBLEssRUFBcUM7QUFDN0MsVUFBSWUsZUFBZSxnRkFBbUJmLEtBQW5CLENBQW5COztBQUNBLFVBQU1nQixVQUFVLEdBQUcsQ0FBQyxLQUFLVCxNQUFMLElBQWUsRUFBaEIsRUFBb0JVLElBQXBCLENBQXlCLFVBQUNSLElBQUQ7QUFBQSxlQUFVQSxJQUFJLFlBQVlYLHNCQUExQjtBQUFBLE9BQXpCLENBQW5COztBQUVBLFVBQUlrQixVQUFVLFlBQVlsQixzQkFBMUIsRUFBc0M7QUFDcEMsWUFBTW9CLGlCQUFpQixHQUFHSCxlQUFlLENBQUNJLFFBQWhCLENBQXlCUCxNQUF6QixDQUFnQyxVQUFDUSxLQUFELEVBQVc7QUFBQSxxQkFDakNBLEtBQUssQ0FBQ0MsVUFBUCxJQUE2QixFQURLO0FBQUEsY0FDM0RDLGNBRDJELFFBQzNEQSxjQUQyRDtBQUFBLGNBQzNDYixJQUQyQyxRQUMzQ0EsSUFEMkMsRUFFbkU7OztBQUNBLGNBQU1jLGlCQUFpQixHQUFHLENBQUNkLElBQUQsQ0FBMUIsQ0FIbUUsQ0FJbkU7O0FBQ0EsY0FBSU8sVUFBVSxDQUFDUSxhQUFYLEVBQUosRUFBZ0M7QUFDOUJELFlBQUFBLGlCQUFpQixDQUFDYixJQUFsQixDQUF1QlksY0FBdkI7QUFDRDs7QUFDRCxpQkFBTyxDQUFDQyxpQkFBaUIsQ0FBQ0UsUUFBbEIsQ0FBMkIsT0FBM0IsQ0FBUjtBQUNELFNBVHlCLENBQTFCLENBRG9DLENBV3BDOztBQUNBVixRQUFBQSxlQUFlLEdBQUcsZ0NBQWtCRyxpQkFBbEIsQ0FBbEI7QUFDRDs7QUFDRCxhQUFPSCxlQUFQO0FBQ0Q7Ozs7RUE5RGdDVyw0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBNb2RlUHJvcHMsIFN0YXJ0RHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZ2VvanNvbi10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2RlIH0gZnJvbSAnLi90cmFuc2xhdGUtbW9kZSc7XG5pbXBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICcuL3NjYWxlLW1vZGUnO1xuaW1wb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJy4vcm90YXRlLW1vZGUnO1xuXG5pbXBvcnQgeyBDb21wb3NpdGVNb2RlIH0gZnJvbSAnLi9jb21wb3NpdGUtbW9kZSc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Nb2RlIGV4dGVuZHMgQ29tcG9zaXRlTW9kZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFtuZXcgVHJhbnNsYXRlTW9kZSgpLCBuZXcgU2NhbGVNb2RlKCksIG5ldyBSb3RhdGVNb2RlKCldKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCB1cGRhdGVkQ3Vyc29yID0gbnVsbDtcbiAgICBzdXBlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcikgPT4ge1xuICAgICAgICB1cGRhdGVkQ3Vyc29yID0gY3Vyc29yIHx8IHVwZGF0ZWRDdXJzb3I7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHByb3BzLm9uVXBkYXRlQ3Vyc29yKHVwZGF0ZWRDdXJzb3IpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBzY2FsZU1vZGUgPSBudWxsO1xuICAgIGxldCB0cmFuc2xhdGVNb2RlID0gbnVsbDtcbiAgICBjb25zdCBmaWx0ZXJlZE1vZGVzID0gW107XG5cbiAgICAvLyBJZiB0aGUgdXNlciBzZWxlY3RzIGEgc2NhbGluZyBlZGl0IGhhbmRsZSB0aGF0IG92ZXJsYXBzIHdpdGggcGFydCBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZSxcbiAgICAvLyBpdCBpcyBwb3NzaWJsZSBmb3IgYm90aCBzY2FsZSBhbmQgdHJhbnNsYXRlIGFjdGlvbnMgdG8gYmUgdHJpZ2dlcmVkLiBUaGlzIGxvZ2ljIHByZXZlbnRzXG4gICAgLy8gdGhpcyBzaW11bHRhbmVvdXMgYWN0aW9uIHRyaWdnZXIgZnJvbSBoYXBwZW5pbmcgYnkgcHV0dGluZyBhIGhpZ2hlciBwcmlvcml0eSBvbiBzY2FsaW5nXG4gICAgLy8gc2luY2UgdGhlIHVzZXIgbmVlZHMgdG8gYmUgbW9yZSBwcmVjaXNlIHRvIGhvdmVyIG92ZXIgYSBzY2FsaW5nIGVkaXQgaGFuZGxlLlxuICAgIHRoaXMuX21vZGVzLmZvckVhY2goKG1vZGUpID0+IHtcbiAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgVHJhbnNsYXRlTW9kZSkge1xuICAgICAgICB0cmFuc2xhdGVNb2RlID0gbW9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlKSB7XG4gICAgICAgICAgc2NhbGVNb2RlID0gbW9kZTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJlZE1vZGVzLnB1c2gobW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGVNb2RlIGluc3RhbmNlb2YgU2NhbGVNb2RlICYmICFzY2FsZU1vZGUuaXNFZGl0SGFuZGxlU2VsZWN0ZWQoKSkge1xuICAgICAgZmlsdGVyZWRNb2Rlcy5wdXNoKHRyYW5zbGF0ZU1vZGUpO1xuICAgIH1cblxuICAgIGZpbHRlcmVkTW9kZXMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKG1vZGUpID0+IG1vZGUuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCwgcHJvcHMpKTtcbiAgfVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGxldCBjb21wb3NpdGVHdWlkZXMgPSBzdXBlci5nZXRHdWlkZXMocHJvcHMpO1xuICAgIGNvbnN0IHJvdGF0ZU1vZGUgPSAodGhpcy5fbW9kZXMgfHwgW10pLmZpbmQoKG1vZGUpID0+IG1vZGUgaW5zdGFuY2VvZiBSb3RhdGVNb2RlKTtcblxuICAgIGlmIChyb3RhdGVNb2RlIGluc3RhbmNlb2YgUm90YXRlTW9kZSkge1xuICAgICAgY29uc3Qgbm9uRW52ZWxvcGVHdWlkZXMgPSBjb21wb3NpdGVHdWlkZXMuZmVhdHVyZXMuZmlsdGVyKChndWlkZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGVkaXRIYW5kbGVUeXBlLCBtb2RlIH0gPSAoZ3VpZGUucHJvcGVydGllcyBhcyBhbnkpIHx8IHt9O1xuICAgICAgICAvLyBCb3RoIHNjYWxlIGFuZCByb3RhdGUgbW9kZXMgaGF2ZSB0aGUgc2FtZSBlbnZlbG9waW5nIGJveCBhcyBhIGd1aWRlIC0gb25seSBuZWVkIG9uZVxuICAgICAgICBjb25zdCBndWlkZXNUb0ZpbHRlck91dCA9IFttb2RlXTtcbiAgICAgICAgLy8gRG8gbm90IHJlbmRlciBzY2FsaW5nIGVkaXQgaGFuZGxlcyBpZiByb3RhdGluZ1xuICAgICAgICBpZiAocm90YXRlTW9kZS5nZXRJc1JvdGF0aW5nKCkpIHtcbiAgICAgICAgICBndWlkZXNUb0ZpbHRlck91dC5wdXNoKGVkaXRIYW5kbGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWd1aWRlc1RvRmlsdGVyT3V0LmluY2x1ZGVzKCdzY2FsZScpO1xuICAgICAgfSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb21wb3NpdGVHdWlkZXMgPSBmZWF0dXJlQ29sbGVjdGlvbihub25FbnZlbG9wZUd1aWRlcyk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb3NpdGVHdWlkZXM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/translate-mode.js b/modules/edit-modes/dist/lib/translate-mode.js new file mode 100644 index 000000000..63220c6e1 --- /dev/null +++ b/modules/edit-modes/dist/lib/translate-mode.js @@ -0,0 +1,163 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TranslateMode = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformTranslate = _interopRequireDefault(require("@turf/transform-translate")); + +var _helpers = require("@turf/helpers"); + +var _geojsonEditMode = require("./geojson-edit-mode"); + +var _immutableFeatureCollection = require("./immutable-feature-collection"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 TranslateMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(TranslateMode, _GeoJsonEditMode); + + var _super = _createSuper(TranslateMode); + + function TranslateMode() { + var _this; + + _classCallCheck(this, TranslateMode); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeforeTranslate", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isTranslatable", void 0); + + return _this; + } + + _createClass(TranslateMode, [{ + key: "handleDragging", + value: function handleDragging(event, props) { + if (!this._isTranslatable) { + // Nothing to do + return; + } + + if (this._geometryBeforeTranslate) { + // Translate the geometry + var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translating', props); + + if (editAction) { + props.onEdit(editAction); + } + } // cancel map panning + + + event.cancelPan(); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + this._isTranslatable = this.isSelectionPicked(event.pointerDownPicks || event.picks, props); + this.updateCursor(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (!this._isTranslatable) { + return; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (this._geometryBeforeTranslate) { + // Translate the geometry + var editAction = this.getTranslateAction(event.pointerDownMapCoords, event.mapCoords, 'translated', props); + + if (editAction) { + props.onEdit(editAction); + } + + this._geometryBeforeTranslate = null; + } + } + }, { + key: "updateCursor", + value: function updateCursor(props) { + if (this._isTranslatable) { + props.onUpdateCursor('move'); + } else { + props.onUpdateCursor(null); + } + } + }, { + key: "getTranslateAction", + value: function getTranslateAction(startDragPoint, currentPoint, editType, props) { + if (!this._geometryBeforeTranslate) { + return null; + } + + var p1 = (0, _helpers.point)(startDragPoint); + var p2 = (0, _helpers.point)(currentPoint); + var distanceMoved = (0, _distance["default"])(p1, p2); + var direction = (0, _bearing["default"])(p1, p2); + var movedFeatures = (0, _transformTranslate["default"])( // @ts-ignore + this._geometryBeforeTranslate, distanceMoved, direction); + var updatedData = new _immutableFeatureCollection.ImmutableFeatureCollection(props.data); + var selectedIndexes = props.selectedIndexes; + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = movedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + editContext: { + featureIndexes: selectedIndexes + } + }; + } + }]); + + return TranslateMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.TranslateMode = TranslateMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNsYXRlLW1vZGUudHMiXSwibmFtZXMiOlsiVHJhbnNsYXRlTW9kZSIsImV2ZW50IiwicHJvcHMiLCJfaXNUcmFuc2xhdGFibGUiLCJfZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUiLCJlZGl0QWN0aW9uIiwiZ2V0VHJhbnNsYXRlQWN0aW9uIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJtYXBDb29yZHMiLCJvbkVkaXQiLCJjYW5jZWxQYW4iLCJpc1NlbGVjdGlvblBpY2tlZCIsInBvaW50ZXJEb3duUGlja3MiLCJwaWNrcyIsInVwZGF0ZUN1cnNvciIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwib25VcGRhdGVDdXJzb3IiLCJzdGFydERyYWdQb2ludCIsImN1cnJlbnRQb2ludCIsImVkaXRUeXBlIiwicDEiLCJwMiIsImRpc3RhbmNlTW92ZWQiLCJkaXJlY3Rpb24iLCJtb3ZlZEZlYXR1cmVzIiwidXBkYXRlZERhdGEiLCJJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJpIiwibGVuZ3RoIiwic2VsZWN0ZWRJbmRleCIsIm1vdmVkRmVhdHVyZSIsImZlYXR1cmVzIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJnZXRPYmplY3QiLCJlZGl0Q29udGV4dCIsImZlYXR1cmVJbmRleGVzIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFTQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYUEsYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQ0FJSUMsSyxFQUFzQkMsSyxFQUFxQztBQUN4RSxVQUFJLENBQUMsS0FBS0MsZUFBVixFQUEyQjtBQUN6QjtBQUNBO0FBQ0Q7O0FBRUQsVUFBSSxLQUFLQyx3QkFBVCxFQUFtQztBQUNqQztBQUNBLFlBQU1DLFVB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VUFBQUEsY0FBYyxFQUFFVjtBQURMO0FBSFIsT0FBUDtBQU9EOzs7O0VBMUdnQ1csZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHVyZkJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlIGZyb20gJ0B0dXJmL3RyYW5zZm9ybS10cmFuc2xhdGUnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJy4uL2dlb2pzb24tdHlwZXMnO1xuaW1wb3J0IHtcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgTW9kZVByb3BzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUsIEdlb0pzb25FZGl0QWN0aW9uIH0gZnJvbSAnLi9nZW9qc29uLWVkaXQtbW9kZSc7XG5pbXBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vaW1tdXRhYmxlLWZlYXR1cmUtY29sbGVjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHtcbiAgX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1RyYW5zbGF0YWJsZTogYm9vbGVhbjtcblxuICBoYW5kbGVEcmFnZ2luZyhldmVudDogRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAoIXRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgICAgICBldmVudC5tYXBDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGluZycsXG4gICAgICAgIHByb3BzXG4gICAgICApO1xuXG4gICAgICBpZiAoZWRpdEFjdGlvbikge1xuICAgICAgICBwcm9wcy5vbkVkaXQoZWRpdEFjdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2FuY2VsIG1hcCBwYW5uaW5nXG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICB0aGlzLl9pc1RyYW5zbGF0YWJsZSA9IHRoaXMuaXNTZWxlY3Rpb25QaWNrZWQoZXZlbnQucG9pbnRlckRvd25QaWNrcyB8fCBldmVudC5waWNrcywgcHJvcHMpO1xuXG4gICAgdGhpcy51cGRhdGVDdXJzb3IocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24ocHJvcHMpO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBpZiAodGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGNvbnN0IGVkaXRBY3Rpb24gPSB0aGlzLmdldFRyYW5zbGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICAgIGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgJ3RyYW5zbGF0ZWQnLFxuICAgICAgICBwcm9wc1xuICAgICAgKTtcblxuICAgICAgaWYgKGVkaXRBY3Rpb24pIHtcbiAgICAgICAgcHJvcHMub25FZGl0KGVkaXRBY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ3Vyc29yKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignbW92ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLFxuICAgIGN1cnJlbnRQb2ludDogUG9zaXRpb24sXG4gICAgZWRpdFR5cGU6IHN0cmluZyxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApOiBHZW9Kc29uRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwMSA9IHBvaW50KHN0YXJ0RHJhZ1BvaW50KTtcbiAgICBjb25zdCBwMiA9IHBvaW50KGN1cnJlbnRQb2ludCk7XG5cbiAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdHVyZkJlYXJpbmcocDEsIHAyKTtcblxuICAgIGNvbnN0IG1vdmVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUsXG4gICAgICBkaXN0YW5jZU1vdmVkLFxuICAgICAgZGlyZWN0aW9uXG4gICAgKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihwcm9wcy5kYXRhKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXhlc1tpXTtcbiAgICAgIGNvbnN0IG1vdmVkRmVhdHVyZSA9IG1vdmVkRmVhdHVyZXMuZmVhdHVyZXNbaV07XG4gICAgICB1cGRhdGVkRGF0YSA9IHVwZGF0ZWREYXRhLnJlcGxhY2VHZW9tZXRyeShzZWxlY3RlZEluZGV4LCBtb3ZlZEZlYXR1cmUuZ2VvbWV0cnkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZSxcbiAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBzZWxlY3RlZEluZGV4ZXMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/two-click-polygon-mode.js b/modules/edit-modes/dist/lib/two-click-polygon-mode.js new file mode 100644 index 000000000..4e21566ee --- /dev/null +++ b/modules/edit-modes/dist/lib/two-click-polygon-mode.js @@ -0,0 +1,170 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TwoClickPolygonMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var TwoClickPolygonMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(TwoClickPolygonMode, _GeoJsonEditMode); + + var _super = _createSuper(TwoClickPolygonMode); + + function TwoClickPolygonMode() { + _classCallCheck(this, TwoClickPolygonMode); + + return _super.apply(this, arguments); + } + + _createClass(TwoClickPolygonMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + if (props.modeConfig && props.modeConfig.dragToDraw) { + // handled in drag handlers + return; + } + + this.addClickSequence(event); + this.checkAndFinishPolygon(props); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) { + if (!props.modeConfig || !props.modeConfig.dragToDraw) { + // handled in click handlers + return; + } + + this.addClickSequence(event); + event.cancelPan(); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + if (!props.modeConfig || !props.modeConfig.dragToDraw) { + // handled in click handlers + return; + } + + this.addClickSequence(event); + this.checkAndFinishPolygon(props); + } + }, { + key: "checkAndFinishPolygon", + value: function checkAndFinishPolygon(props) { + var clickSequence = this.getClickSequence(); + var tentativeFeature = this.getTentativeGuide(props); + + if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var feature = { + type: 'Feature', + properties: { + shape: tentativeFeature.properties.shape + }, + geometry: { + type: 'Polygon', + coordinates: tentativeFeature.geometry.coordinates + } + }; + var editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props); + this.resetClickSequence(); + + if (editAction) { + props.onEdit(editAction); + } + } + } + }, { + key: "getGuides", + value: function getGuides(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent, + modeConfig = props.modeConfig; + var clickSequence = this.getClickSequence(); + var guides = { + type: 'FeatureCollection', + features: [] + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return guides; + } + + var corner1 = clickSequence[0]; + var corner2 = lastPointerMoveEvent.mapCoords; + var polygon = this.getTwoClickPolygon(corner1, corner2, modeConfig); + + if (polygon) { + guides.features.push({ + type: 'Feature', + properties: { + shape: polygon.properties && polygon.properties.shape, + guideType: 'tentative' + }, + geometry: polygon.geometry + }); + } + + return guides; + } + }, { + key: "getTwoClickPolygon", + value: function getTwoClickPolygon(coord1, coord2, modeConfig) { + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + props.onUpdateCursor('cell'); + + _get(_getPrototypeOf(TwoClickPolygonMode.prototype), "handlePointerMove", this).call(this, event, props); + } + }, { + key: "createTentativeFeature", + value: function createTentativeFeature(props) { + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clickSequence = this.getClickSequence(); + var lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []; + var tentativeFeature; + + if (clickSequence.length === 1) { + tentativeFeature = this.getTwoClickPolygon(clickSequence[0], lastCoords[0], props.modeConfig); + } + + return tentativeFeature; + } + }]); + + return TwoClickPolygonMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.TwoClickPolygonMode = TwoClickPolygonMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHdvLWNsaWNrLXBvbHlnb24tbW9kZS50cyJdLCJuYW1lcyI6WyJUd29DbGlja1BvbHlnb25Nb2RlIiwiZXZlbnQiLCJwcm9wcyIsIm1vZGVDb25maWciLCJkcmFnVG9EcmF3IiwiYWRkQ2xpY2tTZXF1ZW5jZSIsImNoZWNrQW5kRmluaXNoUG9seWdvbiIsImNhbmNlbFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUd1aWRlIiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiZmVhdHVyZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImNvb3JkaW5hdGVzIiwiZWRpdEFjdGlvbiIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwib25FZGl0IiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJndWlkZXMiLCJmZWF0dXJlcyIsImNvcm5lcjEiLCJjb3JuZXIyIiwibWFwQ29vcmRzIiwicG9seWdvbiIsImdldFR3b0NsaWNrUG9seWdvbiIsInB1c2giLCJndWlkZVR5cGUiLCJjb29yZDEiLCJjb29yZDIiLCJvblVwZGF0ZUN1cnNvciIsImxhc3RDb29yZHMiLCJHZW9Kc29uRWRpdE1vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxtQjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFJQSxLQUFLLENBQUNDLFVBQU4sSUFBb0JELEtBQUssQ0FBQ0MsVUFBTixDQUFpQkMsVUFBekMsRUFBcUQ7QUFDbkQ7QUFDQTtBQUNEOztBQUVELFdBQUtDLGdCQUFMLENBQXNCSixLQUF0QjtBQUVBLFdBQUtLLHFCQUFMLENBQTJCSixLQUEzQjtBQUNEOzs7d0NBRW1CRCxLLEVBQTJCQyxLLEVBQTJDO0FBQ3hGLFVBQUksQ0FBQ0EsS0FBSyxDQUFDQyxVQUFQLElBQXFCLENBQUNELEtBQUssQ0FBQ0MsVUFBTixDQUFpQkMsVUFBM0MsRUFBdUQ7QUFDckQ7QUFDQTtBQUNEOztBQUVELFdBQUtDLGdCQUFMLENBQXNCSixLQUF0QjtBQUNBQSxNQUFBQSxLQUFLLENBQUNNLFNBQU47QUFDRDs7O3VDQUVrQk4sSyxFQUEwQkMsSyxFQUEyQztBQUN0RixVQUFJLENBQUNBLEtBQUssQ0FBQ0MsVUFBUCxJQUFxQixDQUFDRCxLQUFLLENBQUNDLFVBQU4sQ0FBaUJDLFVBQTNDLEVBQXVEO0FBQ3JEO0FBQ0E7QUFDRDs7QUFDRCxXQUFLQyxnQkFBTCxDQUFzQkosS0FBdEI7QUFFQSxXQUFLSyxxQkFBTCxDQUEyQkosS0FBM0I7QUFDRDs7OzBDQUVxQkEsSyxFQUFxQztBQUN6RCxVQUFNTSxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFDQSxVQUFNQyxnQkFBZ0IsR0FBRyxLQUFLQyxpQkFBTCxDQUF1QlQsS0FBdkIsQ0FBekI7O0FBRUEsVUFDRU0sYUFBYSxDQUFDSSxNQUFkLEdBQXVCLENBQXZCLElBQ0FGLGdCQURBLElBRUFBLGdCQUFnQixDQUFDRyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLE9BQTJCLEdBQUc7QUFDbENELFVBQUFBLElBQUksRUFBRSxTQUQ0QjtBQUVsQ0UsVUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFlBQUFBLEtBQUssRUFBRVAsZ0JBQWdCLENBQUNNLFVBQWpCLENBQTRCQztBQUR6QixXQUZzQjtBQUtsQ0osVUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFlBQUFBLElBQUksRUFBRSxTQURFO0FBRVJJLFlBQUFBLFdBQVcsRUFBRVIsZ0JBQWdCLENBQUNHLFFBQWpCLENBQTBCSztBQUYvQjtBQUx3QixTQUFwQztBQVVBLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxtQ0FBTCxDQUF5Q0wsT0FBekMsRUFBa0RiLEtBQWxELENBQW5CO0FBRUEsYUFBS21CLGtCQUFMOztBQUVBLFlBQUlGLFVBQUosRUFBZ0I7QUFDZGpCLFVBQUFBLEtBQUssQ0FBQ29CLE1BQU4sQ0FBYUgsVUFBYjtBQUNEO0FBQ0Y7QUFDRjs7OzhCQUVTakIsSyxFQUE2RDtBQUFBLFVBQzdEcUIsb0JBRDZELEdBQ3hCckIsS0FEd0IsQ0FDN0RxQixvQkFENkQ7QUFBQSxVQUN2Q3BCLFVBRHVDLEdBQ3hCRCxLQUR3QixDQUN2Q0MsVUFEdUM7QUFFckUsVUFBTUssYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCO0FBRUEsVUFBTWUsTUFBOEIsR0FBRztBQUNyQ1YsUUFBQUEsSUFBSSxFQUFFLG1CQUQrQjtBQUVyQ1csUUFBQUEsUUFBUSxFQUFFO0FBRjJCLE9BQXZDOztBQUtBLFVBQUlqQixhQUFhLENBQUNJLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPWSxNQUFQO0FBQ0Q7O0FBRUQsVUFBTUUsT0FBTyxHQUFHbEIsYUFBYSxDQUFDLENBQUQsQ0FBN0I7QUFDQSxVQUFNbUIsT0FBTyxHQUFHSixvQkFBb0IsQ0FBQ0ssU0FBckM7QUFFQSxVQUFNQyxPQUFPLEdBQUcsS0FBS0Msa0JBQUwsQ0FBd0JKLE9BQXhCLEVBQWlDQyxPQUFqQyxFQUEwQ3hCLFVBQTFDLENBQWhCOztBQUNBLFVBQUkwQixPQUFKLEVBQWE7QUFDWEwsUUFBQUEsTUFBTSxDQUFDQyxRQUFQLENBQWdCTSxJQUFoQixDQUFxQjtBQUNuQmpCLFVBQUFBLElBQUksRUFBRSxTQURhO0FBRW5CRSxVQUFBQSxVQUFVLEVBQUU7QUFDVkMsWUFBQUEsS0FBSyxFQUFFWSxPQUFPLENBQUNiLFVBQVIsSUFBc0JhLE9BQU8sQ0FBQ2IsVUFBUixDQUFtQkMsS0FEdEM7QUFFVmUsWUFBQUEsU0FBUyxFQUFFO0FBRkQsV0FGTztBQU1uQm5CLFVBQUFBLFFBQVEsRUFBRWdCLE9BQU8sQ0FBQ2hCO0FBTkMsU0FBckI7QUFRRDs7QUFFRCxhQUFPVyxNQUFQO0FBQ0Q7Ozt1Q0FHQ1MsTSxFQUNBQyxNLEVBQ0EvQixVLEVBQ3VDO0FBQ3ZDLGFBQU8sSUFBUDtBQUNEOzs7c0NBRWlCRixLLEVBQXlCQyxLLEVBQXFDO0FBQzlFQSxNQUFBQSxLQUFLLENBQUNpQyxjQUFOLENBQXFCLE1BQXJCOztBQUNBLGlHQUF3QmxDLEtBQXhCLEVBQStCQyxLQUEvQjtBQUNEOzs7MkNBRXNCQSxLLEVBQXVEO0FBQUEsVUFDcEVxQixvQkFEb0UsR0FDM0NyQixLQUQyQyxDQUNwRXFCLG9CQURvRTtBQUU1RSxVQUFNZixhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7QUFFQSxVQUFNMkIsVUFBVSxHQUFHYixvQkFBb0IsR0FBRyxDQUFDQSxvQkFBb0IsQ0FBQ0ssU0FBdEIsQ0FBSCxHQUFzQyxFQUE3RTtBQUVBLFVBQUlsQixnQkFBSjs7QUFDQSxVQUFJRixhQUFhLENBQUNJLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUJGLFFBQUFBLGdCQUFnQixHQUFHLEtBQUtvQixrQkFBTCxDQUF3QnRCLGFBQWEsQ0FBQyxDQUFELENBQXJDLEVBQTBDNEIsVUFBVSxDQUFDLENBQUQsQ0FBcEQsRUFBeURsQyxLQUFLLENBQUNDLFVBQS9ELENBQW5CO0FBQ0Q7O0FBRUQsYUFBT08sZ0JBQVA7QUFDRDs7OztFQXRIc0MyQixnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIE1vZGVQcm9wcyxcbiAgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgVGVudGF0aXZlRmVhdHVyZSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUG9seWdvbiwgRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVPZiwgUG9zaXRpb24gfSBmcm9tICcuLi9nZW9qc29uLXR5cGVzJztcbmltcG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJy4vZ2VvanNvbi1lZGl0LW1vZGUnO1xuXG5leHBvcnQgY2xhc3MgVHdvQ2xpY2tQb2x5Z29uTW9kZSBleHRlbmRzIEdlb0pzb25FZGl0TW9kZSB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIGlmIChwcm9wcy5tb2RlQ29uZmlnICYmIHByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBkcmFnIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hZGRDbGlja1NlcXVlbmNlKGV2ZW50KTtcblxuICAgIHRoaXMuY2hlY2tBbmRGaW5pc2hQb2x5Z29uKHByb3BzKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiB2b2lkIHtcbiAgICBpZiAoIXByb3BzLm1vZGVDb25maWcgfHwgIXByb3BzLm1vZGVDb25maWcuZHJhZ1RvRHJhdykge1xuICAgICAgLy8gaGFuZGxlZCBpbiBjbGljayBoYW5kbGVyc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG4gICAgZXZlbnQuY2FuY2VsUGFuKCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge1xuICAgIGlmICghcHJvcHMubW9kZUNvbmZpZyB8fCAhcHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3KSB7XG4gICAgICAvLyBoYW5kbGVkIGluIGNsaWNrIGhhbmRsZXJzXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYWRkQ2xpY2tTZXF1ZW5jZShldmVudCk7XG5cbiAgICB0aGlzLmNoZWNrQW5kRmluaXNoUG9seWdvbihwcm9wcyk7XG4gIH1cblxuICBjaGVja0FuZEZpbmlzaFBvbHlnb24ocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlR3VpZGUocHJvcHMpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZmVhdHVyZTogRmVhdHVyZU9mPFBvbHlnb24+ID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBzaGFwZTogdGVudGF0aXZlRmVhdHVyZS5wcm9wZXJ0aWVzLnNoYXBlLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICBjb29yZGluYXRlczogdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihmZWF0dXJlLCBwcm9wcyk7XG5cbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRHdWlkZXMocHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pOiBHdWlkZUZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50LCBtb2RlQ29uZmlnIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBjb25zdCBndWlkZXM6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gPSB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtdLFxuICAgIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gZ3VpZGVzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBsYXN0UG9pbnRlck1vdmVFdmVudC5tYXBDb29yZHM7XG5cbiAgICBjb25zdCBwb2x5Z29uID0gdGhpcy5nZXRUd29DbGlja1BvbHlnb24oY29ybmVyMSwgY29ybmVyMiwgbW9kZUNvbmZpZyk7XG4gICAgaWYgKHBvbHlnb24pIHtcbiAgICAgIGd1aWRlcy5mZWF0dXJlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgc2hhcGU6IHBvbHlnb24ucHJvcGVydGllcyAmJiBwb2x5Z29uLnByb3BlcnRpZXMuc2hhcGUsXG4gICAgICAgICAgZ3VpZGVUeXBlOiAndGVudGF0aXZlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvbWV0cnk6IHBvbHlnb24uZ2VvbWV0cnksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3VpZGVzO1xuICB9XG5cbiAgZ2V0VHdvQ2xpY2tQb2x5Z29uKFxuICAgIGNvb3JkMTogUG9zaXRpb24sXG4gICAgY29vcmQyOiBQb3NpdGlvbixcbiAgICBtb2RlQ29uZmlnOiBhbnlcbiAgKTogRmVhdHVyZU9mPFBvbHlnb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBwcm9wcy5vblVwZGF0ZUN1cnNvcignY2VsbCcpO1xuICAgIHN1cGVyLmhhbmRsZVBvaW50ZXJNb3ZlKGV2ZW50LCBwcm9wcyk7XG4gIH1cblxuICBjcmVhdGVUZW50YXRpdmVGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogVGVudGF0aXZlRmVhdHVyZSB7XG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGxhc3RQb2ludGVyTW92ZUV2ZW50ID8gW2xhc3RQb2ludGVyTW92ZUV2ZW50Lm1hcENvb3Jkc10gOiBbXTtcblxuICAgIGxldCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VHdvQ2xpY2tQb2x5Z29uKGNsaWNrU2VxdWVuY2VbMF0sIGxhc3RDb29yZHNbMF0sIHByb3BzLm1vZGVDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW50YXRpdmVGZWF0dXJlO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/lib/view-mode.js b/modules/edit-modes/dist/lib/view-mode.js new file mode 100644 index 000000000..dfdb4d97c --- /dev/null +++ b/modules/edit-modes/dist/lib/view-mode.js @@ -0,0 +1,43 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ViewMode = void 0; + +var _geojsonEditMode = require("./geojson-edit-mode"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var ViewMode = /*#__PURE__*/function (_GeoJsonEditMode) { + _inherits(ViewMode, _GeoJsonEditMode); + + var _super = _createSuper(ViewMode); + + function ViewMode() { + _classCallCheck(this, ViewMode); + + return _super.apply(this, arguments); + } + + return ViewMode; +}(_geojsonEditMode.GeoJsonEditMode); + +exports.ViewMode = ViewMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy1tb2RlLnRzIl0sIm5hbWVzIjpbIlZpZXdNb2RlIiwiR2VvSnNvbkVkaXRNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRWFBLFE7Ozs7Ozs7Ozs7OztFQUFpQkMsZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9Kc29uRWRpdE1vZGUgfSBmcm9tICcuL2dlb2pzb24tZWRpdC1tb2RlJztcblxuZXhwb3J0IGNsYXNzIFZpZXdNb2RlIGV4dGVuZHMgR2VvSnNvbkVkaXRNb2RlIHt9XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/memoize.js b/modules/edit-modes/dist/memoize.js new file mode 100644 index 000000000..da173bc92 --- /dev/null +++ b/modules/edit-modes/dist/memoize.js @@ -0,0 +1,56 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = memoize; + +// port from @deck.gl/core +function isEqual(a, b) { + if (a === b) { + return true; + } + + if (Array.isArray(a)) { + // Special treatment for arrays: compare 1-level deep + // This is to support equality of matrix/coordinate props + var len = a.length; + + if (!b || b.length !== len) { + return false; + } + + for (var i = 0; i < len; i++) { + if (a[i] !== b[i]) { + return false; + } + } + + return true; + } + + return false; +} +/** + * Speed up consecutive function calls by caching the result of calls with identical input + * https://en.wikipedia.org/wiki/Memoization + * @param {function} compute - the function to be memoized + */ + + +function memoize(compute) { + var cachedArgs = {}; + var cachedResult; + return function (args) { + for (var key in args) { + if (!isEqual(args[key], cachedArgs[key])) { + cachedResult = compute(args); + cachedArgs = args; + break; + } + } + + return cachedResult; + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZW1vaXplLnRzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhIiwiYiIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJtZW1vaXplIiwiY29tcHV0ZSIsImNhY2hlZEFyZ3MiLCJjYWNoZWRSZXN1bHQiLCJhcmdzIiwia2V5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxPQUFULENBQWlCQyxDQUFqQixFQUF5QkMsQ0FBekIsRUFBaUM7QUFDL0IsTUFBSUQsQ0FBQyxLQUFLQyxDQUFWLEVBQWE7QUFDWCxXQUFPLElBQVA7QUFDRDs7QUFDRCxNQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBZCxDQUFKLEVBQXNCO0FBQ3BCO0FBQ0E7QUFDQSxRQUFNSSxHQUFHLEdBQUdKLENBQUMsQ0FBQ0ssTUFBZDs7QUFDQSxRQUFJLENBQUNKLENBQUQsSUFBTUEsQ0FBQyxDQUFDSSxNQUFGLEtBQWFELEdBQXZCLEVBQTRCO0FBQzFCLGFBQU8sS0FBUDtBQUNEOztBQUVELFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsR0FBcEIsRUFBeUJFLENBQUMsRUFBMUIsRUFBOEI7QUFDNUIsVUFBSU4sQ0FBQyxDQUFDTSxDQUFELENBQUQsS0FBU0wsQ0FBQyxDQUFDSyxDQUFELENBQWQsRUFBbUI7QUFDakIsZUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPLElBQVA7QUFDRDs7QUFDRCxTQUFPLEtBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS2UsU0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsRUFBb0M7QUFDakQsTUFBSUMsVUFBVSxHQUFHLEVBQWpCO0FBQ0EsTUFBSUMsWUFBSjtBQUVBLFNBQU8sVUFBQ0MsSUFBRCxFQUFlO0FBQ3BCLFNBQUssSUFBTUMsR0FBWCxJQUFrQkQsSUFBbEIsRUFBd0I7QUFDdEIsVUFBSSxDQUFDWixPQUFPLENBQUNZLElBQUksQ0FBQ0MsR0FBRCxDQUFMLEVBQVlILFVBQVUsQ0FBQ0csR0FBRCxDQUF0QixDQUFaLEVBQTBDO0FBQ3hDRixRQUFBQSxZQUFZLEdBQUdGLE9BQU8sQ0FBQ0csSUFBRCxDQUF0QjtBQUNBRixRQUFBQSxVQUFVLEdBQUdFLElBQWI7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT0QsWUFBUDtBQUNELEdBVEQ7QUFVRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIHBvcnQgZnJvbSBAZGVjay5nbC9jb3JlXG5mdW5jdGlvbiBpc0VxdWFsKGE6IGFueSwgYjogYW55KSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAvLyBTcGVjaWFsIHRyZWF0bWVudCBmb3IgYXJyYXlzOiBjb21wYXJlIDEtbGV2ZWwgZGVlcFxuICAgIC8vIFRoaXMgaXMgdG8gc3VwcG9ydCBlcXVhbGl0eSBvZiBtYXRyaXgvY29vcmRpbmF0ZSBwcm9wc1xuICAgIGNvbnN0IGxlbiA9IGEubGVuZ3RoO1xuICAgIGlmICghYiB8fCBiLmxlbmd0aCAhPT0gbGVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogU3BlZWQgdXAgY29uc2VjdXRpdmUgZnVuY3Rpb24gY2FsbHMgYnkgY2FjaGluZyB0aGUgcmVzdWx0IG9mIGNhbGxzIHdpdGggaWRlbnRpY2FsIGlucHV0XG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZW1vaXphdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcHV0ZSAtIHRoZSBmdW5jdGlvbiB0byBiZSBtZW1vaXplZFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZW1vaXplKGNvbXB1dGU6IEZ1bmN0aW9uKSB7XG4gIGxldCBjYWNoZWRBcmdzID0ge307XG4gIGxldCBjYWNoZWRSZXN1bHQ7XG5cbiAgcmV0dXJuIChhcmdzOiBhbnkpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBhcmdzKSB7XG4gICAgICBpZiAoIWlzRXF1YWwoYXJnc1trZXldLCBjYWNoZWRBcmdzW2tleV0pKSB7XG4gICAgICAgIGNhY2hlZFJlc3VsdCA9IGNvbXB1dGUoYXJncyk7XG4gICAgICAgIGNhY2hlZEFyZ3MgPSBhcmdzO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/edit-modes/dist/types.js b/modules/edit-modes/dist/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/edit-modes/dist/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/edit-modes/dist/utils.js b/modules/edit-modes/dist/utils.js new file mode 100644 index 000000000..b8fb66482 --- /dev/null +++ b/modules/edit-modes/dist/utils.js @@ -0,0 +1,351 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; +exports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints; +exports.distance2d = distance2d; +exports.mix = mix; +exports.nearestPointOnProjectedLine = nearestPointOnProjectedLine; +exports.getPickedEditHandle = getPickedEditHandle; +exports.getPickedSnapSourceEditHandle = getPickedSnapSourceEditHandle; +exports.getNonGuidePicks = getNonGuidePicks; +exports.getPickedExistingEditHandle = getPickedExistingEditHandle; +exports.getPickedIntermediateEditHandle = getPickedIntermediateEditHandle; +exports.getPickedEditHandles = getPickedEditHandles; +exports.getEditHandlesForGeometry = getEditHandlesForGeometry; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _pointToLineDistance = _interopRequireDefault(require("@turf/point-to-line-distance")); + +var _helpers = require("@turf/helpers"); + +var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} + +function generatePointsParallelToLinePoints(p1, p2, mapCoords) { + var lineString = { + type: 'LineString', + coordinates: [p1, p2] + }; + var pt = (0, _helpers.point)(mapCoords); + var ddistance = (0, _pointToLineDistance["default"])(pt, lineString); + var lineBearing = (0, _bearing["default"])(p1, p2); // Check if current point is to the left or right of line + // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y) + // then (x−x1)(y2−y1)−(y−y1)(x2−x1) + + var isPointToLeftOfLine = (mapCoords[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string + + var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString + // Add the distance as the current position moves away from the lineString + + var p3 = (0, _destination["default"])(p2, ddistance, orthogonalBearing); + var p4 = (0, _destination["default"])(p1, ddistance, orthogonalBearing); + return [p3.geometry.coordinates, p4.geometry.coordinates]; +} + +function distance2d(x1, y1, x2, y2) { + var dx = x1 - x2; + var dy = y1 - y2; + return Math.sqrt(dx * dx + dy * dy); +} + +function mix(a, b, ratio) { + return b * ratio + a * (1 - ratio); +} + +function nearestPointOnProjectedLine(line, inPoint, viewport) { + var wmViewport = new _viewportMercatorProject["default"](viewport); // Project the line to viewport, then find the nearest point + + var coordinates = line.geometry.coordinates; + var projectedCoords = coordinates.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 3), + x = _ref2[0], + y = _ref2[1], + _ref2$ = _ref2[2], + z = _ref2$ === void 0 ? 0 : _ref2$; + + return wmViewport.project([x, y, z]); + }); //@ts-ignore + + var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), + _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2), + x = _wmViewport$project2[0], + y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords)); + + + var minDistance = Infinity; + var minPointInfo = {}; + projectedCoords.forEach(function (_ref3, index) { + var _ref4 = _slicedToArray(_ref3, 2), + x2 = _ref4[0], + y2 = _ref4[1]; + + if (index === 0) { + return; + } + + var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2), + x1 = _projectedCoords[0], + y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index] + // convert to Ax + By + C = 0 + + + var A = y1 - y2; + var B = x2 - x1; + var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line + + var div = A * A + B * B; + var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds + + if (distance < minDistance) { + minDistance = distance; + minPointInfo = { + index: index, + x0: (B * (B * x - A * y) - A * C) / div, + y0: (A * (-B * x + A * y) - B * C) / div + }; + } + }); //@ts-ignore + + var _minPointInfo = minPointInfo, + index = _minPointInfo.index, + x0 = _minPointInfo.x0, + y0 = _minPointInfo.y0; + + var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3), + x1 = _projectedCoords2[0], + y1 = _projectedCoords2[1], + _projectedCoords2$ = _projectedCoords2[2], + z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$; + + var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3), + x2 = _projectedCoords$inde[0], + y2 = _projectedCoords$inde[1], + _projectedCoords$inde2 = _projectedCoords$inde[2], + z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z + + + var lineLength = distance2d(x1, y1, x2, y2); + var startToPointLength = distance2d(x1, y1, x0, y0); + var ratio = startToPointLength / lineLength; + var z0 = mix(z1, z2, ratio); + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: wmViewport.unproject([x0, y0, z0]) + }, + properties: { + // TODO: calculate the distance in proper units + dist: minDistance, + index: index - 1 + } + }; +} + +function getPickedEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.length ? handles[0] : null; +} + +function getPickedSnapSourceEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (handle) { + return handle.properties.editHandleType === 'snap-source'; + }); +} + +function getNonGuidePicks(picks) { + return picks && picks.filter(function (pick) { + return !pick.isGuide; + }); +} + +function getPickedExistingEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (_ref5) { + var properties = _ref5.properties; + return properties.featureIndex >= 0 && properties.editHandleType === 'existing'; + }); +} + +function getPickedIntermediateEditHandle(picks) { + var handles = getPickedEditHandles(picks); + return handles.find(function (_ref6) { + var properties = _ref6.properties; + return properties.featureIndex >= 0 && properties.editHandleType === 'intermediate'; + }); +} + +function getPickedEditHandles(picks) { + var handles = picks && picks.filter(function (pick) { + return pick.isGuide && pick.object.properties.guideType === 'editHandle'; + }).map(function (pick) { + return pick.object; + }) || []; + return handles; +} + +function getEditHandlesForGeometry(geometry, featureIndex) { + var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing'; + var handles = []; + + switch (geometry.type) { + case 'Point': + // positions are not nested + handles = [{ + type: 'Feature', + properties: { + guideType: 'editHandle', + editHandleType: editHandleType, + positionIndexes: [], + featureIndex: featureIndex + }, + geometry: { + type: 'Point', + coordinates: geometry.coordinates + } + }]; + break; + + case 'MultiPoint': + case 'LineString': + // positions are nested 1 level + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType)); + break; + + case 'Polygon': + case 'MultiLineString': + // positions are nested 2 levels + for (var a = 0; a < geometry.coordinates.length; a++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType)); + + if (geometry.type === 'Polygon') { + // Don't repeat the first/last handle for Polygons + handles = handles.slice(0, -1); + } + } + + break; + + case 'MultiPolygon': + // positions are nested 3 levels + for (var _a = 0; _a < geometry.coordinates.length; _a++) { + for (var b = 0; b < geometry.coordinates[_a].length; b++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons + + handles = handles.slice(0, -1); + } + } + + break; + + default: + //@ts-ignore + throw Error("Unhandled geometry type: ".concat(geometry.type)); + } + + return handles; +} + +function getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) { + var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing'; + var editHandles = []; + + for (var i = 0; i < coordinates.length; i++) { + var position = coordinates[i]; + editHandles.push({ + type: 'Feature', + properties: { + guideType: 'editHandle', + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]), + featureIndex: featureIndex, + editHandleType: editHandleType + }, + geometry: { + type: 'Point', + coordinates: position + } + }); + } + + return editHandles; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJtYXBDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsImdldFBpY2tlZEVkaXRIYW5kbGUiLCJwaWNrcyIsImhhbmRsZXMiLCJnZXRQaWNrZWRFZGl0SGFuZGxlcyIsImdldFBpY2tlZFNuYXBTb3VyY2VFZGl0SGFuZGxlIiwiZmluZCIsImhhbmRsZSIsImVkaXRIYW5kbGVUeXBlIiwiZ2V0Tm9uR3VpZGVQaWNrcyIsImZpbHRlciIsInBpY2siLCJpc0d1aWRlIiwiZ2V0UGlja2VkRXhpc3RpbmdFZGl0SGFuZGxlIiwiZmVhdHVyZUluZGV4IiwiZ2V0UGlja2VkSW50ZXJtZWRpYXRlRWRpdEhhbmRsZSIsIm9iamVjdCIsImd1aWRlVHlwZSIsImdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkiLCJwb3NpdGlvbkluZGV4ZXMiLCJjb25jYXQiLCJnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzIiwic2xpY2UiLCJFcnJvciIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJlZGl0SGFuZGxlcyIsInBvc2l0aW9uIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhTyxTQUFTQSxXQUFULENBQ0xDLEtBREssRUFHNkI7QUFBQSxNQURsQ0MsWUFDa0MsdUVBRGUsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLENBQVQsRUFBWSxHQUFaLENBQ2Y7O0FBQ2xDLE1BQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBWixFQUFpQkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLEdBQTVCLEVBQWlDQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBNUMsRUFBaURBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVyxHQUE1RCxDQUFQO0FBQ0QsQyxDQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSwrQkFBVCxDQUNMQyxLQURLLEVBRUxDLE1BRkssRUFH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QUFNaUIsV0FBVyxHQUFHLEVBQXBCOztBQUNBLE9BQUssSUFBSXZGLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdRLFdBQVcsQ0FBQ1AsTUFBaEMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7QUFDM0MsUUFBTXdGLFFBQVEsR0FBR2hGLFdBQVcsQ0FBQ1IsQ0FBRCxDQUE1QjtBQUNBdUYsSUFBQUEsV0FBVyxDQUFDRSxJQUFaLENBQWlCO0FBQ2ZsRixNQUFBQSxJQUFJLEVBQUUsU0FEUztBQUVmc0QsTUFBQUEsVUFBVSxFQUFFO0FBQ1ZrQixRQUFBQSxTQUFTLEVBQUUsWUFERDtBQUVWRSxRQUFBQSxlQUFlLCtCQUFNSyxtQkFBTixJQUEyQnRGLENBQTNCLEVBRkw7QUFHVjRFLFFBQUFBLFlBQVksRUFBWkEsWUFIVTtBQUlWTixRQUFBQSxjQUFjLEVBQWRBO0FBSlUsT0FGRztBQVFmdEQsTUFBQUEsUUFBUSxFQUFFO0FBQ1JULFFBQUFBLElBQUksRUFBRSxPQURFO0FBRVJDLFFBQUFBLFdBQVcsRUFBRWdGO0FBRkw7QUFSSyxLQUFqQjtBQWFEOztBQUNELFNBQU9ELFdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZXN0aW5hdGlvbiBmcm9tICdAdHVyZi9kZXN0aW5hdGlvbic7XG5pbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCBwb2ludFRvTGluZURpc3RhbmNlIGZyb20gJ0B0dXJmL3BvaW50LXRvLWxpbmUtZGlzdGFuY2UnO1xuaW1wb3J0IHsgcG9pbnQgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCBXZWJNZXJjYXRvclZpZXdwb3J0IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHsgVmlld3BvcnQsIFBpY2ssIEVkaXRIYW5kbGVGZWF0dXJlLCBFZGl0SGFuZGxlVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgR2VvbWV0cnksXG4gIFBvc2l0aW9uLFxuICBQb2ludCxcbiAgTGluZVN0cmluZyxcbiAgRmVhdHVyZU9mLFxuICBGZWF0dXJlV2l0aFByb3BzLFxufSBmcm9tICcuL2dlb2pzb24tdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBOZWFyZXN0UG9pbnRUeXBlID0gRmVhdHVyZVdpdGhQcm9wczxQb2ludCwgeyBkaXN0OiBudW1iZXI7IGluZGV4OiBudW1iZXIgfT47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0RlY2tDb2xvcihcbiAgY29sb3I/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IG51bWJlcixcbiAgZGVmYXVsdENvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDAsIDI1NV1cbik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBkZWZhdWx0Q29sb3I7XG4gIH1cbiAgcmV0dXJuIFtjb2xvclswXSAqIDI1NSwgY29sb3JbMV0gKiAyNTUsIGNvbG9yWzJdICogMjU1LCBjb2xvclszXSAqIDI1NV07XG59XG5cbi8vXG4vLyBhIEdlb0pTT04gaGVscGVyIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHdpdGhcbi8vIGFuIGFyZ3VtZW50IHRoYXQgaXMgdGhlIG1vc3QgZGVlcGx5LW5lc3RlZCBhcnJheSBoYXZpbmcgZWxlbWVudHNcbi8vIHRoYXQgYXJlIGFycmF5cyBvZiBwcmltaXRpdmVzIGFzIGFuIGFyZ3VtZW50LCBlLmcuXG4vL1xuLy8ge1xuLy8gICBcInR5cGVcIjogXCJNdWx0aVBvbHlnb25cIixcbi8vICAgXCJjb29yZGluYXRlc1wiOiBbXG4vLyAgICAgICBbXG4vLyAgICAgICAgICAgW1szMCwgMjBdLCBbNDUsIDQwXSwgWzEwLCA0MF0sIFszMCwgMjBdXVxuLy8gICAgICAgXSxcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy8gICAgICAgXVxuLy8gICBdXG4vLyB9XG4vL1xuLy8gdGhlIGZ1bmN0aW9uIHdvdWxkIGJlIGNhbGxlZCBvbjpcbi8vXG4vLyBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vL1xuLy8gYW5kXG4vL1xuLy8gW1sxNSwgNV0sIFs0MCwgMTBdLCBbMTAsIDIwXSwgWzUsIDEwXSwgWzE1LCA1XV1cbi8vXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgYXJyYXk6IEFycmF5PGFueT4sXG4gIHByZWZpeDogQXJyYXk8bnVtYmVyPixcbiAgZm46IEZ1bmN0aW9uXG4pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5WzBdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhhcnJheVtpXSwgWy4uLnByZWZpeCwgaV0sIGZuKSkge1xuICAgICAgZm4oYXJyYXksIHByZWZpeCk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyhcbiAgcDE6IFBvc2l0aW9uLFxuICBwMjogUG9zaXRpb24sXG4gIG1hcENvb3JkczogUG9zaXRpb25cbik6IFBvc2l0aW9uW10ge1xuICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0ge1xuICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICBjb29yZGluYXRlczogW3AxLCBwMl0sXG4gIH07XG4gIGNvbnN0IHB0ID0gcG9pbnQobWFwQ29vcmRzKTtcbiAgY29uc3QgZGRpc3RhbmNlID0gcG9pbnRUb0xpbmVEaXN0YW5jZShwdCwgbGluZVN0cmluZyk7XG4gIGNvbnN0IGxpbmVCZWFyaW5nID0gYmVhcmluZyhwMSwgcDIpO1xuXG4gIC8vIENoZWNrIGlmIGN1cnJlbnQgcG9pbnQgaXMgdG8gdGhlIGxlZnQgb3IgcmlnaHQgb2YgbGluZVxuICAvLyBMaW5lIGZyb20gQT0oeDEseTEpIHRvIEI9KHgyLHkyKSBhIHBvaW50IFA9KHgseSlcbiAgLy8gdGhlbiAoeOKIkngxKSh5MuKIknkxKeKIkih54oiSeTEpKHgy4oiSeDEpXG4gIGNvbnN0IGlzUG9pbnRUb0xlZnRPZkxpbmUgPVxuICAgIChtYXBDb29yZHNbMF0gLSBwMVswXSkgKiAocDJbMV0gLSBwMVsxXSkgLSAobWFwQ29vcmRzWzFdIC0gcDFbMV0pICogKHAyWzBdIC0gcDFbMF0pO1xuXG4gIC8vIEJlYXJpbmcgdG8gZHJhdyBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHN0cmluZ1xuICBjb25zdCBvcnRob2dvbmFsQmVhcmluZyA9IGlzUG9pbnRUb0xlZnRPZkxpbmUgPCAwID8gbGluZUJlYXJpbmcgLSA5MCA6IGxpbmVCZWFyaW5nIC0gMjcwO1xuXG4gIC8vIEdldCBjb29yZGluYXRlcyBmb3IgdGhlIHBvaW50IHAzIGFuZCBwNCB3aGljaCBhcmUgcGVycGVuZGljdWxhciB0byB0aGUgbGluZVN0cmluZ1xuICAvLyBBZGQgdGhlIGRpc3RhbmNlIGFzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGluZVN0cmluZ1xuICBjb25zdCBwMyA9IGRlc3RpbmF0aW9uKHAyLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgY29uc3QgcDQgPSBkZXN0aW5hdGlvbihwMSwgZGRpc3RhbmNlLCBvcnRob2dvbmFsQmVhcmluZyk7XG5cbiAgcmV0dXJuIFtwMy5nZW9tZXRyeS5jb29yZGluYXRlcywgcDQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNdIGFzIFBvc2l0aW9uW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZTJkKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkeCA9IHgxIC0geDI7XG4gIGNvbnN0IGR5ID0geTEgLSB5MjtcbiAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaXgoYTogbnVtYmVyLCBiOiBudW1iZXIsIHJhdGlvOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYiAqIHJhdGlvICsgYSAqICgxIC0gcmF0aW8pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVhcmVzdFBvaW50T25Qcm9qZWN0ZWRMaW5lKFxuICBsaW5lOiBGZWF0dXJlT2Y8TGluZVN0cmluZz4sXG4gIGluUG9pbnQ6IEZlYXR1cmVPZjxQb2ludD4sXG4gIHZpZXdwb3J0OiBWaWV3cG9ydFxuKTogTmVhcmVzdFBvaW50VHlwZSB7XG4gIGNvbnN0IHdtVmlld3BvcnQgPSBuZXcgV2ViTWVyY2F0b3JWaWV3cG9ydCh2aWV3cG9ydCk7XG4gIC8vIFByb2plY3QgdGhlIGxpbmUgdG8gdmlld3BvcnQsIHRoZW4gZmluZCB0aGUgbmVhcmVzdCBwb2ludFxuICBjb25zdCBjb29yZGluYXRlczogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBsaW5lLmdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIGFueTtcbiAgY29uc3QgcHJvamVjdGVkQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChbeCwgeSwgeiA9IDBdKSA9PiB3bVZpZXdwb3J0LnByb2plY3QoW3gsIHksIHpdKSk7XG4gIC8vQHRzLWlnbm9yZVxuICBjb25zdCBbeCwgeV0gPSB3bVZpZXdwb3J0LnByb2plY3QoaW5Qb2ludC5nZW9tZXRyeS5jb29yZGluYXRlcyk7XG4gIC8vIGNvbnNvbGUubG9nKCdwcm9qZWN0ZWRDb29yZHMnLCBKU09OLnN0cmluZ2lmeShwcm9qZWN0ZWRDb29yZHMpKTtcblxuICBsZXQgbWluRGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pblBvaW50SW5mbyA9IHt9O1xuXG4gIHByb2plY3RlZENvb3Jkcy5mb3JFYWNoKChbeDIsIHkyXSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbeDEsIHkxXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdO1xuXG4gICAgLy8gbGluZSBmcm9tIHByb2plY3RlZENvb3Jkc1tpbmRleCAtIDFdIHRvIHByb2plY3RlZENvb3Jkc1tpbmRleF1cbiAgICAvLyBjb252ZXJ0IHRvIEF4ICsgQnkgKyBDID0gMFxuICAgIGNvbnN0IEEgPSB5MSAtIHkyO1xuICAgIGNvbnN0IEIgPSB4MiAtIHgxO1xuICAgIGNvbnN0IEMgPSB4MSAqIHkyIC0geDIgKiB5MTtcblxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rpc3RhbmNlX2Zyb21fYV9wb2ludF90b19hX2xpbmVcbiAgICBjb25zdCBkaXYgPSBBICogQSArIEIgKiBCO1xuICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5hYnMoQSAqIHggKyBCICogeSArIEMpIC8gTWF0aC5zcXJ0KGRpdik7XG5cbiAgICAvLyBUT0RPOiBDaGVjayBpZiBpbnNpZGUgYm91bmRzXG5cbiAgICBpZiAoZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSkge1xuICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIG1pblBvaW50SW5mbyA9IHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHgwOiAoQiAqIChCICogeCAtIEEgKiB5KSAtIEEgKiBDKSAvIGRpdixcbiAgICAgICAgeTA6IChBICogKC1CICogeCArIEEgKiB5KSAtIEIgKiBDKSAvIGRpdixcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbiAgLy9AdHMtaWdub3JlXG4gIGNvbnN0IHsgaW5kZXgsIHgwLCB5MCB9ID0gbWluUG9pbnRJbmZvO1xuICBjb25zdCBbeDEsIHkxLCB6MSA9IDBdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV07XG4gIGNvbnN0IFt4MiwgeTIsIHoyID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXhdO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aGF0IHJhdGlvIG9mIHRoZSBsaW5lIHdlIGFyZSBvbiB0byBmaW5kIHRoZSBwcm9wZXIgelxuICBjb25zdCBsaW5lTGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgyLCB5Mik7XG4gIGNvbnN0IHN0YXJ0VG9Qb2ludExlbmd0aCA9IGRpc3RhbmNlMmQoeDEsIHkxLCB4MCwgeTApO1xuICBjb25zdCByYXRpbyA9IHN0YXJ0VG9Qb2ludExlbmd0aCAvIGxpbmVMZW5ndGg7XG4gIGNvbnN0IHowID0gbWl4KHoxLCB6MiwgcmF0aW8pO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgIGdlb21ldHJ5OiB7XG4gICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgY29vcmRpbmF0ZXM6IHdtVmlld3BvcnQudW5wcm9qZWN0KFt4MCwgeTAsIHowXSksXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAvLyBUT0RPOiBjYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGluIHByb3BlciB1bml0c1xuICAgICAgZGlzdDogbWluRGlzdGFuY2UsXG4gICAgICBpbmRleDogaW5kZXggLSAxLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMubGVuZ3RoID8gaGFuZGxlc1swXSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRTbmFwU291cmNlRWRpdEhhbmRsZShcbiAgcGlja3M6IFBpY2tbXSB8IG51bGwgfCB1bmRlZmluZWRcbik6IEVkaXRIYW5kbGVGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGhhbmRsZXMgPSBnZXRQaWNrZWRFZGl0SGFuZGxlcyhwaWNrcyk7XG4gIHJldHVybiBoYW5kbGVzLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdzbmFwLXNvdXJjZScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9uR3VpZGVQaWNrcyhwaWNrczogUGlja1tdKTogUGlja1tdIHtcbiAgcmV0dXJuIHBpY2tzICYmIHBpY2tzLmZpbHRlcigocGljaykgPT4gIXBpY2suaXNHdWlkZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFeGlzdGluZ0VkaXRIYW5kbGUoXG4gIHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICBjb25zdCBoYW5kbGVzID0gZ2V0UGlja2VkRWRpdEhhbmRsZXMocGlja3MpO1xuICByZXR1cm4gaGFuZGxlcy5maW5kKFxuICAgICh7IHByb3BlcnRpZXMgfSkgPT4gcHJvcGVydGllcy5mZWF0dXJlSW5kZXggPj0gMCAmJiBwcm9wZXJ0aWVzLmVkaXRIYW5kbGVUeXBlID09PSAnZXhpc3RpbmcnXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRJbnRlcm1lZGlhdGVFZGl0SGFuZGxlKFxuICBwaWNrczogUGlja1tdIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRWRpdEhhbmRsZUZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaGFuZGxlcyA9IGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzKTtcbiAgcmV0dXJuIGhhbmRsZXMuZmluZChcbiAgICAoeyBwcm9wZXJ0aWVzIH0pID0+IHByb3BlcnRpZXMuZmVhdHVyZUluZGV4ID49IDAgJiYgcHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBpY2tlZEVkaXRIYW5kbGVzKHBpY2tzOiBQaWNrW10gfCBudWxsIHwgdW5kZWZpbmVkKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGhhbmRsZXMgPVxuICAgIChwaWNrcyAmJlxuICAgICAgcGlja3NcbiAgICAgICAgLmZpbHRlcigocGljaykgPT4gcGljay5pc0d1aWRlICYmIHBpY2sub2JqZWN0LnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSAnZWRpdEhhbmRsZScpXG4gICAgICAgIC5tYXAoKHBpY2spID0+IHBpY2sub2JqZWN0KSkgfHxcbiAgICBbXTtcblxuICByZXR1cm4gaGFuZGxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoXG4gIGdlb21ldHJ5OiBHZW9tZXRyeSxcbiAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gIGVkaXRIYW5kbGVUeXBlOiBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZydcbik6IEVkaXRIYW5kbGVGZWF0dXJlW10ge1xuICBsZXQgaGFuZGxlczogRWRpdEhhbmRsZUZlYXR1cmVbXSA9IFtdO1xuXG4gIHN3aXRjaCAoZ2VvbWV0cnkudHlwZSkge1xuICAgIGNhc2UgJ1BvaW50JzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbm90IG5lc3RlZFxuICAgICAgaGFuZGxlcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlLFxuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbXSxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAxIGxldmVsXG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIFtdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAyIGxldmVsc1xuICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGErKykge1xuICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlc1thXSwgW2FdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgLy8gRG9uJ3QgcmVwZWF0IHRoZSBmaXJzdC9sYXN0IGhhbmRsZSBmb3IgUG9seWdvbnNcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDMgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGZvciAobGV0IGIgPSAwOyBiIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbYV0ubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlc1thXVtiXSxcbiAgICAgICAgICAgICAgW2EsIGJdLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGdlb21ldHJ5IHR5cGU6ICR7Z2VvbWV0cnkudHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVzO1xufVxuXG5mdW5jdGlvbiBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICBjb29yZGluYXRlczogYW55W10sXG4gIHBvc2l0aW9uSW5kZXhQcmVmaXg6IG51bWJlcltdLFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKTogRWRpdEhhbmRsZUZlYXR1cmVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndWlkZVR5cGU6ICdlZGl0SGFuZGxlJyxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLi4ucG9zaXRpb25JbmRleFByZWZpeCwgaV0sXG4gICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgZWRpdEhhbmRsZVR5cGUsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IHBvc2l0aW9uLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZWRpdEhhbmRsZXM7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/edit-modes/src/lib/resize-circle-mode.ts b/modules/edit-modes/src/lib/resize-circle-mode.ts index d833091d7..1f1fa34d1 100644 --- a/modules/edit-modes/src/lib/resize-circle-mode.ts +++ b/modules/edit-modes/src/lib/resize-circle-mode.ts @@ -152,7 +152,7 @@ export class ResizeCircleMode extends GeoJsonEditMode { props.onEdit({ updatedData, - editType: 'unionGeometry', + editType: 'circleResize', editContext: { featureIndexes: [editHandleProperties.featureIndex], }, @@ -181,6 +181,14 @@ export class ResizeCircleMode extends GeoJsonEditMode { handleStopDragging(event: StopDraggingEvent, props: ModeProps) { if (this._isResizing) { + props.onEdit({ + updatedData: props.data, + editType: 'circleResizeEnd', + editContext: { + featureIndexes: props.selectedIndexes, + }, + }); + this._selectedEditHandle = null; this._isResizing = false; } diff --git a/modules/editor/dist-es6/editor-modal.js b/modules/editor/dist-es6/editor-modal.js new file mode 100644 index 000000000..e4c9468c1 --- /dev/null +++ b/modules/editor/dist-es6/editor-modal.js @@ -0,0 +1,119 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EditorModal = EditorModal; +exports.Button = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _styledReactModal = _interopRequireWildcard(require("styled-react-modal")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject5() { + var data = _taggedTemplateLiteral(["\n font-size: 1.25rem;\n font-weight: 500;\n margin: 0;\n"]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 0.75rem 0.75rem;\n border-bottom: 1px solid rgb(222, 226, 230);\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: block;\n width: 50rem;\n height: auto;\n max-width: 500px;\n margin: 1.75rem auto;\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n color: rgb(21, 25, 29);\n line-height: 1.5;\n text-align: left;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n display: inline-block;\n color: #fff;\n background-color: rgb(90, 98, 94);\n font-size: 1em;\n margin: 0.25em;\n padding: 0.375em 0.75em;\n border: 1px solid transparent;\n border-radius: 0.25em;\n display: block;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var Button = _styledComponents["default"].button(_templateObject()); + +exports.Button = Button; + +var StyledModal = _styledReactModal["default"].styled(_templateObject2()); + +var Content = _styledComponents["default"].div(_templateObject3()); + +var HeaderRow = _styledComponents["default"].div(_templateObject4()); + +var Header = _styledComponents["default"].h5(_templateObject5()); + +function EditorModal(props) { + var _React$useState = React.useState(true), + _React$useState2 = _slicedToArray(_React$useState, 2), + isOpen = _React$useState2[0], + setIsOpen = _React$useState2[1]; + + function toggleModal() { + if (isOpen) { + props.onClose(); + } + + setIsOpen(!isOpen); + } + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_styledReactModal.ModalProvider, null, /*#__PURE__*/React.createElement(StyledModal, { + isOpen: isOpen, + onBackgroundClick: toggleModal, + onEscapeKeydown: toggleModal + }, /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(HeaderRow, null, /*#__PURE__*/React.createElement(Header, null, props.title)), props.content)))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3ItbW9kYWwudHN4Il0sIm5hbWVzIjpbIkJ1dHRvbiIsInN0eWxlZCIsImJ1dHRvbiIsIlN0eWxlZE1vZGFsIiwiTW9kYWwiLCJDb250ZW50IiwiZGl2IiwiSGVhZGVyUm93IiwiSGVhZGVyIiwiaDUiLCJFZGl0b3JNb2RhbCIsInByb3BzIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImlzT3BlbiIsInNldElzT3BlbiIsInRvZ2dsZU1vZGFsIiwib25DbG9zZSIsInRpdGxlIiwiY29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxNQUFNLEdBQUdDLDZCQUFPQyxNQUFWLG1CQUFaOzs7O0FBWVAsSUFBTUMsV0FBVyxHQUFHQyw2QkFBTUgsTUFBVCxvQkFBakI7O0FBZ0JBLElBQU1JLE9BQU8sR0FBR0osNkJBQU9LLEdBQVYsb0JBQWI7O0FBYUEsSUFBTUMsU0FBUyxHQUFHTiw2QkFBT0ssR0FBVixvQkFBZjs7QUFRQSxJQUFNRSxNQUFNLEdBQUdQLDZCQUFPUSxFQUFWLG9CQUFaOztBQVlPLFNBQVNDLFdBQVQsQ0FBcUJDLEtBQXJCLEVBQXdDO0FBQUEsd0JBQ2pCQyxLQUFLLENBQUNDLFFBQU4sQ0FBZSxJQUFmLENBRGlCO0FBQUE7QUFBQSxNQUN0Q0MsTUFEc0M7QUFBQSxNQUM5QkMsU0FEOEI7O0FBRzdDLFdBQVNDLFdBQVQsR0FBdUI7QUFDckIsUUFBSUYsTUFBSixFQUFZO0FBQ1ZILE1BQUFBLEtBQUssQ0FBQ00sT0FBTjtBQUNEOztBQUNERixJQUFBQSxTQUFTLENBQUMsQ0FBQ0QsTUFBRixDQUFUO0FBQ0Q7O0FBRUQsc0JBQ0UsdURBQ0Usb0JBQUMsK0JBQUQscUJBQ0Usb0JBQUMsV0FBRDtBQUFhLElBQUEsTUFBTSxFQUFFQSxNQUFyQjtBQUE2QixJQUFBLGlCQUFpQixFQUFFRSxXQUFoRDtBQUE2RCxJQUFBLGVBQWUsRUFBRUE7QUFBOUUsa0JBQ0Usb0JBQUMsT0FBRCxxQkFDRSxvQkFBQyxTQUFELHFCQUNFLG9CQUFDLE1BQUQsUUFBU0wsS0FBSyxDQUFDTyxLQUFmLENBREYsQ0FERixFQUlHUCxLQUFLLENBQUNRLE9BSlQsQ0FERixDQURGLENBREYsQ0FERjtBQWNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBNb2RhbCwgeyBNb2RhbFByb3ZpZGVyIH0gZnJvbSAnc3R5bGVkLXJlYWN0LW1vZGFsJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDkwLCA5OCwgOTQpO1xuICBmb250LXNpemU6IDFlbTtcbiAgbWFyZ2luOiAwLjI1ZW07XG4gIHBhZGRpbmc6IDAuMzc1ZW0gMC43NWVtO1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICBkaXNwbGF5OiBibG9jaztcbmA7XG5cbmNvbnN0IFN0eWxlZE1vZGFsID0gTW9kYWwuc3R5bGVkYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogNTByZW07XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiAxLjc1cmVtIGF1dG87XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHJnYigyMSwgMjUsIDI5KTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XG4gIG91dGxpbmU6IDA7XG5gO1xuXG5jb25zdCBIZWFkZXJSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAwLjc1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjIyLCAyMjYsIDIzMCk7XG5gO1xuXG5jb25zdCBIZWFkZXIgPSBzdHlsZWQuaDVgXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luOiAwO1xuYDtcblxuZXhwb3J0IHR5cGUgTW9kYWxQcm9wcyA9IHtcbiAgdGl0bGU6IGFueTtcbiAgY29udGVudDogYW55O1xuICBvbkNsb3NlOiAoKSA9PiB1bmtub3duO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEVkaXRvck1vZGFsKHByb3BzOiBNb2RhbFByb3BzKSB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcblxuICBmdW5jdGlvbiB0b2dnbGVNb2RhbCgpIHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICBwcm9wcy5vbkNsb3NlKCk7XG4gICAgfVxuICAgIHNldElzT3BlbighaXNPcGVuKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxNb2RhbFByb3ZpZGVyPlxuICAgICAgICA8U3R5bGVkTW9kYWwgaXNPcGVuPXtpc09wZW59IG9uQmFja2dyb3VuZENsaWNrPXt0b2dnbGVNb2RhbH0gb25Fc2NhcGVLZXlkb3duPXt0b2dnbGVNb2RhbH0+XG4gICAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgICA8SGVhZGVyUm93PlxuICAgICAgICAgICAgICA8SGVhZGVyPntwcm9wcy50aXRsZX08L0hlYWRlcj5cbiAgICAgICAgICAgIDwvSGVhZGVyUm93PlxuICAgICAgICAgICAge3Byb3BzLmNvbnRlbnR9XG4gICAgICAgICAgPC9Db250ZW50PlxuICAgICAgICA8L1N0eWxlZE1vZGFsPlxuICAgICAgPC9Nb2RhbFByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/export-component.js b/modules/editor/dist-es6/export-component.js new file mode 100644 index 000000000..00ed9a40b --- /dev/null +++ b/modules/editor/dist-es6/export-component.js @@ -0,0 +1,187 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExportComponent = ExportComponent; + +var React = _interopRequireWildcard(require("react")); + +var _clipboardCopy = _interopRequireDefault(require("clipboard-copy")); + +var _downloadjs = _interopRequireDefault(require("downloadjs")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _exporter = require("./lib/exporter"); + +var _editorModal = require("./editor-modal"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n padding: 0.75rem 0.75rem;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n resize: vertical;\n min-height: 300px;\n max-height: 500px;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n font-family: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: block;\n width: auto;\n height: auto;\n min-height: 300px;\n padding: 0rem 1rem;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n display: flex;\n padding: 0.75rem 0.75rem 0rem 0.75rem;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var FormatSelect = _styledComponents["default"].div(_templateObject()); + +var ExportArea = _styledComponents["default"].div(_templateObject2()); + +var ExportData = _styledComponents["default"].textarea(_templateObject3()); + +var FooterRow = _styledComponents["default"].div(_templateObject4()); + +function ExportComponent(_ref) { + var geoJson = _ref.geoJson, + onClose = _ref.onClose, + filename = _ref.filename, + additionalInputs = _ref.additionalInputs; + + var _React$useState = React.useState('geoJson'), + _React$useState2 = _slicedToArray(_React$useState, 2), + format = _React$useState2[0], + setFormat = _React$useState2[1]; + + var filenameValue = filename; + + if (!filenameValue) { + if (geoJson.type === 'FeatureCollection') { + filenameValue = 'features'; + } else { + // single feature + filenameValue = geoJson.properties.name || geoJson.id || 'feature'; + } + } + + var exportParams = React.useMemo(function () { + switch (format) { + case 'geoJson': + return (0, _exporter.toGeoJson)(geoJson, filenameValue); + + case 'kml': + return (0, _exporter.toKml)(geoJson, filenameValue); + + case 'wkt': + return (0, _exporter.toWkt)(geoJson, filenameValue); + + default: + throw Error("Unsupported format ".concat(format)); + } + }, [geoJson, format, filenameValue]); + var tooMuch = exportParams.data.length > 500000; + + function copyData() { + (0, _clipboardCopy["default"])(exportParams.data).then(function () { + return onClose(); + }); // TODO Design and add in a notifications banner for errors in the modal. + // .catch(err => {alert(`Error copying to clipboard: `, err)}) + } + + function downloadData() { + (0, _downloadjs["default"])(new Blob([exportParams.data]), exportParams.filename, exportParams.mimetype); + onClose(); + } + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormatSelect, null, /*#__PURE__*/React.createElement("strong", { + style: { + padding: '0.5rem 0.25rem' + } + }, "Format:"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'geoJson' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('geoJson'); + } + }, "GeoJSON"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'kml' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('kml'); + } + }, "KML"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'wkt' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('wkt'); + } + }, "WKT")), /*#__PURE__*/React.createElement(ExportArea, null, /*#__PURE__*/React.createElement(ExportData, { + readOnly: true, + style: tooMuch ? { + fontStyle: 'italic', + padding: '0.75rem 0rem' + } : {}, + value: tooMuch ? 'Too much data to display. Download or Copy to clipboard instead.' : exportParams.data + })), additionalInputs || null, /*#__PURE__*/React.createElement(FooterRow, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: 'rgb(0, 105, 217)' + }, + onClick: downloadData + }, "Download"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: 'rgb(0, 105, 217)' + }, + onClick: copyData + }, "Copy"), /*#__PURE__*/React.createElement(_editorModal.Button, { + onClick: onClose + }, "Cancel"))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6WyJGb3JtYXRTZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJFeHBvcnRBcmVhIiwiRXhwb3J0RGF0YSIsInRleHRhcmVhIiwiRm9vdGVyUm93IiwiRXhwb3J0Q29tcG9uZW50IiwiZ2VvSnNvbiIsIm9uQ2xvc2UiLCJmaWxlbmFtZSIsImFkZGl0aW9uYWxJbnB1dHMiLCJSZWFjdCIsInVzZVN0YXRlIiwiZm9ybWF0Iiwic2V0Rm9ybWF0IiwiZmlsZW5hbWVWYWx1ZSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwibmFtZSIsImlkIiwiZXhwb3J0UGFyYW1zIiwidXNlTWVtbyIsIkVycm9yIiwidG9vTXVjaCIsImRhdGEiLCJsZW5ndGgiLCJjb3B5RGF0YSIsInRoZW4iLCJkb3dubG9hZERhdGEiLCJCbG9iIiwibWltZXR5cGUiLCJwYWRkaW5nIiwiYmFja2dyb3VuZENvbG9yIiwiZm9udFN0eWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUdDLDZCQUFPQyxHQUFWLG1CQUFsQjs7QUFLQSxJQUFNQyxVQUFVLEdBQUdGLDZCQUFPQyxHQUFWLG9CQUFoQjs7QUFTQSxJQUFNRSxVQUFVLEdBQUdILDZCQUFPSSxRQUFWLG9CQUFoQjs7QUFjQSxJQUFNQyxTQUFTLEdBQUdMLDZCQUFPQyxHQUFWLG9CQUFmOztBQWFPLFNBQVNLLGVBQVQsT0FLa0I7QUFBQSxNQUp2QkMsT0FJdUIsUUFKdkJBLE9BSXVCO0FBQUEsTUFIdkJDLE9BR3VCLFFBSHZCQSxPQUd1QjtBQUFBLE1BRnZCQyxRQUV1QixRQUZ2QkEsUUFFdUI7QUFBQSxNQUR2QkMsZ0JBQ3VCLFFBRHZCQSxnQkFDdUI7O0FBQUEsd0JBQ0tDLEtBQUss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SFIsT0FBTyxHQUNILGtFQURHLEdBRUhILFlBQVksQ0FBQ0k7QUFOckIsSUFERixDQTVCRixFQXVDR2QsZ0JBQWdCLElBQUksSUF2Q3ZCLGVBd0NFLG9CQUFDLFNBQUQscUJBQ0Usb0JBQUMsbUJBQUQ7QUFBUSxJQUFBLEtBQUssRUFBRTtBQUFFc0IsTUFBQUEsZUFBZSxFQUFFO0FBQW5CLEtBQWY7QUFBd0QsSUFBQSxPQUFPLEVBQUVKO0FBQWpFLGdCQURGLGVBSUUsb0JBQUMsbUJBQUQ7QUFBUSxJQUFBLEtBQUssRUFBRTtBQUFFSSxNQUFBQSxlQUFlLEVBQUU7QUFBbkIsS0FBZjtBQUF3RCxJQUFBLE9BQU8sRUFBRU47QUFBakUsWUFKRixlQU9FLG9CQUFDLG1CQUFEO0FBQVEsSUFBQSxPQUFPLEVBQUVsQjtBQUFqQixjQVBGLENBeENGLENBREY7QUFvREQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNvcHkgZnJvbSAnY2xpcGJvYXJkLWNvcHknO1xuaW1wb3J0IGRvd25sb2FkanMgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IHRvR2VvSnNvbiwgdG9LbWwsIHRvV2t0IH0gZnJvbSAnLi9saWIvZXhwb3J0ZXInO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9lZGl0b3ItbW9kYWwnO1xuXG5jb25zdCBGb3JtYXRTZWxlY3QgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwLjc1cmVtIDAuNzVyZW0gMHJlbSAwLjc1cmVtO1xuYDtcblxuY29uc3QgRXhwb3J0QXJlYSA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgcGFkZGluZzogMHJlbSAxcmVtO1xuYDtcblxuY29uc3QgRXhwb3J0RGF0YSA9IHN0eWxlZC50ZXh0YXJlYWBcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgbWluLWhlaWdodDogMzAwcHg7XG4gIG1heC1oZWlnaHQ6IDUwMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA2LCAyMTIsIDIxOCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgJ1NlZ29lIFVJJywgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgJ05vdG8gU2FucycsXG4gICAgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsICdOb3RvIENvbG9yIEVtb2ppJztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuYDtcblxuY29uc3QgRm9vdGVyUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZzogMC43NXJlbSAwLjc1cmVtO1xuYDtcblxuZXhwb3J0IHR5cGUgRXhwb3J0Q29tcG9uZW50UHJvcHMgPSB7XG4gIGdlb0pzb246IGFueTtcbiAgb25DbG9zZTogKCkgPT4gdW5rbm93bjtcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbnB1dHM/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gRXhwb3J0Q29tcG9uZW50KHtcbiAgZ2VvSnNvbixcbiAgb25DbG9zZSxcbiAgZmlsZW5hbWUsXG4gIGFkZGl0aW9uYWxJbnB1dHMsXG59OiBFeHBvcnRDb21wb25lbnRQcm9wcykge1xuICBjb25zdCBbZm9ybWF0LCBzZXRGb3JtYXRdID0gUmVhY3QudXNlU3RhdGUoJ2dlb0pzb24nKTtcblxuICBsZXQgZmlsZW5hbWVWYWx1ZSA9IGZpbGVuYW1lO1xuICBpZiAoIWZpbGVuYW1lVmFsdWUpIHtcbiAgICBpZiAoZ2VvSnNvbi50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgICBmaWxlbmFtZVZhbHVlID0gJ2ZlYXR1cmVzJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2luZ2xlIGZlYXR1cmVcbiAgICAgIGZpbGVuYW1lVmFsdWUgPSBnZW9Kc29uLnByb3BlcnRpZXMubmFtZSB8fCBnZW9Kc29uLmlkIHx8ICdmZWF0dXJlJztcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHBvcnRQYXJhbXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnZ2VvSnNvbic6XG4gICAgICAgIHJldHVybiB0b0dlb0pzb24oZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBjYXNlICdrbWwnOlxuICAgICAgICByZXR1cm4gdG9LbWwoZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBjYXNlICd3a3QnOlxuICAgICAgICByZXR1cm4gdG9Xa3QoZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgZm9ybWF0ICR7Zm9ybWF0fWApO1xuICAgIH1cbiAgfSwgW2dlb0pzb24sIGZvcm1hdCwgZmlsZW5hbWVWYWx1ZV0pO1xuICBjb25zdCB0b29NdWNoID0gZXhwb3J0UGFyYW1zLmRhdGEubGVuZ3RoID4gNTAwMDAwO1xuXG4gIGZ1bmN0aW9uIGNvcHlEYXRhKCkge1xuICAgIGNvcHkoZXhwb3J0UGFyYW1zLmRhdGEpLnRoZW4oKCkgPT4gb25DbG9zZSgpKTtcbiAgICAvLyBUT0RPIERlc2lnbiBhbmQgYWRkIGluIGEgbm90aWZpY2F0aW9ucyBiYW5uZXIgZm9yIGVycm9ycyBpbiB0aGUgbW9kYWwuXG4gICAgLy8gICAuY2F0Y2goZXJyID0+IHthbGVydChgRXJyb3IgY29weWluZyB0byBjbGlwYm9hcmQ6IGAsIGVycil9KVxuICB9XG5cbiAgZnVuY3Rpb24gZG93bmxvYWREYXRhKCkge1xuICAgIGRvd25sb2FkanMobmV3IEJsb2IoW2V4cG9ydFBhcmFtcy5kYXRhXSksIGV4cG9ydFBhcmFtcy5maWxlbmFtZSwgZXhwb3J0UGFyYW1zLm1pbWV0eXBlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Rm9ybWF0U2VsZWN0PlxuICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IHBhZGRpbmc6ICcwLjVyZW0gMC4yNXJlbScgfX0+Rm9ybWF0Ojwvc3Ryb25nPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZm9ybWF0ID09PSAnZ2VvSnNvbicgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDkwLCA5OCwgOTQpJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEZvcm1hdCgnZ2VvSnNvbicpfVxuICAgICAgICA+XG4gICAgICAgICAgR2VvSlNPTlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZvcm1hdCA9PT0gJ2ttbCcgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDkwLCA5OCwgOTQpJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEZvcm1hdCgna21sJyl9XG4gICAgICAgID5cbiAgICAgICAgICBLTUxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmb3JtYXQgPT09ICd3a3QnID8gJ3JnYigwLCAxMDUsIDIxNyknIDogJ3JnYig5MCwgOTgsIDk0KScsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRGb3JtYXQoJ3drdCcpfVxuICAgICAgICA+XG4gICAgICAgICAgV0tUXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Gb3JtYXRTZWxlY3Q+XG4gICAgICA8RXhwb3J0QXJlYT5cbiAgICAgICAgPEV4cG9ydERhdGFcbiAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICBzdHlsZT17dG9vTXVjaCA/IHsgZm9udFN0eWxlOiAnaXRhbGljJywgcGFkZGluZzogJzAuNzVyZW0gMHJlbScgfSA6IHt9fVxuICAgICAgICAgIHZhbHVlPXtcbiAgICAgICAgICAgIHRvb011Y2hcbiAgICAgICAgICAgICAgPyAnVG9vIG11Y2ggZGF0YSB0byBkaXNwbGF5LiBEb3dubG9hZCBvciBDb3B5IHRvIGNsaXBib2FyZCBpbnN0ZWFkLidcbiAgICAgICAgICAgICAgOiBleHBvcnRQYXJhbXMuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgIDwvRXhwb3J0QXJlYT5cbiAgICAgIHthZGRpdGlvbmFsSW5wdXRzIHx8IG51bGx9XG4gICAgICA8Rm9vdGVyUm93PlxuICAgICAgICA8QnV0dG9uIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3JnYigwLCAxMDUsIDIxNyknIH19IG9uQ2xpY2s9e2Rvd25sb2FkRGF0YX0+XG4gICAgICAgICAgRG93bmxvYWRcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAncmdiKDAsIDEwNSwgMjE3KScgfX0gb25DbGljaz17Y29weURhdGF9PlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DbG9zZX0+Q2FuY2VsPC9CdXR0b24+XG4gICAgICA8L0Zvb3RlclJvdz5cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/editor/dist-es6/export-modal.js b/modules/editor/dist-es6/export-modal.js new file mode 100644 index 000000000..cb26a87bf --- /dev/null +++ b/modules/editor/dist-es6/export-modal.js @@ -0,0 +1,28 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExportModal = ExportModal; + +var React = _interopRequireWildcard(require("react")); + +var _editorModal = require("./editor-modal"); + +var _exportComponent = require("./export-component"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* eslint-env browser */ +function ExportModal(props) { + return /*#__PURE__*/React.createElement(_editorModal.EditorModal, { + onClose: props.onClose, + title: 'Export', + content: /*#__PURE__*/React.createElement(_exportComponent.ExportComponent, props) + }); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbW9kYWwudHN4Il0sIm5hbWVzIjpbIkV4cG9ydE1vZGFsIiwicHJvcHMiLCJvbkNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBSkE7QUFhTyxTQUFTQSxXQUFULENBQXFCQyxLQUFyQixFQUE4QztBQUNuRCxzQkFDRSxvQkFBQyx3QkFBRDtBQUNFLElBQUEsT0FBTyxFQUFFQSxLQUFLLENBQUNDLE9BRGpCO0FBRUUsSUFBQSxLQUFLLEVBQUUsUUFGVDtBQUdFLElBQUEsT0FBTyxlQUFFLG9CQUFDLGdDQUFELEVBQXFCRCxLQUFyQjtBQUhYLElBREY7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQW55R2VvSnNvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBFZGl0b3JNb2RhbCB9IGZyb20gJy4vZWRpdG9yLW1vZGFsJztcbmltcG9ydCB7IEV4cG9ydENvbXBvbmVudCB9IGZyb20gJy4vZXhwb3J0LWNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEV4cG9ydE1vZGFsUHJvcHMgPSB7XG4gIGdlb0pzb246IEFueUdlb0pzb247XG4gIG9uQ2xvc2U6ICgpID0+IHVua25vd247XG4gIGZpbGVuYW1lPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsSW5wdXRzPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEV4cG9ydE1vZGFsKHByb3BzOiBFeHBvcnRNb2RhbFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPEVkaXRvck1vZGFsXG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgdGl0bGU9eydFeHBvcnQnfVxuICAgICAgY29udGVudD17PEV4cG9ydENvbXBvbmVudCB7Li4ucHJvcHN9IC8+fVxuICAgIC8+XG4gICk7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/editor/dist-es6/icon.js b/modules/editor/dist-es6/icon.js new file mode 100644 index 000000000..c7a210e91 --- /dev/null +++ b/modules/editor/dist-es6/icon.js @@ -0,0 +1,26 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Icon = Icon; + +var React = _interopRequireWildcard(require("react")); + +require("boxicons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function Icon(props) { + // @ts-ignore + return /*#__PURE__*/React.createElement("box-icon", _extends({ + color: "currentColor" + }, props)); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pY29uLnRzeCJdLCJuYW1lcyI6WyJJY29uIiwicHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7OztBQUVPLFNBQVNBLElBQVQsQ0FBY0MsS0FBZCxFQUFxQjtBQUMxQjtBQUNBLHNCQUFPO0FBQVUsSUFBQSxLQUFLLEVBQUM7QUFBaEIsS0FBbUNBLEtBQW5DLEVBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnYm94aWNvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gSWNvbihwcm9wcykge1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiA8Ym94LWljb24gY29sb3I9XCJjdXJyZW50Q29sb3JcIiB7Li4ucHJvcHN9IC8+O1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/import-component.js b/modules/editor/dist-es6/import-component.js new file mode 100644 index 000000000..387e7cc43 --- /dev/null +++ b/modules/editor/dist-es6/import-component.js @@ -0,0 +1,321 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImportComponent = ImportComponent; + +var React = _interopRequireWildcard(require("react")); + +var _reactDropzone = _interopRequireDefault(require("react-dropzone")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _editorModal = require("./editor-modal"); + +var _importer = require("./lib/importer"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject8() { + var data = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n padding: 0.75rem 0.75rem;\n border-top: 1px solid rgb(222, 226, 230);\n"]); + + _templateObject8 = function _templateObject8() { + return data; + }; + + return data; +} + +function _templateObject7() { + var data = _taggedTemplateLiteral(["\n display: block;\n padding: 0rem 1rem;\n"]); + + _templateObject7 = function _templateObject7() { + return data; + }; + + return data; +} + +function _templateObject6() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n min-height: 250px;\n height: 100%;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n fontfamily: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans' sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject6 = function _templateObject6() { + return data; + }; + + return data; +} + +function _templateObject5() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n resize: vertical;\n min-height: 250px;\n max-height: 450px;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n font-family: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: block;\n width: auto;\n height: auto;\n min-height: 300px;\n padding: 0rem 1rem;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n display: flex;\n padding: 0.75rem 0.75rem 0rem 0.75rem;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n width: auto;\n height: auto;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border-radius: 0.3rem;\n outline: 0;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var ImportComponentContent = _styledComponents["default"].div(_templateObject()); + +var ImportContent = _styledComponents["default"].div(_templateObject2()); + +var ImportSelect = _styledComponents["default"].div(_templateObject3()); + +var ImportArea = _styledComponents["default"].div(_templateObject4()); + +var ImportTextArea = _styledComponents["default"].textarea(_templateObject5()); + +var ImportDropArea = _styledComponents["default"].div(_templateObject6()); + +var ImportInfo = _styledComponents["default"].div(_templateObject7()); + +var FooterRow = _styledComponents["default"].div(_templateObject8()); + +function ImportComponent(props) { + var _React$useState = React.useState(true), + _React$useState2 = _slicedToArray(_React$useState, 2), + isImportText = _React$useState2[0], + setIsImportText = _React$useState2[1]; + + var _React$useState3 = React.useState(''), + _React$useState4 = _slicedToArray(_React$useState3, 2), + text = _React$useState4[0], + setText = _React$useState4[1]; + + var _React$useState5 = React.useState(null), + _React$useState6 = _slicedToArray(_React$useState5, 2), + importFile = _React$useState6[0], + setImportFile = _React$useState6[1]; + + var _React$useState7 = React.useState({ + valid: false, + validationErrors: [] + }), + _React$useState8 = _slicedToArray(_React$useState7, 2), + parseResult = _React$useState8[0], + setParseResult = _React$useState8[1]; + + React.useEffect(function () { + function parseData() { + return _parseData.apply(this, arguments); + } + + function _parseData() { + _parseData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!isImportText) { + _context.next = 8; + break; + } + + _context.t0 = setParseResult; + _context.next = 4; + return (0, _importer.parseImport)(text); + + case 4: + _context.t1 = _context.sent; + (0, _context.t0)(_context.t1); + _context.next = 14; + break; + + case 8: + if (!(importFile !== null)) { + _context.next = 14; + break; + } + + _context.t2 = setParseResult; + _context.next = 12; + return (0, _importer.parseImport)(importFile); + + case 12: + _context.t3 = _context.sent; + (0, _context.t2)(_context.t3); + + case 14: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + return _parseData.apply(this, arguments); + } + + parseData(); + }, [isImportText, text, importFile]); + + function flush() { + setImportFile(null); + setText(''); + props.onCancel(); + } + + function isDataSet() { + return isImportText && text || !isImportText && importFile; + } // Check validity (and call custom validation callback if present) + + + var valid = isDataSet() && parseResult.valid && (!props.onValidate || props.onValidate(parseResult.features)); + return /*#__PURE__*/React.createElement(ImportComponentContent, null, /*#__PURE__*/React.createElement(ImportContent, null, /*#__PURE__*/React.createElement(ImportSelect, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: isImportText ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + setIsImportText(true); + } + }, "Import From Text"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: isImportText ? 'rgb(90, 98, 94)' : 'rgb(0, 105, 217)' + }, + onClick: function onClick() { + setIsImportText(false); + } + }, "Import From File")), /*#__PURE__*/React.createElement(ImportArea, null, isImportText && /*#__PURE__*/React.createElement(ImportTextArea, { + style: isDataSet() && !parseResult.valid ? { + borderColor: 'rgb(220, 53, 69)' + } : {}, + onChange: function onChange(event) { + return setText(event.target.value); + }, + value: text + }), !isImportText && /*#__PURE__*/React.createElement(_reactDropzone["default"], { + onDrop: function onDrop(importFiles) { + return setImportFile(importFiles[0]); + } + }, function (_ref) { + var getRootProps = _ref.getRootProps, + getInputProps = _ref.getInputProps; + return /*#__PURE__*/React.createElement(ImportDropArea, _extends({ + style: isDataSet() && !parseResult.valid ? { + borderColor: 'rgb(220, 53, 69)' + } : {} + }, getRootProps()), /*#__PURE__*/React.createElement("input", getInputProps()), importFile ? /*#__PURE__*/React.createElement("p", null, !parseResult.valid ? 'Invalid' : '', " Selected File: ", importFile.name, ".", /*#__PURE__*/React.createElement("br", null), "Drag 'n' drop or click again to change the file.") : /*#__PURE__*/React.createElement("p", null, "Drag 'n' drop your file here, or click to select a file.")); + }), /*#__PURE__*/React.createElement(ImportInfo, { + style: { + color: 'rgb(133, 100, 4)', + backgroundColor: 'rgb(255, 243, 205)' + } + }, isDataSet() && !parseResult.valid && // @ts-ignore + parseResult.validationErrors.map(function (err, i) { + return /*#__PURE__*/React.createElement("div", { + key: i + }, err); + }))), /*#__PURE__*/React.createElement(ImportInfo, null, "Supported formats:", /*#__PURE__*/React.createElement("ul", { + style: { + marginTop: '0' + } + }, /*#__PURE__*/React.createElement("li", { + key: "geojson" + }, /*#__PURE__*/React.createElement("a", { + href: "https://tools.ietf.org/html/rfc7946", + target: "_blank", + rel: "noopener noreferrer", + title: "GeoJSON Specification" + }, "GeoJSON")), /*#__PURE__*/React.createElement("li", { + key: "kml" + }, /*#__PURE__*/React.createElement("a", { + href: "https://developers.google.com/kml/", + target: "_blank", + rel: "noopener noreferrer", + title: "KML Specification" + }, "KML")), /*#__PURE__*/React.createElement("li", { + key: "wkt" + }, /*#__PURE__*/React.createElement("a", { + href: "https://en.wikipedia.org/wiki/Well-known_text", + target: "_blank", + rel: "noopener noreferrer", + title: "WKT" + }, "WKT"))))), props.additionalInputs || null, /*#__PURE__*/React.createElement(FooterRow, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: isDataSet() ? { + backgroundColor: valid ? 'rgb(0, 105, 217)' : 'rgb(220, 53, 69)' + } : { + backgroundColor: 'rgb(206, 212, 218)' + }, + disabled: !valid, + onClick: function onClick() { + props.onImport({ + type: 'FeatureCollection', + properties: {}, + // $FlowFixMe - can't be clicked if it is invalid, so features will be there + //@ts-ignore + features: parseResult.features + }); + flush(); + } + }, "Import Geometry"), /*#__PURE__*/React.createElement(_editorModal.Button, { + onClick: flush + }, "Cancel"))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnQtY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6WyJJbXBvcnRDb21wb25lbnRDb250ZW50Iiwic3R5bGVkIiwiZGl2IiwiSW1wb3J0Q29udGVudCIsIkltcG9ydFNlbGVjdCIsIkltcG9ydEFyZWEiLCJJbXBvcnRUZXh0QXJlYSIsInRleHRhcmVhIiwiSW1wb3J0RHJvcEFyZWEiLCJJbXBvcnRJbmZvIiwiRm9vdGVyUm93IiwiSW1wb3J0Q29tcG9uZW50IiwicHJvcHMiLCJSZWFjdCIsInVzZVN0YXRlIiwiaXNJbXBvcnRUZXh0Iiwic2V0SXNJbXBvcnRUZXh0IiwidGV4dCIsInNldFRleHQiLCJpbXBvcnRGaWxlIiwic2V0SW1wb3J0RmlsZSIsInZhbGlkIiwidmFsaWRhdGlvbkVycm9ycyIsInBhcnNlUmVzdWx0Iiwic2V0UGFyc2VSZXN1bHQiLCJ1c2VFZmZlY3QiLCJwYXJzZURhdGEiLCJmbHVzaCIsIm9uQ2FuY2VsIiwiaXNEYXRhU2V0Iiwib25WYWxpZGF0ZSIsImZlYXR1cmVzIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQ29sb3IiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiaW1wb3J0RmlsZXMiLCJnZXRSb290UHJvcHMiLCJnZXRJbnB1dFByb3BzIiwibmFtZSIsImNvbG9yIiwibWFwIiwiZXJyIiwiaSIsIm1hcmdpblRvcCIsImFkZGl0aW9uYWxJbnB1dHMiLCJvbkltcG9ydCIsInR5cGUiLCJwcm9wZXJ0aWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsc0JBQXNCLEdBQUdDLDZCQUFPQyxHQUFWLG1CQUE1Qjs7QUFZQSxJQUFNQyxhQUFhLEdBQUdGLDZC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QixlQWtHRSxvQkFBQyxTQUFELHFCQUNFLG9CQUFDLG1CQUFEO0FBQ0UsSUFBQSxLQUFLLEVBQ0hqQixTQUFTLEtBQ0w7QUFBRUcsTUFBQUEsZUFBZSxFQUFFWCxLQUFLLEdBQUcsa0JBQUgsR0FBd0I7QUFBaEQsS0FESyxHQUVMO0FBQUVXLE1BQUFBLGVBQWUsRUFBRTtBQUFuQixLQUpSO0FBTUUsSUFBQSxRQUFRLEVBQUUsQ0FBQ1gsS0FOYjtBQU9FLElBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JULE1BQUFBLEtBQUssQ0FBQ21DLFFBQU4sQ0FBZTtBQUNiQyxRQUFBQSxJQUFJLEVBQUUsbUJBRE87QUFFYkMsUUFBQUEsVUFBVSxFQUFFLEVBRkM7QUFHYjtBQUNBO0FBQ0FsQixRQUFBQSxRQUFRLEVBQUVSLFdBQVcsQ0FBQ1E7QUFMVCxPQUFmO0FBT0FKLE1BQUFBLEtBQUs7QUFDTjtBQWhCSCx1QkFERixlQXFCRSxvQkFBQyxtQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQTtBQUFqQixjQXJCRixDQWxHRixDQURGO0FBNEhEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBEcm9wem9uZSBmcm9tICdyZWFjdC1kcm9wem9uZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vZWRpdG9yLW1vZGFsJztcbmltcG9ydCB7IEltcG9ydERhdGEsIHBhcnNlSW1wb3J0IH0gZnJvbSAnLi9saWIvaW1wb3J0ZXInO1xuXG5jb25zdCBJbXBvcnRDb21wb25lbnRDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbiAgb3V0bGluZTogMDtcbmA7XG5cbmNvbnN0IEltcG9ydENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuYDtcblxuY29uc3QgSW1wb3J0U2VsZWN0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMC43NXJlbSAwLjc1cmVtIDByZW0gMC43NXJlbTtcbmA7XG5cbmNvbnN0IEltcG9ydEFyZWEgPSBzdHlsZWQuZGl2YFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgbWluLWhlaWdodDogMzAwcHg7XG4gIHBhZGRpbmc6IDByZW0gMXJlbTtcbmA7XG5cbmNvbnN0IEltcG9ydFRleHRBcmVhID0gc3R5bGVkLnRleHRhcmVhYFxuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IHZlcnRpY2FsO1xuICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgbWF4LWhlaWdodDogNDUwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDYsIDIxMiwgMjE4KTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCAnU2Vnb2UgVUknLCBSb2JvdG8sICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJyxcbiAgICBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ05vdG8gQ29sb3IgRW1vamknO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5gO1xuXG5jb25zdCBJbXBvcnREcm9wQXJlYSA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDYsIDIxMiwgMjE4KTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBmb250ZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsXG4gICAgJ05vdG8gU2Fucycgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsXG4gICAgJ05vdG8gQ29sb3IgRW1vamknO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5gO1xuXG5jb25zdCBJbXBvcnRJbmZvID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDByZW0gMXJlbTtcbmA7XG5cbmNvbnN0IEZvb3RlclJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMC43NXJlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyMjIsIDIyNiwgMjMwKTtcbmA7XG5cbmV4cG9ydCB0eXBlIEltcG9ydENvbXBvbmVudFByb3BzID0ge1xuICBvbkltcG9ydDogKGFyZzA6IGFueSkgPT4gdW5rbm93bjtcbiAgb25WYWxpZGF0ZT86IChhcmcwOiBhbnkpID0+IHVua25vd247XG4gIG9uQ2FuY2VsOiAoKSA9PiB1bmtub3duO1xuICBhZGRpdGlvbmFsSW5wdXRzPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEltcG9ydENvbXBvbmVudChwcm9wczogSW1wb3J0Q29tcG9uZW50UHJvcHMpIHtcbiAgY29uc3QgW2lzSW1wb3J0VGV4dCwgc2V0SXNJbXBvcnRUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IFtpbXBvcnRGaWxlLCBzZXRJbXBvcnRGaWxlXSA9IFJlYWN0LnVzZVN0YXRlPEZpbGUgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbcGFyc2VSZXN1bHQsIHNldFBhcnNlUmVzdWx0XSA9IFJlYWN0LnVzZVN0YXRlPEltcG9ydERhdGE+KHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgdmFsaWRhdGlvbkVycm9yczogW10sXG4gIH0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXN5bmMgZnVuY3Rpb24gcGFyc2VEYXRhKCkge1xuICAgICAgaWYgKGlzSW1wb3J0VGV4dCkge1xuICAgICAgICBzZXRQYXJzZVJlc3VsdChhd2FpdCBwYXJzZUltcG9ydCh0ZXh0KSk7XG4gICAgICB9IGVsc2UgaWYgKGltcG9ydEZpbGUgIT09IG51bGwpIHtcbiAgICAgICAgc2V0UGFyc2VSZXN1bHQoYXdhaXQgcGFyc2VJbXBvcnQoaW1wb3J0RmlsZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXJzZURhdGEoKTtcbiAgfSwgW2lzSW1wb3J0VGV4dCwgdGV4dCwgaW1wb3J0RmlsZV0pO1xuXG4gIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHNldEltcG9ydEZpbGUobnVsbCk7XG4gICAgc2V0VGV4dCgnJyk7XG4gICAgcHJvcHMub25DYW5jZWwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRGF0YVNldCgpIHtcbiAgICByZXR1cm4gKGlzSW1wb3J0VGV4dCAmJiB0ZXh0KSB8fCAoIWlzSW1wb3J0VGV4dCAmJiBpbXBvcnRGaWxlKTtcbiAgfVxuXG4gIC8vIENoZWNrIHZhbGlkaXR5IChhbmQgY2FsbCBjdXN0b20gdmFsaWRhdGlvbiBjYWxsYmFjayBpZiBwcmVzZW50KVxuICBjb25zdCB2YWxpZCA9XG4gICAgaXNEYXRhU2V0KCkgJiZcbiAgICBwYXJzZVJlc3VsdC52YWxpZCAmJlxuICAgICghcHJvcHMub25WYWxpZGF0ZSB8fCBwcm9wcy5vblZhbGlkYXRlKHBhcnNlUmVzdWx0LmZlYXR1cmVzKSk7XG5cbiAgcmV0dXJuIChcbiAgICA8SW1wb3J0Q29tcG9uZW50Q29udGVudD5cbiAgICAgIDxJbXBvcnRDb250ZW50PlxuICAgICAgICA8SW1wb3J0U2VsZWN0PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNJbXBvcnRUZXh0ID8gJ3JnYigwLCAxMDUsIDIxNyknIDogJ3JnYig5MCwgOTgsIDk0KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRJc0ltcG9ydFRleHQodHJ1ZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEltcG9ydCBGcm9tIFRleHRcbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzSW1wb3J0VGV4dCA/ICdyZ2IoOTAsIDk4LCA5NCknIDogJ3JnYigwLCAxMDUsIDIxNyknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNJbXBvcnRUZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgSW1wb3J0IEZyb20gRmlsZVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0ltcG9ydFNlbGVjdD5cbiAgICAgICAgPEltcG9ydEFyZWE+XG4gICAgICAgICAge2lzSW1wb3J0VGV4dCAmJiAoXG4gICAgICAgICAgICA8SW1wb3J0VGV4dEFyZWFcbiAgICAgICAgICAgICAgc3R5bGU9e2lzRGF0YVNldCgpICYmICFwYXJzZVJlc3VsdC52YWxpZCA/IHsgYm9yZGVyQ29sb3I6ICdyZ2IoMjIwLCA1MywgNjkpJyB9IDoge319XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHNldFRleHQoZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RleHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyFpc0ltcG9ydFRleHQgJiYgKFxuICAgICAgICAgICAgPERyb3B6b25lIG9uRHJvcD17KGltcG9ydEZpbGVzKSA9PiBzZXRJbXBvcnRGaWxlKGltcG9ydEZpbGVzWzBdKX0+XG4gICAgICAgICAgICAgIHsoeyBnZXRSb290UHJvcHMsIGdldElucHV0UHJvcHMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxJbXBvcnREcm9wQXJlYVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICBpc0RhdGFTZXQoKSAmJiAhcGFyc2VSZXN1bHQudmFsaWQgPyB7IGJvcmRlckNvbG9yOiAncmdiKDIyMCwgNTMsIDY5KScgfSA6IHt9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7Li4uZ2V0Um9vdFByb3BzKCl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHsuLi5nZXRJbnB1dFByb3BzKCl9IC8+XG4gICAgICAgICAgICAgICAgICB7aW1wb3J0RmlsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgeyFwYXJzZVJlc3VsdC52YWxpZCA/ICdJbnZhbGlkJyA6ICcnfSBTZWxlY3RlZCBGaWxlOiB7aW1wb3J0RmlsZS5uYW1lfS48YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICBEcmFnICduJyBkcm9wIG9yIGNsaWNrIGFnYWluIHRvIGNoYW5nZSB0aGUgZmlsZS5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHA+RHJhZyAnbicgZHJvcCB5b3VyIGZpbGUgaGVyZSwgb3IgY2xpY2sgdG8gc2VsZWN0IGEgZmlsZS48L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvSW1wb3J0RHJvcEFyZWE+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3B6b25lPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEltcG9ydEluZm8gc3R5bGU9e3sgY29sb3I6ICdyZ2IoMTMzLCAxMDAsIDQpJywgYmFja2dyb3VuZENvbG9yOiAncmdiKDI1NSwgMjQzLCAyMDUpJyB9fT5cbiAgICAgICAgICAgIHtpc0RhdGFTZXQoKSAmJlxuICAgICAgICAgICAgICAhcGFyc2VSZXN1bHQudmFsaWQgJiZcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwYXJzZVJlc3VsdC52YWxpZGF0aW9uRXJyb3JzLm1hcCgoZXJyLCBpKSA9PiA8ZGl2IGtleT17aX0+e2Vycn08L2Rpdj4pfVxuICAgICAgICAgIDwvSW1wb3J0SW5mbz5cbiAgICAgICAgPC9JbXBvcnRBcmVhPlxuICAgICAgICA8SW1wb3J0SW5mbz5cbiAgICAgICAgICBTdXBwb3J0ZWQgZm9ybWF0czpcbiAgICAgICAgICA8dWwgc3R5bGU9e3sgbWFyZ2luVG9wOiAnMCcgfX0+XG4gICAgICAgICAgICA8bGkga2V5PVwiZ2VvanNvblwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzk0NlwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkdlb0pTT04gU3BlY2lmaWNhdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBHZW9KU09OXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkga2V5PVwia21sXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2ttbC9cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJLTUwgU3BlY2lmaWNhdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBLTUxcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBrZXk9XCJ3a3RcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VsbC1rbm93bl90ZXh0XCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiV0tUXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFdLVFxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvSW1wb3J0SW5mbz5cbiAgICAgIDwvSW1wb3J0Q29udGVudD5cbiAgICAgIHtwcm9wcy5hZGRpdGlvbmFsSW5wdXRzIHx8IG51bGx9XG4gICAgICA8Rm9vdGVyUm93PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgaXNEYXRhU2V0KClcbiAgICAgICAgICAgICAgPyB7IGJhY2tncm91bmRDb2xvcjogdmFsaWQgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDIyMCwgNTMsIDY5KScgfVxuICAgICAgICAgICAgICA6IHsgYmFja2dyb3VuZENvbG9yOiAncmdiKDIwNiwgMjEyLCAyMTgpJyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpc2FibGVkPXshdmFsaWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMub25JbXBvcnQoe1xuICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgICAgICAgLy8gJEZsb3dGaXhNZSAtIGNhbid0IGJlIGNsaWNrZWQgaWYgaXQgaXMgaW52YWxpZCwgc28gZmVhdHVyZXMgd2lsbCBiZSB0aGVyZVxuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZmVhdHVyZXM6IHBhcnNlUmVzdWx0LmZlYXR1cmVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmbHVzaCgpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICBJbXBvcnQgR2VvbWV0cnlcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17Zmx1c2h9PkNhbmNlbDwvQnV0dG9uPlxuICAgICAgPC9Gb290ZXJSb3c+XG4gICAgPC9JbXBvcnRDb21wb25lbnRDb250ZW50PlxuICApO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/import-modal.js b/modules/editor/dist-es6/import-modal.js new file mode 100644 index 000000000..89075c898 --- /dev/null +++ b/modules/editor/dist-es6/import-modal.js @@ -0,0 +1,32 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImportModal = ImportModal; + +var React = _interopRequireWildcard(require("react")); + +var _importComponent = require("./import-component"); + +var _editorModal = require("./editor-modal"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* eslint-env browser */ +function ImportModal(props) { + return /*#__PURE__*/React.createElement(_editorModal.EditorModal, { + onClose: props.onClose, + title: 'Import', + content: /*#__PURE__*/React.createElement(_importComponent.ImportComponent, { + onImport: props.onImport, + onCancel: props.onClose, + additionalInputs: props.additionalInputs + }) + }); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnQtbW9kYWwudHN4Il0sIm5hbWVzIjpbIkltcG9ydE1vZGFsIiwicHJvcHMiLCJvbkNsb3NlIiwib25JbXBvcnQiLCJhZGRpdGlvbmFsSW5wdXRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSkE7QUFZTyxTQUFTQSxXQUFULENBQXFCQyxLQUFyQixFQUE4QztBQUNuRCxzQkFDRSxvQkFBQyx3QkFBRDtBQUNFLElBQUEsT0FBTyxFQUFFQSxLQUFLLENBQUNDLE9BRGpCO0FBRUUsSUFBQSxLQUFLLEVBQUUsUUFGVDtBQUdFLElBQUEsT0FBTyxlQUNMLG9CQUFDLGdDQUFEO0FBQ0UsTUFBQSxRQUFRLEVBQUVELEtBQUssQ0FBQ0UsUUFEbEI7QUFFRSxNQUFBLFFBQVEsRUFBRUYsS0FBSyxDQUFDQyxPQUZsQjtBQUdFLE1BQUEsZ0JBQWdCLEVBQUVELEtBQUssQ0FBQ0c7QUFIMUI7QUFKSixJQURGO0FBYUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW1wb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9pbXBvcnQtY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRvck1vZGFsIH0gZnJvbSAnLi9lZGl0b3ItbW9kYWwnO1xuXG5leHBvcnQgdHlwZSBJbXBvcnRNb2RhbFByb3BzID0ge1xuICBvbkltcG9ydDogKGFyZzA6IGFueSkgPT4gdW5rbm93bjtcbiAgb25DbG9zZTogKCkgPT4gdW5rbm93bjtcbiAgYWRkaXRpb25hbElucHV0cz86IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBJbXBvcnRNb2RhbChwcm9wczogSW1wb3J0TW9kYWxQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxFZGl0b3JNb2RhbFxuICAgICAgb25DbG9zZT17cHJvcHMub25DbG9zZX1cbiAgICAgIHRpdGxlPXsnSW1wb3J0J31cbiAgICAgIGNvbnRlbnQ9e1xuICAgICAgICA8SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgb25JbXBvcnQ9e3Byb3BzLm9uSW1wb3J0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dHM9e3Byb3BzLmFkZGl0aW9uYWxJbnB1dHN9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/editor/dist-es6/index.js b/modules/editor/dist-es6/index.js new file mode 100644 index 000000000..3495f29fd --- /dev/null +++ b/modules/editor/dist-es6/index.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Toolbox", { + enumerable: true, + get: function get() { + return _toolbox.Toolbox; + } +}); +Object.defineProperty(exports, "ExportModal", { + enumerable: true, + get: function get() { + return _exportModal.ExportModal; + } +}); +Object.defineProperty(exports, "ExportComponent", { + enumerable: true, + get: function get() { + return _exportComponent.ExportComponent; + } +}); +Object.defineProperty(exports, "ImportModal", { + enumerable: true, + get: function get() { + return _importModal.ImportModal; + } +}); +Object.defineProperty(exports, "ImportComponent", { + enumerable: true, + get: function get() { + return _importComponent.ImportComponent; + } +}); + +var _toolbox = require("./toolbox"); + +var _exportModal = require("./export-modal"); + +var _exportComponent = require("./export-component"); + +var _importModal = require("./import-modal"); + +var _importComponent = require("./import-component"); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRvb2xib3ggfSBmcm9tICcuL3Rvb2xib3gnO1xuZXhwb3J0IHsgRXhwb3J0TW9kYWwgfSBmcm9tICcuL2V4cG9ydC1tb2RhbCc7XG5leHBvcnQgeyBFeHBvcnRDb21wb25lbnQgfSBmcm9tICcuL2V4cG9ydC1jb21wb25lbnQnO1xuZXhwb3J0IHsgSW1wb3J0TW9kYWwgfSBmcm9tICcuL2ltcG9ydC1tb2RhbCc7XG5leHBvcnQgeyBJbXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2ltcG9ydC1jb21wb25lbnQnO1xuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/lib/exporter.js b/modules/editor/dist-es6/lib/exporter.js new file mode 100644 index 000000000..3138e043b --- /dev/null +++ b/modules/editor/dist-es6/lib/exporter.js @@ -0,0 +1,184 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toGeoJson = toGeoJson; +exports.toKml = toKml; +exports.toWkt = toWkt; +exports.toStats = toStats; + +var _tokml = _interopRequireDefault(require("@maphubs/tokml")); + +var _wellknown = require("wellknown"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toGeoJson(geoJson, filename) { + return { + data: JSON.stringify(geoJson, null, 2), + filename: "".concat(filename, ".geojson"), + mimetype: 'application/json' + }; +} + +function toKml(geoJson, filename) { + // For some reason, google maps doesn't surface id unless it is in the properties + // So, put it also in properties + if (geoJson.type === 'FeatureCollection') { + geoJson.features.forEach(function (f) { + f.properties = f.properties || {}; + }); + } + + var kmlString = (0, _tokml["default"])(geoJson); // kmlString = addIdToKml(geoJson, kmlString); + + return { + data: kmlString, + filename: "".concat(filename, ".kml"), + mimetype: 'application/xml' + }; +} + +function toWkt(geoJson, filename) { + var wkt = ''; + + if (geoJson.type === 'Feature') { + // @ts-ignore + wkt = (0, _wellknown.stringify)(geoJson); + } else { + // feature collection + wkt = ''; + + var _iterator = _createForOfIteratorHelper(geoJson.features), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + // @ts-ignore + wkt += "".concat((0, _wellknown.stringify)(feature), "\n"); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (wkt.length > 0) { + wkt = wkt.substring(0, wkt.length - 1); + } + } + + return { + data: wkt, + filename: "".concat(filename, ".wkt"), + mimetype: 'text/plain' + }; +} + +function toStats(geoJson, filename) { + var pointCount = 0; + var ringCount = 0; + var polygonCount = 0; + var featureCount = 0; + + if (geoJson.type === 'Feature') { + var polygonStats = getPolygonalStats(geoJson.geometry); + pointCount = polygonStats.pointCount; + ringCount = polygonStats.ringCount; + polygonCount = polygonStats.polygonCount; + featureCount = 1; + } else { + var _iterator2 = _createForOfIteratorHelper(geoJson.features), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var feature = _step2.value; + + var _polygonStats = getPolygonalStats(feature.geometry); + + pointCount += _polygonStats.pointCount; + ringCount += _polygonStats.ringCount; + polygonCount += _polygonStats.polygonCount; + featureCount++; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + var stats = "Features: ".concat(featureCount, "\nPolygons: ").concat(polygonCount, "\nRings: ").concat(ringCount, "\nPoints: ").concat(pointCount); + return { + data: stats, + filename: "".concat(filename, ".txt"), + mimetype: 'text/plain' + }; +} + +function getPolygonalStats(geometry) { + if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') { + return { + pointCount: -1, + ringCount: -1, + polygonCount: -1 + }; + } + + var polygonal = geometry; + var pointCount = 0; + var ringCount = 0; + var polygonCount = 0; + + var _iterator3 = _createForOfIteratorHelper(polygonal.coordinates), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var ringOrPolygon = _step3.value; + + if (geometry.type === 'Polygon') { + polygonCount = 1; + ringCount++; + pointCount += ringOrPolygon.length; + } else if (geometry.type === 'MultiPolygon') { + polygonCount++; + + var _iterator4 = _createForOfIteratorHelper(ringOrPolygon), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var ring = _step4.value; + ringCount++; + pointCount += ring.length; + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + return { + pointCount: pointCount, + ringCount: ringCount, + polygonCount: polygonCount + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXhwb3J0ZXIudHMiXSwibmFtZXMiOlsidG9HZW9Kc29uIiwiZ2VvSnNvbiIsImZpbGVuYW1lIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtaW1ldHlwZSIsInRvS21sIiwidHlwZSIsImZlYXR1cmVzIiwiZm9yRWFjaCIsImYiLCJwcm9wZXJ0aWVzIiwia21sU3RyaW5nIiwidG9Xa3QiLCJ3a3QiLCJmZWF0dXJlIiwibGVuZ3RoIiwic3Vic3RyaW5nIiwidG9TdGF0cyIsInBvaW50Q291bnQiLCJyaW5nQ291bnQiLCJwb2x5Z29uQ291bnQiLCJmZWF0dXJlQ291bnQiLCJwb2x5Z29uU3RhdHMiLCJnZXRQb2x5Z29uYWxTdGF0cyIsImdlb21ldHJ5Iiwic3RhdHMiLCJwb2x5Z29uYWwiLCJjb29yZGluYXRlcyIsInJpbmdPclBvbHlnb24iLCJyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFVTyxTQUFTQSxTQUFULENBQW1CQyxPQUFuQixFQUF3Q0MsUUFBeEMsRUFBNEU7QUFDakYsU0FBTztBQUNMQyxJQUFBQSxJQUFJLEVBQUVDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixPQUFmLEVBQXdCLElBQXhCLEVBQThCLENBQTlCLENBREQ7QUFFTEMsSUFBQUEsUUFBUSxZQUFLQSxRQUFMLGFBRkg7QUFHTEksSUFBQUEsUUFBUSxFQUFFO0FBSEwsR0FBUDtBQUtEOztBQUVNLFNBQVNDLEtBQVQsQ0FBZU4sT0FBZixFQUFvQ0MsUUFBcEMsRUFBd0U7QUFDN0U7QUFDQTtBQUNBLE1BQUlELE9BQU8sQ0FBQ08sSUFBUixLQUFpQixtQkFBckIsRUFBMEM7QUFDeENQLElBQUFBLE9BQU8sQ0FBQ1EsUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsVUFBQ0MsQ0FBRCxFQUFPO0FBQzlCQSxNQUFBQSxDQUFDLENBQUNDLFVBQUYsR0FBZUQsQ0FBQyxDQUFDQyxVQUFGLElBQWdCLEVBQS9CO0FBQ0QsS0FG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YXBodWJzL3Rva21sJztcbmltcG9ydCB7IHN0cmluZ2lmeSBhcyBzdHJpbmdpZnlXa3QgfSBmcm9tICd3ZWxsa25vd24nO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQW55R2VvSnNvbiwgR2VvbWV0cnksIFBvbHlnb25hbEdlb21ldHJ5IH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuZXhwb3J0IHR5cGUgRXhwb3J0UGFyYW1ldGVycyA9IHtcbiAgZGF0YTogc3RyaW5nO1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBtaW1ldHlwZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvR2VvSnNvbihnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIHJldHVybiB7XG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZ2VvSnNvbiwgbnVsbCwgMiksXG4gICAgZmlsZW5hbWU6IGAke2ZpbGVuYW1lfS5nZW9qc29uYCxcbiAgICBtaW1ldHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9LbWwoZ2VvSnNvbjogQW55R2VvSnNvbiwgZmlsZW5hbWU6IHN0cmluZyk6IEV4cG9ydFBhcmFtZXRlcnMge1xuICAvLyBGb3Igc29tZSByZWFzb24sIGdvb2dsZSBtYXBzIGRvZXNuJ3Qgc3VyZmFjZSBpZCB1bmxlc3MgaXQgaXMgaW4gdGhlIHByb3BlcnRpZXNcbiAgLy8gU28sIHB1dCBpdCBhbHNvIGluIHByb3BlcnRpZXNcbiAgaWYgKGdlb0pzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgIGdlb0pzb24uZmVhdHVyZXMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZi5wcm9wZXJ0aWVzID0gZi5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qga21sU3RyaW5nID0gdG9rbWwoZ2VvSnNvbik7XG5cbiAgLy8ga21sU3RyaW5nID0gYWRkSWRUb0ttbChnZW9Kc29uLCBrbWxTdHJpbmcpO1xuXG4gIHJldHVybiB7XG4gICAgZGF0YToga21sU3RyaW5nLFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0ua21sYCxcbiAgICBtaW1ldHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1drdChnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIGxldCB3a3QgPSAnJztcbiAgaWYgKGdlb0pzb24udHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHdrdCA9IHN0cmluZ2lmeVdrdChnZW9Kc29uKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBmZWF0dXJlIGNvbGxlY3Rpb25cbiAgICB3a3QgPSAnJztcbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZ2VvSnNvbi5mZWF0dXJlcykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgd2t0ICs9IGAke3N0cmluZ2lmeVdrdChmZWF0dXJlKX1cXG5gO1xuICAgIH1cbiAgICBpZiAod2t0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHdrdCA9IHdrdC5zdWJzdHJpbmcoMCwgd2t0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogd2t0LFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0ud2t0YCxcbiAgICBtaW1ldHlwZTogJ3RleHQvcGxhaW4nLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9TdGF0cyhnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIGxldCBwb2ludENvdW50ID0gMDtcbiAgbGV0IHJpbmdDb3VudCA9IDA7XG4gIGxldCBwb2x5Z29uQ291bnQgPSAwO1xuICBsZXQgZmVhdHVyZUNvdW50ID0gMDtcblxuICBpZiAoZ2VvSnNvbi50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICBjb25zdCBwb2x5Z29uU3RhdHMgPSBnZXRQb2x5Z29uYWxTdGF0cyhnZW9Kc29uLmdlb21ldHJ5KTtcbiAgICAoeyBwb2ludENvdW50LCByaW5nQ291bnQsIHBvbHlnb25Db3VudCB9ID0gcG9seWdvblN0YXRzKTtcbiAgICBmZWF0dXJlQ291bnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBnZW9Kc29uLmZlYXR1cmVzKSB7XG4gICAgICBjb25zdCBwb2x5Z29uU3RhdHMgPSBnZXRQb2x5Z29uYWxTdGF0cyhmZWF0dXJlLmdlb21ldHJ5KTtcbiAgICAgIHBvaW50Q291bnQgKz0gcG9seWdvblN0YXRzLnBvaW50Q291bnQ7XG4gICAgICByaW5nQ291bnQgKz0gcG9seWdvblN0YXRzLnJpbmdDb3VudDtcbiAgICAgIHBvbHlnb25Db3VudCArPSBwb2x5Z29uU3RhdHMucG9seWdvbkNvdW50O1xuICAgICAgZmVhdHVyZUNvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSBgRmVhdHVyZXM6ICR7ZmVhdHVyZUNvdW50fVxuUG9seWdvbnM6ICR7cG9seWdvbkNvdW50fVxuUmluZ3M6ICR7cmluZ0NvdW50fVxuUG9pbnRzOiAke3BvaW50Q291bnR9YDtcblxuICByZXR1cm4ge1xuICAgIGRhdGE6IHN0YXRzLFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0udHh0YCxcbiAgICBtaW1ldHlwZTogJ3RleHQvcGxhaW4nLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQb2x5Z29uYWxTdGF0cyhnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgaWYgKGdlb21ldHJ5LnR5cGUgIT09ICdQb2x5Z29uJyAmJiBnZW9tZXRyeS50eXBlICE9PSAnTXVsdGlQb2x5Z29uJykge1xuICAgIHJldHVybiB7XG4gICAgICBwb2ludENvdW50OiAtMSxcbiAgICAgIHJpbmdDb3VudDogLTEsXG4gICAgICBwb2x5Z29uQ291bnQ6IC0xLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwb2x5Z29uYWw6IFBvbHlnb25hbEdlb21ldHJ5ID0gZ2VvbWV0cnk7XG5cbiAgbGV0IHBvaW50Q291bnQgPSAwO1xuICBsZXQgcmluZ0NvdW50ID0gMDtcbiAgbGV0IHBvbHlnb25Db3VudCA9IDA7XG4gIGZvciAoY29uc3QgcmluZ09yUG9seWdvbiBvZiBwb2x5Z29uYWwuY29vcmRpbmF0ZXMpIHtcbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICBwb2x5Z29uQ291bnQgPSAxO1xuICAgICAgcmluZ0NvdW50Kys7XG4gICAgICBwb2ludENvdW50ICs9IHJpbmdPclBvbHlnb24ubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcbiAgICAgIHBvbHlnb25Db3VudCsrO1xuICAgICAgZm9yIChjb25zdCByaW5nIG9mIHJpbmdPclBvbHlnb24pIHtcbiAgICAgICAgcmluZ0NvdW50Kys7XG4gICAgICAgIHBvaW50Q291bnQgKz0gcmluZy5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnRDb3VudCxcbiAgICByaW5nQ291bnQsXG4gICAgcG9seWdvbkNvdW50LFxuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/lib/importer.js b/modules/editor/dist-es6/lib/importer.js new file mode 100644 index 000000000..380ae7377 --- /dev/null +++ b/modules/editor/dist-es6/lib/importer.js @@ -0,0 +1,211 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseImport = parseImport; + +var _togeojson = require("@tmcw/togeojson"); + +var _core = require("@loaders.gl/core"); + +var _wkt = require("@loaders.gl/wkt"); + +/* eslint-env browser */ +function shouldTryGeoJson(data) { + return data.startsWith('{'); +} + +function shouldTryKml(data) { + return data.startsWith('<'); +} + +function shouldTryWkt(data) { + return data.startsWith('POINT') || data.startsWith('LINESTRING') || data.startsWith('POLYGON') || data.startsWith('MULTIPOINT') || data.startsWith('MULTILINESTRING') || data.startsWith('MULTIPOLYGON'); +} + +function getCleanedFeatures(geojson) { + if (geojson.type !== 'FeatureCollection' && geojson.type !== 'Feature') { + throw Error("GeoJSON must have type of 'Feature' or 'FeatureCollection'"); + } + + var features = geojson.type === 'FeatureCollection' ? geojson.features : [geojson]; + return features.map(getCleanedFeature); +} + +function getCleanedFeature(feature) { + var id = feature.id; // reduce null-checking + + var properties = feature.properties || {}; + var geometry = feature.geometry; // @ts-ignore + + if (geometry.type === 'GeometryCollection' && geometry.geometries.length === 1) { + // There's only one geometry + // @ts-ignore + geometry = geometry.geometries[0]; // @ts-ignore + } else if (geometry.type === 'GeometryCollection' && geometry.geometries.length > 1) { + // @ts-ignore + var types = new Set(geometry.geometries.map(function (g) { + return g.type; + })); + + if (types.size === 1) { + // See if it can be combined into a Multi* geometry + var type = types.values().next().value; + + if (type === 'Polygon') { + // Combine all the Polygons into a single MultiPolygon + geometry = { + type: 'MultiPolygon', + // @ts-ignore + coordinates: geometry.geometries.map(function (g) { + return g.coordinates; + }) + }; + } else if (type === 'LineString') { + // Combine all the LineStrings into a single MultiLineString + geometry = { + type: 'MultiLineString', + // @ts-ignore + coordinates: geometry.geometries.map(function (g) { + return g.coordinates; + }) + }; + } + } else { + // Mixed geometry types, we don't yet handle it + throw Error('GeometryCollection geometry type not yet supported'); + } + } // @ts-ignore + + + return { + type: 'Feature', + id: id, + geometry: geometry, + properties: properties + }; +} + +function parseImportString(data) { + data = data.trim(); + var validData; + var validationErrors = []; + + if (shouldTryGeoJson(data)) { + // Parse as GeoJSON + try { + var parsed = JSON.parse(data); + validData = { + valid: true, + type: 'GeoJSON', + features: getCleanedFeatures(parsed) + }; + } catch (err) { + validationErrors.push('Error parsing GeoJSON'); + validationErrors.push(err.toString()); + } + } else if (shouldTryKml(data)) { + // Parse as KML + var xml = new DOMParser().parseFromString(data, 'text/xml'); + + try { + var _parsed = (0, _togeojson.kml)(xml); + /* + TODO: Revisit using loaders.gl/kml for this later + const parsed_ = parseSync(data, KMLasGeoJsonLoader); + // This is changing the coordinates to floats, because in loaders.gl/kml 2.1.1 they are returned as strings. + const parsed = { + ...parsed_, + features: parsed_.features.map(f => ({ + ...f, + geometry: { + ...f.geometry, + coordinates: f.geometry.coordinates.map(coords => coords.map(triple => triple.map(s => Number.parseFloat(s)))) + } + })) + }; + */ + + + var isFeature = _parsed && _parsed.type === 'Feature'; + var isFeatureCollectionWithFeatures = _parsed && _parsed.type === 'FeatureCollection' && _parsed.features.length > 0; + var isValid = isFeature || isFeatureCollectionWithFeatures; + + if (isValid) { + validData = { + valid: true, + type: 'KML', + features: getCleanedFeatures(_parsed) + }; + } else { + validationErrors.push('Invalid KML'); + } + } catch (err) { + validationErrors.push('Error parsing KML'); + validationErrors.push(err.toString()); + } + } else if (shouldTryWkt(data)) { + try { + var _parsed2 = (0, _core.parseSync)(data, _wkt.WKTLoader); + + if (_parsed2) { + validData = { + valid: true, + type: 'WKT', + features: [{ + type: 'Feature', + properties: {}, + geometry: _parsed2 + }] + }; + } else { + validationErrors.push('Invalid WKT'); + } + } catch (err) { + validationErrors.push('Error parsing WKT'); + validationErrors.push(err.toString()); + } + } else { + validationErrors.push('Unknown data format'); + } + + if (validData) { + return Promise.resolve(validData); + } + + return Promise.resolve({ + valid: false, + validationErrors: validationErrors + }); +} + +function parseImportFile(file) { + return new Promise(function (resolve, reject) { + var reader = new FileReader(); + + reader.onload = function () { + var fileAsString = reader.result; + resolve(parseImportString(fileAsString)); + }; + + reader.onabort = function () { + reject(Error('file reading was aborted')); + }; + + reader.onerror = function () { + reject(Error('file reading has failed')); + }; + + reader.readAsText(file); + }); +} + +function parseImport(data) { + if (typeof data === 'string') { + return parseImportString(data); + } + + return parseImportFile(data); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1wb3J0ZXIudHMiXSwibmFtZXMiOlsic2hvdWxkVHJ5R2VvSnNvbiIsImRhdGEiLCJzdGFydHNXaXRoIiwic2hvdWxkVHJ5S21sIiwic2hvdWxkVHJ5V2t0IiwiZ2V0Q2xlYW5lZEZlYXR1cmVzIiwiZ2VvanNvbiIsInR5cGUiLCJFcnJvciIsImZlYXR1cmVzIiwibWFwIiwiZ2V0Q2xlYW5lZEZlYXR1cmUiLCJmZWF0dXJlIiwiaWQiLCJwcm9wZXJ0aWVzIiwiZ2VvbWV0cnkiLCJnZW9tZXRyaWVzIiwibGVuZ3RoIiwidHlwZXMiLCJTZXQiLCJnIiwic2l6ZSIsInZhbHVlcyIsIm5leHQiLCJ2YWx1ZSIsImNvb3JkaW5hdGVzIiwicGFyc2VJbXBvcnRTdHJpbmciLCJ0cmltIiwidmFsaWREYXRhIiwidmFsaWRhdGlvbkVycm9ycyIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsInZhbGlkIiwiZXJyIiwicHVzaCIsInRvU3RyaW5nIiwieG1sIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiaXNGZWF0dXJlIiwiaXNGZWF0dXJlQ29sbGVjdGlvbldpdGhGZWF0dXJlcyIsImlzVmFsaWQiLCJXS1RMb2FkZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhcnNlSW1wb3J0RmlsZSIsImZpbGUiLCJyZWplY3QiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiZmlsZUFzU3RyaW5nIiwicmVzdWx0Iiwib25hYm9ydCIsIm9uZXJyb3IiLCJyZWFkQXNUZXh0IiwicGFyc2VJbXBvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFFQTs7QUFDQTs7QUFMQTtBQXlCQSxTQUFTQSxnQkFBVCxDQUEwQkMsSUFBMUIsRUFBaUQ7QUFDL0MsU0FBT0EsSUFBSSxDQUFDQyxVQUFMLENBQWdCLEdBQWhCLENBQVA7QUFDRDs7QUFFRCxTQUFTQyxZQUFULENBQXNCRixJQUF0QixFQUE2QztBQUMzQyxTQUFPQSxJQUFJLENBQUND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Q0FBQ3hDLEtBQUssQ0FBQyx5QkFBRCxDQUFOLENBQU47QUFDRCxLQUZEOztBQUlBeUMsSUFBQUEsTUFBTSxDQUFDTyxVQUFQLENBQWtCVCxJQUFsQjtBQUNELEdBZE0sQ0FBUDtBQWVEOztBQUVNLFNBQVNVLFdBQVQsQ0FBcUJ4RCxJQUFyQixFQUErRDtBQUNwRSxNQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDNUIsV0FBT3lCLGlCQUFpQixDQUFDekIsSUFBRCxDQUF4QjtBQUNEOztBQUNELFNBQU82QyxlQUFlLENBQUM3QyxJQUFELENBQXRCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsga21sIH0gZnJvbSAnQHRtY3cvdG9nZW9qc29uJztcblxuaW1wb3J0IHsgcGFyc2VTeW5jIH0gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQgeyBXS1RMb2FkZXIgfSBmcm9tICdAbG9hZGVycy5nbC93a3QnO1xuXG4vLyBJZiB3ZSB3YW50IHRvIHN1cHBvcnQgbm9kZSAtLSB3ZSBuZWVkIHRvIGltcG9ydCB4bWxkb20uXG4vLyBGb3Igbm93LCB3ZSdyZSBvbmx5IHN1cHBvcnRpbmcgYnJvd3NlciBzbyB3ZSBjYW4gbGVhdmUgaXQgb3V0LlxuLy8gaW1wb3J0IHsgRE9NUGFyc2VyIH0gZnJvbSAneG1sZG9tJztcbmltcG9ydCB7IEFueUdlb0pzb24sIEZlYXR1cmUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5leHBvcnQgdHlwZSBWYWxpZEltcG9ydERhdGEgPSB7XG4gIHZhbGlkOiB0cnVlO1xuICB0eXBlOiAnR2VvSlNPTicgfCAnS01MJyB8ICdXS1QnO1xuICBmZWF0dXJlczogRmVhdHVyZVtdO1xufTtcblxuZXhwb3J0IHR5cGUgSW52YWxpZEltcG9ydERhdGEgPSB7XG4gIHZhbGlkOiBmYWxzZTtcbiAgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBJbXBvcnREYXRhID0gVmFsaWRJbXBvcnREYXRhIHwgSW52YWxpZEltcG9ydERhdGE7XG5cbmZ1bmN0aW9uIHNob3VsZFRyeUdlb0pzb24oZGF0YTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBkYXRhLnN0YXJ0c1dpdGgoJ3snKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVHJ5S21sKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZGF0YS5zdGFydHNXaXRoKCc8Jyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFRyeVdrdChkYXRhOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ1BPSU5UJykgfHxcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ0xJTkVTVFJJTkcnKSB8fFxuICAgIGRhdGEuc3RhcnRzV2l0aCgnUE9MWUdPTicpIHx8XG4gICAgZGF0YS5zdGFydHNXaXRoKCdNVUxUSVBPSU5UJykgfHxcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ01VTFRJTElORVNUUklORycpIHx8XG4gICAgZGF0YS5zdGFydHNXaXRoKCdNVUxUSVBPTFlHT04nKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRDbGVhbmVkRmVhdHVyZXMoZ2VvanNvbjogQW55R2VvSnNvbik6IEZlYXR1cmVbXSB7XG4gIGlmIChnZW9qc29uLnR5cGUgIT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgZ2VvanNvbi50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICB0aHJvdyBFcnJvcihgR2VvSlNPTiBtdXN0IGhhdmUgdHlwZSBvZiAnRmVhdHVyZScgb3IgJ0ZlYXR1cmVDb2xsZWN0aW9uJ2ApO1xuICB9XG5cbiAgY29uc3QgZmVhdHVyZXM6IEZlYXR1cmVbXSA9IGdlb2pzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyA/IGdlb2pzb24uZmVhdHVyZXMgOiBbZ2VvanNvbl07XG5cbiAgcmV0dXJuIGZlYXR1cmVzLm1hcChnZXRDbGVhbmVkRmVhdHVyZSk7XG59XG5cbmZ1bmN0aW9uIGdldENsZWFuZWRGZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgY29uc3QgeyBpZCB9ID0gZmVhdHVyZTtcbiAgLy8gcmVkdWNlIG51bGwtY2hlY2tpbmdcbiAgY29uc3QgcHJvcGVydGllcyA9IGZlYXR1cmUucHJvcGVydGllcyB8fCB7fTtcblxuICBsZXQgZ2VvbWV0cnkgPSBmZWF0dXJlLmdlb21ldHJ5O1xuICAvLyBAdHMtaWdub3JlXG4gIGlmIChnZW9tZXRyeS50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJyAmJiBnZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRoZXJlJ3Mgb25seSBvbmUgZ2VvbWV0cnlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2VvbWV0cnkgPSBnZW9tZXRyeS5nZW9tZXRyaWVzWzBdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSBlbHNlIGlmIChnZW9tZXRyeS50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJyAmJiBnZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aCA+IDEpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdHlwZXMgPSBuZXcgU2V0KGdlb21ldHJ5Lmdlb21ldHJpZXMubWFwKChnKSA9PiBnLnR5cGUpKTtcbiAgICBpZiAodHlwZXMuc2l6ZSA9PT0gMSkge1xuICAgICAgLy8gU2VlIGlmIGl0IGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgTXVsdGkqIGdlb21ldHJ5XG4gICAgICBjb25zdCB0eXBlID0gdHlwZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgaWYgKHR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAvLyBDb21iaW5lIGFsbCB0aGUgUG9seWdvbnMgaW50byBhIHNpbmdsZSBNdWx0aVBvbHlnb25cbiAgICAgICAgZ2VvbWV0cnkgPSB7XG4gICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBnZW9tZXRyeS5nZW9tZXRyaWVzLm1hcCgoZykgPT4gZy5jb29yZGluYXRlcyksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgICAvLyBDb21iaW5lIGFsbCB0aGUgTGluZVN0cmluZ3MgaW50byBhIHNpbmdsZSBNdWx0aUxpbmVTdHJpbmdcbiAgICAgICAgZ2VvbWV0cnkgPSB7XG4gICAgICAgICAgdHlwZTogJ011bHRpTGluZVN0cmluZycsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBnZW9tZXRyeS5nZW9tZXRyaWVzLm1hcCgoZykgPT4gZy5jb29yZGluYXRlcyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1peGVkIGdlb21ldHJ5IHR5cGVzLCB3ZSBkb24ndCB5ZXQgaGFuZGxlIGl0XG4gICAgICB0aHJvdyBFcnJvcignR2VvbWV0cnlDb2xsZWN0aW9uIGdlb21ldHJ5IHR5cGUgbm90IHlldCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgIGlkLFxuICAgIGdlb21ldHJ5LFxuICAgIHByb3BlcnRpZXMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW1wb3J0U3RyaW5nKGRhdGE6IHN0cmluZyk6IFByb21pc2U8SW1wb3J0RGF0YT4ge1xuICBkYXRhID0gZGF0YS50cmltKCk7XG4gIGxldCB2YWxpZERhdGE6IFZhbGlkSW1wb3J0RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGlmIChzaG91bGRUcnlHZW9Kc29uKGRhdGEpKSB7XG4gICAgLy8gUGFyc2UgYXMgR2VvSlNPTlxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgdmFsaWREYXRhID0ge1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ0dlb0pTT04nLFxuICAgICAgICBmZWF0dXJlczogZ2V0Q2xlYW5lZEZlYXR1cmVzKHBhcnNlZCksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdFcnJvciBwYXJzaW5nIEdlb0pTT04nKTtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHNob3VsZFRyeUttbChkYXRhKSkge1xuICAgIC8vIFBhcnNlIGFzIEtNTFxuICAgIGNvbnN0IHhtbCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZGF0YSwgJ3RleHQveG1sJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0ga21sKHhtbCk7XG5cbiAgICAgIC8qXG4gICAgICBUT0RPOiBSZXZpc2l0IHVzaW5nIGxvYWRlcnMuZ2wva21sIGZvciB0aGlzIGxhdGVyXG4gICAgICBjb25zdCBwYXJzZWRfID0gcGFyc2VTeW5jKGRhdGEsIEtNTGFzR2VvSnNvbkxvYWRlcik7XG4gICAgICAvLyBUaGlzIGlzIGNoYW5naW5nIHRoZSBjb29yZGluYXRlcyB0byBmbG9hdHMsIGJlY2F1c2UgaW4gbG9hZGVycy5nbC9rbWwgMi4xLjEgdGhleSBhcmUgcmV0dXJuZWQgYXMgc3RyaW5ncy5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHtcbiAgICAgICAgLi4ucGFyc2VkXyxcbiAgICAgICAgZmVhdHVyZXM6IHBhcnNlZF8uZmVhdHVyZXMubWFwKGYgPT4gKHtcbiAgICAgICAgICAuLi5mLFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAuLi5mLmdlb21ldHJ5LFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGYuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubWFwKGNvb3JkcyA9PiBjb29yZHMubWFwKHRyaXBsZSA9PiB0cmlwbGUubWFwKHMgPT4gTnVtYmVyLnBhcnNlRmxvYXQocykpKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pKVxuICAgICAgfTtcbiAgICAgICovXG4gICAgICBjb25zdCBpc0ZlYXR1cmUgPSBwYXJzZWQgJiYgcGFyc2VkLnR5cGUgPT09ICdGZWF0dXJlJztcbiAgICAgIGNvbnN0IGlzRmVhdHVyZUNvbGxlY3Rpb25XaXRoRmVhdHVyZXMgPVxuICAgICAgICBwYXJzZWQgJiYgcGFyc2VkLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgcGFyc2VkLmZlYXR1cmVzLmxlbmd0aCA+IDA7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gaXNGZWF0dXJlIHx8IGlzRmVhdHVyZUNvbGxlY3Rpb25XaXRoRmVhdHVyZXM7XG4gICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICB2YWxpZERhdGEgPSB7XG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0tNTCcsXG4gICAgICAgICAgZmVhdHVyZXM6IGdldENsZWFuZWRGZWF0dXJlcyhwYXJzZWQpLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdJbnZhbGlkIEtNTCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdFcnJvciBwYXJzaW5nIEtNTCcpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2hvdWxkVHJ5V2t0KGRhdGEpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3luYyhkYXRhLCBXS1RMb2FkZXIpO1xuICAgICAgaWYgKHBhcnNlZCkge1xuICAgICAgICB2YWxpZERhdGEgPSB7XG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ1dLVCcsXG4gICAgICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IHBhcnNlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnSW52YWxpZCBXS1QnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnRXJyb3IgcGFyc2luZyBXS1QnKTtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnVW5rbm93biBkYXRhIGZvcm1hdCcpO1xuICB9XG5cbiAgaWYgKHZhbGlkRGF0YSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsaWREYXRhKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgdmFsaWRhdGlvbkVycm9ycyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW1wb3J0RmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTxJbXBvcnREYXRhPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZmlsZUFzU3RyaW5nOiBhbnkgPSByZWFkZXIucmVzdWx0O1xuICAgICAgcmVzb2x2ZShwYXJzZUltcG9ydFN0cmluZyhmaWxlQXNTdHJpbmcpKTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmFib3J0ID0gKCkgPT4ge1xuICAgICAgcmVqZWN0KEVycm9yKCdmaWxlIHJlYWRpbmcgd2FzIGFib3J0ZWQnKSk7XG4gICAgfTtcbiAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHJlamVjdChFcnJvcignZmlsZSByZWFkaW5nIGhhcyBmYWlsZWQnKSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW1wb3J0KGRhdGE6IHN0cmluZyB8IEZpbGUpOiBQcm9taXNlPEltcG9ydERhdGE+IHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUltcG9ydFN0cmluZyhkYXRhKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbXBvcnRGaWxlKGRhdGEpO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist-es6/toolbox.js b/modules/editor/dist-es6/toolbox.js new file mode 100644 index 000000000..1b5021e43 --- /dev/null +++ b/modules/editor/dist-es6/toolbox.js @@ -0,0 +1,334 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Toolbox = Toolbox; + +var React = _interopRequireWildcard(require("react")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _icon = require("./icon"); + +var _importModal = require("./import-modal"); + +var _exportModal = require("./export-modal"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row-reverse;\n position: absolute;\n top: 0;\n right: 0;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n position: relative;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n color: #fff;\n background: ", ";\n font-size: 1em;\n font-weight: 400;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n border: 1px solid transparent;\n border-radius: 0.25em;\n margin: 0.05em;\n padding: 0.1em 0.2em;\n :hover {\n background: rgb(128, 137, 133);\n }\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n position: absolute;\n display: flex;\n flex-direction: column;\n top: 10px;\n right: 10px;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var Tools = _styledComponents["default"].div(_templateObject()); + +var Button = _styledComponents["default"].button(_templateObject2(), function (_ref) { + var kind = _ref.kind, + active = _ref.active; + return kind === 'danger' ? 'rgb(180, 40, 40)' : active ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)'; +}); + +var SubToolsContainer = _styledComponents["default"].div(_templateObject3()); + +var SubTools = _styledComponents["default"].div(_templateObject4()); + +var MODE_GROUPS = [{ + modes: [{ + mode: _editModes.ViewMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "pointer" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawPointMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "map-pin" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawLineStringMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "stats" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawPolygonMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-polygon" + }) + }, { + mode: _editModes.DrawRectangleMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "rectangle" + }) + }, { + mode: _editModes.DrawCircleFromCenterMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "circle" + }) + }] +}, { + modes: [{ + mode: _editModes.MeasureDistanceMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "ruler" + }) + }, { + mode: _editModes.MeasureAngleMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-triangle" + }) + }, { + mode: _editModes.MeasureAreaMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-square" + }) + }] +}]; + +function ModeButton(_ref2) { + var buttonConfig = _ref2.buttonConfig, + mode = _ref2.mode, + onClick = _ref2.onClick; + return /*#__PURE__*/React.createElement(Button, { + active: buttonConfig.mode === mode, + onClick: onClick + }, buttonConfig.content); +} + +function ModeGroupButtons(_ref3) { + var modeGroup = _ref3.modeGroup, + mode = _ref3.mode, + onSetMode = _ref3.onSetMode; + + var _React$useState = React.useState(false), + _React$useState2 = _slicedToArray(_React$useState, 2), + expanded = _React$useState2[0], + setExpanded = _React$useState2[1]; + + var modes = modeGroup.modes; + var subTools = null; + + if (expanded) { + subTools = /*#__PURE__*/React.createElement(SubTools, null, modes.map(function (buttonConfig, i) { + return /*#__PURE__*/React.createElement(ModeButton, { + key: i, + buttonConfig: buttonConfig, + mode: mode, + onClick: function onClick() { + onSetMode(function () { + return buttonConfig.mode; + }); + setExpanded(false); + } + }); + })); + } // Get the button config if it is active otherwise, choose the first + + + var buttonConfig = modes.find(function (m) { + return m.mode === mode; + }) || modes[0]; + return /*#__PURE__*/React.createElement(SubToolsContainer, null, subTools, /*#__PURE__*/React.createElement(ModeButton, { + buttonConfig: buttonConfig, + mode: mode, + onClick: function onClick() { + onSetMode(function () { + return buttonConfig.mode; + }); + setExpanded(true); + } + })); +} + +function Toolbox(_ref4) { + var mode = _ref4.mode, + modeConfig = _ref4.modeConfig, + geoJson = _ref4.geoJson, + onSetMode = _ref4.onSetMode, + onSetModeConfig = _ref4.onSetModeConfig, + onSetGeoJson = _ref4.onSetGeoJson, + _onImport = _ref4.onImport; + + var _React$useState3 = React.useState(false), + _React$useState4 = _slicedToArray(_React$useState3, 2), + showConfig = _React$useState4[0], + setShowConfig = _React$useState4[1]; + + var _React$useState5 = React.useState(false), + _React$useState6 = _slicedToArray(_React$useState5, 2), + showImport = _React$useState6[0], + setShowImport = _React$useState6[1]; + + var _React$useState7 = React.useState(false), + _React$useState8 = _slicedToArray(_React$useState7, 2), + showExport = _React$useState8[0], + setShowExport = _React$useState8[1]; + + var _React$useState9 = React.useState(false), + _React$useState10 = _slicedToArray(_React$useState9, 2), + showClearConfirmation = _React$useState10[0], + setShowClearConfirmation = _React$useState10[1]; + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tools, null, MODE_GROUPS.map(function (modeGroup, i) { + return /*#__PURE__*/React.createElement(ModeGroupButtons, { + key: i, + modeGroup: modeGroup, + mode: mode, + onSetMode: onSetMode + }); + }), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowExport(true); + }, + title: "Export" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "export" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowImport(true); + }, + title: "Import" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "import" + })), /*#__PURE__*/React.createElement(SubToolsContainer, null, showConfig && /*#__PURE__*/React.createElement(SubTools, null, /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowConfig(false); + } + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "chevron-right" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'difference' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'difference' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "minus-front" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'union' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'union' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "unite" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'intersection' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'intersection' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "intersect" + }))), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowConfig(true); + } + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "cog" + }))), /*#__PURE__*/React.createElement(SubToolsContainer, null, showClearConfirmation && /*#__PURE__*/React.createElement(SubTools, null, /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + onSetGeoJson({ + type: 'FeatureCollection', + features: [] + }); + setShowClearConfirmation(false); + }, + kind: "danger", + title: "Clear all features" + }, "Clear all features ", /*#__PURE__*/React.createElement(_icon.Icon, { + name: "trash" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowClearConfirmation(false); + } + }, "Cancel")), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowClearConfirmation(true); + }, + title: "Clear" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "trash" + })))), showImport && /*#__PURE__*/React.createElement(_importModal.ImportModal, { + onImport: function onImport(imported) { + _onImport(imported); + + setShowImport(false); + }, + onClose: function onClose() { + return setShowImport(false); + } + }), showExport && /*#__PURE__*/React.createElement(_exportModal.ExportModal, { + geoJson: geoJson, + onClose: function onClose() { + return setShowExport(false); + } + })); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b29sYm94LnRzeCJdLCJuYW1lcyI6WyJUb29scyIsInN0eWxlZCIsImRpdiIsIkJ1dHRvbiIsImJ1dHRvbiIsImtpbmQiLCJhY3RpdmUiLCJTdWJUb29sc0NvbnRhaW5lciIsIlN1YlRvb2xzIiwiTU9ERV9HUk9VUFMiLCJtb2RlcyIsIm1vZGUiLCJWaWV3TW9kZSIsImNvbnRlbnQiLCJEcmF3UG9pbnRNb2RlIiwiRHJhd0xpbmVTdHJpbmdNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiRHJhd1JlY3RhbmdsZU1vZGUiLCJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJNZWFzdXJlRGlzdGFuY2VNb2RlIiwiTWVhc3VyZUFuZ2xlTW9kZSIsIk1lYXN1cmVBcmVhTW9kZSIsIk1vZGVCdXR0b24iLCJidXR0b25Db25maWciLCJvbkNsaWNrIiwiTW9kZUdyb3VwQnV0dG9ucyIsIm1vZGVHcm91cCIsIm9uU2V0TW9kZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJleHBhbmRlZCIsInNldEV4cGFuZGVkIiwic3ViVG9vbHMiLCJtYXAiLCJpIiwiZmluZCIsIm0iLCJUb29sYm94IiwibW9kZUNvbmZpZyIsImdlb0pzb24iLCJvblNldE1vZGVDb25maWciLCJvblNldEdlb0pzb24iLCJvbkltcG9ydCIsInNob3dDb25maWciLCJzZXRTaG93Q29uZmlnIiwic2hvd0ltcG9ydCIsInNldFNob3dJbXBvcnQiLCJzaG93RXhwb3J0Iiwic2V0U2hvd0V4cG9ydCIsInNob3dDbGVhckNvbmZpcm1hdGlvbiIsInNldFNob3dDbGVhckNvbmZpcm1hdGlvbiIsImJvb2xlYW5PcGVyYXRpb24iLCJ0eXBlIiwiZmVhdHVyZXMiLCJpbXBvcnRlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFB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Q0Usb0JBQUMsVUFBRDtBQUFNLElBQUEsSUFBSSxFQUFDO0FBQVgsSUFERixDQWhCRixDQS9DRixDQURGLEVBd0VHTCxVQUFVLGlCQUNULG9CQUFDLHdCQUFEO0FBQ0UsSUFBQSxRQUFRLEVBQUUsa0JBQUNTLFFBQUQsRUFBYztBQUN0QlosTUFBQUEsU0FBUSxDQUFDWSxRQUFELENBQVI7O0FBQ0FSLE1BQUFBLGFBQWEsQ0FBQyxLQUFELENBQWI7QUFDRCxLQUpIO0FBS0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUFNQSxhQUFhLENBQUMsS0FBRCxDQUFuQjtBQUFBO0FBTFgsSUF6RUosRUFrRkdDLFVBQVUsaUJBQUksb0JBQUMsd0JBQUQ7QUFBYSxJQUFBLE9BQU8sRUFBRVIsT0FBdEI7QUFBK0IsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUFNUyxhQUFhLENBQUMsS0FBRCxDQUFuQjtBQUFBO0FBQXhDLElBbEZqQixDQURGO0FBc0ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdSZWN0YW5nbGVNb2RlLFxuICBNZWFzdXJlRGlzdGFuY2VNb2RlLFxuICBNZWFzdXJlQW5nbGVNb2RlLFxuICBNZWFzdXJlQXJlYU1vZGUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24nO1xuXG5pbXBvcnQgeyBJbXBvcnRNb2RhbCB9IGZyb20gJy4vaW1wb3J0LW1vZGFsJztcbmltcG9ydCB7IEV4cG9ydE1vZGFsIH0gZnJvbSAnLi9leHBvcnQtbW9kYWwnO1xuXG5jb25zdCBUb29scyA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgdG9wOiAxMHB4O1xuICByaWdodDogMTBweDtcbmA7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZC5idXR0b248eyBhY3RpdmU/OiBib29sZWFuOyBraW5kPzogc3RyaW5nIH0+YFxuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJHsoeyBraW5kLCBhY3RpdmUgfSkgPT5cbiAgICBraW5kID09PSAnZGFuZ2VyJyA/ICdyZ2IoMTgwLCA0MCwgNDApJyA6IGFjdGl2ZSA/ICdyZ2IoMCwgMTA1LCAyMTcpJyA6ICdyZ2IoOTAsIDk4LCA5NCknfTtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsXG4gICAgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICdOb3RvIENvbG9yIEVtb2ppJztcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgbWFyZ2luOiAwLjA1ZW07XG4gIHBhZGRpbmc6IDAuMWVtIDAuMmVtO1xuICA6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYigxMjgsIDEzNywgMTMzKTtcbiAgfVxuYDtcblxuY29uc3QgU3ViVG9vbHNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBTdWJUb29scyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuYDtcblxuZXhwb3J0IHR5cGUgUHJvcHMgPSB7XG4gIG1vZGU6IGFueTtcbiAgbW9kZUNvbmZpZzogYW55O1xuICBnZW9Kc29uOiBhbnk7XG4gIG9uU2V0TW9kZTogKG1vZGU6IGFueSkgPT4gdW5rbm93bjtcbiAgb25TZXRNb2RlQ29uZmlnOiAobW9kZUNvbmZpZzogYW55KSA9PiB1bmtub3duO1xuICBvblNldEdlb0pzb246IChnZW9qc29uOiBhbnkpID0+IHVua25vd247XG4gIG9uSW1wb3J0OiAoaW1wb3J0ZWQ6IGFueSkgPT4gdW5rbm93bjtcbn07XG5cbmNvbnN0IE1PREVfR1JPVVBTID0gW1xuICB7XG4gICAgbW9kZXM6IFt7IG1vZGU6IFZpZXdNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwicG9pbnRlclwiIC8+IH1dLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFt7IG1vZGU6IERyYXdQb2ludE1vZGUsIGNvbnRlbnQ6IDxJY29uIG5hbWU9XCJtYXAtcGluXCIgLz4gfV0sXG4gIH0sXG4gIHtcbiAgICBtb2RlczogW1xuICAgICAge1xuICAgICAgICBtb2RlOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gICAgICAgIGNvbnRlbnQ6IDxJY29uIG5hbWU9XCJzdGF0c1wiIC8+LFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFtcbiAgICAgIHsgbW9kZTogRHJhd1BvbHlnb25Nb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwic2hhcGUtcG9seWdvblwiIC8+IH0sXG4gICAgICB7IG1vZGU6IERyYXdSZWN0YW5nbGVNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwicmVjdGFuZ2xlXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwiY2lyY2xlXCIgLz4gfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFtcbiAgICAgIHsgbW9kZTogTWVhc3VyZURpc3RhbmNlTW9kZSwgY29udGVudDogPEljb24gbmFtZT1cInJ1bGVyXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogTWVhc3VyZUFuZ2xlTW9kZSwgY29udGVudDogPEljb24gbmFtZT1cInNoYXBlLXRyaWFuZ2xlXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogTWVhc3VyZUFyZWFNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwic2hhcGUtc3F1YXJlXCIgLz4gfSxcbiAgICBdLFxuICB9LFxuXTtcblxuZnVuY3Rpb24gTW9kZUJ1dHRvbih7IGJ1dHRvbkNvbmZpZywgbW9kZSwgb25DbGljayB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uIGFjdGl2ZT17YnV0dG9uQ29uZmlnLm1vZGUgPT09IG1vZGV9IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAge2J1dHRvbkNvbmZpZy5jb250ZW50fVxuICAgIDwvQnV0dG9uPlxuICApO1xufVxuZnVuY3Rpb24gTW9kZUdyb3VwQnV0dG9ucyh7IG1vZGVHcm91cCwgbW9kZSwgb25TZXRNb2RlIH06IGFueSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IG1vZGVzIH0gPSBtb2RlR3JvdXA7XG5cbiAgbGV0IHN1YlRvb2xzID0gbnVsbDtcblxuICBpZiAoZXhwYW5kZWQpIHtcbiAgICBzdWJUb29scyA9IChcbiAgICAgIDxTdWJUb29scz5cbiAgICAgICAge21vZGVzLm1hcCgoYnV0dG9uQ29uZmlnLCBpKSA9PiAoXG4gICAgICAgICAgPE1vZGVCdXR0b25cbiAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgIGJ1dHRvbkNvbmZpZz17YnV0dG9uQ29uZmlnfVxuICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgb25TZXRNb2RlKCgpID0+IGJ1dHRvbkNvbmZpZy5tb2RlKTtcbiAgICAgICAgICAgICAgc2V0RXhwYW5kZWQoZmFsc2UpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvU3ViVG9vbHM+XG4gICAgKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgYnV0dG9uIGNvbmZpZyBpZiBpdCBpcyBhY3RpdmUgb3RoZXJ3aXNlLCBjaG9vc2UgdGhlIGZpcnN0XG4gIGNvbnN0IGJ1dHRvbkNvbmZpZyA9IG1vZGVzLmZpbmQoKG0pID0+IG0ubW9kZSA9PT0gbW9kZSkgfHwgbW9kZXNbMF07XG5cbiAgcmV0dXJuIChcbiAgICA8U3ViVG9vbHNDb250YWluZXI+XG4gICAgICB7c3ViVG9vbHN9XG4gICAgICA8TW9kZUJ1dHRvblxuICAgICAgICBidXR0b25Db25maWc9e2J1dHRvbkNvbmZpZ31cbiAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIG9uU2V0TW9kZSgoKSA9PiBidXR0b25Db25maWcubW9kZSk7XG4gICAgICAgICAgc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIDwvU3ViVG9vbHNDb250YWluZXI+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUb29sYm94KHtcbiAgbW9kZSxcbiAgbW9kZUNvbmZpZyxcbiAgZ2VvSnNvbixcbiAgb25TZXRNb2RlLFxuICBvblNldE1vZGVDb25maWcsXG4gIG9uU2V0R2VvSnNvbixcbiAgb25JbXBvcnQsXG59OiBQcm9wcykge1xuICBjb25zdCBbc2hvd0NvbmZpZywgc2V0U2hvd0NvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93SW1wb3J0LCBzZXRTaG93SW1wb3J0XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFeHBvcnQsIHNldFNob3dFeHBvcnRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0NsZWFyQ29uZmlybWF0aW9uLCBzZXRTaG93Q2xlYXJDb25maXJtYXRpb25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUb29scz5cbiAgICAgICAge01PREVfR1JPVVBTLm1hcCgobW9kZUdyb3VwLCBpKSA9PiAoXG4gICAgICAgICAgPE1vZGVHcm91cEJ1dHRvbnMga2V5PXtpfSBtb2RlR3JvdXA9e21vZGVHcm91cH0gbW9kZT17bW9kZX0gb25TZXRNb2RlPXtvblNldE1vZGV9IC8+XG4gICAgICAgICkpfVxuXG4gICAgICAgIHsvKiA8Ym94LWljb24gbmFtZT0nY3VycmVudC1sb2NhdGlvbicgPjwvYm94LWljb24+ICovfVxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dFeHBvcnQodHJ1ZSl9IHRpdGxlPVwiRXhwb3J0XCI+XG4gICAgICAgICAgPEljb24gbmFtZT1cImV4cG9ydFwiIC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dJbXBvcnQodHJ1ZSl9IHRpdGxlPVwiSW1wb3J0XCI+XG4gICAgICAgICAgPEljb24gbmFtZT1cImltcG9ydFwiIC8+XG4gICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgIDxTdWJUb29sc0NvbnRhaW5lcj5cbiAgICAgICAgICB7c2hvd0NvbmZpZyAmJiAoXG4gICAgICAgICAgICA8U3ViVG9vbHM+XG4gICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbmZpZyhmYWxzZSl9PlxuICAgICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldE1vZGVDb25maWcoeyBib29sZWFuT3BlcmF0aW9uOiAnZGlmZmVyZW5jZScgfSl9XG4gICAgICAgICAgICAgICAgYWN0aXZlPXttb2RlQ29uZmlnICYmIG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ2RpZmZlcmVuY2UnfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cIm1pbnVzLWZyb250XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldE1vZGVDb25maWcoeyBib29sZWFuT3BlcmF0aW9uOiAndW5pb24nIH0pfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17bW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICd1bmlvbid9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwidW5pdGVcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2V0TW9kZUNvbmZpZyh7IGJvb2xlYW5PcGVyYXRpb246ICdpbnRlcnNlY3Rpb24nIH0pfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17bW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cImludGVyc2VjdFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB7LyogPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlnKGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cInhcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj4gKi99XG4gICAgICAgICAgICA8L1N1YlRvb2xzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlnKHRydWUpfT5cbiAgICAgICAgICAgIDxJY29uIG5hbWU9XCJjb2dcIiAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1N1YlRvb2xzQ29udGFpbmVyPlxuXG4gICAgICAgIDxTdWJUb29sc0NvbnRhaW5lcj5cbiAgICAgICAgICB7c2hvd0NsZWFyQ29uZmlybWF0aW9uICYmIChcbiAgICAgICAgICAgIDxTdWJUb29scz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uU2V0R2VvSnNvbih7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgIHNldFNob3dDbGVhckNvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBraW5kPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkNsZWFyIGFsbCBmZWF0dXJlc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDbGVhciBhbGwgZmVhdHVyZXMgPEljb24gbmFtZT1cInRyYXNoXCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0NsZWFyQ29uZmlybWF0aW9uKGZhbHNlKX0+Q2FuY2VsPC9CdXR0b24+XG4gICAgICAgICAgICA8L1N1YlRvb2xzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q2xlYXJDb25maXJtYXRpb24odHJ1ZSl9IHRpdGxlPVwiQ2xlYXJcIj5cbiAgICAgICAgICAgIDxJY29uIG5hbWU9XCJ0cmFzaFwiIC8+XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvU3ViVG9vbHNDb250YWluZXI+XG5cbiAgICAgICAgey8qIHpvb20gaW4gYW5kIG91dCAqL31cbiAgICAgIDwvVG9vbHM+XG5cbiAgICAgIHtzaG93SW1wb3J0ICYmIChcbiAgICAgICAgPEltcG9ydE1vZGFsXG4gICAgICAgICAgb25JbXBvcnQ9eyhpbXBvcnRlZCkgPT4ge1xuICAgICAgICAgICAgb25JbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgICAgc2V0U2hvd0ltcG9ydChmYWxzZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SW1wb3J0KGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RXhwb3J0ICYmIDxFeHBvcnRNb2RhbCBnZW9Kc29uPXtnZW9Kc29ufSBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RXhwb3J0KGZhbHNlKX0gLz59XG4gICAgPC8+XG4gICk7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/editor/dist-types/editor-modal.d.ts b/modules/editor/dist-types/editor-modal.d.ts new file mode 100644 index 000000000..d75342b09 --- /dev/null +++ b/modules/editor/dist-types/editor-modal.d.ts @@ -0,0 +1,9 @@ +/// +export declare const Button: import("styled-components").StyledComponent<"button", any, {}, never>; +export declare type ModalProps = { + title: any; + content: any; + onClose: () => unknown; +}; +export declare function EditorModal(props: ModalProps): JSX.Element; +//# sourceMappingURL=editor-modal.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/editor-modal.d.ts.map b/modules/editor/dist-types/editor-modal.d.ts.map new file mode 100644 index 000000000..8c1cff5de --- /dev/null +++ b/modules/editor/dist-types/editor-modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editor-modal.d.ts","sourceRoot":"","sources":["../src/editor-modal.tsx"],"names":[],"mappings":";AAMA,eAAO,MAAM,MAAM,uEAUlB,CAAC;AA6CF,oBAAY,UAAU,GAAG;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,eAwB5C"} \ No newline at end of file diff --git a/modules/editor/dist-types/export-component.d.ts b/modules/editor/dist-types/export-component.d.ts new file mode 100644 index 000000000..dea66c338 --- /dev/null +++ b/modules/editor/dist-types/export-component.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +export declare type ExportComponentProps = { + geoJson: any; + onClose: () => unknown; + filename?: string; + additionalInputs?: React.ReactNode; +}; +export declare function ExportComponent({ geoJson, onClose, filename, additionalInputs, }: ExportComponentProps): JSX.Element; +//# sourceMappingURL=export-component.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/export-component.d.ts.map b/modules/editor/dist-types/export-component.d.ts.map new file mode 100644 index 000000000..3b06c86a8 --- /dev/null +++ b/modules/editor/dist-types/export-component.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"export-component.d.ts","sourceRoot":"","sources":["../src/export-component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyC/B,oBAAY,oBAAoB,GAAG;IACjC,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE,oBAAoB,eA0FtB"} \ No newline at end of file diff --git a/modules/editor/dist-types/export-modal.d.ts b/modules/editor/dist-types/export-modal.d.ts new file mode 100644 index 000000000..00ae1befc --- /dev/null +++ b/modules/editor/dist-types/export-modal.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { AnyGeoJson } from '@nebula.gl/edit-modes'; +export declare type ExportModalProps = { + geoJson: AnyGeoJson; + onClose: () => unknown; + filename?: string; + additionalInputs?: React.ReactNode; +}; +export declare function ExportModal(props: ExportModalProps): JSX.Element; +//# sourceMappingURL=export-modal.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/export-modal.d.ts.map b/modules/editor/dist-types/export-modal.d.ts.map new file mode 100644 index 000000000..ed2493347 --- /dev/null +++ b/modules/editor/dist-types/export-modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"export-modal.d.ts","sourceRoot":"","sources":["../src/export-modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,oBAAY,gBAAgB,GAAG;IAC7B,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAQlD"} \ No newline at end of file diff --git a/modules/editor/dist-types/icon.d.ts b/modules/editor/dist-types/icon.d.ts new file mode 100644 index 000000000..b2d246c78 --- /dev/null +++ b/modules/editor/dist-types/icon.d.ts @@ -0,0 +1,4 @@ +/// +import 'boxicons'; +export declare function Icon(props: any): JSX.Element; +//# sourceMappingURL=icon.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/icon.d.ts.map b/modules/editor/dist-types/icon.d.ts.map new file mode 100644 index 000000000..e74fc9bdf --- /dev/null +++ b/modules/editor/dist-types/icon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../src/icon.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,CAAC;AAElB,wBAAgB,IAAI,CAAC,KAAK,KAAA,eAGzB"} \ No newline at end of file diff --git a/modules/editor/dist-types/import-component.d.ts b/modules/editor/dist-types/import-component.d.ts new file mode 100644 index 000000000..83dbef736 --- /dev/null +++ b/modules/editor/dist-types/import-component.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +export declare type ImportComponentProps = { + onImport: (arg0: any) => unknown; + onValidate?: (arg0: any) => unknown; + onCancel: () => unknown; + additionalInputs?: React.ReactNode; +}; +export declare function ImportComponent(props: ImportComponentProps): JSX.Element; +//# sourceMappingURL=import-component.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/import-component.d.ts.map b/modules/editor/dist-types/import-component.d.ts.map new file mode 100644 index 000000000..422659868 --- /dev/null +++ b/modules/editor/dist-types/import-component.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"import-component.d.ts","sourceRoot":"","sources":["../src/import-component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6E/B,oBAAY,oBAAoB,GAAG;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACpC,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,eAiK1D"} \ No newline at end of file diff --git a/modules/editor/dist-types/import-modal.d.ts b/modules/editor/dist-types/import-modal.d.ts new file mode 100644 index 000000000..4b478e7a6 --- /dev/null +++ b/modules/editor/dist-types/import-modal.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +export declare type ImportModalProps = { + onImport: (arg0: any) => unknown; + onClose: () => unknown; + additionalInputs?: React.ReactNode; +}; +export declare function ImportModal(props: ImportModalProps): JSX.Element; +//# sourceMappingURL=import-modal.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/import-modal.d.ts.map b/modules/editor/dist-types/import-modal.d.ts.map new file mode 100644 index 000000000..adffc7723 --- /dev/null +++ b/modules/editor/dist-types/import-modal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"import-modal.d.ts","sourceRoot":"","sources":["../src/import-modal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,oBAAY,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAclD"} \ No newline at end of file diff --git a/modules/editor/dist-types/index.d.ts b/modules/editor/dist-types/index.d.ts new file mode 100644 index 000000000..66082d3c5 --- /dev/null +++ b/modules/editor/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export { Toolbox } from './toolbox'; +export { ExportModal } from './export-modal'; +export { ExportComponent } from './export-component'; +export { ImportModal } from './import-modal'; +export { ImportComponent } from './import-component'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/index.d.ts.map b/modules/editor/dist-types/index.d.ts.map new file mode 100644 index 000000000..7a101ccfc --- /dev/null +++ b/modules/editor/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"} \ No newline at end of file diff --git a/modules/editor/dist-types/lib/exporter.d.ts b/modules/editor/dist-types/lib/exporter.d.ts new file mode 100644 index 000000000..aa554d390 --- /dev/null +++ b/modules/editor/dist-types/lib/exporter.d.ts @@ -0,0 +1,11 @@ +import { AnyGeoJson } from '@nebula.gl/edit-modes'; +export declare type ExportParameters = { + data: string; + filename: string; + mimetype: string; +}; +export declare function toGeoJson(geoJson: AnyGeoJson, filename: string): ExportParameters; +export declare function toKml(geoJson: AnyGeoJson, filename: string): ExportParameters; +export declare function toWkt(geoJson: AnyGeoJson, filename: string): ExportParameters; +export declare function toStats(geoJson: AnyGeoJson, filename: string): ExportParameters; +//# sourceMappingURL=exporter.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/lib/exporter.d.ts.map b/modules/editor/dist-types/lib/exporter.d.ts.map new file mode 100644 index 000000000..21479fd1e --- /dev/null +++ b/modules/editor/dist-types/lib/exporter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/lib/exporter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAA+B,MAAM,uBAAuB,CAAC;AAEhF,oBAAY,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAMjF;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAkB7E;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAsB7E;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA8B/E"} \ No newline at end of file diff --git a/modules/editor/dist-types/lib/importer.d.ts b/modules/editor/dist-types/lib/importer.d.ts new file mode 100644 index 000000000..3f95cc926 --- /dev/null +++ b/modules/editor/dist-types/lib/importer.d.ts @@ -0,0 +1,13 @@ +import { Feature } from '@nebula.gl/edit-modes'; +export declare type ValidImportData = { + valid: true; + type: 'GeoJSON' | 'KML' | 'WKT'; + features: Feature[]; +}; +export declare type InvalidImportData = { + valid: false; + validationErrors: string[]; +}; +export declare type ImportData = ValidImportData | InvalidImportData; +export declare function parseImport(data: string | File): Promise; +//# sourceMappingURL=importer.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/lib/importer.d.ts.map b/modules/editor/dist-types/lib/importer.d.ts.map new file mode 100644 index 000000000..fee83940d --- /dev/null +++ b/modules/editor/dist-types/lib/importer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/lib/importer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oBAAY,eAAe,GAAG;IAC5B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,oBAAY,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AA4L7D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAKpE"} \ No newline at end of file diff --git a/modules/editor/dist-types/toolbox.d.ts b/modules/editor/dist-types/toolbox.d.ts new file mode 100644 index 000000000..61ef28c7e --- /dev/null +++ b/modules/editor/dist-types/toolbox.d.ts @@ -0,0 +1,12 @@ +/// +export declare type Props = { + mode: any; + modeConfig: any; + geoJson: any; + onSetMode: (mode: any) => unknown; + onSetModeConfig: (modeConfig: any) => unknown; + onSetGeoJson: (geojson: any) => unknown; + onImport: (imported: any) => unknown; +}; +export declare function Toolbox({ mode, modeConfig, geoJson, onSetMode, onSetModeConfig, onSetGeoJson, onImport, }: Props): JSX.Element; +//# sourceMappingURL=toolbox.d.ts.map \ No newline at end of file diff --git a/modules/editor/dist-types/toolbox.d.ts.map b/modules/editor/dist-types/toolbox.d.ts.map new file mode 100644 index 000000000..ca99a1382 --- /dev/null +++ b/modules/editor/dist-types/toolbox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"toolbox.d.ts","sourceRoot":"","sources":["../src/toolbox.tsx"],"names":[],"mappings":";AAwDA,oBAAY,KAAK,GAAG;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAClC,eAAe,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9C,YAAY,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;IACxC,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;CACtC,CAAC;AAmFF,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,UAAU,EACV,OAAO,EACP,SAAS,EACT,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,EAAE,KAAK,eA4FP"} \ No newline at end of file diff --git a/modules/editor/dist/editor-modal.js b/modules/editor/dist/editor-modal.js new file mode 100644 index 000000000..e4c9468c1 --- /dev/null +++ b/modules/editor/dist/editor-modal.js @@ -0,0 +1,119 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EditorModal = EditorModal; +exports.Button = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _styledReactModal = _interopRequireWildcard(require("styled-react-modal")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject5() { + var data = _taggedTemplateLiteral(["\n font-size: 1.25rem;\n font-weight: 500;\n margin: 0;\n"]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 0.75rem 0.75rem;\n border-bottom: 1px solid rgb(222, 226, 230);\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: block;\n width: 50rem;\n height: auto;\n max-width: 500px;\n margin: 1.75rem auto;\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 1rem;\n font-weight: 400;\n color: rgb(21, 25, 29);\n line-height: 1.5;\n text-align: left;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n display: inline-block;\n color: #fff;\n background-color: rgb(90, 98, 94);\n font-size: 1em;\n margin: 0.25em;\n padding: 0.375em 0.75em;\n border: 1px solid transparent;\n border-radius: 0.25em;\n display: block;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var Button = _styledComponents["default"].button(_templateObject()); + +exports.Button = Button; + +var StyledModal = _styledReactModal["default"].styled(_templateObject2()); + +var Content = _styledComponents["default"].div(_templateObject3()); + +var HeaderRow = _styledComponents["default"].div(_templateObject4()); + +var Header = _styledComponents["default"].h5(_templateObject5()); + +function EditorModal(props) { + var _React$useState = React.useState(true), + _React$useState2 = _slicedToArray(_React$useState, 2), + isOpen = _React$useState2[0], + setIsOpen = _React$useState2[1]; + + function toggleModal() { + if (isOpen) { + props.onClose(); + } + + setIsOpen(!isOpen); + } + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_styledReactModal.ModalProvider, null, /*#__PURE__*/React.createElement(StyledModal, { + isOpen: isOpen, + onBackgroundClick: toggleModal, + onEscapeKeydown: toggleModal + }, /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(HeaderRow, null, /*#__PURE__*/React.createElement(Header, null, props.title)), props.content)))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3ItbW9kYWwudHN4Il0sIm5hbWVzIjpbIkJ1dHRvbiIsInN0eWxlZCIsImJ1dHRvbiIsIlN0eWxlZE1vZGFsIiwiTW9kYWwiLCJDb250ZW50IiwiZGl2IiwiSGVhZGVyUm93IiwiSGVhZGVyIiwiaDUiLCJFZGl0b3JNb2RhbCIsInByb3BzIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImlzT3BlbiIsInNldElzT3BlbiIsInRvZ2dsZU1vZGFsIiwib25DbG9zZSIsInRpdGxlIiwiY29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSxNQUFNLEdBQUdDLDZCQUFPQyxNQUFWLG1CQUFaOzs7O0FBWVAsSUFBTUMsV0FBVyxHQUFHQyw2QkFBTUgsTUFBVCxvQkFBakI7O0FBZ0JBLElBQU1JLE9BQU8sR0FBR0osNkJBQU9LLEdBQVYsb0JBQWI7O0FBYUEsSUFBTUMsU0FBUyxHQUFHTiw2QkFBT0ssR0FBVixvQkFBZjs7QUFRQSxJQUFNRSxNQUFNLEdBQUdQLDZCQUFPUSxFQUFWLG9CQUFaOztBQVlPLFNBQVNDLFdBQVQsQ0FBcUJDLEtBQXJCLEVBQXdDO0FBQUEsd0JBQ2pCQyxLQUFLLENBQUNDLFFBQU4sQ0FBZSxJQUFmLENBRGlCO0FBQUE7QUFBQSxNQUN0Q0MsTUFEc0M7QUFBQSxNQUM5QkMsU0FEOEI7O0FBRzdDLFdBQVNDLFdBQVQsR0FBdUI7QUFDckIsUUFBSUYsTUFBSixFQUFZO0FBQ1ZILE1BQUFBLEtBQUssQ0FBQ00sT0FBTjtBQUNEOztBQUNERixJQUFBQSxTQUFTLENBQUMsQ0FBQ0QsTUFBRixDQUFUO0FBQ0Q7O0FBRUQsc0JBQ0UsdURBQ0Usb0JBQUMsK0JBQUQscUJBQ0Usb0JBQUMsV0FBRDtBQUFhLElBQUEsTUFBTSxFQUFFQSxNQUFyQjtBQUE2QixJQUFBLGlCQUFpQixFQUFFRSxXQUFoRDtBQUE2RCxJQUFBLGVBQWUsRUFBRUE7QUFBOUUsa0JBQ0Usb0JBQUMsT0FBRCxxQkFDRSxvQkFBQyxTQUFELHFCQUNFLG9CQUFDLE1BQUQsUUFBU0wsS0FBSyxDQUFDTyxLQUFmLENBREYsQ0FERixFQUlHUCxLQUFLLENBQUNRLE9BSlQsQ0FERixDQURGLENBREYsQ0FERjtBQWNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBNb2RhbCwgeyBNb2RhbFByb3ZpZGVyIH0gZnJvbSAnc3R5bGVkLXJlYWN0LW1vZGFsJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDkwLCA5OCwgOTQpO1xuICBmb250LXNpemU6IDFlbTtcbiAgbWFyZ2luOiAwLjI1ZW07XG4gIHBhZGRpbmc6IDAuMzc1ZW0gMC43NWVtO1xuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC4yNWVtO1xuICBkaXNwbGF5OiBibG9jaztcbmA7XG5cbmNvbnN0IFN0eWxlZE1vZGFsID0gTW9kYWwuc3R5bGVkYFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogNTByZW07XG4gIGhlaWdodDogYXV0bztcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiAxLjc1cmVtIGF1dG87XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHJnYigyMSwgMjUsIDI5KTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3JkZXItcmFkaXVzOiAwLjNyZW07XG4gIG91dGxpbmU6IDA7XG5gO1xuXG5jb25zdCBIZWFkZXJSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nOiAwLjc1cmVtIDAuNzVyZW07XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjIyLCAyMjYsIDIzMCk7XG5gO1xuXG5jb25zdCBIZWFkZXIgPSBzdHlsZWQuaDVgXG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbWFyZ2luOiAwO1xuYDtcblxuZXhwb3J0IHR5cGUgTW9kYWxQcm9wcyA9IHtcbiAgdGl0bGU6IGFueTtcbiAgY29udGVudDogYW55O1xuICBvbkNsb3NlOiAoKSA9PiB1bmtub3duO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEVkaXRvck1vZGFsKHByb3BzOiBNb2RhbFByb3BzKSB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcblxuICBmdW5jdGlvbiB0b2dnbGVNb2RhbCgpIHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICBwcm9wcy5vbkNsb3NlKCk7XG4gICAgfVxuICAgIHNldElzT3BlbighaXNPcGVuKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxNb2RhbFByb3ZpZGVyPlxuICAgICAgICA8U3R5bGVkTW9kYWwgaXNPcGVuPXtpc09wZW59IG9uQmFja2dyb3VuZENsaWNrPXt0b2dnbGVNb2RhbH0gb25Fc2NhcGVLZXlkb3duPXt0b2dnbGVNb2RhbH0+XG4gICAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgICA8SGVhZGVyUm93PlxuICAgICAgICAgICAgICA8SGVhZGVyPntwcm9wcy50aXRsZX08L0hlYWRlcj5cbiAgICAgICAgICAgIDwvSGVhZGVyUm93PlxuICAgICAgICAgICAge3Byb3BzLmNvbnRlbnR9XG4gICAgICAgICAgPC9Db250ZW50PlxuICAgICAgICA8L1N0eWxlZE1vZGFsPlxuICAgICAgPC9Nb2RhbFByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist/export-component.js b/modules/editor/dist/export-component.js new file mode 100644 index 000000000..00ed9a40b --- /dev/null +++ b/modules/editor/dist/export-component.js @@ -0,0 +1,187 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExportComponent = ExportComponent; + +var React = _interopRequireWildcard(require("react")); + +var _clipboardCopy = _interopRequireDefault(require("clipboard-copy")); + +var _downloadjs = _interopRequireDefault(require("downloadjs")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _exporter = require("./lib/exporter"); + +var _editorModal = require("./editor-modal"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n padding: 0.75rem 0.75rem;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n resize: vertical;\n min-height: 300px;\n max-height: 500px;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n font-family: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: block;\n width: auto;\n height: auto;\n min-height: 300px;\n padding: 0rem 1rem;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n display: flex;\n padding: 0.75rem 0.75rem 0rem 0.75rem;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var FormatSelect = _styledComponents["default"].div(_templateObject()); + +var ExportArea = _styledComponents["default"].div(_templateObject2()); + +var ExportData = _styledComponents["default"].textarea(_templateObject3()); + +var FooterRow = _styledComponents["default"].div(_templateObject4()); + +function ExportComponent(_ref) { + var geoJson = _ref.geoJson, + onClose = _ref.onClose, + filename = _ref.filename, + additionalInputs = _ref.additionalInputs; + + var _React$useState = React.useState('geoJson'), + _React$useState2 = _slicedToArray(_React$useState, 2), + format = _React$useState2[0], + setFormat = _React$useState2[1]; + + var filenameValue = filename; + + if (!filenameValue) { + if (geoJson.type === 'FeatureCollection') { + filenameValue = 'features'; + } else { + // single feature + filenameValue = geoJson.properties.name || geoJson.id || 'feature'; + } + } + + var exportParams = React.useMemo(function () { + switch (format) { + case 'geoJson': + return (0, _exporter.toGeoJson)(geoJson, filenameValue); + + case 'kml': + return (0, _exporter.toKml)(geoJson, filenameValue); + + case 'wkt': + return (0, _exporter.toWkt)(geoJson, filenameValue); + + default: + throw Error("Unsupported format ".concat(format)); + } + }, [geoJson, format, filenameValue]); + var tooMuch = exportParams.data.length > 500000; + + function copyData() { + (0, _clipboardCopy["default"])(exportParams.data).then(function () { + return onClose(); + }); // TODO Design and add in a notifications banner for errors in the modal. + // .catch(err => {alert(`Error copying to clipboard: `, err)}) + } + + function downloadData() { + (0, _downloadjs["default"])(new Blob([exportParams.data]), exportParams.filename, exportParams.mimetype); + onClose(); + } + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormatSelect, null, /*#__PURE__*/React.createElement("strong", { + style: { + padding: '0.5rem 0.25rem' + } + }, "Format:"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'geoJson' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('geoJson'); + } + }, "GeoJSON"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'kml' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('kml'); + } + }, "KML"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: format === 'wkt' ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + return setFormat('wkt'); + } + }, "WKT")), /*#__PURE__*/React.createElement(ExportArea, null, /*#__PURE__*/React.createElement(ExportData, { + readOnly: true, + style: tooMuch ? { + fontStyle: 'italic', + padding: '0.75rem 0rem' + } : {}, + value: tooMuch ? 'Too much data to display. Download or Copy to clipboard instead.' : exportParams.data + })), additionalInputs || null, /*#__PURE__*/React.createElement(FooterRow, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: 'rgb(0, 105, 217)' + }, + onClick: downloadData + }, "Download"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: 'rgb(0, 105, 217)' + }, + onClick: copyData + }, "Copy"), /*#__PURE__*/React.createElement(_editorModal.Button, { + onClick: onClose + }, "Cancel"))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6WyJGb3JtYXRTZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJFeHBvcnRBcmVhIiwiRXhwb3J0RGF0YSIsInRleHRhcmVhIiwiRm9vdGVyUm93IiwiRXhwb3J0Q29tcG9uZW50IiwiZ2VvSnNvbiIsIm9uQ2xvc2UiLCJmaWxlbmFtZSIsImFkZGl0aW9uYWxJbnB1dHMiLCJSZWFjdCIsInVzZVN0YXRlIiwiZm9ybWF0Iiwic2V0Rm9ybWF0IiwiZmlsZW5hbWVWYWx1ZSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwibmFtZSIsImlkIiwiZXhwb3J0UGFyYW1zIiwidXNlTWVtbyIsIkVycm9yIiwidG9vTXVjaCIsImRhdGEiLCJsZW5ndGgiLCJjb3B5RGF0YSIsInRoZW4iLCJkb3dubG9hZERhdGEiLCJCbG9iIiwibWltZXR5cGUiLCJwYWRkaW5nIiwiYmFja2dyb3VuZENvbG9yIiwiZm9udFN0eWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUdDLDZCQUFPQyxHQUFWLG1CQUFsQjs7QUFLQSxJQUFNQyxVQUFVLEdBQUdGLDZCQUFPQyxHQUFWLG9CQUFoQjs7QUFTQSxJQUFNRSxVQUFVLEdBQUdILDZCQUFPSSxRQUFWLG9CQUFoQjs7QUFjQSxJQUFNQyxTQUFTLEdBQUdMLDZCQUFPQyxHQUFWLG9CQUFmOztBQWFPLFNBQVNLLGVBQVQsT0FLa0I7QUFBQSxNQUp2QkMsT0FJdUIsUUFKdkJBLE9BSXVCO0FBQUEsTUFIdkJDLE9BR3VCLFFBSHZCQSxPQUd1QjtBQUFBLE1BRnZCQyxRQUV1QixRQUZ2QkEsUUFFdUI7QUFBQSxNQUR2QkMsZ0JBQ3VCLFFBRHZCQSxnQkFDdUI7O0FBQUEsd0JBQ0tDLEtBQUss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SFIsT0FBTyxHQUNILGtFQURHLEdBRUhILFlBQVksQ0FBQ0k7QUFOckIsSUFERixDQTVCRixFQXVDR2QsZ0JBQWdCLElBQUksSUF2Q3ZCLGVBd0NFLG9CQUFDLFNBQUQscUJBQ0Usb0JBQUMsbUJBQUQ7QUFBUSxJQUFBLEtBQUssRUFBRTtBQUFFc0IsTUFBQUEsZUFBZSxFQUFFO0FBQW5CLEtBQWY7QUFBd0QsSUFBQSxPQUFPLEVBQUVKO0FBQWpFLGdCQURGLGVBSUUsb0JBQUMsbUJBQUQ7QUFBUSxJQUFBLEtBQUssRUFBRTtBQUFFSSxNQUFBQSxlQUFlLEVBQUU7QUFBbkIsS0FBZjtBQUF3RCxJQUFBLE9BQU8sRUFBRU47QUFBakUsWUFKRixlQU9FLG9CQUFDLG1CQUFEO0FBQVEsSUFBQSxPQUFPLEVBQUVsQjtBQUFqQixjQVBGLENBeENGLENBREY7QUFvREQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNvcHkgZnJvbSAnY2xpcGJvYXJkLWNvcHknO1xuaW1wb3J0IGRvd25sb2FkanMgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IHRvR2VvSnNvbiwgdG9LbWwsIHRvV2t0IH0gZnJvbSAnLi9saWIvZXhwb3J0ZXInO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9lZGl0b3ItbW9kYWwnO1xuXG5jb25zdCBGb3JtYXRTZWxlY3QgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwLjc1cmVtIDAuNzVyZW0gMHJlbSAwLjc1cmVtO1xuYDtcblxuY29uc3QgRXhwb3J0QXJlYSA9IHN0eWxlZC5kaXZgXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgcGFkZGluZzogMHJlbSAxcmVtO1xuYDtcblxuY29uc3QgRXhwb3J0RGF0YSA9IHN0eWxlZC50ZXh0YXJlYWBcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgbWluLWhlaWdodDogMzAwcHg7XG4gIG1heC1oZWlnaHQ6IDUwMHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA2LCAyMTIsIDIxOCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIHN5c3RlbS11aSwgJ1NlZ29lIFVJJywgUm9ib3RvLCAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgJ05vdG8gU2FucycsXG4gICAgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsICdOb3RvIENvbG9yIEVtb2ppJztcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuYDtcblxuY29uc3QgRm9vdGVyUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgcGFkZGluZzogMC43NXJlbSAwLjc1cmVtO1xuYDtcblxuZXhwb3J0IHR5cGUgRXhwb3J0Q29tcG9uZW50UHJvcHMgPSB7XG4gIGdlb0pzb246IGFueTtcbiAgb25DbG9zZTogKCkgPT4gdW5rbm93bjtcbiAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxJbnB1dHM/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gRXhwb3J0Q29tcG9uZW50KHtcbiAgZ2VvSnNvbixcbiAgb25DbG9zZSxcbiAgZmlsZW5hbWUsXG4gIGFkZGl0aW9uYWxJbnB1dHMsXG59OiBFeHBvcnRDb21wb25lbnRQcm9wcykge1xuICBjb25zdCBbZm9ybWF0LCBzZXRGb3JtYXRdID0gUmVhY3QudXNlU3RhdGUoJ2dlb0pzb24nKTtcblxuICBsZXQgZmlsZW5hbWVWYWx1ZSA9IGZpbGVuYW1lO1xuICBpZiAoIWZpbGVuYW1lVmFsdWUpIHtcbiAgICBpZiAoZ2VvSnNvbi50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgICBmaWxlbmFtZVZhbHVlID0gJ2ZlYXR1cmVzJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2luZ2xlIGZlYXR1cmVcbiAgICAgIGZpbGVuYW1lVmFsdWUgPSBnZW9Kc29uLnByb3BlcnRpZXMubmFtZSB8fCBnZW9Kc29uLmlkIHx8ICdmZWF0dXJlJztcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHBvcnRQYXJhbXMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAnZ2VvSnNvbic6XG4gICAgICAgIHJldHVybiB0b0dlb0pzb24oZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBjYXNlICdrbWwnOlxuICAgICAgICByZXR1cm4gdG9LbWwoZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBjYXNlICd3a3QnOlxuICAgICAgICByZXR1cm4gdG9Xa3QoZ2VvSnNvbiwgZmlsZW5hbWVWYWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcihgVW5zdXBwb3J0ZWQgZm9ybWF0ICR7Zm9ybWF0fWApO1xuICAgIH1cbiAgfSwgW2dlb0pzb24sIGZvcm1hdCwgZmlsZW5hbWVWYWx1ZV0pO1xuICBjb25zdCB0b29NdWNoID0gZXhwb3J0UGFyYW1zLmRhdGEubGVuZ3RoID4gNTAwMDAwO1xuXG4gIGZ1bmN0aW9uIGNvcHlEYXRhKCkge1xuICAgIGNvcHkoZXhwb3J0UGFyYW1zLmRhdGEpLnRoZW4oKCkgPT4gb25DbG9zZSgpKTtcbiAgICAvLyBUT0RPIERlc2lnbiBhbmQgYWRkIGluIGEgbm90aWZpY2F0aW9ucyBiYW5uZXIgZm9yIGVycm9ycyBpbiB0aGUgbW9kYWwuXG4gICAgLy8gICAuY2F0Y2goZXJyID0+IHthbGVydChgRXJyb3IgY29weWluZyB0byBjbGlwYm9hcmQ6IGAsIGVycil9KVxuICB9XG5cbiAgZnVuY3Rpb24gZG93bmxvYWREYXRhKCkge1xuICAgIGRvd25sb2FkanMobmV3IEJsb2IoW2V4cG9ydFBhcmFtcy5kYXRhXSksIGV4cG9ydFBhcmFtcy5maWxlbmFtZSwgZXhwb3J0UGFyYW1zLm1pbWV0eXBlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Rm9ybWF0U2VsZWN0PlxuICAgICAgICA8c3Ryb25nIHN0eWxlPXt7IHBhZGRpbmc6ICcwLjVyZW0gMC4yNXJlbScgfX0+Rm9ybWF0Ojwvc3Ryb25nPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZm9ybWF0ID09PSAnZ2VvSnNvbicgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDkwLCA5OCwgOTQpJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEZvcm1hdCgnZ2VvSnNvbicpfVxuICAgICAgICA+XG4gICAgICAgICAgR2VvSlNPTlxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZvcm1hdCA9PT0gJ2ttbCcgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDkwLCA5OCwgOTQpJyxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEZvcm1hdCgna21sJyl9XG4gICAgICAgID5cbiAgICAgICAgICBLTUxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmb3JtYXQgPT09ICd3a3QnID8gJ3JnYigwLCAxMDUsIDIxNyknIDogJ3JnYig5MCwgOTgsIDk0KScsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRGb3JtYXQoJ3drdCcpfVxuICAgICAgICA+XG4gICAgICAgICAgV0tUXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Gb3JtYXRTZWxlY3Q+XG4gICAgICA8RXhwb3J0QXJlYT5cbiAgICAgICAgPEV4cG9ydERhdGFcbiAgICAgICAgICByZWFkT25seT17dHJ1ZX1cbiAgICAgICAgICBzdHlsZT17dG9vTXVjaCA/IHsgZm9udFN0eWxlOiAnaXRhbGljJywgcGFkZGluZzogJzAuNzVyZW0gMHJlbScgfSA6IHt9fVxuICAgICAgICAgIHZhbHVlPXtcbiAgICAgICAgICAgIHRvb011Y2hcbiAgICAgICAgICAgICAgPyAnVG9vIG11Y2ggZGF0YSB0byBkaXNwbGF5LiBEb3dubG9hZCBvciBDb3B5IHRvIGNsaXBib2FyZCBpbnN0ZWFkLidcbiAgICAgICAgICAgICAgOiBleHBvcnRQYXJhbXMuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgIDwvRXhwb3J0QXJlYT5cbiAgICAgIHthZGRpdGlvbmFsSW5wdXRzIHx8IG51bGx9XG4gICAgICA8Rm9vdGVyUm93PlxuICAgICAgICA8QnV0dG9uIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogJ3JnYigwLCAxMDUsIDIxNyknIH19IG9uQ2xpY2s9e2Rvd25sb2FkRGF0YX0+XG4gICAgICAgICAgRG93bmxvYWRcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAncmdiKDAsIDEwNSwgMjE3KScgfX0gb25DbGljaz17Y29weURhdGF9PlxuICAgICAgICAgIENvcHlcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DbG9zZX0+Q2FuY2VsPC9CdXR0b24+XG4gICAgICA8L0Zvb3RlclJvdz5cbiAgICA8Lz5cbiAgKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/editor/dist/export-modal.js b/modules/editor/dist/export-modal.js new file mode 100644 index 000000000..cb26a87bf --- /dev/null +++ b/modules/editor/dist/export-modal.js @@ -0,0 +1,28 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExportModal = ExportModal; + +var React = _interopRequireWildcard(require("react")); + +var _editorModal = require("./editor-modal"); + +var _exportComponent = require("./export-component"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* eslint-env browser */ +function ExportModal(props) { + return /*#__PURE__*/React.createElement(_editorModal.EditorModal, { + onClose: props.onClose, + title: 'Export', + content: /*#__PURE__*/React.createElement(_exportComponent.ExportComponent, props) + }); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHBvcnQtbW9kYWwudHN4Il0sIm5hbWVzIjpbIkV4cG9ydE1vZGFsIiwicHJvcHMiLCJvbkNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBSkE7QUFhTyxTQUFTQSxXQUFULENBQXFCQyxLQUFyQixFQUE4QztBQUNuRCxzQkFDRSxvQkFBQyx3QkFBRDtBQUNFLElBQUEsT0FBTyxFQUFFQSxLQUFLLENBQUNDLE9BRGpCO0FBRUUsSUFBQSxLQUFLLEVBQUUsUUFGVDtBQUdFLElBQUEsT0FBTyxlQUFFLG9CQUFDLGdDQUFELEVBQXFCRCxLQUFyQjtBQUhYLElBREY7QUFPRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQW55R2VvSnNvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBFZGl0b3JNb2RhbCB9IGZyb20gJy4vZWRpdG9yLW1vZGFsJztcbmltcG9ydCB7IEV4cG9ydENvbXBvbmVudCB9IGZyb20gJy4vZXhwb3J0LWNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEV4cG9ydE1vZGFsUHJvcHMgPSB7XG4gIGdlb0pzb246IEFueUdlb0pzb247XG4gIG9uQ2xvc2U6ICgpID0+IHVua25vd247XG4gIGZpbGVuYW1lPzogc3RyaW5nO1xuICBhZGRpdGlvbmFsSW5wdXRzPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEV4cG9ydE1vZGFsKHByb3BzOiBFeHBvcnRNb2RhbFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPEVkaXRvck1vZGFsXG4gICAgICBvbkNsb3NlPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgdGl0bGU9eydFeHBvcnQnfVxuICAgICAgY29udGVudD17PEV4cG9ydENvbXBvbmVudCB7Li4ucHJvcHN9IC8+fVxuICAgIC8+XG4gICk7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/editor/dist/icon.js b/modules/editor/dist/icon.js new file mode 100644 index 000000000..c7a210e91 --- /dev/null +++ b/modules/editor/dist/icon.js @@ -0,0 +1,26 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Icon = Icon; + +var React = _interopRequireWildcard(require("react")); + +require("boxicons"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function Icon(props) { + // @ts-ignore + return /*#__PURE__*/React.createElement("box-icon", _extends({ + color: "currentColor" + }, props)); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pY29uLnRzeCJdLCJuYW1lcyI6WyJJY29uIiwicHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7OztBQUVPLFNBQVNBLElBQVQsQ0FBY0MsS0FBZCxFQUFxQjtBQUMxQjtBQUNBLHNCQUFPO0FBQVUsSUFBQSxLQUFLLEVBQUM7QUFBaEIsS0FBbUNBLEtBQW5DLEVBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAnYm94aWNvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gSWNvbihwcm9wcykge1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiA8Ym94LWljb24gY29sb3I9XCJjdXJyZW50Q29sb3JcIiB7Li4ucHJvcHN9IC8+O1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist/import-component.js b/modules/editor/dist/import-component.js new file mode 100644 index 000000000..387e7cc43 --- /dev/null +++ b/modules/editor/dist/import-component.js @@ -0,0 +1,321 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImportComponent = ImportComponent; + +var React = _interopRequireWildcard(require("react")); + +var _reactDropzone = _interopRequireDefault(require("react-dropzone")); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _editorModal = require("./editor-modal"); + +var _importer = require("./lib/importer"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject8() { + var data = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n padding: 0.75rem 0.75rem;\n border-top: 1px solid rgb(222, 226, 230);\n"]); + + _templateObject8 = function _templateObject8() { + return data; + }; + + return data; +} + +function _templateObject7() { + var data = _taggedTemplateLiteral(["\n display: block;\n padding: 0rem 1rem;\n"]); + + _templateObject7 = function _templateObject7() { + return data; + }; + + return data; +} + +function _templateObject6() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n min-height: 250px;\n height: 100%;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n fontfamily: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans' sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject6 = function _templateObject6() { + return data; + }; + + return data; +} + +function _templateObject5() { + var data = _taggedTemplateLiteral(["\n padding: 0px;\n width: 100%;\n resize: vertical;\n min-height: 250px;\n max-height: 450px;\n border: 1px solid rgb(206, 212, 218);\n border-radius: 0.3rem;\n font-family: -apple-system, system-ui, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',\n sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n font-size: 1rem;\n font-weight: 400;\n"]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n box-sizing: border-box;\n display: block;\n width: auto;\n height: auto;\n min-height: 300px;\n padding: 0rem 1rem;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n display: flex;\n padding: 0.75rem 0.75rem 0rem 0.75rem;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n width: auto;\n height: auto;\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n pointer-events: auto;\n background-color: #fff;\n background-clip: padding-box;\n border-radius: 0.3rem;\n outline: 0;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var ImportComponentContent = _styledComponents["default"].div(_templateObject()); + +var ImportContent = _styledComponents["default"].div(_templateObject2()); + +var ImportSelect = _styledComponents["default"].div(_templateObject3()); + +var ImportArea = _styledComponents["default"].div(_templateObject4()); + +var ImportTextArea = _styledComponents["default"].textarea(_templateObject5()); + +var ImportDropArea = _styledComponents["default"].div(_templateObject6()); + +var ImportInfo = _styledComponents["default"].div(_templateObject7()); + +var FooterRow = _styledComponents["default"].div(_templateObject8()); + +function ImportComponent(props) { + var _React$useState = React.useState(true), + _React$useState2 = _slicedToArray(_React$useState, 2), + isImportText = _React$useState2[0], + setIsImportText = _React$useState2[1]; + + var _React$useState3 = React.useState(''), + _React$useState4 = _slicedToArray(_React$useState3, 2), + text = _React$useState4[0], + setText = _React$useState4[1]; + + var _React$useState5 = React.useState(null), + _React$useState6 = _slicedToArray(_React$useState5, 2), + importFile = _React$useState6[0], + setImportFile = _React$useState6[1]; + + var _React$useState7 = React.useState({ + valid: false, + validationErrors: [] + }), + _React$useState8 = _slicedToArray(_React$useState7, 2), + parseResult = _React$useState8[0], + setParseResult = _React$useState8[1]; + + React.useEffect(function () { + function parseData() { + return _parseData.apply(this, arguments); + } + + function _parseData() { + _parseData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + if (!isImportText) { + _context.next = 8; + break; + } + + _context.t0 = setParseResult; + _context.next = 4; + return (0, _importer.parseImport)(text); + + case 4: + _context.t1 = _context.sent; + (0, _context.t0)(_context.t1); + _context.next = 14; + break; + + case 8: + if (!(importFile !== null)) { + _context.next = 14; + break; + } + + _context.t2 = setParseResult; + _context.next = 12; + return (0, _importer.parseImport)(importFile); + + case 12: + _context.t3 = _context.sent; + (0, _context.t2)(_context.t3); + + case 14: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + return _parseData.apply(this, arguments); + } + + parseData(); + }, [isImportText, text, importFile]); + + function flush() { + setImportFile(null); + setText(''); + props.onCancel(); + } + + function isDataSet() { + return isImportText && text || !isImportText && importFile; + } // Check validity (and call custom validation callback if present) + + + var valid = isDataSet() && parseResult.valid && (!props.onValidate || props.onValidate(parseResult.features)); + return /*#__PURE__*/React.createElement(ImportComponentContent, null, /*#__PURE__*/React.createElement(ImportContent, null, /*#__PURE__*/React.createElement(ImportSelect, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: isImportText ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)' + }, + onClick: function onClick() { + setIsImportText(true); + } + }, "Import From Text"), /*#__PURE__*/React.createElement(_editorModal.Button, { + style: { + backgroundColor: isImportText ? 'rgb(90, 98, 94)' : 'rgb(0, 105, 217)' + }, + onClick: function onClick() { + setIsImportText(false); + } + }, "Import From File")), /*#__PURE__*/React.createElement(ImportArea, null, isImportText && /*#__PURE__*/React.createElement(ImportTextArea, { + style: isDataSet() && !parseResult.valid ? { + borderColor: 'rgb(220, 53, 69)' + } : {}, + onChange: function onChange(event) { + return setText(event.target.value); + }, + value: text + }), !isImportText && /*#__PURE__*/React.createElement(_reactDropzone["default"], { + onDrop: function onDrop(importFiles) { + return setImportFile(importFiles[0]); + } + }, function (_ref) { + var getRootProps = _ref.getRootProps, + getInputProps = _ref.getInputProps; + return /*#__PURE__*/React.createElement(ImportDropArea, _extends({ + style: isDataSet() && !parseResult.valid ? { + borderColor: 'rgb(220, 53, 69)' + } : {} + }, getRootProps()), /*#__PURE__*/React.createElement("input", getInputProps()), importFile ? /*#__PURE__*/React.createElement("p", null, !parseResult.valid ? 'Invalid' : '', " Selected File: ", importFile.name, ".", /*#__PURE__*/React.createElement("br", null), "Drag 'n' drop or click again to change the file.") : /*#__PURE__*/React.createElement("p", null, "Drag 'n' drop your file here, or click to select a file.")); + }), /*#__PURE__*/React.createElement(ImportInfo, { + style: { + color: 'rgb(133, 100, 4)', + backgroundColor: 'rgb(255, 243, 205)' + } + }, isDataSet() && !parseResult.valid && // @ts-ignore + parseResult.validationErrors.map(function (err, i) { + return /*#__PURE__*/React.createElement("div", { + key: i + }, err); + }))), /*#__PURE__*/React.createElement(ImportInfo, null, "Supported formats:", /*#__PURE__*/React.createElement("ul", { + style: { + marginTop: '0' + } + }, /*#__PURE__*/React.createElement("li", { + key: "geojson" + }, /*#__PURE__*/React.createElement("a", { + href: "https://tools.ietf.org/html/rfc7946", + target: "_blank", + rel: "noopener noreferrer", + title: "GeoJSON Specification" + }, "GeoJSON")), /*#__PURE__*/React.createElement("li", { + key: "kml" + }, /*#__PURE__*/React.createElement("a", { + href: "https://developers.google.com/kml/", + target: "_blank", + rel: "noopener noreferrer", + title: "KML Specification" + }, "KML")), /*#__PURE__*/React.createElement("li", { + key: "wkt" + }, /*#__PURE__*/React.createElement("a", { + href: "https://en.wikipedia.org/wiki/Well-known_text", + target: "_blank", + rel: "noopener noreferrer", + title: "WKT" + }, "WKT"))))), props.additionalInputs || null, /*#__PURE__*/React.createElement(FooterRow, null, /*#__PURE__*/React.createElement(_editorModal.Button, { + style: isDataSet() ? { + backgroundColor: valid ? 'rgb(0, 105, 217)' : 'rgb(220, 53, 69)' + } : { + backgroundColor: 'rgb(206, 212, 218)' + }, + disabled: !valid, + onClick: function onClick() { + props.onImport({ + type: 'FeatureCollection', + properties: {}, + // $FlowFixMe - can't be clicked if it is invalid, so features will be there + //@ts-ignore + features: parseResult.features + }); + flush(); + } + }, "Import Geometry"), /*#__PURE__*/React.createElement(_editorModal.Button, { + onClick: flush + }, "Cancel"))); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnQtY29tcG9uZW50LnRzeCJdLCJuYW1lcyI6WyJJbXBvcnRDb21wb25lbnRDb250ZW50Iiwic3R5bGVkIiwiZGl2IiwiSW1wb3J0Q29udGVudCIsIkltcG9ydFNlbGVjdCIsIkltcG9ydEFyZWEiLCJJbXBvcnRUZXh0QXJlYSIsInRleHRhcmVhIiwiSW1wb3J0RHJvcEFyZWEiLCJJbXBvcnRJbmZvIiwiRm9vdGVyUm93IiwiSW1wb3J0Q29tcG9uZW50IiwicHJvcHMiLCJSZWFjdCIsInVzZVN0YXRlIiwiaXNJbXBvcnRUZXh0Iiwic2V0SXNJbXBvcnRUZXh0IiwidGV4dCIsInNldFRleHQiLCJpbXBvcnRGaWxlIiwic2V0SW1wb3J0RmlsZSIsInZhbGlkIiwidmFsaWRhdGlvbkVycm9ycyIsInBhcnNlUmVzdWx0Iiwic2V0UGFyc2VSZXN1bHQiLCJ1c2VFZmZlY3QiLCJwYXJzZURhdGEiLCJmbHVzaCIsIm9uQ2FuY2VsIiwiaXNEYXRhU2V0Iiwib25WYWxpZGF0ZSIsImZlYXR1cmVzIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQ29sb3IiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiaW1wb3J0RmlsZXMiLCJnZXRSb290UHJvcHMiLCJnZXRJbnB1dFByb3BzIiwibmFtZSIsImNvbG9yIiwibWFwIiwiZXJyIiwiaSIsIm1hcmdpblRvcCIsImFkZGl0aW9uYWxJbnB1dHMiLCJvbkltcG9ydCIsInR5cGUiLCJwcm9wZXJ0aWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsc0JBQXNCLEdBQUdDLDZCQUFPQyxHQUFWLG1CQUE1Qjs7QUFZQSxJQUFNQyxhQUFhLEdBQUdGLDZC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QixlQWtHRSxvQkFBQyxTQUFELHFCQUNFLG9CQUFDLG1CQUFEO0FBQ0UsSUFBQSxLQUFLLEVBQ0hqQixTQUFTLEtBQ0w7QUFBRUcsTUFBQUEsZUFBZSxFQUFFWCxLQUFLLEdBQUcsa0JBQUgsR0FBd0I7QUFBaEQsS0FESyxHQUVMO0FBQUVXLE1BQUFBLGVBQWUsRUFBRTtBQUFuQixLQUpSO0FBTUUsSUFBQSxRQUFRLEVBQUUsQ0FBQ1gsS0FOYjtBQU9FLElBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2JULE1BQUFBLEtBQUssQ0FBQ21DLFFBQU4sQ0FBZTtBQUNiQyxRQUFBQSxJQUFJLEVBQUUsbUJBRE87QUFFYkMsUUFBQUEsVUFBVSxFQUFFLEVBRkM7QUFHYjtBQUNBO0FBQ0FsQixRQUFBQSxRQUFRLEVBQUVSLFdBQVcsQ0FBQ1E7QUFMVCxPQUFmO0FBT0FKLE1BQUFBLEtBQUs7QUFDTjtBQWhCSCx1QkFERixlQXFCRSxvQkFBQyxtQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQTtBQUFqQixjQXJCRixDQWxHRixDQURGO0FBNEhEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBEcm9wem9uZSBmcm9tICdyZWFjdC1kcm9wem9uZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vZWRpdG9yLW1vZGFsJztcbmltcG9ydCB7IEltcG9ydERhdGEsIHBhcnNlSW1wb3J0IH0gZnJvbSAnLi9saWIvaW1wb3J0ZXInO1xuXG5jb25zdCBJbXBvcnRDb21wb25lbnRDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDAuM3JlbTtcbiAgb3V0bGluZTogMDtcbmA7XG5cbmNvbnN0IEltcG9ydENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuYDtcblxuY29uc3QgSW1wb3J0U2VsZWN0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMC43NXJlbSAwLjc1cmVtIDByZW0gMC43NXJlbTtcbmA7XG5cbmNvbnN0IEltcG9ydEFyZWEgPSBzdHlsZWQuZGl2YFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgbWluLWhlaWdodDogMzAwcHg7XG4gIHBhZGRpbmc6IDByZW0gMXJlbTtcbmA7XG5cbmNvbnN0IEltcG9ydFRleHRBcmVhID0gc3R5bGVkLnRleHRhcmVhYFxuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICByZXNpemU6IHZlcnRpY2FsO1xuICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgbWF4LWhlaWdodDogNDUwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDYsIDIxMiwgMjE4KTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCAnU2Vnb2UgVUknLCBSb2JvdG8sICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJyxcbiAgICBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJywgJ05vdG8gQ29sb3IgRW1vamknO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5gO1xuXG5jb25zdCBJbXBvcnREcm9wQXJlYSA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDYsIDIxMiwgMjE4KTtcbiAgYm9yZGVyLXJhZGl1czogMC4zcmVtO1xuICBmb250ZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsXG4gICAgJ05vdG8gU2Fucycgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsXG4gICAgJ05vdG8gQ29sb3IgRW1vamknO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5gO1xuXG5jb25zdCBJbXBvcnRJbmZvID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDByZW0gMXJlbTtcbmA7XG5cbmNvbnN0IEZvb3RlclJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMC43NXJlbTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyMjIsIDIyNiwgMjMwKTtcbmA7XG5cbmV4cG9ydCB0eXBlIEltcG9ydENvbXBvbmVudFByb3BzID0ge1xuICBvbkltcG9ydDogKGFyZzA6IGFueSkgPT4gdW5rbm93bjtcbiAgb25WYWxpZGF0ZT86IChhcmcwOiBhbnkpID0+IHVua25vd247XG4gIG9uQ2FuY2VsOiAoKSA9PiB1bmtub3duO1xuICBhZGRpdGlvbmFsSW5wdXRzPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEltcG9ydENvbXBvbmVudChwcm9wczogSW1wb3J0Q29tcG9uZW50UHJvcHMpIHtcbiAgY29uc3QgW2lzSW1wb3J0VGV4dCwgc2V0SXNJbXBvcnRUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbdGV4dCwgc2V0VGV4dF0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IFtpbXBvcnRGaWxlLCBzZXRJbXBvcnRGaWxlXSA9IFJlYWN0LnVzZVN0YXRlPEZpbGUgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBbcGFyc2VSZXN1bHQsIHNldFBhcnNlUmVzdWx0XSA9IFJlYWN0LnVzZVN0YXRlPEltcG9ydERhdGE+KHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgdmFsaWRhdGlvbkVycm9yczogW10sXG4gIH0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXN5bmMgZnVuY3Rpb24gcGFyc2VEYXRhKCkge1xuICAgICAgaWYgKGlzSW1wb3J0VGV4dCkge1xuICAgICAgICBzZXRQYXJzZVJlc3VsdChhd2FpdCBwYXJzZUltcG9ydCh0ZXh0KSk7XG4gICAgICB9IGVsc2UgaWYgKGltcG9ydEZpbGUgIT09IG51bGwpIHtcbiAgICAgICAgc2V0UGFyc2VSZXN1bHQoYXdhaXQgcGFyc2VJbXBvcnQoaW1wb3J0RmlsZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXJzZURhdGEoKTtcbiAgfSwgW2lzSW1wb3J0VGV4dCwgdGV4dCwgaW1wb3J0RmlsZV0pO1xuXG4gIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHNldEltcG9ydEZpbGUobnVsbCk7XG4gICAgc2V0VGV4dCgnJyk7XG4gICAgcHJvcHMub25DYW5jZWwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRGF0YVNldCgpIHtcbiAgICByZXR1cm4gKGlzSW1wb3J0VGV4dCAmJiB0ZXh0KSB8fCAoIWlzSW1wb3J0VGV4dCAmJiBpbXBvcnRGaWxlKTtcbiAgfVxuXG4gIC8vIENoZWNrIHZhbGlkaXR5IChhbmQgY2FsbCBjdXN0b20gdmFsaWRhdGlvbiBjYWxsYmFjayBpZiBwcmVzZW50KVxuICBjb25zdCB2YWxpZCA9XG4gICAgaXNEYXRhU2V0KCkgJiZcbiAgICBwYXJzZVJlc3VsdC52YWxpZCAmJlxuICAgICghcHJvcHMub25WYWxpZGF0ZSB8fCBwcm9wcy5vblZhbGlkYXRlKHBhcnNlUmVzdWx0LmZlYXR1cmVzKSk7XG5cbiAgcmV0dXJuIChcbiAgICA8SW1wb3J0Q29tcG9uZW50Q29udGVudD5cbiAgICAgIDxJbXBvcnRDb250ZW50PlxuICAgICAgICA8SW1wb3J0U2VsZWN0PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaXNJbXBvcnRUZXh0ID8gJ3JnYigwLCAxMDUsIDIxNyknIDogJ3JnYig5MCwgOTgsIDk0KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRJc0ltcG9ydFRleHQodHJ1ZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEltcG9ydCBGcm9tIFRleHRcbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzSW1wb3J0VGV4dCA/ICdyZ2IoOTAsIDk4LCA5NCknIDogJ3JnYigwLCAxMDUsIDIxNyknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgc2V0SXNJbXBvcnRUZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgSW1wb3J0IEZyb20gRmlsZVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0ltcG9ydFNlbGVjdD5cbiAgICAgICAgPEltcG9ydEFyZWE+XG4gICAgICAgICAge2lzSW1wb3J0VGV4dCAmJiAoXG4gICAgICAgICAgICA8SW1wb3J0VGV4dEFyZWFcbiAgICAgICAgICAgICAgc3R5bGU9e2lzRGF0YVNldCgpICYmICFwYXJzZVJlc3VsdC52YWxpZCA/IHsgYm9yZGVyQ29sb3I6ICdyZ2IoMjIwLCA1MywgNjkpJyB9IDoge319XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHNldFRleHQoZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RleHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyFpc0ltcG9ydFRleHQgJiYgKFxuICAgICAgICAgICAgPERyb3B6b25lIG9uRHJvcD17KGltcG9ydEZpbGVzKSA9PiBzZXRJbXBvcnRGaWxlKGltcG9ydEZpbGVzWzBdKX0+XG4gICAgICAgICAgICAgIHsoeyBnZXRSb290UHJvcHMsIGdldElucHV0UHJvcHMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxJbXBvcnREcm9wQXJlYVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICBpc0RhdGFTZXQoKSAmJiAhcGFyc2VSZXN1bHQudmFsaWQgPyB7IGJvcmRlckNvbG9yOiAncmdiKDIyMCwgNTMsIDY5KScgfSA6IHt9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB7Li4uZ2V0Um9vdFByb3BzKCl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IHsuLi5nZXRJbnB1dFByb3BzKCl9IC8+XG4gICAgICAgICAgICAgICAgICB7aW1wb3J0RmlsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgeyFwYXJzZVJlc3VsdC52YWxpZCA/ICdJbnZhbGlkJyA6ICcnfSBTZWxlY3RlZCBGaWxlOiB7aW1wb3J0RmlsZS5uYW1lfS48YnIgLz5cbiAgICAgICAgICAgICAgICAgICAgICBEcmFnICduJyBkcm9wIG9yIGNsaWNrIGFnYWluIHRvIGNoYW5nZSB0aGUgZmlsZS5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPHA+RHJhZyAnbicgZHJvcCB5b3VyIGZpbGUgaGVyZSwgb3IgY2xpY2sgdG8gc2VsZWN0IGEgZmlsZS48L3A+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvSW1wb3J0RHJvcEFyZWE+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3B6b25lPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEltcG9ydEluZm8gc3R5bGU9e3sgY29sb3I6ICdyZ2IoMTMzLCAxMDAsIDQpJywgYmFja2dyb3VuZENvbG9yOiAncmdiKDI1NSwgMjQzLCAyMDUpJyB9fT5cbiAgICAgICAgICAgIHtpc0RhdGFTZXQoKSAmJlxuICAgICAgICAgICAgICAhcGFyc2VSZXN1bHQudmFsaWQgJiZcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBwYXJzZVJlc3VsdC52YWxpZGF0aW9uRXJyb3JzLm1hcCgoZXJyLCBpKSA9PiA8ZGl2IGtleT17aX0+e2Vycn08L2Rpdj4pfVxuICAgICAgICAgIDwvSW1wb3J0SW5mbz5cbiAgICAgICAgPC9JbXBvcnRBcmVhPlxuICAgICAgICA8SW1wb3J0SW5mbz5cbiAgICAgICAgICBTdXBwb3J0ZWQgZm9ybWF0czpcbiAgICAgICAgICA8dWwgc3R5bGU9e3sgbWFyZ2luVG9wOiAnMCcgfX0+XG4gICAgICAgICAgICA8bGkga2V5PVwiZ2VvanNvblwiPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzk0NlwiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkdlb0pTT04gU3BlY2lmaWNhdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBHZW9KU09OXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkga2V5PVwia21sXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2ttbC9cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJLTUwgU3BlY2lmaWNhdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBLTUxcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBrZXk9XCJ3a3RcIj5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VsbC1rbm93bl90ZXh0XCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiV0tUXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFdLVFxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvSW1wb3J0SW5mbz5cbiAgICAgIDwvSW1wb3J0Q29udGVudD5cbiAgICAgIHtwcm9wcy5hZGRpdGlvbmFsSW5wdXRzIHx8IG51bGx9XG4gICAgICA8Rm9vdGVyUm93PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgaXNEYXRhU2V0KClcbiAgICAgICAgICAgICAgPyB7IGJhY2tncm91bmRDb2xvcjogdmFsaWQgPyAncmdiKDAsIDEwNSwgMjE3KScgOiAncmdiKDIyMCwgNTMsIDY5KScgfVxuICAgICAgICAgICAgICA6IHsgYmFja2dyb3VuZENvbG9yOiAncmdiKDIwNiwgMjEyLCAyMTgpJyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpc2FibGVkPXshdmFsaWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMub25JbXBvcnQoe1xuICAgICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgICAgICAgLy8gJEZsb3dGaXhNZSAtIGNhbid0IGJlIGNsaWNrZWQgaWYgaXQgaXMgaW52YWxpZCwgc28gZmVhdHVyZXMgd2lsbCBiZSB0aGVyZVxuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgZmVhdHVyZXM6IHBhcnNlUmVzdWx0LmZlYXR1cmVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmbHVzaCgpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICBJbXBvcnQgR2VvbWV0cnlcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17Zmx1c2h9PkNhbmNlbDwvQnV0dG9uPlxuICAgICAgPC9Gb290ZXJSb3c+XG4gICAgPC9JbXBvcnRDb21wb25lbnRDb250ZW50PlxuICApO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist/import-modal.js b/modules/editor/dist/import-modal.js new file mode 100644 index 000000000..89075c898 --- /dev/null +++ b/modules/editor/dist/import-modal.js @@ -0,0 +1,32 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ImportModal = ImportModal; + +var React = _interopRequireWildcard(require("react")); + +var _importComponent = require("./import-component"); + +var _editorModal = require("./editor-modal"); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* eslint-env browser */ +function ImportModal(props) { + return /*#__PURE__*/React.createElement(_editorModal.EditorModal, { + onClose: props.onClose, + title: 'Import', + content: /*#__PURE__*/React.createElement(_importComponent.ImportComponent, { + onImport: props.onImport, + onCancel: props.onClose, + additionalInputs: props.additionalInputs + }) + }); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnQtbW9kYWwudHN4Il0sIm5hbWVzIjpbIkltcG9ydE1vZGFsIiwicHJvcHMiLCJvbkNsb3NlIiwib25JbXBvcnQiLCJhZGRpdGlvbmFsSW5wdXRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSkE7QUFZTyxTQUFTQSxXQUFULENBQXFCQyxLQUFyQixFQUE4QztBQUNuRCxzQkFDRSxvQkFBQyx3QkFBRDtBQUNFLElBQUEsT0FBTyxFQUFFQSxLQUFLLENBQUNDLE9BRGpCO0FBRUUsSUFBQSxLQUFLLEVBQUUsUUFGVDtBQUdFLElBQUEsT0FBTyxlQUNMLG9CQUFDLGdDQUFEO0FBQ0UsTUFBQSxRQUFRLEVBQUVELEtBQUssQ0FBQ0UsUUFEbEI7QUFFRSxNQUFBLFFBQVEsRUFBRUYsS0FBSyxDQUFDQyxPQUZsQjtBQUdFLE1BQUEsZ0JBQWdCLEVBQUVELEtBQUssQ0FBQ0c7QUFIMUI7QUFKSixJQURGO0FBYUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW1wb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9pbXBvcnQtY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRvck1vZGFsIH0gZnJvbSAnLi9lZGl0b3ItbW9kYWwnO1xuXG5leHBvcnQgdHlwZSBJbXBvcnRNb2RhbFByb3BzID0ge1xuICBvbkltcG9ydDogKGFyZzA6IGFueSkgPT4gdW5rbm93bjtcbiAgb25DbG9zZTogKCkgPT4gdW5rbm93bjtcbiAgYWRkaXRpb25hbElucHV0cz86IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBJbXBvcnRNb2RhbChwcm9wczogSW1wb3J0TW9kYWxQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxFZGl0b3JNb2RhbFxuICAgICAgb25DbG9zZT17cHJvcHMub25DbG9zZX1cbiAgICAgIHRpdGxlPXsnSW1wb3J0J31cbiAgICAgIGNvbnRlbnQ9e1xuICAgICAgICA8SW1wb3J0Q29tcG9uZW50XG4gICAgICAgICAgb25JbXBvcnQ9e3Byb3BzLm9uSW1wb3J0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtwcm9wcy5vbkNsb3NlfVxuICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dHM9e3Byb3BzLmFkZGl0aW9uYWxJbnB1dHN9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/editor/dist/index.js b/modules/editor/dist/index.js new file mode 100644 index 000000000..3495f29fd --- /dev/null +++ b/modules/editor/dist/index.js @@ -0,0 +1,46 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "Toolbox", { + enumerable: true, + get: function get() { + return _toolbox.Toolbox; + } +}); +Object.defineProperty(exports, "ExportModal", { + enumerable: true, + get: function get() { + return _exportModal.ExportModal; + } +}); +Object.defineProperty(exports, "ExportComponent", { + enumerable: true, + get: function get() { + return _exportComponent.ExportComponent; + } +}); +Object.defineProperty(exports, "ImportModal", { + enumerable: true, + get: function get() { + return _importModal.ImportModal; + } +}); +Object.defineProperty(exports, "ImportComponent", { + enumerable: true, + get: function get() { + return _importComponent.ImportComponent; + } +}); + +var _toolbox = require("./toolbox"); + +var _exportModal = require("./export-modal"); + +var _exportComponent = require("./export-component"); + +var _importModal = require("./import-modal"); + +var _importComponent = require("./import-component"); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRvb2xib3ggfSBmcm9tICcuL3Rvb2xib3gnO1xuZXhwb3J0IHsgRXhwb3J0TW9kYWwgfSBmcm9tICcuL2V4cG9ydC1tb2RhbCc7XG5leHBvcnQgeyBFeHBvcnRDb21wb25lbnQgfSBmcm9tICcuL2V4cG9ydC1jb21wb25lbnQnO1xuZXhwb3J0IHsgSW1wb3J0TW9kYWwgfSBmcm9tICcuL2ltcG9ydC1tb2RhbCc7XG5leHBvcnQgeyBJbXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2ltcG9ydC1jb21wb25lbnQnO1xuIl19 \ No newline at end of file diff --git a/modules/editor/dist/lib/exporter.js b/modules/editor/dist/lib/exporter.js new file mode 100644 index 000000000..3138e043b --- /dev/null +++ b/modules/editor/dist/lib/exporter.js @@ -0,0 +1,184 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toGeoJson = toGeoJson; +exports.toKml = toKml; +exports.toWkt = toWkt; +exports.toStats = toStats; + +var _tokml = _interopRequireDefault(require("@maphubs/tokml")); + +var _wellknown = require("wellknown"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toGeoJson(geoJson, filename) { + return { + data: JSON.stringify(geoJson, null, 2), + filename: "".concat(filename, ".geojson"), + mimetype: 'application/json' + }; +} + +function toKml(geoJson, filename) { + // For some reason, google maps doesn't surface id unless it is in the properties + // So, put it also in properties + if (geoJson.type === 'FeatureCollection') { + geoJson.features.forEach(function (f) { + f.properties = f.properties || {}; + }); + } + + var kmlString = (0, _tokml["default"])(geoJson); // kmlString = addIdToKml(geoJson, kmlString); + + return { + data: kmlString, + filename: "".concat(filename, ".kml"), + mimetype: 'application/xml' + }; +} + +function toWkt(geoJson, filename) { + var wkt = ''; + + if (geoJson.type === 'Feature') { + // @ts-ignore + wkt = (0, _wellknown.stringify)(geoJson); + } else { + // feature collection + wkt = ''; + + var _iterator = _createForOfIteratorHelper(geoJson.features), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + // @ts-ignore + wkt += "".concat((0, _wellknown.stringify)(feature), "\n"); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (wkt.length > 0) { + wkt = wkt.substring(0, wkt.length - 1); + } + } + + return { + data: wkt, + filename: "".concat(filename, ".wkt"), + mimetype: 'text/plain' + }; +} + +function toStats(geoJson, filename) { + var pointCount = 0; + var ringCount = 0; + var polygonCount = 0; + var featureCount = 0; + + if (geoJson.type === 'Feature') { + var polygonStats = getPolygonalStats(geoJson.geometry); + pointCount = polygonStats.pointCount; + ringCount = polygonStats.ringCount; + polygonCount = polygonStats.polygonCount; + featureCount = 1; + } else { + var _iterator2 = _createForOfIteratorHelper(geoJson.features), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var feature = _step2.value; + + var _polygonStats = getPolygonalStats(feature.geometry); + + pointCount += _polygonStats.pointCount; + ringCount += _polygonStats.ringCount; + polygonCount += _polygonStats.polygonCount; + featureCount++; + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + + var stats = "Features: ".concat(featureCount, "\nPolygons: ").concat(polygonCount, "\nRings: ").concat(ringCount, "\nPoints: ").concat(pointCount); + return { + data: stats, + filename: "".concat(filename, ".txt"), + mimetype: 'text/plain' + }; +} + +function getPolygonalStats(geometry) { + if (geometry.type !== 'Polygon' && geometry.type !== 'MultiPolygon') { + return { + pointCount: -1, + ringCount: -1, + polygonCount: -1 + }; + } + + var polygonal = geometry; + var pointCount = 0; + var ringCount = 0; + var polygonCount = 0; + + var _iterator3 = _createForOfIteratorHelper(polygonal.coordinates), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var ringOrPolygon = _step3.value; + + if (geometry.type === 'Polygon') { + polygonCount = 1; + ringCount++; + pointCount += ringOrPolygon.length; + } else if (geometry.type === 'MultiPolygon') { + polygonCount++; + + var _iterator4 = _createForOfIteratorHelper(ringOrPolygon), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var ring = _step4.value; + ringCount++; + pointCount += ring.length; + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + } + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + + return { + pointCount: pointCount, + ringCount: ringCount, + polygonCount: polygonCount + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZXhwb3J0ZXIudHMiXSwibmFtZXMiOlsidG9HZW9Kc29uIiwiZ2VvSnNvbiIsImZpbGVuYW1lIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtaW1ldHlwZSIsInRvS21sIiwidHlwZSIsImZlYXR1cmVzIiwiZm9yRWFjaCIsImYiLCJwcm9wZXJ0aWVzIiwia21sU3RyaW5nIiwidG9Xa3QiLCJ3a3QiLCJmZWF0dXJlIiwibGVuZ3RoIiwic3Vic3RyaW5nIiwidG9TdGF0cyIsInBvaW50Q291bnQiLCJyaW5nQ291bnQiLCJwb2x5Z29uQ291bnQiLCJmZWF0dXJlQ291bnQiLCJwb2x5Z29uU3RhdHMiLCJnZXRQb2x5Z29uYWxTdGF0cyIsImdlb21ldHJ5Iiwic3RhdHMiLCJwb2x5Z29uYWwiLCJjb29yZGluYXRlcyIsInJpbmdPclBvbHlnb24iLCJyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFVTyxTQUFTQSxTQUFULENBQW1CQyxPQUFuQixFQUF3Q0MsUUFBeEMsRUFBNEU7QUFDakYsU0FBTztBQUNMQyxJQUFBQSxJQUFJLEVBQUVDLElBQUksQ0FBQ0MsU0FBTCxDQUFlSixPQUFmLEVBQXdCLElBQXhCLEVBQThCLENBQTlCLENBREQ7QUFFTEMsSUFBQUEsUUFBUSxZQUFLQSxRQUFMLGFBRkg7QUFHTEksSUFBQUEsUUFBUSxFQUFFO0FBSEwsR0FBUDtBQUtEOztBQUVNLFNBQVNDLEtBQVQsQ0FBZU4sT0FBZixFQUFvQ0MsUUFBcEMsRUFBd0U7QUFDN0U7QUFDQTtBQUNBLE1BQUlELE9BQU8sQ0FBQ08sSUFBUixLQUFpQixtQkFBckIsRUFBMEM7QUFDeENQLElBQUFBLE9BQU8sQ0FBQ1EsUUFBUixDQUFpQkMsT0FBakIsQ0FBeUIsVUFBQ0MsQ0FBRCxFQUFPO0FBQzlCQSxNQUFBQSxDQUFDLENBQUNDLFVBQUYsR0FBZUQsQ0FBQyxDQUFDQyxVQUFGLElBQWdCLEVBQS9CO0FBQ0QsS0FGRDtBQUdEOztBQUVELE1BQU1DLFNBQVMsR0FBRyx1QkFBTVosT0FBTixDQUFsQixDQVQ2RSxDQVc3RTs7QUFFQSxTQUFPO0FBQ0xFLElBQUFBLElBQUksRUFBRVUsU0FERDtBQUVMWCxJQUFBQSxRQUFRLFlBQUtBLFFBQUwsU0FGSDtBQUdMSSxJQUFBQSxRQUFRLEVBQUU7QUFITCxHQUFQO0FBS0Q7O0FBRU0sU0FBU1EsS0FBVCxDQUFlYixPQUFmLEVBQW9DQyxRQUFwQyxFQUF3RTtBQUM3RSxNQUFJYSxHQUFHLEdBQUcsRUFBVjs7QUFDQSxNQUFJZCxPQUFPLENBQUNPLElBQVIsS0FBaUIsU0FBckIsRUFBZ0M7QUFDOUI7QUFDQU8sSUFBQUEsR0FBRyxHQUFHLDBCQUFhZCxPQUFiLENBQU47QUFDRCxHQUhELE1BR087QUFDTDtBQUNBYyxJQUFBQSxHQUFHLEdBQUcsRUFBTjs7QUFGSywrQ0FHaUJkLE9BQU8sQ0FBQ1EsUUFIekI7QUFBQTs7QUFBQTtBQUdMLDBEQUF3QztBQUFBLFlBQTdCTyxPQUE2QjtBQUN0QztBQUNBRCxRQUFBQSxHQUFHLGNBQU8sMEJBQWFDLE9BQWIsQ0FBUCxPQUFIO0FBQ0Q7QUFOSTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU9MLFFBQUlELEdBQUcsQ0FBQ0UsTUFBSixHQUFhLENBQWpCLEVBQW9CO0FBQ2xCRixNQUFBQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0csU0FBSixDQUFjLENBQWQsRUFBaUJILEdBQUcsQ0FBQ0UsTUFBSixHQUFhLENBQTlCLENBQU47QUFDRDtBQUNGOztBQUVELFNBQU87QUFDTGQsSUFBQUEsSUFBSSxFQUFFWSxHQUREO0FBRUxiLElBQUFBLFFBQVEsWUFBS0EsUUFBTCxTQUZIO0FBR0xJLElBQUFBLFFBQVEsRUFBRTtBQUhMLEdBQVA7QUFLRDs7QUFFTSxTQUFTYSxPQUFULENBQWlCbEIsT0FBakIsRUFBc0NDLFFBQXRDLEVBQTBFO0FBQy9FLE1BQUlrQixVQUFVLEdBQUcsQ0FBakI7QUFDQSxNQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFDQSxNQUFJQyxZQUFZLEdBQUcsQ0FBbkI7QUFDQSxNQUFJQyxZQUFZLEdBQUcsQ0FBbkI7O0FBRUEsTUFBSXRCLE9BQU8sQ0FBQ08sSUFBUixLQUFpQixTQUFyQixFQUFnQztBQUM5QixRQUFNZ0IsWUFBWSxHQUFHQyxpQkFBaUIsQ0FBQ3hCLE9BQU8sQ0FBQ3lCLFFBQVQsQ0FBdEM7QUFDR04sSUFBQUEsVUFGMkIsR0FFYUksWUFGYixDQUUzQkosVUFGMkI7QUFFZkMsSUFBQUEsU0FGZSxHQUVhRyxZQUZiLENBRWZILFNBRmU7QUFFSkMsSUFBQUEsWUFGSSxHQUVhRSxZQUZiLENBRUpGLFlBRkk7QUFHOUJDLElBQUFBLFlBQVksR0FBRyxDQUFmO0FBQ0QsR0FKRCxNQUlPO0FBQUEsZ0RBQ2lCdEIsT0FBTyxDQUFDUSxRQUR6QjtBQUFBOztBQUFBO0FBQ0wsNkRBQXdDO0FBQUEsWUFBN0JPLE9BQTZCOztBQUN0QyxZQUFNUSxhQUFZLEdBQUdDLGlCQUFpQixDQUFDVCxPQUFPLENBQUNVLFFBQVQsQ0FBdEM7O0FBQ0FOLFFBQUFBLFVBQVUsSUFBSUksYUFBWSxDQUFDSixVQUEzQjtBQUNBQyxRQUFBQSxTQUFTLElBQUlHLGFBQVksQ0FBQ0gsU0FBMUI7QUFDQUMsUUFBQUEsWUFBWSxJQUFJRSxhQUFZLENBQUNGLFlBQTdCO0FBQ0FDLFFBQUFBLFlBQVk7QUFDYjtBQVBJO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRTjs7QUFFRCxNQUFNSSxLQUFLLHVCQUFnQkosWUFBaEIseUJBQ0RELFlBREMsc0JBRUpELFNBRkksdUJBR0hELFVBSEcsQ0FBWDtBQUtBLFNBQU87QUFDTGpCLElBQUFBLElBQUksRUFBRXdCLEtBREQ7QUFFTHpCLElBQUFBLFFBQVEsWUFBS0EsUUFBTCxTQUZIO0FBR0xJLElBQUFBLFFBQVEsRUFBRTtBQUhMLEdBQVA7QUFLRDs7QUFFRCxTQUFTbUIsaUJBQVQsQ0FBMkJDLFFBQTNCLEVBQStDO0FBQzdDLE1BQUlBLFFBQVEsQ0FBQ2xCLElBQVQsS0FBa0IsU0FBbEIsSUFBK0JrQixRQUFRLENBQUNsQixJQUFULEtBQWtCLGNBQXJELEVBQXFFO0FBQ25FLFdBQU87QUFDTFksTUFBQUEsVUFBVSxFQUFFLENBQUMsQ0FEUjtBQUVMQyxNQUFBQSxTQUFTLEVBQUUsQ0FBQyxDQUZQO0FBR0xDLE1BQUFBLFlBQVksRUFBRSxDQUFDO0FBSFYsS0FBUDtBQUtEOztBQUVELE1BQU1NLFNBQTRCLEdBQUdGLFFBQXJDO0FBRUEsTUFBSU4sVUFBVSxHQUFHLENBQWpCO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLENBQWhCO0FBQ0EsTUFBSUMsWUFBWSxHQUFHLENBQW5COztBQWI2Qyw4Q0FjakJNLFNBQVMsQ0FBQ0MsV0FkTztBQUFBOztBQUFBO0FBYzdDLDJEQUFtRDtBQUFBLFVBQXhDQyxhQUF3Qzs7QUFDakQsVUFBSUosUUFBUSxDQUFDbEIsSUFBVCxLQUFrQixTQUF0QixFQUFpQztBQUMvQmMsUUFBQUEsWUFBWSxHQUFHLENBQWY7QUFDQUQsUUFBQUEsU0FBUztBQUNURCxRQUFBQSxVQUFVLElBQUlVLGFBQWEsQ0FBQ2IsTUFBNUI7QUFDRCxPQUpELE1BSU8sSUFBSVMsUUFBUSxDQUFDbEIsSUFBVCxLQUFrQixjQUF0QixFQUFzQztBQUMzQ2MsUUFBQUEsWUFBWTs7QUFEK0Isb0RBRXhCUSxhQUZ3QjtBQUFBOztBQUFBO0FBRTNDLGlFQUFrQztBQUFBLGdCQUF2QkMsSUFBdUI7QUFDaENWLFlBQUFBLFNBQVM7QUFDVEQsWUFBQUEsVUFBVSxJQUFJVyxJQUFJLENBQUNkLE1BQW5CO0FBQ0Q7QUFMMEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU01QztBQUNGO0FBMUI0QztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQTJCN0MsU0FBTztBQUNMRyxJQUFBQSxVQUFVLEVBQVZBLFVBREs7QUFFTEMsSUFBQUEsU0FBUyxFQUFUQSxTQUZLO0FBR0xDLElBQUFBLFlBQVksRUFBWkE7QUFISyxHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHRva21sIGZyb20gJ0BtYXBodWJzL3Rva21sJztcbmltcG9ydCB7IHN0cmluZ2lmeSBhcyBzdHJpbmdpZnlXa3QgfSBmcm9tICd3ZWxsa25vd24nO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQW55R2VvSnNvbiwgR2VvbWV0cnksIFBvbHlnb25hbEdlb21ldHJ5IH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuZXhwb3J0IHR5cGUgRXhwb3J0UGFyYW1ldGVycyA9IHtcbiAgZGF0YTogc3RyaW5nO1xuICBmaWxlbmFtZTogc3RyaW5nO1xuICBtaW1ldHlwZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvR2VvSnNvbihnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIHJldHVybiB7XG4gICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZ2VvSnNvbiwgbnVsbCwgMiksXG4gICAgZmlsZW5hbWU6IGAke2ZpbGVuYW1lfS5nZW9qc29uYCxcbiAgICBtaW1ldHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9LbWwoZ2VvSnNvbjogQW55R2VvSnNvbiwgZmlsZW5hbWU6IHN0cmluZyk6IEV4cG9ydFBhcmFtZXRlcnMge1xuICAvLyBGb3Igc29tZSByZWFzb24sIGdvb2dsZSBtYXBzIGRvZXNuJ3Qgc3VyZmFjZSBpZCB1bmxlc3MgaXQgaXMgaW4gdGhlIHByb3BlcnRpZXNcbiAgLy8gU28sIHB1dCBpdCBhbHNvIGluIHByb3BlcnRpZXNcbiAgaWYgKGdlb0pzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgIGdlb0pzb24uZmVhdHVyZXMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZi5wcm9wZXJ0aWVzID0gZi5wcm9wZXJ0aWVzIHx8IHt9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qga21sU3RyaW5nID0gdG9rbWwoZ2VvSnNvbik7XG5cbiAgLy8ga21sU3RyaW5nID0gYWRkSWRUb0ttbChnZW9Kc29uLCBrbWxTdHJpbmcpO1xuXG4gIHJldHVybiB7XG4gICAgZGF0YToga21sU3RyaW5nLFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0ua21sYCxcbiAgICBtaW1ldHlwZTogJ2FwcGxpY2F0aW9uL3htbCcsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1drdChnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIGxldCB3a3QgPSAnJztcbiAgaWYgKGdlb0pzb24udHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHdrdCA9IHN0cmluZ2lmeVdrdChnZW9Kc29uKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBmZWF0dXJlIGNvbGxlY3Rpb25cbiAgICB3a3QgPSAnJztcbiAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZ2VvSnNvbi5mZWF0dXJlcykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgd2t0ICs9IGAke3N0cmluZ2lmeVdrdChmZWF0dXJlKX1cXG5gO1xuICAgIH1cbiAgICBpZiAod2t0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHdrdCA9IHdrdC5zdWJzdHJpbmcoMCwgd2t0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogd2t0LFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0ud2t0YCxcbiAgICBtaW1ldHlwZTogJ3RleHQvcGxhaW4nLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9TdGF0cyhnZW9Kc29uOiBBbnlHZW9Kc29uLCBmaWxlbmFtZTogc3RyaW5nKTogRXhwb3J0UGFyYW1ldGVycyB7XG4gIGxldCBwb2ludENvdW50ID0gMDtcbiAgbGV0IHJpbmdDb3VudCA9IDA7XG4gIGxldCBwb2x5Z29uQ291bnQgPSAwO1xuICBsZXQgZmVhdHVyZUNvdW50ID0gMDtcblxuICBpZiAoZ2VvSnNvbi50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICBjb25zdCBwb2x5Z29uU3RhdHMgPSBnZXRQb2x5Z29uYWxTdGF0cyhnZW9Kc29uLmdlb21ldHJ5KTtcbiAgICAoeyBwb2ludENvdW50LCByaW5nQ291bnQsIHBvbHlnb25Db3VudCB9ID0gcG9seWdvblN0YXRzKTtcbiAgICBmZWF0dXJlQ291bnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBnZW9Kc29uLmZlYXR1cmVzKSB7XG4gICAgICBjb25zdCBwb2x5Z29uU3RhdHMgPSBnZXRQb2x5Z29uYWxTdGF0cyhmZWF0dXJlLmdlb21ldHJ5KTtcbiAgICAgIHBvaW50Q291bnQgKz0gcG9seWdvblN0YXRzLnBvaW50Q291bnQ7XG4gICAgICByaW5nQ291bnQgKz0gcG9seWdvblN0YXRzLnJpbmdDb3VudDtcbiAgICAgIHBvbHlnb25Db3VudCArPSBwb2x5Z29uU3RhdHMucG9seWdvbkNvdW50O1xuICAgICAgZmVhdHVyZUNvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSBgRmVhdHVyZXM6ICR7ZmVhdHVyZUNvdW50fVxuUG9seWdvbnM6ICR7cG9seWdvbkNvdW50fVxuUmluZ3M6ICR7cmluZ0NvdW50fVxuUG9pbnRzOiAke3BvaW50Q291bnR9YDtcblxuICByZXR1cm4ge1xuICAgIGRhdGE6IHN0YXRzLFxuICAgIGZpbGVuYW1lOiBgJHtmaWxlbmFtZX0udHh0YCxcbiAgICBtaW1ldHlwZTogJ3RleHQvcGxhaW4nLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRQb2x5Z29uYWxTdGF0cyhnZW9tZXRyeTogR2VvbWV0cnkpIHtcbiAgaWYgKGdlb21ldHJ5LnR5cGUgIT09ICdQb2x5Z29uJyAmJiBnZW9tZXRyeS50eXBlICE9PSAnTXVsdGlQb2x5Z29uJykge1xuICAgIHJldHVybiB7XG4gICAgICBwb2ludENvdW50OiAtMSxcbiAgICAgIHJpbmdDb3VudDogLTEsXG4gICAgICBwb2x5Z29uQ291bnQ6IC0xLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwb2x5Z29uYWw6IFBvbHlnb25hbEdlb21ldHJ5ID0gZ2VvbWV0cnk7XG5cbiAgbGV0IHBvaW50Q291bnQgPSAwO1xuICBsZXQgcmluZ0NvdW50ID0gMDtcbiAgbGV0IHBvbHlnb25Db3VudCA9IDA7XG4gIGZvciAoY29uc3QgcmluZ09yUG9seWdvbiBvZiBwb2x5Z29uYWwuY29vcmRpbmF0ZXMpIHtcbiAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICBwb2x5Z29uQ291bnQgPSAxO1xuICAgICAgcmluZ0NvdW50Kys7XG4gICAgICBwb2ludENvdW50ICs9IHJpbmdPclBvbHlnb24ubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcbiAgICAgIHBvbHlnb25Db3VudCsrO1xuICAgICAgZm9yIChjb25zdCByaW5nIG9mIHJpbmdPclBvbHlnb24pIHtcbiAgICAgICAgcmluZ0NvdW50Kys7XG4gICAgICAgIHBvaW50Q291bnQgKz0gcmluZy5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnRDb3VudCxcbiAgICByaW5nQ291bnQsXG4gICAgcG9seWdvbkNvdW50LFxuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist/lib/importer.js b/modules/editor/dist/lib/importer.js new file mode 100644 index 000000000..380ae7377 --- /dev/null +++ b/modules/editor/dist/lib/importer.js @@ -0,0 +1,211 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseImport = parseImport; + +var _togeojson = require("@tmcw/togeojson"); + +var _core = require("@loaders.gl/core"); + +var _wkt = require("@loaders.gl/wkt"); + +/* eslint-env browser */ +function shouldTryGeoJson(data) { + return data.startsWith('{'); +} + +function shouldTryKml(data) { + return data.startsWith('<'); +} + +function shouldTryWkt(data) { + return data.startsWith('POINT') || data.startsWith('LINESTRING') || data.startsWith('POLYGON') || data.startsWith('MULTIPOINT') || data.startsWith('MULTILINESTRING') || data.startsWith('MULTIPOLYGON'); +} + +function getCleanedFeatures(geojson) { + if (geojson.type !== 'FeatureCollection' && geojson.type !== 'Feature') { + throw Error("GeoJSON must have type of 'Feature' or 'FeatureCollection'"); + } + + var features = geojson.type === 'FeatureCollection' ? geojson.features : [geojson]; + return features.map(getCleanedFeature); +} + +function getCleanedFeature(feature) { + var id = feature.id; // reduce null-checking + + var properties = feature.properties || {}; + var geometry = feature.geometry; // @ts-ignore + + if (geometry.type === 'GeometryCollection' && geometry.geometries.length === 1) { + // There's only one geometry + // @ts-ignore + geometry = geometry.geometries[0]; // @ts-ignore + } else if (geometry.type === 'GeometryCollection' && geometry.geometries.length > 1) { + // @ts-ignore + var types = new Set(geometry.geometries.map(function (g) { + return g.type; + })); + + if (types.size === 1) { + // See if it can be combined into a Multi* geometry + var type = types.values().next().value; + + if (type === 'Polygon') { + // Combine all the Polygons into a single MultiPolygon + geometry = { + type: 'MultiPolygon', + // @ts-ignore + coordinates: geometry.geometries.map(function (g) { + return g.coordinates; + }) + }; + } else if (type === 'LineString') { + // Combine all the LineStrings into a single MultiLineString + geometry = { + type: 'MultiLineString', + // @ts-ignore + coordinates: geometry.geometries.map(function (g) { + return g.coordinates; + }) + }; + } + } else { + // Mixed geometry types, we don't yet handle it + throw Error('GeometryCollection geometry type not yet supported'); + } + } // @ts-ignore + + + return { + type: 'Feature', + id: id, + geometry: geometry, + properties: properties + }; +} + +function parseImportString(data) { + data = data.trim(); + var validData; + var validationErrors = []; + + if (shouldTryGeoJson(data)) { + // Parse as GeoJSON + try { + var parsed = JSON.parse(data); + validData = { + valid: true, + type: 'GeoJSON', + features: getCleanedFeatures(parsed) + }; + } catch (err) { + validationErrors.push('Error parsing GeoJSON'); + validationErrors.push(err.toString()); + } + } else if (shouldTryKml(data)) { + // Parse as KML + var xml = new DOMParser().parseFromString(data, 'text/xml'); + + try { + var _parsed = (0, _togeojson.kml)(xml); + /* + TODO: Revisit using loaders.gl/kml for this later + const parsed_ = parseSync(data, KMLasGeoJsonLoader); + // This is changing the coordinates to floats, because in loaders.gl/kml 2.1.1 they are returned as strings. + const parsed = { + ...parsed_, + features: parsed_.features.map(f => ({ + ...f, + geometry: { + ...f.geometry, + coordinates: f.geometry.coordinates.map(coords => coords.map(triple => triple.map(s => Number.parseFloat(s)))) + } + })) + }; + */ + + + var isFeature = _parsed && _parsed.type === 'Feature'; + var isFeatureCollectionWithFeatures = _parsed && _parsed.type === 'FeatureCollection' && _parsed.features.length > 0; + var isValid = isFeature || isFeatureCollectionWithFeatures; + + if (isValid) { + validData = { + valid: true, + type: 'KML', + features: getCleanedFeatures(_parsed) + }; + } else { + validationErrors.push('Invalid KML'); + } + } catch (err) { + validationErrors.push('Error parsing KML'); + validationErrors.push(err.toString()); + } + } else if (shouldTryWkt(data)) { + try { + var _parsed2 = (0, _core.parseSync)(data, _wkt.WKTLoader); + + if (_parsed2) { + validData = { + valid: true, + type: 'WKT', + features: [{ + type: 'Feature', + properties: {}, + geometry: _parsed2 + }] + }; + } else { + validationErrors.push('Invalid WKT'); + } + } catch (err) { + validationErrors.push('Error parsing WKT'); + validationErrors.push(err.toString()); + } + } else { + validationErrors.push('Unknown data format'); + } + + if (validData) { + return Promise.resolve(validData); + } + + return Promise.resolve({ + valid: false, + validationErrors: validationErrors + }); +} + +function parseImportFile(file) { + return new Promise(function (resolve, reject) { + var reader = new FileReader(); + + reader.onload = function () { + var fileAsString = reader.result; + resolve(parseImportString(fileAsString)); + }; + + reader.onabort = function () { + reject(Error('file reading was aborted')); + }; + + reader.onerror = function () { + reject(Error('file reading has failed')); + }; + + reader.readAsText(file); + }); +} + +function parseImport(data) { + if (typeof data === 'string') { + return parseImportString(data); + } + + return parseImportFile(data); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1wb3J0ZXIudHMiXSwibmFtZXMiOlsic2hvdWxkVHJ5R2VvSnNvbiIsImRhdGEiLCJzdGFydHNXaXRoIiwic2hvdWxkVHJ5S21sIiwic2hvdWxkVHJ5V2t0IiwiZ2V0Q2xlYW5lZEZlYXR1cmVzIiwiZ2VvanNvbiIsInR5cGUiLCJFcnJvciIsImZlYXR1cmVzIiwibWFwIiwiZ2V0Q2xlYW5lZEZlYXR1cmUiLCJmZWF0dXJlIiwiaWQiLCJwcm9wZXJ0aWVzIiwiZ2VvbWV0cnkiLCJnZW9tZXRyaWVzIiwibGVuZ3RoIiwidHlwZXMiLCJTZXQiLCJnIiwic2l6ZSIsInZhbHVlcyIsIm5leHQiLCJ2YWx1ZSIsImNvb3JkaW5hdGVzIiwicGFyc2VJbXBvcnRTdHJpbmciLCJ0cmltIiwidmFsaWREYXRhIiwidmFsaWRhdGlvbkVycm9ycyIsInBhcnNlZCIsIkpTT04iLCJwYXJzZSIsInZhbGlkIiwiZXJyIiwicHVzaCIsInRvU3RyaW5nIiwieG1sIiwiRE9NUGFyc2VyIiwicGFyc2VGcm9tU3RyaW5nIiwiaXNGZWF0dXJlIiwiaXNGZWF0dXJlQ29sbGVjdGlvbldpdGhGZWF0dXJlcyIsImlzVmFsaWQiLCJXS1RMb2FkZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhcnNlSW1wb3J0RmlsZSIsImZpbGUiLCJyZWplY3QiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiZmlsZUFzU3RyaW5nIiwicmVzdWx0Iiwib25hYm9ydCIsIm9uZXJyb3IiLCJyZWFkQXNUZXh0IiwicGFyc2VJbXBvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFFQTs7QUFDQTs7QUFMQTtBQXlCQSxTQUFTQSxnQkFBVCxDQUEwQkMsSUFBMUIsRUFBaUQ7QUFDL0MsU0FBT0EsSUFBSSxDQUFDQyxVQUFMLENBQWdCLEdBQWhCLENBQVA7QUFDRDs7QUFFRCxTQUFTQyxZQUFULENBQXNCRixJQUF0QixFQUE2QztBQUMzQyxTQUFPQSxJQUFJLENBQUND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Q0FBQ3hDLEtBQUssQ0FBQyx5QkFBRCxDQUFOLENBQU47QUFDRCxLQUZEOztBQUlBeUMsSUFBQUEsTUFBTSxDQUFDTyxVQUFQLENBQWtCVCxJQUFsQjtBQUNELEdBZE0sQ0FBUDtBQWVEOztBQUVNLFNBQVNVLFdBQVQsQ0FBcUJ4RCxJQUFyQixFQUErRDtBQUNwRSxNQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7QUFDNUIsV0FBT3lCLGlCQUFpQixDQUFDekIsSUFBRCxDQUF4QjtBQUNEOztBQUNELFNBQU82QyxlQUFlLENBQUM3QyxJQUFELENBQXRCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuaW1wb3J0IHsga21sIH0gZnJvbSAnQHRtY3cvdG9nZW9qc29uJztcblxuaW1wb3J0IHsgcGFyc2VTeW5jIH0gZnJvbSAnQGxvYWRlcnMuZ2wvY29yZSc7XG5pbXBvcnQgeyBXS1RMb2FkZXIgfSBmcm9tICdAbG9hZGVycy5nbC93a3QnO1xuXG4vLyBJZiB3ZSB3YW50IHRvIHN1cHBvcnQgbm9kZSAtLSB3ZSBuZWVkIHRvIGltcG9ydCB4bWxkb20uXG4vLyBGb3Igbm93LCB3ZSdyZSBvbmx5IHN1cHBvcnRpbmcgYnJvd3NlciBzbyB3ZSBjYW4gbGVhdmUgaXQgb3V0LlxuLy8gaW1wb3J0IHsgRE9NUGFyc2VyIH0gZnJvbSAneG1sZG9tJztcbmltcG9ydCB7IEFueUdlb0pzb24sIEZlYXR1cmUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5leHBvcnQgdHlwZSBWYWxpZEltcG9ydERhdGEgPSB7XG4gIHZhbGlkOiB0cnVlO1xuICB0eXBlOiAnR2VvSlNPTicgfCAnS01MJyB8ICdXS1QnO1xuICBmZWF0dXJlczogRmVhdHVyZVtdO1xufTtcblxuZXhwb3J0IHR5cGUgSW52YWxpZEltcG9ydERhdGEgPSB7XG4gIHZhbGlkOiBmYWxzZTtcbiAgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBJbXBvcnREYXRhID0gVmFsaWRJbXBvcnREYXRhIHwgSW52YWxpZEltcG9ydERhdGE7XG5cbmZ1bmN0aW9uIHNob3VsZFRyeUdlb0pzb24oZGF0YTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBkYXRhLnN0YXJ0c1dpdGgoJ3snKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVHJ5S21sKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZGF0YS5zdGFydHNXaXRoKCc8Jyk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFRyeVdrdChkYXRhOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ1BPSU5UJykgfHxcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ0xJTkVTVFJJTkcnKSB8fFxuICAgIGRhdGEuc3RhcnRzV2l0aCgnUE9MWUdPTicpIHx8XG4gICAgZGF0YS5zdGFydHNXaXRoKCdNVUxUSVBPSU5UJykgfHxcbiAgICBkYXRhLnN0YXJ0c1dpdGgoJ01VTFRJTElORVNUUklORycpIHx8XG4gICAgZGF0YS5zdGFydHNXaXRoKCdNVUxUSVBPTFlHT04nKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRDbGVhbmVkRmVhdHVyZXMoZ2VvanNvbjogQW55R2VvSnNvbik6IEZlYXR1cmVbXSB7XG4gIGlmIChnZW9qc29uLnR5cGUgIT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgZ2VvanNvbi50eXBlICE9PSAnRmVhdHVyZScpIHtcbiAgICB0aHJvdyBFcnJvcihgR2VvSlNPTiBtdXN0IGhhdmUgdHlwZSBvZiAnRmVhdHVyZScgb3IgJ0ZlYXR1cmVDb2xsZWN0aW9uJ2ApO1xuICB9XG5cbiAgY29uc3QgZmVhdHVyZXM6IEZlYXR1cmVbXSA9IGdlb2pzb24udHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyA/IGdlb2pzb24uZmVhdHVyZXMgOiBbZ2VvanNvbl07XG5cbiAgcmV0dXJuIGZlYXR1cmVzLm1hcChnZXRDbGVhbmVkRmVhdHVyZSk7XG59XG5cbmZ1bmN0aW9uIGdldENsZWFuZWRGZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUpOiBGZWF0dXJlIHtcbiAgY29uc3QgeyBpZCB9ID0gZmVhdHVyZTtcbiAgLy8gcmVkdWNlIG51bGwtY2hlY2tpbmdcbiAgY29uc3QgcHJvcGVydGllcyA9IGZlYXR1cmUucHJvcGVydGllcyB8fCB7fTtcblxuICBsZXQgZ2VvbWV0cnkgPSBmZWF0dXJlLmdlb21ldHJ5O1xuICAvLyBAdHMtaWdub3JlXG4gIGlmIChnZW9tZXRyeS50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJyAmJiBnZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRoZXJlJ3Mgb25seSBvbmUgZ2VvbWV0cnlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2VvbWV0cnkgPSBnZW9tZXRyeS5nZW9tZXRyaWVzWzBdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSBlbHNlIGlmIChnZW9tZXRyeS50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJyAmJiBnZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aCA+IDEpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdHlwZXMgPSBuZXcgU2V0KGdlb21ldHJ5Lmdlb21ldHJpZXMubWFwKChnKSA9PiBnLnR5cGUpKTtcbiAgICBpZiAodHlwZXMuc2l6ZSA9PT0gMSkge1xuICAgICAgLy8gU2VlIGlmIGl0IGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgTXVsdGkqIGdlb21ldHJ5XG4gICAgICBjb25zdCB0eXBlID0gdHlwZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgaWYgKHR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAvLyBDb21iaW5lIGFsbCB0aGUgUG9seWdvbnMgaW50byBhIHNpbmdsZSBNdWx0aVBvbHlnb25cbiAgICAgICAgZ2VvbWV0cnkgPSB7XG4gICAgICAgICAgdHlwZTogJ011bHRpUG9seWdvbicsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBnZW9tZXRyeS5nZW9tZXRyaWVzLm1hcCgoZykgPT4gZy5jb29yZGluYXRlcyksXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgICAvLyBDb21iaW5lIGFsbCB0aGUgTGluZVN0cmluZ3MgaW50byBhIHNpbmdsZSBNdWx0aUxpbmVTdHJpbmdcbiAgICAgICAgZ2VvbWV0cnkgPSB7XG4gICAgICAgICAgdHlwZTogJ011bHRpTGluZVN0cmluZycsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBnZW9tZXRyeS5nZW9tZXRyaWVzLm1hcCgoZykgPT4gZy5jb29yZGluYXRlcyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1peGVkIGdlb21ldHJ5IHR5cGVzLCB3ZSBkb24ndCB5ZXQgaGFuZGxlIGl0XG4gICAgICB0aHJvdyBFcnJvcignR2VvbWV0cnlDb2xsZWN0aW9uIGdlb21ldHJ5IHR5cGUgbm90IHlldCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgIGlkLFxuICAgIGdlb21ldHJ5LFxuICAgIHByb3BlcnRpZXMsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW1wb3J0U3RyaW5nKGRhdGE6IHN0cmluZyk6IFByb21pc2U8SW1wb3J0RGF0YT4ge1xuICBkYXRhID0gZGF0YS50cmltKCk7XG4gIGxldCB2YWxpZERhdGE6IFZhbGlkSW1wb3J0RGF0YSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGlmIChzaG91bGRUcnlHZW9Kc29uKGRhdGEpKSB7XG4gICAgLy8gUGFyc2UgYXMgR2VvSlNPTlxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgdmFsaWREYXRhID0ge1xuICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ0dlb0pTT04nLFxuICAgICAgICBmZWF0dXJlczogZ2V0Q2xlYW5lZEZlYXR1cmVzKHBhcnNlZCksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdFcnJvciBwYXJzaW5nIEdlb0pTT04nKTtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHNob3VsZFRyeUttbChkYXRhKSkge1xuICAgIC8vIFBhcnNlIGFzIEtNTFxuICAgIGNvbnN0IHhtbCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoZGF0YSwgJ3RleHQveG1sJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0ga21sKHhtbCk7XG5cbiAgICAgIC8qXG4gICAgICBUT0RPOiBSZXZpc2l0IHVzaW5nIGxvYWRlcnMuZ2wva21sIGZvciB0aGlzIGxhdGVyXG4gICAgICBjb25zdCBwYXJzZWRfID0gcGFyc2VTeW5jKGRhdGEsIEtNTGFzR2VvSnNvbkxvYWRlcik7XG4gICAgICAvLyBUaGlzIGlzIGNoYW5naW5nIHRoZSBjb29yZGluYXRlcyB0byBmbG9hdHMsIGJlY2F1c2UgaW4gbG9hZGVycy5nbC9rbWwgMi4xLjEgdGhleSBhcmUgcmV0dXJuZWQgYXMgc3RyaW5ncy5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHtcbiAgICAgICAgLi4ucGFyc2VkXyxcbiAgICAgICAgZmVhdHVyZXM6IHBhcnNlZF8uZmVhdHVyZXMubWFwKGYgPT4gKHtcbiAgICAgICAgICAuLi5mLFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICAuLi5mLmdlb21ldHJ5LFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGYuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubWFwKGNvb3JkcyA9PiBjb29yZHMubWFwKHRyaXBsZSA9PiB0cmlwbGUubWFwKHMgPT4gTnVtYmVyLnBhcnNlRmxvYXQocykpKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pKVxuICAgICAgfTtcbiAgICAgICovXG4gICAgICBjb25zdCBpc0ZlYXR1cmUgPSBwYXJzZWQgJiYgcGFyc2VkLnR5cGUgPT09ICdGZWF0dXJlJztcbiAgICAgIGNvbnN0IGlzRmVhdHVyZUNvbGxlY3Rpb25XaXRoRmVhdHVyZXMgPVxuICAgICAgICBwYXJzZWQgJiYgcGFyc2VkLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgcGFyc2VkLmZlYXR1cmVzLmxlbmd0aCA+IDA7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gaXNGZWF0dXJlIHx8IGlzRmVhdHVyZUNvbGxlY3Rpb25XaXRoRmVhdHVyZXM7XG4gICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICB2YWxpZERhdGEgPSB7XG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0tNTCcsXG4gICAgICAgICAgZmVhdHVyZXM6IGdldENsZWFuZWRGZWF0dXJlcyhwYXJzZWQpLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdJbnZhbGlkIEtNTCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKCdFcnJvciBwYXJzaW5nIEtNTCcpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVyci50b1N0cmluZygpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2hvdWxkVHJ5V2t0KGRhdGEpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3luYyhkYXRhLCBXS1RMb2FkZXIpO1xuICAgICAgaWYgKHBhcnNlZCkge1xuICAgICAgICB2YWxpZERhdGEgPSB7XG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ1dLVCcsXG4gICAgICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgICAgICAgZ2VvbWV0cnk6IHBhcnNlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnSW52YWxpZCBXS1QnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnRXJyb3IgcGFyc2luZyBXS1QnKTtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnIudG9TdHJpbmcoKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaCgnVW5rbm93biBkYXRhIGZvcm1hdCcpO1xuICB9XG5cbiAgaWYgKHZhbGlkRGF0YSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsaWREYXRhKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgdmFsaWRhdGlvbkVycm9ycyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW1wb3J0RmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTxJbXBvcnREYXRhPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZmlsZUFzU3RyaW5nOiBhbnkgPSByZWFkZXIucmVzdWx0O1xuICAgICAgcmVzb2x2ZShwYXJzZUltcG9ydFN0cmluZyhmaWxlQXNTdHJpbmcpKTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmFib3J0ID0gKCkgPT4ge1xuICAgICAgcmVqZWN0KEVycm9yKCdmaWxlIHJlYWRpbmcgd2FzIGFib3J0ZWQnKSk7XG4gICAgfTtcbiAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcbiAgICAgIHJlamVjdChFcnJvcignZmlsZSByZWFkaW5nIGhhcyBmYWlsZWQnKSk7XG4gICAgfTtcblxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW1wb3J0KGRhdGE6IHN0cmluZyB8IEZpbGUpOiBQcm9taXNlPEltcG9ydERhdGE+IHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUltcG9ydFN0cmluZyhkYXRhKTtcbiAgfVxuICByZXR1cm4gcGFyc2VJbXBvcnRGaWxlKGRhdGEpO1xufVxuIl19 \ No newline at end of file diff --git a/modules/editor/dist/toolbox.js b/modules/editor/dist/toolbox.js new file mode 100644 index 000000000..1b5021e43 --- /dev/null +++ b/modules/editor/dist/toolbox.js @@ -0,0 +1,334 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Toolbox = Toolbox; + +var React = _interopRequireWildcard(require("react")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _styledComponents = _interopRequireDefault(require("styled-components")); + +var _icon = require("./icon"); + +var _importModal = require("./import-modal"); + +var _exportModal = require("./export-modal"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _templateObject4() { + var data = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: row-reverse;\n position: absolute;\n top: 0;\n right: 0;\n"]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["\n position: relative;\n"]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["\n color: #fff;\n background: ", ";\n font-size: 1em;\n font-weight: 400;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,\n 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n border: 1px solid transparent;\n border-radius: 0.25em;\n margin: 0.05em;\n padding: 0.1em 0.2em;\n :hover {\n background: rgb(128, 137, 133);\n }\n"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["\n position: absolute;\n display: flex;\n flex-direction: column;\n top: 10px;\n right: 10px;\n"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var Tools = _styledComponents["default"].div(_templateObject()); + +var Button = _styledComponents["default"].button(_templateObject2(), function (_ref) { + var kind = _ref.kind, + active = _ref.active; + return kind === 'danger' ? 'rgb(180, 40, 40)' : active ? 'rgb(0, 105, 217)' : 'rgb(90, 98, 94)'; +}); + +var SubToolsContainer = _styledComponents["default"].div(_templateObject3()); + +var SubTools = _styledComponents["default"].div(_templateObject4()); + +var MODE_GROUPS = [{ + modes: [{ + mode: _editModes.ViewMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "pointer" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawPointMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "map-pin" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawLineStringMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "stats" + }) + }] +}, { + modes: [{ + mode: _editModes.DrawPolygonMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-polygon" + }) + }, { + mode: _editModes.DrawRectangleMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "rectangle" + }) + }, { + mode: _editModes.DrawCircleFromCenterMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "circle" + }) + }] +}, { + modes: [{ + mode: _editModes.MeasureDistanceMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "ruler" + }) + }, { + mode: _editModes.MeasureAngleMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-triangle" + }) + }, { + mode: _editModes.MeasureAreaMode, + content: /*#__PURE__*/React.createElement(_icon.Icon, { + name: "shape-square" + }) + }] +}]; + +function ModeButton(_ref2) { + var buttonConfig = _ref2.buttonConfig, + mode = _ref2.mode, + onClick = _ref2.onClick; + return /*#__PURE__*/React.createElement(Button, { + active: buttonConfig.mode === mode, + onClick: onClick + }, buttonConfig.content); +} + +function ModeGroupButtons(_ref3) { + var modeGroup = _ref3.modeGroup, + mode = _ref3.mode, + onSetMode = _ref3.onSetMode; + + var _React$useState = React.useState(false), + _React$useState2 = _slicedToArray(_React$useState, 2), + expanded = _React$useState2[0], + setExpanded = _React$useState2[1]; + + var modes = modeGroup.modes; + var subTools = null; + + if (expanded) { + subTools = /*#__PURE__*/React.createElement(SubTools, null, modes.map(function (buttonConfig, i) { + return /*#__PURE__*/React.createElement(ModeButton, { + key: i, + buttonConfig: buttonConfig, + mode: mode, + onClick: function onClick() { + onSetMode(function () { + return buttonConfig.mode; + }); + setExpanded(false); + } + }); + })); + } // Get the button config if it is active otherwise, choose the first + + + var buttonConfig = modes.find(function (m) { + return m.mode === mode; + }) || modes[0]; + return /*#__PURE__*/React.createElement(SubToolsContainer, null, subTools, /*#__PURE__*/React.createElement(ModeButton, { + buttonConfig: buttonConfig, + mode: mode, + onClick: function onClick() { + onSetMode(function () { + return buttonConfig.mode; + }); + setExpanded(true); + } + })); +} + +function Toolbox(_ref4) { + var mode = _ref4.mode, + modeConfig = _ref4.modeConfig, + geoJson = _ref4.geoJson, + onSetMode = _ref4.onSetMode, + onSetModeConfig = _ref4.onSetModeConfig, + onSetGeoJson = _ref4.onSetGeoJson, + _onImport = _ref4.onImport; + + var _React$useState3 = React.useState(false), + _React$useState4 = _slicedToArray(_React$useState3, 2), + showConfig = _React$useState4[0], + setShowConfig = _React$useState4[1]; + + var _React$useState5 = React.useState(false), + _React$useState6 = _slicedToArray(_React$useState5, 2), + showImport = _React$useState6[0], + setShowImport = _React$useState6[1]; + + var _React$useState7 = React.useState(false), + _React$useState8 = _slicedToArray(_React$useState7, 2), + showExport = _React$useState8[0], + setShowExport = _React$useState8[1]; + + var _React$useState9 = React.useState(false), + _React$useState10 = _slicedToArray(_React$useState9, 2), + showClearConfirmation = _React$useState10[0], + setShowClearConfirmation = _React$useState10[1]; + + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tools, null, MODE_GROUPS.map(function (modeGroup, i) { + return /*#__PURE__*/React.createElement(ModeGroupButtons, { + key: i, + modeGroup: modeGroup, + mode: mode, + onSetMode: onSetMode + }); + }), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowExport(true); + }, + title: "Export" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "export" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowImport(true); + }, + title: "Import" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "import" + })), /*#__PURE__*/React.createElement(SubToolsContainer, null, showConfig && /*#__PURE__*/React.createElement(SubTools, null, /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowConfig(false); + } + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "chevron-right" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'difference' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'difference' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "minus-front" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'union' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'union' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "unite" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return onSetModeConfig({ + booleanOperation: 'intersection' + }); + }, + active: modeConfig && modeConfig.booleanOperation === 'intersection' + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "intersect" + }))), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowConfig(true); + } + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "cog" + }))), /*#__PURE__*/React.createElement(SubToolsContainer, null, showClearConfirmation && /*#__PURE__*/React.createElement(SubTools, null, /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + onSetGeoJson({ + type: 'FeatureCollection', + features: [] + }); + setShowClearConfirmation(false); + }, + kind: "danger", + title: "Clear all features" + }, "Clear all features ", /*#__PURE__*/React.createElement(_icon.Icon, { + name: "trash" + })), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowClearConfirmation(false); + } + }, "Cancel")), /*#__PURE__*/React.createElement(Button, { + onClick: function onClick() { + return setShowClearConfirmation(true); + }, + title: "Clear" + }, /*#__PURE__*/React.createElement(_icon.Icon, { + name: "trash" + })))), showImport && /*#__PURE__*/React.createElement(_importModal.ImportModal, { + onImport: function onImport(imported) { + _onImport(imported); + + setShowImport(false); + }, + onClose: function onClose() { + return setShowImport(false); + } + }), showExport && /*#__PURE__*/React.createElement(_exportModal.ExportModal, { + geoJson: geoJson, + onClose: function onClose() { + return setShowExport(false); + } + })); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90b29sYm94LnRzeCJdLCJuYW1lcyI6WyJUb29scyIsInN0eWxlZCIsImRpdiIsIkJ1dHRvbiIsImJ1dHRvbiIsImtpbmQiLCJhY3RpdmUiLCJTdWJUb29sc0NvbnRhaW5lciIsIlN1YlRvb2xzIiwiTU9ERV9HUk9VUFMiLCJtb2RlcyIsIm1vZGUiLCJWaWV3TW9kZSIsImNvbnRlbnQiLCJEcmF3UG9pbnRNb2RlIiwiRHJhd0xpbmVTdHJpbmdNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiRHJhd1JlY3RhbmdsZU1vZGUiLCJEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUiLCJNZWFzdXJlRGlzdGFuY2VNb2RlIiwiTWVhc3VyZUFuZ2xlTW9kZSIsIk1lYXN1cmVBcmVhTW9kZSIsIk1vZGVCdXR0b24iLCJidXR0b25Db25maWciLCJvbkNsaWNrIiwiTW9kZUdyb3VwQnV0dG9ucyIsIm1vZGVHcm91cCIsIm9uU2V0TW9kZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJleHBhbmRlZCIsInNldEV4cGFuZGVkIiwic3ViVG9vbHMiLCJtYXAiLCJpIiwiZmluZCIsIm0iLCJUb29sYm94IiwibW9kZUNvbmZpZyIsImdlb0pzb24iLCJvblNldE1vZGVDb25maWciLCJvblNldEdlb0pzb24iLCJvbkltcG9ydCIsInNob3dDb25maWciLCJzZXRTaG93Q29uZmlnIiwic2hvd0ltcG9ydCIsInNldFNob3dJbXBvcnQiLCJzaG93RXhwb3J0Iiwic2V0U2hvd0V4cG9ydCIsInNob3dDbGVhckNvbmZpcm1hdGlvbiIsInNldFNob3dDbGVhckNvbmZpcm1hdGlvbiIsImJvb2xlYW5PcGVyYXRpb24iLCJ0eXBlIiwiZmVhdHVyZXMiLCJpbXBvcnRlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFB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Q0Usb0JBQUMsVUFBRDtBQUFNLElBQUEsSUFBSSxFQUFDO0FBQVgsSUFERixDQWhCRixDQS9DRixDQURGLEVBd0VHTCxVQUFVLGlCQUNULG9CQUFDLHdCQUFEO0FBQ0UsSUFBQSxRQUFRLEVBQUUsa0JBQUNTLFFBQUQsRUFBYztBQUN0QlosTUFBQUEsU0FBUSxDQUFDWSxRQUFELENBQVI7O0FBQ0FSLE1BQUFBLGFBQWEsQ0FBQyxLQUFELENBQWI7QUFDRCxLQUpIO0FBS0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUFNQSxhQUFhLENBQUMsS0FBRCxDQUFuQjtBQUFBO0FBTFgsSUF6RUosRUFrRkdDLFVBQVUsaUJBQUksb0JBQUMsd0JBQUQ7QUFBYSxJQUFBLE9BQU8sRUFBRVIsT0FBdEI7QUFBK0IsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUFNUyxhQUFhLENBQUMsS0FBRCxDQUFuQjtBQUFBO0FBQXhDLElBbEZqQixDQURGO0FBc0ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdSZWN0YW5nbGVNb2RlLFxuICBNZWFzdXJlRGlzdGFuY2VNb2RlLFxuICBNZWFzdXJlQW5nbGVNb2RlLFxuICBNZWFzdXJlQXJlYU1vZGUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuL2ljb24nO1xuXG5pbXBvcnQgeyBJbXBvcnRNb2RhbCB9IGZyb20gJy4vaW1wb3J0LW1vZGFsJztcbmltcG9ydCB7IEV4cG9ydE1vZGFsIH0gZnJvbSAnLi9leHBvcnQtbW9kYWwnO1xuXG5jb25zdCBUb29scyA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgdG9wOiAxMHB4O1xuICByaWdodDogMTBweDtcbmA7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZC5idXR0b248eyBhY3RpdmU/OiBib29sZWFuOyBraW5kPzogc3RyaW5nIH0+YFxuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogJHsoeyBraW5kLCBhY3RpdmUgfSkgPT5cbiAgICBraW5kID09PSAnZGFuZ2VyJyA/ICdyZ2IoMTgwLCA0MCwgNDApJyA6IGFjdGl2ZSA/ICdyZ2IoMCwgMTA1LCAyMTcpJyA6ICdyZ2IoOTAsIDk4LCA5NCknfTtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgJ0hlbHZldGljYSBOZXVlJywgQXJpYWwsXG4gICAgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICdOb3RvIENvbG9yIEVtb2ppJztcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDAuMjVlbTtcbiAgbWFyZ2luOiAwLjA1ZW07XG4gIHBhZGRpbmc6IDAuMWVtIDAuMmVtO1xuICA6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYigxMjgsIDEzNywgMTMzKTtcbiAgfVxuYDtcblxuY29uc3QgU3ViVG9vbHNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5jb25zdCBTdWJUb29scyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuYDtcblxuZXhwb3J0IHR5cGUgUHJvcHMgPSB7XG4gIG1vZGU6IGFueTtcbiAgbW9kZUNvbmZpZzogYW55O1xuICBnZW9Kc29uOiBhbnk7XG4gIG9uU2V0TW9kZTogKG1vZGU6IGFueSkgPT4gdW5rbm93bjtcbiAgb25TZXRNb2RlQ29uZmlnOiAobW9kZUNvbmZpZzogYW55KSA9PiB1bmtub3duO1xuICBvblNldEdlb0pzb246IChnZW9qc29uOiBhbnkpID0+IHVua25vd247XG4gIG9uSW1wb3J0OiAoaW1wb3J0ZWQ6IGFueSkgPT4gdW5rbm93bjtcbn07XG5cbmNvbnN0IE1PREVfR1JPVVBTID0gW1xuICB7XG4gICAgbW9kZXM6IFt7IG1vZGU6IFZpZXdNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwicG9pbnRlclwiIC8+IH1dLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFt7IG1vZGU6IERyYXdQb2ludE1vZGUsIGNvbnRlbnQ6IDxJY29uIG5hbWU9XCJtYXAtcGluXCIgLz4gfV0sXG4gIH0sXG4gIHtcbiAgICBtb2RlczogW1xuICAgICAge1xuICAgICAgICBtb2RlOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gICAgICAgIGNvbnRlbnQ6IDxJY29uIG5hbWU9XCJzdGF0c1wiIC8+LFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFtcbiAgICAgIHsgbW9kZTogRHJhd1BvbHlnb25Nb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwic2hhcGUtcG9seWdvblwiIC8+IH0sXG4gICAgICB7IG1vZGU6IERyYXdSZWN0YW5nbGVNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwicmVjdGFuZ2xlXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwiY2lyY2xlXCIgLz4gfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgbW9kZXM6IFtcbiAgICAgIHsgbW9kZTogTWVhc3VyZURpc3RhbmNlTW9kZSwgY29udGVudDogPEljb24gbmFtZT1cInJ1bGVyXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogTWVhc3VyZUFuZ2xlTW9kZSwgY29udGVudDogPEljb24gbmFtZT1cInNoYXBlLXRyaWFuZ2xlXCIgLz4gfSxcbiAgICAgIHsgbW9kZTogTWVhc3VyZUFyZWFNb2RlLCBjb250ZW50OiA8SWNvbiBuYW1lPVwic2hhcGUtc3F1YXJlXCIgLz4gfSxcbiAgICBdLFxuICB9LFxuXTtcblxuZnVuY3Rpb24gTW9kZUJ1dHRvbih7IGJ1dHRvbkNvbmZpZywgbW9kZSwgb25DbGljayB9OiBhbnkpIHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uIGFjdGl2ZT17YnV0dG9uQ29uZmlnLm1vZGUgPT09IG1vZGV9IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAge2J1dHRvbkNvbmZpZy5jb250ZW50fVxuICAgIDwvQnV0dG9uPlxuICApO1xufVxuZnVuY3Rpb24gTW9kZUdyb3VwQnV0dG9ucyh7IG1vZGVHcm91cCwgbW9kZSwgb25TZXRNb2RlIH06IGFueSkge1xuICBjb25zdCBbZXhwYW5kZWQsIHNldEV4cGFuZGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IG1vZGVzIH0gPSBtb2RlR3JvdXA7XG5cbiAgbGV0IHN1YlRvb2xzID0gbnVsbDtcblxuICBpZiAoZXhwYW5kZWQpIHtcbiAgICBzdWJUb29scyA9IChcbiAgICAgIDxTdWJUb29scz5cbiAgICAgICAge21vZGVzLm1hcCgoYnV0dG9uQ29uZmlnLCBpKSA9PiAoXG4gICAgICAgICAgPE1vZGVCdXR0b25cbiAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgIGJ1dHRvbkNvbmZpZz17YnV0dG9uQ29uZmlnfVxuICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgb25TZXRNb2RlKCgpID0+IGJ1dHRvbkNvbmZpZy5tb2RlKTtcbiAgICAgICAgICAgICAgc2V0RXhwYW5kZWQoZmFsc2UpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvU3ViVG9vbHM+XG4gICAgKTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgYnV0dG9uIGNvbmZpZyBpZiBpdCBpcyBhY3RpdmUgb3RoZXJ3aXNlLCBjaG9vc2UgdGhlIGZpcnN0XG4gIGNvbnN0IGJ1dHRvbkNvbmZpZyA9IG1vZGVzLmZpbmQoKG0pID0+IG0ubW9kZSA9PT0gbW9kZSkgfHwgbW9kZXNbMF07XG5cbiAgcmV0dXJuIChcbiAgICA8U3ViVG9vbHNDb250YWluZXI+XG4gICAgICB7c3ViVG9vbHN9XG4gICAgICA8TW9kZUJ1dHRvblxuICAgICAgICBidXR0b25Db25maWc9e2J1dHRvbkNvbmZpZ31cbiAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIG9uU2V0TW9kZSgoKSA9PiBidXR0b25Db25maWcubW9kZSk7XG4gICAgICAgICAgc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIDwvU3ViVG9vbHNDb250YWluZXI+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUb29sYm94KHtcbiAgbW9kZSxcbiAgbW9kZUNvbmZpZyxcbiAgZ2VvSnNvbixcbiAgb25TZXRNb2RlLFxuICBvblNldE1vZGVDb25maWcsXG4gIG9uU2V0R2VvSnNvbixcbiAgb25JbXBvcnQsXG59OiBQcm9wcykge1xuICBjb25zdCBbc2hvd0NvbmZpZywgc2V0U2hvd0NvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93SW1wb3J0LCBzZXRTaG93SW1wb3J0XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dFeHBvcnQsIHNldFNob3dFeHBvcnRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0NsZWFyQ29uZmlybWF0aW9uLCBzZXRTaG93Q2xlYXJDb25maXJtYXRpb25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUb29scz5cbiAgICAgICAge01PREVfR1JPVVBTLm1hcCgobW9kZUdyb3VwLCBpKSA9PiAoXG4gICAgICAgICAgPE1vZGVHcm91cEJ1dHRvbnMga2V5PXtpfSBtb2RlR3JvdXA9e21vZGVHcm91cH0gbW9kZT17bW9kZX0gb25TZXRNb2RlPXtvblNldE1vZGV9IC8+XG4gICAgICAgICkpfVxuXG4gICAgICAgIHsvKiA8Ym94LWljb24gbmFtZT0nY3VycmVudC1sb2NhdGlvbicgPjwvYm94LWljb24+ICovfVxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dFeHBvcnQodHJ1ZSl9IHRpdGxlPVwiRXhwb3J0XCI+XG4gICAgICAgICAgPEljb24gbmFtZT1cImV4cG9ydFwiIC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dJbXBvcnQodHJ1ZSl9IHRpdGxlPVwiSW1wb3J0XCI+XG4gICAgICAgICAgPEljb24gbmFtZT1cImltcG9ydFwiIC8+XG4gICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgIDxTdWJUb29sc0NvbnRhaW5lcj5cbiAgICAgICAgICB7c2hvd0NvbmZpZyAmJiAoXG4gICAgICAgICAgICA8U3ViVG9vbHM+XG4gICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0NvbmZpZyhmYWxzZSl9PlxuICAgICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJjaGV2cm9uLXJpZ2h0XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldE1vZGVDb25maWcoeyBib29sZWFuT3BlcmF0aW9uOiAnZGlmZmVyZW5jZScgfSl9XG4gICAgICAgICAgICAgICAgYWN0aXZlPXttb2RlQ29uZmlnICYmIG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ2RpZmZlcmVuY2UnfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cIm1pbnVzLWZyb250XCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldE1vZGVDb25maWcoeyBib29sZWFuT3BlcmF0aW9uOiAndW5pb24nIH0pfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17bW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICd1bmlvbid9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwidW5pdGVcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2V0TW9kZUNvbmZpZyh7IGJvb2xlYW5PcGVyYXRpb246ICdpbnRlcnNlY3Rpb24nIH0pfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17bW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdpbnRlcnNlY3Rpb24nfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cImludGVyc2VjdFwiIC8+XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB7LyogPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlnKGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgPEljb24gbmFtZT1cInhcIiAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj4gKi99XG4gICAgICAgICAgICA8L1N1YlRvb2xzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q29uZmlnKHRydWUpfT5cbiAgICAgICAgICAgIDxJY29uIG5hbWU9XCJjb2dcIiAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1N1YlRvb2xzQ29udGFpbmVyPlxuXG4gICAgICAgIDxTdWJUb29sc0NvbnRhaW5lcj5cbiAgICAgICAgICB7c2hvd0NsZWFyQ29uZmlybWF0aW9uICYmIChcbiAgICAgICAgICAgIDxTdWJUb29scz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uU2V0R2VvSnNvbih7IHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsIGZlYXR1cmVzOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgIHNldFNob3dDbGVhckNvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBraW5kPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkNsZWFyIGFsbCBmZWF0dXJlc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDbGVhciBhbGwgZmVhdHVyZXMgPEljb24gbmFtZT1cInRyYXNoXCIgLz5cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gb25DbGljaz17KCkgPT4gc2V0U2hvd0NsZWFyQ29uZmlybWF0aW9uKGZhbHNlKX0+Q2FuY2VsPC9CdXR0b24+XG4gICAgICAgICAgICA8L1N1YlRvb2xzPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q2xlYXJDb25maXJtYXRpb24odHJ1ZSl9IHRpdGxlPVwiQ2xlYXJcIj5cbiAgICAgICAgICAgIDxJY29uIG5hbWU9XCJ0cmFzaFwiIC8+XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvU3ViVG9vbHNDb250YWluZXI+XG5cbiAgICAgICAgey8qIHpvb20gaW4gYW5kIG91dCAqL31cbiAgICAgIDwvVG9vbHM+XG5cbiAgICAgIHtzaG93SW1wb3J0ICYmIChcbiAgICAgICAgPEltcG9ydE1vZGFsXG4gICAgICAgICAgb25JbXBvcnQ9eyhpbXBvcnRlZCkgPT4ge1xuICAgICAgICAgICAgb25JbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgICAgc2V0U2hvd0ltcG9ydChmYWxzZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SW1wb3J0KGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RXhwb3J0ICYmIDxFeHBvcnRNb2RhbCBnZW9Kc29uPXtnZW9Kc29ufSBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RXhwb3J0KGZhbHNlKX0gLz59XG4gICAgPC8+XG4gICk7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/curve-utils.js b/modules/layers/dist-es6/curve-utils.js new file mode 100644 index 000000000..215047a84 --- /dev/null +++ b/modules/layers/dist-es6/curve-utils.js @@ -0,0 +1,80 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.generateCurveFromControlPoints = generateCurveFromControlPoints; + +var _cubicHermiteSpline = _interopRequireDefault(require("cubic-hermite-spline")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var INTERPOLATION_INTERVAL = 0.005; +var INTERPOLATION_THRESHOLD = 0.001; + +function calculateSingleTangent(p0, p1, d) { + var x = (p1[0] - p0[0]) / d; + var y = (p1[1] - p0[1]) / d; + return [x, y]; +} + +function generateCurveFromControlPoints(line) { + // calculate knots + var knots = [0]; + var prev = null; + var totalDistance = 0; + var coords = line.geometry.coordinates; + + for (var i = 0; i < coords.length; i++) { + var cur = coords[i]; + + if (prev !== null) { + totalDistance += (0, _distance["default"])(prev, cur); + knots.push(totalDistance); + } + + prev = cur; + } // calculate tangents + + + var tangents = []; // first tangent + // @ts-ignore + + tangents.push(calculateSingleTangent(coords[0], coords[1], knots[1] - knots[0])); // second to before last + + for (var _i = 1; _i < coords.length - 1; _i++) { + // @ts-ignore + var A = calculateSingleTangent(coords[_i], coords[_i + 1], knots[_i + 1] - knots[_i]); // @ts-ignore + + var B = calculateSingleTangent(coords[_i - 1], coords[_i], knots[_i] - knots[_i - 1]); + var x = (A[0] + B[0]) / 2.0; + var y = (A[1] + B[1]) / 2.0; + tangents.push([x, y]); + } // last tangent + + + var last = coords.length - 1; + tangents.push( // @ts-ignore + calculateSingleTangent(coords[last - 1], coords[last], knots[last] - knots[last - 1])); // generate curve + + var result = []; + + for (var _i2 = 0; _i2 < coords.length; _i2++) { + // add control point + result.push(coords[_i2]); // add interpolated values + + for (var t = knots[_i2] + INTERPOLATION_INTERVAL; t < knots[_i2 + 1]; t += INTERPOLATION_INTERVAL) { + if (knots[_i2 + 1] - t > INTERPOLATION_THRESHOLD) { + // Only add if not too close to a control point (knot = control point) + result.push((0, _cubicHermiteSpline["default"])(t, coords, tangents, knots)); + } + } + } + + return (0, _helpers.lineString)(result); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jdXJ2ZS11dGlscy50cyJdLCJuYW1lcyI6WyJJTlRFUlBPTEFUSU9OX0lOVEVSVkFMIiwiSU5URVJQT0xBVElPTl9USFJFU0hPTEQiLCJjYWxjdWxhdGVTaW5nbGVUYW5nZW50IiwicDAiLCJwMSIsImQiLCJ4IiwieSIsImdlbmVyYXRlQ3VydmVGcm9tQ29udHJvbFBvaW50cyIsImxpbmUiLCJrbm90cyIsInByZXYiLCJ0b3RhbERpc3RhbmNlIiwiY29vcmRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImkiLCJsZW5ndGgiLCJjdXIiLCJwdXNoIiwidGFuZ2VudHMiLCJBIiwiQiIsImxhc3QiLCJyZXN1bHQiLCJ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFJQSxJQUFNQSxzQkFBc0IsR0FBRyxLQUEvQjtBQUNBLElBQU1DLHVCQUF1QixHQUFHLEtBQWhDOztBQUVBLFNBQVNDLHNCQUFULENBQWdDQyxFQUFoQyxFQUFzREMsRUFBdEQsRUFBNEVDLENBQTVFLEVBQWlHO0FBQy9GLE1BQU1DLENBQUMsR0FBRyxDQUFDRixFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFELEVBQUUsQ0FBQyxDQUFELENBQVgsSUFBa0JFLENBQTVCO0FBQ0EsTUFBTUUsQ0FBQyxHQUFHLENBQUNILEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUQsRUFBRSxDQUFDLENBQUQsQ0FBWCxJQUFrQkUsQ0FBNUI7QUFDQSxTQUFPLENBQUNDLENBQUQsRUFBSUMsQ0FBSixDQUFQO0FBQ0Q7O0FBRU0sU0FBU0MsOEJBQVQsQ0FDTEMsSUFESyxFQUVnQjtBQUNyQjtBQUNBLE1BQU1DLEtBQUssR0FBRyxDQUFDLENBQUQsQ0FBZDtBQUNBLE1BQUlDLElBQUksR0FBRyxJQUFYO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLENBQXBCO0FBSnFCLE1BTUFDLE1BTkEsR0FNV0osSUFBSSxDQUFDSyxRQU5oQixDQU1iQyxXQU5hOztBQVFyQixPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILE1BQU0sQ0FBQ0ksTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsUUFBTUUsR0FBRyxHQUFHTCxNQUFNLENBQUNHLENBQUQsQ0FBbEI7O0FBQ0EsUUFBSUwsSUFBSSxLQUFLLElBQWIsRUFBbUI7QUFDakJDLE1BQUFBLGFBQWEsSUFBSSwwQkFBYUQsSUFBYixFQUFtQk8sR0FBbkIsQ0FBakI7QUFDQVIsTUFBQUEsS0FBSyxDQUFDUyxJQUFOLENBQVdQLGFBQVg7QUFDRDs7QUFDREQsSUFBQUEsSUFBSSxHQUFHTyxHQUFQO0FBQ0QsR0Fmb0IsQ0FpQnJCOzs7QUFDQSxNQUFNRSxRQUFRLEdBQUcsRUFBakIsQ0FsQnFCLENBb0JyQjtBQUNBOztBQUNBQSxFQUFBQSxRQUFRLENBQUNELElBQVQsQ0FBY2pCLHNCQUFzQixDQUFDVyxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCSCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVdBLEtBQUssQ0FBQyxDQUFELENBQXZDLENBQXBDLEVBdEJxQixDQXdCckI7O0FBQ0EsT0FBSyxJQUFJTSxFQUFDLEdBQUcsQ0FBYixFQUFnQkEsRUFBQyxHQUFHSCxNQUFNLENBQUNJLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELEVBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFNSyxDQUFDLEdBQUduQixzQkFBc0IsQ0FBQ1csTUFBTSxDQUFDRyxFQUFELENBQVAsRUFBWUgsTUFBTSxDQUFDRyxFQUFDLEdBQUcsQ0FBTCxDQUFsQixFQUEyQk4sS0FBSyxDQUFDTSxFQUFDLEdBQUcsQ0FBTCxDQUFMLEdBQWVOLEtBQUssQ0FBQ00sRUFBRCxDQUEvQyxDQUFoQyxDQUYwQyxDQUcxQzs7QUFDQSxRQUFNTSxDQUFDLEdBQUdwQixzQkFBc0IsQ0FBQ1csTUFBTSxDQUFDRyxFQUFDLEdBQUcsQ0FBTCxDQUFQLEVBQWdCSCxNQUFNLENBQUNHLEVBQUQsQ0FBdEIsRUFBMkJOLEtBQUssQ0FBQ00sRUFBRCxDQUFMLEdBQVdOLEtBQUssQ0FBQ00sRUFBQyxHQUFHLENBQUwsQ0FBM0MsQ0FBaEM7QUFDQSxRQUFNVixDQUFDLEdBQUcsQ0FBQ2UsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPQyxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCLEdBQTFCO0FBQ0EsUUFBTWYsQ0FBQyxHQUFHLENBQUNjLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBT0MsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQixHQUExQjtBQUNBRixJQUFBQSxRQUFRLENBQUNELElBQVQsQ0FBYyxDQUFDYixDQUFELEVBQUlDLENBQUosQ0FBZDtBQUNELEdBakNvQixDQW1DckI7OztBQUNBLE1BQU1nQixJQUFJLEdBQUdWLE1BQU0sQ0FBQ0ksTUFBUCxHQUFnQixDQUE3QjtBQUNBRyxFQUFBQSxRQUFRLENBQUNELElBQVQsRUFDRTtBQUNBakIsRUFBQUEsc0JBQXNCLENBQUNXLE1BQU0sQ0FBQ1UsSUFBSSxHQUFHLENBQVIsQ0FBUCxFQUFtQlYsTUFBTSxDQUFDVSxJQUFELENBQXpCLEVBQWlDYixLQUFLLENBQUNhLElBQUQsQ0FBTCxHQUFjYixLQUFLLENBQUNhLElBQUksR0FBRyxDQUFSLENBQXBELENBRnhCLEVBckNxQixDQTBDckI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsT0FBSyxJQUFJUixHQUFDLEdBQUcsQ0FBYixFQUFnQkEsR0FBQyxHQUFHSCxNQUFNLENBQUNJLE1BQTNCLEVBQW1DRCxHQUFDLEVBQXBDLEVBQXdDO0FBQ3RDO0FBQ0FRLElBQUFBLE1BQU0sQ0FBQ0wsSUFBUCxDQUFZTixNQUFNLENBQUNHLEdBQUQsQ0FBbEIsRUFGc0MsQ0FJdEM7O0FBQ0EsU0FBSyxJQUFJUyxDQUFDLEdBQUdmLEtBQUssQ0FBQ00sR0FBRCxDQUFMLEdBQVdoQixzQkFBeEIsRUFBZ0R5QixDQUFDLEdBQUdmLEtBQUssQ0FBQ00sR0FBQyxHQUFHLENBQUwsQ0FBekQsRUFBa0VTLENBQUMsSUFBSXpCLHNCQUF2RSxFQUErRjtBQUM3RixVQUFJVSxLQUFLLENBQUNNLEdBQUMsR0FBRyxDQUFMLENBQUwsR0FBZVMsQ0FBZixHQUFtQnhCLHVCQUF2QixFQUFnRDtBQUM5QztBQUNBdUIsUUFBQUEsTUFBTSxDQUFDTCxJQUFQLENBQVksb0NBQVFNLENBQVIsRUFBV1osTUFBWCxFQUFtQk8sUUFBbkIsRUFBNkJWLEtBQTdCLENBQVo7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBTyx5QkFBV2MsTUFBWCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGVybWl0ZSBmcm9tICdjdWJpYy1oZXJtaXRlLXNwbGluZSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcblxuaW1wb3J0IHsgRmVhdHVyZSwgTXVsdGlMaW5lU3RyaW5nLCBMaW5lU3RyaW5nIH0gZnJvbSAnZ2VvanNvbic7XG5cbmNvbnN0IElOVEVSUE9MQVRJT05fSU5URVJWQUwgPSAwLjAwNTtcbmNvbnN0IElOVEVSUE9MQVRJT05fVEhSRVNIT0xEID0gMC4wMDE7XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQocDA6IFtudW1iZXIsIG51bWJlcl0sIHAxOiBbbnVtYmVyLCBudW1iZXJdLCBkOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gIGNvbnN0IHggPSAocDFbMF0gLSBwMFswXSkgLyBkO1xuICBjb25zdCB5ID0gKHAxWzFdIC0gcDBbMV0pIC8gZDtcbiAgcmV0dXJuIFt4LCB5XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3VydmVGcm9tQ29udHJvbFBvaW50cyhcbiAgbGluZTogRmVhdHVyZTxNdWx0aUxpbmVTdHJpbmc+XG4pOiBGZWF0dXJlPExpbmVTdHJpbmc+IHtcbiAgLy8gY2FsY3VsYXRlIGtub3RzXG4gIGNvbnN0IGtub3RzID0gWzBdO1xuICBsZXQgcHJldiA9IG51bGw7XG4gIGxldCB0b3RhbERpc3RhbmNlID0gMDtcblxuICBjb25zdCB7IGNvb3JkaW5hdGVzOiBjb29yZHMgfSA9IGxpbmUuZ2VvbWV0cnk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjdXIgPSBjb29yZHNbaV07XG4gICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgIHRvdGFsRGlzdGFuY2UgKz0gdHVyZkRpc3RhbmNlKHByZXYsIGN1cik7XG4gICAgICBrbm90cy5wdXNoKHRvdGFsRGlzdGFuY2UpO1xuICAgIH1cbiAgICBwcmV2ID0gY3VyO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRhbmdlbnRzXG4gIGNvbnN0IHRhbmdlbnRzID0gW107XG5cbiAgLy8gZmlyc3QgdGFuZ2VudFxuICAvLyBAdHMtaWdub3JlXG4gIHRhbmdlbnRzLnB1c2goY2FsY3VsYXRlU2luZ2xlVGFuZ2VudChjb29yZHNbMF0sIGNvb3Jkc1sxXSwga25vdHNbMV0gLSBrbm90c1swXSkpO1xuXG4gIC8vIHNlY29uZCB0byBiZWZvcmUgbGFzdFxuICBmb3IgKGxldCBpID0gMTsgaSA8IGNvb3Jkcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgQSA9IGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQoY29vcmRzW2ldLCBjb29yZHNbaSArIDFdLCBrbm90c1tpICsgMV0gLSBrbm90c1tpXSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IEIgPSBjYWxjdWxhdGVTaW5nbGVUYW5nZW50KGNvb3Jkc1tpIC0gMV0sIGNvb3Jkc1tpXSwga25vdHNbaV0gLSBrbm90c1tpIC0gMV0pO1xuICAgIGNvbnN0IHggPSAoQVswXSArIEJbMF0pIC8gMi4wO1xuICAgIGNvbnN0IHkgPSAoQVsxXSArIEJbMV0pIC8gMi4wO1xuICAgIHRhbmdlbnRzLnB1c2goW3gsIHldKTtcbiAgfVxuXG4gIC8vIGxhc3QgdGFuZ2VudFxuICBjb25zdCBsYXN0ID0gY29vcmRzLmxlbmd0aCAtIDE7XG4gIHRhbmdlbnRzLnB1c2goXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQoY29vcmRzW2xhc3QgLSAxXSwgY29vcmRzW2xhc3RdLCBrbm90c1tsYXN0XSAtIGtub3RzW2xhc3QgLSAxXSlcbiAgKTtcblxuICAvLyBnZW5lcmF0ZSBjdXJ2ZVxuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBhZGQgY29udHJvbCBwb2ludFxuICAgIHJlc3VsdC5wdXNoKGNvb3Jkc1tpXSk7XG5cbiAgICAvLyBhZGQgaW50ZXJwb2xhdGVkIHZhbHVlc1xuICAgIGZvciAobGV0IHQgPSBrbm90c1tpXSArIElOVEVSUE9MQVRJT05fSU5URVJWQUw7IHQgPCBrbm90c1tpICsgMV07IHQgKz0gSU5URVJQT0xBVElPTl9JTlRFUlZBTCkge1xuICAgICAgaWYgKGtub3RzW2kgKyAxXSAtIHQgPiBJTlRFUlBPTEFUSU9OX1RIUkVTSE9MRCkge1xuICAgICAgICAvLyBPbmx5IGFkZCBpZiBub3QgdG9vIGNsb3NlIHRvIGEgY29udHJvbCBwb2ludCAoa25vdCA9IGNvbnRyb2wgcG9pbnQpXG4gICAgICAgIHJlc3VsdC5wdXNoKGhlcm1pdGUodCwgY29vcmRzLCB0YW5nZW50cywga25vdHMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGluZVN0cmluZyhyZXN1bHQpO1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/event-types.js b/modules/layers/dist-es6/event-types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/layers/dist-es6/event-types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/index.js b/modules/layers/dist-es6/index.js new file mode 100644 index 000000000..d4a43049b --- /dev/null +++ b/modules/layers/dist-es6/index.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ArrowStyles", { + enumerable: true, + get: function get() { + return _style.ArrowStyles; + } +}); +Object.defineProperty(exports, "DEFAULT_ARROWS", { + enumerable: true, + get: function get() { + return _style.DEFAULT_ARROWS; + } +}); +Object.defineProperty(exports, "MAX_ARROWS", { + enumerable: true, + get: function get() { + return _style.MAX_ARROWS; + } +}); +Object.defineProperty(exports, "EditableGeoJsonLayer", { + enumerable: true, + get: function get() { + return _editableGeojsonLayer["default"]; + } +}); +Object.defineProperty(exports, "EditableH3ClusterLayer", { + enumerable: true, + get: function get() { + return _editableH3ClusterLayer["default"]; + } +}); +Object.defineProperty(exports, "SelectionLayer", { + enumerable: true, + get: function get() { + return _selectionLayer["default"]; + } +}); +Object.defineProperty(exports, "ElevatedEditHandleLayer", { + enumerable: true, + get: function get() { + return _elevatedEditHandleLayer["default"]; + } +}); +Object.defineProperty(exports, "PathOutlineLayer", { + enumerable: true, + get: function get() { + return _pathOutlineLayer["default"]; + } +}); +Object.defineProperty(exports, "PathMarkerLayer", { + enumerable: true, + get: function get() { + return _pathMarkerLayer["default"]; + } +}); +Object.defineProperty(exports, "JunctionScatterplotLayer", { + enumerable: true, + get: function get() { + return _junctionScatterplotLayer["default"]; + } +}); +Object.defineProperty(exports, "toDeckColor", { + enumerable: true, + get: function get() { + return _utils.toDeckColor; + } +}); + +var _style = require("./style"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./layers/editable-geojson-layer")); + +var _editableH3ClusterLayer = _interopRequireDefault(require("./layers/editable-h3-cluster-layer")); + +var _selectionLayer = _interopRequireDefault(require("./layers/selection-layer")); + +var _elevatedEditHandleLayer = _interopRequireDefault(require("./layers/elevated-edit-handle-layer")); + +var _pathOutlineLayer = _interopRequireDefault(require("./layers/path-outline-layer/path-outline-layer")); + +var _pathMarkerLayer = _interopRequireDefault(require("./layers/path-marker-layer/path-marker-layer")); + +var _junctionScatterplotLayer = _interopRequireDefault(require("./layers/junction-scatterplot-layer")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vc3R5bGUnO1xuXG4vLyBMYXllcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVHZW9Kc29uTGF5ZXIgfSBmcm9tICcuL2xheWVycy9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVIM0NsdXN0ZXJMYXllciB9IGZyb20gJy4vbGF5ZXJzL2VkaXRhYmxlLWgzLWNsdXN0ZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWxlY3Rpb25MYXllciB9IGZyb20gJy4vbGF5ZXJzL3NlbGVjdGlvbi1sYXllcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIH0gZnJvbSAnLi9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXInO1xuXG4vLyBMYXllcnMgbW92ZWQgZnJvbSBkZWNrLmdsXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGhPdXRsaW5lTGF5ZXIgfSBmcm9tICcuL2xheWVycy9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnLi9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICcuL2xheWVycy9qdW5jdGlvbi1zY2F0dGVycGxvdC1sYXllcic7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgeyBDb2xvciwgVmlld3BvcnQgfSBmcm9tICcuL3R5cGVzJztcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/editable-geojson-layer.js b/modules/layers/dist-es6/layers/editable-geojson-layer.js new file mode 100644 index 000000000..ec0d4fe27 --- /dev/null +++ b/modules/layers/dist-es6/layers/editable-geojson-layer.js @@ -0,0 +1,544 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editableLayer = _interopRequireDefault(require("./editable-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DEFAULT_LINE_COLOR = [0x0, 0x0, 0x0, 0x99]; +var DEFAULT_FILL_COLOR = [0x0, 0x0, 0x0, 0x90]; +var DEFAULT_SELECTED_LINE_COLOR = [0x0, 0x0, 0x0, 0xff]; +var DEFAULT_SELECTED_FILL_COLOR = [0x0, 0x0, 0x90, 0x90]; +var DEFAULT_TENTATIVE_LINE_COLOR = [0x90, 0x90, 0x90, 0xff]; +var DEFAULT_TENTATIVE_FILL_COLOR = [0x90, 0x90, 0x90, 0x90]; +var DEFAULT_EDITING_EXISTING_POINT_COLOR = [0xc0, 0x0, 0x0, 0xff]; +var DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR = [0x0, 0x0, 0x0, 0x80]; +var DEFAULT_EDITING_SNAP_POINT_COLOR = [0x7c, 0x00, 0xc0, 0xff]; +var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [0xff, 0xff, 0xff, 0xff]; +var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5; +var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3; +var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7; +var DEFAULT_EDIT_MODE = _editModes.DrawPolygonMode; + +function guideAccessor(accessor) { + if (!accessor || typeof accessor !== 'function') { + return accessor; + } + + return function (guideMaybeWrapped) { + return accessor(unwrapGuide(guideMaybeWrapped)); + }; +} // The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary + + +function unwrapGuide(guideMaybeWrapped) { + if (guideMaybeWrapped.__source) { + return guideMaybeWrapped.__source.object; + } else if (guideMaybeWrapped.sourceFeature) { + return guideMaybeWrapped.sourceFeature.feature; + } // It is not wrapped, return as is + + + return guideMaybeWrapped; +} + +function getEditHandleColor(handle) { + switch (handle.properties.editHandleType) { + case 'existing': + return DEFAULT_EDITING_EXISTING_POINT_COLOR; + + case 'snap-source': + return DEFAULT_EDITING_SNAP_POINT_COLOR; + + case 'intermediate': + default: + return DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR; + } +} + +function getEditHandleOutlineColor(handle) { + return DEFAULT_EDITING_POINT_OUTLINE_COLOR; +} + +function getEditHandleRadius(handle) { + switch (handle.properties.editHandleType) { + case 'existing': + return DEFAULT_EDITING_EXISTING_POINT_RADIUS; + + case 'snap': + return DEFAULT_EDITING_SNAP_POINT_RADIUS; + + case 'intermediate': + default: + return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS; + } +} + +var defaultProps = { + mode: DEFAULT_EDIT_MODE, + // Edit and interaction events + onEdit: function onEdit() {}, + pickable: true, + pickingRadius: 10, + pickingDepth: 5, + fp64: false, + filled: true, + stroked: true, + lineWidthScale: 1, + lineWidthMinPixels: 1, + lineWidthMaxPixels: Number.MAX_SAFE_INTEGER, + lineWidthUnits: 'pixels', + lineJointRounded: false, + lineMiterLimit: 4, + pointRadiusScale: 1, + pointRadiusMinPixels: 2, + pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER, + getLineColor: function getLineColor(feature, isSelected, mode) { + return isSelected ? DEFAULT_SELECTED_LINE_COLOR : DEFAULT_LINE_COLOR; + }, + getFillColor: function getFillColor(feature, isSelected, mode) { + return isSelected ? DEFAULT_SELECTED_FILL_COLOR : DEFAULT_FILL_COLOR; + }, + getRadius: function getRadius(f) { + return f && f.properties && f.properties.radius || f && f.properties && f.properties.size || 1; + }, + getLineWidth: function getLineWidth(f) { + return f && f.properties && f.properties.lineWidth || 3; + }, + // Tentative feature rendering + getTentativeLineColor: function getTentativeLineColor(f) { + return DEFAULT_TENTATIVE_LINE_COLOR; + }, + getTentativeFillColor: function getTentativeFillColor(f) { + return DEFAULT_TENTATIVE_FILL_COLOR; + }, + getTentativeLineWidth: function getTentativeLineWidth(f) { + return f && f.properties && f.properties.lineWidth || 3; + }, + editHandleType: 'point', + // point handles + editHandlePointRadiusScale: 1, + editHandlePointOutline: true, + editHandlePointStrokeWidth: 2, + editHandlePointRadiusMinPixels: 4, + editHandlePointRadiusMaxPixels: 8, + getEditHandlePointColor: getEditHandleColor, + getEditHandlePointOutlineColor: getEditHandleOutlineColor, + getEditHandlePointRadius: getEditHandleRadius, + // icon handles + editHandleIconAtlas: null, + editHandleIconMapping: null, + editHandleIconSizeScale: 1, + getEditHandleIcon: function getEditHandleIcon(handle) { + return handle.properties.editHandleType; + }, + getEditHandleIconSize: 10, + getEditHandleIconColor: getEditHandleColor, + getEditHandleIconAngle: 0, + // misc + billboard: true +}; // Mapping of mode name to mode class (for legacy purposes) + +var modeNameMapping = { + view: _editModes.ViewMode, + // Alter modes + modify: _editModes.ModifyMode, + translate: new _editModes.SnappableMode(new _editModes.TranslateMode()), + transform: new _editModes.SnappableMode(new _editModes.TransformMode()), + scale: _editModes.ScaleMode, + rotate: _editModes.RotateMode, + duplicate: _editModes.DuplicateMode, + split: _editModes.SplitPolygonMode, + extrude: _editModes.ExtrudeMode, + elevation: _editModes.ElevationMode, + // Draw modes + drawPoint: _editModes.DrawPointMode, + drawLineString: _editModes.DrawLineStringMode, + drawPolygon: _editModes.DrawPolygonMode, + drawRectangle: _editModes.DrawRectangleMode, + drawSquareFromCenter: _editModes.DrawSquareFromCenterMode, + drawCircleFromCenter: _editModes.DrawCircleFromCenterMode, + drawCircleByBoundingBox: _editModes.DrawCircleByDiameterMode, + drawEllipseByBoundingBox: _editModes.DrawEllipseByBoundingBoxMode, + drawRectangleUsing3Points: _editModes.DrawRectangleUsingThreePointsMode, + drawEllipseUsing3Points: _editModes.DrawEllipseUsingThreePointsMode, + draw90DegreePolygon: _editModes.Draw90DegreePolygonMode, + drawPolygonByDragging: _editModes.DrawPolygonByDraggingMode +}; + +// type State = { +// mode: GeoJsonEditMode, +// tentativeFeature: ?Feature, +// editHandles: any[], +// selectedFeatures: Feature[] +// }; +var EditableGeoJsonLayer = /*#__PURE__*/function (_EditableLayer) { + _inherits(EditableGeoJsonLayer, _EditableLayer); + + var _super = _createSuper(EditableGeoJsonLayer); + + function EditableGeoJsonLayer() { + _classCallCheck(this, EditableGeoJsonLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableGeoJsonLayer, [{ + key: "renderLayers", + // props: Props; + // setState: ($Shape) => void; + value: function renderLayers() { + var subLayerProps = this.getSubLayerProps({ + id: 'geojson', + // Proxy most GeoJsonLayer props as-is + data: this.props.data, + fp64: this.props.fp64, + filled: this.props.filled, + stroked: this.props.stroked, + lineWidthScale: this.props.lineWidthScale, + lineWidthMinPixels: this.props.lineWidthMinPixels, + lineWidthMaxPixels: this.props.lineWidthMaxPixels, + lineWidthUnits: this.props.lineWidthUnits, + lineJointRounded: this.props.lineJointRounded, + lineMiterLimit: this.props.lineMiterLimit, + pointRadiusScale: this.props.pointRadiusScale, + pointRadiusMinPixels: this.props.pointRadiusMinPixels, + pointRadiusMaxPixels: this.props.pointRadiusMaxPixels, + getLineColor: this.selectionAwareAccessor(this.props.getLineColor), + getFillColor: this.selectionAwareAccessor(this.props.getFillColor), + getRadius: this.selectionAwareAccessor(this.props.getRadius), + getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth), + _subLayerProps: { + 'line-strings': { + billboard: this.props.billboard + }, + 'polygons-stroke': { + billboard: this.props.billboard + } + }, + updateTriggers: { + getLineColor: [this.props.selectedFeatureIndexes, this.props.mode], + getFillColor: [this.props.selectedFeatureIndexes, this.props.mode], + getRadius: [this.props.selectedFeatureIndexes, this.props.mode], + getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode] + } + }); + var layers = [new _layers.GeoJsonLayer(subLayerProps)]; + layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers()); + return layers; + } + }, { + key: "initializeState", + value: function initializeState() { + _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "initializeState", this).call(this); + + this.setState({ + selectedFeatures: [], + editHandles: [] + }); + } // TODO: is this the best way to properly update state from an outside event handler? + + }, { + key: "shouldUpdateState", + value: function shouldUpdateState(opts) { + // console.log( + // 'shouldUpdateState', + // opts.changeFlags.propsOrDataChanged, + // opts.changeFlags.stateChanged + // ); + return _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "shouldUpdateState", this).call(this, opts) || opts.changeFlags.stateChanged; + } + }, { + key: "updateState", + value: function updateState(_ref) { + var props = _ref.props, + oldProps = _ref.oldProps, + changeFlags = _ref.changeFlags; + + // @ts-ignore + _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "updateState", this).call(this, { + oldProps: oldProps, + props: props, + changeFlags: changeFlags + }); + + if (changeFlags.propsOrDataChanged) { + var modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode; + + if (modePropChanged) { + var mode; + + if (typeof props.mode === 'function') { + // They passed a constructor/class, so new it up + var ModeConstructor = props.mode; + mode = new ModeConstructor(); + } else if (typeof props.mode === 'string') { + // Lookup the mode based on its name (for backwards compatibility) + mode = modeNameMapping[props.mode]; // eslint-disable-next-line no-console + + console.warn("Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead."); + } else { + // Should be an instance of EditMode in this case + mode = props.mode; + } + + if (!mode) { + console.warn("No mode configured for ".concat(String(props.mode))); // eslint-disable-line no-console,no-undef + // Use default mode + + mode = new DEFAULT_EDIT_MODE(); + } + + if (mode !== this.state.mode) { + this.setState({ + mode: mode, + cursor: null + }); + } + } + } + + var selectedFeatures = []; + + if (Array.isArray(props.selectedFeatureIndexes)) { + // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ... + selectedFeatures = props.selectedFeatureIndexes.map(function (elem) { + return props.data.features[elem]; + }); + } + + this.setState({ + selectedFeatures: selectedFeatures + }); + } + }, { + key: "getModeProps", + value: function getModeProps(props) { + var _this = this; + + return { + modeConfig: props.modeConfig, + data: props.data, + selectedIndexes: props.selectedFeatureIndexes, + lastPointerMoveEvent: this.state.lastPointerMoveEvent, + cursor: this.state.cursor, + onEdit: function onEdit(editAction) { + // Force a re-render + // This supports double-click where we need to ensure that there's a re-render between the two clicks + // even though the data wasn't changed, just the internal tentative feature. + _this.setNeedsUpdate(); + + props.onEdit(editAction); + }, + onUpdateCursor: function onUpdateCursor(cursor) { + _this.setState({ + cursor: cursor + }); + } + }; + } + }, { + key: "selectionAwareAccessor", + value: function selectionAwareAccessor(accessor) { + var _this2 = this; + + if (typeof accessor !== 'function') { + return accessor; + } + + return function (feature) { + return accessor(feature, _this2.isFeatureSelected(feature), _this2.props.mode); + }; + } + }, { + key: "isFeatureSelected", + value: function isFeatureSelected(feature) { + if (!this.props.data || !this.props.selectedFeatureIndexes) { + return false; + } + + if (!this.props.selectedFeatureIndexes.length) { + return false; + } + + var featureIndex = this.props.data.features.indexOf(feature); + return this.props.selectedFeatureIndexes.includes(featureIndex); + } + }, { + key: "getPickingInfo", + value: function getPickingInfo(_ref2) { + var info = _ref2.info, + sourceLayer = _ref2.sourceLayer; + + if (sourceLayer.id.endsWith('guides')) { + // If user is picking an editing handle, add additional data to the info + info.isGuide = true; + } + + return info; + } + }, { + key: "createGuidesLayers", + value: function createGuidesLayers() { + var mode = this.getActiveMode(); + var guides = mode.getGuides(this.getModeProps(this.props)); + + if (!guides || !guides.features.length) { + return []; + } + + var pointLayerProps; + + if (this.props.editHandleType === 'icon') { + pointLayerProps = { + type: _layers.IconLayer, + iconAtlas: this.props.editHandleIconAtlas, + iconMapping: this.props.editHandleIconMapping, + sizeScale: this.props.editHandleIconSizeScale, + getIcon: guideAccessor(this.props.getEditHandleIcon), + getSize: guideAccessor(this.props.getEditHandleIconSize), + getColor: guideAccessor(this.props.getEditHandleIconColor), + getAngle: guideAccessor(this.props.getEditHandleIconAngle) + }; + } else { + pointLayerProps = { + type: _layers.ScatterplotLayer, + radiusScale: this.props.editHandlePointRadiusScale, + stroked: this.props.editHandlePointOutline, + getLineWidth: this.props.editHandlePointStrokeWidth, + radiusMinPixels: this.props.editHandlePointRadiusMinPixels, + radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels, + getRadius: guideAccessor(this.props.getEditHandlePointRadius), + getFillColor: guideAccessor(this.props.getEditHandlePointColor), + getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor) + }; + } + + var layer = new _layers.GeoJsonLayer(this.getSubLayerProps({ + id: "guides", + data: guides, + fp64: this.props.fp64, + _subLayerProps: { + points: pointLayerProps + }, + lineWidthScale: this.props.lineWidthScale, + lineWidthMinPixels: this.props.lineWidthMinPixels, + lineWidthMaxPixels: this.props.lineWidthMaxPixels, + lineWidthUnits: this.props.lineWidthUnits, + lineJointRounded: this.props.lineJointRounded, + lineMiterLimit: this.props.lineMiterLimit, + getLineColor: guideAccessor(this.props.getTentativeLineColor), + getLineWidth: guideAccessor(this.props.getTentativeLineWidth), + getFillColor: guideAccessor(this.props.getTentativeFillColor) + })); + return [layer]; + } + }, { + key: "createTooltipsLayers", + value: function createTooltipsLayers() { + var mode = this.getActiveMode(); + var tooltips = mode.getTooltips(this.getModeProps(this.props)); + var layer = new _layers.TextLayer(this.getSubLayerProps({ + id: "tooltips", + data: tooltips + })); + return [layer]; + } + }, { + key: "onLayerClick", + value: function onLayerClick(event) { + this.getActiveMode().handleClick(event, this.getModeProps(this.props)); + } + }, { + key: "onLayerKeyUp", + value: function onLayerKeyUp(event) { + this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props)); + } + }, { + key: "onStartDragging", + value: function onStartDragging(event) { + this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onDragging", + value: function onDragging(event) { + this.getActiveMode().handleDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onStopDragging", + value: function onStopDragging(event) { + this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onPointerMove", + value: function onPointerMove(event) { + this.setState({ + lastPointerMoveEvent: event + }); + this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props)); + } + }, { + key: "getCursor", + value: function getCursor(_ref3) { + var isDragging = _ref3.isDragging; + var cursor = this.state.cursor; + + if (!cursor) { + // default cursor + cursor = isDragging ? 'grabbing' : 'grab'; + } + + return cursor; + } + }, { + key: "getActiveMode", + value: function getActiveMode() { + return this.state.mode; + } + }]); + + return EditableGeoJsonLayer; +}(_editableLayer["default"]); + +exports["default"] = EditableGeoJsonLayer; + +_defineProperty(EditableGeoJsonLayer, "layerName", 'EditableGeoJsonLayer'); + +_defineProperty(EditableGeoJsonLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtZ2VvanNvbi1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0xJTkVfQ09MT1IiLCJERUZBVUxUX0ZJTExfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0xJTkVfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IiLCJERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SIiwiREVGQVVMVF9URU5UQVRJVkVfRklMTF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IiLCJERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SIiwiREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUX01PREUiLCJEcmF3UG9seWdvbk1vZGUiLCJndWlkZUFjY2Vzc29yIiwiYWNjZXNzb3IiLCJndWlkZU1heWJlV3JhcHBlZCIsInVud3JhcEd1aWRlIiwiX19zb3VyY2UiLCJvYmplY3QiLCJzb3VyY2VGZWF0dXJlIiwiZmVhdHVyZSIsImdldEVkaXRIYW5kbGVDb2xvciIsImhhbmRsZSIsInByb3BlcnRpZXMiLCJlZGl0SGFuZGxlVHlwZSIsImdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUmFkaXVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIm9uRWRpdCIsInBpY2thYmxlIiwicGlja2luZ1JhZGl1cyIsInBpY2tpbmdEZXB0aCIsImZwNjQiLCJmaWxsZWQiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJsaW5lV2lkdGhNaW5QaXhlbHMiLCJsaW5lV2lkdGhNYXhQaXhlbHMiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibGluZVdpZHRoVW5pdHMiLCJsaW5lSm9pbnRSb3VuZGVkIiwibGluZU1pdGVyTGltaXQiLCJwb2ludFJhZGl1c1NjYWxlIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJwb2ludFJhZGl1c01heFBpeGVscyIsImdldExpbmVDb2xvciIsImlzU2VsZWN0ZWQiLCJnZXRGaWxsQ29sb3IiLCJnZXRSYWRpdXMiLCJmIiwicmFkaXVzIiwic2l6ZSIsImdldExpbmVXaWR0aCIsImxpbmVXaWR0aCIsImdldFRlbnRhdGl2ZUxpbmVDb2xvciIsImdldFRlbnRhdGl2ZUZpbGxDb2xvciIsImdldFRlbnRhdGl2ZUxpbmVXaWR0aCIsImVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlIiwiZWRpdEhhbmRsZVBvaW50T3V0bGluZSIsImVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzIiwiZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMiLCJlZGl0SGFuZGxlSWNvbkF0bGFzIiwiZWRpdEhhbmRsZUljb25NYXBwaW5nIiwiZWRpdEhhbmRsZUljb25TaXplU2NhbGUiLCJnZXRFZGl0SGFuZGxlSWNvbiIsImdldEVkaXRIYW5kbGVJY29uU2l6ZSIsImdldEVkaXRIYW5kbGVJY29uQ29sb3IiLCJnZXRFZGl0SGFuZGxlSWNvbkFuZ2xlIiwiYmlsbGJvYXJkIiwibW9kZU5hbWVNYXBwaW5nIiwidmlldyIsIlZpZXdNb2RlIiwibW9kaWZ5IiwiTW9kaWZ5TW9kZSIsInRyYW5zbGF0ZSIsIlNuYXBwYWJsZU1vZGUiLCJUcmFuc2xhdGVNb2RlIiwidHJhbnNmb3JtIiwiVHJhbnNmb3JtTW9kZSIsInNjYWxlIiwiU2NhbGVNb2RlIiwicm90YXRlIiwiUm90YXRlTW9kZSIsImR1cGxpY2F0ZSIsIkR1cGxpY2F0ZU1vZGUiLCJzcGxpdCIsIlNwbGl0UG9seWdvbk1vZGUiLCJleHRydWRlIiwiRXh0cnVkZU1vZGUiLCJlbGV2YXRpb24iLCJFbGV2YXRpb25Nb2RlIiwiZHJhd1BvaW50IiwiRHJhd1BvaW50TW9kZSIsImRyYXdMaW5lU3RyaW5nIiwiRHJhd0xpbmVTdHJpbmdNb2RlIiwiZHJhd1BvbHlnb24iLCJkcmF3UmVjdGFuZ2xlIiwiRHJhd1JlY3RhbmdsZU1vZGUiLCJkcmF3U3F1YXJlRnJvbUNlbnRlciIsIkRyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSIsImRyYXdDaXJjbGVGcm9tQ2VudGVyIiwiRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIiwiZHJhd0NpcmNsZUJ5Qm91bmRpbmdCb3giLCJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJkcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3giLCJEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hNb2RlIiwiZHJhd1JlY3RhbmdsZVVzaW5nM1BvaW50cyIsIkRyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSIsImRyYXdFbGxpcHNlVXNpbmczUG9pbnRzIiwiRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSIsImRyYXc5MERlZ3JlZVBvbHlnb24iLCJEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSIsImRyYXdQb2x5Z29uQnlEcmFnZ2luZyIsIkRyYXdQb2x5Z29uQnlEcmFnZ2luZ01vZGUiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsInN1YkxheWVyUHJvcHMiLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJkYXRhIiwicHJvcHMiLCJzZWxlY3Rpb25Bd2FyZUFjY2Vzc29yIiwiX3N1YkxheWVyUHJvcHMiLCJ1cGRhdGVUcmlnZ2VycyIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJsYXllcnMiLCJHZW9Kc29uTGF5ZXIiLCJjb25jYXQiLCJjcmVhdGVHdWlkZXNMYXllcnMiLCJjcmVhdGVUb29sdGlwc0xheWVycyIsInNldFN0YXRlIiwic2VsZWN0ZWRGZWF0dXJlcyIsImVkaXRIYW5kbGVzIiwib3B0cyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwib2xkUHJvcHMiLCJwcm9wc09yRGF0YUNoYW5nZWQiLCJtb2RlUHJvcENoYW5nZWQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTW9kZUNvbnN0cnVjdG9yIiwiY29uc29sZSIsIndhcm4iLCJTdHJpbmciLCJzdGF0ZSIsImN1cnNvciIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImVsZW0iLCJmZWF0dXJlcyIsIm1vZGVDb25maWciLCJzZWxlY3RlZEluZGV4ZXMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImVkaXRBY3Rpb24iLCJzZXROZWVkc1VwZGF0ZSIsIm9uVXBkYXRlQ3Vyc29yIiwiaXNGZWF0dXJlU2VsZWN0ZWQiLCJmZWF0dXJlSW5kZXgiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJpbmZvIiwic291cmNlTGF5ZXIiLCJlbmRzV2l0aCIsImlzR3VpZGUiLCJnZXRBY3RpdmVNb2RlIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwiZ2V0TW9kZVByb3BzIiwicG9pbnRMYXllclByb3BzIiwidHlwZSIsIkljb25MYXllciIsImljb25BdGxhcyIsImljb25NYXBwaW5nIiwic2l6ZVNjYWxlIiwiZ2V0SWNvbiIsImdldFNpemUiLCJnZXRDb2xvciIsImdldEFuZ2xlIiwiU2NhdHRlcnBsb3RMYXllciIsInJhZGl1c1NjYWxlIiwicmFkaXVzTWluUGl4ZWxzIiwicmFkaXVzTWF4UGl4ZWxzIiwibGF5ZXIiLCJwb2ludHMiLCJ0b29sdGlwcyIsImdldFRvb2x0aXBzIiwiVGV4dExheWVyIiwiZXZlbnQiLCJoYW5kbGVDbGljayIsImhhbmRsZUtleVVwIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZURyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJp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bEQsTUFEMkMsR0FDaEMsS0FBS0QsS0FEMkIsQ0FDM0NDLE1BRDJDOztBQUVqRCxVQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNYO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR2tELFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQW5DO0FBQ0Q7O0FBQ0QsYUFBT2xELE1BQVA7QUFDRDs7O29DQUVvQztBQUNuQyxhQUFPLEtBQUtELEtBQUwsQ0FBVzNILElBQWxCO0FBQ0Q7Ozs7RUF4UitDK0sseUI7Ozs7Z0JBQTdCbkYsb0IsZUFDQSxzQjs7Z0JBREFBLG9CLGtCQUVHN0YsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBHZW9Kc29uTGF5ZXIsIFNjYXR0ZXJwbG90TGF5ZXIsIEljb25MYXllciwgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIE1vZGlmeU1vZGUsXG4gIFRyYW5zbGF0ZU1vZGUsXG4gIFNjYWxlTW9kZSxcbiAgUm90YXRlTW9kZSxcbiAgRHVwbGljYXRlTW9kZSxcbiAgU3BsaXRQb2x5Z29uTW9kZSxcbiAgRXh0cnVkZU1vZGUsXG4gIEVsZXZhdGlvbk1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSxcbiAgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbiAgU25hcHBhYmxlTW9kZSxcbiAgVHJhbnNmb3JtTW9kZSxcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgR2VvSnNvbkVkaXRNb2RlVHlwZSxcbiAgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgRWRpdGFibGVMYXllciBmcm9tICcuL2VkaXRhYmxlLWxheWVyJztcblxuY29uc3QgREVGQVVMVF9MSU5FX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4OTldO1xuY29uc3QgREVGQVVMVF9GSUxMX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9GSUxMX0NPTE9SID0gWzB4MCwgMHgwLCAweDkwLCAweDkwXTtcbmNvbnN0IERFRkFVTFRfVEVOVEFUSVZFX0xJTkVfQ09MT1IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SID0gWzB4OTAsIDB4OTAsIDB4OTAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX0NPTE9SID0gWzB4YzAsIDB4MCwgMHgwLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IgPSBbMHgwLCAweDAsIDB4MCwgMHg4MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiA9IFsweDdjLCAweDAwLCAweGMwLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SID0gWzB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyA9IDU7XG5jb25zdCBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX1JBRElVUyA9IDM7XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9SQURJVVMgPSA3O1xuXG5jb25zdCBERUZBVUxUX0VESVRfTU9ERSA9IERyYXdQb2x5Z29uTW9kZTtcblxuZnVuY3Rpb24gZ3VpZGVBY2Nlc3NvcihhY2Nlc3Nvcikge1xuICBpZiAoIWFjY2Vzc29yIHx8IHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBhY2Nlc3NvcjtcbiAgfVxuICByZXR1cm4gKGd1aWRlTWF5YmVXcmFwcGVkKSA9PiBhY2Nlc3Nvcih1bndyYXBHdWlkZShndWlkZU1heWJlV3JhcHBlZCkpO1xufVxuXG4vLyBUaGUgb2JqZWN0IGhhbmRlZCB0byB1cyBmcm9tIGRlY2suZ2wgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiBkZWNrLmdsIHVzZWQsIHVud3JhcCBhcyBuZWNlc3NhcnlcbmZ1bmN0aW9uIHVud3JhcEd1aWRlKGd1aWRlTWF5YmVXcmFwcGVkKSB7XG4gIGlmIChndWlkZU1heWJlV3JhcHBlZC5fX3NvdXJjZSkge1xuICAgIHJldHVybiBndWlkZU1heWJlV3JhcHBlZC5fX3NvdXJjZS5vYmplY3Q7XG4gIH0gZWxzZSBpZiAoZ3VpZGVNYXliZVdyYXBwZWQuc291cmNlRmVhdHVyZSkge1xuICAgIHJldHVybiBndWlkZU1heWJlV3JhcHBlZC5zb3VyY2VGZWF0dXJlLmZlYXR1cmU7XG4gIH1cbiAgLy8gSXQgaXMgbm90IHdyYXBwZWQsIHJldHVybiBhcyBpc1xuICByZXR1cm4gZ3VpZGVNYXliZVdyYXBwZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEVkaXRIYW5kbGVDb2xvcihoYW5kbGUpIHtcbiAgc3dpdGNoIChoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSkge1xuICAgIGNhc2UgJ2V4aXN0aW5nJzpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfQ09MT1I7XG4gICAgY2FzZSAnc25hcC1zb3VyY2UnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19TTkFQX1BPSU5UX0NPTE9SO1xuICAgIGNhc2UgJ2ludGVybWVkaWF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX0NPTE9SO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IoaGFuZGxlKSB7XG4gIHJldHVybiBERUZBVUxUX0VESVRJTkdfUE9JTlRfT1VUTElORV9DT0xPUjtcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZVJhZGl1cyhoYW5kbGUpIHtcbiAgc3dpdGNoIChoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSkge1xuICAgIGNhc2UgJ2V4aXN0aW5nJzpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfUkFESVVTO1xuICAgIGNhc2UgJ3NuYXAnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19TTkFQX1BPSU5UX1JBRElVUztcbiAgICBjYXNlICdpbnRlcm1lZGlhdGUnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX0lOVEVSTUVESUFURV9QT0lOVF9SQURJVVM7XG4gIH1cbn1cblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBtb2RlOiBERUZBVUxUX0VESVRfTU9ERSxcblxuICAvLyBFZGl0IGFuZCBpbnRlcmFjdGlvbiBldmVudHNcbiAgb25FZGl0OiAoKSA9PiB7fSxcblxuICBwaWNrYWJsZTogdHJ1ZSxcbiAgcGlja2luZ1JhZGl1czogMTAsXG4gIHBpY2tpbmdEZXB0aDogNSxcbiAgZnA2NDogZmFsc2UsXG4gIGZpbGxlZDogdHJ1ZSxcbiAgc3Ryb2tlZDogdHJ1ZSxcbiAgbGluZVdpZHRoU2NhbGU6IDEsXG4gIGxpbmVXaWR0aE1pblBpeGVsczogMSxcbiAgbGluZVdpZHRoTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBsaW5lSm9pbnRSb3VuZGVkOiBmYWxzZSxcbiAgbGluZU1pdGVyTGltaXQ6IDQsXG4gIHBvaW50UmFkaXVzU2NhbGU6IDEsXG4gIHBvaW50UmFkaXVzTWluUGl4ZWxzOiAyLFxuICBwb2ludFJhZGl1c01heFBpeGVsczogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIGdldExpbmVDb2xvcjogKGZlYXR1cmUsIGlzU2VsZWN0ZWQsIG1vZGUpID0+XG4gICAgaXNTZWxlY3RlZCA/IERFRkFVTFRfU0VMRUNURURfTElORV9DT0xPUiA6IERFRkFVTFRfTElORV9DT0xPUixcbiAgZ2V0RmlsbENvbG9yOiAoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT5cbiAgICBpc1NlbGVjdGVkID8gREVGQVVMVF9TRUxFQ1RFRF9GSUxMX0NPTE9SIDogREVGQVVMVF9GSUxMX0NPTE9SLFxuICBnZXRSYWRpdXM6IChmKSA9PlxuICAgIChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMucmFkaXVzKSB8fCAoZiAmJiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLnNpemUpIHx8IDEsXG4gIGdldExpbmVXaWR0aDogKGYpID0+IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMubGluZVdpZHRoKSB8fCAzLFxuXG4gIC8vIFRlbnRhdGl2ZSBmZWF0dXJlIHJlbmRlcmluZ1xuICBnZXRUZW50YXRpdmVMaW5lQ29sb3I6IChmKSA9PiBERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SLFxuICBnZXRUZW50YXRpdmVGaWxsQ29sb3I6IChmKSA9PiBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SLFxuICBnZXRUZW50YXRpdmVMaW5lV2lkdGg6IChmKSA9PiAoZiAmJiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmxpbmVXaWR0aCkgfHwgMyxcblxuICBlZGl0SGFuZGxlVHlwZTogJ3BvaW50JyxcblxuICAvLyBwb2ludCBoYW5kbGVzXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlOiAxLFxuICBlZGl0SGFuZGxlUG9pbnRPdXRsaW5lOiB0cnVlLFxuICBlZGl0SGFuZGxlUG9pbnRTdHJva2VXaWR0aDogMixcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzOiA0LFxuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNNYXhQaXhlbHM6IDgsXG4gIGdldEVkaXRIYW5kbGVQb2ludENvbG9yOiBnZXRFZGl0SGFuZGxlQ29sb3IsXG4gIGdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvcjogZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZVBvaW50UmFkaXVzOiBnZXRFZGl0SGFuZGxlUmFkaXVzLFxuXG4gIC8vIGljb24gaGFuZGxlc1xuICBlZGl0SGFuZGxlSWNvbkF0bGFzOiBudWxsLFxuICBlZGl0SGFuZGxlSWNvbk1hcHBpbmc6IG51bGwsXG4gIGVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlOiAxLFxuICBnZXRFZGl0SGFuZGxlSWNvbjogKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUsXG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZTogMTAsXG4gIGdldEVkaXRIYW5kbGVJY29uQ29sb3I6IGdldEVkaXRIYW5kbGVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZUljb25BbmdsZTogMCxcblxuICAvLyBtaXNjXG4gIGJpbGxib2FyZDogdHJ1ZSxcbn07XG5cbi8vIE1hcHBpbmcgb2YgbW9kZSBuYW1lIHRvIG1vZGUgY2xhc3MgKGZvciBsZWdhY3kgcHVycG9zZXMpXG5jb25zdCBtb2RlTmFtZU1hcHBpbmcgPSB7XG4gIHZpZXc6IFZpZXdNb2RlLFxuXG4gIC8vIEFsdGVyIG1vZGVzXG4gIG1vZGlmeTogTW9kaWZ5TW9kZSxcbiAgdHJhbnNsYXRlOiBuZXcgU25hcHBhYmxlTW9kZShuZXcgVHJhbnNsYXRlTW9kZSgpKSxcblxuICB0cmFuc2Zvcm06IG5ldyBTbmFwcGFibGVNb2RlKG5ldyBUcmFuc2Zvcm1Nb2RlKCkpLFxuICBzY2FsZTogU2NhbGVNb2RlLFxuICByb3RhdGU6IFJvdGF0ZU1vZGUsXG4gIGR1cGxpY2F0ZTogRHVwbGljYXRlTW9kZSxcbiAgc3BsaXQ6IFNwbGl0UG9seWdvbk1vZGUsXG4gIGV4dHJ1ZGU6IEV4dHJ1ZGVNb2RlLFxuICBlbGV2YXRpb246IEVsZXZhdGlvbk1vZGUsXG5cbiAgLy8gRHJhdyBtb2Rlc1xuICBkcmF3UG9pbnQ6IERyYXdQb2ludE1vZGUsXG4gIGRyYXdMaW5lU3RyaW5nOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gIGRyYXdQb2x5Z29uOiBEcmF3UG9seWdvbk1vZGUsXG4gIGRyYXdSZWN0YW5nbGU6IERyYXdSZWN0YW5nbGVNb2RlLFxuICBkcmF3U3F1YXJlRnJvbUNlbnRlcjogRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBkcmF3Q2lyY2xlRnJvbUNlbnRlcjogRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLFxuICBkcmF3Q2lyY2xlQnlCb3VuZGluZ0JveDogRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlLFxuICBkcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3g6IERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUsXG4gIGRyYXdSZWN0YW5nbGVVc2luZzNQb2ludHM6IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSxcbiAgZHJhd0VsbGlwc2VVc2luZzNQb2ludHM6IERyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUsXG4gIGRyYXc5MERlZ3JlZVBvbHlnb246IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlLFxuICBkcmF3UG9seWdvbkJ5RHJhZ2dpbmc6IERyYXdQb2x5Z29uQnlEcmFnZ2luZ01vZGUsXG59O1xuXG50eXBlIFByb3BzID0ge1xuICBtb2RlOiBzdHJpbmcgfCBHZW9Kc29uRWRpdE1vZGVDb25zdHJ1Y3RvciB8IEdlb0pzb25FZGl0TW9kZVR5cGU7XG4gIG9uRWRpdDogKGFyZzA6IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB2b2lkO1xuICAvLyBUT0RPOiB0eXBlIHRoZSByZXN0XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuLy8gdHlwZSBTdGF0ZSA9IHtcbi8vICAgbW9kZTogR2VvSnNvbkVkaXRNb2RlLFxuLy8gICB0ZW50YXRpdmVGZWF0dXJlOiA/RmVhdHVyZSxcbi8vICAgZWRpdEhhbmRsZXM6IGFueVtdLFxuLy8gICBzZWxlY3RlZEZlYXR1cmVzOiBGZWF0dXJlW11cbi8vIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlR2VvSnNvbkxheWVyIGV4dGVuZHMgRWRpdGFibGVMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWRpdGFibGVHZW9Kc29uTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICAvLyBwcm9wczogUHJvcHM7XG5cbiAgLy8gc2V0U3RhdGU6ICgkU2hhcGU8U3RhdGU+KSA9PiB2b2lkO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3Qgc3ViTGF5ZXJQcm9wcyA9IHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICBpZDogJ2dlb2pzb24nLFxuXG4gICAgICAvLyBQcm94eSBtb3N0IEdlb0pzb25MYXllciBwcm9wcyBhcy1pc1xuICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgZnA2NDogdGhpcy5wcm9wcy5mcDY0LFxuICAgICAgZmlsbGVkOiB0aGlzLnByb3BzLmZpbGxlZCxcbiAgICAgIHN0cm9rZWQ6IHRoaXMucHJvcHMuc3Ryb2tlZCxcbiAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLnByb3BzLmxpbmVXaWR0aFNjYWxlLFxuICAgICAgbGluZVdpZHRoTWluUGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1pblBpeGVscyxcbiAgICAgIGxpbmVXaWR0aE1heFBpeGVsczogdGhpcy5wcm9wcy5saW5lV2lkdGhNYXhQaXhlbHMsXG4gICAgICBsaW5lV2lkdGhVbml0czogdGhpcy5wcm9wcy5saW5lV2lkdGhVbml0cyxcbiAgICAgIGxpbmVKb2ludFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUpvaW50Um91bmRlZCxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiB0aGlzLnByb3BzLmxpbmVNaXRlckxpbWl0LFxuICAgICAgcG9pbnRSYWRpdXNTY2FsZTogdGhpcy5wcm9wcy5wb2ludFJhZGl1c1NjYWxlLFxuICAgICAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNNaW5QaXhlbHMsXG4gICAgICBwb2ludFJhZGl1c01heFBpeGVsczogdGhpcy5wcm9wcy5wb2ludFJhZGl1c01heFBpeGVscyxcbiAgICAgIGdldExpbmVDb2xvcjogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZUNvbG9yKSxcbiAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RmlsbENvbG9yKSxcbiAgICAgIGdldFJhZGl1czogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0UmFkaXVzKSxcbiAgICAgIGdldExpbmVXaWR0aDogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZVdpZHRoKSxcblxuICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgJ2xpbmUtc3RyaW5ncyc6IHtcbiAgICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICB9LFxuICAgICAgICAncG9seWdvbnMtc3Ryb2tlJzoge1xuICAgICAgICAgIGJpbGxib2FyZDogdGhpcy5wcm9wcy5iaWxsYm9hcmQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICBnZXRMaW5lQ29sb3I6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldEZpbGxDb2xvcjogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgICAgZ2V0UmFkaXVzOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbGV0IGxheWVyczogYW55ID0gW25ldyBHZW9Kc29uTGF5ZXIoc3ViTGF5ZXJQcm9wcyldO1xuXG4gICAgbGF5ZXJzID0gbGF5ZXJzLmNvbmNhdCh0aGlzLmNyZWF0ZUd1aWRlc0xheWVycygpLCB0aGlzLmNyZWF0ZVRvb2x0aXBzTGF5ZXJzKCkpO1xuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRGZWF0dXJlczogW10sXG4gICAgICBlZGl0SGFuZGxlczogW10sXG4gICAgfSk7XG4gIH1cblxuICAvLyBUT0RPOiBpcyB0aGlzIHRoZSBiZXN0IHdheSB0byBwcm9wZXJseSB1cGRhdGUgc3RhdGUgZnJvbSBhbiBvdXRzaWRlIGV2ZW50IGhhbmRsZXI/XG4gIHNob3VsZFVwZGF0ZVN0YXRlKG9wdHM6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgJ3Nob3VsZFVwZGF0ZVN0YXRlJyxcbiAgICAvLyAgIG9wdHMuY2hhbmdlRmxhZ3MucHJvcHNPckRhdGFDaGFuZ2VkLFxuICAgIC8vICAgb3B0cy5jaGFuZ2VGbGFncy5zdGF0ZUNoYW5nZWRcbiAgICAvLyApO1xuICAgIHJldHVybiBzdXBlci5zaG91bGRVcGRhdGVTdGF0ZShvcHRzKSB8fCBvcHRzLmNoYW5nZUZsYWdzLnN0YXRlQ2hhbmdlZDtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wcyxcbiAgICBjaGFuZ2VGbGFncyxcbiAgfToge1xuICAgIHByb3BzOiBQcm9wcztcbiAgICBvbGRQcm9wczogUHJvcHM7XG4gICAgY2hhbmdlRmxhZ3M6IGFueTtcbiAgfSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci51cGRhdGVTdGF0ZSh7IG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MgfSk7XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNPckRhdGFDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcENoYW5nZWQgPSBPYmplY3Qua2V5cyhvbGRQcm9wcykubGVuZ3RoID09PSAwIHx8IHByb3BzLm1vZGUgIT09IG9sZFByb3BzLm1vZGU7XG4gICAgICBpZiAobW9kZVByb3BDaGFuZ2VkKSB7XG4gICAgICAgIGxldCBtb2RlO1xuICAgICAgICBpZiAodHlwZW9mIHByb3BzLm1vZGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBUaGV5IHBhc3NlZCBhIGNvbnN0cnVjdG9yL2NsYXNzLCBzbyBuZXcgaXQgdXBcbiAgICAgICAgICBjb25zdCBNb2RlQ29uc3RydWN0b3IgPSBwcm9wcy5tb2RlO1xuICAgICAgICAgIG1vZGUgPSBuZXcgTW9kZUNvbnN0cnVjdG9yKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8gTG9va3VwIHRoZSBtb2RlIGJhc2VkIG9uIGl0cyBuYW1lIChmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpXG4gICAgICAgICAgbW9kZSA9IG1vZGVOYW1lTWFwcGluZ1twcm9wcy5tb2RlXTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiRGVwcmVjYXRlZCB1c2Ugb2YgcGFzc2luZyBgbW9kZWAgYXMgYSBzdHJpbmcuIFBhc3MgdGhlIG1vZGUncyBjbGFzcyBjb25zdHJ1Y3RvciBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgRWRpdE1vZGUgaW4gdGhpcyBjYXNlXG4gICAgICAgICAgbW9kZSA9IHByb3BzLm1vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE5vIG1vZGUgY29uZmlndXJlZCBmb3IgJHtTdHJpbmcocHJvcHMubW9kZSl9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICAgIC8vIFVzZSBkZWZhdWx0IG1vZGVcbiAgICAgICAgICBtb2RlID0gbmV3IERFRkFVTFRfRURJVF9NT0RFKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kZSAhPT0gdGhpcy5zdGF0ZS5tb2RlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG1vZGUsIGN1cnNvcjogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzZWxlY3RlZEZlYXR1cmVzID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcykpIHtcbiAgICAgIC8vIFRPRE86IG5lZWRzIGltcHJvdmVkIHRlc3RpbmcsIGkuZS4gY2hlY2tpbmcgZm9yIGR1cGxpY2F0ZXMsIE5hTnMsIG91dCBvZiByYW5nZSBudW1iZXJzLCAuLi5cbiAgICAgIHNlbGVjdGVkRmVhdHVyZXMgPSBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLm1hcCgoZWxlbSkgPT4gcHJvcHMuZGF0YS5mZWF0dXJlc1tlbGVtXSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkRmVhdHVyZXMgfSk7XG4gIH1cblxuICBnZXRNb2RlUHJvcHMocHJvcHM6IFByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICBkYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IHRoaXMuc3RhdGUubGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuY3Vyc29yLFxuICAgICAgb25FZGl0OiAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHtcbiAgICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXJcbiAgICAgICAgLy8gVGhpcyBzdXBwb3J0cyBkb3VibGUtY2xpY2sgd2hlcmUgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSdzIGEgcmUtcmVuZGVyIGJldHdlZW4gdGhlIHR3byBjbGlja3NcbiAgICAgICAgLy8gZXZlbiB0aG91Z2ggdGhlIGRhdGEgd2Fzbid0IGNoYW5nZWQsIGp1c3QgdGhlIGludGVybmFsIHRlbnRhdGl2ZSBmZWF0dXJlLlxuICAgICAgICB0aGlzLnNldE5lZWRzVXBkYXRlKCk7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY3Vyc29yIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0aW9uQXdhcmVBY2Nlc3NvcihhY2Nlc3NvcjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFjY2Vzc29yO1xuICAgIH1cbiAgICByZXR1cm4gKGZlYXR1cmU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+XG4gICAgICBhY2Nlc3NvcihmZWF0dXJlLCB0aGlzLmlzRmVhdHVyZVNlbGVjdGVkKGZlYXR1cmUpLCB0aGlzLnByb3BzLm1vZGUpO1xuICB9XG5cbiAgaXNGZWF0dXJlU2VsZWN0ZWQoZmVhdHVyZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmICghdGhpcy5wcm9wcy5kYXRhIHx8ICF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMucHJvcHMuZGF0YS5mZWF0dXJlcy5pbmRleE9mKGZlYXR1cmUpO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuaW5jbHVkZXMoZmVhdHVyZUluZGV4KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbywgc291cmNlTGF5ZXIgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmIChzb3VyY2VMYXllci5pZC5lbmRzV2l0aCgnZ3VpZGVzJykpIHtcbiAgICAgIC8vIElmIHVzZXIgaXMgcGlja2luZyBhbiBlZGl0aW5nIGhhbmRsZSwgYWRkIGFkZGl0aW9uYWwgZGF0YSB0byB0aGUgaW5mb1xuICAgICAgaW5mby5pc0d1aWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIGNyZWF0ZUd1aWRlc0xheWVycygpIHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRBY3RpdmVNb2RlKCk7XG4gICAgY29uc3QgZ3VpZGVzOiBGZWF0dXJlQ29sbGVjdGlvbiA9IG1vZGUuZ2V0R3VpZGVzKHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcblxuICAgIGlmICghZ3VpZGVzIHx8ICFndWlkZXMuZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IHBvaW50TGF5ZXJQcm9wcztcbiAgICBpZiAodGhpcy5wcm9wcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ljb24nKSB7XG4gICAgICBwb2ludExheWVyUHJvcHMgPSB7XG4gICAgICAgIHR5cGU6IEljb25MYXllcixcbiAgICAgICAgaWNvbkF0bGFzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uQXRsYXMsXG4gICAgICAgIGljb25NYXBwaW5nOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uTWFwcGluZyxcbiAgICAgICAgc2l6ZVNjYWxlOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlLFxuICAgICAgICBnZXRJY29uOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RWRpdEhhbmRsZUljb24pLFxuICAgICAgICBnZXRTaXplOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RWRpdEhhbmRsZUljb25TaXplKSxcbiAgICAgICAgZ2V0Q29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbkNvbG9yKSxcbiAgICAgICAgZ2V0QW5nbGU6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbkFuZ2xlKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50TGF5ZXJQcm9wcyA9IHtcbiAgICAgICAgdHlwZTogU2NhdHRlcnBsb3RMYXllcixcbiAgICAgICAgcmFkaXVzU2NhbGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzU2NhbGUsXG4gICAgICAgIHN0cm9rZWQ6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50T3V0bGluZSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoLFxuICAgICAgICByYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgICByYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzLFxuICAgICAgICBnZXRSYWRpdXM6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRDb2xvciksXG4gICAgICAgIGdldExpbmVDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvciksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyID0gbmV3IEdlb0pzb25MYXllcihcbiAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgZ3VpZGVzYCxcbiAgICAgICAgZGF0YTogZ3VpZGVzLFxuICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgcG9pbnRzOiBwb2ludExheWVyUHJvcHMsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLnByb3BzLmxpbmVXaWR0aFNjYWxlLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgICBsaW5lV2lkdGhNYXhQaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWF4UGl4ZWxzLFxuICAgICAgICBsaW5lV2lkdGhVbml0czogdGhpcy5wcm9wcy5saW5lV2lkdGhVbml0cyxcbiAgICAgICAgbGluZUpvaW50Um91bmRlZDogdGhpcy5wcm9wcy5saW5lSm9pbnRSb3VuZGVkLFxuICAgICAgICBsaW5lTWl0ZXJMaW1pdDogdGhpcy5wcm9wcy5saW5lTWl0ZXJMaW1pdCxcbiAgICAgICAgZ2V0TGluZUNvbG9yOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlTGluZUNvbG9yKSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlTGluZVdpZHRoKSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlRmlsbENvbG9yKSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbbGF5ZXJdO1xuICB9XG5cbiAgY3JlYXRlVG9vbHRpcHNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IHRvb2x0aXBzID0gbW9kZS5nZXRUb29sdGlwcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBUZXh0TGF5ZXIoXG4gICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICBpZDogYHRvb2x0aXBzYCxcbiAgICAgICAgZGF0YTogdG9vbHRpcHMsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gW2xheWVyXTtcbiAgfVxuXG4gIG9uTGF5ZXJDbGljayhldmVudDogQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZUNsaWNrKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvbkxheWVyS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVLZXlVcChldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25TdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZVN0b3BEcmFnZ2luZyhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25Qb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCkge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBsYXN0UG9pbnRlck1vdmVFdmVudDogZXZlbnQgfSk7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pIHtcbiAgICBsZXQgeyBjdXJzb3IgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKCFjdXJzb3IpIHtcbiAgICAgIC8vIGRlZmF1bHQgY3Vyc29yXG4gICAgICBjdXJzb3IgPSBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIGdldEFjdGl2ZU1vZGUoKTogR2VvSnNvbkVkaXRNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubW9kZTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/editable-h3-cluster-layer.js b/modules/layers/dist-es6/layers/editable-h3-cluster-layer.js new file mode 100644 index 000000000..0463f5730 --- /dev/null +++ b/modules/layers/dist-es6/layers/editable-h3-cluster-layer.js @@ -0,0 +1,279 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _geoLayers = require("@deck.gl/geo-layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _h3Js = require("h3-js"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./editable-geojson-layer")); + +var _editableLayer = _interopRequireDefault(require("./editable-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 DEFAULT_EDIT_MODE = _editModes.ViewMode; +var DEFAULT_H3_RESOLUTION = 9; +var EMPTY_FEATURE_COLLECTION = { + type: 'FeatureCollection', + features: [] +}; + +var defaultProps = _objectSpread({ + mode: DEFAULT_EDIT_MODE +}, _editableGeojsonLayer["default"].defaultProps, { + // h3 layer + data: [], + selectedIndexes: [], + filled: false, + stroked: true, + lineWidthScale: 1, + lineWidthMinPixels: 1, + lineWidthMaxPixels: Number.MAX_SAFE_INTEGER, + lineWidthUnits: 'pixels', + getHexagons: function getHexagons(d) { + return d.hexIds; + }, + getEditedCluster: function getEditedCluster(updatedHexagons, existingCluster) { + if (existingCluster) { + return _objectSpread({}, existingCluster, { + hexIds: updatedHexagons + }); + } + + return { + hexIds: updatedHexagons + }; + }, + resolution: DEFAULT_H3_RESOLUTION +}); + +var EditableH3ClusterLayer = /*#__PURE__*/function (_EditableLayer) { + _inherits(EditableH3ClusterLayer, _EditableLayer); + + var _super = _createSuper(EditableH3ClusterLayer); + + function EditableH3ClusterLayer() { + _classCallCheck(this, EditableH3ClusterLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableH3ClusterLayer, [{ + key: "initializeState", + value: function initializeState() { + _get(_getPrototypeOf(EditableH3ClusterLayer.prototype), "initializeState", this).call(this); + + this.setState({ + tentativeHexagonIDs: [] + }); + } // convert array of (lng, lat) coords to cluster of hexes + + }, { + key: "getDerivedHexagonIDs", + value: function getDerivedHexagonIDs(coords) { + return (0, _h3Js.polyfill)(coords, this.props.resolution, true); + } // convert pair of (lng, lat) coords into single hex + + }, { + key: "getDerivedHexagonID", + value: function getDerivedHexagonID(coords) { + return (0, _h3Js.geoToH3)(coords[1], coords[0], this.props.resolution); + } + }, { + key: "renderLayers", + value: function renderLayers() { + var _this = this; + + var layers = [new _editableGeojsonLayer["default"](this.getSubLayerProps({ + id: 'editable-geojson', + mode: this.props.mode, + data: EMPTY_FEATURE_COLLECTION, + selectedFeatureIndexes: [], + onEdit: function onEdit(editAction) { + var editType = editAction.editType, + editContext = editAction.editContext; + + switch (editType) { + case 'updateTentativeFeature': + // tentative feature updates, updated on every pointer move + if (editContext.feature.geometry.type === 'Polygon') { + var coords = editContext.feature.geometry.coordinates; + + var hexIDs = _this.getDerivedHexagonIDs(coords); + + _this.setState({ + tentativeHexagonIDs: hexIDs + }); + } else if (editContext.feature.geometry.type === 'Point') { + var _coords = editContext.feature.geometry.coordinates; + + var hexID = _this.getDerivedHexagonID(_coords); + + _this.setState({ + tentativeHexagonIDs: [hexID] + }); + } + + break; + + case 'addFeature': + var updatedData = _toConsumableArray(_this.props.data); + + var modeConfig = _this.props.modeConfig; + + if (!modeConfig || !modeConfig.booleanOperation) { + // add new h3 cluster + updatedData.push(_this.props.getEditedCluster(_this.state.tentativeHexagonIDs, null)); + } else if (_this.props.selectedIndexes.length !== 1) { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single cluster selection'); + } else { + // they're affecting a selected cluster + var finalHexagonIDs; + var committedHexagonIDs = new Set(_this.getSelectedHexIDs()); + var tentativeHexagonIDs = new Set(_this.state.tentativeHexagonIDs); + + switch (modeConfig.booleanOperation) { + case 'union': + default: + finalHexagonIDs = _toConsumableArray(new Set([].concat(_toConsumableArray(committedHexagonIDs), _toConsumableArray(tentativeHexagonIDs)))); + break; + + case 'intersection': + finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) { + return tentativeHexagonIDs.has(hexID); + }); + break; + + case 'difference': + finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) { + return !tentativeHexagonIDs.has(hexID); + }); + break; + } + + var selectedIndex = _this.props.selectedIndexes[0]; + var existingCluster = _this.props.data[selectedIndex]; + updatedData[selectedIndex] = _this.props.getEditedCluster(finalHexagonIDs, existingCluster); + } + + _this.setState({ + tentativeHexagonIDs: [] + }); + + _this.props.onEdit({ + updatedData: updatedData + }); + + break; + + default: + break; + } + } + })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({ + id: 'hexagons', + data: this.props.data, + getHexagons: this.props.getHexagons + })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({ + id: 'tentative-hexagons', + data: [{ + hexIds: this.state.tentativeHexagonIDs + }], + getHexagons: function getHexagons(d) { + return d.hexIds; + } + }))]; + return layers; + } // because data is an array of hexagon data, we take the cumulative of all selected indexes, + // using props.getHexagons to support multiple data types + + }, { + key: "getSelectedHexIDs", + value: function getSelectedHexIDs() { + var _this2 = this; + + var cumulativeHexIDs = []; + this.props.selectedIndexes.forEach(function (index) { + var selectedCluster = _this2.props.data[index]; + + var hexIDs = _this2.props.getHexagons(selectedCluster); + + cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs); + }); + return cumulativeHexIDs; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + var cursor = this.state.cursor; + + if (!cursor) { + // default cursor + cursor = isDragging ? 'grabbing' : 'grab'; + } + + return cursor; + } + }]); + + return EditableH3ClusterLayer; +}(_editableLayer["default"]); + +exports["default"] = EditableH3ClusterLayer; + +_defineProperty(EditableH3ClusterLayer, "layerName", 'EditableH3ClusterLayer'); + +_defineProperty(EditableH3ClusterLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtaDMtY2x1c3Rlci1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0VESVRfTU9ERSIsIlZpZXdNb2RlIiwiREVGQVVMVF9IM19SRVNPTFVUSU9OIiwiRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OIiwidHlwZSIsImZlYXR1cmVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIkVkaXRhYmxlR2VvSnNvbkxheWVyIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJsaW5lV2lkdGhVbml0cyIsImdldEhleGFnb25zIiwiZCIsImhleElkcyIsImdldEVkaXRlZENsdXN0ZXIiLCJ1cGRhdGVkSGV4YWdvbnMiLCJleGlzdGluZ0NsdXN0ZXIiLCJyZXNvbHV0aW9uIiwiRWRpdGFibGVIM0NsdXN0ZXJMYXllciIsInNldFN0YXRlIiwidGVudGF0aXZlSGV4YWdvbklEcyIsImNvb3JkcyIsInByb3BzIiwibGF5ZXJzIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsImlkIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsIm9uRWRpdCIsImVkaXRBY3Rpb24iLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJoZXhJRHMiLCJnZXREZXJpdmVkSGV4YWdvbklEcyIsImhleElEIiwiZ2V0RGVyaXZlZEhleGFnb25JRCIsInVwZGF0ZWREYXRhIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJwdXNoIiwic3RhdGUiLCJsZW5ndGgiLCJjb25zb2xlIiwid2FybiIsImZpbmFsSGV4YWdvbklEcyIsImNvbW1pdHRlZEhleGFnb25JRHMiLCJTZXQiLCJnZXRTZWxlY3RlZEhleElEcyIsImZpbHRlciIsImhhcyIsInNlbGVjdGVkSW5kZXgiLCJIM0NsdXN0ZXJMYXllciIsImN1bXVsYXRpdmVIZXhJRHMiLCJmb3JFYWNoIiwiaW5kZXgiLCJzZWxlY3RlZENsdXN0ZXIiLCJjb25jYXQiLCJpc0RyYWdnaW5nIiwiY3Vyc29yIiwiRWRpdGFibGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxpQkFBaUIsR0FBR0MsbUJBQTFCO0FBQ0EsSUFBTUMscUJBQXFCLEdBQUcsQ0FBOUI7QUFDQSxJQUFNQyx3QkFBd0IsR0FBRztBQUMvQkMsRUFBQUEsSUFBSSxFQUFFLG1CQUR5QjtBQUUvQkMsRUFBQUEsUUFBUSxFQUFFO0FBRnFCLENBQWpDOztBQUtBLElBQU1DLFlBQVk7QUFDaEJDLEVBQUFBLElBQUksRUFBRVA7QUFEVSxHQUliUSxpQ0FBcUJGLFlBSlI7QUFNaEI7QUFDQUcsRUFBQUEsSUFBSSxFQUFFLEVBUFU7QUFRaEJDLEVBQUFBLGVBQWUsRUFBRSxFQVJEO0FBU2hCQyxFQUFBQSxNQUFNLEVBQUUsS0FUUTtBQVVoQkMsRUFBQUEsT0FBTyxFQUFFLElBVk87QUFXaEJDLEVBQUFBLGNBQWMsRUFBRSxDQVhBO0FBWWhCQyxFQUFBQSxrQkFBa0IsRUFBRSxDQVpKO0FBYWhCQyxFQUFBQSxrQkFBa0IsRUFBRUMsTUFBTSxDQUFDQyxnQkFiWDtBQWNoQkMsRUFBQUEsY0FBYyxFQUFFLFFBZEE7QUFlaEJDLEVBQUFBLFdBQVcsRUFBRSxxQkFBQ0MsQ0FBRDtBQUFBLFdBQU9BLENBQUMsQ0FBQ0MsTUFBVDtBQUFBLEdBZkc7QUFnQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSwwQkFBQ0MsZUFBRCxFQUFrQkMsZUFBbEIsRUFBc0M7QUFDdEQsUUFBSUEsZUFBSixFQUFxQjtBQUNuQiwrQkFDS0EsZUFETDtBQUVFSCxRQUFBQSxNQUFNLEVBQUVFO0FB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LENBQVdYLFdBQVgsQ0FBdUI4QyxlQUF2QixDQUFmOztBQUNBSCxRQUFBQSxnQkFBZ0IsR0FBR0EsZ0JBQWdCLENBQUNJLE1BQWpCLENBQXdCeEIsTUFBeEIsQ0FBbkI7QUFDRCxPQUpEO0FBS0EsYUFBT29CLGdCQUFQO0FBQ0Q7OztvQ0FFa0Q7QUFBQSxVQUF2Q0ssVUFBdUMsUUFBdkNBLFVBQXVDO0FBQUEsVUFDM0NDLE1BRDJDLEdBQ2hDLEtBQUtsQixLQUQyQixDQUMzQ2tCLE1BRDJDOztBQUVqRCxVQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNYO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR0QsVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBbkM7QUFDRDs7QUFDRCxhQUFPQyxNQUFQO0FBQ0Q7Ozs7RUF0SmlEQyx5Qjs7OztnQkFBL0IzQyxzQixlQUNBLHdCOztnQkFEQUEsc0Isa0JBRUdwQixZIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCB7IEgzQ2x1c3RlckxheWVyIH0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBwb2x5ZmlsbCwgZ2VvVG9IMyB9IGZyb20gJ2gzLWpzJztcbmltcG9ydCBFZGl0YWJsZUdlb0pzb25MYXllciBmcm9tICcuL2VkaXRhYmxlLWdlb2pzb24tbGF5ZXInO1xuaW1wb3J0IEVkaXRhYmxlTGF5ZXIgZnJvbSAnLi9lZGl0YWJsZS1sYXllcic7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gVmlld01vZGU7XG5jb25zdCBERUZBVUxUX0gzX1JFU09MVVRJT04gPSA5O1xuY29uc3QgRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OID0ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICBmZWF0dXJlczogW10sXG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIG1vZGU6IERFRkFVTFRfRURJVF9NT0RFLFxuXG4gIC8vIEVkaXRhYmxlR2VvSnNvbkxheWVyXG4gIC4uLkVkaXRhYmxlR2VvSnNvbkxheWVyLmRlZmF1bHRQcm9wcyxcblxuICAvLyBoMyBsYXllclxuICBkYXRhOiBbXSxcbiAgc2VsZWN0ZWRJbmRleGVzOiBbXSxcbiAgZmlsbGVkOiBmYWxzZSxcbiAgc3Ryb2tlZDogdHJ1ZSxcbiAgbGluZVdpZHRoU2NhbGU6IDEsXG4gIGxpbmVXaWR0aE1pblBpeGVsczogMSxcbiAgbGluZVdpZHRoTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBnZXRIZXhhZ29uczogKGQpID0+IGQuaGV4SWRzLFxuICBnZXRFZGl0ZWRDbHVzdGVyOiAodXBkYXRlZEhleGFnb25zLCBleGlzdGluZ0NsdXN0ZXIpID0+IHtcbiAgICBpZiAoZXhpc3RpbmdDbHVzdGVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5leGlzdGluZ0NsdXN0ZXIsXG4gICAgICAgIGhleElkczogdXBkYXRlZEhleGFnb25zLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGhleElkczogdXBkYXRlZEhleGFnb25zLFxuICAgIH07XG4gIH0sXG4gIHJlc29sdXRpb246IERFRkFVTFRfSDNfUkVTT0xVVElPTixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlSDNDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBFZGl0YWJsZUxheWVyIHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdFZGl0YWJsZUgzQ2x1c3RlckxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZVN0YXRlKCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gY29udmVydCBhcnJheSBvZiAobG5nLCBsYXQpIGNvb3JkcyB0byBjbHVzdGVyIG9mIGhleGVzXG4gIGdldERlcml2ZWRIZXhhZ29uSURzKGNvb3Jkcykge1xuICAgIHJldHVybiBwb2x5ZmlsbChjb29yZHMsIHRoaXMucHJvcHMucmVzb2x1dGlvbiwgdHJ1ZSk7XG4gIH1cblxuICAvLyBjb252ZXJ0IHBhaXIgb2YgKGxuZywgbGF0KSBjb29yZHMgaW50byBzaW5nbGUgaGV4XG4gIGdldERlcml2ZWRIZXhhZ29uSUQoY29vcmRzKSB7XG4gICAgcmV0dXJuIGdlb1RvSDMoY29vcmRzWzFdLCBjb29yZHNbMF0sIHRoaXMucHJvcHMucmVzb2x1dGlvbik7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgbGF5ZXJzOiBhbnkgPSBbXG4gICAgICBuZXcgRWRpdGFibGVHZW9Kc29uTGF5ZXIoXG4gICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgaWQ6ICdlZGl0YWJsZS1nZW9qc29uJyxcblxuICAgICAgICAgIG1vZGU6IHRoaXMucHJvcHMubW9kZSxcbiAgICAgICAgICBkYXRhOiBFTVBUWV9GRUFUVVJFX0NPTExFQ1RJT04sXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogW10sXG5cbiAgICAgICAgICBvbkVkaXQ6IChlZGl0QWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGVkaXRUeXBlLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcblxuICAgICAgICAgICAgc3dpdGNoIChlZGl0VHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICd1cGRhdGVUZW50YXRpdmVGZWF0dXJlJzpcbiAgICAgICAgICAgICAgICAvLyB0ZW50YXRpdmUgZmVhdHVyZSB1cGRhdGVzLCB1cGRhdGVkIG9uIGV2ZXJ5IHBvaW50ZXIgbW92ZVxuICAgICAgICAgICAgICAgIGlmIChlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29vcmRzID0gZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhleElEcyA9IHRoaXMuZ2V0RGVyaXZlZEhleGFnb25JRHMoY29vcmRzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRlbnRhdGl2ZUhleGFnb25JRHM6IGhleElEcyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkaXRDb250ZXh0LmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29vcmRzID0gZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhleElEID0gdGhpcy5nZXREZXJpdmVkSGV4YWdvbklEKGNvb3Jkcyk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0ZW50YXRpdmVIZXhhZ29uSURzOiBbaGV4SURdIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnYWRkRmVhdHVyZSc6XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBbLi4udGhpcy5wcm9wcy5kYXRhXTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG1vZGVDb25maWcgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1vZGVDb25maWcgfHwgIW1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgLy8gYWRkIG5ldyBoMyBjbHVzdGVyXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkRGF0YS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmdldEVkaXRlZENsdXN0ZXIodGhpcy5zdGF0ZS50ZW50YXRpdmVIZXhhZ29uSURzLCBudWxsKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignYm9vbGVhbk9wZXJhdGlvbiBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIGNsdXN0ZXIgc2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIHRoZXkncmUgYWZmZWN0aW5nIGEgc2VsZWN0ZWQgY2x1c3RlclxuICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsSGV4YWdvbklEcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHRlZEhleGFnb25JRHMgPSBuZXcgU2V0KHRoaXMuZ2V0U2VsZWN0ZWRIZXhJRHMoKSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0ZW50YXRpdmVIZXhhZ29uSURzID0gbmV3IFNldCh0aGlzLnN0YXRlLnRlbnRhdGl2ZUhleGFnb25JRHMpO1xuXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmV3IFNldChbLi4uY29tbWl0dGVkSGV4YWdvbklEcywgLi4udGVudGF0aXZlSGV4YWdvbklEc10pLFxuICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ludGVyc2VjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gWy4uLmNvbW1pdHRlZEhleGFnb25JRHNdLmZpbHRlcigoaGV4SUQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHMuaGFzKGhleElEKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RpZmZlcmVuY2UnOlxuICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGV4YWdvbklEcyA9IFsuLi5jb21taXR0ZWRIZXhhZ29uSURzXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaGV4SUQ6IHN0cmluZykgPT4gIXRlbnRhdGl2ZUhleGFnb25JRHMuaGFzKGhleElEKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLnByb3BzLnNlbGVjdGVkSW5kZXhlc1swXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2x1c3RlciA9IHRoaXMucHJvcHMuZGF0YVtzZWxlY3RlZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWREYXRhW3NlbGVjdGVkSW5kZXhdID0gdGhpcy5wcm9wcy5nZXRFZGl0ZWRDbHVzdGVyKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMsXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2x1c3RlclxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHM6IFtdLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkVkaXQoeyB1cGRhdGVkRGF0YSB9KTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgICBuZXcgSDNDbHVzdGVyTGF5ZXIoXG4gICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgaWQ6ICdoZXhhZ29ucycsXG4gICAgICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgICAgIGdldEhleGFnb25zOiB0aGlzLnByb3BzLmdldEhleGFnb25zLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIG5ldyBIM0NsdXN0ZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ3RlbnRhdGl2ZS1oZXhhZ29ucycsXG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBoZXhJZHM6IHRoaXMuc3RhdGUudGVudGF0aXZlSGV4YWdvbklEcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBnZXRIZXhhZ29uczogKGQpID0+IGQuaGV4SWRzLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICBdO1xuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICAvLyBiZWNhdXNlIGRhdGEgaXMgYW4gYXJyYXkgb2YgaGV4YWdvbiBkYXRhLCB3ZSB0YWtlIHRoZSBjdW11bGF0aXZlIG9mIGFsbCBzZWxlY3RlZCBpbmRleGVzLFxuICAvLyB1c2luZyBwcm9wcy5nZXRIZXhhZ29ucyB0byBzdXBwb3J0IG11bHRpcGxlIGRhdGEgdHlwZXNcbiAgZ2V0U2VsZWN0ZWRIZXhJRHMoKSB7XG4gICAgbGV0IGN1bXVsYXRpdmVIZXhJRHMgPSBbXTtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGVkSW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDbHVzdGVyID0gdGhpcy5wcm9wcy5kYXRhW2luZGV4XTtcbiAgICAgIGNvbnN0IGhleElEcyA9IHRoaXMucHJvcHMuZ2V0SGV4YWdvbnMoc2VsZWN0ZWRDbHVzdGVyKTtcbiAgICAgIGN1bXVsYXRpdmVIZXhJRHMgPSBjdW11bGF0aXZlSGV4SURzLmNvbmNhdChoZXhJRHMpO1xuICAgIH0pO1xuICAgIHJldHVybiBjdW11bGF0aXZlSGV4SURzO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSkge1xuICAgIGxldCB7IGN1cnNvciB9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoIWN1cnNvcikge1xuICAgICAgLy8gZGVmYXVsdCBjdXJzb3JcbiAgICAgIGN1cnNvciA9IGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/editable-layer.js b/modules/layers/dist-es6/layers/editable-layer.js new file mode 100644 index 000000000..17c8839dc --- /dev/null +++ b/modules/layers/dist-es6/layers/editable-layer.js @@ -0,0 +1,331 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup']; + +var EditableLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(EditableLayer, _CompositeLayer); + + var _super = _createSuper(EditableLayer); + + function EditableLayer() { + _classCallCheck(this, EditableLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableLayer, [{ + key: "onLayerClick", + // Overridable interaction event handlers + value: function onLayerClick(event) {// default implementation - do nothing + } + }, { + key: "onStartDragging", + value: function onStartDragging(event) {// default implementation - do nothing + } + }, { + key: "onStopDragging", + value: function onStopDragging(event) {// default implementation - do nothing + } + }, { + key: "onDragging", + value: function onDragging(event) {// default implementation - do nothing + } + }, { + key: "onPointerMove", + value: function onPointerMove(event) {// default implementation - do nothing + } + }, { + key: "onLayerKeyUp", + value: function onLayerKeyUp(event) {} // default implementation - do nothing; + // TODO: implement onCancelDragging (e.g. drag off screen) + + }, { + key: "initializeState", + value: function initializeState() { + this.setState({ + _editableLayerState: { + // Picked objects at the time the pointer went down + pointerDownPicks: null, + // Screen coordinates where the pointer went down + pointerDownScreenCoords: null, + // Ground coordinates where the pointer went down + pointerDownMapCoords: null, + // Keep track of the mjolnir.js event handler so it can be deregistered + eventHandler: this._forwardEventToCurrentLayer.bind(this) + } + }); + + this._addEventHandlers(); + } + }, { + key: "finalizeState", + value: function finalizeState() { + this._removeEventHandlers(); + } + }, { + key: "_addEventHandlers", + value: function _addEventHandlers() { + // @ts-ignore + var eventManager = this.context.deck.eventManager; + var eventHandler = this.state._editableLayerState.eventHandler; + + var _iterator = _createForOfIteratorHelper(EVENT_TYPES), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var eventType = _step.value; + eventManager.on(eventType, eventHandler, { + // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers + priority: 100 + }); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + // @ts-ignore + var eventManager = this.context.deck.eventManager; + var eventHandler = this.state._editableLayerState.eventHandler; + + var _iterator2 = _createForOfIteratorHelper(EVENT_TYPES), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var eventType = _step2.value; + eventManager.off(eventType, eventHandler); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } // A new layer instance is created on every render, so forward the event to the current layer + // This means that the first layer instance will stick around to be the event listener, but will forward the event + // to the latest layer instance. + + }, { + key: "_forwardEventToCurrentLayer", + value: function _forwardEventToCurrentLayer(event) { + var currentLayer = this.getCurrentLayer(); // Use a naming convention to find the event handling function for this event type + + var func = currentLayer["_on".concat(event.type)].bind(currentLayer); + + if (!func) { + console.warn("no handler for mjolnir.js event ".concat(event.type)); // eslint-disable-line + + return; + } + + func(event); + } + }, { + key: "_onanyclick", + value: function _onanyclick(_ref) { + var srcEvent = _ref.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onLayerClick({ + mapCoords: mapCoords, + // @ts-ignore + screenCoords: screenCoords, + picks: picks, + sourceEvent: srcEvent + }); + } + }, { + key: "_onkeyup", + value: function _onkeyup(_ref2) { + var srcEvent = _ref2.srcEvent; + this.onLayerKeyUp(srcEvent); + } + }, { + key: "_onpanstart", + value: function _onpanstart(event) { + var screenCoords = this.getScreenCoords(event.srcEvent); + var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.setState({ + _editableLayerState: _objectSpread({}, this.state._editableLayerState, { + pointerDownScreenCoords: screenCoords, + pointerDownMapCoords: mapCoords, + pointerDownPicks: picks + }) + }); + this.onStartDragging({ + picks: picks, + // @ts-ignore + screenCoords: screenCoords, + // @ts-ignore + mapCoords: mapCoords, + // @ts-ignore + pointerDownScreenCoords: screenCoords, + pointerDownMapCoords: mapCoords, + cancelPan: event.stopImmediatePropagation, + sourceEvent: event.srcEvent + }); + } + }, { + key: "_onpanmove", + value: function _onpanmove(event) { + var srcEvent = event.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onDragging({ + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + picks: picks, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent, + cancelPan: event.stopImmediatePropagation // another (hacky) approach for cancelling map panning + // const controller = this.context.deck.viewManager.controllers[ + // Object.keys(this.context.deck.viewManager.controllers)[0] + // ]; + // controller._state.isDragging = false; + + }); + } + }, { + key: "_onpanend", + value: function _onpanend(_ref3) { + var srcEvent = _ref3.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable2 = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable2.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable2.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable2.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onStopDragging({ + picks: picks, + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent + }); + this.setState({ + _editableLayerState: _objectSpread({}, this.state._editableLayerState, { + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + pointerDownPicks: null + }) + }); + } + }, { + key: "_onpointermove", + value: function _onpointermove(event) { + var srcEvent = event.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable3 = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable3.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable3.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable3.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onPointerMove({ + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + picks: picks, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent + }); + } + }, { + key: "getPicks", + value: function getPicks(screenCoords) { + // @ts-ignore + return this.context.deck.pickMultipleObjects({ + x: screenCoords[0], + y: screenCoords[1], + layerIds: [this.props.id], + radius: this.props.pickingRadius, + depth: this.props.pickingDepth + }); + } + }, { + key: "getScreenCoords", + value: function getScreenCoords(pointerEvent) { + return [pointerEvent.clientX - this.context.gl.canvas.getBoundingClientRect().left, pointerEvent.clientY - this.context.gl.canvas.getBoundingClientRect().top]; + } + }, { + key: "getMapCoords", + value: function getMapCoords(screenCoords) { + // @ts-ignore + return this.context.viewport.unproject([screenCoords[0], screenCoords[1]]); + } + }]); + + return EditableLayer; +}(_core.CompositeLayer); + +exports["default"] = EditableLayer; + +_defineProperty(EditableLayer, "layerName", 'EditableLayer'); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiRVZFTlRfVFlQRVMiLCJFZGl0YWJsZUxheWVyIiwiZXZlbnQiLCJzZXRTdGF0ZSIsIl9lZGl0YWJsZUxheWVyU3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImV2ZW50SGFuZGxlciIsIl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllciIsImJpbmQiLCJfYWRkRXZlbnRIYW5kbGVycyIsIl9yZW1vdmVFdmVudEhhbmRsZXJzIiwiZXZlbnRNYW5hZ2VyIiwiY29udGV4dCIsImRlY2siLCJzdGF0ZSIsImV2ZW50VHlwZSIsIm9uIiwicHJpb3JpdHkiLCJvZmYiLCJjdXJyZW50TGF5ZXIiLCJnZXRDdXJyZW50TGF5ZXIiLCJmdW5jIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwic3JjRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJnZXRTY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJnZXRNYXBDb29yZHMiLCJwaWNrcyIsImdldFBpY2tzIiwib25MYXllckNsaWNrIiwic291cmNlRXZlbnQiLCJvbkxheWVyS2V5VXAiLCJvblN0YXJ0RHJhZ2dpbmciLCJjYW5jZWxQYW4iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJvbkRyYWdnaW5nIiwib25TdG9wRHJhZ2dpbmciLCJvblBvaW50ZXJNb3ZlIiwicGlja011bHRpcGxlT2JqZWN0cyIsIngiLCJ5IiwibGF5ZXJJZHMiLCJwcm9wcyIsImlkIiwicmFkaXVzIiwicGlja2luZ1JhZGl1cyIsImRlcHRoIiwicGlja2luZ0RlcHRoIiwicG9pbnRlckV2ZW50IiwiY2xpZW50WCIsImdsIiwiY2FudmFzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJ2aWV3cG9ydCIsInVucHJvamVjdCIsIkNvbXBvc2l0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QWIsRUFBa0JBLFlBQVksQ0FBQyxDQUFELENBQTlCLENBQWhDLENBQVA7QUFDRDs7OztFQXhQd0NtQyxvQjs7OztnQkFBdEI5RCxhLGVBQ0EsZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuY29uc3QgRVZFTlRfVFlQRVMgPSBbJ2FueWNsaWNrJywgJ3BvaW50ZXJtb3ZlJywgJ3BhbnN0YXJ0JywgJ3Bhbm1vdmUnLCAncGFuZW5kJywgJ2tleXVwJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdFZGl0YWJsZUxheWVyJztcbiAgLy8gT3ZlcnJpZGFibGUgaW50ZXJhY3Rpb24gZXZlbnQgaGFuZGxlcnNcbiAgb25MYXllckNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gLSBkbyBub3RoaW5nXG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIC0gZG8gbm90aGluZ1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmc7XG4gIH1cbiAgLy8gVE9ETzogaW1wbGVtZW50IG9uQ2FuY2VsRHJhZ2dpbmcgKGUuZy4gZHJhZyBvZmYgc2NyZWVuKVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLy8gUGlja2VkIG9iamVjdHMgYXQgdGhlIHRpbWUgdGhlIHBvaW50ZXIgd2VudCBkb3duXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICAgIC8vIFNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICAgIC8vIEdyb3VuZCBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgbWpvbG5pci5qcyBldmVudCBoYW5kbGVyIHNvIGl0IGNhbiBiZSBkZXJlZ2lzdGVyZWRcbiAgICAgICAgZXZlbnRIYW5kbGVyOiB0aGlzLl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2FkZEV2ZW50SGFuZGxlcnMoKTtcbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRIYW5kbGVycygpO1xuICB9XG5cbiAgX2FkZEV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vbihldmVudFR5cGUsIGV2ZW50SGFuZGxlciwge1xuICAgICAgICAvLyBnaXZlIG5lYnVsYSBhIGhpZ2hlciBwcmlvcml0eSBzbyB0aGF0IGl0IGNhbiBzdG9wIHByb3BhZ2F0aW9uIHRvIGRlY2suZ2wncyBtYXAgcGFubmluZyBoYW5kbGVyc1xuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbW92ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYoZXZlbnRUeXBlLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEEgbmV3IGxheWVyIGluc3RhbmNlIGlzIGNyZWF0ZWQgb24gZXZlcnkgcmVuZGVyLCBzbyBmb3J3YXJkIHRoZSBldmVudCB0byB0aGUgY3VycmVudCBsYXllclxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcnN0IGxheWVyIGluc3RhbmNlIHdpbGwgc3RpY2sgYXJvdW5kIHRvIGJlIHRoZSBldmVudCBsaXN0ZW5lciwgYnV0IHdpbGwgZm9yd2FyZCB0aGUgZXZlbnRcbiAgLy8gdG8gdGhlIGxhdGVzdCBsYXllciBpbnN0YW5jZS5cbiAgX2ZvcndhcmRFdmVudFRvQ3VycmVudExheWVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmdldEN1cnJlbnRMYXllcigpO1xuXG4gICAgLy8gVXNlIGEgbmFtaW5nIGNvbnZlbnRpb24gdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgZnVuY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZVxuICAgIGNvbnN0IGZ1bmMgPSBjdXJyZW50TGF5ZXJbYF9vbiR7ZXZlbnQudHlwZX1gXS5iaW5kKGN1cnJlbnRMYXllcik7XG4gICAgaWYgKCFmdW5jKSB7XG4gICAgICBjb25zb2xlLndhcm4oYG5vIGhhbmRsZXIgZm9yIG1qb2xuaXIuanMgZXZlbnQgJHtldmVudC50eXBlfWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmMoZXZlbnQpO1xuICB9XG5cbiAgX29uYW55Y2xpY2soeyBzcmNFdmVudCB9OiBhbnkpIHtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSB0aGlzLmdldFNjcmVlbkNvb3JkcyhzcmNFdmVudCk7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy5nZXRNYXBDb29yZHMoc2NyZWVuQ29vcmRzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uTGF5ZXJDbGljayh7XG4gICAgICBtYXBDb29yZHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzY3JlZW5Db29yZHMsXG4gICAgICBwaWNrcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbmtleXVwKHsgc3JjRXZlbnQgfTogeyBzcmNFdmVudDogS2V5Ym9hcmRFdmVudCB9KSB7XG4gICAgdGhpcy5vbkxheWVyS2V5VXAoc3JjRXZlbnQpO1xuICB9XG5cbiAgX29ucGFuc3RhcnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKGV2ZW50LnNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwaWNrcyA9IHRoaXMuZ2V0UGlja3Moc2NyZWVuQ29vcmRzKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX2VkaXRhYmxlTGF5ZXJTdGF0ZToge1xuICAgICAgICAuLi50aGlzLnN0YXRlLl9lZGl0YWJsZUxheWVyU3RhdGUsXG4gICAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBzY3JlZW5Db29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IHBpY2tzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMub25TdGFydERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IHNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICBjYW5jZWxQYW46IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbixcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudC5zcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uRHJhZ2dpbmcoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgICAgLy8gYW5vdGhlciAoaGFja3kpIGFwcHJvYWNoIGZvciBjYW5jZWxsaW5nIG1hcCBwYW5uaW5nXG4gICAgICAvLyBjb25zdCBjb250cm9sbGVyID0gdGhpcy5jb250ZXh0LmRlY2sudmlld01hbmFnZXIuY29udHJvbGxlcnNbXG4gICAgICAvLyAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dC5kZWNrLnZpZXdNYW5hZ2VyLmNvbnRyb2xsZXJzKVswXVxuICAgICAgLy8gXTtcbiAgICAgIC8vIGNvbnRyb2xsZXIuX3N0YXRlLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbmVuZCh7IHNyY0V2ZW50IH06IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uU3RvcERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICBzb3VyY2VFdmVudDogc3JjRXZlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlLFxuICAgICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgX29ucG9pbnRlcm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uUG9pbnRlck1vdmUoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tzKHNjcmVlbkNvb3JkczogW251bWJlciwgbnVtYmVyXSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRlY2sucGlja011bHRpcGxlT2JqZWN0cyh7XG4gICAgICB4OiBzY3JlZW5Db29yZHNbMF0sXG4gICAgICB5OiBzY3JlZW5Db29yZHNbMV0sXG4gICAgICBsYXllcklkczogW3RoaXMucHJvcHMuaWRdLFxuICAgICAgcmFkaXVzOiB0aGlzLnByb3BzLnBpY2tpbmdSYWRpdXMsXG4gICAgICBkZXB0aDogdGhpcy5wcm9wcy5waWNraW5nRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTY3JlZW5Db29yZHMocG9pbnRlckV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gW1xuICAgICAgcG9pbnRlckV2ZW50LmNsaWVudFggLVxuICAgICAgICAodGhpcy5jb250ZXh0LmdsLmNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxcbiAgICAgIHBvaW50ZXJFdmVudC5jbGllbnRZIC1cbiAgICAgICAgKHRoaXMuY29udGV4dC5nbC5jYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxcbiAgICBdO1xuICB9XG5cbiAgZ2V0TWFwQ29vcmRzKHNjcmVlbkNvb3JkczogbnVtYmVyW10pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC52aWV3cG9ydC51bnByb2plY3QoW3NjcmVlbkNvb3Jkc1swXSwgc2NyZWVuQ29vcmRzWzFdXSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/elevated-edit-handle-layer.js b/modules/layers/dist-es6/layers/elevated-edit-handle-layer.js new file mode 100644 index 000000000..0ddaf8057 --- /dev/null +++ b/modules/layers/dist-es6/layers/elevated-edit-handle-layer.js @@ -0,0 +1,83 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultProps = {}; + +var ElevatedEditHandleLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(ElevatedEditHandleLayer, _CompositeLayer); + + var _super = _createSuper(ElevatedEditHandleLayer); + + function ElevatedEditHandleLayer() { + _classCallCheck(this, ElevatedEditHandleLayer); + + return _super.apply(this, arguments); + } + + _createClass(ElevatedEditHandleLayer, [{ + key: "renderLayers", + value: function renderLayers() { + var handles = new _layers.ScatterplotLayer(Object.assign({}, this.props, { + id: "".concat(this.props.id, "-ScatterplotLayer"), + data: this.props.data + })); + var lines = new _layers.LineLayer(Object.assign({}, this.props, { + id: "".concat(this.props.id, "-LineLayer"), + data: this.props.data, + pickable: false, + getSourcePosition: function getSourcePosition(_ref) { + var position = _ref.position; + return [position[0], position[1], 0]; + }, + getTargetPosition: function getTargetPosition(_ref2) { + var position = _ref2.position; + return [position[0], position[1], position[2] || 0]; + }, + getColor: [150, 150, 150, 200], + getStrokeWidth: 3 + })); + return [handles, lines]; + } + }]); + + return ElevatedEditHandleLayer; +}(_core.CompositeLayer); + +exports["default"] = ElevatedEditHandleLayer; + +_defineProperty(ElevatedEditHandleLayer, "layerName", 'ElevatedEditHandleLayer'); + +_defineProperty(ElevatedEditHandleLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIiLCJoYW5kbGVzIiwiU2NhdHRlcnBsb3RMYXllciIsIk9iamVjdCIsImFzc2lnbiIsInByb3BzIiwiaWQiLCJkYXRhIiwibGluZXMiLCJMaW5lTGF5ZXIiLCJwaWNrYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwicG9zaXRpb24iLCJnZXRUYXJnZXRQb3NpdGlvbiIsImdldENvbG9yIiwiZ2V0U3Ryb2tlV2lkdGgiLCJDb21wb3NpdGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxFQUFyQjs7SUFFcUJDLHVCOzs7Ozs7Ozs7Ozs7O21DQUdKO0FBQ2IsVUFBTUMsT0FBTyxHQUFHLElBQUlDLHdCQUFKLENBQ2RDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLHNCQUQwQjtBQUU1QkMsUUFBQUEsSUFBSSxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFGVyxPQUE5QixDQURjLENBQWhCO0FBT0EsVUFBTUMsS0FBSyxHQUFHLElBQUlDLGlCQUFKLENBQ1pOLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLGVBRDBCO0FBRTVCQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0YsS0FBTCxDQUFXRSxJQUZXO0FBRzVCRyxRQUFBQSxRQUFRLEVBQUUsS0FIa0I7QUFJNUJDLFFBQUFBLGlCQUFpQixFQUFFO0FBQUEsY0FBR0MsUUFBSCxRQUFHQSxRQUFIO0FBQUEsaUJBQWtCLENBQUNBLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkIsQ0FBM0IsQ0FBbEI7QUFBQSxTQUpTO0FBSzVCQyxRQUFBQSxpQkFBaUIsRUFBRTtBQUFBLGNBQUdELFFBQUgsU0FBR0EsUUFBSDtBQUFBLGlCQUFrQixDQUFDQSxRQUFRLENBQUMsQ0FBRCxDQUFULEVBQWNBLFFBQVEsQ0FBQyxDQUFELENBQXRCLEVBQTJCQSxRQUFRLENBQUMsQ0FBRCxDQUFSLElBQWUsQ0FBMUMsQ0FBbEI7QUFBQSxTQUxTO0FBTTVCRSxRQUFBQSxRQUFRLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsQ0FOa0I7QUFPNUJDLFFBQUFBLGNBQWMsRUFBRTtBQVBZLE9BQTlCLENBRFksQ0FBZDtBQVlBLGFBQU8sQ0FBQ2QsT0FBRCxFQUFVTyxLQUFWLENBQVA7QUFDRDs7OztFQXhCa0RRLG9COzs7O2dCQUFoQ2hCLHVCLGVBQ0EseUI7O2dCQURBQSx1QixrQkFFR0QsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciwgTGluZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgaGFuZGxlcyA9IG5ldyBTY2F0dGVycGxvdExheWVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wcm9wcywge1xuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tU2NhdHRlcnBsb3RMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmVzID0gbmV3IExpbmVMYXllcihcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMsIHtcbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LUxpbmVMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjogKHsgcG9zaXRpb24gfSkgPT4gW3Bvc2l0aW9uWzBdLCBwb3NpdGlvblsxXSwgMF0sXG4gICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiAoeyBwb3NpdGlvbiB9KSA9PiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXSB8fCAwXSxcbiAgICAgICAgZ2V0Q29sb3I6IFsxNTAsIDE1MCwgMTUwLCAyMDBdLFxuICAgICAgICBnZXRTdHJva2VXaWR0aDogMyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbaGFuZGxlcywgbGluZXNdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/junction-scatterplot-layer.js b/modules/layers/dist-es6/layers/junction-scatterplot-layer.js new file mode 100644 index 000000000..d9904332b --- /dev/null +++ b/modules/layers/dist-es6/layers/junction-scatterplot-layer.js @@ -0,0 +1,102 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 JunctionScatterplotLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(JunctionScatterplotLayer, _CompositeLayer); + + var _super = _createSuper(JunctionScatterplotLayer); + + function JunctionScatterplotLayer() { + _classCallCheck(this, JunctionScatterplotLayer); + + return _super.apply(this, arguments); + } + + _createClass(JunctionScatterplotLayer, [{ + key: "renderLayers", + value: function renderLayers() { + var _this$props = this.props, + id = _this$props.id, + getFillColor = _this$props.getFillColor, + getStrokeColor = _this$props.getStrokeColor, + getInnerRadius = _this$props.getInnerRadius, + updateTriggers = _this$props.updateTriggers; // data needs to be passed explicitly after deck.gl 5.3 + + return [// the full circles + new _layers.ScatterplotLayer(_objectSpread({}, this.props, { + id: "".concat(id, "-full"), + data: this.props.data, + getLineColor: getStrokeColor, + updateTriggers: _objectSpread({}, updateTriggers, { + getStrokeColor: updateTriggers.getStrokeColor + }) + })), // the inner part + new _layers.ScatterplotLayer(_objectSpread({}, this.props, { + id: "".concat(id, "-inner"), + data: this.props.data, + getFillColor: getFillColor, + getRadius: getInnerRadius, + pickable: false, + updateTriggers: _objectSpread({}, updateTriggers, { + getFillColor: updateTriggers.getFillColor, + getRadius: updateTriggers.getInnerRadius + }) + }))]; + } + }]); + + return JunctionScatterplotLayer; +}(_core.CompositeLayer); + +exports["default"] = JunctionScatterplotLayer; + +_defineProperty(JunctionScatterplotLayer, "layerName", 'JunctionScatterplotLayer'); + +_defineProperty(JunctionScatterplotLayer, "defaultProps", _objectSpread({}, _layers.ScatterplotLayer.defaultProps, { + getFillColor: function getFillColor(d) { + return [0, 0, 0, 255]; + }, + getStrokeColor: function getStrokeColor(d) { + return [255, 255, 255, 255]; + }, + getInnerRadius: function getInnerRadius(d) { + return 1; + } +})); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvanVuY3Rpb24tc2NhdHRlcnBsb3QtbGF5ZXIudHMiXSwibmFtZXMiOlsiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwicHJvcHMiLCJpZCIsImdldEZpbGxDb2xvciIsImdldFN0cm9rZUNvbG9yIiwiZ2V0SW5uZXJSYWRpdXMiLCJ1cGRhdGVUcmlnZ2VycyIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkYXRhIiwiZ2V0TGluZUNvbG9yIiwiZ2V0UmFkaXVzIiwicGlja2FibGUiLCJDb21wb3NpdGVMYXllciIsImRlZmF1bHRQcm9wcyIsImQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSx3Qjs7Ozs7Ozs7Ozs7OzttQ0FVSjtBQUFBLHdCQUNnRSxLQUFLQyxLQURyRTtBQUFBLFVBQ0xDLEVBREssZUFDTEEsRUFESztBQUFBLFVBQ0RDLFlBREMsZUFDREEsWUFEQztBQUFBLFVBQ2FDLGNBRGIsZUFDYUEsY0FEYjtBQUFBLFVBQzZCQyxjQUQ3QixlQUM2QkEsY0FEN0I7QUFBQSxVQUM2Q0MsY0FEN0MsZUFDNkNBLGNBRDdDLEVBR2I7O0FBQ0EsYUFBTyxDQUNMO0FBQ0EsVUFBSUMsd0JBQUosbUJBQ0ssS0FBS04sS0FEVjtBQUVFQyxRQUFBQSxFQUFFLFlBQUtBLEVBQUwsVUFGSjtBQUdFTSxRQUFBQSxJQUFJLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxJQUhuQjtBQUlFQyxRQUFBQSxZQUFZLEVBQUVMLGNBSmhCO0FBS0VFLFFBQUFBLGNBQWMsb0JBQ1RBLGNBRFM7QUFFWkYsVUFBQUEsY0FBYyxFQUFFRSxjQUFjLENBQUNGO0FBRm5CO0FBTGhCLFNBRkssRUFXRDtBQUNKLFVBQUlHLHdCQUFKLG1CQUNLLEtBQUtOLEtBRFY7QUFFRUMsUUFBQUEsRUFBRSxZQUFLQSxFQUFMLFdBRko7QUFHRU0sUUFBQUEsSUFBSSxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sSUFIbkI7QUFJRUwsUUFBQUEsWUFBWSxFQUFaQSxZQUpGO0FBS0VPLFFBQUFBLFNBQVMsRUFBRUwsY0FMYjtBQU1FTSxRQUFBQSxRQUFRLEVBQUUsS0FOWjtBQU9FTCxRQUFBQSxjQUFjLG9CQUNUQSxjQURTO0FBRVpILFVBQUFBLFlBQVksRUFBRUcsY0FBYyxDQUFDSCxZQUZqQjtBQUdaTyxVQUFBQSxTQUFTLEVBQUVKLGNBQWMsQ0FBQ0Q7QUFIZDtBQVBoQixTQVpLLENBQVA7QUEwQkQ7Ozs7RUF4Q21ETyxvQjs7OztnQkFBakNaLHdCLGVBQ0EsMEI7O2dCQURBQSx3QixvQ0FJZE8seUJBQWlCTSxZO0FBQ3BCVixFQUFBQSxZQUFZLEVBQUUsc0JBQUNXLENBQUQ7QUFBQSxXQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUFQO0FBQUEsRztBQUNkVixFQUFBQSxjQUFjLEVBQUUsd0JBQUNVLENBQUQ7QUFBQSxXQUFPLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLENBQVA7QUFBQSxHO0FBQ2hCVCxFQUFBQSxjQUFjLEVBQUUsd0JBQUNTLENBQUQ7QUFBQSxXQUFPLENBQVA7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBTY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnSnVuY3Rpb25TY2F0dGVycGxvdExheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLi4uU2NhdHRlcnBsb3RMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ2V0RmlsbENvbG9yOiAoZCkgPT4gWzAsIDAsIDAsIDI1NV0sXG4gICAgZ2V0U3Ryb2tlQ29sb3I6IChkKSA9PiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICBnZXRJbm5lclJhZGl1czogKGQpID0+IDEsXG4gIH07XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIGNvbnN0IHsgaWQsIGdldEZpbGxDb2xvciwgZ2V0U3Ryb2tlQ29sb3IsIGdldElubmVyUmFkaXVzLCB1cGRhdGVUcmlnZ2VycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIGRhdGEgbmVlZHMgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgYWZ0ZXIgZGVjay5nbCA1LjNcbiAgICByZXR1cm4gW1xuICAgICAgLy8gdGhlIGZ1bGwgY2lyY2xlc1xuICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgICBpZDogYCR7aWR9LWZ1bGxgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldExpbmVDb2xvcjogZ2V0U3Ryb2tlQ29sb3IsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgZ2V0U3Ryb2tlQ29sb3I6IHVwZGF0ZVRyaWdnZXJzLmdldFN0cm9rZUNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSksIC8vIHRoZSBpbm5lciBwYXJ0XG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAgIGlkOiBgJHtpZH0taW5uZXJgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldEZpbGxDb2xvcixcbiAgICAgICAgZ2V0UmFkaXVzOiBnZXRJbm5lclJhZGl1cyxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbGxDb2xvcjogdXBkYXRlVHJpZ2dlcnMuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgIGdldFJhZGl1czogdXBkYXRlVHJpZ2dlcnMuZ2V0SW5uZXJSYWRpdXMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/path-marker-layer/arrow-2d-geometry.js b/modules/layers/dist-es6/layers/path-marker-layer/arrow-2d-geometry.js new file mode 100644 index 000000000..39b11567e --- /dev/null +++ b/modules/layers/dist-es6/layers/path-marker-layer/arrow-2d-geometry.js @@ -0,0 +1,76 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@luma.gl/core"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var Arrow2DGeometry = /*#__PURE__*/function (_Geometry) { + _inherits(Arrow2DGeometry, _Geometry); + + var _super = _createSuper(Arrow2DGeometry); + + function Arrow2DGeometry() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Arrow2DGeometry); + + return _super.call(this, Object.assign({}, opts, { + attributes: getArrowAttributes(opts) + })); + } + + return Arrow2DGeometry; +}(_core.Geometry); + +exports["default"] = Arrow2DGeometry; + +function getArrowAttributes(_ref) { + var _ref$length = _ref.length, + length = _ref$length === void 0 ? 1 : _ref$length, + _ref$headSize = _ref.headSize, + headSize = _ref$headSize === void 0 ? 0.2 : _ref$headSize, + _ref$tailWidth = _ref.tailWidth, + tailWidth = _ref$tailWidth === void 0 ? 0.05 : _ref$tailWidth, + _ref$tailStart = _ref.tailStart, + tailStart = _ref$tailStart === void 0 ? 0.05 : _ref$tailStart; + var texCoords = [// HEAD + 0.5, 1.0, 0, 0.5 - headSize / 2, 1.0 - headSize, 0, 0.5 + headSize / 2, 1.0 - headSize, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0]; + var normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]; // Center and scale + + var positions = new Array(texCoords.length); + + for (var i = 0; i < texCoords.length / 3; i++) { + var i3 = i * 3; + positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length; + positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length; + positions[i3 + 2] = 0; + } + + return { + positions: new Float32Array(positions), + normals: new Float32Array(normals), + texCoords: new Float32Array(texCoords) + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvYXJyb3ctMmQtZ2VvbWV0cnkudHMiXSwibmFtZXMiOlsiQXJyb3cyREdlb21ldHJ5Iiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImF0dHJpYnV0ZXMiLCJnZXRBcnJvd0F0dHJpYnV0ZXMiLCJHZW9tZXRyeSIsImxlbmd0aCIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwidGFpbFN0YXJ0IiwidGV4Q29vcmRzIiwibm9ybWFscyIsInBvc2l0aW9ucyIsIkFycmF5IiwiaSIsImkzIiwiRmxvYXQzMkFycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxlOzs7OztBQUNuQiw2QkFBdUI7QUFBQSxRQUFYQyxJQUFXLHVFQUFKLEVBQUk7O0FBQUE7O0FBQUEsNkJBRW5CQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCRixJQUFsQixFQUF3QjtBQUN0QkcsTUFBQUEsVUFBVSxFQUFFQyxrQkFBa0IsQ0FBQ0osSUFBRDtBQURSLEtBQXhCLENBRm1CO0FBTXRCOzs7RUFQMENLLGM7Ozs7QUFVN0MsU0FBU0Qsa0JBQVQsT0FBZ0c7QUFBQSx5QkFBbEVFLE1BQWtFO0FBQUEsTUFBbEVBLE1BQWtFLDRCQUF6RCxDQUF5RDtBQUFBLDJCQUF0REMsUUFBc0Q7QUFBQSxNQUF0REEsUUFBc0QsOEJBQTNDLEdBQTJDO0FBQUEsNEJBQXRDQyxTQUFzQztBQUFBLE1BQXRDQSxTQUFzQywrQkFBMUIsSUFBMEI7QUFBQSw0QkFBcEJDLFNBQW9CO0FBQUEsTUFBcEJBLFNBQW9CLCtCQUFSLElBQVE7QUFDOUYsTUFBTUMsU0FBUyxHQUFHLENBQ2hCO0FBQ0EsS0FGZ0IsRUFHaEIsR0FIZ0IsRUFJaEIsQ0FKZ0IsRUFLaEIsTUFBTUgsUUFBUSxHQUFHLENBTEQsRUFNaEIsTUFBTUEsUUFOVSxFQU9oQixDQVBnQixFQVFoQixNQUFNQSxRQUFRLEdBQUcsQ0FSRCxFQVNoQixNQUFNQSxRQVRVLEVBVWhCLENBVmdCLEVBV2hCLE1BQU1DLFNBQVMsR0FBRyxDQVhGLEVBWWhCQyxTQVpnQixFQWFoQixDQWJnQixFQWNoQixNQUFNRCxTQUFTLEdBQUcsQ0FkRixFQWVoQixNQUFNRCxRQWZVLEVBZ0JoQixDQWhCZ0IsRUFpQmhCLE1BQU1DLFNBQVMsR0FBRyxDQWpCRixFQWtCaEJDLFNBbEJnQixFQW1CaEIsQ0FuQmdCLEVBb0JoQixNQUFNRCxTQUFTLEdBQUcsQ0FwQkYsRUFxQmhCQyxTQXJCZ0IsRUFzQmhCLENBdEJnQixFQXVCaEIsTUFBTUQsU0FBUyxHQUFHLENBdkJGLEVBd0JoQixNQUFNRCxRQXhCVSxFQXlCaEIsQ0F6QmdCLEVBMEJoQixNQUFNQyxTQUFTLEdBQUcsQ0ExQkYsRUEyQmhCLE1BQU1ELFFBM0JVLEVBNEJoQixDQTVCZ0IsQ0FBbEI7QUErQkEsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUMsQ0FBckMsRUFBd0MsQ0FBeEMsRUFBMkMsQ0FBM0MsRUFBOEMsQ0FBOUMsRUFBaUQsQ0FBakQsRUFBb0QsQ0FBcEQsRUFBdUQsQ0FBdkQsRUFBMEQsQ0FBMUQsRUFBNkQsQ0FBN0QsRUFBZ0UsQ0FBaEUsRUFBbUUsQ0FBbkUsRUFBc0UsQ0FBdEUsRUFBeUUsQ0FBekUsRUFBNEUsQ0FBNUUsRUFBK0UsQ0FBL0UsQ0FBaEIsQ0FoQzhGLENBa0M5Rjs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsS0FBSixDQUFVSCxTQUFTLENBQUNKLE1BQXBCLENBQWxCOztBQUNBLE9BQUssSUFBSVEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osU0FBUyxDQUFDSixNQUFWLEdBQW1CLENBQXZDLEVBQTBDUSxDQUFDLEVBQTNDLEVBQStDO0FBQzdDLFFBQU1DLEVBQUUsR0FBR0QsQ0FBQyxHQUFHLENBQWY7QUFDQUYsSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQXBCO0FBQ0Q7O0FBQ0QsU0FBTztBQUNMSCxJQUFBQSxTQUFTLEVBQUUsSUFBSUksWUFBSixDQUFpQkosU0FBakIsQ0FETjtBQUVMRCxJQUFBQSxPQUFPLEVBQUUsSUFBSUssWUFBSixDQUFpQkwsT0FBakIsQ0FGSjtBQUdMRCxJQUFBQSxTQUFTLEVBQUUsSUFBSU0sWUFBSixDQUFpQk4sU0FBakI7QUFITixHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcnJvdzJER2VvbWV0cnkgZXh0ZW5kcyBHZW9tZXRyeSB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgb3B0cywge1xuICAgICAgICBhdHRyaWJ1dGVzOiBnZXRBcnJvd0F0dHJpYnV0ZXMob3B0cyksXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyb3dBdHRyaWJ1dGVzKHsgbGVuZ3RoID0gMSwgaGVhZFNpemUgPSAwLjIsIHRhaWxXaWR0aCA9IDAuMDUsIHRhaWxTdGFydCA9IDAuMDUgfSkge1xuICBjb25zdCB0ZXhDb29yZHMgPSBbXG4gICAgLy8gSEVBRFxuICAgIDAuNSxcbiAgICAxLjAsXG4gICAgMCxcbiAgICAwLjUgLSBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgLSB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSAtIHRhaWxXaWR0aCAvIDIsXG4gICAgdGFpbFN0YXJ0LFxuICAgIDAsXG4gICAgMC41IC0gdGFpbFdpZHRoIC8gMixcbiAgICAxLjAgLSBoZWFkU2l6ZSxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgXTtcblxuICBjb25zdCBub3JtYWxzID0gWzAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDFdO1xuXG4gIC8vIENlbnRlciBhbmQgc2NhbGVcbiAgY29uc3QgcG9zaXRpb25zID0gbmV3IEFycmF5KHRleENvb3Jkcy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleENvb3Jkcy5sZW5ndGggLyAzOyBpKyspIHtcbiAgICBjb25zdCBpMyA9IGkgKiAzO1xuICAgIHBvc2l0aW9uc1tpMyArIDBdID0gKHRleENvb3Jkc1tpMyArIDBdIC0gMC41KSAqIGxlbmd0aDtcbiAgICBwb3NpdGlvbnNbaTMgKyAxXSA9ICh0ZXhDb29yZHNbaTMgKyAxXSAtIDAuNSkgKiBsZW5ndGg7XG4gICAgcG9zaXRpb25zW2kzICsgMl0gPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG4gICAgbm9ybWFsczogbmV3IEZsb2F0MzJBcnJheShub3JtYWxzKSxcbiAgICB0ZXhDb29yZHM6IG5ldyBGbG9hdDMyQXJyYXkodGV4Q29vcmRzKSxcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/path-marker-layer/create-path-markers.js b/modules/layers/dist-es6/layers/path-marker-layer/create-path-markers.js new file mode 100644 index 000000000..5c5f13bc3 --- /dev/null +++ b/modules/layers/dist-es6/layers/path-marker-layer/create-path-markers.js @@ -0,0 +1,156 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = createPathMarkers; + +var _math = require("math.gl"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function getLineLength(vPoints) { + // calculate total length + var lineLength = 0; + + for (var i = 0; i < vPoints.length - 1; i++) { + lineLength += vPoints[i].distance(vPoints[i + 1]); + } + + return lineLength; +} + +var DEFAULT_COLOR = [0, 0, 0, 255]; +var DEFAULT_DIRECTION = { + forward: true, + backward: false +}; + +function createPathMarkers(_ref) { + var data = _ref.data, + _ref$getPath = _ref.getPath, + getPath = _ref$getPath === void 0 ? function (x) { + return x.path; + } : _ref$getPath, + _ref$getDirection = _ref.getDirection, + getDirection = _ref$getDirection === void 0 ? function (x) { + return x.direction; + } : _ref$getDirection, + _ref$getColor = _ref.getColor, + getColor = _ref$getColor === void 0 ? function (x) { + return DEFAULT_COLOR; + } : _ref$getColor, + _ref$getMarkerPercent = _ref.getMarkerPercentages, + getMarkerPercentages = _ref$getMarkerPercent === void 0 ? function (x) { + return [0.5]; + } : _ref$getMarkerPercent, + projectFlat = _ref.projectFlat; + var markers = []; + + var _iterator = _createForOfIteratorHelper(data), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var object = _step.value; + var path = getPath(object); + var direction = getDirection(object) || DEFAULT_DIRECTION; + var color = getColor(object); + var vPoints = path.map(function (p) { + return new _math.Vector2(p); + }); + var vPointsReverse = vPoints.slice(0).reverse(); // calculate total length + + var lineLength = getLineLength(vPoints); // Ask for where to put markers + // @ts-ignore + + var percentages = getMarkerPercentages(object, { + lineLength: lineLength + }); // Create the markers + + var _iterator2 = _createForOfIteratorHelper(percentages), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var percentage = _step2.value; + + if (direction.forward) { + var marker = createMarkerAlongPath({ + path: vPoints, + percentage: percentage, + lineLength: lineLength, + color: color, + object: object, + projectFlat: projectFlat + }); + markers.push(marker); + } + + if (direction.backward) { + var _marker = createMarkerAlongPath({ + path: vPointsReverse, + percentage: percentage, + lineLength: lineLength, + color: color, + object: object, + projectFlat: projectFlat + }); + + markers.push(_marker); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return markers; +} + +function createMarkerAlongPath(_ref2) { + var path = _ref2.path, + percentage = _ref2.percentage, + lineLength = _ref2.lineLength, + color = _ref2.color, + object = _ref2.object, + projectFlat = _ref2.projectFlat; + var distanceAlong = lineLength * percentage; + var currentDistance = 0; + var previousDistance = 0; + var i = 0; + + for (i = 0; i < path.length - 1; i++) { + currentDistance += path[i].distance(path[i + 1]); + + if (currentDistance > distanceAlong) { + break; + } + + previousDistance = currentDistance; + } + + var vDirection = path[i + 1].clone().subtract(path[i]).normalize(); + var along = distanceAlong - previousDistance; + var vCenter = vDirection.clone().multiply(new _math.Vector2(along, along)).add(path[i]); + var vDirection2 = new _math.Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i])); + var angle = vDirection2.verticalAngle() * 180 / Math.PI; + return { + position: [vCenter.x, vCenter.y, 0], + angle: angle, + color: color, + object: object + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvY3JlYXRlLXBhdGgtbWFya2Vycy50cyJdLCJuYW1lcyI6WyJnZXRMaW5lTGVuZ3RoIiwidlBvaW50cyIsImxpbmVMZW5ndGgiLCJpIiwibGVuZ3RoIiwiZGlzdGFuY2UiLCJERUZBVUxUX0NPTE9SIiwiREVGQVVMVF9ESVJFQ1RJT04iLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJjcmVhdGVQYXRoTWFya2VycyIsImRhdGEiLCJnZXRQYXRoIiwieCIsInBhdGgiLCJnZXREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRDb2xvciIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwicHJvamVjdEZsYXQiLCJtYXJrZXJzIiwib2JqZWN0IiwiY29sb3IiLCJtYXAiLCJwIiwiVmVjdG9yMiIsInZQb2ludHNSZXZlcnNlIiwic2xpY2UiLCJyZXZlcnNlIiwicGVyY2VudGFnZXMiLCJwZXJjZW50YWdlIiwibWFya2VyIiwiY3JlYXRlTWFya2VyQWxvbmdQYXRoIiwicHVzaCIsImRpc3RhbmNlQWxvbmciLCJjdXJyZW50RGlzdGFuY2UiLCJwcmV2aW91c0Rpc3RhbmNlIiwidkRpcmVjdGlvbiIsImNsb25lIiwic3VidHJhY3QiLCJub3JtYWxpemUiLCJhbG9uZyIsInZDZW50ZXIiLCJtdWx0aXBseSIsImFkZCIsInZEaXJlY3Rpb24yIiwiYW5nbGUiLCJ2ZXJ0aWNhbEFuZ2xlIiwiTWF0aCIsIlBJIiwicG9zaXRpb24iLCJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0M7QUFDOUI7QUFDQSxNQUFJQyxVQUFVLEdBQUcsQ0FBakI7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixPQUFPLENBQUNHLE1BQVIsR0FBaUIsQ0FBckMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7QUFDM0NELElBQUFB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R0FBRyxDQUFMLENBQUosQ0FBWW1DLEtBQVosR0FBb0JDLFFBQXBCLENBQTZCekIsSUFBSSxDQUFDWCxDQUFELENBQWpDLEVBQXNDcUMsU0FBdEMsRUFBbkI7QUFDQSxNQUFNQyxLQUFLLEdBQUdQLGFBQWEsR0FBR0UsZ0JBQTlCO0FBQ0EsTUFBTU0sT0FBTyxHQUFHTCxVQUFVLENBQUNDLEtBQVgsR0FBbUJLLFFBQW5CLENBQTRCLElBQUlsQixhQUFKLENBQVlnQixLQUFaLEVBQW1CQSxLQUFuQixDQUE1QixFQUF1REcsR0FBdkQsQ0FBMkQ5QixJQUFJLENBQUNYLENBQUQsQ0FBL0QsQ0FBaEI7QUFFQSxNQUFNMEMsV0FBVyxHQUFHLElBQUlwQixhQUFKLENBQVlOLFdBQVcsQ0FBQ0wsSUFBSSxDQUFDWCxDQUFDLEdBQUcsQ0FBTCxDQUFMLENBQXZCLEVBQXNDb0MsUUFBdEMsQ0FBK0NwQixXQUFXLENBQUNMLElBQUksQ0FBQ1gsQ0FBRCxDQUFMLENBQTFELENBQXBCO0FBRUEsTUFBTTJDLEtBQUssR0FBSUQsV0FBVyxDQUFDRSxhQUFaLEtBQThCLEdBQS9CLEdBQXNDQyxJQUFJLENBQUNDLEVBQXpEO0FBRUEsU0FBTztBQUFFQyxJQUFBQSxRQUFRLEVBQUUsQ0FBQ1IsT0FBTyxDQUFDN0IsQ0FBVCxFQUFZNkIsT0FBTyxDQUFDUyxDQUFwQixFQUF1QixDQUF2QixDQUFaO0FBQXVDTCxJQUFBQSxLQUFLLEVBQUxBLEtBQXZDO0FBQThDeEIsSUFBQUEsS0FBSyxFQUFMQSxLQUE5QztBQUFxREQsSUFBQUEsTUFBTSxFQUFOQTtBQUFyRCxHQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWN0b3IyIH0gZnJvbSAnbWF0aC5nbCc7XG5cbmZ1bmN0aW9uIGdldExpbmVMZW5ndGgodlBvaW50cykge1xuICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoXG4gIGxldCBsaW5lTGVuZ3RoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2UG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGxpbmVMZW5ndGggKz0gdlBvaW50c1tpXS5kaXN0YW5jZSh2UG9pbnRzW2kgKyAxXSk7XG4gIH1cbiAgcmV0dXJuIGxpbmVMZW5ndGg7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1IgPSBbMCwgMCwgMCwgMjU1XTtcbmNvbnN0IERFRkFVTFRfRElSRUNUSU9OID0geyBmb3J3YXJkOiB0cnVlLCBiYWNrd2FyZDogZmFsc2UgfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICBkYXRhLFxuICBnZXRQYXRoID0gKHgpID0+IHgucGF0aCxcbiAgZ2V0RGlyZWN0aW9uID0gKHgpID0+IHguZGlyZWN0aW9uLFxuICBnZXRDb2xvciA9ICh4KSA9PiBERUZBVUxUX0NPTE9SLFxuICBnZXRNYXJrZXJQZXJjZW50YWdlcyA9ICh4KSA9PiBbMC41XSxcbiAgcHJvamVjdEZsYXQsXG59KSB7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IG9iamVjdCBvZiBkYXRhKSB7XG4gICAgY29uc3QgcGF0aCA9IGdldFBhdGgob2JqZWN0KTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24ob2JqZWN0KSB8fCBERUZBVUxUX0RJUkVDVElPTjtcbiAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKG9iamVjdCk7XG5cbiAgICBjb25zdCB2UG9pbnRzID0gcGF0aC5tYXAoKHApID0+IG5ldyBWZWN0b3IyKHApKTtcbiAgICBjb25zdCB2UG9pbnRzUmV2ZXJzZSA9IHZQb2ludHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aFxuICAgIGNvbnN0IGxpbmVMZW5ndGggPSBnZXRMaW5lTGVuZ3RoKHZQb2ludHMpO1xuXG4gICAgLy8gQXNrIGZvciB3aGVyZSB0byBwdXQgbWFya2Vyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwZXJjZW50YWdlcyA9IGdldE1hcmtlclBlcmNlbnRhZ2VzKG9iamVjdCwgeyBsaW5lTGVuZ3RoIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBtYXJrZXJzXG4gICAgZm9yIChjb25zdCBwZXJjZW50YWdlIG9mIHBlcmNlbnRhZ2VzKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uLmZvcndhcmQpIHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHtcbiAgICAgICAgICBwYXRoOiB2UG9pbnRzLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbi5iYWNrd2FyZCkge1xuICAgICAgICBjb25zdCBtYXJrZXIgPSBjcmVhdGVNYXJrZXJBbG9uZ1BhdGgoe1xuICAgICAgICAgIHBhdGg6IHZQb2ludHNSZXZlcnNlLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHsgcGF0aCwgcGVyY2VudGFnZSwgbGluZUxlbmd0aCwgY29sb3IsIG9iamVjdCwgcHJvamVjdEZsYXQgfSkge1xuICBjb25zdCBkaXN0YW5jZUFsb25nID0gbGluZUxlbmd0aCAqIHBlcmNlbnRhZ2U7XG4gIGxldCBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICBsZXQgcHJldmlvdXNEaXN0YW5jZSA9IDA7XG4gIGxldCBpID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY3VycmVudERpc3RhbmNlICs9IHBhdGhbaV0uZGlzdGFuY2UocGF0aFtpICsgMV0pO1xuICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPiBkaXN0YW5jZUFsb25nKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldmlvdXNEaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgfVxuXG4gIGNvbnN0IHZEaXJlY3Rpb24gPSBwYXRoW2kgKyAxXS5jbG9uZSgpLnN1YnRyYWN0KHBhdGhbaV0pLm5vcm1hbGl6ZSgpO1xuICBjb25zdCBhbG9uZyA9IGRpc3RhbmNlQWxvbmcgLSBwcmV2aW91c0Rpc3RhbmNlO1xuICBjb25zdCB2Q2VudGVyID0gdkRpcmVjdGlvbi5jbG9uZSgpLm11bHRpcGx5KG5ldyBWZWN0b3IyKGFsb25nLCBhbG9uZykpLmFkZChwYXRoW2ldKTtcblxuICBjb25zdCB2RGlyZWN0aW9uMiA9IG5ldyBWZWN0b3IyKHByb2plY3RGbGF0KHBhdGhbaSArIDFdKSkuc3VidHJhY3QocHJvamVjdEZsYXQocGF0aFtpXSkpO1xuXG4gIGNvbnN0IGFuZ2xlID0gKHZEaXJlY3Rpb24yLnZlcnRpY2FsQW5nbGUoKSAqIDE4MCkgLyBNYXRoLlBJO1xuXG4gIHJldHVybiB7IHBvc2l0aW9uOiBbdkNlbnRlci54LCB2Q2VudGVyLnksIDBdLCBhbmdsZSwgY29sb3IsIG9iamVjdCB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/path-marker-layer/path-marker-layer.js b/modules/layers/dist-es6/layers/path-marker-layer/path-marker-layer.js new file mode 100644 index 000000000..6d53e0bd2 --- /dev/null +++ b/modules/layers/dist-es6/layers/path-marker-layer/path-marker-layer.js @@ -0,0 +1,265 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +var _meshLayers = require("@deck.gl/mesh-layers"); + +var _pathOutlineLayer = _interopRequireDefault(require("../path-outline-layer/path-outline-layer")); + +var _arrow2dGeometry = _interopRequireDefault(require("./arrow-2d-geometry")); + +var _createPathMarkers = _interopRequireDefault(require("./create-path-markers")); + +var _polyline = require("./polyline"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DISTANCE_FOR_MULTI_ARROWS = 0.1; +var ARROW_HEAD_SIZE = 0.2; +var ARROW_TAIL_WIDTH = 0.05; // const ARROW_CENTER_ADJUST = -0.8; + +var DEFAULT_MARKER_LAYER = _meshLayers.SimpleMeshLayer; +var DEFAULT_MARKER_LAYER_PROPS = { + mesh: new _arrow2dGeometry["default"]({ + headSize: ARROW_HEAD_SIZE, + tailWidth: ARROW_TAIL_WIDTH + }) +}; +var defaultProps = Object.assign({}, _pathOutlineLayer["default"].defaultProps, { + MarkerLayer: DEFAULT_MARKER_LAYER, + markerLayerProps: DEFAULT_MARKER_LAYER_PROPS, + sizeScale: 100, + fp64: false, + hightlightIndex: -1, + highlightPoint: null, + getPath: function getPath(x) { + return x.path; + }, + getColor: function getColor(x) { + return x.color; + }, + getMarkerColor: function getMarkerColor(x) { + return [0, 0, 0, 255]; + }, + getDirection: function getDirection(x) { + return x.direction; + }, + getMarkerPercentages: function getMarkerPercentages(object, _ref) { + var lineLength = _ref.lineLength; + return lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5]; + } +}); + +var PathMarkerLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(PathMarkerLayer, _CompositeLayer); + + var _super = _createSuper(PathMarkerLayer); + + function PathMarkerLayer() { + _classCallCheck(this, PathMarkerLayer); + + return _super.apply(this, arguments); + } + + _createClass(PathMarkerLayer, [{ + key: "initializeState", + value: function initializeState() { + this.state = { + markers: [], + mesh: new _arrow2dGeometry["default"]({ + headSize: ARROW_HEAD_SIZE, + tailWidth: ARROW_TAIL_WIDTH + }), + closestPoint: null + }; + } // @ts-ignore + + }, { + key: "projectFlat", + value: function projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) { + if (coordinateSystem === _core.COORDINATE_SYSTEM.METER_OFFSETS) { + var _viewport$metersToLng = viewport.metersToLngLatDelta(xyz), + _viewport$metersToLng2 = _slicedToArray(_viewport$metersToLng, 2), + dx = _viewport$metersToLng2[0], + dy = _viewport$metersToLng2[1]; + + var _coordinateOrigin = _slicedToArray(coordinateOrigin, 2), + x = _coordinateOrigin[0], + y = _coordinateOrigin[1]; + + return viewport.projectFlat([x + dx, dy + y]); + } else if (coordinateSystem === _core.COORDINATE_SYSTEM.LNGLAT_OFFSETS) { + var _xyz = _slicedToArray(xyz, 2), + _dx = _xyz[0], + _dy = _xyz[1]; + + var _coordinateOrigin2 = _slicedToArray(coordinateOrigin, 2), + _x = _coordinateOrigin2[0], + _y = _coordinateOrigin2[1]; + + return viewport.projectFlat([_x + _dx, _dy + _y]); + } + + return viewport.projectFlat(xyz); + } + }, { + key: "updateState", + value: function updateState(_ref2) { + var _this = this; + + var props = _ref2.props, + oldProps = _ref2.oldProps, + changeFlags = _ref2.changeFlags; + + if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) { + var _this$props = this.props, + data = _this$props.data, + getPath = _this$props.getPath, + getDirection = _this$props.getDirection, + getMarkerColor = _this$props.getMarkerColor, + getMarkerPercentages = _this$props.getMarkerPercentages, + coordinateSystem = _this$props.coordinateSystem, + coordinateOrigin = _this$props.coordinateOrigin; // @ts-ignore + + var viewport = this.context.viewport; + + var projectFlat = function projectFlat(o) { + return _this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin); + }; + + this.state.markers = (0, _createPathMarkers["default"])({ + data: data, + getPath: getPath, + getDirection: getDirection, + getColor: getMarkerColor, + getMarkerPercentages: getMarkerPercentages, + projectFlat: projectFlat + }); + + this._recalculateClosestPoint(); + } + + if (changeFlags.propsChanged) { + if (props.point !== oldProps.point) { + this._recalculateClosestPoint(); + } + } + } + }, { + key: "_recalculateClosestPoint", + value: function _recalculateClosestPoint() { + var _this$props2 = this.props, + highlightPoint = _this$props2.highlightPoint, + highlightIndex = _this$props2.highlightIndex; + + if (highlightPoint && highlightIndex >= 0) { + var object = this.props.data[highlightIndex]; + var points = this.props.getPath(object); + + var _getClosestPointOnPol = (0, _polyline.getClosestPointOnPolyline)({ + points: points, + p: highlightPoint + }), + point = _getClosestPointOnPol.point; + + this.state.closestPoints = [{ + position: point + }]; + } else { + this.state.closestPoints = []; + } + } + }, { + key: "getPickingInfo", + value: function getPickingInfo(_ref3) { + var info = _ref3.info; + return Object.assign(info, { + // override object with picked feature + object: info.object && info.object.path || info.object + }); + } + }, { + key: "renderLayers", + value: function renderLayers() { + return [new _pathOutlineLayer["default"](this.props, // @ts-ignore + this.getSubLayerProps({ + id: 'paths', + // Note: data has to be passed explicitly like this to avoid being empty + data: this.props.data + })), new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, { + id: 'markers', + data: this.state.markers, + getOrientation: function getOrientation(x) { + return [0, -x.angle, 0]; + }, + getColor: function getColor(x) { + return x.color; + }, + sizeScale: this.props.sizeScale, + fp64: this.props.fp64, + pickable: false, + parameters: { + blend: false, + depthTest: false + } + }))), this.state.closestPoints && new _layers.ScatterplotLayer({ + id: "".concat(this.props.id, "-highlight"), + data: this.state.closestPoints, + // @ts-ignore + fp64: this.props.fp64 + })]; + } + }]); + + return PathMarkerLayer; +}(_core.CompositeLayer); + +exports["default"] = PathMarkerLayer; + +_defineProperty(PathMarkerLayer, "layerName", 'PathMarkerLayer'); + +_defineProperty(PathMarkerLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXIudHMiXSwibmFtZXMiOlsiRElTVEFOQ0VfRk9SX01VTFRJX0FSUk9XUyIsIkFSUk9XX0hFQURfU0laRSIsIkFSUk9XX1RBSUxfV0lEVEgiLCJERUZBVUxUX01BUktFUl9MQVlFUiIsIlNpbXBsZU1lc2hMYXllciIsIkRFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTIiwibWVzaCIsIkFycm93MkRHZW9tZXRyeSIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwiZGVmYXVsdFByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiUGF0aE91dGxpbmVMYXllciIsIk1hcmtlckxheWVyIiwibWFya2VyTGF5ZXJQcm9wcyIsInNpemVTY2FsZSIsImZwNjQiLCJoaWdodGxpZ2h0SW5kZXgiLCJoaWdobGlnaHRQb2ludCIsImdldFBhdGgiLCJ4IiwicGF0aCIsImdldENvbG9yIiwiY29sb3IiLCJnZXRNYXJrZXJDb2xvciIsImdldERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwib2JqZWN0IiwibGluZUxlbmd0aCIsIlBhdGhNYXJrZXJMYXllciIsInN0YXRlIiwibWFya2VycyIsImNsb3Nlc3RQb2ludCIsInh5eiIsInZpZXdwb3J0IiwiY29vcmRpbmF0ZVN5c3RlbSIsImNvb3JkaW5hdGVPcmlnaW4iLCJDT09SRElOQVRFX1NZU1RFTSIsIk1FVEVSX09GRlNFVFMiLCJtZXRlcnNUb0xuZ0xhdERlbHRhIiwiZHgiLCJkeSIsInkiLCJwcm9qZWN0RmxhdCIsIkxOR0xBVF9PRkZTRVRTIiwicHJvcHMiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwiZGF0YUNoYW5nZWQiLCJ1cGRhdGVUcmlnZ2Vyc0NoYW5nZWQiLCJkYXRhIiwiY29udGV4dCIsIm8iLCJfcmVjYWxjdWxhdGVDbG9zZXN0UG9pbnQiLCJwcm9wc0NoYW5nZWQiLCJwb2ludCIsImhpZ2hsaWdodEluZGV4IiwicG9pbnRzIiwicCIsImNsb3Nlc3RQb2ludHMiLCJwb3NpdGlvbiIsImluZm8iLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJnZXRPcmllbnRhdGlvbiIsImFuZ2xlIiwicGlja2FibGUiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJkZXB0aFRlc3QiLCJTY2F0dGVycGxvdExheWVyIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHLEdBQWxDO0FBQ0EsSUFBTUMsZUFBZSxHQUFHLEdBQXhCO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsSUFBekIsQyxDQUNBOztBQUVBLElBQU1DLG9CQUFvQixHQUFHQywyQkFBN0I7QUFFQSxJQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsSUFBSSxFQUFFLElBQUlDLDJCQUFKLENBQW9CO0FBQUVDLElBQUFBLFFBQVEsRUFBRVAsZUFBWjtBQUE2QlEsSUFBQUEsU0FBUyxFQUFFUDtBQUF4QyxHQUFwQjtBQUQyQixDQUFuQztBQUlBLElBQU1RLFlBQVksR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsNkJBQWlCSCxZQUFuQyxFQUFpRDtBQUNwRUksRUFBQUEsV0FBVyxFQUFFWCxvQkFEdUQ7QUFFcEVZLEVBQUFBLGdCQUFnQixFQUFFViwwQkFGa0Q7QUFJcEVXLEVBQUFBLFNBQVMsRUFBRSxHQUp5RDtBQUtwRUMsRUFBQUEsSUFBSSxFQUFFLEtBTDhEO0FBT3BFQyxFQUFBQSxlQUFlLEVBQUUsQ0FBQyxDQVBrRDtBQVFwRUMsRUFBQUEsY0FBYyxFQUFFLElBUm9EO0FBVXBFQyxFQUFBQSxPQUFPLEVBQUUsaUJBQUNDLENBQUQ7QUFBQSxXQUFPQSxDQUFDLENBQUNDLElBQVQ7QUFBQSxHQVYyRDtBQVdwRUMsRUFBQUEs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VDtBQUFBLFNBSm1DO0FBSzdDUixRQUFBQSxTQUFTLEVBQUUsS0FBSytCLEtBQUwsQ0FBVy9CLFNBTHVCO0FBTTdDQyxRQUFBQSxJQUFJLEVBQUUsS0FBSzhCLEtBQUwsQ0FBVzlCLElBTjRCO0FBTzdDbUQsUUFBQUEsUUFBUSxFQUFFLEtBUG1DO0FBUTdDQyxRQUFBQSxVQUFVLEVBQUU7QUFDVkMsVUFBQUEsS0FBSyxFQUFFLEtBREc7QUFFVkMsVUFBQUEsU0FBUyxFQUFFO0FBRkQ7QUFSaUMsT0FBL0MsQ0FERixDQURGLENBVkssRUEyQkwsS0FBS3ZDLEtBQUwsQ0FBVzZCLGFBQVgsSUFDRSxJQUFJVyx3QkFBSixDQUFxQjtBQUNuQlAsUUFBQUEsRUFBRSxZQUFLLEtBQUtsQixLQUFMLENBQVdrQixFQUFoQixlQURpQjtBQUVuQmIsUUFBQUEsSUFBSSxFQUFFLEtBQUtwQixLQUFMLENBQVc2QixhQUZFO0FBR25CO0FBQ0E1QyxRQUFBQSxJQUFJLEVBQUUsS0FBSzhCLEtBQUwsQ0FBVzlCO0FBSkUsT0FBckIsQ0E1QkcsQ0FBUDtBQW1DRDs7OztFQXBIMEN3RCxvQjs7OztnQkFBeEIxQyxlLGVBQ0EsaUI7O2dCQURBQSxlLGtCQUVHckIsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyLCBDT09SRElOQVRFX1NZU1RFTSB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgeyBTaW1wbGVNZXNoTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQgUGF0aE91dGxpbmVMYXllciBmcm9tICcuLi9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmltcG9ydCBBcnJvdzJER2VvbWV0cnkgZnJvbSAnLi9hcnJvdy0yZC1nZW9tZXRyeSc7XG5cbmltcG9ydCBjcmVhdGVQYXRoTWFya2VycyBmcm9tICcuL2NyZWF0ZS1wYXRoLW1hcmtlcnMnO1xuaW1wb3J0IHsgZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuXG5jb25zdCBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID0gMC4xO1xuY29uc3QgQVJST1dfSEVBRF9TSVpFID0gMC4yO1xuY29uc3QgQVJST1dfVEFJTF9XSURUSCA9IDAuMDU7XG4vLyBjb25zdCBBUlJPV19DRU5URVJfQURKVVNUID0gLTAuODtcblxuY29uc3QgREVGQVVMVF9NQVJLRVJfTEFZRVIgPSBTaW1wbGVNZXNoTGF5ZXI7XG5cbmNvbnN0IERFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTID0ge1xuICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxufTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgUGF0aE91dGxpbmVMYXllci5kZWZhdWx0UHJvcHMsIHtcbiAgTWFya2VyTGF5ZXI6IERFRkFVTFRfTUFSS0VSX0xBWUVSLFxuICBtYXJrZXJMYXllclByb3BzOiBERUZBVUxUX01BUktFUl9MQVlFUl9QUk9QUyxcblxuICBzaXplU2NhbGU6IDEwMCxcbiAgZnA2NDogZmFsc2UsXG5cbiAgaGlnaHRsaWdodEluZGV4OiAtMSxcbiAgaGlnaGxpZ2h0UG9pbnQ6IG51bGwsXG5cbiAgZ2V0UGF0aDogKHgpID0+IHgucGF0aCxcbiAgZ2V0Q29sb3I6ICh4KSA9PiB4LmNvbG9yLFxuICBnZXRNYXJrZXJDb2xvcjogKHgpID0+IFswLCAwLCAwLCAyNTVdLFxuICBnZXREaXJlY3Rpb246ICh4KSA9PiB4LmRpcmVjdGlvbixcbiAgZ2V0TWFya2VyUGVyY2VudGFnZXM6IChvYmplY3QsIHsgbGluZUxlbmd0aCB9KSA9PlxuICAgIGxpbmVMZW5ndGggPiBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID8gWzAuMjUsIDAuNSwgMC43NV0gOiBbMC41XSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoTWFya2VyTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoTWFya2VyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWFya2VyczogW10sXG4gICAgICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxuICAgICAgY2xvc2VzdFBvaW50OiBudWxsLFxuICAgIH07XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9qZWN0RmxhdCh4eXosIHZpZXdwb3J0LCBjb29yZGluYXRlU3lzdGVtLCBjb29yZGluYXRlT3JpZ2luKSB7XG4gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLk1FVEVSX09GRlNFVFMpIHtcbiAgICAgIGNvbnN0IFtkeCwgZHldID0gdmlld3BvcnQubWV0ZXJzVG9MbmdMYXREZWx0YSh4eXopO1xuICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZU9yaWdpbjtcbiAgICAgIHJldHVybiB2aWV3cG9ydC5wcm9qZWN0RmxhdChbeCArIGR4LCBkeSArIHldKTtcbiAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVF9PRkZTRVRTKSB7XG4gICAgICBjb25zdCBbZHgsIGR5XSA9IHh5ejtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVPcmlnaW47XG4gICAgICByZXR1cm4gdmlld3BvcnQucHJvamVjdEZsYXQoW3ggKyBkeCwgZHkgKyB5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdwb3J0LnByb2plY3RGbGF0KHh5eik7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7IHByb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MgfSkge1xuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCB8fCBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZ2V0UGF0aCxcbiAgICAgICAgZ2V0RGlyZWN0aW9uLFxuICAgICAgICBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW0sXG4gICAgICAgIGNvb3JkaW5hdGVPcmlnaW4sXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIGNvbnN0IHByb2plY3RGbGF0ID0gKG8pID0+IHRoaXMucHJvamVjdEZsYXQobywgdmlld3BvcnQsIGNvb3JkaW5hdGVTeXN0ZW0sIGNvb3JkaW5hdGVPcmlnaW4pO1xuICAgICAgdGhpcy5zdGF0ZS5tYXJrZXJzID0gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICAgICAgICBkYXRhLFxuICAgICAgICBnZXRQYXRoLFxuICAgICAgICBnZXREaXJlY3Rpb24sXG4gICAgICAgIGdldENvbG9yOiBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIHByb2plY3RGbGF0LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICBpZiAocHJvcHMucG9pbnQgIT09IG9sZFByb3BzLnBvaW50KSB7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCkge1xuICAgIGNvbnN0IHsgaGlnaGxpZ2h0UG9pbnQsIGhpZ2hsaWdodEluZGV4IH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChoaWdobGlnaHRQb2ludCAmJiBoaWdobGlnaHRJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvYmplY3QgPSB0aGlzLnByb3BzLmRhdGFbaGlnaGxpZ2h0SW5kZXhdO1xuICAgICAgY29uc3QgcG9pbnRzID0gdGhpcy5wcm9wcy5nZXRQYXRoKG9iamVjdCk7XG4gICAgICBjb25zdCB7IHBvaW50IH0gPSBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcG9pbnRzLCBwOiBoaWdobGlnaHRQb2ludCB9KTtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBwb2ludCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbyB9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaW5mbywge1xuICAgICAgLy8gb3ZlcnJpZGUgb2JqZWN0IHdpdGggcGlja2VkIGZlYXR1cmVcbiAgICAgIG9iamVjdDogKGluZm8ub2JqZWN0ICYmIGluZm8ub2JqZWN0LnBhdGgpIHx8IGluZm8ub2JqZWN0LFxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGF0aE91dGxpbmVMYXllcihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAncGF0aHMnLFxuICAgICAgICAgIC8vIE5vdGU6IGRhdGEgaGFzIHRvIGJlIHBhc3NlZCBleHBsaWNpdGx5IGxpa2UgdGhpcyB0byBhdm9pZCBiZWluZyBlbXB0eVxuICAgICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBuZXcgdGhpcy5wcm9wcy5NYXJrZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMubWFya2VyTGF5ZXJQcm9wcywge1xuICAgICAgICAgICAgaWQ6ICdtYXJrZXJzJyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuc3RhdGUubWFya2VycyxcbiAgICAgICAgICAgIGdldE9yaWVudGF0aW9uOiAoeCkgPT4gWzAsIC14LmFuZ2xlLCAwXSxcbiAgICAgICAgICAgIGdldENvbG9yOiAoeCkgPT4geC5jb2xvcixcbiAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5wcm9wcy5zaXplU2NhbGUsXG4gICAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIGJsZW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyAmJlxuICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWhpZ2hsaWdodGAsXG4gICAgICAgICAgZGF0YTogdGhpcy5zdGF0ZS5jbG9zZXN0UG9pbnRzLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIH0pLFxuICAgIF07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/path-marker-layer/polyline.js b/modules/layers/dist-es6/layers/path-marker-layer/polyline.js new file mode 100644 index 000000000..e570f973a --- /dev/null +++ b/modules/layers/dist-es6/layers/path-marker-layer/polyline.js @@ -0,0 +1,65 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getClosestPointOnLine = getClosestPointOnLine; +exports.getClosestPointOnPolyline = getClosestPointOnPolyline; + +var _math = require("math.gl"); + +// Return the closest point on a line segment +function getClosestPointOnLine(_ref) { + var p = _ref.p, + p1 = _ref.p1, + p2 = _ref.p2, + _ref$clampToLine = _ref.clampToLine, + clampToLine = _ref$clampToLine === void 0 ? true : _ref$clampToLine; + var lineVector = new _math.Vector3(p2).subtract(p1); + var pointVector = new _math.Vector3(p).subtract(p1); + var dotProduct = lineVector.dot(pointVector); + + if (clampToLine) { + dotProduct = (0, _math.clamp)(dotProduct, 0, 1); + } // @ts-ignore + + + return lineVector.lerp(dotProduct); +} // Return the closest point on a line segment + + +function getClosestPointOnPolyline(_ref2) { + var p = _ref2.p, + points = _ref2.points; + p = new _math.Vector3(p); + var pClosest = null; + var distanceSquared = Infinity; + var index = -1; + + for (var i = 0; i < points.length - 1; ++i) { + var p1 = points[i]; + var p2 = points[i + 1]; + var pClosestOnLine = getClosestPointOnLine({ + p: p, + p1: p1, + p2: p2 + }); + var distanceToLineSquared = p.distanceSquared(pClosestOnLine); + + if (distanceToLineSquared < distanceSquared) { + distanceSquared = distanceToLineSquared; + pClosest = pClosestOnLine; + index = i; + } + } + + return { + point: pClosest, + index: index, + p1: points[index], + p2: points[index + 1], + distanceSquared: distanceSquared, + distance: Math.sqrt(distanceSquared) + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcG9seWxpbmUudHMiXSwibmFtZXMiOlsiZ2V0Q2xvc2VzdFBvaW50T25MaW5lIiwicCIsInAxIiwicDIiLCJjbGFtcFRvTGluZSIsImxpbmVWZWN0b3IiLCJWZWN0b3IzIiwic3VidHJhY3QiLCJwb2ludFZlY3RvciIsImRvdFByb2R1Y3QiLCJkb3QiLCJsZXJwIiwiZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSIsInBvaW50cyIsInBDbG9zZXN0IiwiZGlzdGFuY2VTcXVhcmVkIiwiSW5maW5pdHkiLCJpbmRleCIsImkiLCJsZW5ndGgiLCJwQ2xvc2VzdE9uTGluZSIsImRpc3RhbmNlVG9MaW5lU3F1YXJlZCIsInBvaW50IiwiZGlzdGFuY2UiLCJNYXRoIiwic3FydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFFQTtBQUNPLFNBQVNBLHFCQUFULE9BQWtFO0FBQUEsTUFBakNDLENBQWlDLFFBQWpDQSxDQUFpQztBQUFBLE1BQTlCQyxFQUE4QixRQUE5QkEsRUFBOEI7QUFBQSxNQUExQkMsRUFBMEIsUUFBMUJBLEVBQTBCO0FBQUEsOEJBQXRCQyxXQUFzQjtBQUFBLE1BQXRCQSxXQUFzQixpQ0FBUixJQUFRO0FBQ3ZFLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxhQUFKLENBQVlILEVBQVosRUFBZ0JJLFFBQWhCLENBQXlCTCxFQUF6QixDQUFuQjtBQUNBLE1BQU1NLFdBQVcsR0FBRyxJQUFJRixhQUFKLENBQVlMLENBQVosRUFBZU0sUUFBZixDQUF3QkwsRUFBeEIsQ0FBcEI7QUFDQSxNQUFJTyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssR0FBWCxDQUFlRixXQUFmLENBQWpCOztBQUNBLE1BQUlKLFdBQUosRUFBaUI7QUFDZkssSUFBQUEsVUFBVSxHQUFHLGlCQUFNQSxVQUFOLEVBQWtCLENBQWxCLEVBQXFCLENBQXJCLENBQWI7QUFDRCxHQU5zRSxDQU92RTs7O0FBQ0EsU0FBT0osVUFBVSxDQUFDTSxJQUFYLENBQWdCRixVQUFoQixDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTRyx5QkFBVCxRQUFrRDtBQUFBLE1BQWJYLENBQWEsU0FBYkEsQ0FBYTtBQUFBLE1BQVZZLE1BQVUsU0FBVkEsTUFBVTtBQUN2RFosRUFBQUEsQ0FBQyxHQUFHLElBQUlLLGFBQUosQ0FBWUwsQ0FBWixDQUFKO0FBQ0EsTUFBSWEsUUFBUSxHQUFHLElBQWY7QUFDQSxNQUFJQyxlQUFlLEdBQUdDLFFBQXRCO0FBQ0EsTUFBSUMsS0FBSyxHQUFHLENBQUMsQ0FBYjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdMLE1BQU0sQ0FBQ00sTUFBUCxHQUFnQixDQUFwQyxFQUF1QyxFQUFFRCxDQUF6QyxFQUE0QztBQUMxQyxRQUFNaEIsRUFBRSxHQUFHVyxNQUFNLENBQUNLLENBQUQsQ0FBakI7QUFDQSxRQUFNZixFQUFFLEdBQUdVLE1BQU0sQ0FBQ0ssQ0FBQyxHQUFHLENBQUwsQ0FBakI7QUFDQSxRQUFNRSxjQUFjLEdBQUdwQixxQkFBcUIsQ0FBQztBQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsTUFBQUEsRUFBRSxFQUFGQSxFQUFMO0FBQVNDLE1BQUFBLEVBQUUsRUFBRkE7QUFBVCxLQUFELENBQTVDO0FBQ0EsUUFBTWtCLHFCQUFxQixHQUFHcEIsQ0FBQyxDQUFDYyxlQUFGLENBQWtCSyxjQUFsQixDQUE5Qjs7QUFDQSxRQUFJQyxxQkFBcUIsR0FBR04sZUFBNUIsRUFBNkM7QUFDM0NBLE1BQUFBLGVBQWUsR0FBR00scUJBQWxCO0FBQ0FQLE1BQUFBLFFBQVEsR0FBR00sY0FBWDtBQUNBSCxNQUFBQSxLQUFLLEdBQUdDLENBQVI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTEksSUFBQUEsS0FBSyxFQUFFUixRQURGO0FBRUxHLElBQUFBLEtBQUssRUFBTEEsS0FGSztBQUdMZixJQUFBQSxFQUFFLEVBQUVXLE1BQU0sQ0FBQ0ksS0FBRCxDQUhMO0FBSUxkLElBQUFBLEVBQUUsRUFBRVUsTUFBTSxDQUFDSSxLQUFLLEdBQUcsQ0FBVCxDQUpMO0FBS0xGLElBQUFBLGVBQWUsRUFBZkEsZUFMSztBQU1MUSxJQUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVVixlQUFWO0FBTkwsR0FBUDtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVjdG9yMywgY2xhbXAgfSBmcm9tICdtYXRoLmdsJztcblxuLy8gUmV0dXJuIHRoZSBjbG9zZXN0IHBvaW50IG9uIGEgbGluZSBzZWdtZW50XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xvc2VzdFBvaW50T25MaW5lKHsgcCwgcDEsIHAyLCBjbGFtcFRvTGluZSA9IHRydWUgfSkge1xuICBjb25zdCBsaW5lVmVjdG9yID0gbmV3IFZlY3RvcjMocDIpLnN1YnRyYWN0KHAxKTtcbiAgY29uc3QgcG9pbnRWZWN0b3IgPSBuZXcgVmVjdG9yMyhwKS5zdWJ0cmFjdChwMSk7XG4gIGxldCBkb3RQcm9kdWN0ID0gbGluZVZlY3Rvci5kb3QocG9pbnRWZWN0b3IpO1xuICBpZiAoY2xhbXBUb0xpbmUpIHtcbiAgICBkb3RQcm9kdWN0ID0gY2xhbXAoZG90UHJvZHVjdCwgMCwgMSk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbGluZVZlY3Rvci5sZXJwKGRvdFByb2R1Y3QpO1xufVxuXG4vLyBSZXR1cm4gdGhlIGNsb3Nlc3QgcG9pbnQgb24gYSBsaW5lIHNlZ21lbnRcbmV4cG9ydCBmdW5jdGlvbiBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcCwgcG9pbnRzIH0pIHtcbiAgcCA9IG5ldyBWZWN0b3IzKHApO1xuICBsZXQgcENsb3Nlc3QgPSBudWxsO1xuICBsZXQgZGlzdGFuY2VTcXVhcmVkID0gSW5maW5pdHk7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgY29uc3QgcENsb3Nlc3RPbkxpbmUgPSBnZXRDbG9zZXN0UG9pbnRPbkxpbmUoeyBwLCBwMSwgcDIgfSk7XG4gICAgY29uc3QgZGlzdGFuY2VUb0xpbmVTcXVhcmVkID0gcC5kaXN0YW5jZVNxdWFyZWQocENsb3Nlc3RPbkxpbmUpO1xuICAgIGlmIChkaXN0YW5jZVRvTGluZVNxdWFyZWQgPCBkaXN0YW5jZVNxdWFyZWQpIHtcbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlVG9MaW5lU3F1YXJlZDtcbiAgICAgIHBDbG9zZXN0ID0gcENsb3Nlc3RPbkxpbmU7XG4gICAgICBpbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IHBDbG9zZXN0LFxuICAgIGluZGV4LFxuICAgIHAxOiBwb2ludHNbaW5kZXhdLFxuICAgIHAyOiBwb2ludHNbaW5kZXggKyAxXSxcbiAgICBkaXN0YW5jZVNxdWFyZWQsXG4gICAgZGlzdGFuY2U6IE1hdGguc3FydChkaXN0YW5jZVNxdWFyZWQpLFxuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/path-outline-layer/path-outline-layer.js b/modules/layers/dist-es6/layers/path-outline-layer/path-outline-layer.js new file mode 100644 index 000000000..5afc3feaa --- /dev/null +++ b/modules/layers/dist-es6/layers/path-outline-layer/path-outline-layer.js @@ -0,0 +1,204 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _constants = _interopRequireDefault(require("@luma.gl/constants")); + +var _core = require("@luma.gl/core"); + +var _outline = _interopRequireDefault(require("../../shaderlib/outline/outline")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO - this should be built into assembleShaders +function injectShaderCode(_ref) { + var source = _ref.source, + _ref$code = _ref.code, + code = _ref$code === void 0 ? '' : _ref$code; + var INJECT_CODE = /}[^{}]*$/; + return source.replace(INJECT_CODE, code.concat('\n}\n')); +} + +var VS_CODE = " outline_setUV(gl_Position);\n outline_setZLevel(instanceZLevel);\n"; +var FS_CODE = " gl_FragColor = outline_filterColor(gl_FragColor);\n"; +var defaultProps = { + getZLevel: { + type: 'accessor', + value: 0 + } +}; + +var PathOutlineLayer = /*#__PURE__*/function (_PathLayer) { + _inherits(PathOutlineLayer, _PathLayer); + + var _super = _createSuper(PathOutlineLayer); + + function PathOutlineLayer() { + _classCallCheck(this, PathOutlineLayer); + + return _super.apply(this, arguments); + } + + _createClass(PathOutlineLayer, [{ + key: "getShaders", + // Override getShaders to inject the outline module + value: function getShaders() { + var shaders = _get(_getPrototypeOf(PathOutlineLayer.prototype), "getShaders", this).call(this); + + return Object.assign({}, shaders, { + modules: shaders.modules.concat([_outline["default"]]), + vs: injectShaderCode({ + source: shaders.vs, + code: VS_CODE + }), + fs: injectShaderCode({ + source: shaders.fs, + code: FS_CODE + }) + }); + } + }, { + key: "initializeState", + value: function initializeState(context) { + _get(_getPrototypeOf(PathOutlineLayer.prototype), "initializeState", this).call(this, context); // Create an outline "shadow" map + // TODO - we should create a single outlineMap for all layers + + + this.setState({ + outlineFramebuffer: new _core.Framebuffer(context.gl), + dummyTexture: new _core.Texture2D(context.gl) + }); // Create an attribute manager + + this.state.attributeManager.addInstanced({ + instanceZLevel: { + size: 1, + type: _constants["default"].UNSIGNED_BYTE, + update: this.calculateZLevels, + accessor: 'getZLevel' + } + }); + } // Override draw to add render module + + }, { + key: "draw", + value: function draw(_ref2) { + var _ref2$moduleParameter = _ref2.moduleParameters, + moduleParameters = _ref2$moduleParameter === void 0 ? {} : _ref2$moduleParameter, + parameters = _ref2.parameters, + uniforms = _ref2.uniforms, + context = _ref2.context; + // Need to calculate same uniforms as base layer + var _this$props = this.props, + rounded = _this$props.rounded, + miterLimit = _this$props.miterLimit, + widthScale = _this$props.widthScale, + widthMinPixels = _this$props.widthMinPixels, + widthMaxPixels = _this$props.widthMaxPixels, + dashJustified = _this$props.dashJustified; + uniforms = Object.assign({}, uniforms, { + jointType: Number(rounded), + alignMode: Number(dashJustified), + widthScale: widthScale, + miterLimit: miterLimit, + widthMinPixels: widthMinPixels, + widthMaxPixels: widthMaxPixels + }); // Render the outline shadowmap (based on segment z orders) + + var _this$state = this.state, + outlineFramebuffer = _this$state.outlineFramebuffer, + dummyTexture = _this$state.dummyTexture; + outlineFramebuffer.resize(); + outlineFramebuffer.clear({ + color: true, + depth: true + }); + this.state.model.updateModuleSettings({ + outlineEnabled: true, + outlineRenderShadowmap: true, + outlineShadowmap: dummyTexture + }); + this.state.model.draw({ + uniforms: Object.assign({}, uniforms, { + jointType: 0, + widthScale: this.props.widthScale * 1.3 + }), + parameters: { + depthTest: false, + // Biggest value needs to go into buffer + blendEquation: _constants["default"].MAX + }, + framebuffer: outlineFramebuffer + }); // Now use the outline shadowmap to render the lines (with outlines) + + this.state.model.updateModuleSettings({ + outlineEnabled: true, + outlineRenderShadowmap: false, + outlineShadowmap: outlineFramebuffer + }); + this.state.model.draw({ + uniforms: Object.assign({}, uniforms, { + jointType: Number(rounded), + widthScale: this.props.widthScale + }), + parameters: { + depthTest: false + } + }); + } + }, { + key: "calculateZLevels", + value: function calculateZLevels(attribute) { + var getZLevel = this.props.getZLevel; + var pathTesselator = this.state.pathTesselator; + attribute.value = pathTesselator._updateAttribute({ + target: attribute.value, + size: 1, + getValue: function getValue(object, index) { + return [getZLevel(object, index) || 0]; + } + }); + } + }]); + + return PathOutlineLayer; +}(_layers.PathLayer); + +exports["default"] = PathOutlineLayer; + +_defineProperty(PathOutlineLayer, "layerName", 'PathOutlineLayer'); + +_defineProperty(PathOutlineLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1vdXRsaW5lLWxheWVyL3BhdGgtb3V0bGluZS1sYXllci50cyJdLCJuYW1lcyI6WyJpbmplY3RTaGFkZXJDb2RlIiwic291cmNlIiwiY29kZSIsIklOSkVDVF9DT0RFIiwicmVwbGFjZSIsImNvbmNhdCIsIlZTX0NPREUiLCJGU19DT0RFIiwiZGVmYXVsdFByb3BzIiwiZ2V0WkxldmVsIiwidHlwZSIsInZhbHVlIiwiUGF0aE91dGxpbmVMYXllciIsInNoYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGVzIiwib3V0bGluZSIsInZzIiwiZnMiLCJjb250ZXh0Iiwic2V0U3RhdGUiLCJvdXRsaW5lRnJhbWVidWZmZXIiLCJGcmFtZWJ1ZmZlciIsImdsIiwiZHVtbXlUZXh0dXJlIiwiVGV4dHVyZTJEIiwic3RhdGUiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkSW5zdGFuY2VkIiwiaW5zdGFuY2VaTGV2ZWwiLCJzaXplIiwiR0wiLCJVTlNJR05FRF9CWVRFIiwidXBkYXRlIiwiY2FsY3VsYXRlWkxldmVscyIsImFjY2Vzc29yIiwibW9kdWxlUGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJ1bmlmb3JtcyIsInByb3BzIiwicm91bmRlZCIsIm1pdGVyTGltaXQiLCJ3aWR0aFNjYWxlIiwid2lkdGhNaW5QaXhlbHMiLCJ3aWR0aE1heFBpeGVscyIsImRhc2hKdXN0aWZpZWQiLCJqb2ludFR5cGUiLCJOdW1iZXIiLCJhbGlnbk1vZGUiLCJyZXNpemUiLCJjbGVhciIsImNvbG9yIiwiZGVwdGgiLCJtb2RlbCIsInVwZGF0ZU1vZHVsZVNldHRpbmdzIiwib3V0bGluZUVuYWJsZWQiLCJvdXRsaW5lUmVuZGVyU2hhZG93bWFwIiwib3V0bGluZVNoYWRvd21hcCIsImRyYXciLCJkZXB0aFRlc3QiLCJibGVuZEVxdWF0aW9uIiwiTUFYIiwiZnJhbWVidWZmZXIiLCJhdHRyaWJ1dGUiLCJwYXRoVGVzc2VsYXRvciIsIl91cGRhdGVBdHRyaWJ1dGUiLCJ0YXJnZXQiLCJnZXRWYWx1ZSIsIm9iamVjdCIsImluZGV4IiwiUGF0aExheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQSxTQUFTQSxnQkFBVCxPQUFpRDtBQUFBLE1BQXJCQyxNQUFxQixRQUFyQkEsTUFBcUI7QUFBQSx1QkFBYkMsSUFBYTtBQUFBLE1BQWJBLElBQWEsMEJBQU4sRUFBTTtBQUMvQyxNQUFNQyxXQUFXLEdBQUcsVUFBcEI7QUFDQSxTQUFPRixNQUFNLENBQUNHLE9BQVAsQ0FBZUQsV0FBZixFQUE0QkQsSUFBSSxDQUFDRyxNQUFMLENBQVksT0FBWixDQUE1QixDQUFQO0FBQ0Q7O0FBRUQsSUFBTUMsT0FBTywwRUFBYjtBQUtBLElBQU1DLE9BQU8sMERBQWI7QUFJQSxJQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLFNBQVMsRUFBRTtBQUFFQyxJQUFBQSxJQUFJLEVBQUUsVUFBUjtBQUFvQkMsSUFBQUEsS0FBSyxFQUFFO0FBQTNCO0FBRFEsQ0FBckI7O0lBSXFCQyxnQjs7Ozs7Ozs7Ozs7OztBQUluQjtpQ0FDYTtBQUNYLFVBQU1DLE9BQU8sbUZBQWI7O0FBQ0EsYUFBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkYsT0FBbEIsRUFBMkI7QUFDaENHLFFBQUFBLE9BQU8sRUFBRUgsT0FBTyxDQUFDRyxPQUFSLENBQWdCWCxNQUFoQixDQUF1QixDQUFDWSxtQkFBRCxDQUF2QixDQUR1QjtBQUVoQ0MsUUFBQUEsRUFBRSxFQUFFbEIsZ0JBQWdCLENBQUM7QUFBRUMsVUFBQUEsTUFBTSxFQUFFWSxPQUFPLENBQUNLLEVBQWxCO0FBQXNCaEIsVUFBQUEsSUFBSSxFQUFFSTtBQUE1QixTQUFELENBRlk7QUFHaENhLFFBQUFBLEVBQUUsRUFBRW5CLGdCQUFnQixDQUFDO0FBQUVDLFVBQUFBLE1BQU0sRUFBRVksT0FBTyxDQUFDTSxF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VCxDQUFULElBQTRCLENBQTdCLENBQW5CO0FBQUE7QUFIc0MsT0FBaEMsQ0FBbEI7QUFLRDs7OztFQTFHMkNDLGlCOzs7O2dCQUF6QjNELGdCLGVBQ0Esa0I7O2dCQURBQSxnQixrQkFFR0osWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7IEZyYW1lYnVmZmVyLCBUZXh0dXJlMkQgfSBmcm9tICdAbHVtYS5nbC9jb3JlJztcbmltcG9ydCBvdXRsaW5lIGZyb20gJy4uLy4uL3NoYWRlcmxpYi9vdXRsaW5lL291dGxpbmUnO1xuXG4vLyBUT0RPIC0gdGhpcyBzaG91bGQgYmUgYnVpbHQgaW50byBhc3NlbWJsZVNoYWRlcnNcbmZ1bmN0aW9uIGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2UsIGNvZGUgPSAnJyB9KSB7XG4gIGNvbnN0IElOSkVDVF9DT0RFID0gL31bXnt9XSokLztcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKElOSkVDVF9DT0RFLCBjb2RlLmNvbmNhdCgnXFxufVxcbicpKTtcbn1cblxuY29uc3QgVlNfQ09ERSA9IGBcXFxuICBvdXRsaW5lX3NldFVWKGdsX1Bvc2l0aW9uKTtcbiAgb3V0bGluZV9zZXRaTGV2ZWwoaW5zdGFuY2VaTGV2ZWwpO1xuYDtcblxuY29uc3QgRlNfQ09ERSA9IGBcXFxuICBnbF9GcmFnQ29sb3IgPSBvdXRsaW5lX2ZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XG5gO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGdldFpMZXZlbDogeyB0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogMCB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aE91dGxpbmVMYXllciBleHRlbmRzIFBhdGhMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoT3V0bGluZUxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvLyBPdmVycmlkZSBnZXRTaGFkZXJzIHRvIGluamVjdCB0aGUgb3V0bGluZSBtb2R1bGVcbiAgZ2V0U2hhZGVycygpIHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzaGFkZXJzLCB7XG4gICAgICBtb2R1bGVzOiBzaGFkZXJzLm1vZHVsZXMuY29uY2F0KFtvdXRsaW5lXSksXG4gICAgICB2czogaW5qZWN0U2hhZGVyQ29kZSh7IHNvdXJjZTogc2hhZGVycy52cywgY29kZTogVlNfQ09ERSB9KSxcbiAgICAgIGZzOiBpbmplY3RTaGFkZXJDb2RlKHsgc291cmNlOiBzaGFkZXJzLmZzLCBjb2RlOiBGU19DT0RFIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKGNvbnRleHQ6IGFueSkge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZShjb250ZXh0KTtcblxuICAgIC8vIENyZWF0ZSBhbiBvdXRsaW5lIFwic2hhZG93XCIgbWFwXG4gICAgLy8gVE9ETyAtIHdlIHNob3VsZCBjcmVhdGUgYSBzaW5nbGUgb3V0bGluZU1hcCBmb3IgYWxsIGxheWVyc1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgb3V0bGluZUZyYW1lYnVmZmVyOiBuZXcgRnJhbWVidWZmZXIoY29udGV4dC5nbCksXG4gICAgICBkdW1teVRleHR1cmU6IG5ldyBUZXh0dXJlMkQoY29udGV4dC5nbCksXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgYW4gYXR0cmlidXRlIG1hbmFnZXJcbiAgICB0aGlzLnN0YXRlLmF0dHJpYnV0ZU1hbmFnZXIuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlWkxldmVsOiB7XG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHR5cGU6IEdMLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgIHVwZGF0ZTogdGhpcy5jYWxjdWxhdGVaTGV2ZWxzLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFpMZXZlbCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgZHJhdyB0byBhZGQgcmVuZGVyIG1vZHVsZVxuICBkcmF3KHsgbW9kdWxlUGFyYW1ldGVycyA9IHt9LCBwYXJhbWV0ZXJzLCB1bmlmb3JtcywgY29udGV4dCB9KSB7XG4gICAgLy8gTmVlZCB0byBjYWxjdWxhdGUgc2FtZSB1bmlmb3JtcyBhcyBiYXNlIGxheWVyXG4gICAgY29uc3Qge1xuICAgICAgcm91bmRlZCxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aFNjYWxlLFxuICAgICAgd2lkdGhNaW5QaXhlbHMsXG4gICAgICB3aWR0aE1heFBpeGVscyxcbiAgICAgIGRhc2hKdXN0aWZpZWQsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB1bmlmb3JtcyA9IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICBqb2ludFR5cGU6IE51bWJlcihyb3VuZGVkKSxcbiAgICAgIGFsaWduTW9kZTogTnVtYmVyKGRhc2hKdXN0aWZpZWQpLFxuICAgICAgd2lkdGhTY2FsZSxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aE1pblBpeGVscyxcbiAgICAgIHdpZHRoTWF4UGl4ZWxzLFxuICAgIH0pO1xuXG4gICAgLy8gUmVuZGVyIHRoZSBvdXRsaW5lIHNoYWRvd21hcCAoYmFzZWQgb24gc2VnbWVudCB6IG9yZGVycylcbiAgICBjb25zdCB7IG91dGxpbmVGcmFtZWJ1ZmZlciwgZHVtbXlUZXh0dXJlIH0gPSB0aGlzLnN0YXRlO1xuICAgIG91dGxpbmVGcmFtZWJ1ZmZlci5yZXNpemUoKTtcbiAgICBvdXRsaW5lRnJhbWVidWZmZXIuY2xlYXIoeyBjb2xvcjogdHJ1ZSwgZGVwdGg6IHRydWUgfSk7XG5cbiAgICB0aGlzLnN0YXRlLm1vZGVsLnVwZGF0ZU1vZHVsZVNldHRpbmdzKHtcbiAgICAgIG91dGxpbmVFbmFibGVkOiB0cnVlLFxuICAgICAgb3V0bGluZVJlbmRlclNoYWRvd21hcDogdHJ1ZSxcbiAgICAgIG91dGxpbmVTaGFkb3dtYXA6IGR1bW15VGV4dHVyZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUubW9kZWwuZHJhdyh7XG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgdW5pZm9ybXMsIHtcbiAgICAgICAgam9pbnRUeXBlOiAwLFxuICAgICAgICB3aWR0aFNjYWxlOiB0aGlzLnByb3BzLndpZHRoU2NhbGUgKiAxLjMsXG4gICAgICB9KSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgLy8gQmlnZ2VzdCB2YWx1ZSBuZWVkcyB0byBnbyBpbnRvIGJ1ZmZlclxuICAgICAgICBibGVuZEVxdWF0aW9uOiBHTC5NQVgsXG4gICAgICB9LFxuICAgICAgZnJhbWVidWZmZXI6IG91dGxpbmVGcmFtZWJ1ZmZlcixcbiAgICB9KTtcblxuICAgIC8vIE5vdyB1c2UgdGhlIG91dGxpbmUgc2hhZG93bWFwIHRvIHJlbmRlciB0aGUgbGluZXMgKHdpdGggb3V0bGluZXMpXG4gICAgdGhpcy5zdGF0ZS5tb2RlbC51cGRhdGVNb2R1bGVTZXR0aW5ncyh7XG4gICAgICBvdXRsaW5lRW5hYmxlZDogdHJ1ZSxcbiAgICAgIG91dGxpbmVSZW5kZXJTaGFkb3dtYXA6IGZhbHNlLFxuICAgICAgb3V0bGluZVNoYWRvd21hcDogb3V0bGluZUZyYW1lYnVmZmVyLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGUubW9kZWwuZHJhdyh7XG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgdW5pZm9ybXMsIHtcbiAgICAgICAgam9pbnRUeXBlOiBOdW1iZXIocm91bmRlZCksXG4gICAgICAgIHdpZHRoU2NhbGU6IHRoaXMucHJvcHMud2lkdGhTY2FsZSxcbiAgICAgIH0pLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVpMZXZlbHMoYXR0cmlidXRlKSB7XG4gICAgY29uc3QgeyBnZXRaTGV2ZWwgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBwYXRoVGVzc2VsYXRvciB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IHBhdGhUZXNzZWxhdG9yLl91cGRhdGVBdHRyaWJ1dGUoe1xuICAgICAgdGFyZ2V0OiBhdHRyaWJ1dGUudmFsdWUsXG4gICAgICBzaXplOiAxLFxuICAgICAgZ2V0VmFsdWU6IChvYmplY3QsIGluZGV4KSA9PiBbZ2V0WkxldmVsKG9iamVjdCwgaW5kZXgpIHx8IDBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/layers/selection-layer.js b/modules/layers/dist-es6/layers/selection-layer.js new file mode 100644 index 000000000..e2041b94d --- /dev/null +++ b/modules/layers/dist-es6/layers/selection-layer.js @@ -0,0 +1,280 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = exports.SELECTION_TYPE = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +var _helpers = require("@turf/helpers"); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./editable-geojson-layer")); + +var _MODE_MAP; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 SELECTION_TYPE = { + NONE: null, + RECTANGLE: 'rectangle', + POLYGON: 'polygon' +}; +exports.SELECTION_TYPE = SELECTION_TYPE; +var MODE_MAP = (_MODE_MAP = {}, _defineProperty(_MODE_MAP, SELECTION_TYPE.RECTANGLE, _editModes.DrawRectangleMode), _defineProperty(_MODE_MAP, SELECTION_TYPE.POLYGON, _editModes.DrawPolygonMode), _MODE_MAP); + +var MODE_CONFIG_MAP = _defineProperty({}, SELECTION_TYPE.RECTANGLE, { + dragToDraw: true +}); + +var defaultProps = { + selectionType: SELECTION_TYPE.RECTANGLE, + layerIds: [], + onSelect: function onSelect() {} +}; +var EMPTY_DATA = { + type: 'FeatureCollection', + features: [] +}; +var EXPANSION_KM = 50; +var LAYER_ID_GEOJSON = 'selection-geojson'; +var LAYER_ID_BLOCKER = 'selection-blocker'; +var PASS_THROUGH_PROPS = ['lineWidthScale', 'lineWidthMinPixels', 'lineWidthMaxPixels', 'lineWidthUnits', 'lineJointRounded', 'lineMiterLimit', 'pointRadiusScale', 'pointRadiusMinPixels', 'pointRadiusMaxPixels', 'lineDashJustified', 'getLineColor', 'getFillColor', 'getRadius', 'getLineWidth', 'getLineDashArray', 'getTentativeLineDashArray', 'getTentativeLineColor', 'getTentativeFillColor', 'getTentativeLineWidth']; + +var SelectionLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(SelectionLayer, _CompositeLayer); + + var _super = _createSuper(SelectionLayer); + + function SelectionLayer() { + _classCallCheck(this, SelectionLayer); + + return _super.apply(this, arguments); + } + + _createClass(SelectionLayer, [{ + key: "_selectRectangleObjects", + value: function _selectRectangleObjects(coordinates) { + var _this$props = this.props, + layerIds = _this$props.layerIds, + onSelect = _this$props.onSelect; // @ts-ignore + + var _this$context$viewpor = this.context.viewport.project(coordinates[0][0]), + _this$context$viewpor2 = _slicedToArray(_this$context$viewpor, 2), + x1 = _this$context$viewpor2[0], + y1 = _this$context$viewpor2[1]; // @ts-ignore + + + var _this$context$viewpor3 = this.context.viewport.project(coordinates[0][2]), + _this$context$viewpor4 = _slicedToArray(_this$context$viewpor3, 2), + x2 = _this$context$viewpor4[0], + y2 = _this$context$viewpor4[1]; // @ts-ignore + + + var pickingInfos = this.context.deck.pickObjects({ + x: Math.min(x1, x2), + y: Math.min(y1, y2), + width: Math.abs(x2 - x1), + height: Math.abs(y2 - y1), + layerIds: layerIds + }); + onSelect({ + pickingInfos: pickingInfos + }); + } + }, { + key: "_selectPolygonObjects", + value: function _selectPolygonObjects(coordinates) { + var _this = this; + + var _this$props2 = this.props, + layerIds = _this$props2.layerIds, + onSelect = _this$props2.onSelect; // @ts-ignore + + var mousePoints = coordinates[0].map(function (c) { + return _this.context.viewport.project(c); + }); + var allX = mousePoints.map(function (mousePoint) { + return mousePoint[0]; + }); + var allY = mousePoints.map(function (mousePoint) { + return mousePoint[1]; + }); + var x = Math.min.apply(Math, _toConsumableArray(allX)); + var y = Math.min.apply(Math, _toConsumableArray(allY)); + var maxX = Math.max.apply(Math, _toConsumableArray(allX)); + var maxY = Math.max.apply(Math, _toConsumableArray(allY)); // Use a polygon to hide the outside, because pickObjects() + // does not support polygons + + var landPointsPoly = (0, _helpers.polygon)(coordinates); + var bigBuffer = (0, _buffer["default"])(landPointsPoly, EXPANSION_KM); + var bigPolygon; + + try { + // turfDifference throws an exception if the polygon + // intersects with itself (TODO: check if true in all versions) + bigPolygon = (0, _difference["default"])(bigBuffer, landPointsPoly); + } catch (e) { + // invalid selection polygon + console.log('turfDifference() error', e); // eslint-disable-line + + return; + } + + this.setState({ + pendingPolygonSelection: { + bigPolygon: bigPolygon + } + }); + var blockerId = "".concat(this.props.id, "-").concat(LAYER_ID_BLOCKER); // HACK, find a better way + + setTimeout(function () { + // @ts-ignore + var pickingInfos = _this.context.deck.pickObjects({ + x: x, + y: y, + width: maxX - x, + height: maxY - y, + layerIds: [blockerId].concat(_toConsumableArray(layerIds)) + }); + + onSelect({ + pickingInfos: pickingInfos.filter(function (item) { + return item.layer.id !== _this.props.id; + }) + }); + }, 250); + } + }, { + key: "renderLayers", + value: function renderLayers() { + var _this2 = this; + + var pendingPolygonSelection = this.state.pendingPolygonSelection; + var mode = MODE_MAP[this.props.selectionType] || _editModes.ViewMode; + var modeConfig = MODE_CONFIG_MAP[this.props.selectionType]; + var inheritedProps = {}; + PASS_THROUGH_PROPS.forEach(function (p) { + if (_this2.props[p] !== undefined) inheritedProps[p] = _this2.props[p]; + }); + var layers = [new _editableGeojsonLayer["default"](this.getSubLayerProps(_objectSpread({ + id: LAYER_ID_GEOJSON, + pickable: true, + mode: mode, + modeConfig: modeConfig, + selectedFeatureIndexes: [], + data: EMPTY_DATA, + onEdit: function onEdit(_ref) { + var updatedData = _ref.updatedData, + editType = _ref.editType; + + if (editType === 'addFeature') { + var coordinates = updatedData.features[0].geometry.coordinates; + + if (_this2.props.selectionType === SELECTION_TYPE.RECTANGLE) { + _this2._selectRectangleObjects(coordinates); + } else if (_this2.props.selectionType === SELECTION_TYPE.POLYGON) { + _this2._selectPolygonObjects(coordinates); + } + } + } + }, inheritedProps)))]; + + if (pendingPolygonSelection) { + var bigPolygon = pendingPolygonSelection.bigPolygon; + layers.push(new _layers.PolygonLayer( // @ts-ignore + this.getSubLayerProps({ + id: LAYER_ID_BLOCKER, + pickable: true, + stroked: false, + opacity: 1.0, + data: [bigPolygon], + getLineColor: function getLineColor(obj) { + return [0, 0, 0, 1]; + }, + getFillColor: function getFillColor(obj) { + return [0, 0, 0, 1]; + }, + getPolygon: function getPolygon(o) { + return o.geometry.coordinates; + } + }))); + } + + return layers; + } + }, { + key: "shouldUpdateState", + value: function shouldUpdateState(_ref2) { + var _ref2$changeFlags = _ref2.changeFlags, + stateChanged = _ref2$changeFlags.stateChanged, + propsOrDataChanged = _ref2$changeFlags.propsOrDataChanged; + return stateChanged || propsOrDataChanged; + } + }]); + + return SelectionLayer; +}(_core.CompositeLayer); + +exports["default"] = SelectionLayer; + +_defineProperty(SelectionLayer, "layerName", 'SelectionLayer'); + +_defineProperty(SelectionLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvc2VsZWN0aW9uLWxheWVyLnRzIl0sIm5hbWVzIjpbIlNFTEVDVElPTl9UWVBFIiwiTk9ORSIsIlJFQ1RBTkdMRSIsIlBPTFlHT04iLCJNT0RFX01BUCIsIkRyYXdSZWN0YW5nbGVNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiTU9ERV9DT05GSUdfTUFQIiwiZHJhZ1RvRHJhdyIsImRlZmF1bHRQcm9wcyIsInNlbGVjdGlvblR5cGUiLCJsYXllcklkcyIsIm9uU2VsZWN0IiwiRU1QVFlfREFUQSIsInR5cGUiLCJmZWF0dXJlcyIsIkVYUEFOU0lPTl9LTSIsIkxBWUVSX0lEX0dFT0pTT04iLCJMQVlFUl9JRF9CTE9DS0VSIiwiUEFTU19USFJPVUdIX1BST1BTIiwiU2VsZWN0aW9uTGF5ZXIiLCJjb29yZGluYXRlcyIsInByb3BzIiwiY29udGV4dCIsInZpZXdwb3J0IiwicHJvamVjdCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja2luZ0luZm9zIiwiZGVjayIsInBpY2tPYmplY3RzIiwieCIsIk1hdGgiLCJtaW4iLCJ5Iiwid2lkdGgiLCJhYnMiLCJoZWlnaHQiLCJtb3VzZVBvaW50cyIsIm1hcCIsImMiLCJhbGxYIiwibW91c2VQb2ludCIsImFsbFkiLCJtYXhYIiwibWF4IiwibWF4WSIsImxhbmRQb2ludHNQb2x5IiwiYmlnQnVmZmVyIiwiYmlnUG9seWdvbiIsImUiLCJjb25zb2xlIiwibG9nIiwic2V0U3RhdGUiLCJwZW5kaW5nUG9seWdvblNlbGVjdGlvbiIsImJsb2NrZXJJZCIsImlkIiwic2V0VGltZW91dCIsImZpbHRlciIsIml0ZW0iLCJsYXllciIsInN0YXRlIiwibW9kZSIsIlZpZXdNb2RlIiwibW9kZUNvbmZpZyIsImluaGVyaXRlZFByb3BzIiwiZm9yRWFjaCIsInAiLCJ1bmRlZmluZWQiLCJsYXllcnMiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJwaWNrYWJsZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJkYXRhIiwib25FZGl0IiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImdlb21ldHJ5IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJfc2VsZWN0UG9seWdvbk9iamVjdHMiLCJwdXNoIiwiUG9seWdvbkxheWVyIiwic3Ryb2tlZCIsIm9wYWNpdHkiLCJnZXRMaW5lQ29sb3IiLCJvYmoiLCJnZXRGaWxsQ29sb3IiLCJnZXRQb2x5Z29uIiwibyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwicHJvcHNPckRhdGFDaGFuZ2VkIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJQUFJLEVBQUUsSUFEc0I7QUFFNUJDLEVBQUFBLFNBQVMsRUFBRSxXQUZpQjtBQUc1QkMsRUFBQUEsT0FBTyxFQUFFO0FBSG1CLENBQXZCOztBQU1QLElBQU1DLFFBQVEsK0NBQ1hKLGNBQWMsQ0FBQ0UsU0FESixFQUNnQkcsNEJBRGhCLDhCQUVYTCxjQUFjLENBQUNHLE9BRkosRUFFY0csMEJBRmQsYUFBZDs7QUFLQSxJQUFNQyxlQUFlLHVCQUNsQlAsY0FBYyxDQUFDRSxTQURHLEVBQ1M7QUFBRU0sRUFBQUEsVUFBVSxFQUFFO0FBQWQsQ0FEVCxDQUFyQjs7QUFJQSxJQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLGFBQWEsRUFBRVYsY0FBYyxDQUFDRSxTQURYO0FBRW5CUyxFQUFBQSxRQUFRLEVBQUUsRUFGUztBQUduQkMsRUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUU7QUFIQyxDQUFyQjtBQU1BLElBQU1DLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsSUFBSSxFQUFFLG1CQURXO0FBRWpCQyxFQUFBQSxRQUFRLEVBQUU7QUFG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RUFBVSxDQUFWLENBQVQ7QUFBQSxXQU5NO0FBT3BCQyxVQUFBQSxZQUFZLEVBQUUsc0JBQUNELEdBQUQ7QUFBQSxtQkFBUyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FBVDtBQUFBLFdBUE07QUFRcEJFLFVBQUFBLFVBQVUsRUFBRSxvQkFBQ0MsQ0FBRDtBQUFBLG1CQUFPQSxDQUFDLENBQUNYLFFBQUYsQ0FBVzNELFdBQWxCO0FBQUE7QUFSUSxTQUF0QixDQUZGLENBREY7QUFlRDs7QUFFRCxhQUFPa0QsTUFBUDtBQUNEOzs7NkNBRTZGO0FBQUEsb0NBQTFFcUIsV0FBMEU7QUFBQSxVQUEzREMsWUFBMkQscUJBQTNEQSxZQUEyRDtBQUFBLFVBQTdDQyxrQkFBNkMscUJBQTdDQSxrQkFBNkM7QUFDNUYsYUFBT0QsWUFBWSxJQUFJQyxrQkFBdkI7QUFDRDs7OztFQXRJeUNDLG9COzs7O2dCQUF2QjNFLGMsZUFDQSxnQjs7Z0JBREFBLGMsa0JBRUdYLFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBQb2x5Z29uTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgcG9seWdvbiB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCB0dXJmRGlmZmVyZW5jZSBmcm9tICdAdHVyZi9kaWZmZXJlbmNlJztcbmltcG9ydCB7IERyYXdSZWN0YW5nbGVNb2RlLCBEcmF3UG9seWdvbk1vZGUsIFZpZXdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuaW1wb3J0IEVkaXRhYmxlR2VvSnNvbkxheWVyIGZyb20gJy4vZWRpdGFibGUtZ2VvanNvbi1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fVFlQRSA9IHtcbiAgTk9ORTogbnVsbCxcbiAgUkVDVEFOR0xFOiAncmVjdGFuZ2xlJyxcbiAgUE9MWUdPTjogJ3BvbHlnb24nLFxufTtcblxuY29uc3QgTU9ERV9NQVAgPSB7XG4gIFtTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEVdOiBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgW1NFTEVDVElPTl9UWVBFLlBPTFlHT05dOiBEcmF3UG9seWdvbk1vZGUsXG59O1xuXG5jb25zdCBNT0RFX0NPTkZJR19NQVAgPSB7XG4gIFtTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEVdOiB7IGRyYWdUb0RyYXc6IHRydWUgfSxcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2VsZWN0aW9uVHlwZTogU0VMRUNUSU9OX1RZUEUuUkVDVEFOR0xFLFxuICBsYXllcklkczogW10sXG4gIG9uU2VsZWN0OiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IEVNUFRZX0RBVEEgPSB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gIGZlYXR1cmVzOiBbXSxcbn07XG5cbmNvbnN0IEVYUEFOU0lPTl9LTSA9IDUwO1xuY29uc3QgTEFZRVJfSURfR0VPSlNPTiA9ICdzZWxlY3Rpb24tZ2VvanNvbic7XG5jb25zdCBMQVlFUl9JRF9CTE9DS0VSID0gJ3NlbGVjdGlvbi1ibG9ja2VyJztcblxuY29uc3QgUEFTU19USFJPVUdIX1BST1BTID0gW1xuICAnbGluZVdpZHRoU2NhbGUnLFxuICAnbGluZVdpZHRoTWluUGl4ZWxzJyxcbiAgJ2xpbmVXaWR0aE1heFBpeGVscycsXG4gICdsaW5lV2lkdGhVbml0cycsXG4gICdsaW5lSm9pbnRSb3VuZGVkJyxcbiAgJ2xpbmVNaXRlckxpbWl0JyxcbiAgJ3BvaW50UmFkaXVzU2NhbGUnLFxuICAncG9pbnRSYWRpdXNNaW5QaXhlbHMnLFxuICAncG9pbnRSYWRpdXNNYXhQaXhlbHMnLFxuICAnbGluZURhc2hKdXN0aWZpZWQnLFxuICAnZ2V0TGluZUNvbG9yJyxcbiAgJ2dldEZpbGxDb2xvcicsXG4gICdnZXRSYWRpdXMnLFxuICAnZ2V0TGluZVdpZHRoJyxcbiAgJ2dldExpbmVEYXNoQXJyYXknLFxuICAnZ2V0VGVudGF0aXZlTGluZURhc2hBcnJheScsXG4gICdnZXRUZW50YXRpdmVMaW5lQ29sb3InLFxuICAnZ2V0VGVudGF0aXZlRmlsbENvbG9yJyxcbiAgJ2dldFRlbnRhdGl2ZUxpbmVXaWR0aCcsXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb25MYXllciBleHRlbmRzIENvbXBvc2l0ZUxheWVyPGFueT4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ1NlbGVjdGlvbkxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBfc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cyhjb29yZGluYXRlczogYW55KSB7XG4gICAgY29uc3QgeyBsYXllcklkcywgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IFt4MSwgeTFdID0gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnByb2plY3QoY29vcmRpbmF0ZXNbMF1bMF0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBbeDIsIHkyXSA9IHRoaXMuY29udGV4dC52aWV3cG9ydC5wcm9qZWN0KGNvb3JkaW5hdGVzWzBdWzJdKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5jb250ZXh0LmRlY2sucGlja09iamVjdHMoe1xuICAgICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpLFxuICAgICAgbGF5ZXJJZHMsXG4gICAgfSk7XG5cbiAgICBvblNlbGVjdCh7IHBpY2tpbmdJbmZvcyB9KTtcbiAgfVxuXG4gIF9zZWxlY3RQb2x5Z29uT2JqZWN0cyhjb29yZGluYXRlczogYW55KSB7XG4gICAgY29uc3QgeyBsYXllcklkcywgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG1vdXNlUG9pbnRzID0gY29vcmRpbmF0ZXNbMF0ubWFwKChjKSA9PiB0aGlzLmNvbnRleHQudmlld3BvcnQucHJvamVjdChjKSk7XG5cbiAgICBjb25zdCBhbGxYID0gbW91c2VQb2ludHMubWFwKChtb3VzZVBvaW50KSA9PiBtb3VzZVBvaW50WzBdKTtcbiAgICBjb25zdCBhbGxZID0gbW91c2VQb2ludHMubWFwKChtb3VzZVBvaW50KSA9PiBtb3VzZVBvaW50WzFdKTtcbiAgICBjb25zdCB4ID0gTWF0aC5taW4oLi4uYWxsWCk7XG4gICAgY29uc3QgeSA9IE1hdGgubWluKC4uLmFsbFkpO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heCguLi5hbGxYKTtcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoLi4uYWxsWSk7XG5cbiAgICAvLyBVc2UgYSBwb2x5Z29uIHRvIGhpZGUgdGhlIG91dHNpZGUsIGJlY2F1c2UgcGlja09iamVjdHMoKVxuICAgIC8vIGRvZXMgbm90IHN1cHBvcnQgcG9seWdvbnNcbiAgICBjb25zdCBsYW5kUG9pbnRzUG9seSA9IHBvbHlnb24oY29vcmRpbmF0ZXMpO1xuICAgIGNvbnN0IGJpZ0J1ZmZlciA9IHR1cmZCdWZmZXIobGFuZFBvaW50c1BvbHksIEVYUEFOU0lPTl9LTSk7XG4gICAgbGV0IGJpZ1BvbHlnb247XG4gICAgdHJ5IHtcbiAgICAgIC8vIHR1cmZEaWZmZXJlbmNlIHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlIHBvbHlnb25cbiAgICAgIC8vIGludGVyc2VjdHMgd2l0aCBpdHNlbGYgKFRPRE86IGNoZWNrIGlmIHRydWUgaW4gYWxsIHZlcnNpb25zKVxuICAgICAgYmlnUG9seWdvbiA9IHR1cmZEaWZmZXJlbmNlKGJpZ0J1ZmZlciwgbGFuZFBvaW50c1BvbHkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGludmFsaWQgc2VsZWN0aW9uIHBvbHlnb25cbiAgICAgIGNvbnNvbGUubG9nKCd0dXJmRGlmZmVyZW5jZSgpIGVycm9yJywgZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uOiB7XG4gICAgICAgIGJpZ1BvbHlnb24sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYmxvY2tlcklkID0gYCR7dGhpcy5wcm9wcy5pZH0tJHtMQVlFUl9JRF9CTE9DS0VSfWA7XG5cbiAgICAvLyBIQUNLLCBmaW5kIGEgYmV0dGVyIHdheVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5jb250ZXh0LmRlY2sucGlja09iamVjdHMoe1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aDogbWF4WCAtIHgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIHksXG4gICAgICAgIGxheWVySWRzOiBbYmxvY2tlcklkLCAuLi5sYXllcklkc10sXG4gICAgICB9KTtcblxuICAgICAgb25TZWxlY3Qoe1xuICAgICAgICBwaWNraW5nSW5mb3M6IHBpY2tpbmdJbmZvcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubGF5ZXIuaWQgIT09IHRoaXMucHJvcHMuaWQpLFxuICAgICAgfSk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCB7IHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgbW9kZSA9IE1PREVfTUFQW3RoaXMucHJvcHMuc2VsZWN0aW9uVHlwZV0gfHwgVmlld01vZGU7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IE1PREVfQ09ORklHX01BUFt0aGlzLnByb3BzLnNlbGVjdGlvblR5cGVdO1xuXG4gICAgY29uc3QgaW5oZXJpdGVkUHJvcHMgPSB7fTtcbiAgICBQQVNTX1RIUk9VR0hfUFJPUFMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHNbcF0gIT09IHVuZGVmaW5lZCkgaW5oZXJpdGVkUHJvcHNbcF0gPSB0aGlzLnByb3BzW3BdO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbGF5ZXJzID0gW1xuICAgICAgbmV3IEVkaXRhYmxlR2VvSnNvbkxheWVyKFxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiBMQVlFUl9JRF9HRU9KU09OLFxuICAgICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgbW9kZUNvbmZpZyxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBbXSxcbiAgICAgICAgICBkYXRhOiBFTVBUWV9EQVRBLFxuICAgICAgICAgIG9uRWRpdDogKHsgdXBkYXRlZERhdGEsIGVkaXRUeXBlIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChlZGl0VHlwZSA9PT0gJ2FkZEZlYXR1cmUnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZXMgfSA9IHVwZGF0ZWREYXRhLmZlYXR1cmVzWzBdLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvblR5cGUgPT09IFNFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMoY29vcmRpbmF0ZXMpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uVHlwZSA9PT0gU0VMRUNUSU9OX1RZUEUuUE9MWUdPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFBvbHlnb25PYmplY3RzKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uaW5oZXJpdGVkUHJvcHMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF07XG5cbiAgICBpZiAocGVuZGluZ1BvbHlnb25TZWxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgYmlnUG9seWdvbiB9ID0gcGVuZGluZ1BvbHlnb25TZWxlY3Rpb247XG4gICAgICBsYXllcnMucHVzaChcbiAgICAgICAgbmV3IFBvbHlnb25MYXllcihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgIGlkOiBMQVlFUl9JRF9CTE9DS0VSLFxuICAgICAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICBzdHJva2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgICAgIGRhdGE6IFtiaWdQb2x5Z29uXSxcbiAgICAgICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gWzAsIDAsIDAsIDFdLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiAob2JqKSA9PiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICBzaG91bGRVcGRhdGVTdGF0ZSh7IGNoYW5nZUZsYWdzOiB7IHN0YXRlQ2hhbmdlZCwgcHJvcHNPckRhdGFDaGFuZ2VkIH0gfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHJldHVybiBzdGF0ZUNoYW5nZWQgfHwgcHJvcHNPckRhdGFDaGFuZ2VkO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/math.js b/modules/layers/dist-es6/math.js new file mode 100644 index 000000000..a3ba7f4e4 --- /dev/null +++ b/modules/layers/dist-es6/math.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDegree = toDegree; +exports.toRadian = toRadian; +exports.convertE7Array = convertE7Array; + +function toDegree(radian) { + return radian * 180 / Math.PI; +} + +function toRadian(angle) { + return angle * Math.PI / 180; +} +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ + + +function convertE7Array(array) { + var points = []; + + for (var i = 0; i < array.length; i += 2) { + var lat = array[i] * 1e-7; + var lng = array[i + 1] * 1e-7; + points.push([lng, lat]); + } + + return points; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRoLnRzIl0sIm5hbWVzIjpbInRvRGVncmVlIiwicmFkaWFuIiwiTWF0aCIsIlBJIiwidG9SYWRpYW4iLCJhbmdsZSIsImNvbnZlcnRFN0FycmF5IiwiYXJyYXkiLCJwb2ludHMiLCJpIiwibGVuZ3RoIiwibGF0IiwibG5nIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRU8sU0FBU0EsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEM7QUFDL0MsU0FBUUEsTUFBTSxHQUFHLEdBQVYsR0FBaUJDLElBQUksQ0FBQ0MsRUFBN0I7QUFDRDs7QUFFTSxTQUFTQyxRQUFULENBQWtCQyxLQUFsQixFQUF5QztBQUM5QyxTQUFRQSxLQUFLLEdBQUdILElBQUksQ0FBQ0MsRUFBZCxHQUFvQixHQUEzQjtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNHLGNBQVQsQ0FBd0JDLEtBQXhCLEVBQXFEO0FBQzFELE1BQU1DLE1BQU0sR0FBRyxFQUFmOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsS0FBSyxDQUFDRyxNQUExQixFQUFrQ0QsQ0FBQyxJQUFJLENBQXZDLEVBQTBDO0FBQ3hDLFFBQU1FLEdBQUcsR0FBR0osS0FBSyxDQUFDRSxDQUFELENBQUwsR0FBVyxJQUF2QjtBQUNBLFFBQU1HLEdBQUcsR0FBR0wsS0FBSyxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUFMLEdBQWUsSUFBM0I7QUFDQUQsSUFBQUEsTUFBTSxDQUFDSyxJQUFQLENBQVksQ0FBQ0QsR0FBRCxFQUFNRCxHQUFOLENBQVo7QUFDRDs7QUFDRCxTQUFPSCxNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9EZWdyZWUocmFkaWFuOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKHJhZGlhbiAqIDE4MCkgLyBNYXRoLlBJO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9SYWRpYW4oYW5nbGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBsYXRpdHVkZXMsIGxvbmdpdHVkZXMgaW4gRTcgZm9ybWF0IHRvIGEgbGlzdCBvZiBwb2ludHMgaW4gZGVncmVlcy5cbiAqXG4gKiBAcGFyYW0ge1tdfSBhcnJheTogQW4gRTcgYXJyYXkgW2xhdF9lNywgbG5nX2U3LCBsYXRfZTcsIGxuZ19lNywgLi4uXVxuICogQHJldHVybiB7W119IEFuIGFycmF5IG9mIHBvaW50cyBpbiBkZWdyZWVzXG4gKiAgICAgICAgICAgICAgWyBbbG5nX2RlZ3JlZXMsIGxhdF9kZWdyZWVzXSwgW2xuZ19kZWdyZWVzLCBsYXRfZGVncmVlc10sIC4uLl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRFN0FycmF5KGFycmF5OiBudW1iZXJbXSk6IFBvc2l0aW9uW10ge1xuICBjb25zdCBwb2ludHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IGxhdCA9IGFycmF5W2ldICogMWUtNztcbiAgICBjb25zdCBsbmcgPSBhcnJheVtpICsgMV0gKiAxZS03O1xuICAgIHBvaW50cy5wdXNoKFtsbmcsIGxhdF0pO1xuICB9XG4gIHJldHVybiBwb2ludHM7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/composite-mode-handler.js b/modules/layers/dist-es6/mode-handlers/composite-mode-handler.js new file mode 100644 index 000000000..7a85c3601 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/composite-mode-handler.js @@ -0,0 +1,160 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompositeModeHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var CompositeModeHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(CompositeModeHandler, _ModeHandler); + + var _super = _createSuper(CompositeModeHandler); + + function CompositeModeHandler(handlers) { + var _this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, CompositeModeHandler); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "handlers", void 0); + + _defineProperty(_assertThisInitialized(_this), "options", void 0); + + _this.handlers = handlers; + _this.options = options; + return _this; + } + + _createClass(CompositeModeHandler, [{ + key: "_coalesce", + value: function _coalesce(callback) { + var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var result; + + for (var i = 0; i < this.handlers.length; i++) { + result = callback(this.handlers[i]); + + if (resultEval ? resultEval(result) : result) { + break; + } + } + + return result; + } + }, { + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this.handlers.forEach(function (handler) { + return handler.setFeatureCollection(featureCollection); + }); + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + this.handlers.forEach(function (handler) { + return handler.setModeConfig(modeConfig); + }); + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + this.handlers.forEach(function (handler) { + return handler.setSelectedFeatureIndexes(indexes); + }); + } + }, { + key: "handleClick", + value: function handleClick(event) { + return this._coalesce(function (handler) { + return handler.handleClick(event); + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + return this._coalesce(function (handler) { + return handler.handlePointerMove(event); + }, function (result) { + return result && Boolean(result.editAction); + }); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + return this._coalesce(function (handler) { + return handler.handleStartDragging(event); + }); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + return this._coalesce(function (handler) { + return handler.handleStopDragging(event); + }); + } + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._coalesce(function (handler) { + return handler.getTentativeFeature(); + }); + } + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + // TODO: Combine the handles *BUT* make sure if none of the results have + // changed to return the same object so that "editHandles !== this.state.editHandles" + // in editable-geojson-layer works. + return this._coalesce(function (handler) { + return handler.getEditHandles(picks, groundCoords); + }, function (handles) { + return Array.isArray(handles) && handles.length > 0; + }); + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return this._coalesce(function (handler) { + return handler.getCursor({ + isDragging: isDragging + }); + }); + } + }]); + + return CompositeModeHandler; +}(_modeHandler.ModeHandler); + +exports.CompositeModeHandler = CompositeModeHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2NvbXBvc2l0ZS1tb2RlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZUhhbmRsZXIiLCJoYW5kbGVycyIsIm9wdGlvbnMiLCJjYWxsYmFjayIsInJlc3VsdEV2YWwiLCJyZXN1bHQiLCJpIiwibGVuZ3RoIiwiZmVhdHVyZUNvbGxlY3Rpb24iLCJmb3JFYWNoIiwiaGFuZGxlciIsInNldEZlYXR1cmVDb2xsZWN0aW9uIiwibW9kZUNvbmZpZyIsInNldE1vZGVDb25maWciLCJpbmRleGVzIiwic2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImV2ZW50IiwiX2NvYWxlc2NlIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsIkJvb2xlYW4iLCJlZGl0QWN0aW9uIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZVN0b3BEcmFnZ2luZyIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImdldEVkaXRIYW5kbGVzIiwiaGFuZGxlcyIsIkFycmF5IiwiaXNBcnJheSIsImlzRHJhZ2dpbmciLCJnZXRDdXJzb3IiLCJNb2RlSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLG9COzs7OztBQUlYLGdDQUFZQyxRQUFaLEVBQTZFO0FBQUE7O0FBQUEsUUFBbkNDLE9BQW1DLHVFQUFKLEVBQUk7O0FBQUE7O0FBQzNFOztBQUQyRTs7QUFBQTs7QUFFM0UsVUFBS0QsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxVQUFLQyxPQUFMLEdBQWVBLE9BQWY7QUFIMkU7QUFJNUU7Ozs7OEJBR0NDLFEsRUFFRztBQUFBLFVBREhDLFVBQ0csdUVBRG1ELElBQ25EO0FBQ0gsVUFBSUMsTUFBSjs7QUFFQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBS0wsUUFBTCxDQUFjTSxNQUFsQyxFQUEwQ0QsQ0FBQyxFQUEzQyxFQUErQztBQUM3Q0QsUUFBQUEsTUFBTSxHQUFHRixRQUFRLENBQUMsS0FBS0YsUUFBTCxDQUFjSyxDQUFkLENBQUQsQ0FBakI7O0FBQ0EsWUFBSUYsVUFBVSxHQUFHQSxVQUFVLENBQUNDLE1BQUQsQ0FBYixHQUF3QkEsTUFBdEMsRUFBOEM7QUFDNUM7QUFDRDtBQUNGOztBQUVELGFBQU9BLE1BQVA7QUFDRDs7O3lDQUVvQkcsaUIsRUFBNEM7QUFDL0QsV0FBS1AsUUFBTCxDQUFjUSxPQUFkLENBQXNCLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLG9CQUFSLENBQTZCSCxpQkFBN0IsQ0FBYjtBQUFBLE9BQXRCO0FBQ0Q7OztrQ0FFYUksVSxFQUF1QjtBQUNuQyxXQUFLWCxRQUFMLENBQWNRLE9BQWQsQ0FBc0IsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0csYUFBUixDQUFzQkQsVUFBdEIsQ0FBYjtBQUFBLE9BQXRCO0FBQ0Q7Ozs4Q0FFeUJFLE8sRUFBeUI7QUFDakQsV0FBS2IsUUFBTCxDQUFjUSxPQUFkLENBQXNCLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNLLHlCQUFSLENBQWtDRCxPQUFsQyxDQUFiO0FBQUEsT0FBdEI7QUFDRDs7O2dDQUVXRSxLLEVBQWtEO0FBQzVELGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNRLFdBQVIsQ0FBb0JGLEtBQXBCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7O3NDQUdDQSxLLEVBQ3NFO0FBQ3RFLGFBQU8sS0FBS0MsU0FBTCxDQUNMLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNTLGlCQUFSLENBQTBCSCxLQUExQixDQUFiO0FBQUEsT0FESyxFQUVMLFVBQUNYLE1BQUQ7QUFBQSxlQUFZQSxNQUFNLElBQUllLE9BQU8sQ0FBQ2YsTUFBTSxDQUFDZ0IsVUFBUixDQUE3QjtBQUFBLE9BRkssQ0FBUDtBQUlEOzs7d0NBRW1CTCxLLEVBQTBEO0FBQzVFLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNZLG1CQUFSLENBQTRCTixLQUE1QixDQUFiO0FBQUEsT0FBZixDQUFQO0FBQ0Q7Ozt1Q0FFa0JBLEssRUFBeUQ7QUFDMUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ1AsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ2Esa0JBQVIsQ0FBMkJQLEtBQTNCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzBDQUVpRDtBQUNoRCxhQUFPLEtBQUtDLFNBQUwsQ0FBZSxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDYyxtQkFBUixFQUFiO0FBQUEsT0FBZixDQUFQO0FBQ0Q7OzttQ0FFY0MsSyxFQUFvQ0MsWSxFQUF1QztBQUN4RjtBQUNBO0FBQ0E7QUFDQSxhQUFPLEtBQUtULFNBQUwsQ0FDTCxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDaUIsY0FBUixDQUF1QkYsS0FBdkIsRUFBOEJDLFlBQTlCLENBQWI7QUFBQSxPQURLLEVBRUwsVUFBQ0UsT0FBRDtBQUFBLGVBQWFDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixPQUFkLEtBQTBCQSxPQUFPLENBQUNyQixNQUFSLEdBQWlCLENBQXhEO0FBQUEsT0FGSyxDQUFQO0FBSUQ7OztvQ0FFMEQ7QUFBQSxVQUEvQ3dCLFVBQStDLFFBQS9DQSxVQUErQztBQUN6RCxhQUFPLEtBQUtkLFNBQUwsQ0FBZSxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDc0IsU0FBUixDQUFrQjtBQUFFRCxVQUFBQSxVQUFVLEVBQVZBO0FBQUYsU0FBbEIsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7O0VBM0V1Q0Usd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbn0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgTW9kZUhhbmRsZXIsIEVkaXRBY3Rpb24sIEVkaXRIYW5kbGUgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgaGFuZGxlcnM6IEFycmF5PE1vZGVIYW5kbGVyPjtcbiAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihoYW5kbGVyczogQXJyYXk8TW9kZUhhbmRsZXI+LCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaGFuZGxlcnMgPSBoYW5kbGVycztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogTW9kZUhhbmRsZXIpID0+IFQsXG4gICAgcmVzdWx0RXZhbDogKGFyZzA6IFQpID0+IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbFxuICApOiBUIHtcbiAgICBsZXQgcmVzdWx0OiBUO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLmhhbmRsZXJzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiBoYW5kbGVyLnNldEZlYXR1cmVDb2xsZWN0aW9uKGZlYXR1cmVDb2xsZWN0aW9uKSk7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlci5zZXRNb2RlQ29uZmlnKG1vZGVDb25maWcpKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpID0+IGhhbmRsZXIuc2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyhpbmRleGVzKSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCksXG4gICAgICAocmVzdWx0KSA9PiByZXN1bHQgJiYgQm9vbGVhbihyZXN1bHQuZWRpdEFjdGlvbilcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50KSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQpKTtcbiAgfVxuXG4gIGdldFRlbnRhdGl2ZUZlYXR1cmUoKTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5nZXRUZW50YXRpdmVGZWF0dXJlKCkpO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIC8vIFRPRE86IENvbWJpbmUgdGhlIGhhbmRsZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZWRpdEhhbmRsZXMgIT09IHRoaXMuc3RhdGUuZWRpdEhhbmRsZXNcIlxuICAgIC8vIGluIGVkaXRhYmxlLWdlb2pzb24tbGF5ZXIgd29ya3MuXG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKFxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3JkcyksXG4gICAgICAoaGFuZGxlcykgPT4gQXJyYXkuaXNBcnJheShoYW5kbGVzKSAmJiBoYW5kbGVzLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfSkpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-90degree-polygon-handler.js b/modules/layers/dist-es6/mode-handlers/draw-90degree-polygon-handler.js new file mode 100644 index 000000000..f1a274edd --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-90degree-polygon-handler.js @@ -0,0 +1,280 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Draw90DegreePolygonHandler = void 0; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var Draw90DegreePolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(Draw90DegreePolygonHandler, _ModeHandler); + + var _super = _createSuper(Draw90DegreePolygonHandler); + + function Draw90DegreePolygonHandler() { + _classCallCheck(this, Draw90DegreePolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(Draw90DegreePolygonHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var handles = _get(_getPrototypeOf(Draw90DegreePolygonHandler.prototype), "getEditHandles", this).call(this, picks, groundCoords); + + var tentativeFeature = this.getTentativeFeature(); + + if (tentativeFeature) { + handles = handles.concat((0, _modeHandler.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } else if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } + } + + return handles; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var tentativeFeature = this.getTentativeFeature(); + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + clickSequence[clickSequence.length - 1] = tentativeFeature.geometry.coordinates[0][clickSequence.length - 1]; + } else if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + clickSequence[clickSequence.length - 1] = tentativeFeature.geometry.coordinates[clickSequence.length - 1]; + } + + var p3; + + if (clickSequence.length === 1) { + p3 = groundCoords; + } else { + var p1 = clickSequence[clickSequence.length - 2]; + var p2 = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, groundCoords); + + var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1); + + p3 = _generatePointsParall2[0]; + } + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [p3]) + } + }); + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])] + } + }); + } + + return result; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(Draw90DegreePolygonHandler.prototype), "handleClick", this).call(this, event); + + var picks = event.picks; + var tentativeFeature = this.getTentativeFeature(); + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(picks); + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; + + if (clickedEditHandle && clickedEditHandle.featureIndex === -1 && (clickedEditHandle.positionIndexes[1] === 0 || clickedEditHandle.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + var polygonToAdd = { + type: 'Polygon', + coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0])) + }; + this.resetClickSequence(); + + this._setTentativeFeature(null); + + editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd); + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + groundCoords: event.groundCoords, + picks: [], + isDragging: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownGroundCoords: null, + sourceEvent: null + }; // @ts-ignore + + this.handlePointerMove(fakePointerMoveEvent); + return editAction; + } + }, { + key: "finalizedCoordinates", + value: function finalizedCoordinates(coords) { + // Remove the hovered position + var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])]; + var pt = this.getIntermediatePoint(_toConsumableArray(coords)); + + if (!pt) { + // if intermediate point with 90 degree not available + // try remove the last clicked point and get the intermediate point. + var tc = _toConsumableArray(coords); + + tc.splice(-3, 1); + pt = this.getIntermediatePoint(_toConsumableArray(tc)); + + if (pt) { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])]; + } + } else { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])]; + } + + return coordinates; + } + }, { + key: "getIntermediatePoint", + value: function getIntermediatePoint(coordinates) { + var pt; + + if (coordinates.length > 4) { + var _ref2 = _toConsumableArray(coordinates), + p1 = _ref2[0], + p2 = _ref2[1]; + + var angle1 = (0, _bearing["default"])(p1, p2); + var p3 = coordinates[coordinates.length - 3]; + var p4 = coordinates[coordinates.length - 4]; + var angle2 = (0, _bearing["default"])(p3, p4); + var angles = { + first: [], + second: [] + }; // calculate 3 right angle points for first and last points in lineString + + [1, 2, 3].forEach(function (factor) { + var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise + + angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1); + var newAngle2 = angle2 + factor * 90; + angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2); + }); + var distance = (0, _distance["default"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString + // If there is intersection point for any 2 lines, will be the 90 degree point. + + [0, 1, 2].forEach(function (indexFirst) { + var line1 = (0, _helpers.lineString)([p1, (0, _destination["default"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]); + [0, 1, 2].forEach(function (indexSecond) { + var line2 = (0, _helpers.lineString)([p3, (0, _destination["default"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]); + var fc = (0, _lineIntersect["default"])(line1, line2); + + if (fc && fc.features.length) { + // found the intersect point + pt = fc.features[0].geometry.coordinates; + } + }); + }); + } + + return pt; + } + }]); + + return Draw90DegreePolygonHandler; +}(_modeHandler.ModeHandler); + +exports.Draw90DegreePolygonHandler = Draw90DegreePolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctOTBkZWdyZWUtcG9seWdvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXc5MERlZ3JlZVBvbHlnb25IYW5kbGVyIiwicGlja3MiLCJncm91bmRDb29yZHMiLCJoYW5kbGVzIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjb25jYXQiLCJnZW9tZXRyeSIsInR5cGUiLCJzbGljZSIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImxlbmd0aCIsImNvb3JkaW5hdGVzIiwicDMiLCJwMSIsInAyIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJldmVudCIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9seWdvbiIsImZlYXR1cmVJbmRleCIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJmYWtlUG9pbnRlck1vdmVFdmVudCIsInNjcmVlbkNvb3JkcyIsImlzRHJhZ2dpbmciLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bkdyb3VuZENvb3JkcyIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsInB1c2giLCJuZXdBbmdsZTIiLCJkaXN0YW5jZSIsImluZGV4Rmlyc3QiLCJsaW5lMSIsImluZGV4U2Vjb25kIiwibGluZTIiLCJmYyIsImZl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Q0FDdkJ6QyxFQUR1QixFQUV2Qiw2QkFBWUEsRUFBWixFQUFnQnFDLFFBQWhCLEVBQTBCUixNQUFNLENBQUNFLE1BQVAsQ0FBY1MsV0FBZCxDQUExQixFQUFzRGxELFFBQXRELENBQStEUyxXQUZ4QyxDQUFYLENBQWQ7QUFJQSxnQkFBTTJDLEVBQUUsR0FBRywrQkFBY0gsS0FBZCxFQUFxQkUsS0FBckIsQ0FBWDs7QUFDQSxnQkFBSUMsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFFBQUgsQ0FBWTdDLE1BQXRCLEVBQThCO0FBQzVCO0FBQ0F3QixjQUFBQSxFQUFFLEdBQUdvQixFQUFFLENBQUNDLFFBQUgsQ0FBWSxDQUFaLEVBQWVyRCxRQUFmLENBQXdCUyxXQUE3QjtBQUNEO0FBQ0YsV0FWRDtBQVdELFNBaEJEO0FBaUJEOztBQUNELGFBQU91QixFQUFQO0FBQ0Q7Ozs7RUFuTDZDc0Isd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgbGluZUludGVyc2VjdCBmcm9tICdAdHVyZi9saW5lLWludGVyc2VjdCc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRBY3Rpb24sXG4gIEVkaXRIYW5kbGUsXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3OTBEZWdyZWVQb2x5Z29uSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIGxldCBoYW5kbGVzID0gc3VwZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3Jkcyk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnksIC0xKSk7XG4gICAgICAvLyBTbGljZSBvZmYgdGhlIGhhbmRsZXMgdGhhdCBhcmUgYXJlIG5leHQgdG8gdGhlIHBvaW50ZXJcbiAgICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlICYmIHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBleGlzdGluZyBoYW5kbGVcbiAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgfSBlbHNlIGlmICh0ZW50YXRpdmVGZWF0dXJlICYmIHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBleGlzdGluZyBoYW5kbGVcbiAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoe1xuICAgIGdyb3VuZENvb3JkcyxcbiAgfTogUG9pbnRlck1vdmVFdmVudCk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmdldFRlbnRhdGl2ZUZlYXR1cmUoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIGxldCBwMztcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHAzID0gZ3JvdW5kQ29vcmRzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwMSA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXTtcbiAgICAgIGNvbnN0IHAyID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgICAgW3AzXSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBncm91bmRDb29yZHMpO1xuICAgIH1cblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMpIHtcbiAgICAgIC8vIERyYXcgYSBMaW5lU3RyaW5nIGNvbm5lY3RpbmcgYWxsIHRoZSBjbGlja2VkIHBvaW50cyB3aXRoIHRoZSBob3ZlcmVkIHBvaW50XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIHAzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG5cbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4ID09PSAtMSAmJlxuICAgICAgICAoY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzWzFdID09PSAwIHx8XG4gICAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKG51bGwpO1xuICAgICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIGdyb3VuZENvb3JkczogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bkdyb3VuZENvb3JkczogbnVsbCxcbiAgICAgIHNvdXJjZUV2ZW50OiBudWxsLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQpO1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBmaW5hbGl6ZWRDb29yZGluYXRlcyhjb29yZHM6IFBvc2l0aW9uW10pIHtcbiAgICAvLyBSZW1vdmUgdGhlIGhvdmVyZWQgcG9zaXRpb25cbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMiksIGNvb3Jkc1swXV1dO1xuICAgIGxldCBwdCA9IHRoaXMuZ2V0SW50ZXJtZWRpYXRlUG9pbnQoWy4uLmNvb3Jkc10pO1xuICAgIGlmICghcHQpIHtcbiAgICAgIC8vIGlmIGludGVybWVkaWF0ZSBwb2ludCB3aXRoIDkwIGRlZ3JlZSBub3QgYXZhaWxhYmxlXG4gICAgICAvLyB0cnkgcmVtb3ZlIHRoZSBsYXN0IGNsaWNrZWQgcG9pbnQgYW5kIGdldCB0aGUgaW50ZXJtZWRpYXRlIHBvaW50LlxuICAgICAgY29uc3QgdGMgPSBbLi4uY29vcmRzXTtcbiAgICAgIHRjLnNwbGljZSgtMywgMSk7XG4gICAgICBwdCA9IHRoaXMuZ2V0SW50ZXJtZWRpYXRlUG9pbnQoWy4uLnRjXSk7XG4gICAgICBpZiAocHQpIHtcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMyksIHB0LCBjb29yZHNbMF1dXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMiksIHB0LCBjb29yZHNbMF1dXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG5cbiAgZ2V0SW50ZXJtZWRpYXRlUG9pbnQoY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10pIHtcbiAgICBsZXQgcHQ7XG4gICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA+IDQpIHtcbiAgICAgIGNvbnN0IFtwMSwgcDJdID0gWy4uLmNvb3JkaW5hdGVzXTtcbiAgICAgIGNvbnN0IGFuZ2xlMSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICAgIGNvbnN0IHAzID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gM107XG4gICAgICBjb25zdCBwNCA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDRdO1xuICAgICAgY29uc3QgYW5nbGUyID0gYmVhcmluZyhwMywgcDQpO1xuXG4gICAgICBjb25zdCBhbmdsZXMgPSB7IGZpcnN0OiBbXSwgc2Vjb25kOiBbXSB9O1xuICAgICAgLy8gY2FsY3VsYXRlIDMgcmlnaHQgYW5nbGUgcG9pbnRzIGZvciBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgWzEsIDIsIDNdLmZvckVhY2goKGZhY3RvcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdBbmdsZTEgPSBhbmdsZTEgKyBmYWN0b3IgKiA5MDtcbiAgICAgICAgLy8gY29udmVydCBhbmdsZXMgdG8gMCB0byAtMTgwIGZvciBhbnRpLWNsb2NrIGFuZCAwIHRvIDE4MCBmb3IgY2xvY2sgd2lzZVxuICAgICAgICBhbmdsZXMuZmlyc3QucHVzaChuZXdBbmdsZTEgPiAxODAgPyBuZXdBbmdsZTEgLSAzNjAgOiBuZXdBbmdsZTEpO1xuICAgICAgICBjb25zdCBuZXdBbmdsZTIgPSBhbmdsZTIgKyBmYWN0b3IgKiA5MDtcbiAgICAgICAgYW5nbGVzLnNlY29uZC5wdXNoKG5ld0FuZ2xlMiA+IDE4MCA/IG5ld0FuZ2xlMiAtIDM2MCA6IG5ld0FuZ2xlMik7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGlzdGFuY2UgPSB0dXJmRGlzdGFuY2UocG9pbnQocDEpLCBwb2ludChwMykpO1xuICAgICAgLy8gRHJhdyBpbWFnaW5hcnkgcmlnaHQgYW5nbGUgbGluZXMgZm9yIGJvdGggZmlyc3QgYW5kIGxhc3QgcG9pbnRzIGluIGxpbmVTdHJpbmdcbiAgICAgIC8vIElmIHRoZXJlIGlzIGludGVyc2VjdGlvbiBwb2ludCBmb3IgYW55IDIgbGluZXMsIHdpbGwgYmUgdGhlIDkwIGRlZ3JlZSBwb2ludC5cbiAgICAgIFswLCAxLCAyXS5mb3JFYWNoKChpbmRleEZpcnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUxID0gbGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSBsaW5lU3RyaW5nKFtcbiAgICAgICAgICAgIHAzLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ocDMsIGRpc3RhbmNlLCBhbmdsZXMuc2Vjb25kW2luZGV4U2Vjb25kXSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgY29uc3QgZmMgPSBsaW5lSW50ZXJzZWN0KGxpbmUxLCBsaW5lMik7XG4gICAgICAgICAgaWYgKGZjICYmIGZjLmZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gZm91bmQgdGhlIGludGVyc2VjdCBwb2ludFxuICAgICAgICAgICAgcHQgPSBmYy5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-circle-by-bounding-box-handler.js b/modules/layers/dist-es6/mode-handlers/draw-circle-by-bounding-box-handler.js new file mode 100644 index 000000000..e68a167b1 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-circle-by-bounding-box-handler.js @@ -0,0 +1,94 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleByBoundingBoxHandler = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _modeHandler = require("./mode-handler"); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawCircleByBoundingBoxHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawCircleByBoundingBoxHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawCircleByBoundingBoxHandler); + + function DrawCircleByBoundingBoxHandler() { + _classCallCheck(this, DrawCircleByBoundingBoxHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleByBoundingBoxHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var modeConfig = this.getModeConfig() || {}; // Default turf value for circle is 64 + + var _modeConfig$steps = modeConfig.steps, + steps = _modeConfig$steps === void 0 ? 64 : _modeConfig$steps; + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var firstClickedPoint = clickSequence[0]; + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(firstClickedPoint, event.groundCoords); + var radius = Math.max((0, _distance["default"])(firstClickedPoint, centerCoordinates), 0.001); + + this._setTentativeFeature((0, _circle["default"])(centerCoordinates, radius, options)); + + return result; + } + }]); + + return DrawCircleByBoundingBoxHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawCircleByBoundingBoxHandler = DrawCircleByBoundingBoxHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctY2lyY2xlLWJ5LWJvdW5kaW5nLWJveC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdDaXJjbGVCeUJvdW5kaW5nQm94SGFuZGxlciIsImV2ZW50IiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGVuZ3RoIiwibW9kZUNvbmZpZyIsImdldE1vZGVDb25maWciLCJzdGVwcyIsIm9wdGlvbnMiLCJjb25zb2xlIiwid2FybiIsImZpcnN0Q2xpY2tlZFBvaW50IiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJncm91bmRDb29yZHMiLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsOEI7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sVUFBVSxHQUFHLEtBQUtDLGFBQUwsTUFBd0IsRUFBM0MsQ0FUc0UsQ0FVdEU7O0FBVnNFLDhCQVcvQ0QsVUFYK0MsQ0FXOURFLEtBWDhEO0FBQUEsVUFXOURBLEtBWDhELGtDQVd0RCxFQVhzRDtBQVl0RSxVQUFNQyxPQUFPLEdBQUc7QUFBRUQsUUFBQUEsS0FBSyxFQUFMQTtBQUFGLE9BQWhCOztBQUVBLFVBQUlBLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYkUsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLHlDQURhLENBQ3lDOztBQUN0REYsUUFBQUEsT0FBTyxDQUFDRCxLQUFSLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBTUksaUJBQWlCLEdBQUdULGFBQWEsQ0FBQyxDQUFELENBQXZDO0FBQ0EsVUFBTVUsaUJBQWlCLEdBQUcsMENBQXdCRCxpQkFBeEIsRUFBMkNiLEtBQUssQ0FBQ2UsWUFBakQsQ0FBMUI7QUFDQSxVQUFNQyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTTCxpQkFBVCxFQUE0QkMsaUJBQTVCLENBQVQsRUFBeUQsS0FBekQsQ0FBZjs7QUFDQSxXQUFLSyxvQkFBTCxDQUEwQix3QkFBT0wsaUJBQVAsRUFBMEJFLE1BQTFCLEVBQWtDTixPQUFsQyxDQUExQjs7QUFFQSxhQUFPVCxNQUFQO0FBQ0Q7Ozs7RUE1QmlEbUIsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuaW1wb3J0IHsgVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciB9IGZyb20gJy4vdHdvLWNsaWNrLXBvbHlnb24taGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3Q2lyY2xlQnlCb3VuZGluZ0JveEhhbmRsZXIgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIHtcbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuZ2V0TW9kZUNvbmZpZygpIHx8IHt9O1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0Q2xpY2tlZFBvaW50ID0gY2xpY2tTZXF1ZW5jZVswXTtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGZpcnN0Q2xpY2tlZFBvaW50LCBldmVudC5ncm91bmRDb29yZHMpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGZpcnN0Q2xpY2tlZFBvaW50LCBjZW50ZXJDb29yZGluYXRlcyksIDAuMDAxKTtcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-circle-from-center-handler.js b/modules/layers/dist-es6/mode-handlers/draw-circle-from-center-handler.js new file mode 100644 index 000000000..03d3034ab --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-circle-from-center-handler.js @@ -0,0 +1,91 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleFromCenterHandler = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawCircleFromCenterHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawCircleFromCenterHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawCircleFromCenterHandler); + + function DrawCircleFromCenterHandler() { + _classCallCheck(this, DrawCircleFromCenterHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleFromCenterHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var modeConfig = this.getModeConfig() || {}; // Default turf value for circle is 64 + + var _modeConfig$steps = modeConfig.steps, + steps = _modeConfig$steps === void 0 ? 64 : _modeConfig$steps; + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var centerCoordinates = clickSequence[0]; + var radius = Math.max((0, _distance["default"])(centerCoordinates, event.groundCoords), 0.001); + + this._setTentativeFeature((0, _circle["default"])(centerCoordinates, radius, options)); + + return result; + } + }]); + + return DrawCircleFromCenterHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawCircleFromCenterHandler = DrawCircleFromCenterHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiRHJhd0NpcmNsZUZyb21DZW50ZXJIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJtb2RlQ29uZmlnIiwiZ2V0TW9kZUNvbmZpZyIsInN0ZXBzIiwib3B0aW9ucyIsImNvbnNvbGUiLCJ3YXJuIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsMkI7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sVUFBVSxHQUFHLEtBQUtDLGFBQUwsTUFBd0IsRUFBM0MsQ0FUc0UsQ0FVdEU7O0FBVnNFLDhCQVcvQ0QsVUFYK0MsQ0FXOURFLEtBWDhEO0FBQUEsVUFXOURBLEtBWDhELGtDQVd0RCxFQVhzRDtBQVl0RSxVQUFNQyxPQUFPLEdBQUc7QUFBRUQsUUFBQUEsS0FBSyxFQUFMQTtBQUFGLE9BQWhCOztBQUVBLFVBQUlBLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYkUsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLHlDQURhLENBQ3lDOztBQUN0REYsUUFBQUEsT0FBTyxDQUFDRCxLQUFSLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBTUksaUJBQWlCLEdBQUdULGFBQWEsQ0FBQyxDQUFELENBQXZDO0FBQ0EsVUFBTVUsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEJiLEtBQUssQ0FBQ2lCLFlBQWxDLENBQVQsRUFBMEQsS0FBMUQsQ0FBZjs7QUFDQSxXQUFLQyxvQkFBTCxDQUEwQix3QkFBT0wsaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUExQjs7QUFFQSxhQUFPVCxNQUFQO0FBQ0Q7Ozs7RUEzQjhDa0IsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdDaXJjbGVGcm9tQ2VudGVySGFuZGxlciBleHRlbmRzIFR3b0NsaWNrUG9seWdvbkhhbmRsZXIge1xuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvIHlldFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCkgfHwge307XG4gICAgLy8gRGVmYXVsdCB0dXJmIHZhbHVlIGZvciBjaXJjbGUgaXMgNjRcbiAgICBjb25zdCB7IHN0ZXBzID0gNjQgfSA9IG1vZGVDb25maWc7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgc3RlcHMgfTtcblxuICAgIGlmIChzdGVwcyA8IDQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTWluaW11bSBzdGVwcyB0byBkcmF3IGEgY2lyY2xlIGlzIDQgYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgb3B0aW9ucy5zdGVwcyA9IDQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyQ29vcmRpbmF0ZXMgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNlbnRlckNvb3JkaW5hdGVzLCBldmVudC5ncm91bmRDb29yZHMpLCAwLjAwMSk7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShjaXJjbGUoY2VudGVyQ29vcmRpbmF0ZXMsIHJhZGl1cywgb3B0aW9ucykpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-ellipse-by-bounding-box-handler.js b/modules/layers/dist-es6/mode-handlers/draw-ellipse-by-bounding-box-handler.js new file mode 100644 index 000000000..3f801341a --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-ellipse-by-bounding-box-handler.js @@ -0,0 +1,91 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseByBoundingBoxHandler = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawEllipseByBoundingBoxHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawEllipseByBoundingBoxHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawEllipseByBoundingBoxHandler); + + function DrawEllipseByBoundingBoxHandler() { + _classCallCheck(this, DrawEllipseByBoundingBoxHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseByBoundingBoxHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var corner1 = clickSequence[0]; + var corner2 = event.groundCoords; + var minX = Math.min(corner1[0], corner2[0]); + var minY = Math.min(corner1[1], corner2[1]); + var maxX = Math.max(corner1[0], corner2[0]); + var maxY = Math.max(corner1[1], corner2[1]); + var polygonPoints = (0, _bboxPolygon["default"])([minX, minY, maxX, maxY]).geometry.coordinates[0]; + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(corner1, corner2); + var xSemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore + + this._setTentativeFeature((0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis)); + + return result; + } + }]); + + return DrawEllipseByBoundingBoxHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawEllipseByBoundingBoxHandler = DrawEllipseByBoundingBoxHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJjb3JuZXIxIiwiY29ybmVyMiIsImdyb3VuZENvb3JkcyIsIm1pblgiLCJNYXRoIiwibWluIiwibWluWSIsIm1heFgiLCJtYXgiLCJtYXhZIiwicG9seWdvblBvaW50cyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJjZW50ZXJDb29yZGluYXRlcyIsInhTZW1pQXhpcyIsInlTZW1pQXhpcyIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwiVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLCtCOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLE9BQU8sR0FBR0gsYUFBYSxDQUFDLENBQUQsQ0FBN0I7QUFDQSxVQUFNSSxPQUFPLEdBQUdSLEtBQUssQ0FBQ1MsWUFBdEI7QUFFQSxVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxPQUFPLENBQUMsQ0FBRCxDQUFoQixFQUFxQkMsT0FBTyxDQUFDLENBQUQsQ0FBNUIsQ0FBYjtBQUNBLFVBQU1LLElBQUksR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVNMLE9BQU8sQ0FBQyxDQUFELENBQWhCLEVBQXFCQyxPQUFPLENBQUMsQ0FBRCxDQUE1QixDQUFiO0FBQ0EsVUFBTU0sSUFBSSxHQUFHSCxJQUFJLENBQUNJLEdBQUwsQ0FBU1IsT0FBTyxDQUFDLENBQUQsQ0FBaEIsRUFBcUJDLE9BQU8sQ0FBQyxDQUFELENBQTVCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixPQUFPLENBQUMsQ0FBRCxDQUFoQixFQUFxQkMsT0FBTyxDQUFDLENBQUQsQ0FBNUIsQ0FBYjtBQUVBLFVBQU1TLGFBQWEsR0FBRyw2QkFBWSxDQUFDUCxJQUFELEVBQU9HLElBQVAsRUFBYUMsSUFBYixFQUFtQkUsSUFBbkIsQ0FBWixFQUFzQ0UsUUFBdEMsQ0FBK0NDLFdBQS9DLENBQTJELENBQTNELENBQXRCO0FBQ0EsVUFBTUMsaUJBQWlCLEdBQUcsMENBQXdCYixPQUF4QixFQUFpQ0MsT0FBakMsQ0FBMUI7QUFFQSxVQUFNYSxTQUFTLEdBQUdWLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCO0FBQ0EsVUFBTUssU0FBUyxHQUFHWCxJQUFJLENBQUNJLEdBQUwsQ0FBUywwQkFBUyxvQkFBTUUsYUFBYSxDQUFDLENBQUQsQ0FBbkIsQ0FBVCxFQUFrQyxvQkFBTUEsYUFBYSxDQUFDLENBQUQsQ0FBbkIsQ0FBbEMsQ0FBVCxFQUFxRSxLQUFyRSxDQUFsQixDQXJCc0UsQ0FzQnRFOztBQUNBLFdBQUtNLG9CQUFMLENBQTBCLHlCQUFRSCxpQkFBUixFQUEyQkMsU0FBM0IsRUFBc0NDLFNBQXRDLENBQTFCOztBQUVBLGFBQU9yQixNQUFQO0FBQ0Q7Ozs7RUE3QmtEdUIsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCBkaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgZWxsaXBzZSBmcm9tICdAdHVyZi9lbGxpcHNlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveEhhbmRsZXIgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIHtcbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29ybmVyMSA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgY29uc3QgY29ybmVyMiA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbihjb3JuZXIxWzBdLCBjb3JuZXIyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29ybmVyMVsxXSwgY29ybmVyMlsxXSk7XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KGNvcm5lcjFbMF0sIGNvcm5lcjJbMF0pO1xuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChjb3JuZXIxWzFdLCBjb3JuZXIyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29ybmVyMSwgY29ybmVyMik7XG5cbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShwb2ludChwb2x5Z29uUG9pbnRzWzBdKSwgcG9pbnQocG9seWdvblBvaW50c1sxXSkpLCAwLjAwMSk7XG4gICAgY29uc3QgeVNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbM10pKSwgMC4wMDEpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGVsbGlwc2UoY2VudGVyQ29vcmRpbmF0ZXMsIHhTZW1pQXhpcywgeVNlbWlBeGlzKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-ellipse-using-three-points-handler.js b/modules/layers/dist-es6/mode-handlers/draw-ellipse-using-three-points-handler.js new file mode 100644 index 000000000..93abfc429 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-ellipse-using-three-points-handler.js @@ -0,0 +1,115 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseUsingThreePointsHandler = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +var _threeClickPolygonHandler = require("./three-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawEllipseUsingThreePointsHandler = /*#__PURE__*/function (_ThreeClickPolygonHan) { + _inherits(DrawEllipseUsingThreePointsHandler, _ThreeClickPolygonHan); + + var _super = _createSuper(DrawEllipseUsingThreePointsHandler); + + function DrawEllipseUsingThreePointsHandler() { + _classCallCheck(this, DrawEllipseUsingThreePointsHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseUsingThreePointsHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var groundCoords = event.groundCoords; + + if (clickSequence.length === 1) { + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], groundCoords] + } + }); + } else if (clickSequence.length === 2) { + var _clickSequence = _slicedToArray(clickSequence, 2), + p1 = _clickSequence[0], + p2 = _clickSequence[1]; + + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(p1, p2); + var xSemiAxis = Math.max((0, _distance["default"])(centerCoordinates, (0, _helpers.point)(groundCoords)), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])(p1, p2), 0.001) / 2; + var options = { + angle: (0, _bearing["default"])(p1, p2) + }; // @ts-ignore + + this._setTentativeFeature((0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis, options)); + } + + return result; + } + }]); + + return DrawEllipseUsingThreePointsHandler; +}(_threeClickPolygonHandler.ThreeClickPolygonHandler); + +exports.DrawEllipseUsingThreePointsHandler = DrawEllipseUsingThreePointsHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctZWxsaXBzZS11c2luZy10aHJlZS1wb2ludHMtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJncm91bmRDb29yZHMiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsInR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicDEiLCJwMiIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwiTWF0aCIsIm1heCIsInlTZW1pQXhpcyIsIm9wdGlvbnMiLCJhbmdsZSIsIlRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLGtDOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLFlBQVksR0FBR1AsS0FBSyxDQUFDTyxZQUEzQjs7QUFFQSxVQUFJSCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsYUFBS0Usb0JBQUwsQ0FBMEI7QUFDeEJDLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JELFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJFLFlBQUFBLFdBQVcsRUFBRSxDQUFDUCxhQUFhLENBQUMsQ0FBRCxDQUFkLEVBQW1CRyxZQUFuQjtBQUZMO0FBRmMsU0FBMUI7QUFPRCxPQVJELE1BUU8sSUFBSUgsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQUEsNENBQ3BCRixhQURvQjtBQUFBLFlBQzlCUSxFQUQ4QjtBQUFBLFlBQzFCQyxFQUQwQjs7QUFHckMsWUFBTUMsaUJBQWlCLEdBQUcsMENBQXdCRixFQUF4QixFQUE0QkMsRUFBNUIsQ0FBMUI7QUFDQSxZQUFNRSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTSCxpQkFBVCxFQUE0QixvQkFBTVAsWUFBTixDQUE1QixDQUFULEVBQTJELEtBQTNELENBQWxCO0FBQ0EsWUFBTVcsU0FBUyxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0wsRUFBVCxFQUFhQyxFQUFiLENBQVQsRUFBMkIsS0FBM0IsSUFBb0MsQ0FBdEQ7QUFDQSxZQUFNTSxPQUFPLEdBQUc7QUFBRUMsVUFBQUEsS0FBSyxFQUFFLHlCQUFRUixFQUFSLEVBQVlDLEVBQVo7QUFBVCxTQUFoQixDQU5xQyxDQU9yQzs7QUFDQSxhQUFLTCxvQkFBTCxDQUEwQix5QkFBUU0saUJBQVIsRUFBMkJDLFNBQTNCLEVBQXNDRyxTQUF0QyxFQUFpREMsT0FBakQsQ0FBMUI7QUFDRDs7QUFFRCxhQUFPbEIsTUFBUDtBQUNEOzs7O0VBbENxRG9CLGtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzSGFuZGxlciBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciB7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VuZENvb3JkcyA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtjbGlja1NlcXVlbmNlWzBdLCBncm91bmRDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBjbGlja1NlcXVlbmNlO1xuXG4gICAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKHAxLCBwMik7XG4gICAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoZ3JvdW5kQ29vcmRzKSksIDAuMDAxKTtcbiAgICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHAxLCBwMiksIDAuMDAxKSAvIDI7XG4gICAgICBjb25zdCBvcHRpb25zID0geyBhbmdsZTogYmVhcmluZyhwMSwgcDIpIH07XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGVsbGlwc2UoY2VudGVyQ29vcmRpbmF0ZXMsIHhTZW1pQXhpcywgeVNlbWlBeGlzLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-line-string-handler.js b/modules/layers/dist-es6/mode-handlers/draw-line-string-handler.js new file mode 100644 index 000000000..9b6c6f5c9 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-line-string-handler.js @@ -0,0 +1,146 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawLineStringHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawLineStringHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawLineStringHandler, _ModeHandler); + + var _super = _createSuper(DrawLineStringHandler); + + function DrawLineStringHandler() { + _classCallCheck(this, DrawLineStringHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawLineStringHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(DrawLineStringHandler.prototype), "handleClick", this).call(this, event); + + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var selectedGeometry = this.getSelectedGeometry(); + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (selectedFeatureIndexes.length > 1 || selectedGeometry && selectedGeometry.type !== 'LineString') { + console.warn("drawLineString mode only supported for single LineString selection"); // eslint-disable-line + + this.resetClickSequence(); + return null; + } + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + // Extend the LineString + var lineString = selectedGeometry; + var positionIndexes = [lineString.coordinates.length]; + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.drawAtFront) { + positionIndexes = [0]; + } + + var featureIndex = selectedFeatureIndexes[0]; + var updatedData = this.getImmutableFeatureCollection().addPosition(featureIndex, positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'addPosition', + featureIndexes: [featureIndex], + editContext: { + positionIndexes: positionIndexes, + position: event.groundCoords + } + }; + this.resetClickSequence(); + } else if (clickSequence.length === 2 && tentativeFeature) { + // Add a new LineString + var geometry = tentativeFeature.geometry; + editAction = this.getAddFeatureAction(geometry); + this.resetClickSequence(); + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + var groundCoords = event.groundCoords; + var startPosition = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var selectedGeometry = this.getSelectedGeometry(); + + if (selectedFeatureIndexes.length > 1 || selectedGeometry && selectedGeometry.type !== 'LineString') { + // unsupported + return result; + } + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + // Draw an extension line starting from one end of the selected LineString + startPosition = selectedGeometry.coordinates[selectedGeometry.coordinates.length - 1]; + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.drawAtFront) { + startPosition = selectedGeometry.coordinates[0]; + } + } else if (clickSequence.length === 1) { + startPosition = clickSequence[0]; + } + + if (startPosition) { + this._setTentativeFeature({ + type: 'Feature', + properties: {}, + geometry: { + type: 'LineString', + coordinates: [startPosition, groundCoords] + } + }); + } + + return result; + } + }]); + + return DrawLineStringHandler; +}(_modeHandler.ModeHandler); + +exports.DrawLineStringHandler = DrawLineStringHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctbGluZS1zdHJpbmctaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3TGluZVN0cmluZ0hhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInR5cGUiLCJjb25zb2xlIiwid2FybiIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImxpbmVTdHJpbmciLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsIm1vZGVDb25maWciLCJnZXRNb2RlQ29uZmlnIiwiZHJhd0F0RnJvbnQiLCJmZWF0dXJlSW5kZXgiLCJ1cGRhdGVkRGF0YSIsImdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiYWRkUG9zaXRpb24iLCJncm91bmRDb29yZHMiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImZlYXR1cmVJbmRleGVzIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsImdlb21ldHJ5IiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsInJlc3VsdCIsImNhbmNlbE1hcFBhbiIsInN0YXJ0UG9zaXRpb24iLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsInByb3BlcnRpZXMiLCJNb2RlSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEscUI7Ozs7Ozs7Ozs7Ozs7Z0NBQ0NDLEssRUFBa0Q7QUFDNUQsNkZBQWtCQSxLQUFsQjs7QUFFQSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUcsS0FBS0MseUJBQUws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QUVBLFlBQU1RLFVBQVUsR0FBRyxLQUFLQyxhQUFMLEVBQW5COztBQUNBLFlBQUlELFVBQVUsSUFBSUEsVUFBVSxDQUFDRSxXQUE3QixFQUEwQztBQUN4Q2UsVUFBQUEsYUFBYSxHQUFHL0IsZ0JBQWdCLENBQUNhLFdBQWpCLENBQTZCLENBQTdCLENBQWhCO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSVQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQ3JDeUIsUUFBQUEsYUFBYSxHQUFHM0IsYUFBYSxDQUFDLENBQUQsQ0FBN0I7QUFDRDs7QUFFRCxVQUFJMkIsYUFBSixFQUFtQjtBQUNqQixhQUFLQyxvQkFBTCxDQUEwQjtBQUN4QnpCLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QjBCLFVBQUFBLFVBQVUsRUFBRSxFQUZZO0FBR3hCTixVQUFBQSxRQUFRLEVBQUU7QUFDUnBCLFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJNLFlBQUFBLFdBQVcsRUFBRSxDQUFDa0IsYUFBRCxFQUFnQlYsWUFBaEI7QUFGTDtBQUhjLFNBQTFCO0FBUUQ7O0FBRUQsYUFBT1EsTUFBUDtBQUNEOzs7O0VBcEd3Q0ssd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3TGluZVN0cmluZ0hhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHN1cGVyLmhhbmRsZUNsaWNrKGV2ZW50KTtcblxuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkoKTtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcy5sZW5ndGggPiAxIHx8XG4gICAgICAoc2VsZWN0ZWRHZW9tZXRyeSAmJiBzZWxlY3RlZEdlb21ldHJ5LnR5cGUgIT09ICdMaW5lU3RyaW5nJylcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihgZHJhd0xpbmVTdHJpbmcgbW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRHZW9tZXRyeSAmJiBzZWxlY3RlZEdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgLy8gRXh0ZW5kIHRoZSBMaW5lU3RyaW5nXG4gICAgICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0gc2VsZWN0ZWRHZW9tZXRyeTtcblxuICAgICAgbGV0IHBvc2l0aW9uSW5kZXhlcyA9IFtsaW5lU3RyaW5nLmNvb3JkaW5hdGVzLmxlbmd0aF07XG5cbiAgICAgIGNvbnN0IG1vZGVDb25maWcgPSB0aGlzLmdldE1vZGVDb25maWcoKTtcbiAgICAgIGlmIChtb2RlQ29uZmlnICYmIG1vZGVDb25maWcuZHJhd0F0RnJvbnQpIHtcbiAgICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgICAgfVxuICAgICAgY29uc3QgZmVhdHVyZUluZGV4ID0gc2VsZWN0ZWRGZWF0dXJlSW5kZXhlc1swXTtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAyICYmIHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIC8vIEFkZCBhIG5ldyBMaW5lU3RyaW5nXG4gICAgICBjb25zdCBnZW9tZXRyeTogYW55ID0gdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeTtcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnkpO1xuXG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgIGNvbnN0IGdyb3VuZENvb3JkcyA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCA+IDEgfHxcbiAgICAgIChzZWxlY3RlZEdlb21ldHJ5ICYmIHNlbGVjdGVkR2VvbWV0cnkudHlwZSAhPT0gJ0xpbmVTdHJpbmcnKVxuICAgICkge1xuICAgICAgLy8gdW5zdXBwb3J0ZWRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIC8vIERyYXcgYW4gZXh0ZW5zaW9uIGxpbmUgc3RhcnRpbmcgZnJvbSBvbmUgZW5kIG9mIHRoZSBzZWxlY3RlZCBMaW5lU3RyaW5nXG4gICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0ZWRHZW9tZXRyeS5jb29yZGluYXRlc1tzZWxlY3RlZEdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgICBpZiAobW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmRyYXdBdEZyb250KSB7XG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3RlZEdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0YXJ0UG9zaXRpb24gPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBvc2l0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBncm91bmRDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-point-handler.js b/modules/layers/dist-es6/mode-handlers/draw-point-handler.js new file mode 100644 index 000000000..33910fc72 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-point-handler.js @@ -0,0 +1,61 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPointHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawPointHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawPointHandler, _ModeHandler); + + var _super = _createSuper(DrawPointHandler); + + function DrawPointHandler() { + _classCallCheck(this, DrawPointHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawPointHandler, [{ + key: "handleClick", + value: function handleClick(_ref) { + var groundCoords = _ref.groundCoords; + var geometry = { + type: 'Point', + coordinates: groundCoords + }; // @ts-ignore + + return this.getAddFeatureAction(geometry); + } + }]); + + return DrawPointHandler; +}(_modeHandler.ModeHandler); + +exports.DrawPointHandler = DrawPointHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcG9pbnQtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3UG9pbnRIYW5kbGVyIiwiZ3JvdW5kQ29vcmRzIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsZ0I7Ozs7Ozs7Ozs7Ozs7c0NBQzhEO0FBQUEsVUFBM0RDLFlBQTJELFFBQTNEQSxZQUEyRDtBQUN2RSxVQUFNQyxRQUFRLEdBQUc7QUFDZkMsUUFBQUEsSUFBSSxFQUFFLE9BRFM7QUFFZkMsUUFBQUEsV0FBVyxFQUFFSDtBQUZFLE9BQWpCLENBRHVFLENBS3ZFOztBQUNBLGFBQU8sS0FBS0ksbUJBQUwsQ0FBeUJILFFBQXpCLENBQVA7QUFDRDs7OztFQVJtQ0ksd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayh7IGdyb3VuZENvb3JkcyB9OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdlb21ldHJ5ID0ge1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIGNvb3JkaW5hdGVzOiBncm91bmRDb29yZHMsXG4gICAgfTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihnZW9tZXRyeSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-polygon-handler.js b/modules/layers/dist-es6/mode-handlers/draw-polygon-handler.js new file mode 100644 index 000000000..58f4cec62 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-polygon-handler.js @@ -0,0 +1,172 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawPolygonHandler, _ModeHandler); + + var _super = _createSuper(DrawPolygonHandler); + + function DrawPolygonHandler() { + _classCallCheck(this, DrawPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawPolygonHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var handles = _get(_getPrototypeOf(DrawPolygonHandler.prototype), "getEditHandles", this).call(this, picks, groundCoords); + + if (this._tentativeFeature) { + handles = handles.concat((0, _modeHandler.getEditHandlesForGeometry)(this._tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + if (this._tentativeFeature && this._tentativeFeature.geometry.type === 'LineString') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } else if (this._tentativeFeature && this._tentativeFeature.geometry.type === 'Polygon') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } + } + + return handles; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(DrawPolygonHandler.prototype), "handleClick", this).call(this, event); + + var picks = event.picks; + var tentativeFeature = this.getTentativeFeature(); + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(picks); + + if (clickedEditHandle) { + // User clicked an edit handle. + // Remove it from the click sequence, so it isn't added as a new point. + var clickSequence = this.getClickSequence(); + clickSequence.splice(clickSequence.length - 1, 1); + } + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; + + if (clickedEditHandle && clickedEditHandle.featureIndex === -1 && (clickedEditHandle.positionIndexes[1] === 0 || clickedEditHandle.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + // Remove the hovered position + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(polygon.coordinates[0].slice(0, -2)), [polygon.coordinates[0][0]])] + }; + this.resetClickSequence(); + + this._setTentativeFeature(null); + + editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd); + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + groundCoords: event.groundCoords, + picks: [], + isDragging: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownGroundCoords: null, + sourceEvent: null + }; // @ts-ignore + + this.handlePointerMove(fakePointerMoveEvent); + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [groundCoords]) + } + }); + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [groundCoords, clickSequence[0]])] + } + }); + } + + return result; + } + }]); + + return DrawPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.DrawPolygonHandler = DrawPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcG9seWdvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2x5Z29uSGFuZGxlciIsInBpY2tzIiwiZ3JvdW5kQ29vcmRzIiwiaGFuZGxlcyIsIl90ZW50YXRpdmVGZWF0dXJlIiwiY29uY2F0IiwiZ2VvbWV0cnkiLCJ0eXBlIiwic2xpY2UiLCJldmVudCIsInRlbnRhdGl2ZUZlYXR1cmUiLCJnZXRUZW50YXRpdmVGZWF0dXJlIiwiZWRpdEFjdGlvbiIsImNsaWNrZWRFZGl0SGFuZGxlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJzcGxpY2UiLCJsZW5ndGgiLCJwb2x5Z29uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJpc0RyYWdnaW5nIiwicG9pbnRlckRvd25QaWNrcyIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwicG9pbnRlckRvd25Hcm91bmRDb29yZHMiLCJzb3VyY2VFdmVudCIsImhhbmRsZVBvaW50ZXJNb3ZlIiwicmVzdWx0IiwiY2FuY2VsTWFwUGFuIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0lBQ2FBLGtCOzs7Ozs7Ozs7Ozs7O21DQUNJQyxLLEVBQW9DQyxZLEVBQXVDO0FBQ3hGLFVBQUlDLE9BQU8sMEZBQXdCRixLQUF4QixFQUErQkMsWUFBL0IsQ0FBWDs7QUFFQSxVQUFJLEtBQUtFLGlCQUFULEVBQTRCO0FBQzFCRCxRQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FB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RCxDQWtENUQ7O0FBQ0EsV0FBS0MsaUJBQUwsQ0FBdUJQLG9CQUF2QjtBQUVBLGFBQU9kLFVBQVA7QUFDRDs7OzRDQUkwRjtBQUFBLFVBRHpGVixZQUN5RixRQUR6RkEsWUFDeUY7QUFDekYsVUFBTVksYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCO0FBQ0EsVUFBTW1CLE1BQU0sR0FBRztBQUFFdEIsUUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0J1QixRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjs7QUFFQSxVQUFJckIsYUFBYSxDQUFDRyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT2lCLE1BQVA7QUFDRDs7QUFFRCxVQUFJcEIsYUFBYSxDQUFDRyxNQUFkLEdBQXVCLENBQTNCLEVBQThCO0FBQzVCO0FBQ0EsYUFBS08sb0JBQUwsQ0FBMEI7QUFDeEJqQixVQUFBQSxJQUFJLEVBQUUsU0FEa0I7QUFFeEJELFVBQUFBLFFBQVEsRUFBRTtBQUNSQyxZQUFBQSxJQUFJLEVBQUUsWUFERTtBQUVSYyxZQUFBQSxXQUFXLCtCQUFNUCxhQUFOLElBQXFCWixZQUFyQjtBQUZIO0FBRmMsU0FBMUI7QUFPRCxPQVRELE1BU087QUFDTDtBQUNBLGFBQUtzQixvQkFBTCxDQUEwQjtBQUN4QmpCLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkQsVUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFlBQUFBLElBQUksRUFBRSxTQURFO0FBRVJjLFlBQUFBLFdBQVcsRUFBRSw4QkFBS1AsYUFBTCxJQUFvQlosWUFBcEIsRUFBa0NZLGFBQWEsQ0FBQyxDQUFELENBQS9DO0FBRkw7QUFGYyxTQUExQjtBQU9EOztBQUVELGFBQU9vQixNQUFQO0FBQ0Q7Ozs7RUEzR3FDRSx3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvbHlnb24sIFBvc2l0aW9uIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQge1xuICBFZGl0QWN0aW9uLFxuICBFZGl0SGFuZGxlLFxuICBNb2RlSGFuZGxlcixcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRHJhd1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBnZXRFZGl0SGFuZGxlcyhwaWNrcz86IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LCBncm91bmRDb29yZHM/OiBQb3NpdGlvbik6IEVkaXRIYW5kbGVbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSBzdXBlci5nZXRFZGl0SGFuZGxlcyhwaWNrcywgZ3JvdW5kQ29vcmRzKTtcblxuICAgIGlmICh0aGlzLl90ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSh0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LCAtMSkpO1xuICAgICAgLy8gU2xpY2Ugb2ZmIHRoZSBoYW5kbGVzIHRoYXQgYXJlIGFyZSBuZXh0IHRvIHRoZSBwb2ludGVyXG4gICAgICBpZiAodGhpcy5fdGVudGF0aXZlRmVhdHVyZSAmJiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgZXhpc3RpbmcgaGFuZGxlXG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGVudGF0aXZlRmVhdHVyZSAmJiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgZXhpc3RpbmcgaGFuZGxlXG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcztcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHN1cGVyLmhhbmRsZUNsaWNrKGV2ZW50KTtcblxuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmdldFRlbnRhdGl2ZUZlYXR1cmUoKTtcblxuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmIChjbGlja2VkRWRpdEhhbmRsZSkge1xuICAgICAgLy8gVXNlciBjbGlja2VkIGFuIGVkaXQgaGFuZGxlLlxuICAgICAgLy8gUmVtb3ZlIGl0IGZyb20gdGhlIGNsaWNrIHNlcXVlbmNlLCBzbyBpdCBpc24ndCBhZGRlZCBhcyBhIG5ldyBwb2ludC5cbiAgICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIGNsaWNrU2VxdWVuY2Uuc3BsaWNlKGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHBvbHlnb246IFBvbHlnb24gPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleCA9PT0gLTEgJiZcbiAgICAgICAgKGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gcG9seWdvbi5jb29yZGluYXRlc1swXS5sZW5ndGggLSAzKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZXkgY2xpY2tlZCB0aGUgZmlyc3Qgb3IgbGFzdCBwb2ludCAob3IgZG91YmxlLWNsaWNrZWQpLCBzbyBjb21wbGV0ZSB0aGUgcG9seWdvblxuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF0uc2xpY2UoMCwgLTIpLCBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdWzBdXV0sXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIHBvaW50ZXIgbW92ZSByaWdodCBhd2F5IGluIG9yZGVyIGZvciBpdCB0byB1cGRhdGUgZWRpdCBoYW5kbGVzICh0byBzdXBwb3J0IGRvdWJsZS1jbGljaylcbiAgICBjb25zdCBmYWtlUG9pbnRlck1vdmVFdmVudCA9IHtcbiAgICAgIHNjcmVlbkNvb3JkczogWy0xLCAtMV0sXG4gICAgICBncm91bmRDb29yZHM6IGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgIHBpY2tzOiBbXSxcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25Hcm91bmRDb29yZHM6IG51bGwsXG4gICAgICBzb3VyY2VFdmVudDogbnVsbCxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlKGZha2VQb2ludGVyTW92ZUV2ZW50KTtcblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoe1xuICAgIGdyb3VuZENvb3JkcyxcbiAgfTogUG9pbnRlck1vdmVFdmVudCk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMpIHtcbiAgICAgIC8vIERyYXcgYSBMaW5lU3RyaW5nIGNvbm5lY3RpbmcgYWxsIHRoZSBjbGlja2VkIHBvaW50cyB3aXRoIHRoZSBob3ZlcmVkIHBvaW50XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIGdyb3VuZENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRHJhdyBhIFBvbHlnb24gY29ubmVjdGluZyBhbGwgdGhlIGNsaWNrZWQgcG9pbnRzIHdpdGggdGhlIGhvdmVyZWQgcG9pbnRcbiAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGdyb3VuZENvb3JkcywgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-rectangle-handler.js b/modules/layers/dist-es6/mode-handlers/draw-rectangle-handler.js new file mode 100644 index 000000000..92ad6ed1c --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-rectangle-handler.js @@ -0,0 +1,75 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleHandler = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawRectangleHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawRectangleHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawRectangleHandler); + + function DrawRectangleHandler() { + _classCallCheck(this, DrawRectangleHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var corner1 = clickSequence[0]; + var corner2 = event.groundCoords; // @ts-ignore + + this._setTentativeFeature((0, _bboxPolygon["default"])([corner1[0], corner1[1], corner2[0], corner2[1]])); + + return result; + } + }]); + + return DrawRectangleHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawRectangleHandler = DrawRectangleHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcmVjdGFuZ2xlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZUhhbmRsZXIiLCJldmVudCIsInJlc3VsdCIsImVkaXRBY3Rpb24iLCJjYW5jZWxNYXBQYW4iLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsImNvcm5lcjEiLCJjb3JuZXIyIiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsb0I7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sT0FBTyxHQUFHSCxhQUFhLENBQUMsQ0FBRCxDQUE3QjtBQUNBLFVBQU1JLE9BQU8sR0FBR1IsS0FBSyxDQUFDUyxZQUF0QixDQVZzRSxDQVd0RTs7QUFDQSxXQUFLQyxvQkFBTCxDQUEwQiw2QkFBWSxDQUFDSCxPQUFPLENBQUMsQ0FBRCxDQUFSLEVBQWFBLE9BQU8sQ0FBQyxDQUFELENBQXBCLEVBQXlCQyxPQUFPLENBQUMsQ0FBRCxDQUFoQyxFQUFxQ0EsT0FBTyxDQUFDLENBQUQsQ0FBNUMsQ0FBWixDQUExQjs7QUFFQSxhQUFPUCxNQUFQO0FBQ0Q7Ozs7RUFsQnVDVSw4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdSZWN0YW5nbGVIYW5kbGVyIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciB7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBldmVudC5ncm91bmRDb29yZHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoYmJveFBvbHlnb24oW2Nvcm5lcjFbMF0sIGNvcm5lcjFbMV0sIGNvcm5lcjJbMF0sIGNvcm5lcjJbMV1dKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/draw-rectangle-using-three-points-handler.js b/modules/layers/dist-es6/mode-handlers/draw-rectangle-using-three-points-handler.js new file mode 100644 index 000000000..68e8a5ec0 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/draw-rectangle-using-three-points-handler.js @@ -0,0 +1,122 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleUsingThreePointsHandler = void 0; + +var _utils = require("../utils"); + +var _threeClickPolygonHandler = require("./three-click-polygon-handler"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawRectangleUsingThreePointsHandler = /*#__PURE__*/function (_ThreeClickPolygonHan) { + _inherits(DrawRectangleUsingThreePointsHandler, _ThreeClickPolygonHan); + + var _super = _createSuper(DrawRectangleUsingThreePointsHandler); + + function DrawRectangleUsingThreePointsHandler() { + _classCallCheck(this, DrawRectangleUsingThreePointsHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleUsingThreePointsHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var groundCoords = event.groundCoords; + + if (clickSequence.length === 1) { + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], groundCoords] + } + }); + } else if (clickSequence.length === 2) { + var lineString = { + type: 'LineString', + coordinates: clickSequence + }; + + var _clickSequence = _slicedToArray(clickSequence, 2), + p1 = _clickSequence[0], + p2 = _clickSequence[1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(lineString.coordinates), [p3, p4, p1])] + } + }); + } + + return result; + } + }]); + + return DrawRectangleUsingThreePointsHandler; +}(_threeClickPolygonHandler.ThreeClickPolygonHandler); + +exports.DrawRectangleUsingThreePointsHandler = DrawRectangleUsingThreePointsHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzSGFuZGxlciIsImV2ZW50IiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGVuZ3RoIiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJ0eXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxpbmVTdHJpbmciLCJwMSIsInAyIiwicDMiLCJwNCIsIlRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLG9DOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLFlBQVksR0FBR1AsS0FBSyxDQUFDTyxZQUEzQjs7QUFFQSxVQUFJSCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsYUFBS0Usb0JBQUwsQ0FBMEI7QUFDeEJDLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JELFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJFLFlBQUFBLFdBQVcsRUFBRSxDQUFDUCxhQUFhLENBQUMsQ0FBRCxDQUFkLEVBQW1CRyxZQUFuQjtBQUZMO0FBRmMsU0FBMUI7QUFPRCxPQVJELE1BUU8sSUFBSUgsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQ3JDLFlBQU1NLFVBQXNCLEdBQUc7QUFDN0JILFVBQUFBLElBQUksRUFBRSxZQUR1QjtBQUU3QkUsVUFBQUEsV0FBVyxFQUFFUDtBQUZnQixTQUEvQjs7QUFEcUMsNENBS3BCQSxhQUxvQjtBQUFBLFlBSzlCUyxFQUw4QjtBQUFBLFlBSzFCQyxFQUwwQjs7QUFBQSxvQ0FNcEIsK0NBQW1DRCxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNQLFlBQTNDLENBTm9CO0FBQUE7QUFBQSxZQU05QlEsRUFOOEI7QUFBQSxZQU0xQkMsRUFOMEI7O0FBUXJDLGFBQUtSLG9CQUFMLENBQTBCO0FBQ3hCQyxVQUFBQSxJQUFJLEVBQUUsU0FEa0I7QUFFeEJDLFVBQUFBLFFBQVEsRUFBRTtBQUNSRCxZQUFBQSxJQUFJLEVBQUUsU0FERTtBQUVSRSxZQUFBQSxXQUFXLEVBQUUsOEJBS05DLFVBQVUsQ0FBQ0QsV0FMTCxJQU1USSxFQU5TLEVBT1RDLEVBUFMsRUFRVEgsRUFSUztBQUZMO0FBRmMsU0FBMUI7QUFpQkQ7O0FBRUQsYUFBT1osTUFBUDtBQUNEOzs7O0VBbER1RGdCLGtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIgfSBmcm9tICcuL3RocmVlLWNsaWNrLXBvbHlnb24taGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c0hhbmRsZXIgZXh0ZW5kcyBUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIge1xuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvIHlldFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBncm91bmRDb29yZHMgPSBldmVudC5ncm91bmRDb29yZHM7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgZ3JvdW5kQ29vcmRzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2UsXG4gICAgICB9O1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBjbGlja1NlcXVlbmNlO1xuICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZ3JvdW5kQ29vcmRzKTtcblxuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgICAgLy8gdGhlbiB0aGUgcG9pbnRzIG9ydGhvZ29uYWwgdG8gdGhlIGxpbmVTdHJpbmcsXG4gICAgICAgICAgICAgIC8vIHRoZW4gYmFjayB0byB0aGUgc3RhcnRpbmcgcG9zaXRpb25cbiAgICAgICAgICAgICAgLi4ubGluZVN0cmluZy5jb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICAgIHA0LFxuICAgICAgICAgICAgICBwMSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/duplicate-handler.js b/modules/layers/dist-es6/mode-handlers/duplicate-handler.js new file mode 100644 index 000000000..dd0e21415 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/duplicate-handler.js @@ -0,0 +1,71 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DuplicateHandler = void 0; + +var _translateHandler = require("./translate-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DuplicateHandler = /*#__PURE__*/function (_TranslateHandler) { + _inherits(DuplicateHandler, _TranslateHandler); + + var _super = _createSuper(DuplicateHandler); + + function DuplicateHandler() { + _classCallCheck(this, DuplicateHandler); + + return _super.apply(this, arguments); + } + + _createClass(DuplicateHandler, [{ + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isTranslatable) { + return null; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(); + return this._geometryBeforeTranslate ? this.getAddManyFeaturesAction(this._geometryBeforeTranslate) : null; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isTranslatable) { + return 'copy'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }]); + + return DuplicateHandler; +}(_translateHandler.TranslateHandler); + +exports.DuplicateHandler = DuplicateHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2R1cGxpY2F0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkR1cGxpY2F0ZUhhbmRsZXIiLCJldmVudCIsIl9pc1RyYW5zbGF0YWJsZSIsIl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwiZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uIiwiaXNEcmFnZ2luZyIsIlRyYW5zbGF0ZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsZ0I7Ozs7Ozs7Ozs7Ozs7d0NBQ1NDLEssRUFBMEQ7QUFDNUUsVUFBSSxDQUFDLEtBQUtDLGVBQVYsRUFBMkI7QUFDekIsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsV0FBS0Msd0JBQUwsR0FBZ0MsS0FBS0Msc0NBQUwsRUFBaEM7QUFFQSxhQUFPLEtBQUtELHdCQUFMLEdBQ0gsS0FBS0Usd0JBQUwsQ0FBOEIsS0FBS0Ysd0JBQW5DLENBREcsR0FFSCxJQUZKO0FBR0Q7OztvQ0FFMEQ7QUFBQSxVQUEvQ0csVUFBK0MsUUFBL0NBLFVBQStDOztBQUN6RCxVQUFJLEtBQUtKLGVBQVQsRUFBMEI7QUFDeEIsZUFBTyxNQUFQO0FBQ0Q7O0FBQ0QsYUFBT0ksVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBakM7QUFDRDs7OztFQWxCbUNDLGtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhcnREcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZUhhbmRsZXIgfSBmcm9tICcuL3RyYW5zbGF0ZS1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZUhhbmRsZXIgZXh0ZW5kcyBUcmFuc2xhdGVIYW5kbGVyIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlXG4gICAgICA/IHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICByZXR1cm4gJ2NvcHknO1xuICAgIH1cbiAgICByZXR1cm4gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/elevation-handler.js b/modules/layers/dist-es6/mode-handlers/elevation-handler.js new file mode 100644 index 000000000..cab7ff98d --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/elevation-handler.js @@ -0,0 +1,126 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ElevationHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +var _modifyHandler = require("./modify-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultCalculateElevationChange(_ref) { + var pointerDownScreenCoords = _ref.pointerDownScreenCoords, + screenCoords = _ref.screenCoords; + return 10 * (pointerDownScreenCoords[1] - screenCoords[1]); +} // TODO edit-modes: delete handlers once EditMode fully implemented + + +var ElevationHandler = /*#__PURE__*/function (_ModifyHandler) { + _inherits(ElevationHandler, _ModifyHandler); + + var _super = _createSuper(ElevationHandler); + + function ElevationHandler() { + _classCallCheck(this, ElevationHandler); + + return _super.apply(this, arguments); + } + + _createClass(ElevationHandler, [{ + key: "makeElevatedEvent", + value: function makeElevatedEvent(event, position) { + if (!event.pointerDownScreenCoords) { + return event; + } + + var _ref2 = this._modeConfig || {}, + _ref2$minElevation = _ref2.minElevation, + minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation, + _ref2$maxElevation = _ref2.maxElevation, + maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation, + _ref2$calculateElevat = _ref2.calculateElevationChange, + calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat; // $FlowFixMe - really, I know it has something at index 2 + + + var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable becase (at this time) modes are not aware of the viewport + + elevation += calculateElevationChange({ + pointerDownScreenCoords: event.pointerDownScreenCoords, + screenCoords: event.screenCoords + }); + elevation = Math.min(elevation, maxElevation); + elevation = Math.max(elevation, minElevation); + return Object.assign({}, event, { + groundCoords: [position[0], position[1], elevation] + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + var position = editHandle ? editHandle.position : event.groundCoords; // @ts-ignore + + return _get(_getPrototypeOf(ElevationHandler.prototype), "handlePointerMove", this).call(this, this.makeElevatedEvent(event, position)); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + var position = editHandle ? editHandle.position : event.groundCoords; // @ts-ignore + + return _get(_getPrototypeOf(ElevationHandler.prototype), "handleStopDragging", this).call(this, this.makeElevatedEvent(event, position)); + } + }, { + key: "getCursor", + value: function getCursor(params) { + var cursor = _get(_getPrototypeOf(ElevationHandler.prototype), "getCursor", this).call(this, params); + + if (cursor === 'cell') { + cursor = 'ns-resize'; + } + + return cursor; + } + }], [{ + key: "calculateElevationChangeWithViewport", + value: function calculateElevationChangeWithViewport(viewport, _ref3) { + var pointerDownScreenCoords = _ref3.pointerDownScreenCoords, + screenCoords = _ref3.screenCoords; + // Source: https://gis.stackexchange.com/a/127949/111804 + var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom); + return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2; + } + }]); + + return ElevationHandler; +}(_modifyHandler.ModifyHandler); + +exports.ElevationHandler = ElevationHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2VsZXZhdGlvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbImRlZmF1bHRDYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJwb2ludGVyRG93blNjcmVlbkNvb3JkcyIsInNjcmVlbkNvb3JkcyIsIkVsZXZhdGlvbkhhbmRsZXIiLCJldmVudCIsInBvc2l0aW9uIiwiX21vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ3JvdW5kQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJtYWtlRWxldmF0ZWRFdmVudCIsInBpY2tzIiwicGFyYW1zIiwiY3Vyc29yIiwidmlld3BvcnQiLCJtZXRlcnNQZXJQaXhlbCIsImNvcyIsImxhdGl0dWRlIiwiUEkiLCJwb3ciLCJ6b29tIiwiTW9kaWZ5SGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsK0JBQVQsT0FNRztBQUFBLE1BTERDLHVCQUtDLFFBTERBLHVCQUtDO0FBQUEsTUFKREMsWUFJQyxRQUpEQSxZQUlDO0FBQ0QsU0FBTyxNQUFNRCx1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUEvQyxDQUFQO0FBQ0QsQyxDQUVEOzs7SUFDYUMsZ0I7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDQUMsUSxFQUNxQjtBQUNyQixVQUFJLENBQUNELEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNEOztBQUhvQixrQkFTakIsS0FBS0UsV0FBTCxJQUFvQixFQVRIO0FBQUEscUNBTW5CQyxZQU5tQjtBQUFBLFVBTW5CQSxZQU5tQixtQ0FNSixDQU5JO0FBQUEscUNBT25CQyxZQVBtQjtBQUFBLFVBT25CQSxZQVBtQixtQ0FPSixLQVBJO0FBQUEsd0NBUW5CQyx3QkFSbUI7QUFBQSxVQVFuQkEsd0JBUm1CLHNDQVFRVCwrQkFSUiwwQkFXckI7OztBQUNBLFVBQUlVLFNBQVMsR0FBR0wsUUFBUSxDQUFDTSxNQUFULEtBQW9CLENBQXBCLEdBQXdCTixRQUFRLENBQUMsQ0FBRCxDQUFoQyxHQUFzQyxDQUF0RCxDQVpxQixDQWNyQjs7QUFDQUssTUFBQUEsU0FBUyxJQUFJRCx3QkFBd0IsQ0FBQztBQUNwQ1IsUUFBQUEsdUJBQXVCLEVBQUVHLEtBQUssQ0FBQ0gsdUJBREs7QUFFcENDLFFBQUFBLFlBQVksRUFBRUUsS0FBSyxDQUFDRjtBQUZnQixPQUFELENBQXJDO0FBSUFRLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDQyxHQUFMLENBQVNILFNBQVQsRUFBb0JGLFlBQXBCLENBQVo7QUFDQUUsTUFBQUEsU0FBUyxHQUFHRSxJQUFJLENBQUNFLEdBQUwsQ0FBU0osU0FBVCxFQUFvQkgsWUFBcEIsQ0FBWjtBQUVBLGFBQU9RLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JaLEtBQWxCLEVBQXlCO0FBQzlCYSxRQUFBQSxZQUFZLEVBQUUsQ0FBQ1osUUFBUSxDQUFDLENBQUQsQ0FBVCxFQUFjQSxRQUFRLENBQUMsQ0FBRCxDQUF0QixFQUEyQkssU0FBM0I7QUFEZ0IsT0FBekIsQ0FBUDtBQUdEOzs7c0NBR0NOLEssRUFDc0U7QUFDdEUsVUFBTWMsVUFBVSxHQUFHLHNDQUFvQmQsS0FBSyxDQUFDZSxnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZCxRQUFRLEdBQUdhLFVBQVUsR0FBR0EsVUFBVSxDQUFDYixRQUFkLEdBQXlCRCxLQUFLLENBQUNhLFlBQTFELENBRnNFLENBR3RFOztBQUNBLHFHQUErQixLQUFLRyxpQkFBTCxDQUF1QmhCLEtBQXZCLEVBQThCQyxRQUE5QixDQUEvQjtBQUNEOzs7dUNBRWtCRCxLLEVBQXlEO0FBQzFFLFVBQU1jLFVBQVUsR0FBRyxzQ0FBb0JkLEtBQUssQ0FBQ2lCLEtBQTFCLENBQW5CO0FBQ0EsVUFBTWhCLFFBQVEsR0FBR2EsVUFBVSxHQUFHQSxVQUFVLENBQUNiLFFBQWQsR0FBeUJELEtBQUssQ0FBQ2EsWUFBMUQsQ0FGMEUsQ0FHMUU7O0FBQ0Esc0dBQWdDLEtBQUtHLGlCQUFMLENBQXVCaEIsS0FBdkIsRUFBOEJDLFFBQTlCLENBQWhDO0FBQ0Q7Ozs4QkFFU2lCLE0sRUFBeUM7QUFDakQsVUFBSUMsTUFBTSxtRkFBbUJELE1BQW5CLENBQVY7O0FBQ0EsVUFBSUMsTUFBTSxLQUFLLE1BQWYsRUFBdUI7QUFDckJBLFFBQUFBLE1BQU0sR0FBRyxXQUFUO0FBQ0Q7O0FBQ0QsYUFBT0EsTUFBUDtBQUNEOzs7eURBR0NDLFEsU0FRUTtBQUFBLFVBTk52Qix1QkFNTSxTQU5OQSx1QkFNTTtBQUFBLFVBTE5DLFlBS00sU0FMTkEsWUFLTTtBQUNSO0FBQ0EsVUFBTXVCLGNBQWMsR0FDakIsZUFBZWIsSUFBSSxDQUFDYyxHQUFMLENBQVVGLFFBQVEsQ0FBQ0csUUFBVCxHQUFvQmYsSUFBSSxDQUFDZ0IsRUFBMUIsR0FBZ0MsR0FBekMsQ0FBaEIsR0FBaUVoQixJQUFJLENBQUNpQixHQUFMLENBQVMsQ0FBVCxFQUFZTCxRQUFRLENBQUNNLElBQXJCLENBRG5FO0FBR0EsYUFBUUwsY0FBYyxJQUFJeEIsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBN0MsQ0FBZixHQUFvRSxDQUEzRTtBQUNEOzs7O0VBdEVtQzZCLDRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RvcERyYWdnaW5nRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBFZGl0QWN0aW9uLCBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG5pbXBvcnQgeyBNb2RpZnlIYW5kbGVyIH0gZnJvbSAnLi9tb2RpZnktaGFuZGxlcic7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2Uoe1xuICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgc2NyZWVuQ29vcmRzLFxufToge1xuICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gIHNjcmVlbkNvb3JkczogUG9zaXRpb247XG59KSB7XG4gIHJldHVybiAxMCAqIChwb2ludGVyRG93blNjcmVlbkNvb3Jkc1sxXSAtIHNjcmVlbkNvb3Jkc1sxXSk7XG59XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBFbGV2YXRpb25IYW5kbGVyIGV4dGVuZHMgTW9kaWZ5SGFuZGxlciB7XG4gIG1ha2VFbGV2YXRlZEV2ZW50KFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQsXG4gICAgcG9zaXRpb246IFBvc2l0aW9uXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMpIHtcbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSB0aGlzLl9tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gJEZsb3dGaXhNZSAtIHJlYWxseSwgSSBrbm93IGl0IGhhcyBzb21ldGhpbmcgYXQgaW5kZXggMlxuICAgIGxldCBlbGV2YXRpb24gPSBwb3NpdGlvbi5sZW5ndGggPT09IDMgPyBwb3NpdGlvblsyXSA6IDA7XG5cbiAgICAvLyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgaXMgY29uZmlndXJhYmxlIGJlY2FzZSAoYXQgdGhpcyB0aW1lKSBtb2RlcyBhcmUgbm90IGF3YXJlIG9mIHRoZSB2aWV3cG9ydFxuICAgIGVsZXZhdGlvbiArPSBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2Uoe1xuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGV2ZW50LnBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgfSk7XG4gICAgZWxldmF0aW9uID0gTWF0aC5taW4oZWxldmF0aW9uLCBtYXhFbGV2YXRpb24pO1xuICAgIGVsZXZhdGlvbiA9IE1hdGgubWF4KGVsZXZhdGlvbiwgbWluRWxldmF0aW9uKTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBldmVudCwge1xuICAgICAgZ3JvdW5kQ29vcmRzOiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBlbGV2YXRpb25dLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBvaW50ZXJEb3duUGlja3MpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZWRpdEhhbmRsZSA/IGVkaXRIYW5kbGUucG9zaXRpb24gOiBldmVudC5ncm91bmRDb29yZHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbikpO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgY29uc3QgcG9zaXRpb24gPSBlZGl0SGFuZGxlID8gZWRpdEhhbmRsZS5wb3NpdGlvbiA6IGV2ZW50Lmdyb3VuZENvb3JkcztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHN1cGVyLmhhbmRsZVN0b3BEcmFnZ2luZyh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbikpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHBhcmFtczogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGxldCBjdXJzb3IgPSBzdXBlci5nZXRDdXJzb3IocGFyYW1zKTtcbiAgICBpZiAoY3Vyc29yID09PSAnY2VsbCcpIHtcbiAgICAgIGN1cnNvciA9ICducy1yZXNpemUnO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZVdpdGhWaWV3cG9ydChcbiAgICB2aWV3cG9ydDogYW55LFxuICAgIHtcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgIH06IHtcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBQb3NpdGlvbjtcbiAgICAgIHNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgfVxuICApOiBudW1iZXIge1xuICAgIC8vIFNvdXJjZTogaHR0cHM6Ly9naXMuc3RhY2tleGNoYW5nZS5jb20vYS8xMjc5NDkvMTExODA0XG4gICAgY29uc3QgbWV0ZXJzUGVyUGl4ZWwgPVxuICAgICAgKDE1NjU0My4wMzM5MiAqIE1hdGguY29zKCh2aWV3cG9ydC5sYXRpdHVkZSAqIE1hdGguUEkpIC8gMTgwKSkgLyBNYXRoLnBvdygyLCB2aWV3cG9ydC56b29tKTtcblxuICAgIHJldHVybiAobWV0ZXJzUGVyUGl4ZWwgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pKSAvIDI7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/extrude-handler.js b/modules/layers/dist-es6/mode-handlers/extrude-handler.js new file mode 100644 index 000000000..db31ce582 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/extrude-handler.js @@ -0,0 +1,308 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtrudeHandler = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +var _modifyHandler = require("./modify-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ExtrudeHandler = /*#__PURE__*/function (_ModifyHandler) { + _inherits(ExtrudeHandler, _ModifyHandler); + + var _super = _createSuper(ExtrudeHandler); + + function ExtrudeHandler() { + var _this; + + _classCallCheck(this, ExtrudeHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "isPointAdded", false); + + return _this; + } + + _createClass(ExtrudeHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + this._lastPointerMovePicks = event.picks; + var editAction = null; + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (event.isDragging && editHandle) { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); + var positionIndexes = this.isPointAdded ? this.nextPositionIndexes(editHandle.positionIndexes, size) : editHandle.positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + // p3 and p4 are end points for moving (extruding) edge + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(editHandle.featureIndex, positionIndexes, p3).getObject(); + editAction = { + updatedData: updatedData, + editType: 'extruding', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: this.nextPositionIndexes(editHandle.positionIndexes, size), + position: p3 + } + }; + } + } // Cancel map panning if pointer went down on an edit handle + + + var cancelMapPan = Boolean(editHandle); + return { + editAction: editAction, + cancelMapPan: cancelMapPan + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle && editHandle.type === 'intermediate') { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(editHandle.positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(editHandle.positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + var updatedData = this.getImmutableFeatureCollection(); + + if (!this.isOrthogonal(editHandle.positionIndexes, editHandle.featureIndex, size)) { + updatedData = updatedData.addPosition(editHandle.featureIndex, editHandle.positionIndexes, p2); + } + + if (!this.isOrthogonal(this.prevPositionIndexes(editHandle.positionIndexes, size), editHandle.featureIndex, size)) { + updatedData = updatedData.addPosition(editHandle.featureIndex, editHandle.positionIndexes, p1); + this.isPointAdded = true; + } + + editAction = { + updatedData: updatedData.getObject(), + editType: 'startExtruding', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: p1 + } + }; + } + } + + return editAction; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); + var positionIndexes = this.isPointAdded ? this.nextPositionIndexes(editHandle.positionIndexes, size) : editHandle.positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + // p3 and p4 are end points for new moved (extruded) edge + var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.groundCoords), + _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2), + p3 = _generatePointsParall4[0], + p4 = _generatePointsParall4[1]; + + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(editHandle.featureIndex, positionIndexes, p3).getObject(); + editAction = { + updatedData: updatedData, + editType: 'extruded', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: p3 + } + }; + } + } + + this.isPointAdded = false; + return editAction; + } + }, { + key: "coordinatesSize", + value: function coordinatesSize(positionIndexes, featureIndex) { + var size = 0; + var feature = this.getImmutableFeatureCollection().getObject().features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes = _slicedToArray(positionIndexes, 2), + a = _positionIndexes[0], + b = _positionIndexes[1]; + + if (coordinates.length && coordinates[a].length) { + size = coordinates[a][b].length; + } + } else { + var _positionIndexes2 = _slicedToArray(positionIndexes, 1), + _b = _positionIndexes2[0]; + + if (coordinates.length && coordinates[_b].length) { + size = coordinates[_b].length; + } + } + + return size; + } + }, { + key: "getBearing", + value: function getBearing(p1, p2) { + var angle = (0, _bearing["default"])(p1, p2); + + if (angle < 0) { + return Math.floor(360 + angle); + } + + return Math.floor(angle); + } + }, { + key: "isOrthogonal", + value: function isOrthogonal(positionIndexes, featureIndex, size) { + if (positionIndexes[positionIndexes.length - 1] === size - 1) { + positionIndexes[positionIndexes.length - 1] = 0; + } + + var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex); + var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex); + var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex); + var prevAngle = this.getBearing(currentPoint, prevPoint); + var nextAngle = this.getBearing(currentPoint, nextPoint); + return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle)); + } + }, { + key: "nextPositionIndexes", + value: function nextPositionIndexes(positionIndexes, size) { + var next = _toConsumableArray(positionIndexes); + + if (next.length) { + next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1; + } + + return next; + } + }, { + key: "prevPositionIndexes", + value: function prevPositionIndexes(positionIndexes, size) { + var prev = _toConsumableArray(positionIndexes); + + if (prev.length) { + prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1; + } + + return prev; + } + }, { + key: "getPointForPositionIndexes", + value: function getPointForPositionIndexes(positionIndexes, featureIndex) { + var p1; + var feature = this.getImmutableFeatureCollection().getObject().features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes3 = _slicedToArray(positionIndexes, 3), + a = _positionIndexes3[0], + b = _positionIndexes3[1], + c = _positionIndexes3[2]; + + if (coordinates.length && coordinates[a].length) { + p1 = coordinates[a][b][c]; + } + } else { + var _positionIndexes4 = _slicedToArray(positionIndexes, 2), + _b2 = _positionIndexes4[0], + _c = _positionIndexes4[1]; + + if (coordinates.length && coordinates[_b2].length) { + p1 = coordinates[_b2][_c]; + } + } + + return p1; + } + }]); + + return ExtrudeHandler; +}(_modifyHandler.ModifyHandler); + +exports.ExtrudeHandler = ExtrudeHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2V4dHJ1ZGUtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJFeHRydWRlSGFuZGxlciIsImV2ZW50IiwiX2xhc3RQb2ludGVyTW92ZVBpY2tzIiwicGlja3MiLCJlZGl0QWN0aW9uIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJpc0RyYWdnaW5nIiwic2l6ZSIsImNvb3JkaW5hdGVzU2l6ZSIsInBvc2l0aW9uSW5kZXhlcyIsImZlYXR1cmVJbmRleCIsImlzUG9pbnRBZGRlZCIsIm5leHRQb3NpdGlvbkluZGV4ZXMiLCJwMSIsImdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzIiwicHJldlBvc2l0aW9uSW5kZXhlcyIsInAyIiwiZ3JvdW5kQ29vcmRzIiwicDMiLCJwNCIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJyZXBsYWNlUG9zaXRpb24iLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImZlYXR1cmVJbmRleGVzIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsImNhbmNlbE1hcFBhbiIsIkJvb2xlYW4iLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImxlbmd0aCIsInR5cGUiLCJpc09ydGhvZ29uYWwiLCJhZGRQb3NpdGlvbiIsImZlYXR1cmUiLCJmZWF0dXJlcyIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJhIiwiYiIsImFuZ2xlIiwiTWF0aCIsImZsb29yIiwicHJldlBvaW50IiwibmV4dFBvaW50IiwiY3VycmVudFBvaW50IiwicHJldkFuZ2xlIiwiZ2V0QmVhcmluZyIsIm5leHRBbmdsZSIsImluY2x1ZGVzIiwiYWJzIiwibmV4dCIsInByZXYiLCJjIiwiTW9kaWZ5SGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNhQSxjOzs7Ozs7Ozs7Ozs7Ozs7O21FQUNJLEs7Ozs7Ozs7c0NBRWJDLEssRUFDc0U7QUFDdEUsV0FBS0MscUJBQUwsR0FBNkJELEtBQUssQ0FBQ0UsS0FBbkM7QUFFQSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsVUFBTUMsVUFBVSxHQUFHLHNDQUFvQkosS0FBSyxDQUFDSyxnQkFBMUIsQ0FBbkI7O0FBRUEsVUFBSUwsS0FBSyxDQUFDTSxVQUFOLElBQW9CRixVQUF4QixFQUFvQztBQUNsQyxZQUFNRyxJQUFJLEdBQUcsS0FBS0MsZUFBTCxDQUFxQkosVUFBVSxDQUFDSyxlQUFoQyxFQUFpREwsVUFBVSxDQUFDTSxZQUE1RCxDQUFiO0FBQ0EsWUFBTUQsZUFBZSxHQUFHLEtBQUtFLFlBQUwsR0FDcEIsS0FBS0MsbUJBQUwsQ0FBeUJSLFVBQVUsQ0FBQ0ssZUFBcEMsRUFBcURGLElBQXJELENBRG9CLEdBRXBCSCxVQUFVLENBQUNLLGVBRmYsQ0FGa0MsQ0FLbEM7O0FBQ0EsWUFBTUksRUFBRSxHQUFHLEtBQUtDLDBCQUFMLENBQ1QsS0FBS0MsbUJBQUwsQ0FBeUJOLGVBQXpCLEVBQTBDRixJQUExQyxDQURTLEVBRVRILFVBQVUsQ0FBQ00sWUFGRixDQUFYO0FBSUEsWUFBTU0sRUFBRSxHQUFHLEtBQUtGLDBCQUFMLENBQWdDTCxlQUFoQyxFQUFpREwsVUFBVSxDQUFDTSxZQUE1RCxDQUFYOztBQUNBLFlBQUlHLEVBQUUsSUFBSUcsRUFBVixFQUFjO0FBQ1o7QUFEWSxzQ0FFSywrQ0FBbUNILEVBQW5DLEVBQXVDRyxFQUF2QyxFQUEyQ2hCLEtBQUssQ0FBQ2lCLFlBQWpELENBRkw7QUFBQTtBQUFBLGNBRUxDLEVBRks7QUFBQSxjQUVEQyxFQUZDOztBQUlaLGNBQU1DLFdBQVcsR0FBRyxLQUFLQyw2QkFBTCxHQUNqQkMsZUFEaUIsQ0FFaEJsQixVQUFVLENBQUNNLFlBRkssRUFHaEIsS0FBS0ssbUJBQUwsQ0FBeUJOLGVBQXpCLEVBQTBDRixJQUExQyxDQUhnQixFQUloQlksRUFKZ0IsRUFNakJHLGVBTmlCLENBTURsQixVQUFVLENBQUNNLFlBTlYsRUFNd0JELGVBTnhCLEVBTXlDUyxFQU56QyxFQU9qQkssU0FQaUIsRUFBcEI7QUFTQXBCLFVBQUFBLFVBQVUsR0FBRztBQUNYaUIsWUFBQUEsV0FBVyxFQUFYQSxXQURXO0FBRVhJLFlBQUFBLFFBQVEsRUFBRSxXQUZDO0FBR1hDLFlBQUFBLGNBQWMsRUFBRSxDQUFDckIsVUFBVSxDQUFDTSxZQUFaLENBSEw7QUFJWGdCLFlBQUFBLFdBQVcsRUFBRTtBQUNYakIsY0FBQUEsZUFBZSxFQUFFLEtBQUtHLG1CQUFMLENBQXlCUixVQUFVLENBQUNLLGVBQXBDLEVBQXFERixJQUFyRCxDQUROO0FBRVhvQixjQUFBQSxRQUFRLEVBQUVUO0FBRkM7QUFKRixXQUFiO0FBU0Q7QUFDRixPQXpDcUUsQ0EyQ3RFOzs7QUFDQSxVQUFNVSxZQUFZLEdBQUdDLE9BQU8sQ0FBQ3pCLFVBQUQsQ0FBNUI7QUFFQSxhQUFPO0FBQUVELFFBQUFBLFVBQVUsRUFBVkEsVUFBRjtBQUFjeUIsUUFBQUEsWUFBWSxFQUFaQTtBQUFkLE9BQVA7QUFDRDs7O3dDQUVtQjVCLEssRUFBMEQ7QUFDNUUsVUFBSUcsVUFBeUMsR0FBRyxJQUFoRDtBQUVBLFVBQU0yQixzQkFBc0IsR0FBRyxLQUFLQyx5QkFBTCxFQUEvQjtBQUVBLFVBQU0zQixVQUFVLEdBQUcsc0NBQW9CSixLQUFLLENBQUNFLEtBQTFCLENBQW5COztBQUNBLFVBQUk0QixzQkFBc0IsQ0FBQ0UsTUFBdkIsSUFBaUM1QixVQUFqQyxJQUErQ0EsVUFBVSxDQUFDNkIsSUFBWCxLQUFvQixjQUF2RSxFQUF1RjtBQUNyRixZQUFNMUIsSUFBSSxHQUFHLEtBQUtDLGVBQUwsQ0FBcUJKLFVBQVUsQ0FBQ0ssZUFBaEMsRUFBaURMLFVBQVUsQ0FBQ00sWUFBNUQsQ0FBYixDQURxRixDQUVyRjs7QUFDQSxZQUFNRyxFQUFFLEdBQUcsS0FBS0MsMEJBQUwsQ0FDVCxLQUFLQyxtQkFBTCxDQUF5QlgsVUFBVSxDQUFDSyxlQUFwQyxFQUFxREYsSUFBckQsQ0FEUyxFQUVUSCxVQUFVLENBQUNNLFlBRkYsQ0FBWDtBQUlBLFlBQU1NLEVBQUUsR0FBRyxLQUFLRiwwQkFBTCxDQUNUVixVQUFVLENBQUNLLGVBREYsRUFFVEwsVUFBVSxDQUFDTSxZQUZGLENBQVg7O0FBS0EsWUFBSUcsRUFBRSxJQUFJRyxFQUFWLEVBQWM7QUFDWixjQUFJSSxXQUFXLEdBQUcsS0FBS0MsNkJBQUwsRUFBbEI7O0FBQ0EsY0FBSSxDQUFDLEtBQUthLFlBQUwsQ0FBa0I5QixVQUFVLENBQUNLLGVBQTdCLEVBQThDTCxVQUFVLENBQUNNLFlBQXpELEVBQXVFSCxJQUF2RSxDQUFMLEVBQW1GO0FBQ2pGYSxZQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ2UsV0FBWixDQUNaL0IsVUFBVSxDQUFDTSxZQURDLEVBRVpOLFVBQVUsQ0FBQ0ssZUFGQyxFQUdaTyxFQUhZLENBQWQ7QUFLRDs7QUFDRCxjQUNFLENBQUMsS0FBS2tCLFlBQUwsQ0FDQyxLQUFLbkIsbUJBQUwsQ0FBeUJYLFVBQVUsQ0FBQ0ssZUFBcEMsRUFBcURGLElBQXJELENBREQsRUFFQ0gsVUFBVSxDQUFDTSxZQUZaLEVBR0NILElBSEQsQ0FESCxFQU1FO0FBQ0FhLFlBQUFBLFdBQVcsR0FBR0EsV0FBVyxDQUFDZSxXQUFaLENBQ1ovQixVQUFVLENBQUNNLFlBREMsRUFFWk4sVUFBVSxDQUFDSyxlQUZDLEVBR1pJLEVBSFksQ0FBZDtBQUtBLGlCQUFLRixZQUFMLEdBQW9CLElBQXBCO0FBQ0Q7O0FBRURSLFVBQUFBLFVBQVUsR0FBRztBQUNYaUIsWUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNHLFNBQVosRUFERjtBQUVYQyxZQUFBQSxRQUFRLEVBQUUsZ0JBRkM7QUFHWEMsWUFBQUEsY0FBYyxFQUFFLENBQUNyQixVQUFVLENBQUNNLFlBQVosQ0FITDtBQUlYZ0IsWUFBQUEsV0FBVyxFQUFFO0FBQ1hqQixjQUFBQSxlQUFlLEVBQUVMLFVBQVUsQ0FBQ0ssZUFEakI7QUFFWGtCLGNBQUFBLFFBQVEsRUFBRWQ7QUFGQztBQUpGLFdBQWI7QUFTRDtBQUNGOztBQUVELGFBQU9WLFVBQVA7QUFDRDs7O3VDQUVrQkgsSyxFQUF5RDtBQUMxRSxVQUFJRyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsVUFBTTJCLHNCQUFzQixHQUFHLEtBQUtDLHlCQUFMLEVBQS9CO0FBQ0EsVUFBTTNCLFVBQVUsR0FBRyxzQ0FBb0JKLEtBQUssQ0FBQ0UsS0FBMUIsQ0FBbkI7O0FBQ0EsVUFBSTRCLHNCQUFzQixDQUFDRSxNQUF2QixJQUFpQzVCLFVBQXJDLEVBQWlEO0FBQy9DLFlBQU1HLElBQUksR0FBRyxLQUFLQyxlQUFMLENBQXFCSixVQUFVLENBQUNLLGVBQWhDLEVBQWlETCxVQUFVLENBQUNNLFlBQTVELENBQWI7QUFDQSxZQUFNRCxlQUFlLEdBQUcsS0FBS0UsWUFBTCxHQUNwQixLQUFLQyxtQkFBTCxDQUF5QlIsVUFBVSxDQUFDSyxlQUFwQyxFQUFxREYsSUFBckQsQ0FEb0IsR0FFcEJILFVBQVUsQ0FBQ0ssZUFGZixDQUYrQyxDQUsvQzs7QUFDQSxZQUFNSSxFQUFFLEdBQUcsS0FBS0MsMEJBQUwsQ0FDVCxLQUFLQyxtQkFBTCxDQUF5Qk4sZUFBekIsRUFBMENGLElBQTFDLENBRFMsRUFFVEgsVUFBVSxDQUFDTSxZQUZGLENBQVg7QUFJQSxZQUFNTSxFQUFFLEdBQUcsS0FBS0YsMEJBQUwsQ0FBZ0NMLGVBQWhDLEVBQWlETCxVQUFVLENBQUNNLFlBQTVELENBQVg7O0FBRUEsWUFBSUcsRUFBRSxJQUFJRyxFQUFWLEVBQWM7QUFDWjtBQURZLHVDQUVLLCtDQUFtQ0gsRUFBbkMsRUFBdUNHLEVBQXZDLEVBQTJDaEIsS0FBSyxDQUFDaUIsWUFBakQsQ0FGTDtBQUFBO0FBQUEsY0FFTEMsRUFGSztBQUFBLGNBRURDLEVBRkM7O0FBSVosY0FBTUMsV0FBVyxHQUFHLEtBQUtDLDZCQUFMLEdBQ2pCQyxlQURpQixDQUVoQmxCLFVBQVUsQ0FBQ00sWUFGSyxFQUdoQixLQUFLSyxtQkFBTCxDQUF5Qk4sZUFBekIsRUFBMENGLElBQTFDLENBSGdCLEVBSWhCWSxFQUpnQixFQU1qQkcsZUFOaUIsQ0FNRGxCLFVBQVUsQ0FBQ00sWUFOVixFQU13QkQsZUFOeEIsRUFNeUNTLEVBTnpDLEVBT2pCSyxTQVBpQixFQUFwQjtBQVNBcEIsVUFBQUEsVUFBVSxHQUFHO0FBQ1hpQixZQUFBQSxXQUFXLEVBQVhBLFdBRFc7QUFFWEksWUFBQUEsUUFBUSxFQUFFLFVBRkM7QUFHWEMsWUFBQUEsY0FBYyxFQUFFLENBQUNyQixVQUFVLENBQUNNLFlBQVosQ0FITDtBQUlYZ0IsWUFBQUEsV0FBVyxFQUFFO0FBQ1hqQixjQUFBQSxlQUFlLEVBQUVMLFVBQVUsQ0FBQ0ssZUFEakI7QUFFWGtCLGNBQUFBLFFBQVEsRUFBRVQ7QUFGQztBQUpGLFdBQWI7QUFTRDtBQUNGOztBQUNELFdBQUtQLFlBQUwsR0FBb0IsS0FBcEI7QUFFQSxhQUFPUixVQUFQO0FBQ0Q7OztvQ0FFZU0sZSxFQUEyQkMsWSxFQUFzQjtBQUMvRCxVQUFJSCxJQUFJLEdBQUcsQ0FBWDtBQUNBLFVBQU02QixPQUFPLEdBQUcsS0FBS2YsNkJBQUwsR0FBcUNFLFNBQXJDLEdBQWlEYyxRQUFqRCxDQUEwRDNCLFlBQTFELENBQWhCO0FBQ0EsVUFBTTRCLFdBQWdCLEdBQUdGLE9BQU8sQ0FBQ0csUUFBUixDQUFpQkQsV0FBMUMsQ0FIK0QsQ0FJL0Q7O0FBQ0EsVUFBSTdCLGVBQWUsQ0FBQ3VCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQUEsOENBQ2pCdkIsZUFEaUI7QUFBQSxZQUN6QitCLENBRHlCO0FBQUEsWUFDdEJDLENBRHNCOztBQUVoQyxZQUFJSCxXQUFXLENBQUNOLE1BQVosSUFBc0JNLFdBQVcsQ0FBQ0UsQ0FBRCxDQUFYLENBQWVSLE1BQXpDLEVBQWlEO0FBQy9DekIsVUFBQUEsSUFBSSxHQUFHK0IsV0FBVyxDQUFDRSxDQUFELENBQVgsQ0FBZUMsQ0FBZixFQUFrQlQsTUFBekI7QUFDRDtBQUNGLE9BTEQsTUFLTztBQUFBLCtDQUNPdkIsZUFEUDtBQUFBLFlBQ0VnQyxFQURGOztBQUVMLFlBQUlILFdBQVcsQ0FBQ04sTUFBWixJQUFzQk0sV0FBVyxDQUFDRyxFQUFELENBQVgsQ0FBZVQsTUFBekMsRUFBaUQ7QUFDL0N6QixVQUFBQSxJQUFJLEdBQUcrQixXQUFXLENBQUNHLEVBQUQsQ0FBWCxDQUFlVCxNQUF0QjtBQUNEO0FBQ0Y7O0FBQ0QsYUFBT3pCLElBQVA7QUFDRDs7OytCQUVVTSxFLEVBQVNHLEUsRUFBUztBQUMzQixVQUFNMEIsS0FBSyxHQUFHLHlCQUFRN0IsRUFBUixFQUFZRyxFQUFaLENBQWQ7O0FBQ0EsVUFBSTBCLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYixlQUFPQyxJQUFJLENBQUNDLEtBQUwsQ0FBVyxNQUFNRixLQUFqQixDQUFQO0FBQ0Q7O0FBQ0QsYUFBT0MsSUFBSSxDQUFDQyxLQUFMLENBQVdGLEtBQVgsQ0FBUDtBQUNEOzs7aUNBRVlqQyxlLEVBQTJCQyxZLEVBQXNCSCxJLEVBQWM7QUFDMUUsVUFBSUUsZUFBZSxDQUFDQSxlQUFlLENBQUN1QixNQUFoQixHQUF5QixDQUExQixDQUFmLEtBQWdEekIsSUFBSSxHQUFHLENBQTNELEVBQThEO0FBQzVERSxRQUFBQSxlQUFlLENBQUNBLGVBQWUsQ0FBQ3VCLE1BQWhCLEdBQXlCLENBQTFCLENBQWYsR0FBOEMsQ0FBOUM7QUFDRDs7QUFDRCxVQUFNYSxTQUFTLEdBQUcsS0FBSy9CLDBCQUFMLENBQ2hCLEtBQUtDLG1CQUFMLENBQXlCTixlQUF6QixFQUEwQ0YsSUFBMUMsQ0FEZ0IsRUFFaEJHLFlBRmdCLENBQWxCO0FBSUEsVUFBTW9DLFNBQVMsR0FBRyxLQUFLaEMsMEJBQUwsQ0FDaEIsS0FBS0YsbUJBQUwsQ0FBeUJILGVBQXpCLEVBQTBDRixJQUExQyxDQURnQixFQUVoQkcsWUFGZ0IsQ0FBbEI7QUFJQSxVQUFNcUMsWUFBWSxHQUFHLEtBQUtqQywwQkFBTCxDQUFnQ0wsZUFBaEMsRUFBaURDLFlBQWpELENBQXJCO0FBQ0EsVUFBTXNDLFNBQVMsR0FBRyxLQUFLQyxVQUFMLENBQWdCRixZQUFoQixFQUE4QkYsU0FBOUIsQ0FBbEI7QUFDQSxVQUFNSyxTQUFTLEdBQUcsS0FBS0QsVUFBTCxDQUFnQkYsWUFBaEIsRUFBOEJELFNBQTlCLENBQWxCO0FBQ0EsYUFBTyxDQUFDLEVBQUQsRUFBSyxFQUFMLEVBQVMsRUFBVCxFQUFhLEdBQWIsRUFBa0IsR0FBbEIsRUFBdUIsR0FBdkIsRUFBNEJLLFFBQTVCLENBQXFDUixJQUFJLENBQUNTLEdBQUwsQ0FBU0osU0FBUyxHQUFHRSxTQUFyQixDQUFyQyxDQUFQO0FBQ0Q7Ozt3Q0FFbUJ6QyxlLEVBQTJCRixJLEVBQXdCO0FBQ3JFLFVBQU04QyxJQUFJLHNCQUFPNUMsZUFBUCxDQUFWOztBQUNBLFVBQUk0QyxJQUFJLENBQUNyQixNQUFULEVBQWlCO0FBQ2ZxQixRQUFBQSxJQUFJLENBQUNBLElBQUksQ0FBQ3JCLE1BQUwsR0FBYyxDQUFmLENBQUosR0FBd0JxQixJQUFJLENBQUNBLElBQUksQ0FBQ3JCLE1BQUwsR0FBYyxDQUFmLENBQUosS0FBMEJ6QixJQUFJLEdBQUcsQ0FBakMsR0FBcUMsQ0FBckMsR0FBeUM4QyxJQUFJLENBQUNBLElBQUksQ0FBQ3JCLE1BQUwsR0FBYyxDQUFmLENBQUosR0FBd0IsQ0FBekY7QUFDRDs7QUFDRCxhQUFPcUIsSUFBUDtBQUNEOzs7d0NBRW1CNUMsZSxFQUEyQkYsSSxFQUF3QjtBQUNyRSxVQUFNK0MsSUFBSSxzQkFBTzdDLGVBQVAsQ0FBVjs7QUFDQSxVQUFJNkMsSUFBSSxDQUFDdEIsTUFBVCxFQUFpQjtBQUNmc0IsUUFBQUEsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEdBQXdCc0IsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEtBQTBCLENBQTFCLEdBQThCekIsSUFBSSxHQUFHLENBQXJDLEdBQXlDK0MsSUFBSSxDQUFDQSxJQUFJLENBQUN0QixNQUFMLEdBQWMsQ0FBZixDQUFKLEdBQXdCLENBQXpGO0FBQ0Q7O0FBQ0QsYUFBT3NCLElBQVA7QUFDRDs7OytDQUUwQjdDLGUsRUFBMkJDLFksRUFBc0I7QUFDMUUsVUFBSUcsRUFBSjtBQUNBLFVBQU11QixPQUFPLEdBQUcsS0FBS2YsNkJBQUwsR0FBcUNFLFNBQXJDLEdBQWlEYyxRQUFqRCxDQUEwRDNCLFlBQTFELENBQWhCO0FBQ0EsVUFBTTRCLFdBQWdCLEdBQUdGLE9BQU8sQ0FBQ0csUUFBUixDQUFpQkQsV0FBMUMsQ0FIMEUsQ0FJMUU7O0FBQ0EsVUFBSTdCLGVBQWUsQ0FBQ3VCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQUEsK0NBQ2R2QixlQURjO0FBQUEsWUFDekIrQixDQUR5QjtBQUFBLFlBQ3RCQyxDQURzQjtBQUFBLFlBQ25CYyxDQURtQjs7QUFFaEMsWUFBSWpCLFdBQVcsQ0FBQ04sTUFBWixJQUFzQk0sV0FBVyxDQUFDRSxDQUFELENBQVgsQ0FBZVIsTUFBekMsRUFBaUQ7QUFDL0NuQixVQUFBQSxFQUFFLEdBQUd5QixXQUFXLENBQUNFLENBQUQsQ0FBWCxDQUFlQyxDQUFmLEVBQWtCYyxDQUFsQixDQUFMO0FBQ0Q7QUFDRixPQUxELE1BS087QUFBQSwrQ0FDVTlDLGVBRFY7QUFBQSxZQUNFZ0MsR0FERjtBQUFBLFlBQ0tjLEVBREw7O0FBRUwsWUFBSWpCLFdBQVcsQ0FBQ04sTUFBWixJQUFzQk0sV0FBVyxDQUFDRyxHQUFELENBQVgsQ0FBZVQsTUFBekMsRUFBaUQ7QUFDL0NuQixVQUFBQSxFQUFFLEdBQUd5QixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGOztBQUNELGFBQU8xQyxFQUFQO0FBQ0Q7Ozs7RUExT2lDMkMsNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcblxuaW1wb3J0IHsgTW9kaWZ5SGFuZGxlciB9IGZyb20gJy4vbW9kaWZ5LWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRXh0cnVkZUhhbmRsZXIgZXh0ZW5kcyBNb2RpZnlIYW5kbGVyIHtcbiAgaXNQb2ludEFkZGVkID0gZmFsc2U7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICB0aGlzLl9sYXN0UG9pbnRlck1vdmVQaWNrcyA9IGV2ZW50LnBpY2tzO1xuXG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBvaW50ZXJEb3duUGlja3MpO1xuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgZWRpdEhhbmRsZSkge1xuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICBjb25zdCBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcztcbiAgICAgIC8vIHAxIGFuZCBwMSBhcmUgZW5kIHBvaW50cyBmb3IgZWRnZVxuICAgICAgY29uc3QgcDEgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICBpZiAocDEgJiYgcDIpIHtcbiAgICAgICAgLy8gcDMgYW5kIHA0IGFyZSBlbmQgcG9pbnRzIGZvciBtb3ZpbmcgKGV4dHJ1ZGluZykgZWRnZVxuICAgICAgICBjb25zdCBbcDMsIHA0XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBldmVudC5ncm91bmRDb29yZHMpO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBwNFxuICAgICAgICAgIClcbiAgICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIHAzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAnZXh0cnVkaW5nJyxcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGUuZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzOiB0aGlzLm5leHRQb3NpdGlvbkluZGV4ZXMoZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgY29uc3QgY2FuY2VsTWFwUGFuID0gQm9vbGVhbihlZGl0SGFuZGxlKTtcblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbiB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUgJiYgZWRpdEhhbmRsZS50eXBlID09PSAnaW50ZXJtZWRpYXRlJykge1xuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleFxuICAgICAgKTtcblxuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3J0aG9nb25hbChlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsIHNpemUpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBwMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLmlzT3J0aG9nb25hbChcbiAgICAgICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemVcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkUG9zaXRpb24oXG4gICAgICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcDFcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaXNQb2ludEFkZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgICAgIGVkaXRUeXBlOiAnc3RhcnRFeHRydWRpbmcnLFxuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBzaXplID0gdGhpcy5jb29yZGluYXRlc1NpemUoZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4KTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBzaXplKVxuICAgICAgICA6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4KTtcblxuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbmV3IG1vdmVkIChleHRydWRlZCkgZWRnZVxuICAgICAgICBjb25zdCBbcDMsIHA0XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBldmVudC5ncm91bmRDb29yZHMpO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBwNFxuICAgICAgICAgIClcbiAgICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIHAzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAnZXh0cnVkZWQnLFxuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaXNQb2ludEFkZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdLCBmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpLmdldE9iamVjdCgpLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG4gICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbnN0IFthLCBiXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgIHNpemUgPSBjb29yZGluYXRlc1thXVtiXS5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtiXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgZ2V0QmVhcmluZyhwMTogYW55LCBwMjogYW55KSB7XG4gICAgY29uc3QgYW5nbGUgPSBiZWFyaW5nKHAxLCBwMik7XG4gICAgaWYgKGFuZ2xlIDwgMCkge1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoMzYwICsgYW5nbGUpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcihhbmdsZSk7XG4gIH1cblxuICBpc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgZmVhdHVyZUluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcikge1xuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleFxuICAgICk7XG4gICAgY29uc3QgbmV4dFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgIHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgZmVhdHVyZUluZGV4XG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4KTtcbiAgICBjb25zdCBwcmV2QW5nbGUgPSB0aGlzLmdldEJlYXJpbmcoY3VycmVudFBvaW50LCBwcmV2UG9pbnQpO1xuICAgIGNvbnN0IG5leHRBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIG5leHRQb2ludCk7XG4gICAgcmV0dXJuIFs4OSwgOTAsIDkxLCAyNjksIDI3MCwgMjcxXS5pbmNsdWRlcyhNYXRoLmFicyhwcmV2QW5nbGUgLSBuZXh0QW5nbGUpKTtcbiAgfVxuXG4gIG5leHRQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10sIHNpemU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBwcmV2ID0gWy4uLnBvc2l0aW9uSW5kZXhlc107XG4gICAgaWYgKHByZXYubGVuZ3RoKSB7XG4gICAgICBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gPSBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gPT09IDAgPyBzaXplIC0gMiA6IHByZXZbcHJldi5sZW5ndGggLSAxXSAtIDE7XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbiAgZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgZmVhdHVyZUluZGV4OiBudW1iZXIpIHtcbiAgICBsZXQgcDE7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKS5nZXRPYmplY3QoKS5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgIC8vIGZvciBNdWx0aSBwb2x5Z29ucywgbGVuZ3RoIHdpbGwgYmUgM1xuICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbYSwgYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2FdLmxlbmd0aCkge1xuICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2JdW2NdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/mode-handler.js b/modules/layers/dist-es6/mode-handlers/mode-handler.js new file mode 100644 index 000000000..1eb9a502e --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/mode-handler.js @@ -0,0 +1,433 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPickedEditHandle = getPickedEditHandle; +exports.getIntermediatePosition = getIntermediatePosition; +exports.getEditHandlesForGeometry = getEditHandlesForGeometry; +exports.ModeHandler = void 0; + +var _union = _interopRequireDefault(require("@turf/union")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _intersect = _interopRequireDefault(require("@turf/intersect")); + +var _editModes = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 ModeHandler = /*#__PURE__*/function () { + // TODO: add underscore + function ModeHandler(featureCollection) { + _classCallCheck(this, ModeHandler); + + _defineProperty(this, "featureCollection", void 0); + + _defineProperty(this, "_tentativeFeature", void 0); + + _defineProperty(this, "_modeConfig", null); + + _defineProperty(this, "_selectedFeatureIndexes", []); + + _defineProperty(this, "_clickSequence", []); + + if (featureCollection) { + this.setFeatureCollection(featureCollection); + } + } + + _createClass(ModeHandler, [{ + key: "getFeatureCollection", + value: function getFeatureCollection() { + return this.featureCollection.getObject(); + } + }, { + key: "getImmutableFeatureCollection", + value: function getImmutableFeatureCollection() { + return this.featureCollection; + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature() { + if (this._selectedFeatureIndexes.length === 1) { + return this.featureCollection.getObject().features[this._selectedFeatureIndexes[0]]; + } + + return null; + } + }, { + key: "getSelectedGeometry", + value: function getSelectedGeometry() { + var feature = this.getSelectedFeature(); + + if (feature) { + return feature.geometry; + } + + return null; + } + }, { + key: "getSelectedFeaturesAsFeatureCollection", + value: function getSelectedFeaturesAsFeatureCollection() { + var _this$featureCollecti = this.featureCollection.getObject(), + features = _this$featureCollecti.features; + + var selectedFeatures = this.getSelectedFeatureIndexes().map(function (selectedIndex) { + return features[selectedIndex]; + }); + return { + type: 'FeatureCollection', + features: selectedFeatures + }; + } + }, { + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this.featureCollection = new _editModes.ImmutableFeatureCollection(featureCollection); + } + }, { + key: "getModeConfig", + value: function getModeConfig() { + return this._modeConfig; + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + if (this._modeConfig === modeConfig) { + return; + } + + this._modeConfig = modeConfig; + + this._setTentativeFeature(null); + } + }, { + key: "getSelectedFeatureIndexes", + value: function getSelectedFeatureIndexes() { + return this._selectedFeatureIndexes; + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + if (this._selectedFeatureIndexes === indexes) { + return; + } + + this._selectedFeatureIndexes = indexes; + + this._setTentativeFeature(null); + } + }, { + key: "getClickSequence", + value: function getClickSequence() { + return this._clickSequence; + } + }, { + key: "resetClickSequence", + value: function resetClickSequence() { + this._clickSequence = []; + } + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._tentativeFeature; + } // TODO: remove the underscore + + }, { + key: "_setTentativeFeature", + value: function _setTentativeFeature(tentativeFeature) { + this._tentativeFeature = tentativeFeature; + + if (!tentativeFeature) { + // Reset the click sequence + this._clickSequence = []; + } + } + /** + * Returns a flat array of positions for the given feature along with their indexes into the feature's geometry's coordinates. + * + * @param featureIndex The index of the feature to get edit handles + */ + + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + return []; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return 'cell'; + } + }, { + key: "isSelectionPicked", + value: function isSelectionPicked(picks) { + if (!picks.length) return false; + var pickedIndexes = picks.map(function (_ref2) { + var index = _ref2.index; + return index; + }); + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + return selectedFeatureIndexes.some(function (index) { + return pickedIndexes.includes(index); + }); + } + }, { + key: "getAddFeatureAction", + value: function getAddFeatureAction(geometry) { + // Unsure why flow can't deal with Geometry type, but there I fixed it + var geometryAsAny = geometry; + var updatedData = this.getImmutableFeatureCollection().addFeature({ + type: 'Feature', + properties: {}, + geometry: geometryAsAny + }).getObject(); + return { + updatedData: updatedData, + editType: 'addFeature', + featureIndexes: [updatedData.features.length - 1], + editContext: { + featureIndexes: [updatedData.features.length - 1] + } + }; + } + }, { + key: "getAddManyFeaturesAction", + value: function getAddManyFeaturesAction(featureCollection) { + var features = featureCollection.features; + var updatedData = this.getImmutableFeatureCollection(); + var initialIndex = updatedData.getObject().features.length; + var updatedIndexes = []; + + var _iterator = _createForOfIteratorHelper(features), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + var properties = feature.properties, + geometry = feature.geometry; + var geometryAsAny = geometry; + updatedData = updatedData.addFeature({ + type: 'Feature', + properties: properties, + geometry: geometryAsAny + }); + updatedIndexes.push(initialIndex + updatedIndexes.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + updatedData: updatedData.getObject(), + editType: 'addFeature', + featureIndexes: updatedIndexes, + editContext: { + featureIndexes: updatedIndexes + } + }; + } + }, { + key: "getAddFeatureOrBooleanPolygonAction", + value: function getAddFeatureOrBooleanPolygonAction(geometry) { + var selectedFeature = this.getSelectedFeature(); + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.booleanOperation) { + if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection'); + return null; + } + + var feature = { + type: 'Feature', + geometry: geometry + }; + var updatedGeometry; + + if (modeConfig.booleanOperation === 'union') { + updatedGeometry = (0, _union["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'difference') { + // @ts-ignore + updatedGeometry = (0, _difference["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'intersection') { + // @ts-ignore + updatedGeometry = (0, _intersect["default"])(selectedFeature, feature); + } else { + // eslint-disable-next-line no-console,no-undef + console.warn("Invalid booleanOperation ".concat(modeConfig.booleanOperation)); + return null; + } + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Boolean operation erased entire polygon.'); + return null; + } + + var featureIndex = this.getSelectedFeatureIndexes()[0]; + var updatedData = this.getImmutableFeatureCollection().replaceGeometry(featureIndex, updatedGeometry.geometry).getObject(); + var editAction = { + updatedData: updatedData, + editType: 'unionGeometry', + featureIndexes: [featureIndex], + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + + return this.getAddFeatureAction(geometry); + } + }, { + key: "handleClick", + value: function handleClick(event) { + this._clickSequence.push(event.groundCoords); + + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + return { + editAction: null, + cancelMapPan: false + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + return null; + } + }]); + + return ModeHandler; +}(); + +exports.ModeHandler = ModeHandler; + +function getPickedEditHandle(picks) { + var info = picks && picks.find(function (pick) { + return pick.isEditingHandle; + }); + + if (info) { + return info.object; + } + + return null; +} + +function getIntermediatePosition(position1, position2) { + var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore + + return intermediatePosition; +} + +function getEditHandlesForGeometry(geometry, featureIndex) { + var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing'; + var handles = []; + + switch (geometry.type) { + case 'Point': + // positions are not nested + handles = [{ + position: geometry.coordinates, + positionIndexes: [], + featureIndex: featureIndex, + type: editHandleType + }]; + break; + + case 'MultiPoint': + case 'LineString': + // positions are nested 1 level + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType)); + break; + + case 'Polygon': + case 'MultiLineString': + // positions are nested 2 levels + for (var a = 0; a < geometry.coordinates.length; a++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType)); + + if (geometry.type === 'Polygon') { + // Don't repeat the first/last handle for Polygons + handles = handles.slice(0, -1); + } + } + + break; + + case 'MultiPolygon': + // positions are nested 3 levels + for (var _a = 0; _a < geometry.coordinates.length; _a++) { + for (var b = 0; b < geometry.coordinates[_a].length; b++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons + + handles = handles.slice(0, -1); + } + } + + break; + + default: + // @ts-ignore + throw Error("Unhandled geometry type: ".concat(geometry.type)); + } + + return handles; +} + +function getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) { + var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing'; + var editHandles = []; + + for (var i = 0; i < coordinates.length; i++) { + var position = coordinates[i]; + editHandles.push({ + position: position, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]), + featureIndex: featureIndex, + type: editHandleType + }); + } + + return editHandles; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL21vZGUtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJNb2RlSGFuZGxlciIsImZlYXR1cmVDb2xsZWN0aW9uIiwic2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJfc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImxlbmd0aCIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJtYXAiLCJzZWxlY3RlZEluZGV4IiwidHlwZSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiX21vZGVDb25maWciLCJtb2RlQ29uZmlnIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJpbmRleGVzIiwiX2NsaWNrU2VxdWVuY2UiLCJfdGVudGF0aXZlRmVhdHVyZSIsInRlbnRhdGl2ZUZlYXR1cmUiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImlzRHJhZ2dpbmciLCJwaWNrZWRJbmRleGVzIiwiaW5kZXgiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic29tZSIsImluY2x1ZGVzIiwiZ2VvbWV0cnlBc0FueSIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJhZGRGZWF0dXJlIiwicHJvcGVydGllcyIsImVkaXRUeXBlIiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsImluaXRpYWxJbmRleCIsInVwZGF0ZWRJbmRleGVzIiwicHVzaCIsInNlbGVjdGVkRmVhdHVyZSIsImdldE1vZGVDb25maWciLCJib29sZWFuT3BlcmF0aW9uIiwiY29uc29sZSIsIndhcm4iLCJ1cGRhdGVkR2VvbWV0cnkiLCJmZWF0dXJlSW5kZXgiLCJyZXBsYWNlR2VvbWV0cnkiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImV2ZW50IiwiY2FuY2VsTWFwUGFuIiwiZ2V0UGlja2VkRWRpdEhhbmRsZSIsImluZm8iLCJmaW5kIiwicGljayIsImlzRWRpdGluZ0hhbmRsZSIsIm9iamVjdCIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iLCJnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5IiwiZWRpdEhhbmRsZVR5cGUiLCJoYW5kbGVzIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsInBvc2l0aW9uSW5kZXhlcyIsImNvbmNhdCIsImdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMiLCJhIiwic2xpY2UiLCJiIiwiRXJyb3IiLCJwb3NpdGlvbkluZGV4UHJlZml4IiwiZWRpdEhhbmRsZXMiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaUNhQSxXO0FBQ1g7QUFPQSx1QkFBWUMsaUJBQVosRUFBbUQ7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSx5Q0FKaEMsSUFJZ0M7O0FBQUEscURBSGYsRUFHZTs7QUFBQSw0Q0FGdEIsRUFFc0I7O0FBQ2pELFFBQUlBLGlCQUFKLEVBQXVCO0FBQ3JCLFdBQUtDLG9CQUFMLENBQTBCRCxpQkFBMUI7QUFDRDtBQUNGOzs7OzJDQUV5QztBQUN4QyxhQUFPLEtBQUtBLGlCQUFMLENBQXVCRSxTQUF2QixFQUFQO0FBQ0Q7OztvREFFMkQ7QUFDMUQsYUFBTyxLQUFLRixpQkFBWjtBQUNEOzs7eUNBRWdEO0FBQy9DLFVBQUksS0FBS0csdUJBQUwsQ0FBNkJDLE1BQTdCLEtBQXdDLENBQTVDLEVBQStDO0FBQzdDLGVBQU8sS0FBS0osaUJBQUwsQ0FBdUJFLFNBQXZCLEdBQW1DRyxRQUFuQyxDQUE0QyxLQUFLRix1QkFBTCxDQUE2QixDQUE3QixDQUE1QyxDQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7OzswQ0FFa0Q7QUFDakQsVUFBTUcsT0FBTyxHQUFH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LEdBQUdBLE9BQU8sQ0FBQ08sS0FBUixDQUFjLENBQWQsRUFBaUIsQ0FBQyxDQUFsQixDQUFWO0FBQ0Q7QUFDRjs7QUFFRDs7QUFDRjtBQUNFO0FBQ0EsWUFBTUUsS0FBSyxvQ0FBNkJsRSxRQUFRLENBQUNLLElBQXRDLEVBQVg7QUFyREo7O0FBd0RBLFNBQU9vRCxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssNEJBQVQsQ0FDRUgsV0FERixFQUVFUSxtQkFGRixFQUdFNUIsWUFIRixFQUtnQjtBQUFBLE1BRGRpQixjQUNjLHVFQURtQixVQUNuQjtBQUNkLE1BQU1ZLFdBQVcsR0FBRyxFQUFwQjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdWLFdBQVcsQ0FBQy9ELE1BQWhDLEVBQXdDeUUsQ0FBQyxFQUF6QyxFQUE2QztBQUMzQyxRQUFNWCxRQUFRLEdBQUdDLFdBQVcsQ0FBQ1UsQ0FBRCxDQUE1QjtBQUNBRCxJQUFBQSxXQUFXLENBQUNwQyxJQUFaLENBQWlCO0FBQ2YwQixNQUFBQSxRQUFRLEVBQVJBLFFBRGU7QUFFZkUsTUFBQUEsZUFBZSwrQkFBTU8sbUJBQU4sSUFBMkJFLENBQTNCLEVBRkE7QUFHZjlCLE1BQUFBLFlBQVksRUFBWkEsWUFIZTtBQUlmbEMsTUFBQUEsSUFBSSxFQUFFbUQ7QUFKUyxLQUFqQjtBQU1EOztBQUNELFNBQU9ZLFdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcblxuaW1wb3J0IHR1cmZVbmlvbiBmcm9tICdAdHVyZi91bmlvbic7XG5pbXBvcnQgdHVyZkRpZmZlcmVuY2UgZnJvbSAnQHR1cmYvZGlmZmVyZW5jZSc7XG5pbXBvcnQgdHVyZkludGVyc2VjdCBmcm9tICdAdHVyZi9pbnRlcnNlY3QnO1xuXG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIFBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb3NpdGlvbixcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRGVja0dMUGljayxcbn0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZycgfCAnaW50ZXJtZWRpYXRlJyB8ICdzbmFwJztcblxuZXhwb3J0IHR5cGUgRWRpdEhhbmRsZSA9IHtcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdO1xuICBmZWF0dXJlSW5kZXg6IG51bWJlcjtcbiAgdHlwZTogRWRpdEhhbmRsZVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0QWN0aW9uID0ge1xuICB1cGRhdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb247XG4gIGVkaXRUeXBlOiBzdHJpbmc7XG4gIGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXTtcbiAgZWRpdENvbnRleHQ6IGFueTtcbn07XG5cbmV4cG9ydCBjbGFzcyBNb2RlSGFuZGxlciB7XG4gIC8vIFRPRE86IGFkZCB1bmRlcnNjb3JlXG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgX3RlbnRhdGl2ZUZlYXR1cmU6IEZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfbW9kZUNvbmZpZzogYW55ID0gbnVsbDtcbiAgX3NlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IG51bWJlcltdID0gW107XG4gIF9jbGlja1NlcXVlbmNlOiBQb3NpdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoZmVhdHVyZUNvbGxlY3Rpb24/OiBGZWF0dXJlQ29sbGVjdGlvbikge1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgdGhpcy5zZXRGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTogRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuICB9XG5cbiAgZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlKCk6IEZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpLmZlYXR1cmVzW3RoaXMuX3NlbGVjdGVkRmVhdHVyZUluZGV4ZXNbMF1dO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFNlbGVjdGVkR2VvbWV0cnkoKTogR2VvbWV0cnkgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTogRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpLm1hcChcbiAgICAgIChzZWxlY3RlZEluZGV4KSA9PiBmZWF0dXJlc1tzZWxlY3RlZEluZGV4XVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogc2VsZWN0ZWRGZWF0dXJlcyxcbiAgICB9O1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5mZWF0dXJlQ29sbGVjdGlvbiA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gIH1cblxuICBnZXRNb2RlQ29uZmlnKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVDb25maWc7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tb2RlQ29uZmlnID09PSBtb2RlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbW9kZUNvbmZpZyA9IG1vZGVDb25maWc7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEZlYXR1cmVJbmRleGVzO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyhpbmRleGVzOiBudW1iZXJbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEZlYXR1cmVJbmRleGVzID09PSBpbmRleGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IGluZGV4ZXM7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICByZXNldENsaWNrU2VxdWVuY2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xpY2tTZXF1ZW5jZSA9IFtdO1xuICB9XG5cbiAgZ2V0VGVudGF0aXZlRmVhdHVyZSgpOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgdGhlIHVuZGVyc2NvcmVcbiAgX3NldFRlbnRhdGl2ZUZlYXR1cmUodGVudGF0aXZlRmVhdHVyZTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl90ZW50YXRpdmVGZWF0dXJlID0gdGVudGF0aXZlRmVhdHVyZTtcbiAgICBpZiAoIXRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBjbGljayBzZXF1ZW5jZVxuICAgICAgdGhpcy5fY2xpY2tTZXF1ZW5jZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZmxhdCBhcnJheSBvZiBwb3NpdGlvbnMgZm9yIHRoZSBnaXZlbiBmZWF0dXJlIGFsb25nIHdpdGggdGhlaXIgaW5kZXhlcyBpbnRvIHRoZSBmZWF0dXJlJ3MgZ2VvbWV0cnkncyBjb29yZGluYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gZ2V0IGVkaXQgaGFuZGxlc1xuICAgKi9cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2VsbCc7XG4gIH1cblxuICBpc1NlbGVjdGlvblBpY2tlZChwaWNrczogRGVja0dMUGlja1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwaWNrcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBwaWNrZWRJbmRleGVzID0gcGlja3MubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaW5jbHVkZXMoaW5kZXgpKTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnk6IEdlb21ldHJ5KTogRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGdlb21ldHJ5QXNBbnk6IGFueSA9IGdlb21ldHJ5O1xuXG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgIC5hZGRGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW3VwZGF0ZWREYXRhLmZlYXR1cmVzLmxlbmd0aCAtIDFdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbik6IEVkaXRBY3Rpb24ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXM7XG4gICAgbGV0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGNvbnN0IGluaXRpYWxJbmRleCA9IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLmZlYXR1cmVzLmxlbmd0aDtcbiAgICBjb25zdCB1cGRhdGVkSW5kZXhlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBnZW9tZXRyeSB9ID0gZmVhdHVyZTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5QXNBbnk6IGFueSA9IGdlb21ldHJ5O1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBnZW9tZXRyeTogZ2VvbWV0cnlBc0FueSxcbiAgICAgIH0pO1xuICAgICAgdXBkYXRlZEluZGV4ZXMucHVzaChpbml0aWFsSW5kZXggKyB1cGRhdGVkSW5kZXhlcy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZTogJ2FkZEZlYXR1cmUnLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHVwZGF0ZWRJbmRleGVzLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IHVwZGF0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24oZ2VvbWV0cnk6IFBvbHlnb24pOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeSxcbiAgICAgIH07XG5cbiAgICAgIGxldCB1cGRhdGVkR2VvbWV0cnk7XG4gICAgICBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAndW5pb24nKSB7XG4gICAgICAgIHVwZGF0ZWRHZW9tZXRyeSA9IHR1cmZVbmlvbihzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdkaWZmZXJlbmNlJykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHVwZGF0ZWRHZW9tZXRyeSA9IHR1cmZEaWZmZXJlbmNlKHNlbGVjdGVkRmVhdHVyZSwgZmVhdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ2ludGVyc2VjdGlvbicpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmSW50ZXJzZWN0KHNlbGVjdGVkRmVhdHVyZSwgZmVhdHVyZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgYm9vbGVhbk9wZXJhdGlvbiAke21vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbn1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICghdXBkYXRlZEdlb21ldHJ5KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIEJvb2xlYW4gb3BlcmF0aW9uIGVyYXNlZCBlbnRpcmUgcG9seWdvbi4nKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpWzBdO1xuXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5Lmdlb21ldHJ5KVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnkpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5fY2xpY2tTZXF1ZW5jZS5wdXNoKGV2ZW50Lmdyb3VuZENvb3Jkcyk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFZGl0SGFuZGxlKFxuICBwaWNrczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGluZm8gPSBwaWNrcyAmJiBwaWNrcy5maW5kKChwaWNrKSA9PiBwaWNrLmlzRWRpdGluZ0hhbmRsZSk7XG4gIGlmIChpbmZvKSB7XG4gICAgcmV0dXJuIGluZm8ub2JqZWN0O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24ocG9zaXRpb24xOiBQb3NpdGlvbiwgcG9zaXRpb24yOiBQb3NpdGlvbik6IFBvc2l0aW9uIHtcbiAgY29uc3QgaW50ZXJtZWRpYXRlUG9zaXRpb24gPSBbXG4gICAgKHBvc2l0aW9uMVswXSArIHBvc2l0aW9uMlswXSkgLyAyLjAsXG4gICAgKHBvc2l0aW9uMVsxXSArIHBvc2l0aW9uMlsxXSkgLyAyLjAsXG4gIF07XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGludGVybWVkaWF0ZVBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShcbiAgZ2VvbWV0cnk6IEdlb21ldHJ5LFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKSB7XG4gIGxldCBoYW5kbGVzOiBFZGl0SGFuZGxlW10gPSBbXTtcblxuICBzd2l0Y2ggKGdlb21ldHJ5LnR5cGUpIHtcbiAgICBjYXNlICdQb2ludCc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5vdCBuZXN0ZWRcbiAgICAgIGhhbmRsZXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbXSxcbiAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgdHlwZTogZWRpdEhhbmRsZVR5cGUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAxIGxldmVsXG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIFtdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAyIGxldmVsc1xuICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGErKykge1xuICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlc1thXSwgW2FdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgLy8gRG9uJ3QgcmVwZWF0IHRoZSBmaXJzdC9sYXN0IGhhbmRsZSBmb3IgUG9seWdvbnNcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDMgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGZvciAobGV0IGIgPSAwOyBiIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbYV0ubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlc1thXVtiXSxcbiAgICAgICAgICAgICAgW2EsIGJdLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhyb3cgRXJyb3IoYFVuaGFuZGxlZCBnZW9tZXRyeSB0eXBlOiAke2dlb21ldHJ5LnR5cGV9YCk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlcztcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhcbiAgY29vcmRpbmF0ZXM6IGFueVtdLFxuICBwb3NpdGlvbkluZGV4UHJlZml4OiBudW1iZXJbXSxcbiAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gIGVkaXRIYW5kbGVUeXBlOiBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZydcbik6IEVkaXRIYW5kbGVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgcG9zaXRpb24sXG4gICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpXSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIHR5cGU6IGVkaXRIYW5kbGVUeXBlLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBlZGl0SGFuZGxlcztcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/modify-handler.js b/modules/layers/dist-es6/mode-handlers/modify-handler.js new file mode 100644 index 000000000..2f630bf1d --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/modify-handler.js @@ -0,0 +1,316 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ModifyHandler = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ModifyHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ModifyHandler, _ModeHandler); + + var _super = _createSuper(ModifyHandler); + + function ModifyHandler() { + var _this; + + _classCallCheck(this, ModifyHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_lastPointerMovePicks", void 0); + + return _this; + } + + _createClass(ModifyHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var _this2 = this; + + var handles = []; + + var _this$featureCollecti = this.featureCollection.getObject(), + features = _this$featureCollecti.features; + + var _iterator = _createForOfIteratorHelper(this.getSelectedFeatureIndexes()), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _index = _step.value; + + if (_index < features.length) { + var _handles; + + var geometry = features[_index].geometry; + + (_handles = handles).push.apply(_handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, _index))); + } else { + console.warn("selectedFeatureIndexes out of range ".concat(_index)); // eslint-disable-line no-console,no-undef + } + } // intermediate edit handle + + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (picks && picks.length && groundCoords) { + var existingEditHandle = picks.find(function (pick) { + return pick.isEditingHandle && pick.object && pick.object.type === 'existing'; + }); // don't show intermediate point when too close to an existing edit handle + + var featureAsPick = !existingEditHandle && picks.find(function (pick) { + return !pick.isEditingHandle; + }); // is the feature in the pick selected + + if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && this.getSelectedFeatureIndexes().includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(groundCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this2.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles = [].concat(_toConsumableArray(handles), [{ + position: position, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]), + featureIndex: featureAsPick.index, + type: 'intermediate' + }]); + } + } + } + + return handles; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, modeConfig.viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleClick", + value: function handleClick(event) { + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (clickedEditHandle && clickedEditHandle.featureIndex >= 0) { + if (clickedEditHandle.type === 'existing') { + var updatedData; + + try { + updatedData = this.getImmutableFeatureCollection().removePosition(clickedEditHandle.featureIndex, clickedEditHandle.positionIndexes).getObject(); + } catch (ignored) {// This happens if user attempts to remove the last point + } + + if (updatedData) { + editAction = { + updatedData: updatedData, + editType: 'removePosition', + featureIndexes: [clickedEditHandle.featureIndex], + editContext: { + positionIndexes: clickedEditHandle.positionIndexes, + position: clickedEditHandle.position + } + }; + } + } else if (clickedEditHandle.type === 'intermediate') { + var _updatedData = this.getImmutableFeatureCollection().addPosition(clickedEditHandle.featureIndex, clickedEditHandle.positionIndexes, clickedEditHandle.position).getObject(); + + if (_updatedData) { + editAction = { + updatedData: _updatedData, + editType: 'addPosition', + featureIndexes: [clickedEditHandle.featureIndex], + editContext: { + positionIndexes: clickedEditHandle.positionIndexes, + position: clickedEditHandle.position + } + }; + } + } + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + this._lastPointerMovePicks = event.picks; + var editAction = null; + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (event.isDragging && editHandle) { + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'movePosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } // Cancel map panning if pointer went down on an edit handle + + + var cancelMapPan = Boolean(editHandle); + return { + editAction: editAction, + cancelMapPan: cancelMapPan + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle && editHandle.type === 'intermediate') { + var updatedData = this.getImmutableFeatureCollection().addPosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'addPosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } + + return editAction; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'finishMovePosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + var picks = this._lastPointerMovePicks; + + if (picks && picks.length > 0) { + var handlePicked = picks.some(function (pick) { + return pick.isEditingHandle; + }); + + if (handlePicked) { + return 'cell'; + } + } + + return isDragging ? 'grabbing' : 'grab'; + } + }]); + + return ModifyHandler; +}(_modeHandler.ModeHandler); + +exports.ModifyHandler = ModifyHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL21vZGlmeS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1vZGlmeUhhbmRsZXIiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImhhbmRsZXMiLCJmZWF0dXJlQ29sbGVjdGlvbiIsImdldE9iamVjdCIsImZlYXR1cmVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImluZGV4IiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJwdXNoIiwiY29uc29sZSIsIndhcm4iLCJleGlzdGluZ0VkaXRIYW5kbGUiLCJmaW5kIiwicGljayIsImlzRWRpdGluZ0hhbmRsZSIsIm9iamVjdCIsInR5cGUiLCJmZWF0dXJlQXNQaWNrIiwiaW5jbHVkZXMiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImNvb3JkaW5hdGVzIiwibGluZVN0cmluZyIsInByZWZpeCIsImxpbmVTdHJpbmdGZWF0dXJlIiwiY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQiLCJuZWFyZXN0UG9pbnRPbkxpbmUiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsInBvc2l0aW9uIiwicG9zaXRpb25JbmRleGVzIiwiZmVhdHVyZUluZGV4IiwibGluZSIsImluUG9pbnQiLCJzb21lIiwiY29vcmQiLCJtb2RlQ29uZmlnIiwiZ2V0TW9kZUNvbmZpZyIsInZpZXdwb3J0IiwibG9nIiwiZXZlbnQiLCJlZGl0QWN0aW9uIiwiY2xpY2tlZEVkaXRIYW5kbGUiLCJ1cGRhdGVkRGF0YSIsImdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwicmVtb3ZlUG9zaXRpb24iLCJpZ25vcmVkIiwiZWRpdFR5cGUiLCJmZWF0dXJlSW5kZXhlcyIsImVkaXRDb250ZXh0IiwiYWRkUG9zaXRpb24iLCJfbGFzdFBvaW50ZXJNb3ZlUGlja3MiLCJlZGl0SGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImlzRHJhZ2dpbmciLCJyZXBsYWNlUG9zaXRpb24iLCJjYW5jZWxNYXBQYW4iLCJCb29sZWFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImhhbmRsZVBpY2tlZCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFXQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0lBQ2FBLGE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUdJQyxLLEVBQW9DQyxZLEVBQXVDO0FBQUE7O0FBQ3hGLFVBQUlDLE9BQU8sR0FBRyxFQUFkOztBQUR3RixrQ0FFbkUsS0FBS0MsaUJBQUwsQ0FBdUJDLFNBQXZCLEVBRm1FO0FBQUEsVUFFaEZDLFFBRmdGLHlCQUVoRkEsUUFGZ0Y7O0FBQUEsaURBSXBFLEtBQUtDLHlCQUFMLEVBSm9FO0FBQUE7O0FBQUE7QUFJeEYsNERBQXNEO0FBQUEsY0FBM0NDLE1BQTJDOztBQUNwRCxjQUFJQSxNQUFLLEdBQUdGLFFBQVEsQ0FBQ0csTUFBckIsRUFBNkI7QUFBQTs7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05KLFFBQVEsQ0FBQ0UsTUFBRCxDQURGLENBQ25CRSxRQURtQjs7QUFFM0Isd0JBQUFQLE9BQU8sRUFBQ1EsSUFBUixvQ0FBZ0IsNENBQTBCRCxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBaEI7QUFDRCxXQUhELE1BR087QUFDTEksWUFBQUEsT0FBTyxDQUFDQyxJQUFSLCtDQUFvREwsTUFBcEQsR0FESyxDQUN5RDtBQUMvRDtBQUNGLFNBWHVGLENBYXhGOztBQWJ3RjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQWN4RixVQUFJUCxLQUFLLElBQUlBLEtBQUssQ0FBQ1EsTUFBZixJQUF5QlAsWUFBN0IsRUFBMkM7QUFDekMsWUFBTVksa0JBQWtCLEdBQUdiLEtBQUssQ0FBQ2MsSUFBTixDQUN6QixVQUFDQyxJQUFEO0FBQUEsaUJBQVVBLElBQUksQ0FBQ0MsZUFBTCxJQUF3QkQsSUFBSSxDQUFDRSxNQUE3QixJQUF1Q0YsSUFBSSxDQUFD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R0FBRyxLQUFLQyw2QkFBTCxHQUNqQlcsZUFEaUIsQ0FDREgsVUFBVSxDQUFDckIsWUFEVixFQUN3QnFCLFVBQVUsQ0FBQ3RCLGVBRG5DLEVBQ29EVSxLQUFLLENBQUMxQyxZQUQxRCxFQUVqQkcsU0FGaUIsRUFBcEI7QUFJQXdDLFFBQUFBLFVBQVUsR0FBRztBQUNYRSxVQUFBQSxXQUFXLEVBQVhBLFdBRFc7QUFFWEksVUFBQUEsUUFBUSxFQUFFLG9CQUZDO0FBR1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDSSxVQUFVLENBQUNyQixZQUFaLENBSEw7QUFJWGtCLFVBQUFBLFdBQVcsRUFBRTtBQUNYbkIsWUFBQUEsZUFBZSxFQUFFc0IsVUFBVSxDQUFDdEIsZUFEakI7QUFFWEQsWUFBQUEsUUFBUSxFQUFFVyxLQUFLLENBQUMxQztBQUZMO0FBSkYsU0FBYjtBQVNEOztBQUVELGFBQU8yQyxVQUFQO0FBQ0Q7OztvQ0FFMEQ7QUFBQSxVQUEvQ2EsVUFBK0MsUUFBL0NBLFVBQStDO0FBQ3pELFVBQU16RCxLQUFLLEdBQUcsS0FBS3NELHFCQUFuQjs7QUFFQSxVQUFJdEQsS0FBSyxJQUFJQSxLQUFLLENBQUNRLE1BQU4sR0FBZSxDQUE1QixFQUErQjtBQUM3QixZQUFNc0QsWUFBWSxHQUFHOUQsS0FBSyxDQUFDcUMsSUFBTixDQUFXLFVBQUN0QixJQUFEO0FBQUEsaUJBQVVBLElBQUksQ0FBQ0MsZUFBZjtBQUFBLFNBQVgsQ0FBckI7O0FBQ0EsWUFBSThDLFlBQUosRUFBa0I7QUFDaEIsaUJBQU8sTUFBUDtBQUNEO0FBQ0Y7O0FBRUQsYUFBT0wsVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBakM7QUFDRDs7OztFQTdPZ0NNLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZU9mLCBQb2ludCwgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG59IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRBY3Rpb24sXG4gIEVkaXRIYW5kbGUsXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBNb2RpZnlIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfbGFzdFBvaW50ZXJNb3ZlUGlja3M6IGFueTtcblxuICBnZXRFZGl0SGFuZGxlcyhwaWNrcz86IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LCBncm91bmRDb29yZHM/OiBQb3NpdGlvbik6IEVkaXRIYW5kbGVbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuXG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKSkge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgb3V0IG9mIHJhbmdlICR7aW5kZXh9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGludGVybWVkaWF0ZSBlZGl0IGhhbmRsZVxuICAgIGlmIChwaWNrcyAmJiBwaWNrcy5sZW5ndGggJiYgZ3JvdW5kQ29vcmRzKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0VkaXRIYW5kbGUgPSBwaWNrcy5maW5kKFxuICAgICAgICAocGljaykgPT4gcGljay5pc0VkaXRpbmdIYW5kbGUgJiYgcGljay5vYmplY3QgJiYgcGljay5vYmplY3QudHlwZSA9PT0gJ2V4aXN0aW5nJ1xuICAgICAgKTtcbiAgICAgIC8vIGRvbid0IHNob3cgaW50ZXJtZWRpYXRlIHBvaW50IHdoZW4gdG9vIGNsb3NlIHRvIGFuIGV4aXN0aW5nIGVkaXQgaGFuZGxlXG4gICAgICBjb25zdCBmZWF0dXJlQXNQaWNrID0gIWV4aXN0aW5nRWRpdEhhbmRsZSAmJiBwaWNrcy5maW5kKChwaWNrKSA9PiAhcGljay5pc0VkaXRpbmdIYW5kbGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgICFmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS50eXBlLmluY2x1ZGVzKCdQb2ludCcpICYmXG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpLmluY2x1ZGVzKGZlYXR1cmVBc1BpY2suaW5kZXgpXG4gICAgICApIHtcbiAgICAgICAgbGV0IGludGVybWVkaWF0ZVBvaW50OiBOZWFyZXN0UG9pbnRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgICAgIGxldCBwb3NpdGlvbkluZGV4UHJlZml4ID0gW107XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVBvaW50ID0gcG9pbnQoZ3JvdW5kQ29vcmRzKTtcbiAgICAgICAgLy8gcHJvY2VzcyBhbGwgbGluZXMgb2YgdGhlIChzaW5nbGUpIGZlYXR1cmVcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICAobGluZVN0cmluZywgcHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lU3RyaW5nRmVhdHVyZSA9IHRvTGluZVN0cmluZyhsaW5lU3RyaW5nKTtcblxuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludE9uTGluZShcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBsaW5lU3RyaW5nRmVhdHVyZSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlUG9pbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFpbnRlcm1lZGlhdGVQb2ludCB8fFxuICAgICAgICAgICAgICBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3QgPCBpbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVQb2ludCA9IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50O1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4UHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgLy8gdGFjayBvbiB0aGUgbG9uZSBpbnRlcm1lZGlhdGUgcG9pbnQgdG8gdGhlIHNldCBvZiBoYW5kbGVzXG4gICAgICAgIGlmIChpbnRlcm1lZGlhdGVQb2ludCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbiB9LFxuICAgICAgICAgICAgcHJvcGVydGllczogeyBpbmRleCB9LFxuICAgICAgICAgIH0gPSBpbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICBoYW5kbGVzID0gW1xuICAgICAgICAgICAgLi4uaGFuZGxlcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogWy4uLnBvc2l0aW9uSW5kZXhQcmVmaXgsIGluZGV4ICsgMV0sXG4gICAgICAgICAgICAgIGZlYXR1cmVJbmRleDogZmVhdHVyZUFzUGljay5pbmRleCxcbiAgICAgICAgICAgICAgdHlwZTogJ2ludGVybWVkaWF0ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcztcbiAgfVxuXG4gIC8vIHR1cmYuanMgZG9lcyBub3Qgc3VwcG9ydCBlbGV2YXRpb24gZm9yIG5lYXJlc3RQb2ludE9uTGluZVxuICBuZWFyZXN0UG9pbnRPbkxpbmUobGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LCBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+KTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgICBpZiAobW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLnZpZXdwb3J0KSB7XG4gICAgICAgIC8vIFRoaXMgbGluZSBoYXMgZWxldmF0aW9uLCB3ZSBuZWVkIHRvIHVzZSBhbHRlcm5hdGl2ZSBhbGdvcml0aG1cbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZShsaW5lLCBpblBvaW50LCBtb2RlQ29uZmlnLnZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG5cbiAgICBpZiAoY2xpY2tlZEVkaXRIYW5kbGUgJiYgY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4ID49IDApIHtcbiAgICAgIGlmIChjbGlja2VkRWRpdEhhbmRsZS50eXBlID09PSAnZXhpc3RpbmcnKSB7XG4gICAgICAgIGxldCB1cGRhdGVkRGF0YTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAgICAgLnJlbW92ZVBvc2l0aW9uKGNsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleCwgY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzKVxuICAgICAgICAgICAgLmdldE9iamVjdCgpO1xuICAgICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHVzZXIgYXR0ZW1wdHMgdG8gcmVtb3ZlIHRoZSBsYXN0IHBvaW50XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlZERhdGEpIHtcbiAgICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgICBlZGl0VHlwZTogJ3JlbW92ZVBvc2l0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xpY2tlZEVkaXRIYW5kbGUudHlwZSA9PT0gJ2ludGVybWVkaWF0ZScpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgICAgICAuYWRkUG9zaXRpb24oXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5wb3NpdGlvblxuICAgICAgICAgIClcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgICAgaWYgKHVwZGF0ZWREYXRhKSB7XG4gICAgICAgICAgZWRpdEFjdGlvbiA9IHtcbiAgICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2NsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIHRoaXMuX2xhc3RQb2ludGVyTW92ZVBpY2tzID0gZXZlbnQucGlja3M7XG5cbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZXZlbnQuaXNEcmFnZ2luZyAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ21vdmVQb3NpdGlvbicsXG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgY29uc3QgY2FuY2VsTWFwUGFuID0gQm9vbGVhbihlZGl0SGFuZGxlKTtcblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbiB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUgJiYgZWRpdEhhbmRsZS50eXBlID09PSAnaW50ZXJtZWRpYXRlJykge1xuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgICAgLmFkZFBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBldmVudC5ncm91bmRDb29yZHMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgZWRpdEFjdGlvbiA9IHtcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnZmluaXNoTW92ZVBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBpY2tzID0gdGhpcy5fbGFzdFBvaW50ZXJNb3ZlUGlja3M7XG5cbiAgICBpZiAocGlja3MgJiYgcGlja3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaGFuZGxlUGlja2VkID0gcGlja3Muc29tZSgocGljaykgPT4gcGljay5pc0VkaXRpbmdIYW5kbGUpO1xuICAgICAgaWYgKGhhbmRsZVBpY2tlZCkge1xuICAgICAgICByZXR1cm4gJ2NlbGwnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/rotate-handler.js b/modules/layers/dist-es6/mode-handlers/rotate-handler.js new file mode 100644 index 000000000..c26f7a98a --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/rotate-handler.js @@ -0,0 +1,161 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotateHandler = void 0; + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _transformRotate = _interopRequireDefault(require("@turf/transform-rotate")); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var RotateHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(RotateHandler, _ModeHandler); + + var _super = _createSuper(RotateHandler); + + function RotateHandler() { + var _this; + + _classCallCheck(this, RotateHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isRotatable", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingRotated", void 0); + + return _this; + } + + _createClass(RotateHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isRotatable = Boolean(this._geometryBeingRotated) || this.isSelectionPicked(event.picks); + + if (!this._isRotatable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeingRotated) { + // Rotate the geometry + editAction = this.getRotateAction(event.pointerDownGroundCoords, event.groundCoords, 'rotating'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isRotatable) { + return null; + } + + this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeingRotated) { + // Rotate the geometry + editAction = this.getRotateAction(event.pointerDownGroundCoords, event.groundCoords, 'rotated'); + this._geometryBeingRotated = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isRotatable) { + // TODO: look at doing SVG cursors to get a better "rotate" cursor + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getRotateAction", + value: function getRotateAction(startDragPoint, currentPoint, editType) { + var startPosition = startDragPoint; + var centroid = (0, _centroid["default"])(this._geometryBeingRotated); + var angle = getRotationAngle(centroid, startPosition, currentPoint); // @ts-ignore + + var rotatedFeatures = (0, _transformRotate["default"])(this._geometryBeingRotated, angle); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = rotatedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return RotateHandler; +}(_modeHandler.ModeHandler); + +exports.RotateHandler = RotateHandler; + +function getRotationAngle(centroid, startDragPoint, currentPoint) { + var bearing1 = (0, _bearing["default"])(centroid, startDragPoint); + var bearing2 = (0, _bearing["default"])(centroid, currentPoint); + return bearing2 - bearing1; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3JvdGF0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlJvdGF0ZUhhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJfaXNSb3RhdGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVpbmdSb3RhdGVkIiwiaXNTZWxlY3Rpb25QaWNrZWQiLCJwaWNrcyIsInBvaW50ZXJEb3duR3JvdW5kQ29vcmRzIiwiY2FuY2VsTWFwUGFuIiwiaXNEcmFnZ2luZyIsImdldFJvdGF0ZUFjdGlvbiIsImdyb3VuZENvb3JkcyIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsInN0YXJ0UG9zaXRpb24iLCJjZW50cm9pZCIsImFuZ2xlIiwiZ2V0Um90YXRpb25BbmdsZSIsInJvdGF0ZWRGZWF0dXJlcyIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJzZWxlY3RlZEluZGV4ZXMiLCJnZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiaSIsImxlbmd0aCIsInNlbGVjdGVkSW5kZXgiLCJtb3ZlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInJlcGxhY2VHZW9tZXRyeSIsImdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIiwiYmVhcmluZzEiLCJiZWFyaW5nMiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLVEMsSyxFQUNzRTtBQUN0RSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsV0FBS0MsWUFBTCxHQUFvQkMsT0FBTyxDQUFDLEtBQUtDLHFCQUFOLENBQVAsSUFBdUMsS0FBS0MsaUJBQUwsQ0FBdUJMLEtBQUssQ0FBQ00sS0FBN0IsQ0FBM0Q7O0FBRUEsVUFBSSxDQUFDLEtBQUtKLFlBQU4sSUFBc0IsQ0FBQ0YsS0FBSyxDQUFDTyx1QkFBakMsRUFBMEQ7QUFDeEQ7QUFDQSxlQUFPO0FBQUVOLFVBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CTyxVQUFBQSxZQUFZLEVBQUU7QUFBbEMsU0FBUDtBQUNEOztBQUVELFVBQUlSLEtBQUssQ0FBQ1MsVUFBTixJQUFvQixLQUFLTCxxQkFBN0IsRUFBb0Q7QUFDbEQ7QUFDQUgsUUFBQUEsVUFBVSxHQUFHLEtBQUtTLGVBQUwsQ0FDWFYsS0FBSyxDQUFDTyx1QkFESyxFQUVYUCxLQUFLLENBQUNXLFlBRkssRUFHWCxVQUhXLENBQWI7QUFLRDs7QUFFRCxhQUFPO0FBQUVWLFFBQUFBLFVBQVUsRUFBVkEsVUFBRjtBQUFjTyxRQUFBQSxZQUFZLEVBQUU7QUFBNUIsT0FBUDtBQUNEOzs7d0NBRW1CUixLLEVBQTBEO0FBQzVFLFVBQUksQ0FBQyxLQUFLRSxZQUFWLEVBQXdCO0FBQ3RCLGVBQU8sSUFBUDtBQUNEOztBQUVELFdBQUtFLHFCQUFMLEdBQTZCLEtBQUtRLHNDQUFMLEVBQTdCO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7Ozt1Q0FFa0JaLEssRUFBeUQ7QUFDMUUsVUFBSUMsVUFBeUMsR0FBRyxJQUFoRDs7QUFFQSxVQUFJLEtBQUtHLHFCQUFULEVBQWdDO0FBQzlCO0FBQ0FILFFBQUFBLFVBQVUsR0FBRyxLQUFLUyxlQUFMLENBQ1hWLEtBQUssQ0FBQ08sdUJBREssRUFFWFAsS0FBSyxDQUFDVyxZQUZLLEVBR1gsU0FIVyxDQUFiO0FBS0EsYUFBS1AscUJBQUwsR0FBNkIsSUFBN0I7QUFDRDs7QUFFRCxhQUFPSCxVQUFQO0FBQ0Q7OztvQ0FFMEQ7QUFBQSxVQUEvQ1EsVUFBK0MsUUFBL0NBLFVBQStDOztBQUN6RCxVQUFJLEtBQUtQLFlBQVQsRUFBdUI7QUFDckI7QUFDQSxlQUFPLE1BQVA7QUFDRDs7QUFDRCxhQUFPTyxVQUFVLEdBQUcsVUFBSCxHQUFnQixNQUFqQztBQUNEOzs7b0NBRWVJLGMsRUFBMEJDLFksRUFBd0JDLFEsRUFBOEI7QUFDOUYsVUFBTUMsYUFBYSxHQUFHSCxjQUF0QjtBQUNBLFVBQU1JLFFBQVEsR0FBRywwQkFBYSxLQUFLYixxQkFBbEIsQ0FBakI7QUFDQSxVQUFNYyxLQUFLLEdBQUdDLGdCQUFnQixDQUFDRixRQUFELEVBQVdELGFBQVgsRUFBMEJGLFlBQTFCLENBQTlCLENBSDhGLENBSTlGOztBQUNBLFVBQU1NLGVBQWUsR0FBRyxpQ0FBb0IsS0FBS2hCLHFCQUF6QixFQUFnRGMsS0FBaEQsQ0FBeEI7QUFFQSxVQUFJRyxXQUFXLEdBQUcsS0FBS0MsNkJBQUwsRUFBbEI7QUFFQSxVQUFNQyxlQUFlLEdBQUcsS0FBS0MseUJBQUwsRUFBeEI7O0FBQ0EsV0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixlQUFlLENBQUNHLE1BQXBDLEVBQTRDRCxDQUFDLEVBQTdDLEVBQWlEO0FBQy9DLFlBQU1FLGFBQWEsR0FBR0osZUFBZSxDQUFDRSxDQUFELENBQXJDO0FBQ0EsWUFBTUcsWUFBWSxHQUFHUixlQUFlLENBQUNTLFFBQWhCLENBQXlCSixDQUF6QixDQUFyQjtBQUNBSixRQUFBQSxXQUFXLEdBQUdBLFdBQVcsQ0FBQ1MsZUFBWixDQUE0QkgsYUFBNUIsRUFBMkNDLFlBQVksQ0FBQ0csUUFBeEQsQ0FBZDtBQUNEOztBQUVELGFBQU87QUFDTFYsUUFBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNXLFNBQVosRUFEUjtBQUVMakIsUUFBQUEsUUFBUSxFQUFSQSxRQUZLO0FBR0xrQixRQUFBQSxjQUFjLEVBQUVWLGVBSFg7QUFJTFcsUUFBQUEsV0FBVyxFQUFFO0FBSlIsT0FBUDtBQU1EOzs7O0VBbkZnQ0Msd0I7Ozs7QUFzRm5DLFNBQVNoQixnQkFBVCxDQUEwQkYsUUFBMUIsRUFBOENKLGNBQTlDLEVBQXdFQyxZQUF4RSxFQUFnRztBQUM5RixNQUFNc0IsUUFBUSxHQUFHLHlCQUFZbkIsUUFBWixFQUFzQkosY0FBdEIsQ0FBakI7QUFDQSxNQUFNd0IsUUFBUSxHQUFHLHlCQUFZcEIsUUFBWixFQUFzQkgsWUFBdEIsQ0FBakI7QUFDQSxTQUFPdUIsUUFBUSxHQUFHRCxRQUFsQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZDZW50cm9pZCBmcm9tICdAdHVyZi9jZW50cm9pZCc7XG5pbXBvcnQgdHVyZkJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBSb3RhdGVIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfaXNSb3RhdGFibGU6IGJvb2xlYW47XG4gIF9nZW9tZXRyeUJlaW5nUm90YXRlZDogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5faXNSb3RhdGFibGUgPSBCb29sZWFuKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKSB8fCB0aGlzLmlzU2VsZWN0aW9uUGlja2VkKGV2ZW50LnBpY2tzKTtcblxuICAgIGlmICghdGhpcy5faXNSb3RhdGFibGUgfHwgIWV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIC8vIFJvdGF0ZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMsXG4gICAgICAgIGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgJ3JvdGF0aW5nJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBlZGl0QWN0aW9uLCBjYW5jZWxNYXBQYW46IHRydWUgfTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRhYmxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCkge1xuICAgICAgLy8gUm90YXRlIHRoZSBnZW9tZXRyeVxuICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0Um90YXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bkdyb3VuZENvb3JkcyxcbiAgICAgICAgZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICAncm90YXRlZCdcbiAgICAgICk7XG4gICAgICB0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5faXNSb3RhdGFibGUpIHtcbiAgICAgIC8vIFRPRE86IGxvb2sgYXQgZG9pbmcgU1ZHIGN1cnNvcnMgdG8gZ2V0IGEgYmV0dGVyIFwicm90YXRlXCIgY3Vyc29yXG4gICAgICByZXR1cm4gJ21vdmUnO1xuICAgIH1cbiAgICByZXR1cm4gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLCBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLCBlZGl0VHlwZTogc3RyaW5nKTogRWRpdEFjdGlvbiB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0RHJhZ1BvaW50O1xuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0UG9zaXRpb24sIGN1cnJlbnRQb2ludCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJvdGF0ZWRGZWF0dXJlcyA9IHR1cmZUcmFuc2Zvcm1Sb3RhdGUodGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQsIGFuZ2xlKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRSb3RhdGlvbkFuZ2xlKGNlbnRyb2lkOiBQb3NpdGlvbiwgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLCBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uKSB7XG4gIGNvbnN0IGJlYXJpbmcxID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50KTtcbiAgY29uc3QgYmVhcmluZzIgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGJlYXJpbmcyIC0gYmVhcmluZzE7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/scale-handler.js b/modules/layers/dist-es6/mode-handlers/scale-handler.js new file mode 100644 index 000000000..81ab63e74 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/scale-handler.js @@ -0,0 +1,163 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ScaleHandler = void 0; + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformScale = _interopRequireDefault(require("@turf/transform-scale")); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ScaleHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ScaleHandler, _ModeHandler); + + var _super = _createSuper(ScaleHandler); + + function ScaleHandler() { + var _this; + + _classCallCheck(this, ScaleHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isScalable", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingScaled", void 0); + + return _this; + } + + _createClass(ScaleHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isScalable = Boolean(this._geometryBeingScaled) || this.isSelectionPicked(event.picks); + + if (!this._isScalable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeingScaled) { + // Scale the geometry + editAction = this.getScaleAction(event.pointerDownGroundCoords, event.groundCoords, 'scaling'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isScalable) { + return null; + } + + this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeingScaled) { + // Scale the geometry + editAction = this.getScaleAction(event.pointerDownGroundCoords, event.groundCoords, 'scaled'); + this._geometryBeingScaled = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isScalable) { + // TODO: look at doing SVG cursors to get a better "scale" cursor + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getScaleAction", + value: function getScaleAction(startDragPoint, currentPoint, editType) { + var startPosition = startDragPoint; + var centroid = (0, _centroid["default"])(this._geometryBeingScaled); + var factor = getScaleFactor(centroid, startPosition, currentPoint); // @ts-ignore + + var scaledFeatures = (0, _transformScale["default"])(this._geometryBeingScaled, factor, { + origin: centroid + }); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = scaledFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return ScaleHandler; +}(_modeHandler.ModeHandler); + +exports.ScaleHandler = ScaleHandler; + +function getScaleFactor(centroid, startDragPoint, currentPoint) { + var startDistance = (0, _distance["default"])(centroid, startDragPoint); + var endDistance = (0, _distance["default"])(centroid, currentPoint); + return endDistance / startDistance; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NjYWxlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiU2NhbGVIYW5kbGVyIiwiZXZlbnQiLCJlZGl0QWN0aW9uIiwiX2lzU2NhbGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVpbmdTY2FsZWQiLCJpc1NlbGVjdGlvblBpY2tlZCIsInBpY2tzIiwicG9pbnRlckRvd25Hcm91bmRDb29yZHMiLCJjYW5jZWxNYXBQYW4iLCJpc0RyYWdnaW5nIiwiZ2V0U2NhbGVBY3Rpb24iLCJncm91bmRDb29yZHMiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXJ0RHJhZ1BvaW50IiwiY3VycmVudFBvaW50IiwiZWRpdFR5cGUiLCJzdGFydFBvc2l0aW9uIiwiY2VudHJvaWQiLCJmYWN0b3IiLCJnZXRTY2FsZUZhY3RvciIsInNjYWxlZEZlYXR1cmVzIiwib3JpZ2luIiwidXBkYXRlZERhdGEiLCJnZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInNlbGVjdGVkSW5kZXhlcyIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJpIiwibGVuZ3RoIiwic2VsZWN0ZWRJbmRleCIsIm1vdmVkRmVhdHVyZSIsImZlYXR1cmVzIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJnZXRPYmplY3QiLCJmZWF0dXJlSW5kZXhlcyIsImVkaXRDb250ZXh0IiwiTW9kZUhhbmRsZXIiLCJzdGFydERpc3RhbmNlIiwiZW5kRGlzdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBS1RDLEssRUFDc0U7QUFDdEUsVUFBSUMsVUFBeUMsR0FBRyxJQUFoRDtBQUVBLFdBQUtDLFdBQUwsR0FBbUJDLE9BQU8sQ0FBQyxLQUFLQyxvQkFBTixDQUFQ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LEVBQXNFQyxZQUF0RSxFQUE4RjtBQUM1RixNQUFNdUIsYUFBYSxHQUFHLDBCQUFhcEIsUUFBYixFQUF1QkosY0FBdkIsQ0FBdEI7QUFDQSxNQUFNeUIsV0FBVyxHQUFHLDBCQUFhckIsUUFBYixFQUF1QkgsWUFBdkIsQ0FBcEI7QUFDQSxTQUFPd0IsV0FBVyxHQUFHRCxhQUFyQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZDZW50cm9pZCBmcm9tICdAdHVyZi9jZW50cm9pZCc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBTY2FsZUhhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIF9pc1NjYWxhYmxlOiBib29sZWFuO1xuICBfZ2VvbWV0cnlCZWluZ1NjYWxlZDogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5faXNTY2FsYWJsZSA9IEJvb2xlYW4odGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCkgfHwgdGhpcy5pc1NlbGVjdGlvblBpY2tlZChldmVudC5waWNrcyk7XG5cbiAgICBpZiAoIXRoaXMuX2lzU2NhbGFibGUgfHwgIWV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCkge1xuICAgICAgLy8gU2NhbGUgdGhlIGdlb21ldHJ5XG4gICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRTY2FsZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMsXG4gICAgICAgIGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgJ3NjYWxpbmcnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbjogdHJ1ZSB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNTY2FsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlaW5nU2NhbGVkKSB7XG4gICAgICAvLyBTY2FsZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldFNjYWxlQWN0aW9uKGV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzLCBldmVudC5ncm91bmRDb29yZHMsICdzY2FsZWQnKTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lzU2NhbGFibGUpIHtcbiAgICAgIC8vIFRPRE86IGxvb2sgYXQgZG9pbmcgU1ZHIGN1cnNvcnMgdG8gZ2V0IGEgYmV0dGVyIFwic2NhbGVcIiBjdXJzb3JcbiAgICAgIHJldHVybiAnbW92ZSc7XG4gICAgfVxuICAgIHJldHVybiBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgfVxuXG4gIGdldFNjYWxlQWN0aW9uKHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbiwgY3VycmVudFBvaW50OiBQb3NpdGlvbiwgZWRpdFR5cGU6IHN0cmluZyk6IEVkaXRBY3Rpb24ge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzdGFydERyYWdQb2ludDtcbiAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZCh0aGlzLl9nZW9tZXRyeUJlaW5nU2NhbGVkKTtcbiAgICBjb25zdCBmYWN0b3IgPSBnZXRTY2FsZUZhY3RvcihjZW50cm9pZCwgc3RhcnRQb3NpdGlvbiwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtU2NhbGUodGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCwgZmFjdG9yLCB7XG4gICAgICBvcmlnaW46IGNlbnRyb2lkLFxuICAgIH0pO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZEluZGV4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbaV07XG4gICAgICBjb25zdCBtb3ZlZEZlYXR1cmUgPSBzY2FsZWRGZWF0dXJlcy5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHNlbGVjdGVkSW5kZXhlcyxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3IoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBlbmREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGVuZERpc3RhbmNlIC8gc3RhcnREaXN0YW5jZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/snappable-handler.js b/modules/layers/dist-es6/mode-handlers/snappable-handler.js new file mode 100644 index 000000000..ad8ededff --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/snappable-handler.js @@ -0,0 +1,278 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SnappableHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var SnappableHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(SnappableHandler, _ModeHandler); + + var _super = _createSuper(SnappableHandler); + + function SnappableHandler(handler) { + var _this; + + _classCallCheck(this, SnappableHandler); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_handler", void 0); + + _defineProperty(_assertThisInitialized(_this), "_editHandlePicks", void 0); + + _defineProperty(_assertThisInitialized(_this), "_startDragSnapHandlePosition", void 0); + + _this._handler = handler; + return _this; + } + + _createClass(SnappableHandler, [{ + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this._handler.setFeatureCollection(featureCollection); + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + this._modeConfig = modeConfig; + + this._handler.setModeConfig(modeConfig); + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + this._handler.setSelectedFeatureIndexes(indexes); + } + }, { + key: "_getSnappedMouseEvent", + value: function _getSnappedMouseEvent(event, snapPoint) { + // @ts-ignore + return Object.assign({}, event, { + groundCoords: snapPoint, + pointerDownGroundCoords: this._startDragSnapHandlePosition + }); + } + }, { + key: "_getEditHandlePicks", + value: function _getEditHandlePicks(event) { + var picks = event.picks; + var potentialSnapHandle = picks.find(function (pick) { + return pick.object && pick.object.type === 'intermediate'; + }); + var handles = { + potentialSnapHandle: potentialSnapHandle && potentialSnapHandle.object + }; + var pickedHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (pickedHandle) { + return _objectSpread({}, handles, { + pickedHandle: pickedHandle + }); + } + + return handles; + } + }, { + key: "_updatePickedHandlePosition", + value: function _updatePickedHandlePosition(editAction) { + var _ref = this._editHandlePicks || {}, + pickedHandle = _ref.pickedHandle; + + if (pickedHandle && editAction) { + var featureIndexes = editAction.featureIndexes, + updatedData = editAction.updatedData; + + for (var i = 0; i < featureIndexes.length; i++) { + var selectedIndex = featureIndexes[i]; + var updatedFeature = updatedData.features[selectedIndex]; + var positionIndexes = pickedHandle.positionIndexes, + featureIndex = pickedHandle.featureIndex; + + if (selectedIndex >= 0 && featureIndex === selectedIndex) { + var coordinates = updatedFeature.geometry.coordinates; + pickedHandle.position = positionIndexes.reduce(function (a, b) { + return a[b]; + }, coordinates); + } + } + } + } // If additionalSnapTargets is present in modeConfig and is populated, this + // method will return those features along with the features + // that live in the current layer. Otherwise, this method will simply return the + // features from the current layer + + }, { + key: "_getSnapTargets", + value: function _getSnapTargets() { + var _ref2 = this.getModeConfig() || {}, + additionalSnapTargets = _ref2.additionalSnapTargets; + + additionalSnapTargets = additionalSnapTargets || []; + var features = [].concat(_toConsumableArray(this._handler.featureCollection.getObject().features), _toConsumableArray(additionalSnapTargets)); + return features; + } + }, { + key: "_getNonPickedIntermediateHandles", + value: function _getNonPickedIntermediateHandles() { + var handles = []; + + var features = this._getSnapTargets(); + + for (var i = 0; i < features.length; i++) { + // Filter out the currently selected feature(s) + var isCurrentIndexFeatureNotSelected = i < features.length && !this._handler.getSelectedFeatureIndexes().includes(i); + + if (isCurrentIndexFeatureNotSelected) { + var geometry = features[i].geometry; + handles.push.apply(handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, i, 'intermediate'))); + } + } + + return handles; + } // If no snap handle has been picked, only display the edit handles of the + // selected feature. If a snap handle has been picked, display said snap handle + // along with all snappable points on all non-selected features. + + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var _ref3 = this._modeConfig || {}, + enableSnapping = _ref3.enableSnapping; + + var handles = this._handler.getEditHandles(picks, groundCoords); + + if (!enableSnapping) return handles; + + var _ref4 = this._editHandlePicks || {}, + pickedHandle = _ref4.pickedHandle; + + if (pickedHandle) { + handles.push.apply(handles, _toConsumableArray(this._getNonPickedIntermediateHandles()).concat([pickedHandle])); + return handles; + } + + var _this$_handler$featur = this._handler.featureCollection.getObject(), + features = _this$_handler$featur.features; + + var _iterator = _createForOfIteratorHelper(this._handler.getSelectedFeatureIndexes()), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var index = _step.value; + + if (index < features.length) { + var geometry = features[index].geometry; + handles.push.apply(handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, index, 'snap'))); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return handles.filter(Boolean); + } + }, { + key: "_getSnapAwareEvent", + value: function _getSnapAwareEvent(event) { + var _ref5 = this._editHandlePicks || {}, + potentialSnapHandle = _ref5.potentialSnapHandle; + + return potentialSnapHandle && potentialSnapHandle.position ? this._getSnappedMouseEvent(event, potentialSnapHandle.position) : event; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + this._startDragSnapHandlePosition = ((0, _modeHandler.getPickedEditHandle)(event.picks) || {}).position; + return this._handler.handleStartDragging(event); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + // @ts-ignore + var modeActionSummary = this._handler.handleStopDragging(this._getSnapAwareEvent(event)); + + this._editHandlePicks = null; + return modeActionSummary; + } + }, { + key: "getCursor", + value: function getCursor(event) { + return this._handler.getCursor(event); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var _ref6 = this._handler.getModeConfig() || {}, + enableSnapping = _ref6.enableSnapping; + + if (enableSnapping) { + this._editHandlePicks = this._getEditHandlePicks(event); + } // @ts-ignore + + + var modeActionSummary = this._handler.handlePointerMove(this._getSnapAwareEvent(event)); + + var editAction = modeActionSummary.editAction; + + if (editAction) { + this._updatePickedHandlePosition(editAction); + } + + return modeActionSummary; + } + }]); + + return SnappableHandler; +}(_modeHandler.ModeHandler); + +exports.SnappableHandler = SnappableHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NuYXBwYWJsZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlNuYXBwYWJsZUhhbmRsZXIiLCJoYW5kbGVyIiwiX2hhbmRsZXIiLCJmZWF0dXJlQ29sbGVjdGlvbiIsInNldEZlYXR1cmVDb2xsZWN0aW9uIiwibW9kZUNvbmZpZyIsIl9tb2RlQ29uZmlnIiwic2V0TW9kZUNvbmZpZyIsImluZGV4ZXMiLCJzZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZXZlbnQiLCJzbmFwUG9pbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJncm91bmRDb29yZHMiLCJwb2ludGVyRG93bkdyb3VuZENvb3JkcyIsIl9zdGFydERyYWdTbmFwSGFuZGxlUG9zaXRpb24iLCJwaWNrcyIsInBvdGVudGlhbFNuYXBIYW5kbGUiLCJmaW5kIiwicGljayIsIm9iamVjdCIsInR5cGUiLCJoYW5kbGVzIiwicGlja2VkSGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImVkaXRBY3Rpb24iLCJfZWRpdEhhbmRsZVBpY2tzIiwiZmVhdHVyZUluZGV4ZXMiLCJ1cGRhdGVkRGF0YSIsImkiLCJsZW5ndGgiLCJzZWxlY3RlZEluZGV4IiwidXBkYXRlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInBvc2l0aW9uSW5kZXhlcyIsImZlYXR1cmVJbmRleCIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJwb3NpdGlvbiIsInJlZHVjZSIsImEiLCJiIiwiZ2V0TW9kZUNvbmZpZyIsImFkZGl0aW9uYWxTbmFwVGFyZ2V0cyIsImdldE9iamVjdCIsIl9nZXRTbmFwVGFyZ2V0cyIsImlzQ3VycmVudEluZGV4RmVhdHVyZU5vdFNlbGVjdGVkIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImVuYWJsZVNuYXBwaW5nIiwiZ2V0RWRpdEhhbmRsZXMiLCJfZ2V0Tm9uUGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlcyIsImluZGV4IiwiZmlsdGVyIiwiQm9vbGVhbiIsIl9nZXRTbmFwcGVkTW91c2VFdmVudCIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJtb2RlQWN0aW9uU3VtbWFyeSIsImhhbmRsZVN0b3BEcmFnZ2luZyIsIl9nZXRTbmFwQXdhcmVFdmVudCIsImdldEN1cnNvciIsIl9nZXRFZGl0SGFuZGxlUGlja3MiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl91cGRhdGVQaWNrZWRIYW5kbGVQb3NpdGlvbiIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUE7SUFDYUEsZ0I7Ozs7O0FBS1gsNEJBQVlDLE9BQVosRUFBa0M7QUFBQTs7QUFBQTs7QUFDaEM7O0FBRGdDOztBQUFBOztBQUFBOztBQUVoQyxVQUFLQyxRQUFMLEdBQWdCRCxPQUFoQjtBQUZnQztBQUdqQzs7Ozt5Q0FFb0JFLGlCLEVBQTRDO0FBQy9ELFdBQUtELFFBQUwsQ0FBY0Usb0JBQWQsQ0FBbUNELGlCQUFuQztBQUNEOzs7a0NBRWFFLFUsRUFBdUI7QUFDbkMsV0FBS0MsV0FBTCxHQUFtQkQsVUFBbkI7O0FBQ0EsV0FBS0gsUUFBTCxDQUFjSyxhQUFkLENBQTRCRixVQUE1QjtBQUNEOzs7OENBRXlCRyxPLEVBQXlCO0FBQ2pELFdBQUtOLFFBQUwsQ0FBY08seUJBQWQsQ0FBd0NELE9BQXhDO0FBQ0Q7OzswQ0FFcUJFLEssRUFBNEJDLFMsRUFBdUM7QUFDdkY7QUFDQSxhQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxLQUFsQixFQUF5QjtBQUM5QkksUUFBQUEsWUFBWSxFQUFFSCxTQURnQjtBQUU5QkksUUFBQUEsdUJBQXVCLEVBQUUsS0FBS0M7QUFGQSxPQUF6QixDQUFQO0FBSUQ7Ozt3Q0FFbUJOLEssRUFBc0M7QUFBQSxVQUNoRE8sS0FEZ0QsR0FDdENQLEtBRHNDLENBQ2hETyxLQURnRDtBQUd4RCxVQUFNQyxtQkFBbUIsR0FBR0QsS0FBSyxDQUFD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TWlELGlCQUFpQixHQUFHLEtBQUt6RCxRQUFMLENBQWM4RCxpQkFBZCxDQUFnQyxLQUFLSCxrQkFBTCxDQUF3Qm5ELEtBQXhCLENBQWhDLENBQTFCOztBQVBzRSxVQVE5RGdCLFVBUjhELEdBUS9DaUMsaUJBUitDLENBUTlEakMsVUFSOEQ7O0FBU3RFLFVBQUlBLFVBQUosRUFBZ0I7QUFDZCxhQUFLdUMsMkJBQUwsQ0FBaUN2QyxVQUFqQztBQUNEOztBQUVELGFBQU9pQyxpQkFBUDtBQUNEOzs7O0VBeEttQ08sd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlLCBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRIYW5kbGUsXG4gIEVkaXRBY3Rpb24sXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbnR5cGUgSGFuZGxlUGlja3MgPSB7IHBpY2tlZEhhbmRsZT86IEVkaXRIYW5kbGU7IHBvdGVudGlhbFNuYXBIYW5kbGU/OiBFZGl0SGFuZGxlIH07XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBTbmFwcGFibGVIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfaGFuZGxlcjogTW9kZUhhbmRsZXI7XG4gIF9lZGl0SGFuZGxlUGlja3M6IEhhbmRsZVBpY2tzIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3N0YXJ0RHJhZ1NuYXBIYW5kbGVQb3NpdGlvbjogUG9zaXRpb247XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogTW9kZUhhbmRsZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2hhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlci5zZXRGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGVDb25maWcgPSBtb2RlQ29uZmlnO1xuICAgIHRoaXMuX2hhbmRsZXIuc2V0TW9kZUNvbmZpZyhtb2RlQ29uZmlnKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVyLnNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlcyk7XG4gIH1cblxuICBfZ2V0U25hcHBlZE1vdXNlRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNuYXBQb2ludDogUG9zaXRpb24pOiBQb2ludGVyTW92ZUV2ZW50IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBncm91bmRDb29yZHM6IHNuYXBQb2ludCxcbiAgICAgIHBvaW50ZXJEb3duR3JvdW5kQ29vcmRzOiB0aGlzLl9zdGFydERyYWdTbmFwSGFuZGxlUG9zaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBfZ2V0RWRpdEhhbmRsZVBpY2tzKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogSGFuZGxlUGlja3Mge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgcG90ZW50aWFsU25hcEhhbmRsZSA9IHBpY2tzLmZpbmQoXG4gICAgICAocGljaykgPT4gcGljay5vYmplY3QgJiYgcGljay5vYmplY3QudHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgICApO1xuICAgIGNvbnN0IGhhbmRsZXMgPSB7IHBvdGVudGlhbFNuYXBIYW5kbGU6IHBvdGVudGlhbFNuYXBIYW5kbGUgJiYgcG90ZW50aWFsU25hcEhhbmRsZS5vYmplY3QgfTtcblxuICAgIGNvbnN0IHBpY2tlZEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHBpY2tlZEhhbmRsZSkge1xuICAgICAgcmV0dXJuIHsgLi4uaGFuZGxlcywgcGlja2VkSGFuZGxlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICBfdXBkYXRlUGlja2VkSGFuZGxlUG9zaXRpb24oZWRpdEFjdGlvbjogRWRpdEFjdGlvbikge1xuICAgIGNvbnN0IHsgcGlja2VkSGFuZGxlIH0gPSB0aGlzLl9lZGl0SGFuZGxlUGlja3MgfHwge307XG5cbiAgICBpZiAocGlja2VkSGFuZGxlICYmIGVkaXRBY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4ZXMsIHVwZGF0ZWREYXRhIH0gPSBlZGl0QWN0aW9uO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZlYXR1cmVJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBmZWF0dXJlSW5kZXhlc1tpXTtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZlYXR1cmUgPSB1cGRhdGVkRGF0YS5mZWF0dXJlc1tzZWxlY3RlZEluZGV4XTtcblxuICAgICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBwaWNrZWRIYW5kbGU7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDAgJiYgZmVhdHVyZUluZGV4ID09PSBzZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gdXBkYXRlZEZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgICAgICAgcGlja2VkSGFuZGxlLnBvc2l0aW9uID0gcG9zaXRpb25JbmRleGVzLnJlZHVjZShcbiAgICAgICAgICAgIChhOiBhbnlbXSwgYjogbnVtYmVyKSA9PiBhW2JdLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgYWRkaXRpb25hbFNuYXBUYXJnZXRzIGlzIHByZXNlbnQgaW4gbW9kZUNvbmZpZyBhbmQgaXMgcG9wdWxhdGVkLCB0aGlzXG4gIC8vIG1ldGhvZCB3aWxsIHJldHVybiB0aG9zZSBmZWF0dXJlcyBhbG9uZyB3aXRoIHRoZSBmZWF0dXJlc1xuICAvLyB0aGF0IGxpdmUgaW4gdGhlIGN1cnJlbnQgbGF5ZXIuIE90aGVyd2lzZSwgdGhpcyBtZXRob2Qgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZVxuICAvLyBmZWF0dXJlcyBmcm9tIHRoZSBjdXJyZW50IGxheWVyXG4gIF9nZXRTbmFwVGFyZ2V0cygpOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gdGhpcy5nZXRNb2RlQ29uZmlnKCkgfHwge307XG4gICAgYWRkaXRpb25hbFNuYXBUYXJnZXRzID0gYWRkaXRpb25hbFNuYXBUYXJnZXRzIHx8IFtdO1xuXG4gICAgY29uc3QgZmVhdHVyZXMgPSBbXG4gICAgICAuLi50aGlzLl9oYW5kbGVyLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpLmZlYXR1cmVzLFxuICAgICAgLi4uYWRkaXRpb25hbFNuYXBUYXJnZXRzLFxuICAgIF07XG4gICAgcmV0dXJuIGZlYXR1cmVzO1xuICB9XG5cbiAgX2dldE5vblBpY2tlZEludGVybWVkaWF0ZUhhbmRsZXMoKTogRWRpdEhhbmRsZVtdIHtcbiAgICBjb25zdCBoYW5kbGVzID0gW107XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLl9nZXRTbmFwVGFyZ2V0cygpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmUocylcbiAgICAgIGNvbnN0IGlzQ3VycmVudEluZGV4RmVhdHVyZU5vdFNlbGVjdGVkID1cbiAgICAgICAgaSA8IGZlYXR1cmVzLmxlbmd0aCAmJiAhdGhpcy5faGFuZGxlci5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCkuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdpbnRlcm1lZGlhdGUnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVzO1xuICB9XG5cbiAgLy8gSWYgbm8gc25hcCBoYW5kbGUgaGFzIGJlZW4gcGlja2VkLCBvbmx5IGRpc3BsYXkgdGhlIGVkaXQgaGFuZGxlcyBvZiB0aGVcbiAgLy8gc2VsZWN0ZWQgZmVhdHVyZS4gSWYgYSBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIGRpc3BsYXkgc2FpZCBzbmFwIGhhbmRsZVxuICAvLyBhbG9uZyB3aXRoIGFsbCBzbmFwcGFibGUgcG9pbnRzIG9uIGFsbCBub24tc2VsZWN0ZWQgZmVhdHVyZXMuXG4gIGdldEVkaXRIYW5kbGVzKHBpY2tzPzogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sIGdyb3VuZENvb3Jkcz86IFBvc2l0aW9uKTogYW55W10ge1xuICAgIGNvbnN0IHsgZW5hYmxlU25hcHBpbmcgfSA9IHRoaXMuX21vZGVDb25maWcgfHwge307XG4gICAgY29uc3QgaGFuZGxlcyA9IHRoaXMuX2hhbmRsZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3Jkcyk7XG5cbiAgICBpZiAoIWVuYWJsZVNuYXBwaW5nKSByZXR1cm4gaGFuZGxlcztcbiAgICBjb25zdCB7IHBpY2tlZEhhbmRsZSB9ID0gdGhpcy5fZWRpdEhhbmRsZVBpY2tzIHx8IHt9O1xuXG4gICAgaWYgKHBpY2tlZEhhbmRsZSkge1xuICAgICAgaGFuZGxlcy5wdXNoKC4uLnRoaXMuX2dldE5vblBpY2tlZEludGVybWVkaWF0ZUhhbmRsZXMoKSwgcGlja2VkSGFuZGxlKTtcbiAgICAgIHJldHVybiBoYW5kbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRoaXMuX2hhbmRsZXIuZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0aGlzLl9oYW5kbGVyLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKSkge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4LCAnc25hcCcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcy5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7IHBvdGVudGlhbFNuYXBIYW5kbGUgfSA9IHRoaXMuX2VkaXRIYW5kbGVQaWNrcyB8fCB7fTtcblxuICAgIHJldHVybiBwb3RlbnRpYWxTbmFwSGFuZGxlICYmIHBvdGVudGlhbFNuYXBIYW5kbGUucG9zaXRpb25cbiAgICAgID8gdGhpcy5fZ2V0U25hcHBlZE1vdXNlRXZlbnQoZXZlbnQsIHBvdGVudGlhbFNuYXBIYW5kbGUucG9zaXRpb24pXG4gICAgICA6IGV2ZW50O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX3N0YXJ0RHJhZ1NuYXBIYW5kbGVQb3NpdGlvbiA9IChnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKSB8fCB7fSkucG9zaXRpb247XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXIuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb2RlQWN0aW9uU3VtbWFyeSA9IHRoaXMuX2hhbmRsZXIuaGFuZGxlU3RvcERyYWdnaW5nKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50KSk7XG5cbiAgICB0aGlzLl9lZGl0SGFuZGxlUGlja3MgPSBudWxsO1xuICAgIHJldHVybiBtb2RlQWN0aW9uU3VtbWFyeTtcbiAgfVxuXG4gIGdldEN1cnNvcihldmVudDogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9oYW5kbGVyLmdldEN1cnNvcihldmVudCk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gdGhpcy5faGFuZGxlci5nZXRNb2RlQ29uZmlnKCkgfHwge307XG5cbiAgICBpZiAoZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHRoaXMuX2VkaXRIYW5kbGVQaWNrcyA9IHRoaXMuX2dldEVkaXRIYW5kbGVQaWNrcyhldmVudCk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb2RlQWN0aW9uU3VtbWFyeSA9IHRoaXMuX2hhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQpKTtcbiAgICBjb25zdCB7IGVkaXRBY3Rpb24gfSA9IG1vZGVBY3Rpb25TdW1tYXJ5O1xuICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVQaWNrZWRIYW5kbGVQb3NpdGlvbihlZGl0QWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZUFjdGlvblN1bW1hcnk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/split-polygon-handler.js b/modules/layers/dist-es6/mode-handlers/split-polygon-handler.js new file mode 100644 index 000000000..5771b50db --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/split-polygon-handler.js @@ -0,0 +1,295 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SplitPolygonHandler = void 0; + +var _booleanPointInPolygon = _interopRequireDefault(require("@turf/boolean-point-in-polygon")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _helpers = require("@turf/helpers"); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _nearestPointOnLine = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var SplitPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(SplitPolygonHandler, _ModeHandler); + + var _super = _createSuper(SplitPolygonHandler); + + function SplitPolygonHandler() { + _classCallCheck(this, SplitPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(SplitPolygonHandler, [{ + key: "calculateGroundCoords", + value: function calculateGroundCoords(clickSequence, groundCoords) { + var modeConfig = this.getModeConfig(); + + if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) { + return groundCoords; + } + + if (clickSequence.length === 1) { + // if first point is clicked, then find closest polygon point and build ~90deg vector + var firstPoint = clickSequence[0]; + var selectedGeometry = this.getSelectedGeometry(); // @ts-ignore + + var feature = (0, _polygonToLine["default"])(selectedGeometry); + var lines = feature.type === 'FeatureCollection' ? feature.features : [feature]; + var minDistance = Number.MAX_SAFE_INTEGER; + var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it. + + lines.forEach(function (line) { + var snapPoint = (0, _nearestPointOnLine["default"])(line, firstPoint); + var distanceFromOrigin = (0, _distance["default"])(snapPoint, firstPoint); + + if (minDistance > distanceFromOrigin) { + minDistance = distanceFromOrigin; + closestPoint = snapPoint; + } + }); + + if (closestPoint) { + // closest point is used as 90degree entry to the polygon + var lastBearing = (0, _bearing["default"])(firstPoint, closestPoint); + var currentDistance = (0, _distance["default"])(firstPoint, groundCoords, { + units: 'meters' + }); + return (0, _destination["default"])(firstPoint, currentDistance, lastBearing, { + units: 'meters' + }).geometry.coordinates; + } + + return groundCoords; + } // Allow only 90 degree turns + + + var lastPoint = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1), + approximatePoint = _generatePointsParall2[0]; // align point with current ground + + + var nearestPt = (0, _nearestPointOnLine["default"])((0, _helpers.lineString)([lastPoint, approximatePoint]), groundCoords).geometry.coordinates; + return nearestPt; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(SplitPolygonHandler.prototype), "handleClick", this).call(this, _objectSpread({}, event, { + groundCoords: this.calculateGroundCoords(this.getClickSequence(), event.groundCoords) + })); + + var editAction = null; + var tentativeFeature = this.getTentativeFeature(); + var selectedGeometry = this.getSelectedGeometry(); + var clickSequence = this.getClickSequence(); + + if (!selectedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('A polygon must be selected for splitting'); + + this._setTentativeFeature(null); + + return editAction; + } + + var pt = { + type: 'Point', + coordinates: clickSequence[clickSequence.length - 1] + }; // @ts-ignore + + var isPointInPolygon = (0, _booleanPointInPolygon["default"])(pt, selectedGeometry); + + if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) { + this.resetClickSequence(); // @ts-ignore + + var isLineInterectingWithPolygon = (0, _lineIntersect["default"])(tentativeFeature, selectedGeometry); + + if (isLineInterectingWithPolygon.features.length === 0) { + this._setTentativeFeature(null); + + return editAction; + } + + return this.splitPolygon(); + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateGroundCoords(clickSequence, groundCoords)]) + } + }); + + return result; + } + }, { + key: "splitPolygon", + value: function splitPolygon() { + var selectedGeometry = this.getSelectedGeometry(); + var tentativeFeature = this.getTentativeFeature(); + var featureIndex = this.getSelectedFeatureIndexes()[0]; + var modeConfig = this.getModeConfig() || {}; // Default gap in between the polygon + + var _modeConfig$gap = modeConfig.gap, + gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap, + _modeConfig$units = modeConfig.units, + units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units; + + if (gap === 0) { + gap = 0.1; + units = 'centimeters'; + } // @ts-ignore + + + var buffer = (0, _buffer["default"])(tentativeFeature, gap, { + units: units + }); // @ts-ignore + + var updatedGeometry = (0, _difference["default"])(selectedGeometry, buffer); + + this._setTentativeFeature(null); + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Split Polygon erased'); + return null; + } + + var _updatedGeometry$geom = updatedGeometry.geometry, + type = _updatedGeometry$geom.type, + coordinates = _updatedGeometry$geom.coordinates; + var updatedCoordinates = []; + + if (type === 'Polygon') { + // Update the coordinates as per Multipolygon + // @ts-ignore + updatedCoordinates = coordinates.map(function (c) { + return [c]; + }); + } else { + // Handle Case when Multipolygon has holes + // @ts-ignore + updatedCoordinates = coordinates.reduce(function (agg, prev) { + prev.forEach(function (p) { + agg.push([p]); + }); + return agg; + }, []); + } // Update the type to Mulitpolygon + + + var updatedData = this.getImmutableFeatureCollection().replaceGeometry(featureIndex, { + type: 'MultiPolygon', + coordinates: updatedCoordinates + }); + var editAction = { + updatedData: updatedData.getObject(), + editType: 'split', + featureIndexes: [featureIndex], + editContext: null + }; + return editAction; + } + }]); + + return SplitPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.SplitPolygonHandler = SplitPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NwbGl0LXBvbHlnb24taGFuZGxlci50cyJdLCJuYW1lcyI6WyJTcGxpdFBvbHlnb25IYW5kbGVyIiwiY2xpY2tTZXF1ZW5jZSIsImdyb3VuZENvb3JkcyIsIm1vZGVDb25maWciLCJnZXRNb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJldmVudCIsImNhbGN1bGF0ZUdyb3VuZENvb3JkcyIsImdldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjb25zb2xlIiwid2FybiIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsInNwbGl0UG9seWdvbiIsInJlc3VsdCIsImNhbmNlbE1hcFBhbiIsImZlYXR1cmVJbmRleCIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJnYXAiLCJidWZmZXIiLCJ1cGRhdGVkR2VvbWV0cnkiLCJ1cGRhdGVkQ29vcmRpbmF0ZXMiLCJtYXAiLCJjIiwicmVkdWNlIiwiYWdnIiwicHJldiIsInAiLCJwdXNoIiwidXBkYXRlZERhdGEiLCJnZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VHZW9tZXRyeSIsImdldE9iamVjdCIsImVkaXRUeXBlIiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsbUI7Ozs7Ozs7Ozs7Ozs7MENBQ1dDLGEsRUFBb0JDLFksRUFBbUI7QUFDM0QsVUFBTUMsVUFBVSxHQUFHLEtBQUtDLGFBQUwsRUFBbkI7O0FBQ0EsVUFBSSxDQUFDRCxVQUFELElBQWUsQ0FBQ0EsVUFBVSxDQUFDRSxZQUEzQixJQUEyQyxDQUFDSixhQUFhLENBQUNLLE1BQTlELEVBQXNFO0FBQ3BFLGVBQU9KLFlBQVA7QUFDRDs7QUFDRCxVQUFJRCxhQUFhLENBQUNLLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxZQUFNQyxVQUFVLEdBQUdOLGFBQWEsQ0FBQyxDQUFELENBQWhDO0FBQ0EsWUFBTU8sZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsRUFBekIsQ0FIOEIsQ0FJOUI7O0FBQ0EsWUFBTUMsT0FBTyxHQUFHLCtCQUFrQkYsZ0JBQWxCLENBQWhCO0FBRUEsWUFBTUcsS0FBSyxHQUFHRCxPQUFPLENBQUNFLElBQVIsS0FBaUIsbUJBQWpCLEdBQXVDRixPQUFPLENBQUNHLFFBQS9DLEdBQTBELENBQUNILE9BQUQsQ0FBeEU7QUFDQSxZQUFJSSxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsZ0JBQXpCO0FBQ0EsWUFBSUMsWUFBWSxHQUFHLElBQW5CLENBVDhCLENBVTlCOztBQUNBTixRQUFBQSxLQUFLLENBQUNPLE9BQU4sQ0FBYyxVQUFDQyxJQUFELEVBQVU7QUFDdEIsY0FBTUMs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WUFBckQsRUFBbUU7QUFDckZsQyxRQUFBQSxJQUFJLEVBQUUsY0FEK0U7QUFFckZjLFFBQUFBLFdBQVcsRUFBRXlCO0FBRndFLE9BQW5FLENBQXBCO0FBS0EsVUFBTWxCLFVBQXNCLEdBQUc7QUFDN0IwQixRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ0csU0FBWixFQURnQjtBQUU3QkMsUUFBQUEsUUFBUSxFQUFFLE9BRm1CO0FBRzdCQyxRQUFBQSxjQUFjLEVBQUUsQ0FBQ2xCLFlBQUQsQ0FIYTtBQUk3Qm1CLFFBQUFBLFdBQVcsRUFBRTtBQUpnQixPQUEvQjtBQU9BLGFBQU9oQyxVQUFQO0FBQ0Q7Ozs7RUFqS3NDaUMsd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYm9vbGVhblBvaW50SW5Qb2x5Z29uIGZyb20gJ0B0dXJmL2Jvb2xlYW4tcG9pbnQtaW4tcG9seWdvbic7XG5pbXBvcnQgdHVyZkRpZmZlcmVuY2UgZnJvbSAnQHR1cmYvZGlmZmVyZW5jZSc7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHsgbGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHR1cmZCZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCB0dXJmUG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBFZGl0QWN0aW9uLCBNb2RlSGFuZGxlciB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIFNwbGl0UG9seWdvbkhhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIGNhbGN1bGF0ZUdyb3VuZENvb3JkcyhjbGlja1NlcXVlbmNlOiBhbnksIGdyb3VuZENvb3JkczogYW55KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuZ2V0TW9kZUNvbmZpZygpO1xuICAgIGlmICghbW9kZUNvbmZpZyB8fCAhbW9kZUNvbmZpZy5sb2NrOTBEZWdyZWUgfHwgIWNsaWNrU2VxdWVuY2UubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZ3JvdW5kQ29vcmRzO1xuICAgIH1cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIC8vIGlmIGZpcnN0IHBvaW50IGlzIGNsaWNrZWQsIHRoZW4gZmluZCBjbG9zZXN0IHBvbHlnb24gcG9pbnQgYW5kIGJ1aWxkIH45MGRlZyB2ZWN0b3JcbiAgICAgIGNvbnN0IGZpcnN0UG9pbnQgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeSgpO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZmVhdHVyZSA9IHR1cmZQb2x5Z29uVG9MaW5lKHNlbGVjdGVkR2VvbWV0cnkpO1xuXG4gICAgICBjb25zdCBsaW5lcyA9IGZlYXR1cmUudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyA/IGZlYXR1cmUuZmVhdHVyZXMgOiBbZmVhdHVyZV07XG4gICAgICBsZXQgbWluRGlzdGFuY2UgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgIGxldCBjbG9zZXN0UG9pbnQgPSBudWxsO1xuICAgICAgLy8gSWYgTXVsdGlwb2x5Z29uLCB0aGVuIHdlIHNob3VsZCBmaW5kIG5lYXJlc3QgcG9seWdvbiBsaW5lIGFuZCBzdGljayBzcGxpdCB0byBpdC5cbiAgICAgIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgY29uc3Qgc25hcFBvaW50ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGZpcnN0UG9pbnQpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21PcmlnaW4gPSB0dXJmRGlzdGFuY2Uoc25hcFBvaW50LCBmaXJzdFBvaW50KTtcbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlID4gZGlzdGFuY2VGcm9tT3JpZ2luKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZUZyb21PcmlnaW47XG4gICAgICAgICAgY2xvc2VzdFBvaW50ID0gc25hcFBvaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNsb3Nlc3RQb2ludCkge1xuICAgICAgICAvLyBjbG9zZXN0IHBvaW50IGlzIHVzZWQgYXMgOTBkZWdyZWUgZW50cnkgdG8gdGhlIHBvbHlnb25cbiAgICAgICAgY29uc3QgbGFzdEJlYXJpbmcgPSB0dXJmQmVhcmluZyhmaXJzdFBvaW50LCBjbG9zZXN0UG9pbnQpO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSB0dXJmRGlzdGFuY2UoZmlyc3RQb2ludCwgZ3JvdW5kQ29vcmRzLCB7IHVuaXRzOiAnbWV0ZXJzJyB9KTtcbiAgICAgICAgcmV0dXJuIHR1cmZEZXN0aW5hdGlvbihmaXJzdFBvaW50LCBjdXJyZW50RGlzdGFuY2UsIGxhc3RCZWFyaW5nLCB7XG4gICAgICAgICAgdW5pdHM6ICdtZXRlcnMnLFxuICAgICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91bmRDb29yZHM7XG4gICAgfVxuICAgIC8vIEFsbG93IG9ubHkgOTAgZGVncmVlIHR1cm5zXG4gICAgY29uc3QgbGFzdFBvaW50ID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IFthcHByb3hpbWF0ZVBvaW50XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMoXG4gICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMl0sXG4gICAgICBsYXN0UG9pbnQsXG4gICAgICBncm91bmRDb29yZHNcbiAgICApO1xuICAgIC8vIGFsaWduIHBvaW50IHdpdGggY3VycmVudCBncm91bmRcbiAgICBjb25zdCBuZWFyZXN0UHQgPSBuZWFyZXN0UG9pbnRPbkxpbmUobGluZVN0cmluZyhbbGFzdFBvaW50LCBhcHByb3hpbWF0ZVBvaW50XSksIGdyb3VuZENvb3JkcylcbiAgICAgIC5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICByZXR1cm4gbmVhcmVzdFB0O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgc3VwZXIuaGFuZGxlQ2xpY2soe1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBncm91bmRDb29yZHM6IHRoaXMuY2FsY3VsYXRlR3JvdW5kQ29vcmRzKHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpLCBldmVudC5ncm91bmRDb29yZHMpLFxuICAgIH0pO1xuICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeSgpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICBjb25zdCBwdCA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGlzUG9pbnRJblBvbHlnb24gPSBib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHNlbGVjdGVkR2VvbWV0cnkpO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiYgdGVudGF0aXZlRmVhdHVyZSAmJiAhaXNQb2ludEluUG9seWdvbikge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlzTGluZUludGVyZWN0aW5nV2l0aFBvbHlnb24gPSBsaW5lSW50ZXJzZWN0KHRlbnRhdGl2ZUZlYXR1cmUsIHNlbGVjdGVkR2VvbWV0cnkpO1xuICAgICAgaWYgKGlzTGluZUludGVyZWN0aW5nV2l0aFBvbHlnb24uZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUobnVsbCk7XG4gICAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3BsaXRQb2x5Z29uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZSh7XG4gICAgZ3JvdW5kQ29vcmRzLFxuICB9OiBQb2ludGVyTW92ZUV2ZW50KTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVHcm91bmRDb29yZHMoY2xpY2tTZXF1ZW5jZSwgZ3JvdW5kQ29vcmRzKV0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNwbGl0UG9seWdvbigpIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlRmVhdHVyZSgpO1xuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSB0aGlzLmdldE1vZGVDb25maWcoKSB8fCB7fTtcblxuICAgIC8vIERlZmF1bHQgZ2FwIGluIGJldHdlZW4gdGhlIHBvbHlnb25cbiAgICBsZXQgeyBnYXAgPSAwLjEsIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJyB9ID0gbW9kZUNvbmZpZztcbiAgICBpZiAoZ2FwID09PSAwKSB7XG4gICAgICBnYXAgPSAwLjE7XG4gICAgICB1bml0cyA9ICdjZW50aW1ldGVycyc7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKG51bGwpO1xuICAgIGlmICghdXBkYXRlZEdlb21ldHJ5KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgY29uc29sZS53YXJuKCdDYW5jZWxpbmcgZWRpdC4gU3BsaXQgUG9seWdvbiBlcmFzZWQnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgdHlwZSwgY29vcmRpbmF0ZXMgfSA9IHVwZGF0ZWRHZW9tZXRyeS5nZW9tZXRyeTtcbiAgICBsZXQgdXBkYXRlZENvb3JkaW5hdGVzID0gW107XG4gICAgaWYgKHR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgLy8gVXBkYXRlIHRoZSBjb29yZGluYXRlcyBhcyBwZXIgTXVsdGlwb2x5Z29uXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1cGRhdGVkQ29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcy5tYXAoKGMpID0+IFtjXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBDYXNlIHdoZW4gTXVsdGlwb2x5Z29uIGhhcyBob2xlc1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMucmVkdWNlKChhZ2csIHByZXYpID0+IHtcbiAgICAgICAgcHJldi5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgYWdnLnB1c2goW3BdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhZ2c7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSB0eXBlIHRvIE11bGl0cG9seWdvblxuICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHtcbiAgICAgIHR5cGU6ICdNdWx0aVBvbHlnb24nLFxuICAgICAgY29vcmRpbmF0ZXM6IHVwZGF0ZWRDb29yZGluYXRlcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gPSB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZTogJ3NwbGl0JyxcbiAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/three-click-polygon-handler.js b/modules/layers/dist-es6/mode-handlers/three-click-polygon-handler.js new file mode 100644 index 000000000..fe17009e2 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/three-click-polygon-handler.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ThreeClickPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ThreeClickPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ThreeClickPolygonHandler, _ModeHandler); + + var _super = _createSuper(ThreeClickPolygonHandler); + + function ThreeClickPolygonHandler() { + _classCallCheck(this, ThreeClickPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(ThreeClickPolygonHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(ThreeClickPolygonHandler.prototype), "handleClick", this).call(this, event); + + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry); + this.resetClickSequence(); + + this._setTentativeFeature(null); + + return editAction; + } + + return null; + } + }]); + + return ThreeClickPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.ThreeClickPolygonHandler = ThreeClickPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3RocmVlLWNsaWNrLXBvbHlnb24taGFuZGxlci50cyJdLCJuYW1lcyI6WyJUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIiLCJldmVudCIsInRlbnRhdGl2ZUZlYXR1cmUiLCJnZXRUZW50YXRpdmVGZWF0dXJlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNhQSx3Qjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFrRDtBQUM1RCxnR0FBa0JBLEtBQWxCOztBQUVBLFVBQU1DLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLEVBQXpCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCOztBQUVBLFVBQ0VELGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUF2QixJQUNBSixnQkFEQSxJQUVBQSxnQkFBZ0IsQ0FBQ0ssUUFBakIsQ0FBMEJDLElBQTFCLEtBQW1DLFNBSHJDLEVBSUU7QUFDQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNSLGdCQUFnQixDQUFDSyxRQUExRCxDQUFuQjtBQUNBLGFBQUtJLGtCQUFMOztBQUNBLGFBQUtDLG9CQUFMLENBQTBCLElBQTFCOztBQUNBLGVBQU9ILFVBQVA7QUFDRDs7QUFFRCxhQUFPLElBQVA7QUFDRDs7OztFQW5CMkNJLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpY2tFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IE1vZGVIYW5kbGVyLCBFZGl0QWN0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/translate-handler.js b/modules/layers/dist-es6/mode-handlers/translate-handler.js new file mode 100644 index 000000000..4cc9a3cef --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/translate-handler.js @@ -0,0 +1,161 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TranslateHandler = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformTranslate = _interopRequireDefault(require("@turf/transform-translate")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var TranslateHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(TranslateHandler, _ModeHandler); + + var _super = _createSuper(TranslateHandler); + + function TranslateHandler() { + var _this; + + _classCallCheck(this, TranslateHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeforeTranslate", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isTranslatable", void 0); + + return _this; + } + + _createClass(TranslateHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isTranslatable = Boolean(this._geometryBeforeTranslate) || this.isSelectionPicked(event.picks); + + if (!this._isTranslatable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeforeTranslate) { + // Translate the geometry + editAction = this.getTranslateAction(event.pointerDownGroundCoords, event.groundCoords, 'translating'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isTranslatable) { + return null; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeforeTranslate) { + // Translate the geometry + editAction = this.getTranslateAction(event.pointerDownGroundCoords, event.groundCoords, 'translated'); + this._geometryBeforeTranslate = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isTranslatable) { + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getTranslateAction", + value: function getTranslateAction(startDragPoint, currentPoint, editType) { + if (!this._geometryBeforeTranslate) { + return null; + } + + var p1 = (0, _helpers.point)(startDragPoint); + var p2 = (0, _helpers.point)(currentPoint); + var distanceMoved = (0, _distance["default"])(p1, p2); + var direction = (0, _bearing["default"])(p1, p2); + var movedFeatures = (0, _transformTranslate["default"])( // @ts-ignore + this._geometryBeforeTranslate, distanceMoved, direction); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = movedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return TranslateHandler; +}(_modeHandler.ModeHandler); + +exports.TranslateHandler = TranslateHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3RyYW5zbGF0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlRyYW5zbGF0ZUhhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJfaXNUcmFuc2xhdGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlIiwiaXNTZWxlY3Rpb25QaWNrZWQiLCJwaWNrcyIsInBvaW50ZXJEb3duR3JvdW5kQ29vcmRzIiwiY2FuY2VsTWFwUGFuIiwiaXNEcmFnZ2luZyIsImdldFRyYW5zbGF0ZUFjdGlvbiIsImdyb3VuZENvb3JkcyIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsInAxIiwicDIiLCJkaXN0YW5jZU1vdmVkIiwiZGlyZWN0aW9uIiwibW92ZWRGZWF0dXJlcyIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJzZWxlY3RlZEluZGV4ZXMiLCJnZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiaSIsImxlbmd0aCIsInNlbGVjdGVkSW5kZXgiLCJtb3ZlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInJlcGxhY2VHZW9tZXRyeSIsImdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLVEMsSyxFQUNzRTtBQUN0RSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsV0FBS0MsZUFBTCxHQUNFQyxPQUFPLENBQUMsS0FBS0Msd0JBQU4sQ0FBUCxJQUEwQyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBSyxDQUFDTSxLQUE3QixDQUQ1Qzs7QUFHQSxVQUFJLENBQUMsS0FBS0osZUFBTixJQUF5QixDQUFDRixLQUFLLENBQUNPLHVCQUFwQyxFQUE2RDtBQUMzRDtBQUNBLGVBQU87QUFBRU4sVUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JPLFVBQUFBLFlBQVksRUFBRTtBQUFsQyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSVIsS0FBSyxDQUFDUyxVQUFOLElBQW9CLEtBQUtMLHdCQUE3QixFQUF1RDtBQUNyRDtBQUNBSCxRQUFBQSxVQUFVLEdBQUcsS0FBS1Msa0JBQUwsQ0FDWFYsS0FBSyxDQUFDTyx1QkFESyxFQUVYUCxLQUFLLENBQUNXLFlBRkssRUFHWCxhQUhXLENBQWI7QUFLRDs7QUFFRCxhQUFPO0FBQUVWLFFBQUFBLFVBQVUsRUFBVkEsVUFBRjtBQUFjTyxRQUFBQSxZQUFZLEVBQUU7QUFBNUIsT0FBUDtBQUNEOzs7d0NBRW1CUixLLEVBQTBEO0FBQzVFLFVBQUksQ0FBQyxLQUFLRSxlQUFWLEVBQTJCO0FBQ3pCLGVBQU8sSUFBUDtBQUNEOztBQUVELFdBQUtFLHdCQUFMLEdBQWdDLEtBQUtRLHNDQUFMLEVBQWhDO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7Ozt1Q0FFa0JaLEssRUFBeUQ7QUFDMUUsVUFBSUMsVUFBeUMsR0FBRyxJQUFoRDs7QUFFQSxVQUFJLEtBQUtHLHdCQUFULEVBQW1DO0FBQ2pDO0FBQ0FILFFBQUFBLFVBQVUsR0FBRyxLQUFLUyxrQkFBTCxDQUNYVixLQUFLLENBQUNPLHVCQURLLEVBRVhQLEtBQUssQ0FBQ1csWUFGSyxFQUdYLFlBSFcsQ0FBYjtBQUtBLGFBQUtQLHdCQUFMLEdBQWdDLElBQWhDO0FBQ0Q7O0FBRUQsYUFBT0gsVUFBUDtBQUNEOzs7b0NBRTBEO0FBQUEsVUFBL0NRLFVBQStDLFFBQS9DQSxVQUErQzs7QUFDekQsVUFBSSxLQUFLUCxlQUFULEVBQTBCO0FBQ3hCLGVBQU8sTUFBUDtBQUNEOztBQUNELGFBQU9PLFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQWpDO0FBQ0Q7Ozt1Q0FHQ0ksYyxFQUNBQyxZLEVBQ0FDLFEsRUFDK0I7QUFDL0IsVUFBSSxDQUFDLEtBQUtYLHdCQUFWLEVBQW9DO0FBQ2xDLGVBQU8sSUFBUDtBQUNEOztBQUNELFVBQU1ZLEVBQUUsR0FBRyxvQkFBTUgsY0FBTixDQUFYO0FBQ0EsVUFBTUksRUFBRSxHQUFHLG9CQUFNSCxZQUFOLENBQVg7QUFFQSxVQUFNSSxhQUFhLEdBQUcsMEJBQWFGLEVBQWIsRUFBaUJDLEVBQWpCLENBQXRCO0FBQ0EsVUFBTUUsU0FBUyxHQUFHLHlCQUFZSCxFQUFaLEVBQWdCQyxFQUFoQixDQUFsQjtBQUVBLFVBQU1HLGFBQWEsR0FBRyxxQ0FDcEI7QUFDQSxXQUFLaEIsd0JBRmUsRUFHcEJjLGFBSG9CLEVBSXBCQyxTQUpvQixDQUF0QjtBQU9BLFVBQUlFLFdBQVcsR0FBRyxLQUFLQyw2QkFBTCxFQUFsQjtBQUVBLFVBQU1DLGVBQWUsR0FBRyxLQUFLQyx5QkFBTCxFQUF4Qjs7QUFDQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLGVBQWUsQ0FBQ0csTUFBcEMsRUFBNENELENBQUMsRUFBN0MsRUFBaUQ7QUFDL0MsWUFBTUUsYUFBYSxHQUFHSixlQUFlLENBQUNFLENBQUQsQ0FBckM7QUFDQSxZQUFNRyxZQUFZLEdBQUdSLGFBQWEsQ0FBQ1MsUUFBZCxDQUF1QkosQ0FBdkIsQ0FBckI7QUFDQUosUUFBQUEsV0FBVyxHQUFHQSxXQUFXLENBQUNTLGVBQVosQ0FBNEJILGFBQTVCLEVBQTJDQyxZQUFZLENBQUNHLFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0xWLFFBQUFBLFdBQVcsRUFBRUEsV0FBVyxDQUFDVyxTQUFaLEVBRFI7QUFFTGpCLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMa0IsUUFBQUEsY0FBYyxFQUFFVixlQUhYO0FBSUxXLFFBQUFBLFdBQVcsRUFBRTtBQUpSLE9BQVA7QUFNRDs7OztFQWpHbUNDLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZCZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVRyYW5zbGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tdHJhbnNsYXRlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIE1vZGVIYW5kbGVyIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1RyYW5zbGF0YWJsZTogYm9vbGVhbjtcblxuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIHRoaXMuX2lzVHJhbnNsYXRhYmxlID1cbiAgICAgIEJvb2xlYW4odGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHx8IHRoaXMuaXNTZWxlY3Rpb25QaWNrZWQoZXZlbnQucGlja3MpO1xuXG4gICAgaWYgKCF0aGlzLl9pc1RyYW5zbGF0YWJsZSB8fCAhZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgICAgIHJldHVybiB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuaXNEcmFnZ2luZyAmJiB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgLy8gVHJhbnNsYXRlIHRoZSBnZW9tZXRyeVxuICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bkdyb3VuZENvb3JkcyxcbiAgICAgICAgZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICAndHJhbnNsYXRpbmcnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbjogdHJ1ZSB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzLFxuICAgICAgICBldmVudC5ncm91bmRDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGVkJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgcmV0dXJuICdtb3ZlJztcbiAgICB9XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICB9XG5cbiAgZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbixcbiAgICBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLFxuICAgIGVkaXRUeXBlOiBzdHJpbmdcbiAgKTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwMSA9IHBvaW50KHN0YXJ0RHJhZ1BvaW50KTtcbiAgICBjb25zdCBwMiA9IHBvaW50KGN1cnJlbnRQb2ludCk7XG5cbiAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdHVyZkJlYXJpbmcocDEsIHAyKTtcblxuICAgIGNvbnN0IG1vdmVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUsXG4gICAgICBkaXN0YW5jZU1vdmVkLFxuICAgICAgZGlyZWN0aW9uXG4gICAgKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gbW92ZWRGZWF0dXJlcy5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHNlbGVjdGVkSW5kZXhlcyxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/two-click-polygon-handler.js b/modules/layers/dist-es6/mode-handlers/two-click-polygon-handler.js new file mode 100644 index 000000000..96db54af0 --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/two-click-polygon-handler.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TwoClickPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var TwoClickPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(TwoClickPolygonHandler, _ModeHandler); + + var _super = _createSuper(TwoClickPolygonHandler); + + function TwoClickPolygonHandler() { + _classCallCheck(this, TwoClickPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(TwoClickPolygonHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(TwoClickPolygonHandler.prototype), "handleClick", this).call(this, event); + + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry); + this.resetClickSequence(); + + this._setTentativeFeature(null); + + return editAction; + } + + return null; + } + }]); + + return TwoClickPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.TwoClickPolygonHandler = TwoClickPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3R3by1jbGljay1wb2x5Z29uLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsImdlb21ldHJ5IiwidHlwZSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbiIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLHNCOzs7Ozs7Ozs7Ozs7O2dDQUNDQyxLLEVBQWtEO0FBQzVELDhGQUFrQkEsS0FBbEI7O0FBRUEsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsRUFBekI7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFDRUQsYUFBYSxDQUFDRSxNQUFkLEdBQXVCLENBQXZCLElBQ0FKLGdCQURBLElBRUFBLGdCQUFnQixDQUFDSyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxtQ0FBTCxDQUF5Q1IsZ0JBQWdCLENBQUNLLFFBQTFELENBQW5CO0FBQ0EsYUFBS0ksa0JBQUw7O0FBQ0EsYUFBS0Msb0JBQUwsQ0FBMEIsSUFBMUI7O0FBQ0EsZUFBT0gsVUFBUDtBQUNEOztBQUVELGFBQU8sSUFBUDtBQUNEOzs7O0VBbkJ5Q0ksd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgTW9kZUhhbmRsZXIsIEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/mode-handlers/view-handler.js b/modules/layers/dist-es6/mode-handlers/view-handler.js new file mode 100644 index 000000000..fb2d73f3c --- /dev/null +++ b/modules/layers/dist-es6/mode-handlers/view-handler.js @@ -0,0 +1,61 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ViewHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ViewHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ViewHandler, _ModeHandler); + + var _super = _createSuper(ViewHandler); + + function ViewHandler() { + _classCallCheck(this, ViewHandler); + + return _super.apply(this, arguments); + } + + _createClass(ViewHandler, [{ + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + return []; + } + }]); + + return ViewHandler; +}(_modeHandler.ModeHandler); + +exports.ViewHandler = ViewHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3ZpZXctaGFuZGxlci50cyJdLCJuYW1lcyI6WyJWaWV3SGFuZGxlciIsImlzRHJhZ2dpbmciLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLFc7Ozs7Ozs7Ozs7Ozs7b0NBQ2dEO0FBQUEsVUFBL0NDLFVBQStDLFFBQS9DQSxVQUErQztBQUN6RCxhQUFPQSxVQUFVLEdBQUcsVUFBSCxHQUFnQixNQUFqQztBQUNEOzs7bUNBRWNDLEssRUFBb0NDLFksRUFBdUM7QUFDeEYsYUFBTyxFQUFQO0FBQ0Q7Ozs7RUFQOEJDLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgRWRpdEhhbmRsZSwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBWaWV3SGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/shaderlib/color/color.js b/modules/layers/dist-es6/shaderlib/color/color.js new file mode 100644 index 000000000..c36b9a69d --- /dev/null +++ b/modules/layers/dist-es6/shaderlib/color/color.js @@ -0,0 +1,36 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// TODO - this module is a WIP + +/* eslint-disable camelcase */ +var INITIAL_STATE = { + color_uOpacity: 1.0, + color_uDesaturate: 0.0, + color_uBrightness: 1.0 +}; + +function getUniforms() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE; + var uniforms = {}; + + if (opts.opacity) { + uniforms.color_uOpacity = opts.opacity; + } + + return uniforms; +} + +var vs = "varying vec4 color_vColor;\n\ncolor_setColor(vec4 color) {\n color_vColor = color;\n}\n"; +var fs = "uniform float color_uOpacity;\nuniform float color_uDesaturate;\nuniform float color_uBrightness;\n\nvarying vec4 color_vColor;\n\nvec4 color_getColor() {\n return color_vColor;\n}\n\nvec4 color_filterColor(vec4 color) {\n // apply desaturation and brightness\n if (color_uDesaturate > 0.01) {\n float luminance = (color.r + color.g + color.b) * 0.333333333 + color_uBrightness;\n color = vec4(mix(color.rgb, vec3(luminance), color_uDesaturate), color.a);\n\n // Apply opacity\n color = vec4(color.rgb, color.a * color_uOpacity);\n return color;\n}\n"; +var _default = { + name: 'color', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvY29sb3IvY29sb3IudHMiXSwibmFtZXMiOlsiSU5JVElBTF9TVEFURSIsImNvbG9yX3VPcGFjaXR5IiwiY29sb3JfdURlc2F0dXJhdGUiLCJjb2xvcl91QnJpZ2h0bmVzcyIsImdldFVuaWZvcm1zIiwib3B0cyIsInVuaWZvcm1zIiwib3BhY2l0eSIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFFQTtBQUNBLElBQU1BLGFBQXFDLEdBQUc7QUFDNUNDLEVBQUFBLGNBQWMsRUFBRSxHQUQ0QjtBQUU1Q0MsRUFBQUEsaUJBQWlCLEVBQUUsR0FGeUI7QUFHNUNDLEVBQUFBLGlCQUFpQixFQUFFO0FBSHlCLENBQTlDOztBQU1BLFNBQVNDLFdBQVQsR0FBMkM7QUFBQSxNQUF0QkMsSUFBc0IsdUVBQWZMLGFBQWU7QUFDekMsTUFBTU0sUUFBZ0MsR0FBRyxFQUF6Qzs7QUFDQSxNQUFJRCxJQUFJLENBQUNFLE9BQVQsRUFBa0I7QUFDaEJELElBQUFBLFFBQVEsQ0FBQ0wsY0FBVCxHQUEwQkksSUFBSSxDQUFDRSxPQUEvQjtBQUNEOztBQUNELFNBQU9ELFFBQVA7QUFDRDs7QUFFRCxJQUFNRSxFQUFFLDZGQUFSO0FBUUEsSUFBTUMsRUFBRSx1akJBQVI7ZUF1QmU7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE9BRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliTCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE8gLSB0aGlzIG1vZHVsZSBpcyBhIFdJUFxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbmNvbnN0IElOSVRJQUxfU1RBVEU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gIGNvbG9yX3VPcGFjaXR5OiAxLjAsXG4gIGNvbG9yX3VEZXNhdHVyYXRlOiAwLjAsXG4gIGNvbG9yX3VCcmlnaHRuZXNzOiAxLjAsXG59O1xuXG5mdW5jdGlvbiBnZXRVbmlmb3JtcyhvcHRzID0gSU5JVElBTF9TVEFURSkge1xuICBjb25zdCB1bmlmb3JtczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBpZiAob3B0cy5vcGFjaXR5KSB7XG4gICAgdW5pZm9ybXMuY29sb3JfdU9wYWNpdHkgPSBvcHRzLm9wYWNpdHk7XG4gIH1cbiAgcmV0dXJuIHVuaWZvcm1zO1xufVxuXG5jb25zdCB2cyA9IGBcXFxudmFyeWluZyB2ZWM0IGNvbG9yX3ZDb2xvcjtcblxuY29sb3Jfc2V0Q29sb3IodmVjNCBjb2xvcikge1xuICBjb2xvcl92Q29sb3IgPSBjb2xvcjtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGZsb2F0IGNvbG9yX3VPcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBjb2xvcl91RGVzYXR1cmF0ZTtcbnVuaWZvcm0gZmxvYXQgY29sb3JfdUJyaWdodG5lc3M7XG5cbnZhcnlpbmcgdmVjNCBjb2xvcl92Q29sb3I7XG5cbnZlYzQgY29sb3JfZ2V0Q29sb3IoKSB7XG4gIHJldHVybiBjb2xvcl92Q29sb3I7XG59XG5cbnZlYzQgY29sb3JfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICAvLyBhcHBseSBkZXNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3NcbiAgaWYgKGNvbG9yX3VEZXNhdHVyYXRlID4gMC4wMSkge1xuICAgIGZsb2F0IGx1bWluYW5jZSA9IChjb2xvci5yICsgY29sb3IuZyArIGNvbG9yLmIpICogMC4zMzMzMzMzMzMgKyBjb2xvcl91QnJpZ2h0bmVzcztcbiAgICBjb2xvciA9IHZlYzQobWl4KGNvbG9yLnJnYiwgdmVjMyhsdW1pbmFuY2UpLCBjb2xvcl91RGVzYXR1cmF0ZSksIGNvbG9yLmEpO1xuXG4gIC8vIEFwcGx5IG9wYWNpdHlcbiAgY29sb3IgPSB2ZWM0KGNvbG9yLnJnYiwgY29sb3IuYSAqIGNvbG9yX3VPcGFjaXR5KTtcbiAgcmV0dXJuIGNvbG9yO1xufVxuYDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29sb3InLFxuICB2cyxcbiAgZnMsXG4gIGdldFVuaWZvcm1zLFxufTtcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/shaderlib/outline/outline.js b/modules/layers/dist-es6/shaderlib/outline/outline.js new file mode 100644 index 000000000..b12e633f3 --- /dev/null +++ b/modules/layers/dist-es6/shaderlib/outline/outline.js @@ -0,0 +1,49 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +/* eslint-disable camelcase */ +var INITIAL_STATE = { + outlineEnabled: false, + outlineRenderShadowmap: false, + outlineShadowmap: null +}; + +function getUniforms() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE, + outlineEnabled = _ref.outlineEnabled, + outlineRenderShadowmap = _ref.outlineRenderShadowmap, + outlineShadowmap = _ref.outlineShadowmap; + + var uniforms = {}; + + if (outlineEnabled !== undefined) { + // ? 1.0 : 0.0; + uniforms.outline_uEnabled = outlineEnabled; + } + + if (outlineRenderShadowmap !== undefined) { + // ? 1.0 : 0.0; + uniforms.outline_uRenderOutlines = outlineRenderShadowmap; + } + + if (outlineShadowmap !== undefined) { + uniforms.outline_uShadowmap = outlineShadowmap; + } + + return uniforms; +} + +var vs = "attribute float instanceZLevel;\nvarying float outline_vzLevel;\nvarying vec4 outline_vPosition;\n\n// Set the z level for the outline shadowmap rendering\nvoid outline_setZLevel(float zLevel) {\n outline_vzLevel = zLevel;\n}\n\n// Store an adjusted position for texture2DProj\nvoid outline_setUV(vec4 position) {\n // mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n"; +var fs = "uniform bool outline_uEnabled;\nuniform bool outline_uRenderOutlines;\nuniform sampler2D outline_uShadowmap;\n\nvarying float outline_vzLevel;\n// varying vec2 outline_vUV;\nvarying vec4 outline_vPosition;\n\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\n\n// Return a darker color in shadowmap\nvec4 outline_filterShadowColor(vec4 color) {\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\n}\n\n// Return a darker color if in shadowmap\nvec4 outline_filterDarkenColor(vec4 color) {\n if (outline_uEnabled) {\n float maxZLevel;\n if (outline_vPosition.q > 0.0) {\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\n } else {\n discard;\n }\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\n vec4(color.rgb * 0.5, color.a);\n } else {\n discard;\n }\n }\n return color;\n}\n\n// if enabled and rendering outlines - Render depth to shadowmap\n// if enabled and rendering colors - Return a darker color if in shadowmap\n// if disabled, just return color\nvec4 outline_filterColor(vec4 color) {\n if (outline_uEnabled) {\n return outline_uRenderOutlines ?\n outline_filterShadowColor(color) :\n outline_filterDarkenColor(color);\n }\n return color;\n}\n"; +var _default = { + name: 'outline', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lLnRzIl0sIm5hbWVzIjpbIklOSVRJQUxfU1RBVEUiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZ2V0VW5pZm9ybXMiLCJ1bmlmb3JtcyIsInVuZGVmaW5lZCIsIm91dGxpbmVfdUVuYWJsZWQiLCJvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyIsIm91dGxpbmVfdVNoYWRvd21hcCIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxJQUFNQSxhQUFrQyxHQUFHO0FBQ3pDQyxFQUFBQSxjQUFjLEVBQUUsS0FEeUI7QUFFekNDLEVBQUFBLHNCQUFzQixFQUFFLEtBRmlCO0FBR3pDQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUh1QixDQUEzQzs7QUFNQSxTQUFTQyxXQUFULEdBQW1HO0FBQUEsaUZBQWZKLGFBQWU7QUFBQSxNQUE1RUMsY0FBNEUsUUFBNUVBLGNBQTRFO0FBQUEsTUFBNURDLHNCQUE0RCxRQUE1REEsc0JBQTREO0FBQUEsTUFBcENDLGdCQUFvQyxRQUFwQ0EsZ0JBQW9DOztBQUNqRyxNQUFNRSxRQUE2QixHQUFHLEVBQXRDOztBQUNBLE1BQUlKLGNBQWMsS0FBS0ssU0FBdkIsRUFBa0M7QUFDaEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRSxnQkFBVCxHQUE0Qk4sY0FBNUI7QUFDRDs7QUFDRCxNQUFJQyxzQkFBc0IsS0FBS0ksU0FBL0IsRUFBMEM7QUFDeEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRyx1QkFBVCxHQUFtQ04sc0JBQW5DO0FBQ0Q7O0FBQ0QsTUFBSUMsZ0JBQWdCLEtBQUtHLFNBQXpCLEVBQW9DO0FBQ2xDRCxJQUFBQSxRQUFRLENBQUNJLGtCQUFULEdBQThCTixnQkFBOUI7QUFDRDs7QUFDRCxTQUFPRSxRQUFQO0FBQ0Q7O0FBRUQsSUFBTUssRUFBRSxtaUJBQVI7QUFzQkEsSUFBTUMsRUFBRSw0d0NBQVI7ZUErQ2U7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLFNBRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliUCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgb3V0bGluZUVuYWJsZWQ6IGZhbHNlLFxuICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgb3V0bGluZVNoYWRvd21hcDogbnVsbCxcbn07XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKHsgb3V0bGluZUVuYWJsZWQsIG91dGxpbmVSZW5kZXJTaGFkb3dtYXAsIG91dGxpbmVTaGFkb3dtYXAgfSA9IElOSVRJQUxfU1RBVEUpIHtcbiAgY29uc3QgdW5pZm9ybXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKG91dGxpbmVFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyA/IDEuMCA6IDAuMDtcbiAgICB1bmlmb3Jtcy5vdXRsaW5lX3VFbmFibGVkID0gb3V0bGluZUVuYWJsZWQ7XG4gIH1cbiAgaWYgKG91dGxpbmVSZW5kZXJTaGFkb3dtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vID8gMS4wIDogMC4wO1xuICAgIHVuaWZvcm1zLm91dGxpbmVfdVJlbmRlck91dGxpbmVzID0gb3V0bGluZVJlbmRlclNoYWRvd21hcDtcbiAgfVxuICBpZiAob3V0bGluZVNoYWRvd21hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdW5pZm9ybXMub3V0bGluZV91U2hhZG93bWFwID0gb3V0bGluZVNoYWRvd21hcDtcbiAgfVxuICByZXR1cm4gdW5pZm9ybXM7XG59XG5cbmNvbnN0IHZzID0gYFxcXG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VaTGV2ZWw7XG52YXJ5aW5nIGZsb2F0IG91dGxpbmVfdnpMZXZlbDtcbnZhcnlpbmcgdmVjNCBvdXRsaW5lX3ZQb3NpdGlvbjtcblxuLy8gU2V0IHRoZSB6IGxldmVsIGZvciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgcmVuZGVyaW5nXG52b2lkIG91dGxpbmVfc2V0WkxldmVsKGZsb2F0IHpMZXZlbCkge1xuICBvdXRsaW5lX3Z6TGV2ZWwgPSB6TGV2ZWw7XG59XG5cbi8vIFN0b3JlIGFuIGFkanVzdGVkIHBvc2l0aW9uIGZvciB0ZXh0dXJlMkRQcm9qXG52b2lkIG91dGxpbmVfc2V0VVYodmVjNCBwb3NpdGlvbikge1xuICAvLyBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIG91dGxpbmVfdlBvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eXogKiAwLjUgKyBwb3NpdGlvbi53ICogMC41LCBwb3NpdGlvbi53KTtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGJvb2wgb3V0bGluZV91RW5hYmxlZDtcbnVuaWZvcm0gYm9vbCBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcztcbnVuaWZvcm0gc2FtcGxlcjJEIG91dGxpbmVfdVNoYWRvd21hcDtcblxudmFyeWluZyBmbG9hdCBvdXRsaW5lX3Z6TGV2ZWw7XG4vLyB2YXJ5aW5nIHZlYzIgb3V0bGluZV92VVY7XG52YXJ5aW5nIHZlYzQgb3V0bGluZV92UG9zaXRpb247XG5cbmNvbnN0IGZsb2F0IE9VVExJTkVfWl9MRVZFTF9FUlJPUiA9IDAuMDE7XG5cbi8vIFJldHVybiBhIGRhcmtlciBjb2xvciBpbiBzaGFkb3dtYXBcbnZlYzQgb3V0bGluZV9maWx0ZXJTaGFkb3dDb2xvcih2ZWM0IGNvbG9yKSB7XG4gIHJldHVybiB2ZWM0KG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIDEuKTtcbn1cblxuLy8gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxudmVjNCBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKHZlYzQgY29sb3IpIHtcbiAgaWYgKG91dGxpbmVfdUVuYWJsZWQpIHtcbiAgICBmbG9hdCBtYXhaTGV2ZWw7XG4gICAgaWYgKG91dGxpbmVfdlBvc2l0aW9uLnEgPiAwLjApIHtcbiAgICAgIG1heFpMZXZlbCA9IHRleHR1cmUyRFByb2oob3V0bGluZV91U2hhZG93bWFwLCBvdXRsaW5lX3ZQb3NpdGlvbikuciAqIDI1NS47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc2NhcmQ7XG4gICAgfVxuICAgIGlmIChtYXhaTGV2ZWwgPCBvdXRsaW5lX3Z6TGV2ZWwgKyBPVVRMSU5FX1pfTEVWRUxfRVJST1IpIHtcbiAgICAgIHZlYzQoY29sb3IucmdiICogMC41LCBjb2xvci5hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgb3V0bGluZXMgLSBSZW5kZXIgZGVwdGggdG8gc2hhZG93bWFwXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgY29sb3JzIC0gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxuLy8gaWYgZGlzYWJsZWQsIGp1c3QgcmV0dXJuIGNvbG9yXG52ZWM0IG91dGxpbmVfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICBpZiAob3V0bGluZV91RW5hYmxlZCkge1xuICAgIHJldHVybiBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyA/XG4gICAgICBvdXRsaW5lX2ZpbHRlclNoYWRvd0NvbG9yKGNvbG9yKSA6XG4gICAgICBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKGNvbG9yKTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvdXRsaW5lJyxcbiAgdnMsXG4gIGZzLFxuICBnZXRVbmlmb3Jtcyxcbn07XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/shaderlib/utils/utils.js b/modules/layers/dist-es6/shaderlib/utils/utils.js new file mode 100644 index 000000000..6f8556ea6 --- /dev/null +++ b/modules/layers/dist-es6/shaderlib/utils/utils.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); } + +// TODO - this module is a WIP + +/* eslint-disable camelcase */ +var INITIAL_STATE = {}; + +function getUniforms() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE; + + _objectDestructuringEmpty(_ref); +} + +var vs = "// Note - fairly generic, move to a UV or screen package, or even project?\nvec2 project_clipspace_to_uv(vec4 position) {\n vec2 p = vec2(position.x / position.w, position.y / position.w);\n return vec2((p.x + 1.0) / 2.0, (p.y + 1.0) / 2.0);\n}\n\nvec2 project_clipspace_to_projective_uv(vec4 position) {\n // outline_vPosition = mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n return vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n"; +var fs = vs; +var _default = { + name: 'outline', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOlsiSU5JVElBTF9TVEFURSIsImdldFVuaWZvcm1zIiwidnMiLCJmcyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHLEVBQXRCOztBQUVBLFNBQVNDLFdBQVQsR0FBeUM7QUFBQSxpRkFBZkQsYUFBZTs7QUFBQTtBQUFFOztBQUUzQyxJQUFNRSxFQUFFLGtpQkFBUjtBQWtCQSxJQUFNQyxFQUFFLEdBQUdELEVBQVg7ZUFFZTtBQUNiRSxFQUFBQSxJQUFJLEVBQUUsU0FETztBQUViRixFQUFBQSxFQUFFLEVBQUZBLEVBRmE7QUFHYkMsRUFBQUEsRUFBRSxFQUFGQSxFQUhhO0FBSWJGLEVBQUFBLFdBQVcsRUFBWEE7QUFKYSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETyAtIHRoaXMgbW9kdWxlIGlzIGEgV0lQXG5cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURSA9IHt9O1xuXG5mdW5jdGlvbiBnZXRVbmlmb3Jtcyh7fSA9IElOSVRJQUxfU1RBVEUpIHt9XG5cbmNvbnN0IHZzID0gYFxcXG4vLyBOb3RlIC0gZmFpcmx5IGdlbmVyaWMsIG1vdmUgdG8gYSBVViBvciBzY3JlZW4gcGFja2FnZSwgb3IgZXZlbiBwcm9qZWN0P1xudmVjMiBwcm9qZWN0X2NsaXBzcGFjZV90b191dih2ZWM0IHBvc2l0aW9uKSB7XG4gIHZlYzIgcCA9IHZlYzIocG9zaXRpb24ueCAvIHBvc2l0aW9uLncsIHBvc2l0aW9uLnkgLyBwb3NpdGlvbi53KTtcbiAgcmV0dXJuIHZlYzIoKHAueCArIDEuMCkgLyAyLjAsIChwLnkgKyAxLjApIC8gMi4wKTtcbn1cblxudmVjMiBwcm9qZWN0X2NsaXBzcGFjZV90b19wcm9qZWN0aXZlX3V2KHZlYzQgcG9zaXRpb24pIHtcbiAgLy8gb3V0bGluZV92UG9zaXRpb24gPSBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIHJldHVybiB2ZWM0KHBvc2l0aW9uLnh5eiAqIDAuNSArIHBvc2l0aW9uLncgKiAwLjUsIHBvc2l0aW9uLncpO1xufVxuYDtcblxuY29uc3QgZnMgPSB2cztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb3V0bGluZScsXG4gIHZzLFxuICBmcyxcbiAgZ2V0VW5pZm9ybXMsXG59O1xuIl19 \ No newline at end of file diff --git a/modules/layers/dist-es6/style.js b/modules/layers/dist-es6/style.js new file mode 100644 index 000000000..7096c3978 --- /dev/null +++ b/modules/layers/dist-es6/style.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0; +// Describes the arrow style of polylines +var ArrowStyles = { + NONE: 0, + FORWARD: 1, + BACKWARD: 2, + BOTH: 3 +}; +exports.ArrowStyles = ArrowStyles; +var DEFAULT_ARROWS = 1; +exports.DEFAULT_ARROWS = DEFAULT_ARROWS; +var MAX_ARROWS = 3; +exports.MAX_ARROWS = MAX_ARROWS; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJBcnJvd1N0eWxlcyIsIk5PTkUiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiREVGQVVMVF9BUlJPV1MiLCJNQVhfQVJST1dTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNPLElBQU1BLFdBQVcsR0FBRztBQUN6QkMsRUFBQUEsSUFBSSxFQUFFLENBRG1CO0FBRXpCQyxFQUFBQSxPQUFPLEVBQUUsQ0FGZ0I7QUFHekJDLEVBQUFBLFFBQVEsRUFBRSxDQUhlO0FBSXpCQyxFQUFBQSxJQUFJLEVBQUU7QUFKbUIsQ0FBcEI7O0FBT0EsSUFBTUMsY0FBYyxHQUFHLENBQXZCOztBQUNBLElBQU1DLFVBQVUsR0FBRyxDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-es6/types.js b/modules/layers/dist-es6/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/layers/dist-es6/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/layers/dist-es6/utils.js b/modules/layers/dist-es6/utils.js new file mode 100644 index 000000000..c62183388 --- /dev/null +++ b/modules/layers/dist-es6/utils.js @@ -0,0 +1,216 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; +exports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints; +exports.distance2d = distance2d; +exports.mix = mix; +exports.nearestPointOnProjectedLine = nearestPointOnProjectedLine; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _pointToLineDistance = _interopRequireDefault(require("@turf/point-to-line-distance")); + +var _helpers = require("@turf/helpers"); + +var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} + +function generatePointsParallelToLinePoints(p1, p2, groundCoords) { + var lineString = { + type: 'LineString', + coordinates: [p1, p2] + }; + var pt = (0, _helpers.point)(groundCoords); + var ddistance = (0, _pointToLineDistance["default"])(pt, lineString); + var lineBearing = (0, _bearing["default"])(p1, p2); // Check if current point is to the left or right of line + // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y) + // then (x−x1)(y2−y1)−(y−y1)(x2−x1) + + var isPointToLeftOfLine = (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string + + var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString + // Add the distance as the current position moves away from the lineString + + var p3 = (0, _destination["default"])(p2, ddistance, orthogonalBearing); + var p4 = (0, _destination["default"])(p1, ddistance, orthogonalBearing); //@ts-ignore + + return [p3.geometry.coordinates, p4.geometry.coordinates]; +} + +function distance2d(x1, y1, x2, y2) { + var dx = x1 - x2; + var dy = y1 - y2; + return Math.sqrt(dx * dx + dy * dy); +} + +function mix(a, b, ratio) { + return b * ratio + a * (1 - ratio); +} + +function nearestPointOnProjectedLine(line, inPoint, viewport) { + var wmViewport = new _viewportMercatorProject["default"](viewport); // Project the line to viewport, then find the nearest point + + var coordinates = line.geometry.coordinates; + var projectedCoords = coordinates.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 3), + x = _ref2[0], + y = _ref2[1], + _ref2$ = _ref2[2], + z = _ref2$ === void 0 ? 0 : _ref2$; + + return wmViewport.project([x, y, z]); + }); //@ts-ignore + + var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), + _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2), + x = _wmViewport$project2[0], + y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords)); + + + var minDistance = Infinity; + var minPointInfo = {}; + projectedCoords.forEach(function (_ref3, index) { + var _ref4 = _slicedToArray(_ref3, 2), + x2 = _ref4[0], + y2 = _ref4[1]; + + if (index === 0) { + return; + } + + var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2), + x1 = _projectedCoords[0], + y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index] + // convert to Ax + By + C = 0 + + + var A = y1 - y2; + var B = x2 - x1; + var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line + + var div = A * A + B * B; + var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds + + if (distance < minDistance) { + minDistance = distance; + minPointInfo = { + index: index, + x0: (B * (B * x - A * y) - A * C) / div, + y0: (A * (-B * x + A * y) - B * C) / div + }; + } + }); //@ts-ignore + + var _minPointInfo = minPointInfo, + index = _minPointInfo.index, + x0 = _minPointInfo.x0, + y0 = _minPointInfo.y0; + + var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3), + x1 = _projectedCoords2[0], + y1 = _projectedCoords2[1], + _projectedCoords2$ = _projectedCoords2[2], + z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$; + + var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3), + x2 = _projectedCoords$inde[0], + y2 = _projectedCoords$inde[1], + _projectedCoords$inde2 = _projectedCoords$inde[2], + z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z + + + var lineLength = distance2d(x1, y1, x2, y2); + var startToPointLength = distance2d(x1, y1, x0, y0); + var ratio = startToPointLength / lineLength; + var z0 = mix(z1, z2, ratio); + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: wmViewport.unproject([x0, y0, z0]) + }, + properties: { + // TODO: calculate the distance in proper units + dist: minDistance, + index: index - 1 + } + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJncm91bmRDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1PLFNBQVNBLFdBQVQsQ0FDTEMsS0FESyxFQUc2QjtBQUFBLE1BRGxDQyxZQUNrQyx1RUFE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QUFyQjtBQUZMLEtBRkw7QUFNTEUsSUFBQUEsVUFBVSxFQUFFO0FBQ1Y7QUFDQUMsTUFBQUEsSUFBSSxFQUFFcEIsV0FGSTtBQUdWSSxNQUFBQSxLQUFLLEVBQUVBLEtBQUssR0FBRztBQUhMO0FBTlAsR0FBUDtBQVlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHBvaW50VG9MaW5lRGlzdGFuY2UgZnJvbSAnQHR1cmYvcG9pbnQtdG8tbGluZS1kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgUG9zaXRpb24sXG4gIFBvaW50LFxuICBMaW5lU3RyaW5nLFxuICBGZWF0dXJlT2YsXG4gIEZlYXR1cmVXaXRoUHJvcHMsXG4gIFZpZXdwb3J0LFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGFuZCB1c2UgZWRpdC1tb2Rlcy91dGlscyBpbnN0ZWFkXG5cbmV4cG9ydCB0eXBlIE5lYXJlc3RQb2ludFR5cGUgPSBGZWF0dXJlV2l0aFByb3BzPFBvaW50LCB7IGRpc3Q6IG51bWJlcjsgaW5kZXg6IG51bWJlciB9PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVja0NvbG9yKFxuICBjb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyLFxuICBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMCwgMjU1XVxuKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb2xvcjtcbiAgfVxuICByZXR1cm4gW2NvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1XTtcbn1cblxuLy9cbi8vIGEgR2VvSlNPTiBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2l0aFxuLy8gYW4gYXJndW1lbnQgdGhhdCBpcyB0aGUgbW9zdCBkZWVwbHktbmVzdGVkIGFycmF5IGhhdmluZyBlbGVtZW50c1xuLy8gdGhhdCBhcmUgYXJyYXlzIG9mIHByaW1pdGl2ZXMgYXMgYW4gYXJndW1lbnQsIGUuZy5cbi8vXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcIk11bHRpUG9seWdvblwiLFxuLy8gICBcImNvb3JkaW5hdGVzXCI6IFtcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vLyAgICAgICBdLFxuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vLyAgICAgICBdXG4vLyAgIF1cbi8vIH1cbi8vXG4vLyB0aGUgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkIG9uOlxuLy9cbi8vIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vXG4vLyBhbmRcbi8vXG4vLyBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKFxuICBhcnJheTogQXJyYXk8YW55PixcbiAgcHJlZml4OiBBcnJheTxudW1iZXI+LFxuICBmbjogRnVuY3Rpb25cbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKGFycmF5W2ldLCBbLi4ucHJlZml4LCBpXSwgZm4pKSB7XG4gICAgICBmbihhcnJheSwgcHJlZml4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICBwMTogUG9zaXRpb24sXG4gIHAyOiBQb3NpdGlvbixcbiAgZ3JvdW5kQ29vcmRzOiBQb3NpdGlvblxuKTogUG9zaXRpb25bXSB7XG4gIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB7XG4gICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgIGNvb3JkaW5hdGVzOiBbcDEsIHAyXSxcbiAgfTtcbiAgY29uc3QgcHQgPSBwb2ludChncm91bmRDb29yZHMpO1xuICBjb25zdCBkZGlzdGFuY2UgPSBwb2ludFRvTGluZURpc3RhbmNlKHB0LCBsaW5lU3RyaW5nKTtcbiAgY29uc3QgbGluZUJlYXJpbmcgPSBiZWFyaW5nKHAxLCBwMik7XG5cbiAgLy8gQ2hlY2sgaWYgY3VycmVudCBwb2ludCBpcyB0byB0aGUgbGVmdCBvciByaWdodCBvZiBsaW5lXG4gIC8vIExpbmUgZnJvbSBBPSh4MSx5MSkgdG8gQj0oeDIseTIpIGEgcG9pbnQgUD0oeCx5KVxuICAvLyB0aGVuICh44oiSeDEpKHky4oiSeTEp4oiSKHniiJJ5MSkoeDLiiJJ4MSlcbiAgY29uc3QgaXNQb2ludFRvTGVmdE9mTGluZSA9XG4gICAgKGdyb3VuZENvb3Jkc1swXSAtIHAxWzBdKSAqIChwMlsxXSAtIHAxWzFdKSAtIChncm91bmRDb29yZHNbMV0gLSBwMVsxXSkgKiAocDJbMF0gLSBwMVswXSk7XG5cbiAgLy8gQmVhcmluZyB0byBkcmF3IHBlcnBlbmRpY3VsYXIgdG8gdGhlIGxpbmUgc3RyaW5nXG4gIGNvbnN0IG9ydGhvZ29uYWxCZWFyaW5nID0gaXNQb2ludFRvTGVmdE9mTGluZSA8IDAgPyBsaW5lQmVhcmluZyAtIDkwIDogbGluZUJlYXJpbmcgLSAyNzA7XG5cbiAgLy8gR2V0IGNvb3JkaW5hdGVzIGZvciB0aGUgcG9pbnQgcDMgYW5kIHA0IHdoaWNoIGFyZSBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lU3RyaW5nXG4gIC8vIEFkZCB0aGUgZGlzdGFuY2UgYXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaW5lU3RyaW5nXG4gIGNvbnN0IHAzID0gZGVzdGluYXRpb24ocDIsIGRkaXN0YW5jZSwgb3J0aG9nb25hbEJlYXJpbmcpO1xuICBjb25zdCBwNCA9IGRlc3RpbmF0aW9uKHAxLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgLy9AdHMtaWdub3JlXG4gIHJldHVybiBbcDMuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHA0Lmdlb21ldHJ5LmNvb3JkaW5hdGVzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlMmQoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGR4ID0geDEgLSB4MjtcbiAgY29uc3QgZHkgPSB5MSAtIHkyO1xuICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1peChhOiBudW1iZXIsIGI6IG51bWJlciwgcmF0aW86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiICogcmF0aW8gKyBhICogKDEgLSByYXRpbyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUoXG4gIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgaW5Qb2ludDogRmVhdHVyZU9mPFBvaW50PixcbiAgdmlld3BvcnQ6IFZpZXdwb3J0XG4pOiBOZWFyZXN0UG9pbnRUeXBlIHtcbiAgY29uc3Qgd21WaWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHZpZXdwb3J0KTtcbiAgLy8gUHJvamVjdCB0aGUgbGluZSB0byB2aWV3cG9ydCwgdGhlbiBmaW5kIHRoZSBuZWFyZXN0IHBvaW50XG4gIGNvbnN0IGNvb3JkaW5hdGVzOiBBcnJheTxBcnJheTxudW1iZXI+PiA9IGxpbmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgYW55O1xuICBjb25zdCBwcm9qZWN0ZWRDb29yZHMgPSBjb29yZGluYXRlcy5tYXAoKFt4LCB5LCB6ID0gMF0pID0+IHdtVmlld3BvcnQucHJvamVjdChbeCwgeSwgel0pKTtcbiAgLy9AdHMtaWdub3JlXG4gIGNvbnN0IFt4LCB5XSA9IHdtVmlld3BvcnQucHJvamVjdChpblBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzKTtcbiAgLy8gY29uc29sZS5sb2coJ3Byb2plY3RlZENvb3JkcycsIEpTT04uc3RyaW5naWZ5KHByb2plY3RlZENvb3JkcykpO1xuXG4gIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgbWluUG9pbnRJbmZvID0ge307XG5cbiAgcHJvamVjdGVkQ29vcmRzLmZvckVhY2goKFt4MiwgeTJdLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFt4MSwgeTFdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV07XG5cbiAgICAvLyBsaW5lIGZyb20gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV0gdG8gcHJvamVjdGVkQ29vcmRzW2luZGV4XVxuICAgIC8vIGNvbnZlcnQgdG8gQXggKyBCeSArIEMgPSAwXG4gICAgY29uc3QgQSA9IHkxIC0geTI7XG4gICAgY29uc3QgQiA9IHgyIC0geDE7XG4gICAgY29uc3QgQyA9IHgxICogeTIgLSB4MiAqIHkxO1xuXG4gICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzdGFuY2VfZnJvbV9hX3BvaW50X3RvX2FfbGluZVxuICAgIGNvbnN0IGRpdiA9IEEgKiBBICsgQiAqIEI7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLmFicyhBICogeCArIEIgKiB5ICsgQykgLyBNYXRoLnNxcnQoZGl2KTtcblxuICAgIC8vIFRPRE86IENoZWNrIGlmIGluc2lkZSBib3VuZHNcblxuICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgbWluUG9pbnRJbmZvID0ge1xuICAgICAgICBpbmRleCxcbiAgICAgICAgeDA6IChCICogKEIgKiB4IC0gQSAqIHkpIC0gQSAqIEMpIC8gZGl2LFxuICAgICAgICB5MDogKEEgKiAoLUIgKiB4ICsgQSAqIHkpIC0gQiAqIEMpIC8gZGl2LFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICAvL0B0cy1pZ25vcmVcbiAgY29uc3QgeyBpbmRleCwgeDAsIHkwIH0gPSBtaW5Qb2ludEluZm87XG4gIGNvbnN0IFt4MSwgeTEsIHoxID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcbiAgY29uc3QgW3gyLCB5MiwgejIgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleF07XG5cbiAgLy8gY2FsY3VsYXRlIHdoYXQgcmF0aW8gb2YgdGhlIGxpbmUgd2UgYXJlIG9uIHRvIGZpbmQgdGhlIHByb3BlciB6XG4gIGNvbnN0IGxpbmVMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDIsIHkyKTtcbiAgY29uc3Qgc3RhcnRUb1BvaW50TGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgwLCB5MCk7XG4gIGNvbnN0IHJhdGlvID0gc3RhcnRUb1BvaW50TGVuZ3RoIC8gbGluZUxlbmd0aDtcbiAgY29uc3QgejAgPSBtaXgoejEsIHoyLCByYXRpbyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgZ2VvbWV0cnk6IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogd21WaWV3cG9ydC51bnByb2plY3QoW3gwLCB5MCwgejBdKSxcbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vIFRPRE86IGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgaW4gcHJvcGVyIHVuaXRzXG4gICAgICBkaXN0OiBtaW5EaXN0YW5jZSxcbiAgICAgIGluZGV4OiBpbmRleCAtIDEsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist-types/curve-utils.d.ts b/modules/layers/dist-types/curve-utils.d.ts new file mode 100644 index 000000000..577938bc7 --- /dev/null +++ b/modules/layers/dist-types/curve-utils.d.ts @@ -0,0 +1,3 @@ +import { Feature, MultiLineString, LineString } from 'geojson'; +export declare function generateCurveFromControlPoints(line: Feature): Feature; +//# sourceMappingURL=curve-utils.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/curve-utils.d.ts.map b/modules/layers/dist-types/curve-utils.d.ts.map new file mode 100644 index 000000000..05faa7a57 --- /dev/null +++ b/modules/layers/dist-types/curve-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"curve-utils.d.ts","sourceRoot":"","sources":["../src/curve-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAW/D,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAC7B,OAAO,CAAC,UAAU,CAAC,CA0DrB"} \ No newline at end of file diff --git a/modules/layers/dist-types/event-types.d.ts b/modules/layers/dist-types/event-types.d.ts new file mode 100644 index 000000000..13a244667 --- /dev/null +++ b/modules/layers/dist-types/event-types.d.ts @@ -0,0 +1,39 @@ +import { Position } from '@nebula.gl/edit-modes'; +export declare type DeckGLPick = { + index: number; + object: any; + isEditingHandle: boolean | null | undefined; +}; +export declare type ClickEvent = { + picks: DeckGLPick[]; + screenCoords: Position; + groundCoords: Position; + sourceEvent: any; +}; +export declare type StartDraggingEvent = { + picks: DeckGLPick[]; + screenCoords: Position; + groundCoords: Position; + pointerDownScreenCoords: Position; + pointerDownGroundCoords: Position; + sourceEvent: any; +}; +export declare type StopDraggingEvent = { + picks: DeckGLPick[]; + screenCoords: Position; + groundCoords: Position; + pointerDownScreenCoords: Position; + pointerDownGroundCoords: Position; + sourceEvent: any; +}; +export declare type PointerMoveEvent = { + screenCoords: Position; + groundCoords: Position; + picks: DeckGLPick[]; + isDragging: boolean; + pointerDownPicks: DeckGLPick[] | null | undefined; + pointerDownScreenCoords: Position | null | undefined; + pointerDownGroundCoords: Position | null | undefined; + sourceEvent: any; +}; +//# sourceMappingURL=event-types.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/event-types.d.ts.map b/modules/layers/dist-types/event-types.d.ts.map new file mode 100644 index 000000000..f9a3dd73b --- /dev/null +++ b/modules/layers/dist-types/event-types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"event-types.d.ts","sourceRoot":"","sources":["../src/event-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIjD,oBAAY,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,uBAAuB,EAAE,QAAQ,CAAC;IAClC,uBAAuB,EAAE,QAAQ,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,uBAAuB,EAAE,QAAQ,CAAC;IAClC,uBAAuB,EAAE,QAAQ,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,oBAAY,gBAAgB,GAAG;IAC7B,YAAY,EAAE,QAAQ,CAAC;IACvB,YAAY,EAAE,QAAQ,CAAC;IACvB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,UAAU,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,uBAAuB,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,uBAAuB,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC"} \ No newline at end of file diff --git a/modules/layers/dist-types/index.d.ts b/modules/layers/dist-types/index.d.ts new file mode 100644 index 000000000..75396ddd2 --- /dev/null +++ b/modules/layers/dist-types/index.d.ts @@ -0,0 +1,11 @@ +export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './style'; +export { default as EditableGeoJsonLayer } from './layers/editable-geojson-layer'; +export { default as EditableH3ClusterLayer } from './layers/editable-h3-cluster-layer'; +export { default as SelectionLayer } from './layers/selection-layer'; +export { default as ElevatedEditHandleLayer } from './layers/elevated-edit-handle-layer'; +export { default as PathOutlineLayer } from './layers/path-outline-layer/path-outline-layer'; +export { default as PathMarkerLayer } from './layers/path-marker-layer/path-marker-layer'; +export { default as JunctionScatterplotLayer } from './layers/junction-scatterplot-layer'; +export { toDeckColor } from './utils'; +export type { Color, Viewport } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/index.d.ts.map b/modules/layers/dist-types/index.d.ts.map new file mode 100644 index 000000000..46e245cc2 --- /dev/null +++ b/modules/layers/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGlE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAGzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAG1F,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-geojson-layer.d.ts b/modules/layers/dist-types/layers/editable-geojson-layer.d.ts new file mode 100644 index 000000000..3b10071dd --- /dev/null +++ b/modules/layers/dist-types/layers/editable-geojson-layer.d.ts @@ -0,0 +1,92 @@ +/// +import { GeoJsonLayer, TextLayer } from '@deck.gl/layers'; +import { DrawPolygonMode, EditAction, ClickEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, PointerMoveEvent, GeoJsonEditModeType, GeoJsonEditModeConstructor, FeatureCollection } from '@nebula.gl/edit-modes'; +import EditableLayer from './editable-layer'; +declare function getEditHandleColor(handle: any): number[]; +declare function getEditHandleOutlineColor(handle: any): number[]; +declare function getEditHandleRadius(handle: any): 3 | 5 | 7; +declare type Props = { + mode: string | GeoJsonEditModeConstructor | GeoJsonEditModeType; + onEdit: (arg0: EditAction) => void; + [key: string]: any; +}; +export default class EditableGeoJsonLayer extends EditableLayer { + static layerName: string; + static defaultProps: { + mode: typeof DrawPolygonMode; + onEdit: () => void; + pickable: boolean; + pickingRadius: number; + pickingDepth: number; + fp64: boolean; + filled: boolean; + stroked: boolean; + lineWidthScale: number; + lineWidthMinPixels: number; + lineWidthMaxPixels: number; + lineWidthUnits: string; + lineJointRounded: boolean; + lineMiterLimit: number; + pointRadiusScale: number; + pointRadiusMinPixels: number; + pointRadiusMaxPixels: number; + getLineColor: (feature: any, isSelected: any, mode: any) => number[]; + getFillColor: (feature: any, isSelected: any, mode: any) => number[]; + getRadius: (f: any) => any; + getLineWidth: (f: any) => any; + getTentativeLineColor: (f: any) => number[]; + getTentativeFillColor: (f: any) => number[]; + getTentativeLineWidth: (f: any) => any; + editHandleType: string; + editHandlePointRadiusScale: number; + editHandlePointOutline: boolean; + editHandlePointStrokeWidth: number; + editHandlePointRadiusMinPixels: number; + editHandlePointRadiusMaxPixels: number; + getEditHandlePointColor: typeof getEditHandleColor; + getEditHandlePointOutlineColor: typeof getEditHandleOutlineColor; + getEditHandlePointRadius: typeof getEditHandleRadius; + editHandleIconAtlas: any; + editHandleIconMapping: any; + editHandleIconSizeScale: number; + getEditHandleIcon: (handle: any) => any; + getEditHandleIconSize: number; + getEditHandleIconColor: typeof getEditHandleColor; + getEditHandleIconAngle: number; + billboard: boolean; + }; + renderLayers(): any; + initializeState(): void; + shouldUpdateState(opts: any): any; + updateState({ props, oldProps, changeFlags, }: { + props: Props; + oldProps: Props; + changeFlags: any; + }): void; + getModeProps(props: Props): { + modeConfig: any; + data: any; + selectedIndexes: any; + lastPointerMoveEvent: any; + cursor: any; + onEdit: (editAction: EditAction) => void; + onUpdateCursor: (cursor: string) => void; + }; + selectionAwareAccessor(accessor: any): any; + isFeatureSelected(feature: Record): any; + getPickingInfo({ info, sourceLayer }: Record): any; + createGuidesLayers(): GeoJsonLayer[]; + createTooltipsLayers(): TextLayer[]; + onLayerClick(event: ClickEvent): void; + onLayerKeyUp(event: KeyboardEvent): void; + onStartDragging(event: StartDraggingEvent): void; + onDragging(event: DraggingEvent): void; + onStopDragging(event: StopDraggingEvent): void; + onPointerMove(event: PointerMoveEvent): void; + getCursor({ isDragging }: { + isDragging: boolean; + }): any; + getActiveMode(): GeoJsonEditModeType; +} +export {}; +//# sourceMappingURL=editable-geojson-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-geojson-layer.d.ts.map b/modules/layers/dist-types/layers/editable-geojson-layer.d.ts.map new file mode 100644 index 000000000..ee9a468b1 --- /dev/null +++ b/modules/layers/dist-types/layers/editable-geojson-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editable-geojson-layer.d.ts","sourceRoot":"","sources":["../../src/layers/editable-geojson-layer.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAA+B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAYL,eAAe,EAYf,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAoC7C,iBAAS,kBAAkB,CAAC,MAAM,KAAA,YAUjC;AAED,iBAAS,yBAAyB,CAAC,MAAM,KAAA,YAExC;AAED,iBAAS,mBAAmB,CAAC,MAAM,KAAA,aAUlC;AA4FD,aAAK,KAAK,GAAG;IACX,IAAI,EAAE,MAAM,GAAG,0BAA0B,GAAG,mBAAmB,CAAC;IAChE,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAGtD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AASF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,aAAa;IAC7D,MAAM,CAAC,SAAS,SAA0B;IAC1C,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAgB;IAInC,YAAY;IA+CZ,eAAe;IAUf,iBAAiB,CAAC,IAAI,EAAE,GAAG;IAS3B,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,WAAW,GACZ,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,KAAK,CAAC;QAChB,WAAW,EAAE,GAAG,CAAC;KAClB;IA6CD,YAAY,CAAC,KAAK,EAAE,KAAK;;;;;;;;;IAoBzB,sBAAsB,CAAC,QAAQ,EAAE,GAAG;IAQpC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAW9C,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IASzD,kBAAkB;IAyDlB,oBAAoB;IAcpB,YAAY,CAAC,KAAK,EAAE,UAAU;IAI9B,YAAY,CAAC,KAAK,EAAE,aAAa;IAIjC,eAAe,CAAC,KAAK,EAAE,kBAAkB;IAIzC,UAAU,CAAC,KAAK,EAAE,aAAa;IAI/B,cAAc,CAAC,KAAK,EAAE,iBAAiB;IAIvC,aAAa,CAAC,KAAK,EAAE,gBAAgB;IAKrC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE;IASjD,aAAa,IAAI,mBAAmB;CAGrC"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts b/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts new file mode 100644 index 000000000..5bc91b2e6 --- /dev/null +++ b/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts @@ -0,0 +1,61 @@ +import EditableLayer from './editable-layer'; +export default class EditableH3ClusterLayer extends EditableLayer { + static layerName: string; + static defaultProps: { + data: any[]; + selectedIndexes: any[]; + filled: boolean; + stroked: boolean; + lineWidthScale: number; + lineWidthMinPixels: number; + lineWidthMaxPixels: number; + lineWidthUnits: string; + getHexagons: (d: any) => any; + getEditedCluster: (updatedHexagons: any, existingCluster: any) => any; + resolution: number; + mode: typeof import("@nebula.gl/edit-modes").DrawPolygonMode; + onEdit: () => void; + pickable: boolean; + pickingRadius: number; + pickingDepth: number; + fp64: boolean; + lineJointRounded: boolean; + lineMiterLimit: number; + pointRadiusScale: number; + pointRadiusMinPixels: number; + pointRadiusMaxPixels: number; + getLineColor: (feature: any, isSelected: any, mode: any) => number[]; + getFillColor: (feature: any, isSelected: any, mode: any) => number[]; + getRadius: (f: any) => any; + getLineWidth: (f: any) => any; + getTentativeLineColor: (f: any) => number[]; + getTentativeFillColor: (f: any) => number[]; + getTentativeLineWidth: (f: any) => any; + editHandleType: string; + editHandlePointRadiusScale: number; + editHandlePointOutline: boolean; + editHandlePointStrokeWidth: number; + editHandlePointRadiusMinPixels: number; + editHandlePointRadiusMaxPixels: number; + getEditHandlePointColor: (handle: any) => number[]; + getEditHandlePointOutlineColor: (handle: any) => number[]; + getEditHandlePointRadius: (handle: any) => 3 | 5 | 7; + editHandleIconAtlas: any; + editHandleIconMapping: any; + editHandleIconSizeScale: number; + getEditHandleIcon: (handle: any) => any; + getEditHandleIconSize: number; + getEditHandleIconColor: (handle: any) => number[]; + getEditHandleIconAngle: number; + billboard: boolean; + }; + initializeState(): void; + getDerivedHexagonIDs(coords: any): string[]; + getDerivedHexagonID(coords: any): string; + renderLayers(): any; + getSelectedHexIDs(): any[]; + getCursor({ isDragging }: { + isDragging: boolean; + }): any; +} +//# sourceMappingURL=editable-h3-cluster-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts.map b/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts.map new file mode 100644 index 000000000..73f45f8bd --- /dev/null +++ b/modules/layers/dist-types/layers/editable-h3-cluster-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editable-h3-cluster-layer.d.ts","sourceRoot":"","sources":["../../src/layers/editable-h3-cluster-layer.ts"],"names":[],"mappings":"AAMA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAuC7C,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,aAAa;IAC/D,MAAM,CAAC,SAAS,SAA4B;IAC5C,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAgB;IAEnC,eAAe;IASf,oBAAoB,CAAC,MAAM,KAAA;IAK3B,mBAAmB,CAAC,MAAM,KAAA;IAI1B,YAAY;IA+GZ,iBAAiB;IAUjB,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE;CAQlD"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-layer.d.ts b/modules/layers/dist-types/layers/editable-layer.d.ts new file mode 100644 index 000000000..35c74718b --- /dev/null +++ b/modules/layers/dist-types/layers/editable-layer.d.ts @@ -0,0 +1,29 @@ +/// +import { CompositeLayer } from '@deck.gl/core'; +import { ClickEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, PointerMoveEvent } from '@nebula.gl/edit-modes'; +export default class EditableLayer extends CompositeLayer { + static layerName: string; + onLayerClick(event: ClickEvent): void; + onStartDragging(event: StartDraggingEvent): void; + onStopDragging(event: StopDraggingEvent): void; + onDragging(event: DraggingEvent): void; + onPointerMove(event: PointerMoveEvent): void; + onLayerKeyUp(event: KeyboardEvent): void; + initializeState(): void; + finalizeState(): void; + _addEventHandlers(): void; + _removeEventHandlers(): void; + _forwardEventToCurrentLayer(event: any): void; + _onanyclick({ srcEvent }: any): void; + _onkeyup({ srcEvent }: { + srcEvent: KeyboardEvent; + }): void; + _onpanstart(event: any): void; + _onpanmove(event: any): void; + _onpanend({ srcEvent }: any): void; + _onpointermove(event: any): void; + getPicks(screenCoords: [number, number]): any; + getScreenCoords(pointerEvent: any): number[]; + getMapCoords(screenCoords: number[]): any; +} +//# sourceMappingURL=editable-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/editable-layer.d.ts.map b/modules/layers/dist-types/layers/editable-layer.d.ts.map new file mode 100644 index 000000000..34dc35419 --- /dev/null +++ b/modules/layers/dist-types/layers/editable-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editable-layer.d.ts","sourceRoot":"","sources":["../../src/layers/editable-layer.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc,CAAC,GAAG,CAAC;IAC5D,MAAM,CAAC,SAAS,SAAmB;IAEnC,YAAY,CAAC,KAAK,EAAE,UAAU;IAI9B,eAAe,CAAC,KAAK,EAAE,kBAAkB;IAIzC,cAAc,CAAC,KAAK,EAAE,iBAAiB;IAIvC,UAAU,CAAC,KAAK,EAAE,aAAa;IAI/B,aAAa,CAAC,KAAK,EAAE,gBAAgB;IAIrC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKxC,eAAe;IAkBf,aAAa;IAIb,iBAAiB;IAajB,oBAAoB;IAapB,2BAA2B,CAAC,KAAK,EAAE,GAAG;IAYtC,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG;IAe7B,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,aAAa,CAAA;KAAE;IAIlD,WAAW,CAAC,KAAK,EAAE,GAAG;IA6BtB,UAAU,CAAC,KAAK,EAAE,GAAG;IA+BrB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG;IAiC3B,cAAc,CAAC,KAAK,EAAE,GAAG;IAyBzB,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAWvC,eAAe,CAAC,YAAY,EAAE,GAAG;IASjC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE;CAIpC"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts b/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts new file mode 100644 index 000000000..cccf423bc --- /dev/null +++ b/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts @@ -0,0 +1,9 @@ +/// +import { CompositeLayer } from '@deck.gl/core'; +import { ScatterplotLayer, LineLayer } from '@deck.gl/layers'; +export default class ElevatedEditHandleLayer extends CompositeLayer { + static layerName: string; + static defaultProps: {}; + renderLayers(): (ScatterplotLayer | LineLayer)[]; +} +//# sourceMappingURL=elevated-edit-handle-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts.map b/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts.map new file mode 100644 index 000000000..33a7a579f --- /dev/null +++ b/modules/layers/dist-types/layers/elevated-edit-handle-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"elevated-edit-handle-layer.d.ts","sourceRoot":"","sources":["../../src/layers/elevated-edit-handle-layer.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,cAAc,CAAC,GAAG,CAAC;IACtE,MAAM,CAAC,SAAS,SAA6B;IAC7C,MAAM,CAAC,YAAY,KAAgB;IACnC,YAAY;CAsBb"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts b/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts new file mode 100644 index 000000000..677297556 --- /dev/null +++ b/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts @@ -0,0 +1,9 @@ +/// +import { CompositeLayer } from '@deck.gl/core'; +import { ScatterplotLayer } from '@deck.gl/layers'; +export default class JunctionScatterplotLayer extends CompositeLayer { + static layerName: string; + static defaultProps: any; + renderLayers(): ScatterplotLayer[]; +} +//# sourceMappingURL=junction-scatterplot-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts.map b/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts.map new file mode 100644 index 000000000..87ab6d3e4 --- /dev/null +++ b/modules/layers/dist-types/layers/junction-scatterplot-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"junction-scatterplot-layer.d.ts","sourceRoot":"","sources":["../../src/layers/junction-scatterplot-layer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,wBAAyB,SAAQ,cAAc,CAAC,GAAG,CAAC;IACvE,MAAM,CAAC,SAAS,SAA8B;IAC9C,MAAM,CAAC,YAAY,MAMjB;IAEF,YAAY;CA+Bb"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts b/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts new file mode 100644 index 000000000..12e4922ad --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts @@ -0,0 +1,6 @@ +/// +import { Geometry } from '@luma.gl/core'; +export default class Arrow2DGeometry extends Geometry { + constructor(opts?: {}); +} +//# sourceMappingURL=arrow-2d-geometry.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts.map b/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts.map new file mode 100644 index 000000000..1c6edec49 --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/arrow-2d-geometry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-2d-geometry.d.ts","sourceRoot":"","sources":["../../../src/layers/path-marker-layer/arrow-2d-geometry.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,QAAQ;gBACvC,IAAI,KAAK;CAOtB"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts b/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts new file mode 100644 index 000000000..e8bdca148 --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts @@ -0,0 +1,9 @@ +export default function createPathMarkers({ data, getPath, getDirection, getColor, getMarkerPercentages, projectFlat, }: { + data: any; + getPath?: (x: any) => any; + getDirection?: (x: any) => any; + getColor?: (x: any) => number[]; + getMarkerPercentages?: (x: any) => number[]; + projectFlat: any; +}): any[]; +//# sourceMappingURL=create-path-markers.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts.map b/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts.map new file mode 100644 index 000000000..f61ab856d --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/create-path-markers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"create-path-markers.d.ts","sourceRoot":"","sources":["../../../src/layers/path-marker-layer/create-path-markers.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,OAAuB,EACvB,YAAiC,EACjC,QAA+B,EAC/B,oBAAmC,EACnC,WAAW,GACZ;;;;;;;CAAA,SA+CA"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts b/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts new file mode 100644 index 000000000..4df84bd42 --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts @@ -0,0 +1,42 @@ +/// +import { CompositeLayer } from '@deck.gl/core'; +import { SimpleMeshLayer } from '@deck.gl/mesh-layers'; +import Arrow2DGeometry from './arrow-2d-geometry'; +export default class PathMarkerLayer extends CompositeLayer { + static layerName: string; + static defaultProps: { + getZLevel: { + type: string; + value: number; + }; + } & { + MarkerLayer: typeof SimpleMeshLayer; + markerLayerProps: { + mesh: Arrow2DGeometry; + }; + sizeScale: number; + fp64: boolean; + hightlightIndex: number; + highlightPoint: any; + getPath: (x: any) => any; + getColor: (x: any) => any; + getMarkerColor: (x: any) => number[]; + getDirection: (x: any) => any; + getMarkerPercentages: (object: any, { lineLength }: { + lineLength: any; + }) => number[]; + }; + initializeState(): void; + projectFlat(xyz: any, viewport: any, coordinateSystem: any, coordinateOrigin: any): any; + updateState({ props, oldProps, changeFlags }: { + props: any; + oldProps: any; + changeFlags: any; + }): void; + _recalculateClosestPoint(): void; + getPickingInfo({ info }: { + info: any; + }): any; + renderLayers(): any[]; +} +//# sourceMappingURL=path-marker-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts.map b/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts.map new file mode 100644 index 000000000..b4723b352 --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/path-marker-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"path-marker-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/path-marker-layer/path-marker-layer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAkClD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,cAAc,CAAC,GAAG,CAAC;IAC9D,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;MAAgB;IAEnC,eAAe;IAQf,WAAW,CAAC,GAAG,KAAA,EAAE,QAAQ,KAAA,EAAE,gBAAgB,KAAA,EAAE,gBAAgB,KAAA;IAc7D,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE;;;;KAAA;IA+B5C,wBAAwB;IAgBxB,cAAc,CAAC,EAAE,IAAI,EAAE;;KAAA;IAOvB,YAAY;CAqCb"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts b/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts new file mode 100644 index 000000000..a33846d91 --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts @@ -0,0 +1,18 @@ +export declare function getClosestPointOnLine({ p, p1, p2, clampToLine }: { + p: any; + p1: any; + p2: any; + clampToLine?: boolean; +}): any; +export declare function getClosestPointOnPolyline({ p, points }: { + p: any; + points: any; +}): { + point: any; + index: number; + p1: any; + p2: any; + distanceSquared: number; + distance: number; +}; +//# sourceMappingURL=polyline.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts.map b/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts.map new file mode 100644 index 000000000..8191027aa --- /dev/null +++ b/modules/layers/dist-types/layers/path-marker-layer/polyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"polyline.d.ts","sourceRoot":"","sources":["../../../src/layers/path-marker-layer/polyline.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAkB,EAAE;;;;;CAAA,OAStE;AAGD,wBAAgB,yBAAyB,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;;;CAAA;;;;;;;EAwBtD"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts b/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts new file mode 100644 index 000000000..5e6493f39 --- /dev/null +++ b/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts @@ -0,0 +1,21 @@ +/// +import { PathLayer } from '@deck.gl/layers'; +export default class PathOutlineLayer extends PathLayer { + static layerName: string; + static defaultProps: { + getZLevel: { + type: string; + value: number; + }; + }; + getShaders(): any; + initializeState(context: any): void; + draw({ moduleParameters, parameters, uniforms, context }: { + moduleParameters?: {}; + parameters: any; + uniforms: any; + context: any; + }): void; + calculateZLevels(attribute: any): void; +} +//# sourceMappingURL=path-outline-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts.map b/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts.map new file mode 100644 index 000000000..21e566986 --- /dev/null +++ b/modules/layers/dist-types/layers/path-outline-layer/path-outline-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"path-outline-layer.d.ts","sourceRoot":"","sources":["../../../src/layers/path-outline-layer/path-outline-layer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAwB5C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,SAAS,CAAC,GAAG,CAAC;IAC1D,MAAM,CAAC,SAAS,SAAsB;IACtC,MAAM,CAAC,YAAY;;;;;MAAgB;IAGnC,UAAU;IASV,eAAe,CAAC,OAAO,EAAE,GAAG;IAsB5B,IAAI,CAAC,EAAE,gBAAqB,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;;;;;KAAA;IA6D7D,gBAAgB,CAAC,SAAS,KAAA;CAU3B"} \ No newline at end of file diff --git a/modules/layers/dist-types/layers/selection-layer.d.ts b/modules/layers/dist-types/layers/selection-layer.d.ts new file mode 100644 index 000000000..0c31b5069 --- /dev/null +++ b/modules/layers/dist-types/layers/selection-layer.d.ts @@ -0,0 +1,21 @@ +/// +import { CompositeLayer } from '@deck.gl/core'; +import EditableGeoJsonLayer from './editable-geojson-layer'; +export declare const SELECTION_TYPE: { + NONE: any; + RECTANGLE: string; + POLYGON: string; +}; +export default class SelectionLayer extends CompositeLayer { + static layerName: string; + static defaultProps: { + selectionType: string; + layerIds: any[]; + onSelect: () => void; + }; + _selectRectangleObjects(coordinates: any): void; + _selectPolygonObjects(coordinates: any): void; + renderLayers(): EditableGeoJsonLayer[]; + shouldUpdateState({ changeFlags: { stateChanged, propsOrDataChanged } }: Record): any; +} +//# sourceMappingURL=selection-layer.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/layers/selection-layer.d.ts.map b/modules/layers/dist-types/layers/selection-layer.d.ts.map new file mode 100644 index 000000000..dba03bc0c --- /dev/null +++ b/modules/layers/dist-types/layers/selection-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"selection-layer.d.ts","sourceRoot":"","sources":["../../src/layers/selection-layer.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAO/C,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAE5D,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAgDF,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc,CAAC,GAAG,CAAC;IAC7D,MAAM,CAAC,SAAS,SAAoB;IACpC,MAAM,CAAC,YAAY;;;;MAAgB;IAEnC,uBAAuB,CAAC,WAAW,EAAE,GAAG;IAkBxC,qBAAqB,CAAC,WAAW,EAAE,GAAG;IAoDtC,YAAY;IA0DZ,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG7F"} \ No newline at end of file diff --git a/modules/layers/dist-types/math.d.ts b/modules/layers/dist-types/math.d.ts new file mode 100644 index 000000000..83a573812 --- /dev/null +++ b/modules/layers/dist-types/math.d.ts @@ -0,0 +1,12 @@ +import { Position } from 'geojson'; +export declare function toDegree(radian: number): number; +export declare function toRadian(angle: number): number; +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ +export declare function convertE7Array(array: number[]): Position[]; +//# sourceMappingURL=math.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/math.d.ts.map b/modules/layers/dist-types/math.d.ts.map new file mode 100644 index 000000000..6edf42fd5 --- /dev/null +++ b/modules/layers/dist-types/math.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAQ1D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts b/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts new file mode 100644 index 000000000..f2ed163af --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts @@ -0,0 +1,25 @@ +import { FeatureCollection, Feature, Position } from '@nebula.gl/edit-modes'; +import { ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { ModeHandler, EditAction, EditHandle } from './mode-handler'; +export declare class CompositeModeHandler extends ModeHandler { + handlers: Array; + options: Record; + constructor(handlers: Array, options?: Record); + _coalesce(callback: (arg0: ModeHandler) => T, resultEval?: (arg0: T) => boolean | null | undefined): T; + setFeatureCollection(featureCollection: FeatureCollection): void; + setModeConfig(modeConfig: any): void; + setSelectedFeatureIndexes(indexes: number[]): void; + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getTentativeFeature(): Feature | null | undefined; + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; +} +//# sourceMappingURL=composite-mode-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts.map new file mode 100644 index 000000000..3e3604cc6 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/composite-mode-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"composite-mode-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/composite-mode-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGrE,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEjB,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAM3E,SAAS,CAAC,CAAC,EACT,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC,EAClC,UAAU,GAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,GAAG,SAAgB,GACzD,CAAC;IAaJ,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI;IAIhE,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAIpC,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAI7D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAOvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAI7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAI3E,mBAAmB,IAAI,OAAO,GAAG,IAAI,GAAG,SAAS;IAIjD,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE;IAUzF,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;CAG3D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts new file mode 100644 index 000000000..6f3ee82e1 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts @@ -0,0 +1,14 @@ +import { Position } from '@nebula.gl/edit-modes'; +import { ClickEvent, PointerMoveEvent } from '../event-types'; +import { EditAction, EditHandle, ModeHandler } from './mode-handler'; +export declare class Draw90DegreePolygonHandler extends ModeHandler { + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; + handlePointerMove({ groundCoords, }: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleClick(event: ClickEvent): EditAction | null | undefined; + finalizedCoordinates(coords: Position[]): Position[][]; + getIntermediatePoint(coordinates: Position[]): any; +} +//# sourceMappingURL=draw-90degree-polygon-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts.map new file mode 100644 index 000000000..9c6db1dd6 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-90degree-polygon-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-90degree-polygon-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-90degree-polygon-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAW,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,0BAA2B,SAAQ,WAAW;IACzD,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE;IAmBzF,iBAAiB,CAAC,EAChB,YAAY,GACb,EAAE,gBAAgB,GAAG;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAkD1F,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IA+C7D,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE;IAmBvC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE;CA0C7C"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts new file mode 100644 index 000000000..023a04a67 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { TwoClickPolygonHandler } from './two-click-polygon-handler'; +export declare class DrawCircleByBoundingBoxHandler extends TwoClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-circle-by-bounding-box-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map new file mode 100644 index 000000000..6c47af100 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-circle-by-bounding-box-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-circle-by-bounding-box-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,qBAAa,8BAA+B,SAAQ,sBAAsB;IACxE,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CA0BxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts new file mode 100644 index 000000000..c6fa5e1ad --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { TwoClickPolygonHandler } from './two-click-polygon-handler'; +export declare class DrawCircleFromCenterHandler extends TwoClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-circle-from-center-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts.map new file mode 100644 index 000000000..1c52c0404 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-circle-from-center-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-circle-from-center-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-circle-from-center-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,qBAAa,2BAA4B,SAAQ,sBAAsB;IACrE,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CAyBxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts new file mode 100644 index 000000000..9bcff5960 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { TwoClickPolygonHandler } from './two-click-polygon-handler'; +export declare class DrawEllipseByBoundingBoxHandler extends TwoClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-ellipse-by-bounding-box-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map new file mode 100644 index 000000000..867248692 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-ellipse-by-bounding-box-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,qBAAa,+BAAgC,SAAQ,sBAAsB;IACzE,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CA2BxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts new file mode 100644 index 000000000..ce8252be2 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { ThreeClickPolygonHandler } from './three-click-polygon-handler'; +export declare class DrawEllipseUsingThreePointsHandler extends ThreeClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-ellipse-using-three-points-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map new file mode 100644 index 000000000..43fb31bf8 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-ellipse-using-three-points-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-ellipse-using-three-points-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,qBAAa,kCAAmC,SAAQ,wBAAwB;IAC9E,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CAgCxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts new file mode 100644 index 000000000..2e9571936 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts @@ -0,0 +1,10 @@ +import { ClickEvent, PointerMoveEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class DrawLineStringHandler extends ModeHandler { + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-line-string-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts.map new file mode 100644 index 000000000..ce6f5ec28 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-line-string-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-line-string-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-line-string-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAuD7D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CA2CxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts new file mode 100644 index 000000000..38e75bbbc --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts @@ -0,0 +1,6 @@ +import { ClickEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class DrawPointHandler extends ModeHandler { + handleClick({ groundCoords }: ClickEvent): EditAction | null | undefined; +} +//# sourceMappingURL=draw-point-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts.map new file mode 100644 index 000000000..7cb57b6cd --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-point-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-point-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-point-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,WAAW,CAAC,EAAE,YAAY,EAAE,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;CAQzE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts new file mode 100644 index 000000000..733669fd9 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts @@ -0,0 +1,12 @@ +import { Position } from '@nebula.gl/edit-modes'; +import { ClickEvent, PointerMoveEvent } from '../event-types'; +import { EditAction, EditHandle, ModeHandler } from './mode-handler'; +export declare class DrawPolygonHandler extends ModeHandler { + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove({ groundCoords, }: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-polygon-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts.map new file mode 100644 index 000000000..53c7bfaa2 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-polygon-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-polygon-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-polygon-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE;IAkBzF,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAwD7D,iBAAiB,CAAC,EAChB,YAAY,GACb,EAAE,gBAAgB,GAAG;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CA+B3F"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts new file mode 100644 index 000000000..2723538db --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { TwoClickPolygonHandler } from './two-click-polygon-handler'; +export declare class DrawRectangleHandler extends TwoClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-rectangle-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts.map new file mode 100644 index 000000000..95ffafcd0 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-rectangle-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-rectangle-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-rectangle-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CAgBxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts b/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts new file mode 100644 index 000000000..ce30b7f91 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts @@ -0,0 +1,10 @@ +import { PointerMoveEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { ThreeClickPolygonHandler } from './three-click-polygon-handler'; +export declare class DrawRectangleUsingThreePointsHandler extends ThreeClickPolygonHandler { + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +//# sourceMappingURL=draw-rectangle-using-three-points-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map new file mode 100644 index 000000000..73feca12b --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"draw-rectangle-using-three-points-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/draw-rectangle-using-three-points-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,qBAAa,oCAAqC,SAAQ,wBAAwB;IAChF,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CAgDxE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts b/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts new file mode 100644 index 000000000..79e9f6f42 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts @@ -0,0 +1,10 @@ +import { StartDraggingEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { TranslateHandler } from './translate-handler'; +export declare class DuplicateHandler extends TranslateHandler { + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; +} +//# sourceMappingURL=duplicate-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts.map new file mode 100644 index 000000000..396da72d8 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/duplicate-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"duplicate-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/duplicate-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAY7E,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;CAM3D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts b/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts new file mode 100644 index 000000000..8ef21d117 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts @@ -0,0 +1,20 @@ +import { Position } from '@nebula.gl/edit-modes'; +import { PointerMoveEvent, StopDraggingEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { ModifyHandler } from './modify-handler'; +export declare class ElevationHandler extends ModifyHandler { + makeElevatedEvent(event: PointerMoveEvent | StopDraggingEvent, position: Position): Record; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor(params: { + isDragging: boolean; + }): string; + static calculateElevationChangeWithViewport(viewport: any, { pointerDownScreenCoords, screenCoords, }: { + pointerDownScreenCoords: Position; + screenCoords: Position; + }): number; +} +//# sourceMappingURL=elevation-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts.map new file mode 100644 index 000000000..9ab2dfee7 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/elevation-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"elevation-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/elevation-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAuB,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAajD,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,EAC3C,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA2BtB,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAOvE,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAO3E,SAAS,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAQlD,MAAM,CAAC,oCAAoC,CACzC,QAAQ,EAAE,GAAG,EACb,EACE,uBAAuB,EACvB,YAAY,GACb,EAAE;QACD,uBAAuB,EAAE,QAAQ,CAAC;QAClC,YAAY,EAAE,QAAQ,CAAC;KACxB,GACA,MAAM;CAOV"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts b/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts new file mode 100644 index 000000000..2699c6f71 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts @@ -0,0 +1,19 @@ +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditAction } from './mode-handler'; +import { ModifyHandler } from './modify-handler'; +export declare class ExtrudeHandler extends ModifyHandler { + isPointAdded: boolean; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + coordinatesSize(positionIndexes: number[], featureIndex: number): number; + getBearing(p1: any, p2: any): number; + isOrthogonal(positionIndexes: number[], featureIndex: number, size: number): boolean; + nextPositionIndexes(positionIndexes: number[], size: number): number[]; + prevPositionIndexes(positionIndexes: number[], size: number): number[]; + getPointForPositionIndexes(positionIndexes: number[], featureIndex: number): any; +} +//# sourceMappingURL=extrude-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts.map new file mode 100644 index 000000000..98f932871 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/extrude-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"extrude-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/extrude-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAuB,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,qBAAa,cAAe,SAAQ,aAAa;IAC/C,YAAY,UAAS;IACrB,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAiDvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAyD7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IA8C3E,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM;IAmB/D,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG;IAQ3B,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAkB1E,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtE,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtE,0BAA0B,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM;CAkB3E"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/mode-handler.d.ts b/modules/layers/dist-types/mode-handlers/mode-handler.d.ts new file mode 100644 index 000000000..70f00ec94 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/mode-handler.d.ts @@ -0,0 +1,61 @@ +import { ImmutableFeatureCollection, FeatureCollection, Feature, Polygon, Geometry, Position } from '@nebula.gl/edit-modes'; +import { ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DeckGLPick } from '../event-types'; +export declare type EditHandleType = 'existing' | 'intermediate' | 'snap'; +export declare type EditHandle = { + position: Position; + positionIndexes: number[]; + featureIndex: number; + type: EditHandleType; +}; +export declare type EditAction = { + updatedData: FeatureCollection; + editType: string; + featureIndexes: number[]; + editContext: any; +}; +export declare class ModeHandler { + featureCollection: ImmutableFeatureCollection; + _tentativeFeature: Feature | null | undefined; + _modeConfig: any; + _selectedFeatureIndexes: number[]; + _clickSequence: Position[]; + constructor(featureCollection?: FeatureCollection); + getFeatureCollection(): FeatureCollection; + getImmutableFeatureCollection(): ImmutableFeatureCollection; + getSelectedFeature(): Feature | null | undefined; + getSelectedGeometry(): Geometry | null | undefined; + getSelectedFeaturesAsFeatureCollection(): FeatureCollection; + setFeatureCollection(featureCollection: FeatureCollection): void; + getModeConfig(): any; + setModeConfig(modeConfig: any): void; + getSelectedFeatureIndexes(): number[]; + setSelectedFeatureIndexes(indexes: number[]): void; + getClickSequence(): Position[]; + resetClickSequence(): void; + getTentativeFeature(): Feature | null | undefined; + _setTentativeFeature(tentativeFeature: Feature | null | undefined): void; + /** + * Returns a flat array of positions for the given feature along with their indexes into the feature's geometry's coordinates. + * + * @param featureIndex The index of the feature to get edit handles + */ + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; + isSelectionPicked(picks: DeckGLPick[]): boolean; + getAddFeatureAction(geometry: Geometry): EditAction; + getAddManyFeaturesAction(featureCollection: FeatureCollection): EditAction; + getAddFeatureOrBooleanPolygonAction(geometry: Polygon): EditAction | null | undefined; + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; +} +export declare function getPickedEditHandle(picks: any[] | null | undefined): EditHandle | null | undefined; +export declare function getIntermediatePosition(position1: Position, position2: Position): Position; +export declare function getEditHandlesForGeometry(geometry: Geometry, featureIndex: number, editHandleType?: EditHandleType): EditHandle[]; +//# sourceMappingURL=mode-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/mode-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/mode-handler.d.ts.map new file mode 100644 index 000000000..9bfa0a929 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/mode-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mode-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/mode-handler.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/modify-handler.d.ts b/modules/layers/dist-types/mode-handlers/modify-handler.d.ts new file mode 100644 index 000000000..9ff0720be --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/modify-handler.d.ts @@ -0,0 +1,20 @@ +import { Position, FeatureOf, Point, LineString } from '@nebula.gl/edit-modes'; +import { NearestPointType } from '../utils'; +import { ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditAction, EditHandle, ModeHandler } from './mode-handler'; +export declare class ModifyHandler extends ModeHandler { + _lastPointerMovePicks: any; + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; + nearestPointOnLine(line: FeatureOf, inPoint: FeatureOf): NearestPointType; + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; +} +//# sourceMappingURL=modify-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/modify-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/modify-handler.d.ts.map new file mode 100644 index 000000000..f9444249f --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/modify-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"modify-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/modify-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAGL,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,aAAc,SAAQ,WAAW;IAC5C,qBAAqB,EAAE,GAAG,CAAC;IAE3B,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE;IA0EzF,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,gBAAgB;IAiB5F,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAoD7D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IA6BvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAyB7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAwB3E,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;CAY3D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts b/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts new file mode 100644 index 000000000..4ad686ab6 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts @@ -0,0 +1,18 @@ +import { FeatureCollection, Position } from '@nebula.gl/edit-modes'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class RotateHandler extends ModeHandler { + _isRotatable: boolean; + _geometryBeingRotated: FeatureCollection | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; + getRotateAction(startDragPoint: Position, currentPoint: Position, editType: string): EditAction; +} +//# sourceMappingURL=rotate-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts.map new file mode 100644 index 000000000..17be51207 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/rotate-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"rotate-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/rotate-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAE5D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAsBvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAS7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAgB3E,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAQ1D,eAAe,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;CAuBhG"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/scale-handler.d.ts b/modules/layers/dist-types/mode-handlers/scale-handler.d.ts new file mode 100644 index 000000000..294e9048c --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/scale-handler.d.ts @@ -0,0 +1,18 @@ +import { FeatureCollection, Position } from '@nebula.gl/edit-modes'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class ScaleHandler extends ModeHandler { + _isScalable: boolean; + _geometryBeingScaled: FeatureCollection | null | undefined; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; + getScaleAction(startDragPoint: Position, currentPoint: Position, editType: string): EditAction; +} +//# sourceMappingURL=scale-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/scale-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/scale-handler.d.ts.map new file mode 100644 index 000000000..a60bb07b4 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/scale-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"scale-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/scale-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAE3D,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAsBvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAS7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAY3E,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAQ1D,cAAc,CAAC,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;CAyB/F"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts b/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts new file mode 100644 index 000000000..d746daedc --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts @@ -0,0 +1,34 @@ +import { Feature, FeatureCollection, Position } from '@nebula.gl/edit-modes'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditHandle, EditAction, ModeHandler } from './mode-handler'; +declare type HandlePicks = { + pickedHandle?: EditHandle; + potentialSnapHandle?: EditHandle; +}; +export declare class SnappableHandler extends ModeHandler { + _handler: ModeHandler; + _editHandlePicks: HandlePicks | null | undefined; + _startDragSnapHandlePosition: Position; + constructor(handler: ModeHandler); + setFeatureCollection(featureCollection: FeatureCollection): void; + setModeConfig(modeConfig: any): void; + setSelectedFeatureIndexes(indexes: number[]): void; + _getSnappedMouseEvent(event: Record, snapPoint: Position): PointerMoveEvent; + _getEditHandlePicks(event: PointerMoveEvent): HandlePicks; + _updatePickedHandlePosition(editAction: EditAction): void; + _getSnapTargets(): Feature[]; + _getNonPickedIntermediateHandles(): EditHandle[]; + getEditHandles(picks?: Array>, groundCoords?: Position): any[]; + _getSnapAwareEvent(event: Record): Record; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor(event: { + isDragging: boolean; + }): string; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; +} +export {}; +//# sourceMappingURL=snappable-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts.map new file mode 100644 index 000000000..147f4fc2a --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/snappable-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"snappable-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/snappable-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAExB,aAAK,WAAW,GAAG;IAAE,YAAY,CAAC,EAAE,UAAU,CAAC;IAAC,mBAAmB,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAGnF,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,EAAE,WAAW,CAAC;IACtB,gBAAgB,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,4BAA4B,EAAE,QAAQ,CAAC;gBAE3B,OAAO,EAAE,WAAW;IAKhC,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI;IAIhE,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAKpC,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlD,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,gBAAgB;IAQxF,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW;IAgBzD,2BAA2B,CAAC,UAAU,EAAE,UAAU;IA0BlD,eAAe,IAAI,OAAO,EAAE;IAW5B,gCAAgC,IAAI,UAAU,EAAE;IAoBhD,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE;IAuBlF,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQnE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAK7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAQ3E,SAAS,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAIjD,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;CAexE"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts b/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts new file mode 100644 index 000000000..53c430b4b --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts @@ -0,0 +1,12 @@ +import { ClickEvent, PointerMoveEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class SplitPolygonHandler extends ModeHandler { + calculateGroundCoords(clickSequence: any, groundCoords: any): any; + handleClick(event: ClickEvent): EditAction | null | undefined; + handlePointerMove({ groundCoords, }: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + splitPolygon(): EditAction; +} +//# sourceMappingURL=split-polygon-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts.map new file mode 100644 index 000000000..d9707d196 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/split-polygon-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"split-polygon-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/split-polygon-handler.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,qBAAqB,CAAC,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;IAgD3D,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAoC7D,iBAAiB,CAAC,EAChB,YAAY,GACb,EAAE,gBAAgB,GAAG;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAoB1F,YAAY;CAuDb"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts b/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts new file mode 100644 index 000000000..a25d40aed --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts @@ -0,0 +1,6 @@ +import { ClickEvent } from '../event-types'; +import { ModeHandler, EditAction } from './mode-handler'; +export declare class ThreeClickPolygonHandler extends ModeHandler { + handleClick(event: ClickEvent): EditAction | null | undefined; +} +//# sourceMappingURL=three-click-polygon-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts.map new file mode 100644 index 000000000..08fb00266 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/three-click-polygon-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"three-click-polygon-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/three-click-polygon-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;CAmB9D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/translate-handler.d.ts b/modules/layers/dist-types/mode-handlers/translate-handler.d.ts new file mode 100644 index 000000000..3aebcc524 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/translate-handler.d.ts @@ -0,0 +1,18 @@ +import { FeatureCollection, Position } from '@nebula.gl/edit-modes'; +import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent } from '../event-types'; +import { EditAction, ModeHandler } from './mode-handler'; +export declare class TranslateHandler extends ModeHandler { + _geometryBeforeTranslate: FeatureCollection | null | undefined; + _isTranslatable: boolean; + handlePointerMove(event: PointerMoveEvent): { + editAction: EditAction | null | undefined; + cancelMapPan: boolean; + }; + handleStartDragging(event: StartDraggingEvent): EditAction | null | undefined; + handleStopDragging(event: StopDraggingEvent): EditAction | null | undefined; + getCursor({ isDragging }: { + isDragging: boolean; + }): string; + getTranslateAction(startDragPoint: Position, currentPoint: Position, editType: string): EditAction | null | undefined; +} +//# sourceMappingURL=translate-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/translate-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/translate-handler.d.ts.map new file mode 100644 index 000000000..2efb7e7a5 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/translate-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"translate-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/translate-handler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,wBAAwB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/D,eAAe,EAAE,OAAO,CAAC;IAEzB,iBAAiB,CACf,KAAK,EAAE,gBAAgB,GACtB;QAAE,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE;IAuBvE,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAS7E,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;IAgB3E,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAO1D,kBAAkB,CAChB,cAAc,EAAE,QAAQ,EACxB,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,MAAM,GACf,UAAU,GAAG,IAAI,GAAG,SAAS;CAiCjC"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts b/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts new file mode 100644 index 000000000..4e7d8a6fa --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts @@ -0,0 +1,6 @@ +import { ClickEvent } from '../event-types'; +import { ModeHandler, EditAction } from './mode-handler'; +export declare class TwoClickPolygonHandler extends ModeHandler { + handleClick(event: ClickEvent): EditAction | null | undefined; +} +//# sourceMappingURL=two-click-polygon-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts.map new file mode 100644 index 000000000..cc4fd8bcf --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/two-click-polygon-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"two-click-polygon-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/two-click-polygon-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS;CAmB9D"} \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/view-handler.d.ts b/modules/layers/dist-types/mode-handlers/view-handler.d.ts new file mode 100644 index 000000000..84ede80e9 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/view-handler.d.ts @@ -0,0 +1,9 @@ +import { Position } from '@nebula.gl/edit-modes'; +import { EditHandle, ModeHandler } from './mode-handler'; +export declare class ViewHandler extends ModeHandler { + getCursor({ isDragging }: { + isDragging: boolean; + }): string; + getEditHandles(picks?: Array>, groundCoords?: Position): EditHandle[]; +} +//# sourceMappingURL=view-handler.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/mode-handlers/view-handler.d.ts.map b/modules/layers/dist-types/mode-handlers/view-handler.d.ts.map new file mode 100644 index 000000000..b6b57f985 --- /dev/null +++ b/modules/layers/dist-types/mode-handlers/view-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"view-handler.d.ts","sourceRoot":"","sources":["../../src/mode-handlers/view-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI1D,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE;CAG1F"} \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/color/color.d.ts b/modules/layers/dist-types/shaderlib/color/color.d.ts new file mode 100644 index 000000000..45a3c5e09 --- /dev/null +++ b/modules/layers/dist-types/shaderlib/color/color.d.ts @@ -0,0 +1,9 @@ +declare function getUniforms(opts?: Record): Record; +declare const _default: { + name: string; + vs: string; + fs: string; + getUniforms: typeof getUniforms; +}; +export default _default; +//# sourceMappingURL=color.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/color/color.d.ts.map b/modules/layers/dist-types/shaderlib/color/color.d.ts.map new file mode 100644 index 000000000..e3ac12f23 --- /dev/null +++ b/modules/layers/dist-types/shaderlib/color/color.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/shaderlib/color/color.ts"],"names":[],"mappings":"AASA,iBAAS,WAAW,CAAC,IAAI,yBAAgB,0BAMxC;;;;;;;AAiCD,wBAKE"} \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/outline/outline.d.ts b/modules/layers/dist-types/shaderlib/outline/outline.d.ts new file mode 100644 index 000000000..8e421635b --- /dev/null +++ b/modules/layers/dist-types/shaderlib/outline/outline.d.ts @@ -0,0 +1,9 @@ +declare function getUniforms({ outlineEnabled, outlineRenderShadowmap, outlineShadowmap }?: Record): Record; +declare const _default: { + name: string; + vs: string; + fs: string; + getUniforms: typeof getUniforms; +}; +export default _default; +//# sourceMappingURL=outline.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/outline/outline.d.ts.map b/modules/layers/dist-types/shaderlib/outline/outline.d.ts.map new file mode 100644 index 000000000..702f64567 --- /dev/null +++ b/modules/layers/dist-types/shaderlib/outline/outline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../../src/shaderlib/outline/outline.ts"],"names":[],"mappings":"AAOA,iBAAS,WAAW,CAAC,EAAE,cAAc,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,sBAAgB,uBAchG;;;;;;;AAuED,wBAKE"} \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/utils/utils.d.ts b/modules/layers/dist-types/shaderlib/utils/utils.d.ts new file mode 100644 index 000000000..9eafa84d4 --- /dev/null +++ b/modules/layers/dist-types/shaderlib/utils/utils.d.ts @@ -0,0 +1,9 @@ +declare function getUniforms({}?: {}): void; +declare const _default: { + name: string; + vs: string; + fs: string; + getUniforms: typeof getUniforms; +}; +export default _default; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/shaderlib/utils/utils.d.ts.map b/modules/layers/dist-types/shaderlib/utils/utils.d.ts.map new file mode 100644 index 000000000..d4ad69e68 --- /dev/null +++ b/modules/layers/dist-types/shaderlib/utils/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/shaderlib/utils/utils.ts"],"names":[],"mappings":"AAKA,iBAAS,WAAW,CAAC,EAAE,KAAgB,QAAI;;;;;;;AAsB3C,wBAKE"} \ No newline at end of file diff --git a/modules/layers/dist-types/style.d.ts b/modules/layers/dist-types/style.d.ts new file mode 100644 index 000000000..8c33b8ce4 --- /dev/null +++ b/modules/layers/dist-types/style.d.ts @@ -0,0 +1,9 @@ +export declare const ArrowStyles: { + NONE: number; + FORWARD: number; + BACKWARD: number; + BOTH: number; +}; +export declare const DEFAULT_ARROWS = 1; +export declare const MAX_ARROWS = 3; +//# sourceMappingURL=style.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/style.d.ts.map b/modules/layers/dist-types/style.d.ts.map new file mode 100644 index 000000000..eef241f2f --- /dev/null +++ b/modules/layers/dist-types/style.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,UAAU,IAAI,CAAC"} \ No newline at end of file diff --git a/modules/layers/dist-types/types.d.ts b/modules/layers/dist-types/types.d.ts new file mode 100644 index 000000000..def72b69f --- /dev/null +++ b/modules/layers/dist-types/types.d.ts @@ -0,0 +1,13 @@ +export declare type Color = [number, number, number, number]; +export declare type Viewport = { + width: number; + height: number; + longitude: number; + latitude: number; + zoom: number; + isDragging?: boolean; + isMoving?: boolean; + bearing?: number; + pitch?: number; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/types.d.ts.map b/modules/layers/dist-types/types.d.ts.map new file mode 100644 index 000000000..37947861a --- /dev/null +++ b/modules/layers/dist-types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,oBAAY,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,oBAAY,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"} \ No newline at end of file diff --git a/modules/layers/dist-types/utils.d.ts b/modules/layers/dist-types/utils.d.ts new file mode 100644 index 000000000..3df076e68 --- /dev/null +++ b/modules/layers/dist-types/utils.d.ts @@ -0,0 +1,12 @@ +import { Position, Point, LineString, FeatureOf, FeatureWithProps, Viewport } from '@nebula.gl/edit-modes'; +export declare type NearestPointType = FeatureWithProps; +export declare function toDeckColor(color?: [number, number, number, number] | number, defaultColor?: [number, number, number, number]): [number, number, number, number]; +export declare function recursivelyTraverseNestedArrays(array: Array, prefix: Array, fn: Function): boolean; +export declare function generatePointsParallelToLinePoints(p1: Position, p2: Position, groundCoords: Position): Position[]; +export declare function distance2d(x1: number, y1: number, x2: number, y2: number): number; +export declare function mix(a: number, b: number, ratio: number): number; +export declare function nearestPointOnProjectedLine(line: FeatureOf, inPoint: FeatureOf, viewport: Viewport): NearestPointType; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/modules/layers/dist-types/utils.d.ts.map b/modules/layers/dist-types/utils.d.ts.map new file mode 100644 index 000000000..8f5052875 --- /dev/null +++ b/modules/layers/dist-types/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAK/B,oBAAY,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAExF,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EACjD,YAAY,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAoB,GAChE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKlC;AA2BD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EACrB,EAAE,EAAE,QAAQ,WAYb;AAED,wBAAgB,kCAAkC,CAChD,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,QAAQ,EACZ,YAAY,EAAE,QAAQ,GACrB,QAAQ,EAAE,CAwBZ;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAC3B,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EACzB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CA+DlB"} \ No newline at end of file diff --git a/modules/layers/dist/curve-utils.js b/modules/layers/dist/curve-utils.js new file mode 100644 index 000000000..215047a84 --- /dev/null +++ b/modules/layers/dist/curve-utils.js @@ -0,0 +1,80 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.generateCurveFromControlPoints = generateCurveFromControlPoints; + +var _cubicHermiteSpline = _interopRequireDefault(require("cubic-hermite-spline")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var INTERPOLATION_INTERVAL = 0.005; +var INTERPOLATION_THRESHOLD = 0.001; + +function calculateSingleTangent(p0, p1, d) { + var x = (p1[0] - p0[0]) / d; + var y = (p1[1] - p0[1]) / d; + return [x, y]; +} + +function generateCurveFromControlPoints(line) { + // calculate knots + var knots = [0]; + var prev = null; + var totalDistance = 0; + var coords = line.geometry.coordinates; + + for (var i = 0; i < coords.length; i++) { + var cur = coords[i]; + + if (prev !== null) { + totalDistance += (0, _distance["default"])(prev, cur); + knots.push(totalDistance); + } + + prev = cur; + } // calculate tangents + + + var tangents = []; // first tangent + // @ts-ignore + + tangents.push(calculateSingleTangent(coords[0], coords[1], knots[1] - knots[0])); // second to before last + + for (var _i = 1; _i < coords.length - 1; _i++) { + // @ts-ignore + var A = calculateSingleTangent(coords[_i], coords[_i + 1], knots[_i + 1] - knots[_i]); // @ts-ignore + + var B = calculateSingleTangent(coords[_i - 1], coords[_i], knots[_i] - knots[_i - 1]); + var x = (A[0] + B[0]) / 2.0; + var y = (A[1] + B[1]) / 2.0; + tangents.push([x, y]); + } // last tangent + + + var last = coords.length - 1; + tangents.push( // @ts-ignore + calculateSingleTangent(coords[last - 1], coords[last], knots[last] - knots[last - 1])); // generate curve + + var result = []; + + for (var _i2 = 0; _i2 < coords.length; _i2++) { + // add control point + result.push(coords[_i2]); // add interpolated values + + for (var t = knots[_i2] + INTERPOLATION_INTERVAL; t < knots[_i2 + 1]; t += INTERPOLATION_INTERVAL) { + if (knots[_i2 + 1] - t > INTERPOLATION_THRESHOLD) { + // Only add if not too close to a control point (knot = control point) + result.push((0, _cubicHermiteSpline["default"])(t, coords, tangents, knots)); + } + } + } + + return (0, _helpers.lineString)(result); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jdXJ2ZS11dGlscy50cyJdLCJuYW1lcyI6WyJJTlRFUlBPTEFUSU9OX0lOVEVSVkFMIiwiSU5URVJQT0xBVElPTl9USFJFU0hPTEQiLCJjYWxjdWxhdGVTaW5nbGVUYW5nZW50IiwicDAiLCJwMSIsImQiLCJ4IiwieSIsImdlbmVyYXRlQ3VydmVGcm9tQ29udHJvbFBvaW50cyIsImxpbmUiLCJrbm90cyIsInByZXYiLCJ0b3RhbERpc3RhbmNlIiwiY29vcmRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImkiLCJsZW5ndGgiLCJjdXIiLCJwdXNoIiwidGFuZ2VudHMiLCJBIiwiQiIsImxhc3QiLCJyZXN1bHQiLCJ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFJQSxJQUFNQSxzQkFBc0IsR0FBRyxLQUEvQjtBQUNBLElBQU1DLHVCQUF1QixHQUFHLEtBQWhDOztBQUVBLFNBQVNDLHNCQUFULENBQWdDQyxFQUFoQyxFQUFzREMsRUFBdEQsRUFBNEVDLENBQTVFLEVBQWlHO0FBQy9GLE1BQU1DLENBQUMsR0FBRyxDQUFDRixFQUFFLENBQUMsQ0FBRCxDQUFGLEdBQVFELEVBQUUsQ0FBQyxDQUFELENBQVgsSUFBa0JFLENBQTVCO0FBQ0EsTUFBTUUsQ0FBQyxHQUFHLENBQUNILEVBQUUsQ0FBQyxDQUFELENBQUYsR0FBUUQsRUFBRSxDQUFDLENBQUQsQ0FBWCxJQUFrQkUsQ0FBNUI7QUFDQSxTQUFPLENBQUNDLENBQUQsRUFBSUMsQ0FBSixDQUFQO0FBQ0Q7O0FBRU0sU0FBU0MsOEJBQVQsQ0FDTEMsSUFESyxFQUVnQjtBQUNyQjtBQUNBLE1BQU1DLEtBQUssR0FBRyxDQUFDLENBQUQsQ0FBZDtBQUNBLE1BQUlDLElBQUksR0FBRyxJQUFYO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLENBQXBCO0FBSnFCLE1BTUFDLE1BTkEsR0FNV0osSUFBSSxDQUFDSyxRQU5oQixDQU1iQyxXQU5hOztBQVFyQixPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILE1BQU0sQ0FBQ0ksTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsUUFBTUUsR0FBRyxHQUFHTCxNQUFNLENBQUNHLENBQUQsQ0FBbEI7O0FBQ0EsUUFBSUwsSUFBSSxLQUFLLElBQWIsRUFBbUI7QUFDakJDLE1BQUFBLGFBQWEsSUFBSSwwQkFBYUQsSUFBYixFQUFtQk8sR0FBbkIsQ0FBakI7QUFDQVIsTUFBQUEsS0FBSyxDQUFDUyxJQUFOLENBQVdQLGFBQVg7QUFDRDs7QUFDREQsSUFBQUEsSUFBSSxHQUFHTyxHQUFQO0FBQ0QsR0Fmb0IsQ0FpQnJCOzs7QUFDQSxNQUFNRSxRQUFRLEdBQUcsRUFBakIsQ0FsQnFCLENBb0JyQjtBQUNBOztBQUNBQSxFQUFBQSxRQUFRLENBQUNELElBQVQsQ0FBY2pCLHNCQUFzQixDQUFDVyxNQUFNLENBQUMsQ0FBRCxDQUFQLEVBQVlBLE1BQU0sQ0FBQyxDQUFELENBQWxCLEVBQXVCSCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVdBLEtBQUssQ0FBQyxDQUFELENBQXZDLENBQXBDLEVBdEJxQixDQXdCckI7O0FBQ0EsT0FBSyxJQUFJTSxFQUFDLEdBQUcsQ0FBYixFQUFnQkEsRUFBQyxHQUFHSCxNQUFNLENBQUNJLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELEVBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFNSyxDQUFDLEdBQUduQixzQkFBc0IsQ0FBQ1csTUFBTSxDQUFDRyxFQUFELENBQVAsRUFBWUgsTUFBTSxDQUFDRyxFQUFDLEdBQUcsQ0FBTCxDQUFsQixFQUEyQk4sS0FBSyxDQUFDTSxFQUFDLEdBQUcsQ0FBTCxDQUFMLEdBQWVOLEtBQUssQ0FBQ00sRUFBRCxDQUEvQyxDQUFoQyxDQUYwQyxDQUcxQzs7QUFDQSxRQUFNTSxDQUFDLEdBQUdwQixzQkFBc0IsQ0FBQ1csTUFBTSxDQUFDRyxFQUFDLEdBQUcsQ0FBTCxDQUFQLEVBQWdCSCxNQUFNLENBQUNHLEVBQUQsQ0FBdEIsRUFBMkJOLEtBQUssQ0FBQ00sRUFBRCxDQUFMLEdBQVdOLEtBQUssQ0FBQ00sRUFBQyxHQUFHLENBQUwsQ0FBM0MsQ0FBaEM7QUFDQSxRQUFNVixDQUFDLEdBQUcsQ0FBQ2UsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPQyxDQUFDLENBQUMsQ0FBRCxDQUFULElBQWdCLEdBQTFCO0FBQ0EsUUFBTWYsQ0FBQyxHQUFHLENBQUNjLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBT0MsQ0FBQyxDQUFDLENBQUQsQ0FBVCxJQUFnQixHQUExQjtBQUNBRixJQUFBQSxRQUFRLENBQUNELElBQVQsQ0FBYyxDQUFDYixDQUFELEVBQUlDLENBQUosQ0FBZDtBQUNELEdBakNvQixDQW1DckI7OztBQUNBLE1BQU1nQixJQUFJLEdBQUdWLE1BQU0sQ0FBQ0ksTUFBUCxHQUFnQixDQUE3QjtBQUNBRyxFQUFBQSxRQUFRLENBQUNELElBQVQsRUFDRTtBQUNBakIsRUFBQUEsc0JBQXNCLENBQUNXLE1BQU0sQ0FBQ1UsSUFBSSxHQUFHLENBQVIsQ0FBUCxFQUFtQlYsTUFBTSxDQUFDVSxJQUFELENBQXpCLEVBQWlDYixLQUFLLENBQUNhLElBQUQsQ0FBTCxHQUFjYixLQUFLLENBQUNhLElBQUksR0FBRyxDQUFSLENBQXBELENBRnhCLEVBckNxQixDQTBDckI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsT0FBSyxJQUFJUixHQUFDLEdBQUcsQ0FBYixFQUFnQkEsR0FBQyxHQUFHSCxNQUFNLENBQUNJLE1BQTNCLEVBQW1DRCxHQUFDLEVBQXBDLEVBQXdDO0FBQ3RDO0FBQ0FRLElBQUFBLE1BQU0sQ0FBQ0wsSUFBUCxDQUFZTixNQUFNLENBQUNHLEdBQUQsQ0FBbEIsRUFGc0MsQ0FJdEM7O0FBQ0EsU0FBSyxJQUFJUyxDQUFDLEdBQUdmLEtBQUssQ0FBQ00sR0FBRCxDQUFMLEdBQVdoQixzQkFBeEIsRUFBZ0R5QixDQUFDLEdBQUdmLEtBQUssQ0FBQ00sR0FBQyxHQUFHLENBQUwsQ0FBekQsRUFBa0VTLENBQUMsSUFBSXpCLHNCQUF2RSxFQUErRjtBQUM3RixVQUFJVSxLQUFLLENBQUNNLEdBQUMsR0FBRyxDQUFMLENBQUwsR0FBZVMsQ0FBZixHQUFtQnhCLHVCQUF2QixFQUFnRDtBQUM5QztBQUNBdUIsUUFBQUEsTUFBTSxDQUFDTCxJQUFQLENBQVksb0NBQVFNLENBQVIsRUFBV1osTUFBWCxFQUFtQk8sUUFBbkIsRUFBNkJWLEtBQTdCLENBQVo7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBTyx5QkFBV2MsTUFBWCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGVybWl0ZSBmcm9tICdjdWJpYy1oZXJtaXRlLXNwbGluZSc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IGxpbmVTdHJpbmcgfSBmcm9tICdAdHVyZi9oZWxwZXJzJztcblxuaW1wb3J0IHsgRmVhdHVyZSwgTXVsdGlMaW5lU3RyaW5nLCBMaW5lU3RyaW5nIH0gZnJvbSAnZ2VvanNvbic7XG5cbmNvbnN0IElOVEVSUE9MQVRJT05fSU5URVJWQUwgPSAwLjAwNTtcbmNvbnN0IElOVEVSUE9MQVRJT05fVEhSRVNIT0xEID0gMC4wMDE7XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQocDA6IFtudW1iZXIsIG51bWJlcl0sIHAxOiBbbnVtYmVyLCBudW1iZXJdLCBkOiBudW1iZXIpOiBudW1iZXJbXSB7XG4gIGNvbnN0IHggPSAocDFbMF0gLSBwMFswXSkgLyBkO1xuICBjb25zdCB5ID0gKHAxWzFdIC0gcDBbMV0pIC8gZDtcbiAgcmV0dXJuIFt4LCB5XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3VydmVGcm9tQ29udHJvbFBvaW50cyhcbiAgbGluZTogRmVhdHVyZTxNdWx0aUxpbmVTdHJpbmc+XG4pOiBGZWF0dXJlPExpbmVTdHJpbmc+IHtcbiAgLy8gY2FsY3VsYXRlIGtub3RzXG4gIGNvbnN0IGtub3RzID0gWzBdO1xuICBsZXQgcHJldiA9IG51bGw7XG4gIGxldCB0b3RhbERpc3RhbmNlID0gMDtcblxuICBjb25zdCB7IGNvb3JkaW5hdGVzOiBjb29yZHMgfSA9IGxpbmUuZ2VvbWV0cnk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjdXIgPSBjb29yZHNbaV07XG4gICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgIHRvdGFsRGlzdGFuY2UgKz0gdHVyZkRpc3RhbmNlKHByZXYsIGN1cik7XG4gICAgICBrbm90cy5wdXNoKHRvdGFsRGlzdGFuY2UpO1xuICAgIH1cbiAgICBwcmV2ID0gY3VyO1xuICB9XG5cbiAgLy8gY2FsY3VsYXRlIHRhbmdlbnRzXG4gIGNvbnN0IHRhbmdlbnRzID0gW107XG5cbiAgLy8gZmlyc3QgdGFuZ2VudFxuICAvLyBAdHMtaWdub3JlXG4gIHRhbmdlbnRzLnB1c2goY2FsY3VsYXRlU2luZ2xlVGFuZ2VudChjb29yZHNbMF0sIGNvb3Jkc1sxXSwga25vdHNbMV0gLSBrbm90c1swXSkpO1xuXG4gIC8vIHNlY29uZCB0byBiZWZvcmUgbGFzdFxuICBmb3IgKGxldCBpID0gMTsgaSA8IGNvb3Jkcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgQSA9IGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQoY29vcmRzW2ldLCBjb29yZHNbaSArIDFdLCBrbm90c1tpICsgMV0gLSBrbm90c1tpXSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IEIgPSBjYWxjdWxhdGVTaW5nbGVUYW5nZW50KGNvb3Jkc1tpIC0gMV0sIGNvb3Jkc1tpXSwga25vdHNbaV0gLSBrbm90c1tpIC0gMV0pO1xuICAgIGNvbnN0IHggPSAoQVswXSArIEJbMF0pIC8gMi4wO1xuICAgIGNvbnN0IHkgPSAoQVsxXSArIEJbMV0pIC8gMi4wO1xuICAgIHRhbmdlbnRzLnB1c2goW3gsIHldKTtcbiAgfVxuXG4gIC8vIGxhc3QgdGFuZ2VudFxuICBjb25zdCBsYXN0ID0gY29vcmRzLmxlbmd0aCAtIDE7XG4gIHRhbmdlbnRzLnB1c2goXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNhbGN1bGF0ZVNpbmdsZVRhbmdlbnQoY29vcmRzW2xhc3QgLSAxXSwgY29vcmRzW2xhc3RdLCBrbm90c1tsYXN0XSAtIGtub3RzW2xhc3QgLSAxXSlcbiAgKTtcblxuICAvLyBnZW5lcmF0ZSBjdXJ2ZVxuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBhZGQgY29udHJvbCBwb2ludFxuICAgIHJlc3VsdC5wdXNoKGNvb3Jkc1tpXSk7XG5cbiAgICAvLyBhZGQgaW50ZXJwb2xhdGVkIHZhbHVlc1xuICAgIGZvciAobGV0IHQgPSBrbm90c1tpXSArIElOVEVSUE9MQVRJT05fSU5URVJWQUw7IHQgPCBrbm90c1tpICsgMV07IHQgKz0gSU5URVJQT0xBVElPTl9JTlRFUlZBTCkge1xuICAgICAgaWYgKGtub3RzW2kgKyAxXSAtIHQgPiBJTlRFUlBPTEFUSU9OX1RIUkVTSE9MRCkge1xuICAgICAgICAvLyBPbmx5IGFkZCBpZiBub3QgdG9vIGNsb3NlIHRvIGEgY29udHJvbCBwb2ludCAoa25vdCA9IGNvbnRyb2wgcG9pbnQpXG4gICAgICAgIHJlc3VsdC5wdXNoKGhlcm1pdGUodCwgY29vcmRzLCB0YW5nZW50cywga25vdHMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGluZVN0cmluZyhyZXN1bHQpO1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/event-types.js b/modules/layers/dist/event-types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/layers/dist/event-types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/layers/dist/index.js b/modules/layers/dist/index.js new file mode 100644 index 000000000..d4a43049b --- /dev/null +++ b/modules/layers/dist/index.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ArrowStyles", { + enumerable: true, + get: function get() { + return _style.ArrowStyles; + } +}); +Object.defineProperty(exports, "DEFAULT_ARROWS", { + enumerable: true, + get: function get() { + return _style.DEFAULT_ARROWS; + } +}); +Object.defineProperty(exports, "MAX_ARROWS", { + enumerable: true, + get: function get() { + return _style.MAX_ARROWS; + } +}); +Object.defineProperty(exports, "EditableGeoJsonLayer", { + enumerable: true, + get: function get() { + return _editableGeojsonLayer["default"]; + } +}); +Object.defineProperty(exports, "EditableH3ClusterLayer", { + enumerable: true, + get: function get() { + return _editableH3ClusterLayer["default"]; + } +}); +Object.defineProperty(exports, "SelectionLayer", { + enumerable: true, + get: function get() { + return _selectionLayer["default"]; + } +}); +Object.defineProperty(exports, "ElevatedEditHandleLayer", { + enumerable: true, + get: function get() { + return _elevatedEditHandleLayer["default"]; + } +}); +Object.defineProperty(exports, "PathOutlineLayer", { + enumerable: true, + get: function get() { + return _pathOutlineLayer["default"]; + } +}); +Object.defineProperty(exports, "PathMarkerLayer", { + enumerable: true, + get: function get() { + return _pathMarkerLayer["default"]; + } +}); +Object.defineProperty(exports, "JunctionScatterplotLayer", { + enumerable: true, + get: function get() { + return _junctionScatterplotLayer["default"]; + } +}); +Object.defineProperty(exports, "toDeckColor", { + enumerable: true, + get: function get() { + return _utils.toDeckColor; + } +}); + +var _style = require("./style"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./layers/editable-geojson-layer")); + +var _editableH3ClusterLayer = _interopRequireDefault(require("./layers/editable-h3-cluster-layer")); + +var _selectionLayer = _interopRequireDefault(require("./layers/selection-layer")); + +var _elevatedEditHandleLayer = _interopRequireDefault(require("./layers/elevated-edit-handle-layer")); + +var _pathOutlineLayer = _interopRequireDefault(require("./layers/path-outline-layer/path-outline-layer")); + +var _pathMarkerLayer = _interopRequireDefault(require("./layers/path-marker-layer/path-marker-layer")); + +var _junctionScatterplotLayer = _interopRequireDefault(require("./layers/junction-scatterplot-layer")); + +var _utils = require("./utils"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vc3R5bGUnO1xuXG4vLyBMYXllcnNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVHZW9Kc29uTGF5ZXIgfSBmcm9tICcuL2xheWVycy9lZGl0YWJsZS1nZW9qc29uLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdGFibGVIM0NsdXN0ZXJMYXllciB9IGZyb20gJy4vbGF5ZXJzL2VkaXRhYmxlLWgzLWNsdXN0ZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTZWxlY3Rpb25MYXllciB9IGZyb20gJy4vbGF5ZXJzL3NlbGVjdGlvbi1sYXllcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIH0gZnJvbSAnLi9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXInO1xuXG4vLyBMYXllcnMgbW92ZWQgZnJvbSBkZWNrLmdsXG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdGhPdXRsaW5lTGF5ZXIgfSBmcm9tICcuL2xheWVycy9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnLi9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIgfSBmcm9tICcuL2xheWVycy9qdW5jdGlvbi1zY2F0dGVycGxvdC1sYXllcic7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHR5cGUgeyBDb2xvciwgVmlld3BvcnQgfSBmcm9tICcuL3R5cGVzJztcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/layers/editable-geojson-layer.js b/modules/layers/dist/layers/editable-geojson-layer.js new file mode 100644 index 000000000..ec0d4fe27 --- /dev/null +++ b/modules/layers/dist/layers/editable-geojson-layer.js @@ -0,0 +1,544 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editableLayer = _interopRequireDefault(require("./editable-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DEFAULT_LINE_COLOR = [0x0, 0x0, 0x0, 0x99]; +var DEFAULT_FILL_COLOR = [0x0, 0x0, 0x0, 0x90]; +var DEFAULT_SELECTED_LINE_COLOR = [0x0, 0x0, 0x0, 0xff]; +var DEFAULT_SELECTED_FILL_COLOR = [0x0, 0x0, 0x90, 0x90]; +var DEFAULT_TENTATIVE_LINE_COLOR = [0x90, 0x90, 0x90, 0xff]; +var DEFAULT_TENTATIVE_FILL_COLOR = [0x90, 0x90, 0x90, 0x90]; +var DEFAULT_EDITING_EXISTING_POINT_COLOR = [0xc0, 0x0, 0x0, 0xff]; +var DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR = [0x0, 0x0, 0x0, 0x80]; +var DEFAULT_EDITING_SNAP_POINT_COLOR = [0x7c, 0x00, 0xc0, 0xff]; +var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [0xff, 0xff, 0xff, 0xff]; +var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5; +var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3; +var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7; +var DEFAULT_EDIT_MODE = _editModes.DrawPolygonMode; + +function guideAccessor(accessor) { + if (!accessor || typeof accessor !== 'function') { + return accessor; + } + + return function (guideMaybeWrapped) { + return accessor(unwrapGuide(guideMaybeWrapped)); + }; +} // The object handed to us from deck.gl is different depending on the version of deck.gl used, unwrap as necessary + + +function unwrapGuide(guideMaybeWrapped) { + if (guideMaybeWrapped.__source) { + return guideMaybeWrapped.__source.object; + } else if (guideMaybeWrapped.sourceFeature) { + return guideMaybeWrapped.sourceFeature.feature; + } // It is not wrapped, return as is + + + return guideMaybeWrapped; +} + +function getEditHandleColor(handle) { + switch (handle.properties.editHandleType) { + case 'existing': + return DEFAULT_EDITING_EXISTING_POINT_COLOR; + + case 'snap-source': + return DEFAULT_EDITING_SNAP_POINT_COLOR; + + case 'intermediate': + default: + return DEFAULT_EDITING_INTERMEDIATE_POINT_COLOR; + } +} + +function getEditHandleOutlineColor(handle) { + return DEFAULT_EDITING_POINT_OUTLINE_COLOR; +} + +function getEditHandleRadius(handle) { + switch (handle.properties.editHandleType) { + case 'existing': + return DEFAULT_EDITING_EXISTING_POINT_RADIUS; + + case 'snap': + return DEFAULT_EDITING_SNAP_POINT_RADIUS; + + case 'intermediate': + default: + return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS; + } +} + +var defaultProps = { + mode: DEFAULT_EDIT_MODE, + // Edit and interaction events + onEdit: function onEdit() {}, + pickable: true, + pickingRadius: 10, + pickingDepth: 5, + fp64: false, + filled: true, + stroked: true, + lineWidthScale: 1, + lineWidthMinPixels: 1, + lineWidthMaxPixels: Number.MAX_SAFE_INTEGER, + lineWidthUnits: 'pixels', + lineJointRounded: false, + lineMiterLimit: 4, + pointRadiusScale: 1, + pointRadiusMinPixels: 2, + pointRadiusMaxPixels: Number.MAX_SAFE_INTEGER, + getLineColor: function getLineColor(feature, isSelected, mode) { + return isSelected ? DEFAULT_SELECTED_LINE_COLOR : DEFAULT_LINE_COLOR; + }, + getFillColor: function getFillColor(feature, isSelected, mode) { + return isSelected ? DEFAULT_SELECTED_FILL_COLOR : DEFAULT_FILL_COLOR; + }, + getRadius: function getRadius(f) { + return f && f.properties && f.properties.radius || f && f.properties && f.properties.size || 1; + }, + getLineWidth: function getLineWidth(f) { + return f && f.properties && f.properties.lineWidth || 3; + }, + // Tentative feature rendering + getTentativeLineColor: function getTentativeLineColor(f) { + return DEFAULT_TENTATIVE_LINE_COLOR; + }, + getTentativeFillColor: function getTentativeFillColor(f) { + return DEFAULT_TENTATIVE_FILL_COLOR; + }, + getTentativeLineWidth: function getTentativeLineWidth(f) { + return f && f.properties && f.properties.lineWidth || 3; + }, + editHandleType: 'point', + // point handles + editHandlePointRadiusScale: 1, + editHandlePointOutline: true, + editHandlePointStrokeWidth: 2, + editHandlePointRadiusMinPixels: 4, + editHandlePointRadiusMaxPixels: 8, + getEditHandlePointColor: getEditHandleColor, + getEditHandlePointOutlineColor: getEditHandleOutlineColor, + getEditHandlePointRadius: getEditHandleRadius, + // icon handles + editHandleIconAtlas: null, + editHandleIconMapping: null, + editHandleIconSizeScale: 1, + getEditHandleIcon: function getEditHandleIcon(handle) { + return handle.properties.editHandleType; + }, + getEditHandleIconSize: 10, + getEditHandleIconColor: getEditHandleColor, + getEditHandleIconAngle: 0, + // misc + billboard: true +}; // Mapping of mode name to mode class (for legacy purposes) + +var modeNameMapping = { + view: _editModes.ViewMode, + // Alter modes + modify: _editModes.ModifyMode, + translate: new _editModes.SnappableMode(new _editModes.TranslateMode()), + transform: new _editModes.SnappableMode(new _editModes.TransformMode()), + scale: _editModes.ScaleMode, + rotate: _editModes.RotateMode, + duplicate: _editModes.DuplicateMode, + split: _editModes.SplitPolygonMode, + extrude: _editModes.ExtrudeMode, + elevation: _editModes.ElevationMode, + // Draw modes + drawPoint: _editModes.DrawPointMode, + drawLineString: _editModes.DrawLineStringMode, + drawPolygon: _editModes.DrawPolygonMode, + drawRectangle: _editModes.DrawRectangleMode, + drawSquareFromCenter: _editModes.DrawSquareFromCenterMode, + drawCircleFromCenter: _editModes.DrawCircleFromCenterMode, + drawCircleByBoundingBox: _editModes.DrawCircleByDiameterMode, + drawEllipseByBoundingBox: _editModes.DrawEllipseByBoundingBoxMode, + drawRectangleUsing3Points: _editModes.DrawRectangleUsingThreePointsMode, + drawEllipseUsing3Points: _editModes.DrawEllipseUsingThreePointsMode, + draw90DegreePolygon: _editModes.Draw90DegreePolygonMode, + drawPolygonByDragging: _editModes.DrawPolygonByDraggingMode +}; + +// type State = { +// mode: GeoJsonEditMode, +// tentativeFeature: ?Feature, +// editHandles: any[], +// selectedFeatures: Feature[] +// }; +var EditableGeoJsonLayer = /*#__PURE__*/function (_EditableLayer) { + _inherits(EditableGeoJsonLayer, _EditableLayer); + + var _super = _createSuper(EditableGeoJsonLayer); + + function EditableGeoJsonLayer() { + _classCallCheck(this, EditableGeoJsonLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableGeoJsonLayer, [{ + key: "renderLayers", + // props: Props; + // setState: ($Shape) => void; + value: function renderLayers() { + var subLayerProps = this.getSubLayerProps({ + id: 'geojson', + // Proxy most GeoJsonLayer props as-is + data: this.props.data, + fp64: this.props.fp64, + filled: this.props.filled, + stroked: this.props.stroked, + lineWidthScale: this.props.lineWidthScale, + lineWidthMinPixels: this.props.lineWidthMinPixels, + lineWidthMaxPixels: this.props.lineWidthMaxPixels, + lineWidthUnits: this.props.lineWidthUnits, + lineJointRounded: this.props.lineJointRounded, + lineMiterLimit: this.props.lineMiterLimit, + pointRadiusScale: this.props.pointRadiusScale, + pointRadiusMinPixels: this.props.pointRadiusMinPixels, + pointRadiusMaxPixels: this.props.pointRadiusMaxPixels, + getLineColor: this.selectionAwareAccessor(this.props.getLineColor), + getFillColor: this.selectionAwareAccessor(this.props.getFillColor), + getRadius: this.selectionAwareAccessor(this.props.getRadius), + getLineWidth: this.selectionAwareAccessor(this.props.getLineWidth), + _subLayerProps: { + 'line-strings': { + billboard: this.props.billboard + }, + 'polygons-stroke': { + billboard: this.props.billboard + } + }, + updateTriggers: { + getLineColor: [this.props.selectedFeatureIndexes, this.props.mode], + getFillColor: [this.props.selectedFeatureIndexes, this.props.mode], + getRadius: [this.props.selectedFeatureIndexes, this.props.mode], + getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode] + } + }); + var layers = [new _layers.GeoJsonLayer(subLayerProps)]; + layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers()); + return layers; + } + }, { + key: "initializeState", + value: function initializeState() { + _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "initializeState", this).call(this); + + this.setState({ + selectedFeatures: [], + editHandles: [] + }); + } // TODO: is this the best way to properly update state from an outside event handler? + + }, { + key: "shouldUpdateState", + value: function shouldUpdateState(opts) { + // console.log( + // 'shouldUpdateState', + // opts.changeFlags.propsOrDataChanged, + // opts.changeFlags.stateChanged + // ); + return _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "shouldUpdateState", this).call(this, opts) || opts.changeFlags.stateChanged; + } + }, { + key: "updateState", + value: function updateState(_ref) { + var props = _ref.props, + oldProps = _ref.oldProps, + changeFlags = _ref.changeFlags; + + // @ts-ignore + _get(_getPrototypeOf(EditableGeoJsonLayer.prototype), "updateState", this).call(this, { + oldProps: oldProps, + props: props, + changeFlags: changeFlags + }); + + if (changeFlags.propsOrDataChanged) { + var modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode; + + if (modePropChanged) { + var mode; + + if (typeof props.mode === 'function') { + // They passed a constructor/class, so new it up + var ModeConstructor = props.mode; + mode = new ModeConstructor(); + } else if (typeof props.mode === 'string') { + // Lookup the mode based on its name (for backwards compatibility) + mode = modeNameMapping[props.mode]; // eslint-disable-next-line no-console + + console.warn("Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead."); + } else { + // Should be an instance of EditMode in this case + mode = props.mode; + } + + if (!mode) { + console.warn("No mode configured for ".concat(String(props.mode))); // eslint-disable-line no-console,no-undef + // Use default mode + + mode = new DEFAULT_EDIT_MODE(); + } + + if (mode !== this.state.mode) { + this.setState({ + mode: mode, + cursor: null + }); + } + } + } + + var selectedFeatures = []; + + if (Array.isArray(props.selectedFeatureIndexes)) { + // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ... + selectedFeatures = props.selectedFeatureIndexes.map(function (elem) { + return props.data.features[elem]; + }); + } + + this.setState({ + selectedFeatures: selectedFeatures + }); + } + }, { + key: "getModeProps", + value: function getModeProps(props) { + var _this = this; + + return { + modeConfig: props.modeConfig, + data: props.data, + selectedIndexes: props.selectedFeatureIndexes, + lastPointerMoveEvent: this.state.lastPointerMoveEvent, + cursor: this.state.cursor, + onEdit: function onEdit(editAction) { + // Force a re-render + // This supports double-click where we need to ensure that there's a re-render between the two clicks + // even though the data wasn't changed, just the internal tentative feature. + _this.setNeedsUpdate(); + + props.onEdit(editAction); + }, + onUpdateCursor: function onUpdateCursor(cursor) { + _this.setState({ + cursor: cursor + }); + } + }; + } + }, { + key: "selectionAwareAccessor", + value: function selectionAwareAccessor(accessor) { + var _this2 = this; + + if (typeof accessor !== 'function') { + return accessor; + } + + return function (feature) { + return accessor(feature, _this2.isFeatureSelected(feature), _this2.props.mode); + }; + } + }, { + key: "isFeatureSelected", + value: function isFeatureSelected(feature) { + if (!this.props.data || !this.props.selectedFeatureIndexes) { + return false; + } + + if (!this.props.selectedFeatureIndexes.length) { + return false; + } + + var featureIndex = this.props.data.features.indexOf(feature); + return this.props.selectedFeatureIndexes.includes(featureIndex); + } + }, { + key: "getPickingInfo", + value: function getPickingInfo(_ref2) { + var info = _ref2.info, + sourceLayer = _ref2.sourceLayer; + + if (sourceLayer.id.endsWith('guides')) { + // If user is picking an editing handle, add additional data to the info + info.isGuide = true; + } + + return info; + } + }, { + key: "createGuidesLayers", + value: function createGuidesLayers() { + var mode = this.getActiveMode(); + var guides = mode.getGuides(this.getModeProps(this.props)); + + if (!guides || !guides.features.length) { + return []; + } + + var pointLayerProps; + + if (this.props.editHandleType === 'icon') { + pointLayerProps = { + type: _layers.IconLayer, + iconAtlas: this.props.editHandleIconAtlas, + iconMapping: this.props.editHandleIconMapping, + sizeScale: this.props.editHandleIconSizeScale, + getIcon: guideAccessor(this.props.getEditHandleIcon), + getSize: guideAccessor(this.props.getEditHandleIconSize), + getColor: guideAccessor(this.props.getEditHandleIconColor), + getAngle: guideAccessor(this.props.getEditHandleIconAngle) + }; + } else { + pointLayerProps = { + type: _layers.ScatterplotLayer, + radiusScale: this.props.editHandlePointRadiusScale, + stroked: this.props.editHandlePointOutline, + getLineWidth: this.props.editHandlePointStrokeWidth, + radiusMinPixels: this.props.editHandlePointRadiusMinPixels, + radiusMaxPixels: this.props.editHandlePointRadiusMaxPixels, + getRadius: guideAccessor(this.props.getEditHandlePointRadius), + getFillColor: guideAccessor(this.props.getEditHandlePointColor), + getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor) + }; + } + + var layer = new _layers.GeoJsonLayer(this.getSubLayerProps({ + id: "guides", + data: guides, + fp64: this.props.fp64, + _subLayerProps: { + points: pointLayerProps + }, + lineWidthScale: this.props.lineWidthScale, + lineWidthMinPixels: this.props.lineWidthMinPixels, + lineWidthMaxPixels: this.props.lineWidthMaxPixels, + lineWidthUnits: this.props.lineWidthUnits, + lineJointRounded: this.props.lineJointRounded, + lineMiterLimit: this.props.lineMiterLimit, + getLineColor: guideAccessor(this.props.getTentativeLineColor), + getLineWidth: guideAccessor(this.props.getTentativeLineWidth), + getFillColor: guideAccessor(this.props.getTentativeFillColor) + })); + return [layer]; + } + }, { + key: "createTooltipsLayers", + value: function createTooltipsLayers() { + var mode = this.getActiveMode(); + var tooltips = mode.getTooltips(this.getModeProps(this.props)); + var layer = new _layers.TextLayer(this.getSubLayerProps({ + id: "tooltips", + data: tooltips + })); + return [layer]; + } + }, { + key: "onLayerClick", + value: function onLayerClick(event) { + this.getActiveMode().handleClick(event, this.getModeProps(this.props)); + } + }, { + key: "onLayerKeyUp", + value: function onLayerKeyUp(event) { + this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props)); + } + }, { + key: "onStartDragging", + value: function onStartDragging(event) { + this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onDragging", + value: function onDragging(event) { + this.getActiveMode().handleDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onStopDragging", + value: function onStopDragging(event) { + this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props)); + } + }, { + key: "onPointerMove", + value: function onPointerMove(event) { + this.setState({ + lastPointerMoveEvent: event + }); + this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props)); + } + }, { + key: "getCursor", + value: function getCursor(_ref3) { + var isDragging = _ref3.isDragging; + var cursor = this.state.cursor; + + if (!cursor) { + // default cursor + cursor = isDragging ? 'grabbing' : 'grab'; + } + + return cursor; + } + }, { + key: "getActiveMode", + value: function getActiveMode() { + return this.state.mode; + } + }]); + + return EditableGeoJsonLayer; +}(_editableLayer["default"]); + +exports["default"] = EditableGeoJsonLayer; + +_defineProperty(EditableGeoJsonLayer, "layerName", 'EditableGeoJsonLayer'); + +_defineProperty(EditableGeoJsonLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtZ2VvanNvbi1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0xJTkVfQ09MT1IiLCJERUZBVUxUX0ZJTExfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0xJTkVfQ09MT1IiLCJERUZBVUxUX1NFTEVDVEVEX0ZJTExfQ09MT1IiLCJERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SIiwiREVGQVVMVF9URU5UQVRJVkVfRklMTF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19FWElTVElOR19QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IiLCJERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiIsIkRFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SIiwiREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyIsIkRFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUSU5HX1NOQVBfUE9JTlRfUkFESVVTIiwiREVGQVVMVF9FRElUX01PREUiLCJEcmF3UG9seWdvbk1vZGUiLCJndWlkZUFjY2Vzc29yIiwiYWNjZXNzb3IiLCJndWlkZU1heWJlV3JhcHBlZCIsInVud3JhcEd1aWRlIiwiX19zb3VyY2UiLCJvYmplY3QiLCJzb3VyY2VGZWF0dXJlIiwiZmVhdHVyZSIsImdldEVkaXRIYW5kbGVDb2xvciIsImhhbmRsZSIsInByb3BlcnRpZXMiLCJlZGl0SGFuZGxlVHlwZSIsImdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUmFkaXVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIm9uRWRpdCIsInBpY2thYmxlIiwicGlja2luZ1JhZGl1cyIsInBpY2tpbmdEZXB0aCIsImZwNjQiLCJmaWxsZWQiLCJzdHJva2VkIiwibGluZVdpZHRoU2NhbGUiLCJsaW5lV2lkdGhNaW5QaXhlbHMiLCJsaW5lV2lkdGhNYXhQaXhlbHMiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibGluZVdpZHRoVW5pdHMiLCJsaW5lSm9pbnRSb3VuZGVkIiwibGluZU1pdGVyTGltaXQiLCJwb2ludFJhZGl1c1NjYWxlIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJwb2ludFJhZGl1c01heFBpeGVscyIsImdldExpbmVDb2xvciIsImlzU2VsZWN0ZWQiLCJnZXRGaWxsQ29sb3IiLCJnZXRSYWRpdXMiLCJmIiwicmFkaXVzIiwic2l6ZSIsImdldExpbmVXaWR0aCIsImxpbmVXaWR0aCIsImdldFRlbnRhdGl2ZUxpbmVDb2xvciIsImdldFRlbnRhdGl2ZUZpbGxDb2xvciIsImdldFRlbnRhdGl2ZUxpbmVXaWR0aCIsImVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlIiwiZWRpdEhhbmRsZVBvaW50T3V0bGluZSIsImVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzIiwiZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzIiwiZ2V0RWRpdEhhbmRsZVBvaW50Q29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRPdXRsaW5lQ29sb3IiLCJnZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMiLCJlZGl0SGFuZGxlSWNvbkF0bGFzIiwiZWRpdEhhbmRsZUljb25NYXBwaW5nIiwiZWRpdEhhbmRsZUljb25TaXplU2NhbGUiLCJnZXRFZGl0SGFuZGxlSWNvbiIsImdldEVkaXRIYW5kbGVJY29uU2l6ZSIsImdldEVkaXRIYW5kbGVJY29uQ29sb3IiLCJnZXRFZGl0SGFuZGxlSWNvbkFuZ2xlIiwiYmlsbGJvYXJkIiwibW9kZU5hbWVNYXBwaW5nIiwidmlldyIsIlZpZXdNb2RlIiwibW9kaWZ5IiwiTW9kaWZ5TW9kZSIsInRyYW5zbGF0ZSIsIlNuYXBwYWJsZU1vZGUiLCJUcmFuc2xhdGVNb2RlIiwidHJhbnNmb3JtIiwiVHJhbnNmb3JtTW9kZSIsInNjYWxlIiwiU2NhbGVNb2RlIiwicm90YXRlIiwiUm90YXRlTW9kZSIsImR1cGxpY2F0ZSIsIkR1cGxpY2F0ZU1vZGUiLCJzcGxpdCIsIlNwbGl0UG9seWdvbk1vZGUiLCJleHRydWRlIiwiRXh0cnVkZU1vZGUiLCJlbGV2YXRpb24iLCJFbGV2YXRpb25Nb2RlIiwiZHJhd1BvaW50IiwiRHJhd1BvaW50TW9kZSIsImRyYXdMaW5lU3RyaW5nIiwiRHJhd0xpbmVTdHJpbmdNb2RlIiwiZHJhd1BvbHlnb24iLCJkcmF3UmVjdGFuZ2xlIiwiRHJhd1JlY3RhbmdsZU1vZGUiLCJkcmF3U3F1YXJlRnJvbUNlbnRlciIsIkRyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSIsImRyYXdDaXJjbGVGcm9tQ2VudGVyIiwiRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIiwiZHJhd0NpcmNsZUJ5Qm91bmRpbmdCb3giLCJEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUiLCJkcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3giLCJEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hNb2RlIiwiZHJhd1JlY3RhbmdsZVVzaW5nM1BvaW50cyIsIkRyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSIsImRyYXdFbGxpcHNlVXNpbmczUG9pbnRzIiwiRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSIsImRyYXc5MERlZ3JlZVBvbHlnb24iLCJEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSIsImRyYXdQb2x5Z29uQnlEcmFnZ2luZyIsIkRyYXdQb2x5Z29uQnlEcmFnZ2luZ01vZGUiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsInN1YkxheWVyUHJvcHMiLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJkYXRhIiwicHJvcHMiLCJzZWxlY3Rpb25Bd2FyZUFjY2Vzc29yIiwiX3N1YkxheWVyUHJvcHMiLCJ1cGRhdGVUcmlnZ2VycyIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJsYXllcnMiLCJHZW9Kc29uTGF5ZXIiLCJjb25jYXQiLCJjcmVhdGVHdWlkZXNMYXllcnMiLCJjcmVhdGVUb29sdGlwc0xheWVycyIsInNldFN0YXRlIiwic2VsZWN0ZWRGZWF0dXJlcyIsImVkaXRIYW5kbGVzIiwib3B0cyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwib2xkUHJvcHMiLCJwcm9wc09yRGF0YUNoYW5nZWQiLCJtb2RlUHJvcENoYW5nZWQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTW9kZUNvbnN0cnVjdG9yIiwiY29uc29sZSIsIndhcm4iLCJTdHJpbmciLCJzdGF0ZSIsImN1cnNvciIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImVsZW0iLCJmZWF0dXJlcyIsIm1vZGVDb25maWciLCJzZWxlY3RlZEluZGV4ZXMiLCJsYXN0UG9pbnRlck1vdmVFdmVudCIsImVkaXRBY3Rpb24iLCJzZXROZWVkc1VwZGF0ZSIsIm9uVXBkYXRlQ3Vyc29yIiwiaXNGZWF0dXJlU2VsZWN0ZWQiLCJmZWF0dXJlSW5kZXgiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJpbmZvIiwic291cmNlTGF5ZXIiLCJlbmRzV2l0aCIsImlzR3VpZGUiLCJnZXRBY3RpdmVNb2RlIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwiZ2V0TW9kZVByb3BzIiwicG9pbnRMYXllclByb3BzIiwidHlwZSIsIkljb25MYXllciIsImljb25BdGxhcyIsImljb25NYXBwaW5nIiwic2l6ZVNjYWxlIiwiZ2V0SWNvbiIsImdldFNpemUiLCJnZXRDb2xvciIsImdldEFuZ2xlIiwiU2NhdHRlcnBsb3RMYXllciIsInJhZGl1c1NjYWxlIiwicmFkaXVzTWluUGl4ZWxzIiwicmFkaXVzTWF4UGl4ZWxzIiwibGF5ZXIiLCJwb2ludHMiLCJ0b29sdGlwcyIsImdldFRvb2x0aXBzIiwiVGV4dExheWVyIiwiZXZlbnQiLCJoYW5kbGVDbGljayIsImhhbmRsZUtleVVwIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZURyYWdnaW5nIiwiaGFuZGxlU3RvcERyYWdnaW5nIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJp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bEQsTUFEMkMsR0FDaEMsS0FBS0QsS0FEMkIsQ0FDM0NDLE1BRDJDOztBQUVqRCxVQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNYO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR2tELFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQW5DO0FBQ0Q7O0FBQ0QsYUFBT2xELE1BQVA7QUFDRDs7O29DQUVvQztBQUNuQyxhQUFPLEtBQUtELEtBQUwsQ0FBVzNILElBQWxCO0FBQ0Q7Ozs7RUF4UitDK0sseUI7Ozs7Z0JBQTdCbkYsb0IsZUFDQSxzQjs7Z0JBREFBLG9CLGtCQUVHN0YsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBHZW9Kc29uTGF5ZXIsIFNjYXR0ZXJwbG90TGF5ZXIsIEljb25MYXllciwgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IHtcbiAgVmlld01vZGUsXG4gIE1vZGlmeU1vZGUsXG4gIFRyYW5zbGF0ZU1vZGUsXG4gIFNjYWxlTW9kZSxcbiAgUm90YXRlTW9kZSxcbiAgRHVwbGljYXRlTW9kZSxcbiAgU3BsaXRQb2x5Z29uTW9kZSxcbiAgRXh0cnVkZU1vZGUsXG4gIEVsZXZhdGlvbk1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlRnJvbUNlbnRlck1vZGUsXG4gIERyYXdDaXJjbGVCeURpYW1ldGVyTW9kZSxcbiAgRHJhd0VsbGlwc2VCeUJvdW5kaW5nQm94TW9kZSxcbiAgRHJhd1JlY3RhbmdsZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNNb2RlLFxuICBEcmF3OTBEZWdyZWVQb2x5Z29uTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbiAgU25hcHBhYmxlTW9kZSxcbiAgVHJhbnNmb3JtTW9kZSxcbiAgRWRpdEFjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgR2VvSnNvbkVkaXRNb2RlVHlwZSxcbiAgR2VvSnNvbkVkaXRNb2RlQ29uc3RydWN0b3IsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgRWRpdGFibGVMYXllciBmcm9tICcuL2VkaXRhYmxlLWxheWVyJztcblxuY29uc3QgREVGQVVMVF9MSU5FX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4OTldO1xuY29uc3QgREVGQVVMVF9GSUxMX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9MSU5FX0NPTE9SID0gWzB4MCwgMHgwLCAweDAsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9TRUxFQ1RFRF9GSUxMX0NPTE9SID0gWzB4MCwgMHgwLCAweDkwLCAweDkwXTtcbmNvbnN0IERFRkFVTFRfVEVOVEFUSVZFX0xJTkVfQ09MT1IgPSBbMHg5MCwgMHg5MCwgMHg5MCwgMHhmZl07XG5jb25zdCBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SID0gWzB4OTAsIDB4OTAsIDB4OTAsIDB4OTBdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX0NPTE9SID0gWzB4YzAsIDB4MCwgMHgwLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19JTlRFUk1FRElBVEVfUE9JTlRfQ09MT1IgPSBbMHgwLCAweDAsIDB4MCwgMHg4MF07XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9DT0xPUiA9IFsweDdjLCAweDAwLCAweGMwLCAweGZmXTtcbmNvbnN0IERFRkFVTFRfRURJVElOR19QT0lOVF9PVVRMSU5FX0NPTE9SID0gWzB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmZdO1xuY29uc3QgREVGQVVMVF9FRElUSU5HX0VYSVNUSU5HX1BPSU5UX1JBRElVUyA9IDU7XG5jb25zdCBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX1JBRElVUyA9IDM7XG5jb25zdCBERUZBVUxUX0VESVRJTkdfU05BUF9QT0lOVF9SQURJVVMgPSA3O1xuXG5jb25zdCBERUZBVUxUX0VESVRfTU9ERSA9IERyYXdQb2x5Z29uTW9kZTtcblxuZnVuY3Rpb24gZ3VpZGVBY2Nlc3NvcihhY2Nlc3Nvcikge1xuICBpZiAoIWFjY2Vzc29yIHx8IHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBhY2Nlc3NvcjtcbiAgfVxuICByZXR1cm4gKGd1aWRlTWF5YmVXcmFwcGVkKSA9PiBhY2Nlc3Nvcih1bndyYXBHdWlkZShndWlkZU1heWJlV3JhcHBlZCkpO1xufVxuXG4vLyBUaGUgb2JqZWN0IGhhbmRlZCB0byB1cyBmcm9tIGRlY2suZ2wgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZiBkZWNrLmdsIHVzZWQsIHVud3JhcCBhcyBuZWNlc3NhcnlcbmZ1bmN0aW9uIHVud3JhcEd1aWRlKGd1aWRlTWF5YmVXcmFwcGVkKSB7XG4gIGlmIChndWlkZU1heWJlV3JhcHBlZC5fX3NvdXJjZSkge1xuICAgIHJldHVybiBndWlkZU1heWJlV3JhcHBlZC5fX3NvdXJjZS5vYmplY3Q7XG4gIH0gZWxzZSBpZiAoZ3VpZGVNYXliZVdyYXBwZWQuc291cmNlRmVhdHVyZSkge1xuICAgIHJldHVybiBndWlkZU1heWJlV3JhcHBlZC5zb3VyY2VGZWF0dXJlLmZlYXR1cmU7XG4gIH1cbiAgLy8gSXQgaXMgbm90IHdyYXBwZWQsIHJldHVybiBhcyBpc1xuICByZXR1cm4gZ3VpZGVNYXliZVdyYXBwZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEVkaXRIYW5kbGVDb2xvcihoYW5kbGUpIHtcbiAgc3dpdGNoIChoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSkge1xuICAgIGNhc2UgJ2V4aXN0aW5nJzpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfQ09MT1I7XG4gICAgY2FzZSAnc25hcC1zb3VyY2UnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19TTkFQX1BPSU5UX0NPTE9SO1xuICAgIGNhc2UgJ2ludGVybWVkaWF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfSU5URVJNRURJQVRFX1BPSU5UX0NPTE9SO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEVkaXRIYW5kbGVPdXRsaW5lQ29sb3IoaGFuZGxlKSB7XG4gIHJldHVybiBERUZBVUxUX0VESVRJTkdfUE9JTlRfT1VUTElORV9DT0xPUjtcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZVJhZGl1cyhoYW5kbGUpIHtcbiAgc3dpdGNoIChoYW5kbGUucHJvcGVydGllcy5lZGl0SGFuZGxlVHlwZSkge1xuICAgIGNhc2UgJ2V4aXN0aW5nJzpcbiAgICAgIHJldHVybiBERUZBVUxUX0VESVRJTkdfRVhJU1RJTkdfUE9JTlRfUkFESVVTO1xuICAgIGNhc2UgJ3NuYXAnOlxuICAgICAgcmV0dXJuIERFRkFVTFRfRURJVElOR19TTkFQX1BPSU5UX1JBRElVUztcbiAgICBjYXNlICdpbnRlcm1lZGlhdGUnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gREVGQVVMVF9FRElUSU5HX0lOVEVSTUVESUFURV9QT0lOVF9SQURJVVM7XG4gIH1cbn1cblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBtb2RlOiBERUZBVUxUX0VESVRfTU9ERSxcblxuICAvLyBFZGl0IGFuZCBpbnRlcmFjdGlvbiBldmVudHNcbiAgb25FZGl0OiAoKSA9PiB7fSxcblxuICBwaWNrYWJsZTogdHJ1ZSxcbiAgcGlja2luZ1JhZGl1czogMTAsXG4gIHBpY2tpbmdEZXB0aDogNSxcbiAgZnA2NDogZmFsc2UsXG4gIGZpbGxlZDogdHJ1ZSxcbiAgc3Ryb2tlZDogdHJ1ZSxcbiAgbGluZVdpZHRoU2NhbGU6IDEsXG4gIGxpbmVXaWR0aE1pblBpeGVsczogMSxcbiAgbGluZVdpZHRoTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBsaW5lSm9pbnRSb3VuZGVkOiBmYWxzZSxcbiAgbGluZU1pdGVyTGltaXQ6IDQsXG4gIHBvaW50UmFkaXVzU2NhbGU6IDEsXG4gIHBvaW50UmFkaXVzTWluUGl4ZWxzOiAyLFxuICBwb2ludFJhZGl1c01heFBpeGVsczogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gIGdldExpbmVDb2xvcjogKGZlYXR1cmUsIGlzU2VsZWN0ZWQsIG1vZGUpID0+XG4gICAgaXNTZWxlY3RlZCA/IERFRkFVTFRfU0VMRUNURURfTElORV9DT0xPUiA6IERFRkFVTFRfTElORV9DT0xPUixcbiAgZ2V0RmlsbENvbG9yOiAoZmVhdHVyZSwgaXNTZWxlY3RlZCwgbW9kZSkgPT5cbiAgICBpc1NlbGVjdGVkID8gREVGQVVMVF9TRUxFQ1RFRF9GSUxMX0NPTE9SIDogREVGQVVMVF9GSUxMX0NPTE9SLFxuICBnZXRSYWRpdXM6IChmKSA9PlxuICAgIChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMucmFkaXVzKSB8fCAoZiAmJiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLnNpemUpIHx8IDEsXG4gIGdldExpbmVXaWR0aDogKGYpID0+IChmICYmIGYucHJvcGVydGllcyAmJiBmLnByb3BlcnRpZXMubGluZVdpZHRoKSB8fCAzLFxuXG4gIC8vIFRlbnRhdGl2ZSBmZWF0dXJlIHJlbmRlcmluZ1xuICBnZXRUZW50YXRpdmVMaW5lQ29sb3I6IChmKSA9PiBERUZBVUxUX1RFTlRBVElWRV9MSU5FX0NPTE9SLFxuICBnZXRUZW50YXRpdmVGaWxsQ29sb3I6IChmKSA9PiBERUZBVUxUX1RFTlRBVElWRV9GSUxMX0NPTE9SLFxuICBnZXRUZW50YXRpdmVMaW5lV2lkdGg6IChmKSA9PiAoZiAmJiBmLnByb3BlcnRpZXMgJiYgZi5wcm9wZXJ0aWVzLmxpbmVXaWR0aCkgfHwgMyxcblxuICBlZGl0SGFuZGxlVHlwZTogJ3BvaW50JyxcblxuICAvLyBwb2ludCBoYW5kbGVzXG4gIGVkaXRIYW5kbGVQb2ludFJhZGl1c1NjYWxlOiAxLFxuICBlZGl0SGFuZGxlUG9pbnRPdXRsaW5lOiB0cnVlLFxuICBlZGl0SGFuZGxlUG9pbnRTdHJva2VXaWR0aDogMixcbiAgZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzOiA0LFxuICBlZGl0SGFuZGxlUG9pbnRSYWRpdXNNYXhQaXhlbHM6IDgsXG4gIGdldEVkaXRIYW5kbGVQb2ludENvbG9yOiBnZXRFZGl0SGFuZGxlQ29sb3IsXG4gIGdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvcjogZ2V0RWRpdEhhbmRsZU91dGxpbmVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZVBvaW50UmFkaXVzOiBnZXRFZGl0SGFuZGxlUmFkaXVzLFxuXG4gIC8vIGljb24gaGFuZGxlc1xuICBlZGl0SGFuZGxlSWNvbkF0bGFzOiBudWxsLFxuICBlZGl0SGFuZGxlSWNvbk1hcHBpbmc6IG51bGwsXG4gIGVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlOiAxLFxuICBnZXRFZGl0SGFuZGxlSWNvbjogKGhhbmRsZSkgPT4gaGFuZGxlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUsXG4gIGdldEVkaXRIYW5kbGVJY29uU2l6ZTogMTAsXG4gIGdldEVkaXRIYW5kbGVJY29uQ29sb3I6IGdldEVkaXRIYW5kbGVDb2xvcixcbiAgZ2V0RWRpdEhhbmRsZUljb25BbmdsZTogMCxcblxuICAvLyBtaXNjXG4gIGJpbGxib2FyZDogdHJ1ZSxcbn07XG5cbi8vIE1hcHBpbmcgb2YgbW9kZSBuYW1lIHRvIG1vZGUgY2xhc3MgKGZvciBsZWdhY3kgcHVycG9zZXMpXG5jb25zdCBtb2RlTmFtZU1hcHBpbmcgPSB7XG4gIHZpZXc6IFZpZXdNb2RlLFxuXG4gIC8vIEFsdGVyIG1vZGVzXG4gIG1vZGlmeTogTW9kaWZ5TW9kZSxcbiAgdHJhbnNsYXRlOiBuZXcgU25hcHBhYmxlTW9kZShuZXcgVHJhbnNsYXRlTW9kZSgpKSxcblxuICB0cmFuc2Zvcm06IG5ldyBTbmFwcGFibGVNb2RlKG5ldyBUcmFuc2Zvcm1Nb2RlKCkpLFxuICBzY2FsZTogU2NhbGVNb2RlLFxuICByb3RhdGU6IFJvdGF0ZU1vZGUsXG4gIGR1cGxpY2F0ZTogRHVwbGljYXRlTW9kZSxcbiAgc3BsaXQ6IFNwbGl0UG9seWdvbk1vZGUsXG4gIGV4dHJ1ZGU6IEV4dHJ1ZGVNb2RlLFxuICBlbGV2YXRpb246IEVsZXZhdGlvbk1vZGUsXG5cbiAgLy8gRHJhdyBtb2Rlc1xuICBkcmF3UG9pbnQ6IERyYXdQb2ludE1vZGUsXG4gIGRyYXdMaW5lU3RyaW5nOiBEcmF3TGluZVN0cmluZ01vZGUsXG4gIGRyYXdQb2x5Z29uOiBEcmF3UG9seWdvbk1vZGUsXG4gIGRyYXdSZWN0YW5nbGU6IERyYXdSZWN0YW5nbGVNb2RlLFxuICBkcmF3U3F1YXJlRnJvbUNlbnRlcjogRHJhd1NxdWFyZUZyb21DZW50ZXJNb2RlLFxuICBkcmF3Q2lyY2xlRnJvbUNlbnRlcjogRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLFxuICBkcmF3Q2lyY2xlQnlCb3VuZGluZ0JveDogRHJhd0NpcmNsZUJ5RGlhbWV0ZXJNb2RlLFxuICBkcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3g6IERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUsXG4gIGRyYXdSZWN0YW5nbGVVc2luZzNQb2ludHM6IERyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzTW9kZSxcbiAgZHJhd0VsbGlwc2VVc2luZzNQb2ludHM6IERyYXdFbGxpcHNlVXNpbmdUaHJlZVBvaW50c01vZGUsXG4gIGRyYXc5MERlZ3JlZVBvbHlnb246IERyYXc5MERlZ3JlZVBvbHlnb25Nb2RlLFxuICBkcmF3UG9seWdvbkJ5RHJhZ2dpbmc6IERyYXdQb2x5Z29uQnlEcmFnZ2luZ01vZGUsXG59O1xuXG50eXBlIFByb3BzID0ge1xuICBtb2RlOiBzdHJpbmcgfCBHZW9Kc29uRWRpdE1vZGVDb25zdHJ1Y3RvciB8IEdlb0pzb25FZGl0TW9kZVR5cGU7XG4gIG9uRWRpdDogKGFyZzA6IEVkaXRBY3Rpb248RmVhdHVyZUNvbGxlY3Rpb24+KSA9PiB2b2lkO1xuICAvLyBUT0RPOiB0eXBlIHRoZSByZXN0XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufTtcblxuLy8gdHlwZSBTdGF0ZSA9IHtcbi8vICAgbW9kZTogR2VvSnNvbkVkaXRNb2RlLFxuLy8gICB0ZW50YXRpdmVGZWF0dXJlOiA/RmVhdHVyZSxcbi8vICAgZWRpdEhhbmRsZXM6IGFueVtdLFxuLy8gICBzZWxlY3RlZEZlYXR1cmVzOiBGZWF0dXJlW11cbi8vIH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlR2VvSnNvbkxheWVyIGV4dGVuZHMgRWRpdGFibGVMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWRpdGFibGVHZW9Kc29uTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICAvLyBwcm9wczogUHJvcHM7XG5cbiAgLy8gc2V0U3RhdGU6ICgkU2hhcGU8U3RhdGU+KSA9PiB2b2lkO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3Qgc3ViTGF5ZXJQcm9wcyA9IHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICBpZDogJ2dlb2pzb24nLFxuXG4gICAgICAvLyBQcm94eSBtb3N0IEdlb0pzb25MYXllciBwcm9wcyBhcy1pc1xuICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgZnA2NDogdGhpcy5wcm9wcy5mcDY0LFxuICAgICAgZmlsbGVkOiB0aGlzLnByb3BzLmZpbGxlZCxcbiAgICAgIHN0cm9rZWQ6IHRoaXMucHJvcHMuc3Ryb2tlZCxcbiAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLnByb3BzLmxpbmVXaWR0aFNjYWxlLFxuICAgICAgbGluZVdpZHRoTWluUGl4ZWxzOiB0aGlzLnByb3BzLmxpbmVXaWR0aE1pblBpeGVscyxcbiAgICAgIGxpbmVXaWR0aE1heFBpeGVsczogdGhpcy5wcm9wcy5saW5lV2lkdGhNYXhQaXhlbHMsXG4gICAgICBsaW5lV2lkdGhVbml0czogdGhpcy5wcm9wcy5saW5lV2lkdGhVbml0cyxcbiAgICAgIGxpbmVKb2ludFJvdW5kZWQ6IHRoaXMucHJvcHMubGluZUpvaW50Um91bmRlZCxcbiAgICAgIGxpbmVNaXRlckxpbWl0OiB0aGlzLnByb3BzLmxpbmVNaXRlckxpbWl0LFxuICAgICAgcG9pbnRSYWRpdXNTY2FsZTogdGhpcy5wcm9wcy5wb2ludFJhZGl1c1NjYWxlLFxuICAgICAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMucG9pbnRSYWRpdXNNaW5QaXhlbHMsXG4gICAgICBwb2ludFJhZGl1c01heFBpeGVsczogdGhpcy5wcm9wcy5wb2ludFJhZGl1c01heFBpeGVscyxcbiAgICAgIGdldExpbmVDb2xvcjogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZUNvbG9yKSxcbiAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RmlsbENvbG9yKSxcbiAgICAgIGdldFJhZGl1czogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0UmFkaXVzKSxcbiAgICAgIGdldExpbmVXaWR0aDogdGhpcy5zZWxlY3Rpb25Bd2FyZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0TGluZVdpZHRoKSxcblxuICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgJ2xpbmUtc3RyaW5ncyc6IHtcbiAgICAgICAgICBiaWxsYm9hcmQ6IHRoaXMucHJvcHMuYmlsbGJvYXJkLFxuICAgICAgICB9LFxuICAgICAgICAncG9seWdvbnMtc3Ryb2tlJzoge1xuICAgICAgICAgIGJpbGxib2FyZDogdGhpcy5wcm9wcy5iaWxsYm9hcmQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICBnZXRMaW5lQ29sb3I6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICAgIGdldEZpbGxDb2xvcjogW3RoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcywgdGhpcy5wcm9wcy5tb2RlXSxcbiAgICAgICAgZ2V0UmFkaXVzOiBbdGhpcy5wcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLCB0aGlzLnByb3BzLm1vZGVdLFxuICAgICAgICBnZXRMaW5lV2lkdGg6IFt0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMsIHRoaXMucHJvcHMubW9kZV0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbGV0IGxheWVyczogYW55ID0gW25ldyBHZW9Kc29uTGF5ZXIoc3ViTGF5ZXJQcm9wcyldO1xuXG4gICAgbGF5ZXJzID0gbGF5ZXJzLmNvbmNhdCh0aGlzLmNyZWF0ZUd1aWRlc0xheWVycygpLCB0aGlzLmNyZWF0ZVRvb2x0aXBzTGF5ZXJzKCkpO1xuXG4gICAgcmV0dXJuIGxheWVycztcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRGZWF0dXJlczogW10sXG4gICAgICBlZGl0SGFuZGxlczogW10sXG4gICAgfSk7XG4gIH1cblxuICAvLyBUT0RPOiBpcyB0aGlzIHRoZSBiZXN0IHdheSB0byBwcm9wZXJseSB1cGRhdGUgc3RhdGUgZnJvbSBhbiBvdXRzaWRlIGV2ZW50IGhhbmRsZXI/XG4gIHNob3VsZFVwZGF0ZVN0YXRlKG9wdHM6IGFueSkge1xuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgJ3Nob3VsZFVwZGF0ZVN0YXRlJyxcbiAgICAvLyAgIG9wdHMuY2hhbmdlRmxhZ3MucHJvcHNPckRhdGFDaGFuZ2VkLFxuICAgIC8vICAgb3B0cy5jaGFuZ2VGbGFncy5zdGF0ZUNoYW5nZWRcbiAgICAvLyApO1xuICAgIHJldHVybiBzdXBlci5zaG91bGRVcGRhdGVTdGF0ZShvcHRzKSB8fCBvcHRzLmNoYW5nZUZsYWdzLnN0YXRlQ2hhbmdlZDtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtcbiAgICBwcm9wcyxcbiAgICBvbGRQcm9wcyxcbiAgICBjaGFuZ2VGbGFncyxcbiAgfToge1xuICAgIHByb3BzOiBQcm9wcztcbiAgICBvbGRQcm9wczogUHJvcHM7XG4gICAgY2hhbmdlRmxhZ3M6IGFueTtcbiAgfSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzdXBlci51cGRhdGVTdGF0ZSh7IG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MgfSk7XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNPckRhdGFDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcENoYW5nZWQgPSBPYmplY3Qua2V5cyhvbGRQcm9wcykubGVuZ3RoID09PSAwIHx8IHByb3BzLm1vZGUgIT09IG9sZFByb3BzLm1vZGU7XG4gICAgICBpZiAobW9kZVByb3BDaGFuZ2VkKSB7XG4gICAgICAgIGxldCBtb2RlO1xuICAgICAgICBpZiAodHlwZW9mIHByb3BzLm1vZGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAvLyBUaGV5IHBhc3NlZCBhIGNvbnN0cnVjdG9yL2NsYXNzLCBzbyBuZXcgaXQgdXBcbiAgICAgICAgICBjb25zdCBNb2RlQ29uc3RydWN0b3IgPSBwcm9wcy5tb2RlO1xuICAgICAgICAgIG1vZGUgPSBuZXcgTW9kZUNvbnN0cnVjdG9yKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm1vZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgLy8gTG9va3VwIHRoZSBtb2RlIGJhc2VkIG9uIGl0cyBuYW1lIChmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpXG4gICAgICAgICAgbW9kZSA9IG1vZGVOYW1lTWFwcGluZ1twcm9wcy5tb2RlXTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiRGVwcmVjYXRlZCB1c2Ugb2YgcGFzc2luZyBgbW9kZWAgYXMgYSBzdHJpbmcuIFBhc3MgdGhlIG1vZGUncyBjbGFzcyBjb25zdHJ1Y3RvciBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgRWRpdE1vZGUgaW4gdGhpcyBjYXNlXG4gICAgICAgICAgbW9kZSA9IHByb3BzLm1vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1vZGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE5vIG1vZGUgY29uZmlndXJlZCBmb3IgJHtTdHJpbmcocHJvcHMubW9kZSl9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICAgIC8vIFVzZSBkZWZhdWx0IG1vZGVcbiAgICAgICAgICBtb2RlID0gbmV3IERFRkFVTFRfRURJVF9NT0RFKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kZSAhPT0gdGhpcy5zdGF0ZS5tb2RlKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG1vZGUsIGN1cnNvcjogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBzZWxlY3RlZEZlYXR1cmVzID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcykpIHtcbiAgICAgIC8vIFRPRE86IG5lZWRzIGltcHJvdmVkIHRlc3RpbmcsIGkuZS4gY2hlY2tpbmcgZm9yIGR1cGxpY2F0ZXMsIE5hTnMsIG91dCBvZiByYW5nZSBudW1iZXJzLCAuLi5cbiAgICAgIHNlbGVjdGVkRmVhdHVyZXMgPSBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLm1hcCgoZWxlbSkgPT4gcHJvcHMuZGF0YS5mZWF0dXJlc1tlbGVtXSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkRmVhdHVyZXMgfSk7XG4gIH1cblxuICBnZXRNb2RlUHJvcHMocHJvcHM6IFByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGVDb25maWc6IHByb3BzLm1vZGVDb25maWcsXG4gICAgICBkYXRhOiBwcm9wcy5kYXRhLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBwcm9wcy5zZWxlY3RlZEZlYXR1cmVJbmRleGVzLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQ6IHRoaXMuc3RhdGUubGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuY3Vyc29yLFxuICAgICAgb25FZGl0OiAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxGZWF0dXJlQ29sbGVjdGlvbj4pID0+IHtcbiAgICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXJcbiAgICAgICAgLy8gVGhpcyBzdXBwb3J0cyBkb3VibGUtY2xpY2sgd2hlcmUgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSdzIGEgcmUtcmVuZGVyIGJldHdlZW4gdGhlIHR3byBjbGlja3NcbiAgICAgICAgLy8gZXZlbiB0aG91Z2ggdGhlIGRhdGEgd2Fzbid0IGNoYW5nZWQsIGp1c3QgdGhlIGludGVybmFsIHRlbnRhdGl2ZSBmZWF0dXJlLlxuICAgICAgICB0aGlzLnNldE5lZWRzVXBkYXRlKCk7XG4gICAgICAgIHByb3BzLm9uRWRpdChlZGl0QWN0aW9uKTtcbiAgICAgIH0sXG4gICAgICBvblVwZGF0ZUN1cnNvcjogKGN1cnNvcjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgY3Vyc29yIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgc2VsZWN0aW9uQXdhcmVBY2Nlc3NvcihhY2Nlc3NvcjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBhY2Nlc3NvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGFjY2Vzc29yO1xuICAgIH1cbiAgICByZXR1cm4gKGZlYXR1cmU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+XG4gICAgICBhY2Nlc3NvcihmZWF0dXJlLCB0aGlzLmlzRmVhdHVyZVNlbGVjdGVkKGZlYXR1cmUpLCB0aGlzLnByb3BzLm1vZGUpO1xuICB9XG5cbiAgaXNGZWF0dXJlU2VsZWN0ZWQoZmVhdHVyZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmICghdGhpcy5wcm9wcy5kYXRhIHx8ICF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMucHJvcHMuZGF0YS5mZWF0dXJlcy5pbmRleE9mKGZlYXR1cmUpO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuaW5jbHVkZXMoZmVhdHVyZUluZGV4KTtcbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbywgc291cmNlTGF5ZXIgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGlmIChzb3VyY2VMYXllci5pZC5lbmRzV2l0aCgnZ3VpZGVzJykpIHtcbiAgICAgIC8vIElmIHVzZXIgaXMgcGlja2luZyBhbiBlZGl0aW5nIGhhbmRsZSwgYWRkIGFkZGl0aW9uYWwgZGF0YSB0byB0aGUgaW5mb1xuICAgICAgaW5mby5pc0d1aWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxuXG4gIGNyZWF0ZUd1aWRlc0xheWVycygpIHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRBY3RpdmVNb2RlKCk7XG4gICAgY29uc3QgZ3VpZGVzOiBGZWF0dXJlQ29sbGVjdGlvbiA9IG1vZGUuZ2V0R3VpZGVzKHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcblxuICAgIGlmICghZ3VpZGVzIHx8ICFndWlkZXMuZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IHBvaW50TGF5ZXJQcm9wcztcbiAgICBpZiAodGhpcy5wcm9wcy5lZGl0SGFuZGxlVHlwZSA9PT0gJ2ljb24nKSB7XG4gICAgICBwb2ludExheWVyUHJvcHMgPSB7XG4gICAgICAgIHR5cGU6IEljb25MYXllcixcbiAgICAgICAgaWNvbkF0bGFzOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uQXRsYXMsXG4gICAgICAgIGljb25NYXBwaW5nOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uTWFwcGluZyxcbiAgICAgICAgc2l6ZVNjYWxlOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVJY29uU2l6ZVNjYWxlLFxuICAgICAgICBnZXRJY29uOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RWRpdEhhbmRsZUljb24pLFxuICAgICAgICBnZXRTaXplOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0RWRpdEhhbmRsZUljb25TaXplKSxcbiAgICAgICAgZ2V0Q29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbkNvbG9yKSxcbiAgICAgICAgZ2V0QW5nbGU6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlSWNvbkFuZ2xlKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50TGF5ZXJQcm9wcyA9IHtcbiAgICAgICAgdHlwZTogU2NhdHRlcnBsb3RMYXllcixcbiAgICAgICAgcmFkaXVzU2NhbGU6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzU2NhbGUsXG4gICAgICAgIHN0cm9rZWQ6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50T3V0bGluZSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiB0aGlzLnByb3BzLmVkaXRIYW5kbGVQb2ludFN0cm9rZVdpZHRoLFxuICAgICAgICByYWRpdXNNaW5QaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWluUGl4ZWxzLFxuICAgICAgICByYWRpdXNNYXhQaXhlbHM6IHRoaXMucHJvcHMuZWRpdEhhbmRsZVBvaW50UmFkaXVzTWF4UGl4ZWxzLFxuICAgICAgICBnZXRSYWRpdXM6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRSYWRpdXMpLFxuICAgICAgICBnZXRGaWxsQ29sb3I6IGd1aWRlQWNjZXNzb3IodGhpcy5wcm9wcy5nZXRFZGl0SGFuZGxlUG9pbnRDb2xvciksXG4gICAgICAgIGdldExpbmVDb2xvcjogZ3VpZGVBY2Nlc3Nvcih0aGlzLnByb3BzLmdldEVkaXRIYW5kbGVQb2ludE91dGxpbmVDb2xvciksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyID0gbmV3IEdlb0pzb25MYXllcihcbiAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgIGlkOiBgZ3VpZGVzYCxcbiAgICAgICAgZGF0YTogZ3VpZGVzLFxuICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIF9zdWJMYXllclByb3BzOiB7XG4gICAgICAgICAgcG9pbnRzOiBwb2ludExheWVyUHJvcHMsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbmVXaWR0aFNjYWxlOiB0aGlzLnByb3BzLmxpbmVXaWR0aFNjYWxlLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgICBsaW5lV2lkdGhNYXhQaXhlbHM6IHRoaXMucHJvcHMubGluZVdpZHRoTWF4UGl4ZWxzLFxuICAgICAgICBsaW5lV2lkdGhVbml0czogdGhpcy5wcm9wcy5saW5lV2lkdGhVbml0cyxcbiAgICAgICAgbGluZUpvaW50Um91bmRlZDogdGhpcy5wcm9wcy5saW5lSm9pbnRSb3VuZGVkLFxuICAgICAgICBsaW5lTWl0ZXJMaW1pdDogdGhpcy5wcm9wcy5saW5lTWl0ZXJMaW1pdCxcbiAgICAgICAgZ2V0TGluZUNvbG9yOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlTGluZUNvbG9yKSxcbiAgICAgICAgZ2V0TGluZVdpZHRoOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlTGluZVdpZHRoKSxcbiAgICAgICAgZ2V0RmlsbENvbG9yOiBndWlkZUFjY2Vzc29yKHRoaXMucHJvcHMuZ2V0VGVudGF0aXZlRmlsbENvbG9yKSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbbGF5ZXJdO1xuICB9XG5cbiAgY3JlYXRlVG9vbHRpcHNMYXllcnMoKSB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuZ2V0QWN0aXZlTW9kZSgpO1xuICAgIGNvbnN0IHRvb2x0aXBzID0gbW9kZS5nZXRUb29sdGlwcyh0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBUZXh0TGF5ZXIoXG4gICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICBpZDogYHRvb2x0aXBzYCxcbiAgICAgICAgZGF0YTogdG9vbHRpcHMsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gW2xheWVyXTtcbiAgfVxuXG4gIG9uTGF5ZXJDbGljayhldmVudDogQ2xpY2tFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZUNsaWNrKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvbkxheWVyS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVLZXlVcChldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25TdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQpIHtcbiAgICB0aGlzLmdldEFjdGl2ZU1vZGUoKS5oYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcyh0aGlzLnByb3BzKSk7XG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIHRoaXMuZ2V0QWN0aXZlTW9kZSgpLmhhbmRsZVN0b3BEcmFnZ2luZyhldmVudCwgdGhpcy5nZXRNb2RlUHJvcHModGhpcy5wcm9wcykpO1xuICB9XG5cbiAgb25Qb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCkge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBsYXN0UG9pbnRlck1vdmVFdmVudDogZXZlbnQgfSk7XG4gICAgdGhpcy5nZXRBY3RpdmVNb2RlKCkuaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKHRoaXMucHJvcHMpKTtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pIHtcbiAgICBsZXQgeyBjdXJzb3IgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKCFjdXJzb3IpIHtcbiAgICAgIC8vIGRlZmF1bHQgY3Vyc29yXG4gICAgICBjdXJzb3IgPSBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgICB9XG4gICAgcmV0dXJuIGN1cnNvcjtcbiAgfVxuXG4gIGdldEFjdGl2ZU1vZGUoKTogR2VvSnNvbkVkaXRNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUubW9kZTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/layers/editable-h3-cluster-layer.js b/modules/layers/dist/layers/editable-h3-cluster-layer.js new file mode 100644 index 000000000..0463f5730 --- /dev/null +++ b/modules/layers/dist/layers/editable-h3-cluster-layer.js @@ -0,0 +1,279 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _geoLayers = require("@deck.gl/geo-layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _h3Js = require("h3-js"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./editable-geojson-layer")); + +var _editableLayer = _interopRequireDefault(require("./editable-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 DEFAULT_EDIT_MODE = _editModes.ViewMode; +var DEFAULT_H3_RESOLUTION = 9; +var EMPTY_FEATURE_COLLECTION = { + type: 'FeatureCollection', + features: [] +}; + +var defaultProps = _objectSpread({ + mode: DEFAULT_EDIT_MODE +}, _editableGeojsonLayer["default"].defaultProps, { + // h3 layer + data: [], + selectedIndexes: [], + filled: false, + stroked: true, + lineWidthScale: 1, + lineWidthMinPixels: 1, + lineWidthMaxPixels: Number.MAX_SAFE_INTEGER, + lineWidthUnits: 'pixels', + getHexagons: function getHexagons(d) { + return d.hexIds; + }, + getEditedCluster: function getEditedCluster(updatedHexagons, existingCluster) { + if (existingCluster) { + return _objectSpread({}, existingCluster, { + hexIds: updatedHexagons + }); + } + + return { + hexIds: updatedHexagons + }; + }, + resolution: DEFAULT_H3_RESOLUTION +}); + +var EditableH3ClusterLayer = /*#__PURE__*/function (_EditableLayer) { + _inherits(EditableH3ClusterLayer, _EditableLayer); + + var _super = _createSuper(EditableH3ClusterLayer); + + function EditableH3ClusterLayer() { + _classCallCheck(this, EditableH3ClusterLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableH3ClusterLayer, [{ + key: "initializeState", + value: function initializeState() { + _get(_getPrototypeOf(EditableH3ClusterLayer.prototype), "initializeState", this).call(this); + + this.setState({ + tentativeHexagonIDs: [] + }); + } // convert array of (lng, lat) coords to cluster of hexes + + }, { + key: "getDerivedHexagonIDs", + value: function getDerivedHexagonIDs(coords) { + return (0, _h3Js.polyfill)(coords, this.props.resolution, true); + } // convert pair of (lng, lat) coords into single hex + + }, { + key: "getDerivedHexagonID", + value: function getDerivedHexagonID(coords) { + return (0, _h3Js.geoToH3)(coords[1], coords[0], this.props.resolution); + } + }, { + key: "renderLayers", + value: function renderLayers() { + var _this = this; + + var layers = [new _editableGeojsonLayer["default"](this.getSubLayerProps({ + id: 'editable-geojson', + mode: this.props.mode, + data: EMPTY_FEATURE_COLLECTION, + selectedFeatureIndexes: [], + onEdit: function onEdit(editAction) { + var editType = editAction.editType, + editContext = editAction.editContext; + + switch (editType) { + case 'updateTentativeFeature': + // tentative feature updates, updated on every pointer move + if (editContext.feature.geometry.type === 'Polygon') { + var coords = editContext.feature.geometry.coordinates; + + var hexIDs = _this.getDerivedHexagonIDs(coords); + + _this.setState({ + tentativeHexagonIDs: hexIDs + }); + } else if (editContext.feature.geometry.type === 'Point') { + var _coords = editContext.feature.geometry.coordinates; + + var hexID = _this.getDerivedHexagonID(_coords); + + _this.setState({ + tentativeHexagonIDs: [hexID] + }); + } + + break; + + case 'addFeature': + var updatedData = _toConsumableArray(_this.props.data); + + var modeConfig = _this.props.modeConfig; + + if (!modeConfig || !modeConfig.booleanOperation) { + // add new h3 cluster + updatedData.push(_this.props.getEditedCluster(_this.state.tentativeHexagonIDs, null)); + } else if (_this.props.selectedIndexes.length !== 1) { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single cluster selection'); + } else { + // they're affecting a selected cluster + var finalHexagonIDs; + var committedHexagonIDs = new Set(_this.getSelectedHexIDs()); + var tentativeHexagonIDs = new Set(_this.state.tentativeHexagonIDs); + + switch (modeConfig.booleanOperation) { + case 'union': + default: + finalHexagonIDs = _toConsumableArray(new Set([].concat(_toConsumableArray(committedHexagonIDs), _toConsumableArray(tentativeHexagonIDs)))); + break; + + case 'intersection': + finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) { + return tentativeHexagonIDs.has(hexID); + }); + break; + + case 'difference': + finalHexagonIDs = _toConsumableArray(committedHexagonIDs).filter(function (hexID) { + return !tentativeHexagonIDs.has(hexID); + }); + break; + } + + var selectedIndex = _this.props.selectedIndexes[0]; + var existingCluster = _this.props.data[selectedIndex]; + updatedData[selectedIndex] = _this.props.getEditedCluster(finalHexagonIDs, existingCluster); + } + + _this.setState({ + tentativeHexagonIDs: [] + }); + + _this.props.onEdit({ + updatedData: updatedData + }); + + break; + + default: + break; + } + } + })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({ + id: 'hexagons', + data: this.props.data, + getHexagons: this.props.getHexagons + })), new _geoLayers.H3ClusterLayer(this.getSubLayerProps({ + id: 'tentative-hexagons', + data: [{ + hexIds: this.state.tentativeHexagonIDs + }], + getHexagons: function getHexagons(d) { + return d.hexIds; + } + }))]; + return layers; + } // because data is an array of hexagon data, we take the cumulative of all selected indexes, + // using props.getHexagons to support multiple data types + + }, { + key: "getSelectedHexIDs", + value: function getSelectedHexIDs() { + var _this2 = this; + + var cumulativeHexIDs = []; + this.props.selectedIndexes.forEach(function (index) { + var selectedCluster = _this2.props.data[index]; + + var hexIDs = _this2.props.getHexagons(selectedCluster); + + cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs); + }); + return cumulativeHexIDs; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + var cursor = this.state.cursor; + + if (!cursor) { + // default cursor + cursor = isDragging ? 'grabbing' : 'grab'; + } + + return cursor; + } + }]); + + return EditableH3ClusterLayer; +}(_editableLayer["default"]); + +exports["default"] = EditableH3ClusterLayer; + +_defineProperty(EditableH3ClusterLayer, "layerName", 'EditableH3ClusterLayer'); + +_defineProperty(EditableH3ClusterLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtaDMtY2x1c3Rlci1sYXllci50cyJdLCJuYW1lcyI6WyJERUZBVUxUX0VESVRfTU9ERSIsIlZpZXdNb2RlIiwiREVGQVVMVF9IM19SRVNPTFVUSU9OIiwiRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OIiwidHlwZSIsImZlYXR1cmVzIiwiZGVmYXVsdFByb3BzIiwibW9kZSIsIkVkaXRhYmxlR2VvSnNvbkxheWVyIiwiZGF0YSIsInNlbGVjdGVkSW5kZXhlcyIsImZpbGxlZCIsInN0cm9rZWQiLCJsaW5lV2lkdGhTY2FsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsIk51bWJlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJsaW5lV2lkdGhVbml0cyIsImdldEhleGFnb25zIiwiZCIsImhleElkcyIsImdldEVkaXRlZENsdXN0ZXIiLCJ1cGRhdGVkSGV4YWdvbnMiLCJleGlzdGluZ0NsdXN0ZXIiLCJyZXNvbHV0aW9uIiwiRWRpdGFibGVIM0NsdXN0ZXJMYXllciIsInNldFN0YXRlIiwidGVudGF0aXZlSGV4YWdvbklEcyIsImNvb3JkcyIsInByb3BzIiwibGF5ZXJzIiwiZ2V0U3ViTGF5ZXJQcm9wcyIsImlkIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsIm9uRWRpdCIsImVkaXRBY3Rpb24iLCJlZGl0VHlwZSIsImVkaXRDb250ZXh0IiwiZmVhdHVyZSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJoZXhJRHMiLCJnZXREZXJpdmVkSGV4YWdvbklEcyIsImhleElEIiwiZ2V0RGVyaXZlZEhleGFnb25JRCIsInVwZGF0ZWREYXRhIiwibW9kZUNvbmZpZyIsImJvb2xlYW5PcGVyYXRpb24iLCJwdXNoIiwic3RhdGUiLCJsZW5ndGgiLCJjb25zb2xlIiwid2FybiIsImZpbmFsSGV4YWdvbklEcyIsImNvbW1pdHRlZEhleGFnb25JRHMiLCJTZXQiLCJnZXRTZWxlY3RlZEhleElEcyIsImZpbHRlciIsImhhcyIsInNlbGVjdGVkSW5kZXgiLCJIM0NsdXN0ZXJMYXllciIsImN1bXVsYXRpdmVIZXhJRHMiLCJmb3JFYWNoIiwiaW5kZXgiLCJzZWxlY3RlZENsdXN0ZXIiLCJjb25jYXQiLCJpc0RyYWdnaW5nIiwiY3Vyc29yIiwiRWRpdGFibGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxpQkFBaUIsR0FBR0MsbUJBQTFCO0FBQ0EsSUFBTUMscUJBQXFCLEdBQUcsQ0FBOUI7QUFDQSxJQUFNQyx3QkFBd0IsR0FBRztBQUMvQkMsRUFBQUEsSUFBSSxFQUFFLG1CQUR5QjtBQUUvQkMsRUFBQUEsUUFBUSxFQUFFO0FBRnFCLENBQWpDOztBQUtBLElBQU1DLFlBQVk7QUFDaEJDLEVBQUFBLElBQUksRUFBRVA7QUFEVSxHQUliUSxpQ0FBcUJGLFlBSlI7QUFNaEI7QUFDQUcsRUFBQUEsSUFBSSxFQUFFLEVBUFU7QUFRaEJDLEVBQUFBLGVBQWUsRUFBRSxFQVJEO0FBU2hCQyxFQUFBQSxNQUFNLEVBQUUsS0FUUTtBQVVoQkMsRUFBQUEsT0FBTyxFQUFFLElBVk87QUFXaEJDLEVBQUFBLGNBQWMsRUFBRSxDQVhBO0FBWWhCQyxFQUFBQSxrQkFBa0IsRUFBRSxDQVpKO0FBYWhCQyxFQUFBQSxrQkFBa0IsRUFBRUMsTUFBTSxDQUFDQyxnQkFiWDtBQWNoQkMsRUFBQUEsY0FBYyxFQUFFLFFBZEE7QUFlaEJDLEVBQUFBLFdBQVcsRUFBRSxxQkFBQ0MsQ0FBRDtBQUFBLFdBQU9BLENBQUMsQ0FBQ0MsTUFBVDtBQUFBLEdBZkc7QUFnQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSwwQkFBQ0MsZUFBRCxFQUFrQkMsZUFBbEIsRUFBc0M7QUFDdEQsUUFBSUEsZUFBSixFQUFxQjtBQUNuQiwrQkFDS0EsZUFETDtBQUVFSCxRQUFBQSxNQUFNLEVBQUVFO0FB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LENBQVdYLFdBQVgsQ0FBdUI4QyxlQUF2QixDQUFmOztBQUNBSCxRQUFBQSxnQkFBZ0IsR0FBR0EsZ0JBQWdCLENBQUNJLE1BQWpCLENBQXdCeEIsTUFBeEIsQ0FBbkI7QUFDRCxPQUpEO0FBS0EsYUFBT29CLGdCQUFQO0FBQ0Q7OztvQ0FFa0Q7QUFBQSxVQUF2Q0ssVUFBdUMsUUFBdkNBLFVBQXVDO0FBQUEsVUFDM0NDLE1BRDJDLEdBQ2hDLEtBQUtsQixLQUQyQixDQUMzQ2tCLE1BRDJDOztBQUVqRCxVQUFJLENBQUNBLE1BQUwsRUFBYTtBQUNYO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR0QsVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBbkM7QUFDRDs7QUFDRCxhQUFPQyxNQUFQO0FBQ0Q7Ozs7RUF0SmlEQyx5Qjs7OztnQkFBL0IzQyxzQixlQUNBLHdCOztnQkFEQUEsc0Isa0JBRUdwQixZIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmltcG9ydCB7IEgzQ2x1c3RlckxheWVyIH0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5pbXBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBwb2x5ZmlsbCwgZ2VvVG9IMyB9IGZyb20gJ2gzLWpzJztcbmltcG9ydCBFZGl0YWJsZUdlb0pzb25MYXllciBmcm9tICcuL2VkaXRhYmxlLWdlb2pzb24tbGF5ZXInO1xuaW1wb3J0IEVkaXRhYmxlTGF5ZXIgZnJvbSAnLi9lZGl0YWJsZS1sYXllcic7XG5cbmNvbnN0IERFRkFVTFRfRURJVF9NT0RFID0gVmlld01vZGU7XG5jb25zdCBERUZBVUxUX0gzX1JFU09MVVRJT04gPSA5O1xuY29uc3QgRU1QVFlfRkVBVFVSRV9DT0xMRUNUSU9OID0ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICBmZWF0dXJlczogW10sXG59O1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIG1vZGU6IERFRkFVTFRfRURJVF9NT0RFLFxuXG4gIC8vIEVkaXRhYmxlR2VvSnNvbkxheWVyXG4gIC4uLkVkaXRhYmxlR2VvSnNvbkxheWVyLmRlZmF1bHRQcm9wcyxcblxuICAvLyBoMyBsYXllclxuICBkYXRhOiBbXSxcbiAgc2VsZWN0ZWRJbmRleGVzOiBbXSxcbiAgZmlsbGVkOiBmYWxzZSxcbiAgc3Ryb2tlZDogdHJ1ZSxcbiAgbGluZVdpZHRoU2NhbGU6IDEsXG4gIGxpbmVXaWR0aE1pblBpeGVsczogMSxcbiAgbGluZVdpZHRoTWF4UGl4ZWxzOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuICBnZXRIZXhhZ29uczogKGQpID0+IGQuaGV4SWRzLFxuICBnZXRFZGl0ZWRDbHVzdGVyOiAodXBkYXRlZEhleGFnb25zLCBleGlzdGluZ0NsdXN0ZXIpID0+IHtcbiAgICBpZiAoZXhpc3RpbmdDbHVzdGVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5leGlzdGluZ0NsdXN0ZXIsXG4gICAgICAgIGhleElkczogdXBkYXRlZEhleGFnb25zLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGhleElkczogdXBkYXRlZEhleGFnb25zLFxuICAgIH07XG4gIH0sXG4gIHJlc29sdXRpb246IERFRkFVTFRfSDNfUkVTT0xVVElPTixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlSDNDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBFZGl0YWJsZUxheWVyIHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdFZGl0YWJsZUgzQ2x1c3RlckxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZVN0YXRlKCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHM6IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gY29udmVydCBhcnJheSBvZiAobG5nLCBsYXQpIGNvb3JkcyB0byBjbHVzdGVyIG9mIGhleGVzXG4gIGdldERlcml2ZWRIZXhhZ29uSURzKGNvb3Jkcykge1xuICAgIHJldHVybiBwb2x5ZmlsbChjb29yZHMsIHRoaXMucHJvcHMucmVzb2x1dGlvbiwgdHJ1ZSk7XG4gIH1cblxuICAvLyBjb252ZXJ0IHBhaXIgb2YgKGxuZywgbGF0KSBjb29yZHMgaW50byBzaW5nbGUgaGV4XG4gIGdldERlcml2ZWRIZXhhZ29uSUQoY29vcmRzKSB7XG4gICAgcmV0dXJuIGdlb1RvSDMoY29vcmRzWzFdLCBjb29yZHNbMF0sIHRoaXMucHJvcHMucmVzb2x1dGlvbik7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgbGF5ZXJzOiBhbnkgPSBbXG4gICAgICBuZXcgRWRpdGFibGVHZW9Kc29uTGF5ZXIoXG4gICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgaWQ6ICdlZGl0YWJsZS1nZW9qc29uJyxcblxuICAgICAgICAgIG1vZGU6IHRoaXMucHJvcHMubW9kZSxcbiAgICAgICAgICBkYXRhOiBFTVBUWV9GRUFUVVJFX0NPTExFQ1RJT04sXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlczogW10sXG5cbiAgICAgICAgICBvbkVkaXQ6IChlZGl0QWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGVkaXRUeXBlLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcblxuICAgICAgICAgICAgc3dpdGNoIChlZGl0VHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICd1cGRhdGVUZW50YXRpdmVGZWF0dXJlJzpcbiAgICAgICAgICAgICAgICAvLyB0ZW50YXRpdmUgZmVhdHVyZSB1cGRhdGVzLCB1cGRhdGVkIG9uIGV2ZXJ5IHBvaW50ZXIgbW92ZVxuICAgICAgICAgICAgICAgIGlmIChlZGl0Q29udGV4dC5mZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29vcmRzID0gZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhleElEcyA9IHRoaXMuZ2V0RGVyaXZlZEhleGFnb25JRHMoY29vcmRzKTtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHRlbnRhdGl2ZUhleGFnb25JRHM6IGhleElEcyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVkaXRDb250ZXh0LmZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29vcmRzID0gZWRpdENvbnRleHQuZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhleElEID0gdGhpcy5nZXREZXJpdmVkSGV4YWdvbklEKGNvb3Jkcyk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB0ZW50YXRpdmVIZXhhZ29uSURzOiBbaGV4SURdIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnYWRkRmVhdHVyZSc6XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBbLi4udGhpcy5wcm9wcy5kYXRhXTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IG1vZGVDb25maWcgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1vZGVDb25maWcgfHwgIW1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgLy8gYWRkIG5ldyBoMyBjbHVzdGVyXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkRGF0YS5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmdldEVkaXRlZENsdXN0ZXIodGhpcy5zdGF0ZS50ZW50YXRpdmVIZXhhZ29uSURzLCBudWxsKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc2VsZWN0ZWRJbmRleGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignYm9vbGVhbk9wZXJhdGlvbiBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIGNsdXN0ZXIgc2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIHRoZXkncmUgYWZmZWN0aW5nIGEgc2VsZWN0ZWQgY2x1c3RlclxuICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsSGV4YWdvbklEcztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1pdHRlZEhleGFnb25JRHMgPSBuZXcgU2V0KHRoaXMuZ2V0U2VsZWN0ZWRIZXhJRHMoKSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0ZW50YXRpdmVIZXhhZ29uSURzID0gbmV3IFNldCh0aGlzLnN0YXRlLnRlbnRhdGl2ZUhleGFnb25JRHMpO1xuXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ubmV3IFNldChbLi4uY29tbWl0dGVkSGV4YWdvbklEcywgLi4udGVudGF0aXZlSGV4YWdvbklEc10pLFxuICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ludGVyc2VjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgICAgZmluYWxIZXhhZ29uSURzID0gWy4uLmNvbW1pdHRlZEhleGFnb25JRHNdLmZpbHRlcigoaGV4SUQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHMuaGFzKGhleElEKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RpZmZlcmVuY2UnOlxuICAgICAgICAgICAgICAgICAgICAgIGZpbmFsSGV4YWdvbklEcyA9IFsuLi5jb21taXR0ZWRIZXhhZ29uSURzXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaGV4SUQ6IHN0cmluZykgPT4gIXRlbnRhdGl2ZUhleGFnb25JRHMuaGFzKGhleElEKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLnByb3BzLnNlbGVjdGVkSW5kZXhlc1swXTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nQ2x1c3RlciA9IHRoaXMucHJvcHMuZGF0YVtzZWxlY3RlZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWREYXRhW3NlbGVjdGVkSW5kZXhdID0gdGhpcy5wcm9wcy5nZXRFZGl0ZWRDbHVzdGVyKFxuICAgICAgICAgICAgICAgICAgICBmaW5hbEhleGFnb25JRHMsXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nQ2x1c3RlclxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHRlbnRhdGl2ZUhleGFnb25JRHM6IFtdLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkVkaXQoeyB1cGRhdGVkRGF0YSB9KTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLFxuXG4gICAgICBuZXcgSDNDbHVzdGVyTGF5ZXIoXG4gICAgICAgIHRoaXMuZ2V0U3ViTGF5ZXJQcm9wcyh7XG4gICAgICAgICAgaWQ6ICdoZXhhZ29ucycsXG4gICAgICAgICAgZGF0YTogdGhpcy5wcm9wcy5kYXRhLFxuICAgICAgICAgIGdldEhleGFnb25zOiB0aGlzLnByb3BzLmdldEhleGFnb25zLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIG5ldyBIM0NsdXN0ZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICBpZDogJ3RlbnRhdGl2ZS1oZXhhZ29ucycsXG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBoZXhJZHM6IHRoaXMuc3RhdGUudGVudGF0aXZlSGV4YWdvbklEcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBnZXRIZXhhZ29uczogKGQpID0+IGQuaGV4SWRzLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICBdO1xuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICAvLyBiZWNhdXNlIGRhdGEgaXMgYW4gYXJyYXkgb2YgaGV4YWdvbiBkYXRhLCB3ZSB0YWtlIHRoZSBjdW11bGF0aXZlIG9mIGFsbCBzZWxlY3RlZCBpbmRleGVzLFxuICAvLyB1c2luZyBwcm9wcy5nZXRIZXhhZ29ucyB0byBzdXBwb3J0IG11bHRpcGxlIGRhdGEgdHlwZXNcbiAgZ2V0U2VsZWN0ZWRIZXhJRHMoKSB7XG4gICAgbGV0IGN1bXVsYXRpdmVIZXhJRHMgPSBbXTtcbiAgICB0aGlzLnByb3BzLnNlbGVjdGVkSW5kZXhlcy5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDbHVzdGVyID0gdGhpcy5wcm9wcy5kYXRhW2luZGV4XTtcbiAgICAgIGNvbnN0IGhleElEcyA9IHRoaXMucHJvcHMuZ2V0SGV4YWdvbnMoc2VsZWN0ZWRDbHVzdGVyKTtcbiAgICAgIGN1bXVsYXRpdmVIZXhJRHMgPSBjdW11bGF0aXZlSGV4SURzLmNvbmNhdChoZXhJRHMpO1xuICAgIH0pO1xuICAgIHJldHVybiBjdW11bGF0aXZlSGV4SURzO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSkge1xuICAgIGxldCB7IGN1cnNvciB9ID0gdGhpcy5zdGF0ZTtcbiAgICBpZiAoIWN1cnNvcikge1xuICAgICAgLy8gZGVmYXVsdCBjdXJzb3JcbiAgICAgIGN1cnNvciA9IGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/layers/editable-layer.js b/modules/layers/dist/layers/editable-layer.js new file mode 100644 index 000000000..17c8839dc --- /dev/null +++ b/modules/layers/dist/layers/editable-layer.js @@ -0,0 +1,331 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup']; + +var EditableLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(EditableLayer, _CompositeLayer); + + var _super = _createSuper(EditableLayer); + + function EditableLayer() { + _classCallCheck(this, EditableLayer); + + return _super.apply(this, arguments); + } + + _createClass(EditableLayer, [{ + key: "onLayerClick", + // Overridable interaction event handlers + value: function onLayerClick(event) {// default implementation - do nothing + } + }, { + key: "onStartDragging", + value: function onStartDragging(event) {// default implementation - do nothing + } + }, { + key: "onStopDragging", + value: function onStopDragging(event) {// default implementation - do nothing + } + }, { + key: "onDragging", + value: function onDragging(event) {// default implementation - do nothing + } + }, { + key: "onPointerMove", + value: function onPointerMove(event) {// default implementation - do nothing + } + }, { + key: "onLayerKeyUp", + value: function onLayerKeyUp(event) {} // default implementation - do nothing; + // TODO: implement onCancelDragging (e.g. drag off screen) + + }, { + key: "initializeState", + value: function initializeState() { + this.setState({ + _editableLayerState: { + // Picked objects at the time the pointer went down + pointerDownPicks: null, + // Screen coordinates where the pointer went down + pointerDownScreenCoords: null, + // Ground coordinates where the pointer went down + pointerDownMapCoords: null, + // Keep track of the mjolnir.js event handler so it can be deregistered + eventHandler: this._forwardEventToCurrentLayer.bind(this) + } + }); + + this._addEventHandlers(); + } + }, { + key: "finalizeState", + value: function finalizeState() { + this._removeEventHandlers(); + } + }, { + key: "_addEventHandlers", + value: function _addEventHandlers() { + // @ts-ignore + var eventManager = this.context.deck.eventManager; + var eventHandler = this.state._editableLayerState.eventHandler; + + var _iterator = _createForOfIteratorHelper(EVENT_TYPES), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var eventType = _step.value; + eventManager.on(eventType, eventHandler, { + // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers + priority: 100 + }); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + } + }, { + key: "_removeEventHandlers", + value: function _removeEventHandlers() { + // @ts-ignore + var eventManager = this.context.deck.eventManager; + var eventHandler = this.state._editableLayerState.eventHandler; + + var _iterator2 = _createForOfIteratorHelper(EVENT_TYPES), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var eventType = _step2.value; + eventManager.off(eventType, eventHandler); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } // A new layer instance is created on every render, so forward the event to the current layer + // This means that the first layer instance will stick around to be the event listener, but will forward the event + // to the latest layer instance. + + }, { + key: "_forwardEventToCurrentLayer", + value: function _forwardEventToCurrentLayer(event) { + var currentLayer = this.getCurrentLayer(); // Use a naming convention to find the event handling function for this event type + + var func = currentLayer["_on".concat(event.type)].bind(currentLayer); + + if (!func) { + console.warn("no handler for mjolnir.js event ".concat(event.type)); // eslint-disable-line + + return; + } + + func(event); + } + }, { + key: "_onanyclick", + value: function _onanyclick(_ref) { + var srcEvent = _ref.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onLayerClick({ + mapCoords: mapCoords, + // @ts-ignore + screenCoords: screenCoords, + picks: picks, + sourceEvent: srcEvent + }); + } + }, { + key: "_onkeyup", + value: function _onkeyup(_ref2) { + var srcEvent = _ref2.srcEvent; + this.onLayerKeyUp(srcEvent); + } + }, { + key: "_onpanstart", + value: function _onpanstart(event) { + var screenCoords = this.getScreenCoords(event.srcEvent); + var mapCoords = this.getMapCoords(screenCoords); // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.setState({ + _editableLayerState: _objectSpread({}, this.state._editableLayerState, { + pointerDownScreenCoords: screenCoords, + pointerDownMapCoords: mapCoords, + pointerDownPicks: picks + }) + }); + this.onStartDragging({ + picks: picks, + // @ts-ignore + screenCoords: screenCoords, + // @ts-ignore + mapCoords: mapCoords, + // @ts-ignore + pointerDownScreenCoords: screenCoords, + pointerDownMapCoords: mapCoords, + cancelPan: event.stopImmediatePropagation, + sourceEvent: event.srcEvent + }); + } + }, { + key: "_onpanmove", + value: function _onpanmove(event) { + var srcEvent = event.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onDragging({ + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + picks: picks, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent, + cancelPan: event.stopImmediatePropagation // another (hacky) approach for cancelling map panning + // const controller = this.context.deck.viewManager.controllers[ + // Object.keys(this.context.deck.viewManager.controllers)[0] + // ]; + // controller._state.isDragging = false; + + }); + } + }, { + key: "_onpanend", + value: function _onpanend(_ref3) { + var srcEvent = _ref3.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable2 = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable2.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable2.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable2.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onStopDragging({ + picks: picks, + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent + }); + this.setState({ + _editableLayerState: _objectSpread({}, this.state._editableLayerState, { + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + pointerDownPicks: null + }) + }); + } + }, { + key: "_onpointermove", + value: function _onpointermove(event) { + var srcEvent = event.srcEvent; + var screenCoords = this.getScreenCoords(srcEvent); + var mapCoords = this.getMapCoords(screenCoords); + var _this$state$_editable3 = this.state._editableLayerState, + pointerDownPicks = _this$state$_editable3.pointerDownPicks, + pointerDownScreenCoords = _this$state$_editable3.pointerDownScreenCoords, + pointerDownMapCoords = _this$state$_editable3.pointerDownMapCoords; // @ts-ignore + + var picks = this.getPicks(screenCoords); + this.onPointerMove({ + // @ts-ignore + screenCoords: screenCoords, + mapCoords: mapCoords, + picks: picks, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + sourceEvent: srcEvent + }); + } + }, { + key: "getPicks", + value: function getPicks(screenCoords) { + // @ts-ignore + return this.context.deck.pickMultipleObjects({ + x: screenCoords[0], + y: screenCoords[1], + layerIds: [this.props.id], + radius: this.props.pickingRadius, + depth: this.props.pickingDepth + }); + } + }, { + key: "getScreenCoords", + value: function getScreenCoords(pointerEvent) { + return [pointerEvent.clientX - this.context.gl.canvas.getBoundingClientRect().left, pointerEvent.clientY - this.context.gl.canvas.getBoundingClientRect().top]; + } + }, { + key: "getMapCoords", + value: function getMapCoords(screenCoords) { + // @ts-ignore + return this.context.viewport.unproject([screenCoords[0], screenCoords[1]]); + } + }]); + + return EditableLayer; +}(_core.CompositeLayer); + +exports["default"] = EditableLayer; + +_defineProperty(EditableLayer, "layerName", 'EditableLayer'); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWRpdGFibGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiRVZFTlRfVFlQRVMiLCJFZGl0YWJsZUxheWVyIiwiZXZlbnQiLCJzZXRTdGF0ZSIsIl9lZGl0YWJsZUxheWVyU3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsImV2ZW50SGFuZGxlciIsIl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllciIsImJpbmQiLCJfYWRkRXZlbnRIYW5kbGVycyIsIl9yZW1vdmVFdmVudEhhbmRsZXJzIiwiZXZlbnRNYW5hZ2VyIiwiY29udGV4dCIsImRlY2siLCJzdGF0ZSIsImV2ZW50VHlwZSIsIm9uIiwicHJpb3JpdHkiLCJvZmYiLCJjdXJyZW50TGF5ZXIiLCJnZXRDdXJyZW50TGF5ZXIiLCJmdW5jIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwic3JjRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJnZXRTY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJnZXRNYXBDb29yZHMiLCJwaWNrcyIsImdldFBpY2tzIiwib25MYXllckNsaWNrIiwic291cmNlRXZlbnQiLCJvbkxheWVyS2V5VXAiLCJvblN0YXJ0RHJhZ2dpbmciLCJjYW5jZWxQYW4iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJvbkRyYWdnaW5nIiwib25TdG9wRHJhZ2dpbmciLCJvblBvaW50ZXJNb3ZlIiwicGlja011bHRpcGxlT2JqZWN0cyIsIngiLCJ5IiwibGF5ZXJJZHMiLCJwcm9wcyIsImlkIiwicmFkaXVzIiwicGlja2luZ1JhZGl1cyIsImRlcHRoIiwicGlja2luZ0RlcHRoIiwicG9pbnRlckV2ZW50IiwiY2xpZW50WCIsImdsIiwiY2FudmFzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsImNsaWVudFkiLCJ0b3AiLCJ2aWV3cG9ydCIsInVucHJvamVjdCIsIkNvbXBvc2l0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QWIsRUFBa0JBLFlBQVksQ0FBQyxDQUFELENBQTlCLENBQWhDLENBQVA7QUFDRDs7OztFQXhQd0NtQyxvQjs7OztnQkFBdEI5RCxhLGVBQ0EsZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRHJhZ2dpbmdFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuY29uc3QgRVZFTlRfVFlQRVMgPSBbJ2FueWNsaWNrJywgJ3BvaW50ZXJtb3ZlJywgJ3BhbnN0YXJ0JywgJ3Bhbm1vdmUnLCAncGFuZW5kJywgJ2tleXVwJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdFZGl0YWJsZUxheWVyJztcbiAgLy8gT3ZlcnJpZGFibGUgaW50ZXJhY3Rpb24gZXZlbnQgaGFuZGxlcnNcbiAgb25MYXllckNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCkge1xuICAgIC8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gLSBkbyBub3RoaW5nXG4gIH1cblxuICBvbkRyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50KSB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmdcbiAgfVxuXG4gIG9uUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQpIHtcbiAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIC0gZG8gbm90aGluZ1xuICB9XG5cbiAgb25MYXllcktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAtIGRvIG5vdGhpbmc7XG4gIH1cbiAgLy8gVE9ETzogaW1wbGVtZW50IG9uQ2FuY2VsRHJhZ2dpbmcgKGUuZy4gZHJhZyBvZmYgc2NyZWVuKVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLy8gUGlja2VkIG9iamVjdHMgYXQgdGhlIHRpbWUgdGhlIHBvaW50ZXIgd2VudCBkb3duXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICAgIC8vIFNjcmVlbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICAgIC8vIEdyb3VuZCBjb29yZGluYXRlcyB3aGVyZSB0aGUgcG9pbnRlciB3ZW50IGRvd25cbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgbWpvbG5pci5qcyBldmVudCBoYW5kbGVyIHNvIGl0IGNhbiBiZSBkZXJlZ2lzdGVyZWRcbiAgICAgICAgZXZlbnRIYW5kbGVyOiB0aGlzLl9mb3J3YXJkRXZlbnRUb0N1cnJlbnRMYXllci5iaW5kKHRoaXMpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2FkZEV2ZW50SGFuZGxlcnMoKTtcbiAgfVxuXG4gIGZpbmFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRIYW5kbGVycygpO1xuICB9XG5cbiAgX2FkZEV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vbihldmVudFR5cGUsIGV2ZW50SGFuZGxlciwge1xuICAgICAgICAvLyBnaXZlIG5lYnVsYSBhIGhpZ2hlciBwcmlvcml0eSBzbyB0aGF0IGl0IGNhbiBzdG9wIHByb3BhZ2F0aW9uIHRvIGRlY2suZ2wncyBtYXAgcGFubmluZyBoYW5kbGVyc1xuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbW92ZUV2ZW50SGFuZGxlcnMoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgZXZlbnRNYW5hZ2VyIH0gPSB0aGlzLmNvbnRleHQuZGVjaztcbiAgICBjb25zdCB7IGV2ZW50SGFuZGxlciB9ID0gdGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlO1xuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgRVZFTlRfVFlQRVMpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYoZXZlbnRUeXBlLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEEgbmV3IGxheWVyIGluc3RhbmNlIGlzIGNyZWF0ZWQgb24gZXZlcnkgcmVuZGVyLCBzbyBmb3J3YXJkIHRoZSBldmVudCB0byB0aGUgY3VycmVudCBsYXllclxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGZpcnN0IGxheWVyIGluc3RhbmNlIHdpbGwgc3RpY2sgYXJvdW5kIHRvIGJlIHRoZSBldmVudCBsaXN0ZW5lciwgYnV0IHdpbGwgZm9yd2FyZCB0aGUgZXZlbnRcbiAgLy8gdG8gdGhlIGxhdGVzdCBsYXllciBpbnN0YW5jZS5cbiAgX2ZvcndhcmRFdmVudFRvQ3VycmVudExheWVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW50TGF5ZXIgPSB0aGlzLmdldEN1cnJlbnRMYXllcigpO1xuXG4gICAgLy8gVXNlIGEgbmFtaW5nIGNvbnZlbnRpb24gdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgZnVuY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZVxuICAgIGNvbnN0IGZ1bmMgPSBjdXJyZW50TGF5ZXJbYF9vbiR7ZXZlbnQudHlwZX1gXS5iaW5kKGN1cnJlbnRMYXllcik7XG4gICAgaWYgKCFmdW5jKSB7XG4gICAgICBjb25zb2xlLndhcm4oYG5vIGhhbmRsZXIgZm9yIG1qb2xuaXIuanMgZXZlbnQgJHtldmVudC50eXBlfWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZ1bmMoZXZlbnQpO1xuICB9XG5cbiAgX29uYW55Y2xpY2soeyBzcmNFdmVudCB9OiBhbnkpIHtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSB0aGlzLmdldFNjcmVlbkNvb3JkcyhzcmNFdmVudCk7XG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy5nZXRNYXBDb29yZHMoc2NyZWVuQ29vcmRzKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uTGF5ZXJDbGljayh7XG4gICAgICBtYXBDb29yZHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzY3JlZW5Db29yZHMsXG4gICAgICBwaWNrcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbmtleXVwKHsgc3JjRXZlbnQgfTogeyBzcmNFdmVudDogS2V5Ym9hcmRFdmVudCB9KSB7XG4gICAgdGhpcy5vbkxheWVyS2V5VXAoc3JjRXZlbnQpO1xuICB9XG5cbiAgX29ucGFuc3RhcnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKGV2ZW50LnNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwaWNrcyA9IHRoaXMuZ2V0UGlja3Moc2NyZWVuQ29vcmRzKTtcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX2VkaXRhYmxlTGF5ZXJTdGF0ZToge1xuICAgICAgICAuLi50aGlzLnN0YXRlLl9lZGl0YWJsZUxheWVyU3RhdGUsXG4gICAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBzY3JlZW5Db29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IHBpY2tzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMub25TdGFydERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IHNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBtYXBDb29yZHMsXG4gICAgICBjYW5jZWxQYW46IGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbixcbiAgICAgIHNvdXJjZUV2ZW50OiBldmVudC5zcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uRHJhZ2dpbmcoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgICAgLy8gYW5vdGhlciAoaGFja3kpIGFwcHJvYWNoIGZvciBjYW5jZWxsaW5nIG1hcCBwYW5uaW5nXG4gICAgICAvLyBjb25zdCBjb250cm9sbGVyID0gdGhpcy5jb250ZXh0LmRlY2sudmlld01hbmFnZXIuY29udHJvbGxlcnNbXG4gICAgICAvLyAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dC5kZWNrLnZpZXdNYW5hZ2VyLmNvbnRyb2xsZXJzKVswXVxuICAgICAgLy8gXTtcbiAgICAgIC8vIGNvbnRyb2xsZXIuX3N0YXRlLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIF9vbnBhbmVuZCh7IHNyY0V2ZW50IH06IGFueSkge1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uU3RvcERyYWdnaW5nKHtcbiAgICAgIHBpY2tzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgICBzb3VyY2VFdmVudDogc3JjRXZlbnQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF9lZGl0YWJsZUxheWVyU3RhdGU6IHtcbiAgICAgICAgLi4udGhpcy5zdGF0ZS5fZWRpdGFibGVMYXllclN0YXRlLFxuICAgICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG4gICAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgX29ucG9pbnRlcm1vdmUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHsgc3JjRXZlbnQgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHNjcmVlbkNvb3JkcyA9IHRoaXMuZ2V0U2NyZWVuQ29vcmRzKHNyY0V2ZW50KTtcbiAgICBjb25zdCBtYXBDb29yZHMgPSB0aGlzLmdldE1hcENvb3JkcyhzY3JlZW5Db29yZHMpO1xuXG4gICAgY29uc3Qge1xuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGUuX2VkaXRhYmxlTGF5ZXJTdGF0ZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja3MgPSB0aGlzLmdldFBpY2tzKHNjcmVlbkNvb3Jkcyk7XG5cbiAgICB0aGlzLm9uUG9pbnRlck1vdmUoe1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgcGlja3MsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBzcmNFdmVudCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBpY2tzKHNjcmVlbkNvb3JkczogW251bWJlciwgbnVtYmVyXSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmRlY2sucGlja011bHRpcGxlT2JqZWN0cyh7XG4gICAgICB4OiBzY3JlZW5Db29yZHNbMF0sXG4gICAgICB5OiBzY3JlZW5Db29yZHNbMV0sXG4gICAgICBsYXllcklkczogW3RoaXMucHJvcHMuaWRdLFxuICAgICAgcmFkaXVzOiB0aGlzLnByb3BzLnBpY2tpbmdSYWRpdXMsXG4gICAgICBkZXB0aDogdGhpcy5wcm9wcy5waWNraW5nRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTY3JlZW5Db29yZHMocG9pbnRlckV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gW1xuICAgICAgcG9pbnRlckV2ZW50LmNsaWVudFggLVxuICAgICAgICAodGhpcy5jb250ZXh0LmdsLmNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxcbiAgICAgIHBvaW50ZXJFdmVudC5jbGllbnRZIC1cbiAgICAgICAgKHRoaXMuY29udGV4dC5nbC5jYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxcbiAgICBdO1xuICB9XG5cbiAgZ2V0TWFwQ29vcmRzKHNjcmVlbkNvb3JkczogbnVtYmVyW10pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC52aWV3cG9ydC51bnByb2plY3QoW3NjcmVlbkNvb3Jkc1swXSwgc2NyZWVuQ29vcmRzWzFdXSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/layers/elevated-edit-handle-layer.js b/modules/layers/dist/layers/elevated-edit-handle-layer.js new file mode 100644 index 000000000..0ddaf8057 --- /dev/null +++ b/modules/layers/dist/layers/elevated-edit-handle-layer.js @@ -0,0 +1,83 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultProps = {}; + +var ElevatedEditHandleLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(ElevatedEditHandleLayer, _CompositeLayer); + + var _super = _createSuper(ElevatedEditHandleLayer); + + function ElevatedEditHandleLayer() { + _classCallCheck(this, ElevatedEditHandleLayer); + + return _super.apply(this, arguments); + } + + _createClass(ElevatedEditHandleLayer, [{ + key: "renderLayers", + value: function renderLayers() { + var handles = new _layers.ScatterplotLayer(Object.assign({}, this.props, { + id: "".concat(this.props.id, "-ScatterplotLayer"), + data: this.props.data + })); + var lines = new _layers.LineLayer(Object.assign({}, this.props, { + id: "".concat(this.props.id, "-LineLayer"), + data: this.props.data, + pickable: false, + getSourcePosition: function getSourcePosition(_ref) { + var position = _ref.position; + return [position[0], position[1], 0]; + }, + getTargetPosition: function getTargetPosition(_ref2) { + var position = _ref2.position; + return [position[0], position[1], position[2] || 0]; + }, + getColor: [150, 150, 150, 200], + getStrokeWidth: 3 + })); + return [handles, lines]; + } + }]); + + return ElevatedEditHandleLayer; +}(_core.CompositeLayer); + +exports["default"] = ElevatedEditHandleLayer; + +_defineProperty(ElevatedEditHandleLayer, "layerName", 'ElevatedEditHandleLayer'); + +_defineProperty(ElevatedEditHandleLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvZWxldmF0ZWQtZWRpdC1oYW5kbGUtbGF5ZXIudHMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIiLCJoYW5kbGVzIiwiU2NhdHRlcnBsb3RMYXllciIsIk9iamVjdCIsImFzc2lnbiIsInByb3BzIiwiaWQiLCJkYXRhIiwibGluZXMiLCJMaW5lTGF5ZXIiLCJwaWNrYWJsZSIsImdldFNvdXJjZVBvc2l0aW9uIiwicG9zaXRpb24iLCJnZXRUYXJnZXRQb3NpdGlvbiIsImdldENvbG9yIiwiZ2V0U3Ryb2tlV2lkdGgiLCJDb21wb3NpdGVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFlBQVksR0FBRyxFQUFyQjs7SUFFcUJDLHVCOzs7Ozs7Ozs7Ozs7O21DQUdKO0FBQ2IsVUFBTUMsT0FBTyxHQUFHLElBQUlDLHdCQUFKLENBQ2RDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLHNCQUQwQjtBQUU1QkMsUUFBQUEsSUFBSSxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFGVyxPQUE5QixDQURjLENBQWhCO0FBT0EsVUFBTUMsS0FBSyxHQUFHLElBQUlDLGlCQUFKLENBQ1pOLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0IsS0FBS0MsS0FBdkIsRUFBOEI7QUFDNUJDLFFBQUFBLEVBQUUsWUFBSyxLQUFLRCxLQUFMLENBQVdDLEVBQWhCLGVBRDBCO0FBRTVCQyxRQUFBQSxJQUFJLEVBQUUsS0FBS0YsS0FBTCxDQUFXRSxJQUZXO0FBRzVCRyxRQUFBQSxRQUFRLEVBQUUsS0FIa0I7QUFJNUJDLFFBQUFBLGlCQUFpQixFQUFFO0FBQUEsY0FBR0MsUUFBSCxRQUFHQSxRQUFIO0FBQUEsaUJBQWtCLENBQUNBLFFBQVEsQ0FBQyxDQUFELENBQVQsRUFBY0EsUUFBUSxDQUFDLENBQUQsQ0FBdEIsRUFBMkIsQ0FBM0IsQ0FBbEI7QUFBQSxTQUpTO0FBSzVCQyxRQUFBQSxpQkFBaUIsRUFBRTtBQUFBLGNBQUdELFFBQUgsU0FBR0EsUUFBSDtBQUFBLGlCQUFrQixDQUFDQSxRQUFRLENBQUMsQ0FBRCxDQUFULEVBQWNBLFFBQVEsQ0FBQyxDQUFELENBQXRCLEVBQTJCQSxRQUFRLENBQUMsQ0FBRCxDQUFSLElBQWUsQ0FBMUMsQ0FBbEI7QUFBQSxTQUxTO0FBTTVCRSxRQUFBQSxRQUFRLEVBQUUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsQ0FOa0I7QUFPNUJDLFFBQUFBLGNBQWMsRUFBRTtBQVBZLE9BQTlCLENBRFksQ0FBZDtBQVlBLGFBQU8sQ0FBQ2QsT0FBRCxFQUFVTyxLQUFWLENBQVA7QUFDRDs7OztFQXhCa0RRLG9COzs7O2dCQUFoQ2hCLHVCLGVBQ0EseUI7O2dCQURBQSx1QixrQkFFR0QsWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5pbXBvcnQgeyBDb21wb3NpdGVMYXllciB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciwgTGluZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVsZXZhdGVkRWRpdEhhbmRsZUxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgaGFuZGxlcyA9IG5ldyBTY2F0dGVycGxvdExheWVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wcm9wcywge1xuICAgICAgICBpZDogYCR7dGhpcy5wcm9wcy5pZH0tU2NhdHRlcnBsb3RMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGxpbmVzID0gbmV3IExpbmVMYXllcihcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMsIHtcbiAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LUxpbmVMYXllcmAsXG4gICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBnZXRTb3VyY2VQb3NpdGlvbjogKHsgcG9zaXRpb24gfSkgPT4gW3Bvc2l0aW9uWzBdLCBwb3NpdGlvblsxXSwgMF0sXG4gICAgICAgIGdldFRhcmdldFBvc2l0aW9uOiAoeyBwb3NpdGlvbiB9KSA9PiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBwb3NpdGlvblsyXSB8fCAwXSxcbiAgICAgICAgZ2V0Q29sb3I6IFsxNTAsIDE1MCwgMTUwLCAyMDBdLFxuICAgICAgICBnZXRTdHJva2VXaWR0aDogMyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBbaGFuZGxlcywgbGluZXNdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/layers/junction-scatterplot-layer.js b/modules/layers/dist/layers/junction-scatterplot-layer.js new file mode 100644 index 000000000..d9904332b --- /dev/null +++ b/modules/layers/dist/layers/junction-scatterplot-layer.js @@ -0,0 +1,102 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 JunctionScatterplotLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(JunctionScatterplotLayer, _CompositeLayer); + + var _super = _createSuper(JunctionScatterplotLayer); + + function JunctionScatterplotLayer() { + _classCallCheck(this, JunctionScatterplotLayer); + + return _super.apply(this, arguments); + } + + _createClass(JunctionScatterplotLayer, [{ + key: "renderLayers", + value: function renderLayers() { + var _this$props = this.props, + id = _this$props.id, + getFillColor = _this$props.getFillColor, + getStrokeColor = _this$props.getStrokeColor, + getInnerRadius = _this$props.getInnerRadius, + updateTriggers = _this$props.updateTriggers; // data needs to be passed explicitly after deck.gl 5.3 + + return [// the full circles + new _layers.ScatterplotLayer(_objectSpread({}, this.props, { + id: "".concat(id, "-full"), + data: this.props.data, + getLineColor: getStrokeColor, + updateTriggers: _objectSpread({}, updateTriggers, { + getStrokeColor: updateTriggers.getStrokeColor + }) + })), // the inner part + new _layers.ScatterplotLayer(_objectSpread({}, this.props, { + id: "".concat(id, "-inner"), + data: this.props.data, + getFillColor: getFillColor, + getRadius: getInnerRadius, + pickable: false, + updateTriggers: _objectSpread({}, updateTriggers, { + getFillColor: updateTriggers.getFillColor, + getRadius: updateTriggers.getInnerRadius + }) + }))]; + } + }]); + + return JunctionScatterplotLayer; +}(_core.CompositeLayer); + +exports["default"] = JunctionScatterplotLayer; + +_defineProperty(JunctionScatterplotLayer, "layerName", 'JunctionScatterplotLayer'); + +_defineProperty(JunctionScatterplotLayer, "defaultProps", _objectSpread({}, _layers.ScatterplotLayer.defaultProps, { + getFillColor: function getFillColor(d) { + return [0, 0, 0, 255]; + }, + getStrokeColor: function getStrokeColor(d) { + return [255, 255, 255, 255]; + }, + getInnerRadius: function getInnerRadius(d) { + return 1; + } +})); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvanVuY3Rpb24tc2NhdHRlcnBsb3QtbGF5ZXIudHMiXSwibmFtZXMiOlsiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwicHJvcHMiLCJpZCIsImdldEZpbGxDb2xvciIsImdldFN0cm9rZUNvbG9yIiwiZ2V0SW5uZXJSYWRpdXMiLCJ1cGRhdGVUcmlnZ2VycyIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJkYXRhIiwiZ2V0TGluZUNvbG9yIiwiZ2V0UmFkaXVzIiwicGlja2FibGUiLCJDb21wb3NpdGVMYXllciIsImRlZmF1bHRQcm9wcyIsImQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSx3Qjs7Ozs7Ozs7Ozs7OzttQ0FVSjtBQUFBLHdCQUNnRSxLQUFLQyxLQURyRTtBQUFBLFVBQ0xDLEVBREssZUFDTEEsRUFESztBQUFBLFVBQ0RDLFlBREMsZUFDREEsWUFEQztBQUFBLFVBQ2FDLGNBRGIsZUFDYUEsY0FEYjtBQUFBLFVBQzZCQyxjQUQ3QixlQUM2QkEsY0FEN0I7QUFBQSxVQUM2Q0MsY0FEN0MsZUFDNkNBLGNBRDdDLEVBR2I7O0FBQ0EsYUFBTyxDQUNMO0FBQ0EsVUFBSUMsd0JBQUosbUJBQ0ssS0FBS04sS0FEVjtBQUVFQyxRQUFBQSxFQUFFLFlBQUtBLEVBQUwsVUFGSjtBQUdFTSxRQUFBQSxJQUFJLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxJQUhuQjtBQUlFQyxRQUFBQSxZQUFZLEVBQUVMLGNBSmhCO0FBS0VFLFFBQUFBLGNBQWMsb0JBQ1RBLGNBRFM7QUFFWkYsVUFBQUEsY0FBYyxFQUFFRSxjQUFjLENBQUNGO0FBRm5CO0FBTGhCLFNBRkssRUFXRDtBQUNKLFVBQUlHLHdCQUFKLG1CQUNLLEtBQUtOLEtBRFY7QUFFRUMsUUFBQUEsRUFBRSxZQUFLQSxFQUFMLFdBRko7QUFHRU0sUUFBQUEsSUFBSSxFQUFFLEtBQUtQLEtBQUwsQ0FBV08sSUFIbkI7QUFJRUwsUUFBQUEsWUFBWSxFQUFaQSxZQUpGO0FBS0VPLFFBQUFBLFNBQVMsRUFBRUwsY0FMYjtBQU1FTSxRQUFBQSxRQUFRLEVBQUUsS0FOWjtBQU9FTCxRQUFBQSxjQUFjLG9CQUNUQSxjQURTO0FBRVpILFVBQUFBLFlBQVksRUFBRUcsY0FBYyxDQUFDSCxZQUZqQjtBQUdaTyxVQUFBQSxTQUFTLEVBQUVKLGNBQWMsQ0FBQ0Q7QUFIZDtBQVBoQixTQVpLLENBQVA7QUEwQkQ7Ozs7RUF4Q21ETyxvQjs7OztnQkFBakNaLHdCLGVBQ0EsMEI7O2dCQURBQSx3QixvQ0FJZE8seUJBQWlCTSxZO0FBQ3BCVixFQUFBQSxZQUFZLEVBQUUsc0JBQUNXLENBQUQ7QUFBQSxXQUFPLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUFQO0FBQUEsRztBQUNkVixFQUFBQSxjQUFjLEVBQUUsd0JBQUNVLENBQUQ7QUFBQSxXQUFPLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLEVBQWdCLEdBQWhCLENBQVA7QUFBQSxHO0FBQ2hCVCxFQUFBQSxjQUFjLEVBQUUsd0JBQUNTLENBQUQ7QUFBQSxXQUFPLENBQVA7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBTY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55PiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnSnVuY3Rpb25TY2F0dGVycGxvdExheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLi4uU2NhdHRlcnBsb3RMYXllci5kZWZhdWx0UHJvcHMsXG4gICAgZ2V0RmlsbENvbG9yOiAoZCkgPT4gWzAsIDAsIDAsIDI1NV0sXG4gICAgZ2V0U3Ryb2tlQ29sb3I6IChkKSA9PiBbMjU1LCAyNTUsIDI1NSwgMjU1XSxcbiAgICBnZXRJbm5lclJhZGl1czogKGQpID0+IDEsXG4gIH07XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIGNvbnN0IHsgaWQsIGdldEZpbGxDb2xvciwgZ2V0U3Ryb2tlQ29sb3IsIGdldElubmVyUmFkaXVzLCB1cGRhdGVUcmlnZ2VycyB9ID0gdGhpcy5wcm9wcztcblxuICAgIC8vIGRhdGEgbmVlZHMgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgYWZ0ZXIgZGVjay5nbCA1LjNcbiAgICByZXR1cm4gW1xuICAgICAgLy8gdGhlIGZ1bGwgY2lyY2xlc1xuICAgICAgbmV3IFNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgICAuLi50aGlzLnByb3BzLFxuICAgICAgICBpZDogYCR7aWR9LWZ1bGxgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldExpbmVDb2xvcjogZ2V0U3Ryb2tlQ29sb3IsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgLi4udXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgZ2V0U3Ryb2tlQ29sb3I6IHVwZGF0ZVRyaWdnZXJzLmdldFN0cm9rZUNvbG9yLFxuICAgICAgICB9LFxuICAgICAgfSksIC8vIHRoZSBpbm5lciBwYXJ0XG4gICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAgIGlkOiBgJHtpZH0taW5uZXJgLFxuICAgICAgICBkYXRhOiB0aGlzLnByb3BzLmRhdGEsXG4gICAgICAgIGdldEZpbGxDb2xvcixcbiAgICAgICAgZ2V0UmFkaXVzOiBnZXRJbm5lclJhZGl1cyxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIC4uLnVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgIGdldEZpbGxDb2xvcjogdXBkYXRlVHJpZ2dlcnMuZ2V0RmlsbENvbG9yLFxuICAgICAgICAgIGdldFJhZGl1czogdXBkYXRlVHJpZ2dlcnMuZ2V0SW5uZXJSYWRpdXMsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/layers/path-marker-layer/arrow-2d-geometry.js b/modules/layers/dist/layers/path-marker-layer/arrow-2d-geometry.js new file mode 100644 index 000000000..39b11567e --- /dev/null +++ b/modules/layers/dist/layers/path-marker-layer/arrow-2d-geometry.js @@ -0,0 +1,76 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@luma.gl/core"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var Arrow2DGeometry = /*#__PURE__*/function (_Geometry) { + _inherits(Arrow2DGeometry, _Geometry); + + var _super = _createSuper(Arrow2DGeometry); + + function Arrow2DGeometry() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Arrow2DGeometry); + + return _super.call(this, Object.assign({}, opts, { + attributes: getArrowAttributes(opts) + })); + } + + return Arrow2DGeometry; +}(_core.Geometry); + +exports["default"] = Arrow2DGeometry; + +function getArrowAttributes(_ref) { + var _ref$length = _ref.length, + length = _ref$length === void 0 ? 1 : _ref$length, + _ref$headSize = _ref.headSize, + headSize = _ref$headSize === void 0 ? 0.2 : _ref$headSize, + _ref$tailWidth = _ref.tailWidth, + tailWidth = _ref$tailWidth === void 0 ? 0.05 : _ref$tailWidth, + _ref$tailStart = _ref.tailStart, + tailStart = _ref$tailStart === void 0 ? 0.05 : _ref$tailStart; + var texCoords = [// HEAD + 0.5, 1.0, 0, 0.5 - headSize / 2, 1.0 - headSize, 0, 0.5 + headSize / 2, 1.0 - headSize, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, tailStart, 0, 0.5 - tailWidth / 2, 1.0 - headSize, 0, 0.5 + tailWidth / 2, 1.0 - headSize, 0]; + var normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]; // Center and scale + + var positions = new Array(texCoords.length); + + for (var i = 0; i < texCoords.length / 3; i++) { + var i3 = i * 3; + positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length; + positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length; + positions[i3 + 2] = 0; + } + + return { + positions: new Float32Array(positions), + normals: new Float32Array(normals), + texCoords: new Float32Array(texCoords) + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvYXJyb3ctMmQtZ2VvbWV0cnkudHMiXSwibmFtZXMiOlsiQXJyb3cyREdlb21ldHJ5Iiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImF0dHJpYnV0ZXMiLCJnZXRBcnJvd0F0dHJpYnV0ZXMiLCJHZW9tZXRyeSIsImxlbmd0aCIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwidGFpbFN0YXJ0IiwidGV4Q29vcmRzIiwibm9ybWFscyIsInBvc2l0aW9ucyIsIkFycmF5IiwiaSIsImkzIiwiRmxvYXQzMkFycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxlOzs7OztBQUNuQiw2QkFBdUI7QUFBQSxRQUFYQyxJQUFXLHVFQUFKLEVBQUk7O0FBQUE7O0FBQUEsNkJBRW5CQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCRixJQUFsQixFQUF3QjtBQUN0QkcsTUFBQUEsVUFBVSxFQUFFQyxrQkFBa0IsQ0FBQ0osSUFBRDtBQURSLEtBQXhCLENBRm1CO0FBTXRCOzs7RUFQMENLLGM7Ozs7QUFVN0MsU0FBU0Qsa0JBQVQsT0FBZ0c7QUFBQSx5QkFBbEVFLE1BQWtFO0FBQUEsTUFBbEVBLE1BQWtFLDRCQUF6RCxDQUF5RDtBQUFBLDJCQUF0REMsUUFBc0Q7QUFBQSxNQUF0REEsUUFBc0QsOEJBQTNDLEdBQTJDO0FBQUEsNEJBQXRDQyxTQUFzQztBQUFBLE1BQXRDQSxTQUFzQywrQkFBMUIsSUFBMEI7QUFBQSw0QkFBcEJDLFNBQW9CO0FBQUEsTUFBcEJBLFNBQW9CLCtCQUFSLElBQVE7QUFDOUYsTUFBTUMsU0FBUyxHQUFHLENBQ2hCO0FBQ0EsS0FGZ0IsRUFHaEIsR0FIZ0IsRUFJaEIsQ0FKZ0IsRUFLaEIsTUFBTUgsUUFBUSxHQUFHLENBTEQsRUFNaEIsTUFBTUEsUUFOVSxFQU9oQixDQVBnQixFQVFoQixNQUFNQSxRQUFRLEdBQUcsQ0FSRCxFQVNoQixNQUFNQSxRQVRVLEVBVWhCLENBVmdCLEVBV2hCLE1BQU1DLFNBQVMsR0FBRyxDQVhGLEVBWWhCQyxTQVpnQixFQWFoQixDQWJnQixFQWNoQixNQUFNRCxTQUFTLEdBQUcsQ0FkRixFQWVoQixNQUFNRCxRQWZVLEVBZ0JoQixDQWhCZ0IsRUFpQmhCLE1BQU1DLFNBQVMsR0FBRyxDQWpCRixFQWtCaEJDLFNBbEJnQixFQW1CaEIsQ0FuQmdCLEVBb0JoQixNQUFNRCxTQUFTLEdBQUcsQ0FwQkYsRUFxQmhCQyxTQXJCZ0IsRUFzQmhCLENBdEJnQixFQXVCaEIsTUFBTUQsU0FBUyxHQUFHLENBdkJGLEVBd0JoQixNQUFNRCxRQXhCVSxFQXlCaEIsQ0F6QmdCLEVBMEJoQixNQUFNQyxTQUFTLEdBQUcsQ0ExQkYsRUEyQmhCLE1BQU1ELFFBM0JVLEVBNEJoQixDQTVCZ0IsQ0FBbEI7QUErQkEsTUFBTUksT0FBTyxHQUFHLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsQ0FBVixFQUFhLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsRUFBc0IsQ0FBdEIsRUFBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUMsQ0FBckMsRUFBd0MsQ0FBeEMsRUFBMkMsQ0FBM0MsRUFBOEMsQ0FBOUMsRUFBaUQsQ0FBakQsRUFBb0QsQ0FBcEQsRUFBdUQsQ0FBdkQsRUFBMEQsQ0FBMUQsRUFBNkQsQ0FBN0QsRUFBZ0UsQ0FBaEUsRUFBbUUsQ0FBbkUsRUFBc0UsQ0FBdEUsRUFBeUUsQ0FBekUsRUFBNEUsQ0FBNUUsRUFBK0UsQ0FBL0UsQ0FBaEIsQ0FoQzhGLENBa0M5Rjs7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsS0FBSixDQUFVSCxTQUFTLENBQUNKLE1BQXBCLENBQWxCOztBQUNBLE9BQUssSUFBSVEsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osU0FBUyxDQUFDSixNQUFWLEdBQW1CLENBQXZDLEVBQTBDUSxDQUFDLEVBQTNDLEVBQStDO0FBQzdDLFFBQU1DLEVBQUUsR0FBR0QsQ0FBQyxHQUFHLENBQWY7QUFDQUYsSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQUNMLFNBQVMsQ0FBQ0ssRUFBRSxHQUFHLENBQU4sQ0FBVCxHQUFvQixHQUFyQixJQUE0QlQsTUFBaEQ7QUFDQU0sSUFBQUEsU0FBUyxDQUFDRyxFQUFFLEdBQUcsQ0FBTixDQUFULEdBQW9CLENBQXBCO0FBQ0Q7O0FBQ0QsU0FBTztBQUNMSCxJQUFBQSxTQUFTLEVBQUUsSUFBSUksWUFBSixDQUFpQkosU0FBakIsQ0FETjtBQUVMRCxJQUFBQSxPQUFPLEVBQUUsSUFBSUssWUFBSixDQUFpQkwsT0FBakIsQ0FGSjtBQUdMRCxJQUFBQSxTQUFTLEVBQUUsSUFBSU0sWUFBSixDQUFpQk4sU0FBakI7QUFITixHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcnJvdzJER2VvbWV0cnkgZXh0ZW5kcyBHZW9tZXRyeSB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKFxuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgb3B0cywge1xuICAgICAgICBhdHRyaWJ1dGVzOiBnZXRBcnJvd0F0dHJpYnV0ZXMob3B0cyksXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyb3dBdHRyaWJ1dGVzKHsgbGVuZ3RoID0gMSwgaGVhZFNpemUgPSAwLjIsIHRhaWxXaWR0aCA9IDAuMDUsIHRhaWxTdGFydCA9IDAuMDUgfSkge1xuICBjb25zdCB0ZXhDb29yZHMgPSBbXG4gICAgLy8gSEVBRFxuICAgIDAuNSxcbiAgICAxLjAsXG4gICAgMCxcbiAgICAwLjUgLSBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyBoZWFkU2l6ZSAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgLSB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgICAwLjUgKyB0YWlsV2lkdGggLyAyLFxuICAgIHRhaWxTdGFydCxcbiAgICAwLFxuICAgIDAuNSAtIHRhaWxXaWR0aCAvIDIsXG4gICAgdGFpbFN0YXJ0LFxuICAgIDAsXG4gICAgMC41IC0gdGFpbFdpZHRoIC8gMixcbiAgICAxLjAgLSBoZWFkU2l6ZSxcbiAgICAwLFxuICAgIDAuNSArIHRhaWxXaWR0aCAvIDIsXG4gICAgMS4wIC0gaGVhZFNpemUsXG4gICAgMCxcbiAgXTtcblxuICBjb25zdCBub3JtYWxzID0gWzAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDAsIDAsIDFdO1xuXG4gIC8vIENlbnRlciBhbmQgc2NhbGVcbiAgY29uc3QgcG9zaXRpb25zID0gbmV3IEFycmF5KHRleENvb3Jkcy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleENvb3Jkcy5sZW5ndGggLyAzOyBpKyspIHtcbiAgICBjb25zdCBpMyA9IGkgKiAzO1xuICAgIHBvc2l0aW9uc1tpMyArIDBdID0gKHRleENvb3Jkc1tpMyArIDBdIC0gMC41KSAqIGxlbmd0aDtcbiAgICBwb3NpdGlvbnNbaTMgKyAxXSA9ICh0ZXhDb29yZHNbaTMgKyAxXSAtIDAuNSkgKiBsZW5ndGg7XG4gICAgcG9zaXRpb25zW2kzICsgMl0gPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG4gICAgbm9ybWFsczogbmV3IEZsb2F0MzJBcnJheShub3JtYWxzKSxcbiAgICB0ZXhDb29yZHM6IG5ldyBGbG9hdDMyQXJyYXkodGV4Q29vcmRzKSxcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/layers/path-marker-layer/create-path-markers.js b/modules/layers/dist/layers/path-marker-layer/create-path-markers.js new file mode 100644 index 000000000..5c5f13bc3 --- /dev/null +++ b/modules/layers/dist/layers/path-marker-layer/create-path-markers.js @@ -0,0 +1,156 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = createPathMarkers; + +var _math = require("math.gl"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function getLineLength(vPoints) { + // calculate total length + var lineLength = 0; + + for (var i = 0; i < vPoints.length - 1; i++) { + lineLength += vPoints[i].distance(vPoints[i + 1]); + } + + return lineLength; +} + +var DEFAULT_COLOR = [0, 0, 0, 255]; +var DEFAULT_DIRECTION = { + forward: true, + backward: false +}; + +function createPathMarkers(_ref) { + var data = _ref.data, + _ref$getPath = _ref.getPath, + getPath = _ref$getPath === void 0 ? function (x) { + return x.path; + } : _ref$getPath, + _ref$getDirection = _ref.getDirection, + getDirection = _ref$getDirection === void 0 ? function (x) { + return x.direction; + } : _ref$getDirection, + _ref$getColor = _ref.getColor, + getColor = _ref$getColor === void 0 ? function (x) { + return DEFAULT_COLOR; + } : _ref$getColor, + _ref$getMarkerPercent = _ref.getMarkerPercentages, + getMarkerPercentages = _ref$getMarkerPercent === void 0 ? function (x) { + return [0.5]; + } : _ref$getMarkerPercent, + projectFlat = _ref.projectFlat; + var markers = []; + + var _iterator = _createForOfIteratorHelper(data), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var object = _step.value; + var path = getPath(object); + var direction = getDirection(object) || DEFAULT_DIRECTION; + var color = getColor(object); + var vPoints = path.map(function (p) { + return new _math.Vector2(p); + }); + var vPointsReverse = vPoints.slice(0).reverse(); // calculate total length + + var lineLength = getLineLength(vPoints); // Ask for where to put markers + // @ts-ignore + + var percentages = getMarkerPercentages(object, { + lineLength: lineLength + }); // Create the markers + + var _iterator2 = _createForOfIteratorHelper(percentages), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var percentage = _step2.value; + + if (direction.forward) { + var marker = createMarkerAlongPath({ + path: vPoints, + percentage: percentage, + lineLength: lineLength, + color: color, + object: object, + projectFlat: projectFlat + }); + markers.push(marker); + } + + if (direction.backward) { + var _marker = createMarkerAlongPath({ + path: vPointsReverse, + percentage: percentage, + lineLength: lineLength, + color: color, + object: object, + projectFlat: projectFlat + }); + + markers.push(_marker); + } + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return markers; +} + +function createMarkerAlongPath(_ref2) { + var path = _ref2.path, + percentage = _ref2.percentage, + lineLength = _ref2.lineLength, + color = _ref2.color, + object = _ref2.object, + projectFlat = _ref2.projectFlat; + var distanceAlong = lineLength * percentage; + var currentDistance = 0; + var previousDistance = 0; + var i = 0; + + for (i = 0; i < path.length - 1; i++) { + currentDistance += path[i].distance(path[i + 1]); + + if (currentDistance > distanceAlong) { + break; + } + + previousDistance = currentDistance; + } + + var vDirection = path[i + 1].clone().subtract(path[i]).normalize(); + var along = distanceAlong - previousDistance; + var vCenter = vDirection.clone().multiply(new _math.Vector2(along, along)).add(path[i]); + var vDirection2 = new _math.Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i])); + var angle = vDirection2.verticalAngle() * 180 / Math.PI; + return { + position: [vCenter.x, vCenter.y, 0], + angle: angle, + color: color, + object: object + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvY3JlYXRlLXBhdGgtbWFya2Vycy50cyJdLCJuYW1lcyI6WyJnZXRMaW5lTGVuZ3RoIiwidlBvaW50cyIsImxpbmVMZW5ndGgiLCJpIiwibGVuZ3RoIiwiZGlzdGFuY2UiLCJERUZBVUxUX0NPTE9SIiwiREVGQVVMVF9ESVJFQ1RJT04iLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJjcmVhdGVQYXRoTWFya2VycyIsImRhdGEiLCJnZXRQYXRoIiwieCIsInBhdGgiLCJnZXREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRDb2xvciIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwicHJvamVjdEZsYXQiLCJtYXJrZXJzIiwib2JqZWN0IiwiY29sb3IiLCJtYXAiLCJwIiwiVmVjdG9yMiIsInZQb2ludHNSZXZlcnNlIiwic2xpY2UiLCJyZXZlcnNlIiwicGVyY2VudGFnZXMiLCJwZXJjZW50YWdlIiwibWFya2VyIiwiY3JlYXRlTWFya2VyQWxvbmdQYXRoIiwicHVzaCIsImRpc3RhbmNlQWxvbmciLCJjdXJyZW50RGlzdGFuY2UiLCJwcmV2aW91c0Rpc3RhbmNlIiwidkRpcmVjdGlvbiIsImNsb25lIiwic3VidHJhY3QiLCJub3JtYWxpemUiLCJhbG9uZyIsInZDZW50ZXIiLCJtdWx0aXBseSIsImFkZCIsInZEaXJlY3Rpb24yIiwiYW5nbGUiLCJ2ZXJ0aWNhbEFuZ2xlIiwiTWF0aCIsIlBJIiwicG9zaXRpb24iLCJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0M7QUFDOUI7QUFDQSxNQUFJQyxVQUFVLEdBQUcsQ0FBakI7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixPQUFPLENBQUNHLE1BQVIsR0FBaUIsQ0FBckMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7QUFDM0NELElBQUFB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R0FBRyxDQUFMLENBQUosQ0FBWW1DLEtBQVosR0FBb0JDLFFBQXBCLENBQTZCekIsSUFBSSxDQUFDWCxDQUFELENBQWpDLEVBQXNDcUMsU0FBdEMsRUFBbkI7QUFDQSxNQUFNQyxLQUFLLEdBQUdQLGFBQWEsR0FBR0UsZ0JBQTlCO0FBQ0EsTUFBTU0sT0FBTyxHQUFHTCxVQUFVLENBQUNDLEtBQVgsR0FBbUJLLFFBQW5CLENBQTRCLElBQUlsQixhQUFKLENBQVlnQixLQUFaLEVBQW1CQSxLQUFuQixDQUE1QixFQUF1REcsR0FBdkQsQ0FBMkQ5QixJQUFJLENBQUNYLENBQUQsQ0FBL0QsQ0FBaEI7QUFFQSxNQUFNMEMsV0FBVyxHQUFHLElBQUlwQixhQUFKLENBQVlOLFdBQVcsQ0FBQ0wsSUFBSSxDQUFDWCxDQUFDLEdBQUcsQ0FBTCxDQUFMLENBQXZCLEVBQXNDb0MsUUFBdEMsQ0FBK0NwQixXQUFXLENBQUNMLElBQUksQ0FBQ1gsQ0FBRCxDQUFMLENBQTFELENBQXBCO0FBRUEsTUFBTTJDLEtBQUssR0FBSUQsV0FBVyxDQUFDRSxhQUFaLEtBQThCLEdBQS9CLEdBQXNDQyxJQUFJLENBQUNDLEVBQXpEO0FBRUEsU0FBTztBQUFFQyxJQUFBQSxRQUFRLEVBQUUsQ0FBQ1IsT0FBTyxDQUFDN0IsQ0FBVCxFQUFZNkIsT0FBTyxDQUFDUyxDQUFwQixFQUF1QixDQUF2QixDQUFaO0FBQXVDTCxJQUFBQSxLQUFLLEVBQUxBLEtBQXZDO0FBQThDeEIsSUFBQUEsS0FBSyxFQUFMQSxLQUE5QztBQUFxREQsSUFBQUEsTUFBTSxFQUFOQTtBQUFyRCxHQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWN0b3IyIH0gZnJvbSAnbWF0aC5nbCc7XG5cbmZ1bmN0aW9uIGdldExpbmVMZW5ndGgodlBvaW50cykge1xuICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoXG4gIGxldCBsaW5lTGVuZ3RoID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2UG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIGxpbmVMZW5ndGggKz0gdlBvaW50c1tpXS5kaXN0YW5jZSh2UG9pbnRzW2kgKyAxXSk7XG4gIH1cbiAgcmV0dXJuIGxpbmVMZW5ndGg7XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1IgPSBbMCwgMCwgMCwgMjU1XTtcbmNvbnN0IERFRkFVTFRfRElSRUNUSU9OID0geyBmb3J3YXJkOiB0cnVlLCBiYWNrd2FyZDogZmFsc2UgfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICBkYXRhLFxuICBnZXRQYXRoID0gKHgpID0+IHgucGF0aCxcbiAgZ2V0RGlyZWN0aW9uID0gKHgpID0+IHguZGlyZWN0aW9uLFxuICBnZXRDb2xvciA9ICh4KSA9PiBERUZBVUxUX0NPTE9SLFxuICBnZXRNYXJrZXJQZXJjZW50YWdlcyA9ICh4KSA9PiBbMC41XSxcbiAgcHJvamVjdEZsYXQsXG59KSB7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IG9iamVjdCBvZiBkYXRhKSB7XG4gICAgY29uc3QgcGF0aCA9IGdldFBhdGgob2JqZWN0KTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24ob2JqZWN0KSB8fCBERUZBVUxUX0RJUkVDVElPTjtcbiAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKG9iamVjdCk7XG5cbiAgICBjb25zdCB2UG9pbnRzID0gcGF0aC5tYXAoKHApID0+IG5ldyBWZWN0b3IyKHApKTtcbiAgICBjb25zdCB2UG9pbnRzUmV2ZXJzZSA9IHZQb2ludHMuc2xpY2UoMCkucmV2ZXJzZSgpO1xuXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIGxlbmd0aFxuICAgIGNvbnN0IGxpbmVMZW5ndGggPSBnZXRMaW5lTGVuZ3RoKHZQb2ludHMpO1xuXG4gICAgLy8gQXNrIGZvciB3aGVyZSB0byBwdXQgbWFya2Vyc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBwZXJjZW50YWdlcyA9IGdldE1hcmtlclBlcmNlbnRhZ2VzKG9iamVjdCwgeyBsaW5lTGVuZ3RoIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBtYXJrZXJzXG4gICAgZm9yIChjb25zdCBwZXJjZW50YWdlIG9mIHBlcmNlbnRhZ2VzKSB7XG4gICAgICBpZiAoZGlyZWN0aW9uLmZvcndhcmQpIHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHtcbiAgICAgICAgICBwYXRoOiB2UG9pbnRzLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpcmVjdGlvbi5iYWNrd2FyZCkge1xuICAgICAgICBjb25zdCBtYXJrZXIgPSBjcmVhdGVNYXJrZXJBbG9uZ1BhdGgoe1xuICAgICAgICAgIHBhdGg6IHZQb2ludHNSZXZlcnNlLFxuICAgICAgICAgIHBlcmNlbnRhZ2UsXG4gICAgICAgICAgbGluZUxlbmd0aCxcbiAgICAgICAgICBjb2xvcixcbiAgICAgICAgICBvYmplY3QsXG4gICAgICAgICAgcHJvamVjdEZsYXQsXG4gICAgICAgIH0pO1xuICAgICAgICBtYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFya2Vycztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWFya2VyQWxvbmdQYXRoKHsgcGF0aCwgcGVyY2VudGFnZSwgbGluZUxlbmd0aCwgY29sb3IsIG9iamVjdCwgcHJvamVjdEZsYXQgfSkge1xuICBjb25zdCBkaXN0YW5jZUFsb25nID0gbGluZUxlbmd0aCAqIHBlcmNlbnRhZ2U7XG4gIGxldCBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICBsZXQgcHJldmlvdXNEaXN0YW5jZSA9IDA7XG4gIGxldCBpID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgY3VycmVudERpc3RhbmNlICs9IHBhdGhbaV0uZGlzdGFuY2UocGF0aFtpICsgMV0pO1xuICAgIGlmIChjdXJyZW50RGlzdGFuY2UgPiBkaXN0YW5jZUFsb25nKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldmlvdXNEaXN0YW5jZSA9IGN1cnJlbnREaXN0YW5jZTtcbiAgfVxuXG4gIGNvbnN0IHZEaXJlY3Rpb24gPSBwYXRoW2kgKyAxXS5jbG9uZSgpLnN1YnRyYWN0KHBhdGhbaV0pLm5vcm1hbGl6ZSgpO1xuICBjb25zdCBhbG9uZyA9IGRpc3RhbmNlQWxvbmcgLSBwcmV2aW91c0Rpc3RhbmNlO1xuICBjb25zdCB2Q2VudGVyID0gdkRpcmVjdGlvbi5jbG9uZSgpLm11bHRpcGx5KG5ldyBWZWN0b3IyKGFsb25nLCBhbG9uZykpLmFkZChwYXRoW2ldKTtcblxuICBjb25zdCB2RGlyZWN0aW9uMiA9IG5ldyBWZWN0b3IyKHByb2plY3RGbGF0KHBhdGhbaSArIDFdKSkuc3VidHJhY3QocHJvamVjdEZsYXQocGF0aFtpXSkpO1xuXG4gIGNvbnN0IGFuZ2xlID0gKHZEaXJlY3Rpb24yLnZlcnRpY2FsQW5nbGUoKSAqIDE4MCkgLyBNYXRoLlBJO1xuXG4gIHJldHVybiB7IHBvc2l0aW9uOiBbdkNlbnRlci54LCB2Q2VudGVyLnksIDBdLCBhbmdsZSwgY29sb3IsIG9iamVjdCB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/layers/path-marker-layer/path-marker-layer.js b/modules/layers/dist/layers/path-marker-layer/path-marker-layer.js new file mode 100644 index 000000000..6d53e0bd2 --- /dev/null +++ b/modules/layers/dist/layers/path-marker-layer/path-marker-layer.js @@ -0,0 +1,265 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +var _meshLayers = require("@deck.gl/mesh-layers"); + +var _pathOutlineLayer = _interopRequireDefault(require("../path-outline-layer/path-outline-layer")); + +var _arrow2dGeometry = _interopRequireDefault(require("./arrow-2d-geometry")); + +var _createPathMarkers = _interopRequireDefault(require("./create-path-markers")); + +var _polyline = require("./polyline"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 DISTANCE_FOR_MULTI_ARROWS = 0.1; +var ARROW_HEAD_SIZE = 0.2; +var ARROW_TAIL_WIDTH = 0.05; // const ARROW_CENTER_ADJUST = -0.8; + +var DEFAULT_MARKER_LAYER = _meshLayers.SimpleMeshLayer; +var DEFAULT_MARKER_LAYER_PROPS = { + mesh: new _arrow2dGeometry["default"]({ + headSize: ARROW_HEAD_SIZE, + tailWidth: ARROW_TAIL_WIDTH + }) +}; +var defaultProps = Object.assign({}, _pathOutlineLayer["default"].defaultProps, { + MarkerLayer: DEFAULT_MARKER_LAYER, + markerLayerProps: DEFAULT_MARKER_LAYER_PROPS, + sizeScale: 100, + fp64: false, + hightlightIndex: -1, + highlightPoint: null, + getPath: function getPath(x) { + return x.path; + }, + getColor: function getColor(x) { + return x.color; + }, + getMarkerColor: function getMarkerColor(x) { + return [0, 0, 0, 255]; + }, + getDirection: function getDirection(x) { + return x.direction; + }, + getMarkerPercentages: function getMarkerPercentages(object, _ref) { + var lineLength = _ref.lineLength; + return lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5]; + } +}); + +var PathMarkerLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(PathMarkerLayer, _CompositeLayer); + + var _super = _createSuper(PathMarkerLayer); + + function PathMarkerLayer() { + _classCallCheck(this, PathMarkerLayer); + + return _super.apply(this, arguments); + } + + _createClass(PathMarkerLayer, [{ + key: "initializeState", + value: function initializeState() { + this.state = { + markers: [], + mesh: new _arrow2dGeometry["default"]({ + headSize: ARROW_HEAD_SIZE, + tailWidth: ARROW_TAIL_WIDTH + }), + closestPoint: null + }; + } // @ts-ignore + + }, { + key: "projectFlat", + value: function projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) { + if (coordinateSystem === _core.COORDINATE_SYSTEM.METER_OFFSETS) { + var _viewport$metersToLng = viewport.metersToLngLatDelta(xyz), + _viewport$metersToLng2 = _slicedToArray(_viewport$metersToLng, 2), + dx = _viewport$metersToLng2[0], + dy = _viewport$metersToLng2[1]; + + var _coordinateOrigin = _slicedToArray(coordinateOrigin, 2), + x = _coordinateOrigin[0], + y = _coordinateOrigin[1]; + + return viewport.projectFlat([x + dx, dy + y]); + } else if (coordinateSystem === _core.COORDINATE_SYSTEM.LNGLAT_OFFSETS) { + var _xyz = _slicedToArray(xyz, 2), + _dx = _xyz[0], + _dy = _xyz[1]; + + var _coordinateOrigin2 = _slicedToArray(coordinateOrigin, 2), + _x = _coordinateOrigin2[0], + _y = _coordinateOrigin2[1]; + + return viewport.projectFlat([_x + _dx, _dy + _y]); + } + + return viewport.projectFlat(xyz); + } + }, { + key: "updateState", + value: function updateState(_ref2) { + var _this = this; + + var props = _ref2.props, + oldProps = _ref2.oldProps, + changeFlags = _ref2.changeFlags; + + if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) { + var _this$props = this.props, + data = _this$props.data, + getPath = _this$props.getPath, + getDirection = _this$props.getDirection, + getMarkerColor = _this$props.getMarkerColor, + getMarkerPercentages = _this$props.getMarkerPercentages, + coordinateSystem = _this$props.coordinateSystem, + coordinateOrigin = _this$props.coordinateOrigin; // @ts-ignore + + var viewport = this.context.viewport; + + var projectFlat = function projectFlat(o) { + return _this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin); + }; + + this.state.markers = (0, _createPathMarkers["default"])({ + data: data, + getPath: getPath, + getDirection: getDirection, + getColor: getMarkerColor, + getMarkerPercentages: getMarkerPercentages, + projectFlat: projectFlat + }); + + this._recalculateClosestPoint(); + } + + if (changeFlags.propsChanged) { + if (props.point !== oldProps.point) { + this._recalculateClosestPoint(); + } + } + } + }, { + key: "_recalculateClosestPoint", + value: function _recalculateClosestPoint() { + var _this$props2 = this.props, + highlightPoint = _this$props2.highlightPoint, + highlightIndex = _this$props2.highlightIndex; + + if (highlightPoint && highlightIndex >= 0) { + var object = this.props.data[highlightIndex]; + var points = this.props.getPath(object); + + var _getClosestPointOnPol = (0, _polyline.getClosestPointOnPolyline)({ + points: points, + p: highlightPoint + }), + point = _getClosestPointOnPol.point; + + this.state.closestPoints = [{ + position: point + }]; + } else { + this.state.closestPoints = []; + } + } + }, { + key: "getPickingInfo", + value: function getPickingInfo(_ref3) { + var info = _ref3.info; + return Object.assign(info, { + // override object with picked feature + object: info.object && info.object.path || info.object + }); + } + }, { + key: "renderLayers", + value: function renderLayers() { + return [new _pathOutlineLayer["default"](this.props, // @ts-ignore + this.getSubLayerProps({ + id: 'paths', + // Note: data has to be passed explicitly like this to avoid being empty + data: this.props.data + })), new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, { + id: 'markers', + data: this.state.markers, + getOrientation: function getOrientation(x) { + return [0, -x.angle, 0]; + }, + getColor: function getColor(x) { + return x.color; + }, + sizeScale: this.props.sizeScale, + fp64: this.props.fp64, + pickable: false, + parameters: { + blend: false, + depthTest: false + } + }))), this.state.closestPoints && new _layers.ScatterplotLayer({ + id: "".concat(this.props.id, "-highlight"), + data: this.state.closestPoints, + // @ts-ignore + fp64: this.props.fp64 + })]; + } + }]); + + return PathMarkerLayer; +}(_core.CompositeLayer); + +exports["default"] = PathMarkerLayer; + +_defineProperty(PathMarkerLayer, "layerName", 'PathMarkerLayer'); + +_defineProperty(PathMarkerLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcGF0aC1tYXJrZXItbGF5ZXIudHMiXSwibmFtZXMiOlsiRElTVEFOQ0VfRk9SX01VTFRJX0FSUk9XUyIsIkFSUk9XX0hFQURfU0laRSIsIkFSUk9XX1RBSUxfV0lEVEgiLCJERUZBVUxUX01BUktFUl9MQVlFUiIsIlNpbXBsZU1lc2hMYXllciIsIkRFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTIiwibWVzaCIsIkFycm93MkRHZW9tZXRyeSIsImhlYWRTaXplIiwidGFpbFdpZHRoIiwiZGVmYXVsdFByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiUGF0aE91dGxpbmVMYXllciIsIk1hcmtlckxheWVyIiwibWFya2VyTGF5ZXJQcm9wcyIsInNpemVTY2FsZSIsImZwNjQiLCJoaWdodGxpZ2h0SW5kZXgiLCJoaWdobGlnaHRQb2ludCIsImdldFBhdGgiLCJ4IiwicGF0aCIsImdldENvbG9yIiwiY29sb3IiLCJnZXRNYXJrZXJDb2xvciIsImdldERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImdldE1hcmtlclBlcmNlbnRhZ2VzIiwib2JqZWN0IiwibGluZUxlbmd0aCIsIlBhdGhNYXJrZXJMYXllciIsInN0YXRlIiwibWFya2VycyIsImNsb3Nlc3RQb2ludCIsInh5eiIsInZpZXdwb3J0IiwiY29vcmRpbmF0ZVN5c3RlbSIsImNvb3JkaW5hdGVPcmlnaW4iLCJDT09SRElOQVRFX1NZU1RFTSIsIk1FVEVSX09GRlNFVFMiLCJtZXRlcnNUb0xuZ0xhdERlbHRhIiwiZHgiLCJkeSIsInkiLCJwcm9qZWN0RmxhdCIsIkxOR0xBVF9PRkZTRVRTIiwicHJvcHMiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwiZGF0YUNoYW5nZWQiLCJ1cGRhdGVUcmlnZ2Vyc0NoYW5nZWQiLCJkYXRhIiwiY29udGV4dCIsIm8iLCJfcmVjYWxjdWxhdGVDbG9zZXN0UG9pbnQiLCJwcm9wc0NoYW5nZWQiLCJwb2ludCIsImhpZ2hsaWdodEluZGV4IiwicG9pbnRzIiwicCIsImNsb3Nlc3RQb2ludHMiLCJwb3NpdGlvbiIsImluZm8iLCJnZXRTdWJMYXllclByb3BzIiwiaWQiLCJnZXRPcmllbnRhdGlvbiIsImFuZ2xlIiwicGlja2FibGUiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJkZXB0aFRlc3QiLCJTY2F0dGVycGxvdExheWVyIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHLEdBQWxDO0FBQ0EsSUFBTUMsZUFBZSxHQUFHLEdBQXhCO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsSUFBekIsQyxDQUNBOztBQUVBLElBQU1DLG9CQUFvQixHQUFHQywyQkFBN0I7QUFFQSxJQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsSUFBSSxFQUFFLElBQUlDLDJCQUFKLENBQW9CO0FBQUVDLElBQUFBLFFBQVEsRUFBRVAsZUFBWjtBQUE2QlEsSUFBQUEsU0FBUyxFQUFFUDtBQUF4QyxHQUFwQjtBQUQyQixDQUFuQztBQUlBLElBQU1RLFlBQVksR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsNkJBQWlCSCxZQUFuQyxFQUFpRDtBQUNwRUksRUFBQUEsV0FBVyxFQUFFWCxvQkFEdUQ7QUFFcEVZLEVBQUFBLGdCQUFnQixFQUFFViwwQkFGa0Q7QUFJcEVXLEVBQUFBLFNBQVMsRUFBRSxHQUp5RDtBQUtwRUMsRUFBQUEsSUFBSSxFQUFFLEtBTDhEO0FBT3BFQyxFQUFBQSxlQUFlLEVBQUUsQ0FBQyxDQVBrRDtBQVFwRUMsRUFBQUEsY0FBYyxFQUFFLElBUm9EO0FBVXBFQyxFQUFBQSxPQUFPLEVBQUUsaUJBQUNDLENBQUQ7QUFBQSxXQUFPQSxDQUFDLENBQUNDLElBQVQ7QUFBQSxHQVYyRDtBQVdwRUMsRUFBQUEs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VDtBQUFBLFNBSm1DO0FBSzdDUixRQUFBQSxTQUFTLEVBQUUsS0FBSytCLEtBQUwsQ0FBVy9CLFNBTHVCO0FBTTdDQyxRQUFBQSxJQUFJLEVBQUUsS0FBSzhCLEtBQUwsQ0FBVzlCLElBTjRCO0FBTzdDbUQsUUFBQUEsUUFBUSxFQUFFLEtBUG1DO0FBUTdDQyxRQUFBQSxVQUFVLEVBQUU7QUFDVkMsVUFBQUEsS0FBSyxFQUFFLEtBREc7QUFFVkMsVUFBQUEsU0FBUyxFQUFFO0FBRkQ7QUFSaUMsT0FBL0MsQ0FERixDQURGLENBVkssRUEyQkwsS0FBS3ZDLEtBQUwsQ0FBVzZCLGFBQVgsSUFDRSxJQUFJVyx3QkFBSixDQUFxQjtBQUNuQlAsUUFBQUEsRUFBRSxZQUFLLEtBQUtsQixLQUFMLENBQVdrQixFQUFoQixlQURpQjtBQUVuQmIsUUFBQUEsSUFBSSxFQUFFLEtBQUtwQixLQUFMLENBQVc2QixhQUZFO0FBR25CO0FBQ0E1QyxRQUFBQSxJQUFJLEVBQUUsS0FBSzhCLEtBQUwsQ0FBVzlCO0FBSkUsT0FBckIsQ0E1QkcsQ0FBUDtBQW1DRDs7OztFQXBIMEN3RCxvQjs7OztnQkFBeEIxQyxlLGVBQ0EsaUI7O2dCQURBQSxlLGtCQUVHckIsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvc2l0ZUxheWVyLCBDT09SRElOQVRFX1NZU1RFTSB9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHsgU2NhdHRlcnBsb3RMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgeyBTaW1wbGVNZXNoTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQgUGF0aE91dGxpbmVMYXllciBmcm9tICcuLi9wYXRoLW91dGxpbmUtbGF5ZXIvcGF0aC1vdXRsaW5lLWxheWVyJztcbmltcG9ydCBBcnJvdzJER2VvbWV0cnkgZnJvbSAnLi9hcnJvdy0yZC1nZW9tZXRyeSc7XG5cbmltcG9ydCBjcmVhdGVQYXRoTWFya2VycyBmcm9tICcuL2NyZWF0ZS1wYXRoLW1hcmtlcnMnO1xuaW1wb3J0IHsgZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSB9IGZyb20gJy4vcG9seWxpbmUnO1xuXG5jb25zdCBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID0gMC4xO1xuY29uc3QgQVJST1dfSEVBRF9TSVpFID0gMC4yO1xuY29uc3QgQVJST1dfVEFJTF9XSURUSCA9IDAuMDU7XG4vLyBjb25zdCBBUlJPV19DRU5URVJfQURKVVNUID0gLTAuODtcblxuY29uc3QgREVGQVVMVF9NQVJLRVJfTEFZRVIgPSBTaW1wbGVNZXNoTGF5ZXI7XG5cbmNvbnN0IERFRkFVTFRfTUFSS0VSX0xBWUVSX1BST1BTID0ge1xuICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxufTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgUGF0aE91dGxpbmVMYXllci5kZWZhdWx0UHJvcHMsIHtcbiAgTWFya2VyTGF5ZXI6IERFRkFVTFRfTUFSS0VSX0xBWUVSLFxuICBtYXJrZXJMYXllclByb3BzOiBERUZBVUxUX01BUktFUl9MQVlFUl9QUk9QUyxcblxuICBzaXplU2NhbGU6IDEwMCxcbiAgZnA2NDogZmFsc2UsXG5cbiAgaGlnaHRsaWdodEluZGV4OiAtMSxcbiAgaGlnaGxpZ2h0UG9pbnQ6IG51bGwsXG5cbiAgZ2V0UGF0aDogKHgpID0+IHgucGF0aCxcbiAgZ2V0Q29sb3I6ICh4KSA9PiB4LmNvbG9yLFxuICBnZXRNYXJrZXJDb2xvcjogKHgpID0+IFswLCAwLCAwLCAyNTVdLFxuICBnZXREaXJlY3Rpb246ICh4KSA9PiB4LmRpcmVjdGlvbixcbiAgZ2V0TWFya2VyUGVyY2VudGFnZXM6IChvYmplY3QsIHsgbGluZUxlbmd0aCB9KSA9PlxuICAgIGxpbmVMZW5ndGggPiBESVNUQU5DRV9GT1JfTVVMVElfQVJST1dTID8gWzAuMjUsIDAuNSwgMC43NV0gOiBbMC41XSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoTWFya2VyTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoTWFya2VyTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbWFya2VyczogW10sXG4gICAgICBtZXNoOiBuZXcgQXJyb3cyREdlb21ldHJ5KHsgaGVhZFNpemU6IEFSUk9XX0hFQURfU0laRSwgdGFpbFdpZHRoOiBBUlJPV19UQUlMX1dJRFRIIH0pLFxuICAgICAgY2xvc2VzdFBvaW50OiBudWxsLFxuICAgIH07XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICBwcm9qZWN0RmxhdCh4eXosIHZpZXdwb3J0LCBjb29yZGluYXRlU3lzdGVtLCBjb29yZGluYXRlT3JpZ2luKSB7XG4gICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLk1FVEVSX09GRlNFVFMpIHtcbiAgICAgIGNvbnN0IFtkeCwgZHldID0gdmlld3BvcnQubWV0ZXJzVG9MbmdMYXREZWx0YSh4eXopO1xuICAgICAgY29uc3QgW3gsIHldID0gY29vcmRpbmF0ZU9yaWdpbjtcbiAgICAgIHJldHVybiB2aWV3cG9ydC5wcm9qZWN0RmxhdChbeCArIGR4LCBkeSArIHldKTtcbiAgICB9IGVsc2UgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT09IENPT1JESU5BVEVfU1lTVEVNLkxOR0xBVF9PRkZTRVRTKSB7XG4gICAgICBjb25zdCBbZHgsIGR5XSA9IHh5ejtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVPcmlnaW47XG4gICAgICByZXR1cm4gdmlld3BvcnQucHJvamVjdEZsYXQoW3ggKyBkeCwgZHkgKyB5XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXdwb3J0LnByb2plY3RGbGF0KHh5eik7XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7IHByb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3MgfSkge1xuICAgIGlmIChjaGFuZ2VGbGFncy5kYXRhQ2hhbmdlZCB8fCBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZ2V0UGF0aCxcbiAgICAgICAgZ2V0RGlyZWN0aW9uLFxuICAgICAgICBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIGNvb3JkaW5hdGVTeXN0ZW0sXG4gICAgICAgIGNvb3JkaW5hdGVPcmlnaW4sXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIGNvbnN0IHByb2plY3RGbGF0ID0gKG8pID0+IHRoaXMucHJvamVjdEZsYXQobywgdmlld3BvcnQsIGNvb3JkaW5hdGVTeXN0ZW0sIGNvb3JkaW5hdGVPcmlnaW4pO1xuICAgICAgdGhpcy5zdGF0ZS5tYXJrZXJzID0gY3JlYXRlUGF0aE1hcmtlcnMoe1xuICAgICAgICBkYXRhLFxuICAgICAgICBnZXRQYXRoLFxuICAgICAgICBnZXREaXJlY3Rpb24sXG4gICAgICAgIGdldENvbG9yOiBnZXRNYXJrZXJDb2xvcixcbiAgICAgICAgZ2V0TWFya2VyUGVyY2VudGFnZXMsXG4gICAgICAgIHByb2plY3RGbGF0LFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9yZWNhbGN1bGF0ZUNsb3Nlc3RQb2ludCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlRmxhZ3MucHJvcHNDaGFuZ2VkKSB7XG4gICAgICBpZiAocHJvcHMucG9pbnQgIT09IG9sZFByb3BzLnBvaW50KSB7XG4gICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX3JlY2FsY3VsYXRlQ2xvc2VzdFBvaW50KCkge1xuICAgIGNvbnN0IHsgaGlnaGxpZ2h0UG9pbnQsIGhpZ2hsaWdodEluZGV4IH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChoaWdobGlnaHRQb2ludCAmJiBoaWdobGlnaHRJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBvYmplY3QgPSB0aGlzLnByb3BzLmRhdGFbaGlnaGxpZ2h0SW5kZXhdO1xuICAgICAgY29uc3QgcG9pbnRzID0gdGhpcy5wcm9wcy5nZXRQYXRoKG9iamVjdCk7XG4gICAgICBjb25zdCB7IHBvaW50IH0gPSBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcG9pbnRzLCBwOiBoaWdobGlnaHRQb2ludCB9KTtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiBwb2ludCxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldFBpY2tpbmdJbmZvKHsgaW5mbyB9KSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaW5mbywge1xuICAgICAgLy8gb3ZlcnJpZGUgb2JqZWN0IHdpdGggcGlja2VkIGZlYXR1cmVcbiAgICAgIG9iamVjdDogKGluZm8ub2JqZWN0ICYmIGluZm8ub2JqZWN0LnBhdGgpIHx8IGluZm8ub2JqZWN0LFxuICAgIH0pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXJzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBuZXcgUGF0aE91dGxpbmVMYXllcihcbiAgICAgICAgdGhpcy5wcm9wcyxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiAncGF0aHMnLFxuICAgICAgICAgIC8vIE5vdGU6IGRhdGEgaGFzIHRvIGJlIHBhc3NlZCBleHBsaWNpdGx5IGxpa2UgdGhpcyB0byBhdm9pZCBiZWluZyBlbXB0eVxuICAgICAgICAgIGRhdGE6IHRoaXMucHJvcHMuZGF0YSxcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBuZXcgdGhpcy5wcm9wcy5NYXJrZXJMYXllcihcbiAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucHJvcHMubWFya2VyTGF5ZXJQcm9wcywge1xuICAgICAgICAgICAgaWQ6ICdtYXJrZXJzJyxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuc3RhdGUubWFya2VycyxcbiAgICAgICAgICAgIGdldE9yaWVudGF0aW9uOiAoeCkgPT4gWzAsIC14LmFuZ2xlLCAwXSxcbiAgICAgICAgICAgIGdldENvbG9yOiAoeCkgPT4geC5jb2xvcixcbiAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5wcm9wcy5zaXplU2NhbGUsXG4gICAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgICAgICBwaWNrYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICAgIGJsZW5kOiBmYWxzZSxcbiAgICAgICAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRoaXMuc3RhdGUuY2xvc2VzdFBvaW50cyAmJlxuICAgICAgICBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICAgICAgaWQ6IGAke3RoaXMucHJvcHMuaWR9LWhpZ2hsaWdodGAsXG4gICAgICAgICAgZGF0YTogdGhpcy5zdGF0ZS5jbG9zZXN0UG9pbnRzLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBmcDY0OiB0aGlzLnByb3BzLmZwNjQsXG4gICAgICAgIH0pLFxuICAgIF07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/layers/path-marker-layer/polyline.js b/modules/layers/dist/layers/path-marker-layer/polyline.js new file mode 100644 index 000000000..e570f973a --- /dev/null +++ b/modules/layers/dist/layers/path-marker-layer/polyline.js @@ -0,0 +1,65 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getClosestPointOnLine = getClosestPointOnLine; +exports.getClosestPointOnPolyline = getClosestPointOnPolyline; + +var _math = require("math.gl"); + +// Return the closest point on a line segment +function getClosestPointOnLine(_ref) { + var p = _ref.p, + p1 = _ref.p1, + p2 = _ref.p2, + _ref$clampToLine = _ref.clampToLine, + clampToLine = _ref$clampToLine === void 0 ? true : _ref$clampToLine; + var lineVector = new _math.Vector3(p2).subtract(p1); + var pointVector = new _math.Vector3(p).subtract(p1); + var dotProduct = lineVector.dot(pointVector); + + if (clampToLine) { + dotProduct = (0, _math.clamp)(dotProduct, 0, 1); + } // @ts-ignore + + + return lineVector.lerp(dotProduct); +} // Return the closest point on a line segment + + +function getClosestPointOnPolyline(_ref2) { + var p = _ref2.p, + points = _ref2.points; + p = new _math.Vector3(p); + var pClosest = null; + var distanceSquared = Infinity; + var index = -1; + + for (var i = 0; i < points.length - 1; ++i) { + var p1 = points[i]; + var p2 = points[i + 1]; + var pClosestOnLine = getClosestPointOnLine({ + p: p, + p1: p1, + p2: p2 + }); + var distanceToLineSquared = p.distanceSquared(pClosestOnLine); + + if (distanceToLineSquared < distanceSquared) { + distanceSquared = distanceToLineSquared; + pClosest = pClosestOnLine; + index = i; + } + } + + return { + point: pClosest, + index: index, + p1: points[index], + p2: points[index + 1], + distanceSquared: distanceSquared, + distance: Math.sqrt(distanceSquared) + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1tYXJrZXItbGF5ZXIvcG9seWxpbmUudHMiXSwibmFtZXMiOlsiZ2V0Q2xvc2VzdFBvaW50T25MaW5lIiwicCIsInAxIiwicDIiLCJjbGFtcFRvTGluZSIsImxpbmVWZWN0b3IiLCJWZWN0b3IzIiwic3VidHJhY3QiLCJwb2ludFZlY3RvciIsImRvdFByb2R1Y3QiLCJkb3QiLCJsZXJwIiwiZ2V0Q2xvc2VzdFBvaW50T25Qb2x5bGluZSIsInBvaW50cyIsInBDbG9zZXN0IiwiZGlzdGFuY2VTcXVhcmVkIiwiSW5maW5pdHkiLCJpbmRleCIsImkiLCJsZW5ndGgiLCJwQ2xvc2VzdE9uTGluZSIsImRpc3RhbmNlVG9MaW5lU3F1YXJlZCIsInBvaW50IiwiZGlzdGFuY2UiLCJNYXRoIiwic3FydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFFQTtBQUNPLFNBQVNBLHFCQUFULE9BQWtFO0FBQUEsTUFBakNDLENBQWlDLFFBQWpDQSxDQUFpQztBQUFBLE1BQTlCQyxFQUE4QixRQUE5QkEsRUFBOEI7QUFBQSxNQUExQkMsRUFBMEIsUUFBMUJBLEVBQTBCO0FBQUEsOEJBQXRCQyxXQUFzQjtBQUFBLE1BQXRCQSxXQUFzQixpQ0FBUixJQUFRO0FBQ3ZFLE1BQU1DLFVBQVUsR0FBRyxJQUFJQyxhQUFKLENBQVlILEVBQVosRUFBZ0JJLFFBQWhCLENBQXlCTCxFQUF6QixDQUFuQjtBQUNBLE1BQU1NLFdBQVcsR0FBRyxJQUFJRixhQUFKLENBQVlMLENBQVosRUFBZU0sUUFBZixDQUF3QkwsRUFBeEIsQ0FBcEI7QUFDQSxNQUFJTyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssR0FBWCxDQUFlRixXQUFmLENBQWpCOztBQUNBLE1BQUlKLFdBQUosRUFBaUI7QUFDZkssSUFBQUEsVUFBVSxHQUFHLGlCQUFNQSxVQUFOLEVBQWtCLENBQWxCLEVBQXFCLENBQXJCLENBQWI7QUFDRCxHQU5zRSxDQU92RTs7O0FBQ0EsU0FBT0osVUFBVSxDQUFDTSxJQUFYLENBQWdCRixVQUFoQixDQUFQO0FBQ0QsQyxDQUVEOzs7QUFDTyxTQUFTRyx5QkFBVCxRQUFrRDtBQUFBLE1BQWJYLENBQWEsU0FBYkEsQ0FBYTtBQUFBLE1BQVZZLE1BQVUsU0FBVkEsTUFBVTtBQUN2RFosRUFBQUEsQ0FBQyxHQUFHLElBQUlLLGFBQUosQ0FBWUwsQ0FBWixDQUFKO0FBQ0EsTUFBSWEsUUFBUSxHQUFHLElBQWY7QUFDQSxNQUFJQyxlQUFlLEdBQUdDLFFBQXRCO0FBQ0EsTUFBSUMsS0FBSyxHQUFHLENBQUMsQ0FBYjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdMLE1BQU0sQ0FBQ00sTUFBUCxHQUFnQixDQUFwQyxFQUF1QyxFQUFFRCxDQUF6QyxFQUE0QztBQUMxQyxRQUFNaEIsRUFBRSxHQUFHVyxNQUFNLENBQUNLLENBQUQsQ0FBakI7QUFDQSxRQUFNZixFQUFFLEdBQUdVLE1BQU0sQ0FBQ0ssQ0FBQyxHQUFHLENBQUwsQ0FBakI7QUFDQSxRQUFNRSxjQUFjLEdBQUdwQixxQkFBcUIsQ0FBQztBQUFFQyxNQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsTUFBQUEsRUFBRSxFQUFGQSxFQUFMO0FBQVNDLE1BQUFBLEVBQUUsRUFBRkE7QUFBVCxLQUFELENBQTVDO0FBQ0EsUUFBTWtCLHFCQUFxQixHQUFHcEIsQ0FBQyxDQUFDYyxlQUFGLENBQWtCSyxjQUFsQixDQUE5Qjs7QUFDQSxRQUFJQyxxQkFBcUIsR0FBR04sZUFBNUIsRUFBNkM7QUFDM0NBLE1BQUFBLGVBQWUsR0FBR00scUJBQWxCO0FBQ0FQLE1BQUFBLFFBQVEsR0FBR00sY0FBWDtBQUNBSCxNQUFBQSxLQUFLLEdBQUdDLENBQVI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTEksSUFBQUEsS0FBSyxFQUFFUixRQURGO0FBRUxHLElBQUFBLEtBQUssRUFBTEEsS0FGSztBQUdMZixJQUFBQSxFQUFFLEVBQUVXLE1BQU0sQ0FBQ0ksS0FBRCxDQUhMO0FBSUxkLElBQUFBLEVBQUUsRUFBRVUsTUFBTSxDQUFDSSxLQUFLLEdBQUcsQ0FBVCxDQUpMO0FBS0xGLElBQUFBLGVBQWUsRUFBZkEsZUFMSztBQU1MUSxJQUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVVixlQUFWO0FBTkwsR0FBUDtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVjdG9yMywgY2xhbXAgfSBmcm9tICdtYXRoLmdsJztcblxuLy8gUmV0dXJuIHRoZSBjbG9zZXN0IHBvaW50IG9uIGEgbGluZSBzZWdtZW50XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xvc2VzdFBvaW50T25MaW5lKHsgcCwgcDEsIHAyLCBjbGFtcFRvTGluZSA9IHRydWUgfSkge1xuICBjb25zdCBsaW5lVmVjdG9yID0gbmV3IFZlY3RvcjMocDIpLnN1YnRyYWN0KHAxKTtcbiAgY29uc3QgcG9pbnRWZWN0b3IgPSBuZXcgVmVjdG9yMyhwKS5zdWJ0cmFjdChwMSk7XG4gIGxldCBkb3RQcm9kdWN0ID0gbGluZVZlY3Rvci5kb3QocG9pbnRWZWN0b3IpO1xuICBpZiAoY2xhbXBUb0xpbmUpIHtcbiAgICBkb3RQcm9kdWN0ID0gY2xhbXAoZG90UHJvZHVjdCwgMCwgMSk7XG4gIH1cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gbGluZVZlY3Rvci5sZXJwKGRvdFByb2R1Y3QpO1xufVxuXG4vLyBSZXR1cm4gdGhlIGNsb3Nlc3QgcG9pbnQgb24gYSBsaW5lIHNlZ21lbnRcbmV4cG9ydCBmdW5jdGlvbiBnZXRDbG9zZXN0UG9pbnRPblBvbHlsaW5lKHsgcCwgcG9pbnRzIH0pIHtcbiAgcCA9IG5ldyBWZWN0b3IzKHApO1xuICBsZXQgcENsb3Nlc3QgPSBudWxsO1xuICBsZXQgZGlzdGFuY2VTcXVhcmVkID0gSW5maW5pdHk7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGggLSAxOyArK2kpIHtcbiAgICBjb25zdCBwMSA9IHBvaW50c1tpXTtcbiAgICBjb25zdCBwMiA9IHBvaW50c1tpICsgMV07XG4gICAgY29uc3QgcENsb3Nlc3RPbkxpbmUgPSBnZXRDbG9zZXN0UG9pbnRPbkxpbmUoeyBwLCBwMSwgcDIgfSk7XG4gICAgY29uc3QgZGlzdGFuY2VUb0xpbmVTcXVhcmVkID0gcC5kaXN0YW5jZVNxdWFyZWQocENsb3Nlc3RPbkxpbmUpO1xuICAgIGlmIChkaXN0YW5jZVRvTGluZVNxdWFyZWQgPCBkaXN0YW5jZVNxdWFyZWQpIHtcbiAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGRpc3RhbmNlVG9MaW5lU3F1YXJlZDtcbiAgICAgIHBDbG9zZXN0ID0gcENsb3Nlc3RPbkxpbmU7XG4gICAgICBpbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IHBDbG9zZXN0LFxuICAgIGluZGV4LFxuICAgIHAxOiBwb2ludHNbaW5kZXhdLFxuICAgIHAyOiBwb2ludHNbaW5kZXggKyAxXSxcbiAgICBkaXN0YW5jZVNxdWFyZWQsXG4gICAgZGlzdGFuY2U6IE1hdGguc3FydChkaXN0YW5jZVNxdWFyZWQpLFxuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/layers/path-outline-layer/path-outline-layer.js b/modules/layers/dist/layers/path-outline-layer/path-outline-layer.js new file mode 100644 index 000000000..5afc3feaa --- /dev/null +++ b/modules/layers/dist/layers/path-outline-layer/path-outline-layer.js @@ -0,0 +1,204 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _constants = _interopRequireDefault(require("@luma.gl/constants")); + +var _core = require("@luma.gl/core"); + +var _outline = _interopRequireDefault(require("../../shaderlib/outline/outline")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO - this should be built into assembleShaders +function injectShaderCode(_ref) { + var source = _ref.source, + _ref$code = _ref.code, + code = _ref$code === void 0 ? '' : _ref$code; + var INJECT_CODE = /}[^{}]*$/; + return source.replace(INJECT_CODE, code.concat('\n}\n')); +} + +var VS_CODE = " outline_setUV(gl_Position);\n outline_setZLevel(instanceZLevel);\n"; +var FS_CODE = " gl_FragColor = outline_filterColor(gl_FragColor);\n"; +var defaultProps = { + getZLevel: { + type: 'accessor', + value: 0 + } +}; + +var PathOutlineLayer = /*#__PURE__*/function (_PathLayer) { + _inherits(PathOutlineLayer, _PathLayer); + + var _super = _createSuper(PathOutlineLayer); + + function PathOutlineLayer() { + _classCallCheck(this, PathOutlineLayer); + + return _super.apply(this, arguments); + } + + _createClass(PathOutlineLayer, [{ + key: "getShaders", + // Override getShaders to inject the outline module + value: function getShaders() { + var shaders = _get(_getPrototypeOf(PathOutlineLayer.prototype), "getShaders", this).call(this); + + return Object.assign({}, shaders, { + modules: shaders.modules.concat([_outline["default"]]), + vs: injectShaderCode({ + source: shaders.vs, + code: VS_CODE + }), + fs: injectShaderCode({ + source: shaders.fs, + code: FS_CODE + }) + }); + } + }, { + key: "initializeState", + value: function initializeState(context) { + _get(_getPrototypeOf(PathOutlineLayer.prototype), "initializeState", this).call(this, context); // Create an outline "shadow" map + // TODO - we should create a single outlineMap for all layers + + + this.setState({ + outlineFramebuffer: new _core.Framebuffer(context.gl), + dummyTexture: new _core.Texture2D(context.gl) + }); // Create an attribute manager + + this.state.attributeManager.addInstanced({ + instanceZLevel: { + size: 1, + type: _constants["default"].UNSIGNED_BYTE, + update: this.calculateZLevels, + accessor: 'getZLevel' + } + }); + } // Override draw to add render module + + }, { + key: "draw", + value: function draw(_ref2) { + var _ref2$moduleParameter = _ref2.moduleParameters, + moduleParameters = _ref2$moduleParameter === void 0 ? {} : _ref2$moduleParameter, + parameters = _ref2.parameters, + uniforms = _ref2.uniforms, + context = _ref2.context; + // Need to calculate same uniforms as base layer + var _this$props = this.props, + rounded = _this$props.rounded, + miterLimit = _this$props.miterLimit, + widthScale = _this$props.widthScale, + widthMinPixels = _this$props.widthMinPixels, + widthMaxPixels = _this$props.widthMaxPixels, + dashJustified = _this$props.dashJustified; + uniforms = Object.assign({}, uniforms, { + jointType: Number(rounded), + alignMode: Number(dashJustified), + widthScale: widthScale, + miterLimit: miterLimit, + widthMinPixels: widthMinPixels, + widthMaxPixels: widthMaxPixels + }); // Render the outline shadowmap (based on segment z orders) + + var _this$state = this.state, + outlineFramebuffer = _this$state.outlineFramebuffer, + dummyTexture = _this$state.dummyTexture; + outlineFramebuffer.resize(); + outlineFramebuffer.clear({ + color: true, + depth: true + }); + this.state.model.updateModuleSettings({ + outlineEnabled: true, + outlineRenderShadowmap: true, + outlineShadowmap: dummyTexture + }); + this.state.model.draw({ + uniforms: Object.assign({}, uniforms, { + jointType: 0, + widthScale: this.props.widthScale * 1.3 + }), + parameters: { + depthTest: false, + // Biggest value needs to go into buffer + blendEquation: _constants["default"].MAX + }, + framebuffer: outlineFramebuffer + }); // Now use the outline shadowmap to render the lines (with outlines) + + this.state.model.updateModuleSettings({ + outlineEnabled: true, + outlineRenderShadowmap: false, + outlineShadowmap: outlineFramebuffer + }); + this.state.model.draw({ + uniforms: Object.assign({}, uniforms, { + jointType: Number(rounded), + widthScale: this.props.widthScale + }), + parameters: { + depthTest: false + } + }); + } + }, { + key: "calculateZLevels", + value: function calculateZLevels(attribute) { + var getZLevel = this.props.getZLevel; + var pathTesselator = this.state.pathTesselator; + attribute.value = pathTesselator._updateAttribute({ + target: attribute.value, + size: 1, + getValue: function getValue(object, index) { + return [getZLevel(object, index) || 0]; + } + }); + } + }]); + + return PathOutlineLayer; +}(_layers.PathLayer); + +exports["default"] = PathOutlineLayer; + +_defineProperty(PathOutlineLayer, "layerName", 'PathOutlineLayer'); + +_defineProperty(PathOutlineLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvcGF0aC1vdXRsaW5lLWxheWVyL3BhdGgtb3V0bGluZS1sYXllci50cyJdLCJuYW1lcyI6WyJpbmplY3RTaGFkZXJDb2RlIiwic291cmNlIiwiY29kZSIsIklOSkVDVF9DT0RFIiwicmVwbGFjZSIsImNvbmNhdCIsIlZTX0NPREUiLCJGU19DT0RFIiwiZGVmYXVsdFByb3BzIiwiZ2V0WkxldmVsIiwidHlwZSIsInZhbHVlIiwiUGF0aE91dGxpbmVMYXllciIsInNoYWRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGVzIiwib3V0bGluZSIsInZzIiwiZnMiLCJjb250ZXh0Iiwic2V0U3RhdGUiLCJvdXRsaW5lRnJhbWVidWZmZXIiLCJGcmFtZWJ1ZmZlciIsImdsIiwiZHVtbXlUZXh0dXJlIiwiVGV4dHVyZTJEIiwic3RhdGUiLCJhdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkSW5zdGFuY2VkIiwiaW5zdGFuY2VaTGV2ZWwiLCJzaXplIiwiR0wiLCJVTlNJR05FRF9CWVRFIiwidXBkYXRlIiwiY2FsY3VsYXRlWkxldmVscyIsImFjY2Vzc29yIiwibW9kdWxlUGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJ1bmlmb3JtcyIsInByb3BzIiwicm91bmRlZCIsIm1pdGVyTGltaXQiLCJ3aWR0aFNjYWxlIiwid2lkdGhNaW5QaXhlbHMiLCJ3aWR0aE1heFBpeGVscyIsImRhc2hKdXN0aWZpZWQiLCJqb2ludFR5cGUiLCJOdW1iZXIiLCJhbGlnbk1vZGUiLCJyZXNpemUiLCJjbGVhciIsImNvbG9yIiwiZGVwdGgiLCJtb2RlbCIsInVwZGF0ZU1vZHVsZVNldHRpbmdzIiwib3V0bGluZUVuYWJsZWQiLCJvdXRsaW5lUmVuZGVyU2hhZG93bWFwIiwib3V0bGluZVNoYWRvd21hcCIsImRyYXciLCJkZXB0aFRlc3QiLCJibGVuZEVxdWF0aW9uIiwiTUFYIiwiZnJhbWVidWZmZXIiLCJhdHRyaWJ1dGUiLCJwYXRoVGVzc2VsYXRvciIsIl91cGRhdGVBdHRyaWJ1dGUiLCJ0YXJnZXQiLCJnZXRWYWx1ZSIsIm9iamVjdCIsImluZGV4IiwiUGF0aExheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQSxTQUFTQSxnQkFBVCxPQUFpRDtBQUFBLE1BQXJCQyxNQUFxQixRQUFyQkEsTUFBcUI7QUFBQSx1QkFBYkMsSUFBYTtBQUFBLE1BQWJBLElBQWEsMEJBQU4sRUFBTTtBQUMvQyxNQUFNQyxXQUFXLEdBQUcsVUFBcEI7QUFDQSxTQUFPRixNQUFNLENBQUNHLE9BQVAsQ0FBZUQsV0FBZixFQUE0QkQsSUFBSSxDQUFDRyxNQUFMLENBQVksT0FBWixDQUE1QixDQUFQO0FBQ0Q7O0FBRUQsSUFBTUMsT0FBTywwRUFBYjtBQUtBLElBQU1DLE9BQU8sMERBQWI7QUFJQSxJQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLFNBQVMsRUFBRTtBQUFFQyxJQUFBQSxJQUFJLEVBQUUsVUFBUjtBQUFvQkMsSUFBQUEsS0FBSyxFQUFFO0FBQTNCO0FBRFEsQ0FBckI7O0lBSXFCQyxnQjs7Ozs7Ozs7Ozs7OztBQUluQjtpQ0FDYTtBQUNYLFVBQU1DLE9BQU8sbUZBQWI7O0FBQ0EsYUFBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkYsT0FBbEIsRUFBMkI7QUFDaENHLFFBQUFBLE9BQU8sRUFBRUgsT0FBTyxDQUFDRyxPQUFSLENBQWdCWCxNQUFoQixDQUF1QixDQUFDWSxtQkFBRCxDQUF2QixDQUR1QjtBQUVoQ0MsUUFBQUEsRUFBRSxFQUFFbEIsZ0JBQWdCLENBQUM7QUFBRUMsVUFBQUEsTUFBTSxFQUFFWSxPQUFPLENBQUNLLEVBQWxCO0FBQXNCaEIsVUFBQUEsSUFBSSxFQUFFSTtBQUE1QixTQUFELENBRlk7QUFHaENhLFFBQUFBLEVBQUUsRUFBRW5CLGdCQUFnQixDQUFDO0FBQUVDLFVBQUFBLE1BQU0sRUFBRVksT0FBTyxDQUFDTSxF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VCxDQUFULElBQTRCLENBQTdCLENBQW5CO0FBQUE7QUFIc0MsT0FBaEMsQ0FBbEI7QUFLRDs7OztFQTFHMkNDLGlCOzs7O2dCQUF6QjNELGdCLGVBQ0Esa0I7O2dCQURBQSxnQixrQkFFR0osWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhdGhMYXllciB9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7IEZyYW1lYnVmZmVyLCBUZXh0dXJlMkQgfSBmcm9tICdAbHVtYS5nbC9jb3JlJztcbmltcG9ydCBvdXRsaW5lIGZyb20gJy4uLy4uL3NoYWRlcmxpYi9vdXRsaW5lL291dGxpbmUnO1xuXG4vLyBUT0RPIC0gdGhpcyBzaG91bGQgYmUgYnVpbHQgaW50byBhc3NlbWJsZVNoYWRlcnNcbmZ1bmN0aW9uIGluamVjdFNoYWRlckNvZGUoeyBzb3VyY2UsIGNvZGUgPSAnJyB9KSB7XG4gIGNvbnN0IElOSkVDVF9DT0RFID0gL31bXnt9XSokLztcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKElOSkVDVF9DT0RFLCBjb2RlLmNvbmNhdCgnXFxufVxcbicpKTtcbn1cblxuY29uc3QgVlNfQ09ERSA9IGBcXFxuICBvdXRsaW5lX3NldFVWKGdsX1Bvc2l0aW9uKTtcbiAgb3V0bGluZV9zZXRaTGV2ZWwoaW5zdGFuY2VaTGV2ZWwpO1xuYDtcblxuY29uc3QgRlNfQ09ERSA9IGBcXFxuICBnbF9GcmFnQ29sb3IgPSBvdXRsaW5lX2ZpbHRlckNvbG9yKGdsX0ZyYWdDb2xvcik7XG5gO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGdldFpMZXZlbDogeyB0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogMCB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aE91dGxpbmVMYXllciBleHRlbmRzIFBhdGhMYXllcjxhbnk+IHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdQYXRoT3V0bGluZUxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvLyBPdmVycmlkZSBnZXRTaGFkZXJzIHRvIGluamVjdCB0aGUgb3V0bGluZSBtb2R1bGVcbiAgZ2V0U2hhZGVycygpIHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzaGFkZXJzLCB7XG4gICAgICBtb2R1bGVzOiBzaGFkZXJzLm1vZHVsZXMuY29uY2F0KFtvdXRsaW5lXSksXG4gICAgICB2czogaW5qZWN0U2hhZGVyQ29kZSh7IHNvdXJjZTogc2hhZGVycy52cywgY29kZTogVlNfQ09ERSB9KSxcbiAgICAgIGZzOiBpbmplY3RTaGFkZXJDb2RlKHsgc291cmNlOiBzaGFkZXJzLmZzLCBjb2RlOiBGU19DT0RFIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKGNvbnRleHQ6IGFueSkge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZShjb250ZXh0KTtcblxuICAgIC8vIENyZWF0ZSBhbiBvdXRsaW5lIFwic2hhZG93XCIgbWFwXG4gICAgLy8gVE9ETyAtIHdlIHNob3VsZCBjcmVhdGUgYSBzaW5nbGUgb3V0bGluZU1hcCBmb3IgYWxsIGxheWVyc1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgb3V0bGluZUZyYW1lYnVmZmVyOiBuZXcgRnJhbWVidWZmZXIoY29udGV4dC5nbCksXG4gICAgICBkdW1teVRleHR1cmU6IG5ldyBUZXh0dXJlMkQoY29udGV4dC5nbCksXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgYW4gYXR0cmlidXRlIG1hbmFnZXJcbiAgICB0aGlzLnN0YXRlLmF0dHJpYnV0ZU1hbmFnZXIuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlWkxldmVsOiB7XG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHR5cGU6IEdMLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgIHVwZGF0ZTogdGhpcy5jYWxjdWxhdGVaTGV2ZWxzLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFpMZXZlbCcsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgZHJhdyB0byBhZGQgcmVuZGVyIG1vZHVsZVxuICBkcmF3KHsgbW9kdWxlUGFyYW1ldGVycyA9IHt9LCBwYXJhbWV0ZXJzLCB1bmlmb3JtcywgY29udGV4dCB9KSB7XG4gICAgLy8gTmVlZCB0byBjYWxjdWxhdGUgc2FtZSB1bmlmb3JtcyBhcyBiYXNlIGxheWVyXG4gICAgY29uc3Qge1xuICAgICAgcm91bmRlZCxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aFNjYWxlLFxuICAgICAgd2lkdGhNaW5QaXhlbHMsXG4gICAgICB3aWR0aE1heFBpeGVscyxcbiAgICAgIGRhc2hKdXN0aWZpZWQsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB1bmlmb3JtcyA9IE9iamVjdC5hc3NpZ24oe30sIHVuaWZvcm1zLCB7XG4gICAgICBqb2ludFR5cGU6IE51bWJlcihyb3VuZGVkKSxcbiAgICAgIGFsaWduTW9kZTogTnVtYmVyKGRhc2hKdXN0aWZpZWQpLFxuICAgICAgd2lkdGhTY2FsZSxcbiAgICAgIG1pdGVyTGltaXQsXG4gICAgICB3aWR0aE1pblBpeGVscyxcbiAgICAgIHdpZHRoTWF4UGl4ZWxzLFxuICAgIH0pO1xuXG4gICAgLy8gUmVuZGVyIHRoZSBvdXRsaW5lIHNoYWRvd21hcCAoYmFzZWQgb24gc2VnbWVudCB6IG9yZGVycylcbiAgICBjb25zdCB7IG91dGxpbmVGcmFtZWJ1ZmZlciwgZHVtbXlUZXh0dXJlIH0gPSB0aGlzLnN0YXRlO1xuICAgIG91dGxpbmVGcmFtZWJ1ZmZlci5yZXNpemUoKTtcbiAgICBvdXRsaW5lRnJhbWVidWZmZXIuY2xlYXIoeyBjb2xvcjogdHJ1ZSwgZGVwdGg6IHRydWUgfSk7XG5cbiAgICB0aGlzLnN0YXRlLm1vZGVsLnVwZGF0ZU1vZHVsZVNldHRpbmdzKHtcbiAgICAgIG91dGxpbmVFbmFibGVkOiB0cnVlLFxuICAgICAgb3V0bGluZVJlbmRlclNoYWRvd21hcDogdHJ1ZSxcbiAgICAgIG91dGxpbmVTaGFkb3dtYXA6IGR1bW15VGV4dHVyZSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUubW9kZWwuZHJhdyh7XG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgdW5pZm9ybXMsIHtcbiAgICAgICAgam9pbnRUeXBlOiAwLFxuICAgICAgICB3aWR0aFNjYWxlOiB0aGlzLnByb3BzLndpZHRoU2NhbGUgKiAxLjMsXG4gICAgICB9KSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgLy8gQmlnZ2VzdCB2YWx1ZSBuZWVkcyB0byBnbyBpbnRvIGJ1ZmZlclxuICAgICAgICBibGVuZEVxdWF0aW9uOiBHTC5NQVgsXG4gICAgICB9LFxuICAgICAgZnJhbWVidWZmZXI6IG91dGxpbmVGcmFtZWJ1ZmZlcixcbiAgICB9KTtcblxuICAgIC8vIE5vdyB1c2UgdGhlIG91dGxpbmUgc2hhZG93bWFwIHRvIHJlbmRlciB0aGUgbGluZXMgKHdpdGggb3V0bGluZXMpXG4gICAgdGhpcy5zdGF0ZS5tb2RlbC51cGRhdGVNb2R1bGVTZXR0aW5ncyh7XG4gICAgICBvdXRsaW5lRW5hYmxlZDogdHJ1ZSxcbiAgICAgIG91dGxpbmVSZW5kZXJTaGFkb3dtYXA6IGZhbHNlLFxuICAgICAgb3V0bGluZVNoYWRvd21hcDogb3V0bGluZUZyYW1lYnVmZmVyLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGUubW9kZWwuZHJhdyh7XG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgdW5pZm9ybXMsIHtcbiAgICAgICAgam9pbnRUeXBlOiBOdW1iZXIocm91bmRlZCksXG4gICAgICAgIHdpZHRoU2NhbGU6IHRoaXMucHJvcHMud2lkdGhTY2FsZSxcbiAgICAgIH0pLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGNhbGN1bGF0ZVpMZXZlbHMoYXR0cmlidXRlKSB7XG4gICAgY29uc3QgeyBnZXRaTGV2ZWwgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBwYXRoVGVzc2VsYXRvciB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGF0dHJpYnV0ZS52YWx1ZSA9IHBhdGhUZXNzZWxhdG9yLl91cGRhdGVBdHRyaWJ1dGUoe1xuICAgICAgdGFyZ2V0OiBhdHRyaWJ1dGUudmFsdWUsXG4gICAgICBzaXplOiAxLFxuICAgICAgZ2V0VmFsdWU6IChvYmplY3QsIGluZGV4KSA9PiBbZ2V0WkxldmVsKG9iamVjdCwgaW5kZXgpIHx8IDBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/layers/selection-layer.js b/modules/layers/dist/layers/selection-layer.js new file mode 100644 index 000000000..e2041b94d --- /dev/null +++ b/modules/layers/dist/layers/selection-layer.js @@ -0,0 +1,280 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = exports.SELECTION_TYPE = void 0; + +var _core = require("@deck.gl/core"); + +var _layers = require("@deck.gl/layers"); + +var _helpers = require("@turf/helpers"); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editableGeojsonLayer = _interopRequireDefault(require("./editable-geojson-layer")); + +var _MODE_MAP; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 SELECTION_TYPE = { + NONE: null, + RECTANGLE: 'rectangle', + POLYGON: 'polygon' +}; +exports.SELECTION_TYPE = SELECTION_TYPE; +var MODE_MAP = (_MODE_MAP = {}, _defineProperty(_MODE_MAP, SELECTION_TYPE.RECTANGLE, _editModes.DrawRectangleMode), _defineProperty(_MODE_MAP, SELECTION_TYPE.POLYGON, _editModes.DrawPolygonMode), _MODE_MAP); + +var MODE_CONFIG_MAP = _defineProperty({}, SELECTION_TYPE.RECTANGLE, { + dragToDraw: true +}); + +var defaultProps = { + selectionType: SELECTION_TYPE.RECTANGLE, + layerIds: [], + onSelect: function onSelect() {} +}; +var EMPTY_DATA = { + type: 'FeatureCollection', + features: [] +}; +var EXPANSION_KM = 50; +var LAYER_ID_GEOJSON = 'selection-geojson'; +var LAYER_ID_BLOCKER = 'selection-blocker'; +var PASS_THROUGH_PROPS = ['lineWidthScale', 'lineWidthMinPixels', 'lineWidthMaxPixels', 'lineWidthUnits', 'lineJointRounded', 'lineMiterLimit', 'pointRadiusScale', 'pointRadiusMinPixels', 'pointRadiusMaxPixels', 'lineDashJustified', 'getLineColor', 'getFillColor', 'getRadius', 'getLineWidth', 'getLineDashArray', 'getTentativeLineDashArray', 'getTentativeLineColor', 'getTentativeFillColor', 'getTentativeLineWidth']; + +var SelectionLayer = /*#__PURE__*/function (_CompositeLayer) { + _inherits(SelectionLayer, _CompositeLayer); + + var _super = _createSuper(SelectionLayer); + + function SelectionLayer() { + _classCallCheck(this, SelectionLayer); + + return _super.apply(this, arguments); + } + + _createClass(SelectionLayer, [{ + key: "_selectRectangleObjects", + value: function _selectRectangleObjects(coordinates) { + var _this$props = this.props, + layerIds = _this$props.layerIds, + onSelect = _this$props.onSelect; // @ts-ignore + + var _this$context$viewpor = this.context.viewport.project(coordinates[0][0]), + _this$context$viewpor2 = _slicedToArray(_this$context$viewpor, 2), + x1 = _this$context$viewpor2[0], + y1 = _this$context$viewpor2[1]; // @ts-ignore + + + var _this$context$viewpor3 = this.context.viewport.project(coordinates[0][2]), + _this$context$viewpor4 = _slicedToArray(_this$context$viewpor3, 2), + x2 = _this$context$viewpor4[0], + y2 = _this$context$viewpor4[1]; // @ts-ignore + + + var pickingInfos = this.context.deck.pickObjects({ + x: Math.min(x1, x2), + y: Math.min(y1, y2), + width: Math.abs(x2 - x1), + height: Math.abs(y2 - y1), + layerIds: layerIds + }); + onSelect({ + pickingInfos: pickingInfos + }); + } + }, { + key: "_selectPolygonObjects", + value: function _selectPolygonObjects(coordinates) { + var _this = this; + + var _this$props2 = this.props, + layerIds = _this$props2.layerIds, + onSelect = _this$props2.onSelect; // @ts-ignore + + var mousePoints = coordinates[0].map(function (c) { + return _this.context.viewport.project(c); + }); + var allX = mousePoints.map(function (mousePoint) { + return mousePoint[0]; + }); + var allY = mousePoints.map(function (mousePoint) { + return mousePoint[1]; + }); + var x = Math.min.apply(Math, _toConsumableArray(allX)); + var y = Math.min.apply(Math, _toConsumableArray(allY)); + var maxX = Math.max.apply(Math, _toConsumableArray(allX)); + var maxY = Math.max.apply(Math, _toConsumableArray(allY)); // Use a polygon to hide the outside, because pickObjects() + // does not support polygons + + var landPointsPoly = (0, _helpers.polygon)(coordinates); + var bigBuffer = (0, _buffer["default"])(landPointsPoly, EXPANSION_KM); + var bigPolygon; + + try { + // turfDifference throws an exception if the polygon + // intersects with itself (TODO: check if true in all versions) + bigPolygon = (0, _difference["default"])(bigBuffer, landPointsPoly); + } catch (e) { + // invalid selection polygon + console.log('turfDifference() error', e); // eslint-disable-line + + return; + } + + this.setState({ + pendingPolygonSelection: { + bigPolygon: bigPolygon + } + }); + var blockerId = "".concat(this.props.id, "-").concat(LAYER_ID_BLOCKER); // HACK, find a better way + + setTimeout(function () { + // @ts-ignore + var pickingInfos = _this.context.deck.pickObjects({ + x: x, + y: y, + width: maxX - x, + height: maxY - y, + layerIds: [blockerId].concat(_toConsumableArray(layerIds)) + }); + + onSelect({ + pickingInfos: pickingInfos.filter(function (item) { + return item.layer.id !== _this.props.id; + }) + }); + }, 250); + } + }, { + key: "renderLayers", + value: function renderLayers() { + var _this2 = this; + + var pendingPolygonSelection = this.state.pendingPolygonSelection; + var mode = MODE_MAP[this.props.selectionType] || _editModes.ViewMode; + var modeConfig = MODE_CONFIG_MAP[this.props.selectionType]; + var inheritedProps = {}; + PASS_THROUGH_PROPS.forEach(function (p) { + if (_this2.props[p] !== undefined) inheritedProps[p] = _this2.props[p]; + }); + var layers = [new _editableGeojsonLayer["default"](this.getSubLayerProps(_objectSpread({ + id: LAYER_ID_GEOJSON, + pickable: true, + mode: mode, + modeConfig: modeConfig, + selectedFeatureIndexes: [], + data: EMPTY_DATA, + onEdit: function onEdit(_ref) { + var updatedData = _ref.updatedData, + editType = _ref.editType; + + if (editType === 'addFeature') { + var coordinates = updatedData.features[0].geometry.coordinates; + + if (_this2.props.selectionType === SELECTION_TYPE.RECTANGLE) { + _this2._selectRectangleObjects(coordinates); + } else if (_this2.props.selectionType === SELECTION_TYPE.POLYGON) { + _this2._selectPolygonObjects(coordinates); + } + } + } + }, inheritedProps)))]; + + if (pendingPolygonSelection) { + var bigPolygon = pendingPolygonSelection.bigPolygon; + layers.push(new _layers.PolygonLayer( // @ts-ignore + this.getSubLayerProps({ + id: LAYER_ID_BLOCKER, + pickable: true, + stroked: false, + opacity: 1.0, + data: [bigPolygon], + getLineColor: function getLineColor(obj) { + return [0, 0, 0, 1]; + }, + getFillColor: function getFillColor(obj) { + return [0, 0, 0, 1]; + }, + getPolygon: function getPolygon(o) { + return o.geometry.coordinates; + } + }))); + } + + return layers; + } + }, { + key: "shouldUpdateState", + value: function shouldUpdateState(_ref2) { + var _ref2$changeFlags = _ref2.changeFlags, + stateChanged = _ref2$changeFlags.stateChanged, + propsOrDataChanged = _ref2$changeFlags.propsOrDataChanged; + return stateChanged || propsOrDataChanged; + } + }]); + + return SelectionLayer; +}(_core.CompositeLayer); + +exports["default"] = SelectionLayer; + +_defineProperty(SelectionLayer, "layerName", 'SelectionLayer'); + +_defineProperty(SelectionLayer, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllcnMvc2VsZWN0aW9uLWxheWVyLnRzIl0sIm5hbWVzIjpbIlNFTEVDVElPTl9UWVBFIiwiTk9ORSIsIlJFQ1RBTkdMRSIsIlBPTFlHT04iLCJNT0RFX01BUCIsIkRyYXdSZWN0YW5nbGVNb2RlIiwiRHJhd1BvbHlnb25Nb2RlIiwiTU9ERV9DT05GSUdfTUFQIiwiZHJhZ1RvRHJhdyIsImRlZmF1bHRQcm9wcyIsInNlbGVjdGlvblR5cGUiLCJsYXllcklkcyIsIm9uU2VsZWN0IiwiRU1QVFlfREFUQSIsInR5cGUiLCJmZWF0dXJlcyIsIkVYUEFOU0lPTl9LTSIsIkxBWUVSX0lEX0dFT0pTT04iLCJMQVlFUl9JRF9CTE9DS0VSIiwiUEFTU19USFJPVUdIX1BST1BTIiwiU2VsZWN0aW9uTGF5ZXIiLCJjb29yZGluYXRlcyIsInByb3BzIiwiY29udGV4dCIsInZpZXdwb3J0IiwicHJvamVjdCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja2luZ0luZm9zIiwiZGVjayIsInBpY2tPYmplY3RzIiwieCIsIk1hdGgiLCJtaW4iLCJ5Iiwid2lkdGgiLCJhYnMiLCJoZWlnaHQiLCJtb3VzZVBvaW50cyIsIm1hcCIsImMiLCJhbGxYIiwibW91c2VQb2ludCIsImFsbFkiLCJtYXhYIiwibWF4IiwibWF4WSIsImxhbmRQb2ludHNQb2x5IiwiYmlnQnVmZmVyIiwiYmlnUG9seWdvbiIsImUiLCJjb25zb2xlIiwibG9nIiwic2V0U3RhdGUiLCJwZW5kaW5nUG9seWdvblNlbGVjdGlvbiIsImJsb2NrZXJJZCIsImlkIiwic2V0VGltZW91dCIsImZpbHRlciIsIml0ZW0iLCJsYXllciIsInN0YXRlIiwibW9kZSIsIlZpZXdNb2RlIiwibW9kZUNvbmZpZyIsImluaGVyaXRlZFByb3BzIiwiZm9yRWFjaCIsInAiLCJ1bmRlZmluZWQiLCJsYXllcnMiLCJFZGl0YWJsZUdlb0pzb25MYXllciIsImdldFN1YkxheWVyUHJvcHMiLCJwaWNrYWJsZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJkYXRhIiwib25FZGl0IiwidXBkYXRlZERhdGEiLCJlZGl0VHlwZSIsImdlb21ldHJ5IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJfc2VsZWN0UG9seWdvbk9iamVjdHMiLCJwdXNoIiwiUG9seWdvbkxheWVyIiwic3Ryb2tlZCIsIm9wYWNpdHkiLCJnZXRMaW5lQ29sb3IiLCJvYmoiLCJnZXRGaWxsQ29sb3IiLCJnZXRQb2x5Z29uIiwibyIsImNoYW5nZUZsYWdzIiwic3RhdGVDaGFuZ2VkIiwicHJvcHNPckRhdGFDaGFuZ2VkIiwiQ29tcG9zaXRlTGF5ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJQUFJLEVBQUUsSUFEc0I7QUFFNUJDLEVBQUFBLFNBQVMsRUFBRSxXQUZpQjtBQUc1QkMsRUFBQUEsT0FBTyxFQUFFO0FBSG1CLENBQXZCOztBQU1QLElBQU1DLFFBQVEsK0NBQ1hKLGNBQWMsQ0FBQ0UsU0FESixFQUNnQkcsNEJBRGhCLDhCQUVYTCxjQUFjLENBQUNHLE9BRkosRUFFY0csMEJBRmQsYUFBZDs7QUFLQSxJQUFNQyxlQUFlLHVCQUNsQlAsY0FBYyxDQUFDRSxTQURHLEVBQ1M7QUFBRU0sRUFBQUEsVUFBVSxFQUFFO0FBQWQsQ0FEVCxDQUFyQjs7QUFJQSxJQUFNQyxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLGFBQWEsRUFBRVYsY0FBYyxDQUFDRSxTQURYO0FBRW5CUyxFQUFBQSxRQUFRLEVBQUUsRUFGUztBQUduQkMsRUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUU7QUFIQyxDQUFyQjtBQU1BLElBQU1DLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsSUFBSSxFQUFFLG1CQURXO0FBRWpCQyxFQUFBQSxRQUFRLEVBQUU7QUFG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RUFBVSxDQUFWLENBQVQ7QUFBQSxXQU5NO0FBT3BCQyxVQUFBQSxZQUFZLEVBQUUsc0JBQUNELEdBQUQ7QUFBQSxtQkFBUyxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FBVDtBQUFBLFdBUE07QUFRcEJFLFVBQUFBLFVBQVUsRUFBRSxvQkFBQ0MsQ0FBRDtBQUFBLG1CQUFPQSxDQUFDLENBQUNYLFFBQUYsQ0FBVzNELFdBQWxCO0FBQUE7QUFSUSxTQUF0QixDQUZGLENBREY7QUFlRDs7QUFFRCxhQUFPa0QsTUFBUDtBQUNEOzs7NkNBRTZGO0FBQUEsb0NBQTFFcUIsV0FBMEU7QUFBQSxVQUEzREMsWUFBMkQscUJBQTNEQSxZQUEyRDtBQUFBLFVBQTdDQyxrQkFBNkMscUJBQTdDQSxrQkFBNkM7QUFDNUYsYUFBT0QsWUFBWSxJQUFJQyxrQkFBdkI7QUFDRDs7OztFQXRJeUNDLG9COzs7O2dCQUF2QjNFLGMsZUFDQSxnQjs7Z0JBREFBLGMsa0JBRUdYLFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbmltcG9ydCB7IENvbXBvc2l0ZUxheWVyIH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgeyBQb2x5Z29uTGF5ZXIgfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHsgcG9seWdvbiB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHR1cmZCdWZmZXIgZnJvbSAnQHR1cmYvYnVmZmVyJztcbmltcG9ydCB0dXJmRGlmZmVyZW5jZSBmcm9tICdAdHVyZi9kaWZmZXJlbmNlJztcbmltcG9ydCB7IERyYXdSZWN0YW5nbGVNb2RlLCBEcmF3UG9seWdvbk1vZGUsIFZpZXdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuaW1wb3J0IEVkaXRhYmxlR2VvSnNvbkxheWVyIGZyb20gJy4vZWRpdGFibGUtZ2VvanNvbi1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fVFlQRSA9IHtcbiAgTk9ORTogbnVsbCxcbiAgUkVDVEFOR0xFOiAncmVjdGFuZ2xlJyxcbiAgUE9MWUdPTjogJ3BvbHlnb24nLFxufTtcblxuY29uc3QgTU9ERV9NQVAgPSB7XG4gIFtTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEVdOiBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgW1NFTEVDVElPTl9UWVBFLlBPTFlHT05dOiBEcmF3UG9seWdvbk1vZGUsXG59O1xuXG5jb25zdCBNT0RFX0NPTkZJR19NQVAgPSB7XG4gIFtTRUxFQ1RJT05fVFlQRS5SRUNUQU5HTEVdOiB7IGRyYWdUb0RyYXc6IHRydWUgfSxcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2VsZWN0aW9uVHlwZTogU0VMRUNUSU9OX1RZUEUuUkVDVEFOR0xFLFxuICBsYXllcklkczogW10sXG4gIG9uU2VsZWN0OiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IEVNUFRZX0RBVEEgPSB7XG4gIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gIGZlYXR1cmVzOiBbXSxcbn07XG5cbmNvbnN0IEVYUEFOU0lPTl9LTSA9IDUwO1xuY29uc3QgTEFZRVJfSURfR0VPSlNPTiA9ICdzZWxlY3Rpb24tZ2VvanNvbic7XG5jb25zdCBMQVlFUl9JRF9CTE9DS0VSID0gJ3NlbGVjdGlvbi1ibG9ja2VyJztcblxuY29uc3QgUEFTU19USFJPVUdIX1BST1BTID0gW1xuICAnbGluZVdpZHRoU2NhbGUnLFxuICAnbGluZVdpZHRoTWluUGl4ZWxzJyxcbiAgJ2xpbmVXaWR0aE1heFBpeGVscycsXG4gICdsaW5lV2lkdGhVbml0cycsXG4gICdsaW5lSm9pbnRSb3VuZGVkJyxcbiAgJ2xpbmVNaXRlckxpbWl0JyxcbiAgJ3BvaW50UmFkaXVzU2NhbGUnLFxuICAncG9pbnRSYWRpdXNNaW5QaXhlbHMnLFxuICAncG9pbnRSYWRpdXNNYXhQaXhlbHMnLFxuICAnbGluZURhc2hKdXN0aWZpZWQnLFxuICAnZ2V0TGluZUNvbG9yJyxcbiAgJ2dldEZpbGxDb2xvcicsXG4gICdnZXRSYWRpdXMnLFxuICAnZ2V0TGluZVdpZHRoJyxcbiAgJ2dldExpbmVEYXNoQXJyYXknLFxuICAnZ2V0VGVudGF0aXZlTGluZURhc2hBcnJheScsXG4gICdnZXRUZW50YXRpdmVMaW5lQ29sb3InLFxuICAnZ2V0VGVudGF0aXZlRmlsbENvbG9yJyxcbiAgJ2dldFRlbnRhdGl2ZUxpbmVXaWR0aCcsXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3Rpb25MYXllciBleHRlbmRzIENvbXBvc2l0ZUxheWVyPGFueT4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ1NlbGVjdGlvbkxheWVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBfc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cyhjb29yZGluYXRlczogYW55KSB7XG4gICAgY29uc3QgeyBsYXllcklkcywgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IFt4MSwgeTFdID0gdGhpcy5jb250ZXh0LnZpZXdwb3J0LnByb2plY3QoY29vcmRpbmF0ZXNbMF1bMF0pO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBbeDIsIHkyXSA9IHRoaXMuY29udGV4dC52aWV3cG9ydC5wcm9qZWN0KGNvb3JkaW5hdGVzWzBdWzJdKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5jb250ZXh0LmRlY2sucGlja09iamVjdHMoe1xuICAgICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpLFxuICAgICAgbGF5ZXJJZHMsXG4gICAgfSk7XG5cbiAgICBvblNlbGVjdCh7IHBpY2tpbmdJbmZvcyB9KTtcbiAgfVxuXG4gIF9zZWxlY3RQb2x5Z29uT2JqZWN0cyhjb29yZGluYXRlczogYW55KSB7XG4gICAgY29uc3QgeyBsYXllcklkcywgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG1vdXNlUG9pbnRzID0gY29vcmRpbmF0ZXNbMF0ubWFwKChjKSA9PiB0aGlzLmNvbnRleHQudmlld3BvcnQucHJvamVjdChjKSk7XG5cbiAgICBjb25zdCBhbGxYID0gbW91c2VQb2ludHMubWFwKChtb3VzZVBvaW50KSA9PiBtb3VzZVBvaW50WzBdKTtcbiAgICBjb25zdCBhbGxZID0gbW91c2VQb2ludHMubWFwKChtb3VzZVBvaW50KSA9PiBtb3VzZVBvaW50WzFdKTtcbiAgICBjb25zdCB4ID0gTWF0aC5taW4oLi4uYWxsWCk7XG4gICAgY29uc3QgeSA9IE1hdGgubWluKC4uLmFsbFkpO1xuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heCguLi5hbGxYKTtcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgoLi4uYWxsWSk7XG5cbiAgICAvLyBVc2UgYSBwb2x5Z29uIHRvIGhpZGUgdGhlIG91dHNpZGUsIGJlY2F1c2UgcGlja09iamVjdHMoKVxuICAgIC8vIGRvZXMgbm90IHN1cHBvcnQgcG9seWdvbnNcbiAgICBjb25zdCBsYW5kUG9pbnRzUG9seSA9IHBvbHlnb24oY29vcmRpbmF0ZXMpO1xuICAgIGNvbnN0IGJpZ0J1ZmZlciA9IHR1cmZCdWZmZXIobGFuZFBvaW50c1BvbHksIEVYUEFOU0lPTl9LTSk7XG4gICAgbGV0IGJpZ1BvbHlnb247XG4gICAgdHJ5IHtcbiAgICAgIC8vIHR1cmZEaWZmZXJlbmNlIHRocm93cyBhbiBleGNlcHRpb24gaWYgdGhlIHBvbHlnb25cbiAgICAgIC8vIGludGVyc2VjdHMgd2l0aCBpdHNlbGYgKFRPRE86IGNoZWNrIGlmIHRydWUgaW4gYWxsIHZlcnNpb25zKVxuICAgICAgYmlnUG9seWdvbiA9IHR1cmZEaWZmZXJlbmNlKGJpZ0J1ZmZlciwgbGFuZFBvaW50c1BvbHkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGludmFsaWQgc2VsZWN0aW9uIHBvbHlnb25cbiAgICAgIGNvbnNvbGUubG9nKCd0dXJmRGlmZmVyZW5jZSgpIGVycm9yJywgZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uOiB7XG4gICAgICAgIGJpZ1BvbHlnb24sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYmxvY2tlcklkID0gYCR7dGhpcy5wcm9wcy5pZH0tJHtMQVlFUl9JRF9CTE9DS0VSfWA7XG5cbiAgICAvLyBIQUNLLCBmaW5kIGEgYmV0dGVyIHdheVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5jb250ZXh0LmRlY2sucGlja09iamVjdHMoe1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3aWR0aDogbWF4WCAtIHgsXG4gICAgICAgIGhlaWdodDogbWF4WSAtIHksXG4gICAgICAgIGxheWVySWRzOiBbYmxvY2tlcklkLCAuLi5sYXllcklkc10sXG4gICAgICB9KTtcblxuICAgICAgb25TZWxlY3Qoe1xuICAgICAgICBwaWNraW5nSW5mb3M6IHBpY2tpbmdJbmZvcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubGF5ZXIuaWQgIT09IHRoaXMucHJvcHMuaWQpLFxuICAgICAgfSk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCB7IHBlbmRpbmdQb2x5Z29uU2VsZWN0aW9uIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgbW9kZSA9IE1PREVfTUFQW3RoaXMucHJvcHMuc2VsZWN0aW9uVHlwZV0gfHwgVmlld01vZGU7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IE1PREVfQ09ORklHX01BUFt0aGlzLnByb3BzLnNlbGVjdGlvblR5cGVdO1xuXG4gICAgY29uc3QgaW5oZXJpdGVkUHJvcHMgPSB7fTtcbiAgICBQQVNTX1RIUk9VR0hfUFJPUFMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHNbcF0gIT09IHVuZGVmaW5lZCkgaW5oZXJpdGVkUHJvcHNbcF0gPSB0aGlzLnByb3BzW3BdO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbGF5ZXJzID0gW1xuICAgICAgbmV3IEVkaXRhYmxlR2VvSnNvbkxheWVyKFxuICAgICAgICB0aGlzLmdldFN1YkxheWVyUHJvcHMoe1xuICAgICAgICAgIGlkOiBMQVlFUl9JRF9HRU9KU09OLFxuICAgICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgbW9kZUNvbmZpZyxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBbXSxcbiAgICAgICAgICBkYXRhOiBFTVBUWV9EQVRBLFxuICAgICAgICAgIG9uRWRpdDogKHsgdXBkYXRlZERhdGEsIGVkaXRUeXBlIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChlZGl0VHlwZSA9PT0gJ2FkZEZlYXR1cmUnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZXMgfSA9IHVwZGF0ZWREYXRhLmZlYXR1cmVzWzBdLmdlb21ldHJ5O1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGlvblR5cGUgPT09IFNFTEVDVElPTl9UWVBFLlJFQ1RBTkdMRSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMoY29vcmRpbmF0ZXMpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc2VsZWN0aW9uVHlwZSA9PT0gU0VMRUNUSU9OX1RZUEUuUE9MWUdPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFBvbHlnb25PYmplY3RzKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uaW5oZXJpdGVkUHJvcHMsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIF07XG5cbiAgICBpZiAocGVuZGluZ1BvbHlnb25TZWxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgYmlnUG9seWdvbiB9ID0gcGVuZGluZ1BvbHlnb25TZWxlY3Rpb247XG4gICAgICBsYXllcnMucHVzaChcbiAgICAgICAgbmV3IFBvbHlnb25MYXllcihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5nZXRTdWJMYXllclByb3BzKHtcbiAgICAgICAgICAgIGlkOiBMQVlFUl9JRF9CTE9DS0VSLFxuICAgICAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgICAgICBzdHJva2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgICAgIGRhdGE6IFtiaWdQb2x5Z29uXSxcbiAgICAgICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gWzAsIDAsIDAsIDFdLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiAob2JqKSA9PiBbMCwgMCwgMCwgMV0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBsYXllcnM7XG4gIH1cblxuICBzaG91bGRVcGRhdGVTdGF0ZSh7IGNoYW5nZUZsYWdzOiB7IHN0YXRlQ2hhbmdlZCwgcHJvcHNPckRhdGFDaGFuZ2VkIH0gfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHJldHVybiBzdGF0ZUNoYW5nZWQgfHwgcHJvcHNPckRhdGFDaGFuZ2VkO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/math.js b/modules/layers/dist/math.js new file mode 100644 index 000000000..a3ba7f4e4 --- /dev/null +++ b/modules/layers/dist/math.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDegree = toDegree; +exports.toRadian = toRadian; +exports.convertE7Array = convertE7Array; + +function toDegree(radian) { + return radian * 180 / Math.PI; +} + +function toRadian(angle) { + return angle * Math.PI / 180; +} +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ + + +function convertE7Array(array) { + var points = []; + + for (var i = 0; i < array.length; i += 2) { + var lat = array[i] * 1e-7; + var lng = array[i + 1] * 1e-7; + points.push([lng, lat]); + } + + return points; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXRoLnRzIl0sIm5hbWVzIjpbInRvRGVncmVlIiwicmFkaWFuIiwiTWF0aCIsIlBJIiwidG9SYWRpYW4iLCJhbmdsZSIsImNvbnZlcnRFN0FycmF5IiwiYXJyYXkiLCJwb2ludHMiLCJpIiwibGVuZ3RoIiwibGF0IiwibG5nIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRU8sU0FBU0EsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEM7QUFDL0MsU0FBUUEsTUFBTSxHQUFHLEdBQVYsR0FBaUJDLElBQUksQ0FBQ0MsRUFBN0I7QUFDRDs7QUFFTSxTQUFTQyxRQUFULENBQWtCQyxLQUFsQixFQUF5QztBQUM5QyxTQUFRQSxLQUFLLEdBQUdILElBQUksQ0FBQ0MsRUFBZCxHQUFvQixHQUEzQjtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNHLGNBQVQsQ0FBd0JDLEtBQXhCLEVBQXFEO0FBQzFELE1BQU1DLE1BQU0sR0FBRyxFQUFmOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsS0FBSyxDQUFDRyxNQUExQixFQUFrQ0QsQ0FBQyxJQUFJLENBQXZDLEVBQTBDO0FBQ3hDLFFBQU1FLEdBQUcsR0FBR0osS0FBSyxDQUFDRSxDQUFELENBQUwsR0FBVyxJQUF2QjtBQUNBLFFBQU1HLEdBQUcsR0FBR0wsS0FBSyxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUFMLEdBQWUsSUFBM0I7QUFDQUQsSUFBQUEsTUFBTSxDQUFDSyxJQUFQLENBQVksQ0FBQ0QsR0FBRCxFQUFNRCxHQUFOLENBQVo7QUFDRDs7QUFDRCxTQUFPSCxNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9EZWdyZWUocmFkaWFuOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKHJhZGlhbiAqIDE4MCkgLyBNYXRoLlBJO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9SYWRpYW4oYW5nbGU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoYW5nbGUgKiBNYXRoLlBJKSAvIDE4MDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBsYXRpdHVkZXMsIGxvbmdpdHVkZXMgaW4gRTcgZm9ybWF0IHRvIGEgbGlzdCBvZiBwb2ludHMgaW4gZGVncmVlcy5cbiAqXG4gKiBAcGFyYW0ge1tdfSBhcnJheTogQW4gRTcgYXJyYXkgW2xhdF9lNywgbG5nX2U3LCBsYXRfZTcsIGxuZ19lNywgLi4uXVxuICogQHJldHVybiB7W119IEFuIGFycmF5IG9mIHBvaW50cyBpbiBkZWdyZWVzXG4gKiAgICAgICAgICAgICAgWyBbbG5nX2RlZ3JlZXMsIGxhdF9kZWdyZWVzXSwgW2xuZ19kZWdyZWVzLCBsYXRfZGVncmVlc10sIC4uLl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRFN0FycmF5KGFycmF5OiBudW1iZXJbXSk6IFBvc2l0aW9uW10ge1xuICBjb25zdCBwb2ludHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkgKz0gMikge1xuICAgIGNvbnN0IGxhdCA9IGFycmF5W2ldICogMWUtNztcbiAgICBjb25zdCBsbmcgPSBhcnJheVtpICsgMV0gKiAxZS03O1xuICAgIHBvaW50cy5wdXNoKFtsbmcsIGxhdF0pO1xuICB9XG4gIHJldHVybiBwb2ludHM7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/composite-mode-handler.js b/modules/layers/dist/mode-handlers/composite-mode-handler.js new file mode 100644 index 000000000..7a85c3601 --- /dev/null +++ b/modules/layers/dist/mode-handlers/composite-mode-handler.js @@ -0,0 +1,160 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CompositeModeHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var CompositeModeHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(CompositeModeHandler, _ModeHandler); + + var _super = _createSuper(CompositeModeHandler); + + function CompositeModeHandler(handlers) { + var _this; + + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, CompositeModeHandler); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "handlers", void 0); + + _defineProperty(_assertThisInitialized(_this), "options", void 0); + + _this.handlers = handlers; + _this.options = options; + return _this; + } + + _createClass(CompositeModeHandler, [{ + key: "_coalesce", + value: function _coalesce(callback) { + var resultEval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var result; + + for (var i = 0; i < this.handlers.length; i++) { + result = callback(this.handlers[i]); + + if (resultEval ? resultEval(result) : result) { + break; + } + } + + return result; + } + }, { + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this.handlers.forEach(function (handler) { + return handler.setFeatureCollection(featureCollection); + }); + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + this.handlers.forEach(function (handler) { + return handler.setModeConfig(modeConfig); + }); + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + this.handlers.forEach(function (handler) { + return handler.setSelectedFeatureIndexes(indexes); + }); + } + }, { + key: "handleClick", + value: function handleClick(event) { + return this._coalesce(function (handler) { + return handler.handleClick(event); + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + return this._coalesce(function (handler) { + return handler.handlePointerMove(event); + }, function (result) { + return result && Boolean(result.editAction); + }); + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + return this._coalesce(function (handler) { + return handler.handleStartDragging(event); + }); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + return this._coalesce(function (handler) { + return handler.handleStopDragging(event); + }); + } + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._coalesce(function (handler) { + return handler.getTentativeFeature(); + }); + } + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + // TODO: Combine the handles *BUT* make sure if none of the results have + // changed to return the same object so that "editHandles !== this.state.editHandles" + // in editable-geojson-layer works. + return this._coalesce(function (handler) { + return handler.getEditHandles(picks, groundCoords); + }, function (handles) { + return Array.isArray(handles) && handles.length > 0; + }); + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return this._coalesce(function (handler) { + return handler.getCursor({ + isDragging: isDragging + }); + }); + } + }]); + + return CompositeModeHandler; +}(_modeHandler.ModeHandler); + +exports.CompositeModeHandler = CompositeModeHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2NvbXBvc2l0ZS1tb2RlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiQ29tcG9zaXRlTW9kZUhhbmRsZXIiLCJoYW5kbGVycyIsIm9wdGlvbnMiLCJjYWxsYmFjayIsInJlc3VsdEV2YWwiLCJyZXN1bHQiLCJpIiwibGVuZ3RoIiwiZmVhdHVyZUNvbGxlY3Rpb24iLCJmb3JFYWNoIiwiaGFuZGxlciIsInNldEZlYXR1cmVDb2xsZWN0aW9uIiwibW9kZUNvbmZpZyIsInNldE1vZGVDb25maWciLCJpbmRleGVzIiwic2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImV2ZW50IiwiX2NvYWxlc2NlIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVQb2ludGVyTW92ZSIsIkJvb2xlYW4iLCJlZGl0QWN0aW9uIiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsImhhbmRsZVN0b3BEcmFnZ2luZyIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImdldEVkaXRIYW5kbGVzIiwiaGFuZGxlcyIsIkFycmF5IiwiaXNBcnJheSIsImlzRHJhZ2dpbmciLCJnZXRDdXJzb3IiLCJNb2RlSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLG9COzs7OztBQUlYLGdDQUFZQyxRQUFaLEVBQTZFO0FBQUE7O0FBQUEsUUFBbkNDLE9BQW1DLHVFQUFKLEVBQUk7O0FBQUE7O0FBQzNFOztBQUQyRTs7QUFBQTs7QUFFM0UsVUFBS0QsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxVQUFLQyxPQUFMLEdBQWVBLE9BQWY7QUFIMkU7QUFJNUU7Ozs7OEJBR0NDLFEsRUFFRztBQUFBLFVBREhDLFVBQ0csdUVBRG1ELElBQ25EO0FBQ0gsVUFBSUMsTUFBSjs7QUFFQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBS0wsUUFBTCxDQUFjTSxNQUFsQyxFQUEwQ0QsQ0FBQyxFQUEzQyxFQUErQztBQUM3Q0QsUUFBQUEsTUFBTSxHQUFHRixRQUFRLENBQUMsS0FBS0YsUUFBTCxDQUFjSyxDQUFkLENBQUQsQ0FBakI7O0FBQ0EsWUFBSUYsVUFBVSxHQUFHQSxVQUFVLENBQUNDLE1BQUQsQ0FBYixHQUF3QkEsTUFBdEMsRUFBOEM7QUFDNUM7QUFDRDtBQUNGOztBQUVELGFBQU9BLE1BQVA7QUFDRDs7O3lDQUVvQkcsaUIsRUFBNEM7QUFDL0QsV0FBS1AsUUFBTCxDQUFjUSxPQUFkLENBQXNCLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNDLG9CQUFSLENBQTZCSCxpQkFBN0IsQ0FBYjtBQUFBLE9BQXRCO0FBQ0Q7OztrQ0FFYUksVSxFQUF1QjtBQUNuQyxXQUFLWCxRQUFMLENBQWNRLE9BQWQsQ0FBc0IsVUFBQ0MsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ0csYUFBUixDQUFzQkQsVUFBdEIsQ0FBYjtBQUFBLE9BQXRCO0FBQ0Q7Ozs4Q0FFeUJFLE8sRUFBeUI7QUFDakQsV0FBS2IsUUFBTCxDQUFjUSxPQUFkLENBQXNCLFVBQUNDLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNLLHlCQUFSLENBQWtDRCxPQUFsQyxDQUFiO0FBQUEsT0FBdEI7QUFDRDs7O2dDQUVXRSxLLEVBQWtEO0FBQzVELGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNRLFdBQVIsQ0FBb0JGLEtBQXBCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7O3NDQUdDQSxLLEVBQ3NFO0FBQ3RFLGFBQU8sS0FBS0MsU0FBTCxDQUNMLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNTLGlCQUFSLENBQTBCSCxLQUExQixDQUFiO0FBQUEsT0FESyxFQUVMLFVBQUNYLE1BQUQ7QUFBQSxlQUFZQSxNQUFNLElBQUllLE9BQU8sQ0FBQ2YsTUFBTSxDQUFDZ0IsVUFBUixDQUE3QjtBQUFBLE9BRkssQ0FBUDtBQUlEOzs7d0NBRW1CTCxLLEVBQTBEO0FBQzVFLGFBQU8sS0FBS0MsU0FBTCxDQUFlLFVBQUNQLE9BQUQ7QUFBQSxlQUFhQSxPQUFPLENBQUNZLG1CQUFSLENBQTRCTixLQUE1QixDQUFiO0FBQUEsT0FBZixDQUFQO0FBQ0Q7Ozt1Q0FFa0JBLEssRUFBeUQ7QUFDMUUsYUFBTyxLQUFLQyxTQUFMLENBQWUsVUFBQ1AsT0FBRDtBQUFBLGVBQWFBLE9BQU8sQ0FBQ2Esa0JBQVIsQ0FBMkJQLEtBQTNCLENBQWI7QUFBQSxPQUFmLENBQVA7QUFDRDs7OzBDQUVpRDtBQUNoRCxhQUFPLEtBQUtDLFNBQUwsQ0FBZSxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDYyxtQkFBUixFQUFiO0FBQUEsT0FBZixDQUFQO0FBQ0Q7OzttQ0FFY0MsSyxFQUFvQ0MsWSxFQUF1QztBQUN4RjtBQUNBO0FBQ0E7QUFDQSxhQUFPLEtBQUtULFNBQUwsQ0FDTCxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDaUIsY0FBUixDQUF1QkYsS0FBdkIsRUFBOEJDLFlBQTlCLENBQWI7QUFBQSxPQURLLEVBRUwsVUFBQ0UsT0FBRDtBQUFBLGVBQWFDLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixPQUFkLEtBQTBCQSxPQUFPLENBQUNyQixNQUFSLEdBQWlCLENBQXhEO0FBQUEsT0FGSyxDQUFQO0FBSUQ7OztvQ0FFMEQ7QUFBQSxVQUEvQ3dCLFVBQStDLFFBQS9DQSxVQUErQztBQUN6RCxhQUFPLEtBQUtkLFNBQUwsQ0FBZSxVQUFDUCxPQUFEO0FBQUEsZUFBYUEsT0FBTyxDQUFDc0IsU0FBUixDQUFrQjtBQUFFRCxVQUFBQSxVQUFVLEVBQVZBO0FBQUYsU0FBbEIsQ0FBYjtBQUFBLE9BQWYsQ0FBUDtBQUNEOzs7O0VBM0V1Q0Usd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbn0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgTW9kZUhhbmRsZXIsIEVkaXRBY3Rpb24sIEVkaXRIYW5kbGUgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVNb2RlSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgaGFuZGxlcnM6IEFycmF5PE1vZGVIYW5kbGVyPjtcbiAgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihoYW5kbGVyczogQXJyYXk8TW9kZUhhbmRsZXI+LCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaGFuZGxlcnMgPSBoYW5kbGVycztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgX2NvYWxlc2NlPFQ+KFxuICAgIGNhbGxiYWNrOiAoYXJnMDogTW9kZUhhbmRsZXIpID0+IFQsXG4gICAgcmVzdWx0RXZhbDogKGFyZzA6IFQpID0+IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbFxuICApOiBUIHtcbiAgICBsZXQgcmVzdWx0OiBUO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLmhhbmRsZXJzW2ldKTtcbiAgICAgIGlmIChyZXN1bHRFdmFsID8gcmVzdWx0RXZhbChyZXN1bHQpIDogcmVzdWx0KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiBoYW5kbGVyLnNldEZlYXR1cmVDb2xsZWN0aW9uKGZlYXR1cmVDb2xsZWN0aW9uKSk7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlcnMuZm9yRWFjaCgoaGFuZGxlcikgPT4gaGFuZGxlci5zZXRNb2RlQ29uZmlnKG1vZGVDb25maWcpKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goKGhhbmRsZXIpID0+IGhhbmRsZXIuc2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyhpbmRleGVzKSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoKGhhbmRsZXIpID0+IGhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQpKTtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4gdGhpcy5fY29hbGVzY2UoXG4gICAgICAoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShldmVudCksXG4gICAgICAocmVzdWx0KSA9PiByZXN1bHQgJiYgQm9vbGVhbihyZXN1bHQuZWRpdEFjdGlvbilcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50KSk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQpKTtcbiAgfVxuXG4gIGdldFRlbnRhdGl2ZUZlYXR1cmUoKTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9jb2FsZXNjZSgoaGFuZGxlcikgPT4gaGFuZGxlci5nZXRUZW50YXRpdmVGZWF0dXJlKCkpO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIC8vIFRPRE86IENvbWJpbmUgdGhlIGhhbmRsZXMgKkJVVCogbWFrZSBzdXJlIGlmIG5vbmUgb2YgdGhlIHJlc3VsdHMgaGF2ZVxuICAgIC8vIGNoYW5nZWQgdG8gcmV0dXJuIHRoZSBzYW1lIG9iamVjdCBzbyB0aGF0IFwiZWRpdEhhbmRsZXMgIT09IHRoaXMuc3RhdGUuZWRpdEhhbmRsZXNcIlxuICAgIC8vIGluIGVkaXRhYmxlLWdlb2pzb24tbGF5ZXIgd29ya3MuXG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKFxuICAgICAgKGhhbmRsZXIpID0+IGhhbmRsZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3JkcyksXG4gICAgICAoaGFuZGxlcykgPT4gQXJyYXkuaXNBcnJheShoYW5kbGVzKSAmJiBoYW5kbGVzLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvYWxlc2NlKChoYW5kbGVyKSA9PiBoYW5kbGVyLmdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfSkpO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-90degree-polygon-handler.js b/modules/layers/dist/mode-handlers/draw-90degree-polygon-handler.js new file mode 100644 index 000000000..f1a274edd --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-90degree-polygon-handler.js @@ -0,0 +1,280 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Draw90DegreePolygonHandler = void 0; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var Draw90DegreePolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(Draw90DegreePolygonHandler, _ModeHandler); + + var _super = _createSuper(Draw90DegreePolygonHandler); + + function Draw90DegreePolygonHandler() { + _classCallCheck(this, Draw90DegreePolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(Draw90DegreePolygonHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var handles = _get(_getPrototypeOf(Draw90DegreePolygonHandler.prototype), "getEditHandles", this).call(this, picks, groundCoords); + + var tentativeFeature = this.getTentativeFeature(); + + if (tentativeFeature) { + handles = handles.concat((0, _modeHandler.getEditHandlesForGeometry)(tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } else if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } + } + + return handles; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var tentativeFeature = this.getTentativeFeature(); + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + clickSequence[clickSequence.length - 1] = tentativeFeature.geometry.coordinates[0][clickSequence.length - 1]; + } else if (tentativeFeature && tentativeFeature.geometry.type === 'LineString') { + clickSequence[clickSequence.length - 1] = tentativeFeature.geometry.coordinates[clickSequence.length - 1]; + } + + var p3; + + if (clickSequence.length === 1) { + p3 = groundCoords; + } else { + var p1 = clickSequence[clickSequence.length - 2]; + var p2 = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, groundCoords); + + var _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1); + + p3 = _generatePointsParall2[0]; + } + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [p3]) + } + }); + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [p3, clickSequence[0]])] + } + }); + } + + return result; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(Draw90DegreePolygonHandler.prototype), "handleClick", this).call(this, event); + + var picks = event.picks; + var tentativeFeature = this.getTentativeFeature(); + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(picks); + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; + + if (clickedEditHandle && clickedEditHandle.featureIndex === -1 && (clickedEditHandle.positionIndexes[1] === 0 || clickedEditHandle.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + var polygonToAdd = { + type: 'Polygon', + coordinates: this.finalizedCoordinates(_toConsumableArray(polygon.coordinates[0])) + }; + this.resetClickSequence(); + + this._setTentativeFeature(null); + + editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd); + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + groundCoords: event.groundCoords, + picks: [], + isDragging: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownGroundCoords: null, + sourceEvent: null + }; // @ts-ignore + + this.handlePointerMove(fakePointerMoveEvent); + return editAction; + } + }, { + key: "finalizedCoordinates", + value: function finalizedCoordinates(coords) { + // Remove the hovered position + var coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [coords[0]])]; + var pt = this.getIntermediatePoint(_toConsumableArray(coords)); + + if (!pt) { + // if intermediate point with 90 degree not available + // try remove the last clicked point and get the intermediate point. + var tc = _toConsumableArray(coords); + + tc.splice(-3, 1); + pt = this.getIntermediatePoint(_toConsumableArray(tc)); + + if (pt) { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -3)), [pt, coords[0]])]; + } + } else { + coordinates = [[].concat(_toConsumableArray(coords.slice(0, -2)), [pt, coords[0]])]; + } + + return coordinates; + } + }, { + key: "getIntermediatePoint", + value: function getIntermediatePoint(coordinates) { + var pt; + + if (coordinates.length > 4) { + var _ref2 = _toConsumableArray(coordinates), + p1 = _ref2[0], + p2 = _ref2[1]; + + var angle1 = (0, _bearing["default"])(p1, p2); + var p3 = coordinates[coordinates.length - 3]; + var p4 = coordinates[coordinates.length - 4]; + var angle2 = (0, _bearing["default"])(p3, p4); + var angles = { + first: [], + second: [] + }; // calculate 3 right angle points for first and last points in lineString + + [1, 2, 3].forEach(function (factor) { + var newAngle1 = angle1 + factor * 90; // convert angles to 0 to -180 for anti-clock and 0 to 180 for clock wise + + angles.first.push(newAngle1 > 180 ? newAngle1 - 360 : newAngle1); + var newAngle2 = angle2 + factor * 90; + angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2); + }); + var distance = (0, _distance["default"])((0, _helpers.point)(p1), (0, _helpers.point)(p3)); // Draw imaginary right angle lines for both first and last points in lineString + // If there is intersection point for any 2 lines, will be the 90 degree point. + + [0, 1, 2].forEach(function (indexFirst) { + var line1 = (0, _helpers.lineString)([p1, (0, _destination["default"])(p1, distance, angles.first[indexFirst]).geometry.coordinates]); + [0, 1, 2].forEach(function (indexSecond) { + var line2 = (0, _helpers.lineString)([p3, (0, _destination["default"])(p3, distance, angles.second[indexSecond]).geometry.coordinates]); + var fc = (0, _lineIntersect["default"])(line1, line2); + + if (fc && fc.features.length) { + // found the intersect point + pt = fc.features[0].geometry.coordinates; + } + }); + }); + } + + return pt; + } + }]); + + return Draw90DegreePolygonHandler; +}(_modeHandler.ModeHandler); + +exports.Draw90DegreePolygonHandler = Draw90DegreePolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctOTBkZWdyZWUtcG9seWdvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXc5MERlZ3JlZVBvbHlnb25IYW5kbGVyIiwicGlja3MiLCJncm91bmRDb29yZHMiLCJoYW5kbGVzIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjb25jYXQiLCJnZW9tZXRyeSIsInR5cGUiLCJzbGljZSIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImxlbmd0aCIsImNvb3JkaW5hdGVzIiwicDMiLCJwMSIsInAyIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJldmVudCIsImNsaWNrZWRFZGl0SGFuZGxlIiwicG9seWdvbiIsImZlYXR1cmVJbmRleCIsInBvc2l0aW9uSW5kZXhlcyIsInBvbHlnb25Ub0FkZCIsImZpbmFsaXplZENvb3JkaW5hdGVzIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJmYWtlUG9pbnRlck1vdmVFdmVudCIsInNjcmVlbkNvb3JkcyIsImlzRHJhZ2dpbmciLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bkdyb3VuZENvb3JkcyIsInNvdXJjZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJjb29yZHMiLCJwdCIsImdldEludGVybWVkaWF0ZVBvaW50IiwidGMiLCJzcGxpY2UiLCJhbmdsZTEiLCJwNCIsImFuZ2xlMiIsImFuZ2xlcyIsImZpcnN0Iiwic2Vjb25kIiwiZm9yRWFjaCIsImZhY3RvciIsIm5ld0FuZ2xlMSIsInB1c2giLCJuZXdBbmdsZTIiLCJkaXN0YW5jZSIsImluZGV4Rmlyc3QiLCJsaW5lMSIsImluZGV4U2Vjb25kIiwibGluZTIiLCJmYyIsImZl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Q0FDdkJ6QyxFQUR1QixFQUV2Qiw2QkFBWUEsRUFBWixFQUFnQnFDLFFBQWhCLEVBQTBCUixNQUFNLENBQUNFLE1BQVAsQ0FBY1MsV0FBZCxDQUExQixFQUFzRGxELFFBQXRELENBQStEUyxXQUZ4QyxDQUFYLENBQWQ7QUFJQSxnQkFBTTJDLEVBQUUsR0FBRywrQkFBY0gsS0FBZCxFQUFxQkUsS0FBckIsQ0FBWDs7QUFDQSxnQkFBSUMsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFFBQUgsQ0FBWTdDLE1BQXRCLEVBQThCO0FBQzVCO0FBQ0F3QixjQUFBQSxFQUFFLEdBQUdvQixFQUFFLENBQUNDLFFBQUgsQ0FBWSxDQUFaLEVBQWVyRCxRQUFmLENBQXdCUyxXQUE3QjtBQUNEO0FBQ0YsV0FWRDtBQVdELFNBaEJEO0FBaUJEOztBQUNELGFBQU91QixFQUFQO0FBQ0Q7Ozs7RUFuTDZDc0Isd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVzdGluYXRpb24gZnJvbSAnQHR1cmYvZGVzdGluYXRpb24nO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgbGluZUludGVyc2VjdCBmcm9tICdAdHVyZi9saW5lLWludGVyc2VjdCc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB7IHBvaW50LCBsaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2x5Z29uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ2xpY2tFdmVudCwgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRBY3Rpb24sXG4gIEVkaXRIYW5kbGUsXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3OTBEZWdyZWVQb2x5Z29uSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIGxldCBoYW5kbGVzID0gc3VwZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3Jkcyk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLmNvbmNhdChnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5KHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnksIC0xKSk7XG4gICAgICAvLyBTbGljZSBvZmYgdGhlIGhhbmRsZXMgdGhhdCBhcmUgYXJlIG5leHQgdG8gdGhlIHBvaW50ZXJcbiAgICAgIGlmICh0ZW50YXRpdmVGZWF0dXJlICYmIHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBleGlzdGluZyBoYW5kbGVcbiAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgfSBlbHNlIGlmICh0ZW50YXRpdmVGZWF0dXJlICYmIHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBleGlzdGluZyBoYW5kbGVcbiAgICAgICAgaGFuZGxlcyA9IGhhbmRsZXMuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGVzO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoe1xuICAgIGdyb3VuZENvb3JkcyxcbiAgfTogUG9pbnRlck1vdmVFdmVudCk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmdldFRlbnRhdGl2ZUZlYXR1cmUoKTtcbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdID1cbiAgICAgICAgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1tjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIGxldCBwMztcbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHAzID0gZ3JvdW5kQ29vcmRzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwMSA9IGNsaWNrU2VxdWVuY2VbY2xpY2tTZXF1ZW5jZS5sZW5ndGggLSAyXTtcbiAgICAgIGNvbnN0IHAyID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgICAgW3AzXSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBncm91bmRDb29yZHMpO1xuICAgIH1cblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMpIHtcbiAgICAgIC8vIERyYXcgYSBMaW5lU3RyaW5nIGNvbm5lY3RpbmcgYWxsIHRoZSBjbGlja2VkIHBvaW50cyB3aXRoIHRoZSBob3ZlcmVkIHBvaW50XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIHAzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcmF3IGEgUG9seWdvbiBjb25uZWN0aW5nIGFsbCB0aGUgY2xpY2tlZCBwb2ludHMgd2l0aCB0aGUgaG92ZXJlZCBwb2ludFxuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtbLi4uY2xpY2tTZXF1ZW5jZSwgcDMsIGNsaWNrU2VxdWVuY2VbMF1dXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB7IHBpY2tzIH0gPSBldmVudDtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG5cbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShwaWNrcyk7XG5cbiAgICBpZiAodGVudGF0aXZlRmVhdHVyZSAmJiB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgY29uc3QgcG9seWdvbjogUG9seWdvbiA9IHRlbnRhdGl2ZUZlYXR1cmUuZ2VvbWV0cnk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUgJiZcbiAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4ID09PSAtMSAmJlxuICAgICAgICAoY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzWzFdID09PSAwIHx8XG4gICAgICAgICAgY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzWzFdID09PSBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCAtIDMpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhleSBjbGlja2VkIHRoZSBmaXJzdCBvciBsYXN0IHBvaW50IChvciBkb3VibGUtY2xpY2tlZCksIHNvIGNvbXBsZXRlIHRoZSBwb2x5Z29uXG4gICAgICAgIGNvbnN0IHBvbHlnb25Ub0FkZDogUG9seWdvbiA9IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMuZmluYWxpemVkQ29vcmRpbmF0ZXMoWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF1dKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKG51bGwpO1xuICAgICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbihwb2x5Z29uVG9BZGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyaWdnZXIgcG9pbnRlciBtb3ZlIHJpZ2h0IGF3YXkgaW4gb3JkZXIgZm9yIGl0IHRvIHVwZGF0ZSBlZGl0IGhhbmRsZXMgKHRvIHN1cHBvcnQgZG91YmxlLWNsaWNrKVxuICAgIGNvbnN0IGZha2VQb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBbLTEsIC0xXSxcbiAgICAgIGdyb3VuZENvb3JkczogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgcGlja3M6IFtdLFxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bkdyb3VuZENvb3JkczogbnVsbCxcbiAgICAgIHNvdXJjZUV2ZW50OiBudWxsLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuaGFuZGxlUG9pbnRlck1vdmUoZmFrZVBvaW50ZXJNb3ZlRXZlbnQpO1xuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBmaW5hbGl6ZWRDb29yZGluYXRlcyhjb29yZHM6IFBvc2l0aW9uW10pIHtcbiAgICAvLyBSZW1vdmUgdGhlIGhvdmVyZWQgcG9zaXRpb25cbiAgICBsZXQgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMiksIGNvb3Jkc1swXV1dO1xuICAgIGxldCBwdCA9IHRoaXMuZ2V0SW50ZXJtZWRpYXRlUG9pbnQoWy4uLmNvb3Jkc10pO1xuICAgIGlmICghcHQpIHtcbiAgICAgIC8vIGlmIGludGVybWVkaWF0ZSBwb2ludCB3aXRoIDkwIGRlZ3JlZSBub3QgYXZhaWxhYmxlXG4gICAgICAvLyB0cnkgcmVtb3ZlIHRoZSBsYXN0IGNsaWNrZWQgcG9pbnQgYW5kIGdldCB0aGUgaW50ZXJtZWRpYXRlIHBvaW50LlxuICAgICAgY29uc3QgdGMgPSBbLi4uY29vcmRzXTtcbiAgICAgIHRjLnNwbGljZSgtMywgMSk7XG4gICAgICBwdCA9IHRoaXMuZ2V0SW50ZXJtZWRpYXRlUG9pbnQoWy4uLnRjXSk7XG4gICAgICBpZiAocHQpIHtcbiAgICAgICAgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMyksIHB0LCBjb29yZHNbMF1dXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29vcmRpbmF0ZXMgPSBbWy4uLmNvb3Jkcy5zbGljZSgwLCAtMiksIHB0LCBjb29yZHNbMF1dXTtcbiAgICB9XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICB9XG5cbiAgZ2V0SW50ZXJtZWRpYXRlUG9pbnQoY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10pIHtcbiAgICBsZXQgcHQ7XG4gICAgaWYgKGNvb3JkaW5hdGVzLmxlbmd0aCA+IDQpIHtcbiAgICAgIGNvbnN0IFtwMSwgcDJdID0gWy4uLmNvb3JkaW5hdGVzXTtcbiAgICAgIGNvbnN0IGFuZ2xlMSA9IGJlYXJpbmcocDEsIHAyKTtcbiAgICAgIGNvbnN0IHAzID0gY29vcmRpbmF0ZXNbY29vcmRpbmF0ZXMubGVuZ3RoIC0gM107XG4gICAgICBjb25zdCBwNCA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDRdO1xuICAgICAgY29uc3QgYW5nbGUyID0gYmVhcmluZyhwMywgcDQpO1xuXG4gICAgICBjb25zdCBhbmdsZXMgPSB7IGZpcnN0OiBbXSwgc2Vjb25kOiBbXSB9O1xuICAgICAgLy8gY2FsY3VsYXRlIDMgcmlnaHQgYW5nbGUgcG9pbnRzIGZvciBmaXJzdCBhbmQgbGFzdCBwb2ludHMgaW4gbGluZVN0cmluZ1xuICAgICAgWzEsIDIsIDNdLmZvckVhY2goKGZhY3RvcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdBbmdsZTEgPSBhbmdsZTEgKyBmYWN0b3IgKiA5MDtcbiAgICAgICAgLy8gY29udmVydCBhbmdsZXMgdG8gMCB0byAtMTgwIGZvciBhbnRpLWNsb2NrIGFuZCAwIHRvIDE4MCBmb3IgY2xvY2sgd2lzZVxuICAgICAgICBhbmdsZXMuZmlyc3QucHVzaChuZXdBbmdsZTEgPiAxODAgPyBuZXdBbmdsZTEgLSAzNjAgOiBuZXdBbmdsZTEpO1xuICAgICAgICBjb25zdCBuZXdBbmdsZTIgPSBhbmdsZTIgKyBmYWN0b3IgKiA5MDtcbiAgICAgICAgYW5nbGVzLnNlY29uZC5wdXNoKG5ld0FuZ2xlMiA+IDE4MCA/IG5ld0FuZ2xlMiAtIDM2MCA6IG5ld0FuZ2xlMik7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGlzdGFuY2UgPSB0dXJmRGlzdGFuY2UocG9pbnQocDEpLCBwb2ludChwMykpO1xuICAgICAgLy8gRHJhdyBpbWFnaW5hcnkgcmlnaHQgYW5nbGUgbGluZXMgZm9yIGJvdGggZmlyc3QgYW5kIGxhc3QgcG9pbnRzIGluIGxpbmVTdHJpbmdcbiAgICAgIC8vIElmIHRoZXJlIGlzIGludGVyc2VjdGlvbiBwb2ludCBmb3IgYW55IDIgbGluZXMsIHdpbGwgYmUgdGhlIDkwIGRlZ3JlZSBwb2ludC5cbiAgICAgIFswLCAxLCAyXS5mb3JFYWNoKChpbmRleEZpcnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUxID0gbGluZVN0cmluZyhbXG4gICAgICAgICAgcDEsXG4gICAgICAgICAgZGVzdGluYXRpb24ocDEsIGRpc3RhbmNlLCBhbmdsZXMuZmlyc3RbaW5kZXhGaXJzdF0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgICBdKTtcbiAgICAgICAgWzAsIDEsIDJdLmZvckVhY2goKGluZGV4U2Vjb25kKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGluZTIgPSBsaW5lU3RyaW5nKFtcbiAgICAgICAgICAgIHAzLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ocDMsIGRpc3RhbmNlLCBhbmdsZXMuc2Vjb25kW2luZGV4U2Vjb25kXSkuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgY29uc3QgZmMgPSBsaW5lSW50ZXJzZWN0KGxpbmUxLCBsaW5lMik7XG4gICAgICAgICAgaWYgKGZjICYmIGZjLmZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gZm91bmQgdGhlIGludGVyc2VjdCBwb2ludFxuICAgICAgICAgICAgcHQgPSBmYy5mZWF0dXJlc1swXS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-circle-by-bounding-box-handler.js b/modules/layers/dist/mode-handlers/draw-circle-by-bounding-box-handler.js new file mode 100644 index 000000000..e68a167b1 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-circle-by-bounding-box-handler.js @@ -0,0 +1,94 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleByBoundingBoxHandler = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _modeHandler = require("./mode-handler"); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawCircleByBoundingBoxHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawCircleByBoundingBoxHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawCircleByBoundingBoxHandler); + + function DrawCircleByBoundingBoxHandler() { + _classCallCheck(this, DrawCircleByBoundingBoxHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleByBoundingBoxHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var modeConfig = this.getModeConfig() || {}; // Default turf value for circle is 64 + + var _modeConfig$steps = modeConfig.steps, + steps = _modeConfig$steps === void 0 ? 64 : _modeConfig$steps; + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var firstClickedPoint = clickSequence[0]; + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(firstClickedPoint, event.groundCoords); + var radius = Math.max((0, _distance["default"])(firstClickedPoint, centerCoordinates), 0.001); + + this._setTentativeFeature((0, _circle["default"])(centerCoordinates, radius, options)); + + return result; + } + }]); + + return DrawCircleByBoundingBoxHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawCircleByBoundingBoxHandler = DrawCircleByBoundingBoxHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctY2lyY2xlLWJ5LWJvdW5kaW5nLWJveC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdDaXJjbGVCeUJvdW5kaW5nQm94SGFuZGxlciIsImV2ZW50IiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGVuZ3RoIiwibW9kZUNvbmZpZyIsImdldE1vZGVDb25maWciLCJzdGVwcyIsIm9wdGlvbnMiLCJjb25zb2xlIiwid2FybiIsImZpcnN0Q2xpY2tlZFBvaW50IiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJncm91bmRDb29yZHMiLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsOEI7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sVUFBVSxHQUFHLEtBQUtDLGFBQUwsTUFBd0IsRUFBM0MsQ0FUc0UsQ0FVdEU7O0FBVnNFLDhCQVcvQ0QsVUFYK0MsQ0FXOURFLEtBWDhEO0FBQUEsVUFXOURBLEtBWDhELGtDQVd0RCxFQVhzRDtBQVl0RSxVQUFNQyxPQUFPLEdBQUc7QUFBRUQsUUFBQUEsS0FBSyxFQUFMQTtBQUFGLE9BQWhCOztBQUVBLFVBQUlBLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYkUsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLHlDQURhLENBQ3lDOztBQUN0REYsUUFBQUEsT0FBTyxDQUFDRCxLQUFSLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBTUksaUJBQWlCLEdBQUdULGFBQWEsQ0FBQyxDQUFELENBQXZDO0FBQ0EsVUFBTVUsaUJBQWlCLEdBQUcsMENBQXdCRCxpQkFBeEIsRUFBMkNiLEtBQUssQ0FBQ2UsWUFBakQsQ0FBMUI7QUFDQSxVQUFNQyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTTCxpQkFBVCxFQUE0QkMsaUJBQTVCLENBQVQsRUFBeUQsS0FBekQsQ0FBZjs7QUFDQSxXQUFLSyxvQkFBTCxDQUEwQix3QkFBT0wsaUJBQVAsRUFBMEJFLE1BQTFCLEVBQWtDTixPQUFsQyxDQUExQjs7QUFFQSxhQUFPVCxNQUFQO0FBQ0Q7Ozs7RUE1QmlEbUIsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuaW1wb3J0IHsgVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciB9IGZyb20gJy4vdHdvLWNsaWNrLXBvbHlnb24taGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3Q2lyY2xlQnlCb3VuZGluZ0JveEhhbmRsZXIgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIHtcbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuZ2V0TW9kZUNvbmZpZygpIHx8IHt9O1xuICAgIC8vIERlZmF1bHQgdHVyZiB2YWx1ZSBmb3IgY2lyY2xlIGlzIDY0XG4gICAgY29uc3QgeyBzdGVwcyA9IDY0IH0gPSBtb2RlQ29uZmlnO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHN0ZXBzIH07XG5cbiAgICBpZiAoc3RlcHMgPCA0KSB7XG4gICAgICBjb25zb2xlLndhcm4oYE1pbmltdW0gc3RlcHMgdG8gZHJhdyBhIGNpcmNsZSBpcyA0IGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIG9wdGlvbnMuc3RlcHMgPSA0O1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0Q2xpY2tlZFBvaW50ID0gY2xpY2tTZXF1ZW5jZVswXTtcbiAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKGZpcnN0Q2xpY2tlZFBvaW50LCBldmVudC5ncm91bmRDb29yZHMpO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGZpcnN0Q2xpY2tlZFBvaW50LCBjZW50ZXJDb29yZGluYXRlcyksIDAuMDAxKTtcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGNpcmNsZShjZW50ZXJDb29yZGluYXRlcywgcmFkaXVzLCBvcHRpb25zKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-circle-from-center-handler.js b/modules/layers/dist/mode-handlers/draw-circle-from-center-handler.js new file mode 100644 index 000000000..03d3034ab --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-circle-from-center-handler.js @@ -0,0 +1,91 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawCircleFromCenterHandler = void 0; + +var _circle = _interopRequireDefault(require("@turf/circle")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawCircleFromCenterHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawCircleFromCenterHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawCircleFromCenterHandler); + + function DrawCircleFromCenterHandler() { + _classCallCheck(this, DrawCircleFromCenterHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawCircleFromCenterHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var modeConfig = this.getModeConfig() || {}; // Default turf value for circle is 64 + + var _modeConfig$steps = modeConfig.steps, + steps = _modeConfig$steps === void 0 ? 64 : _modeConfig$steps; + var options = { + steps: steps + }; + + if (steps < 4) { + console.warn("Minimum steps to draw a circle is 4 "); // eslint-disable-line no-console,no-undef + + options.steps = 4; + } + + var centerCoordinates = clickSequence[0]; + var radius = Math.max((0, _distance["default"])(centerCoordinates, event.groundCoords), 0.001); + + this._setTentativeFeature((0, _circle["default"])(centerCoordinates, radius, options)); + + return result; + } + }]); + + return DrawCircleFromCenterHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawCircleFromCenterHandler = DrawCircleFromCenterHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctY2lyY2xlLWZyb20tY2VudGVyLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiRHJhd0NpcmNsZUZyb21DZW50ZXJIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJtb2RlQ29uZmlnIiwiZ2V0TW9kZUNvbmZpZyIsInN0ZXBzIiwib3B0aW9ucyIsImNvbnNvbGUiLCJ3YXJuIiwiY2VudGVyQ29vcmRpbmF0ZXMiLCJyYWRpdXMiLCJNYXRoIiwibWF4IiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsMkI7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sVUFBVSxHQUFHLEtBQUtDLGFBQUwsTUFBd0IsRUFBM0MsQ0FUc0UsQ0FVdEU7O0FBVnNFLDhCQVcvQ0QsVUFYK0MsQ0FXOURFLEtBWDhEO0FBQUEsVUFXOURBLEtBWDhELGtDQVd0RCxFQVhzRDtBQVl0RSxVQUFNQyxPQUFPLEdBQUc7QUFBRUQsUUFBQUEsS0FBSyxFQUFMQTtBQUFGLE9BQWhCOztBQUVBLFVBQUlBLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDYkUsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLHlDQURhLENBQ3lDOztBQUN0REYsUUFBQUEsT0FBTyxDQUFDRCxLQUFSLEdBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsVUFBTUksaUJBQWlCLEdBQUdULGFBQWEsQ0FBQyxDQUFELENBQXZDO0FBQ0EsVUFBTVUsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0gsaUJBQVQsRUFBNEJiLEtBQUssQ0FBQ2lCLFlBQWxDLENBQVQsRUFBMEQsS0FBMUQsQ0FBZjs7QUFDQSxXQUFLQyxvQkFBTCxDQUEwQix3QkFBT0wsaUJBQVAsRUFBMEJDLE1BQTFCLEVBQWtDSixPQUFsQyxDQUExQjs7QUFFQSxhQUFPVCxNQUFQO0FBQ0Q7Ozs7RUEzQjhDa0IsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2lyY2xlIGZyb20gJ0B0dXJmL2NpcmNsZSc7XG5pbXBvcnQgZGlzdGFuY2UgZnJvbSAnQHR1cmYvZGlzdGFuY2UnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdDaXJjbGVGcm9tQ2VudGVySGFuZGxlciBleHRlbmRzIFR3b0NsaWNrUG9seWdvbkhhbmRsZXIge1xuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvIHlldFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCkgfHwge307XG4gICAgLy8gRGVmYXVsdCB0dXJmIHZhbHVlIGZvciBjaXJjbGUgaXMgNjRcbiAgICBjb25zdCB7IHN0ZXBzID0gNjQgfSA9IG1vZGVDb25maWc7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgc3RlcHMgfTtcblxuICAgIGlmIChzdGVwcyA8IDQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgTWluaW11bSBzdGVwcyB0byBkcmF3IGEgY2lyY2xlIGlzIDQgYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgb3B0aW9ucy5zdGVwcyA9IDQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2VudGVyQ29vcmRpbmF0ZXMgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWF4KGRpc3RhbmNlKGNlbnRlckNvb3JkaW5hdGVzLCBldmVudC5ncm91bmRDb29yZHMpLCAwLjAwMSk7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShjaXJjbGUoY2VudGVyQ29vcmRpbmF0ZXMsIHJhZGl1cywgb3B0aW9ucykpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js b/modules/layers/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js new file mode 100644 index 000000000..3f801341a --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js @@ -0,0 +1,91 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseByBoundingBoxHandler = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawEllipseByBoundingBoxHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawEllipseByBoundingBoxHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawEllipseByBoundingBoxHandler); + + function DrawEllipseByBoundingBoxHandler() { + _classCallCheck(this, DrawEllipseByBoundingBoxHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseByBoundingBoxHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var corner1 = clickSequence[0]; + var corner2 = event.groundCoords; + var minX = Math.min(corner1[0], corner2[0]); + var minY = Math.min(corner1[1], corner2[1]); + var maxX = Math.max(corner1[0], corner2[0]); + var maxY = Math.max(corner1[1], corner2[1]); + var polygonPoints = (0, _bboxPolygon["default"])([minX, minY, maxX, maxY]).geometry.coordinates[0]; + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(corner1, corner2); + var xSemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[1])), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])((0, _helpers.point)(polygonPoints[0]), (0, _helpers.point)(polygonPoints[3])), 0.001); // @ts-ignore + + this._setTentativeFeature((0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis)); + + return result; + } + }]); + + return DrawEllipseByBoundingBoxHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawEllipseByBoundingBoxHandler = DrawEllipseByBoundingBoxHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctZWxsaXBzZS1ieS1ib3VuZGluZy1ib3gtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3RWxsaXBzZUJ5Qm91bmRpbmdCb3hIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJjb3JuZXIxIiwiY29ybmVyMiIsImdyb3VuZENvb3JkcyIsIm1pblgiLCJNYXRoIiwibWluIiwibWluWSIsIm1heFgiLCJtYXgiLCJtYXhZIiwicG9seWdvblBvaW50cyIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJjZW50ZXJDb29yZGluYXRlcyIsInhTZW1pQXhpcyIsInlTZW1pQXhpcyIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwiVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLCtCOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLE9BQU8sR0FBR0gsYUFBYSxDQUFDLENBQUQsQ0FBN0I7QUFDQSxVQUFNSSxPQUFPLEdBQUdSLEtBQUssQ0FBQ1MsWUFBdEI7QUFFQSxVQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTTCxPQUFPLENBQUMsQ0FBRCxDQUFoQixFQUFxQkMsT0FBTyxDQUFDLENBQUQsQ0FBNUIsQ0FBYjtBQUNBLFVBQU1LLElBQUksR0FBR0YsSUFBSSxDQUFDQyxHQUFMLENBQVNMLE9BQU8sQ0FBQyxDQUFELENBQWhCLEVBQXFCQyxPQUFPLENBQUMsQ0FBRCxDQUE1QixDQUFiO0FBQ0EsVUFBTU0sSUFBSSxHQUFHSCxJQUFJLENBQUNJLEdBQUwsQ0FBU1IsT0FBTyxDQUFDLENBQUQsQ0FBaEIsRUFBcUJDLE9BQU8sQ0FBQyxDQUFELENBQTVCLENBQWI7QUFDQSxVQUFNUSxJQUFJLEdBQUdMLElBQUksQ0FBQ0ksR0FBTCxDQUFTUixPQUFPLENBQUMsQ0FBRCxDQUFoQixFQUFxQkMsT0FBTyxDQUFDLENBQUQsQ0FBNUIsQ0FBYjtBQUVBLFVBQU1TLGFBQWEsR0FBRyw2QkFBWSxDQUFDUCxJQUFELEVBQU9HLElBQVAsRUFBYUMsSUFBYixFQUFtQkUsSUFBbkIsQ0FBWixFQUFzQ0UsUUFBdEMsQ0FBK0NDLFdBQS9DLENBQTJELENBQTNELENBQXRCO0FBQ0EsVUFBTUMsaUJBQWlCLEdBQUcsMENBQXdCYixPQUF4QixFQUFpQ0MsT0FBakMsQ0FBMUI7QUFFQSxVQUFNYSxTQUFTLEdBQUdWLElBQUksQ0FBQ0ksR0FBTCxDQUFTLDBCQUFTLG9CQUFNRSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFULEVBQWtDLG9CQUFNQSxhQUFhLENBQUMsQ0FBRCxDQUFuQixDQUFsQyxDQUFULEVBQXFFLEtBQXJFLENBQWxCO0FBQ0EsVUFBTUssU0FBUyxHQUFHWCxJQUFJLENBQUNJLEdBQUwsQ0FBUywwQkFBUyxvQkFBTUUsYUFBYSxDQUFDLENBQUQsQ0FBbkIsQ0FBVCxFQUFrQyxvQkFBTUEsYUFBYSxDQUFDLENBQUQsQ0FBbkIsQ0FBbEMsQ0FBVCxFQUFxRSxLQUFyRSxDQUFsQixDQXJCc0UsQ0FzQnRFOztBQUNBLFdBQUtNLG9CQUFMLENBQTBCLHlCQUFRSCxpQkFBUixFQUEyQkMsU0FBM0IsRUFBc0NDLFNBQXRDLENBQTFCOztBQUVBLGFBQU9yQixNQUFQO0FBQ0Q7Ozs7RUE3QmtEdUIsOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmJveFBvbHlnb24gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCBkaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgZWxsaXBzZSBmcm9tICdAdHVyZi9lbGxpcHNlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveEhhbmRsZXIgZXh0ZW5kcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIHtcbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29uc3QgY29ybmVyMSA9IGNsaWNrU2VxdWVuY2VbMF07XG4gICAgY29uc3QgY29ybmVyMiA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGNvbnN0IG1pblggPSBNYXRoLm1pbihjb3JuZXIxWzBdLCBjb3JuZXIyWzBdKTtcbiAgICBjb25zdCBtaW5ZID0gTWF0aC5taW4oY29ybmVyMVsxXSwgY29ybmVyMlsxXSk7XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KGNvcm5lcjFbMF0sIGNvcm5lcjJbMF0pO1xuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChjb3JuZXIxWzFdLCBjb3JuZXIyWzFdKTtcblxuICAgIGNvbnN0IHBvbHlnb25Qb2ludHMgPSBiYm94UG9seWdvbihbbWluWCwgbWluWSwgbWF4WCwgbWF4WV0pLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgIGNvbnN0IGNlbnRlckNvb3JkaW5hdGVzID0gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24oY29ybmVyMSwgY29ybmVyMik7XG5cbiAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShwb2ludChwb2x5Z29uUG9pbnRzWzBdKSwgcG9pbnQocG9seWdvblBvaW50c1sxXSkpLCAwLjAwMSk7XG4gICAgY29uc3QgeVNlbWlBeGlzID0gTWF0aC5tYXgoZGlzdGFuY2UocG9pbnQocG9seWdvblBvaW50c1swXSksIHBvaW50KHBvbHlnb25Qb2ludHNbM10pKSwgMC4wMDEpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGVsbGlwc2UoY2VudGVyQ29vcmRpbmF0ZXMsIHhTZW1pQXhpcywgeVNlbWlBeGlzKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-ellipse-using-three-points-handler.js b/modules/layers/dist/mode-handlers/draw-ellipse-using-three-points-handler.js new file mode 100644 index 000000000..93abfc429 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-ellipse-using-three-points-handler.js @@ -0,0 +1,115 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawEllipseUsingThreePointsHandler = void 0; + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _ellipse = _interopRequireDefault(require("@turf/ellipse")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +var _threeClickPolygonHandler = require("./three-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawEllipseUsingThreePointsHandler = /*#__PURE__*/function (_ThreeClickPolygonHan) { + _inherits(DrawEllipseUsingThreePointsHandler, _ThreeClickPolygonHan); + + var _super = _createSuper(DrawEllipseUsingThreePointsHandler); + + function DrawEllipseUsingThreePointsHandler() { + _classCallCheck(this, DrawEllipseUsingThreePointsHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawEllipseUsingThreePointsHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var groundCoords = event.groundCoords; + + if (clickSequence.length === 1) { + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], groundCoords] + } + }); + } else if (clickSequence.length === 2) { + var _clickSequence = _slicedToArray(clickSequence, 2), + p1 = _clickSequence[0], + p2 = _clickSequence[1]; + + var centerCoordinates = (0, _modeHandler.getIntermediatePosition)(p1, p2); + var xSemiAxis = Math.max((0, _distance["default"])(centerCoordinates, (0, _helpers.point)(groundCoords)), 0.001); + var ySemiAxis = Math.max((0, _distance["default"])(p1, p2), 0.001) / 2; + var options = { + angle: (0, _bearing["default"])(p1, p2) + }; // @ts-ignore + + this._setTentativeFeature((0, _ellipse["default"])(centerCoordinates, xSemiAxis, ySemiAxis, options)); + } + + return result; + } + }]); + + return DrawEllipseUsingThreePointsHandler; +}(_threeClickPolygonHandler.ThreeClickPolygonHandler); + +exports.DrawEllipseUsingThreePointsHandler = DrawEllipseUsingThreePointsHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctZWxsaXBzZS11c2luZy10aHJlZS1wb2ludHMtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3RWxsaXBzZVVzaW5nVGhyZWVQb2ludHNIYW5kbGVyIiwiZXZlbnQiLCJyZXN1bHQiLCJlZGl0QWN0aW9uIiwiY2FuY2VsTWFwUGFuIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJncm91bmRDb29yZHMiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsInR5cGUiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwicDEiLCJwMiIsImNlbnRlckNvb3JkaW5hdGVzIiwieFNlbWlBeGlzIiwiTWF0aCIsIm1heCIsInlTZW1pQXhpcyIsIm9wdGlvbnMiLCJhbmdsZSIsIlRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLGtDOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLFlBQVksR0FBR1AsS0FBSyxDQUFDTyxZQUEzQjs7QUFFQSxVQUFJSCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsYUFBS0Usb0JBQUwsQ0FBMEI7QUFDeEJDLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JELFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJFLFlBQUFBLFdBQVcsRUFBRSxDQUFDUCxhQUFhLENBQUMsQ0FBRCxDQUFkLEVBQW1CRyxZQUFuQjtBQUZMO0FBRmMsU0FBMUI7QUFPRCxPQVJELE1BUU8sSUFBSUgsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQUEsNENBQ3BCRixhQURvQjtBQUFBLFlBQzlCUSxFQUQ4QjtBQUFBLFlBQzFCQyxFQUQwQjs7QUFHckMsWUFBTUMsaUJBQWlCLEdBQUcsMENBQXdCRixFQUF4QixFQUE0QkMsRUFBNUIsQ0FBMUI7QUFDQSxZQUFNRSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLDBCQUFTSCxpQkFBVCxFQUE0QixvQkFBTVAsWUFBTixDQUE1QixDQUFULEVBQTJELEtBQTNELENBQWxCO0FBQ0EsWUFBTVcsU0FBUyxHQUFHRixJQUFJLENBQUNDLEdBQUwsQ0FBUywwQkFBU0wsRUFBVCxFQUFhQyxFQUFiLENBQVQsRUFBMkIsS0FBM0IsSUFBb0MsQ0FBdEQ7QUFDQSxZQUFNTSxPQUFPLEdBQUc7QUFBRUMsVUFBQUEsS0FBSyxFQUFFLHlCQUFRUixFQUFSLEVBQVlDLEVBQVo7QUFBVCxTQUFoQixDQU5xQyxDQU9yQzs7QUFDQSxhQUFLTCxvQkFBTCxDQUEwQix5QkFBUU0saUJBQVIsRUFBMkJDLFNBQTNCLEVBQXNDRyxTQUF0QyxFQUFpREMsT0FBakQsQ0FBMUI7QUFDRDs7QUFFRCxhQUFPbEIsTUFBUDtBQUNEOzs7O0VBbENxRG9CLGtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCBlbGxpcHNlIGZyb20gJ0B0dXJmL2VsbGlwc2UnO1xuaW1wb3J0IGJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIGdldEludGVybWVkaWF0ZVBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuaW1wb3J0IHsgVGhyZWVDbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90aHJlZS1jbGljay1wb2x5Z29uLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzSGFuZGxlciBleHRlbmRzIFRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciB7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VuZENvb3JkcyA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtjbGlja1NlcXVlbmNlWzBdLCBncm91bmRDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBjbGlja1NlcXVlbmNlO1xuXG4gICAgICBjb25zdCBjZW50ZXJDb29yZGluYXRlcyA9IGdldEludGVybWVkaWF0ZVBvc2l0aW9uKHAxLCBwMik7XG4gICAgICBjb25zdCB4U2VtaUF4aXMgPSBNYXRoLm1heChkaXN0YW5jZShjZW50ZXJDb29yZGluYXRlcywgcG9pbnQoZ3JvdW5kQ29vcmRzKSksIDAuMDAxKTtcbiAgICAgIGNvbnN0IHlTZW1pQXhpcyA9IE1hdGgubWF4KGRpc3RhbmNlKHAxLCBwMiksIDAuMDAxKSAvIDI7XG4gICAgICBjb25zdCBvcHRpb25zID0geyBhbmdsZTogYmVhcmluZyhwMSwgcDIpIH07XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKGVsbGlwc2UoY2VudGVyQ29vcmRpbmF0ZXMsIHhTZW1pQXhpcywgeVNlbWlBeGlzLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-line-string-handler.js b/modules/layers/dist/mode-handlers/draw-line-string-handler.js new file mode 100644 index 000000000..9b6c6f5c9 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-line-string-handler.js @@ -0,0 +1,146 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawLineStringHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawLineStringHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawLineStringHandler, _ModeHandler); + + var _super = _createSuper(DrawLineStringHandler); + + function DrawLineStringHandler() { + _classCallCheck(this, DrawLineStringHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawLineStringHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(DrawLineStringHandler.prototype), "handleClick", this).call(this, event); + + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var selectedGeometry = this.getSelectedGeometry(); + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (selectedFeatureIndexes.length > 1 || selectedGeometry && selectedGeometry.type !== 'LineString') { + console.warn("drawLineString mode only supported for single LineString selection"); // eslint-disable-line + + this.resetClickSequence(); + return null; + } + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + // Extend the LineString + var lineString = selectedGeometry; + var positionIndexes = [lineString.coordinates.length]; + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.drawAtFront) { + positionIndexes = [0]; + } + + var featureIndex = selectedFeatureIndexes[0]; + var updatedData = this.getImmutableFeatureCollection().addPosition(featureIndex, positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'addPosition', + featureIndexes: [featureIndex], + editContext: { + positionIndexes: positionIndexes, + position: event.groundCoords + } + }; + this.resetClickSequence(); + } else if (clickSequence.length === 2 && tentativeFeature) { + // Add a new LineString + var geometry = tentativeFeature.geometry; + editAction = this.getAddFeatureAction(geometry); + this.resetClickSequence(); + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + var groundCoords = event.groundCoords; + var startPosition = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var selectedGeometry = this.getSelectedGeometry(); + + if (selectedFeatureIndexes.length > 1 || selectedGeometry && selectedGeometry.type !== 'LineString') { + // unsupported + return result; + } + + if (selectedGeometry && selectedGeometry.type === 'LineString') { + // Draw an extension line starting from one end of the selected LineString + startPosition = selectedGeometry.coordinates[selectedGeometry.coordinates.length - 1]; + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.drawAtFront) { + startPosition = selectedGeometry.coordinates[0]; + } + } else if (clickSequence.length === 1) { + startPosition = clickSequence[0]; + } + + if (startPosition) { + this._setTentativeFeature({ + type: 'Feature', + properties: {}, + geometry: { + type: 'LineString', + coordinates: [startPosition, groundCoords] + } + }); + } + + return result; + } + }]); + + return DrawLineStringHandler; +}(_modeHandler.ModeHandler); + +exports.DrawLineStringHandler = DrawLineStringHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctbGluZS1zdHJpbmctaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3TGluZVN0cmluZ0hhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsInR5cGUiLCJjb25zb2xlIiwid2FybiIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsImxpbmVTdHJpbmciLCJwb3NpdGlvbkluZGV4ZXMiLCJjb29yZGluYXRlcyIsIm1vZGVDb25maWciLCJnZXRNb2RlQ29uZmlnIiwiZHJhd0F0RnJvbnQiLCJmZWF0dXJlSW5kZXgiLCJ1cGRhdGVkRGF0YSIsImdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiYWRkUG9zaXRpb24iLCJncm91bmRDb29yZHMiLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImZlYXR1cmVJbmRleGVzIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsImdlb21ldHJ5IiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsInJlc3VsdCIsImNhbmNlbE1hcFBhbiIsInN0YXJ0UG9zaXRpb24iLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsInByb3BlcnRpZXMiLCJNb2RlSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEscUI7Ozs7Ozs7Ozs7Ozs7Z0NBQ0NDLEssRUFBa0Q7QUFDNUQsNkZBQWtCQSxLQUFsQjs7QUFFQSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBQ0EsVUFBTUMsc0JBQXNCLEdBQUcsS0FBS0MseUJBQUws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QUVBLFlBQU1RLFVBQVUsR0FBRyxLQUFLQyxhQUFMLEVBQW5COztBQUNBLFlBQUlELFVBQVUsSUFBSUEsVUFBVSxDQUFDRSxXQUE3QixFQUEwQztBQUN4Q2UsVUFBQUEsYUFBYSxHQUFHL0IsZ0JBQWdCLENBQUNhLFdBQWpCLENBQTZCLENBQTdCLENBQWhCO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSVQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQ3JDeUIsUUFBQUEsYUFBYSxHQUFHM0IsYUFBYSxDQUFDLENBQUQsQ0FBN0I7QUFDRDs7QUFFRCxVQUFJMkIsYUFBSixFQUFtQjtBQUNqQixhQUFLQyxvQkFBTCxDQUEwQjtBQUN4QnpCLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QjBCLFVBQUFBLFVBQVUsRUFBRSxFQUZZO0FBR3hCTixVQUFBQSxRQUFRLEVBQUU7QUFDUnBCLFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJNLFlBQUFBLFdBQVcsRUFBRSxDQUFDa0IsYUFBRCxFQUFnQlYsWUFBaEI7QUFGTDtBQUhjLFNBQTFCO0FBUUQ7O0FBRUQsYUFBT1EsTUFBUDtBQUNEOzs7O0VBcEd3Q0ssd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiwgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBDbGlja0V2ZW50LCBQb2ludGVyTW92ZUV2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3TGluZVN0cmluZ0hhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHN1cGVyLmhhbmRsZUNsaWNrKGV2ZW50KTtcblxuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGNvbnN0IHNlbGVjdGVkR2VvbWV0cnkgPSB0aGlzLmdldFNlbGVjdGVkR2VvbWV0cnkoKTtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcy5sZW5ndGggPiAxIHx8XG4gICAgICAoc2VsZWN0ZWRHZW9tZXRyeSAmJiBzZWxlY3RlZEdlb21ldHJ5LnR5cGUgIT09ICdMaW5lU3RyaW5nJylcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihgZHJhd0xpbmVTdHJpbmcgbW9kZSBvbmx5IHN1cHBvcnRlZCBmb3Igc2luZ2xlIExpbmVTdHJpbmcgc2VsZWN0aW9uYCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIHRoaXMucmVzZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0ZWRHZW9tZXRyeSAmJiBzZWxlY3RlZEdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgLy8gRXh0ZW5kIHRoZSBMaW5lU3RyaW5nXG4gICAgICBjb25zdCBsaW5lU3RyaW5nOiBMaW5lU3RyaW5nID0gc2VsZWN0ZWRHZW9tZXRyeTtcblxuICAgICAgbGV0IHBvc2l0aW9uSW5kZXhlcyA9IFtsaW5lU3RyaW5nLmNvb3JkaW5hdGVzLmxlbmd0aF07XG5cbiAgICAgIGNvbnN0IG1vZGVDb25maWcgPSB0aGlzLmdldE1vZGVDb25maWcoKTtcbiAgICAgIGlmIChtb2RlQ29uZmlnICYmIG1vZGVDb25maWcuZHJhd0F0RnJvbnQpIHtcbiAgICAgICAgcG9zaXRpb25JbmRleGVzID0gWzBdO1xuICAgICAgfVxuICAgICAgY29uc3QgZmVhdHVyZUluZGV4ID0gc2VsZWN0ZWRGZWF0dXJlSW5kZXhlc1swXTtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgIC5hZGRQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICB9IGVsc2UgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAyICYmIHRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIC8vIEFkZCBhIG5ldyBMaW5lU3RyaW5nXG4gICAgICBjb25zdCBnZW9tZXRyeTogYW55ID0gdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeTtcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnkpO1xuXG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgZWRpdEFjdGlvbjogbnVsbCwgY2FuY2VsTWFwUGFuOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgIGNvbnN0IGdyb3VuZENvb3JkcyA9IGV2ZW50Lmdyb3VuZENvb3JkcztcblxuICAgIGxldCBzdGFydFBvc2l0aW9uOiBQb3NpdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KCk7XG5cbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCA+IDEgfHxcbiAgICAgIChzZWxlY3RlZEdlb21ldHJ5ICYmIHNlbGVjdGVkR2VvbWV0cnkudHlwZSAhPT0gJ0xpbmVTdHJpbmcnKVxuICAgICkge1xuICAgICAgLy8gdW5zdXBwb3J0ZWRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdGVkR2VvbWV0cnkgJiYgc2VsZWN0ZWRHZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgIC8vIERyYXcgYW4gZXh0ZW5zaW9uIGxpbmUgc3RhcnRpbmcgZnJvbSBvbmUgZW5kIG9mIHRoZSBzZWxlY3RlZCBMaW5lU3RyaW5nXG4gICAgICBzdGFydFBvc2l0aW9uID0gc2VsZWN0ZWRHZW9tZXRyeS5jb29yZGluYXRlc1tzZWxlY3RlZEdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgICBpZiAobW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLmRyYXdBdEZyb250KSB7XG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPSBzZWxlY3RlZEdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0YXJ0UG9zaXRpb24gPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIH1cblxuICAgIGlmIChzdGFydFBvc2l0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtzdGFydFBvc2l0aW9uLCBncm91bmRDb29yZHNdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-point-handler.js b/modules/layers/dist/mode-handlers/draw-point-handler.js new file mode 100644 index 000000000..33910fc72 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-point-handler.js @@ -0,0 +1,61 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPointHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawPointHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawPointHandler, _ModeHandler); + + var _super = _createSuper(DrawPointHandler); + + function DrawPointHandler() { + _classCallCheck(this, DrawPointHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawPointHandler, [{ + key: "handleClick", + value: function handleClick(_ref) { + var groundCoords = _ref.groundCoords; + var geometry = { + type: 'Point', + coordinates: groundCoords + }; // @ts-ignore + + return this.getAddFeatureAction(geometry); + } + }]); + + return DrawPointHandler; +}(_modeHandler.ModeHandler); + +exports.DrawPointHandler = DrawPointHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcG9pbnQtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJEcmF3UG9pbnRIYW5kbGVyIiwiZ3JvdW5kQ29vcmRzIiwiZ2VvbWV0cnkiLCJ0eXBlIiwiY29vcmRpbmF0ZXMiLCJnZXRBZGRGZWF0dXJlQWN0aW9uIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsZ0I7Ozs7Ozs7Ozs7Ozs7c0NBQzhEO0FBQUEsVUFBM0RDLFlBQTJELFFBQTNEQSxZQUEyRDtBQUN2RSxVQUFNQyxRQUFRLEdBQUc7QUFDZkMsUUFBQUEsSUFBSSxFQUFFLE9BRFM7QUFFZkMsUUFBQUEsV0FBVyxFQUFFSDtBQUZFLE9BQWpCLENBRHVFLENBS3ZFOztBQUNBLGFBQU8sS0FBS0ksbUJBQUwsQ0FBeUJILFFBQXpCLENBQVA7QUFDRDs7OztFQVJtQ0ksd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3UG9pbnRIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayh7IGdyb3VuZENvb3JkcyB9OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGdlb21ldHJ5ID0ge1xuICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgIGNvb3JkaW5hdGVzOiBncm91bmRDb29yZHMsXG4gICAgfTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWRkRmVhdHVyZUFjdGlvbihnZW9tZXRyeSk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-polygon-handler.js b/modules/layers/dist/mode-handlers/draw-polygon-handler.js new file mode 100644 index 000000000..58f4cec62 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-polygon-handler.js @@ -0,0 +1,172 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(DrawPolygonHandler, _ModeHandler); + + var _super = _createSuper(DrawPolygonHandler); + + function DrawPolygonHandler() { + _classCallCheck(this, DrawPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawPolygonHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var handles = _get(_getPrototypeOf(DrawPolygonHandler.prototype), "getEditHandles", this).call(this, picks, groundCoords); + + if (this._tentativeFeature) { + handles = handles.concat((0, _modeHandler.getEditHandlesForGeometry)(this._tentativeFeature.geometry, -1)); // Slice off the handles that are are next to the pointer + + if (this._tentativeFeature && this._tentativeFeature.geometry.type === 'LineString') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } else if (this._tentativeFeature && this._tentativeFeature.geometry.type === 'Polygon') { + // Remove the last existing handle + handles = handles.slice(0, -1); + } + } + + return handles; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(DrawPolygonHandler.prototype), "handleClick", this).call(this, event); + + var picks = event.picks; + var tentativeFeature = this.getTentativeFeature(); + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(picks); + + if (clickedEditHandle) { + // User clicked an edit handle. + // Remove it from the click sequence, so it isn't added as a new point. + var clickSequence = this.getClickSequence(); + clickSequence.splice(clickSequence.length - 1, 1); + } + + if (tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var polygon = tentativeFeature.geometry; + + if (clickedEditHandle && clickedEditHandle.featureIndex === -1 && (clickedEditHandle.positionIndexes[1] === 0 || clickedEditHandle.positionIndexes[1] === polygon.coordinates[0].length - 3)) { + // They clicked the first or last point (or double-clicked), so complete the polygon + // Remove the hovered position + var polygonToAdd = { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(polygon.coordinates[0].slice(0, -2)), [polygon.coordinates[0][0]])] + }; + this.resetClickSequence(); + + this._setTentativeFeature(null); + + editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd); + } + } // Trigger pointer move right away in order for it to update edit handles (to support double-click) + + + var fakePointerMoveEvent = { + screenCoords: [-1, -1], + groundCoords: event.groundCoords, + picks: [], + isDragging: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownGroundCoords: null, + sourceEvent: null + }; // @ts-ignore + + this.handlePointerMove(fakePointerMoveEvent); + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + if (clickSequence.length < 3) { + // Draw a LineString connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [groundCoords]) + } + }); + } else { + // Draw a Polygon connecting all the clicked points with the hovered point + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(clickSequence), [groundCoords, clickSequence[0]])] + } + }); + } + + return result; + } + }]); + + return DrawPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.DrawPolygonHandler = DrawPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcG9seWdvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdQb2x5Z29uSGFuZGxlciIsInBpY2tzIiwiZ3JvdW5kQ29vcmRzIiwiaGFuZGxlcyIsIl90ZW50YXRpdmVGZWF0dXJlIiwiY29uY2F0IiwiZ2VvbWV0cnkiLCJ0eXBlIiwic2xpY2UiLCJldmVudCIsInRlbnRhdGl2ZUZlYXR1cmUiLCJnZXRUZW50YXRpdmVGZWF0dXJlIiwiZWRpdEFjdGlvbiIsImNsaWNrZWRFZGl0SGFuZGxlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJzcGxpY2UiLCJsZW5ndGgiLCJwb2x5Z29uIiwiZmVhdHVyZUluZGV4IiwicG9zaXRpb25JbmRleGVzIiwiY29vcmRpbmF0ZXMiLCJwb2x5Z29uVG9BZGQiLCJyZXNldENsaWNrU2VxdWVuY2UiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsImdldEFkZEZlYXR1cmVPckJvb2xlYW5Qb2x5Z29uQWN0aW9uIiwiZmFrZVBvaW50ZXJNb3ZlRXZlbnQiLCJzY3JlZW5Db29yZHMiLCJpc0RyYWdnaW5nIiwicG9pbnRlckRvd25QaWNrcyIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwicG9pbnRlckRvd25Hcm91bmRDb29yZHMiLCJzb3VyY2VFdmVudCIsImhhbmRsZVBvaW50ZXJNb3ZlIiwicmVzdWx0IiwiY2FuY2VsTWFwUGFuIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0lBQ2FBLGtCOzs7Ozs7Ozs7Ozs7O21DQUNJQyxLLEVBQW9DQyxZLEVBQXVDO0FBQ3hGLFVBQUlDLE9BQU8sMEZBQXdCRixLQUF4QixFQUErQkMsWUFBL0IsQ0FBWDs7QUFFQSxVQUFJLEtBQUtFLGlCQUFULEVBQTRCO0FBQzFCRCxRQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FB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RCxDQWtENUQ7O0FBQ0EsV0FBS0MsaUJBQUwsQ0FBdUJQLG9CQUF2QjtBQUVBLGFBQU9kLFVBQVA7QUFDRDs7OzRDQUkwRjtBQUFBLFVBRHpGVixZQUN5RixRQUR6RkEsWUFDeUY7QUFDekYsVUFBTVksYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCO0FBQ0EsVUFBTW1CLE1BQU0sR0FBRztBQUFFdEIsUUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0J1QixRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjs7QUFFQSxVQUFJckIsYUFBYSxDQUFDRyxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT2lCLE1BQVA7QUFDRDs7QUFFRCxVQUFJcEIsYUFBYSxDQUFDRyxNQUFkLEdBQXVCLENBQTNCLEVBQThCO0FBQzVCO0FBQ0EsYUFBS08sb0JBQUwsQ0FBMEI7QUFDeEJqQixVQUFBQSxJQUFJLEVBQUUsU0FEa0I7QUFFeEJELFVBQUFBLFFBQVEsRUFBRTtBQUNSQyxZQUFBQSxJQUFJLEVBQUUsWUFERTtBQUVSYyxZQUFBQSxXQUFXLCtCQUFNUCxhQUFOLElBQXFCWixZQUFyQjtBQUZIO0FBRmMsU0FBMUI7QUFPRCxPQVRELE1BU087QUFDTDtBQUNBLGFBQUtzQixvQkFBTCxDQUEwQjtBQUN4QmpCLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkQsVUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFlBQUFBLElBQUksRUFBRSxTQURFO0FBRVJjLFlBQUFBLFdBQVcsRUFBRSw4QkFBS1AsYUFBTCxJQUFvQlosWUFBcEIsRUFBa0NZLGFBQWEsQ0FBQyxDQUFELENBQS9DO0FBRkw7QUFGYyxTQUExQjtBQU9EOztBQUVELGFBQU9vQixNQUFQO0FBQ0Q7Ozs7RUEzR3FDRSx3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvbHlnb24sIFBvc2l0aW9uIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQge1xuICBFZGl0QWN0aW9uLFxuICBFZGl0SGFuZGxlLFxuICBNb2RlSGFuZGxlcixcbiAgZ2V0UGlja2VkRWRpdEhhbmRsZSxcbiAgZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSxcbn0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRHJhd1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBnZXRFZGl0SGFuZGxlcyhwaWNrcz86IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LCBncm91bmRDb29yZHM/OiBQb3NpdGlvbik6IEVkaXRIYW5kbGVbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSBzdXBlci5nZXRFZGl0SGFuZGxlcyhwaWNrcywgZ3JvdW5kQ29vcmRzKTtcblxuICAgIGlmICh0aGlzLl90ZW50YXRpdmVGZWF0dXJlKSB7XG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeSh0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LCAtMSkpO1xuICAgICAgLy8gU2xpY2Ugb2ZmIHRoZSBoYW5kbGVzIHRoYXQgYXJlIGFyZSBuZXh0IHRvIHRoZSBwb2ludGVyXG4gICAgICBpZiAodGhpcy5fdGVudGF0aXZlRmVhdHVyZSAmJiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJykge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgZXhpc3RpbmcgaGFuZGxlXG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGVudGF0aXZlRmVhdHVyZSAmJiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgZXhpc3RpbmcgaGFuZGxlXG4gICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcztcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHN1cGVyLmhhbmRsZUNsaWNrKGV2ZW50KTtcblxuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHRlbnRhdGl2ZUZlYXR1cmUgPSB0aGlzLmdldFRlbnRhdGl2ZUZlYXR1cmUoKTtcblxuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgY29uc3QgY2xpY2tlZEVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKHBpY2tzKTtcblxuICAgIGlmIChjbGlja2VkRWRpdEhhbmRsZSkge1xuICAgICAgLy8gVXNlciBjbGlja2VkIGFuIGVkaXQgaGFuZGxlLlxuICAgICAgLy8gUmVtb3ZlIGl0IGZyb20gdGhlIGNsaWNrIHNlcXVlbmNlLCBzbyBpdCBpc24ndCBhZGRlZCBhcyBhIG5ldyBwb2ludC5cbiAgICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIGNsaWNrU2VxdWVuY2Uuc3BsaWNlKGNsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRlbnRhdGl2ZUZlYXR1cmUgJiYgdGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpIHtcbiAgICAgIGNvbnN0IHBvbHlnb246IFBvbHlnb24gPSB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5O1xuXG4gICAgICBpZiAoXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlICYmXG4gICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleCA9PT0gLTEgJiZcbiAgICAgICAgKGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gMCB8fFxuICAgICAgICAgIGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlc1sxXSA9PT0gcG9seWdvbi5jb29yZGluYXRlc1swXS5sZW5ndGggLSAzKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoZXkgY2xpY2tlZCB0aGUgZmlyc3Qgb3IgbGFzdCBwb2ludCAob3IgZG91YmxlLWNsaWNrZWQpLCBzbyBjb21wbGV0ZSB0aGUgcG9seWdvblxuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgaG92ZXJlZCBwb3NpdGlvblxuICAgICAgICBjb25zdCBwb2x5Z29uVG9BZGQ6IFBvbHlnb24gPSB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLnBvbHlnb24uY29vcmRpbmF0ZXNbMF0uc2xpY2UoMCwgLTIpLCBwb2x5Z29uLmNvb3JkaW5hdGVzWzBdWzBdXV0sXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24ocG9seWdvblRvQWRkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIHBvaW50ZXIgbW92ZSByaWdodCBhd2F5IGluIG9yZGVyIGZvciBpdCB0byB1cGRhdGUgZWRpdCBoYW5kbGVzICh0byBzdXBwb3J0IGRvdWJsZS1jbGljaylcbiAgICBjb25zdCBmYWtlUG9pbnRlck1vdmVFdmVudCA9IHtcbiAgICAgIHNjcmVlbkNvb3JkczogWy0xLCAtMV0sXG4gICAgICBncm91bmRDb29yZHM6IGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgIHBpY2tzOiBbXSxcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25Hcm91bmRDb29yZHM6IG51bGwsXG4gICAgICBzb3VyY2VFdmVudDogbnVsbCxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlKGZha2VQb2ludGVyTW92ZUV2ZW50KTtcblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoe1xuICAgIGdyb3VuZENvb3JkcyxcbiAgfTogUG9pbnRlck1vdmVFdmVudCk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA8IDMpIHtcbiAgICAgIC8vIERyYXcgYSBMaW5lU3RyaW5nIGNvbm5lY3RpbmcgYWxsIHRoZSBjbGlja2VkIHBvaW50cyB3aXRoIHRoZSBob3ZlcmVkIHBvaW50XG4gICAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICBjb29yZGluYXRlczogWy4uLmNsaWNrU2VxdWVuY2UsIGdyb3VuZENvb3Jkc10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRHJhdyBhIFBvbHlnb24gY29ubmVjdGluZyBhbGwgdGhlIGNsaWNrZWQgcG9pbnRzIHdpdGggdGhlIGhvdmVyZWQgcG9pbnRcbiAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbWy4uLmNsaWNrU2VxdWVuY2UsIGdyb3VuZENvb3JkcywgY2xpY2tTZXF1ZW5jZVswXV1dLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-rectangle-handler.js b/modules/layers/dist/mode-handlers/draw-rectangle-handler.js new file mode 100644 index 000000000..92ad6ed1c --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-rectangle-handler.js @@ -0,0 +1,75 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleHandler = void 0; + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _twoClickPolygonHandler = require("./two-click-polygon-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawRectangleHandler = /*#__PURE__*/function (_TwoClickPolygonHandl) { + _inherits(DrawRectangleHandler, _TwoClickPolygonHandl); + + var _super = _createSuper(DrawRectangleHandler); + + function DrawRectangleHandler() { + _classCallCheck(this, DrawRectangleHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var corner1 = clickSequence[0]; + var corner2 = event.groundCoords; // @ts-ignore + + this._setTentativeFeature((0, _bboxPolygon["default"])([corner1[0], corner1[1], corner2[0], corner2[1]])); + + return result; + } + }]); + + return DrawRectangleHandler; +}(_twoClickPolygonHandler.TwoClickPolygonHandler); + +exports.DrawRectangleHandler = DrawRectangleHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcmVjdGFuZ2xlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiRHJhd1JlY3RhbmdsZUhhbmRsZXIiLCJldmVudCIsInJlc3VsdCIsImVkaXRBY3Rpb24iLCJjYW5jZWxNYXBQYW4iLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsImNvcm5lcjEiLCJjb3JuZXIyIiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJUd29DbGlja1BvbHlnb25IYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsb0I7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDc0U7QUFDdEUsVUFBTUMsTUFBTSxHQUFHO0FBQUVDLFFBQUFBLFVBQVUsRUFBRSxJQUFkO0FBQW9CQyxRQUFBQSxZQUFZLEVBQUU7QUFBbEMsT0FBZjtBQUNBLFVBQU1DLGFBQWEsR0FBRyxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFFQSxVQUFJRCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxlQUFPTCxNQUFQO0FBQ0Q7O0FBRUQsVUFBTU0sT0FBTyxHQUFHSCxhQUFhLENBQUMsQ0FBRCxDQUE3QjtBQUNBLFVBQU1JLE9BQU8sR0FBR1IsS0FBSyxDQUFDUyxZQUF0QixDQVZzRSxDQVd0RTs7QUFDQSxXQUFLQyxvQkFBTCxDQUEwQiw2QkFBWSxDQUFDSCxPQUFPLENBQUMsQ0FBRCxDQUFSLEVBQWFBLE9BQU8sQ0FBQyxDQUFELENBQXBCLEVBQXlCQyxPQUFPLENBQUMsQ0FBRCxDQUFoQyxFQUFxQ0EsT0FBTyxDQUFDLENBQUQsQ0FBNUMsQ0FBWixDQUExQjs7QUFFQSxhQUFPUCxNQUFQO0FBQ0Q7Ozs7RUFsQnVDVSw4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUd29DbGlja1BvbHlnb25IYW5kbGVyIH0gZnJvbSAnLi90d28tY2xpY2stcG9seWdvbi1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIERyYXdSZWN0YW5nbGVIYW5kbGVyIGV4dGVuZHMgVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciB7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICBjb25zdCBjbGlja1NlcXVlbmNlID0gdGhpcy5nZXRDbGlja1NlcXVlbmNlKCk7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gZG8geWV0XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IGNvcm5lcjEgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgIGNvbnN0IGNvcm5lcjIgPSBldmVudC5ncm91bmRDb29yZHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoYmJveFBvbHlnb24oW2Nvcm5lcjFbMF0sIGNvcm5lcjFbMV0sIGNvcm5lcjJbMF0sIGNvcm5lcjJbMV1dKSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/draw-rectangle-using-three-points-handler.js b/modules/layers/dist/mode-handlers/draw-rectangle-using-three-points-handler.js new file mode 100644 index 000000000..68e8a5ec0 --- /dev/null +++ b/modules/layers/dist/mode-handlers/draw-rectangle-using-three-points-handler.js @@ -0,0 +1,122 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DrawRectangleUsingThreePointsHandler = void 0; + +var _utils = require("../utils"); + +var _threeClickPolygonHandler = require("./three-click-polygon-handler"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DrawRectangleUsingThreePointsHandler = /*#__PURE__*/function (_ThreeClickPolygonHan) { + _inherits(DrawRectangleUsingThreePointsHandler, _ThreeClickPolygonHan); + + var _super = _createSuper(DrawRectangleUsingThreePointsHandler); + + function DrawRectangleUsingThreePointsHandler() { + _classCallCheck(this, DrawRectangleUsingThreePointsHandler); + + return _super.apply(this, arguments); + } + + _createClass(DrawRectangleUsingThreePointsHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var result = { + editAction: null, + cancelMapPan: false + }; + var clickSequence = this.getClickSequence(); + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + var groundCoords = event.groundCoords; + + if (clickSequence.length === 1) { + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [clickSequence[0], groundCoords] + } + }); + } else if (clickSequence.length === 2) { + var lineString = { + type: 'LineString', + coordinates: clickSequence + }; + + var _clickSequence = _slicedToArray(clickSequence, 2), + p1 = _clickSequence[0], + p2 = _clickSequence[1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'Polygon', + coordinates: [[].concat(_toConsumableArray(lineString.coordinates), [p3, p4, p1])] + } + }); + } + + return result; + } + }]); + + return DrawRectangleUsingThreePointsHandler; +}(_threeClickPolygonHandler.ThreeClickPolygonHandler); + +exports.DrawRectangleUsingThreePointsHandler = DrawRectangleUsingThreePointsHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2RyYXctcmVjdGFuZ2xlLXVzaW5nLXRocmVlLXBvaW50cy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkRyYXdSZWN0YW5nbGVVc2luZ1RocmVlUG9pbnRzSGFuZGxlciIsImV2ZW50IiwicmVzdWx0IiwiZWRpdEFjdGlvbiIsImNhbmNlbE1hcFBhbiIsImNsaWNrU2VxdWVuY2UiLCJnZXRDbGlja1NlcXVlbmNlIiwibGVuZ3RoIiwiZ3JvdW5kQ29vcmRzIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJ0eXBlIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxpbmVTdHJpbmciLCJwMSIsInAyIiwicDMiLCJwNCIsIlRocmVlQ2xpY2tQb2x5Z29uSGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLG9DOzs7Ozs7Ozs7Ozs7O3NDQUVUQyxLLEVBQ3NFO0FBQ3RFLFVBQU1DLE1BQU0sR0FBRztBQUFFQyxRQUFBQSxVQUFVLEVBQUUsSUFBZDtBQUFvQkMsUUFBQUEsWUFBWSxFQUFFO0FBQWxDLE9BQWY7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFBSUQsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQzlCO0FBQ0EsZUFBT0wsTUFBUDtBQUNEOztBQUVELFVBQU1NLFlBQVksR0FBR1AsS0FBSyxDQUFDTyxZQUEzQjs7QUFFQSxVQUFJSCxhQUFhLENBQUNFLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUIsYUFBS0Usb0JBQUwsQ0FBMEI7QUFDeEJDLFVBQUFBLElBQUksRUFBRSxTQURrQjtBQUV4QkMsVUFBQUEsUUFBUSxFQUFFO0FBQ1JELFlBQUFBLElBQUksRUFBRSxZQURFO0FBRVJFLFlBQUFBLFdBQVcsRUFBRSxDQUFDUCxhQUFhLENBQUMsQ0FBRCxDQUFkLEVBQW1CRyxZQUFuQjtBQUZMO0FBRmMsU0FBMUI7QUFPRCxPQVJELE1BUU8sSUFBSUgsYUFBYSxDQUFDRSxNQUFkLEtBQXlCLENBQTdCLEVBQWdDO0FBQ3JDLFlBQU1NLFVBQXNCLEdBQUc7QUFDN0JILFVBQUFBLElBQUksRUFBRSxZQUR1QjtBQUU3QkUsVUFBQUEsV0FBVyxFQUFFUDtBQUZnQixTQUEvQjs7QUFEcUMsNENBS3BCQSxhQUxvQjtBQUFBLFlBSzlCUyxFQUw4QjtBQUFBLFlBSzFCQyxFQUwwQjs7QUFBQSxvQ0FNcEIsK0NBQW1DRCxFQUFuQyxFQUF1Q0MsRUFBdkMsRUFBMkNQLFlBQTNDLENBTm9CO0FBQUE7QUFBQSxZQU05QlEsRUFOOEI7QUFBQSxZQU0xQkMsRUFOMEI7O0FBUXJDLGFBQUtSLG9CQUFMLENBQTBCO0FBQ3hCQyxVQUFBQSxJQUFJLEVBQUUsU0FEa0I7QUFFeEJDLFVBQUFBLFFBQVEsRUFBRTtBQUNSRCxZQUFBQSxJQUFJLEVBQUUsU0FERTtBQUVSRSxZQUFBQSxXQUFXLEVBQUUsOEJBS05DLFVBQVUsQ0FBQ0QsV0FMTCxJQU1USSxFQU5TLEVBT1RDLEVBUFMsRUFRVEgsRUFSUztBQUZMO0FBRmMsU0FBMUI7QUFpQkQ7O0FBRUQsYUFBT1osTUFBUDtBQUNEOzs7O0VBbER1RGdCLGtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5pbXBvcnQgeyBUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIgfSBmcm9tICcuL3RocmVlLWNsaWNrLXBvbHlnb24taGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c0hhbmRsZXIgZXh0ZW5kcyBUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIge1xuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgcmVzdWx0ID0geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKGNsaWNrU2VxdWVuY2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvIHlldFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBncm91bmRDb29yZHMgPSBldmVudC5ncm91bmRDb29yZHM7XG5cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUoe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBbY2xpY2tTZXF1ZW5jZVswXSwgZ3JvdW5kQ29vcmRzXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB7XG4gICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgY29vcmRpbmF0ZXM6IGNsaWNrU2VxdWVuY2UsXG4gICAgICB9O1xuICAgICAgY29uc3QgW3AxLCBwMl0gPSBjbGlja1NlcXVlbmNlO1xuICAgICAgY29uc3QgW3AzLCBwNF0gPSBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKHAxLCBwMiwgZ3JvdW5kQ29vcmRzKTtcblxuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgLy8gRHJhdyBhIHBvbHlnb24gY29udGFpbmluZyBhbGwgdGhlIHBvaW50cyBvZiB0aGUgTGluZVN0cmluZyxcbiAgICAgICAgICAgICAgLy8gdGhlbiB0aGUgcG9pbnRzIG9ydGhvZ29uYWwgdG8gdGhlIGxpbmVTdHJpbmcsXG4gICAgICAgICAgICAgIC8vIHRoZW4gYmFjayB0byB0aGUgc3RhcnRpbmcgcG9zaXRpb25cbiAgICAgICAgICAgICAgLi4ubGluZVN0cmluZy5jb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgcDMsXG4gICAgICAgICAgICAgIHA0LFxuICAgICAgICAgICAgICBwMSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/duplicate-handler.js b/modules/layers/dist/mode-handlers/duplicate-handler.js new file mode 100644 index 000000000..dd0e21415 --- /dev/null +++ b/modules/layers/dist/mode-handlers/duplicate-handler.js @@ -0,0 +1,71 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DuplicateHandler = void 0; + +var _translateHandler = require("./translate-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var DuplicateHandler = /*#__PURE__*/function (_TranslateHandler) { + _inherits(DuplicateHandler, _TranslateHandler); + + var _super = _createSuper(DuplicateHandler); + + function DuplicateHandler() { + _classCallCheck(this, DuplicateHandler); + + return _super.apply(this, arguments); + } + + _createClass(DuplicateHandler, [{ + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isTranslatable) { + return null; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(); + return this._geometryBeforeTranslate ? this.getAddManyFeaturesAction(this._geometryBeforeTranslate) : null; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isTranslatable) { + return 'copy'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }]); + + return DuplicateHandler; +}(_translateHandler.TranslateHandler); + +exports.DuplicateHandler = DuplicateHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2R1cGxpY2F0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIkR1cGxpY2F0ZUhhbmRsZXIiLCJldmVudCIsIl9pc1RyYW5zbGF0YWJsZSIsIl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwiZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uIiwiaXNEcmFnZ2luZyIsIlRyYW5zbGF0ZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsZ0I7Ozs7Ozs7Ozs7Ozs7d0NBQ1NDLEssRUFBMEQ7QUFDNUUsVUFBSSxDQUFDLEtBQUtDLGVBQVYsRUFBMkI7QUFDekIsZUFBTyxJQUFQO0FBQ0Q7O0FBRUQsV0FBS0Msd0JBQUwsR0FBZ0MsS0FBS0Msc0NBQUwsRUFBaEM7QUFFQSxhQUFPLEtBQUtELHdCQUFMLEdBQ0gsS0FBS0Usd0JBQUwsQ0FBOEIsS0FBS0Ysd0JBQW5DLENBREcsR0FFSCxJQUZKO0FBR0Q7OztvQ0FFMEQ7QUFBQSxVQUEvQ0csVUFBK0MsUUFBL0NBLFVBQStDOztBQUN6RCxVQUFJLEtBQUtKLGVBQVQsRUFBMEI7QUFDeEIsZUFBTyxNQUFQO0FBQ0Q7O0FBQ0QsYUFBT0ksVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBakM7QUFDRDs7OztFQWxCbUNDLGtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhcnREcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZUhhbmRsZXIgfSBmcm9tICcuL3RyYW5zbGF0ZS1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZUhhbmRsZXIgZXh0ZW5kcyBUcmFuc2xhdGVIYW5kbGVyIHtcbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlXG4gICAgICA/IHRoaXMuZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNsYXRhYmxlKSB7XG4gICAgICByZXR1cm4gJ2NvcHknO1xuICAgIH1cbiAgICByZXR1cm4gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/elevation-handler.js b/modules/layers/dist/mode-handlers/elevation-handler.js new file mode 100644 index 000000000..cab7ff98d --- /dev/null +++ b/modules/layers/dist/mode-handlers/elevation-handler.js @@ -0,0 +1,126 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ElevationHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +var _modifyHandler = require("./modify-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultCalculateElevationChange(_ref) { + var pointerDownScreenCoords = _ref.pointerDownScreenCoords, + screenCoords = _ref.screenCoords; + return 10 * (pointerDownScreenCoords[1] - screenCoords[1]); +} // TODO edit-modes: delete handlers once EditMode fully implemented + + +var ElevationHandler = /*#__PURE__*/function (_ModifyHandler) { + _inherits(ElevationHandler, _ModifyHandler); + + var _super = _createSuper(ElevationHandler); + + function ElevationHandler() { + _classCallCheck(this, ElevationHandler); + + return _super.apply(this, arguments); + } + + _createClass(ElevationHandler, [{ + key: "makeElevatedEvent", + value: function makeElevatedEvent(event, position) { + if (!event.pointerDownScreenCoords) { + return event; + } + + var _ref2 = this._modeConfig || {}, + _ref2$minElevation = _ref2.minElevation, + minElevation = _ref2$minElevation === void 0 ? 0 : _ref2$minElevation, + _ref2$maxElevation = _ref2.maxElevation, + maxElevation = _ref2$maxElevation === void 0 ? 20000 : _ref2$maxElevation, + _ref2$calculateElevat = _ref2.calculateElevationChange, + calculateElevationChange = _ref2$calculateElevat === void 0 ? defaultCalculateElevationChange : _ref2$calculateElevat; // $FlowFixMe - really, I know it has something at index 2 + + + var elevation = position.length === 3 ? position[2] : 0; // calculateElevationChange is configurable becase (at this time) modes are not aware of the viewport + + elevation += calculateElevationChange({ + pointerDownScreenCoords: event.pointerDownScreenCoords, + screenCoords: event.screenCoords + }); + elevation = Math.min(elevation, maxElevation); + elevation = Math.max(elevation, minElevation); + return Object.assign({}, event, { + groundCoords: [position[0], position[1], elevation] + }); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + var position = editHandle ? editHandle.position : event.groundCoords; // @ts-ignore + + return _get(_getPrototypeOf(ElevationHandler.prototype), "handlePointerMove", this).call(this, this.makeElevatedEvent(event, position)); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + var position = editHandle ? editHandle.position : event.groundCoords; // @ts-ignore + + return _get(_getPrototypeOf(ElevationHandler.prototype), "handleStopDragging", this).call(this, this.makeElevatedEvent(event, position)); + } + }, { + key: "getCursor", + value: function getCursor(params) { + var cursor = _get(_getPrototypeOf(ElevationHandler.prototype), "getCursor", this).call(this, params); + + if (cursor === 'cell') { + cursor = 'ns-resize'; + } + + return cursor; + } + }], [{ + key: "calculateElevationChangeWithViewport", + value: function calculateElevationChangeWithViewport(viewport, _ref3) { + var pointerDownScreenCoords = _ref3.pointerDownScreenCoords, + screenCoords = _ref3.screenCoords; + // Source: https://gis.stackexchange.com/a/127949/111804 + var metersPerPixel = 156543.03392 * Math.cos(viewport.latitude * Math.PI / 180) / Math.pow(2, viewport.zoom); + return metersPerPixel * (pointerDownScreenCoords[1] - screenCoords[1]) / 2; + } + }]); + + return ElevationHandler; +}(_modifyHandler.ModifyHandler); + +exports.ElevationHandler = ElevationHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2VsZXZhdGlvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbImRlZmF1bHRDYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJwb2ludGVyRG93blNjcmVlbkNvb3JkcyIsInNjcmVlbkNvb3JkcyIsIkVsZXZhdGlvbkhhbmRsZXIiLCJldmVudCIsInBvc2l0aW9uIiwiX21vZGVDb25maWciLCJtaW5FbGV2YXRpb24iLCJtYXhFbGV2YXRpb24iLCJjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UiLCJlbGV2YXRpb24iLCJsZW5ndGgiLCJNYXRoIiwibWluIiwibWF4IiwiT2JqZWN0IiwiYXNzaWduIiwiZ3JvdW5kQ29vcmRzIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJtYWtlRWxldmF0ZWRFdmVudCIsInBpY2tzIiwicGFyYW1zIiwiY3Vyc29yIiwidmlld3BvcnQiLCJtZXRlcnNQZXJQaXhlbCIsImNvcyIsImxhdGl0dWRlIiwiUEkiLCJwb3ciLCJ6b29tIiwiTW9kaWZ5SGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsK0JBQVQsT0FNRztBQUFBLE1BTERDLHVCQUtDLFFBTERBLHVCQUtDO0FBQUEsTUFKREMsWUFJQyxRQUpEQSxZQUlDO0FBQ0QsU0FBTyxNQUFNRCx1QkFBdUIsQ0FBQyxDQUFELENBQXZCLEdBQTZCQyxZQUFZLENBQUMsQ0FBRCxDQUEvQyxDQUFQO0FBQ0QsQyxDQUVEOzs7SUFDYUMsZ0I7Ozs7Ozs7Ozs7Ozs7c0NBRVRDLEssRUFDQUMsUSxFQUNxQjtBQUNyQixVQUFJLENBQUNELEtBQUssQ0FBQ0gsdUJBQVgsRUFBb0M7QUFDbEMsZUFBT0csS0FBUDtBQUNEOztBQUhvQixrQkFTakIsS0FBS0UsV0FBTCxJQUFvQixFQVRIO0FBQUEscUNBTW5CQyxZQU5tQjtBQUFBLFVBTW5CQSxZQU5tQixtQ0FNSixDQU5JO0FBQUEscUNBT25CQyxZQVBtQjtBQUFBLFVBT25CQSxZQVBtQixtQ0FPSixLQVBJO0FBQUEsd0NBUW5CQyx3QkFSbUI7QUFBQSxVQVFuQkEsd0JBUm1CLHNDQVFRVCwrQkFSUiwwQkFXckI7OztBQUNBLFVBQUlVLFNBQVMsR0FBR0wsUUFBUSxDQUFDTSxNQUFULEtBQW9CLENBQXBCLEdBQXdCTixRQUFRLENBQUMsQ0FBRCxDQUFoQyxHQUFzQyxDQUF0RCxDQVpxQixDQWNyQjs7QUFDQUssTUFBQUEsU0FBUyxJQUFJRCx3QkFBd0IsQ0FBQztBQUNwQ1IsUUFBQUEsdUJBQXVCLEVBQUVHLEtBQUssQ0FBQ0gsdUJBREs7QUFFcENDLFFBQUFBLFlBQVksRUFBRUUsS0FBSyxDQUFDRjtBQUZnQixPQUFELENBQXJDO0FBSUFRLE1BQUFBLFNBQVMsR0FBR0UsSUFBSSxDQUFDQyxHQUFMLENBQVNILFNBQVQsRUFBb0JGLFlBQXBCLENBQVo7QUFDQUUsTUFBQUEsU0FBUyxHQUFHRSxJQUFJLENBQUNFLEdBQUwsQ0FBU0osU0FBVCxFQUFvQkgsWUFBcEIsQ0FBWjtBQUVBLGFBQU9RLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JaLEtBQWxCLEVBQXlCO0FBQzlCYSxRQUFBQSxZQUFZLEVBQUUsQ0FBQ1osUUFBUSxDQUFDLENBQUQsQ0FBVCxFQUFjQSxRQUFRLENBQUMsQ0FBRCxDQUF0QixFQUEyQkssU0FBM0I7QUFEZ0IsT0FBekIsQ0FBUDtBQUdEOzs7c0NBR0NOLEssRUFDc0U7QUFDdEUsVUFBTWMsVUFBVSxHQUFHLHNDQUFvQmQsS0FBSyxDQUFDZSxnQkFBMUIsQ0FBbkI7QUFDQSxVQUFNZCxRQUFRLEdBQUdhLFVBQVUsR0FBR0EsVUFBVSxDQUFDYixRQUFkLEdBQXlCRCxLQUFLLENBQUNhLFlBQTFELENBRnNFLENBR3RFOztBQUNBLHFHQUErQixLQUFLRyxpQkFBTCxDQUF1QmhCLEtBQXZCLEVBQThCQyxRQUE5QixDQUEvQjtBQUNEOzs7dUNBRWtCRCxLLEVBQXlEO0FBQzFFLFVBQU1jLFVBQVUsR0FBRyxzQ0FBb0JkLEtBQUssQ0FBQ2lCLEtBQTFCLENBQW5CO0FBQ0EsVUFBTWhCLFFBQVEsR0FBR2EsVUFBVSxHQUFHQSxVQUFVLENBQUNiLFFBQWQsR0FBeUJELEtBQUssQ0FBQ2EsWUFBMUQsQ0FGMEUsQ0FHMUU7O0FBQ0Esc0dBQWdDLEtBQUtHLGlCQUFMLENBQXVCaEIsS0FBdkIsRUFBOEJDLFFBQTlCLENBQWhDO0FBQ0Q7Ozs4QkFFU2lCLE0sRUFBeUM7QUFDakQsVUFBSUMsTUFBTSxtRkFBbUJELE1BQW5CLENBQVY7O0FBQ0EsVUFBSUMsTUFBTSxLQUFLLE1BQWYsRUFBdUI7QUFDckJBLFFBQUFBLE1BQU0sR0FBRyxXQUFUO0FBQ0Q7O0FBQ0QsYUFBT0EsTUFBUDtBQUNEOzs7eURBR0NDLFEsU0FRUTtBQUFBLFVBTk52Qix1QkFNTSxTQU5OQSx1QkFNTTtBQUFBLFVBTE5DLFlBS00sU0FMTkEsWUFLTTtBQUNSO0FBQ0EsVUFBTXVCLGNBQWMsR0FDakIsZUFBZWIsSUFBSSxDQUFDYyxHQUFMLENBQVVGLFFBQVEsQ0FBQ0csUUFBVCxHQUFvQmYsSUFBSSxDQUFDZ0IsRUFBMUIsR0FBZ0MsR0FBekMsQ0FBaEIsR0FBaUVoQixJQUFJLENBQUNpQixHQUFMLENBQVMsQ0FBVCxFQUFZTCxRQUFRLENBQUNNLElBQXJCLENBRG5FO0FBR0EsYUFBUUwsY0FBYyxJQUFJeEIsdUJBQXVCLENBQUMsQ0FBRCxDQUF2QixHQUE2QkMsWUFBWSxDQUFDLENBQUQsQ0FBN0MsQ0FBZixHQUFvRSxDQUEzRTtBQUNEOzs7O0VBdEVtQzZCLDRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RvcERyYWdnaW5nRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBFZGl0QWN0aW9uLCBnZXRQaWNrZWRFZGl0SGFuZGxlIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG5pbXBvcnQgeyBNb2RpZnlIYW5kbGVyIH0gZnJvbSAnLi9tb2RpZnktaGFuZGxlcic7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2Uoe1xuICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgc2NyZWVuQ29vcmRzLFxufToge1xuICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gIHNjcmVlbkNvb3JkczogUG9zaXRpb247XG59KSB7XG4gIHJldHVybiAxMCAqIChwb2ludGVyRG93blNjcmVlbkNvb3Jkc1sxXSAtIHNjcmVlbkNvb3Jkc1sxXSk7XG59XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBFbGV2YXRpb25IYW5kbGVyIGV4dGVuZHMgTW9kaWZ5SGFuZGxlciB7XG4gIG1ha2VFbGV2YXRlZEV2ZW50KFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50IHwgU3RvcERyYWdnaW5nRXZlbnQsXG4gICAgcG9zaXRpb246IFBvc2l0aW9uXG4gICk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghZXZlbnQucG9pbnRlckRvd25TY3JlZW5Db29yZHMpIHtcbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBtaW5FbGV2YXRpb24gPSAwLFxuICAgICAgbWF4RWxldmF0aW9uID0gMjAwMDAsXG4gICAgICBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgPSBkZWZhdWx0Q2FsY3VsYXRlRWxldmF0aW9uQ2hhbmdlLFxuICAgIH0gPSB0aGlzLl9tb2RlQ29uZmlnIHx8IHt9O1xuXG4gICAgLy8gJEZsb3dGaXhNZSAtIHJlYWxseSwgSSBrbm93IGl0IGhhcyBzb21ldGhpbmcgYXQgaW5kZXggMlxuICAgIGxldCBlbGV2YXRpb24gPSBwb3NpdGlvbi5sZW5ndGggPT09IDMgPyBwb3NpdGlvblsyXSA6IDA7XG5cbiAgICAvLyBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2UgaXMgY29uZmlndXJhYmxlIGJlY2FzZSAoYXQgdGhpcyB0aW1lKSBtb2RlcyBhcmUgbm90IGF3YXJlIG9mIHRoZSB2aWV3cG9ydFxuICAgIGVsZXZhdGlvbiArPSBjYWxjdWxhdGVFbGV2YXRpb25DaGFuZ2Uoe1xuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGV2ZW50LnBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgfSk7XG4gICAgZWxldmF0aW9uID0gTWF0aC5taW4oZWxldmF0aW9uLCBtYXhFbGV2YXRpb24pO1xuICAgIGVsZXZhdGlvbiA9IE1hdGgubWF4KGVsZXZhdGlvbiwgbWluRWxldmF0aW9uKTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBldmVudCwge1xuICAgICAgZ3JvdW5kQ29vcmRzOiBbcG9zaXRpb25bMF0sIHBvc2l0aW9uWzFdLCBlbGV2YXRpb25dLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBvaW50ZXJEb3duUGlja3MpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZWRpdEhhbmRsZSA/IGVkaXRIYW5kbGUucG9zaXRpb24gOiBldmVudC5ncm91bmRDb29yZHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBzdXBlci5oYW5kbGVQb2ludGVyTW92ZSh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbikpO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgY29uc3QgcG9zaXRpb24gPSBlZGl0SGFuZGxlID8gZWRpdEhhbmRsZS5wb3NpdGlvbiA6IGV2ZW50Lmdyb3VuZENvb3JkcztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHN1cGVyLmhhbmRsZVN0b3BEcmFnZ2luZyh0aGlzLm1ha2VFbGV2YXRlZEV2ZW50KGV2ZW50LCBwb3NpdGlvbikpO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHBhcmFtczogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGxldCBjdXJzb3IgPSBzdXBlci5nZXRDdXJzb3IocGFyYW1zKTtcbiAgICBpZiAoY3Vyc29yID09PSAnY2VsbCcpIHtcbiAgICAgIGN1cnNvciA9ICducy1yZXNpemUnO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZUVsZXZhdGlvbkNoYW5nZVdpdGhWaWV3cG9ydChcbiAgICB2aWV3cG9ydDogYW55LFxuICAgIHtcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgIH06IHtcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBQb3NpdGlvbjtcbiAgICAgIHNjcmVlbkNvb3JkczogUG9zaXRpb247XG4gICAgfVxuICApOiBudW1iZXIge1xuICAgIC8vIFNvdXJjZTogaHR0cHM6Ly9naXMuc3RhY2tleGNoYW5nZS5jb20vYS8xMjc5NDkvMTExODA0XG4gICAgY29uc3QgbWV0ZXJzUGVyUGl4ZWwgPVxuICAgICAgKDE1NjU0My4wMzM5MiAqIE1hdGguY29zKCh2aWV3cG9ydC5sYXRpdHVkZSAqIE1hdGguUEkpIC8gMTgwKSkgLyBNYXRoLnBvdygyLCB2aWV3cG9ydC56b29tKTtcblxuICAgIHJldHVybiAobWV0ZXJzUGVyUGl4ZWwgKiAocG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV0gLSBzY3JlZW5Db29yZHNbMV0pKSAvIDI7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/extrude-handler.js b/modules/layers/dist/mode-handlers/extrude-handler.js new file mode 100644 index 000000000..db31ce582 --- /dev/null +++ b/modules/layers/dist/mode-handlers/extrude-handler.js @@ -0,0 +1,308 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ExtrudeHandler = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +var _modifyHandler = require("./modify-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ExtrudeHandler = /*#__PURE__*/function (_ModifyHandler) { + _inherits(ExtrudeHandler, _ModifyHandler); + + var _super = _createSuper(ExtrudeHandler); + + function ExtrudeHandler() { + var _this; + + _classCallCheck(this, ExtrudeHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "isPointAdded", false); + + return _this; + } + + _createClass(ExtrudeHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + this._lastPointerMovePicks = event.picks; + var editAction = null; + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (event.isDragging && editHandle) { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); + var positionIndexes = this.isPointAdded ? this.nextPositionIndexes(editHandle.positionIndexes, size) : editHandle.positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + // p3 and p4 are end points for moving (extruding) edge + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 2), + p3 = _generatePointsParall2[0], + p4 = _generatePointsParall2[1]; + + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(editHandle.featureIndex, positionIndexes, p3).getObject(); + editAction = { + updatedData: updatedData, + editType: 'extruding', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: this.nextPositionIndexes(editHandle.positionIndexes, size), + position: p3 + } + }; + } + } // Cancel map panning if pointer went down on an edit handle + + + var cancelMapPan = Boolean(editHandle); + return { + editAction: editAction, + cancelMapPan: cancelMapPan + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle && editHandle.type === 'intermediate') { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(editHandle.positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(editHandle.positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + var updatedData = this.getImmutableFeatureCollection(); + + if (!this.isOrthogonal(editHandle.positionIndexes, editHandle.featureIndex, size)) { + updatedData = updatedData.addPosition(editHandle.featureIndex, editHandle.positionIndexes, p2); + } + + if (!this.isOrthogonal(this.prevPositionIndexes(editHandle.positionIndexes, size), editHandle.featureIndex, size)) { + updatedData = updatedData.addPosition(editHandle.featureIndex, editHandle.positionIndexes, p1); + this.isPointAdded = true; + } + + editAction = { + updatedData: updatedData.getObject(), + editType: 'startExtruding', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: p1 + } + }; + } + } + + return editAction; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var size = this.coordinatesSize(editHandle.positionIndexes, editHandle.featureIndex); + var positionIndexes = this.isPointAdded ? this.nextPositionIndexes(editHandle.positionIndexes, size) : editHandle.positionIndexes; // p1 and p1 are end points for edge + + var p1 = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), editHandle.featureIndex); + var p2 = this.getPointForPositionIndexes(positionIndexes, editHandle.featureIndex); + + if (p1 && p2) { + // p3 and p4 are end points for new moved (extruded) edge + var _generatePointsParall3 = (0, _utils.generatePointsParallelToLinePoints)(p1, p2, event.groundCoords), + _generatePointsParall4 = _slicedToArray(_generatePointsParall3, 2), + p3 = _generatePointsParall4[0], + p4 = _generatePointsParall4[1]; + + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, this.prevPositionIndexes(positionIndexes, size), p4).replacePosition(editHandle.featureIndex, positionIndexes, p3).getObject(); + editAction = { + updatedData: updatedData, + editType: 'extruded', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: p3 + } + }; + } + } + + this.isPointAdded = false; + return editAction; + } + }, { + key: "coordinatesSize", + value: function coordinatesSize(positionIndexes, featureIndex) { + var size = 0; + var feature = this.getImmutableFeatureCollection().getObject().features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes = _slicedToArray(positionIndexes, 2), + a = _positionIndexes[0], + b = _positionIndexes[1]; + + if (coordinates.length && coordinates[a].length) { + size = coordinates[a][b].length; + } + } else { + var _positionIndexes2 = _slicedToArray(positionIndexes, 1), + _b = _positionIndexes2[0]; + + if (coordinates.length && coordinates[_b].length) { + size = coordinates[_b].length; + } + } + + return size; + } + }, { + key: "getBearing", + value: function getBearing(p1, p2) { + var angle = (0, _bearing["default"])(p1, p2); + + if (angle < 0) { + return Math.floor(360 + angle); + } + + return Math.floor(angle); + } + }, { + key: "isOrthogonal", + value: function isOrthogonal(positionIndexes, featureIndex, size) { + if (positionIndexes[positionIndexes.length - 1] === size - 1) { + positionIndexes[positionIndexes.length - 1] = 0; + } + + var prevPoint = this.getPointForPositionIndexes(this.prevPositionIndexes(positionIndexes, size), featureIndex); + var nextPoint = this.getPointForPositionIndexes(this.nextPositionIndexes(positionIndexes, size), featureIndex); + var currentPoint = this.getPointForPositionIndexes(positionIndexes, featureIndex); + var prevAngle = this.getBearing(currentPoint, prevPoint); + var nextAngle = this.getBearing(currentPoint, nextPoint); + return [89, 90, 91, 269, 270, 271].includes(Math.abs(prevAngle - nextAngle)); + } + }, { + key: "nextPositionIndexes", + value: function nextPositionIndexes(positionIndexes, size) { + var next = _toConsumableArray(positionIndexes); + + if (next.length) { + next[next.length - 1] = next[next.length - 1] === size - 1 ? 0 : next[next.length - 1] + 1; + } + + return next; + } + }, { + key: "prevPositionIndexes", + value: function prevPositionIndexes(positionIndexes, size) { + var prev = _toConsumableArray(positionIndexes); + + if (prev.length) { + prev[prev.length - 1] = prev[prev.length - 1] === 0 ? size - 2 : prev[prev.length - 1] - 1; + } + + return prev; + } + }, { + key: "getPointForPositionIndexes", + value: function getPointForPositionIndexes(positionIndexes, featureIndex) { + var p1; + var feature = this.getImmutableFeatureCollection().getObject().features[featureIndex]; + var coordinates = feature.geometry.coordinates; // for Multi polygons, length will be 3 + + if (positionIndexes.length === 3) { + var _positionIndexes3 = _slicedToArray(positionIndexes, 3), + a = _positionIndexes3[0], + b = _positionIndexes3[1], + c = _positionIndexes3[2]; + + if (coordinates.length && coordinates[a].length) { + p1 = coordinates[a][b][c]; + } + } else { + var _positionIndexes4 = _slicedToArray(positionIndexes, 2), + _b2 = _positionIndexes4[0], + _c = _positionIndexes4[1]; + + if (coordinates.length && coordinates[_b2].length) { + p1 = coordinates[_b2][_c]; + } + } + + return p1; + } + }]); + + return ExtrudeHandler; +}(_modifyHandler.ModifyHandler); + +exports.ExtrudeHandler = ExtrudeHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL2V4dHJ1ZGUtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJFeHRydWRlSGFuZGxlciIsImV2ZW50IiwiX2xhc3RQb2ludGVyTW92ZVBpY2tzIiwicGlja3MiLCJlZGl0QWN0aW9uIiwiZWRpdEhhbmRsZSIsInBvaW50ZXJEb3duUGlja3MiLCJpc0RyYWdnaW5nIiwic2l6ZSIsImNvb3JkaW5hdGVzU2l6ZSIsInBvc2l0aW9uSW5kZXhlcyIsImZlYXR1cmVJbmRleCIsImlzUG9pbnRBZGRlZCIsIm5leHRQb3NpdGlvbkluZGV4ZXMiLCJwMSIsImdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzIiwicHJldlBvc2l0aW9uSW5kZXhlcyIsInAyIiwiZ3JvdW5kQ29vcmRzIiwicDMiLCJwNCIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJyZXBsYWNlUG9zaXRpb24iLCJnZXRPYmplY3QiLCJlZGl0VHlwZSIsImZlYXR1cmVJbmRleGVzIiwiZWRpdENvbnRleHQiLCJwb3NpdGlvbiIsImNhbmNlbE1hcFBhbiIsIkJvb2xlYW4iLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImxlbmd0aCIsInR5cGUiLCJpc09ydGhvZ29uYWwiLCJhZGRQb3NpdGlvbiIsImZlYXR1cmUiLCJmZWF0dXJlcyIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJhIiwiYiIsImFuZ2xlIiwiTWF0aCIsImZsb29yIiwicHJldlBvaW50IiwibmV4dFBvaW50IiwiY3VycmVudFBvaW50IiwicHJldkFuZ2xlIiwiZ2V0QmVhcmluZyIsIm5leHRBbmdsZSIsImluY2x1ZGVzIiwiYWJzIiwibmV4dCIsInByZXYiLCJjIiwiTW9kaWZ5SGFuZGxlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O0FBQ0QsYUFBT3NCLElBQVA7QUFDRDs7OytDQUUwQjdDLGUsRUFBMkJDLFksRUFBc0I7QUFDMUUsVUFBSUcsRUFBSjtBQUNBLFVBQU11QixPQUFPLEdBQUcsS0FBS2YsNkJBQUwsR0FBcUNFLFNBQXJDLEdBQWlEYyxRQUFqRCxDQUEwRDNCLFlBQTFELENBQWhCO0FBQ0EsVUFBTTRCLFdBQWdCLEdBQUdGLE9BQU8sQ0FBQ0csUUFBUixDQUFpQkQsV0FBMUMsQ0FIMEUsQ0FJMUU7O0FBQ0EsVUFBSTdCLGVBQWUsQ0FBQ3VCLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQUEsK0NBQ2R2QixlQURjO0FBQUEsWUFDekIrQixDQUR5QjtBQUFBLFlBQ3RCQyxDQURzQjtBQUFBLFlBQ25CYyxDQURtQjs7QUFFaEMsWUFBSWpCLFdBQVcsQ0FBQ04sTUFBWixJQUFzQk0sV0FBVyxDQUFDRSxDQUFELENBQVgsQ0FBZVIsTUFBekMsRUFBaUQ7QUFDL0NuQixVQUFBQSxFQUFFLEdBQUd5QixXQUFXLENBQUNFLENBQUQsQ0FBWCxDQUFlQyxDQUFmLEVBQWtCYyxDQUFsQixDQUFMO0FBQ0Q7QUFDRixPQUxELE1BS087QUFBQSwrQ0FDVTlDLGVBRFY7QUFBQSxZQUNFZ0MsR0FERjtBQUFBLFlBQ0tjLEVBREw7O0FBRUwsWUFBSWpCLFdBQVcsQ0FBQ04sTUFBWixJQUFzQk0sV0FBVyxDQUFDRyxHQUFELENBQVgsQ0FBZVQsTUFBekMsRUFBaUQ7QUFDL0NuQixVQUFBQSxFQUFFLEdBQUd5QixXQUFXLENBQUNHLEdBQUQsQ0FBWCxDQUFlYyxFQUFmLENBQUw7QUFDRDtBQUNGOztBQUNELGFBQU8xQyxFQUFQO0FBQ0Q7Ozs7RUExT2lDMkMsNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmVhcmluZyBmcm9tICdAdHVyZi9iZWFyaW5nJztcbmltcG9ydCB7IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgZ2V0UGlja2VkRWRpdEhhbmRsZSB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcblxuaW1wb3J0IHsgTW9kaWZ5SGFuZGxlciB9IGZyb20gJy4vbW9kaWZ5LWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgRXh0cnVkZUhhbmRsZXIgZXh0ZW5kcyBNb2RpZnlIYW5kbGVyIHtcbiAgaXNQb2ludEFkZGVkID0gZmFsc2U7XG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICB0aGlzLl9sYXN0UG9pbnRlck1vdmVQaWNrcyA9IGV2ZW50LnBpY2tzO1xuXG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IGVkaXRIYW5kbGUgPSBnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBvaW50ZXJEb3duUGlja3MpO1xuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgZWRpdEhhbmRsZSkge1xuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICBjb25zdCBwb3NpdGlvbkluZGV4ZXMgPSB0aGlzLmlzUG9pbnRBZGRlZFxuICAgICAgICA/IHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgc2l6ZSlcbiAgICAgICAgOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcztcbiAgICAgIC8vIHAxIGFuZCBwMSBhcmUgZW5kIHBvaW50cyBmb3IgZWRnZVxuICAgICAgY29uc3QgcDEgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKFxuICAgICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICBpZiAocDEgJiYgcDIpIHtcbiAgICAgICAgLy8gcDMgYW5kIHA0IGFyZSBlbmQgcG9pbnRzIGZvciBtb3ZpbmcgKGV4dHJ1ZGluZykgZWRnZVxuICAgICAgICBjb25zdCBbcDMsIHA0XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBldmVudC5ncm91bmRDb29yZHMpO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBwNFxuICAgICAgICAgIClcbiAgICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIHAzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAnZXh0cnVkaW5nJyxcbiAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2VkaXRIYW5kbGUuZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgcG9zaXRpb25JbmRleGVzOiB0aGlzLm5leHRQb3NpdGlvbkluZGV4ZXMoZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgY29uc3QgY2FuY2VsTWFwUGFuID0gQm9vbGVhbihlZGl0SGFuZGxlKTtcblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbiB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUgJiYgZWRpdEhhbmRsZS50eXBlID09PSAnaW50ZXJtZWRpYXRlJykge1xuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuY29vcmRpbmF0ZXNTaXplKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCk7XG4gICAgICAvLyBwMSBhbmQgcDEgYXJlIGVuZCBwb2ludHMgZm9yIGVkZ2VcbiAgICAgIGNvbnN0IHAxID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgICAgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhcbiAgICAgICk7XG4gICAgICBjb25zdCBwMiA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleFxuICAgICAgKTtcblxuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3J0aG9nb25hbChlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsIHNpemUpKSB7XG4gICAgICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBwMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLmlzT3J0aG9nb25hbChcbiAgICAgICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIHNpemVcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEuYWRkUG9zaXRpb24oXG4gICAgICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcDFcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaXNQb2ludEFkZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgICAgIGVkaXRUeXBlOiAnc3RhcnRFeHRydWRpbmcnLFxuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucGlja3MpO1xuICAgIGlmIChzZWxlY3RlZEZlYXR1cmVJbmRleGVzLmxlbmd0aCAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCBzaXplID0gdGhpcy5jb29yZGluYXRlc1NpemUoZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4KTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uSW5kZXhlcyA9IHRoaXMuaXNQb2ludEFkZGVkXG4gICAgICAgID8gdGhpcy5uZXh0UG9zaXRpb25JbmRleGVzKGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBzaXplKVxuICAgICAgICA6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzO1xuICAgICAgLy8gcDEgYW5kIHAxIGFyZSBlbmQgcG9pbnRzIGZvciBlZGdlXG4gICAgICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICAgIHRoaXMucHJldlBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgICBlZGl0SGFuZGxlLmZlYXR1cmVJbmRleFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHAyID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4KTtcblxuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIC8vIHAzIGFuZCBwNCBhcmUgZW5kIHBvaW50cyBmb3IgbmV3IG1vdmVkIChleHRydWRlZCkgZWRnZVxuICAgICAgICBjb25zdCBbcDMsIHA0XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMocDEsIHAyLCBldmVudC5ncm91bmRDb29yZHMpO1xuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgICAgLnJlcGxhY2VQb3NpdGlvbihcbiAgICAgICAgICAgIGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LFxuICAgICAgICAgICAgdGhpcy5wcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgc2l6ZSksXG4gICAgICAgICAgICBwNFxuICAgICAgICAgIClcbiAgICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIHAzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgIGVkaXRUeXBlOiAnZXh0cnVkZWQnLFxuICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgcG9zaXRpb246IHAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuaXNQb2ludEFkZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzU2l6ZShwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdLCBmZWF0dXJlSW5kZXg6IG51bWJlcikge1xuICAgIGxldCBzaXplID0gMDtcbiAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpLmdldE9iamVjdCgpLmZlYXR1cmVzW2ZlYXR1cmVJbmRleF07XG4gICAgY29uc3QgY29vcmRpbmF0ZXM6IGFueSA9IGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gICAgLy8gZm9yIE11bHRpIHBvbHlnb25zLCBsZW5ndGggd2lsbCBiZSAzXG4gICAgaWYgKHBvc2l0aW9uSW5kZXhlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbnN0IFthLCBiXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYV0ubGVuZ3RoKSB7XG4gICAgICAgIHNpemUgPSBjb29yZGluYXRlc1thXVtiXS5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtiXSA9IHBvc2l0aW9uSW5kZXhlcztcbiAgICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggJiYgY29vcmRpbmF0ZXNbYl0ubGVuZ3RoKSB7XG4gICAgICAgIHNpemUgPSBjb29yZGluYXRlc1tiXS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzaXplO1xuICB9XG5cbiAgZ2V0QmVhcmluZyhwMTogYW55LCBwMjogYW55KSB7XG4gICAgY29uc3QgYW5nbGUgPSBiZWFyaW5nKHAxLCBwMik7XG4gICAgaWYgKGFuZ2xlIDwgMCkge1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoMzYwICsgYW5nbGUpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcihhbmdsZSk7XG4gIH1cblxuICBpc09ydGhvZ29uYWwocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgZmVhdHVyZUluZGV4OiBudW1iZXIsIHNpemU6IG51bWJlcikge1xuICAgIGlmIChwb3NpdGlvbkluZGV4ZXNbcG9zaXRpb25JbmRleGVzLmxlbmd0aCAtIDFdID09PSBzaXplIC0gMSkge1xuICAgICAgcG9zaXRpb25JbmRleGVzW3Bvc2l0aW9uSW5kZXhlcy5sZW5ndGggLSAxXSA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHByZXZQb2ludCA9IHRoaXMuZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMoXG4gICAgICB0aGlzLnByZXZQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzLCBzaXplKSxcbiAgICAgIGZlYXR1cmVJbmRleFxuICAgICk7XG4gICAgY29uc3QgbmV4dFBvaW50ID0gdGhpcy5nZXRQb2ludEZvclBvc2l0aW9uSW5kZXhlcyhcbiAgICAgIHRoaXMubmV4dFBvc2l0aW9uSW5kZXhlcyhwb3NpdGlvbkluZGV4ZXMsIHNpemUpLFxuICAgICAgZmVhdHVyZUluZGV4XG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50UG9pbnQgPSB0aGlzLmdldFBvaW50Rm9yUG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4KTtcbiAgICBjb25zdCBwcmV2QW5nbGUgPSB0aGlzLmdldEJlYXJpbmcoY3VycmVudFBvaW50LCBwcmV2UG9pbnQpO1xuICAgIGNvbnN0IG5leHRBbmdsZSA9IHRoaXMuZ2V0QmVhcmluZyhjdXJyZW50UG9pbnQsIG5leHRQb2ludCk7XG4gICAgcmV0dXJuIFs4OSwgOTAsIDkxLCAyNjksIDI3MCwgMjcxXS5pbmNsdWRlcyhNYXRoLmFicyhwcmV2QW5nbGUgLSBuZXh0QW5nbGUpKTtcbiAgfVxuXG4gIG5leHRQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgc2l6ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IG5leHQgPSBbLi4ucG9zaXRpb25JbmRleGVzXTtcbiAgICBpZiAobmV4dC5sZW5ndGgpIHtcbiAgICAgIG5leHRbbmV4dC5sZW5ndGggLSAxXSA9IG5leHRbbmV4dC5sZW5ndGggLSAxXSA9PT0gc2l6ZSAtIDEgPyAwIDogbmV4dFtuZXh0Lmxlbmd0aCAtIDFdICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBwcmV2UG9zaXRpb25JbmRleGVzKHBvc2l0aW9uSW5kZXhlczogbnVtYmVyW10sIHNpemU6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBwcmV2ID0gWy4uLnBvc2l0aW9uSW5kZXhlc107XG4gICAgaWYgKHByZXYubGVuZ3RoKSB7XG4gICAgICBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gPSBwcmV2W3ByZXYubGVuZ3RoIC0gMV0gPT09IDAgPyBzaXplIC0gMiA6IHByZXZbcHJldi5sZW5ndGggLSAxXSAtIDE7XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbiAgZ2V0UG9pbnRGb3JQb3NpdGlvbkluZGV4ZXMocG9zaXRpb25JbmRleGVzOiBudW1iZXJbXSwgZmVhdHVyZUluZGV4OiBudW1iZXIpIHtcbiAgICBsZXQgcDE7XG4gICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKS5nZXRPYmplY3QoKS5mZWF0dXJlc1tmZWF0dXJlSW5kZXhdO1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBhbnkgPSBmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgIC8vIGZvciBNdWx0aSBwb2x5Z29ucywgbGVuZ3RoIHdpbGwgYmUgM1xuICAgIGlmIChwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbYSwgYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2FdLmxlbmd0aCkge1xuICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2FdW2JdW2NdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBbYiwgY10gPSBwb3NpdGlvbkluZGV4ZXM7XG4gICAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoICYmIGNvb3JkaW5hdGVzW2JdLmxlbmd0aCkge1xuICAgICAgICBwMSA9IGNvb3JkaW5hdGVzW2JdW2NdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcDE7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/mode-handler.js b/modules/layers/dist/mode-handlers/mode-handler.js new file mode 100644 index 000000000..1eb9a502e --- /dev/null +++ b/modules/layers/dist/mode-handlers/mode-handler.js @@ -0,0 +1,433 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPickedEditHandle = getPickedEditHandle; +exports.getIntermediatePosition = getIntermediatePosition; +exports.getEditHandlesForGeometry = getEditHandlesForGeometry; +exports.ModeHandler = void 0; + +var _union = _interopRequireDefault(require("@turf/union")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _intersect = _interopRequireDefault(require("@turf/intersect")); + +var _editModes = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 ModeHandler = /*#__PURE__*/function () { + // TODO: add underscore + function ModeHandler(featureCollection) { + _classCallCheck(this, ModeHandler); + + _defineProperty(this, "featureCollection", void 0); + + _defineProperty(this, "_tentativeFeature", void 0); + + _defineProperty(this, "_modeConfig", null); + + _defineProperty(this, "_selectedFeatureIndexes", []); + + _defineProperty(this, "_clickSequence", []); + + if (featureCollection) { + this.setFeatureCollection(featureCollection); + } + } + + _createClass(ModeHandler, [{ + key: "getFeatureCollection", + value: function getFeatureCollection() { + return this.featureCollection.getObject(); + } + }, { + key: "getImmutableFeatureCollection", + value: function getImmutableFeatureCollection() { + return this.featureCollection; + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature() { + if (this._selectedFeatureIndexes.length === 1) { + return this.featureCollection.getObject().features[this._selectedFeatureIndexes[0]]; + } + + return null; + } + }, { + key: "getSelectedGeometry", + value: function getSelectedGeometry() { + var feature = this.getSelectedFeature(); + + if (feature) { + return feature.geometry; + } + + return null; + } + }, { + key: "getSelectedFeaturesAsFeatureCollection", + value: function getSelectedFeaturesAsFeatureCollection() { + var _this$featureCollecti = this.featureCollection.getObject(), + features = _this$featureCollecti.features; + + var selectedFeatures = this.getSelectedFeatureIndexes().map(function (selectedIndex) { + return features[selectedIndex]; + }); + return { + type: 'FeatureCollection', + features: selectedFeatures + }; + } + }, { + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this.featureCollection = new _editModes.ImmutableFeatureCollection(featureCollection); + } + }, { + key: "getModeConfig", + value: function getModeConfig() { + return this._modeConfig; + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + if (this._modeConfig === modeConfig) { + return; + } + + this._modeConfig = modeConfig; + + this._setTentativeFeature(null); + } + }, { + key: "getSelectedFeatureIndexes", + value: function getSelectedFeatureIndexes() { + return this._selectedFeatureIndexes; + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + if (this._selectedFeatureIndexes === indexes) { + return; + } + + this._selectedFeatureIndexes = indexes; + + this._setTentativeFeature(null); + } + }, { + key: "getClickSequence", + value: function getClickSequence() { + return this._clickSequence; + } + }, { + key: "resetClickSequence", + value: function resetClickSequence() { + this._clickSequence = []; + } + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._tentativeFeature; + } // TODO: remove the underscore + + }, { + key: "_setTentativeFeature", + value: function _setTentativeFeature(tentativeFeature) { + this._tentativeFeature = tentativeFeature; + + if (!tentativeFeature) { + // Reset the click sequence + this._clickSequence = []; + } + } + /** + * Returns a flat array of positions for the given feature along with their indexes into the feature's geometry's coordinates. + * + * @param featureIndex The index of the feature to get edit handles + */ + + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + return []; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return 'cell'; + } + }, { + key: "isSelectionPicked", + value: function isSelectionPicked(picks) { + if (!picks.length) return false; + var pickedIndexes = picks.map(function (_ref2) { + var index = _ref2.index; + return index; + }); + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + return selectedFeatureIndexes.some(function (index) { + return pickedIndexes.includes(index); + }); + } + }, { + key: "getAddFeatureAction", + value: function getAddFeatureAction(geometry) { + // Unsure why flow can't deal with Geometry type, but there I fixed it + var geometryAsAny = geometry; + var updatedData = this.getImmutableFeatureCollection().addFeature({ + type: 'Feature', + properties: {}, + geometry: geometryAsAny + }).getObject(); + return { + updatedData: updatedData, + editType: 'addFeature', + featureIndexes: [updatedData.features.length - 1], + editContext: { + featureIndexes: [updatedData.features.length - 1] + } + }; + } + }, { + key: "getAddManyFeaturesAction", + value: function getAddManyFeaturesAction(featureCollection) { + var features = featureCollection.features; + var updatedData = this.getImmutableFeatureCollection(); + var initialIndex = updatedData.getObject().features.length; + var updatedIndexes = []; + + var _iterator = _createForOfIteratorHelper(features), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var feature = _step.value; + var properties = feature.properties, + geometry = feature.geometry; + var geometryAsAny = geometry; + updatedData = updatedData.addFeature({ + type: 'Feature', + properties: properties, + geometry: geometryAsAny + }); + updatedIndexes.push(initialIndex + updatedIndexes.length); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return { + updatedData: updatedData.getObject(), + editType: 'addFeature', + featureIndexes: updatedIndexes, + editContext: { + featureIndexes: updatedIndexes + } + }; + } + }, { + key: "getAddFeatureOrBooleanPolygonAction", + value: function getAddFeatureOrBooleanPolygonAction(geometry) { + var selectedFeature = this.getSelectedFeature(); + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.booleanOperation) { + if (!selectedFeature || selectedFeature.geometry.type !== 'Polygon' && selectedFeature.geometry.type !== 'MultiPolygon') { + // eslint-disable-next-line no-console,no-undef + console.warn('booleanOperation only supported for single Polygon or MultiPolygon selection'); + return null; + } + + var feature = { + type: 'Feature', + geometry: geometry + }; + var updatedGeometry; + + if (modeConfig.booleanOperation === 'union') { + updatedGeometry = (0, _union["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'difference') { + // @ts-ignore + updatedGeometry = (0, _difference["default"])(selectedFeature, feature); + } else if (modeConfig.booleanOperation === 'intersection') { + // @ts-ignore + updatedGeometry = (0, _intersect["default"])(selectedFeature, feature); + } else { + // eslint-disable-next-line no-console,no-undef + console.warn("Invalid booleanOperation ".concat(modeConfig.booleanOperation)); + return null; + } + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Boolean operation erased entire polygon.'); + return null; + } + + var featureIndex = this.getSelectedFeatureIndexes()[0]; + var updatedData = this.getImmutableFeatureCollection().replaceGeometry(featureIndex, updatedGeometry.geometry).getObject(); + var editAction = { + updatedData: updatedData, + editType: 'unionGeometry', + featureIndexes: [featureIndex], + editContext: { + featureIndexes: [featureIndex] + } + }; + return editAction; + } + + return this.getAddFeatureAction(geometry); + } + }, { + key: "handleClick", + value: function handleClick(event) { + this._clickSequence.push(event.groundCoords); + + return null; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + return { + editAction: null, + cancelMapPan: false + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + return null; + } + }]); + + return ModeHandler; +}(); + +exports.ModeHandler = ModeHandler; + +function getPickedEditHandle(picks) { + var info = picks && picks.find(function (pick) { + return pick.isEditingHandle; + }); + + if (info) { + return info.object; + } + + return null; +} + +function getIntermediatePosition(position1, position2) { + var intermediatePosition = [(position1[0] + position2[0]) / 2.0, (position1[1] + position2[1]) / 2.0]; // @ts-ignore + + return intermediatePosition; +} + +function getEditHandlesForGeometry(geometry, featureIndex) { + var editHandleType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'existing'; + var handles = []; + + switch (geometry.type) { + case 'Point': + // positions are not nested + handles = [{ + position: geometry.coordinates, + positionIndexes: [], + featureIndex: featureIndex, + type: editHandleType + }]; + break; + + case 'MultiPoint': + case 'LineString': + // positions are nested 1 level + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates, [], featureIndex, editHandleType)); + break; + + case 'Polygon': + case 'MultiLineString': + // positions are nested 2 levels + for (var a = 0; a < geometry.coordinates.length; a++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[a], [a], featureIndex, editHandleType)); + + if (geometry.type === 'Polygon') { + // Don't repeat the first/last handle for Polygons + handles = handles.slice(0, -1); + } + } + + break; + + case 'MultiPolygon': + // positions are nested 3 levels + for (var _a = 0; _a < geometry.coordinates.length; _a++) { + for (var b = 0; b < geometry.coordinates[_a].length; b++) { + handles = handles.concat(getEditHandlesForCoordinates(geometry.coordinates[_a][b], [_a, b], featureIndex, editHandleType)); // Don't repeat the first/last handle for Polygons + + handles = handles.slice(0, -1); + } + } + + break; + + default: + // @ts-ignore + throw Error("Unhandled geometry type: ".concat(geometry.type)); + } + + return handles; +} + +function getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureIndex) { + var editHandleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'existing'; + var editHandles = []; + + for (var i = 0; i < coordinates.length; i++) { + var position = coordinates[i]; + editHandles.push({ + position: position, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [i]), + featureIndex: featureIndex, + type: editHandleType + }); + } + + return editHandles; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL21vZGUtaGFuZGxlci50cyJdLCJuYW1lcyI6WyJNb2RlSGFuZGxlciIsImZlYXR1cmVDb2xsZWN0aW9uIiwic2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJfc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImxlbmd0aCIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImdldFNlbGVjdGVkRmVhdHVyZSIsImdlb21ldHJ5Iiwic2VsZWN0ZWRGZWF0dXJlcyIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJtYXAiLCJzZWxlY3RlZEluZGV4IiwidHlwZSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiX21vZGVDb25maWciLCJtb2RlQ29uZmlnIiwiX3NldFRlbnRhdGl2ZUZlYXR1cmUiLCJpbmRleGVzIiwiX2NsaWNrU2VxdWVuY2UiLCJfdGVudGF0aXZlRmVhdHVyZSIsInRlbnRhdGl2ZUZlYXR1cmUiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImlzRHJhZ2dpbmciLCJwaWNrZWRJbmRleGVzIiwiaW5kZXgiLCJzZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwic29tZSIsImluY2x1ZGVzIiwiZ2VvbWV0cnlBc0FueSIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJhZGRGZWF0dXJlIiwicHJvcGVydGllcyIsImVkaXRUeXBlIiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsImluaXRpYWxJbmRleCIsInVwZGF0ZWRJbmRleGVzIiwicHVzaCIsInNlbGVjdGVkRmVhdHVyZSIsImdldE1vZGVDb25maWciLCJib29sZWFuT3BlcmF0aW9uIiwiY29uc29sZSIsIndhcm4iLCJ1cGRhdGVkR2VvbWV0cnkiLCJmZWF0dXJlSW5kZXgiLCJyZXBsYWNlR2VvbWV0cnkiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZUFjdGlvbiIsImV2ZW50IiwiY2FuY2VsTWFwUGFuIiwiZ2V0UGlja2VkRWRpdEhhbmRsZSIsImluZm8iLCJmaW5kIiwicGljayIsImlzRWRpdGluZ0hhbmRsZSIsIm9iamVjdCIsImdldEludGVybWVkaWF0ZVBvc2l0aW9uIiwicG9zaXRpb24xIiwicG9zaXRpb24yIiwiaW50ZXJtZWRpYXRlUG9zaXRpb24iLCJnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5IiwiZWRpdEhhbmRsZVR5cGUiLCJoYW5kbGVzIiwicG9zaXRpb24iLCJjb29yZGluYXRlcyIsInBvc2l0aW9uSW5kZXhlcyIsImNvbmNhdCIsImdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMiLCJhIiwic2xpY2UiLCJiIiwiRXJyb3IiLCJwb3NpdGlvbkluZGV4UHJlZml4IiwiZWRpdEhhbmRsZXMiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaUNhQSxXO0FBQ1g7QUFPQSx1QkFBWUMsaUJBQVosRUFBbUQ7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSx5Q0FKaEMsSUFJZ0M7O0FBQUEscURBSGYsRUFHZTs7QUFBQSw0Q0FGdEIsRUFFc0I7O0FBQ2pELFFBQUlBLGlCQUFKLEVBQXVCO0FBQ3JCLFdBQUtDLG9CQUFMLENBQTBCRCxpQkFBMUI7QUFDRDtBQUNGOzs7OzJDQUV5QztBQUN4QyxhQUFPLEtBQUtBLGlCQUFMLENBQXVCRSxTQUF2QixFQUFQO0FBQ0Q7OztvREFFMkQ7QUFDMUQsYUFBTyxLQUFLRixpQkFBWjtBQUNEOzs7eUNBRWdEO0FBQy9DLFVBQUksS0FBS0csdUJBQUwsQ0FBNkJDLE1BQTdCLEtBQXdDLENBQTVDLEVBQStDO0FBQzdDLGVBQU8sS0FBS0osaUJBQUwsQ0FBdUJFLFNBQXZCLEdBQW1DRyxRQUFuQyxDQUE0QyxLQUFLRix1QkFBTCxDQUE2QixDQUE3QixDQUE1QyxDQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7OzswQ0FFa0Q7QUFDakQsVUFBTUcsT0FBTyxHQUFH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LEdBQUdBLE9BQU8sQ0FBQ08sS0FBUixDQUFjLENBQWQsRUFBaUIsQ0FBQyxDQUFsQixDQUFWO0FBQ0Q7QUFDRjs7QUFFRDs7QUFDRjtBQUNFO0FBQ0EsWUFBTUUsS0FBSyxvQ0FBNkJsRSxRQUFRLENBQUNLLElBQXRDLEVBQVg7QUFyREo7O0FBd0RBLFNBQU9vRCxPQUFQO0FBQ0Q7O0FBRUQsU0FBU0ssNEJBQVQsQ0FDRUgsV0FERixFQUVFUSxtQkFGRixFQUdFNUIsWUFIRixFQUtnQjtBQUFBLE1BRGRpQixjQUNjLHVFQURtQixVQUNuQjtBQUNkLE1BQU1ZLFdBQVcsR0FBRyxFQUFwQjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdWLFdBQVcsQ0FBQy9ELE1BQWhDLEVBQXdDeUUsQ0FBQyxFQUF6QyxFQUE2QztBQUMzQyxRQUFNWCxRQUFRLEdBQUdDLFdBQVcsQ0FBQ1UsQ0FBRCxDQUE1QjtBQUNBRCxJQUFBQSxXQUFXLENBQUNwQyxJQUFaLENBQWlCO0FBQ2YwQixNQUFBQSxRQUFRLEVBQVJBLFFBRGU7QUFFZkUsTUFBQUEsZUFBZSwrQkFBTU8sbUJBQU4sSUFBMkJFLENBQTNCLEVBRkE7QUFHZjlCLE1BQUFBLFlBQVksRUFBWkEsWUFIZTtBQUlmbEMsTUFBQUEsSUFBSSxFQUFFbUQ7QUFKUyxLQUFqQjtBQU1EOztBQUNELFNBQU9ZLFdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcblxuaW1wb3J0IHR1cmZVbmlvbiBmcm9tICdAdHVyZi91bmlvbic7XG5pbXBvcnQgdHVyZkRpZmZlcmVuY2UgZnJvbSAnQHR1cmYvZGlmZmVyZW5jZSc7XG5pbXBvcnQgdHVyZkludGVyc2VjdCBmcm9tICdAdHVyZi9pbnRlcnNlY3QnO1xuXG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIFBvbHlnb24sXG4gIEdlb21ldHJ5LFxuICBQb3NpdGlvbixcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuaW1wb3J0IHtcbiAgQ2xpY2tFdmVudCxcbiAgUG9pbnRlck1vdmVFdmVudCxcbiAgU3RhcnREcmFnZ2luZ0V2ZW50LFxuICBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgRGVja0dMUGljayxcbn0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZycgfCAnaW50ZXJtZWRpYXRlJyB8ICdzbmFwJztcblxuZXhwb3J0IHR5cGUgRWRpdEhhbmRsZSA9IHtcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xuICBwb3NpdGlvbkluZGV4ZXM6IG51bWJlcltdO1xuICBmZWF0dXJlSW5kZXg6IG51bWJlcjtcbiAgdHlwZTogRWRpdEhhbmRsZVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBFZGl0QWN0aW9uID0ge1xuICB1cGRhdGVkRGF0YTogRmVhdHVyZUNvbGxlY3Rpb247XG4gIGVkaXRUeXBlOiBzdHJpbmc7XG4gIGZlYXR1cmVJbmRleGVzOiBudW1iZXJbXTtcbiAgZWRpdENvbnRleHQ6IGFueTtcbn07XG5cbmV4cG9ydCBjbGFzcyBNb2RlSGFuZGxlciB7XG4gIC8vIFRPRE86IGFkZCB1bmRlcnNjb3JlXG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbjtcbiAgX3RlbnRhdGl2ZUZlYXR1cmU6IEZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfbW9kZUNvbmZpZzogYW55ID0gbnVsbDtcbiAgX3NlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IG51bWJlcltdID0gW107XG4gIF9jbGlja1NlcXVlbmNlOiBQb3NpdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoZmVhdHVyZUNvbGxlY3Rpb24/OiBGZWF0dXJlQ29sbGVjdGlvbikge1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgdGhpcy5zZXRGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTogRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuICB9XG5cbiAgZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTogSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlKCk6IEZlYXR1cmUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpLmZlYXR1cmVzW3RoaXMuX3NlbGVjdGVkRmVhdHVyZUluZGV4ZXNbMF1dO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFNlbGVjdGVkR2VvbWV0cnkoKTogR2VvbWV0cnkgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICBpZiAoZmVhdHVyZSkge1xuICAgICAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTogRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRoaXMuZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpLm1hcChcbiAgICAgIChzZWxlY3RlZEluZGV4KSA9PiBmZWF0dXJlc1tzZWxlY3RlZEluZGV4XVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogc2VsZWN0ZWRGZWF0dXJlcyxcbiAgICB9O1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5mZWF0dXJlQ29sbGVjdGlvbiA9IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gIH1cblxuICBnZXRNb2RlQ29uZmlnKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVDb25maWc7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tb2RlQ29uZmlnID09PSBtb2RlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbW9kZUNvbmZpZyA9IG1vZGVDb25maWc7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEZlYXR1cmVJbmRleGVzO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyhpbmRleGVzOiBudW1iZXJbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZEZlYXR1cmVJbmRleGVzID09PSBpbmRleGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyA9IGluZGV4ZXM7XG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgfVxuXG4gIGdldENsaWNrU2VxdWVuY2UoKTogUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWNrU2VxdWVuY2U7XG4gIH1cblxuICByZXNldENsaWNrU2VxdWVuY2UoKTogdm9pZCB7XG4gICAgdGhpcy5fY2xpY2tTZXF1ZW5jZSA9IFtdO1xuICB9XG5cbiAgZ2V0VGVudGF0aXZlRmVhdHVyZSgpOiBGZWF0dXJlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbnRhdGl2ZUZlYXR1cmU7XG4gIH1cblxuICAvLyBUT0RPOiByZW1vdmUgdGhlIHVuZGVyc2NvcmVcbiAgX3NldFRlbnRhdGl2ZUZlYXR1cmUodGVudGF0aXZlRmVhdHVyZTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl90ZW50YXRpdmVGZWF0dXJlID0gdGVudGF0aXZlRmVhdHVyZTtcbiAgICBpZiAoIXRlbnRhdGl2ZUZlYXR1cmUpIHtcbiAgICAgIC8vIFJlc2V0IHRoZSBjbGljayBzZXF1ZW5jZVxuICAgICAgdGhpcy5fY2xpY2tTZXF1ZW5jZSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZmxhdCBhcnJheSBvZiBwb3NpdGlvbnMgZm9yIHRoZSBnaXZlbiBmZWF0dXJlIGFsb25nIHdpdGggdGhlaXIgaW5kZXhlcyBpbnRvIHRoZSBmZWF0dXJlJ3MgZ2VvbWV0cnkncyBjb29yZGluYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIGZlYXR1cmVJbmRleCBUaGUgaW5kZXggb2YgdGhlIGZlYXR1cmUgdG8gZ2V0IGVkaXQgaGFuZGxlc1xuICAgKi9cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2VsbCc7XG4gIH1cblxuICBpc1NlbGVjdGlvblBpY2tlZChwaWNrczogRGVja0dMUGlja1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFwaWNrcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBwaWNrZWRJbmRleGVzID0gcGlja3MubWFwKCh7IGluZGV4IH0pID0+IGluZGV4KTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMuc29tZSgoaW5kZXgpID0+IHBpY2tlZEluZGV4ZXMuaW5jbHVkZXMoaW5kZXgpKTtcbiAgfVxuXG4gIGdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnk6IEdlb21ldHJ5KTogRWRpdEFjdGlvbiB7XG4gICAgLy8gVW5zdXJlIHdoeSBmbG93IGNhbid0IGRlYWwgd2l0aCBHZW9tZXRyeSB0eXBlLCBidXQgdGhlcmUgSSBmaXhlZCBpdFxuICAgIGNvbnN0IGdlb21ldHJ5QXNBbnk6IGFueSA9IGdlb21ldHJ5O1xuXG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgIC5hZGRGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgZ2VvbWV0cnk6IGdlb21ldHJ5QXNBbnksXG4gICAgICB9KVxuICAgICAgLmdldE9iamVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgZWRpdFR5cGU6ICdhZGRGZWF0dXJlJyxcbiAgICAgIGZlYXR1cmVJbmRleGVzOiBbdXBkYXRlZERhdGEuZmVhdHVyZXMubGVuZ3RoIC0gMV0sXG4gICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICBmZWF0dXJlSW5kZXhlczogW3VwZGF0ZWREYXRhLmZlYXR1cmVzLmxlbmd0aCAtIDFdLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkTWFueUZlYXR1cmVzQWN0aW9uKGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbik6IEVkaXRBY3Rpb24ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXM7XG4gICAgbGV0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGNvbnN0IGluaXRpYWxJbmRleCA9IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLmZlYXR1cmVzLmxlbmd0aDtcbiAgICBjb25zdCB1cGRhdGVkSW5kZXhlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgY29uc3QgeyBwcm9wZXJ0aWVzLCBnZW9tZXRyeSB9ID0gZmVhdHVyZTtcbiAgICAgIGNvbnN0IGdlb21ldHJ5QXNBbnk6IGFueSA9IGdlb21ldHJ5O1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5hZGRGZWF0dXJlKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBnZW9tZXRyeTogZ2VvbWV0cnlBc0FueSxcbiAgICAgIH0pO1xuICAgICAgdXBkYXRlZEluZGV4ZXMucHVzaChpbml0aWFsSW5kZXggKyB1cGRhdGVkSW5kZXhlcy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZTogJ2FkZEZlYXR1cmUnLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHVwZGF0ZWRJbmRleGVzLFxuICAgICAgZWRpdENvbnRleHQ6IHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IHVwZGF0ZWRJbmRleGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24oZ2VvbWV0cnk6IFBvbHlnb24pOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmUoKTtcbiAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgaWYgKG1vZGVDb25maWcgJiYgbW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFzZWxlY3RlZEZlYXR1cmUgfHxcbiAgICAgICAgKHNlbGVjdGVkRmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSAnUG9seWdvbicgJiZcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gJ011bHRpUG9seWdvbicpXG4gICAgICApIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdib29sZWFuT3BlcmF0aW9uIG9ubHkgc3VwcG9ydGVkIGZvciBzaW5nbGUgUG9seWdvbiBvciBNdWx0aVBvbHlnb24gc2VsZWN0aW9uJ1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmVhdHVyZSA9IHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICBnZW9tZXRyeSxcbiAgICAgIH07XG5cbiAgICAgIGxldCB1cGRhdGVkR2VvbWV0cnk7XG4gICAgICBpZiAobW9kZUNvbmZpZy5ib29sZWFuT3BlcmF0aW9uID09PSAndW5pb24nKSB7XG4gICAgICAgIHVwZGF0ZWRHZW9tZXRyeSA9IHR1cmZVbmlvbihzZWxlY3RlZEZlYXR1cmUsIGZlYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlQ29uZmlnLmJvb2xlYW5PcGVyYXRpb24gPT09ICdkaWZmZXJlbmNlJykge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHVwZGF0ZWRHZW9tZXRyeSA9IHR1cmZEaWZmZXJlbmNlKHNlbGVjdGVkRmVhdHVyZSwgZmVhdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKG1vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbiA9PT0gJ2ludGVyc2VjdGlvbicpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB1cGRhdGVkR2VvbWV0cnkgPSB0dXJmSW50ZXJzZWN0KHNlbGVjdGVkRmVhdHVyZSwgZmVhdHVyZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgICBjb25zb2xlLndhcm4oYEludmFsaWQgYm9vbGVhbk9wZXJhdGlvbiAke21vZGVDb25maWcuYm9vbGVhbk9wZXJhdGlvbn1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICghdXBkYXRlZEdlb21ldHJ5KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsaW5nIGVkaXQuIEJvb2xlYW4gb3BlcmF0aW9uIGVyYXNlZCBlbnRpcmUgcG9seWdvbi4nKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpWzBdO1xuXG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAucmVwbGFjZUdlb21ldHJ5KGZlYXR1cmVJbmRleCwgdXBkYXRlZEdlb21ldHJ5Lmdlb21ldHJ5KVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ3VuaW9uR2VvbWV0cnknLFxuICAgICAgICBmZWF0dXJlSW5kZXhlczogW2ZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtmZWF0dXJlSW5kZXhdLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEFkZEZlYXR1cmVBY3Rpb24oZ2VvbWV0cnkpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5fY2xpY2tTZXF1ZW5jZS5wdXNoKGV2ZW50Lmdyb3VuZENvb3Jkcyk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gIH1cblxuICBoYW5kbGVTdGFydERyYWdnaW5nKGV2ZW50OiBTdGFydERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaWNrZWRFZGl0SGFuZGxlKFxuICBwaWNrczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBFZGl0SGFuZGxlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGluZm8gPSBwaWNrcyAmJiBwaWNrcy5maW5kKChwaWNrKSA9PiBwaWNrLmlzRWRpdGluZ0hhbmRsZSk7XG4gIGlmIChpbmZvKSB7XG4gICAgcmV0dXJuIGluZm8ub2JqZWN0O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZXJtZWRpYXRlUG9zaXRpb24ocG9zaXRpb24xOiBQb3NpdGlvbiwgcG9zaXRpb24yOiBQb3NpdGlvbik6IFBvc2l0aW9uIHtcbiAgY29uc3QgaW50ZXJtZWRpYXRlUG9zaXRpb24gPSBbXG4gICAgKHBvc2l0aW9uMVswXSArIHBvc2l0aW9uMlswXSkgLyAyLjAsXG4gICAgKHBvc2l0aW9uMVsxXSArIHBvc2l0aW9uMlsxXSkgLyAyLjAsXG4gIF07XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGludGVybWVkaWF0ZVBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JHZW9tZXRyeShcbiAgZ2VvbWV0cnk6IEdlb21ldHJ5LFxuICBmZWF0dXJlSW5kZXg6IG51bWJlcixcbiAgZWRpdEhhbmRsZVR5cGU6IEVkaXRIYW5kbGVUeXBlID0gJ2V4aXN0aW5nJ1xuKSB7XG4gIGxldCBoYW5kbGVzOiBFZGl0SGFuZGxlW10gPSBbXTtcblxuICBzd2l0Y2ggKGdlb21ldHJ5LnR5cGUpIHtcbiAgICBjYXNlICdQb2ludCc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5vdCBuZXN0ZWRcbiAgICAgIGhhbmRsZXMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbXSxcbiAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgdHlwZTogZWRpdEhhbmRsZVR5cGUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAxIGxldmVsXG4gICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgIGdldEVkaXRIYW5kbGVzRm9yQ29vcmRpbmF0ZXMoZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIFtdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAvLyBwb3NpdGlvbnMgYXJlIG5lc3RlZCAyIGxldmVsc1xuICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBnZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGg7IGErKykge1xuICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhnZW9tZXRyeS5jb29yZGluYXRlc1thXSwgW2FdLCBmZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGVUeXBlKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgICAgLy8gRG9uJ3QgcmVwZWF0IHRoZSBmaXJzdC9sYXN0IGhhbmRsZSBmb3IgUG9seWdvbnNcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5zbGljZSgwLCAtMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgIC8vIHBvc2l0aW9ucyBhcmUgbmVzdGVkIDMgbGV2ZWxzXG4gICAgICBmb3IgKGxldCBhID0gMDsgYSA8IGdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgIGZvciAobGV0IGIgPSAwOyBiIDwgZ2VvbWV0cnkuY29vcmRpbmF0ZXNbYV0ubGVuZ3RoOyBiKyspIHtcbiAgICAgICAgICBoYW5kbGVzID0gaGFuZGxlcy5jb25jYXQoXG4gICAgICAgICAgICBnZXRFZGl0SGFuZGxlc0ZvckNvb3JkaW5hdGVzKFxuICAgICAgICAgICAgICBnZW9tZXRyeS5jb29yZGluYXRlc1thXVtiXSxcbiAgICAgICAgICAgICAgW2EsIGJdLFxuICAgICAgICAgICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICAgIGVkaXRIYW5kbGVUeXBlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBEb24ndCByZXBlYXQgdGhlIGZpcnN0L2xhc3QgaGFuZGxlIGZvciBQb2x5Z29uc1xuICAgICAgICAgIGhhbmRsZXMgPSBoYW5kbGVzLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhyb3cgRXJyb3IoYFVuaGFuZGxlZCBnZW9tZXRyeSB0eXBlOiAke2dlb21ldHJ5LnR5cGV9YCk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlcztcbn1cblxuZnVuY3Rpb24gZ2V0RWRpdEhhbmRsZXNGb3JDb29yZGluYXRlcyhcbiAgY29vcmRpbmF0ZXM6IGFueVtdLFxuICBwb3NpdGlvbkluZGV4UHJlZml4OiBudW1iZXJbXSxcbiAgZmVhdHVyZUluZGV4OiBudW1iZXIsXG4gIGVkaXRIYW5kbGVUeXBlOiBFZGl0SGFuZGxlVHlwZSA9ICdleGlzdGluZydcbik6IEVkaXRIYW5kbGVbXSB7XG4gIGNvbnN0IGVkaXRIYW5kbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvb3JkaW5hdGVzW2ldO1xuICAgIGVkaXRIYW5kbGVzLnB1c2goe1xuICAgICAgcG9zaXRpb24sXG4gICAgICBwb3NpdGlvbkluZGV4ZXM6IFsuLi5wb3NpdGlvbkluZGV4UHJlZml4LCBpXSxcbiAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgIHR5cGU6IGVkaXRIYW5kbGVUeXBlLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBlZGl0SGFuZGxlcztcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/modify-handler.js b/modules/layers/dist/mode-handlers/modify-handler.js new file mode 100644 index 000000000..2f630bf1d --- /dev/null +++ b/modules/layers/dist/mode-handlers/modify-handler.js @@ -0,0 +1,316 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ModifyHandler = void 0; + +var _nearestPointOnLine2 = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _helpers = require("@turf/helpers"); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ModifyHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ModifyHandler, _ModeHandler); + + var _super = _createSuper(ModifyHandler); + + function ModifyHandler() { + var _this; + + _classCallCheck(this, ModifyHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_lastPointerMovePicks", void 0); + + return _this; + } + + _createClass(ModifyHandler, [{ + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var _this2 = this; + + var handles = []; + + var _this$featureCollecti = this.featureCollection.getObject(), + features = _this$featureCollecti.features; + + var _iterator = _createForOfIteratorHelper(this.getSelectedFeatureIndexes()), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var _index = _step.value; + + if (_index < features.length) { + var _handles; + + var geometry = features[_index].geometry; + + (_handles = handles).push.apply(_handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, _index))); + } else { + console.warn("selectedFeatureIndexes out of range ".concat(_index)); // eslint-disable-line no-console,no-undef + } + } // intermediate edit handle + + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + if (picks && picks.length && groundCoords) { + var existingEditHandle = picks.find(function (pick) { + return pick.isEditingHandle && pick.object && pick.object.type === 'existing'; + }); // don't show intermediate point when too close to an existing edit handle + + var featureAsPick = !existingEditHandle && picks.find(function (pick) { + return !pick.isEditingHandle; + }); // is the feature in the pick selected + + if (featureAsPick && !featureAsPick.object.geometry.type.includes('Point') && this.getSelectedFeatureIndexes().includes(featureAsPick.index)) { + var intermediatePoint = null; + var positionIndexPrefix = []; + var referencePoint = (0, _helpers.point)(groundCoords); // process all lines of the (single) feature + + (0, _utils.recursivelyTraverseNestedArrays)(featureAsPick.object.geometry.coordinates, [], function (lineString, prefix) { + var lineStringFeature = (0, _helpers.lineString)(lineString); + + var candidateIntermediatePoint = _this2.nearestPointOnLine( // @ts-ignore + lineStringFeature, referencePoint); + + if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) { + intermediatePoint = candidateIntermediatePoint; + positionIndexPrefix = prefix; + } + }); // tack on the lone intermediate point to the set of handles + + if (intermediatePoint) { + var _intermediatePoint = intermediatePoint, + position = _intermediatePoint.geometry.coordinates, + index = _intermediatePoint.properties.index; + handles = [].concat(_toConsumableArray(handles), [{ + position: position, + positionIndexes: [].concat(_toConsumableArray(positionIndexPrefix), [index + 1]), + featureIndex: featureAsPick.index, + type: 'intermediate' + }]); + } + } + } + + return handles; + } // turf.js does not support elevation for nearestPointOnLine + + }, { + key: "nearestPointOnLine", + value: function nearestPointOnLine(line, inPoint) { + var coordinates = line.geometry.coordinates; + + if (coordinates.some(function (coord) { + return coord.length > 2; + })) { + var modeConfig = this.getModeConfig(); + + if (modeConfig && modeConfig.viewport) { + // This line has elevation, we need to use alternative algorithm + return (0, _utils.nearestPointOnProjectedLine)(line, inPoint, modeConfig.viewport); + } // eslint-disable-next-line no-console,no-undef + + + console.log('Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'); + } + + return (0, _nearestPointOnLine2["default"])(line, inPoint); + } + }, { + key: "handleClick", + value: function handleClick(event) { + var editAction = null; + var clickedEditHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (clickedEditHandle && clickedEditHandle.featureIndex >= 0) { + if (clickedEditHandle.type === 'existing') { + var updatedData; + + try { + updatedData = this.getImmutableFeatureCollection().removePosition(clickedEditHandle.featureIndex, clickedEditHandle.positionIndexes).getObject(); + } catch (ignored) {// This happens if user attempts to remove the last point + } + + if (updatedData) { + editAction = { + updatedData: updatedData, + editType: 'removePosition', + featureIndexes: [clickedEditHandle.featureIndex], + editContext: { + positionIndexes: clickedEditHandle.positionIndexes, + position: clickedEditHandle.position + } + }; + } + } else if (clickedEditHandle.type === 'intermediate') { + var _updatedData = this.getImmutableFeatureCollection().addPosition(clickedEditHandle.featureIndex, clickedEditHandle.positionIndexes, clickedEditHandle.position).getObject(); + + if (_updatedData) { + editAction = { + updatedData: _updatedData, + editType: 'addPosition', + featureIndexes: [clickedEditHandle.featureIndex], + editContext: { + positionIndexes: clickedEditHandle.positionIndexes, + position: clickedEditHandle.position + } + }; + } + } + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + this._lastPointerMovePicks = event.picks; + var editAction = null; + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (event.isDragging && editHandle) { + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'movePosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } // Cancel map panning if pointer went down on an edit handle + + + var cancelMapPan = Boolean(editHandle); + return { + editAction: editAction, + cancelMapPan: cancelMapPan + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle && editHandle.type === 'intermediate') { + var updatedData = this.getImmutableFeatureCollection().addPosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'addPosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } + + return editAction; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + var selectedFeatureIndexes = this.getSelectedFeatureIndexes(); + var editHandle = (0, _modeHandler.getPickedEditHandle)(event.picks); + + if (selectedFeatureIndexes.length && editHandle) { + var updatedData = this.getImmutableFeatureCollection().replacePosition(editHandle.featureIndex, editHandle.positionIndexes, event.groundCoords).getObject(); + editAction = { + updatedData: updatedData, + editType: 'finishMovePosition', + featureIndexes: [editHandle.featureIndex], + editContext: { + positionIndexes: editHandle.positionIndexes, + position: event.groundCoords + } + }; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + var picks = this._lastPointerMovePicks; + + if (picks && picks.length > 0) { + var handlePicked = picks.some(function (pick) { + return pick.isEditingHandle; + }); + + if (handlePicked) { + return 'cell'; + } + } + + return isDragging ? 'grabbing' : 'grab'; + } + }]); + + return ModifyHandler; +}(_modeHandler.ModeHandler); + +exports.ModifyHandler = ModifyHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL21vZGlmeS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIk1vZGlmeUhhbmRsZXIiLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsImhhbmRsZXMiLCJmZWF0dXJlQ29sbGVjdGlvbiIsImdldE9iamVjdCIsImZlYXR1cmVzIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImluZGV4IiwibGVuZ3RoIiwiZ2VvbWV0cnkiLCJwdXNoIiwiY29uc29sZSIsIndhcm4iLCJleGlzdGluZ0VkaXRIYW5kbGUiLCJmaW5kIiwicGljayIsImlzRWRpdGluZ0hhbmRsZSIsIm9iamVjdCIsInR5cGUiLCJmZWF0dXJlQXNQaWNrIiwiaW5jbHVkZXMiLCJpbnRlcm1lZGlhdGVQb2ludCIsInBvc2l0aW9uSW5kZXhQcmVmaXgiLCJyZWZlcmVuY2VQb2ludCIsImNvb3JkaW5hdGVzIiwibGluZVN0cmluZyIsInByZWZpeCIsImxpbmVTdHJpbmdGZWF0dXJlIiwiY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQiLCJuZWFyZXN0UG9pbnRPbkxpbmUiLCJwcm9wZXJ0aWVzIiwiZGlzdCIsInBvc2l0aW9uIiwicG9zaXRpb25JbmRleGVzIiwiZmVhdHVyZUluZGV4IiwibGluZSIsImluUG9pbnQiLCJzb21lIiwiY29vcmQiLCJtb2RlQ29uZmlnIiwiZ2V0TW9kZUNvbmZpZyIsInZpZXdwb3J0IiwibG9nIiwiZXZlbnQiLCJlZGl0QWN0aW9uIiwiY2xpY2tlZEVkaXRIYW5kbGUiLCJ1cGRhdGVkRGF0YSIsImdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwicmVtb3ZlUG9zaXRpb24iLCJpZ25vcmVkIiwiZWRpdFR5cGUiLCJmZWF0dXJlSW5kZXhlcyIsImVkaXRDb250ZXh0IiwiYWRkUG9zaXRpb24iLCJfbGFzdFBvaW50ZXJNb3ZlUGlja3MiLCJlZGl0SGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImlzRHJhZ2dpbmciLCJyZXBsYWNlUG9zaXRpb24iLCJjYW5jZWxNYXBQYW4iLCJCb29sZWFuIiwic2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImhhbmRsZVBpY2tlZCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFXQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0lBQ2FBLGE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DQUdJQyxLLEVBQW9DQyxZLEVBQXVDO0FBQUE7O0FBQ3hGLFVBQUlDLE9BQU8sR0FBRyxFQUFkOztBQUR3RixrQ0FFbkUsS0FBS0MsaUJBQUwsQ0FBdUJDLFNBQXZCLEVBRm1FO0FBQUEsVUFFaEZDLFFBRmdGLHlCQUVoRkEsUUFGZ0Y7O0FBQUEsaURBSXBFLEtBQUtDLHlCQUFMLEVBSm9FO0FBQUE7O0FBQUE7QUFJeEYsNERBQXNEO0FBQUEsY0FBM0NDLE1BQTJDOztBQUNwRCxjQUFJQSxNQUFLLEdBQUdGLFFBQVEsQ0FBQ0csTUFBckIsRUFBNkI7QUFBQTs7QUFBQSxnQkFDbkJDLFFBRG1CLEdBQ05KLFFBQVEsQ0FBQ0UsTUFBRCxDQURGLENBQ25CRSxRQURtQjs7QUFFM0Isd0JBQUFQLE9BQU8sRUFBQ1EsSUFBUixvQ0FBZ0IsNENBQTBCRCxRQUExQixFQUFvQ0YsTUFBcEMsQ0FBaEI7QUFDRCxXQUhELE1BR087QUFDTEksWUFBQUEsT0FBTyxDQUFDQyxJQUFSLCtDQUFvREwsTUFBcEQsR0FESyxDQUN5RDtBQUMvRDtBQUNGLFNBWHVGLENBYXhGOztBQWJ3RjtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQWN4RixVQUFJUCxLQUFLLElBQUlBLEtBQUssQ0FBQ1EsTUFBZixJQUF5QlAsWUFBN0IsRUFBMkM7QUFDekMsWUFBTVksa0JBQWtCLEdBQUdiLEtBQUssQ0FBQ2MsSUFBTixDQUN6QixVQUFDQyxJQUFEO0FBQUEsaUJBQVVBLElBQUksQ0FBQ0MsZUFBTCxJQUF3QkQsSUFBSSxDQUFDRSxNQUE3QixJQUF1Q0YsSUFBSSxDQUFD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R0FBRyxLQUFLQyw2QkFBTCxHQUNqQlcsZUFEaUIsQ0FDREgsVUFBVSxDQUFDckIsWUFEVixFQUN3QnFCLFVBQVUsQ0FBQ3RCLGVBRG5DLEVBQ29EVSxLQUFLLENBQUMxQyxZQUQxRCxFQUVqQkcsU0FGaUIsRUFBcEI7QUFJQXdDLFFBQUFBLFVBQVUsR0FBRztBQUNYRSxVQUFBQSxXQUFXLEVBQVhBLFdBRFc7QUFFWEksVUFBQUEsUUFBUSxFQUFFLG9CQUZDO0FBR1hDLFVBQUFBLGNBQWMsRUFBRSxDQUFDSSxVQUFVLENBQUNyQixZQUFaLENBSEw7QUFJWGtCLFVBQUFBLFdBQVcsRUFBRTtBQUNYbkIsWUFBQUEsZUFBZSxFQUFFc0IsVUFBVSxDQUFDdEIsZUFEakI7QUFFWEQsWUFBQUEsUUFBUSxFQUFFVyxLQUFLLENBQUMxQztBQUZMO0FBSkYsU0FBYjtBQVNEOztBQUVELGFBQU8yQyxVQUFQO0FBQ0Q7OztvQ0FFMEQ7QUFBQSxVQUEvQ2EsVUFBK0MsUUFBL0NBLFVBQStDO0FBQ3pELFVBQU16RCxLQUFLLEdBQUcsS0FBS3NELHFCQUFuQjs7QUFFQSxVQUFJdEQsS0FBSyxJQUFJQSxLQUFLLENBQUNRLE1BQU4sR0FBZSxDQUE1QixFQUErQjtBQUM3QixZQUFNc0QsWUFBWSxHQUFHOUQsS0FBSyxDQUFDcUMsSUFBTixDQUFXLFVBQUN0QixJQUFEO0FBQUEsaUJBQVVBLElBQUksQ0FBQ0MsZUFBZjtBQUFBLFNBQVgsQ0FBckI7O0FBQ0EsWUFBSThDLFlBQUosRUFBa0I7QUFDaEIsaUJBQU8sTUFBUDtBQUNEO0FBQ0Y7O0FBRUQsYUFBT0wsVUFBVSxHQUFHLFVBQUgsR0FBZ0IsTUFBakM7QUFDRDs7OztFQTdPZ0NNLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgcG9pbnQsIGxpbmVTdHJpbmcgYXMgdG9MaW5lU3RyaW5nIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBQb3NpdGlvbiwgRmVhdHVyZU9mLCBQb2ludCwgTGluZVN0cmluZyB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQge1xuICByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzLFxuICBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUsXG4gIE5lYXJlc3RQb2ludFR5cGUsXG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG59IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRBY3Rpb24sXG4gIEVkaXRIYW5kbGUsXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBNb2RpZnlIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfbGFzdFBvaW50ZXJNb3ZlUGlja3M6IGFueTtcblxuICBnZXRFZGl0SGFuZGxlcyhwaWNrcz86IEFycmF5PFJlY29yZDxzdHJpbmcsIGFueT4+LCBncm91bmRDb29yZHM/OiBQb3NpdGlvbik6IEVkaXRIYW5kbGVbXSB7XG4gICAgbGV0IGhhbmRsZXMgPSBbXTtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aGlzLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuXG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKSkge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oYHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgb3V0IG9mIHJhbmdlICR7aW5kZXh9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGludGVybWVkaWF0ZSBlZGl0IGhhbmRsZVxuICAgIGlmIChwaWNrcyAmJiBwaWNrcy5sZW5ndGggJiYgZ3JvdW5kQ29vcmRzKSB7XG4gICAgICBjb25zdCBleGlzdGluZ0VkaXRIYW5kbGUgPSBwaWNrcy5maW5kKFxuICAgICAgICAocGljaykgPT4gcGljay5pc0VkaXRpbmdIYW5kbGUgJiYgcGljay5vYmplY3QgJiYgcGljay5vYmplY3QudHlwZSA9PT0gJ2V4aXN0aW5nJ1xuICAgICAgKTtcbiAgICAgIC8vIGRvbid0IHNob3cgaW50ZXJtZWRpYXRlIHBvaW50IHdoZW4gdG9vIGNsb3NlIHRvIGFuIGV4aXN0aW5nIGVkaXQgaGFuZGxlXG4gICAgICBjb25zdCBmZWF0dXJlQXNQaWNrID0gIWV4aXN0aW5nRWRpdEhhbmRsZSAmJiBwaWNrcy5maW5kKChwaWNrKSA9PiAhcGljay5pc0VkaXRpbmdIYW5kbGUpO1xuXG4gICAgICAvLyBpcyB0aGUgZmVhdHVyZSBpbiB0aGUgcGljayBzZWxlY3RlZFxuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlQXNQaWNrICYmXG4gICAgICAgICFmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS50eXBlLmluY2x1ZGVzKCdQb2ludCcpICYmXG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpLmluY2x1ZGVzKGZlYXR1cmVBc1BpY2suaW5kZXgpXG4gICAgICApIHtcbiAgICAgICAgbGV0IGludGVybWVkaWF0ZVBvaW50OiBOZWFyZXN0UG9pbnRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gICAgICAgIGxldCBwb3NpdGlvbkluZGV4UHJlZml4ID0gW107XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVBvaW50ID0gcG9pbnQoZ3JvdW5kQ29vcmRzKTtcbiAgICAgICAgLy8gcHJvY2VzcyBhbGwgbGluZXMgb2YgdGhlIChzaW5nbGUpIGZlYXR1cmVcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyhcbiAgICAgICAgICBmZWF0dXJlQXNQaWNrLm9iamVjdC5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICAobGluZVN0cmluZywgcHJlZml4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lU3RyaW5nRmVhdHVyZSA9IHRvTGluZVN0cmluZyhsaW5lU3RyaW5nKTtcblxuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSW50ZXJtZWRpYXRlUG9pbnQgPSB0aGlzLm5lYXJlc3RQb2ludE9uTGluZShcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBsaW5lU3RyaW5nRmVhdHVyZSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlUG9pbnRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFpbnRlcm1lZGlhdGVQb2ludCB8fFxuICAgICAgICAgICAgICBjYW5kaWRhdGVJbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3QgPCBpbnRlcm1lZGlhdGVQb2ludC5wcm9wZXJ0aWVzLmRpc3RcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVQb2ludCA9IGNhbmRpZGF0ZUludGVybWVkaWF0ZVBvaW50O1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4UHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgLy8gdGFjayBvbiB0aGUgbG9uZSBpbnRlcm1lZGlhdGUgcG9pbnQgdG8gdGhlIHNldCBvZiBoYW5kbGVzXG4gICAgICAgIGlmIChpbnRlcm1lZGlhdGVQb2ludCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGdlb21ldHJ5OiB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbiB9LFxuICAgICAgICAgICAgcHJvcGVydGllczogeyBpbmRleCB9LFxuICAgICAgICAgIH0gPSBpbnRlcm1lZGlhdGVQb2ludDtcbiAgICAgICAgICBoYW5kbGVzID0gW1xuICAgICAgICAgICAgLi4uaGFuZGxlcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogWy4uLnBvc2l0aW9uSW5kZXhQcmVmaXgsIGluZGV4ICsgMV0sXG4gICAgICAgICAgICAgIGZlYXR1cmVJbmRleDogZmVhdHVyZUFzUGljay5pbmRleCxcbiAgICAgICAgICAgICAgdHlwZTogJ2ludGVybWVkaWF0ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcztcbiAgfVxuXG4gIC8vIHR1cmYuanMgZG9lcyBub3Qgc3VwcG9ydCBlbGV2YXRpb24gZm9yIG5lYXJlc3RQb2ludE9uTGluZVxuICBuZWFyZXN0UG9pbnRPbkxpbmUobGluZTogRmVhdHVyZU9mPExpbmVTdHJpbmc+LCBpblBvaW50OiBGZWF0dXJlT2Y8UG9pbnQ+KTogTmVhcmVzdFBvaW50VHlwZSB7XG4gICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gbGluZS5nZW9tZXRyeTtcbiAgICBpZiAoY29vcmRpbmF0ZXMuc29tZSgoY29vcmQpID0+IGNvb3JkLmxlbmd0aCA+IDIpKSB7XG4gICAgICBjb25zdCBtb2RlQ29uZmlnID0gdGhpcy5nZXRNb2RlQ29uZmlnKCk7XG4gICAgICBpZiAobW9kZUNvbmZpZyAmJiBtb2RlQ29uZmlnLnZpZXdwb3J0KSB7XG4gICAgICAgIC8vIFRoaXMgbGluZSBoYXMgZWxldmF0aW9uLCB3ZSBuZWVkIHRvIHVzZSBhbHRlcm5hdGl2ZSBhbGdvcml0aG1cbiAgICAgICAgcmV0dXJuIG5lYXJlc3RQb2ludE9uUHJvamVjdGVkTGluZShsaW5lLCBpblBvaW50LCBtb2RlQ29uZmlnLnZpZXdwb3J0KTtcbiAgICAgIH1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlLG5vLXVuZGVmXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ0VkaXRpbmcgM0QgcG9pbnQgYnV0IG1vZGVDb25maWcudmlld3BvcnQgbm90IHByb3ZpZGVkLiBGYWxsaW5nIGJhY2sgdG8gMkQgbG9naWMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGluUG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IGNsaWNrZWRFZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG5cbiAgICBpZiAoY2xpY2tlZEVkaXRIYW5kbGUgJiYgY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4ID49IDApIHtcbiAgICAgIGlmIChjbGlja2VkRWRpdEhhbmRsZS50eXBlID09PSAnZXhpc3RpbmcnKSB7XG4gICAgICAgIGxldCB1cGRhdGVkRGF0YTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAgICAgLnJlbW92ZVBvc2l0aW9uKGNsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleCwgY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzKVxuICAgICAgICAgICAgLmdldE9iamVjdCgpO1xuICAgICAgICB9IGNhdGNoIChpZ25vcmVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIGlmIHVzZXIgYXR0ZW1wdHMgdG8gcmVtb3ZlIHRoZSBsYXN0IHBvaW50XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBkYXRlZERhdGEpIHtcbiAgICAgICAgICBlZGl0QWN0aW9uID0ge1xuICAgICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgICBlZGl0VHlwZTogJ3JlbW92ZVBvc2l0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleGVzOiBbY2xpY2tlZEVkaXRIYW5kbGUuZmVhdHVyZUluZGV4XSxcbiAgICAgICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogY2xpY2tlZEVkaXRIYW5kbGUucG9zaXRpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2xpY2tlZEVkaXRIYW5kbGUudHlwZSA9PT0gJ2ludGVybWVkaWF0ZScpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgICAgICAuYWRkUG9zaXRpb24oXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgICBjbGlja2VkRWRpdEhhbmRsZS5wb3NpdGlvblxuICAgICAgICAgIClcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgICAgaWYgKHVwZGF0ZWREYXRhKSB7XG4gICAgICAgICAgZWRpdEFjdGlvbiA9IHtcbiAgICAgICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgZWRpdFR5cGU6ICdhZGRQb3NpdGlvbicsXG4gICAgICAgICAgICBmZWF0dXJlSW5kZXhlczogW2NsaWNrZWRFZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4ZXM6IGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IGNsaWNrZWRFZGl0SGFuZGxlLnBvc2l0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnRcbiAgKTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIHRoaXMuX2xhc3RQb2ludGVyTW92ZVBpY2tzID0gZXZlbnQucGlja3M7XG5cbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgY29uc3QgZWRpdEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG5cbiAgICBpZiAoZXZlbnQuaXNEcmFnZ2luZyAmJiBlZGl0SGFuZGxlKSB7XG4gICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKVxuICAgICAgICAucmVwbGFjZVBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ21vdmVQb3NpdGlvbicsXG4gICAgICAgIGZlYXR1cmVJbmRleGVzOiBbZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXhdLFxuICAgICAgICBlZGl0Q29udGV4dDoge1xuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogZWRpdEhhbmRsZS5wb3NpdGlvbkluZGV4ZXMsXG4gICAgICAgICAgcG9zaXRpb246IGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQ2FuY2VsIG1hcCBwYW5uaW5nIGlmIHBvaW50ZXIgd2VudCBkb3duIG9uIGFuIGVkaXQgaGFuZGxlXG4gICAgY29uc3QgY2FuY2VsTWFwUGFuID0gQm9vbGVhbihlZGl0SGFuZGxlKTtcblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbiB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGxldCBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG5cbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUgJiYgZWRpdEhhbmRsZS50eXBlID09PSAnaW50ZXJtZWRpYXRlJykge1xuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdldEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKClcbiAgICAgICAgLmFkZFBvc2l0aW9uKGVkaXRIYW5kbGUuZmVhdHVyZUluZGV4LCBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcywgZXZlbnQuZ3JvdW5kQ29vcmRzKVxuICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGVkaXRBY3Rpb24gPSB7XG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0VHlwZTogJ2FkZFBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKTtcbiAgICBjb25zdCBlZGl0SGFuZGxlID0gZ2V0UGlja2VkRWRpdEhhbmRsZShldmVudC5waWNrcyk7XG4gICAgaWYgKHNlbGVjdGVkRmVhdHVyZUluZGV4ZXMubGVuZ3RoICYmIGVkaXRIYW5kbGUpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpXG4gICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZWRpdEhhbmRsZS5mZWF0dXJlSW5kZXgsIGVkaXRIYW5kbGUucG9zaXRpb25JbmRleGVzLCBldmVudC5ncm91bmRDb29yZHMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgZWRpdEFjdGlvbiA9IHtcbiAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgIGVkaXRUeXBlOiAnZmluaXNoTW92ZVBvc2l0aW9uJyxcbiAgICAgICAgZmVhdHVyZUluZGV4ZXM6IFtlZGl0SGFuZGxlLmZlYXR1cmVJbmRleF0sXG4gICAgICAgIGVkaXRDb250ZXh0OiB7XG4gICAgICAgICAgcG9zaXRpb25JbmRleGVzOiBlZGl0SGFuZGxlLnBvc2l0aW9uSW5kZXhlcyxcbiAgICAgICAgICBwb3NpdGlvbjogZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHBpY2tzID0gdGhpcy5fbGFzdFBvaW50ZXJNb3ZlUGlja3M7XG5cbiAgICBpZiAocGlja3MgJiYgcGlja3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgaGFuZGxlUGlja2VkID0gcGlja3Muc29tZSgocGljaykgPT4gcGljay5pc0VkaXRpbmdIYW5kbGUpO1xuICAgICAgaWYgKGhhbmRsZVBpY2tlZCkge1xuICAgICAgICByZXR1cm4gJ2NlbGwnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/rotate-handler.js b/modules/layers/dist/mode-handlers/rotate-handler.js new file mode 100644 index 000000000..c26f7a98a --- /dev/null +++ b/modules/layers/dist/mode-handlers/rotate-handler.js @@ -0,0 +1,161 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.RotateHandler = void 0; + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _transformRotate = _interopRequireDefault(require("@turf/transform-rotate")); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var RotateHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(RotateHandler, _ModeHandler); + + var _super = _createSuper(RotateHandler); + + function RotateHandler() { + var _this; + + _classCallCheck(this, RotateHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isRotatable", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingRotated", void 0); + + return _this; + } + + _createClass(RotateHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isRotatable = Boolean(this._geometryBeingRotated) || this.isSelectionPicked(event.picks); + + if (!this._isRotatable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeingRotated) { + // Rotate the geometry + editAction = this.getRotateAction(event.pointerDownGroundCoords, event.groundCoords, 'rotating'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isRotatable) { + return null; + } + + this._geometryBeingRotated = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeingRotated) { + // Rotate the geometry + editAction = this.getRotateAction(event.pointerDownGroundCoords, event.groundCoords, 'rotated'); + this._geometryBeingRotated = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isRotatable) { + // TODO: look at doing SVG cursors to get a better "rotate" cursor + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getRotateAction", + value: function getRotateAction(startDragPoint, currentPoint, editType) { + var startPosition = startDragPoint; + var centroid = (0, _centroid["default"])(this._geometryBeingRotated); + var angle = getRotationAngle(centroid, startPosition, currentPoint); // @ts-ignore + + var rotatedFeatures = (0, _transformRotate["default"])(this._geometryBeingRotated, angle); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = rotatedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return RotateHandler; +}(_modeHandler.ModeHandler); + +exports.RotateHandler = RotateHandler; + +function getRotationAngle(centroid, startDragPoint, currentPoint) { + var bearing1 = (0, _bearing["default"])(centroid, startDragPoint); + var bearing2 = (0, _bearing["default"])(centroid, currentPoint); + return bearing2 - bearing1; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3JvdGF0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlJvdGF0ZUhhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJfaXNSb3RhdGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVpbmdSb3RhdGVkIiwiaXNTZWxlY3Rpb25QaWNrZWQiLCJwaWNrcyIsInBvaW50ZXJEb3duR3JvdW5kQ29vcmRzIiwiY2FuY2VsTWFwUGFuIiwiaXNEcmFnZ2luZyIsImdldFJvdGF0ZUFjdGlvbiIsImdyb3VuZENvb3JkcyIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsInN0YXJ0UG9zaXRpb24iLCJjZW50cm9pZCIsImFuZ2xlIiwiZ2V0Um90YXRpb25BbmdsZSIsInJvdGF0ZWRGZWF0dXJlcyIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJzZWxlY3RlZEluZGV4ZXMiLCJnZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiaSIsImxlbmd0aCIsInNlbGVjdGVkSW5kZXgiLCJtb3ZlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInJlcGxhY2VHZW9tZXRyeSIsImdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIiwiYmVhcmluZzEiLCJiZWFyaW5nMiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLVEMsSyxFQUNzRTtBQUN0RSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsV0FBS0MsWUFBTCxHQUFvQkMsT0FBTyxDQUFDLEtBQUtDLHFCQUFOLENBQVAsSUFBdUMsS0FB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WixFQUFzQkosY0FBdEIsQ0FBakI7QUFDQSxNQUFNd0IsUUFBUSxHQUFHLHlCQUFZcEIsUUFBWixFQUFzQkgsWUFBdEIsQ0FBakI7QUFDQSxTQUFPdUIsUUFBUSxHQUFHRCxRQUFsQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZDZW50cm9pZCBmcm9tICdAdHVyZi9jZW50cm9pZCc7XG5pbXBvcnQgdHVyZkJlYXJpbmcgZnJvbSAnQHR1cmYvYmVhcmluZyc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVJvdGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tcm90YXRlJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBSb3RhdGVIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfaXNSb3RhdGFibGU6IGJvb2xlYW47XG4gIF9nZW9tZXRyeUJlaW5nUm90YXRlZDogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5faXNSb3RhdGFibGUgPSBCb29sZWFuKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKSB8fCB0aGlzLmlzU2VsZWN0aW9uUGlja2VkKGV2ZW50LnBpY2tzKTtcblxuICAgIGlmICghdGhpcy5faXNSb3RhdGFibGUgfHwgIWV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgdGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQpIHtcbiAgICAgIC8vIFJvdGF0ZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldFJvdGF0ZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMsXG4gICAgICAgIGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgJ3JvdGF0aW5nJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBlZGl0QWN0aW9uLCBjYW5jZWxNYXBQYW46IHRydWUgfTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2lzUm90YXRhYmxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCkge1xuICAgICAgLy8gUm90YXRlIHRoZSBnZW9tZXRyeVxuICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0Um90YXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bkdyb3VuZENvb3JkcyxcbiAgICAgICAgZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICAncm90YXRlZCdcbiAgICAgICk7XG4gICAgICB0aGlzLl9nZW9tZXRyeUJlaW5nUm90YXRlZCA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBnZXRDdXJzb3IoeyBpc0RyYWdnaW5nIH06IHsgaXNEcmFnZ2luZzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5faXNSb3RhdGFibGUpIHtcbiAgICAgIC8vIFRPRE86IGxvb2sgYXQgZG9pbmcgU1ZHIGN1cnNvcnMgdG8gZ2V0IGEgYmV0dGVyIFwicm90YXRlXCIgY3Vyc29yXG4gICAgICByZXR1cm4gJ21vdmUnO1xuICAgIH1cbiAgICByZXR1cm4gaXNEcmFnZ2luZyA/ICdncmFiYmluZycgOiAnZ3JhYic7XG4gIH1cblxuICBnZXRSb3RhdGVBY3Rpb24oc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLCBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLCBlZGl0VHlwZTogc3RyaW5nKTogRWRpdEFjdGlvbiB7XG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0RHJhZ1BvaW50O1xuICAgIGNvbnN0IGNlbnRyb2lkID0gdHVyZkNlbnRyb2lkKHRoaXMuX2dlb21ldHJ5QmVpbmdSb3RhdGVkKTtcbiAgICBjb25zdCBhbmdsZSA9IGdldFJvdGF0aW9uQW5nbGUoY2VudHJvaWQsIHN0YXJ0UG9zaXRpb24sIGN1cnJlbnRQb2ludCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHJvdGF0ZWRGZWF0dXJlcyA9IHR1cmZUcmFuc2Zvcm1Sb3RhdGUodGhpcy5fZ2VvbWV0cnlCZWluZ1JvdGF0ZWQsIGFuZ2xlKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gcm90YXRlZEZlYXR1cmVzLmZlYXR1cmVzW2ldO1xuICAgICAgdXBkYXRlZERhdGEgPSB1cGRhdGVkRGF0YS5yZXBsYWNlR2VvbWV0cnkoc2VsZWN0ZWRJbmRleCwgbW92ZWRGZWF0dXJlLmdlb21ldHJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlZERhdGE6IHVwZGF0ZWREYXRhLmdldE9iamVjdCgpLFxuICAgICAgZWRpdFR5cGUsXG4gICAgICBmZWF0dXJlSW5kZXhlczogc2VsZWN0ZWRJbmRleGVzLFxuICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRSb3RhdGlvbkFuZ2xlKGNlbnRyb2lkOiBQb3NpdGlvbiwgc3RhcnREcmFnUG9pbnQ6IFBvc2l0aW9uLCBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uKSB7XG4gIGNvbnN0IGJlYXJpbmcxID0gdHVyZkJlYXJpbmcoY2VudHJvaWQsIHN0YXJ0RHJhZ1BvaW50KTtcbiAgY29uc3QgYmVhcmluZzIgPSB0dXJmQmVhcmluZyhjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGJlYXJpbmcyIC0gYmVhcmluZzE7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/scale-handler.js b/modules/layers/dist/mode-handlers/scale-handler.js new file mode 100644 index 000000000..81ab63e74 --- /dev/null +++ b/modules/layers/dist/mode-handlers/scale-handler.js @@ -0,0 +1,163 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ScaleHandler = void 0; + +var _centroid = _interopRequireDefault(require("@turf/centroid")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformScale = _interopRequireDefault(require("@turf/transform-scale")); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ScaleHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ScaleHandler, _ModeHandler); + + var _super = _createSuper(ScaleHandler); + + function ScaleHandler() { + var _this; + + _classCallCheck(this, ScaleHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_isScalable", void 0); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeingScaled", void 0); + + return _this; + } + + _createClass(ScaleHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isScalable = Boolean(this._geometryBeingScaled) || this.isSelectionPicked(event.picks); + + if (!this._isScalable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeingScaled) { + // Scale the geometry + editAction = this.getScaleAction(event.pointerDownGroundCoords, event.groundCoords, 'scaling'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isScalable) { + return null; + } + + this._geometryBeingScaled = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeingScaled) { + // Scale the geometry + editAction = this.getScaleAction(event.pointerDownGroundCoords, event.groundCoords, 'scaled'); + this._geometryBeingScaled = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isScalable) { + // TODO: look at doing SVG cursors to get a better "scale" cursor + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getScaleAction", + value: function getScaleAction(startDragPoint, currentPoint, editType) { + var startPosition = startDragPoint; + var centroid = (0, _centroid["default"])(this._geometryBeingScaled); + var factor = getScaleFactor(centroid, startPosition, currentPoint); // @ts-ignore + + var scaledFeatures = (0, _transformScale["default"])(this._geometryBeingScaled, factor, { + origin: centroid + }); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = scaledFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return ScaleHandler; +}(_modeHandler.ModeHandler); + +exports.ScaleHandler = ScaleHandler; + +function getScaleFactor(centroid, startDragPoint, currentPoint) { + var startDistance = (0, _distance["default"])(centroid, startDragPoint); + var endDistance = (0, _distance["default"])(centroid, currentPoint); + return endDistance / startDistance; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NjYWxlLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiU2NhbGVIYW5kbGVyIiwiZXZlbnQiLCJlZGl0QWN0aW9uIiwiX2lzU2NhbGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVpbmdTY2FsZWQiLCJpc1NlbGVjdGlvblBpY2tlZCIsInBpY2tzIiwicG9pbnRlckRvd25Hcm91bmRDb29yZHMiLCJjYW5jZWxNYXBQYW4iLCJpc0RyYWdnaW5nIiwiZ2V0U2NhbGVBY3Rpb24iLCJncm91bmRDb29yZHMiLCJnZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXJ0RHJhZ1BvaW50IiwiY3VycmVudFBvaW50IiwiZWRpdFR5cGUiLCJzdGFydFBvc2l0aW9uIiwiY2VudHJvaWQiLCJmYWN0b3IiLCJnZXRTY2FsZUZhY3RvciIsInNjYWxlZEZlYXR1cmVzIiwib3JpZ2luIiwidXBkYXRlZERhdGEiLCJnZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInNlbGVjdGVkSW5kZXhlcyIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJpIiwibGVuZ3RoIiwic2VsZWN0ZWRJbmRleCIsIm1vdmVkRmVhdHVyZSIsImZlYXR1cmVzIiwicmVwbGFjZUdlb21ldHJ5IiwiZ2VvbWV0cnkiLCJnZXRPYmplY3QiLCJmZWF0dXJlSW5kZXhlcyIsImVkaXRDb250ZXh0IiwiTW9kZUhhbmRsZXIiLCJzdGFydERpc3RhbmNlIiwiZW5kRGlzdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBS1RDLEssRUFDc0U7QUFDdEUsVUFBSUMsVUFBeUMsR0FBRyxJQUFoRDtBQUVBLFdBQUtDLFdBQUwsR0FBbUJDLE9BQU8sQ0FBQyxLQUFLQyxvQkFBTixDQUFQ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LEVBQXNFQyxZQUF0RSxFQUE4RjtBQUM1RixNQUFNdUIsYUFBYSxHQUFHLDBCQUFhcEIsUUFBYixFQUF1QkosY0FBdkIsQ0FBdEI7QUFDQSxNQUFNeUIsV0FBVyxHQUFHLDBCQUFhckIsUUFBYixFQUF1QkgsWUFBdkIsQ0FBcEI7QUFDQSxTQUFPd0IsV0FBVyxHQUFHRCxhQUFyQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZDZW50cm9pZCBmcm9tICdAdHVyZi9jZW50cm9pZCc7XG5pbXBvcnQgdHVyZkRpc3RhbmNlIGZyb20gJ0B0dXJmL2Rpc3RhbmNlJztcbmltcG9ydCB0dXJmVHJhbnNmb3JtU2NhbGUgZnJvbSAnQHR1cmYvdHJhbnNmb3JtLXNjYWxlJztcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBQb2ludGVyTW92ZUV2ZW50LCBTdGFydERyYWdnaW5nRXZlbnQsIFN0b3BEcmFnZ2luZ0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbiwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBTY2FsZUhhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIF9pc1NjYWxhYmxlOiBib29sZWFuO1xuICBfZ2VvbWV0cnlCZWluZ1NjYWxlZDogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGhhbmRsZVBvaW50ZXJNb3ZlKFxuICAgIGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50XG4gICk6IHsgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7IGNhbmNlbE1hcFBhbjogYm9vbGVhbiB9IHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5faXNTY2FsYWJsZSA9IEJvb2xlYW4odGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCkgfHwgdGhpcy5pc1NlbGVjdGlvblBpY2tlZChldmVudC5waWNrcyk7XG5cbiAgICBpZiAoIXRoaXMuX2lzU2NhbGFibGUgfHwgIWV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzKSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm4geyBlZGl0QWN0aW9uOiBudWxsLCBjYW5jZWxNYXBQYW46IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmlzRHJhZ2dpbmcgJiYgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCkge1xuICAgICAgLy8gU2NhbGUgdGhlIGdlb21ldHJ5XG4gICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRTY2FsZUFjdGlvbihcbiAgICAgICAgZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMsXG4gICAgICAgIGV2ZW50Lmdyb3VuZENvb3JkcyxcbiAgICAgICAgJ3NjYWxpbmcnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbjogdHJ1ZSB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNTY2FsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlc0FzRmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVN0b3BEcmFnZ2luZyhldmVudDogU3RvcERyYWdnaW5nRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9nZW9tZXRyeUJlaW5nU2NhbGVkKSB7XG4gICAgICAvLyBTY2FsZSB0aGUgZ2VvbWV0cnlcbiAgICAgIGVkaXRBY3Rpb24gPSB0aGlzLmdldFNjYWxlQWN0aW9uKGV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzLCBldmVudC5ncm91bmRDb29yZHMsICdzY2FsZWQnKTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVpbmdTY2FsZWQgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICB9XG5cbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX2lzU2NhbGFibGUpIHtcbiAgICAgIC8vIFRPRE86IGxvb2sgYXQgZG9pbmcgU1ZHIGN1cnNvcnMgdG8gZ2V0IGEgYmV0dGVyIFwic2NhbGVcIiBjdXJzb3JcbiAgICAgIHJldHVybiAnbW92ZSc7XG4gICAgfVxuICAgIHJldHVybiBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbiAgfVxuXG4gIGdldFNjYWxlQWN0aW9uKHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbiwgY3VycmVudFBvaW50OiBQb3NpdGlvbiwgZWRpdFR5cGU6IHN0cmluZyk6IEVkaXRBY3Rpb24ge1xuICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBzdGFydERyYWdQb2ludDtcbiAgICBjb25zdCBjZW50cm9pZCA9IHR1cmZDZW50cm9pZCh0aGlzLl9nZW9tZXRyeUJlaW5nU2NhbGVkKTtcbiAgICBjb25zdCBmYWN0b3IgPSBnZXRTY2FsZUZhY3RvcihjZW50cm9pZCwgc3RhcnRQb3NpdGlvbiwgY3VycmVudFBvaW50KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qgc2NhbGVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtU2NhbGUodGhpcy5fZ2VvbWV0cnlCZWluZ1NjYWxlZCwgZmFjdG9yLCB7XG4gICAgICBvcmlnaW46IGNlbnRyb2lkLFxuICAgIH0pO1xuXG4gICAgbGV0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleGVzID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZEluZGV4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ZXNbaV07XG4gICAgICBjb25zdCBtb3ZlZEZlYXR1cmUgPSBzY2FsZWRGZWF0dXJlcy5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHNlbGVjdGVkSW5kZXhlcyxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGVGYWN0b3IoY2VudHJvaWQ6IFBvc2l0aW9uLCBzdGFydERyYWdQb2ludDogUG9zaXRpb24sIGN1cnJlbnRQb2ludDogUG9zaXRpb24pIHtcbiAgY29uc3Qgc3RhcnREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgc3RhcnREcmFnUG9pbnQpO1xuICBjb25zdCBlbmREaXN0YW5jZSA9IHR1cmZEaXN0YW5jZShjZW50cm9pZCwgY3VycmVudFBvaW50KTtcbiAgcmV0dXJuIGVuZERpc3RhbmNlIC8gc3RhcnREaXN0YW5jZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/snappable-handler.js b/modules/layers/dist/mode-handlers/snappable-handler.js new file mode 100644 index 000000000..ad8ededff --- /dev/null +++ b/modules/layers/dist/mode-handlers/snappable-handler.js @@ -0,0 +1,278 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SnappableHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var SnappableHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(SnappableHandler, _ModeHandler); + + var _super = _createSuper(SnappableHandler); + + function SnappableHandler(handler) { + var _this; + + _classCallCheck(this, SnappableHandler); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "_handler", void 0); + + _defineProperty(_assertThisInitialized(_this), "_editHandlePicks", void 0); + + _defineProperty(_assertThisInitialized(_this), "_startDragSnapHandlePosition", void 0); + + _this._handler = handler; + return _this; + } + + _createClass(SnappableHandler, [{ + key: "setFeatureCollection", + value: function setFeatureCollection(featureCollection) { + this._handler.setFeatureCollection(featureCollection); + } + }, { + key: "setModeConfig", + value: function setModeConfig(modeConfig) { + this._modeConfig = modeConfig; + + this._handler.setModeConfig(modeConfig); + } + }, { + key: "setSelectedFeatureIndexes", + value: function setSelectedFeatureIndexes(indexes) { + this._handler.setSelectedFeatureIndexes(indexes); + } + }, { + key: "_getSnappedMouseEvent", + value: function _getSnappedMouseEvent(event, snapPoint) { + // @ts-ignore + return Object.assign({}, event, { + groundCoords: snapPoint, + pointerDownGroundCoords: this._startDragSnapHandlePosition + }); + } + }, { + key: "_getEditHandlePicks", + value: function _getEditHandlePicks(event) { + var picks = event.picks; + var potentialSnapHandle = picks.find(function (pick) { + return pick.object && pick.object.type === 'intermediate'; + }); + var handles = { + potentialSnapHandle: potentialSnapHandle && potentialSnapHandle.object + }; + var pickedHandle = (0, _modeHandler.getPickedEditHandle)(event.pointerDownPicks); + + if (pickedHandle) { + return _objectSpread({}, handles, { + pickedHandle: pickedHandle + }); + } + + return handles; + } + }, { + key: "_updatePickedHandlePosition", + value: function _updatePickedHandlePosition(editAction) { + var _ref = this._editHandlePicks || {}, + pickedHandle = _ref.pickedHandle; + + if (pickedHandle && editAction) { + var featureIndexes = editAction.featureIndexes, + updatedData = editAction.updatedData; + + for (var i = 0; i < featureIndexes.length; i++) { + var selectedIndex = featureIndexes[i]; + var updatedFeature = updatedData.features[selectedIndex]; + var positionIndexes = pickedHandle.positionIndexes, + featureIndex = pickedHandle.featureIndex; + + if (selectedIndex >= 0 && featureIndex === selectedIndex) { + var coordinates = updatedFeature.geometry.coordinates; + pickedHandle.position = positionIndexes.reduce(function (a, b) { + return a[b]; + }, coordinates); + } + } + } + } // If additionalSnapTargets is present in modeConfig and is populated, this + // method will return those features along with the features + // that live in the current layer. Otherwise, this method will simply return the + // features from the current layer + + }, { + key: "_getSnapTargets", + value: function _getSnapTargets() { + var _ref2 = this.getModeConfig() || {}, + additionalSnapTargets = _ref2.additionalSnapTargets; + + additionalSnapTargets = additionalSnapTargets || []; + var features = [].concat(_toConsumableArray(this._handler.featureCollection.getObject().features), _toConsumableArray(additionalSnapTargets)); + return features; + } + }, { + key: "_getNonPickedIntermediateHandles", + value: function _getNonPickedIntermediateHandles() { + var handles = []; + + var features = this._getSnapTargets(); + + for (var i = 0; i < features.length; i++) { + // Filter out the currently selected feature(s) + var isCurrentIndexFeatureNotSelected = i < features.length && !this._handler.getSelectedFeatureIndexes().includes(i); + + if (isCurrentIndexFeatureNotSelected) { + var geometry = features[i].geometry; + handles.push.apply(handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, i, 'intermediate'))); + } + } + + return handles; + } // If no snap handle has been picked, only display the edit handles of the + // selected feature. If a snap handle has been picked, display said snap handle + // along with all snappable points on all non-selected features. + + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + var _ref3 = this._modeConfig || {}, + enableSnapping = _ref3.enableSnapping; + + var handles = this._handler.getEditHandles(picks, groundCoords); + + if (!enableSnapping) return handles; + + var _ref4 = this._editHandlePicks || {}, + pickedHandle = _ref4.pickedHandle; + + if (pickedHandle) { + handles.push.apply(handles, _toConsumableArray(this._getNonPickedIntermediateHandles()).concat([pickedHandle])); + return handles; + } + + var _this$_handler$featur = this._handler.featureCollection.getObject(), + features = _this$_handler$featur.features; + + var _iterator = _createForOfIteratorHelper(this._handler.getSelectedFeatureIndexes()), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var index = _step.value; + + if (index < features.length) { + var geometry = features[index].geometry; + handles.push.apply(handles, _toConsumableArray((0, _modeHandler.getEditHandlesForGeometry)(geometry, index, 'snap'))); + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return handles.filter(Boolean); + } + }, { + key: "_getSnapAwareEvent", + value: function _getSnapAwareEvent(event) { + var _ref5 = this._editHandlePicks || {}, + potentialSnapHandle = _ref5.potentialSnapHandle; + + return potentialSnapHandle && potentialSnapHandle.position ? this._getSnappedMouseEvent(event, potentialSnapHandle.position) : event; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + this._startDragSnapHandlePosition = ((0, _modeHandler.getPickedEditHandle)(event.picks) || {}).position; + return this._handler.handleStartDragging(event); + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + // @ts-ignore + var modeActionSummary = this._handler.handleStopDragging(this._getSnapAwareEvent(event)); + + this._editHandlePicks = null; + return modeActionSummary; + } + }, { + key: "getCursor", + value: function getCursor(event) { + return this._handler.getCursor(event); + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event) { + var _ref6 = this._handler.getModeConfig() || {}, + enableSnapping = _ref6.enableSnapping; + + if (enableSnapping) { + this._editHandlePicks = this._getEditHandlePicks(event); + } // @ts-ignore + + + var modeActionSummary = this._handler.handlePointerMove(this._getSnapAwareEvent(event)); + + var editAction = modeActionSummary.editAction; + + if (editAction) { + this._updatePickedHandlePosition(editAction); + } + + return modeActionSummary; + } + }]); + + return SnappableHandler; +}(_modeHandler.ModeHandler); + +exports.SnappableHandler = SnappableHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NuYXBwYWJsZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlNuYXBwYWJsZUhhbmRsZXIiLCJoYW5kbGVyIiwiX2hhbmRsZXIiLCJmZWF0dXJlQ29sbGVjdGlvbiIsInNldEZlYXR1cmVDb2xsZWN0aW9uIiwibW9kZUNvbmZpZyIsIl9tb2RlQ29uZmlnIiwic2V0TW9kZUNvbmZpZyIsImluZGV4ZXMiLCJzZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiZXZlbnQiLCJzbmFwUG9pbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJncm91bmRDb29yZHMiLCJwb2ludGVyRG93bkdyb3VuZENvb3JkcyIsIl9zdGFydERyYWdTbmFwSGFuZGxlUG9zaXRpb24iLCJwaWNrcyIsInBvdGVudGlhbFNuYXBIYW5kbGUiLCJmaW5kIiwicGljayIsIm9iamVjdCIsInR5cGUiLCJoYW5kbGVzIiwicGlja2VkSGFuZGxlIiwicG9pbnRlckRvd25QaWNrcyIsImVkaXRBY3Rpb24iLCJfZWRpdEhhbmRsZVBpY2tzIiwiZmVhdHVyZUluZGV4ZXMiLCJ1cGRhdGVkRGF0YSIsImkiLCJsZW5ndGgiLCJzZWxlY3RlZEluZGV4IiwidXBkYXRlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInBvc2l0aW9uSW5kZXhlcyIsImZlYXR1cmVJbmRleCIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJwb3NpdGlvbiIsInJlZHVjZSIsImEiLCJiIiwiZ2V0TW9kZUNvbmZpZyIsImFkZGl0aW9uYWxTbmFwVGFyZ2V0cyIsImdldE9iamVjdCIsIl9nZXRTbmFwVGFyZ2V0cyIsImlzQ3VycmVudEluZGV4RmVhdHVyZU5vdFNlbGVjdGVkIiwiZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcyIsImluY2x1ZGVzIiwicHVzaCIsImVuYWJsZVNuYXBwaW5nIiwiZ2V0RWRpdEhhbmRsZXMiLCJfZ2V0Tm9uUGlja2VkSW50ZXJtZWRpYXRlSGFuZGxlcyIsImluZGV4IiwiZmlsdGVyIiwiQm9vbGVhbiIsIl9nZXRTbmFwcGVkTW91c2VFdmVudCIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJtb2RlQWN0aW9uU3VtbWFyeSIsImhhbmRsZVN0b3BEcmFnZ2luZyIsIl9nZXRTbmFwQXdhcmVFdmVudCIsImdldEN1cnNvciIsIl9nZXRFZGl0SGFuZGxlUGlja3MiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl91cGRhdGVQaWNrZWRIYW5kbGVQb3NpdGlvbiIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUE7SUFDYUEsZ0I7Ozs7O0FBS1gsNEJBQVlDLE9BQVosRUFBa0M7QUFBQTs7QUFBQTs7QUFDaEM7O0FBRGdDOztBQUFBOztBQUFBOztBQUVoQyxVQUFLQyxRQUFMLEdBQWdCRCxPQUFoQjtBQUZnQztBQUdqQzs7Ozt5Q0FFb0JFLGlCLEVBQTRDO0FBQy9ELFdBQUtELFFBQUwsQ0FBY0Usb0JBQWQsQ0FBbUNELGlCQUFuQztBQUNEOzs7a0NBRWFFLFUsRUFBdUI7QUFDbkMsV0FBS0MsV0FBTCxHQUFtQkQsVUFBbkI7O0FBQ0EsV0FBS0gsUUFBTCxDQUFjSyxhQUFkLENBQTRCRixVQUE1QjtBQUNEOzs7OENBRXlCRyxPLEVBQXlCO0FBQ2pELFdBQUtOLFFBQUwsQ0FBY08seUJBQWQsQ0FBd0NELE9BQXhDO0FBQ0Q7OzswQ0FFcUJFLEssRUFBNEJDLFMsRUFBdUM7QUFDdkY7QUFDQSxhQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSCxLQUFsQixFQUF5QjtBQUM5QkksUUFBQUEsWUFBWSxFQUFFSCxTQURnQjtBQUU5QkksUUFBQUEsdUJBQXVCLEVBQUUsS0FBS0M7QUFGQSxPQUF6QixDQUFQO0FBSUQ7Ozt3Q0FFbUJOLEssRUFBc0M7QUFBQSxVQUNoRE8sS0FEZ0QsR0FDdENQLEtBRHNDLENBQ2hETyxLQURnRDtBQUd4RCxVQUFNQyxtQkFBbUIsR0FBR0QsS0FBSyxDQUFD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TWlELGlCQUFpQixHQUFHLEtBQUt6RCxRQUFMLENBQWM4RCxpQkFBZCxDQUFnQyxLQUFLSCxrQkFBTCxDQUF3Qm5ELEtBQXhCLENBQWhDLENBQTFCOztBQVBzRSxVQVE5RGdCLFVBUjhELEdBUS9DaUMsaUJBUitDLENBUTlEakMsVUFSOEQ7O0FBU3RFLFVBQUlBLFVBQUosRUFBZ0I7QUFDZCxhQUFLdUMsMkJBQUwsQ0FBaUN2QyxVQUFqQztBQUNEOztBQUVELGFBQU9pQyxpQkFBUDtBQUNEOzs7O0VBeEttQ08sd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlLCBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7XG4gIEVkaXRIYW5kbGUsXG4gIEVkaXRBY3Rpb24sXG4gIE1vZGVIYW5kbGVyLFxuICBnZXRQaWNrZWRFZGl0SGFuZGxlLFxuICBnZXRFZGl0SGFuZGxlc0Zvckdlb21ldHJ5LFxufSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbnR5cGUgSGFuZGxlUGlja3MgPSB7IHBpY2tlZEhhbmRsZT86IEVkaXRIYW5kbGU7IHBvdGVudGlhbFNuYXBIYW5kbGU/OiBFZGl0SGFuZGxlIH07XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBTbmFwcGFibGVIYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBfaGFuZGxlcjogTW9kZUhhbmRsZXI7XG4gIF9lZGl0SGFuZGxlUGlja3M6IEhhbmRsZVBpY2tzIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX3N0YXJ0RHJhZ1NuYXBIYW5kbGVQb3NpdGlvbjogUG9zaXRpb247XG5cbiAgY29uc3RydWN0b3IoaGFuZGxlcjogTW9kZUhhbmRsZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2hhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0RmVhdHVyZUNvbGxlY3Rpb24oZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5faGFuZGxlci5zZXRGZWF0dXJlQ29sbGVjdGlvbihmZWF0dXJlQ29sbGVjdGlvbik7XG4gIH1cblxuICBzZXRNb2RlQ29uZmlnKG1vZGVDb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX21vZGVDb25maWcgPSBtb2RlQ29uZmlnO1xuICAgIHRoaXMuX2hhbmRsZXIuc2V0TW9kZUNvbmZpZyhtb2RlQ29uZmlnKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVyLnNldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoaW5kZXhlcyk7XG4gIH1cblxuICBfZ2V0U25hcHBlZE1vdXNlRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNuYXBQb2ludDogUG9zaXRpb24pOiBQb2ludGVyTW92ZUV2ZW50IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGV2ZW50LCB7XG4gICAgICBncm91bmRDb29yZHM6IHNuYXBQb2ludCxcbiAgICAgIHBvaW50ZXJEb3duR3JvdW5kQ29vcmRzOiB0aGlzLl9zdGFydERyYWdTbmFwSGFuZGxlUG9zaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBfZ2V0RWRpdEhhbmRsZVBpY2tzKGV2ZW50OiBQb2ludGVyTW92ZUV2ZW50KTogSGFuZGxlUGlja3Mge1xuICAgIGNvbnN0IHsgcGlja3MgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgcG90ZW50aWFsU25hcEhhbmRsZSA9IHBpY2tzLmZpbmQoXG4gICAgICAocGljaykgPT4gcGljay5vYmplY3QgJiYgcGljay5vYmplY3QudHlwZSA9PT0gJ2ludGVybWVkaWF0ZSdcbiAgICApO1xuICAgIGNvbnN0IGhhbmRsZXMgPSB7IHBvdGVudGlhbFNuYXBIYW5kbGU6IHBvdGVudGlhbFNuYXBIYW5kbGUgJiYgcG90ZW50aWFsU25hcEhhbmRsZS5vYmplY3QgfTtcblxuICAgIGNvbnN0IHBpY2tlZEhhbmRsZSA9IGdldFBpY2tlZEVkaXRIYW5kbGUoZXZlbnQucG9pbnRlckRvd25QaWNrcyk7XG4gICAgaWYgKHBpY2tlZEhhbmRsZSkge1xuICAgICAgcmV0dXJuIHsgLi4uaGFuZGxlcywgcGlja2VkSGFuZGxlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXM7XG4gIH1cblxuICBfdXBkYXRlUGlja2VkSGFuZGxlUG9zaXRpb24oZWRpdEFjdGlvbjogRWRpdEFjdGlvbikge1xuICAgIGNvbnN0IHsgcGlja2VkSGFuZGxlIH0gPSB0aGlzLl9lZGl0SGFuZGxlUGlja3MgfHwge307XG5cbiAgICBpZiAocGlja2VkSGFuZGxlICYmIGVkaXRBY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgZmVhdHVyZUluZGV4ZXMsIHVwZGF0ZWREYXRhIH0gPSBlZGl0QWN0aW9uO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZlYXR1cmVJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBmZWF0dXJlSW5kZXhlc1tpXTtcbiAgICAgICAgY29uc3QgdXBkYXRlZEZlYXR1cmUgPSB1cGRhdGVkRGF0YS5mZWF0dXJlc1tzZWxlY3RlZEluZGV4XTtcblxuICAgICAgICBjb25zdCB7IHBvc2l0aW9uSW5kZXhlcywgZmVhdHVyZUluZGV4IH0gPSBwaWNrZWRIYW5kbGU7XG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDAgJiYgZmVhdHVyZUluZGV4ID09PSBzZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgY29uc3QgeyBjb29yZGluYXRlcyB9ID0gdXBkYXRlZEZlYXR1cmUuZ2VvbWV0cnk7XG4gICAgICAgICAgcGlja2VkSGFuZGxlLnBvc2l0aW9uID0gcG9zaXRpb25JbmRleGVzLnJlZHVjZShcbiAgICAgICAgICAgIChhOiBhbnlbXSwgYjogbnVtYmVyKSA9PiBhW2JdLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgYWRkaXRpb25hbFNuYXBUYXJnZXRzIGlzIHByZXNlbnQgaW4gbW9kZUNvbmZpZyBhbmQgaXMgcG9wdWxhdGVkLCB0aGlzXG4gIC8vIG1ldGhvZCB3aWxsIHJldHVybiB0aG9zZSBmZWF0dXJlcyBhbG9uZyB3aXRoIHRoZSBmZWF0dXJlc1xuICAvLyB0aGF0IGxpdmUgaW4gdGhlIGN1cnJlbnQgbGF5ZXIuIE90aGVyd2lzZSwgdGhpcyBtZXRob2Qgd2lsbCBzaW1wbHkgcmV0dXJuIHRoZVxuICAvLyBmZWF0dXJlcyBmcm9tIHRoZSBjdXJyZW50IGxheWVyXG4gIF9nZXRTbmFwVGFyZ2V0cygpOiBGZWF0dXJlW10ge1xuICAgIGxldCB7IGFkZGl0aW9uYWxTbmFwVGFyZ2V0cyB9ID0gdGhpcy5nZXRNb2RlQ29uZmlnKCkgfHwge307XG4gICAgYWRkaXRpb25hbFNuYXBUYXJnZXRzID0gYWRkaXRpb25hbFNuYXBUYXJnZXRzIHx8IFtdO1xuXG4gICAgY29uc3QgZmVhdHVyZXMgPSBbXG4gICAgICAuLi50aGlzLl9oYW5kbGVyLmZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpLmZlYXR1cmVzLFxuICAgICAgLi4uYWRkaXRpb25hbFNuYXBUYXJnZXRzLFxuICAgIF07XG4gICAgcmV0dXJuIGZlYXR1cmVzO1xuICB9XG5cbiAgX2dldE5vblBpY2tlZEludGVybWVkaWF0ZUhhbmRsZXMoKTogRWRpdEhhbmRsZVtdIHtcbiAgICBjb25zdCBoYW5kbGVzID0gW107XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLl9nZXRTbmFwVGFyZ2V0cygpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmUocylcbiAgICAgIGNvbnN0IGlzQ3VycmVudEluZGV4RmVhdHVyZU5vdFNlbGVjdGVkID1cbiAgICAgICAgaSA8IGZlYXR1cmVzLmxlbmd0aCAmJiAhdGhpcy5faGFuZGxlci5nZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzKCkuaW5jbHVkZXMoaSk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRJbmRleEZlYXR1cmVOb3RTZWxlY3RlZCkge1xuICAgICAgICBjb25zdCB7IGdlb21ldHJ5IH0gPSBmZWF0dXJlc1tpXTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGksICdpbnRlcm1lZGlhdGUnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYW5kbGVzO1xuICB9XG5cbiAgLy8gSWYgbm8gc25hcCBoYW5kbGUgaGFzIGJlZW4gcGlja2VkLCBvbmx5IGRpc3BsYXkgdGhlIGVkaXQgaGFuZGxlcyBvZiB0aGVcbiAgLy8gc2VsZWN0ZWQgZmVhdHVyZS4gSWYgYSBzbmFwIGhhbmRsZSBoYXMgYmVlbiBwaWNrZWQsIGRpc3BsYXkgc2FpZCBzbmFwIGhhbmRsZVxuICAvLyBhbG9uZyB3aXRoIGFsbCBzbmFwcGFibGUgcG9pbnRzIG9uIGFsbCBub24tc2VsZWN0ZWQgZmVhdHVyZXMuXG4gIGdldEVkaXRIYW5kbGVzKHBpY2tzPzogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj4sIGdyb3VuZENvb3Jkcz86IFBvc2l0aW9uKTogYW55W10ge1xuICAgIGNvbnN0IHsgZW5hYmxlU25hcHBpbmcgfSA9IHRoaXMuX21vZGVDb25maWcgfHwge307XG4gICAgY29uc3QgaGFuZGxlcyA9IHRoaXMuX2hhbmRsZXIuZ2V0RWRpdEhhbmRsZXMocGlja3MsIGdyb3VuZENvb3Jkcyk7XG5cbiAgICBpZiAoIWVuYWJsZVNuYXBwaW5nKSByZXR1cm4gaGFuZGxlcztcbiAgICBjb25zdCB7IHBpY2tlZEhhbmRsZSB9ID0gdGhpcy5fZWRpdEhhbmRsZVBpY2tzIHx8IHt9O1xuXG4gICAgaWYgKHBpY2tlZEhhbmRsZSkge1xuICAgICAgaGFuZGxlcy5wdXNoKC4uLnRoaXMuX2dldE5vblBpY2tlZEludGVybWVkaWF0ZUhhbmRsZXMoKSwgcGlja2VkSGFuZGxlKTtcbiAgICAgIHJldHVybiBoYW5kbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRoaXMuX2hhbmRsZXIuZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiB0aGlzLl9oYW5kbGVyLmdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMoKSkge1xuICAgICAgaWYgKGluZGV4IDwgZmVhdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgZ2VvbWV0cnkgfSA9IGZlYXR1cmVzW2luZGV4XTtcbiAgICAgICAgaGFuZGxlcy5wdXNoKC4uLmdldEVkaXRIYW5kbGVzRm9yR2VvbWV0cnkoZ2VvbWV0cnksIGluZGV4LCAnc25hcCcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlcy5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBfZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB7IHBvdGVudGlhbFNuYXBIYW5kbGUgfSA9IHRoaXMuX2VkaXRIYW5kbGVQaWNrcyB8fCB7fTtcblxuICAgIHJldHVybiBwb3RlbnRpYWxTbmFwSGFuZGxlICYmIHBvdGVudGlhbFNuYXBIYW5kbGUucG9zaXRpb25cbiAgICAgID8gdGhpcy5fZ2V0U25hcHBlZE1vdXNlRXZlbnQoZXZlbnQsIHBvdGVudGlhbFNuYXBIYW5kbGUucG9zaXRpb24pXG4gICAgICA6IGV2ZW50O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX3N0YXJ0RHJhZ1NuYXBIYW5kbGVQb3NpdGlvbiA9IChnZXRQaWNrZWRFZGl0SGFuZGxlKGV2ZW50LnBpY2tzKSB8fCB7fSkucG9zaXRpb247XG4gICAgcmV0dXJuIHRoaXMuX2hhbmRsZXIuaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudCk7XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb2RlQWN0aW9uU3VtbWFyeSA9IHRoaXMuX2hhbmRsZXIuaGFuZGxlU3RvcERyYWdnaW5nKHRoaXMuX2dldFNuYXBBd2FyZUV2ZW50KGV2ZW50KSk7XG5cbiAgICB0aGlzLl9lZGl0SGFuZGxlUGlja3MgPSBudWxsO1xuICAgIHJldHVybiBtb2RlQWN0aW9uU3VtbWFyeTtcbiAgfVxuXG4gIGdldEN1cnNvcihldmVudDogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9oYW5kbGVyLmdldEN1cnNvcihldmVudCk7XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgY29uc3QgeyBlbmFibGVTbmFwcGluZyB9ID0gdGhpcy5faGFuZGxlci5nZXRNb2RlQ29uZmlnKCkgfHwge307XG5cbiAgICBpZiAoZW5hYmxlU25hcHBpbmcpIHtcbiAgICAgIHRoaXMuX2VkaXRIYW5kbGVQaWNrcyA9IHRoaXMuX2dldEVkaXRIYW5kbGVQaWNrcyhldmVudCk7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBtb2RlQWN0aW9uU3VtbWFyeSA9IHRoaXMuX2hhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUodGhpcy5fZ2V0U25hcEF3YXJlRXZlbnQoZXZlbnQpKTtcbiAgICBjb25zdCB7IGVkaXRBY3Rpb24gfSA9IG1vZGVBY3Rpb25TdW1tYXJ5O1xuICAgIGlmIChlZGl0QWN0aW9uKSB7XG4gICAgICB0aGlzLl91cGRhdGVQaWNrZWRIYW5kbGVQb3NpdGlvbihlZGl0QWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZUFjdGlvblN1bW1hcnk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/split-polygon-handler.js b/modules/layers/dist/mode-handlers/split-polygon-handler.js new file mode 100644 index 000000000..5771b50db --- /dev/null +++ b/modules/layers/dist/mode-handlers/split-polygon-handler.js @@ -0,0 +1,295 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SplitPolygonHandler = void 0; + +var _booleanPointInPolygon = _interopRequireDefault(require("@turf/boolean-point-in-polygon")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _lineIntersect = _interopRequireDefault(require("@turf/line-intersect")); + +var _helpers = require("@turf/helpers"); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _polygonToLine = _interopRequireDefault(require("@turf/polygon-to-line")); + +var _nearestPointOnLine = _interopRequireDefault(require("@turf/nearest-point-on-line")); + +var _utils = require("../utils"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var SplitPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(SplitPolygonHandler, _ModeHandler); + + var _super = _createSuper(SplitPolygonHandler); + + function SplitPolygonHandler() { + _classCallCheck(this, SplitPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(SplitPolygonHandler, [{ + key: "calculateGroundCoords", + value: function calculateGroundCoords(clickSequence, groundCoords) { + var modeConfig = this.getModeConfig(); + + if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) { + return groundCoords; + } + + if (clickSequence.length === 1) { + // if first point is clicked, then find closest polygon point and build ~90deg vector + var firstPoint = clickSequence[0]; + var selectedGeometry = this.getSelectedGeometry(); // @ts-ignore + + var feature = (0, _polygonToLine["default"])(selectedGeometry); + var lines = feature.type === 'FeatureCollection' ? feature.features : [feature]; + var minDistance = Number.MAX_SAFE_INTEGER; + var closestPoint = null; // If Multipolygon, then we should find nearest polygon line and stick split to it. + + lines.forEach(function (line) { + var snapPoint = (0, _nearestPointOnLine["default"])(line, firstPoint); + var distanceFromOrigin = (0, _distance["default"])(snapPoint, firstPoint); + + if (minDistance > distanceFromOrigin) { + minDistance = distanceFromOrigin; + closestPoint = snapPoint; + } + }); + + if (closestPoint) { + // closest point is used as 90degree entry to the polygon + var lastBearing = (0, _bearing["default"])(firstPoint, closestPoint); + var currentDistance = (0, _distance["default"])(firstPoint, groundCoords, { + units: 'meters' + }); + return (0, _destination["default"])(firstPoint, currentDistance, lastBearing, { + units: 'meters' + }).geometry.coordinates; + } + + return groundCoords; + } // Allow only 90 degree turns + + + var lastPoint = clickSequence[clickSequence.length - 1]; + + var _generatePointsParall = (0, _utils.generatePointsParallelToLinePoints)(clickSequence[clickSequence.length - 2], lastPoint, groundCoords), + _generatePointsParall2 = _slicedToArray(_generatePointsParall, 1), + approximatePoint = _generatePointsParall2[0]; // align point with current ground + + + var nearestPt = (0, _nearestPointOnLine["default"])((0, _helpers.lineString)([lastPoint, approximatePoint]), groundCoords).geometry.coordinates; + return nearestPt; + } + }, { + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(SplitPolygonHandler.prototype), "handleClick", this).call(this, _objectSpread({}, event, { + groundCoords: this.calculateGroundCoords(this.getClickSequence(), event.groundCoords) + })); + + var editAction = null; + var tentativeFeature = this.getTentativeFeature(); + var selectedGeometry = this.getSelectedGeometry(); + var clickSequence = this.getClickSequence(); + + if (!selectedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('A polygon must be selected for splitting'); + + this._setTentativeFeature(null); + + return editAction; + } + + var pt = { + type: 'Point', + coordinates: clickSequence[clickSequence.length - 1] + }; // @ts-ignore + + var isPointInPolygon = (0, _booleanPointInPolygon["default"])(pt, selectedGeometry); + + if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) { + this.resetClickSequence(); // @ts-ignore + + var isLineInterectingWithPolygon = (0, _lineIntersect["default"])(tentativeFeature, selectedGeometry); + + if (isLineInterectingWithPolygon.features.length === 0) { + this._setTentativeFeature(null); + + return editAction; + } + + return this.splitPolygon(); + } + + return editAction; + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(_ref) { + var groundCoords = _ref.groundCoords; + var clickSequence = this.getClickSequence(); + var result = { + editAction: null, + cancelMapPan: false + }; + + if (clickSequence.length === 0) { + // nothing to do yet + return result; + } + + this._setTentativeFeature({ + type: 'Feature', + geometry: { + type: 'LineString', + coordinates: [].concat(_toConsumableArray(clickSequence), [this.calculateGroundCoords(clickSequence, groundCoords)]) + } + }); + + return result; + } + }, { + key: "splitPolygon", + value: function splitPolygon() { + var selectedGeometry = this.getSelectedGeometry(); + var tentativeFeature = this.getTentativeFeature(); + var featureIndex = this.getSelectedFeatureIndexes()[0]; + var modeConfig = this.getModeConfig() || {}; // Default gap in between the polygon + + var _modeConfig$gap = modeConfig.gap, + gap = _modeConfig$gap === void 0 ? 0.1 : _modeConfig$gap, + _modeConfig$units = modeConfig.units, + units = _modeConfig$units === void 0 ? 'centimeters' : _modeConfig$units; + + if (gap === 0) { + gap = 0.1; + units = 'centimeters'; + } // @ts-ignore + + + var buffer = (0, _buffer["default"])(tentativeFeature, gap, { + units: units + }); // @ts-ignore + + var updatedGeometry = (0, _difference["default"])(selectedGeometry, buffer); + + this._setTentativeFeature(null); + + if (!updatedGeometry) { + // eslint-disable-next-line no-console,no-undef + console.warn('Canceling edit. Split Polygon erased'); + return null; + } + + var _updatedGeometry$geom = updatedGeometry.geometry, + type = _updatedGeometry$geom.type, + coordinates = _updatedGeometry$geom.coordinates; + var updatedCoordinates = []; + + if (type === 'Polygon') { + // Update the coordinates as per Multipolygon + // @ts-ignore + updatedCoordinates = coordinates.map(function (c) { + return [c]; + }); + } else { + // Handle Case when Multipolygon has holes + // @ts-ignore + updatedCoordinates = coordinates.reduce(function (agg, prev) { + prev.forEach(function (p) { + agg.push([p]); + }); + return agg; + }, []); + } // Update the type to Mulitpolygon + + + var updatedData = this.getImmutableFeatureCollection().replaceGeometry(featureIndex, { + type: 'MultiPolygon', + coordinates: updatedCoordinates + }); + var editAction = { + updatedData: updatedData.getObject(), + editType: 'split', + featureIndexes: [featureIndex], + editContext: null + }; + return editAction; + } + }]); + + return SplitPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.SplitPolygonHandler = SplitPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3NwbGl0LXBvbHlnb24taGFuZGxlci50cyJdLCJuYW1lcyI6WyJTcGxpdFBvbHlnb25IYW5kbGVyIiwiY2xpY2tTZXF1ZW5jZSIsImdyb3VuZENvb3JkcyIsIm1vZGVDb25maWciLCJnZXRNb2RlQ29uZmlnIiwibG9jazkwRGVncmVlIiwibGVuZ3RoIiwiZmlyc3RQb2ludCIsInNlbGVjdGVkR2VvbWV0cnkiLCJnZXRTZWxlY3RlZEdlb21ldHJ5IiwiZmVhdHVyZSIsImxpbmVzIiwidHlwZSIsImZlYXR1cmVzIiwibWluRGlzdGFuY2UiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2xvc2VzdFBvaW50IiwiZm9yRWFjaCIsImxpbmUiLCJzbmFwUG9pbnQiLCJkaXN0YW5jZUZyb21PcmlnaW4iLCJsYXN0QmVhcmluZyIsImN1cnJlbnREaXN0YW5jZSIsInVuaXRzIiwiZ2VvbWV0cnkiLCJjb29yZGluYXRlcyIsImxhc3RQb2ludCIsImFwcHJveGltYXRlUG9pbnQiLCJuZWFyZXN0UHQiLCJldmVudCIsImNhbGN1bGF0ZUdyb3VuZENvb3JkcyIsImdldENsaWNrU2VxdWVuY2UiLCJlZGl0QWN0aW9uIiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjb25zb2xlIiwid2FybiIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwicHQiLCJpc1BvaW50SW5Qb2x5Z29uIiwicmVzZXRDbGlja1NlcXVlbmNlIiwiaXNMaW5lSW50ZXJlY3RpbmdXaXRoUG9seWdvbiIsInNwbGl0UG9seWdvbiIsInJlc3VsdCIsImNhbmNlbE1hcFBhbiIsImZlYXR1cmVJbmRleCIsImdldFNlbGVjdGVkRmVhdHVyZUluZGV4ZXMiLCJnYXAiLCJidWZmZXIiLCJ1cGRhdGVkR2VvbWV0cnkiLCJ1cGRhdGVkQ29vcmRpbmF0ZXMiLCJtYXAiLCJjIiwicmVkdWNlIiwiYWdnIiwicHJldiIsInAiLCJwdXNoIiwidXBkYXRlZERhdGEiLCJnZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiIsInJlcGxhY2VHZW9tZXRyeSIsImdldE9iamVjdCIsImVkaXRUeXBlIiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFDYUEsbUI7Ozs7Ozs7Ozs7Ozs7MENBQ1dDLGEsRUFBb0JDLFksRUFBbUI7QUFDM0QsVUFBTUMsVUFBVSxHQUFHLEtBQUtDLGFBQUwsRUFBbkI7O0FBQ0EsVUFBSSxDQUFDRCxVQUFELElBQWUsQ0FBQ0EsVUFBVSxDQUFDRSxZQUEzQixJQUEyQyxDQUFDSixhQUFhLENBQUNLLE1BQTlELEVBQXNFO0FBQ3BFLGVBQU9KLFlBQVA7QUFDRDs7QUFDRCxVQUFJRCxhQUFhLENBQUNLLE1BQWQsS0FBeUIsQ0FBN0IsRUFBZ0M7QUFDOUI7QUFDQSxZQUFNQyxVQUFVLEdBQUdOLGFBQWEsQ0FBQyxDQUFELENBQWhDO0FBQ0EsWUFBTU8sZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsRUFBekIsQ0FIOEIsQ0FJOUI7O0FBQ0EsWUFBTUMsT0FBTyxHQUFHLCtCQUFrQkYsZ0JBQWxCLENBQWhCO0FBRUEsWUFBTUcsS0FBSyxHQUFHRCxPQUFPLENBQUNFLElBQVIsS0FBaUIsbUJBQWpCLEdBQXVDRixPQUFPLENBQUNHLFFBQS9DLEdBQTBELENBQUNILE9BQUQsQ0FBeEU7QUFDQSxZQUFJSSxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsZ0JBQXpCO0FBQ0EsWUFBSUMsWUFBWSxHQUFHLElBQW5CLENBVDhCLENBVTlCOztBQUNBTixRQUFBQSxLQUFLLENBQUNPLE9BQU4sQ0FBYyxVQUFDQyxJQUFELEVBQVU7QUFDdEIsY0FBTUMs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WUFBckQsRUFBbUU7QUFDckZsQyxRQUFBQSxJQUFJLEVBQUUsY0FEK0U7QUFFckZjLFFBQUFBLFdBQVcsRUFBRXlCO0FBRndFLE9BQW5FLENBQXBCO0FBS0EsVUFBTWxCLFVBQXNCLEdBQUc7QUFDN0IwQixRQUFBQSxXQUFXLEVBQUVBLFdBQVcsQ0FBQ0csU0FBWixFQURnQjtBQUU3QkMsUUFBQUEsUUFBUSxFQUFFLE9BRm1CO0FBRzdCQyxRQUFBQSxjQUFjLEVBQUUsQ0FBQ2xCLFlBQUQsQ0FIYTtBQUk3Qm1CLFFBQUFBLFdBQVcsRUFBRTtBQUpnQixPQUEvQjtBQU9BLGFBQU9oQyxVQUFQO0FBQ0Q7Ozs7RUFqS3NDaUMsd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYm9vbGVhblBvaW50SW5Qb2x5Z29uIGZyb20gJ0B0dXJmL2Jvb2xlYW4tcG9pbnQtaW4tcG9seWdvbic7XG5pbXBvcnQgdHVyZkRpZmZlcmVuY2UgZnJvbSAnQHR1cmYvZGlmZmVyZW5jZSc7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IGxpbmVJbnRlcnNlY3QgZnJvbSAnQHR1cmYvbGluZS1pbnRlcnNlY3QnO1xuaW1wb3J0IHsgbGluZVN0cmluZyB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHR1cmZCZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZkRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCB0dXJmUG9seWdvblRvTGluZSBmcm9tICdAdHVyZi9wb2x5Z29uLXRvLWxpbmUnO1xuaW1wb3J0IG5lYXJlc3RQb2ludE9uTGluZSBmcm9tICdAdHVyZi9uZWFyZXN0LXBvaW50LW9uLWxpbmUnO1xuaW1wb3J0IHsgZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IENsaWNrRXZlbnQsIFBvaW50ZXJNb3ZlRXZlbnQgfSBmcm9tICcuLi9ldmVudC10eXBlcyc7XG5pbXBvcnQgeyBFZGl0QWN0aW9uLCBNb2RlSGFuZGxlciB9IGZyb20gJy4vbW9kZS1oYW5kbGVyJztcblxuLy8gVE9ETyBlZGl0LW1vZGVzOiBkZWxldGUgaGFuZGxlcnMgb25jZSBFZGl0TW9kZSBmdWxseSBpbXBsZW1lbnRlZFxuZXhwb3J0IGNsYXNzIFNwbGl0UG9seWdvbkhhbmRsZXIgZXh0ZW5kcyBNb2RlSGFuZGxlciB7XG4gIGNhbGN1bGF0ZUdyb3VuZENvb3JkcyhjbGlja1NlcXVlbmNlOiBhbnksIGdyb3VuZENvb3JkczogYW55KSB7XG4gICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuZ2V0TW9kZUNvbmZpZygpO1xuICAgIGlmICghbW9kZUNvbmZpZyB8fCAhbW9kZUNvbmZpZy5sb2NrOTBEZWdyZWUgfHwgIWNsaWNrU2VxdWVuY2UubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZ3JvdW5kQ29vcmRzO1xuICAgIH1cbiAgICBpZiAoY2xpY2tTZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIC8vIGlmIGZpcnN0IHBvaW50IGlzIGNsaWNrZWQsIHRoZW4gZmluZCBjbG9zZXN0IHBvbHlnb24gcG9pbnQgYW5kIGJ1aWxkIH45MGRlZyB2ZWN0b3JcbiAgICAgIGNvbnN0IGZpcnN0UG9pbnQgPSBjbGlja1NlcXVlbmNlWzBdO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeSgpO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZmVhdHVyZSA9IHR1cmZQb2x5Z29uVG9MaW5lKHNlbGVjdGVkR2VvbWV0cnkpO1xuXG4gICAgICBjb25zdCBsaW5lcyA9IGZlYXR1cmUudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyA/IGZlYXR1cmUuZmVhdHVyZXMgOiBbZmVhdHVyZV07XG4gICAgICBsZXQgbWluRGlzdGFuY2UgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgICAgIGxldCBjbG9zZXN0UG9pbnQgPSBudWxsO1xuICAgICAgLy8gSWYgTXVsdGlwb2x5Z29uLCB0aGVuIHdlIHNob3VsZCBmaW5kIG5lYXJlc3QgcG9seWdvbiBsaW5lIGFuZCBzdGljayBzcGxpdCB0byBpdC5cbiAgICAgIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgY29uc3Qgc25hcFBvaW50ID0gbmVhcmVzdFBvaW50T25MaW5lKGxpbmUsIGZpcnN0UG9pbnQpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21PcmlnaW4gPSB0dXJmRGlzdGFuY2Uoc25hcFBvaW50LCBmaXJzdFBvaW50KTtcbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlID4gZGlzdGFuY2VGcm9tT3JpZ2luKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZUZyb21PcmlnaW47XG4gICAgICAgICAgY2xvc2VzdFBvaW50ID0gc25hcFBvaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNsb3Nlc3RQb2ludCkge1xuICAgICAgICAvLyBjbG9zZXN0IHBvaW50IGlzIHVzZWQgYXMgOTBkZWdyZWUgZW50cnkgdG8gdGhlIHBvbHlnb25cbiAgICAgICAgY29uc3QgbGFzdEJlYXJpbmcgPSB0dXJmQmVhcmluZyhmaXJzdFBvaW50LCBjbG9zZXN0UG9pbnQpO1xuICAgICAgICBjb25zdCBjdXJyZW50RGlzdGFuY2UgPSB0dXJmRGlzdGFuY2UoZmlyc3RQb2ludCwgZ3JvdW5kQ29vcmRzLCB7IHVuaXRzOiAnbWV0ZXJzJyB9KTtcbiAgICAgICAgcmV0dXJuIHR1cmZEZXN0aW5hdGlvbihmaXJzdFBvaW50LCBjdXJyZW50RGlzdGFuY2UsIGxhc3RCZWFyaW5nLCB7XG4gICAgICAgICAgdW5pdHM6ICdtZXRlcnMnLFxuICAgICAgICB9KS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBncm91bmRDb29yZHM7XG4gICAgfVxuICAgIC8vIEFsbG93IG9ubHkgOTAgZGVncmVlIHR1cm5zXG4gICAgY29uc3QgbGFzdFBvaW50ID0gY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IFthcHByb3hpbWF0ZVBvaW50XSA9IGdlbmVyYXRlUG9pbnRzUGFyYWxsZWxUb0xpbmVQb2ludHMoXG4gICAgICBjbGlja1NlcXVlbmNlW2NsaWNrU2VxdWVuY2UubGVuZ3RoIC0gMl0sXG4gICAgICBsYXN0UG9pbnQsXG4gICAgICBncm91bmRDb29yZHNcbiAgICApO1xuICAgIC8vIGFsaWduIHBvaW50IHdpdGggY3VycmVudCBncm91bmRcbiAgICBjb25zdCBuZWFyZXN0UHQgPSBuZWFyZXN0UG9pbnRPbkxpbmUobGluZVN0cmluZyhbbGFzdFBvaW50LCBhcHByb3hpbWF0ZVBvaW50XSksIGdyb3VuZENvb3JkcylcbiAgICAgIC5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgICByZXR1cm4gbmVhcmVzdFB0O1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IENsaWNrRXZlbnQpOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgc3VwZXIuaGFuZGxlQ2xpY2soe1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBncm91bmRDb29yZHM6IHRoaXMuY2FsY3VsYXRlR3JvdW5kQ29vcmRzKHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpLCBldmVudC5ncm91bmRDb29yZHMpLFxuICAgIH0pO1xuICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRHZW9tZXRyeSA9IHRoaXMuZ2V0U2VsZWN0ZWRHZW9tZXRyeSgpO1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcblxuICAgIGlmICghc2VsZWN0ZWRHZW9tZXRyeSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUsbm8tdW5kZWZcbiAgICAgIGNvbnNvbGUud2FybignQSBwb2x5Z29uIG11c3QgYmUgc2VsZWN0ZWQgZm9yIHNwbGl0dGluZycpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cbiAgICBjb25zdCBwdCA9IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogY2xpY2tTZXF1ZW5jZVtjbGlja1NlcXVlbmNlLmxlbmd0aCAtIDFdLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGlzUG9pbnRJblBvbHlnb24gPSBib29sZWFuUG9pbnRJblBvbHlnb24ocHQsIHNlbGVjdGVkR2VvbWV0cnkpO1xuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA+IDEgJiYgdGVudGF0aXZlRmVhdHVyZSAmJiAhaXNQb2ludEluUG9seWdvbikge1xuICAgICAgdGhpcy5yZXNldENsaWNrU2VxdWVuY2UoKTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlzTGluZUludGVyZWN0aW5nV2l0aFBvbHlnb24gPSBsaW5lSW50ZXJzZWN0KHRlbnRhdGl2ZUZlYXR1cmUsIHNlbGVjdGVkR2VvbWV0cnkpO1xuICAgICAgaWYgKGlzTGluZUludGVyZWN0aW5nV2l0aFBvbHlnb24uZmVhdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NldFRlbnRhdGl2ZUZlYXR1cmUobnVsbCk7XG4gICAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3BsaXRQb2x5Z29uKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVkaXRBY3Rpb247XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZSh7XG4gICAgZ3JvdW5kQ29vcmRzLFxuICB9OiBQb2ludGVyTW92ZUV2ZW50KTogeyBlZGl0QWN0aW9uOiBFZGl0QWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZDsgY2FuY2VsTWFwUGFuOiBib29sZWFuIH0ge1xuICAgIGNvbnN0IGNsaWNrU2VxdWVuY2UgPSB0aGlzLmdldENsaWNrU2VxdWVuY2UoKTtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcblxuICAgIGlmIChjbGlja1NlcXVlbmNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm90aGluZyB0byBkbyB5ZXRcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZSh7XG4gICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICBnZW9tZXRyeToge1xuICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbLi4uY2xpY2tTZXF1ZW5jZSwgdGhpcy5jYWxjdWxhdGVHcm91bmRDb29yZHMoY2xpY2tTZXF1ZW5jZSwgZ3JvdW5kQ29vcmRzKV0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNwbGl0UG9seWdvbigpIHtcbiAgICBjb25zdCBzZWxlY3RlZEdlb21ldHJ5ID0gdGhpcy5nZXRTZWxlY3RlZEdlb21ldHJ5KCk7XG4gICAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9IHRoaXMuZ2V0VGVudGF0aXZlRmVhdHVyZSgpO1xuICAgIGNvbnN0IGZlYXR1cmVJbmRleCA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpWzBdO1xuICAgIGNvbnN0IG1vZGVDb25maWcgPSB0aGlzLmdldE1vZGVDb25maWcoKSB8fCB7fTtcblxuICAgIC8vIERlZmF1bHQgZ2FwIGluIGJldHdlZW4gdGhlIHBvbHlnb25cbiAgICBsZXQgeyBnYXAgPSAwLjEsIHVuaXRzID0gJ2NlbnRpbWV0ZXJzJyB9ID0gbW9kZUNvbmZpZztcbiAgICBpZiAoZ2FwID09PSAwKSB7XG4gICAgICBnYXAgPSAwLjE7XG4gICAgICB1bml0cyA9ICdjZW50aW1ldGVycyc7XG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHRlbnRhdGl2ZUZlYXR1cmUsIGdhcCwgeyB1bml0cyB9KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdXBkYXRlZEdlb21ldHJ5ID0gdHVyZkRpZmZlcmVuY2Uoc2VsZWN0ZWRHZW9tZXRyeSwgYnVmZmVyKTtcbiAgICB0aGlzLl9zZXRUZW50YXRpdmVGZWF0dXJlKG51bGwpO1xuICAgIGlmICghdXBkYXRlZEdlb21ldHJ5KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSxuby11bmRlZlxuICAgICAgY29uc29sZS53YXJuKCdDYW5jZWxpbmcgZWRpdC4gU3BsaXQgUG9seWdvbiBlcmFzZWQnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgdHlwZSwgY29vcmRpbmF0ZXMgfSA9IHVwZGF0ZWRHZW9tZXRyeS5nZW9tZXRyeTtcbiAgICBsZXQgdXBkYXRlZENvb3JkaW5hdGVzID0gW107XG4gICAgaWYgKHR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgLy8gVXBkYXRlIHRoZSBjb29yZGluYXRlcyBhcyBwZXIgTXVsdGlwb2x5Z29uXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1cGRhdGVkQ29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcy5tYXAoKGMpID0+IFtjXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBDYXNlIHdoZW4gTXVsdGlwb2x5Z29uIGhhcyBob2xlc1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXMucmVkdWNlKChhZ2csIHByZXYpID0+IHtcbiAgICAgICAgcHJldi5mb3JFYWNoKChwKSA9PiB7XG4gICAgICAgICAgYWdnLnB1c2goW3BdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhZ2c7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSB0eXBlIHRvIE11bGl0cG9seWdvblxuICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5nZXRJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbigpLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIHtcbiAgICAgIHR5cGU6ICdNdWx0aVBvbHlnb24nLFxuICAgICAgY29vcmRpbmF0ZXM6IHVwZGF0ZWRDb29yZGluYXRlcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gPSB7XG4gICAgICB1cGRhdGVkRGF0YTogdXBkYXRlZERhdGEuZ2V0T2JqZWN0KCksXG4gICAgICBlZGl0VHlwZTogJ3NwbGl0JyxcbiAgICAgIGZlYXR1cmVJbmRleGVzOiBbZmVhdHVyZUluZGV4XSxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/three-click-polygon-handler.js b/modules/layers/dist/mode-handlers/three-click-polygon-handler.js new file mode 100644 index 000000000..fe17009e2 --- /dev/null +++ b/modules/layers/dist/mode-handlers/three-click-polygon-handler.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ThreeClickPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ThreeClickPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ThreeClickPolygonHandler, _ModeHandler); + + var _super = _createSuper(ThreeClickPolygonHandler); + + function ThreeClickPolygonHandler() { + _classCallCheck(this, ThreeClickPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(ThreeClickPolygonHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(ThreeClickPolygonHandler.prototype), "handleClick", this).call(this, event); + + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry); + this.resetClickSequence(); + + this._setTentativeFeature(null); + + return editAction; + } + + return null; + } + }]); + + return ThreeClickPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.ThreeClickPolygonHandler = ThreeClickPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3RocmVlLWNsaWNrLXBvbHlnb24taGFuZGxlci50cyJdLCJuYW1lcyI6WyJUaHJlZUNsaWNrUG9seWdvbkhhbmRsZXIiLCJldmVudCIsInRlbnRhdGl2ZUZlYXR1cmUiLCJnZXRUZW50YXRpdmVGZWF0dXJlIiwiY2xpY2tTZXF1ZW5jZSIsImdldENsaWNrU2VxdWVuY2UiLCJsZW5ndGgiLCJnZW9tZXRyeSIsInR5cGUiLCJlZGl0QWN0aW9uIiwiZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24iLCJyZXNldENsaWNrU2VxdWVuY2UiLCJfc2V0VGVudGF0aXZlRmVhdHVyZSIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNhQSx3Qjs7Ozs7Ozs7Ozs7OztnQ0FDQ0MsSyxFQUFrRDtBQUM1RCxnR0FBa0JBLEtBQWxCOztBQUVBLFVBQU1DLGdCQUFnQixHQUFHLEtBQUtDLG1CQUFMLEVBQXpCO0FBQ0EsVUFBTUMsYUFBYSxHQUFHLEtBQUtDLGdCQUFMLEVBQXRCOztBQUVBLFVBQ0VELGFBQWEsQ0FBQ0UsTUFBZCxHQUF1QixDQUF2QixJQUNBSixnQkFEQSxJQUVBQSxnQkFBZ0IsQ0FBQ0ssUUFBakIsQ0FBMEJDLElBQTFCLEtBQW1DLFNBSHJDLEVBSUU7QUFDQSxZQUFNQyxVQUFVLEdBQUcsS0FBS0MsbUNBQUwsQ0FBeUNSLGdCQUFnQixDQUFDSyxRQUExRCxDQUFuQjtBQUNBLGFBQUtJLGtCQUFMOztBQUNBLGFBQUtDLG9CQUFMLENBQTBCLElBQTFCOztBQUNBLGVBQU9ILFVBQVA7QUFDRDs7QUFFRCxhQUFPLElBQVA7QUFDRDs7OztFQW5CMkNJLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpY2tFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IE1vZGVIYW5kbGVyLCBFZGl0QWN0aW9uIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgVGhyZWVDbGlja1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAyICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/translate-handler.js b/modules/layers/dist/mode-handlers/translate-handler.js new file mode 100644 index 000000000..4cc9a3cef --- /dev/null +++ b/modules/layers/dist/mode-handlers/translate-handler.js @@ -0,0 +1,161 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TranslateHandler = void 0; + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +var _transformTranslate = _interopRequireDefault(require("@turf/transform-translate")); + +var _helpers = require("@turf/helpers"); + +var _modeHandler = require("./mode-handler"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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; } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var TranslateHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(TranslateHandler, _ModeHandler); + + var _super = _createSuper(TranslateHandler); + + function TranslateHandler() { + var _this; + + _classCallCheck(this, TranslateHandler); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_geometryBeforeTranslate", void 0); + + _defineProperty(_assertThisInitialized(_this), "_isTranslatable", void 0); + + return _this; + } + + _createClass(TranslateHandler, [{ + key: "handlePointerMove", + value: function handlePointerMove(event) { + var editAction = null; + this._isTranslatable = Boolean(this._geometryBeforeTranslate) || this.isSelectionPicked(event.picks); + + if (!this._isTranslatable || !event.pointerDownGroundCoords) { + // Nothing to do + return { + editAction: null, + cancelMapPan: false + }; + } + + if (event.isDragging && this._geometryBeforeTranslate) { + // Translate the geometry + editAction = this.getTranslateAction(event.pointerDownGroundCoords, event.groundCoords, 'translating'); + } + + return { + editAction: editAction, + cancelMapPan: true + }; + } + }, { + key: "handleStartDragging", + value: function handleStartDragging(event) { + if (!this._isTranslatable) { + return null; + } + + this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(); + return null; + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event) { + var editAction = null; + + if (this._geometryBeforeTranslate) { + // Translate the geometry + editAction = this.getTranslateAction(event.pointerDownGroundCoords, event.groundCoords, 'translated'); + this._geometryBeforeTranslate = null; + } + + return editAction; + } + }, { + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + + if (this._isTranslatable) { + return 'move'; + } + + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getTranslateAction", + value: function getTranslateAction(startDragPoint, currentPoint, editType) { + if (!this._geometryBeforeTranslate) { + return null; + } + + var p1 = (0, _helpers.point)(startDragPoint); + var p2 = (0, _helpers.point)(currentPoint); + var distanceMoved = (0, _distance["default"])(p1, p2); + var direction = (0, _bearing["default"])(p1, p2); + var movedFeatures = (0, _transformTranslate["default"])( // @ts-ignore + this._geometryBeforeTranslate, distanceMoved, direction); + var updatedData = this.getImmutableFeatureCollection(); + var selectedIndexes = this.getSelectedFeatureIndexes(); + + for (var i = 0; i < selectedIndexes.length; i++) { + var selectedIndex = selectedIndexes[i]; + var movedFeature = movedFeatures.features[i]; + updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry); + } + + return { + updatedData: updatedData.getObject(), + editType: editType, + featureIndexes: selectedIndexes, + editContext: null + }; + } + }]); + + return TranslateHandler; +}(_modeHandler.ModeHandler); + +exports.TranslateHandler = TranslateHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3RyYW5zbGF0ZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbIlRyYW5zbGF0ZUhhbmRsZXIiLCJldmVudCIsImVkaXRBY3Rpb24iLCJfaXNUcmFuc2xhdGFibGUiLCJCb29sZWFuIiwiX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlIiwiaXNTZWxlY3Rpb25QaWNrZWQiLCJwaWNrcyIsInBvaW50ZXJEb3duR3JvdW5kQ29vcmRzIiwiY2FuY2VsTWFwUGFuIiwiaXNEcmFnZ2luZyIsImdldFRyYW5zbGF0ZUFjdGlvbiIsImdyb3VuZENvb3JkcyIsImdldFNlbGVjdGVkRmVhdHVyZXNBc0ZlYXR1cmVDb2xsZWN0aW9uIiwic3RhcnREcmFnUG9pbnQiLCJjdXJyZW50UG9pbnQiLCJlZGl0VHlwZSIsInAxIiwicDIiLCJkaXN0YW5jZU1vdmVkIiwiZGlyZWN0aW9uIiwibW92ZWRGZWF0dXJlcyIsInVwZGF0ZWREYXRhIiwiZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24iLCJzZWxlY3RlZEluZGV4ZXMiLCJnZXRTZWxlY3RlZEZlYXR1cmVJbmRleGVzIiwiaSIsImxlbmd0aCIsInNlbGVjdGVkSW5kZXgiLCJtb3ZlZEZlYXR1cmUiLCJmZWF0dXJlcyIsInJlcGxhY2VHZW9tZXRyeSIsImdlb21ldHJ5IiwiZ2V0T2JqZWN0IiwiZmVhdHVyZUluZGV4ZXMiLCJlZGl0Q29udGV4dCIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtJQUNhQSxnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FLVEMsSyxFQUNzRTtBQUN0RSxVQUFJQyxVQUF5QyxHQUFHLElBQWhEO0FBRUEsV0FBS0MsZUFBTCxHQUNFQyxPQUFPLENBQUMsS0FBS0Msd0JBQU4sQ0FBUCxJQUEwQyxLQUFLQyxpQkFBTCxDQUF1QkwsS0FBSyxDQUFDTSxLQUE3QixDQUQ1Qzs7QUFHQSxVQUFJLENBQUMsS0FBS0osZUFBTixJQUF5QixDQUFDRixLQUFLLENBQUNPLHVCQUFwQyxFQUE2RDtBQUMzRDtBQUNBLGVBQU87QUFBRU4sVUFBQUEsVUFBVSxFQUFFLElBQWQ7QUFBb0JPLFVBQUFBLFlBQVksRUFBRTtBQUFsQyxTQUFQO0FBQ0Q7O0FBRUQsVUFBSVIsS0FBSyxDQUFDUyxVQUFOLElBQW9CLEtBQUtMLHdCQUE3QixFQUF1RDtBQUNyRDtBQUNBSCxRQUFBQSxVQUFVLEdBQUcsS0FBS1Msa0JBQUwsQ0FDWFYsS0FBSyxDQUFDTyx1QkFESyxFQUVYUCxLQUFLLENBQUNXLFlBRkssRUFHWCxhQUhXLENBQWI7QUFLRDs7QUFFRCxhQUFPO0FBQUVWLFFBQUFBLFVBQVUsRUFBVkEsVUFBRjtBQUFjTyxRQUFBQSxZQUFZLEVBQUU7QUFBNUIsT0FBUDtBQUNEOzs7d0NBRW1CUixLLEVBQTBEO0FBQzVFLFVBQUksQ0FBQyxLQUFLRSxlQUFWLEVBQTJCO0FBQ3pCLGVBQU8sSUFBUDtBQUNEOztBQUVELFdBQUtFLHdCQUFMLEdBQWdDLEtBQUtRLHNDQUFMLEVBQWhDO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7Ozt1Q0FFa0JaLEssRUFBeUQ7QUFDMUUsVUFBSUMsVUFBeUMsR0FBRyxJQUFoRDs7QUFFQSxVQUFJLEtBQUtHLHdCQUFULEVBQW1DO0FBQ2pDO0FBQ0FILFFBQUFBLFVBQVUsR0FBRyxLQUFLUyxrQkFBTCxDQUNYVixLQUFLLENBQUNPLHVCQURLLEVBRVhQLEtBQUssQ0FBQ1csWUFGSyxFQUdYLFlBSFcsQ0FBYjtBQUtBLGFBQUtQLHdCQUFMLEdBQWdDLElBQWhDO0FBQ0Q7O0FBRUQsYUFBT0gsVUFBUDtBQUNEOzs7b0NBRTBEO0FBQUEsVUFBL0NRLFVBQStDLFFBQS9DQSxVQUErQzs7QUFDekQsVUFBSSxLQUFLUCxlQUFULEVBQTBCO0FBQ3hCLGVBQU8sTUFBUDtBQUNEOztBQUNELGFBQU9PLFVBQVUsR0FBRyxVQUFILEdBQWdCLE1BQWpDO0FBQ0Q7Ozt1Q0FHQ0ksYyxFQUNBQyxZLEVBQ0FDLFEsRUFDK0I7QUFDL0IsVUFBSSxDQUFDLEtBQUtYLHdCQUFWLEVBQW9DO0FBQ2xDLGVBQU8sSUFBUDtBQUNEOztBQUNELFVBQU1ZLEVBQUUsR0FBRyxvQkFBTUgsY0FBTixDQUFYO0FBQ0EsVUFBTUksRUFBRSxHQUFHLG9CQUFNSCxZQUFOLENBQVg7QUFFQSxVQUFNSSxhQUFhLEdBQUcsMEJBQWFGLEVBQWIsRUFBaUJDLEVBQWpCLENBQXRCO0FBQ0EsVUFBTUUsU0FBUyxHQUFHLHlCQUFZSCxFQUFaLEVBQWdCQyxFQUFoQixDQUFsQjtBQUVBLFVBQU1HLGFBQWEsR0FBRyxxQ0FDcEI7QUFDQSxXQUFLaEIsd0JBRmUsRUFHcEJjLGFBSG9CLEVBSXBCQyxTQUpvQixDQUF0QjtBQU9BLFVBQUlFLFdBQVcsR0FBRyxLQUFLQyw2QkFBTCxFQUFsQjtBQUVBLFVBQU1DLGVBQWUsR0FBRyxLQUFLQyx5QkFBTCxFQUF4Qjs7QUFDQSxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLGVBQWUsQ0FBQ0csTUFBcEMsRUFBNENELENBQUMsRUFBN0MsRUFBaUQ7QUFDL0MsWUFBTUUsYUFBYSxHQUFHSixlQUFlLENBQUNFLENBQUQsQ0FBckM7QUFDQSxZQUFNRyxZQUFZLEdBQUdSLGFBQWEsQ0FBQ1MsUUFBZCxDQUF1QkosQ0FBdkIsQ0FBckI7QUFDQUosUUFBQUEsV0FBVyxHQUFHQSxXQUFXLENBQUNTLGVBQVosQ0FBNEJILGFBQTVCLEVBQTJDQyxZQUFZLENBQUNHLFFBQXhELENBQWQ7QUFDRDs7QUFFRCxhQUFPO0FBQ0xWLFFBQUFBLFdBQVcsRUFBRUEsV0FBVyxDQUFDVyxTQUFaLEVBRFI7QUFFTGpCLFFBQUFBLFFBQVEsRUFBUkEsUUFGSztBQUdMa0IsUUFBQUEsY0FBYyxFQUFFVixlQUhYO0FBSUxXLFFBQUFBLFdBQVcsRUFBRTtBQUpSLE9BQVA7QUFNRDs7OztFQWpHbUNDLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR1cmZCZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5pbXBvcnQgdHVyZlRyYW5zZm9ybVRyYW5zbGF0ZSBmcm9tICdAdHVyZi90cmFuc2Zvcm0tdHJhbnNsYXRlJztcbmltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgUG9pbnRlck1vdmVFdmVudCwgU3RhcnREcmFnZ2luZ0V2ZW50LCBTdG9wRHJhZ2dpbmdFdmVudCB9IGZyb20gJy4uL2V2ZW50LXR5cGVzJztcbmltcG9ydCB7IEVkaXRBY3Rpb24sIE1vZGVIYW5kbGVyIH0gZnJvbSAnLi9tb2RlLWhhbmRsZXInO1xuXG4vLyBUT0RPIGVkaXQtbW9kZXM6IGRlbGV0ZSBoYW5kbGVycyBvbmNlIEVkaXRNb2RlIGZ1bGx5IGltcGxlbWVudGVkXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlSGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9pc1RyYW5zbGF0YWJsZTogYm9vbGVhbjtcblxuICBoYW5kbGVQb2ludGVyTW92ZShcbiAgICBldmVudDogUG9pbnRlck1vdmVFdmVudFxuICApOiB7IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkOyBjYW5jZWxNYXBQYW46IGJvb2xlYW4gfSB7XG4gICAgbGV0IGVkaXRBY3Rpb246IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIHRoaXMuX2lzVHJhbnNsYXRhYmxlID1cbiAgICAgIEJvb2xlYW4odGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHx8IHRoaXMuaXNTZWxlY3Rpb25QaWNrZWQoZXZlbnQucGlja3MpO1xuXG4gICAgaWYgKCF0aGlzLl9pc1RyYW5zbGF0YWJsZSB8fCAhZXZlbnQucG9pbnRlckRvd25Hcm91bmRDb29yZHMpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG9cbiAgICAgIHJldHVybiB7IGVkaXRBY3Rpb246IG51bGwsIGNhbmNlbE1hcFBhbjogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuaXNEcmFnZ2luZyAmJiB0aGlzLl9nZW9tZXRyeUJlZm9yZVRyYW5zbGF0ZSkge1xuICAgICAgLy8gVHJhbnNsYXRlIHRoZSBnZW9tZXRyeVxuICAgICAgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgICAgICBldmVudC5wb2ludGVyRG93bkdyb3VuZENvb3JkcyxcbiAgICAgICAgZXZlbnQuZ3JvdW5kQ29vcmRzLFxuICAgICAgICAndHJhbnNsYXRpbmcnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGVkaXRBY3Rpb24sIGNhbmNlbE1hcFBhbjogdHJ1ZSB9O1xuICB9XG5cbiAgaGFuZGxlU3RhcnREcmFnZ2luZyhldmVudDogU3RhcnREcmFnZ2luZ0V2ZW50KTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faXNUcmFuc2xhdGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gdGhpcy5nZXRTZWxlY3RlZEZlYXR1cmVzQXNGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZWRpdEFjdGlvbjogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlKSB7XG4gICAgICAvLyBUcmFuc2xhdGUgdGhlIGdlb21ldHJ5XG4gICAgICBlZGl0QWN0aW9uID0gdGhpcy5nZXRUcmFuc2xhdGVBY3Rpb24oXG4gICAgICAgIGV2ZW50LnBvaW50ZXJEb3duR3JvdW5kQ29vcmRzLFxuICAgICAgICBldmVudC5ncm91bmRDb29yZHMsXG4gICAgICAgICd0cmFuc2xhdGVkJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuX2dlb21ldHJ5QmVmb3JlVHJhbnNsYXRlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZWRpdEFjdGlvbjtcbiAgfVxuXG4gIGdldEN1cnNvcih7IGlzRHJhZ2dpbmcgfTogeyBpc0RyYWdnaW5nOiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9pc1RyYW5zbGF0YWJsZSkge1xuICAgICAgcmV0dXJuICdtb3ZlJztcbiAgICB9XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICB9XG5cbiAgZ2V0VHJhbnNsYXRlQWN0aW9uKFxuICAgIHN0YXJ0RHJhZ1BvaW50OiBQb3NpdGlvbixcbiAgICBjdXJyZW50UG9pbnQ6IFBvc2l0aW9uLFxuICAgIGVkaXRUeXBlOiBzdHJpbmdcbiAgKTogRWRpdEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwMSA9IHBvaW50KHN0YXJ0RHJhZ1BvaW50KTtcbiAgICBjb25zdCBwMiA9IHBvaW50KGN1cnJlbnRQb2ludCk7XG5cbiAgICBjb25zdCBkaXN0YW5jZU1vdmVkID0gdHVyZkRpc3RhbmNlKHAxLCBwMik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdHVyZkJlYXJpbmcocDEsIHAyKTtcblxuICAgIGNvbnN0IG1vdmVkRmVhdHVyZXMgPSB0dXJmVHJhbnNmb3JtVHJhbnNsYXRlKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fZ2VvbWV0cnlCZWZvcmVUcmFuc2xhdGUsXG4gICAgICBkaXN0YW5jZU1vdmVkLFxuICAgICAgZGlyZWN0aW9uXG4gICAgKTtcblxuICAgIGxldCB1cGRhdGVkRGF0YSA9IHRoaXMuZ2V0SW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXhlcyA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXhlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleGVzW2ldO1xuICAgICAgY29uc3QgbW92ZWRGZWF0dXJlID0gbW92ZWRGZWF0dXJlcy5mZWF0dXJlc1tpXTtcbiAgICAgIHVwZGF0ZWREYXRhID0gdXBkYXRlZERhdGEucmVwbGFjZUdlb21ldHJ5KHNlbGVjdGVkSW5kZXgsIG1vdmVkRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZWREYXRhOiB1cGRhdGVkRGF0YS5nZXRPYmplY3QoKSxcbiAgICAgIGVkaXRUeXBlLFxuICAgICAgZmVhdHVyZUluZGV4ZXM6IHNlbGVjdGVkSW5kZXhlcyxcbiAgICAgIGVkaXRDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/two-click-polygon-handler.js b/modules/layers/dist/mode-handlers/two-click-polygon-handler.js new file mode 100644 index 000000000..96db54af0 --- /dev/null +++ b/modules/layers/dist/mode-handlers/two-click-polygon-handler.js @@ -0,0 +1,73 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TwoClickPolygonHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var TwoClickPolygonHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(TwoClickPolygonHandler, _ModeHandler); + + var _super = _createSuper(TwoClickPolygonHandler); + + function TwoClickPolygonHandler() { + _classCallCheck(this, TwoClickPolygonHandler); + + return _super.apply(this, arguments); + } + + _createClass(TwoClickPolygonHandler, [{ + key: "handleClick", + value: function handleClick(event) { + _get(_getPrototypeOf(TwoClickPolygonHandler.prototype), "handleClick", this).call(this, event); + + var tentativeFeature = this.getTentativeFeature(); + var clickSequence = this.getClickSequence(); + + if (clickSequence.length > 1 && tentativeFeature && tentativeFeature.geometry.type === 'Polygon') { + var editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry); + this.resetClickSequence(); + + this._setTentativeFeature(null); + + return editAction; + } + + return null; + } + }]); + + return TwoClickPolygonHandler; +}(_modeHandler.ModeHandler); + +exports.TwoClickPolygonHandler = TwoClickPolygonHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3R3by1jbGljay1wb2x5Z29uLWhhbmRsZXIudHMiXSwibmFtZXMiOlsiVHdvQ2xpY2tQb2x5Z29uSGFuZGxlciIsImV2ZW50IiwidGVudGF0aXZlRmVhdHVyZSIsImdldFRlbnRhdGl2ZUZlYXR1cmUiLCJjbGlja1NlcXVlbmNlIiwiZ2V0Q2xpY2tTZXF1ZW5jZSIsImxlbmd0aCIsImdlb21ldHJ5IiwidHlwZSIsImVkaXRBY3Rpb24iLCJnZXRBZGRGZWF0dXJlT3JCb29sZWFuUG9seWdvbkFjdGlvbiIsInJlc2V0Q2xpY2tTZXF1ZW5jZSIsIl9zZXRUZW50YXRpdmVGZWF0dXJlIiwiTW9kZUhhbmRsZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLHNCOzs7Ozs7Ozs7Ozs7O2dDQUNDQyxLLEVBQWtEO0FBQzVELDhGQUFrQkEsS0FBbEI7O0FBRUEsVUFBTUMsZ0JBQWdCLEdBQUcsS0FBS0MsbUJBQUwsRUFBekI7QUFDQSxVQUFNQyxhQUFhLEdBQUcsS0FBS0MsZ0JBQUwsRUFBdEI7O0FBRUEsVUFDRUQsYUFBYSxDQUFDRSxNQUFkLEdBQXVCLENBQXZCLElBQ0FKLGdCQURBLElBRUFBLGdCQUFnQixDQUFDSyxRQUFqQixDQUEwQkMsSUFBMUIsS0FBbUMsU0FIckMsRUFJRTtBQUNBLFlBQU1DLFVBQVUsR0FBRyxLQUFLQyxtQ0FBTCxDQUF5Q1IsZ0JBQWdCLENBQUNLLFFBQTFELENBQW5CO0FBQ0EsYUFBS0ksa0JBQUw7O0FBQ0EsYUFBS0Msb0JBQUwsQ0FBMEIsSUFBMUI7O0FBQ0EsZUFBT0gsVUFBUDtBQUNEOztBQUVELGFBQU8sSUFBUDtBQUNEOzs7O0VBbkJ5Q0ksd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGlja0V2ZW50IH0gZnJvbSAnLi4vZXZlbnQtdHlwZXMnO1xuaW1wb3J0IHsgTW9kZUhhbmRsZXIsIEVkaXRBY3Rpb24gfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBUd29DbGlja1BvbHlnb25IYW5kbGVyIGV4dGVuZHMgTW9kZUhhbmRsZXIge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCk6IEVkaXRBY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBzdXBlci5oYW5kbGVDbGljayhldmVudCk7XG5cbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gdGhpcy5nZXRUZW50YXRpdmVGZWF0dXJlKCk7XG4gICAgY29uc3QgY2xpY2tTZXF1ZW5jZSA9IHRoaXMuZ2V0Q2xpY2tTZXF1ZW5jZSgpO1xuXG4gICAgaWYgKFxuICAgICAgY2xpY2tTZXF1ZW5jZS5sZW5ndGggPiAxICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlICYmXG4gICAgICB0ZW50YXRpdmVGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJ1xuICAgICkge1xuICAgICAgY29uc3QgZWRpdEFjdGlvbiA9IHRoaXMuZ2V0QWRkRmVhdHVyZU9yQm9vbGVhblBvbHlnb25BY3Rpb24odGVudGF0aXZlRmVhdHVyZS5nZW9tZXRyeSk7XG4gICAgICB0aGlzLnJlc2V0Q2xpY2tTZXF1ZW5jZSgpO1xuICAgICAgdGhpcy5fc2V0VGVudGF0aXZlRmVhdHVyZShudWxsKTtcbiAgICAgIHJldHVybiBlZGl0QWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/mode-handlers/view-handler.js b/modules/layers/dist/mode-handlers/view-handler.js new file mode 100644 index 000000000..fb2d73f3c --- /dev/null +++ b/modules/layers/dist/mode-handlers/view-handler.js @@ -0,0 +1,61 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ViewHandler = void 0; + +var _modeHandler = require("./mode-handler"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +// TODO edit-modes: delete handlers once EditMode fully implemented +var ViewHandler = /*#__PURE__*/function (_ModeHandler) { + _inherits(ViewHandler, _ModeHandler); + + var _super = _createSuper(ViewHandler); + + function ViewHandler() { + _classCallCheck(this, ViewHandler); + + return _super.apply(this, arguments); + } + + _createClass(ViewHandler, [{ + key: "getCursor", + value: function getCursor(_ref) { + var isDragging = _ref.isDragging; + return isDragging ? 'grabbing' : 'grab'; + } + }, { + key: "getEditHandles", + value: function getEditHandles(picks, groundCoords) { + return []; + } + }]); + + return ViewHandler; +}(_modeHandler.ModeHandler); + +exports.ViewHandler = ViewHandler; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlLWhhbmRsZXJzL3ZpZXctaGFuZGxlci50cyJdLCJuYW1lcyI6WyJWaWV3SGFuZGxlciIsImlzRHJhZ2dpbmciLCJwaWNrcyIsImdyb3VuZENvb3JkcyIsIk1vZGVIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0lBQ2FBLFc7Ozs7Ozs7Ozs7Ozs7b0NBQ2dEO0FBQUEsVUFBL0NDLFVBQStDLFFBQS9DQSxVQUErQztBQUN6RCxhQUFPQSxVQUFVLEdBQUcsVUFBSCxHQUFnQixNQUFqQztBQUNEOzs7bUNBRWNDLEssRUFBb0NDLFksRUFBdUM7QUFDeEYsYUFBTyxFQUFQO0FBQ0Q7Ozs7RUFQOEJDLHdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgRWRpdEhhbmRsZSwgTW9kZUhhbmRsZXIgfSBmcm9tICcuL21vZGUtaGFuZGxlcic7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGhhbmRsZXJzIG9uY2UgRWRpdE1vZGUgZnVsbHkgaW1wbGVtZW50ZWRcbmV4cG9ydCBjbGFzcyBWaWV3SGFuZGxlciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgZ2V0Q3Vyc29yKHsgaXNEcmFnZ2luZyB9OiB7IGlzRHJhZ2dpbmc6IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzRHJhZ2dpbmcgPyAnZ3JhYmJpbmcnIDogJ2dyYWInO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMocGlja3M/OiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiwgZ3JvdW5kQ29vcmRzPzogUG9zaXRpb24pOiBFZGl0SGFuZGxlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/layers/dist/shaderlib/color/color.js b/modules/layers/dist/shaderlib/color/color.js new file mode 100644 index 000000000..c36b9a69d --- /dev/null +++ b/modules/layers/dist/shaderlib/color/color.js @@ -0,0 +1,36 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// TODO - this module is a WIP + +/* eslint-disable camelcase */ +var INITIAL_STATE = { + color_uOpacity: 1.0, + color_uDesaturate: 0.0, + color_uBrightness: 1.0 +}; + +function getUniforms() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE; + var uniforms = {}; + + if (opts.opacity) { + uniforms.color_uOpacity = opts.opacity; + } + + return uniforms; +} + +var vs = "varying vec4 color_vColor;\n\ncolor_setColor(vec4 color) {\n color_vColor = color;\n}\n"; +var fs = "uniform float color_uOpacity;\nuniform float color_uDesaturate;\nuniform float color_uBrightness;\n\nvarying vec4 color_vColor;\n\nvec4 color_getColor() {\n return color_vColor;\n}\n\nvec4 color_filterColor(vec4 color) {\n // apply desaturation and brightness\n if (color_uDesaturate > 0.01) {\n float luminance = (color.r + color.g + color.b) * 0.333333333 + color_uBrightness;\n color = vec4(mix(color.rgb, vec3(luminance), color_uDesaturate), color.a);\n\n // Apply opacity\n color = vec4(color.rgb, color.a * color_uOpacity);\n return color;\n}\n"; +var _default = { + name: 'color', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvY29sb3IvY29sb3IudHMiXSwibmFtZXMiOlsiSU5JVElBTF9TVEFURSIsImNvbG9yX3VPcGFjaXR5IiwiY29sb3JfdURlc2F0dXJhdGUiLCJjb2xvcl91QnJpZ2h0bmVzcyIsImdldFVuaWZvcm1zIiwib3B0cyIsInVuaWZvcm1zIiwib3BhY2l0eSIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFFQTtBQUNBLElBQU1BLGFBQXFDLEdBQUc7QUFDNUNDLEVBQUFBLGNBQWMsRUFBRSxHQUQ0QjtBQUU1Q0MsRUFBQUEsaUJBQWlCLEVBQUUsR0FGeUI7QUFHNUNDLEVBQUFBLGlCQUFpQixFQUFFO0FBSHlCLENBQTlDOztBQU1BLFNBQVNDLFdBQVQsR0FBMkM7QUFBQSxNQUF0QkMsSUFBc0IsdUVBQWZMLGFBQWU7QUFDekMsTUFBTU0sUUFBZ0MsR0FBRyxFQUF6Qzs7QUFDQSxNQUFJRCxJQUFJLENBQUNFLE9BQVQsRUFBa0I7QUFDaEJELElBQUFBLFFBQVEsQ0FBQ0wsY0FBVCxHQUEwQkksSUFBSSxDQUFDRSxPQUEvQjtBQUNEOztBQUNELFNBQU9ELFFBQVA7QUFDRDs7QUFFRCxJQUFNRSxFQUFFLDZGQUFSO0FBUUEsSUFBTUMsRUFBRSx1akJBQVI7ZUF1QmU7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE9BRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliTCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE8gLSB0aGlzIG1vZHVsZSBpcyBhIFdJUFxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbmNvbnN0IElOSVRJQUxfU1RBVEU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7XG4gIGNvbG9yX3VPcGFjaXR5OiAxLjAsXG4gIGNvbG9yX3VEZXNhdHVyYXRlOiAwLjAsXG4gIGNvbG9yX3VCcmlnaHRuZXNzOiAxLjAsXG59O1xuXG5mdW5jdGlvbiBnZXRVbmlmb3JtcyhvcHRzID0gSU5JVElBTF9TVEFURSkge1xuICBjb25zdCB1bmlmb3JtczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBpZiAob3B0cy5vcGFjaXR5KSB7XG4gICAgdW5pZm9ybXMuY29sb3JfdU9wYWNpdHkgPSBvcHRzLm9wYWNpdHk7XG4gIH1cbiAgcmV0dXJuIHVuaWZvcm1zO1xufVxuXG5jb25zdCB2cyA9IGBcXFxudmFyeWluZyB2ZWM0IGNvbG9yX3ZDb2xvcjtcblxuY29sb3Jfc2V0Q29sb3IodmVjNCBjb2xvcikge1xuICBjb2xvcl92Q29sb3IgPSBjb2xvcjtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGZsb2F0IGNvbG9yX3VPcGFjaXR5O1xudW5pZm9ybSBmbG9hdCBjb2xvcl91RGVzYXR1cmF0ZTtcbnVuaWZvcm0gZmxvYXQgY29sb3JfdUJyaWdodG5lc3M7XG5cbnZhcnlpbmcgdmVjNCBjb2xvcl92Q29sb3I7XG5cbnZlYzQgY29sb3JfZ2V0Q29sb3IoKSB7XG4gIHJldHVybiBjb2xvcl92Q29sb3I7XG59XG5cbnZlYzQgY29sb3JfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICAvLyBhcHBseSBkZXNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3NcbiAgaWYgKGNvbG9yX3VEZXNhdHVyYXRlID4gMC4wMSkge1xuICAgIGZsb2F0IGx1bWluYW5jZSA9IChjb2xvci5yICsgY29sb3IuZyArIGNvbG9yLmIpICogMC4zMzMzMzMzMzMgKyBjb2xvcl91QnJpZ2h0bmVzcztcbiAgICBjb2xvciA9IHZlYzQobWl4KGNvbG9yLnJnYiwgdmVjMyhsdW1pbmFuY2UpLCBjb2xvcl91RGVzYXR1cmF0ZSksIGNvbG9yLmEpO1xuXG4gIC8vIEFwcGx5IG9wYWNpdHlcbiAgY29sb3IgPSB2ZWM0KGNvbG9yLnJnYiwgY29sb3IuYSAqIGNvbG9yX3VPcGFjaXR5KTtcbiAgcmV0dXJuIGNvbG9yO1xufVxuYDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29sb3InLFxuICB2cyxcbiAgZnMsXG4gIGdldFVuaWZvcm1zLFxufTtcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/shaderlib/outline/outline.js b/modules/layers/dist/shaderlib/outline/outline.js new file mode 100644 index 000000000..b12e633f3 --- /dev/null +++ b/modules/layers/dist/shaderlib/outline/outline.js @@ -0,0 +1,49 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +/* eslint-disable camelcase */ +var INITIAL_STATE = { + outlineEnabled: false, + outlineRenderShadowmap: false, + outlineShadowmap: null +}; + +function getUniforms() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE, + outlineEnabled = _ref.outlineEnabled, + outlineRenderShadowmap = _ref.outlineRenderShadowmap, + outlineShadowmap = _ref.outlineShadowmap; + + var uniforms = {}; + + if (outlineEnabled !== undefined) { + // ? 1.0 : 0.0; + uniforms.outline_uEnabled = outlineEnabled; + } + + if (outlineRenderShadowmap !== undefined) { + // ? 1.0 : 0.0; + uniforms.outline_uRenderOutlines = outlineRenderShadowmap; + } + + if (outlineShadowmap !== undefined) { + uniforms.outline_uShadowmap = outlineShadowmap; + } + + return uniforms; +} + +var vs = "attribute float instanceZLevel;\nvarying float outline_vzLevel;\nvarying vec4 outline_vPosition;\n\n// Set the z level for the outline shadowmap rendering\nvoid outline_setZLevel(float zLevel) {\n outline_vzLevel = zLevel;\n}\n\n// Store an adjusted position for texture2DProj\nvoid outline_setUV(vec4 position) {\n // mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n"; +var fs = "uniform bool outline_uEnabled;\nuniform bool outline_uRenderOutlines;\nuniform sampler2D outline_uShadowmap;\n\nvarying float outline_vzLevel;\n// varying vec2 outline_vUV;\nvarying vec4 outline_vPosition;\n\nconst float OUTLINE_Z_LEVEL_ERROR = 0.01;\n\n// Return a darker color in shadowmap\nvec4 outline_filterShadowColor(vec4 color) {\n return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);\n}\n\n// Return a darker color if in shadowmap\nvec4 outline_filterDarkenColor(vec4 color) {\n if (outline_uEnabled) {\n float maxZLevel;\n if (outline_vPosition.q > 0.0) {\n maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;\n } else {\n discard;\n }\n if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {\n vec4(color.rgb * 0.5, color.a);\n } else {\n discard;\n }\n }\n return color;\n}\n\n// if enabled and rendering outlines - Render depth to shadowmap\n// if enabled and rendering colors - Return a darker color if in shadowmap\n// if disabled, just return color\nvec4 outline_filterColor(vec4 color) {\n if (outline_uEnabled) {\n return outline_uRenderOutlines ?\n outline_filterShadowColor(color) :\n outline_filterDarkenColor(color);\n }\n return color;\n}\n"; +var _default = { + name: 'outline', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvb3V0bGluZS9vdXRsaW5lLnRzIl0sIm5hbWVzIjpbIklOSVRJQUxfU1RBVEUiLCJvdXRsaW5lRW5hYmxlZCIsIm91dGxpbmVSZW5kZXJTaGFkb3dtYXAiLCJvdXRsaW5lU2hhZG93bWFwIiwiZ2V0VW5pZm9ybXMiLCJ1bmlmb3JtcyIsInVuZGVmaW5lZCIsIm91dGxpbmVfdUVuYWJsZWQiLCJvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyIsIm91dGxpbmVfdVNoYWRvd21hcCIsInZzIiwiZnMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxJQUFNQSxhQUFrQyxHQUFHO0FBQ3pDQyxFQUFBQSxjQUFjLEVBQUUsS0FEeUI7QUFFekNDLEVBQUFBLHNCQUFzQixFQUFFLEtBRmlCO0FBR3pDQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUh1QixDQUEzQzs7QUFNQSxTQUFTQyxXQUFULEdBQW1HO0FBQUEsaUZBQWZKLGFBQWU7QUFBQSxNQUE1RUMsY0FBNEUsUUFBNUVBLGNBQTRFO0FBQUEsTUFBNURDLHNCQUE0RCxRQUE1REEsc0JBQTREO0FBQUEsTUFBcENDLGdCQUFvQyxRQUFwQ0EsZ0JBQW9DOztBQUNqRyxNQUFNRSxRQUE2QixHQUFHLEVBQXRDOztBQUNBLE1BQUlKLGNBQWMsS0FBS0ssU0FBdkIsRUFBa0M7QUFDaEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRSxnQkFBVCxHQUE0Qk4sY0FBNUI7QUFDRDs7QUFDRCxNQUFJQyxzQkFBc0IsS0FBS0ksU0FBL0IsRUFBMEM7QUFDeEM7QUFDQUQsSUFBQUEsUUFBUSxDQUFDRyx1QkFBVCxHQUFtQ04sc0JBQW5DO0FBQ0Q7O0FBQ0QsTUFBSUMsZ0JBQWdCLEtBQUtHLFNBQXpCLEVBQW9DO0FBQ2xDRCxJQUFBQSxRQUFRLENBQUNJLGtCQUFULEdBQThCTixnQkFBOUI7QUFDRDs7QUFDRCxTQUFPRSxRQUFQO0FBQ0Q7O0FBRUQsSUFBTUssRUFBRSxtaUJBQVI7QUFzQkEsSUFBTUMsRUFBRSw0d0NBQVI7ZUErQ2U7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLFNBRE87QUFFYkYsRUFBQUEsRUFBRSxFQUFGQSxFQUZhO0FBR2JDLEVBQUFBLEVBQUUsRUFBRkEsRUFIYTtBQUliUCxFQUFBQSxXQUFXLEVBQVhBO0FBSmEsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgb3V0bGluZUVuYWJsZWQ6IGZhbHNlLFxuICBvdXRsaW5lUmVuZGVyU2hhZG93bWFwOiBmYWxzZSxcbiAgb3V0bGluZVNoYWRvd21hcDogbnVsbCxcbn07XG5cbmZ1bmN0aW9uIGdldFVuaWZvcm1zKHsgb3V0bGluZUVuYWJsZWQsIG91dGxpbmVSZW5kZXJTaGFkb3dtYXAsIG91dGxpbmVTaGFkb3dtYXAgfSA9IElOSVRJQUxfU1RBVEUpIHtcbiAgY29uc3QgdW5pZm9ybXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKG91dGxpbmVFbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyA/IDEuMCA6IDAuMDtcbiAgICB1bmlmb3Jtcy5vdXRsaW5lX3VFbmFibGVkID0gb3V0bGluZUVuYWJsZWQ7XG4gIH1cbiAgaWYgKG91dGxpbmVSZW5kZXJTaGFkb3dtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vID8gMS4wIDogMC4wO1xuICAgIHVuaWZvcm1zLm91dGxpbmVfdVJlbmRlck91dGxpbmVzID0gb3V0bGluZVJlbmRlclNoYWRvd21hcDtcbiAgfVxuICBpZiAob3V0bGluZVNoYWRvd21hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdW5pZm9ybXMub3V0bGluZV91U2hhZG93bWFwID0gb3V0bGluZVNoYWRvd21hcDtcbiAgfVxuICByZXR1cm4gdW5pZm9ybXM7XG59XG5cbmNvbnN0IHZzID0gYFxcXG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VaTGV2ZWw7XG52YXJ5aW5nIGZsb2F0IG91dGxpbmVfdnpMZXZlbDtcbnZhcnlpbmcgdmVjNCBvdXRsaW5lX3ZQb3NpdGlvbjtcblxuLy8gU2V0IHRoZSB6IGxldmVsIGZvciB0aGUgb3V0bGluZSBzaGFkb3dtYXAgcmVuZGVyaW5nXG52b2lkIG91dGxpbmVfc2V0WkxldmVsKGZsb2F0IHpMZXZlbCkge1xuICBvdXRsaW5lX3Z6TGV2ZWwgPSB6TGV2ZWw7XG59XG5cbi8vIFN0b3JlIGFuIGFkanVzdGVkIHBvc2l0aW9uIGZvciB0ZXh0dXJlMkRQcm9qXG52b2lkIG91dGxpbmVfc2V0VVYodmVjNCBwb3NpdGlvbikge1xuICAvLyBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIG91dGxpbmVfdlBvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eXogKiAwLjUgKyBwb3NpdGlvbi53ICogMC41LCBwb3NpdGlvbi53KTtcbn1cbmA7XG5cbmNvbnN0IGZzID0gYFxcXG51bmlmb3JtIGJvb2wgb3V0bGluZV91RW5hYmxlZDtcbnVuaWZvcm0gYm9vbCBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcztcbnVuaWZvcm0gc2FtcGxlcjJEIG91dGxpbmVfdVNoYWRvd21hcDtcblxudmFyeWluZyBmbG9hdCBvdXRsaW5lX3Z6TGV2ZWw7XG4vLyB2YXJ5aW5nIHZlYzIgb3V0bGluZV92VVY7XG52YXJ5aW5nIHZlYzQgb3V0bGluZV92UG9zaXRpb247XG5cbmNvbnN0IGZsb2F0IE9VVExJTkVfWl9MRVZFTF9FUlJPUiA9IDAuMDE7XG5cbi8vIFJldHVybiBhIGRhcmtlciBjb2xvciBpbiBzaGFkb3dtYXBcbnZlYzQgb3V0bGluZV9maWx0ZXJTaGFkb3dDb2xvcih2ZWM0IGNvbG9yKSB7XG4gIHJldHVybiB2ZWM0KG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIG91dGxpbmVfdnpMZXZlbCAvIDI1NS4sIDEuKTtcbn1cblxuLy8gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxudmVjNCBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKHZlYzQgY29sb3IpIHtcbiAgaWYgKG91dGxpbmVfdUVuYWJsZWQpIHtcbiAgICBmbG9hdCBtYXhaTGV2ZWw7XG4gICAgaWYgKG91dGxpbmVfdlBvc2l0aW9uLnEgPiAwLjApIHtcbiAgICAgIG1heFpMZXZlbCA9IHRleHR1cmUyRFByb2oob3V0bGluZV91U2hhZG93bWFwLCBvdXRsaW5lX3ZQb3NpdGlvbikuciAqIDI1NS47XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc2NhcmQ7XG4gICAgfVxuICAgIGlmIChtYXhaTGV2ZWwgPCBvdXRsaW5lX3Z6TGV2ZWwgKyBPVVRMSU5FX1pfTEVWRUxfRVJST1IpIHtcbiAgICAgIHZlYzQoY29sb3IucmdiICogMC41LCBjb2xvci5hKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzY2FyZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgb3V0bGluZXMgLSBSZW5kZXIgZGVwdGggdG8gc2hhZG93bWFwXG4vLyBpZiBlbmFibGVkIGFuZCByZW5kZXJpbmcgY29sb3JzIC0gUmV0dXJuIGEgZGFya2VyIGNvbG9yIGlmIGluIHNoYWRvd21hcFxuLy8gaWYgZGlzYWJsZWQsIGp1c3QgcmV0dXJuIGNvbG9yXG52ZWM0IG91dGxpbmVfZmlsdGVyQ29sb3IodmVjNCBjb2xvcikge1xuICBpZiAob3V0bGluZV91RW5hYmxlZCkge1xuICAgIHJldHVybiBvdXRsaW5lX3VSZW5kZXJPdXRsaW5lcyA/XG4gICAgICBvdXRsaW5lX2ZpbHRlclNoYWRvd0NvbG9yKGNvbG9yKSA6XG4gICAgICBvdXRsaW5lX2ZpbHRlckRhcmtlbkNvbG9yKGNvbG9yKTtcbiAgfVxuICByZXR1cm4gY29sb3I7XG59XG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdvdXRsaW5lJyxcbiAgdnMsXG4gIGZzLFxuICBnZXRVbmlmb3Jtcyxcbn07XG4iXX0= \ No newline at end of file diff --git a/modules/layers/dist/shaderlib/utils/utils.js b/modules/layers/dist/shaderlib/utils/utils.js new file mode 100644 index 000000000..6f8556ea6 --- /dev/null +++ b/modules/layers/dist/shaderlib/utils/utils.js @@ -0,0 +1,30 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); } + +// TODO - this module is a WIP + +/* eslint-disable camelcase */ +var INITIAL_STATE = {}; + +function getUniforms() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE; + + _objectDestructuringEmpty(_ref); +} + +var vs = "// Note - fairly generic, move to a UV or screen package, or even project?\nvec2 project_clipspace_to_uv(vec4 position) {\n vec2 p = vec2(position.x / position.w, position.y / position.w);\n return vec2((p.x + 1.0) / 2.0, (p.y + 1.0) / 2.0);\n}\n\nvec2 project_clipspace_to_projective_uv(vec4 position) {\n // outline_vPosition = mat4(\n // 0.5, 0.0, 0.0, 0.0,\n // 0.0, 0.5, 0.0, 0.0,\n // 0.0, 0.0, 0.5, 0.0,\n // 0.5, 0.5, 0.5, 1.0\n // ) * position;\n return vec4(position.xyz * 0.5 + position.w * 0.5, position.w);\n}\n"; +var fs = vs; +var _default = { + name: 'outline', + vs: vs, + fs: fs, + getUniforms: getUniforms +}; +exports["default"] = _default; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXJsaWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOlsiSU5JVElBTF9TVEFURSIsImdldFVuaWZvcm1zIiwidnMiLCJmcyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHLEVBQXRCOztBQUVBLFNBQVNDLFdBQVQsR0FBeUM7QUFBQSxpRkFBZkQsYUFBZTs7QUFBQTtBQUFFOztBQUUzQyxJQUFNRSxFQUFFLGtpQkFBUjtBQWtCQSxJQUFNQyxFQUFFLEdBQUdELEVBQVg7ZUFFZTtBQUNiRSxFQUFBQSxJQUFJLEVBQUUsU0FETztBQUViRixFQUFBQSxFQUFFLEVBQUZBLEVBRmE7QUFHYkMsRUFBQUEsRUFBRSxFQUFGQSxFQUhhO0FBSWJGLEVBQUFBLFdBQVcsRUFBWEE7QUFKYSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVE9ETyAtIHRoaXMgbW9kdWxlIGlzIGEgV0lQXG5cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuY29uc3QgSU5JVElBTF9TVEFURSA9IHt9O1xuXG5mdW5jdGlvbiBnZXRVbmlmb3Jtcyh7fSA9IElOSVRJQUxfU1RBVEUpIHt9XG5cbmNvbnN0IHZzID0gYFxcXG4vLyBOb3RlIC0gZmFpcmx5IGdlbmVyaWMsIG1vdmUgdG8gYSBVViBvciBzY3JlZW4gcGFja2FnZSwgb3IgZXZlbiBwcm9qZWN0P1xudmVjMiBwcm9qZWN0X2NsaXBzcGFjZV90b191dih2ZWM0IHBvc2l0aW9uKSB7XG4gIHZlYzIgcCA9IHZlYzIocG9zaXRpb24ueCAvIHBvc2l0aW9uLncsIHBvc2l0aW9uLnkgLyBwb3NpdGlvbi53KTtcbiAgcmV0dXJuIHZlYzIoKHAueCArIDEuMCkgLyAyLjAsIChwLnkgKyAxLjApIC8gMi4wKTtcbn1cblxudmVjMiBwcm9qZWN0X2NsaXBzcGFjZV90b19wcm9qZWN0aXZlX3V2KHZlYzQgcG9zaXRpb24pIHtcbiAgLy8gb3V0bGluZV92UG9zaXRpb24gPSBtYXQ0KFxuICAvLyAgIDAuNSwgMC4wLCAwLjAsIDAuMCxcbiAgLy8gICAwLjAsIDAuNSwgMC4wLCAwLjAsXG4gIC8vICAgMC4wLCAwLjAsIDAuNSwgMC4wLFxuICAvLyAgIDAuNSwgMC41LCAwLjUsIDEuMFxuICAvLyApICogcG9zaXRpb247XG4gIHJldHVybiB2ZWM0KHBvc2l0aW9uLnh5eiAqIDAuNSArIHBvc2l0aW9uLncgKiAwLjUsIHBvc2l0aW9uLncpO1xufVxuYDtcblxuY29uc3QgZnMgPSB2cztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb3V0bGluZScsXG4gIHZzLFxuICBmcyxcbiAgZ2V0VW5pZm9ybXMsXG59O1xuIl19 \ No newline at end of file diff --git a/modules/layers/dist/style.js b/modules/layers/dist/style.js new file mode 100644 index 000000000..7096c3978 --- /dev/null +++ b/modules/layers/dist/style.js @@ -0,0 +1,19 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0; +// Describes the arrow style of polylines +var ArrowStyles = { + NONE: 0, + FORWARD: 1, + BACKWARD: 2, + BOTH: 3 +}; +exports.ArrowStyles = ArrowStyles; +var DEFAULT_ARROWS = 1; +exports.DEFAULT_ARROWS = DEFAULT_ARROWS; +var MAX_ARROWS = 3; +exports.MAX_ARROWS = MAX_ARROWS; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJBcnJvd1N0eWxlcyIsIk5PTkUiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiREVGQVVMVF9BUlJPV1MiLCJNQVhfQVJST1dTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNPLElBQU1BLFdBQVcsR0FBRztBQUN6QkMsRUFBQUEsSUFBSSxFQUFFLENBRG1CO0FBRXpCQyxFQUFBQSxPQUFPLEVBQUUsQ0FGZ0I7QUFHekJDLEVBQUFBLFFBQVEsRUFBRSxDQUhlO0FBSXpCQyxFQUFBQSxJQUFJLEVBQUU7QUFKbUIsQ0FBcEI7O0FBT0EsSUFBTUMsY0FBYyxHQUFHLENBQXZCOztBQUNBLElBQU1DLFVBQVUsR0FBRyxDQUFuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcbiJdfQ== \ No newline at end of file diff --git a/modules/layers/dist/types.js b/modules/layers/dist/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/layers/dist/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/layers/dist/utils.js b/modules/layers/dist/utils.js new file mode 100644 index 000000000..c62183388 --- /dev/null +++ b/modules/layers/dist/utils.js @@ -0,0 +1,216 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; +exports.generatePointsParallelToLinePoints = generatePointsParallelToLinePoints; +exports.distance2d = distance2d; +exports.mix = mix; +exports.nearestPointOnProjectedLine = nearestPointOnProjectedLine; + +var _destination = _interopRequireDefault(require("@turf/destination")); + +var _bearing = _interopRequireDefault(require("@turf/bearing")); + +var _pointToLineDistance = _interopRequireDefault(require("@turf/point-to-line-distance")); + +var _helpers = require("@turf/helpers"); + +var _viewportMercatorProject = _interopRequireDefault(require("viewport-mercator-project")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} + +function generatePointsParallelToLinePoints(p1, p2, groundCoords) { + var lineString = { + type: 'LineString', + coordinates: [p1, p2] + }; + var pt = (0, _helpers.point)(groundCoords); + var ddistance = (0, _pointToLineDistance["default"])(pt, lineString); + var lineBearing = (0, _bearing["default"])(p1, p2); // Check if current point is to the left or right of line + // Line from A=(x1,y1) to B=(x2,y2) a point P=(x,y) + // then (x−x1)(y2−y1)−(y−y1)(x2−x1) + + var isPointToLeftOfLine = (groundCoords[0] - p1[0]) * (p2[1] - p1[1]) - (groundCoords[1] - p1[1]) * (p2[0] - p1[0]); // Bearing to draw perpendicular to the line string + + var orthogonalBearing = isPointToLeftOfLine < 0 ? lineBearing - 90 : lineBearing - 270; // Get coordinates for the point p3 and p4 which are perpendicular to the lineString + // Add the distance as the current position moves away from the lineString + + var p3 = (0, _destination["default"])(p2, ddistance, orthogonalBearing); + var p4 = (0, _destination["default"])(p1, ddistance, orthogonalBearing); //@ts-ignore + + return [p3.geometry.coordinates, p4.geometry.coordinates]; +} + +function distance2d(x1, y1, x2, y2) { + var dx = x1 - x2; + var dy = y1 - y2; + return Math.sqrt(dx * dx + dy * dy); +} + +function mix(a, b, ratio) { + return b * ratio + a * (1 - ratio); +} + +function nearestPointOnProjectedLine(line, inPoint, viewport) { + var wmViewport = new _viewportMercatorProject["default"](viewport); // Project the line to viewport, then find the nearest point + + var coordinates = line.geometry.coordinates; + var projectedCoords = coordinates.map(function (_ref) { + var _ref2 = _slicedToArray(_ref, 3), + x = _ref2[0], + y = _ref2[1], + _ref2$ = _ref2[2], + z = _ref2$ === void 0 ? 0 : _ref2$; + + return wmViewport.project([x, y, z]); + }); //@ts-ignore + + var _wmViewport$project = wmViewport.project(inPoint.geometry.coordinates), + _wmViewport$project2 = _slicedToArray(_wmViewport$project, 2), + x = _wmViewport$project2[0], + y = _wmViewport$project2[1]; // console.log('projectedCoords', JSON.stringify(projectedCoords)); + + + var minDistance = Infinity; + var minPointInfo = {}; + projectedCoords.forEach(function (_ref3, index) { + var _ref4 = _slicedToArray(_ref3, 2), + x2 = _ref4[0], + y2 = _ref4[1]; + + if (index === 0) { + return; + } + + var _projectedCoords = _slicedToArray(projectedCoords[index - 1], 2), + x1 = _projectedCoords[0], + y1 = _projectedCoords[1]; // line from projectedCoords[index - 1] to projectedCoords[index] + // convert to Ax + By + C = 0 + + + var A = y1 - y2; + var B = x2 - x1; + var C = x1 * y2 - x2 * y1; // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line + + var div = A * A + B * B; + var distance = Math.abs(A * x + B * y + C) / Math.sqrt(div); // TODO: Check if inside bounds + + if (distance < minDistance) { + minDistance = distance; + minPointInfo = { + index: index, + x0: (B * (B * x - A * y) - A * C) / div, + y0: (A * (-B * x + A * y) - B * C) / div + }; + } + }); //@ts-ignore + + var _minPointInfo = minPointInfo, + index = _minPointInfo.index, + x0 = _minPointInfo.x0, + y0 = _minPointInfo.y0; + + var _projectedCoords2 = _slicedToArray(projectedCoords[index - 1], 3), + x1 = _projectedCoords2[0], + y1 = _projectedCoords2[1], + _projectedCoords2$ = _projectedCoords2[2], + z1 = _projectedCoords2$ === void 0 ? 0 : _projectedCoords2$; + + var _projectedCoords$inde = _slicedToArray(projectedCoords[index], 3), + x2 = _projectedCoords$inde[0], + y2 = _projectedCoords$inde[1], + _projectedCoords$inde2 = _projectedCoords$inde[2], + z2 = _projectedCoords$inde2 === void 0 ? 0 : _projectedCoords$inde2; // calculate what ratio of the line we are on to find the proper z + + + var lineLength = distance2d(x1, y1, x2, y2); + var startToPointLength = distance2d(x1, y1, x0, y0); + var ratio = startToPointLength / lineLength; + var z0 = mix(z1, z2, ratio); + return { + type: 'Feature', + geometry: { + type: 'Point', + coordinates: wmViewport.unproject([x0, y0, z0]) + }, + properties: { + // TODO: calculate the distance in proper units + dist: minDistance, + index: index - 1 + } + }; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJuYW1lcyI6WyJ0b0RlY2tDb2xvciIsImNvbG9yIiwiZGVmYXVsdENvbG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVjdXJzaXZlbHlUcmF2ZXJzZU5lc3RlZEFycmF5cyIsImFycmF5IiwicHJlZml4IiwiZm4iLCJpIiwibGVuZ3RoIiwiZ2VuZXJhdGVQb2ludHNQYXJhbGxlbFRvTGluZVBvaW50cyIsInAxIiwicDIiLCJncm91bmRDb29yZHMiLCJsaW5lU3RyaW5nIiwidHlwZSIsImNvb3JkaW5hdGVzIiwicHQiLCJkZGlzdGFuY2UiLCJsaW5lQmVhcmluZyIsImlzUG9pbnRUb0xlZnRPZkxpbmUiLCJvcnRob2dvbmFsQmVhcmluZyIsInAzIiwicDQiLCJnZW9tZXRyeSIsImRpc3RhbmNlMmQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImR4IiwiZHkiLCJNYXRoIiwic3FydCIsIm1peCIsImEiLCJiIiwicmF0aW8iLCJuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUiLCJsaW5lIiwiaW5Qb2ludCIsInZpZXdwb3J0Iiwid21WaWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJwcm9qZWN0ZWRDb29yZHMiLCJtYXAiLCJ4IiwieSIsInoiLCJwcm9qZWN0IiwibWluRGlzdGFuY2UiLCJJbmZpbml0eSIsIm1pblBvaW50SW5mbyIsImZvckVhY2giLCJpbmRleCIsIkEiLCJCIiwiQyIsImRpdiIsImRpc3RhbmNlIiwiYWJzIiwieDAiLCJ5MCIsInoxIiwiejIiLCJsaW5lTGVuZ3RoIiwic3RhcnRUb1BvaW50TGVuZ3RoIiwiejAiLCJ1bnByb2plY3QiLCJwcm9wZXJ0aWVzIiwiZGlzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBU0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1PLFNBQVNBLFdBQVQsQ0FDTEMsS0FESyxFQUc2QjtBQUFBLE1BRGxDQyxZQUNrQyx1RUFE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QUFyQjtBQUZMLEtBRkw7QUFNTEUsSUFBQUEsVUFBVSxFQUFFO0FBQ1Y7QUFDQUMsTUFBQUEsSUFBSSxFQUFFcEIsV0FGSTtBQUdWSSxNQUFBQSxLQUFLLEVBQUVBLEtBQUssR0FBRztBQUhMO0FBTlAsR0FBUDtBQVlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlc3RpbmF0aW9uIGZyb20gJ0B0dXJmL2Rlc3RpbmF0aW9uJztcbmltcG9ydCBiZWFyaW5nIGZyb20gJ0B0dXJmL2JlYXJpbmcnO1xuaW1wb3J0IHBvaW50VG9MaW5lRGlzdGFuY2UgZnJvbSAnQHR1cmYvcG9pbnQtdG8tbGluZS1kaXN0YW5jZSc7XG5pbXBvcnQgeyBwb2ludCB9IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgUG9zaXRpb24sXG4gIFBvaW50LFxuICBMaW5lU3RyaW5nLFxuICBGZWF0dXJlT2YsXG4gIEZlYXR1cmVXaXRoUHJvcHMsXG4gIFZpZXdwb3J0LFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IFdlYk1lcmNhdG9yVmlld3BvcnQgZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5cbi8vIFRPRE8gZWRpdC1tb2RlczogZGVsZXRlIGFuZCB1c2UgZWRpdC1tb2Rlcy91dGlscyBpbnN0ZWFkXG5cbmV4cG9ydCB0eXBlIE5lYXJlc3RQb2ludFR5cGUgPSBGZWF0dXJlV2l0aFByb3BzPFBvaW50LCB7IGRpc3Q6IG51bWJlcjsgaW5kZXg6IG51bWJlciB9PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVja0NvbG9yKFxuICBjb2xvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgbnVtYmVyLFxuICBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMCwgMjU1XVxuKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb2xvcjtcbiAgfVxuICByZXR1cm4gW2NvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1XTtcbn1cblxuLy9cbi8vIGEgR2VvSlNPTiBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2l0aFxuLy8gYW4gYXJndW1lbnQgdGhhdCBpcyB0aGUgbW9zdCBkZWVwbHktbmVzdGVkIGFycmF5IGhhdmluZyBlbGVtZW50c1xuLy8gdGhhdCBhcmUgYXJyYXlzIG9mIHByaW1pdGl2ZXMgYXMgYW4gYXJndW1lbnQsIGUuZy5cbi8vXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcIk11bHRpUG9seWdvblwiLFxuLy8gICBcImNvb3JkaW5hdGVzXCI6IFtcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vLyAgICAgICBdLFxuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vLyAgICAgICBdXG4vLyAgIF1cbi8vIH1cbi8vXG4vLyB0aGUgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkIG9uOlxuLy9cbi8vIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vXG4vLyBhbmRcbi8vXG4vLyBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKFxuICBhcnJheTogQXJyYXk8YW55PixcbiAgcHJlZml4OiBBcnJheTxudW1iZXI+LFxuICBmbjogRnVuY3Rpb25cbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKGFycmF5W2ldLCBbLi4ucHJlZml4LCBpXSwgZm4pKSB7XG4gICAgICBmbihhcnJheSwgcHJlZml4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBvaW50c1BhcmFsbGVsVG9MaW5lUG9pbnRzKFxuICBwMTogUG9zaXRpb24sXG4gIHAyOiBQb3NpdGlvbixcbiAgZ3JvdW5kQ29vcmRzOiBQb3NpdGlvblxuKTogUG9zaXRpb25bXSB7XG4gIGNvbnN0IGxpbmVTdHJpbmc6IExpbmVTdHJpbmcgPSB7XG4gICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgIGNvb3JkaW5hdGVzOiBbcDEsIHAyXSxcbiAgfTtcbiAgY29uc3QgcHQgPSBwb2ludChncm91bmRDb29yZHMpO1xuICBjb25zdCBkZGlzdGFuY2UgPSBwb2ludFRvTGluZURpc3RhbmNlKHB0LCBsaW5lU3RyaW5nKTtcbiAgY29uc3QgbGluZUJlYXJpbmcgPSBiZWFyaW5nKHAxLCBwMik7XG5cbiAgLy8gQ2hlY2sgaWYgY3VycmVudCBwb2ludCBpcyB0byB0aGUgbGVmdCBvciByaWdodCBvZiBsaW5lXG4gIC8vIExpbmUgZnJvbSBBPSh4MSx5MSkgdG8gQj0oeDIseTIpIGEgcG9pbnQgUD0oeCx5KVxuICAvLyB0aGVuICh44oiSeDEpKHky4oiSeTEp4oiSKHniiJJ5MSkoeDLiiJJ4MSlcbiAgY29uc3QgaXNQb2ludFRvTGVmdE9mTGluZSA9XG4gICAgKGdyb3VuZENvb3Jkc1swXSAtIHAxWzBdKSAqIChwMlsxXSAtIHAxWzFdKSAtIChncm91bmRDb29yZHNbMV0gLSBwMVsxXSkgKiAocDJbMF0gLSBwMVswXSk7XG5cbiAgLy8gQmVhcmluZyB0byBkcmF3IHBlcnBlbmRpY3VsYXIgdG8gdGhlIGxpbmUgc3RyaW5nXG4gIGNvbnN0IG9ydGhvZ29uYWxCZWFyaW5nID0gaXNQb2ludFRvTGVmdE9mTGluZSA8IDAgPyBsaW5lQmVhcmluZyAtIDkwIDogbGluZUJlYXJpbmcgLSAyNzA7XG5cbiAgLy8gR2V0IGNvb3JkaW5hdGVzIGZvciB0aGUgcG9pbnQgcDMgYW5kIHA0IHdoaWNoIGFyZSBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lU3RyaW5nXG4gIC8vIEFkZCB0aGUgZGlzdGFuY2UgYXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaW5lU3RyaW5nXG4gIGNvbnN0IHAzID0gZGVzdGluYXRpb24ocDIsIGRkaXN0YW5jZSwgb3J0aG9nb25hbEJlYXJpbmcpO1xuICBjb25zdCBwNCA9IGRlc3RpbmF0aW9uKHAxLCBkZGlzdGFuY2UsIG9ydGhvZ29uYWxCZWFyaW5nKTtcbiAgLy9AdHMtaWdub3JlXG4gIHJldHVybiBbcDMuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHA0Lmdlb21ldHJ5LmNvb3JkaW5hdGVzXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlMmQoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGR4ID0geDEgLSB4MjtcbiAgY29uc3QgZHkgPSB5MSAtIHkyO1xuICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1peChhOiBudW1iZXIsIGI6IG51bWJlciwgcmF0aW86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiICogcmF0aW8gKyBhICogKDEgLSByYXRpbyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWFyZXN0UG9pbnRPblByb2plY3RlZExpbmUoXG4gIGxpbmU6IEZlYXR1cmVPZjxMaW5lU3RyaW5nPixcbiAgaW5Qb2ludDogRmVhdHVyZU9mPFBvaW50PixcbiAgdmlld3BvcnQ6IFZpZXdwb3J0XG4pOiBOZWFyZXN0UG9pbnRUeXBlIHtcbiAgY29uc3Qgd21WaWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KHZpZXdwb3J0KTtcbiAgLy8gUHJvamVjdCB0aGUgbGluZSB0byB2aWV3cG9ydCwgdGhlbiBmaW5kIHRoZSBuZWFyZXN0IHBvaW50XG4gIGNvbnN0IGNvb3JkaW5hdGVzOiBBcnJheTxBcnJheTxudW1iZXI+PiA9IGxpbmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgYXMgYW55O1xuICBjb25zdCBwcm9qZWN0ZWRDb29yZHMgPSBjb29yZGluYXRlcy5tYXAoKFt4LCB5LCB6ID0gMF0pID0+IHdtVmlld3BvcnQucHJvamVjdChbeCwgeSwgel0pKTtcbiAgLy9AdHMtaWdub3JlXG4gIGNvbnN0IFt4LCB5XSA9IHdtVmlld3BvcnQucHJvamVjdChpblBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzKTtcbiAgLy8gY29uc29sZS5sb2coJ3Byb2plY3RlZENvb3JkcycsIEpTT04uc3RyaW5naWZ5KHByb2plY3RlZENvb3JkcykpO1xuXG4gIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgbWluUG9pbnRJbmZvID0ge307XG5cbiAgcHJvamVjdGVkQ29vcmRzLmZvckVhY2goKFt4MiwgeTJdLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFt4MSwgeTFdID0gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV07XG5cbiAgICAvLyBsaW5lIGZyb20gcHJvamVjdGVkQ29vcmRzW2luZGV4IC0gMV0gdG8gcHJvamVjdGVkQ29vcmRzW2luZGV4XVxuICAgIC8vIGNvbnZlcnQgdG8gQXggKyBCeSArIEMgPSAwXG4gICAgY29uc3QgQSA9IHkxIC0geTI7XG4gICAgY29uc3QgQiA9IHgyIC0geDE7XG4gICAgY29uc3QgQyA9IHgxICogeTIgLSB4MiAqIHkxO1xuXG4gICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGlzdGFuY2VfZnJvbV9hX3BvaW50X3RvX2FfbGluZVxuICAgIGNvbnN0IGRpdiA9IEEgKiBBICsgQiAqIEI7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLmFicyhBICogeCArIEIgKiB5ICsgQykgLyBNYXRoLnNxcnQoZGl2KTtcblxuICAgIC8vIFRPRE86IENoZWNrIGlmIGluc2lkZSBib3VuZHNcblxuICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgbWluUG9pbnRJbmZvID0ge1xuICAgICAgICBpbmRleCxcbiAgICAgICAgeDA6IChCICogKEIgKiB4IC0gQSAqIHkpIC0gQSAqIEMpIC8gZGl2LFxuICAgICAgICB5MDogKEEgKiAoLUIgKiB4ICsgQSAqIHkpIC0gQiAqIEMpIC8gZGl2LFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICAvL0B0cy1pZ25vcmVcbiAgY29uc3QgeyBpbmRleCwgeDAsIHkwIH0gPSBtaW5Qb2ludEluZm87XG4gIGNvbnN0IFt4MSwgeTEsIHoxID0gMF0gPSBwcm9qZWN0ZWRDb29yZHNbaW5kZXggLSAxXTtcbiAgY29uc3QgW3gyLCB5MiwgejIgPSAwXSA9IHByb2plY3RlZENvb3Jkc1tpbmRleF07XG5cbiAgLy8gY2FsY3VsYXRlIHdoYXQgcmF0aW8gb2YgdGhlIGxpbmUgd2UgYXJlIG9uIHRvIGZpbmQgdGhlIHByb3BlciB6XG4gIGNvbnN0IGxpbmVMZW5ndGggPSBkaXN0YW5jZTJkKHgxLCB5MSwgeDIsIHkyKTtcbiAgY29uc3Qgc3RhcnRUb1BvaW50TGVuZ3RoID0gZGlzdGFuY2UyZCh4MSwgeTEsIHgwLCB5MCk7XG4gIGNvbnN0IHJhdGlvID0gc3RhcnRUb1BvaW50TGVuZ3RoIC8gbGluZUxlbmd0aDtcbiAgY29uc3QgejAgPSBtaXgoejEsIHoyLCByYXRpbyk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgZ2VvbWV0cnk6IHtcbiAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICBjb29yZGluYXRlczogd21WaWV3cG9ydC51bnByb2plY3QoW3gwLCB5MCwgejBdKSxcbiAgICB9LFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC8vIFRPRE86IGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgaW4gcHJvcGVyIHVuaXRzXG4gICAgICBkaXN0OiBtaW5EaXN0YW5jZSxcbiAgICAgIGluZGV4OiBpbmRleCAtIDEsXG4gICAgfSxcbiAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist-es6/index.js b/modules/main/dist-es6/index.js new file mode 100644 index 000000000..a7bb04e40 --- /dev/null +++ b/modules/main/dist-es6/index.js @@ -0,0 +1,320 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ArrowStyles", { + enumerable: true, + get: function get() { + return _style.ArrowStyles; + } +}); +Object.defineProperty(exports, "DEFAULT_ARROWS", { + enumerable: true, + get: function get() { + return _style.DEFAULT_ARROWS; + } +}); +Object.defineProperty(exports, "MAX_ARROWS", { + enumerable: true, + get: function get() { + return _style.MAX_ARROWS; + } +}); +Object.defineProperty(exports, "SELECTION_TYPE", { + enumerable: true, + get: function get() { + return _deckDrawer.SELECTION_TYPE; + } +}); +Object.defineProperty(exports, "Feature", { + enumerable: true, + get: function get() { + return _feature["default"]; + } +}); +Object.defineProperty(exports, "LayerMouseEvent", { + enumerable: true, + get: function get() { + return _layerMouseEvent["default"]; + } +}); +Object.defineProperty(exports, "NebulaLayer", { + enumerable: true, + get: function get() { + return _nebulaLayer["default"]; + } +}); +Object.defineProperty(exports, "JunctionsLayer", { + enumerable: true, + get: function get() { + return _junctionsLayer["default"]; + } +}); +Object.defineProperty(exports, "TextsLayer", { + enumerable: true, + get: function get() { + return _textsLayer["default"]; + } +}); +Object.defineProperty(exports, "SegmentsLayer", { + enumerable: true, + get: function get() { + return _segmentsLayer["default"]; + } +}); +Object.defineProperty(exports, "NebulaCore", { + enumerable: true, + get: function get() { + return _nebula["default"]; + } +}); +Object.defineProperty(exports, "toDeckColor", { + enumerable: true, + get: function get() { + return _utils.toDeckColor; + } +}); +Object.defineProperty(exports, "EditableGeoJsonLayer", { + enumerable: true, + get: function get() { + return _layers.EditableGeoJsonLayer; + } +}); +Object.defineProperty(exports, "SelectionLayer", { + enumerable: true, + get: function get() { + return _layers.SelectionLayer; + } +}); +Object.defineProperty(exports, "ElevatedEditHandleLayer", { + enumerable: true, + get: function get() { + return _layers.ElevatedEditHandleLayer; + } +}); +Object.defineProperty(exports, "PathOutlineLayer", { + enumerable: true, + get: function get() { + return _layers.PathOutlineLayer; + } +}); +Object.defineProperty(exports, "PathMarkerLayer", { + enumerable: true, + get: function get() { + return _layers.PathMarkerLayer; + } +}); +Object.defineProperty(exports, "GeoJsonEditMode", { + enumerable: true, + get: function get() { + return _editModes.GeoJsonEditMode; + } +}); +Object.defineProperty(exports, "ModifyMode", { + enumerable: true, + get: function get() { + return _editModes.ModifyMode; + } +}); +Object.defineProperty(exports, "ResizeCircleMode", { + enumerable: true, + get: function get() { + return _editModes.ResizeCircleMode; + } +}); +Object.defineProperty(exports, "TranslateMode", { + enumerable: true, + get: function get() { + return _editModes.TranslateMode; + } +}); +Object.defineProperty(exports, "ScaleMode", { + enumerable: true, + get: function get() { + return _editModes.ScaleMode; + } +}); +Object.defineProperty(exports, "RotateMode", { + enumerable: true, + get: function get() { + return _editModes.RotateMode; + } +}); +Object.defineProperty(exports, "DuplicateMode", { + enumerable: true, + get: function get() { + return _editModes.DuplicateMode; + } +}); +Object.defineProperty(exports, "ExtendLineStringMode", { + enumerable: true, + get: function get() { + return _editModes.ExtendLineStringMode; + } +}); +Object.defineProperty(exports, "SplitPolygonMode", { + enumerable: true, + get: function get() { + return _editModes.SplitPolygonMode; + } +}); +Object.defineProperty(exports, "ExtrudeMode", { + enumerable: true, + get: function get() { + return _editModes.ExtrudeMode; + } +}); +Object.defineProperty(exports, "ElevationMode", { + enumerable: true, + get: function get() { + return _editModes.ElevationMode; + } +}); +Object.defineProperty(exports, "TransformMode", { + enumerable: true, + get: function get() { + return _editModes.TransformMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _editModes.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _editModes.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawSquareFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawSquareFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawEllipseByBoundingBoxMode", { + enumerable: true, + get: function get() { + return _editModes.DrawEllipseByBoundingBoxMode; + } +}); +Object.defineProperty(exports, "DrawEllipseUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _editModes.DrawEllipseUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "DrawRectangleUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _editModes.DrawRectangleUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "Draw90DegreePolygonMode", { + enumerable: true, + get: function get() { + return _editModes.Draw90DegreePolygonMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPolygonByDraggingMode; + } +}); +Object.defineProperty(exports, "ImmutableFeatureCollection", { + enumerable: true, + get: function get() { + return _editModes.ImmutableFeatureCollection; + } +}); +Object.defineProperty(exports, "ViewMode", { + enumerable: true, + get: function get() { + return _editModes.ViewMode; + } +}); +Object.defineProperty(exports, "MeasureDistanceMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureDistanceMode; + } +}); +Object.defineProperty(exports, "MeasureAreaMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureAreaMode; + } +}); +Object.defineProperty(exports, "MeasureAngleMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureAngleMode; + } +}); +Object.defineProperty(exports, "CompositeMode", { + enumerable: true, + get: function get() { + return _editModes.CompositeMode; + } +}); +Object.defineProperty(exports, "SnappableMode", { + enumerable: true, + get: function get() { + return _editModes.SnappableMode; + } +}); + +var _style = require("./lib/style"); + +var _deckDrawer = require("./lib/deck-renderer/deck-drawer"); + +var _feature = _interopRequireDefault(require("./lib/feature")); + +var _layerMouseEvent = _interopRequireDefault(require("./lib/layer-mouse-event")); + +var _nebulaLayer = _interopRequireDefault(require("./lib/nebula-layer")); + +var _junctionsLayer = _interopRequireDefault(require("./lib/layers/junctions-layer")); + +var _textsLayer = _interopRequireDefault(require("./lib/layers/texts-layer")); + +var _segmentsLayer = _interopRequireDefault(require("./lib/layers/segments-layer")); + +var _nebula = _interopRequireDefault(require("./lib/nebula")); + +var _utils = require("./lib/utils"); + +var _layers = require("@nebula.gl/layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFNQTs7QUFPQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vbGliL3N0eWxlJztcbmV4cG9ydCB7IFNFTEVDVElPTl9UWVBFIH0gZnJvbSAnLi9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmVhdHVyZSB9IGZyb20gJy4vbGliL2ZlYXR1cmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMYXllck1vdXNlRXZlbnQgfSBmcm9tICcuL2xpYi9sYXllci1tb3VzZS1ldmVudCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhTGF5ZXIgfSBmcm9tICcuL2xpYi9uZWJ1bGEtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvbnNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9qdW5jdGlvbnMtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0c0xheWVyIH0gZnJvbSAnLi9saWIvbGF5ZXJzL3RleHRzLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VnbWVudHNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9zZWdtZW50cy1sYXllcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhQ29yZSB9IGZyb20gJy4vbGliL25lYnVsYSc7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHsgQ29sb3IsIFN0eWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIE1vdmVkIHRvIEBuZWJ1bGEuZ2wvbGF5ZXJzXG5leHBvcnQgeyBFZGl0YWJsZUdlb0pzb25MYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmV4cG9ydCB7IFNlbGVjdGlvbkxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuZXhwb3J0IHsgRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIgfSBmcm9tICdAbmVidWxhLmdsL2xheWVycyc7XG5leHBvcnQgeyBQYXRoT3V0bGluZUxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuZXhwb3J0IHsgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuXG5leHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIEFsdGVyIG1vZGVzXG5leHBvcnQgeyBNb2RpZnlNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFJlc2l6ZUNpcmNsZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgVHJhbnNsYXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEV4dGVuZExpbmVTdHJpbmdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFNwbGl0UG9seWdvbk1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRXh0cnVkZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRWxldmF0aW9uTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuLy8gRHJhdyBtb2Rlc1xuZXhwb3J0IHsgRHJhd1BvaW50TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3TGluZVN0cmluZ01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25Nb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBNZWFzdXJlQW5nbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IENvbXBvc2l0ZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgU25hcHBhYmxlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/lib/deck-renderer/deck-cache.js b/modules/main/dist-es6/lib/deck-renderer/deck-cache.js new file mode 100644 index 000000000..2e8492526 --- /dev/null +++ b/modules/main/dist-es6/lib/deck-renderer/deck-cache.js @@ -0,0 +1,101 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 DeckCache = /*#__PURE__*/function () { + function DeckCache(getData, convert) { + _classCallCheck(this, DeckCache); + + _defineProperty(this, "objects", void 0); + + _defineProperty(this, "originals", void 0); + + _defineProperty(this, "updateTrigger", void 0); + + _defineProperty(this, "_idToPosition", void 0); + + _defineProperty(this, "_getData", void 0); + + _defineProperty(this, "_convert", void 0); + + this.objects = []; + this.originals = []; + this.updateTrigger = 0; + this._idToPosition = new Map(); + this._getData = getData; + this._convert = convert; + } + + _createClass(DeckCache, [{ + key: "updateAllDeckObjects", + value: function updateAllDeckObjects() { + var _this = this; + + if (!this._getData || !this._convert) return; + this.originals.length = 0; + this.objects.length = 0; + + this._idToPosition.clear(); + + this._getData().forEach(function (d) { + _this._idToPosition.set(d.id, _this.objects.length); + + _this.originals.push(d); + + _this.objects.push(_this._convert(d)); + }); + + this.triggerUpdate(); + } + }, { + key: "updateDeckObjectsByIds", + value: function updateDeckObjectsByIds(ids) { + var _this2 = this; + + if (!this._getData || !this._convert) return; + ids.forEach(function (id) { + var p = _this2._idToPosition.get(id); + + if (p !== undefined) { + _this2.objects[p] = _this2._convert(_this2.originals[p]); + } + }); + this.triggerUpdate(); + } + }, { + key: "triggerUpdate", + value: function triggerUpdate() { + this.updateTrigger++; + } + }, { + key: "getDeckObjectById", + value: function getDeckObjectById(id) { + var p = this._idToPosition.get(id); + + return p !== undefined ? this.objects[p] : null; + } + }, { + key: "getOriginalById", + value: function getOriginalById(id) { + var p = this._idToPosition.get(id); + + return p !== undefined ? this.originals[p] : null; + } + }]); + + return DeckCache; +}(); + +exports["default"] = DeckCache; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlLnRzIl0sIm5hbWVzIjpbIkRlY2tDYWNoZSIsImdldERhdGEiLCJjb252ZXJ0Iiwib2JqZWN0cyIsIm9yaWdpbmFscyIsInVwZGF0ZVRyaWdnZXIiLCJfaWRUb1Bvc2l0aW9uIiwiTWFwIiwiX2dldERhdGEiLCJfY29udmVydCIsImxlbmd0aCIsImNsZWFyIiwiZm9yRWFjaCIsImQiLCJzZXQiLCJpZCIsInB1c2giLCJ0cmlnZ2VyVXBkYXRlIiwiaWRzIiwicCIsImdldCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQXFCQSxTO0FBUW5CLHFCQUFZQyxPQUFaLEVBQW9DQyxPQUFwQyxFQUFxRTtBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUNuRSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLENBQXJCO0FBRUEsU0FBS0MsYUFBTCxHQUFxQixJQUFJQyxHQUFKLEVBQXJCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQlAsT0FBaEI7QUFDQSxTQUFLUSxRQUFMLEdBQWdCUCxPQUFoQjtBQUNEOzs7OzJDQUVzQjtBQUFBOztBQUNyQixVQUFJLENBQUMsS0FBS00sUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDLFdBQUtMLFNBQUwsQ0FBZU0sTUFBZixHQUF3QixDQUF4QjtBQUNBLFdBQUtQLE9BQUwsQ0FBYU8sTUFBYixHQUFzQixDQUF0Qjs7QUFDQSxXQUFLSixhQUFMLENBQW1CSyxLQUFuQjs7QUFFQSxXQUFLSCxRQUFMLEdBQWdCSSxPQUFoQixDQUF3QixVQUFDQyxDQUFELEVBQU87QUFDN0IsUUFBQSxLQUFJLENBQUNQLGFBQUwsQ0FBbUJRLEdBQW5CLENBQXdCRCxDQUFELENBQVdFLEVBQWxDLEVBQXNDLEtBQUksQ0FBQ1osT0FBTCxDQUFhTyxNQUFuRDs7QUFDQSxRQUFBLEtBQUksQ0FBQ04sU0FBTCxDQUFlWSxJQUFmLENBQW9CSCxDQUFwQjs7QUFDQSxRQUFBLEtBQUksQ0FBQ1YsT0FBTCxDQUFhYSxJQUFiLENBQWtCLEtBQUksQ0FBQ1AsUUFBTCxDQUFjSSxDQUFkLENBQWxCO0FBQ0QsT0FKRDs7QUFNQSxXQUFLSSxhQUFMO0FBQ0Q7OzsyQ0FFc0JDLEcsRUFBZTtBQUFBOztBQUNwQyxVQUFJLENBQUMsS0FBS1YsUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDUyxNQUFBQSxHQUFHLENBQUNOLE9BQUosQ0FBWSxVQUFDRyxFQUFELEVBQVE7QUFDbEIsWUFBTUksQ0FBQyxHQUFHLE1BQUksQ0FBQ2IsYUFBTCxDQUFtQmMsR0FBbkIsQ0FBdUJMLEVBQXZCLENBQVY7O0FBQ0EsWUFBSUksQ0FBQyxLQUFLRSxTQUFWLEVBQXFCO0FBQ25CLFVBQUEsTUFBSSxDQUFDbEIsT0FBTCxDQUFhZ0IsQ0FBYixJQUFrQixNQUFJLENBQUNWLFFBQUwsQ0FBYyxNQUFJLENBQUNMLFNBQUwsQ0FBZWUsQ0FBZixDQUFkLENBQWxCO0FBQ0Q7QUFDRixPQUxEO0FBT0EsV0FBS0YsYUFBTDtBQUNEOzs7b0NBRWU7QUFDZCxXQUFLWixhQUFMO0FBQ0Q7OztzQ0FFaUJVLEUsRUFBc0M7QUFDdEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLbEIsT0FBTCxDQUFhZ0IsQ0FBYixDQUFsQixHQUFvQyxJQUEzQztBQUNEOzs7b0NBRWVKLEUsRUFBc0M7QUFDcEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLakIsU0FBTCxDQUFlZSxDQUFmLENBQWxCLEdBQXNDLElBQTdDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBEZWNrQ2FjaGU8VE9SSUcsIFRDT05WPiB7XG4gIG9iamVjdHM6IFRDT05WW107XG4gIG9yaWdpbmFsczogVE9SSUdbXTtcbiAgdXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xuICBfaWRUb1Bvc2l0aW9uOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICBfZ2V0RGF0YTogKCkgPT4gVE9SSUdbXTtcbiAgX2NvbnZlcnQ6IChhcmcwOiBUT1JJRykgPT4gVENPTlY7XG5cbiAgY29uc3RydWN0b3IoZ2V0RGF0YTogKCkgPT4gVE9SSUdbXSwgY29udmVydDogKGFyZzA6IFRPUklHKSA9PiBUQ09OVikge1xuICAgIHRoaXMub2JqZWN0cyA9IFtdO1xuICAgIHRoaXMub3JpZ2luYWxzID0gW107XG4gICAgdGhpcy51cGRhdGVUcmlnZ2VyID0gMDtcblxuICAgIHRoaXMuX2lkVG9Qb3NpdGlvbiA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9nZXREYXRhID0gZ2V0RGF0YTtcbiAgICB0aGlzLl9jb252ZXJ0ID0gY29udmVydDtcbiAgfVxuXG4gIHVwZGF0ZUFsbERlY2tPYmplY3RzKCkge1xuICAgIGlmICghdGhpcy5fZ2V0RGF0YSB8fCAhdGhpcy5fY29udmVydCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vcmlnaW5hbHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLm9iamVjdHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLl9pZFRvUG9zaXRpb24uY2xlYXIoKTtcblxuICAgIHRoaXMuX2dldERhdGEoKS5mb3JFYWNoKChkKSA9PiB7XG4gICAgICB0aGlzLl9pZFRvUG9zaXRpb24uc2V0KChkIGFzIGFueSkuaWQsIHRoaXMub2JqZWN0cy5sZW5ndGgpO1xuICAgICAgdGhpcy5vcmlnaW5hbHMucHVzaChkKTtcbiAgICAgIHRoaXMub2JqZWN0cy5wdXNoKHRoaXMuX2NvbnZlcnQoZCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmlnZ2VyVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICBpZiAoIXRoaXMuX2dldERhdGEgfHwgIXRoaXMuX2NvbnZlcnQpIHJldHVybjtcblxuICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMuX2lkVG9Qb3NpdGlvbi5nZXQoaWQpO1xuICAgICAgaWYgKHAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm9iamVjdHNbcF0gPSB0aGlzLl9jb252ZXJ0KHRoaXMub3JpZ2luYWxzW3BdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJpZ2dlclVwZGF0ZSgpO1xuICB9XG5cbiAgdHJpZ2dlclVwZGF0ZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRyaWdnZXIrKztcbiAgfVxuXG4gIGdldERlY2tPYmplY3RCeUlkKGlkOiBzdHJpbmcpOiBUQ09OViB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHAgPSB0aGlzLl9pZFRvUG9zaXRpb24uZ2V0KGlkKTtcbiAgICByZXR1cm4gcCAhPT0gdW5kZWZpbmVkID8gdGhpcy5vYmplY3RzW3BdIDogbnVsbDtcbiAgfVxuXG4gIGdldE9yaWdpbmFsQnlJZChpZDogc3RyaW5nKTogVE9SSUcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwID0gdGhpcy5faWRUb1Bvc2l0aW9uLmdldChpZCk7XG4gICAgcmV0dXJuIHAgIT09IHVuZGVmaW5lZCA/IHRoaXMub3JpZ2luYWxzW3BdIDogbnVsbDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist-es6/lib/deck-renderer/deck-drawer.js b/modules/main/dist-es6/lib/deck-renderer/deck-drawer.js new file mode 100644 index 000000000..405b03e12 --- /dev/null +++ b/modules/main/dist-es6/lib/deck-renderer/deck-drawer.js @@ -0,0 +1,374 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = exports.SELECTION_TYPE = void 0; + +var _layers = require("@deck.gl/layers"); + +var _helpers = require("@turf/helpers"); + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 POLYGON_LINE_COLOR = [0, 255, 0, 255]; +var POLYGON_FILL_COLOR = [255, 255, 255, 90]; +var POLYGON_LINE_WIDTH = 2; +var POLYGON_DASHES = [20, 20]; +var POLYGON_THRESHOLD = 0.01; +var EXPANSION_KM = 10; +var LAYER_ID_VIEW = 'DeckDrawerView'; +var LAYER_ID_PICK = 'DeckDrawerPick'; +var SELECTION_TYPE = { + NONE: null, + RECTANGLE: 'rectangle', + POLYGON: 'polygon' +}; +exports.SELECTION_TYPE = SELECTION_TYPE; + +var DeckDrawer = /*#__PURE__*/function () { + function DeckDrawer(nebula) { + _classCallCheck(this, DeckDrawer); + + _defineProperty(this, "nebula", void 0); + + _defineProperty(this, "usePolygon", void 0); + + _defineProperty(this, "validPolygon", void 0); + + _defineProperty(this, "landPoints", void 0); + + _defineProperty(this, "mousePoints", void 0); + + this.nebula = nebula; + this.usePolygon = false; + this.landPoints = []; + this.mousePoints = []; + } + + _createClass(DeckDrawer, [{ + key: "_getLayerIds", + value: function _getLayerIds() { + // TODO: sort by mouse priority + return this.nebula.deckgl.props.layers.filter(function (l) { + return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection; + }).map(function (l) { + return l.id; + }); + } + }, { + key: "_selectFromPickingInfos", + value: function _selectFromPickingInfos(pickingInfos) { + var objects = pickingInfos.map(function (_ref) { + var layer = _ref.layer, + index = _ref.index, + object = _ref.object; + return object.original || layer.props.nebulaLayer.deckCache.originals[index]; + }); + this.nebula.props.onSelection(objects); + } + }, { + key: "_getBoundingBox", + value: function _getBoundingBox() { + var mousePoints = this.mousePoints; + var allX = mousePoints.map(function (mousePoint) { + return mousePoint[0]; + }); + var allY = mousePoints.map(function (mousePoint) { + return mousePoint[1]; + }); + var x = Math.min.apply(Math, _toConsumableArray(allX)); + var y = Math.min.apply(Math, _toConsumableArray(allY)); + var maxX = Math.max.apply(Math, _toConsumableArray(allX)); + var maxY = Math.max.apply(Math, _toConsumableArray(allY)); + return { + x: x, + y: y, + width: maxX - x, + height: maxY - y + }; + } + }, { + key: "_selectRectangleObjects", + value: function _selectRectangleObjects() { + if (this.landPoints.length !== 2) return; + + var _this$mousePoints$ = _slicedToArray(this.mousePoints[0], 2), + x1 = _this$mousePoints$[0], + y1 = _this$mousePoints$[1]; + + var _this$mousePoints$2 = _slicedToArray(this.mousePoints[1], 2), + x2 = _this$mousePoints$2[0], + y2 = _this$mousePoints$2[1]; + + var pickingInfos = this.nebula.deckgl.pickObjects({ + x: Math.min(x1, x2), + y: Math.min(y1, y2), + width: Math.abs(x2 - x1), + height: Math.abs(y2 - y1), + layerIds: this._getLayerIds() + }); + + this._selectFromPickingInfos(pickingInfos); + } + }, { + key: "_selectPolygonObjects", + value: function _selectPolygonObjects() { + var pickingInfos = this.nebula.deckgl.pickObjects(_objectSpread({}, this._getBoundingBox(), { + layerIds: [LAYER_ID_PICK].concat(_toConsumableArray(this._getLayerIds())) + })); + + this._selectFromPickingInfos(pickingInfos.filter(function (item) { + return item.layer.id !== LAYER_ID_PICK; + })); + } + }, { + key: "_getMousePosFromEvent", + value: function _getMousePosFromEvent(event) { + var offsetX = event.offsetX, + offsetY = event.offsetY; + return [offsetX, offsetY]; + } + }, { + key: "handleEvent", + value: function handleEvent(event, lngLat, selectionType) { + // capture all events (mouse-up is needed to prevent us stuck in moving map) + if (event.type !== 'mouseup') event.stopPropagation(); // @ts-ignore + + this.usePolygon = selectionType === SELECTION_TYPE.POLYGON; + var redraw = false; + var deactivate = false; + var usePolygon = this.usePolygon, + landPoints = this.landPoints, + mousePoints = this.mousePoints; + + if (event.type === 'mousedown') { + if (usePolygon && landPoints.length) { + // if landPoints.length is zero we want to insert two points (so we let it run the else) + // also don't insert if polygon is invalid + if (this.landPoints.length < 3 || this.validPolygon) { + landPoints.push(lngLat); + mousePoints.push(this._getMousePosFromEvent(event)); + } + } else { + this.landPoints = [lngLat, lngLat]; + + var m = this._getMousePosFromEvent(event); + + this.mousePoints = [m, m]; + } + + redraw = true; + } else if (event.type === 'mousemove' && landPoints.length) { + // update last point + landPoints[landPoints.length - 1] = lngLat; + mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event); + redraw = true; + } else if (event.type === 'mouseup') { + if (usePolygon) { + // check to see if completed + // TODO: Maybe double-click to finish? + if (landPoints.length > 4 && (0, _distance["default"])(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD && this.validPolygon) { + this._selectPolygonObjects(); + + this.reset(); + redraw = true; + deactivate = true; + } + } else { + this._selectRectangleObjects(); + + this.reset(); + redraw = true; + deactivate = true; + } + } + + return { + redraw: redraw, + deactivate: deactivate + }; + } + }, { + key: "reset", + value: function reset() { + this.landPoints = []; + this.mousePoints = []; + } + }, { + key: "_makeStartPointHighlight", + value: function _makeStartPointHighlight(center) { + var buffer = (0, _buffer["default"])((0, _helpers.point)(center), POLYGON_THRESHOLD / 4.0); // @ts-ignore + + return (0, _bboxPolygon["default"])((0, _bbox["default"])(buffer)).geometry.coordinates; + } + }, { + key: "render", + value: function render() { + var _this = this; + + var data = []; + var dataPick = []; + + if (!this.usePolygon && this.landPoints.length === 2) { + // Use mouse points instead of land points so we get the right shape + // no matter what bearing is. + var _this$mousePoints = _slicedToArray(this.mousePoints, 2), + _this$mousePoints$3 = _slicedToArray(_this$mousePoints[0], 2), + x1 = _this$mousePoints$3[0], + y1 = _this$mousePoints$3[1], + _this$mousePoints$4 = _slicedToArray(_this$mousePoints[1], 2), + x2 = _this$mousePoints$4[0], + y2 = _this$mousePoints$4[1]; + + var selPolygon = [[x1, y1], [x1, y2], [x2, y2], [x2, y1], [x1, y1]].map(function (mousePos) { + return _this.nebula.unprojectMousePosition(mousePos); + }); + data.push({ + polygon: selPolygon, + lineColor: POLYGON_LINE_COLOR, + fillColor: POLYGON_FILL_COLOR + }); + } else if (this.usePolygon && this.landPoints.length) { + data.push({ + polygon: this.landPoints, + lineColor: POLYGON_LINE_COLOR, + fillColor: POLYGON_FILL_COLOR + }); // Hack: use a polygon to hide the outside, because pickObjects() + // does not support polygons + + if (this.landPoints.length >= 3) { + var landPointsPoly = (0, _helpers.polygon)([[].concat(_toConsumableArray(this.landPoints), [this.landPoints[0]])]); + var bigBuffer = (0, _buffer["default"])((0, _helpers.point)(this.landPoints[0]), EXPANSION_KM); + var bigPolygon; + + try { + // turfDifference throws an exception if the polygon + // intersects with itself + bigPolygon = (0, _difference["default"])(bigBuffer, landPointsPoly); + dataPick.push({ + polygon: bigPolygon.geometry.coordinates, + fillColor: [0, 0, 0, 1] + }); + this.validPolygon = true; + } catch (e) { + // invalid selection polygon + this.validPolygon = false; + } + } + } + + if (this.landPoints.length) { + // highlight start point + data.push({ + polygon: this._makeStartPointHighlight(this.landPoints[0]), + lineColor: [0, 0, 0, 0], + fillColor: POLYGON_LINE_COLOR + }); + } // Hack to make the PolygonLayer() stay active, + // otherwise it takes 3 seconds (!) to init! + // TODO: fix this + + + data.push({ + polygon: [[0, 0]] + }); + dataPick.push({ + polygon: [[0, 0]] + }); + return [new _layers.PolygonLayer({ + id: LAYER_ID_VIEW, + data: data, + // @ts-ignore + fp64: false, + opacity: 1.0, + pickable: false, + lineWidthMinPixels: POLYGON_LINE_WIDTH, + lineWidthMaxPixels: POLYGON_LINE_WIDTH, + lineDashJustified: true, + getLineDashArray: function getLineDashArray(x) { + return POLYGON_DASHES; + }, + // @ts-ignore + getLineColor: function getLineColor(obj) { + return obj.lineColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getFillColor: function getFillColor(obj) { + return obj.fillColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getPolygon: function getPolygon(o) { + return o.polygon; + } + }), new _layers.PolygonLayer({ + id: LAYER_ID_PICK, + data: dataPick, + // @ts-ignore + getLineColor: function getLineColor(obj) { + return obj.lineColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getFillColor: function getFillColor(obj) { + return obj.fillColor || [0, 0, 0, 255]; + }, + // @ts-ignore + fp64: false, + opacity: 1.0, + stroked: false, + pickable: true, + // @ts-ignore + getPolygon: function getPolygon(o) { + return o.polygon; + } + })]; + } + }]); + + return DeckDrawer; +}(); + +exports["default"] = DeckDrawer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlci50cyJdLCJuYW1lcyI6WyJQT0xZR09OX0xJTkVfQ09MT1IiLCJQT0xZR09OX0ZJTExfQ09MT1IiLCJQT0xZR09OX0xJTkVfV0lEVEgiLCJQT0xZR09OX0RBU0hFUyIsIlBPTFlHT05fVEhSRVNIT0xEIiwiRVhQQU5TSU9OX0tNIiwiTEFZRVJfSURfVklFVyIsIkxBWUVSX0lEX1BJQ0siLCJTRUxFQ1RJT05fVFlQRSIsIk5PTkUiLCJSRUNUQU5HTEUiLCJQT0xZR09OIiwiRGVja0RyYXdlciIsIm5lYnVsYSIsInVzZVBvbHlnb24iLCJsYW5kUG9pbnRzIiwibW91c2VQb2ludHMiLCJkZWNrZ2wiLCJwcm9wcyIsImxheWVycyIsImZpbHRlciIsImwiLCJuZWJ1bGFMYXllciIsImVuYWJsZVNlbGVjdGlvbiIsIm1hcCIsImlkIiwicGlja2luZ0luZm9zIiwib2JqZWN0cyIsImxheWVyIiwiaW5kZXgiLCJvYmplY3QiLCJvcmlnaW5hbCIsImRlY2tDYWNoZSIsIm9yaWdpbmFscyIsIm9uU2VsZWN0aW9uIiwiYWxsWCIsIm1vdXNlUG9pbnQiLCJhbGxZIiwieCIsIk1hdGgiLCJtaW4iLCJ5IiwibWF4WCIsIm1heCIsIm1heFkiLCJ3aWR0aCIsImhlaWdodCIsImxlbmd0aCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja09iamVjdHMiLCJhYnMiLCJsYXllcklkcyIsIl9nZXRMYXllcklkcyIsIl9zZWxlY3RGcm9tUGlja2luZ0luZm9zIiwiX2dldEJvdW5kaW5nQm94IiwiaXRlbSIsImV2ZW50Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJsbmdMYXQiLCJzZWxlY3Rpb25UeXBlIiwidHlwZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZHJhdyIsImRlYWN0aXZhdGUiLCJ2YWxpZFBvbHlnb24iLCJwdXNoIiwiX2dldE1vdXNlUG9zRnJvbUV2ZW50IiwibSIsIl9zZWxlY3RQb2x5Z29uT2JqZWN0cyIsInJlc2V0IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJjZW50ZXIiLCJidWZmZXIiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZGF0YSIsImRhdGFQaWNrIiwic2VsUG9seWdvbiIsIm1vdXNlUG9zIiwidW5wcm9qZWN0TW91c2VQb3NpdGlvbiIsInBvbHlnb24iLCJsaW5lQ29sb3IiLCJmaWxsQ29sb3IiLCJsYW5kUG9pbnRzUG9seSIsImJpZ0J1ZmZlciIsImJpZ1BvbHlnb24iLCJlIiwiX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0IiwiUG9seWdvbkxheWVyIiwiZnA2NCIsIm9wYWNpdHkiLCJwaWNrYWJsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImxpbmVEYXNoSnVzdGlmaWVkIiwiZ2V0TGluZURhc2hBcnJheSIsImdldExpbmVDb2xvciIsIm9iaiIsImdldEZpbGxDb2xvciIsImdldFBvbHlnb24iLCJvIiwic3Ryb2tlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxDQUFDLENBQUQsRUFBSSxHQUFKLEVBQVMsQ0FBVCxFQUFZLEdBQVosQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixFQUFoQixDQUEzQjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLENBQTNCO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBdkI7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLElBQU1DLFlBQVksR0FBRyxFQUFyQjtBQUNBLElBQU1DLGFBQWEsR0FBRyxnQkFBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsZ0JBQXRCO0FBRU8sSUFBTUMsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJ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aUJBQU9BLENBQUMsQ0FBQ3BCLE9BQVQ7QUFBQTtBQWhCRyxPQUFqQixDQURLLEVBbUJMLElBQUlRLG9CQUFKLENBQWlCO0FBQ2ZuRSxRQUFBQSxFQUFFLEVBQUVsQixhQURXO0FBRWZ3RSxRQUFBQSxJQUFJLEVBQUVDLFFBRlM7QUFHZjtBQUNBb0IsUUFBQUEsWUFBWSxFQUFFLHNCQUFDQyxHQUFEO0FBQUEsaUJBQVNBLEdBQUcsQ0FBQ2hCLFNBQUosSUFBaUIsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxHQUFWLENBQTFCO0FBQUEsU0FKQztBQUtmO0FBQ0FpQixRQUFBQSxZQUFZLEVBQUUsc0JBQUNELEdBQUQ7QUFBQSxpQkFBU0EsR0FBRyxDQUFDZixTQUFKLElBQWlCLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUExQjtBQUFBLFNBTkM7QUFPZjtBQUNBTyxRQUFBQSxJQUFJLEVBQUUsS0FSUztBQVNmQyxRQUFBQSxPQUFPLEVBQUUsR0FUTTtBQVVmVyxRQUFBQSxPQUFPLEVBQUUsS0FWTTtBQVdmVixRQUFBQSxRQUFRLEVBQUUsSUFYSztBQVlmO0FBQ0FRLFFBQUFBLFVBQVUsRUFBRSxvQkFBQ0MsQ0FBRDtBQUFBLGlCQUFPQSxDQUFDLENBQUNwQixPQUFUO0FBQUE7QUFiRyxPQUFqQixDQW5CSyxDQUFQO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9seWdvbkxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7IHBvaW50LCBwb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZkJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5cbmNvbnN0IFBPTFlHT05fTElORV9DT0xPUiA9IFswLCAyNTUsIDAsIDI1NV07XG5jb25zdCBQT0xZR09OX0ZJTExfQ09MT1IgPSBbMjU1LCAyNTUsIDI1NSwgOTBdO1xuY29uc3QgUE9MWUdPTl9MSU5FX1dJRFRIID0gMjtcbmNvbnN0IFBPTFlHT05fREFTSEVTID0gWzIwLCAyMF07XG5jb25zdCBQT0xZR09OX1RIUkVTSE9MRCA9IDAuMDE7XG5jb25zdCBFWFBBTlNJT05fS00gPSAxMDtcbmNvbnN0IExBWUVSX0lEX1ZJRVcgPSAnRGVja0RyYXdlclZpZXcnO1xuY29uc3QgTEFZRVJfSURfUElDSyA9ICdEZWNrRHJhd2VyUGljayc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fVFlQRSA9IHtcbiAgTk9ORTogbnVsbCxcbiAgUkVDVEFOR0xFOiAncmVjdGFuZ2xlJyxcbiAgUE9MWUdPTjogJ3BvbHlnb24nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVja0RyYXdlciB7XG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgdXNlUG9seWdvbjogYm9vbGVhbjtcbiAgdmFsaWRQb2x5Z29uOiBib29sZWFuO1xuICBsYW5kUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG4gIG1vdXNlUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG5cbiAgY29uc3RydWN0b3IobmVidWxhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy51c2VQb2x5Z29uID0gZmFsc2U7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX2dldExheWVySWRzKCkge1xuICAgIC8vIFRPRE86IHNvcnQgYnkgbW91c2UgcHJpb3JpdHlcbiAgICByZXR1cm4gdGhpcy5uZWJ1bGEuZGVja2dsLnByb3BzLmxheWVyc1xuICAgICAgLmZpbHRlcigobCkgPT4gbCAmJiBsLnByb3BzICYmIGwucHJvcHMubmVidWxhTGF5ZXIgJiYgbC5wcm9wcy5uZWJ1bGFMYXllci5lbmFibGVTZWxlY3Rpb24pXG4gICAgICAubWFwKChsKSA9PiBsLmlkKTtcbiAgfVxuXG4gIF9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvczogUmVjb3JkPHN0cmluZywgYW55PltdKSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IHBpY2tpbmdJbmZvcy5tYXAoXG4gICAgICAoeyBsYXllciwgaW5kZXgsIG9iamVjdCB9KSA9PlxuICAgICAgICBvYmplY3Qub3JpZ2luYWwgfHwgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZGVja0NhY2hlLm9yaWdpbmFsc1tpbmRleF1cbiAgICApO1xuICAgIHRoaXMubmVidWxhLnByb3BzLm9uU2VsZWN0aW9uKG9iamVjdHMpO1xuICB9XG5cbiAgX2dldEJvdW5kaW5nQm94KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHsgbW91c2VQb2ludHMgfSA9IHRoaXM7XG4gICAgY29uc3QgYWxsWCA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFswXSk7XG4gICAgY29uc3QgYWxsWSA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFsxXSk7XG4gICAgY29uc3QgeCA9IE1hdGgubWluKC4uLmFsbFgpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1pbiguLi5hbGxZKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4uYWxsWCk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLmFsbFkpO1xuXG4gICAgcmV0dXJuIHsgeCwgeSwgd2lkdGg6IG1heFggLSB4LCBoZWlnaHQ6IG1heFkgLSB5IH07XG4gIH1cblxuICBfc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpIHtcbiAgICBpZiAodGhpcy5sYW5kUG9pbnRzLmxlbmd0aCAhPT0gMikgcmV0dXJuO1xuXG4gICAgY29uc3QgW3gxLCB5MV0gPSB0aGlzLm1vdXNlUG9pbnRzWzBdO1xuICAgIGNvbnN0IFt4MiwgeTJdID0gdGhpcy5tb3VzZVBvaW50c1sxXTtcbiAgICBjb25zdCBwaWNraW5nSW5mb3MgPSB0aGlzLm5lYnVsYS5kZWNrZ2wucGlja09iamVjdHMoe1xuICAgICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpLFxuICAgICAgbGF5ZXJJZHM6IHRoaXMuX2dldExheWVySWRzKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvcyk7XG4gIH1cblxuICBfc2VsZWN0UG9seWdvbk9iamVjdHMoKSB7XG4gICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5uZWJ1bGEuZGVja2dsLnBpY2tPYmplY3RzKHtcbiAgICAgIC4uLnRoaXMuX2dldEJvdW5kaW5nQm94KCksXG4gICAgICBsYXllcklkczogW0xBWUVSX0lEX1BJQ0ssIC4uLnRoaXMuX2dldExheWVySWRzKCldLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0RnJvbVBpY2tpbmdJbmZvcyhwaWNraW5nSW5mb3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxheWVyLmlkICE9PSBMQVlFUl9JRF9QSUNLKSk7XG4gIH1cblxuICBfZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCB7IG9mZnNldFgsIG9mZnNldFkgfSA9IGV2ZW50O1xuICAgIHJldHVybiBbb2Zmc2V0WCwgb2Zmc2V0WV07XG4gIH1cblxuICBoYW5kbGVFdmVudChcbiAgICBldmVudDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBsbmdMYXQ6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgc2VsZWN0aW9uVHlwZTogbnVtYmVyXG4gICk6IHsgcmVkcmF3OiBib29sZWFuOyBkZWFjdGl2YXRlOiBib29sZWFuIH0ge1xuICAgIC8vIGNhcHR1cmUgYWxsIGV2ZW50cyAobW91c2UtdXAgaXMgbmVlZGVkIHRvIHByZXZlbnQgdXMgc3R1Y2sgaW4gbW92aW5nIG1hcClcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ21vdXNldXAnKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy51c2VQb2x5Z29uID0gc2VsZWN0aW9uVHlwZSA9PT0gU0VMRUNUSU9OX1RZUEUuUE9MWUdPTjtcblxuICAgIGxldCByZWRyYXcgPSBmYWxzZTtcbiAgICBsZXQgZGVhY3RpdmF0ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgeyB1c2VQb2x5Z29uLCBsYW5kUG9pbnRzLCBtb3VzZVBvaW50cyB9ID0gdGhpcztcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2Vkb3duJykge1xuICAgICAgaWYgKHVzZVBvbHlnb24gJiYgbGFuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gaWYgbGFuZFBvaW50cy5sZW5ndGggaXMgemVybyB3ZSB3YW50IHRvIGluc2VydCB0d28gcG9pbnRzIChzbyB3ZSBsZXQgaXQgcnVuIHRoZSBlbHNlKVxuICAgICAgICAvLyBhbHNvIGRvbid0IGluc2VydCBpZiBwb2x5Z29uIGlzIGludmFsaWRcbiAgICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPCAzIHx8IHRoaXMudmFsaWRQb2x5Z29uKSB7XG4gICAgICAgICAgbGFuZFBvaW50cy5wdXNoKGxuZ0xhdCk7XG4gICAgICAgICAgbW91c2VQb2ludHMucHVzaCh0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhbmRQb2ludHMgPSBbbG5nTGF0LCBsbmdMYXRdO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLm1vdXNlUG9pbnRzID0gW20sIG1dO1xuICAgICAgfVxuICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyB1cGRhdGUgbGFzdCBwb2ludFxuICAgICAgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdID0gbG5nTGF0O1xuICAgICAgbW91c2VQb2ludHNbbW91c2VQb2ludHMubGVuZ3RoIC0gMV0gPSB0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCk7XG4gICAgICByZWRyYXcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNldXAnKSB7XG4gICAgICBpZiAodXNlUG9seWdvbikge1xuICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgY29tcGxldGVkXG4gICAgICAgIC8vIFRPRE86IE1heWJlIGRvdWJsZS1jbGljayB0byBmaW5pc2g/XG4gICAgICAgIGlmIChcbiAgICAgICAgICBsYW5kUG9pbnRzLmxlbmd0aCA+IDQgJiZcbiAgICAgICAgICB0dXJmRGlzdGFuY2UobGFuZFBvaW50c1swXSwgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdKSA8IFBPTFlHT05fVEhSRVNIT0xEICYmXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0UG9seWdvbk9iamVjdHMoKTtcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgICBkZWFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHJlZHJhdyA9IHRydWU7XG4gICAgICAgIGRlYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHJlZHJhdywgZGVhY3RpdmF0ZSB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KGNlbnRlcjogW251bWJlciwgbnVtYmVyXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHBvaW50KGNlbnRlciksIFBPTFlHT05fVEhSRVNIT0xEIC8gNC4wKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHR1cmZCYm94UG9seWdvbih0dXJmQmJveChidWZmZXIpKS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgY29uc3QgZGF0YVBpY2sgPSBbXTtcblxuICAgIGlmICghdGhpcy51c2VQb2x5Z29uICYmIHRoaXMubGFuZFBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFVzZSBtb3VzZSBwb2ludHMgaW5zdGVhZCBvZiBsYW5kIHBvaW50cyBzbyB3ZSBnZXQgdGhlIHJpZ2h0IHNoYXBlXG4gICAgICAvLyBubyBtYXR0ZXIgd2hhdCBiZWFyaW5nIGlzLlxuICAgICAgY29uc3QgW1t4MSwgeTFdLCBbeDIsIHkyXV0gPSB0aGlzLm1vdXNlUG9pbnRzO1xuICAgICAgY29uc3Qgc2VsUG9seWdvbiA9IFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFt4MSwgeTJdLFxuICAgICAgICBbeDIsIHkyXSxcbiAgICAgICAgW3gyLCB5MV0sXG4gICAgICAgIFt4MSwgeTFdLFxuICAgICAgXS5tYXAoKG1vdXNlUG9zKSA9PiB0aGlzLm5lYnVsYS51bnByb2plY3RNb3VzZVBvc2l0aW9uKG1vdXNlUG9zKSk7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiBzZWxQb2x5Z29uLFxuICAgICAgICBsaW5lQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgICAgZmlsbENvbG9yOiBQT0xZR09OX0ZJTExfQ09MT1IsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudXNlUG9seWdvbiAmJiB0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiB0aGlzLmxhbmRQb2ludHMsXG4gICAgICAgIGxpbmVDb2xvcjogUE9MWUdPTl9MSU5FX0NPTE9SLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fRklMTF9DT0xPUixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYWNrOiB1c2UgYSBwb2x5Z29uIHRvIGhpZGUgdGhlIG91dHNpZGUsIGJlY2F1c2UgcGlja09iamVjdHMoKVxuICAgICAgLy8gZG9lcyBub3Qgc3VwcG9ydCBwb2x5Z29uc1xuICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPj0gMykge1xuICAgICAgICBjb25zdCBsYW5kUG9pbnRzUG9seSA9IHBvbHlnb24oW1suLi50aGlzLmxhbmRQb2ludHMsIHRoaXMubGFuZFBvaW50c1swXV1dKTtcbiAgICAgICAgY29uc3QgYmlnQnVmZmVyID0gdHVyZkJ1ZmZlcihwb2ludCh0aGlzLmxhbmRQb2ludHNbMF0pLCBFWFBBTlNJT05fS00pO1xuICAgICAgICBsZXQgYmlnUG9seWdvbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyB0dXJmRGlmZmVyZW5jZSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBwb2x5Z29uXG4gICAgICAgICAgLy8gaW50ZXJzZWN0cyB3aXRoIGl0c2VsZlxuICAgICAgICAgIGJpZ1BvbHlnb24gPSB0dXJmRGlmZmVyZW5jZShiaWdCdWZmZXIsIGxhbmRQb2ludHNQb2x5KTtcbiAgICAgICAgICBkYXRhUGljay5wdXNoKHtcbiAgICAgICAgICAgIHBvbHlnb246IGJpZ1BvbHlnb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICBmaWxsQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnZhbGlkUG9seWdvbiA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpbnZhbGlkIHNlbGVjdGlvbiBwb2x5Z29uXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyBoaWdobGlnaHQgc3RhcnQgcG9pbnRcbiAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgIHBvbHlnb246IHRoaXMuX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KHRoaXMubGFuZFBvaW50c1swXSksXG4gICAgICAgIGxpbmVDb2xvcjogWzAsIDAsIDAsIDBdLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhY2sgdG8gbWFrZSB0aGUgUG9seWdvbkxheWVyKCkgc3RheSBhY3RpdmUsXG4gICAgLy8gb3RoZXJ3aXNlIGl0IHRha2VzIDMgc2Vjb25kcyAoISkgdG8gaW5pdCFcbiAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgIGRhdGEucHVzaCh7IHBvbHlnb246IFtbMCwgMF1dIH0pO1xuICAgIGRhdGFQaWNrLnB1c2goeyBwb2x5Z29uOiBbWzAsIDBdXSB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1ZJRVcsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IFBPTFlHT05fTElORV9XSURUSCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiBQT0xZR09OX0xJTkVfV0lEVEgsXG4gICAgICAgIGxpbmVEYXNoSnVzdGlmaWVkOiB0cnVlLFxuICAgICAgICBnZXRMaW5lRGFzaEFycmF5OiAoeCkgPT4gUE9MWUdPTl9EQVNIRVMsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAob2JqKSA9PiBvYmoubGluZUNvbG9yIHx8IFswLCAwLCAwLCAyNTVdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldEZpbGxDb2xvcjogKG9iaikgPT4gb2JqLmZpbGxDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5wb2x5Z29uLFxuICAgICAgfSksXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1BJQ0ssXG4gICAgICAgIGRhdGE6IGRhdGFQaWNrLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gb2JqLmxpbmVDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRGaWxsQ29sb3I6IChvYmopID0+IG9iai5maWxsQ29sb3IgfHwgWzAsIDAsIDAsIDI1NV0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgc3Ryb2tlZDogZmFsc2UsXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldFBvbHlnb246IChvKSA9PiBvLnBvbHlnb24sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/lib/feature.js b/modules/main/dist-es6/lib/feature.js new file mode 100644 index 000000000..200118775 --- /dev/null +++ b/modules/main/dist-es6/lib/feature.js @@ -0,0 +1,50 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 Feature = /*#__PURE__*/function () { + // geo json coordinates + function Feature(geoJson, style) { + var original = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + _classCallCheck(this, Feature); + + _defineProperty(this, "geoJson", void 0); + + _defineProperty(this, "style", void 0); + + _defineProperty(this, "original", void 0); + + _defineProperty(this, "metadata", void 0); + + this.geoJson = geoJson; + this.style = style; + this.original = original; + this.metadata = metadata; + } + + _createClass(Feature, [{ + key: "getCoords", + value: function getCoords() { + // @ts-ignore + return this.geoJson.geometry.coordinates; + } + }]); + + return Feature; +}(); + +exports["default"] = Feature; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmVhdHVyZS50cyJdLCJuYW1lcyI6WyJGZWF0dXJlIiwiZ2VvSnNvbiIsInN0eWxlIiwib3JpZ2luYWwiLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztJQUlxQkEsTztBQUNuQjtBQU1BLG1CQUNFQyxPQURGLEVBRUVDLEtBRkYsRUFLRTtBQUFBLFFBRkFDLFFBRUEsdUVBRm1DLElBRW5DO0FBQUEsUUFEQUMsUUFDQSx1RUFEZ0MsRUFDaEM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQ0EsU0FBS0gsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNEOzs7O2dDQUVnQjtBQUNmO0FBQ0EsYUFBTyxLQUFLSCxPQUFMLENBQWFJLFFBQWIsQ0FBc0JDLFdBQTdCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIGFzIEdlb0pzb24sIEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7IFN0eWxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlIHtcbiAgLy8gZ2VvIGpzb24gY29vcmRpbmF0ZXNcbiAgZ2VvSnNvbjogR2VvSnNvbjxHZW9tZXRyeT47XG4gIHN0eWxlOiBTdHlsZTtcbiAgb3JpZ2luYWw6IGFueSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGdlb0pzb246IEdlb0pzb248R2VvbWV0cnk+LFxuICAgIHN0eWxlOiBTdHlsZSxcbiAgICBvcmlnaW5hbDogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuICApIHtcbiAgICB0aGlzLmdlb0pzb24gPSBnZW9Kc29uO1xuICAgIHRoaXMuc3R5bGUgPSBzdHlsZTtcbiAgICB0aGlzLm9yaWdpbmFsID0gb3JpZ2luYWw7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0Q29vcmRzKCk6IGFueSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLmdlb0pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist-es6/lib/layer-mouse-event.js b/modules/main/dist-es6/lib/layer-mouse-event.js new file mode 100644 index 000000000..94640a155 --- /dev/null +++ b/modules/main/dist-es6/lib/layer-mouse-event.js @@ -0,0 +1,61 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 LayerMouseEvent = /*#__PURE__*/function () { + // original item that this event is related to + // internal nebula info about the object + // the mouse [lng,lat] raycasted onto the ground + // browser event + // reference to nebula + function LayerMouseEvent(nativeEvent, _ref) { + var data = _ref.data, + groundPoint = _ref.groundPoint, + nebula = _ref.nebula, + metadata = _ref.metadata; + + _classCallCheck(this, LayerMouseEvent); + + _defineProperty(this, "canceled", void 0); + + _defineProperty(this, "data", void 0); + + _defineProperty(this, "metadata", void 0); + + _defineProperty(this, "groundPoint", void 0); + + _defineProperty(this, "nativeEvent", void 0); + + _defineProperty(this, "nebula", void 0); + + this.nativeEvent = nativeEvent; + this.data = data; + this.groundPoint = groundPoint; + this.nebula = nebula; + this.metadata = metadata; + } + + _createClass(LayerMouseEvent, [{ + key: "stopPropagation", + value: function stopPropagation() { + this.nativeEvent.stopPropagation(); + this.canceled = true; + } + }]); + + return LayerMouseEvent; +}(); + +exports["default"] = LayerMouseEvent; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF5ZXItbW91c2UtZXZlbnQudHMiXSwibmFtZXMiOlsiTGF5ZXJNb3VzZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJkYXRhIiwiZ3JvdW5kUG9pbnQiLCJuZWJ1bGEiLCJtZXRhZGF0YSIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGU7QUFFbkI7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUdBLDJCQUNFQyxXQURGLFFBR0U7QUFBQSxRQURFQyxJQUNGLFFBREVBLElBQ0Y7QUFBQSxRQURRQyxXQUNSLFFBRFFBLFdBQ1I7QUFBQSxRQURxQkMsTUFDckIsUUFEcUJBLE1BQ3JCO0FBQUEsUUFENkJDLFFBQzdCLFFBRDZCQSxRQUM3Qjs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFDQSxTQUFLSixXQUFMLEdBQW1CQSxXQUFuQjtBQUVBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDRDs7OztzQ0FFaUI7QUFDaEIsV0FBS0osV0FBTCxDQUFpQkssZUFBakI7QUFDQSxXQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllck1vdXNlRXZlbnQge1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLy8gb3JpZ2luYWwgaXRlbSB0aGF0IHRoaXMgZXZlbnQgaXMgcmVsYXRlZCB0b1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyBpbnRlcm5hbCBuZWJ1bGEgaW5mbyBhYm91dCB0aGUgb2JqZWN0XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyB0aGUgbW91c2UgW2xuZyxsYXRdIHJheWNhc3RlZCBvbnRvIHRoZSBncm91bmRcbiAgZ3JvdW5kUG9pbnQ6IFBvc2l0aW9uO1xuICAvLyBicm93c2VyIGV2ZW50XG4gIG5hdGl2ZUV2ZW50OiBNb3VzZUV2ZW50O1xuICAvLyByZWZlcmVuY2UgdG8gbmVidWxhXG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBuYXRpdmVFdmVudDogTW91c2VFdmVudCxcbiAgICB7IGRhdGEsIGdyb3VuZFBvaW50LCBuZWJ1bGEsIG1ldGFkYXRhIH06IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmdyb3VuZFBvaW50ID0gZ3JvdW5kUG9pbnQ7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgc3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHRoaXMubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist-es6/lib/layers/junctions-layer.js b/modules/main/dist-es6/lib/layers/junctions-layer.js new file mode 100644 index 000000000..bf2c47d86 --- /dev/null +++ b/modules/main/dist-es6/lib/layers/junctions-layer.js @@ -0,0 +1,109 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@nebula.gl/layers"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 JunctionsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(JunctionsLayer, _NebulaLayer); + + var _super = _createSuper(JunctionsLayer); + + function JunctionsLayer(config) { + var _this; + + _classCallCheck(this, JunctionsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + _this.enablePicking = true; + return _this; + } + + _createClass(JunctionsLayer, [{ + key: "render", + value: function render(_ref) { + var nebula = _ref.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + return new _layers.JunctionScatterplotLayer({ + id: "junctions-".concat(this.id), + data: objects, + opacity: 1, + // @ts-ignore + fp64: false, + pickable: true, + getPosition: function getPosition(nf) { + return nf.geoJson.geometry.coordinates; + }, + getFillColor: function getFillColor(nf) { + return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + getStrokeColor: function getStrokeColor(nf) { + return (0, _utils.toDeckColor)(nf.style.outlineColor) || (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + getRadius: function getRadius(nf) { + return nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1; + }, + getInnerRadius: function getInnerRadius(nf) { + return nf.style.pointRadiusMeters || 0.5; + }, + parameters: { + depthTest: false, + blend: false + }, + updateTriggers: { + all: updateTrigger + }, + nebulaLayer: this + }); + } + }]); + + return JunctionsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = JunctionsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL2p1bmN0aW9ucy1sYXllci50cyJdLCJuYW1lcyI6WyJKdW5jdGlvbnNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlUGlja2luZyIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwiaWQiLCJvcGFjaXR5IiwiZnA2NCIsInBpY2thYmxlIiwiZ2V0UG9zaXRpb24iLCJuZiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0RmlsbENvbG9yIiwic3R5bGUiLCJmaWxsQ29sb3IiLCJnZXRTdHJva2VDb2xvciIsIm91dGxpbmVDb2xvciIsImdldFJhZGl1cyIsInBvaW50UmFkaXVzTWV0ZXJzIiwib3V0bGluZVJhZGl1c01ldGVycyIsImdldElubmVyUmFkaXVzIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImJsZW5kIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGM7Ozs7O0FBR25CLDBCQUFZQyxNQUFaLEVBQXlDO0FBQUE7O0FBQUE7O0FBQ3ZDLDhCQUFNQSxNQUFOOztBQUR1Qzs7QUFFdkMsVUFBS0MsU0FBTCxHQUFpQixJQUFJQyxxQkFBSixDQUFjRixNQUFNLENBQUNHLE9BQXJCLEVBQThCLFVBQUNDLElBQUQ7QUFBQSxhQUFVSixNQUFNLENBQUNLLGVBQVAsQ0FBdUJELElBQXZCLENBQVY7QUFBQSxLQUE5QixDQUFqQjtBQUNBLFVBQUtFLGFBQUwsR0FBcUIsSUFBckI7QUFIdUM7QUFJeEM7Ozs7aUNBRXVDO0FBQUEsVUFBL0JDLE1BQStCLFFBQS9CQSxNQUErQjtBQUN0QyxVQUFNQyxZQUFZLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBckI7QUFEc0MsNEJBRUgsS0FBS1AsU0FGRjtBQUFBLFVBRTlCUSxPQUY4QixtQkFFOUJBLE9BRjhCO0FBQUEsVUFFckJDLGFBRnFCLG1CQUVyQkEsYUFGcUI7QUFJdEMsYUFBTyxJQUFJQyxnQ0FBSixDQUE2QjtBQUNsQ0MsUUFBQUEsRUFBRSxzQkFBZSxLQUFLQSxFQUFwQixDQURnQztBQUVsQ1IsUUFBQUEsSUFBSSxFQUFFSyxPQUY0QjtBQUdsQ0ksUUFBQUEsT0FBTyxFQUFFLENBSHlCO0FBSWxDO0FBQ0FDLFFBQUFBLElBQUksRUFBRSxLQUw0QjtBQU1sQ0MsUUFBQUEsUUFBUSxFQUFFLElBTndCO0FBT2xDQyxRQUFBQSxXQUFXLEVBQUUscUJBQUNDLEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDQyxPQUFILENBQVdDLFFBQVgsQ0FBb0JDLFdBQTVCO0FBQUEsU0FQcUI7QUFRbENDLFFBQUFBLFlBQVksRUFBRSxzQkFBQ0osRUFBRDtBQUFBLGlCQUFRLHdCQUFZQSxFQUFFLENBQUNLLEtBQUgsQ0FBU0MsU0FBckIsS0FBbUNmLFlBQTNDO0FBQUEsU0FSb0I7QUFTbENnQixRQUFBQSxjQUFjLEVBQUUsd0JBQUNQLEVBQUQ7QUFBQSxpQkFDZCx3QkFBWUEsRUFBRSxDQUFDSyxLQUFILENBQVNHLFlBQXJCLEtBQXNDLHdCQUFZUixFQUFFLENBQUNLLEtBQUgsQ0FBU0MsU0FBckIsQ0FBdEMsSUFBeUVmLFlBRDNEO0FBQUEsU0FUa0I7QUFXbENrQixRQUFBQSxTQUFTLEVBQUUsbUJBQUNULEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDSyxLQUFILENBQVNLLGlCQUFULEdBQTZCVixFQUFFLENBQUNLLEtBQUgsQ0FBU00sbUJBQXRDLElBQTZELENBQXJFO0FBQUEsU0FYdUI7QUFZbENDLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ1osRUFBRDtBQUFBLGlCQUFRQSxFQUFFLENBQUNLLEtBQUgsQ0FBU0ssaUJBQVQsSUFBOEIsR0FBdEM7QUFBQSxTQVprQjtBQWFsQ0csUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLFNBQVMsRUFBRSxLQUREO0FBRVZDLFVBQUFBLEtBQUssRUFBRTtBQUZHLFNBYnNCO0FBa0JsQ0MsUUFBQUEsY0FBYyxFQUFFO0FBQUVDLFVBQUFBLEdBQUcsRUFBRXhCO0FBQVAsU0FsQmtCO0FBb0JsQ3lCLFFBQUFBLFdBQVcsRUFBRTtBQXBCcUIsT0FBN0IsQ0FBUDtBQXNCRDs7OztFQW5DeUNDLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVuY3Rpb25zTGF5ZXIgZXh0ZW5kcyBOZWJ1bGFMYXllciB7XG4gIGRlY2tDYWNoZTogRGVja0NhY2hlPGFueSwgYW55PjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMuZGVja0NhY2hlID0gbmV3IERlY2tDYWNoZShjb25maWcuZ2V0RGF0YSwgKGRhdGEpID0+IGNvbmZpZy50b05lYnVsYUZlYXR1cmUoZGF0YSkpO1xuICAgIHRoaXMuZW5hYmxlUGlja2luZyA9IHRydWU7XG4gIH1cblxuICByZW5kZXIoeyBuZWJ1bGEgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgcmV0dXJuIG5ldyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgaWQ6IGBqdW5jdGlvbnMtJHt0aGlzLmlkfWAsXG4gICAgICBkYXRhOiBvYmplY3RzLFxuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZwNjQ6IGZhbHNlLFxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICBnZXRQb3NpdGlvbjogKG5mKSA9PiBuZi5nZW9Kc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0RmlsbENvbG9yOiAobmYpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuICAgICAgZ2V0U3Ryb2tlQ29sb3I6IChuZikgPT5cbiAgICAgICAgdG9EZWNrQ29sb3IobmYuc3R5bGUub3V0bGluZUNvbG9yKSB8fCB0b0RlY2tDb2xvcihuZi5zdHlsZS5maWxsQ29sb3IpIHx8IGRlZmF1bHRDb2xvcixcbiAgICAgIGdldFJhZGl1czogKG5mKSA9PiBuZi5zdHlsZS5wb2ludFJhZGl1c01ldGVycyArIG5mLnN0eWxlLm91dGxpbmVSYWRpdXNNZXRlcnMgfHwgMSxcbiAgICAgIGdldElubmVyUmFkaXVzOiAobmYpID0+IG5mLnN0eWxlLnBvaW50UmFkaXVzTWV0ZXJzIHx8IDAuNSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgYmxlbmQ6IGZhbHNlLFxuICAgICAgfSxcblxuICAgICAgdXBkYXRlVHJpZ2dlcnM6IHsgYWxsOiB1cGRhdGVUcmlnZ2VyIH0sXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/lib/layers/segments-layer.js b/modules/main/dist-es6/lib/layers/segments-layer.js new file mode 100644 index 000000000..afbd1bc44 --- /dev/null +++ b/modules/main/dist-es6/lib/layers/segments-layer.js @@ -0,0 +1,214 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@nebula.gl/layers"); + +var _constants = require("@luma.gl/constants"); + +var _style = require("../style"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +var _NEBULA_TO_DECK_DIREC; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 NEBULA_TO_DECK_DIRECTIONS = (_NEBULA_TO_DECK_DIREC = {}, _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.NONE, { + forward: false, + backward: false +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.FORWARD, { + forward: true, + backward: false +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BACKWARD, { + forward: false, + backward: true +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BOTH, { + forward: true, + backward: true +}), _NEBULA_TO_DECK_DIREC); + +var SegmentsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(SegmentsLayer, _NebulaLayer); + + var _super = _createSuper(SegmentsLayer); + + function SegmentsLayer(config) { + var _this; + + _classCallCheck(this, SegmentsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _defineProperty(_assertThisInitialized(_this), "noBlend", void 0); + + _defineProperty(_assertThisInitialized(_this), "highlightColor", void 0); + + _defineProperty(_assertThisInitialized(_this), "arrowSize", void 0); + + _defineProperty(_assertThisInitialized(_this), "rounded", void 0); + + _defineProperty(_assertThisInitialized(_this), "dashed", void 0); + + _defineProperty(_assertThisInitialized(_this), "markerLayerProps", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + _this.enableSelection = true; + var _config$enablePicking = config.enablePicking, + enablePicking = _config$enablePicking === void 0 ? true : _config$enablePicking, + _config$noBlend = config.noBlend, + noBlend = _config$noBlend === void 0 ? false : _config$noBlend, + _config$rounded = config.rounded, + rounded = _config$rounded === void 0 ? true : _config$rounded, + _config$dashed = config.dashed, + dashed = _config$dashed === void 0 ? false : _config$dashed, + _config$markerLayerPr = config.markerLayerProps, + markerLayerProps = _config$markerLayerPr === void 0 ? null : _config$markerLayerPr; + Object.assign(_assertThisInitialized(_this), { + enablePicking: enablePicking, + noBlend: noBlend, + rounded: rounded, + dashed: dashed, + markerLayerProps: markerLayerProps + }); + return _this; + } + + _createClass(SegmentsLayer, [{ + key: "getMouseOverSegment", + value: function getMouseOverSegment() { + // TODO: remove references + return null; + } + }, { + key: "_calcMarkerPercentages", + value: function _calcMarkerPercentages(nf) { + var arrowPercentages = nf.style.arrowPercentages; + + if (arrowPercentages) { + return arrowPercentages; + } + + var arrowStyle = nf.style.arrowStyle || _style.DEFAULT_STYLE.arrowStyle; + if (arrowStyle === _style.ArrowStyles.NONE) return []; + var arrowCount = Math.min(nf.style.arrowCount || _style.DEFAULT_STYLE.arrowCount, _style.MAX_ARROWS); + return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1]; + } + }, { + key: "_getHighlightedObjectIndex", + value: function _getHighlightedObjectIndex(_ref) { + var nebula = _ref.nebula; + var deckglMouseOverInfo = nebula.deckglMouseOverInfo; + + if (deckglMouseOverInfo) { + var originalLayer = deckglMouseOverInfo.originalLayer, + index = deckglMouseOverInfo.index; + + if (originalLayer === this) { + return index; + } + } // no object + + + return -1; + } + }, { + key: "render", + value: function render(_ref2) { + var nebula = _ref2.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + return new _layers.PathMarkerLayer({ + id: "segments-".concat(this.id), + data: objects, + opacity: 1, + // @ts-ignore + fp64: false, + rounded: this.rounded, + pickable: true, + sizeScale: this.arrowSize || 6, + parameters: { + depthTest: false, + blend: !this.noBlend, + blendEquation: _constants.GL.MAX + }, + getPath: function getPath(nf) { + return nf.geoJson.geometry.coordinates; + }, + // @ts-ignore + getColor: function getColor(nf) { + return (0, _utils.toDeckColor)(nf.style.lineColor, defaultColor); + }, + getWidth: function getWidth(nf) { + return nf.style.lineWidthMeters || 1; + }, + getZLevel: function getZLevel(nf) { + return nf.style.zLevel * 255; + }, + getDirection: function getDirection(nf) { + return NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle]; + }, + // @ts-ignore + getMarkerColor: function getMarkerColor(nf) { + return (0, _utils.toDeckColor)(nf.style.arrowColor, defaultColor); + }, + getMarkerPercentages: this._calcMarkerPercentages, + updateTriggers: { + all: updateTrigger + }, + highlightedObjectIndex: this._getHighlightedObjectIndex({ + nebula: nebula + }), + highlightColor: (0, _utils.toDeckColor)(this.highlightColor), + dashJustified: this.dashed, + getDashArray: this.dashed ? function (nf) { + return nf.style.dashArray; + } : null, + markerLayerProps: this.markerLayerProps || _layers.PathMarkerLayer.defaultProps.markerLayerProps, + nebulaLayer: this + }); + } + }]); + + return SegmentsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = SegmentsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3NlZ21lbnRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5FQlVMQV9UT19ERUNLX0RJUkVDVElPTlMiLCJBcnJvd1N0eWxlcyIsIk5PTkUiLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiU2VnbWVudHNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlU2VsZWN0aW9uIiwiZW5hYmxlUGlja2luZyIsIm5vQmxlbmQiLCJyb3VuZGVkIiwiZGFzaGVkIiwibWFya2VyTGF5ZXJQcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIm5mIiwiYXJyb3dQZXJjZW50YWdlcyIsInN0eWxlIiwiYXJyb3dTdHlsZSIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvdW50IiwiTWF0aCIsIm1pbiIsIk1BWF9BUlJPV1MiLCJuZWJ1bGEiLCJkZWNrZ2xNb3VzZU92ZXJJbmZvIiwib3JpZ2luYWxMYXllciIsImluZGV4IiwiZGVmYXVsdENvbG9yIiwib2JqZWN0cyIsInVwZGF0ZVRyaWdnZXIiLCJQYXRoTWFya2VyTGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJzaXplU2NhbGUiLCJhcnJvd1NpemUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiYmxlbmQiLCJibGVuZEVxdWF0aW9uIiwiR0wiLCJNQVgiLCJnZXRQYXRoIiwiZ2VvSnNvbiIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJnZXRDb2xvciIsImxpbmVDb2xvciIsImdldFdpZHRoIiwibGluZVdpZHRoTWV0ZXJzIiwiZ2V0WkxldmVsIiwiekxldmVsIiwiZ2V0RGlyZWN0aW9uIiwiZ2V0TWFya2VyQ29sb3IiLCJhcnJvd0NvbG9yIiwiZ2V0TWFya2VyUGVyY2VudGFnZXMiLCJfY2FsY01hcmtlclBlcmNlbnRhZ2VzIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJoaWdobGlnaHRlZE9iamVjdEluZGV4IiwiX2dldEhpZ2hsaWdodGVkT2JqZWN0SW5kZXgiLCJoaWdobGlnaHRDb2xvciIsImRhc2hKdXN0aWZpZWQiLCJnZXREYXNoQXJyYXkiLCJkYXNoQXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5Qix1RUFDNUJDLG1CQUFZQyxJQURnQixFQUNUO0FBQUVDLEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FEUywwQ0FFNUJILG1CQUFZSSxPQUZnQixFQUVOO0FBQUVGLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FGTSwwQ0FHNUJILG1CQUFZSyxRQUhnQixFQUdMO0FBQUVILEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FISywwQ0FJNUJILG1CQUFZTSxJQUpnQixFQUlUO0FBQUVKLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FKUyx5QkFBL0I7O0lBT3FCSSxhOzs7OztBQVNuQix5QkFBWUMsTUFBWixFQUF5QztBQUFBOztBQUFBOztBQUN2Qyw4QkFBTUEsTUFBTjs7QUFEdUM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBRXZDLFVBQUtDLFNBQUwsR0FBaUIsSUFBSUMscUJBQUosQ0FBY0YsTUFBTSxDQUFDRyxPQUFyQixFQUE4QixVQUFDQyxJQUFEO0FBQUEsYUFBVUosTUFBTSxDQUFDSyxlQUFQLENBQXVCRCxJQUF2QixDQUFWO0FBQUEsS0FBOUIsQ0FBakI7QUFDQSxVQUFLRSxl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UCxTQXZCUztBQXlCekIrQixRQUFBQSxzQkFBc0IsRUFBRSxLQUFLQywwQkFBTCxDQUFnQztBQUFFdEMsVUFBQUEsTUFBTSxFQUFOQTtBQUFGLFNBQWhDLENBekJDO0FBMEJ6QnVDLFFBQUFBLGNBQWMsRUFBRSx3QkFBWSxLQUFLQSxjQUFqQixDQTFCUztBQTRCekJDLFFBQUFBLGFBQWEsRUFBRSxLQUFLckQsTUE1Qks7QUE2QnpCc0QsUUFBQUEsWUFBWSxFQUFFLEtBQUt0RCxNQUFMLEdBQWMsVUFBQ0ksRUFBRDtBQUFBLGlCQUFRQSxFQUFFLENBQUNFLEtBQUgsQ0FBU2lELFNBQWpCO0FBQUEsU0FBZCxHQUEyQyxJQTdCaEM7QUE4QnpCdEQsUUFBQUEsZ0JBQWdCLEVBQ2QsS0FBS0EsZ0JBQUwsSUFDQ21CLHVCQUFELENBQXlDb0MsWUFBekMsQ0FBc0R2RCxnQkFoQy9CO0FBa0N6QndELFFBQUFBLFdBQVcsRUFBRTtBQWxDWSxPQUFwQixDQUFQO0FBb0NEOzs7O0VBOUZ3Q0MsdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoTWFya2VyTGF5ZXIgfSBmcm9tICdAbmVidWxhLmdsL2xheWVycyc7XG5pbXBvcnQgeyBHTCB9IGZyb20gJ0BsdW1hLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX1NUWUxFLCBNQVhfQVJST1dTIH0gZnJvbSAnLi4vc3R5bGUnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuY29uc3QgTkVCVUxBX1RPX0RFQ0tfRElSRUNUSU9OUyA9IHtcbiAgW0Fycm93U3R5bGVzLk5PTkVdOiB7IGZvcndhcmQ6IGZhbHNlLCBiYWNrd2FyZDogZmFsc2UgfSxcbiAgW0Fycm93U3R5bGVzLkZPUldBUkRdOiB7IGZvcndhcmQ6IHRydWUsIGJhY2t3YXJkOiBmYWxzZSB9LFxuICBbQXJyb3dTdHlsZXMuQkFDS1dBUkRdOiB7IGZvcndhcmQ6IGZhbHNlLCBiYWNrd2FyZDogdHJ1ZSB9LFxuICBbQXJyb3dTdHlsZXMuQk9USF06IHsgZm9yd2FyZDogdHJ1ZSwgYmFja3dhcmQ6IHRydWUgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlZ21lbnRzTGF5ZXIgZXh0ZW5kcyBOZWJ1bGFMYXllciB7XG4gIGRlY2tDYWNoZTogRGVja0NhY2hlPGFueSwgYW55PjtcbiAgbm9CbGVuZDogYm9vbGVhbjtcbiAgaGlnaGxpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBhcnJvd1NpemU6IG51bWJlcjtcbiAgcm91bmRlZDogYm9vbGVhbjtcbiAgZGFzaGVkOiBib29sZWFuO1xuICBtYXJrZXJMYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMuZGVja0NhY2hlID0gbmV3IERlY2tDYWNoZShjb25maWcuZ2V0RGF0YSwgKGRhdGEpID0+IGNvbmZpZy50b05lYnVsYUZlYXR1cmUoZGF0YSkpO1xuICAgIHRoaXMuZW5hYmxlU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVQaWNraW5nID0gdHJ1ZSxcbiAgICAgIG5vQmxlbmQgPSBmYWxzZSxcbiAgICAgIHJvdW5kZWQgPSB0cnVlLFxuICAgICAgZGFzaGVkID0gZmFsc2UsXG4gICAgICBtYXJrZXJMYXllclByb3BzID0gbnVsbCxcbiAgICB9ID0gY29uZmlnO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgeyBlbmFibGVQaWNraW5nLCBub0JsZW5kLCByb3VuZGVkLCBkYXNoZWQsIG1hcmtlckxheWVyUHJvcHMgfSk7XG4gIH1cblxuICBnZXRNb3VzZU92ZXJTZWdtZW50KCk6IGFueSB7XG4gICAgLy8gVE9ETzogcmVtb3ZlIHJlZmVyZW5jZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIF9jYWxjTWFya2VyUGVyY2VudGFnZXMobmY6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgeyBhcnJvd1BlcmNlbnRhZ2VzIH0gPSBuZi5zdHlsZTtcbiAgICBpZiAoYXJyb3dQZXJjZW50YWdlcykge1xuICAgICAgcmV0dXJuIGFycm93UGVyY2VudGFnZXM7XG4gICAgfVxuXG4gICAgY29uc3QgYXJyb3dTdHlsZSA9IG5mLnN0eWxlLmFycm93U3R5bGUgfHwgREVGQVVMVF9TVFlMRS5hcnJvd1N0eWxlO1xuICAgIGlmIChhcnJvd1N0eWxlID09PSBBcnJvd1N0eWxlcy5OT05FKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBhcnJvd0NvdW50ID0gTWF0aC5taW4obmYuc3R5bGUuYXJyb3dDb3VudCB8fCBERUZBVUxUX1NUWUxFLmFycm93Q291bnQsIE1BWF9BUlJPV1MpO1xuICAgIHJldHVybiBbWzAuNV0sIFswLjMzLCAwLjY2XSwgWzAuMjUsIDAuNSwgMC43NV1dW2Fycm93Q291bnQgLSAxXTtcbiAgfVxuXG4gIF9nZXRIaWdobGlnaHRlZE9iamVjdEluZGV4KHsgbmVidWxhIH06IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICAgIGNvbnN0IHsgZGVja2dsTW91c2VPdmVySW5mbyB9ID0gbmVidWxhO1xuICAgIGlmIChkZWNrZ2xNb3VzZU92ZXJJbmZvKSB7XG4gICAgICBjb25zdCB7IG9yaWdpbmFsTGF5ZXIsIGluZGV4IH0gPSBkZWNrZ2xNb3VzZU92ZXJJbmZvO1xuICAgICAgaWYgKG9yaWdpbmFsTGF5ZXIgPT09IHRoaXMpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vIG9iamVjdFxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHJlbmRlcih7IG5lYnVsYSB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yID0gWzB4MCwgMHgwLCAweDAsIDB4ZmZdO1xuICAgIGNvbnN0IHsgb2JqZWN0cywgdXBkYXRlVHJpZ2dlciB9ID0gdGhpcy5kZWNrQ2FjaGU7XG5cbiAgICByZXR1cm4gbmV3IFBhdGhNYXJrZXJMYXllcih7XG4gICAgICBpZDogYHNlZ21lbnRzLSR7dGhpcy5pZH1gLFxuICAgICAgZGF0YTogb2JqZWN0cyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmcDY0OiBmYWxzZSxcbiAgICAgIHJvdW5kZWQ6IHRoaXMucm91bmRlZCxcbiAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgc2l6ZVNjYWxlOiB0aGlzLmFycm93U2l6ZSB8fCA2LFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICBibGVuZDogIXRoaXMubm9CbGVuZCxcbiAgICAgICAgYmxlbmRFcXVhdGlvbjogR0wuTUFYLFxuICAgICAgfSxcbiAgICAgIGdldFBhdGg6IChuZjogYW55KSA9PiBuZi5nZW9Kc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZ2V0Q29sb3I6IChuZjogYW55KSA9PiB0b0RlY2tDb2xvcihuZi5zdHlsZS5saW5lQ29sb3IsIGRlZmF1bHRDb2xvciksXG4gICAgICBnZXRXaWR0aDogKG5mOiBhbnkpID0+IG5mLnN0eWxlLmxpbmVXaWR0aE1ldGVycyB8fCAxLFxuICAgICAgZ2V0WkxldmVsOiAobmY6IGFueSkgPT4gbmYuc3R5bGUuekxldmVsICogMjU1LFxuICAgICAgZ2V0RGlyZWN0aW9uOiAobmY6IGFueSkgPT4gTkVCVUxBX1RPX0RFQ0tfRElSRUNUSU9OU1tuZi5zdHlsZS5hcnJvd1N0eWxlXSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGdldE1hcmtlckNvbG9yOiAobmY6IGFueSkgPT4gdG9EZWNrQ29sb3IobmYuc3R5bGUuYXJyb3dDb2xvciwgZGVmYXVsdENvbG9yKSxcbiAgICAgIGdldE1hcmtlclBlcmNlbnRhZ2VzOiB0aGlzLl9jYWxjTWFya2VyUGVyY2VudGFnZXMsXG4gICAgICB1cGRhdGVUcmlnZ2VyczogeyBhbGw6IHVwZGF0ZVRyaWdnZXIgfSxcblxuICAgICAgaGlnaGxpZ2h0ZWRPYmplY3RJbmRleDogdGhpcy5fZ2V0SGlnaGxpZ2h0ZWRPYmplY3RJbmRleCh7IG5lYnVsYSB9KSxcbiAgICAgIGhpZ2hsaWdodENvbG9yOiB0b0RlY2tDb2xvcih0aGlzLmhpZ2hsaWdodENvbG9yKSxcblxuICAgICAgZGFzaEp1c3RpZmllZDogdGhpcy5kYXNoZWQsXG4gICAgICBnZXREYXNoQXJyYXk6IHRoaXMuZGFzaGVkID8gKG5mKSA9PiBuZi5zdHlsZS5kYXNoQXJyYXkgOiBudWxsLFxuICAgICAgbWFya2VyTGF5ZXJQcm9wczpcbiAgICAgICAgdGhpcy5tYXJrZXJMYXllclByb3BzIHx8XG4gICAgICAgIChQYXRoTWFya2VyTGF5ZXIgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZGVmYXVsdFByb3BzLm1hcmtlckxheWVyUHJvcHMsXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/lib/layers/texts-layer.js b/modules/main/dist-es6/lib/layers/texts-layer.js new file mode 100644 index 000000000..7e5d55a8f --- /dev/null +++ b/modules/main/dist-es6/lib/layers/texts-layer.js @@ -0,0 +1,101 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 TextsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(TextsLayer, _NebulaLayer); + + var _super = _createSuper(TextsLayer); + + function TextsLayer(config) { + var _this; + + _classCallCheck(this, TextsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + return _this; + } + + _createClass(TextsLayer, [{ + key: "render", + value: function render(_ref) { + var nebula = _ref.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + var zoom = nebula.props.viewport.zoom; + return new _layers.TextLayer({ + id: "texts-".concat(this.id), + data: objects, + opacity: 1, + fp64: false, + pickable: false, + getText: function getText(nf) { + return nf.style.text; + }, + getPosition: function getPosition(nf) { + return nf.geoJson.geometry.coordinates; + }, + // @ts-ignore + getColor: function getColor(nf) { + return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + // TODO: layer should offer option to scale with zoom + sizeScale: 1 / Math.pow(2, 20 - zoom), + updateTriggers: { + all: updateTrigger + }, + nebulaLayer: this + }); + } + }]); + + return TextsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = TextsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3RleHRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIlRleHRzTGF5ZXIiLCJjb25maWciLCJkZWNrQ2FjaGUiLCJEZWNrQ2FjaGUiLCJnZXREYXRhIiwiZGF0YSIsInRvTmVidWxhRmVhdHVyZSIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiem9vbSIsInByb3BzIiwidmlld3BvcnQiLCJUZXh0TGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJnZXRUZXh0IiwibmYiLCJzdHlsZSIsInRleHQiLCJnZXRQb3NpdGlvbiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0Q29sb3IiLCJmaWxsQ29sb3IiLCJzaXplU2NhbGUiLCJNYXRoIiwicG93IiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLFU7Ozs7O0FBR25CLHNCQUFZQyxNQUFaLEVBQXlDO0FBQUE7O0FBQUE7O0FBQ3ZDLDhCQUFNQSxNQUFOOztBQUR1Qzs7QUFFdkMsVUFBS0MsU0FBTCxHQUFpQixJQUFJQyxxQkFBSixDQUFjRixNQUFNLENBQUNHLE9BQXJCLEVBQThCLFVBQUNDLElBQUQ7QUFBQSxhQUFVSixNQUFNLENBQUNLLGVBQVAsQ0FBdUJELElBQXZCLENBQVY7QUFBQSxLQUE5QixDQUFqQjtBQUZ1QztBQUd4Qzs7OztpQ0FFdUM7QUFBQSxVQUEvQkUsTUFBK0IsUUFBL0JBLE1BQStCO0FBQ3RDLFVBQU1DLFlBQVksR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixDQUFyQjtBQURzQyw0QkFFSCxLQUFLTixTQUZGO0FBQUEsVUFFOUJPLE9BRjhCLG1CQUU5QkEsT0FGOEI7QUFBQSxVQUVyQkMsYUFGcUIsbUJBRXJCQSxhQUZxQjtBQUFBLFVBSTlCQyxJQUo4QixHQUlyQkosTUFBTSxDQUFDSyxLQUFQLENBQWFDLFFBSlEsQ0FJOUJGLElBSjhCO0FBTXRDLGFBQU8sSUFBSUcsaUJBQUosQ0FBYztBQUNuQkMsUUFBQUEsRUFBRSxrQkFBVyxLQUFLQSxFQUFoQixDQURpQjtBQUVuQlYsUUFBQUEsSUFBSSxFQUFFSSxPQUZhO0FBR25CTyxRQUFBQSxPQUFPLEVBQUUsQ0FIVTtBQUluQkMsUUFBQUEsSUFBSSxFQUFFLEtBSmE7QUFLbkJDLFFBQUFBLFFBQVEsRUFBRSxLQUxTO0FBT25CQyxRQUFBQSxPQUFPLEVBQUUsaUJBQUNDLEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDQyxLQUFILENBQVNDLElBQWpCO0FBQUEsU0FQVTtBQVFuQkMsUUFBQUEsV0FBVyxFQUFFLHFCQUFDSCxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0ksT0FBSCxDQUFXQyxRQUFYLENBQW9CQyxXQUE1QjtBQUFBLFNBUk07QUFTbkI7QUFDQUMsUUFBQUEsUUFBUSxFQUFFLGtCQUFDUCxFQUFEO0FBQUEsaUJBQVEsd0JBQVlBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTTyxTQUFyQixLQUFtQ3BCLFlBQTNDO0FBQUEsU0FWUztBQVluQjtBQUNBcUIsUUFBQUEsU0FBUyxFQUFFLElBQUlDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLENBQVQsRUFBWSxLQUFLcEIsSUFBakIsQ0FiSTtBQWVuQnFCLFFBQUFBLGNBQWMsRUFBRTtBQUFFQyxVQUFBQSxHQUFHLEVBQUV2QjtBQUFQLFNBZkc7QUFpQm5Cd0IsUUFBQUEsV0FBVyxFQUFFO0FBakJNLE9BQWQsQ0FBUDtBQW1CRDs7OztFQWpDcUNDLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHNMYXllciBleHRlbmRzIE5lYnVsYUxheWVyIHtcbiAgZGVja0NhY2hlOiBEZWNrQ2FjaGU8YW55LCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gICAgdGhpcy5kZWNrQ2FjaGUgPSBuZXcgRGVja0NhY2hlKGNvbmZpZy5nZXREYXRhLCAoZGF0YSkgPT4gY29uZmlnLnRvTmVidWxhRmVhdHVyZShkYXRhKSk7XG4gIH1cblxuICByZW5kZXIoeyBuZWJ1bGEgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgY29uc3QgeyB6b29tIH0gPSBuZWJ1bGEucHJvcHMudmlld3BvcnQ7XG5cbiAgICByZXR1cm4gbmV3IFRleHRMYXllcih7XG4gICAgICBpZDogYHRleHRzLSR7dGhpcy5pZH1gLFxuICAgICAgZGF0YTogb2JqZWN0cyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBmcDY0OiBmYWxzZSxcbiAgICAgIHBpY2thYmxlOiBmYWxzZSxcblxuICAgICAgZ2V0VGV4dDogKG5mKSA9PiBuZi5zdHlsZS50ZXh0LFxuICAgICAgZ2V0UG9zaXRpb246IChuZikgPT4gbmYuZ2VvSnNvbi5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGdldENvbG9yOiAobmYpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuXG4gICAgICAvLyBUT0RPOiBsYXllciBzaG91bGQgb2ZmZXIgb3B0aW9uIHRvIHNjYWxlIHdpdGggem9vbVxuICAgICAgc2l6ZVNjYWxlOiAxIC8gTWF0aC5wb3coMiwgMjAgLSB6b29tKSxcblxuICAgICAgdXBkYXRlVHJpZ2dlcnM6IHsgYWxsOiB1cGRhdGVUcmlnZ2VyIH0sXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/lib/math.js b/modules/main/dist-es6/lib/math.js new file mode 100644 index 000000000..96f151909 --- /dev/null +++ b/modules/main/dist-es6/lib/math.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDegree = toDegree; +exports.toRadian = toRadian; +exports.convertE7Array = convertE7Array; + +function toDegree(radian) { + return radian * 180 / Math.PI; +} + +function toRadian(angle) { + return angle * Math.PI / 180; +} +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ + + +function convertE7Array(array) { + var points = []; + + for (var i = 0; i < array.length; i += 2) { + var lat = array[i] * 1e-7; + var lng = array[i + 1] * 1e-7; + points.push([lng, lat]); + } + + return points; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWF0aC50cyJdLCJuYW1lcyI6WyJ0b0RlZ3JlZSIsInJhZGlhbiIsIk1hdGgiLCJQSSIsInRvUmFkaWFuIiwiYW5nbGUiLCJjb252ZXJ0RTdBcnJheSIsImFycmF5IiwicG9pbnRzIiwiaSIsImxlbmd0aCIsImxhdCIsImxuZyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLFNBQVNBLFFBQVQsQ0FBa0JDLE1BQWxCLEVBQTBDO0FBQy9DLFNBQVFBLE1BQU0sR0FBRyxHQUFWLEdBQWlCQyxJQUFJLENBQUNDLEVBQTdCO0FBQ0Q7O0FBRU0sU0FBU0MsUUFBVCxDQUFrQkMsS0FBbEIsRUFBeUM7QUFDOUMsU0FBUUEsS0FBSyxHQUFHSCxJQUFJLENBQUNDLEVBQWQsR0FBb0IsR0FBM0I7QUFDRDtBQUVEOzs7Ozs7Ozs7QUFPTyxTQUFTRyxjQUFULENBQXdCQyxLQUF4QixFQUFxRDtBQUMxRCxNQUFNQyxNQUFNLEdBQUcsRUFBZjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLEtBQUssQ0FBQ0csTUFBMUIsRUFBa0NELENBQUMsSUFBSSxDQUF2QyxFQUEwQztBQUN4QyxRQUFNRSxHQUFHLEdBQUdKLEtBQUssQ0FBQ0UsQ0FBRCxDQUFMLEdBQVcsSUFBdkI7QUFDQSxRQUFNRyxHQUFHLEdBQUdMLEtBQUssQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBTCxHQUFlLElBQTNCO0FBQ0FELElBQUFBLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZLENBQUNELEdBQUQsRUFBTUQsR0FBTixDQUFaO0FBQ0Q7O0FBQ0QsU0FBT0gsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdnZW9qc29uJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVncmVlKHJhZGlhbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChyYWRpYW4gKiAxODApIC8gTWF0aC5QSTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmFkaWFuKGFuZ2xlOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKGFuZ2xlICogTWF0aC5QSSkgLyAxODA7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgbGF0aXR1ZGVzLCBsb25naXR1ZGVzIGluIEU3IGZvcm1hdCB0byBhIGxpc3Qgb2YgcG9pbnRzIGluIGRlZ3JlZXMuXG4gKlxuICogQHBhcmFtIHtbXX0gYXJyYXk6IEFuIEU3IGFycmF5IFtsYXRfZTcsIGxuZ19lNywgbGF0X2U3LCBsbmdfZTcsIC4uLl1cbiAqIEByZXR1cm4ge1tdfSBBbiBhcnJheSBvZiBwb2ludHMgaW4gZGVncmVlc1xuICogICAgICAgICAgICAgIFsgW2xuZ19kZWdyZWVzLCBsYXRfZGVncmVlc10sIFtsbmdfZGVncmVlcywgbGF0X2RlZ3JlZXNdLCAuLi5dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RTdBcnJheShhcnJheTogbnVtYmVyW10pOiBQb3NpdGlvbltdIHtcbiAgY29uc3QgcG9pbnRzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBjb25zdCBsYXQgPSBhcnJheVtpXSAqIDFlLTc7XG4gICAgY29uc3QgbG5nID0gYXJyYXlbaSArIDFdICogMWUtNztcbiAgICBwb2ludHMucHVzaChbbG5nLCBsYXRdKTtcbiAgfVxuICByZXR1cm4gcG9pbnRzO1xufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist-es6/lib/nebula-layer.js b/modules/main/dist-es6/lib/nebula-layer.js new file mode 100644 index 000000000..890a7943b --- /dev/null +++ b/modules/main/dist-es6/lib/nebula-layer.js @@ -0,0 +1,96 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _events = _interopRequireDefault(require("events")); + +var _uuid = _interopRequireDefault(require("uuid")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 NebulaLayer = /*#__PURE__*/function (_Event$EventEmitter) { + _inherits(NebulaLayer, _Event$EventEmitter); + + var _super = _createSuper(NebulaLayer); + + // flags + // + function NebulaLayer(_ref) { + var _this; + + var getData = _ref.getData, + on = _ref.on, + toNebulaFeature = _ref.toNebulaFeature; + + _classCallCheck(this, NebulaLayer); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "getData", void 0); + + _defineProperty(_assertThisInitialized(_this), "toNebulaFeature", void 0); + + _defineProperty(_assertThisInitialized(_this), "id", void 0); + + _defineProperty(_assertThisInitialized(_this), "helperLayers", void 0); + + _defineProperty(_assertThisInitialized(_this), "usesMapEvents", false); + + _defineProperty(_assertThisInitialized(_this), "enablePicking", false); + + _defineProperty(_assertThisInitialized(_this), "enableSelection", false); + + _this.id = _uuid["default"].v4(); + _this.getData = getData; + _this.toNebulaFeature = toNebulaFeature; + _this.helperLayers = []; + + if (on) { + // @ts-ignore + Object.keys(on).forEach(function (key) { + return _this.on(key, on[key]); + }); + } + + return _this; + } + + _createClass(NebulaLayer, [{ + key: "render", + value: function render(config) { + return null; + } + }]); + + return NebulaLayer; +}(_events["default"].EventEmitter); + +exports["default"] = NebulaLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5lYnVsYUxheWVyIiwiZ2V0RGF0YSIsIm9uIiwidG9OZWJ1bGFGZWF0dXJlIiwiaWQiLCJ1dWlkIiwidjQiLCJoZWxwZXJMYXllcnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsIkV2ZW50IiwiRXZlbnRFbWl0dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJcUJBLFc7Ozs7O0FBTW5CO0FBSUE7QUFFQSw2QkFBbUU7QUFBQTs7QUFBQSxRQUFyREMsT0FBcUQsUUFBckRBLE9BQXFEO0FBQUEsUUFBNUNDLEVBQTRDLFFBQTVDQSxFQUE0QztBQUFBLFFBQXhDQyxlQUF3QyxRQUF4Q0EsZUFBd0M7O0FBQUE7O0FBQ2pFOztBQURpRTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSxvRUFMbkQsS0FLbUQ7O0FBQUEsb0VBSm5ELEtBSW1EOztBQUFBLHNFQUhqRCxLQUdpRDs7QUFFakUsVUFBS0MsRUFBTCxHQUFVQyxpQkFBS0MsRUFBTCxFQUFWO0FBQ0EsVUFBS0wsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsVUFBS0UsZUFBTCxHQUF1QkEsZUFBdkI7QUFDQSxVQUFLSSxZQUFMLEdBQW9CLEVBQXBCOztBQUVBLFFBQUlMLEVBQUosRUFBUTtBQUNOO0FBQ0FNLE1BQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxFQUFaLEVBQWdCUSxPQUFoQixDQUF3QixVQUFDQyxHQUFEO0FBQUEsZUFBUyxNQUFLVCxFQUFMLENBQVFTLEdBQVIsRUFBYVQsRUFBRSxDQUFDUyxHQUFELENBQWYsQ0FBVDtBQUFBLE9BQXhCO0FBQ0Q7O0FBVmdFO0FBV2xFOzs7OzJCQUVNQyxNLEVBQXNDO0FBQzNDLGFBQU8sSUFBUDtBQUNEOzs7O0VBM0JzQ0MsbUJBQU1DLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnQgZnJvbSAnZXZlbnRzJztcbmltcG9ydCB1dWlkIGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgRmVhdHVyZSBmcm9tICcuL2ZlYXR1cmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZWJ1bGFMYXllciBleHRlbmRzIEV2ZW50LkV2ZW50RW1pdHRlciB7XG4gIGdldERhdGE6ICgpID0+IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcbiAgdG9OZWJ1bGFGZWF0dXJlOiAoZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gRmVhdHVyZTtcbiAgaWQ6IHN0cmluZztcbiAgaGVscGVyTGF5ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgLy8gZmxhZ3NcbiAgdXNlc01hcEV2ZW50cyA9IGZhbHNlO1xuICBlbmFibGVQaWNraW5nID0gZmFsc2U7XG4gIGVuYWJsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAvL1xuXG4gIGNvbnN0cnVjdG9yKHsgZ2V0RGF0YSwgb24sIHRvTmVidWxhRmVhdHVyZSB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gdXVpZC52NCgpO1xuICAgIHRoaXMuZ2V0RGF0YSA9IGdldERhdGE7XG4gICAgdGhpcy50b05lYnVsYUZlYXR1cmUgPSB0b05lYnVsYUZlYXR1cmU7XG4gICAgdGhpcy5oZWxwZXJMYXllcnMgPSBbXTtcblxuICAgIGlmIChvbikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXMob24pLmZvckVhY2goKGtleSkgPT4gdGhpcy5vbihrZXksIG9uW2tleV0pKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist-es6/lib/nebula.js b/modules/main/dist-es6/lib/nebula.js new file mode 100644 index 000000000..4fe194a8c --- /dev/null +++ b/modules/main/dist-es6/lib/nebula.js @@ -0,0 +1,413 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _events = require("events"); + +var _document = _interopRequireDefault(require("global/document")); + +var _core = require("@deck.gl/core"); + +var _deckDrawer = _interopRequireDefault(require("./deck-renderer/deck-drawer")); + +var _layerMouseEvent = _interopRequireDefault(require("./layer-mouse-event")); + +var _nebulaLayer = _interopRequireDefault(require("./nebula-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 LOGGER_PREFIX = 'Nebula: '; + +var Nebula = /*#__PURE__*/function () { + function Nebula() { + var _this = this; + + _classCallCheck(this, Nebula); + + _defineProperty(this, "props", void 0); + + _defineProperty(this, "deckgl", void 0); + + _defineProperty(this, "mainContainer", void 0); + + _defineProperty(this, "deckglMouseOverInfo", void 0); + + _defineProperty(this, "_deckDrawer", void 0); + + _defineProperty(this, "_mouseWasDown", void 0); + + _defineProperty(this, "wmViewport", void 0); + + _defineProperty(this, "queryObjectEvents", new _events.EventEmitter()); + + _defineProperty(this, "forceUpdate", void 0); + + _defineProperty(this, "inited", void 0); + + _defineProperty(this, "_onMouseEvent", function (event) { + if (!_this._isNebulaEvent(event)) { + return; + } + + if (event.type === 'mousedown') { + _this._mouseWasDown = true; + } // offsetX/Y of the MouseEvent provides the offset in the X/Y coordinate + // of the mouse pointer between that event and the padding edge of the target node. + // We set our listener to document so we need to adjust offsetX/Y + // in case the target is not be our WebGL canvas. + + + var _ref = _this.mainContainer ? _this.mainContainer.getBoundingClientRect() : {}, + _ref$top = _ref.top, + top = _ref$top === void 0 ? 0 : _ref$top, + _ref$left = _ref.left, + left = _ref$left === void 0 ? 0 : _ref$left; + + var proxyEvent = new Proxy(event, { + get: function get(original, propertyName) { + if (propertyName === 'offsetX') { + return original.pageX - left; + } + + if (propertyName === 'offsetY') { + return original.pageY - top; + } // TODO: Properly use pointer events + + + if (propertyName === 'type') { + return original.type.replace('pointer', 'mouse'); + } + + var result = original[propertyName]; + + if (typeof result === 'function') { + return result.bind(original); + } + + return result; + } + }); + + _this._handleDeckGLEvent(proxyEvent); + }); + } + + _createClass(Nebula, [{ + key: "init", + value: function init(props) { + var _this2 = this; + + this.props = props; + this.wmViewport = new _core.WebMercatorViewport(this.props.viewport); // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown'] + + ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) { + return _document["default"].addEventListener(name, _this2._onMouseEvent, true); + }); + } + }, { + key: "detach", + value: function detach() { + var _this3 = this; + + // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown'] + ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) { + return _document["default"].removeEventListener(name, _this3._onMouseEvent, true); + }); + } + }, { + key: "updateProps", + value: function updateProps(newProps) { + this.props = newProps; + var viewport = this.props.viewport; + this.wmViewport = new _core.WebMercatorViewport(viewport); + } + }, { + key: "log", + value: function log(message) { + var logger = this.props.logger; + + if (logger && logger.info) { + logger.info(LOGGER_PREFIX + message); + } + } + }, { + key: "updateAllDeckObjects", + value: function updateAllDeckObjects() { + this.getAllLayers().forEach(function (layer) { + if (layer && layer.deckCache) { + layer.deckCache.updateAllDeckObjects(); + } + }); + this.forceUpdate(); + } + }, { + key: "updateDeckObjectsByIds", + value: function updateDeckObjectsByIds(ids) { + this.getAllLayers().forEach(function (layer) { + if (layer && layer.deckCache) { + layer.deckCache.updateDeckObjectsByIds(ids); + } + }); + this.forceUpdate(); + } + }, { + key: "rerenderLayers", + value: function rerenderLayers() { + this.updateAllDeckObjects(); + } + }, { + key: "_isNebulaEvent", + value: function _isNebulaEvent(_ref2) { + var buttons = _ref2.buttons, + target = _ref2.target, + type = _ref2.type; + var viewport = this.props.viewport; // allow mouseup event aggressively to cancel drag properly + // TODO: use pointer capture setPointerCapture() to capture mouseup properly after deckgl + + if (this._mouseWasDown && type === 'mouseup') { + this._mouseWasDown = false; + return true; + } // allow mousemove event while dragging + + + if (type === 'mousemove' && buttons > 0) { + return true; + } + + if (!target.getBoundingClientRect) { + return false; + } + + var rect = target.getBoundingClientRect(); // Only listen to events coming from the basemap + // identified by the canvas of the same size as viewport. + // Need to round the rect dimension as some monitors + // have some sub-pixel difference with viewport. + + return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height); + } + }, { + key: "getMouseGroundPosition", + value: function getMouseGroundPosition(event) { + return this.wmViewport.unproject([event.offsetX, event.offsetY]); + } + }, { + key: "unprojectMousePosition", + value: function unprojectMousePosition(mousePosition) { + // @ts-ignore + return this.wmViewport.unproject(mousePosition); + } + }, { + key: "_handleDeckGLEvent", + value: function _handleDeckGLEvent(event) { + var deckgl = this.deckgl, + _this$props = this.props, + onMapMouseEvent = _this$props.onMapMouseEvent, + selectionType = _this$props.selectionType, + eventFilter = _this$props.eventFilter; + var sendMapEvent = true; + var cursor = 'auto'; + + if (event && deckgl && selectionType) { + if (!this._deckDrawer) this._deckDrawer = new _deckDrawer["default"](this); + var lngLat = this.getMouseGroundPosition(event); + if (eventFilter && !eventFilter(lngLat, event)) return; // @ts-ignore + + var drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType); + + if (drawerResult.redraw) this.forceUpdate(); + return; + } + + if (event && deckgl && (!event.buttons || event.type !== 'mousemove')) { + // TODO: sort by mouse priority + var layerIds = deckgl.props.layers.filter(function (l) { + return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking; + }).map(function (l) { + return l.id; + }); + var pickingInfo = deckgl.pickObject({ + x: event.offsetX, + y: event.offsetY, + radius: 5, + layerIds: layerIds + }); + this.queryObjectEvents.emit('pick', { + event: event, + pickingInfo: pickingInfo + }); + + if (pickingInfo) { + sendMapEvent = false; + var index = pickingInfo.index, + _lngLat = pickingInfo.lngLat; + if (eventFilter && !eventFilter(_lngLat, event)) return; + var deckLayer = pickingInfo.layer, + object = pickingInfo.object; + + if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) { + deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo); + } + + var original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index]; + + if (original) { + this.deckglMouseOverInfo = { + originalLayer: deckLayer.props.nebulaLayer, + index: index + }; // @ts-ignore + + var nebulaMouseEvent = new _layerMouseEvent["default"](event, { + data: original, + metadata: object.metadata, + groundPoint: _lngLat, + nebula: this + }); + deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent); + this.forceUpdate(); + } + + cursor = 'pointer'; + } + } + + if (_document["default"].documentElement) { + _document["default"].documentElement.style.cursor = cursor; + } + + if (sendMapEvent) { + this.deckglMouseOverInfo = null; + + var _lngLat2 = this.getMouseGroundPosition(event); + + if (eventFilter && !eventFilter(_lngLat2, event)) return; // send to layers first + // @ts-ignore + + var _nebulaMouseEvent = new _layerMouseEvent["default"](event, { + groundPoint: _lngLat2, + nebula: this + }); + + this.getAllLayers().filter(function (layer) { + return layer && layer.usesMapEvents; + }).forEach(function (layer) { + return layer.emit('mapMouseEvent', _nebulaMouseEvent); + }); + this.getAllLayers().filter(function (layer) { + return layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent; + }).forEach(function (layer) { + return layer.props.nebulaLayer.mapMouseEvent(_nebulaMouseEvent, layer); + }); + + if (onMapMouseEvent) { + onMapMouseEvent(event, _lngLat2); + } + } + } + }, { + key: "getExtraDeckLayers", + value: function getExtraDeckLayers() { + var result = []; + if (this._deckDrawer) result.push.apply(result, _toConsumableArray(this._deckDrawer.render())); + return result; + } + }, { + key: "renderDeckLayers", + value: function renderDeckLayers() { + var _this4 = this; + + return this.getAllLayers().map(function (layer) { + return layer instanceof _nebulaLayer["default"] ? layer.render({ + nebula: _this4 + }) : layer; + }).filter(Boolean); + } + }, { + key: "getAllLayers", + value: function getAllLayers() { + var result = []; + this.props.layers.filter(Boolean).forEach(function (layer) { + result.push(layer); // Only NebulaLayers have helpers, Deck GL layers don't. + + if (layer instanceof _nebulaLayer["default"]) { + result.push.apply(result, _toConsumableArray(layer.helperLayers)); + } + }); + return result.filter(Boolean); + } + }, { + key: "getRenderedLayers", + value: function getRenderedLayers() { + return [].concat(_toConsumableArray(this.renderDeckLayers()), _toConsumableArray(this.getExtraDeckLayers())); + } + }, { + key: "updateAndGetRenderedLayers", + value: function updateAndGetRenderedLayers(layers, viewport, container) { + if (this.inited) { + this.updateProps({ + layers: layers, + viewport: viewport + }); + + this.forceUpdate = function () { + return container.forceUpdate(); + }; + } else { + this.inited = true; + this.init({ + layers: layers, + viewport: viewport + }); + + this.forceUpdate = function () { + return container.forceUpdate(); + }; + + this.updateAllDeckObjects(); + } + + return this.getRenderedLayers(); + } + }, { + key: "setDeck", + value: function setDeck(deckgl) { + if (deckgl) { + this.deckgl = deckgl; + } + } + }, { + key: "setMainContainer", + value: function setMainContainer(mainContainer) { + if (mainContainer) { + this.mainContainer = mainContainer; + } + } + }]); + + return Nebula; +}(); + +exports["default"] = Nebula; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLnRzIl0sIm5hbWVzIjpbIkxPR0dFUl9QUkVGSVgiLCJOZWJ1bGEiLCJFdmVudEVtaXR0ZXIiLCJldmVudCIsIl9pc05lYnVsYUV2ZW50IiwidHlwZSIsIl9tb3VzZVdhc0Rvd24iLCJtYWluQ29udGFpbmVyIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwibGVmdCIsInByb3h5RXZlbnQiLCJQcm94eSIsImdldCIsIm9yaWdpbmFsIiwicHJvcGVydHlOYW1lIiwicGFnZVgiLCJwYWdlWSIsInJlcGxhY2UiLCJyZXN1bHQiLCJiaW5kIiwiX2hhbmRsZURlY2tHTEV2ZW50IiwicHJvcHMiLCJ3bVZpZXdwb3J0IiwiV2ViTWVyY2F0b3JWaWV3cG9ydCIsInZpZXdwb3J0IiwiZm9yRWFjaCIsIm5hbWUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25Nb3VzZUV2ZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld1Byb3BzIiwibWVzc2FnZSIsImxvZ2dlciIsImluZm8iLCJnZXRBbGxMYXllcnMiLCJsYXllciIsImRlY2tDYWNoZSIsInVwZGF0ZUFsbERlY2tPYmplY3RzIiwiZm9yY2VVcGRhdGUiLCJpZHMiLCJ1cGRhdGVEZWNrT2JqZWN0c0J5SWRzIiwiYnV0dG9ucyIsInRhcmdldCIsInJlY3QiLCJNYXRoIiwicm91bmQiLCJ3aWR0aCIsImhlaWdodCIsInVucHJvamVjdCIsIm9mZnNldFgiLCJvZmZzZXRZIiwibW91c2VQb3NpdGlvbiIsImRlY2tnbCIsIm9uTWFwTW91c2VFdmVudCIsInNlbGVjdGlvblR5cGUiLCJldmVudEZpbHRlciIsInNlbmRNYXBFdmVudCIsImN1cnNvciIsIl9kZWNrRHJhd2VyIiwiRGVja0RyYXdlciIsImxuZ0xhdCIsImdldE1vdXNlR3JvdW5kUG9zaXRpb24iLCJkcmF3ZXJSZXN1bHQiLCJoYW5kbGVFdmVudCIsInJlZHJhdyIsImxheWVySWRzIiwibGF5ZXJzIiwiZmlsdGVyIiwibCIsIm5lYnVsYUxheWVyIiwiZW5hYmxlUGlja2luZyIsIm1hcCIsImlkIiwicGlja2luZ0luZm8iLCJwaWNrT2JqZWN0IiwieCIsInkiLCJyYWRpdXMiLCJxdWVyeU9iamVjdEV2ZW50cyIsImVtaXQiLCJpbmRleCIsImRlY2tMYXllciIsIm9iamVjdCIsImV2ZW50SGFuZGxlciIsIm9yaWdpbmFscyIsImRlY2tnbE1vdXNlT3ZlckluZm8iLCJvcmlnaW5hbExheWVyIiwibmVidWxhTW91c2VFdmVudCIsIkxheWVyTW91c2VFdmVudCIsImRhdGEiLCJtZXRhZGF0YSIsImdyb3VuZFBvaW50IiwibmVidWxhIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJ1c2VzTWFwRXZlbnRzIiwibWFwTW91c2VFdmVudCIsInB1c2giLCJyZW5kZXIiLCJOZWJ1bGFMYXllciIsIkJvb2xlYW4iLCJoZWxwZXJMYXllcnMiLCJyZW5kZXJEZWNrTGF5ZXJzIiwiZ2V0RXh0cmFEZWNrTGF5ZXJzIiwiY29udGFpbmVyIiwiaW5pdGVkIiwidXBkYXRlUHJvcHMiLCJpbml0IiwiZ2V0UmVuZGVyZWRMYXllcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFVBQXRCOztJQUVxQkMsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0NBZ0NlLElBQUlDLG9CQUFKLEU7Ozs7OzsyQ0ErRGxCLFVBQUNDLEtBQUQsRUFBOEI7QUFDNUMsVUFBSSxDQUFDLEtBQUksQ0FBQ0MsY0FBTCxDQUFvQkQsS0FBcEIsQ0FBTCxFQUFpQztBQUMvQjtBQUNEOztBQUVELFVBQUlBLEtBQUssQ0FBQ0UsSUFBTixLQUFlLFdBQW5CLEVBQWdDO0FBQzlCLFFBQUEsS0FBSSxDQUFDQyxhQUFMLEdBQXFCLElBQXJCO0FBQ0QsT0FQMkMsQ0FTNUM7QUFDQTtBQUNBO0FBQ0E7OztBQVo0QyxpQkFhZCxLQUFJ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QixLQUFLLENBQUNrRSxZQUFmLEVBQU47QUFDRDtBQUNGLE9BTkQ7QUFRQSxhQUFPcEYsTUFBTSxDQUFDa0QsTUFBUCxDQUFjaUMsT0FBZCxDQUFQO0FBQ0Q7Ozt3Q0FFbUI7QUFDbEIsMENBQVcsS0FBS0UsZ0JBQUwsRUFBWCxzQkFBdUMsS0FBS0Msa0JBQUwsRUFBdkM7QUFDRDs7OytDQUdDckMsTSxFQUNBM0MsUSxFQUNBaUYsUyxFQUNBO0FBQ0EsVUFBSSxLQUFLQyxNQUFULEVBQWlCO0FBQ2YsYUFBS0MsV0FBTCxDQUFpQjtBQUFFeEMsVUFBQUEsTUFBTSxFQUFOQSxNQUFGO0FBQVUzQyxVQUFBQSxRQUFRLEVBQVJBO0FBQVYsU0FBakI7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7QUFDRCxPQUhELE1BR087QUFDTCxhQUFLbUUsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLRSxJQUFMLENBQVU7QUFBRXpDLFVBQUFBLE1BQU0sRUFBTkEsTUFBRjtBQUFVM0MsVUFBQUEsUUFBUSxFQUFSQTtBQUFWLFNBQVY7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7O0FBQ0EsYUFBS0Qsb0JBQUw7QUFDRDs7QUFFRCxhQUFPLEtBQUt1RSxpQkFBTCxFQUFQO0FBQ0Q7Ozs0QkFFT3hELE0sRUFBb0M7QUFDMUMsVUFBSUEsTUFBSixFQUFZO0FBQ1YsYUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7QUFDRjs7O3FDQUVnQi9DLGEsRUFBMkM7QUFDMUQsVUFBSUEsYUFBSixFQUFtQjtBQUNqQixhQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuXG5pbXBvcnQgZG9jdW1lbnQgZnJvbSAnZ2xvYmFsL2RvY3VtZW50JztcbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgeyBXZWJNZXJjYXRvclZpZXdwb3J0IH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5cbmltcG9ydCBEZWNrRHJhd2VyIGZyb20gJy4vZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5pbXBvcnQgTGF5ZXJNb3VzZUV2ZW50IGZyb20gJy4vbGF5ZXItbW91c2UtZXZlbnQnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4vbmVidWxhLWxheWVyJztcblxuY29uc3QgTE9HR0VSX1BSRUZJWCA9ICdOZWJ1bGE6ICc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5lYnVsYSB7XG4gIGluaXQocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodGhpcy5wcm9wcy52aWV3cG9ydCk7XG5cbiAgICAvLyBUT0RPOiBQcm9wZXJseSB1c2UgcG9pbnRlciBldmVudHM6IFsnY2xpY2snLCAncG9pbnRlcm1vdmUnLCAncG9pbnRlcnVwJywgJ3BvaW50ZXJkb3duJ11cbiAgICBbJ2NsaWNrJywgJ21vdXNlbW92ZScsICdtb3VzZXVwJywgJ21vdXNlZG93biddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIHRoaXMuX29uTW91c2VFdmVudCwgdHJ1ZSlcbiAgICApO1xuICB9XG5cbiAgZGV0YWNoKCkge1xuICAgIC8vIFRPRE86IFByb3Blcmx5IHVzZSBwb2ludGVyIGV2ZW50czogWydjbGljaycsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnLCAncG9pbnRlcmRvd24nXVxuICAgIFsnY2xpY2snLCAnbW91c2Vtb3ZlJywgJ21vdXNldXAnLCAnbW91c2Vkb3duJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgdGhpcy5fb25Nb3VzZUV2ZW50LCB0cnVlKVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVQcm9wcyhuZXdQcm9wczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucHJvcHMgPSBuZXdQcm9wcztcbiAgICBjb25zdCB7IHZpZXdwb3J0IH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodmlld3BvcnQpO1xuICB9XG5cbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGRlY2tnbDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gIG1haW5Db250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICBkZWNrZ2xNb3VzZU92ZXJJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2RlY2tEcmF3ZXI6IERlY2tEcmF3ZXI7XG4gIF9tb3VzZVdhc0Rvd246IGJvb2xlYW47XG4gIHdtVmlld3BvcnQ6IFdlYk1lcmNhdG9yVmlld3BvcnQ7XG4gIHF1ZXJ5T2JqZWN0RXZlbnRzOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZvcmNlVXBkYXRlOiBGdW5jdGlvbjtcbiAgaW5pdGVkOiBib29sZWFuO1xuXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAobG9nZ2VyICYmIGxvZ2dlci5pbmZvKSB7XG4gICAgICBsb2dnZXIuaW5mbyhMT0dHRVJfUFJFRklYICsgbWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQWxsRGVja09iamVjdHMoKSB7XG4gICAgdGhpcy5nZXRBbGxMYXllcnMoKS5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyICYmIGxheWVyLmRlY2tDYWNoZSkge1xuICAgICAgICAobGF5ZXIuZGVja0NhY2hlIGFzIGFueSkudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmdldEFsbExheWVycygpLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIuZGVja0NhY2hlKSB7XG4gICAgICAgIChsYXllci5kZWNrQ2FjaGUgYXMgYW55KS51cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgcmVyZW5kZXJMYXllcnMoKSB7XG4gICAgdGhpcy51cGRhdGVBbGxEZWNrT2JqZWN0cygpO1xuICB9XG5cbiAgX2lzTmVidWxhRXZlbnQoeyBidXR0b25zLCB0YXJnZXQsIHR5cGUgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBhbGxvdyBtb3VzZXVwIGV2ZW50IGFnZ3Jlc3NpdmVseSB0byBjYW5jZWwgZHJhZyBwcm9wZXJseVxuICAgIC8vIFRPRE86IHVzZSBwb2ludGVyIGNhcHR1cmUgc2V0UG9pbnRlckNhcHR1cmUoKSB0byBjYXB0dXJlIG1vdXNldXAgcHJvcGVybHkgYWZ0ZXIgZGVja2dsXG4gICAgaWYgKHRoaXMuX21vdXNlV2FzRG93biAmJiB0eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIHRoaXMuX21vdXNlV2FzRG93biA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgbW91c2Vtb3ZlIGV2ZW50IHdoaWxlIGRyYWdnaW5nXG4gICAgaWYgKHR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGJ1dHRvbnMgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIC8vIE9ubHkgbGlzdGVuIHRvIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgYmFzZW1hcFxuICAgIC8vIGlkZW50aWZpZWQgYnkgdGhlIGNhbnZhcyBvZiB0aGUgc2FtZSBzaXplIGFzIHZpZXdwb3J0LlxuICAgIC8vIE5lZWQgdG8gcm91bmQgdGhlIHJlY3QgZGltZW5zaW9uIGFzIHNvbWUgbW9uaXRvcnNcbiAgICAvLyBoYXZlIHNvbWUgc3ViLXBpeGVsIGRpZmZlcmVuY2Ugd2l0aCB2aWV3cG9ydC5cbiAgICByZXR1cm4gKFxuICAgICAgTWF0aC5yb3VuZChyZWN0LndpZHRoKSA9PT0gTWF0aC5yb3VuZCh2aWV3cG9ydC53aWR0aCkgJiZcbiAgICAgIE1hdGgucm91bmQocmVjdC5oZWlnaHQpID09PSBNYXRoLnJvdW5kKHZpZXdwb3J0LmhlaWdodClcbiAgICApO1xuICB9XG5cbiAgX29uTW91c2VFdmVudCA9IChldmVudDogd2luZG93Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzTmVidWxhRXZlbnQoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nKSB7XG4gICAgICB0aGlzLl9tb3VzZVdhc0Rvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIG9mZnNldFgvWSBvZiB0aGUgTW91c2VFdmVudCBwcm92aWRlcyB0aGUgb2Zmc2V0IGluIHRoZSBYL1kgY29vcmRpbmF0ZVxuICAgIC8vIG9mIHRoZSBtb3VzZSBwb2ludGVyIGJldHdlZW4gdGhhdCBldmVudCBhbmQgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgLy8gV2Ugc2V0IG91ciBsaXN0ZW5lciB0byBkb2N1bWVudCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBvZmZzZXRYL1lcbiAgICAvLyBpbiBjYXNlIHRoZSB0YXJnZXQgaXMgbm90IGJlIG91ciBXZWJHTCBjYW52YXMuXG4gICAgY29uc3QgeyB0b3AgPSAwLCBsZWZ0ID0gMCB9ID0gdGhpcy5tYWluQ29udGFpbmVyXG4gICAgICA/IHRoaXMubWFpbkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBwcm94eUV2ZW50ID0gbmV3IFByb3h5KGV2ZW50LCB7XG4gICAgICBnZXQ6IChvcmlnaW5hbDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSAnb2Zmc2V0WCcpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWwucGFnZVggLSBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ29mZnNldFknKSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLnBhZ2VZIC0gdG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogUHJvcGVybHkgdXNlIHBvaW50ZXIgZXZlbnRzXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICd0eXBlJykge1xuICAgICAgICAgIHJldHVybiBvcmlnaW5hbC50eXBlLnJlcGxhY2UoJ3BvaW50ZXInLCAnbW91c2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5iaW5kKG9yaWdpbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hhbmRsZURlY2tHTEV2ZW50KHByb3h5RXZlbnQpO1xuICB9O1xuXG4gIGdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICByZXR1cm4gdGhpcy53bVZpZXdwb3J0LnVucHJvamVjdChbZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WV0pO1xuICB9XG5cbiAgdW5wcm9qZWN0TW91c2VQb3NpdGlvbihtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLndtVmlld3BvcnQudW5wcm9qZWN0KG1vdXNlUG9zaXRpb24pO1xuICB9XG5cbiAgX2hhbmRsZURlY2tHTEV2ZW50KGV2ZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3Qge1xuICAgICAgZGVja2dsLFxuICAgICAgcHJvcHM6IHsgb25NYXBNb3VzZUV2ZW50LCBzZWxlY3Rpb25UeXBlLCBldmVudEZpbHRlciB9LFxuICAgIH0gPSB0aGlzO1xuICAgIGxldCBzZW5kTWFwRXZlbnQgPSB0cnVlO1xuICAgIGxldCBjdXJzb3IgPSAnYXV0byc7XG5cbiAgICBpZiAoZXZlbnQgJiYgZGVja2dsICYmIHNlbGVjdGlvblR5cGUpIHtcbiAgICAgIGlmICghdGhpcy5fZGVja0RyYXdlcikgdGhpcy5fZGVja0RyYXdlciA9IG5ldyBEZWNrRHJhd2VyKHRoaXMpO1xuXG4gICAgICBjb25zdCBsbmdMYXQgPSB0aGlzLmdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQpO1xuICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZHJhd2VyUmVzdWx0ID0gdGhpcy5fZGVja0RyYXdlci5oYW5kbGVFdmVudChldmVudCwgbG5nTGF0LCBzZWxlY3Rpb25UeXBlKTtcbiAgICAgIGlmIChkcmF3ZXJSZXN1bHQucmVkcmF3KSB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50ICYmIGRlY2tnbCAmJiAoIWV2ZW50LmJ1dHRvbnMgfHwgZXZlbnQudHlwZSAhPT0gJ21vdXNlbW92ZScpKSB7XG4gICAgICAvLyBUT0RPOiBzb3J0IGJ5IG1vdXNlIHByaW9yaXR5XG4gICAgICBjb25zdCBsYXllcklkcyA9IGRlY2tnbC5wcm9wcy5sYXllcnNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAobDogYW55KSA9PiBsICYmIGwucHJvcHMgJiYgbC5wcm9wcy5uZWJ1bGFMYXllciAmJiBsLnByb3BzLm5lYnVsYUxheWVyLmVuYWJsZVBpY2tpbmdcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsOiBhbnkpID0+IGwuaWQpO1xuXG4gICAgICBjb25zdCBwaWNraW5nSW5mbyA9IGRlY2tnbC5waWNrT2JqZWN0KHtcbiAgICAgICAgeDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgeTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgcmFkaXVzOiA1LFxuICAgICAgICBsYXllcklkcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWVyeU9iamVjdEV2ZW50cy5lbWl0KCdwaWNrJywgeyBldmVudCwgcGlja2luZ0luZm8gfSk7XG4gICAgICBpZiAocGlja2luZ0luZm8pIHtcbiAgICAgICAgc2VuZE1hcEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBpbmRleCwgbG5nTGF0IH0gPSBwaWNraW5nSW5mbztcbiAgICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgbGF5ZXI6IGRlY2tMYXllciwgb2JqZWN0IH0gPSBwaWNraW5nSW5mbztcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGVja0xheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmV2ZW50SGFuZGxlclxuICAgICAgICApIHtcbiAgICAgICAgICBkZWNrTGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZXZlbnRIYW5kbGVyKGV2ZW50LCBwaWNraW5nSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9XG4gICAgICAgICAgb2JqZWN0Lm9yaWdpbmFsIHx8XG4gICAgICAgICAgKGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZSAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZS5vcmlnaW5hbHNbaW5kZXhdKTtcblxuICAgICAgICBpZiAob3JpZ2luYWwpIHtcbiAgICAgICAgICB0aGlzLmRlY2tnbE1vdXNlT3ZlckluZm8gPSB7IG9yaWdpbmFsTGF5ZXI6IGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciwgaW5kZXggfTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgY29uc3QgbmVidWxhTW91c2VFdmVudCA9IG5ldyBMYXllck1vdXNlRXZlbnQoZXZlbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IG9yaWdpbmFsLFxuICAgICAgICAgICAgbWV0YWRhdGE6IG9iamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgICAgICBuZWJ1bGE6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmVtaXQoZXZlbnQudHlwZSwgbmVidWxhTW91c2VFdmVudCk7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSBjdXJzb3I7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRNYXBFdmVudCkge1xuICAgICAgdGhpcy5kZWNrZ2xNb3VzZU92ZXJJbmZvID0gbnVsbDtcblxuICAgICAgY29uc3QgbG5nTGF0ID0gdGhpcy5nZXRNb3VzZUdyb3VuZFBvc2l0aW9uKGV2ZW50KTtcbiAgICAgIGlmIChldmVudEZpbHRlciAmJiAhZXZlbnRGaWx0ZXIobG5nTGF0LCBldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2VuZCB0byBsYXllcnMgZmlyc3RcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IG5lYnVsYU1vdXNlRXZlbnQgPSBuZXcgTGF5ZXJNb3VzZUV2ZW50KGV2ZW50LCB7XG4gICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgIG5lYnVsYTogdGhpcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nZXRBbGxMYXllcnMoKVxuICAgICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIgJiYgbGF5ZXIudXNlc01hcEV2ZW50cylcbiAgICAgICAgLmZvckVhY2goKGxheWVyKSA9PiBsYXllci5lbWl0KCdtYXBNb3VzZUV2ZW50JywgbmVidWxhTW91c2VFdmVudCkpO1xuXG4gICAgICB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgbGF5ZXIgJiYgbGF5ZXIucHJvcHMgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudFxuICAgICAgICApXG4gICAgICAgIC5mb3JFYWNoKChsYXllcikgPT4gbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudChuZWJ1bGFNb3VzZUV2ZW50LCBsYXllcikpO1xuXG4gICAgICBpZiAob25NYXBNb3VzZUV2ZW50KSB7XG4gICAgICAgIG9uTWFwTW91c2VFdmVudChldmVudCwgbG5nTGF0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYURlY2tMYXllcnMoKTogUmVjb3JkPHN0cmluZywgYW55PltdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGlmICh0aGlzLl9kZWNrRHJhd2VyKSByZXN1bHQucHVzaCguLi50aGlzLl9kZWNrRHJhd2VyLnJlbmRlcigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZW5kZXJEZWNrTGF5ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAubWFwKChsYXllcikgPT4gKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIgPyBsYXllci5yZW5kZXIoeyBuZWJ1bGE6IHRoaXMgfSkgOiBsYXllcikpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0QWxsTGF5ZXJzKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgdGhpcy5wcm9wcy5sYXllcnMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICByZXN1bHQucHVzaChsYXllcik7XG4gICAgICAvLyBPbmx5IE5lYnVsYUxheWVycyBoYXZlIGhlbHBlcnMsIERlY2sgR0wgbGF5ZXJzIGRvbid0LlxuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ubGF5ZXIuaGVscGVyTGF5ZXJzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZWRMYXllcnMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlbmRlckRlY2tMYXllcnMoKSwgLi4udGhpcy5nZXRFeHRyYURlY2tMYXllcnMoKV07XG4gIH1cblxuICB1cGRhdGVBbmRHZXRSZW5kZXJlZExheWVycyhcbiAgICBsYXllcnM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICB2aWV3cG9ydDogV2ViTWVyY2F0b3JWaWV3cG9ydCxcbiAgICBjb250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3BzKHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pbml0KHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJlZExheWVycygpO1xuICB9XG5cbiAgc2V0RGVjayhkZWNrZ2w6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsKSB7XG4gICAgaWYgKGRlY2tnbCkge1xuICAgICAgdGhpcy5kZWNrZ2wgPSBkZWNrZ2w7XG4gICAgfVxuICB9XG5cbiAgc2V0TWFpbkNvbnRhaW5lcihtYWluQ29udGFpbmVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCkge1xuICAgIGlmIChtYWluQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLm1haW5Db250YWluZXIgPSBtYWluQ29udGFpbmVyO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist-es6/lib/style.js b/modules/main/dist-es6/lib/style.js new file mode 100644 index 000000000..f3bfb47d2 --- /dev/null +++ b/modules/main/dist-es6/lib/style.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DEFAULT_STYLE = exports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0; +// Describes the arrow style of polylines +var ArrowStyles = { + NONE: 0, + FORWARD: 1, + BACKWARD: 2, + BOTH: 3 +}; +exports.ArrowStyles = ArrowStyles; +var DEFAULT_ARROWS = 1; +exports.DEFAULT_ARROWS = DEFAULT_ARROWS; +var MAX_ARROWS = 3; +exports.MAX_ARROWS = MAX_ARROWS; +var DEFAULT_STYLE = { + arrowColor: [0, 0, 0, 1], + arrowCount: DEFAULT_ARROWS, + arrowStyle: ArrowStyles.NONE, + fillColor: [0, 0, 0, 1], + lineColor: [0, 0, 0, 1], + lineWidthMeters: 5, + outlineRadiusMeters: 0, + opacity: 1, + zLevel: 0 +}; +exports.DEFAULT_STYLE = DEFAULT_STYLE; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3R5bGUudHMiXSwibmFtZXMiOlsiQXJyb3dTdHlsZXMiLCJOT05FIiwiRk9SV0FSRCIsIkJBQ0tXQVJEIiwiQk9USCIsIkRFRkFVTFRfQVJST1dTIiwiTUFYX0FSUk9XUyIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvbG9yIiwiYXJyb3dDb3VudCIsImFycm93U3R5bGUiLCJmaWxsQ29sb3IiLCJsaW5lQ29sb3IiLCJsaW5lV2lkdGhNZXRlcnMiLCJvdXRsaW5lUmFkaXVzTWV0ZXJzIiwib3BhY2l0eSIsInpMZXZlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDTyxJQUFNQSxXQUFXLEdBQUc7QUFDekJDLEVBQUFBLElBQUksRUFBRSxDQURtQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLENBRmdCO0FBR3pCQyxFQUFBQSxRQUFRLEVBQUUsQ0FIZTtBQUl6QkMsRUFBQUEsSUFBSSxFQUFFO0FBSm1CLENBQXBCOztBQU9BLElBQU1DLGNBQWMsR0FBRyxDQUF2Qjs7QUFDQSxJQUFNQyxVQUFVLEdBQUcsQ0FBbkI7O0FBRUEsSUFBTUMsYUFBYSxHQUFHO0FBQzNCQyxFQUFBQSxVQUFVLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLENBRGU7QUFFM0JDLEVBQUFBLFVBQVUsRUFBRUosY0FGZTtBQUczQkssRUFBQUEsVUFBVSxFQUFFVixXQUFXLENBQUNDLElBSEc7QUFJM0JVLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FKZ0I7QUFLM0JDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FMZ0I7QUFNM0JDLEVBQUFBLGVBQWUsRUFBRSxDQU5VO0FBTzNCQyxFQUFBQSxtQkFBbUIsRUFBRSxDQVBNO0FBUTNCQyxFQUFBQSxPQUFPLEVBQUUsQ0FSa0I7QUFTM0JDLEVBQUFBLE1BQU0sRUFBRTtBQVRtQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RZTEUgPSB7XG4gIGFycm93Q29sb3I6IFswLCAwLCAwLCAxXSxcbiAgYXJyb3dDb3VudDogREVGQVVMVF9BUlJPV1MsXG4gIGFycm93U3R5bGU6IEFycm93U3R5bGVzLk5PTkUsXG4gIGZpbGxDb2xvcjogWzAsIDAsIDAsIDFdLFxuICBsaW5lQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgbGluZVdpZHRoTWV0ZXJzOiA1LFxuICBvdXRsaW5lUmFkaXVzTWV0ZXJzOiAwLFxuICBvcGFjaXR5OiAxLFxuICB6TGV2ZWw6IDAsXG59O1xuIl19 \ No newline at end of file diff --git a/modules/main/dist-es6/lib/utils.js b/modules/main/dist-es6/lib/utils.js new file mode 100644 index 000000000..dce8b27d8 --- /dev/null +++ b/modules/main/dist-es6/lib/utils.js @@ -0,0 +1,70 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOlsidG9EZWNrQ29sb3IiLCJjb2xvciIsImRlZmF1bHRDb2xvciIsIkFycmF5IiwiaXNBcnJheSIsInJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMiLCJhcnJheSIsInByZWZpeCIsImZuIiwiaSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxXQUFULENBQ0xDLEtBREssRUFHNkI7QUFBQSxNQURsQ0MsWUFDa0MsdUVBRGUsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLENBQVQsRUFBWSxHQUFaLENBQ2Y7O0FBQ2xDLE1BQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBWixFQUFpQkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLEdBQTVCLEVBQWlDQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBNUMsRUFBaURBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVyxHQUE1RCxDQUFQO0FBQ0QsQyxDQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSwrQkFBVCxDQUNMQyxLQURLLEVBRUxDLE1BRkssRUFHTEMsRUFISyxFQUlMO0FBQ0EsTUFBSSxDQUFDTCxLQUFLLENBQUNDLE9BQU4sQ0FBY0UsS0FBSyxDQUFDLENBQUQsQ0FBbkIsQ0FBTCxFQUE4QjtBQUM1QixXQUFPLElBQVA7QUFDRDs7QUFDRCxPQUFLLElBQUlHLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILEtBQUssQ0FBQ0ksTUFBMUIsRUFBa0NELENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUosK0JBQStCLENBQUNDLEtBQUssQ0FBQ0csQ0FBRCxDQUFOLCtCQUFlRixNQUFmLElBQXVCRSxDQUF2QixJQUEyQkQsRUFBM0IsQ0FBbkMsRUFBbUU7QUFDakVBLE1BQUFBLEVBQUUsQ0FBQ0YsS0FBRCxFQUFRQyxNQUFSLENBQUY7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdG9EZWNrQ29sb3IoXG4gIGNvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMCwgMjU1XVxuKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb2xvcjtcbiAgfVxuICByZXR1cm4gW2NvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1XTtcbn1cblxuLy9cbi8vIGEgR2VvSlNPTiBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2l0aFxuLy8gYW4gYXJndW1lbnQgdGhhdCBpcyB0aGUgbW9zdCBkZWVwbHktbmVzdGVkIGFycmF5IGhhdmluZyBlbGVtZW50c1xuLy8gdGhhdCBhcmUgYXJyYXlzIG9mIHByaW1pdGl2ZXMgYXMgYW4gYXJndW1lbnQsIGUuZy5cbi8vXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcIk11bHRpUG9seWdvblwiLFxuLy8gICBcImNvb3JkaW5hdGVzXCI6IFtcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vLyAgICAgICBdLFxuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vLyAgICAgICBdXG4vLyAgIF1cbi8vIH1cbi8vXG4vLyB0aGUgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkIG9uOlxuLy9cbi8vIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vXG4vLyBhbmRcbi8vXG4vLyBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKFxuICBhcnJheTogQXJyYXk8YW55PixcbiAgcHJlZml4OiBBcnJheTxudW1iZXI+LFxuICBmbjogRnVuY3Rpb25cbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKGFycmF5W2ldLCBbLi4ucHJlZml4LCBpXSwgZm4pKSB7XG4gICAgICBmbihhcnJheSwgcHJlZml4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist-es6/types.js b/modules/main/dist-es6/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/main/dist-es6/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/main/dist-types/index.d.ts b/modules/main/dist-types/index.d.ts new file mode 100644 index 000000000..be17eddfc --- /dev/null +++ b/modules/main/dist-types/index.d.ts @@ -0,0 +1,49 @@ +export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './lib/style'; +export { SELECTION_TYPE } from './lib/deck-renderer/deck-drawer'; +export { default as Feature } from './lib/feature'; +export { default as LayerMouseEvent } from './lib/layer-mouse-event'; +export { default as NebulaLayer } from './lib/nebula-layer'; +export { default as JunctionsLayer } from './lib/layers/junctions-layer'; +export { default as TextsLayer } from './lib/layers/texts-layer'; +export { default as SegmentsLayer } from './lib/layers/segments-layer'; +export { default as NebulaCore } from './lib/nebula'; +export { toDeckColor } from './lib/utils'; +export type { Color, Style } from './types'; +export { EditableGeoJsonLayer } from '@nebula.gl/layers'; +export { SelectionLayer } from '@nebula.gl/layers'; +export { ElevatedEditHandleLayer } from '@nebula.gl/layers'; +export { PathOutlineLayer } from '@nebula.gl/layers'; +export { PathMarkerLayer } from '@nebula.gl/layers'; +export type { EditMode } from '@nebula.gl/edit-modes'; +export { GeoJsonEditMode } from '@nebula.gl/edit-modes'; +export { ModifyMode } from '@nebula.gl/edit-modes'; +export { ResizeCircleMode } from '@nebula.gl/edit-modes'; +export { TranslateMode } from '@nebula.gl/edit-modes'; +export { ScaleMode } from '@nebula.gl/edit-modes'; +export { RotateMode } from '@nebula.gl/edit-modes'; +export { DuplicateMode } from '@nebula.gl/edit-modes'; +export { ExtendLineStringMode } from '@nebula.gl/edit-modes'; +export { SplitPolygonMode } from '@nebula.gl/edit-modes'; +export { ExtrudeMode } from '@nebula.gl/edit-modes'; +export { ElevationMode } from '@nebula.gl/edit-modes'; +export { TransformMode } from '@nebula.gl/edit-modes'; +export { DrawPointMode } from '@nebula.gl/edit-modes'; +export { DrawLineStringMode } from '@nebula.gl/edit-modes'; +export { DrawPolygonMode } from '@nebula.gl/edit-modes'; +export { DrawRectangleMode } from '@nebula.gl/edit-modes'; +export { DrawSquareFromCenterMode } from '@nebula.gl/edit-modes'; +export { DrawCircleByDiameterMode } from '@nebula.gl/edit-modes'; +export { DrawCircleFromCenterMode } from '@nebula.gl/edit-modes'; +export { DrawEllipseByBoundingBoxMode } from '@nebula.gl/edit-modes'; +export { DrawEllipseUsingThreePointsMode } from '@nebula.gl/edit-modes'; +export { DrawRectangleUsingThreePointsMode } from '@nebula.gl/edit-modes'; +export { Draw90DegreePolygonMode } from '@nebula.gl/edit-modes'; +export { DrawPolygonByDraggingMode } from '@nebula.gl/edit-modes'; +export { ImmutableFeatureCollection } from '@nebula.gl/edit-modes'; +export { ViewMode } from '@nebula.gl/edit-modes'; +export { MeasureDistanceMode } from '@nebula.gl/edit-modes'; +export { MeasureAreaMode } from '@nebula.gl/edit-modes'; +export { MeasureAngleMode } from '@nebula.gl/edit-modes'; +export { CompositeMode } from '@nebula.gl/edit-modes'; +export { SnappableMode } from '@nebula.gl/edit-modes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/index.d.ts.map b/modules/main/dist-types/index.d.ts.map new file mode 100644 index 000000000..94abd7ae9 --- /dev/null +++ b/modules/main/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts b/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts new file mode 100644 index 000000000..9d890249c --- /dev/null +++ b/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts @@ -0,0 +1,15 @@ +export default class DeckCache { + objects: TCONV[]; + originals: TORIG[]; + updateTrigger: number; + _idToPosition: Map; + _getData: () => TORIG[]; + _convert: (arg0: TORIG) => TCONV; + constructor(getData: () => TORIG[], convert: (arg0: TORIG) => TCONV); + updateAllDeckObjects(): void; + updateDeckObjectsByIds(ids: string[]): void; + triggerUpdate(): void; + getDeckObjectById(id: string): TCONV | null | undefined; + getOriginalById(id: string): TORIG | null | undefined; +} +//# sourceMappingURL=deck-cache.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts.map b/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts.map new file mode 100644 index 000000000..ef0769141 --- /dev/null +++ b/modules/main/dist-types/lib/deck-renderer/deck-cache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"deck-cache.d.ts","sourceRoot":"","sources":["../../../src/lib/deck-renderer/deck-cache.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK;IACzC,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC;gBAErB,OAAO,EAAE,MAAM,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK;IAUnE,oBAAoB;IAgBpB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE;IAapC,aAAa;IAIb,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS;IAKvD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS;CAItD"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts b/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts new file mode 100644 index 000000000..ed79c503d --- /dev/null +++ b/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts @@ -0,0 +1,27 @@ +export declare const SELECTION_TYPE: { + NONE: any; + RECTANGLE: string; + POLYGON: string; +}; +export default class DeckDrawer { + nebula: Record; + usePolygon: boolean; + validPolygon: boolean; + landPoints: [number, number][]; + mousePoints: [number, number][]; + constructor(nebula: Record); + _getLayerIds(): any; + _selectFromPickingInfos(pickingInfos: Record[]): void; + _getBoundingBox(): Record; + _selectRectangleObjects(): void; + _selectPolygonObjects(): void; + _getMousePosFromEvent(event: Record): [number, number]; + handleEvent(event: Record, lngLat: [number, number], selectionType: number): { + redraw: boolean; + deactivate: boolean; + }; + reset(): void; + _makeStartPointHighlight(center: [number, number]): number[]; + render(): any[]; +} +//# sourceMappingURL=deck-drawer.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts.map b/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts.map new file mode 100644 index 000000000..3e2bd73ab --- /dev/null +++ b/modules/main/dist-types/lib/deck-renderer/deck-drawer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"deck-drawer.d.ts","sourceRoot":"","sources":["../../../src/lib/deck-renderer/deck-drawer.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;gBAEpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAOvC,YAAY;IAOZ,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAQ3D,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYtC,uBAAuB;IAgBvB,qBAAqB;IASrB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKnE,WAAW,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,aAAa,EAAE,MAAM,GACpB;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE;IAuD3C,KAAK;IAKL,wBAAwB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE;IAM5D,MAAM;CAoGP"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/feature.d.ts b/modules/main/dist-types/lib/feature.d.ts new file mode 100644 index 000000000..3f3d7f506 --- /dev/null +++ b/modules/main/dist-types/lib/feature.d.ts @@ -0,0 +1,11 @@ +import { Feature as GeoJson, Geometry } from 'geojson'; +import { Style } from '../types'; +export default class Feature { + geoJson: GeoJson; + style: Style; + original: any | null | undefined; + metadata: Record; + constructor(geoJson: GeoJson, style: Style, original?: any | null | undefined, metadata?: Record); + getCoords(): any; +} +//# sourceMappingURL=feature.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/feature.d.ts.map b/modules/main/dist-types/lib/feature.d.ts.map new file mode 100644 index 000000000..d91c6c746 --- /dev/null +++ b/modules/main/dist-types/lib/feature.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/lib/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,OAAO;IAE1B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAG5B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,EAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,GAAG,GAAG,IAAI,GAAG,SAAgB,EACvC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAQpC,SAAS,IAAI,GAAG;CAIjB"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/layer-mouse-event.d.ts b/modules/main/dist-types/lib/layer-mouse-event.d.ts new file mode 100644 index 000000000..38b6c5eba --- /dev/null +++ b/modules/main/dist-types/lib/layer-mouse-event.d.ts @@ -0,0 +1,12 @@ +import { Position } from 'geojson'; +export default class LayerMouseEvent { + canceled: boolean; + data: Record; + metadata: Record; + groundPoint: Position; + nativeEvent: MouseEvent; + nebula: Record; + constructor(nativeEvent: MouseEvent, { data, groundPoint, nebula, metadata }: Record); + stopPropagation(): void; +} +//# sourceMappingURL=layer-mouse-event.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/layer-mouse-event.d.ts.map b/modules/main/dist-types/lib/layer-mouse-event.d.ts.map new file mode 100644 index 000000000..4f979b581 --- /dev/null +++ b/modules/main/dist-types/lib/layer-mouse-event.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"layer-mouse-event.d.ts","sourceRoot":"","sources":["../../src/lib/layer-mouse-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,CAAC,OAAO,OAAO,eAAe;IAClC,QAAQ,EAAE,OAAO,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B,WAAW,EAAE,QAAQ,CAAC;IAEtB,WAAW,EAAE,UAAU,CAAC;IAExB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAG1B,WAAW,EAAE,UAAU,EACvB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAU9D,eAAe;CAIhB"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/junctions-layer.d.ts b/modules/main/dist-types/lib/layers/junctions-layer.d.ts new file mode 100644 index 000000000..c70f8ae57 --- /dev/null +++ b/modules/main/dist-types/lib/layers/junctions-layer.d.ts @@ -0,0 +1,8 @@ +import NebulaLayer from '../nebula-layer'; +import DeckCache from '../deck-renderer/deck-cache'; +export default class JunctionsLayer extends NebulaLayer { + deckCache: DeckCache; + constructor(config: Record); + render({ nebula }: Record): any; +} +//# sourceMappingURL=junctions-layer.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/junctions-layer.d.ts.map b/modules/main/dist-types/lib/layers/junctions-layer.d.ts.map new file mode 100644 index 000000000..8c93f7a71 --- /dev/null +++ b/modules/main/dist-types/lib/layers/junctions-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"junctions-layer.d.ts","sourceRoot":"","sources":["../../../src/lib/layers/junctions-layer.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAEnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMvC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA2BvC"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/segments-layer.d.ts b/modules/main/dist-types/lib/layers/segments-layer.d.ts new file mode 100644 index 000000000..6df5a757f --- /dev/null +++ b/modules/main/dist-types/lib/layers/segments-layer.d.ts @@ -0,0 +1,17 @@ +import NebulaLayer from '../nebula-layer'; +import DeckCache from '../deck-renderer/deck-cache'; +export default class SegmentsLayer extends NebulaLayer { + deckCache: DeckCache; + noBlend: boolean; + highlightColor: [number, number, number, number]; + arrowSize: number; + rounded: boolean; + dashed: boolean; + markerLayerProps: Record | null | undefined; + constructor(config: Record); + getMouseOverSegment(): any; + _calcMarkerPercentages(nf: Record): number[]; + _getHighlightedObjectIndex({ nebula }: Record): number; + render({ nebula }: Record): any; +} +//# sourceMappingURL=segments-layer.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/segments-layer.d.ts.map b/modules/main/dist-types/lib/layers/segments-layer.d.ts.map new file mode 100644 index 000000000..75857a7fb --- /dev/null +++ b/modules/main/dist-types/lib/layers/segments-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"segments-layer.d.ts","sourceRoot":"","sources":["../../../src/lib/layers/segments-layer.ts"],"names":[],"mappings":"AAIA,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,SAAS,MAAM,6BAA6B,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;gBAE7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAcvC,mBAAmB,IAAI,GAAG;IAK1B,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;IAazD,0BAA0B,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAanE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAyCvC"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/texts-layer.d.ts b/modules/main/dist-types/lib/layers/texts-layer.d.ts new file mode 100644 index 000000000..7d4398490 --- /dev/null +++ b/modules/main/dist-types/lib/layers/texts-layer.d.ts @@ -0,0 +1,8 @@ +import NebulaLayer from '../nebula-layer'; +import DeckCache from '../deck-renderer/deck-cache'; +export default class TextsLayer extends NebulaLayer { + deckCache: DeckCache; + constructor(config: Record); + render({ nebula }: Record): any; +} +//# sourceMappingURL=texts-layer.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/layers/texts-layer.d.ts.map b/modules/main/dist-types/lib/layers/texts-layer.d.ts.map new file mode 100644 index 000000000..84be67155 --- /dev/null +++ b/modules/main/dist-types/lib/layers/texts-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"texts-layer.d.ts","sourceRoot":"","sources":["../../../src/lib/layers/texts-layer.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAEpD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAEnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKvC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0BvC"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/math.d.ts b/modules/main/dist-types/lib/math.d.ts new file mode 100644 index 000000000..83a573812 --- /dev/null +++ b/modules/main/dist-types/lib/math.d.ts @@ -0,0 +1,12 @@ +import { Position } from 'geojson'; +export declare function toDegree(radian: number): number; +export declare function toRadian(angle: number): number; +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ +export declare function convertE7Array(array: number[]): Position[]; +//# sourceMappingURL=math.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/math.d.ts.map b/modules/main/dist-types/lib/math.d.ts.map new file mode 100644 index 000000000..1ac0228c4 --- /dev/null +++ b/modules/main/dist-types/lib/math.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/lib/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAQ1D"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/nebula-layer.d.ts b/modules/main/dist-types/lib/nebula-layer.d.ts new file mode 100644 index 000000000..26ccbb42c --- /dev/null +++ b/modules/main/dist-types/lib/nebula-layer.d.ts @@ -0,0 +1,15 @@ +/// +import Event from 'events'; +import Feature from './feature'; +export default class NebulaLayer extends Event.EventEmitter { + getData: () => Record[]; + toNebulaFeature: (data: Record) => Feature; + id: string; + helperLayers: Record[]; + usesMapEvents: boolean; + enablePicking: boolean; + enableSelection: boolean; + constructor({ getData, on, toNebulaFeature }: Record); + render(config: Record): unknown; +} +//# sourceMappingURL=nebula-layer.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/nebula-layer.d.ts.map b/modules/main/dist-types/lib/nebula-layer.d.ts.map new file mode 100644 index 000000000..8fa047454 --- /dev/null +++ b/modules/main/dist-types/lib/nebula-layer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nebula-layer.d.ts","sourceRoot":"","sources":["../../src/lib/nebula-layer.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,QAAQ,CAAC;AAG3B,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,YAAY;IACzD,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IACrC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAGpC,aAAa,UAAS;IACtB,aAAa,UAAS;IACtB,eAAe,UAAS;gBAGZ,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAajE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;CAG7C"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/nebula.d.ts b/modules/main/dist-types/lib/nebula.d.ts new file mode 100644 index 000000000..536a4cf79 --- /dev/null +++ b/modules/main/dist-types/lib/nebula.d.ts @@ -0,0 +1,37 @@ +/// +/// +import { EventEmitter } from 'events'; +import { WebMercatorViewport } from '@deck.gl/core'; +import DeckDrawer from './deck-renderer/deck-drawer'; +export default class Nebula { + init(props: Record): void; + detach(): void; + updateProps(newProps: Record): void; + props: Record; + deckgl: Record | null; + mainContainer: Record | null; + deckglMouseOverInfo: Record | null | undefined; + _deckDrawer: DeckDrawer; + _mouseWasDown: boolean; + wmViewport: WebMercatorViewport; + queryObjectEvents: EventEmitter; + forceUpdate: Function; + inited: boolean; + log(message: string): void; + updateAllDeckObjects(): void; + updateDeckObjectsByIds(ids: string[]): void; + rerenderLayers(): void; + _isNebulaEvent({ buttons, target, type }: Record): boolean; + _onMouseEvent: (event: any) => void; + getMouseGroundPosition(event: Record): any[]; + unprojectMousePosition(mousePosition: [number, number]): [number, number]; + _handleDeckGLEvent(event: Record): void; + getExtraDeckLayers(): Record[]; + renderDeckLayers(): any[]; + getAllLayers(): any[]; + getRenderedLayers(): any[]; + updateAndGetRenderedLayers(layers: Record[], viewport: WebMercatorViewport, container: Record): any[]; + setDeck(deckgl: Record | null): void; + setMainContainer(mainContainer: Record | null): void; +} +//# sourceMappingURL=nebula.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/nebula.d.ts.map b/modules/main/dist-types/lib/nebula.d.ts.map new file mode 100644 index 000000000..d2c022003 --- /dev/null +++ b/modules/main/dist-types/lib/nebula.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nebula.d.ts","sourceRoot":"","sources":["../../src/lib/nebula.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAMrD,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAU/B,MAAM;IAON,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAOzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5D,WAAW,EAAE,UAAU,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,iBAAiB,EAAE,YAAY,CAAsB;IACrD,WAAW,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAEhB,GAAG,CAAC,OAAO,EAAE,MAAM;IAOnB,oBAAoB;IASpB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE;IASpC,cAAc;IAId,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA8B7D,aAAa,uBAwCX;IAEF,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAIjD,sBAAsB,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKzE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA2G7C,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAQ3C,gBAAgB;IAMhB,YAAY;IAcZ,iBAAiB;IAIjB,0BAA0B,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAC7B,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAehC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAM1C,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAK3D"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/style.d.ts b/modules/main/dist-types/lib/style.d.ts new file mode 100644 index 000000000..b959cfb1f --- /dev/null +++ b/modules/main/dist-types/lib/style.d.ts @@ -0,0 +1,20 @@ +export declare const ArrowStyles: { + NONE: number; + FORWARD: number; + BACKWARD: number; + BOTH: number; +}; +export declare const DEFAULT_ARROWS = 1; +export declare const MAX_ARROWS = 3; +export declare const DEFAULT_STYLE: { + arrowColor: number[]; + arrowCount: number; + arrowStyle: number; + fillColor: number[]; + lineColor: number[]; + lineWidthMeters: number; + outlineRadiusMeters: number; + opacity: number; + zLevel: number; +}; +//# sourceMappingURL=style.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/style.d.ts.map b/modules/main/dist-types/lib/style.d.ts.map new file mode 100644 index 000000000..c372d9b78 --- /dev/null +++ b/modules/main/dist-types/lib/style.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/lib/style.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,eAAO,MAAM,aAAa;;;;;;;;;;CAUzB,CAAC"} \ No newline at end of file diff --git a/modules/main/dist-types/lib/utils.d.ts b/modules/main/dist-types/lib/utils.d.ts new file mode 100644 index 000000000..444533781 --- /dev/null +++ b/modules/main/dist-types/lib/utils.d.ts @@ -0,0 +1,3 @@ +export declare function toDeckColor(color?: [number, number, number, number] | null | undefined, defaultColor?: [number, number, number, number]): [number, number, number, number]; +export declare function recursivelyTraverseNestedArrays(array: Array, prefix: Array, fn: Function): boolean; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/lib/utils.d.ts.map b/modules/main/dist-types/lib/utils.d.ts.map new file mode 100644 index 000000000..6bdfa60a9 --- /dev/null +++ b/modules/main/dist-types/lib/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CACzB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3D,YAAY,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAoB,GAChE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKlC;AA2BD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EACrB,EAAE,EAAE,QAAQ,WAYb"} \ No newline at end of file diff --git a/modules/main/dist-types/types.d.ts b/modules/main/dist-types/types.d.ts new file mode 100644 index 000000000..55148e26f --- /dev/null +++ b/modules/main/dist-types/types.d.ts @@ -0,0 +1,36 @@ +export declare type LayerMouseEventResult = { + eventConsumed?: boolean; + eventSoftConsumed?: boolean; + mousePointer?: string | null | undefined; + shouldRedraw?: boolean | string[]; +}; +export declare type Color = [number, number, number, number]; +export declare type Style = { + dashArray?: number[]; + fillColor?: Color; + lineColor?: Color; + lineWidthMeters?: number; + pointRadiusMeters?: number; + outlineRadiusMeters?: number; + outlineColor?: Color; + mousePriority?: number; + arrowColor?: Color; + arrowStyle?: number; + arrowCount?: number; + iconNumber?: number; + text?: string; + tooltip?: string; + zLevel?: number; +}; +export declare type Viewport = { + width: number; + height: number; + longitude: number; + latitude: number; + zoom: number; + isDragging?: boolean; + isMoving?: boolean; + bearing?: number; + pitch?: number; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/modules/main/dist-types/types.d.ts.map b/modules/main/dist-types/types.d.ts.map new file mode 100644 index 000000000..9be6c1bec --- /dev/null +++ b/modules/main/dist-types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,qBAAqB,GAAG;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;CACnC,CAAC;AAGF,oBAAY,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,oBAAY,KAAK,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"} \ No newline at end of file diff --git a/modules/main/dist/index.js b/modules/main/dist/index.js new file mode 100644 index 000000000..a7bb04e40 --- /dev/null +++ b/modules/main/dist/index.js @@ -0,0 +1,320 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "ArrowStyles", { + enumerable: true, + get: function get() { + return _style.ArrowStyles; + } +}); +Object.defineProperty(exports, "DEFAULT_ARROWS", { + enumerable: true, + get: function get() { + return _style.DEFAULT_ARROWS; + } +}); +Object.defineProperty(exports, "MAX_ARROWS", { + enumerable: true, + get: function get() { + return _style.MAX_ARROWS; + } +}); +Object.defineProperty(exports, "SELECTION_TYPE", { + enumerable: true, + get: function get() { + return _deckDrawer.SELECTION_TYPE; + } +}); +Object.defineProperty(exports, "Feature", { + enumerable: true, + get: function get() { + return _feature["default"]; + } +}); +Object.defineProperty(exports, "LayerMouseEvent", { + enumerable: true, + get: function get() { + return _layerMouseEvent["default"]; + } +}); +Object.defineProperty(exports, "NebulaLayer", { + enumerable: true, + get: function get() { + return _nebulaLayer["default"]; + } +}); +Object.defineProperty(exports, "JunctionsLayer", { + enumerable: true, + get: function get() { + return _junctionsLayer["default"]; + } +}); +Object.defineProperty(exports, "TextsLayer", { + enumerable: true, + get: function get() { + return _textsLayer["default"]; + } +}); +Object.defineProperty(exports, "SegmentsLayer", { + enumerable: true, + get: function get() { + return _segmentsLayer["default"]; + } +}); +Object.defineProperty(exports, "NebulaCore", { + enumerable: true, + get: function get() { + return _nebula["default"]; + } +}); +Object.defineProperty(exports, "toDeckColor", { + enumerable: true, + get: function get() { + return _utils.toDeckColor; + } +}); +Object.defineProperty(exports, "EditableGeoJsonLayer", { + enumerable: true, + get: function get() { + return _layers.EditableGeoJsonLayer; + } +}); +Object.defineProperty(exports, "SelectionLayer", { + enumerable: true, + get: function get() { + return _layers.SelectionLayer; + } +}); +Object.defineProperty(exports, "ElevatedEditHandleLayer", { + enumerable: true, + get: function get() { + return _layers.ElevatedEditHandleLayer; + } +}); +Object.defineProperty(exports, "PathOutlineLayer", { + enumerable: true, + get: function get() { + return _layers.PathOutlineLayer; + } +}); +Object.defineProperty(exports, "PathMarkerLayer", { + enumerable: true, + get: function get() { + return _layers.PathMarkerLayer; + } +}); +Object.defineProperty(exports, "GeoJsonEditMode", { + enumerable: true, + get: function get() { + return _editModes.GeoJsonEditMode; + } +}); +Object.defineProperty(exports, "ModifyMode", { + enumerable: true, + get: function get() { + return _editModes.ModifyMode; + } +}); +Object.defineProperty(exports, "ResizeCircleMode", { + enumerable: true, + get: function get() { + return _editModes.ResizeCircleMode; + } +}); +Object.defineProperty(exports, "TranslateMode", { + enumerable: true, + get: function get() { + return _editModes.TranslateMode; + } +}); +Object.defineProperty(exports, "ScaleMode", { + enumerable: true, + get: function get() { + return _editModes.ScaleMode; + } +}); +Object.defineProperty(exports, "RotateMode", { + enumerable: true, + get: function get() { + return _editModes.RotateMode; + } +}); +Object.defineProperty(exports, "DuplicateMode", { + enumerable: true, + get: function get() { + return _editModes.DuplicateMode; + } +}); +Object.defineProperty(exports, "ExtendLineStringMode", { + enumerable: true, + get: function get() { + return _editModes.ExtendLineStringMode; + } +}); +Object.defineProperty(exports, "SplitPolygonMode", { + enumerable: true, + get: function get() { + return _editModes.SplitPolygonMode; + } +}); +Object.defineProperty(exports, "ExtrudeMode", { + enumerable: true, + get: function get() { + return _editModes.ExtrudeMode; + } +}); +Object.defineProperty(exports, "ElevationMode", { + enumerable: true, + get: function get() { + return _editModes.ElevationMode; + } +}); +Object.defineProperty(exports, "TransformMode", { + enumerable: true, + get: function get() { + return _editModes.TransformMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _editModes.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _editModes.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawSquareFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawSquareFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawEllipseByBoundingBoxMode", { + enumerable: true, + get: function get() { + return _editModes.DrawEllipseByBoundingBoxMode; + } +}); +Object.defineProperty(exports, "DrawEllipseUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _editModes.DrawEllipseUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "DrawRectangleUsingThreePointsMode", { + enumerable: true, + get: function get() { + return _editModes.DrawRectangleUsingThreePointsMode; + } +}); +Object.defineProperty(exports, "Draw90DegreePolygonMode", { + enumerable: true, + get: function get() { + return _editModes.Draw90DegreePolygonMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _editModes.DrawPolygonByDraggingMode; + } +}); +Object.defineProperty(exports, "ImmutableFeatureCollection", { + enumerable: true, + get: function get() { + return _editModes.ImmutableFeatureCollection; + } +}); +Object.defineProperty(exports, "ViewMode", { + enumerable: true, + get: function get() { + return _editModes.ViewMode; + } +}); +Object.defineProperty(exports, "MeasureDistanceMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureDistanceMode; + } +}); +Object.defineProperty(exports, "MeasureAreaMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureAreaMode; + } +}); +Object.defineProperty(exports, "MeasureAngleMode", { + enumerable: true, + get: function get() { + return _editModes.MeasureAngleMode; + } +}); +Object.defineProperty(exports, "CompositeMode", { + enumerable: true, + get: function get() { + return _editModes.CompositeMode; + } +}); +Object.defineProperty(exports, "SnappableMode", { + enumerable: true, + get: function get() { + return _editModes.SnappableMode; + } +}); + +var _style = require("./lib/style"); + +var _deckDrawer = require("./lib/deck-renderer/deck-drawer"); + +var _feature = _interopRequireDefault(require("./lib/feature")); + +var _layerMouseEvent = _interopRequireDefault(require("./lib/layer-mouse-event")); + +var _nebulaLayer = _interopRequireDefault(require("./lib/nebula-layer")); + +var _junctionsLayer = _interopRequireDefault(require("./lib/layers/junctions-layer")); + +var _textsLayer = _interopRequireDefault(require("./lib/layers/texts-layer")); + +var _segmentsLayer = _interopRequireDefault(require("./lib/layers/segments-layer")); + +var _nebula = _interopRequireDefault(require("./lib/nebula")); + +var _utils = require("./lib/utils"); + +var _layers = require("@nebula.gl/layers"); + +var _editModes = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFNQTs7QUFPQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX0FSUk9XUywgTUFYX0FSUk9XUyB9IGZyb20gJy4vbGliL3N0eWxlJztcbmV4cG9ydCB7IFNFTEVDVElPTl9UWVBFIH0gZnJvbSAnLi9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmVhdHVyZSB9IGZyb20gJy4vbGliL2ZlYXR1cmUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBMYXllck1vdXNlRXZlbnQgfSBmcm9tICcuL2xpYi9sYXllci1tb3VzZS1ldmVudCc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhTGF5ZXIgfSBmcm9tICcuL2xpYi9uZWJ1bGEtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKdW5jdGlvbnNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9qdW5jdGlvbnMtbGF5ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0c0xheWVyIH0gZnJvbSAnLi9saWIvbGF5ZXJzL3RleHRzLWxheWVyJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU2VnbWVudHNMYXllciB9IGZyb20gJy4vbGliL2xheWVycy9zZWdtZW50cy1sYXllcic7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgTmVidWxhQ29yZSB9IGZyb20gJy4vbGliL25lYnVsYSc7XG5cbi8vIFV0aWxzXG5leHBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4vbGliL3V0aWxzJztcblxuLy8gVHlwZXNcbmV4cG9ydCB0eXBlIHsgQ29sb3IsIFN0eWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIE1vdmVkIHRvIEBuZWJ1bGEuZ2wvbGF5ZXJzXG5leHBvcnQgeyBFZGl0YWJsZUdlb0pzb25MYXllciB9IGZyb20gJ0BuZWJ1bGEuZ2wvbGF5ZXJzJztcbmV4cG9ydCB7IFNlbGVjdGlvbkxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuZXhwb3J0IHsgRWxldmF0ZWRFZGl0SGFuZGxlTGF5ZXIgfSBmcm9tICdAbmVidWxhLmdsL2xheWVycyc7XG5leHBvcnQgeyBQYXRoT3V0bGluZUxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuZXhwb3J0IHsgUGF0aE1hcmtlckxheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuXG5leHBvcnQgdHlwZSB7IEVkaXRNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEdlb0pzb25FZGl0TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIEFsdGVyIG1vZGVzXG5leHBvcnQgeyBNb2RpZnlNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFJlc2l6ZUNpcmNsZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgVHJhbnNsYXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBTY2FsZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgUm90YXRlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEdXBsaWNhdGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IEV4dGVuZExpbmVTdHJpbmdNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IFNwbGl0UG9seWdvbk1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRXh0cnVkZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRWxldmF0aW9uTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBUcmFuc2Zvcm1Nb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcblxuLy8gRHJhdyBtb2Rlc1xuZXhwb3J0IHsgRHJhd1BvaW50TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3TGluZVN0cmluZ01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25Nb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdSZWN0YW5nbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdTcXVhcmVGcm9tQ2VudGVyTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IERyYXdFbGxpcHNlQnlCb3VuZGluZ0JveE1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd0VsbGlwc2VVc2luZ1RocmVlUG9pbnRzTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBEcmF3UmVjdGFuZ2xlVXNpbmdUaHJlZVBvaW50c01vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhdzkwRGVncmVlUG9seWdvbk1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbi8vIE90aGVyIG1vZGVzXG5leHBvcnQgeyBWaWV3TW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBNZWFzdXJlRGlzdGFuY2VNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IE1lYXN1cmVBcmVhTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5leHBvcnQgeyBNZWFzdXJlQW5nbGVNb2RlIH0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbmV4cG9ydCB7IENvbXBvc2l0ZU1vZGUgfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuZXhwb3J0IHsgU25hcHBhYmxlTW9kZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/lib/deck-renderer/deck-cache.js b/modules/main/dist/lib/deck-renderer/deck-cache.js new file mode 100644 index 000000000..2e8492526 --- /dev/null +++ b/modules/main/dist/lib/deck-renderer/deck-cache.js @@ -0,0 +1,101 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 DeckCache = /*#__PURE__*/function () { + function DeckCache(getData, convert) { + _classCallCheck(this, DeckCache); + + _defineProperty(this, "objects", void 0); + + _defineProperty(this, "originals", void 0); + + _defineProperty(this, "updateTrigger", void 0); + + _defineProperty(this, "_idToPosition", void 0); + + _defineProperty(this, "_getData", void 0); + + _defineProperty(this, "_convert", void 0); + + this.objects = []; + this.originals = []; + this.updateTrigger = 0; + this._idToPosition = new Map(); + this._getData = getData; + this._convert = convert; + } + + _createClass(DeckCache, [{ + key: "updateAllDeckObjects", + value: function updateAllDeckObjects() { + var _this = this; + + if (!this._getData || !this._convert) return; + this.originals.length = 0; + this.objects.length = 0; + + this._idToPosition.clear(); + + this._getData().forEach(function (d) { + _this._idToPosition.set(d.id, _this.objects.length); + + _this.originals.push(d); + + _this.objects.push(_this._convert(d)); + }); + + this.triggerUpdate(); + } + }, { + key: "updateDeckObjectsByIds", + value: function updateDeckObjectsByIds(ids) { + var _this2 = this; + + if (!this._getData || !this._convert) return; + ids.forEach(function (id) { + var p = _this2._idToPosition.get(id); + + if (p !== undefined) { + _this2.objects[p] = _this2._convert(_this2.originals[p]); + } + }); + this.triggerUpdate(); + } + }, { + key: "triggerUpdate", + value: function triggerUpdate() { + this.updateTrigger++; + } + }, { + key: "getDeckObjectById", + value: function getDeckObjectById(id) { + var p = this._idToPosition.get(id); + + return p !== undefined ? this.objects[p] : null; + } + }, { + key: "getOriginalById", + value: function getOriginalById(id) { + var p = this._idToPosition.get(id); + + return p !== undefined ? this.originals[p] : null; + } + }]); + + return DeckCache; +}(); + +exports["default"] = DeckCache; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlLnRzIl0sIm5hbWVzIjpbIkRlY2tDYWNoZSIsImdldERhdGEiLCJjb252ZXJ0Iiwib2JqZWN0cyIsIm9yaWdpbmFscyIsInVwZGF0ZVRyaWdnZXIiLCJfaWRUb1Bvc2l0aW9uIiwiTWFwIiwiX2dldERhdGEiLCJfY29udmVydCIsImxlbmd0aCIsImNsZWFyIiwiZm9yRWFjaCIsImQiLCJzZXQiLCJpZCIsInB1c2giLCJ0cmlnZ2VyVXBkYXRlIiwiaWRzIiwicCIsImdldCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0lBQXFCQSxTO0FBUW5CLHFCQUFZQyxPQUFaLEVBQW9DQyxPQUFwQyxFQUFxRTtBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUNuRSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLENBQXJCO0FBRUEsU0FBS0MsYUFBTCxHQUFxQixJQUFJQyxHQUFKLEVBQXJCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQlAsT0FBaEI7QUFDQSxTQUFLUSxRQUFMLEdBQWdCUCxPQUFoQjtBQUNEOzs7OzJDQUVzQjtBQUFBOztBQUNyQixVQUFJLENBQUMsS0FBS00sUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDLFdBQUtMLFNBQUwsQ0FBZU0sTUFBZixHQUF3QixDQUF4QjtBQUNBLFdBQUtQLE9BQUwsQ0FBYU8sTUFBYixHQUFzQixDQUF0Qjs7QUFDQSxXQUFLSixhQUFMLENBQW1CSyxLQUFuQjs7QUFFQSxXQUFLSCxRQUFMLEdBQWdCSSxPQUFoQixDQUF3QixVQUFDQyxDQUFELEVBQU87QUFDN0IsUUFBQSxLQUFJLENBQUNQLGFBQUwsQ0FBbUJRLEdBQW5CLENBQXdCRCxDQUFELENBQVdFLEVBQWxDLEVBQXNDLEtBQUksQ0FBQ1osT0FBTCxDQUFhTyxNQUFuRDs7QUFDQSxRQUFBLEtBQUksQ0FBQ04sU0FBTCxDQUFlWSxJQUFmLENBQW9CSCxDQUFwQjs7QUFDQSxRQUFBLEtBQUksQ0FBQ1YsT0FBTCxDQUFhYSxJQUFiLENBQWtCLEtBQUksQ0FBQ1AsUUFBTCxDQUFjSSxDQUFkLENBQWxCO0FBQ0QsT0FKRDs7QUFNQSxXQUFLSSxhQUFMO0FBQ0Q7OzsyQ0FFc0JDLEcsRUFBZTtBQUFBOztBQUNwQyxVQUFJLENBQUMsS0FBS1YsUUFBTixJQUFrQixDQUFDLEtBQUtDLFFBQTVCLEVBQXNDO0FBRXRDUyxNQUFBQSxHQUFHLENBQUNOLE9BQUosQ0FBWSxVQUFDRyxFQUFELEVBQVE7QUFDbEIsWUFBTUksQ0FBQyxHQUFHLE1BQUksQ0FBQ2IsYUFBTCxDQUFtQmMsR0FBbkIsQ0FBdUJMLEVBQXZCLENBQVY7O0FBQ0EsWUFBSUksQ0FBQyxLQUFLRSxTQUFWLEVBQXFCO0FBQ25CLFVBQUEsTUFBSSxDQUFDbEIsT0FBTCxDQUFhZ0IsQ0FBYixJQUFrQixNQUFJLENBQUNWLFFBQUwsQ0FBYyxNQUFJLENBQUNMLFNBQUwsQ0FBZWUsQ0FBZixDQUFkLENBQWxCO0FBQ0Q7QUFDRixPQUxEO0FBT0EsV0FBS0YsYUFBTDtBQUNEOzs7b0NBRWU7QUFDZCxXQUFLWixhQUFMO0FBQ0Q7OztzQ0FFaUJVLEUsRUFBc0M7QUFDdEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLbEIsT0FBTCxDQUFhZ0IsQ0FBYixDQUFsQixHQUFvQyxJQUEzQztBQUNEOzs7b0NBRWVKLEUsRUFBc0M7QUFDcEQsVUFBTUksQ0FBQyxHQUFHLEtBQUtiLGFBQUwsQ0FBbUJjLEdBQW5CLENBQXVCTCxFQUF2QixDQUFWOztBQUNBLGFBQU9JLENBQUMsS0FBS0UsU0FBTixHQUFrQixLQUFLakIsU0FBTCxDQUFlZSxDQUFmLENBQWxCLEdBQXNDLElBQTdDO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBEZWNrQ2FjaGU8VE9SSUcsIFRDT05WPiB7XG4gIG9iamVjdHM6IFRDT05WW107XG4gIG9yaWdpbmFsczogVE9SSUdbXTtcbiAgdXBkYXRlVHJpZ2dlcjogbnVtYmVyO1xuICBfaWRUb1Bvc2l0aW9uOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICBfZ2V0RGF0YTogKCkgPT4gVE9SSUdbXTtcbiAgX2NvbnZlcnQ6IChhcmcwOiBUT1JJRykgPT4gVENPTlY7XG5cbiAgY29uc3RydWN0b3IoZ2V0RGF0YTogKCkgPT4gVE9SSUdbXSwgY29udmVydDogKGFyZzA6IFRPUklHKSA9PiBUQ09OVikge1xuICAgIHRoaXMub2JqZWN0cyA9IFtdO1xuICAgIHRoaXMub3JpZ2luYWxzID0gW107XG4gICAgdGhpcy51cGRhdGVUcmlnZ2VyID0gMDtcblxuICAgIHRoaXMuX2lkVG9Qb3NpdGlvbiA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9nZXREYXRhID0gZ2V0RGF0YTtcbiAgICB0aGlzLl9jb252ZXJ0ID0gY29udmVydDtcbiAgfVxuXG4gIHVwZGF0ZUFsbERlY2tPYmplY3RzKCkge1xuICAgIGlmICghdGhpcy5fZ2V0RGF0YSB8fCAhdGhpcy5fY29udmVydCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vcmlnaW5hbHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLm9iamVjdHMubGVuZ3RoID0gMDtcbiAgICB0aGlzLl9pZFRvUG9zaXRpb24uY2xlYXIoKTtcblxuICAgIHRoaXMuX2dldERhdGEoKS5mb3JFYWNoKChkKSA9PiB7XG4gICAgICB0aGlzLl9pZFRvUG9zaXRpb24uc2V0KChkIGFzIGFueSkuaWQsIHRoaXMub2JqZWN0cy5sZW5ndGgpO1xuICAgICAgdGhpcy5vcmlnaW5hbHMucHVzaChkKTtcbiAgICAgIHRoaXMub2JqZWN0cy5wdXNoKHRoaXMuX2NvbnZlcnQoZCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmlnZ2VyVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICBpZiAoIXRoaXMuX2dldERhdGEgfHwgIXRoaXMuX2NvbnZlcnQpIHJldHVybjtcblxuICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgY29uc3QgcCA9IHRoaXMuX2lkVG9Qb3NpdGlvbi5nZXQoaWQpO1xuICAgICAgaWYgKHAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLm9iamVjdHNbcF0gPSB0aGlzLl9jb252ZXJ0KHRoaXMub3JpZ2luYWxzW3BdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJpZ2dlclVwZGF0ZSgpO1xuICB9XG5cbiAgdHJpZ2dlclVwZGF0ZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRyaWdnZXIrKztcbiAgfVxuXG4gIGdldERlY2tPYmplY3RCeUlkKGlkOiBzdHJpbmcpOiBUQ09OViB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHAgPSB0aGlzLl9pZFRvUG9zaXRpb24uZ2V0KGlkKTtcbiAgICByZXR1cm4gcCAhPT0gdW5kZWZpbmVkID8gdGhpcy5vYmplY3RzW3BdIDogbnVsbDtcbiAgfVxuXG4gIGdldE9yaWdpbmFsQnlJZChpZDogc3RyaW5nKTogVE9SSUcgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBwID0gdGhpcy5faWRUb1Bvc2l0aW9uLmdldChpZCk7XG4gICAgcmV0dXJuIHAgIT09IHVuZGVmaW5lZCA/IHRoaXMub3JpZ2luYWxzW3BdIDogbnVsbDtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist/lib/deck-renderer/deck-drawer.js b/modules/main/dist/lib/deck-renderer/deck-drawer.js new file mode 100644 index 000000000..405b03e12 --- /dev/null +++ b/modules/main/dist/lib/deck-renderer/deck-drawer.js @@ -0,0 +1,374 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = exports.SELECTION_TYPE = void 0; + +var _layers = require("@deck.gl/layers"); + +var _helpers = require("@turf/helpers"); + +var _bbox = _interopRequireDefault(require("@turf/bbox")); + +var _bboxPolygon = _interopRequireDefault(require("@turf/bbox-polygon")); + +var _buffer = _interopRequireDefault(require("@turf/buffer")); + +var _difference = _interopRequireDefault(require("@turf/difference")); + +var _distance = _interopRequireDefault(require("@turf/distance")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 POLYGON_LINE_COLOR = [0, 255, 0, 255]; +var POLYGON_FILL_COLOR = [255, 255, 255, 90]; +var POLYGON_LINE_WIDTH = 2; +var POLYGON_DASHES = [20, 20]; +var POLYGON_THRESHOLD = 0.01; +var EXPANSION_KM = 10; +var LAYER_ID_VIEW = 'DeckDrawerView'; +var LAYER_ID_PICK = 'DeckDrawerPick'; +var SELECTION_TYPE = { + NONE: null, + RECTANGLE: 'rectangle', + POLYGON: 'polygon' +}; +exports.SELECTION_TYPE = SELECTION_TYPE; + +var DeckDrawer = /*#__PURE__*/function () { + function DeckDrawer(nebula) { + _classCallCheck(this, DeckDrawer); + + _defineProperty(this, "nebula", void 0); + + _defineProperty(this, "usePolygon", void 0); + + _defineProperty(this, "validPolygon", void 0); + + _defineProperty(this, "landPoints", void 0); + + _defineProperty(this, "mousePoints", void 0); + + this.nebula = nebula; + this.usePolygon = false; + this.landPoints = []; + this.mousePoints = []; + } + + _createClass(DeckDrawer, [{ + key: "_getLayerIds", + value: function _getLayerIds() { + // TODO: sort by mouse priority + return this.nebula.deckgl.props.layers.filter(function (l) { + return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection; + }).map(function (l) { + return l.id; + }); + } + }, { + key: "_selectFromPickingInfos", + value: function _selectFromPickingInfos(pickingInfos) { + var objects = pickingInfos.map(function (_ref) { + var layer = _ref.layer, + index = _ref.index, + object = _ref.object; + return object.original || layer.props.nebulaLayer.deckCache.originals[index]; + }); + this.nebula.props.onSelection(objects); + } + }, { + key: "_getBoundingBox", + value: function _getBoundingBox() { + var mousePoints = this.mousePoints; + var allX = mousePoints.map(function (mousePoint) { + return mousePoint[0]; + }); + var allY = mousePoints.map(function (mousePoint) { + return mousePoint[1]; + }); + var x = Math.min.apply(Math, _toConsumableArray(allX)); + var y = Math.min.apply(Math, _toConsumableArray(allY)); + var maxX = Math.max.apply(Math, _toConsumableArray(allX)); + var maxY = Math.max.apply(Math, _toConsumableArray(allY)); + return { + x: x, + y: y, + width: maxX - x, + height: maxY - y + }; + } + }, { + key: "_selectRectangleObjects", + value: function _selectRectangleObjects() { + if (this.landPoints.length !== 2) return; + + var _this$mousePoints$ = _slicedToArray(this.mousePoints[0], 2), + x1 = _this$mousePoints$[0], + y1 = _this$mousePoints$[1]; + + var _this$mousePoints$2 = _slicedToArray(this.mousePoints[1], 2), + x2 = _this$mousePoints$2[0], + y2 = _this$mousePoints$2[1]; + + var pickingInfos = this.nebula.deckgl.pickObjects({ + x: Math.min(x1, x2), + y: Math.min(y1, y2), + width: Math.abs(x2 - x1), + height: Math.abs(y2 - y1), + layerIds: this._getLayerIds() + }); + + this._selectFromPickingInfos(pickingInfos); + } + }, { + key: "_selectPolygonObjects", + value: function _selectPolygonObjects() { + var pickingInfos = this.nebula.deckgl.pickObjects(_objectSpread({}, this._getBoundingBox(), { + layerIds: [LAYER_ID_PICK].concat(_toConsumableArray(this._getLayerIds())) + })); + + this._selectFromPickingInfos(pickingInfos.filter(function (item) { + return item.layer.id !== LAYER_ID_PICK; + })); + } + }, { + key: "_getMousePosFromEvent", + value: function _getMousePosFromEvent(event) { + var offsetX = event.offsetX, + offsetY = event.offsetY; + return [offsetX, offsetY]; + } + }, { + key: "handleEvent", + value: function handleEvent(event, lngLat, selectionType) { + // capture all events (mouse-up is needed to prevent us stuck in moving map) + if (event.type !== 'mouseup') event.stopPropagation(); // @ts-ignore + + this.usePolygon = selectionType === SELECTION_TYPE.POLYGON; + var redraw = false; + var deactivate = false; + var usePolygon = this.usePolygon, + landPoints = this.landPoints, + mousePoints = this.mousePoints; + + if (event.type === 'mousedown') { + if (usePolygon && landPoints.length) { + // if landPoints.length is zero we want to insert two points (so we let it run the else) + // also don't insert if polygon is invalid + if (this.landPoints.length < 3 || this.validPolygon) { + landPoints.push(lngLat); + mousePoints.push(this._getMousePosFromEvent(event)); + } + } else { + this.landPoints = [lngLat, lngLat]; + + var m = this._getMousePosFromEvent(event); + + this.mousePoints = [m, m]; + } + + redraw = true; + } else if (event.type === 'mousemove' && landPoints.length) { + // update last point + landPoints[landPoints.length - 1] = lngLat; + mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event); + redraw = true; + } else if (event.type === 'mouseup') { + if (usePolygon) { + // check to see if completed + // TODO: Maybe double-click to finish? + if (landPoints.length > 4 && (0, _distance["default"])(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD && this.validPolygon) { + this._selectPolygonObjects(); + + this.reset(); + redraw = true; + deactivate = true; + } + } else { + this._selectRectangleObjects(); + + this.reset(); + redraw = true; + deactivate = true; + } + } + + return { + redraw: redraw, + deactivate: deactivate + }; + } + }, { + key: "reset", + value: function reset() { + this.landPoints = []; + this.mousePoints = []; + } + }, { + key: "_makeStartPointHighlight", + value: function _makeStartPointHighlight(center) { + var buffer = (0, _buffer["default"])((0, _helpers.point)(center), POLYGON_THRESHOLD / 4.0); // @ts-ignore + + return (0, _bboxPolygon["default"])((0, _bbox["default"])(buffer)).geometry.coordinates; + } + }, { + key: "render", + value: function render() { + var _this = this; + + var data = []; + var dataPick = []; + + if (!this.usePolygon && this.landPoints.length === 2) { + // Use mouse points instead of land points so we get the right shape + // no matter what bearing is. + var _this$mousePoints = _slicedToArray(this.mousePoints, 2), + _this$mousePoints$3 = _slicedToArray(_this$mousePoints[0], 2), + x1 = _this$mousePoints$3[0], + y1 = _this$mousePoints$3[1], + _this$mousePoints$4 = _slicedToArray(_this$mousePoints[1], 2), + x2 = _this$mousePoints$4[0], + y2 = _this$mousePoints$4[1]; + + var selPolygon = [[x1, y1], [x1, y2], [x2, y2], [x2, y1], [x1, y1]].map(function (mousePos) { + return _this.nebula.unprojectMousePosition(mousePos); + }); + data.push({ + polygon: selPolygon, + lineColor: POLYGON_LINE_COLOR, + fillColor: POLYGON_FILL_COLOR + }); + } else if (this.usePolygon && this.landPoints.length) { + data.push({ + polygon: this.landPoints, + lineColor: POLYGON_LINE_COLOR, + fillColor: POLYGON_FILL_COLOR + }); // Hack: use a polygon to hide the outside, because pickObjects() + // does not support polygons + + if (this.landPoints.length >= 3) { + var landPointsPoly = (0, _helpers.polygon)([[].concat(_toConsumableArray(this.landPoints), [this.landPoints[0]])]); + var bigBuffer = (0, _buffer["default"])((0, _helpers.point)(this.landPoints[0]), EXPANSION_KM); + var bigPolygon; + + try { + // turfDifference throws an exception if the polygon + // intersects with itself + bigPolygon = (0, _difference["default"])(bigBuffer, landPointsPoly); + dataPick.push({ + polygon: bigPolygon.geometry.coordinates, + fillColor: [0, 0, 0, 1] + }); + this.validPolygon = true; + } catch (e) { + // invalid selection polygon + this.validPolygon = false; + } + } + } + + if (this.landPoints.length) { + // highlight start point + data.push({ + polygon: this._makeStartPointHighlight(this.landPoints[0]), + lineColor: [0, 0, 0, 0], + fillColor: POLYGON_LINE_COLOR + }); + } // Hack to make the PolygonLayer() stay active, + // otherwise it takes 3 seconds (!) to init! + // TODO: fix this + + + data.push({ + polygon: [[0, 0]] + }); + dataPick.push({ + polygon: [[0, 0]] + }); + return [new _layers.PolygonLayer({ + id: LAYER_ID_VIEW, + data: data, + // @ts-ignore + fp64: false, + opacity: 1.0, + pickable: false, + lineWidthMinPixels: POLYGON_LINE_WIDTH, + lineWidthMaxPixels: POLYGON_LINE_WIDTH, + lineDashJustified: true, + getLineDashArray: function getLineDashArray(x) { + return POLYGON_DASHES; + }, + // @ts-ignore + getLineColor: function getLineColor(obj) { + return obj.lineColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getFillColor: function getFillColor(obj) { + return obj.fillColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getPolygon: function getPolygon(o) { + return o.polygon; + } + }), new _layers.PolygonLayer({ + id: LAYER_ID_PICK, + data: dataPick, + // @ts-ignore + getLineColor: function getLineColor(obj) { + return obj.lineColor || [0, 0, 0, 255]; + }, + // @ts-ignore + getFillColor: function getFillColor(obj) { + return obj.fillColor || [0, 0, 0, 255]; + }, + // @ts-ignore + fp64: false, + opacity: 1.0, + stroked: false, + pickable: true, + // @ts-ignore + getPolygon: function getPolygon(o) { + return o.polygon; + } + })]; + } + }]); + + return DeckDrawer; +}(); + +exports["default"] = DeckDrawer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlci50cyJdLCJuYW1lcyI6WyJQT0xZR09OX0xJTkVfQ09MT1IiLCJQT0xZR09OX0ZJTExfQ09MT1IiLCJQT0xZR09OX0xJTkVfV0lEVEgiLCJQT0xZR09OX0RBU0hFUyIsIlBPTFlHT05fVEhSRVNIT0xEIiwiRVhQQU5TSU9OX0tNIiwiTEFZRVJfSURfVklFVyIsIkxBWUVSX0lEX1BJQ0siLCJTRUxFQ1RJT05fVFlQRSIsIk5PTkUiLCJSRUNUQU5HTEUiLCJQT0xZR09OIiwiRGVja0RyYXdlciIsIm5lYnVsYSIsInVzZVBvbHlnb24iLCJsYW5kUG9pbnRzIiwibW91c2VQb2ludHMiLCJkZWNrZ2wiLCJwcm9wcyIsImxheWVycyIsImZpbHRlciIsImwiLCJuZWJ1bGFMYXllciIsImVuYWJsZVNlbGVjdGlvbiIsIm1hcCIsImlkIiwicGlja2luZ0luZm9zIiwib2JqZWN0cyIsImxheWVyIiwiaW5kZXgiLCJvYmplY3QiLCJvcmlnaW5hbCIsImRlY2tDYWNoZSIsIm9yaWdpbmFscyIsIm9uU2VsZWN0aW9uIiwiYWxsWCIsIm1vdXNlUG9pbnQiLCJhbGxZIiwieCIsIk1hdGgiLCJtaW4iLCJ5IiwibWF4WCIsIm1heCIsIm1heFkiLCJ3aWR0aCIsImhlaWdodCIsImxlbmd0aCIsIngxIiwieTEiLCJ4MiIsInkyIiwicGlja09iamVjdHMiLCJhYnMiLCJsYXllcklkcyIsIl9nZXRMYXllcklkcyIsIl9zZWxlY3RGcm9tUGlja2luZ0luZm9zIiwiX2dldEJvdW5kaW5nQm94IiwiaXRlbSIsImV2ZW50Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJsbmdMYXQiLCJzZWxlY3Rpb25UeXBlIiwidHlwZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZHJhdyIsImRlYWN0aXZhdGUiLCJ2YWxpZFBvbHlnb24iLCJwdXNoIiwiX2dldE1vdXNlUG9zRnJvbUV2ZW50IiwibSIsIl9zZWxlY3RQb2x5Z29uT2JqZWN0cyIsInJlc2V0IiwiX3NlbGVjdFJlY3RhbmdsZU9iamVjdHMiLCJjZW50ZXIiLCJidWZmZXIiLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZGF0YSIsImRhdGFQaWNrIiwic2VsUG9seWdvbiIsIm1vdXNlUG9zIiwidW5wcm9qZWN0TW91c2VQb3NpdGlvbiIsInBvbHlnb24iLCJsaW5lQ29sb3IiLCJmaWxsQ29sb3IiLCJsYW5kUG9pbnRzUG9seSIsImJpZ0J1ZmZlciIsImJpZ1BvbHlnb24iLCJlIiwiX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0IiwiUG9seWdvbkxheWVyIiwiZnA2NCIsIm9wYWNpdHkiLCJwaWNrYWJsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsImxpbmVEYXNoSnVzdGlmaWVkIiwiZ2V0TGluZURhc2hBcnJheSIsImdldExpbmVDb2xvciIsIm9iaiIsImdldEZpbGxDb2xvciIsImdldFBvbHlnb24iLCJvIiwic3Ryb2tlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxDQUFDLENBQUQsRUFBSSxHQUFKLEVBQVMsQ0FBVCxFQUFZLEdBQVosQ0FBM0I7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixFQUFoQixDQUEzQjtBQUNBLElBQU1DLGtCQUFrQixHQUFHLENBQTNCO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBdkI7QUFDQSxJQUFNQyxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLElBQU1DLFlBQVksR0FBRyxFQUFyQjtBQUNBLElBQU1DLGFBQWEsR0FBRyxnQkFBdEI7QUFDQSxJQUFNQyxhQUFhLEdBQUcsZ0JBQXRCO0FBRU8sSUFBTUMsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxJ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aUJBQU9BLENBQUMsQ0FBQ3BCLE9BQVQ7QUFBQTtBQWhCRyxPQUFqQixDQURLLEVBbUJMLElBQUlRLG9CQUFKLENBQWlCO0FBQ2ZuRSxRQUFBQSxFQUFFLEVBQUVsQixhQURXO0FBRWZ3RSxRQUFBQSxJQUFJLEVBQUVDLFFBRlM7QUFHZjtBQUNBb0IsUUFBQUEsWUFBWSxFQUFFLHNCQUFDQyxHQUFEO0FBQUEsaUJBQVNBLEdBQUcsQ0FBQ2hCLFNBQUosSUFBaUIsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxHQUFWLENBQTFCO0FBQUEsU0FKQztBQUtmO0FBQ0FpQixRQUFBQSxZQUFZLEVBQUUsc0JBQUNELEdBQUQ7QUFBQSxpQkFBU0EsR0FBRyxDQUFDZixTQUFKLElBQWlCLENBQUMsQ0FBRCxFQUFJLENBQUosRUFBTyxDQUFQLEVBQVUsR0FBVixDQUExQjtBQUFBLFNBTkM7QUFPZjtBQUNBTyxRQUFBQSxJQUFJLEVBQUUsS0FSUztBQVNmQyxRQUFBQSxPQUFPLEVBQUUsR0FUTTtBQVVmVyxRQUFBQSxPQUFPLEVBQUUsS0FWTTtBQVdmVixRQUFBQSxRQUFRLEVBQUUsSUFYSztBQVlmO0FBQ0FRLFFBQUFBLFVBQVUsRUFBRSxvQkFBQ0MsQ0FBRDtBQUFBLGlCQUFPQSxDQUFDLENBQUNwQixPQUFUO0FBQUE7QUFiRyxPQUFqQixDQW5CSyxDQUFQO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9seWdvbkxheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7IHBvaW50LCBwb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgdHVyZkJib3ggZnJvbSAnQHR1cmYvYmJveCc7XG5pbXBvcnQgdHVyZkJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQgdHVyZkJ1ZmZlciBmcm9tICdAdHVyZi9idWZmZXInO1xuaW1wb3J0IHR1cmZEaWZmZXJlbmNlIGZyb20gJ0B0dXJmL2RpZmZlcmVuY2UnO1xuaW1wb3J0IHR1cmZEaXN0YW5jZSBmcm9tICdAdHVyZi9kaXN0YW5jZSc7XG5cbmNvbnN0IFBPTFlHT05fTElORV9DT0xPUiA9IFswLCAyNTUsIDAsIDI1NV07XG5jb25zdCBQT0xZR09OX0ZJTExfQ09MT1IgPSBbMjU1LCAyNTUsIDI1NSwgOTBdO1xuY29uc3QgUE9MWUdPTl9MSU5FX1dJRFRIID0gMjtcbmNvbnN0IFBPTFlHT05fREFTSEVTID0gWzIwLCAyMF07XG5jb25zdCBQT0xZR09OX1RIUkVTSE9MRCA9IDAuMDE7XG5jb25zdCBFWFBBTlNJT05fS00gPSAxMDtcbmNvbnN0IExBWUVSX0lEX1ZJRVcgPSAnRGVja0RyYXdlclZpZXcnO1xuY29uc3QgTEFZRVJfSURfUElDSyA9ICdEZWNrRHJhd2VyUGljayc7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RJT05fVFlQRSA9IHtcbiAgTk9ORTogbnVsbCxcbiAgUkVDVEFOR0xFOiAncmVjdGFuZ2xlJyxcbiAgUE9MWUdPTjogJ3BvbHlnb24nLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVja0RyYXdlciB7XG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgdXNlUG9seWdvbjogYm9vbGVhbjtcbiAgdmFsaWRQb2x5Z29uOiBib29sZWFuO1xuICBsYW5kUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG4gIG1vdXNlUG9pbnRzOiBbbnVtYmVyLCBudW1iZXJdW107XG5cbiAgY29uc3RydWN0b3IobmVidWxhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy51c2VQb2x5Z29uID0gZmFsc2U7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX2dldExheWVySWRzKCkge1xuICAgIC8vIFRPRE86IHNvcnQgYnkgbW91c2UgcHJpb3JpdHlcbiAgICByZXR1cm4gdGhpcy5uZWJ1bGEuZGVja2dsLnByb3BzLmxheWVyc1xuICAgICAgLmZpbHRlcigobCkgPT4gbCAmJiBsLnByb3BzICYmIGwucHJvcHMubmVidWxhTGF5ZXIgJiYgbC5wcm9wcy5uZWJ1bGFMYXllci5lbmFibGVTZWxlY3Rpb24pXG4gICAgICAubWFwKChsKSA9PiBsLmlkKTtcbiAgfVxuXG4gIF9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvczogUmVjb3JkPHN0cmluZywgYW55PltdKSB7XG4gICAgY29uc3Qgb2JqZWN0cyA9IHBpY2tpbmdJbmZvcy5tYXAoXG4gICAgICAoeyBsYXllciwgaW5kZXgsIG9iamVjdCB9KSA9PlxuICAgICAgICBvYmplY3Qub3JpZ2luYWwgfHwgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZGVja0NhY2hlLm9yaWdpbmFsc1tpbmRleF1cbiAgICApO1xuICAgIHRoaXMubmVidWxhLnByb3BzLm9uU2VsZWN0aW9uKG9iamVjdHMpO1xuICB9XG5cbiAgX2dldEJvdW5kaW5nQm94KCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IHsgbW91c2VQb2ludHMgfSA9IHRoaXM7XG4gICAgY29uc3QgYWxsWCA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFswXSk7XG4gICAgY29uc3QgYWxsWSA9IG1vdXNlUG9pbnRzLm1hcCgobW91c2VQb2ludCkgPT4gbW91c2VQb2ludFsxXSk7XG4gICAgY29uc3QgeCA9IE1hdGgubWluKC4uLmFsbFgpO1xuICAgIGNvbnN0IHkgPSBNYXRoLm1pbiguLi5hbGxZKTtcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgoLi4uYWxsWCk7XG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KC4uLmFsbFkpO1xuXG4gICAgcmV0dXJuIHsgeCwgeSwgd2lkdGg6IG1heFggLSB4LCBoZWlnaHQ6IG1heFkgLSB5IH07XG4gIH1cblxuICBfc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpIHtcbiAgICBpZiAodGhpcy5sYW5kUG9pbnRzLmxlbmd0aCAhPT0gMikgcmV0dXJuO1xuXG4gICAgY29uc3QgW3gxLCB5MV0gPSB0aGlzLm1vdXNlUG9pbnRzWzBdO1xuICAgIGNvbnN0IFt4MiwgeTJdID0gdGhpcy5tb3VzZVBvaW50c1sxXTtcbiAgICBjb25zdCBwaWNraW5nSW5mb3MgPSB0aGlzLm5lYnVsYS5kZWNrZ2wucGlja09iamVjdHMoe1xuICAgICAgeDogTWF0aC5taW4oeDEsIHgyKSxcbiAgICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgICB3aWR0aDogTWF0aC5hYnMoeDIgLSB4MSksXG4gICAgICBoZWlnaHQ6IE1hdGguYWJzKHkyIC0geTEpLFxuICAgICAgbGF5ZXJJZHM6IHRoaXMuX2dldExheWVySWRzKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZWxlY3RGcm9tUGlja2luZ0luZm9zKHBpY2tpbmdJbmZvcyk7XG4gIH1cblxuICBfc2VsZWN0UG9seWdvbk9iamVjdHMoKSB7XG4gICAgY29uc3QgcGlja2luZ0luZm9zID0gdGhpcy5uZWJ1bGEuZGVja2dsLnBpY2tPYmplY3RzKHtcbiAgICAgIC4uLnRoaXMuX2dldEJvdW5kaW5nQm94KCksXG4gICAgICBsYXllcklkczogW0xBWUVSX0lEX1BJQ0ssIC4uLnRoaXMuX2dldExheWVySWRzKCldLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VsZWN0RnJvbVBpY2tpbmdJbmZvcyhwaWNraW5nSW5mb3MuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmxheWVyLmlkICE9PSBMQVlFUl9JRF9QSUNLKSk7XG4gIH1cblxuICBfZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCB7IG9mZnNldFgsIG9mZnNldFkgfSA9IGV2ZW50O1xuICAgIHJldHVybiBbb2Zmc2V0WCwgb2Zmc2V0WV07XG4gIH1cblxuICBoYW5kbGVFdmVudChcbiAgICBldmVudDogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBsbmdMYXQ6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgc2VsZWN0aW9uVHlwZTogbnVtYmVyXG4gICk6IHsgcmVkcmF3OiBib29sZWFuOyBkZWFjdGl2YXRlOiBib29sZWFuIH0ge1xuICAgIC8vIGNhcHR1cmUgYWxsIGV2ZW50cyAobW91c2UtdXAgaXMgbmVlZGVkIHRvIHByZXZlbnQgdXMgc3R1Y2sgaW4gbW92aW5nIG1hcClcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ21vdXNldXAnKSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy51c2VQb2x5Z29uID0gc2VsZWN0aW9uVHlwZSA9PT0gU0VMRUNUSU9OX1RZUEUuUE9MWUdPTjtcblxuICAgIGxldCByZWRyYXcgPSBmYWxzZTtcbiAgICBsZXQgZGVhY3RpdmF0ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgeyB1c2VQb2x5Z29uLCBsYW5kUG9pbnRzLCBtb3VzZVBvaW50cyB9ID0gdGhpcztcblxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2Vkb3duJykge1xuICAgICAgaWYgKHVzZVBvbHlnb24gJiYgbGFuZFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gaWYgbGFuZFBvaW50cy5sZW5ndGggaXMgemVybyB3ZSB3YW50IHRvIGluc2VydCB0d28gcG9pbnRzIChzbyB3ZSBsZXQgaXQgcnVuIHRoZSBlbHNlKVxuICAgICAgICAvLyBhbHNvIGRvbid0IGluc2VydCBpZiBwb2x5Z29uIGlzIGludmFsaWRcbiAgICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPCAzIHx8IHRoaXMudmFsaWRQb2x5Z29uKSB7XG4gICAgICAgICAgbGFuZFBvaW50cy5wdXNoKGxuZ0xhdCk7XG4gICAgICAgICAgbW91c2VQb2ludHMucHVzaCh0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhbmRQb2ludHMgPSBbbG5nTGF0LCBsbmdMYXRdO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fZ2V0TW91c2VQb3NGcm9tRXZlbnQoZXZlbnQpO1xuICAgICAgICB0aGlzLm1vdXNlUG9pbnRzID0gW20sIG1dO1xuICAgICAgfVxuICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyB1cGRhdGUgbGFzdCBwb2ludFxuICAgICAgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdID0gbG5nTGF0O1xuICAgICAgbW91c2VQb2ludHNbbW91c2VQb2ludHMubGVuZ3RoIC0gMV0gPSB0aGlzLl9nZXRNb3VzZVBvc0Zyb21FdmVudChldmVudCk7XG4gICAgICByZWRyYXcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNldXAnKSB7XG4gICAgICBpZiAodXNlUG9seWdvbikge1xuICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgY29tcGxldGVkXG4gICAgICAgIC8vIFRPRE86IE1heWJlIGRvdWJsZS1jbGljayB0byBmaW5pc2g/XG4gICAgICAgIGlmIChcbiAgICAgICAgICBsYW5kUG9pbnRzLmxlbmd0aCA+IDQgJiZcbiAgICAgICAgICB0dXJmRGlzdGFuY2UobGFuZFBvaW50c1swXSwgbGFuZFBvaW50c1tsYW5kUG9pbnRzLmxlbmd0aCAtIDFdKSA8IFBPTFlHT05fVEhSRVNIT0xEICYmXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0UG9seWdvbk9iamVjdHMoKTtcbiAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgcmVkcmF3ID0gdHJ1ZTtcbiAgICAgICAgICBkZWFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0UmVjdGFuZ2xlT2JqZWN0cygpO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHJlZHJhdyA9IHRydWU7XG4gICAgICAgIGRlYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHJlZHJhdywgZGVhY3RpdmF0ZSB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5sYW5kUG9pbnRzID0gW107XG4gICAgdGhpcy5tb3VzZVBvaW50cyA9IFtdO1xuICB9XG5cbiAgX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KGNlbnRlcjogW251bWJlciwgbnVtYmVyXSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBidWZmZXIgPSB0dXJmQnVmZmVyKHBvaW50KGNlbnRlciksIFBPTFlHT05fVEhSRVNIT0xEIC8gNC4wKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHR1cmZCYm94UG9seWdvbih0dXJmQmJveChidWZmZXIpKS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgY29uc3QgZGF0YVBpY2sgPSBbXTtcblxuICAgIGlmICghdGhpcy51c2VQb2x5Z29uICYmIHRoaXMubGFuZFBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFVzZSBtb3VzZSBwb2ludHMgaW5zdGVhZCBvZiBsYW5kIHBvaW50cyBzbyB3ZSBnZXQgdGhlIHJpZ2h0IHNoYXBlXG4gICAgICAvLyBubyBtYXR0ZXIgd2hhdCBiZWFyaW5nIGlzLlxuICAgICAgY29uc3QgW1t4MSwgeTFdLCBbeDIsIHkyXV0gPSB0aGlzLm1vdXNlUG9pbnRzO1xuICAgICAgY29uc3Qgc2VsUG9seWdvbiA9IFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFt4MSwgeTJdLFxuICAgICAgICBbeDIsIHkyXSxcbiAgICAgICAgW3gyLCB5MV0sXG4gICAgICAgIFt4MSwgeTFdLFxuICAgICAgXS5tYXAoKG1vdXNlUG9zKSA9PiB0aGlzLm5lYnVsYS51bnByb2plY3RNb3VzZVBvc2l0aW9uKG1vdXNlUG9zKSk7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiBzZWxQb2x5Z29uLFxuICAgICAgICBsaW5lQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgICAgZmlsbENvbG9yOiBQT0xZR09OX0ZJTExfQ09MT1IsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudXNlUG9seWdvbiAmJiB0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICBkYXRhLnB1c2goe1xuICAgICAgICBwb2x5Z29uOiB0aGlzLmxhbmRQb2ludHMsXG4gICAgICAgIGxpbmVDb2xvcjogUE9MWUdPTl9MSU5FX0NPTE9SLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fRklMTF9DT0xPUixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYWNrOiB1c2UgYSBwb2x5Z29uIHRvIGhpZGUgdGhlIG91dHNpZGUsIGJlY2F1c2UgcGlja09iamVjdHMoKVxuICAgICAgLy8gZG9lcyBub3Qgc3VwcG9ydCBwb2x5Z29uc1xuICAgICAgaWYgKHRoaXMubGFuZFBvaW50cy5sZW5ndGggPj0gMykge1xuICAgICAgICBjb25zdCBsYW5kUG9pbnRzUG9seSA9IHBvbHlnb24oW1suLi50aGlzLmxhbmRQb2ludHMsIHRoaXMubGFuZFBvaW50c1swXV1dKTtcbiAgICAgICAgY29uc3QgYmlnQnVmZmVyID0gdHVyZkJ1ZmZlcihwb2ludCh0aGlzLmxhbmRQb2ludHNbMF0pLCBFWFBBTlNJT05fS00pO1xuICAgICAgICBsZXQgYmlnUG9seWdvbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyB0dXJmRGlmZmVyZW5jZSB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBwb2x5Z29uXG4gICAgICAgICAgLy8gaW50ZXJzZWN0cyB3aXRoIGl0c2VsZlxuICAgICAgICAgIGJpZ1BvbHlnb24gPSB0dXJmRGlmZmVyZW5jZShiaWdCdWZmZXIsIGxhbmRQb2ludHNQb2x5KTtcbiAgICAgICAgICBkYXRhUGljay5wdXNoKHtcbiAgICAgICAgICAgIHBvbHlnb246IGJpZ1BvbHlnb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICBmaWxsQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnZhbGlkUG9seWdvbiA9IHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpbnZhbGlkIHNlbGVjdGlvbiBwb2x5Z29uXG4gICAgICAgICAgdGhpcy52YWxpZFBvbHlnb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxhbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAvLyBoaWdobGlnaHQgc3RhcnQgcG9pbnRcbiAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgIHBvbHlnb246IHRoaXMuX21ha2VTdGFydFBvaW50SGlnaGxpZ2h0KHRoaXMubGFuZFBvaW50c1swXSksXG4gICAgICAgIGxpbmVDb2xvcjogWzAsIDAsIDAsIDBdLFxuICAgICAgICBmaWxsQ29sb3I6IFBPTFlHT05fTElORV9DT0xPUixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEhhY2sgdG8gbWFrZSB0aGUgUG9seWdvbkxheWVyKCkgc3RheSBhY3RpdmUsXG4gICAgLy8gb3RoZXJ3aXNlIGl0IHRha2VzIDMgc2Vjb25kcyAoISkgdG8gaW5pdCFcbiAgICAvLyBUT0RPOiBmaXggdGhpc1xuICAgIGRhdGEucHVzaCh7IHBvbHlnb246IFtbMCwgMF1dIH0pO1xuICAgIGRhdGFQaWNrLnB1c2goeyBwb2x5Z29uOiBbWzAsIDBdXSB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1ZJRVcsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgcGlja2FibGU6IGZhbHNlLFxuICAgICAgICBsaW5lV2lkdGhNaW5QaXhlbHM6IFBPTFlHT05fTElORV9XSURUSCxcbiAgICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzOiBQT0xZR09OX0xJTkVfV0lEVEgsXG4gICAgICAgIGxpbmVEYXNoSnVzdGlmaWVkOiB0cnVlLFxuICAgICAgICBnZXRMaW5lRGFzaEFycmF5OiAoeCkgPT4gUE9MWUdPTl9EQVNIRVMsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZ2V0TGluZUNvbG9yOiAob2JqKSA9PiBvYmoubGluZUNvbG9yIHx8IFswLCAwLCAwLCAyNTVdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldEZpbGxDb2xvcjogKG9iaikgPT4gb2JqLmZpbGxDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRQb2x5Z29uOiAobykgPT4gby5wb2x5Z29uLFxuICAgICAgfSksXG4gICAgICBuZXcgUG9seWdvbkxheWVyKHtcbiAgICAgICAgaWQ6IExBWUVSX0lEX1BJQ0ssXG4gICAgICAgIGRhdGE6IGRhdGFQaWNrLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldExpbmVDb2xvcjogKG9iaikgPT4gb2JqLmxpbmVDb2xvciB8fCBbMCwgMCwgMCwgMjU1XSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBnZXRGaWxsQ29sb3I6IChvYmopID0+IG9iai5maWxsQ29sb3IgfHwgWzAsIDAsIDAsIDI1NV0sXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZnA2NDogZmFsc2UsXG4gICAgICAgIG9wYWNpdHk6IDEuMCxcbiAgICAgICAgc3Ryb2tlZDogZmFsc2UsXG4gICAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGdldFBvbHlnb246IChvKSA9PiBvLnBvbHlnb24sXG4gICAgICB9KSxcbiAgICBdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/lib/feature.js b/modules/main/dist/lib/feature.js new file mode 100644 index 000000000..200118775 --- /dev/null +++ b/modules/main/dist/lib/feature.js @@ -0,0 +1,50 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 Feature = /*#__PURE__*/function () { + // geo json coordinates + function Feature(geoJson, style) { + var original = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var metadata = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + _classCallCheck(this, Feature); + + _defineProperty(this, "geoJson", void 0); + + _defineProperty(this, "style", void 0); + + _defineProperty(this, "original", void 0); + + _defineProperty(this, "metadata", void 0); + + this.geoJson = geoJson; + this.style = style; + this.original = original; + this.metadata = metadata; + } + + _createClass(Feature, [{ + key: "getCoords", + value: function getCoords() { + // @ts-ignore + return this.geoJson.geometry.coordinates; + } + }]); + + return Feature; +}(); + +exports["default"] = Feature; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmVhdHVyZS50cyJdLCJuYW1lcyI6WyJGZWF0dXJlIiwiZ2VvSnNvbiIsInN0eWxlIiwib3JpZ2luYWwiLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztJQUlxQkEsTztBQUNuQjtBQU1BLG1CQUNFQyxPQURGLEVBRUVDLEtBRkYsRUFLRTtBQUFBLFFBRkFDLFFBRUEsdUVBRm1DLElBRW5DO0FBQUEsUUFEQUMsUUFDQSx1RUFEZ0MsRUFDaEM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQ0EsU0FBS0gsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNEOzs7O2dDQUVnQjtBQUNmO0FBQ0EsYUFBTyxLQUFLSCxPQUFMLENBQWFJLFFBQWIsQ0FBc0JDLFdBQTdCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIGFzIEdlb0pzb24sIEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7IFN0eWxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZWF0dXJlIHtcbiAgLy8gZ2VvIGpzb24gY29vcmRpbmF0ZXNcbiAgZ2VvSnNvbjogR2VvSnNvbjxHZW9tZXRyeT47XG4gIHN0eWxlOiBTdHlsZTtcbiAgb3JpZ2luYWw6IGFueSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGdlb0pzb246IEdlb0pzb248R2VvbWV0cnk+LFxuICAgIHN0eWxlOiBTdHlsZSxcbiAgICBvcmlnaW5hbDogYW55IHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuICApIHtcbiAgICB0aGlzLmdlb0pzb24gPSBnZW9Kc29uO1xuICAgIHRoaXMuc3R5bGUgPSBzdHlsZTtcbiAgICB0aGlzLm9yaWdpbmFsID0gb3JpZ2luYWw7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0Q29vcmRzKCk6IGFueSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLmdlb0pzb24uZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist/lib/layer-mouse-event.js b/modules/main/dist/lib/layer-mouse-event.js new file mode 100644 index 000000000..94640a155 --- /dev/null +++ b/modules/main/dist/lib/layer-mouse-event.js @@ -0,0 +1,61 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 LayerMouseEvent = /*#__PURE__*/function () { + // original item that this event is related to + // internal nebula info about the object + // the mouse [lng,lat] raycasted onto the ground + // browser event + // reference to nebula + function LayerMouseEvent(nativeEvent, _ref) { + var data = _ref.data, + groundPoint = _ref.groundPoint, + nebula = _ref.nebula, + metadata = _ref.metadata; + + _classCallCheck(this, LayerMouseEvent); + + _defineProperty(this, "canceled", void 0); + + _defineProperty(this, "data", void 0); + + _defineProperty(this, "metadata", void 0); + + _defineProperty(this, "groundPoint", void 0); + + _defineProperty(this, "nativeEvent", void 0); + + _defineProperty(this, "nebula", void 0); + + this.nativeEvent = nativeEvent; + this.data = data; + this.groundPoint = groundPoint; + this.nebula = nebula; + this.metadata = metadata; + } + + _createClass(LayerMouseEvent, [{ + key: "stopPropagation", + value: function stopPropagation() { + this.nativeEvent.stopPropagation(); + this.canceled = true; + } + }]); + + return LayerMouseEvent; +}(); + +exports["default"] = LayerMouseEvent; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF5ZXItbW91c2UtZXZlbnQudHMiXSwibmFtZXMiOlsiTGF5ZXJNb3VzZUV2ZW50IiwibmF0aXZlRXZlbnQiLCJkYXRhIiwiZ3JvdW5kUG9pbnQiLCJuZWJ1bGEiLCJtZXRhZGF0YSIsInN0b3BQcm9wYWdhdGlvbiIsImNhbmNlbGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGU7QUFFbkI7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUdBLDJCQUNFQyxXQURGLFFBR0U7QUFBQSxRQURFQyxJQUNGLFFBREVBLElBQ0Y7QUFBQSxRQURRQyxXQUNSLFFBRFFBLFdBQ1I7QUFBQSxRQURxQkMsTUFDckIsUUFEcUJBLE1BQ3JCO0FBQUEsUUFENkJDLFFBQzdCLFFBRDZCQSxRQUM3Qjs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFDQSxTQUFLSixXQUFMLEdBQW1CQSxXQUFuQjtBQUVBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtDLFdBQUwsR0FBbUJBLFdBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQkEsUUFBaEI7QUFDRDs7OztzQ0FFaUI7QUFDaEIsV0FBS0osV0FBTCxDQUFpQkssZUFBakI7QUFDQSxXQUFLQyxRQUFMLEdBQWdCLElBQWhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMYXllck1vdXNlRXZlbnQge1xuICBjYW5jZWxlZDogYm9vbGVhbjtcbiAgLy8gb3JpZ2luYWwgaXRlbSB0aGF0IHRoaXMgZXZlbnQgaXMgcmVsYXRlZCB0b1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyBpbnRlcm5hbCBuZWJ1bGEgaW5mbyBhYm91dCB0aGUgb2JqZWN0XG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyB0aGUgbW91c2UgW2xuZyxsYXRdIHJheWNhc3RlZCBvbnRvIHRoZSBncm91bmRcbiAgZ3JvdW5kUG9pbnQ6IFBvc2l0aW9uO1xuICAvLyBicm93c2VyIGV2ZW50XG4gIG5hdGl2ZUV2ZW50OiBNb3VzZUV2ZW50O1xuICAvLyByZWZlcmVuY2UgdG8gbmVidWxhXG4gIG5lYnVsYTogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBuYXRpdmVFdmVudDogTW91c2VFdmVudCxcbiAgICB7IGRhdGEsIGdyb3VuZFBvaW50LCBuZWJ1bGEsIG1ldGFkYXRhIH06IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmdyb3VuZFBvaW50ID0gZ3JvdW5kUG9pbnQ7XG4gICAgdGhpcy5uZWJ1bGEgPSBuZWJ1bGE7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xuICB9XG5cbiAgc3RvcFByb3BhZ2F0aW9uKCkge1xuICAgIHRoaXMubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jYW5jZWxlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist/lib/layers/junctions-layer.js b/modules/main/dist/lib/layers/junctions-layer.js new file mode 100644 index 000000000..bf2c47d86 --- /dev/null +++ b/modules/main/dist/lib/layers/junctions-layer.js @@ -0,0 +1,109 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@nebula.gl/layers"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 JunctionsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(JunctionsLayer, _NebulaLayer); + + var _super = _createSuper(JunctionsLayer); + + function JunctionsLayer(config) { + var _this; + + _classCallCheck(this, JunctionsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + _this.enablePicking = true; + return _this; + } + + _createClass(JunctionsLayer, [{ + key: "render", + value: function render(_ref) { + var nebula = _ref.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + return new _layers.JunctionScatterplotLayer({ + id: "junctions-".concat(this.id), + data: objects, + opacity: 1, + // @ts-ignore + fp64: false, + pickable: true, + getPosition: function getPosition(nf) { + return nf.geoJson.geometry.coordinates; + }, + getFillColor: function getFillColor(nf) { + return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + getStrokeColor: function getStrokeColor(nf) { + return (0, _utils.toDeckColor)(nf.style.outlineColor) || (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + getRadius: function getRadius(nf) { + return nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1; + }, + getInnerRadius: function getInnerRadius(nf) { + return nf.style.pointRadiusMeters || 0.5; + }, + parameters: { + depthTest: false, + blend: false + }, + updateTriggers: { + all: updateTrigger + }, + nebulaLayer: this + }); + } + }]); + + return JunctionsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = JunctionsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL2p1bmN0aW9ucy1sYXllci50cyJdLCJuYW1lcyI6WyJKdW5jdGlvbnNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlUGlja2luZyIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIiwiaWQiLCJvcGFjaXR5IiwiZnA2NCIsInBpY2thYmxlIiwiZ2V0UG9zaXRpb24iLCJuZiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0RmlsbENvbG9yIiwic3R5bGUiLCJmaWxsQ29sb3IiLCJnZXRTdHJva2VDb2xvciIsIm91dGxpbmVDb2xvciIsImdldFJhZGl1cyIsInBvaW50UmFkaXVzTWV0ZXJzIiwib3V0bGluZVJhZGl1c01ldGVycyIsImdldElubmVyUmFkaXVzIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImJsZW5kIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLGM7Ozs7O0FBR25CLDBCQUFZQyxNQUFaLEVBQXlDO0FBQUE7O0FBQUE7O0FBQ3ZDLDhCQUFNQSxNQUFOOztBQUR1Qzs7QUFFdkMsVUFBS0MsU0FBTCxHQUFpQixJQUFJQyxxQkFBSixDQUFjRixNQUFNLENBQUNHLE9BQXJCLEVBQThCLFVBQUNDLElBQUQ7QUFBQSxhQUFVSixNQUFNLENBQUNLLGVBQVAsQ0FBdUJELElBQXZCLENBQVY7QUFBQSxLQUE5QixDQUFqQjtBQUNBLFVBQUtFLGFBQUwsR0FBcUIsSUFBckI7QUFIdUM7QUFJeEM7Ozs7aUNBRXVDO0FBQUEsVUFBL0JDLE1BQStCLFFBQS9CQSxNQUErQjtBQUN0QyxVQUFNQyxZQUFZLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBckI7QUFEc0MsNEJBRUgsS0FBS1AsU0FGRjtBQUFBLFVBRTlCUSxPQUY4QixtQkFFOUJBLE9BRjhCO0FBQUEsVUFFckJDLGFBRnFCLG1CQUVyQkEsYUFGcUI7QUFJdEMsYUFBTyxJQUFJQyxnQ0FBSixDQUE2QjtBQUNsQ0MsUUFBQUEsRUFBRSxzQkFBZSxLQUFLQSxFQUFwQixDQURnQztBQUVsQ1IsUUFBQUEsSUFBSSxFQUFFSyxPQUY0QjtBQUdsQ0ksUUFBQUEsT0FBTyxFQUFFLENBSHlCO0FBSWxDO0FBQ0FDLFFBQUFBLElBQUksRUFBRSxLQUw0QjtBQU1sQ0MsUUFBQUEsUUFBUSxFQUFFLElBTndCO0FBT2xDQyxRQUFBQSxXQUFXLEVBQUUscUJBQUNDLEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDQyxPQUFILENBQVdDLFFBQVgsQ0FBb0JDLFdBQTVCO0FBQUEsU0FQcUI7QUFRbENDLFFBQUFBLFlBQVksRUFBRSxzQkFBQ0osRUFBRDtBQUFBLGlCQUFRLHdCQUFZQSxFQUFFLENBQUNLLEtBQUgsQ0FBU0MsU0FBckIsS0FBbUNmLFlBQTNDO0FBQUEsU0FSb0I7QUFTbENnQixRQUFBQSxjQUFjLEVBQUUsd0JBQUNQLEVBQUQ7QUFBQSxpQkFDZCx3QkFBWUEsRUFBRSxDQUFDSyxLQUFILENBQVNHLFlBQXJCLEtBQXNDLHdCQUFZUixFQUFFLENBQUNLLEtBQUgsQ0FBU0MsU0FBckIsQ0FBdEMsSUFBeUVmLFlBRDNEO0FBQUEsU0FUa0I7QUFXbENrQixRQUFBQSxTQUFTLEVBQUUsbUJBQUNULEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDSyxLQUFILENBQVNLLGlCQUFULEdBQTZCVixFQUFFLENBQUNLLEtBQUgsQ0FBU00sbUJBQXRDLElBQTZELENBQXJFO0FBQUEsU0FYdUI7QUFZbENDLFFBQUFBLGNBQWMsRUFBRSx3QkFBQ1osRUFBRDtBQUFBLGlCQUFRQSxFQUFFLENBQUNLLEtBQUgsQ0FBU0ssaUJBQVQsSUFBOEIsR0FBdEM7QUFBQSxTQVprQjtBQWFsQ0csUUFBQUEsVUFBVSxFQUFFO0FBQ1ZDLFVBQUFBLFNBQVMsRUFBRSxLQUREO0FBRVZDLFVBQUFBLEtBQUssRUFBRTtBQUZHLFNBYnNCO0FBa0JsQ0MsUUFBQUEsY0FBYyxFQUFFO0FBQUVDLFVBQUFBLEdBQUcsRUFBRXhCO0FBQVAsU0FsQmtCO0FBb0JsQ3lCLFFBQUFBLFdBQVcsRUFBRTtBQXBCcUIsT0FBN0IsQ0FBUDtBQXNCRDs7OztFQW5DeUNDLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnVuY3Rpb25TY2F0dGVycGxvdExheWVyIH0gZnJvbSAnQG5lYnVsYS5nbC9sYXllcnMnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSnVuY3Rpb25zTGF5ZXIgZXh0ZW5kcyBOZWJ1bGFMYXllciB7XG4gIGRlY2tDYWNoZTogRGVja0NhY2hlPGFueSwgYW55PjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMuZGVja0NhY2hlID0gbmV3IERlY2tDYWNoZShjb25maWcuZ2V0RGF0YSwgKGRhdGEpID0+IGNvbmZpZy50b05lYnVsYUZlYXR1cmUoZGF0YSkpO1xuICAgIHRoaXMuZW5hYmxlUGlja2luZyA9IHRydWU7XG4gIH1cblxuICByZW5kZXIoeyBuZWJ1bGEgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgcmV0dXJuIG5ldyBKdW5jdGlvblNjYXR0ZXJwbG90TGF5ZXIoe1xuICAgICAgaWQ6IGBqdW5jdGlvbnMtJHt0aGlzLmlkfWAsXG4gICAgICBkYXRhOiBvYmplY3RzLFxuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZwNjQ6IGZhbHNlLFxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICBnZXRQb3NpdGlvbjogKG5mKSA9PiBuZi5nZW9Kc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0RmlsbENvbG9yOiAobmYpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuICAgICAgZ2V0U3Ryb2tlQ29sb3I6IChuZikgPT5cbiAgICAgICAgdG9EZWNrQ29sb3IobmYuc3R5bGUub3V0bGluZUNvbG9yKSB8fCB0b0RlY2tDb2xvcihuZi5zdHlsZS5maWxsQ29sb3IpIHx8IGRlZmF1bHRDb2xvcixcbiAgICAgIGdldFJhZGl1czogKG5mKSA9PiBuZi5zdHlsZS5wb2ludFJhZGl1c01ldGVycyArIG5mLnN0eWxlLm91dGxpbmVSYWRpdXNNZXRlcnMgfHwgMSxcbiAgICAgIGdldElubmVyUmFkaXVzOiAobmYpID0+IG5mLnN0eWxlLnBvaW50UmFkaXVzTWV0ZXJzIHx8IDAuNSxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgYmxlbmQ6IGZhbHNlLFxuICAgICAgfSxcblxuICAgICAgdXBkYXRlVHJpZ2dlcnM6IHsgYWxsOiB1cGRhdGVUcmlnZ2VyIH0sXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/lib/layers/segments-layer.js b/modules/main/dist/lib/layers/segments-layer.js new file mode 100644 index 000000000..afbd1bc44 --- /dev/null +++ b/modules/main/dist/lib/layers/segments-layer.js @@ -0,0 +1,214 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@nebula.gl/layers"); + +var _constants = require("@luma.gl/constants"); + +var _style = require("../style"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +var _NEBULA_TO_DECK_DIREC; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 NEBULA_TO_DECK_DIRECTIONS = (_NEBULA_TO_DECK_DIREC = {}, _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.NONE, { + forward: false, + backward: false +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.FORWARD, { + forward: true, + backward: false +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BACKWARD, { + forward: false, + backward: true +}), _defineProperty(_NEBULA_TO_DECK_DIREC, _style.ArrowStyles.BOTH, { + forward: true, + backward: true +}), _NEBULA_TO_DECK_DIREC); + +var SegmentsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(SegmentsLayer, _NebulaLayer); + + var _super = _createSuper(SegmentsLayer); + + function SegmentsLayer(config) { + var _this; + + _classCallCheck(this, SegmentsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _defineProperty(_assertThisInitialized(_this), "noBlend", void 0); + + _defineProperty(_assertThisInitialized(_this), "highlightColor", void 0); + + _defineProperty(_assertThisInitialized(_this), "arrowSize", void 0); + + _defineProperty(_assertThisInitialized(_this), "rounded", void 0); + + _defineProperty(_assertThisInitialized(_this), "dashed", void 0); + + _defineProperty(_assertThisInitialized(_this), "markerLayerProps", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + _this.enableSelection = true; + var _config$enablePicking = config.enablePicking, + enablePicking = _config$enablePicking === void 0 ? true : _config$enablePicking, + _config$noBlend = config.noBlend, + noBlend = _config$noBlend === void 0 ? false : _config$noBlend, + _config$rounded = config.rounded, + rounded = _config$rounded === void 0 ? true : _config$rounded, + _config$dashed = config.dashed, + dashed = _config$dashed === void 0 ? false : _config$dashed, + _config$markerLayerPr = config.markerLayerProps, + markerLayerProps = _config$markerLayerPr === void 0 ? null : _config$markerLayerPr; + Object.assign(_assertThisInitialized(_this), { + enablePicking: enablePicking, + noBlend: noBlend, + rounded: rounded, + dashed: dashed, + markerLayerProps: markerLayerProps + }); + return _this; + } + + _createClass(SegmentsLayer, [{ + key: "getMouseOverSegment", + value: function getMouseOverSegment() { + // TODO: remove references + return null; + } + }, { + key: "_calcMarkerPercentages", + value: function _calcMarkerPercentages(nf) { + var arrowPercentages = nf.style.arrowPercentages; + + if (arrowPercentages) { + return arrowPercentages; + } + + var arrowStyle = nf.style.arrowStyle || _style.DEFAULT_STYLE.arrowStyle; + if (arrowStyle === _style.ArrowStyles.NONE) return []; + var arrowCount = Math.min(nf.style.arrowCount || _style.DEFAULT_STYLE.arrowCount, _style.MAX_ARROWS); + return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1]; + } + }, { + key: "_getHighlightedObjectIndex", + value: function _getHighlightedObjectIndex(_ref) { + var nebula = _ref.nebula; + var deckglMouseOverInfo = nebula.deckglMouseOverInfo; + + if (deckglMouseOverInfo) { + var originalLayer = deckglMouseOverInfo.originalLayer, + index = deckglMouseOverInfo.index; + + if (originalLayer === this) { + return index; + } + } // no object + + + return -1; + } + }, { + key: "render", + value: function render(_ref2) { + var nebula = _ref2.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + return new _layers.PathMarkerLayer({ + id: "segments-".concat(this.id), + data: objects, + opacity: 1, + // @ts-ignore + fp64: false, + rounded: this.rounded, + pickable: true, + sizeScale: this.arrowSize || 6, + parameters: { + depthTest: false, + blend: !this.noBlend, + blendEquation: _constants.GL.MAX + }, + getPath: function getPath(nf) { + return nf.geoJson.geometry.coordinates; + }, + // @ts-ignore + getColor: function getColor(nf) { + return (0, _utils.toDeckColor)(nf.style.lineColor, defaultColor); + }, + getWidth: function getWidth(nf) { + return nf.style.lineWidthMeters || 1; + }, + getZLevel: function getZLevel(nf) { + return nf.style.zLevel * 255; + }, + getDirection: function getDirection(nf) { + return NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle]; + }, + // @ts-ignore + getMarkerColor: function getMarkerColor(nf) { + return (0, _utils.toDeckColor)(nf.style.arrowColor, defaultColor); + }, + getMarkerPercentages: this._calcMarkerPercentages, + updateTriggers: { + all: updateTrigger + }, + highlightedObjectIndex: this._getHighlightedObjectIndex({ + nebula: nebula + }), + highlightColor: (0, _utils.toDeckColor)(this.highlightColor), + dashJustified: this.dashed, + getDashArray: this.dashed ? function (nf) { + return nf.style.dashArray; + } : null, + markerLayerProps: this.markerLayerProps || _layers.PathMarkerLayer.defaultProps.markerLayerProps, + nebulaLayer: this + }); + } + }]); + + return SegmentsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = SegmentsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3NlZ21lbnRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5FQlVMQV9UT19ERUNLX0RJUkVDVElPTlMiLCJBcnJvd1N0eWxlcyIsIk5PTkUiLCJmb3J3YXJkIiwiYmFja3dhcmQiLCJGT1JXQVJEIiwiQkFDS1dBUkQiLCJCT1RIIiwiU2VnbWVudHNMYXllciIsImNvbmZpZyIsImRlY2tDYWNoZSIsIkRlY2tDYWNoZSIsImdldERhdGEiLCJkYXRhIiwidG9OZWJ1bGFGZWF0dXJlIiwiZW5hYmxlU2VsZWN0aW9uIiwiZW5hYmxlUGlja2luZyIsIm5vQmxlbmQiLCJyb3VuZGVkIiwiZGFzaGVkIiwibWFya2VyTGF5ZXJQcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIm5mIiwiYXJyb3dQZXJjZW50YWdlcyIsInN0eWxlIiwiYXJyb3dTdHlsZSIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvdW50IiwiTWF0aCIsIm1pbiIsIk1BWF9BUlJPV1MiLCJuZWJ1bGEiLCJkZWNrZ2xNb3VzZU92ZXJJbmZvIiwib3JpZ2luYWxMYXllciIsImluZGV4IiwiZGVmYXVsdENvbG9yIiwib2JqZWN0cyIsInVwZGF0ZVRyaWdnZXIiLCJQYXRoTWFya2VyTGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJzaXplU2NhbGUiLCJhcnJvd1NpemUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiYmxlbmQiLCJibGVuZEVxdWF0aW9uIiwiR0wiLCJNQVgiLCJnZXRQYXRoIiwiZ2VvSnNvbiIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJnZXRDb2xvciIsImxpbmVDb2xvciIsImdldFdpZHRoIiwibGluZVdpZHRoTWV0ZXJzIiwiZ2V0WkxldmVsIiwiekxldmVsIiwiZ2V0RGlyZWN0aW9uIiwiZ2V0TWFya2VyQ29sb3IiLCJhcnJvd0NvbG9yIiwiZ2V0TWFya2VyUGVyY2VudGFnZXMiLCJfY2FsY01hcmtlclBlcmNlbnRhZ2VzIiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJoaWdobGlnaHRlZE9iamVjdEluZGV4IiwiX2dldEhpZ2hsaWdodGVkT2JqZWN0SW5kZXgiLCJoaWdobGlnaHRDb2xvciIsImRhc2hKdXN0aWZpZWQiLCJnZXREYXNoQXJyYXkiLCJkYXNoQXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLHlCQUF5Qix1RUFDNUJDLG1CQUFZQyxJQURnQixFQUNUO0FBQUVDLEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FEUywwQ0FFNUJILG1CQUFZSSxPQUZnQixFQUVOO0FBQUVGLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FGTSwwQ0FHNUJILG1CQUFZSyxRQUhnQixFQUdMO0FBQUVILEVBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxFQUFBQSxRQUFRLEVBQUU7QUFBNUIsQ0FISywwQ0FJNUJILG1CQUFZTSxJQUpnQixFQUlUO0FBQUVKLEVBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxFQUFBQSxRQUFRLEVBQUU7QUFBM0IsQ0FKUyx5QkFBL0I7O0lBT3FCSSxhOzs7OztBQVNuQix5QkFBWUMsTUFBWixFQUF5QztBQUFBOztBQUFBOztBQUN2Qyw4QkFBTUEsTUFBTjs7QUFEdUM7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBQUE7O0FBRXZDLFVBQUtDLFNBQUwsR0FBaUIsSUFBSUMscUJBQUosQ0FBY0YsTUFBTSxDQUFDRyxPQUFyQixFQUE4QixVQUFDQyxJQUFEO0FBQUEsYUFBVUosTUFBTSxDQUFDSyxlQUFQLENBQXVCRCxJQUF2QixDQUFWO0FBQUEsS0FBOUIsQ0FBakI7QUFDQSxVQUFLRSxl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UCxTQXZCUztBQXlCekIrQixRQUFBQSxzQkFBc0IsRUFBRSxLQUFLQywwQkFBTCxDQUFnQztBQUFFdEMsVUFBQUEsTUFBTSxFQUFOQTtBQUFGLFNBQWhDLENBekJDO0FBMEJ6QnVDLFFBQUFBLGNBQWMsRUFBRSx3QkFBWSxLQUFLQSxjQUFqQixDQTFCUztBQTRCekJDLFFBQUFBLGFBQWEsRUFBRSxLQUFLckQsTUE1Qks7QUE2QnpCc0QsUUFBQUEsWUFBWSxFQUFFLEtBQUt0RCxNQUFMLEdBQWMsVUFBQ0ksRUFBRDtBQUFBLGlCQUFRQSxFQUFFLENBQUNFLEtBQUgsQ0FBU2lELFNBQWpCO0FBQUEsU0FBZCxHQUEyQyxJQTdCaEM7QUE4QnpCdEQsUUFBQUEsZ0JBQWdCLEVBQ2QsS0FBS0EsZ0JBQUwsSUFDQ21CLHVCQUFELENBQXlDb0MsWUFBekMsQ0FBc0R2RCxnQkFoQy9CO0FBa0N6QndELFFBQUFBLFdBQVcsRUFBRTtBQWxDWSxPQUFwQixDQUFQO0FBb0NEOzs7O0VBOUZ3Q0MsdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXRoTWFya2VyTGF5ZXIgfSBmcm9tICdAbmVidWxhLmdsL2xheWVycyc7XG5pbXBvcnQgeyBHTCB9IGZyb20gJ0BsdW1hLmdsL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IEFycm93U3R5bGVzLCBERUZBVUxUX1NUWUxFLCBNQVhfQVJST1dTIH0gZnJvbSAnLi4vc3R5bGUnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuY29uc3QgTkVCVUxBX1RPX0RFQ0tfRElSRUNUSU9OUyA9IHtcbiAgW0Fycm93U3R5bGVzLk5PTkVdOiB7IGZvcndhcmQ6IGZhbHNlLCBiYWNrd2FyZDogZmFsc2UgfSxcbiAgW0Fycm93U3R5bGVzLkZPUldBUkRdOiB7IGZvcndhcmQ6IHRydWUsIGJhY2t3YXJkOiBmYWxzZSB9LFxuICBbQXJyb3dTdHlsZXMuQkFDS1dBUkRdOiB7IGZvcndhcmQ6IGZhbHNlLCBiYWNrd2FyZDogdHJ1ZSB9LFxuICBbQXJyb3dTdHlsZXMuQk9USF06IHsgZm9yd2FyZDogdHJ1ZSwgYmFja3dhcmQ6IHRydWUgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlZ21lbnRzTGF5ZXIgZXh0ZW5kcyBOZWJ1bGFMYXllciB7XG4gIGRlY2tDYWNoZTogRGVja0NhY2hlPGFueSwgYW55PjtcbiAgbm9CbGVuZDogYm9vbGVhbjtcbiAgaGlnaGxpZ2h0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBhcnJvd1NpemU6IG51bWJlcjtcbiAgcm91bmRlZDogYm9vbGVhbjtcbiAgZGFzaGVkOiBib29sZWFuO1xuICBtYXJrZXJMYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdXBlcihjb25maWcpO1xuICAgIHRoaXMuZGVja0NhY2hlID0gbmV3IERlY2tDYWNoZShjb25maWcuZ2V0RGF0YSwgKGRhdGEpID0+IGNvbmZpZy50b05lYnVsYUZlYXR1cmUoZGF0YSkpO1xuICAgIHRoaXMuZW5hYmxlU2VsZWN0aW9uID0gdHJ1ZTtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVQaWNraW5nID0gdHJ1ZSxcbiAgICAgIG5vQmxlbmQgPSBmYWxzZSxcbiAgICAgIHJvdW5kZWQgPSB0cnVlLFxuICAgICAgZGFzaGVkID0gZmFsc2UsXG4gICAgICBtYXJrZXJMYXllclByb3BzID0gbnVsbCxcbiAgICB9ID0gY29uZmlnO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgeyBlbmFibGVQaWNraW5nLCBub0JsZW5kLCByb3VuZGVkLCBkYXNoZWQsIG1hcmtlckxheWVyUHJvcHMgfSk7XG4gIH1cblxuICBnZXRNb3VzZU92ZXJTZWdtZW50KCk6IGFueSB7XG4gICAgLy8gVE9ETzogcmVtb3ZlIHJlZmVyZW5jZXNcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIF9jYWxjTWFya2VyUGVyY2VudGFnZXMobmY6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgeyBhcnJvd1BlcmNlbnRhZ2VzIH0gPSBuZi5zdHlsZTtcbiAgICBpZiAoYXJyb3dQZXJjZW50YWdlcykge1xuICAgICAgcmV0dXJuIGFycm93UGVyY2VudGFnZXM7XG4gICAgfVxuXG4gICAgY29uc3QgYXJyb3dTdHlsZSA9IG5mLnN0eWxlLmFycm93U3R5bGUgfHwgREVGQVVMVF9TVFlMRS5hcnJvd1N0eWxlO1xuICAgIGlmIChhcnJvd1N0eWxlID09PSBBcnJvd1N0eWxlcy5OT05FKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBhcnJvd0NvdW50ID0gTWF0aC5taW4obmYuc3R5bGUuYXJyb3dDb3VudCB8fCBERUZBVUxUX1NUWUxFLmFycm93Q291bnQsIE1BWF9BUlJPV1MpO1xuICAgIHJldHVybiBbWzAuNV0sIFswLjMzLCAwLjY2XSwgWzAuMjUsIDAuNSwgMC43NV1dW2Fycm93Q291bnQgLSAxXTtcbiAgfVxuXG4gIF9nZXRIaWdobGlnaHRlZE9iamVjdEluZGV4KHsgbmVidWxhIH06IFJlY29yZDxzdHJpbmcsIGFueT4pOiBudW1iZXIge1xuICAgIGNvbnN0IHsgZGVja2dsTW91c2VPdmVySW5mbyB9ID0gbmVidWxhO1xuICAgIGlmIChkZWNrZ2xNb3VzZU92ZXJJbmZvKSB7XG4gICAgICBjb25zdCB7IG9yaWdpbmFsTGF5ZXIsIGluZGV4IH0gPSBkZWNrZ2xNb3VzZU92ZXJJbmZvO1xuICAgICAgaWYgKG9yaWdpbmFsTGF5ZXIgPT09IHRoaXMpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vIG9iamVjdFxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHJlbmRlcih7IG5lYnVsYSB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9yID0gWzB4MCwgMHgwLCAweDAsIDB4ZmZdO1xuICAgIGNvbnN0IHsgb2JqZWN0cywgdXBkYXRlVHJpZ2dlciB9ID0gdGhpcy5kZWNrQ2FjaGU7XG5cbiAgICByZXR1cm4gbmV3IFBhdGhNYXJrZXJMYXllcih7XG4gICAgICBpZDogYHNlZ21lbnRzLSR7dGhpcy5pZH1gLFxuICAgICAgZGF0YTogb2JqZWN0cyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmcDY0OiBmYWxzZSxcbiAgICAgIHJvdW5kZWQ6IHRoaXMucm91bmRlZCxcbiAgICAgIHBpY2thYmxlOiB0cnVlLFxuICAgICAgc2l6ZVNjYWxlOiB0aGlzLmFycm93U2l6ZSB8fCA2LFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aFRlc3Q6IGZhbHNlLFxuICAgICAgICBibGVuZDogIXRoaXMubm9CbGVuZCxcbiAgICAgICAgYmxlbmRFcXVhdGlvbjogR0wuTUFYLFxuICAgICAgfSxcbiAgICAgIGdldFBhdGg6IChuZjogYW55KSA9PiBuZi5nZW9Kc29uLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZ2V0Q29sb3I6IChuZjogYW55KSA9PiB0b0RlY2tDb2xvcihuZi5zdHlsZS5saW5lQ29sb3IsIGRlZmF1bHRDb2xvciksXG4gICAgICBnZXRXaWR0aDogKG5mOiBhbnkpID0+IG5mLnN0eWxlLmxpbmVXaWR0aE1ldGVycyB8fCAxLFxuICAgICAgZ2V0WkxldmVsOiAobmY6IGFueSkgPT4gbmYuc3R5bGUuekxldmVsICogMjU1LFxuICAgICAgZ2V0RGlyZWN0aW9uOiAobmY6IGFueSkgPT4gTkVCVUxBX1RPX0RFQ0tfRElSRUNUSU9OU1tuZi5zdHlsZS5hcnJvd1N0eWxlXSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGdldE1hcmtlckNvbG9yOiAobmY6IGFueSkgPT4gdG9EZWNrQ29sb3IobmYuc3R5bGUuYXJyb3dDb2xvciwgZGVmYXVsdENvbG9yKSxcbiAgICAgIGdldE1hcmtlclBlcmNlbnRhZ2VzOiB0aGlzLl9jYWxjTWFya2VyUGVyY2VudGFnZXMsXG4gICAgICB1cGRhdGVUcmlnZ2VyczogeyBhbGw6IHVwZGF0ZVRyaWdnZXIgfSxcblxuICAgICAgaGlnaGxpZ2h0ZWRPYmplY3RJbmRleDogdGhpcy5fZ2V0SGlnaGxpZ2h0ZWRPYmplY3RJbmRleCh7IG5lYnVsYSB9KSxcbiAgICAgIGhpZ2hsaWdodENvbG9yOiB0b0RlY2tDb2xvcih0aGlzLmhpZ2hsaWdodENvbG9yKSxcblxuICAgICAgZGFzaEp1c3RpZmllZDogdGhpcy5kYXNoZWQsXG4gICAgICBnZXREYXNoQXJyYXk6IHRoaXMuZGFzaGVkID8gKG5mKSA9PiBuZi5zdHlsZS5kYXNoQXJyYXkgOiBudWxsLFxuICAgICAgbWFya2VyTGF5ZXJQcm9wczpcbiAgICAgICAgdGhpcy5tYXJrZXJMYXllclByb3BzIHx8XG4gICAgICAgIChQYXRoTWFya2VyTGF5ZXIgYXMgUmVjb3JkPHN0cmluZywgYW55PikuZGVmYXVsdFByb3BzLm1hcmtlckxheWVyUHJvcHMsXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/lib/layers/texts-layer.js b/modules/main/dist/lib/layers/texts-layer.js new file mode 100644 index 000000000..7e5d55a8f --- /dev/null +++ b/modules/main/dist/lib/layers/texts-layer.js @@ -0,0 +1,101 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _layers = require("@deck.gl/layers"); + +var _nebulaLayer = _interopRequireDefault(require("../nebula-layer")); + +var _utils = require("../utils"); + +var _deckCache = _interopRequireDefault(require("../deck-renderer/deck-cache")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 TextsLayer = /*#__PURE__*/function (_NebulaLayer) { + _inherits(TextsLayer, _NebulaLayer); + + var _super = _createSuper(TextsLayer); + + function TextsLayer(config) { + var _this; + + _classCallCheck(this, TextsLayer); + + _this = _super.call(this, config); + + _defineProperty(_assertThisInitialized(_this), "deckCache", void 0); + + _this.deckCache = new _deckCache["default"](config.getData, function (data) { + return config.toNebulaFeature(data); + }); + return _this; + } + + _createClass(TextsLayer, [{ + key: "render", + value: function render(_ref) { + var nebula = _ref.nebula; + var defaultColor = [0x0, 0x0, 0x0, 0xff]; + var _this$deckCache = this.deckCache, + objects = _this$deckCache.objects, + updateTrigger = _this$deckCache.updateTrigger; + var zoom = nebula.props.viewport.zoom; + return new _layers.TextLayer({ + id: "texts-".concat(this.id), + data: objects, + opacity: 1, + fp64: false, + pickable: false, + getText: function getText(nf) { + return nf.style.text; + }, + getPosition: function getPosition(nf) { + return nf.geoJson.geometry.coordinates; + }, + // @ts-ignore + getColor: function getColor(nf) { + return (0, _utils.toDeckColor)(nf.style.fillColor) || defaultColor; + }, + // TODO: layer should offer option to scale with zoom + sizeScale: 1 / Math.pow(2, 20 - zoom), + updateTriggers: { + all: updateTrigger + }, + nebulaLayer: this + }); + } + }]); + + return TextsLayer; +}(_nebulaLayer["default"]); + +exports["default"] = TextsLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbGF5ZXJzL3RleHRzLWxheWVyLnRzIl0sIm5hbWVzIjpbIlRleHRzTGF5ZXIiLCJjb25maWciLCJkZWNrQ2FjaGUiLCJEZWNrQ2FjaGUiLCJnZXREYXRhIiwiZGF0YSIsInRvTmVidWxhRmVhdHVyZSIsIm5lYnVsYSIsImRlZmF1bHRDb2xvciIsIm9iamVjdHMiLCJ1cGRhdGVUcmlnZ2VyIiwiem9vbSIsInByb3BzIiwidmlld3BvcnQiLCJUZXh0TGF5ZXIiLCJpZCIsIm9wYWNpdHkiLCJmcDY0IiwicGlja2FibGUiLCJnZXRUZXh0IiwibmYiLCJzdHlsZSIsInRleHQiLCJnZXRQb3NpdGlvbiIsImdlb0pzb24iLCJnZW9tZXRyeSIsImNvb3JkaW5hdGVzIiwiZ2V0Q29sb3IiLCJmaWxsQ29sb3IiLCJzaXplU2NhbGUiLCJNYXRoIiwicG93IiwidXBkYXRlVHJpZ2dlcnMiLCJhbGwiLCJuZWJ1bGFMYXllciIsIk5lYnVsYUxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLFU7Ozs7O0FBR25CLHNCQUFZQyxNQUFaLEVBQXlDO0FBQUE7O0FBQUE7O0FBQ3ZDLDhCQUFNQSxNQUFOOztBQUR1Qzs7QUFFdkMsVUFBS0MsU0FBTCxHQUFpQixJQUFJQyxxQkFBSixDQUFjRixNQUFNLENBQUNHLE9BQXJCLEVBQThCLFVBQUNDLElBQUQ7QUFBQSxhQUFVSixNQUFNLENBQUNLLGVBQVAsQ0FBdUJELElBQXZCLENBQVY7QUFBQSxLQUE5QixDQUFqQjtBQUZ1QztBQUd4Qzs7OztpQ0FFdUM7QUFBQSxVQUEvQkUsTUFBK0IsUUFBL0JBLE1BQStCO0FBQ3RDLFVBQU1DLFlBQVksR0FBRyxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxFQUFnQixJQUFoQixDQUFyQjtBQURzQyw0QkFFSCxLQUFLTixTQUZGO0FBQUEsVUFFOUJPLE9BRjhCLG1CQUU5QkEsT0FGOEI7QUFBQSxVQUVyQkMsYUFGcUIsbUJBRXJCQSxhQUZxQjtBQUFBLFVBSTlCQyxJQUo4QixHQUlyQkosTUFBTSxDQUFDSyxLQUFQLENBQWFDLFFBSlEsQ0FJOUJGLElBSjhCO0FBTXRDLGFBQU8sSUFBSUcsaUJBQUosQ0FBYztBQUNuQkMsUUFBQUEsRUFBRSxrQkFBVyxLQUFLQSxFQUFoQixDQURpQjtBQUVuQlYsUUFBQUEsSUFBSSxFQUFFSSxPQUZhO0FBR25CTyxRQUFBQSxPQUFPLEVBQUUsQ0FIVTtBQUluQkMsUUFBQUEsSUFBSSxFQUFFLEtBSmE7QUFLbkJDLFFBQUFBLFFBQVEsRUFBRSxLQUxTO0FBT25CQyxRQUFBQSxPQUFPLEVBQUUsaUJBQUNDLEVBQUQ7QUFBQSxpQkFBUUEsRUFBRSxDQUFDQyxLQUFILENBQVNDLElBQWpCO0FBQUEsU0FQVTtBQVFuQkMsUUFBQUEsV0FBVyxFQUFFLHFCQUFDSCxFQUFEO0FBQUEsaUJBQVFBLEVBQUUsQ0FBQ0ksT0FBSCxDQUFXQyxRQUFYLENBQW9CQyxXQUE1QjtBQUFBLFNBUk07QUFTbkI7QUFDQUMsUUFBQUEsUUFBUSxFQUFFLGtCQUFDUCxFQUFEO0FBQUEsaUJBQVEsd0JBQVlBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTTyxTQUFyQixLQUFtQ3BCLFlBQTNDO0FBQUEsU0FWUztBQVluQjtBQUNBcUIsUUFBQUEsU0FBUyxFQUFFLElBQUlDLElBQUksQ0FBQ0MsR0FBTCxDQUFTLENBQVQsRUFBWSxLQUFLcEIsSUFBakIsQ0FiSTtBQWVuQnFCLFFBQUFBLGNBQWMsRUFBRTtBQUFFQyxVQUFBQSxHQUFHLEVBQUV2QjtBQUFQLFNBZkc7QUFpQm5Cd0IsUUFBQUEsV0FBVyxFQUFFO0FBakJNLE9BQWQsQ0FBUDtBQW1CRDs7OztFQWpDcUNDLHVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGV4dExheWVyIH0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4uL25lYnVsYS1sYXllcic7XG5pbXBvcnQgeyB0b0RlY2tDb2xvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEZWNrQ2FjaGUgZnJvbSAnLi4vZGVjay1yZW5kZXJlci9kZWNrLWNhY2hlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHNMYXllciBleHRlbmRzIE5lYnVsYUxheWVyIHtcbiAgZGVja0NhY2hlOiBEZWNrQ2FjaGU8YW55LCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gICAgdGhpcy5kZWNrQ2FjaGUgPSBuZXcgRGVja0NhY2hlKGNvbmZpZy5nZXREYXRhLCAoZGF0YSkgPT4gY29uZmlnLnRvTmVidWxhRmVhdHVyZShkYXRhKSk7XG4gIH1cblxuICByZW5kZXIoeyBuZWJ1bGEgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvciA9IFsweDAsIDB4MCwgMHgwLCAweGZmXTtcbiAgICBjb25zdCB7IG9iamVjdHMsIHVwZGF0ZVRyaWdnZXIgfSA9IHRoaXMuZGVja0NhY2hlO1xuXG4gICAgY29uc3QgeyB6b29tIH0gPSBuZWJ1bGEucHJvcHMudmlld3BvcnQ7XG5cbiAgICByZXR1cm4gbmV3IFRleHRMYXllcih7XG4gICAgICBpZDogYHRleHRzLSR7dGhpcy5pZH1gLFxuICAgICAgZGF0YTogb2JqZWN0cyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBmcDY0OiBmYWxzZSxcbiAgICAgIHBpY2thYmxlOiBmYWxzZSxcblxuICAgICAgZ2V0VGV4dDogKG5mKSA9PiBuZi5zdHlsZS50ZXh0LFxuICAgICAgZ2V0UG9zaXRpb246IChuZikgPT4gbmYuZ2VvSnNvbi5nZW9tZXRyeS5jb29yZGluYXRlcyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGdldENvbG9yOiAobmYpID0+IHRvRGVja0NvbG9yKG5mLnN0eWxlLmZpbGxDb2xvcikgfHwgZGVmYXVsdENvbG9yLFxuXG4gICAgICAvLyBUT0RPOiBsYXllciBzaG91bGQgb2ZmZXIgb3B0aW9uIHRvIHNjYWxlIHdpdGggem9vbVxuICAgICAgc2l6ZVNjYWxlOiAxIC8gTWF0aC5wb3coMiwgMjAgLSB6b29tKSxcblxuICAgICAgdXBkYXRlVHJpZ2dlcnM6IHsgYWxsOiB1cGRhdGVUcmlnZ2VyIH0sXG5cbiAgICAgIG5lYnVsYUxheWVyOiB0aGlzLFxuICAgIH0pO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/lib/math.js b/modules/main/dist/lib/math.js new file mode 100644 index 000000000..96f151909 --- /dev/null +++ b/modules/main/dist/lib/math.js @@ -0,0 +1,37 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDegree = toDegree; +exports.toRadian = toRadian; +exports.convertE7Array = convertE7Array; + +function toDegree(radian) { + return radian * 180 / Math.PI; +} + +function toRadian(angle) { + return angle * Math.PI / 180; +} +/** + * Converts an array of latitudes, longitudes in E7 format to a list of points in degrees. + * + * @param {[]} array: An E7 array [lat_e7, lng_e7, lat_e7, lng_e7, ...] + * @return {[]} An array of points in degrees + * [ [lng_degrees, lat_degrees], [lng_degrees, lat_degrees], ...] + */ + + +function convertE7Array(array) { + var points = []; + + for (var i = 0; i < array.length; i += 2) { + var lat = array[i] * 1e-7; + var lng = array[i + 1] * 1e-7; + points.push([lng, lat]); + } + + return points; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbWF0aC50cyJdLCJuYW1lcyI6WyJ0b0RlZ3JlZSIsInJhZGlhbiIsIk1hdGgiLCJQSSIsInRvUmFkaWFuIiwiYW5nbGUiLCJjb252ZXJ0RTdBcnJheSIsImFycmF5IiwicG9pbnRzIiwiaSIsImxlbmd0aCIsImxhdCIsImxuZyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLFNBQVNBLFFBQVQsQ0FBa0JDLE1BQWxCLEVBQTBDO0FBQy9DLFNBQVFBLE1BQU0sR0FBRyxHQUFWLEdBQWlCQyxJQUFJLENBQUNDLEVBQTdCO0FBQ0Q7O0FBRU0sU0FBU0MsUUFBVCxDQUFrQkMsS0FBbEIsRUFBeUM7QUFDOUMsU0FBUUEsS0FBSyxHQUFHSCxJQUFJLENBQUNDLEVBQWQsR0FBb0IsR0FBM0I7QUFDRDtBQUVEOzs7Ozs7Ozs7QUFPTyxTQUFTRyxjQUFULENBQXdCQyxLQUF4QixFQUFxRDtBQUMxRCxNQUFNQyxNQUFNLEdBQUcsRUFBZjs7QUFDQSxPQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdGLEtBQUssQ0FBQ0csTUFBMUIsRUFBa0NELENBQUMsSUFBSSxDQUF2QyxFQUEwQztBQUN4QyxRQUFNRSxHQUFHLEdBQUdKLEtBQUssQ0FBQ0UsQ0FBRCxDQUFMLEdBQVcsSUFBdkI7QUFDQSxRQUFNRyxHQUFHLEdBQUdMLEtBQUssQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBTCxHQUFlLElBQTNCO0FBQ0FELElBQUFBLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZLENBQUNELEdBQUQsRUFBTUQsR0FBTixDQUFaO0FBQ0Q7O0FBQ0QsU0FBT0gsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdnZW9qc29uJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRGVncmVlKHJhZGlhbjogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChyYWRpYW4gKiAxODApIC8gTWF0aC5QSTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmFkaWFuKGFuZ2xlOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKGFuZ2xlICogTWF0aC5QSSkgLyAxODA7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgbGF0aXR1ZGVzLCBsb25naXR1ZGVzIGluIEU3IGZvcm1hdCB0byBhIGxpc3Qgb2YgcG9pbnRzIGluIGRlZ3JlZXMuXG4gKlxuICogQHBhcmFtIHtbXX0gYXJyYXk6IEFuIEU3IGFycmF5IFtsYXRfZTcsIGxuZ19lNywgbGF0X2U3LCBsbmdfZTcsIC4uLl1cbiAqIEByZXR1cm4ge1tdfSBBbiBhcnJheSBvZiBwb2ludHMgaW4gZGVncmVlc1xuICogICAgICAgICAgICAgIFsgW2xuZ19kZWdyZWVzLCBsYXRfZGVncmVlc10sIFtsbmdfZGVncmVlcywgbGF0X2RlZ3JlZXNdLCAuLi5dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RTdBcnJheShhcnJheTogbnVtYmVyW10pOiBQb3NpdGlvbltdIHtcbiAgY29uc3QgcG9pbnRzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDIpIHtcbiAgICBjb25zdCBsYXQgPSBhcnJheVtpXSAqIDFlLTc7XG4gICAgY29uc3QgbG5nID0gYXJyYXlbaSArIDFdICogMWUtNztcbiAgICBwb2ludHMucHVzaChbbG5nLCBsYXRdKTtcbiAgfVxuICByZXR1cm4gcG9pbnRzO1xufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist/lib/nebula-layer.js b/modules/main/dist/lib/nebula-layer.js new file mode 100644 index 000000000..890a7943b --- /dev/null +++ b/modules/main/dist/lib/nebula-layer.js @@ -0,0 +1,96 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _events = _interopRequireDefault(require("events")); + +var _uuid = _interopRequireDefault(require("uuid")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 NebulaLayer = /*#__PURE__*/function (_Event$EventEmitter) { + _inherits(NebulaLayer, _Event$EventEmitter); + + var _super = _createSuper(NebulaLayer); + + // flags + // + function NebulaLayer(_ref) { + var _this; + + var getData = _ref.getData, + on = _ref.on, + toNebulaFeature = _ref.toNebulaFeature; + + _classCallCheck(this, NebulaLayer); + + _this = _super.call(this); + + _defineProperty(_assertThisInitialized(_this), "getData", void 0); + + _defineProperty(_assertThisInitialized(_this), "toNebulaFeature", void 0); + + _defineProperty(_assertThisInitialized(_this), "id", void 0); + + _defineProperty(_assertThisInitialized(_this), "helperLayers", void 0); + + _defineProperty(_assertThisInitialized(_this), "usesMapEvents", false); + + _defineProperty(_assertThisInitialized(_this), "enablePicking", false); + + _defineProperty(_assertThisInitialized(_this), "enableSelection", false); + + _this.id = _uuid["default"].v4(); + _this.getData = getData; + _this.toNebulaFeature = toNebulaFeature; + _this.helperLayers = []; + + if (on) { + // @ts-ignore + Object.keys(on).forEach(function (key) { + return _this.on(key, on[key]); + }); + } + + return _this; + } + + _createClass(NebulaLayer, [{ + key: "render", + value: function render(config) { + return null; + } + }]); + + return NebulaLayer; +}(_events["default"].EventEmitter); + +exports["default"] = NebulaLayer; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLWxheWVyLnRzIl0sIm5hbWVzIjpbIk5lYnVsYUxheWVyIiwiZ2V0RGF0YSIsIm9uIiwidG9OZWJ1bGFGZWF0dXJlIiwiaWQiLCJ1dWlkIiwidjQiLCJoZWxwZXJMYXllcnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsIkV2ZW50IiwiRXZlbnRFbWl0dGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJcUJBLFc7Ozs7O0FBTW5CO0FBSUE7QUFFQSw2QkFBbUU7QUFBQTs7QUFBQSxRQUFyREMsT0FBcUQsUUFBckRBLE9BQXFEO0FBQUEsUUFBNUNDLEVBQTRDLFFBQTVDQSxFQUE0QztBQUFBLFFBQXhDQyxlQUF3QyxRQUF4Q0EsZUFBd0M7O0FBQUE7O0FBQ2pFOztBQURpRTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSxvRUFMbkQsS0FLbUQ7O0FBQUEsb0VBSm5ELEtBSW1EOztBQUFBLHNFQUhqRCxLQUdpRDs7QUFFakUsVUFBS0MsRUFBTCxHQUFVQyxpQkFBS0MsRUFBTCxFQUFWO0FBQ0EsVUFBS0wsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsVUFBS0UsZUFBTCxHQUF1QkEsZUFBdkI7QUFDQSxVQUFLSSxZQUFMLEdBQW9CLEVBQXBCOztBQUVBLFFBQUlMLEVBQUosRUFBUTtBQUNOO0FBQ0FNLE1BQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxFQUFaLEVBQWdCUSxPQUFoQixDQUF3QixVQUFDQyxHQUFEO0FBQUEsZUFBUyxNQUFLVCxFQUFMLENBQVFTLEdBQVIsRUFBYVQsRUFBRSxDQUFDUyxHQUFELENBQWYsQ0FBVDtBQUFBLE9BQXhCO0FBQ0Q7O0FBVmdFO0FBV2xFOzs7OzJCQUVNQyxNLEVBQXNDO0FBQzNDLGFBQU8sSUFBUDtBQUNEOzs7O0VBM0JzQ0MsbUJBQU1DLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnQgZnJvbSAnZXZlbnRzJztcbmltcG9ydCB1dWlkIGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgRmVhdHVyZSBmcm9tICcuL2ZlYXR1cmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZWJ1bGFMYXllciBleHRlbmRzIEV2ZW50LkV2ZW50RW1pdHRlciB7XG4gIGdldERhdGE6ICgpID0+IFJlY29yZDxzdHJpbmcsIGFueT5bXTtcbiAgdG9OZWJ1bGFGZWF0dXJlOiAoZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gRmVhdHVyZTtcbiAgaWQ6IHN0cmluZztcbiAgaGVscGVyTGF5ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgLy8gZmxhZ3NcbiAgdXNlc01hcEV2ZW50cyA9IGZhbHNlO1xuICBlbmFibGVQaWNraW5nID0gZmFsc2U7XG4gIGVuYWJsZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAvL1xuXG4gIGNvbnN0cnVjdG9yKHsgZ2V0RGF0YSwgb24sIHRvTmVidWxhRmVhdHVyZSB9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gdXVpZC52NCgpO1xuICAgIHRoaXMuZ2V0RGF0YSA9IGdldERhdGE7XG4gICAgdGhpcy50b05lYnVsYUZlYXR1cmUgPSB0b05lYnVsYUZlYXR1cmU7XG4gICAgdGhpcy5oZWxwZXJMYXllcnMgPSBbXTtcblxuICAgIGlmIChvbikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgT2JqZWN0LmtleXMob24pLmZvckVhY2goKGtleSkgPT4gdGhpcy5vbihrZXksIG9uW2tleV0pKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdW5rbm93biB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/main/dist/lib/nebula.js b/modules/main/dist/lib/nebula.js new file mode 100644 index 000000000..4fe194a8c --- /dev/null +++ b/modules/main/dist/lib/nebula.js @@ -0,0 +1,413 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _events = require("events"); + +var _document = _interopRequireDefault(require("global/document")); + +var _core = require("@deck.gl/core"); + +var _deckDrawer = _interopRequireDefault(require("./deck-renderer/deck-drawer")); + +var _layerMouseEvent = _interopRequireDefault(require("./layer-mouse-event")); + +var _nebulaLayer = _interopRequireDefault(require("./nebula-layer")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 LOGGER_PREFIX = 'Nebula: '; + +var Nebula = /*#__PURE__*/function () { + function Nebula() { + var _this = this; + + _classCallCheck(this, Nebula); + + _defineProperty(this, "props", void 0); + + _defineProperty(this, "deckgl", void 0); + + _defineProperty(this, "mainContainer", void 0); + + _defineProperty(this, "deckglMouseOverInfo", void 0); + + _defineProperty(this, "_deckDrawer", void 0); + + _defineProperty(this, "_mouseWasDown", void 0); + + _defineProperty(this, "wmViewport", void 0); + + _defineProperty(this, "queryObjectEvents", new _events.EventEmitter()); + + _defineProperty(this, "forceUpdate", void 0); + + _defineProperty(this, "inited", void 0); + + _defineProperty(this, "_onMouseEvent", function (event) { + if (!_this._isNebulaEvent(event)) { + return; + } + + if (event.type === 'mousedown') { + _this._mouseWasDown = true; + } // offsetX/Y of the MouseEvent provides the offset in the X/Y coordinate + // of the mouse pointer between that event and the padding edge of the target node. + // We set our listener to document so we need to adjust offsetX/Y + // in case the target is not be our WebGL canvas. + + + var _ref = _this.mainContainer ? _this.mainContainer.getBoundingClientRect() : {}, + _ref$top = _ref.top, + top = _ref$top === void 0 ? 0 : _ref$top, + _ref$left = _ref.left, + left = _ref$left === void 0 ? 0 : _ref$left; + + var proxyEvent = new Proxy(event, { + get: function get(original, propertyName) { + if (propertyName === 'offsetX') { + return original.pageX - left; + } + + if (propertyName === 'offsetY') { + return original.pageY - top; + } // TODO: Properly use pointer events + + + if (propertyName === 'type') { + return original.type.replace('pointer', 'mouse'); + } + + var result = original[propertyName]; + + if (typeof result === 'function') { + return result.bind(original); + } + + return result; + } + }); + + _this._handleDeckGLEvent(proxyEvent); + }); + } + + _createClass(Nebula, [{ + key: "init", + value: function init(props) { + var _this2 = this; + + this.props = props; + this.wmViewport = new _core.WebMercatorViewport(this.props.viewport); // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown'] + + ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) { + return _document["default"].addEventListener(name, _this2._onMouseEvent, true); + }); + } + }, { + key: "detach", + value: function detach() { + var _this3 = this; + + // TODO: Properly use pointer events: ['click', 'pointermove', 'pointerup', 'pointerdown'] + ['click', 'mousemove', 'mouseup', 'mousedown'].forEach(function (name) { + return _document["default"].removeEventListener(name, _this3._onMouseEvent, true); + }); + } + }, { + key: "updateProps", + value: function updateProps(newProps) { + this.props = newProps; + var viewport = this.props.viewport; + this.wmViewport = new _core.WebMercatorViewport(viewport); + } + }, { + key: "log", + value: function log(message) { + var logger = this.props.logger; + + if (logger && logger.info) { + logger.info(LOGGER_PREFIX + message); + } + } + }, { + key: "updateAllDeckObjects", + value: function updateAllDeckObjects() { + this.getAllLayers().forEach(function (layer) { + if (layer && layer.deckCache) { + layer.deckCache.updateAllDeckObjects(); + } + }); + this.forceUpdate(); + } + }, { + key: "updateDeckObjectsByIds", + value: function updateDeckObjectsByIds(ids) { + this.getAllLayers().forEach(function (layer) { + if (layer && layer.deckCache) { + layer.deckCache.updateDeckObjectsByIds(ids); + } + }); + this.forceUpdate(); + } + }, { + key: "rerenderLayers", + value: function rerenderLayers() { + this.updateAllDeckObjects(); + } + }, { + key: "_isNebulaEvent", + value: function _isNebulaEvent(_ref2) { + var buttons = _ref2.buttons, + target = _ref2.target, + type = _ref2.type; + var viewport = this.props.viewport; // allow mouseup event aggressively to cancel drag properly + // TODO: use pointer capture setPointerCapture() to capture mouseup properly after deckgl + + if (this._mouseWasDown && type === 'mouseup') { + this._mouseWasDown = false; + return true; + } // allow mousemove event while dragging + + + if (type === 'mousemove' && buttons > 0) { + return true; + } + + if (!target.getBoundingClientRect) { + return false; + } + + var rect = target.getBoundingClientRect(); // Only listen to events coming from the basemap + // identified by the canvas of the same size as viewport. + // Need to round the rect dimension as some monitors + // have some sub-pixel difference with viewport. + + return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height); + } + }, { + key: "getMouseGroundPosition", + value: function getMouseGroundPosition(event) { + return this.wmViewport.unproject([event.offsetX, event.offsetY]); + } + }, { + key: "unprojectMousePosition", + value: function unprojectMousePosition(mousePosition) { + // @ts-ignore + return this.wmViewport.unproject(mousePosition); + } + }, { + key: "_handleDeckGLEvent", + value: function _handleDeckGLEvent(event) { + var deckgl = this.deckgl, + _this$props = this.props, + onMapMouseEvent = _this$props.onMapMouseEvent, + selectionType = _this$props.selectionType, + eventFilter = _this$props.eventFilter; + var sendMapEvent = true; + var cursor = 'auto'; + + if (event && deckgl && selectionType) { + if (!this._deckDrawer) this._deckDrawer = new _deckDrawer["default"](this); + var lngLat = this.getMouseGroundPosition(event); + if (eventFilter && !eventFilter(lngLat, event)) return; // @ts-ignore + + var drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType); + + if (drawerResult.redraw) this.forceUpdate(); + return; + } + + if (event && deckgl && (!event.buttons || event.type !== 'mousemove')) { + // TODO: sort by mouse priority + var layerIds = deckgl.props.layers.filter(function (l) { + return l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking; + }).map(function (l) { + return l.id; + }); + var pickingInfo = deckgl.pickObject({ + x: event.offsetX, + y: event.offsetY, + radius: 5, + layerIds: layerIds + }); + this.queryObjectEvents.emit('pick', { + event: event, + pickingInfo: pickingInfo + }); + + if (pickingInfo) { + sendMapEvent = false; + var index = pickingInfo.index, + _lngLat = pickingInfo.lngLat; + if (eventFilter && !eventFilter(_lngLat, event)) return; + var deckLayer = pickingInfo.layer, + object = pickingInfo.object; + + if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) { + deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo); + } + + var original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index]; + + if (original) { + this.deckglMouseOverInfo = { + originalLayer: deckLayer.props.nebulaLayer, + index: index + }; // @ts-ignore + + var nebulaMouseEvent = new _layerMouseEvent["default"](event, { + data: original, + metadata: object.metadata, + groundPoint: _lngLat, + nebula: this + }); + deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent); + this.forceUpdate(); + } + + cursor = 'pointer'; + } + } + + if (_document["default"].documentElement) { + _document["default"].documentElement.style.cursor = cursor; + } + + if (sendMapEvent) { + this.deckglMouseOverInfo = null; + + var _lngLat2 = this.getMouseGroundPosition(event); + + if (eventFilter && !eventFilter(_lngLat2, event)) return; // send to layers first + // @ts-ignore + + var _nebulaMouseEvent = new _layerMouseEvent["default"](event, { + groundPoint: _lngLat2, + nebula: this + }); + + this.getAllLayers().filter(function (layer) { + return layer && layer.usesMapEvents; + }).forEach(function (layer) { + return layer.emit('mapMouseEvent', _nebulaMouseEvent); + }); + this.getAllLayers().filter(function (layer) { + return layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent; + }).forEach(function (layer) { + return layer.props.nebulaLayer.mapMouseEvent(_nebulaMouseEvent, layer); + }); + + if (onMapMouseEvent) { + onMapMouseEvent(event, _lngLat2); + } + } + } + }, { + key: "getExtraDeckLayers", + value: function getExtraDeckLayers() { + var result = []; + if (this._deckDrawer) result.push.apply(result, _toConsumableArray(this._deckDrawer.render())); + return result; + } + }, { + key: "renderDeckLayers", + value: function renderDeckLayers() { + var _this4 = this; + + return this.getAllLayers().map(function (layer) { + return layer instanceof _nebulaLayer["default"] ? layer.render({ + nebula: _this4 + }) : layer; + }).filter(Boolean); + } + }, { + key: "getAllLayers", + value: function getAllLayers() { + var result = []; + this.props.layers.filter(Boolean).forEach(function (layer) { + result.push(layer); // Only NebulaLayers have helpers, Deck GL layers don't. + + if (layer instanceof _nebulaLayer["default"]) { + result.push.apply(result, _toConsumableArray(layer.helperLayers)); + } + }); + return result.filter(Boolean); + } + }, { + key: "getRenderedLayers", + value: function getRenderedLayers() { + return [].concat(_toConsumableArray(this.renderDeckLayers()), _toConsumableArray(this.getExtraDeckLayers())); + } + }, { + key: "updateAndGetRenderedLayers", + value: function updateAndGetRenderedLayers(layers, viewport, container) { + if (this.inited) { + this.updateProps({ + layers: layers, + viewport: viewport + }); + + this.forceUpdate = function () { + return container.forceUpdate(); + }; + } else { + this.inited = true; + this.init({ + layers: layers, + viewport: viewport + }); + + this.forceUpdate = function () { + return container.forceUpdate(); + }; + + this.updateAllDeckObjects(); + } + + return this.getRenderedLayers(); + } + }, { + key: "setDeck", + value: function setDeck(deckgl) { + if (deckgl) { + this.deckgl = deckgl; + } + } + }, { + key: "setMainContainer", + value: function setMainContainer(mainContainer) { + if (mainContainer) { + this.mainContainer = mainContainer; + } + } + }]); + + return Nebula; +}(); + +exports["default"] = Nebula; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbmVidWxhLnRzIl0sIm5hbWVzIjpbIkxPR0dFUl9QUkVGSVgiLCJOZWJ1bGEiLCJFdmVudEVtaXR0ZXIiLCJldmVudCIsIl9pc05lYnVsYUV2ZW50IiwidHlwZSIsIl9tb3VzZVdhc0Rvd24iLCJtYWluQ29udGFpbmVyIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidG9wIiwibGVmdCIsInByb3h5RXZlbnQiLCJQcm94eSIsImdldCIsIm9yaWdpbmFsIiwicHJvcGVydHlOYW1lIiwicGFnZVgiLCJwYWdlWSIsInJlcGxhY2UiLCJyZXN1bHQiLCJiaW5kIiwiX2hhbmRsZURlY2tHTEV2ZW50IiwicHJvcHMiLCJ3bVZpZXdwb3J0IiwiV2ViTWVyY2F0b3JWaWV3cG9ydCIsInZpZXdwb3J0IiwiZm9yRWFjaCIsIm5hbWUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25Nb3VzZUV2ZW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld1Byb3BzIiwibWVzc2FnZSIsImxvZ2dlciIsImluZm8iLCJnZXRBbGxMYXllcnMiLCJsYXllciIsImRlY2tDYWNoZSIsInVwZGF0ZUFsbERlY2tPYmplY3RzIiwiZm9yY2VVcGRhdGUiLCJpZHMiLCJ1cGRhdGVEZWNrT2JqZWN0c0J5SWRzIiwiYnV0dG9ucyIsInRhcmdldCIsInJlY3QiLCJNYXRoIiwicm91bmQiLCJ3aWR0aCIsImhlaWdodCIsInVucHJvamVjdCIsIm9mZnNldFgiLCJvZmZzZXRZIiwibW91c2VQb3NpdGlvbiIsImRlY2tnbCIsIm9uTWFwTW91c2VFdmVudCIsInNlbGVjdGlvblR5cGUiLCJldmVudEZpbHRlciIsInNlbmRNYXBFdmVudCIsImN1cnNvciIsIl9kZWNrRHJhd2VyIiwiRGVja0RyYXdlciIsImxuZ0xhdCIsImdldE1vdXNlR3JvdW5kUG9zaXRpb24iLCJkcmF3ZXJSZXN1bHQiLCJoYW5kbGVFdmVudCIsInJlZHJhdyIsImxheWVySWRzIiwibGF5ZXJzIiwiZmlsdGVyIiwibCIsIm5lYnVsYUxheWVyIiwiZW5hYmxlUGlja2luZyIsIm1hcCIsImlkIiwicGlja2luZ0luZm8iLCJwaWNrT2JqZWN0IiwieCIsInkiLCJyYWRpdXMiLCJxdWVyeU9iamVjdEV2ZW50cyIsImVtaXQiLCJpbmRleCIsImRlY2tMYXllciIsIm9iamVjdCIsImV2ZW50SGFuZGxlciIsIm9yaWdpbmFscyIsImRlY2tnbE1vdXNlT3ZlckluZm8iLCJvcmlnaW5hbExheWVyIiwibmVidWxhTW91c2VFdmVudCIsIkxheWVyTW91c2VFdmVudCIsImRhdGEiLCJtZXRhZGF0YSIsImdyb3VuZFBvaW50IiwibmVidWxhIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJ1c2VzTWFwRXZlbnRzIiwibWFwTW91c2VFdmVudCIsInB1c2giLCJyZW5kZXIiLCJOZWJ1bGFMYXllciIsIkJvb2xlYW4iLCJoZWxwZXJMYXllcnMiLCJyZW5kZXJEZWNrTGF5ZXJzIiwiZ2V0RXh0cmFEZWNrTGF5ZXJzIiwiY29udGFpbmVyIiwiaW5pdGVkIiwidXBkYXRlUHJvcHMiLCJpbml0IiwiZ2V0UmVuZGVyZWRMYXllcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHLFVBQXRCOztJQUVxQkMsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0NBZ0NlLElBQUlDLG9CQUFKLEU7Ozs7OzsyQ0ErRGxCLFVBQUNDLEtBQUQsRUFBOEI7QUFDNUMsVUFBSSxDQUFDLEtBQUksQ0FBQ0MsY0FBTCxDQUFvQkQsS0FBcEIsQ0FBTCxFQUFpQztBQUMvQjtBQUNEOztBQUVELFVBQUlBLEtBQUssQ0FBQ0UsSUFBTixLQUFlLFdBQW5CLEVBQWdDO0FBQzlCLFFBQUEsS0FBSSxDQUFDQyxhQUFMLEdBQXFCLElBQXJCO0FBQ0QsT0FQMkMsQ0FTNUM7QUFDQTtBQUNBO0FBQ0E7OztBQVo0QyxpQkFhZCxLQUFJ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QixLQUFLLENBQUNrRSxZQUFmLEVBQU47QUFDRDtBQUNGLE9BTkQ7QUFRQSxhQUFPcEYsTUFBTSxDQUFDa0QsTUFBUCxDQUFjaUMsT0FBZCxDQUFQO0FBQ0Q7Ozt3Q0FFbUI7QUFDbEIsMENBQVcsS0FBS0UsZ0JBQUwsRUFBWCxzQkFBdUMsS0FBS0Msa0JBQUwsRUFBdkM7QUFDRDs7OytDQUdDckMsTSxFQUNBM0MsUSxFQUNBaUYsUyxFQUNBO0FBQ0EsVUFBSSxLQUFLQyxNQUFULEVBQWlCO0FBQ2YsYUFBS0MsV0FBTCxDQUFpQjtBQUFFeEMsVUFBQUEsTUFBTSxFQUFOQSxNQUFGO0FBQVUzQyxVQUFBQSxRQUFRLEVBQVJBO0FBQVYsU0FBakI7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7QUFDRCxPQUhELE1BR087QUFDTCxhQUFLbUUsTUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLRSxJQUFMLENBQVU7QUFBRXpDLFVBQUFBLE1BQU0sRUFBTkEsTUFBRjtBQUFVM0MsVUFBQUEsUUFBUSxFQUFSQTtBQUFWLFNBQVY7O0FBQ0EsYUFBS2UsV0FBTCxHQUFtQjtBQUFBLGlCQUFNa0UsU0FBUyxDQUFDbEUsV0FBVixFQUFOO0FBQUEsU0FBbkI7O0FBQ0EsYUFBS0Qsb0JBQUw7QUFDRDs7QUFFRCxhQUFPLEtBQUt1RSxpQkFBTCxFQUFQO0FBQ0Q7Ozs0QkFFT3hELE0sRUFBb0M7QUFDMUMsVUFBSUEsTUFBSixFQUFZO0FBQ1YsYUFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7QUFDRjs7O3FDQUVnQi9DLGEsRUFBMkM7QUFDMUQsVUFBSUEsYUFBSixFQUFtQjtBQUNqQixhQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuXG5pbXBvcnQgZG9jdW1lbnQgZnJvbSAnZ2xvYmFsL2RvY3VtZW50JztcbmltcG9ydCB3aW5kb3cgZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQgeyBXZWJNZXJjYXRvclZpZXdwb3J0IH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5cbmltcG9ydCBEZWNrRHJhd2VyIGZyb20gJy4vZGVjay1yZW5kZXJlci9kZWNrLWRyYXdlcic7XG5pbXBvcnQgTGF5ZXJNb3VzZUV2ZW50IGZyb20gJy4vbGF5ZXItbW91c2UtZXZlbnQnO1xuaW1wb3J0IE5lYnVsYUxheWVyIGZyb20gJy4vbmVidWxhLWxheWVyJztcblxuY29uc3QgTE9HR0VSX1BSRUZJWCA9ICdOZWJ1bGE6ICc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5lYnVsYSB7XG4gIGluaXQocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodGhpcy5wcm9wcy52aWV3cG9ydCk7XG5cbiAgICAvLyBUT0RPOiBQcm9wZXJseSB1c2UgcG9pbnRlciBldmVudHM6IFsnY2xpY2snLCAncG9pbnRlcm1vdmUnLCAncG9pbnRlcnVwJywgJ3BvaW50ZXJkb3duJ11cbiAgICBbJ2NsaWNrJywgJ21vdXNlbW92ZScsICdtb3VzZXVwJywgJ21vdXNlZG93biddLmZvckVhY2goKG5hbWUpID0+XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG5hbWUsIHRoaXMuX29uTW91c2VFdmVudCwgdHJ1ZSlcbiAgICApO1xuICB9XG5cbiAgZGV0YWNoKCkge1xuICAgIC8vIFRPRE86IFByb3Blcmx5IHVzZSBwb2ludGVyIGV2ZW50czogWydjbGljaycsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnLCAncG9pbnRlcmRvd24nXVxuICAgIFsnY2xpY2snLCAnbW91c2Vtb3ZlJywgJ21vdXNldXAnLCAnbW91c2Vkb3duJ10uZm9yRWFjaCgobmFtZSkgPT5cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgdGhpcy5fb25Nb3VzZUV2ZW50LCB0cnVlKVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVQcm9wcyhuZXdQcm9wczogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucHJvcHMgPSBuZXdQcm9wcztcbiAgICBjb25zdCB7IHZpZXdwb3J0IH0gPSB0aGlzLnByb3BzO1xuXG4gICAgdGhpcy53bVZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQodmlld3BvcnQpO1xuICB9XG5cbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGRlY2tnbDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw7XG4gIG1haW5Db250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICBkZWNrZ2xNb3VzZU92ZXJJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2RlY2tEcmF3ZXI6IERlY2tEcmF3ZXI7XG4gIF9tb3VzZVdhc0Rvd246IGJvb2xlYW47XG4gIHdtVmlld3BvcnQ6IFdlYk1lcmNhdG9yVmlld3BvcnQ7XG4gIHF1ZXJ5T2JqZWN0RXZlbnRzOiBFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZvcmNlVXBkYXRlOiBGdW5jdGlvbjtcbiAgaW5pdGVkOiBib29sZWFuO1xuXG4gIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAobG9nZ2VyICYmIGxvZ2dlci5pbmZvKSB7XG4gICAgICBsb2dnZXIuaW5mbyhMT0dHRVJfUFJFRklYICsgbWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQWxsRGVja09iamVjdHMoKSB7XG4gICAgdGhpcy5nZXRBbGxMYXllcnMoKS5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgaWYgKGxheWVyICYmIGxheWVyLmRlY2tDYWNoZSkge1xuICAgICAgICAobGF5ZXIuZGVja0NhY2hlIGFzIGFueSkudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gIH1cblxuICB1cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmdldEFsbExheWVycygpLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICBpZiAobGF5ZXIgJiYgbGF5ZXIuZGVja0NhY2hlKSB7XG4gICAgICAgIChsYXllci5kZWNrQ2FjaGUgYXMgYW55KS51cGRhdGVEZWNrT2JqZWN0c0J5SWRzKGlkcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgcmVyZW5kZXJMYXllcnMoKSB7XG4gICAgdGhpcy51cGRhdGVBbGxEZWNrT2JqZWN0cygpO1xuICB9XG5cbiAgX2lzTmVidWxhRXZlbnQoeyBidXR0b25zLCB0YXJnZXQsIHR5cGUgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IHsgdmlld3BvcnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBhbGxvdyBtb3VzZXVwIGV2ZW50IGFnZ3Jlc3NpdmVseSB0byBjYW5jZWwgZHJhZyBwcm9wZXJseVxuICAgIC8vIFRPRE86IHVzZSBwb2ludGVyIGNhcHR1cmUgc2V0UG9pbnRlckNhcHR1cmUoKSB0byBjYXB0dXJlIG1vdXNldXAgcHJvcGVybHkgYWZ0ZXIgZGVja2dsXG4gICAgaWYgKHRoaXMuX21vdXNlV2FzRG93biAmJiB0eXBlID09PSAnbW91c2V1cCcpIHtcbiAgICAgIHRoaXMuX21vdXNlV2FzRG93biA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgbW91c2Vtb3ZlIGV2ZW50IHdoaWxlIGRyYWdnaW5nXG4gICAgaWYgKHR5cGUgPT09ICdtb3VzZW1vdmUnICYmIGJ1dHRvbnMgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIC8vIE9ubHkgbGlzdGVuIHRvIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgYmFzZW1hcFxuICAgIC8vIGlkZW50aWZpZWQgYnkgdGhlIGNhbnZhcyBvZiB0aGUgc2FtZSBzaXplIGFzIHZpZXdwb3J0LlxuICAgIC8vIE5lZWQgdG8gcm91bmQgdGhlIHJlY3QgZGltZW5zaW9uIGFzIHNvbWUgbW9uaXRvcnNcbiAgICAvLyBoYXZlIHNvbWUgc3ViLXBpeGVsIGRpZmZlcmVuY2Ugd2l0aCB2aWV3cG9ydC5cbiAgICByZXR1cm4gKFxuICAgICAgTWF0aC5yb3VuZChyZWN0LndpZHRoKSA9PT0gTWF0aC5yb3VuZCh2aWV3cG9ydC53aWR0aCkgJiZcbiAgICAgIE1hdGgucm91bmQocmVjdC5oZWlnaHQpID09PSBNYXRoLnJvdW5kKHZpZXdwb3J0LmhlaWdodClcbiAgICApO1xuICB9XG5cbiAgX29uTW91c2VFdmVudCA9IChldmVudDogd2luZG93Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuX2lzTmVidWxhRXZlbnQoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nKSB7XG4gICAgICB0aGlzLl9tb3VzZVdhc0Rvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIG9mZnNldFgvWSBvZiB0aGUgTW91c2VFdmVudCBwcm92aWRlcyB0aGUgb2Zmc2V0IGluIHRoZSBYL1kgY29vcmRpbmF0ZVxuICAgIC8vIG9mIHRoZSBtb3VzZSBwb2ludGVyIGJldHdlZW4gdGhhdCBldmVudCBhbmQgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgLy8gV2Ugc2V0IG91ciBsaXN0ZW5lciB0byBkb2N1bWVudCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBvZmZzZXRYL1lcbiAgICAvLyBpbiBjYXNlIHRoZSB0YXJnZXQgaXMgbm90IGJlIG91ciBXZWJHTCBjYW52YXMuXG4gICAgY29uc3QgeyB0b3AgPSAwLCBsZWZ0ID0gMCB9ID0gdGhpcy5tYWluQ29udGFpbmVyXG4gICAgICA/IHRoaXMubWFpbkNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBwcm94eUV2ZW50ID0gbmV3IFByb3h5KGV2ZW50LCB7XG4gICAgICBnZXQ6IChvcmlnaW5hbDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSAnb2Zmc2V0WCcpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWwucGFnZVggLSBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gJ29mZnNldFknKSB7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLnBhZ2VZIC0gdG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogUHJvcGVybHkgdXNlIHBvaW50ZXIgZXZlbnRzXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09ICd0eXBlJykge1xuICAgICAgICAgIHJldHVybiBvcmlnaW5hbC50eXBlLnJlcGxhY2UoJ3BvaW50ZXInLCAnbW91c2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsW3Byb3BlcnR5TmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5iaW5kKG9yaWdpbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2hhbmRsZURlY2tHTEV2ZW50KHByb3h5RXZlbnQpO1xuICB9O1xuXG4gIGdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICByZXR1cm4gdGhpcy53bVZpZXdwb3J0LnVucHJvamVjdChbZXZlbnQub2Zmc2V0WCwgZXZlbnQub2Zmc2V0WV0pO1xuICB9XG5cbiAgdW5wcm9qZWN0TW91c2VQb3NpdGlvbihtb3VzZVBvc2l0aW9uOiBbbnVtYmVyLCBudW1iZXJdKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLndtVmlld3BvcnQudW5wcm9qZWN0KG1vdXNlUG9zaXRpb24pO1xuICB9XG5cbiAgX2hhbmRsZURlY2tHTEV2ZW50KGV2ZW50OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgY29uc3Qge1xuICAgICAgZGVja2dsLFxuICAgICAgcHJvcHM6IHsgb25NYXBNb3VzZUV2ZW50LCBzZWxlY3Rpb25UeXBlLCBldmVudEZpbHRlciB9LFxuICAgIH0gPSB0aGlzO1xuICAgIGxldCBzZW5kTWFwRXZlbnQgPSB0cnVlO1xuICAgIGxldCBjdXJzb3IgPSAnYXV0byc7XG5cbiAgICBpZiAoZXZlbnQgJiYgZGVja2dsICYmIHNlbGVjdGlvblR5cGUpIHtcbiAgICAgIGlmICghdGhpcy5fZGVja0RyYXdlcikgdGhpcy5fZGVja0RyYXdlciA9IG5ldyBEZWNrRHJhd2VyKHRoaXMpO1xuXG4gICAgICBjb25zdCBsbmdMYXQgPSB0aGlzLmdldE1vdXNlR3JvdW5kUG9zaXRpb24oZXZlbnQpO1xuICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZHJhd2VyUmVzdWx0ID0gdGhpcy5fZGVja0RyYXdlci5oYW5kbGVFdmVudChldmVudCwgbG5nTGF0LCBzZWxlY3Rpb25UeXBlKTtcbiAgICAgIGlmIChkcmF3ZXJSZXN1bHQucmVkcmF3KSB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50ICYmIGRlY2tnbCAmJiAoIWV2ZW50LmJ1dHRvbnMgfHwgZXZlbnQudHlwZSAhPT0gJ21vdXNlbW92ZScpKSB7XG4gICAgICAvLyBUT0RPOiBzb3J0IGJ5IG1vdXNlIHByaW9yaXR5XG4gICAgICBjb25zdCBsYXllcklkcyA9IGRlY2tnbC5wcm9wcy5sYXllcnNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAobDogYW55KSA9PiBsICYmIGwucHJvcHMgJiYgbC5wcm9wcy5uZWJ1bGFMYXllciAmJiBsLnByb3BzLm5lYnVsYUxheWVyLmVuYWJsZVBpY2tpbmdcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsOiBhbnkpID0+IGwuaWQpO1xuXG4gICAgICBjb25zdCBwaWNraW5nSW5mbyA9IGRlY2tnbC5waWNrT2JqZWN0KHtcbiAgICAgICAgeDogZXZlbnQub2Zmc2V0WCxcbiAgICAgICAgeTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgcmFkaXVzOiA1LFxuICAgICAgICBsYXllcklkcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWVyeU9iamVjdEV2ZW50cy5lbWl0KCdwaWNrJywgeyBldmVudCwgcGlja2luZ0luZm8gfSk7XG4gICAgICBpZiAocGlja2luZ0luZm8pIHtcbiAgICAgICAgc2VuZE1hcEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBpbmRleCwgbG5nTGF0IH0gPSBwaWNraW5nSW5mbztcbiAgICAgICAgaWYgKGV2ZW50RmlsdGVyICYmICFldmVudEZpbHRlcihsbmdMYXQsIGV2ZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgbGF5ZXI6IGRlY2tMYXllciwgb2JqZWN0IH0gPSBwaWNraW5nSW5mbztcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGVja0xheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyICYmXG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmV2ZW50SGFuZGxlclxuICAgICAgICApIHtcbiAgICAgICAgICBkZWNrTGF5ZXIucHJvcHMubmVidWxhTGF5ZXIuZXZlbnRIYW5kbGVyKGV2ZW50LCBwaWNraW5nSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcmlnaW5hbCA9XG4gICAgICAgICAgb2JqZWN0Lm9yaWdpbmFsIHx8XG4gICAgICAgICAgKGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZSAmJlxuICAgICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmRlY2tDYWNoZS5vcmlnaW5hbHNbaW5kZXhdKTtcblxuICAgICAgICBpZiAob3JpZ2luYWwpIHtcbiAgICAgICAgICB0aGlzLmRlY2tnbE1vdXNlT3ZlckluZm8gPSB7IG9yaWdpbmFsTGF5ZXI6IGRlY2tMYXllci5wcm9wcy5uZWJ1bGFMYXllciwgaW5kZXggfTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgY29uc3QgbmVidWxhTW91c2VFdmVudCA9IG5ldyBMYXllck1vdXNlRXZlbnQoZXZlbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IG9yaWdpbmFsLFxuICAgICAgICAgICAgbWV0YWRhdGE6IG9iamVjdC5tZXRhZGF0YSxcbiAgICAgICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgICAgICBuZWJ1bGE6IHRoaXMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVja0xheWVyLnByb3BzLm5lYnVsYUxheWVyLmVtaXQoZXZlbnQudHlwZSwgbmVidWxhTW91c2VFdmVudCk7XG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSBjdXJzb3I7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRNYXBFdmVudCkge1xuICAgICAgdGhpcy5kZWNrZ2xNb3VzZU92ZXJJbmZvID0gbnVsbDtcblxuICAgICAgY29uc3QgbG5nTGF0ID0gdGhpcy5nZXRNb3VzZUdyb3VuZFBvc2l0aW9uKGV2ZW50KTtcbiAgICAgIGlmIChldmVudEZpbHRlciAmJiAhZXZlbnRGaWx0ZXIobG5nTGF0LCBldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2VuZCB0byBsYXllcnMgZmlyc3RcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IG5lYnVsYU1vdXNlRXZlbnQgPSBuZXcgTGF5ZXJNb3VzZUV2ZW50KGV2ZW50LCB7XG4gICAgICAgIGdyb3VuZFBvaW50OiBsbmdMYXQsXG4gICAgICAgIG5lYnVsYTogdGhpcyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5nZXRBbGxMYXllcnMoKVxuICAgICAgICAuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIgJiYgbGF5ZXIudXNlc01hcEV2ZW50cylcbiAgICAgICAgLmZvckVhY2goKGxheWVyKSA9PiBsYXllci5lbWl0KCdtYXBNb3VzZUV2ZW50JywgbmVidWxhTW91c2VFdmVudCkpO1xuXG4gICAgICB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgbGF5ZXIgJiYgbGF5ZXIucHJvcHMgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIgJiYgbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudFxuICAgICAgICApXG4gICAgICAgIC5mb3JFYWNoKChsYXllcikgPT4gbGF5ZXIucHJvcHMubmVidWxhTGF5ZXIubWFwTW91c2VFdmVudChuZWJ1bGFNb3VzZUV2ZW50LCBsYXllcikpO1xuXG4gICAgICBpZiAob25NYXBNb3VzZUV2ZW50KSB7XG4gICAgICAgIG9uTWFwTW91c2VFdmVudChldmVudCwgbG5nTGF0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRFeHRyYURlY2tMYXllcnMoKTogUmVjb3JkPHN0cmluZywgYW55PltdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcblxuICAgIGlmICh0aGlzLl9kZWNrRHJhd2VyKSByZXN1bHQucHVzaCguLi50aGlzLl9kZWNrRHJhd2VyLnJlbmRlcigpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZW5kZXJEZWNrTGF5ZXJzKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFsbExheWVycygpXG4gICAgICAubWFwKChsYXllcikgPT4gKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIgPyBsYXllci5yZW5kZXIoeyBuZWJ1bGE6IHRoaXMgfSkgOiBsYXllcikpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0QWxsTGF5ZXJzKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgdGhpcy5wcm9wcy5sYXllcnMuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICByZXN1bHQucHVzaChsYXllcik7XG4gICAgICAvLyBPbmx5IE5lYnVsYUxheWVycyBoYXZlIGhlbHBlcnMsIERlY2sgR0wgbGF5ZXJzIGRvbid0LlxuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgTmVidWxhTGF5ZXIpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4ubGF5ZXIuaGVscGVyTGF5ZXJzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgZ2V0UmVuZGVyZWRMYXllcnMoKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlbmRlckRlY2tMYXllcnMoKSwgLi4udGhpcy5nZXRFeHRyYURlY2tMYXllcnMoKV07XG4gIH1cblxuICB1cGRhdGVBbmRHZXRSZW5kZXJlZExheWVycyhcbiAgICBsYXllcnM6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICB2aWV3cG9ydDogV2ViTWVyY2F0b3JWaWV3cG9ydCxcbiAgICBjb250YWluZXI6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSB7XG4gICAgaWYgKHRoaXMuaW5pdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3BzKHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5pbml0KHsgbGF5ZXJzLCB2aWV3cG9ydCB9KTtcbiAgICAgIHRoaXMuZm9yY2VVcGRhdGUgPSAoKSA9PiBjb250YWluZXIuZm9yY2VVcGRhdGUoKTtcbiAgICAgIHRoaXMudXBkYXRlQWxsRGVja09iamVjdHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJlZExheWVycygpO1xuICB9XG5cbiAgc2V0RGVjayhkZWNrZ2w6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsKSB7XG4gICAgaWYgKGRlY2tnbCkge1xuICAgICAgdGhpcy5kZWNrZ2wgPSBkZWNrZ2w7XG4gICAgfVxuICB9XG5cbiAgc2V0TWFpbkNvbnRhaW5lcihtYWluQ29udGFpbmVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCkge1xuICAgIGlmIChtYWluQ29udGFpbmVyKSB7XG4gICAgICB0aGlzLm1haW5Db250YWluZXIgPSBtYWluQ29udGFpbmVyO1xuICAgIH1cbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/main/dist/lib/style.js b/modules/main/dist/lib/style.js new file mode 100644 index 000000000..f3bfb47d2 --- /dev/null +++ b/modules/main/dist/lib/style.js @@ -0,0 +1,31 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DEFAULT_STYLE = exports.MAX_ARROWS = exports.DEFAULT_ARROWS = exports.ArrowStyles = void 0; +// Describes the arrow style of polylines +var ArrowStyles = { + NONE: 0, + FORWARD: 1, + BACKWARD: 2, + BOTH: 3 +}; +exports.ArrowStyles = ArrowStyles; +var DEFAULT_ARROWS = 1; +exports.DEFAULT_ARROWS = DEFAULT_ARROWS; +var MAX_ARROWS = 3; +exports.MAX_ARROWS = MAX_ARROWS; +var DEFAULT_STYLE = { + arrowColor: [0, 0, 0, 1], + arrowCount: DEFAULT_ARROWS, + arrowStyle: ArrowStyles.NONE, + fillColor: [0, 0, 0, 1], + lineColor: [0, 0, 0, 1], + lineWidthMeters: 5, + outlineRadiusMeters: 0, + opacity: 1, + zLevel: 0 +}; +exports.DEFAULT_STYLE = DEFAULT_STYLE; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvc3R5bGUudHMiXSwibmFtZXMiOlsiQXJyb3dTdHlsZXMiLCJOT05FIiwiRk9SV0FSRCIsIkJBQ0tXQVJEIiwiQk9USCIsIkRFRkFVTFRfQVJST1dTIiwiTUFYX0FSUk9XUyIsIkRFRkFVTFRfU1RZTEUiLCJhcnJvd0NvbG9yIiwiYXJyb3dDb3VudCIsImFycm93U3R5bGUiLCJmaWxsQ29sb3IiLCJsaW5lQ29sb3IiLCJsaW5lV2lkdGhNZXRlcnMiLCJvdXRsaW5lUmFkaXVzTWV0ZXJzIiwib3BhY2l0eSIsInpMZXZlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDTyxJQUFNQSxXQUFXLEdBQUc7QUFDekJDLEVBQUFBLElBQUksRUFBRSxDQURtQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLENBRmdCO0FBR3pCQyxFQUFBQSxRQUFRLEVBQUUsQ0FIZTtBQUl6QkMsRUFBQUEsSUFBSSxFQUFFO0FBSm1CLENBQXBCOztBQU9BLElBQU1DLGNBQWMsR0FBRyxDQUF2Qjs7QUFDQSxJQUFNQyxVQUFVLEdBQUcsQ0FBbkI7O0FBRUEsSUFBTUMsYUFBYSxHQUFHO0FBQzNCQyxFQUFBQSxVQUFVLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLENBRGU7QUFFM0JDLEVBQUFBLFVBQVUsRUFBRUosY0FGZTtBQUczQkssRUFBQUEsVUFBVSxFQUFFVixXQUFXLENBQUNDLElBSEc7QUFJM0JVLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FKZ0I7QUFLM0JDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBUCxFQUFVLENBQVYsQ0FMZ0I7QUFNM0JDLEVBQUFBLGVBQWUsRUFBRSxDQU5VO0FBTzNCQyxFQUFBQSxtQkFBbUIsRUFBRSxDQVBNO0FBUTNCQyxFQUFBQSxPQUFPLEVBQUUsQ0FSa0I7QUFTM0JDLEVBQUFBLE1BQU0sRUFBRTtBQVRtQixDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaWJlcyB0aGUgYXJyb3cgc3R5bGUgb2YgcG9seWxpbmVzXG5leHBvcnQgY29uc3QgQXJyb3dTdHlsZXMgPSB7XG4gIE5PTkU6IDAsXG4gIEZPUldBUkQ6IDEsXG4gIEJBQ0tXQVJEOiAyLFxuICBCT1RIOiAzLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQVJST1dTID0gMTtcbmV4cG9ydCBjb25zdCBNQVhfQVJST1dTID0gMztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RZTEUgPSB7XG4gIGFycm93Q29sb3I6IFswLCAwLCAwLCAxXSxcbiAgYXJyb3dDb3VudDogREVGQVVMVF9BUlJPV1MsXG4gIGFycm93U3R5bGU6IEFycm93U3R5bGVzLk5PTkUsXG4gIGZpbGxDb2xvcjogWzAsIDAsIDAsIDFdLFxuICBsaW5lQ29sb3I6IFswLCAwLCAwLCAxXSxcbiAgbGluZVdpZHRoTWV0ZXJzOiA1LFxuICBvdXRsaW5lUmFkaXVzTWV0ZXJzOiAwLFxuICBvcGFjaXR5OiAxLFxuICB6TGV2ZWw6IDAsXG59O1xuIl19 \ No newline at end of file diff --git a/modules/main/dist/lib/utils.js b/modules/main/dist/lib/utils.js new file mode 100644 index 000000000..dce8b27d8 --- /dev/null +++ b/modules/main/dist/lib/utils.js @@ -0,0 +1,70 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.toDeckColor = toDeckColor; +exports.recursivelyTraverseNestedArrays = recursivelyTraverseNestedArrays; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function toDeckColor(color) { + var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [255, 0, 0, 255]; + + if (!Array.isArray(color)) { + return defaultColor; + } + + return [color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]; +} // +// a GeoJSON helper function that calls the provided function with +// an argument that is the most deeply-nested array having elements +// that are arrays of primitives as an argument, e.g. +// +// { +// "type": "MultiPolygon", +// "coordinates": [ +// [ +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// ], +// [ +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// ] +// ] +// } +// +// the function would be called on: +// +// [[30, 20], [45, 40], [10, 40], [30, 20]] +// +// and +// +// [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] +// + + +function recursivelyTraverseNestedArrays(array, prefix, fn) { + if (!Array.isArray(array[0])) { + return true; + } + + for (var i = 0; i < array.length; i++) { + if (recursivelyTraverseNestedArrays(array[i], [].concat(_toConsumableArray(prefix), [i]), fn)) { + fn(array, prefix); + break; + } + } + + return false; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOlsidG9EZWNrQ29sb3IiLCJjb2xvciIsImRlZmF1bHRDb2xvciIsIkFycmF5IiwiaXNBcnJheSIsInJlY3Vyc2l2ZWx5VHJhdmVyc2VOZXN0ZWRBcnJheXMiLCJhcnJheSIsInByZWZpeCIsImZuIiwiaSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxXQUFULENBQ0xDLEtBREssRUFHNkI7QUFBQSxNQURsQ0MsWUFDa0MsdUVBRGUsQ0FBQyxHQUFELEVBQU0sQ0FBTixFQUFTLENBQVQsRUFBWSxHQUFaLENBQ2Y7O0FBQ2xDLE1BQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWNILEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxDQUFDRCxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBWixFQUFpQkEsS0FBSyxDQUFDLENBQUQsQ0FBTCxHQUFXLEdBQTVCLEVBQWlDQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsR0FBNUMsRUFBaURBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBVyxHQUE1RCxDQUFQO0FBQ0QsQyxDQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSwrQkFBVCxDQUNMQyxLQURLLEVBRUxDLE1BRkssRUFHTEMsRUFISyxFQUlMO0FBQ0EsTUFBSSxDQUFDTCxLQUFLLENBQUNDLE9BQU4sQ0FBY0UsS0FBSyxDQUFDLENBQUQsQ0FBbkIsQ0FBTCxFQUE4QjtBQUM1QixXQUFPLElBQVA7QUFDRDs7QUFDRCxPQUFLLElBQUlHLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILEtBQUssQ0FBQ0ksTUFBMUIsRUFBa0NELENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUosK0JBQStCLENBQUNDLEtBQUssQ0FBQ0csQ0FBRCxDQUFOLCtCQUFlRixNQUFmLElBQXVCRSxDQUF2QixJQUEyQkQsRUFBM0IsQ0FBbkMsRUFBbUU7QUFDakVBLE1BQUFBLEVBQUUsQ0FBQ0YsS0FBRCxFQUFRQyxNQUFSLENBQUY7QUFDQTtBQUNEO0FBQ0Y7O0FBQ0QsU0FBTyxLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdG9EZWNrQ29sb3IoXG4gIGNvbG9yPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkZWZhdWx0Q29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMCwgMjU1XVxuKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb2xvcjtcbiAgfVxuICByZXR1cm4gW2NvbG9yWzBdICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1XTtcbn1cblxuLy9cbi8vIGEgR2VvSlNPTiBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gd2l0aFxuLy8gYW4gYXJndW1lbnQgdGhhdCBpcyB0aGUgbW9zdCBkZWVwbHktbmVzdGVkIGFycmF5IGhhdmluZyBlbGVtZW50c1xuLy8gdGhhdCBhcmUgYXJyYXlzIG9mIHByaW1pdGl2ZXMgYXMgYW4gYXJndW1lbnQsIGUuZy5cbi8vXG4vLyB7XG4vLyAgIFwidHlwZVwiOiBcIk11bHRpUG9seWdvblwiLFxuLy8gICBcImNvb3JkaW5hdGVzXCI6IFtcbi8vICAgICAgIFtcbi8vICAgICAgICAgICBbWzMwLCAyMF0sIFs0NSwgNDBdLCBbMTAsIDQwXSwgWzMwLCAyMF1dXG4vLyAgICAgICBdLFxuLy8gICAgICAgW1xuLy8gICAgICAgICAgIFtbMTUsIDVdLCBbNDAsIDEwXSwgWzEwLCAyMF0sIFs1LCAxMF0sIFsxNSwgNV1dXG4vLyAgICAgICBdXG4vLyAgIF1cbi8vIH1cbi8vXG4vLyB0aGUgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkIG9uOlxuLy9cbi8vIFtbMzAsIDIwXSwgWzQ1LCA0MF0sIFsxMCwgNDBdLCBbMzAsIDIwXV1cbi8vXG4vLyBhbmRcbi8vXG4vLyBbWzE1LCA1XSwgWzQwLCAxMF0sIFsxMCwgMjBdLCBbNSwgMTBdLCBbMTUsIDVdXVxuLy9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKFxuICBhcnJheTogQXJyYXk8YW55PixcbiAgcHJlZml4OiBBcnJheTxudW1iZXI+LFxuICBmbjogRnVuY3Rpb25cbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlbMF0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyZWN1cnNpdmVseVRyYXZlcnNlTmVzdGVkQXJyYXlzKGFycmF5W2ldLCBbLi4ucHJlZml4LCBpXSwgZm4pKSB7XG4gICAgICBmbihhcnJheSwgcHJlZml4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0= \ No newline at end of file diff --git a/modules/main/dist/types.js b/modules/main/dist/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/main/dist/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/overlays/dist-es6/html-cluster-overlay.js b/modules/overlays/dist-es6/html-cluster-overlay.js new file mode 100644 index 000000000..29f89a3fb --- /dev/null +++ b/modules/overlays/dist-es6/html-cluster-overlay.js @@ -0,0 +1,145 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _helpers = require("@turf/helpers"); + +var _supercluster = _interopRequireDefault(require("supercluster")); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 HtmlClusterOverlay = /*#__PURE__*/function (_HtmlOverlay) { + _inherits(HtmlClusterOverlay, _HtmlOverlay); + + var _super = _createSuper(HtmlClusterOverlay); + + function HtmlClusterOverlay() { + var _this; + + _classCallCheck(this, HtmlClusterOverlay); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_superCluster", void 0); + + _defineProperty(_assertThisInitialized(_this), "_lastObjects", null); + + return _this; + } + + _createClass(HtmlClusterOverlay, [{ + key: "getItems", + value: function getItems() { + var _this2 = this; + + // supercluster().load() is expensive and we want to run it only + // when necessary and not for every frame. + // TODO: Warn if this is running many times / sec + var newObjects = this.getAllObjects(); + + if (newObjects !== this._lastObjects) { + this._superCluster = new _supercluster["default"](this.getClusterOptions()); + + this._superCluster.load(newObjects.map(function (object) { + return (0, _helpers.point)(_this2.getObjectCoordinates(object), { + object: object + }); + })); + + this._lastObjects = newObjects; // console.log('new Supercluster() run'); + } + + var clusters = this._superCluster.getClusters([-180, -90, 180, 90], Math.round(this.getZoom())); + + return clusters.map(function (_ref) { + var coordinates = _ref.geometry.coordinates, + _ref$properties = _ref.properties, + cluster = _ref$properties.cluster, + pointCount = _ref$properties.point_count, + clusterId = _ref$properties.cluster_id, + object = _ref$properties.object; + return cluster ? _this2.renderCluster(coordinates, clusterId, pointCount) : _this2.renderObject(coordinates, object); + }); + } + }, { + key: "getClusterObjects", + value: function getClusterObjects(clusterId) { + return this._superCluster.getLeaves(clusterId, Infinity).map(function (object) { + return object.properties.object; + }); + } // Override to provide items that need clustering. + // If the items have not changed please provide the same array to avoid + // regeneration of the cluster which causes performance issues. + + }, { + key: "getAllObjects", + value: function getAllObjects() { + return []; + } // override to provide coordinates for each object of getAllObjects() + + }, { + key: "getObjectCoordinates", + value: function getObjectCoordinates(obj) { + return [0, 0]; + } // Get options object used when instantiating supercluster + + }, { + key: "getClusterOptions", + value: function getClusterOptions() { + return { + maxZoom: 20 + }; + } // override to return an HtmlOverlayItem + + }, { + key: "renderObject", + value: function renderObject(coordinates, obj) { + return null; + } // override to return an HtmlOverlayItem + // use getClusterObjects() to get cluster contents + + }, { + key: "renderCluster", + value: function renderCluster(coordinates, clusterId, pointCount) { + return null; + } + }]); + + return HtmlClusterOverlay; +}(_htmlOverlay["default"]); + +exports["default"] = HtmlClusterOverlay; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLWNsdXN0ZXItb3ZlcmxheS50cyJdLCJuYW1lcyI6WyJIdG1sQ2x1c3Rlck92ZXJsYXkiLCJuZXdPYmplY3RzIiwiZ2V0QWxsT2JqZWN0cyIsIl9sYXN0T2JqZWN0cyIsIl9zdXBlckNsdXN0ZXIiLCJTdXBlcmNsdXN0ZXIiLCJnZXRDbHVzdGVyT3B0aW9ucyIsImxvYWQiLCJtYXAiLCJvYmplY3QiLCJnZXRPYmplY3RDb29yZGluYXRlcyIsImNsdXN0ZXJzIiwiZ2V0Q2x1c3RlcnMiLCJNYXRoIiwicm91bmQiLCJnZXRab29tIiwiY29vcmRpbmF0ZXMiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJjbHVzdGVyIiwicG9pbnRDb3VudCIsInBvaW50X2NvdW50IiwiY2x1c3RlcklkIiwiY2x1c3Rlcl9pZCIsInJlbmRlckNsdXN0ZXIiLCJyZW5kZXJPYmplY3QiLCJnZXRMZWF2ZXMiLCJJbmZpbml0eSIsIm9iaiIsIm1heFpvb20iLCJIdG1sT3ZlcmxheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O21FQUUwQixJOzs7Ozs7OytCQUVYO0FBQUE7O0FBQ2hDO0FBQ0E7QUFFQTtBQUVBLFVBQU1DLFVBQVUsR0FBRyxLQUFLQyxhQUFMLEVBQW5COztBQUNBLFVBQUlELFVBQVUsS0FBSyxLQUFLRSxZQUF4QixFQUFzQztBQUNwQyxhQUFLQyxhQUFMLEdBQXFCLElBQUlDLHdCQUFKLENBQWlCLEtBQUtDLGlCQUFMLEVBQWpCLENBQXJCOztBQUNBLGFBQUtGLGFBQUwsQ0FBbUJHLElBQW5CLENBQ0VOLFVBQVUsQ0FBQ08sR0FBWCxDQUFlLFVBQUNDLE1BQUQ7QUFBQSxpQkFBWSxvQkFBTSxNQUFJLENBQUNDLG9CQUFMLENBQTBCRCxNQUExQixDQUFOLEVBQXlDO0FBQUVBLFlBQUFBLE1BQU0sRUFBTkE7QUFBRixXQUF6QyxDQUFaO0FBQUEsU0FBZixDQURGOztBQUdBLGFBQUtOLFlBQUwsR0FBb0JGLFVBQXBCLENBTG9DLENBTXBDO0FBQ0Q7O0FBRUQsVUFBTVUsUUFBUSxHQUFHLEtBQUtQLGFBQUwsQ0FBbUJRLFdBQW5CLENBQ2YsQ0FBQyxDQUFDLEdBQUYsRUFBTyxDQUFDLEVBQVIsRUFBWSxHQUFaLEVBQWlCLEVBQWpCLENBRGUsRUFFZkMsSUFBSSxDQUFDQyxLQUFMLENBQVcsS0FBS0MsT0FBTCxFQUFYLENBRmUsQ0FBakI7O0FBS0EsYUFBT0osUUFBUSxDQUFDSCxHQUFULENBQ0w7QUFBQSxZQUNjUSxXQURkLFFBQ0VDLFFBREYsQ0FDY0QsV0FEZDtBQUFBLG1DQUVFRSxVQUZGO0FBQUEsWUFFZ0JDLE9BRmhCLG1CQUVnQkEsT0FGaEI7QUFBQSxZQUVzQ0MsVUFGdEMsbUJBRXlCQyxXQUZ6QjtBQUFBLFlBRThEQyxTQUY5RCxtQkFFa0RDLFVBRmxEO0FBQUEsWUFFeUVkLE1BRnpFLG1CQUV5RUEsTUFGekU7QUFBQSxlQUlFVSxPQUFPLEdBQ0gsTUFBSSxDQUFDSyxhQUFMLENBQW1CUixXQUFuQixFQUFnQ00sU0FBaEMsRUFBMkNGLFVBQTNDLENBREcsR0FFSCxNQUFJLENBQUNLLFlBQUwsQ0FBa0JULFdBQWxCLEVBQStCUCxNQUEvQixDQU5OO0FBQUEsT0FESyxDQUFQO0FBU0Q7OztzQ0FFaUJhLFMsRUFBOEI7QUFDOUMsYUFBTyxLQUFLbEIsYUFBTCxDQUNKc0IsU0FESSxDQUNNSixTQUROLEVBQ2lCSyxRQURqQixFQUVKbkIsR0FGSSxDQUVBLFVBQUNDLE1BQUQ7QUFBQSxlQUFZQSxNQUFNLENBQUNTLFVBQVAsQ0FBa0JULE1BQTlCO0FBQUEsT0FGQSxDQUFQO0FBR0QsSyxDQUVEO0FBQ0E7QUFDQTs7OztvQ0FDMkI7QUFDekIsYUFBTyxFQUFQO0FBQ0QsSyxDQUVEOzs7O3lDQUNxQm1CLEcsRUFBZ0M7QUFDbkQsYUFBTyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQVA7QUFDRCxLLENBRUQ7Ozs7d0NBQzREO0FBQzFELGFBQU87QUFDTEMsUUFBQUEsT0FBTyxFQUFFO0FBREosT0FBUDtBQUdELEssQ0FFRDs7OztpQ0FDYWIsVyxFQUF1QlksRyxFQUFzRDtBQUN4RixhQUFPLElBQVA7QUFDRCxLLENBRUQ7QUFDQTs7OztrQ0FFRVosVyxFQUNBTSxTLEVBQ0FGLFUsRUFDd0M7QUFDeEMsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUExRXNEVSx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgU3VwZXJjbHVzdGVyIGZyb20gJ3N1cGVyY2x1c3Rlcic7XG5pbXBvcnQgSHRtbE92ZXJsYXkgZnJvbSAnLi9odG1sLW92ZXJsYXknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIdG1sQ2x1c3Rlck92ZXJsYXk8T2JqVHlwZT4gZXh0ZW5kcyBIdG1sT3ZlcmxheSB7XG4gIF9zdXBlckNsdXN0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIF9sYXN0T2JqZWN0czogT2JqVHlwZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgZ2V0SXRlbXMoKTogUmVjb3JkPHN0cmluZywgYW55PltdIHtcbiAgICAvLyBzdXBlcmNsdXN0ZXIoKS5sb2FkKCkgaXMgZXhwZW5zaXZlIGFuZCB3ZSB3YW50IHRvIHJ1biBpdCBvbmx5XG4gICAgLy8gd2hlbiBuZWNlc3NhcnkgYW5kIG5vdCBmb3IgZXZlcnkgZnJhbWUuXG5cbiAgICAvLyBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgcnVubmluZyBtYW55IHRpbWVzIC8gc2VjXG5cbiAgICBjb25zdCBuZXdPYmplY3RzID0gdGhpcy5nZXRBbGxPYmplY3RzKCk7XG4gICAgaWYgKG5ld09iamVjdHMgIT09IHRoaXMuX2xhc3RPYmplY3RzKSB7XG4gICAgICB0aGlzLl9zdXBlckNsdXN0ZXIgPSBuZXcgU3VwZXJjbHVzdGVyKHRoaXMuZ2V0Q2x1c3Rlck9wdGlvbnMoKSk7XG4gICAgICB0aGlzLl9zdXBlckNsdXN0ZXIubG9hZChcbiAgICAgICAgbmV3T2JqZWN0cy5tYXAoKG9iamVjdCkgPT4gcG9pbnQodGhpcy5nZXRPYmplY3RDb29yZGluYXRlcyhvYmplY3QpLCB7IG9iamVjdCB9KSlcbiAgICAgICk7XG4gICAgICB0aGlzLl9sYXN0T2JqZWN0cyA9IG5ld09iamVjdHM7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbmV3IFN1cGVyY2x1c3RlcigpIHJ1bicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsdXN0ZXJzID0gdGhpcy5fc3VwZXJDbHVzdGVyLmdldENsdXN0ZXJzKFxuICAgICAgWy0xODAsIC05MCwgMTgwLCA5MF0sXG4gICAgICBNYXRoLnJvdW5kKHRoaXMuZ2V0Wm9vbSgpKVxuICAgICk7XG5cbiAgICByZXR1cm4gY2x1c3RlcnMubWFwKFxuICAgICAgKHtcbiAgICAgICAgZ2VvbWV0cnk6IHsgY29vcmRpbmF0ZXMgfSxcbiAgICAgICAgcHJvcGVydGllczogeyBjbHVzdGVyLCBwb2ludF9jb3VudDogcG9pbnRDb3VudCwgY2x1c3Rlcl9pZDogY2x1c3RlcklkLCBvYmplY3QgfSxcbiAgICAgIH0pID0+XG4gICAgICAgIGNsdXN0ZXJcbiAgICAgICAgICA/IHRoaXMucmVuZGVyQ2x1c3Rlcihjb29yZGluYXRlcywgY2x1c3RlcklkLCBwb2ludENvdW50KVxuICAgICAgICAgIDogdGhpcy5yZW5kZXJPYmplY3QoY29vcmRpbmF0ZXMsIG9iamVjdClcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3Rlck9iamVjdHMoY2x1c3RlcklkOiBudW1iZXIpOiBPYmpUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLl9zdXBlckNsdXN0ZXJcbiAgICAgIC5nZXRMZWF2ZXMoY2x1c3RlcklkLCBJbmZpbml0eSlcbiAgICAgIC5tYXAoKG9iamVjdCkgPT4gb2JqZWN0LnByb3BlcnRpZXMub2JqZWN0KTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHRvIHByb3ZpZGUgaXRlbXMgdGhhdCBuZWVkIGNsdXN0ZXJpbmcuXG4gIC8vIElmIHRoZSBpdGVtcyBoYXZlIG5vdCBjaGFuZ2VkIHBsZWFzZSBwcm92aWRlIHRoZSBzYW1lIGFycmF5IHRvIGF2b2lkXG4gIC8vIHJlZ2VuZXJhdGlvbiBvZiB0aGUgY2x1c3RlciB3aGljaCBjYXVzZXMgcGVyZm9ybWFuY2UgaXNzdWVzLlxuICBnZXRBbGxPYmplY3RzKCk6IE9ialR5cGVbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgdG8gcHJvdmlkZSBjb29yZGluYXRlcyBmb3IgZWFjaCBvYmplY3Qgb2YgZ2V0QWxsT2JqZWN0cygpXG4gIGdldE9iamVjdENvb3JkaW5hdGVzKG9iajogT2JqVHlwZSk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIHJldHVybiBbMCwgMF07XG4gIH1cblxuICAvLyBHZXQgb3B0aW9ucyBvYmplY3QgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgc3VwZXJjbHVzdGVyXG4gIGdldENsdXN0ZXJPcHRpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF4Wm9vbTogMjAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIG92ZXJyaWRlIHRvIHJldHVybiBhbiBIdG1sT3ZlcmxheUl0ZW1cbiAgcmVuZGVyT2JqZWN0KGNvb3JkaW5hdGVzOiBudW1iZXJbXSwgb2JqOiBPYmpUeXBlKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgdG8gcmV0dXJuIGFuIEh0bWxPdmVybGF5SXRlbVxuICAvLyB1c2UgZ2V0Q2x1c3Rlck9iamVjdHMoKSB0byBnZXQgY2x1c3RlciBjb250ZW50c1xuICByZW5kZXJDbHVzdGVyKFxuICAgIGNvb3JkaW5hdGVzOiBudW1iZXJbXSxcbiAgICBjbHVzdGVySWQ6IG51bWJlcixcbiAgICBwb2ludENvdW50OiBudW1iZXJcbiAgKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/overlays/dist-es6/html-overlay-item.js b/modules/overlays/dist-es6/html-overlay-item.js new file mode 100644 index 000000000..7cc1859e3 --- /dev/null +++ b/modules/overlays/dist-es6/html-overlay-item.js @@ -0,0 +1,94 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var styles = { + item: { + position: 'absolute', + userSelect: 'none' + } +}; + +var HtmlOverlayItem = /*#__PURE__*/function (_React$Component) { + _inherits(HtmlOverlayItem, _React$Component); + + var _super = _createSuper(HtmlOverlayItem); + + function HtmlOverlayItem() { + _classCallCheck(this, HtmlOverlayItem); + + return _super.apply(this, arguments); + } + + _createClass(HtmlOverlayItem, [{ + key: "render", + value: function render() { + var _this$props = this.props, + x = _this$props.x, + y = _this$props.y, + children = _this$props.children, + style = _this$props.style, + coordinates = _this$props.coordinates, + props = _objectWithoutProperties(_this$props, ["x", "y", "children", "style", "coordinates"]); + + return ( + /*#__PURE__*/ + //@ts-ignore + React.createElement("div", _extends({ + style: _objectSpread({}, styles.item, {}, style, { + left: x, + top: y + }) + }, props), children) + ); + } + }]); + + return HtmlOverlayItem; +}(React.Component); + +exports["default"] = HtmlOverlayItem; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLW92ZXJsYXktaXRlbS50c3giXSwibmFtZXMiOlsic3R5bGVzIiwiaXRlbSIsInBvc2l0aW9uIiwidXNlclNlbGVjdCIsIkh0bWxPdmVybGF5SXRlbSIsInByb3BzIiwieCIsInkiLCJjaGlsZHJlbiIsInN0eWxlIiwiY29vcmRpbmF0ZXMiLCJsZWZ0IiwidG9wIiwiUmVhY3QiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRztBQUNiQyxFQUFBQSxJQUFJLEVBQUU7QUFDSkMsSUFBQUEsUUFBUSxFQUFFLFVBRE47QUFFSkMsSUFBQUEsVUFBVSxFQUFFO0FBRlI7QUFETyxDQUFmOztJQWtCcUJDLGU7Ozs7Ozs7Ozs7Ozs7NkJBQ1Y7QUFBQSx3QkFDa0QsS0FBS0MsS0FEdkQ7QUFBQSxVQUNDQyxDQURELGVBQ0NBLENBREQ7QUFBQSxVQUNJQyxDQURKLGVBQ0lBLENBREo7QUFBQSxVQUNPQyxRQURQLGVBQ09BLFFBRFA7QUFBQSxVQUNpQkMsS0FEakIsZUFDaUJBLEtBRGpCO0FBQUEsVUFDd0JDLFdBRHhCLGVBQ3dCQSxXQUR4QjtBQUFBLFVBQ3dDTCxLQUR4Qzs7QUFHUDtBQUFBO0FBQ0U7QUFDQTtBQUFLLFVBQUEsS0FBSyxvQkFBT0wsTUFBTSxDQUFDQyxJQUFkLE1BQXVCUSxLQUF2QjtBQUE4QkUsWUFBQUEsSUFBSSxFQUFFTCxDQUFwQztBQUF1Q00sWUFBQUEsR0FBRyxFQUFFTDtBQUE1QztBQUFWLFdBQStERixLQUEvRCxHQUNHRyxRQURIO0FBRkY7QUFNRDs7OztFQVYwQ0ssS0FBSyxDQUFDQyxTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGl0ZW06IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIH0sXG59O1xuXG50eXBlIFByb3BzID0ge1xuICAvLyBJbmplY3RlZCBieSBIdG1sT3ZlcmxheVxuICB4PzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xuXG4gIC8vIFVzZXIgcHJvdmlkZWRcbiAgY29vcmRpbmF0ZXM6IG51bWJlcltdO1xuICBjaGlsZHJlbjogYW55O1xuICBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIdG1sT3ZlcmxheUl0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHM+IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgY2hpbGRyZW4sIHN0eWxlLCBjb29yZGluYXRlcywgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICA8ZGl2IHN0eWxlPXt7IC4uLnN0eWxlcy5pdGVtLCAuLi5zdHlsZSwgbGVmdDogeCwgdG9wOiB5IH19IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/overlays/dist-es6/html-overlay.js b/modules/overlays/dist-es6/html-overlay.js new file mode 100644 index 000000000..2492cb20f --- /dev/null +++ b/modules/overlays/dist-es6/html-overlay.js @@ -0,0 +1,160 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var styles = { + mainContainer: { + width: '100%', + height: '100%', + position: 'absolute', + pointerEvents: 'none' + } +}; + +var HtmlOverlay = /*#__PURE__*/function (_React$Component) { + _inherits(HtmlOverlay, _React$Component); + + var _super = _createSuper(HtmlOverlay); + + function HtmlOverlay() { + _classCallCheck(this, HtmlOverlay); + + return _super.apply(this, arguments); + } + + _createClass(HtmlOverlay, [{ + key: "getItems", + // Override this to provide your items + value: function getItems() { + var children = this.props.children; + + if (children) { + return Array.isArray(children) ? children : [children]; + } + + return []; + } + }, { + key: "getCoords", + value: function getCoords(coordinates) { + var pos = this.props.viewport.project(coordinates); + if (!pos) return [-1, -1]; + return pos; + } + }, { + key: "inView", + value: function inView(_ref) { + var _ref2 = _slicedToArray(_ref, 2), + x = _ref2[0], + y = _ref2[1]; + + var _this$props$viewport = this.props.viewport, + width = _this$props$viewport.width, + height = _this$props$viewport.height; + return !(x < 0 || y < 0 || x > width || y > height); + } + }, { + key: "scaleWithZoom", + value: function scaleWithZoom(n) { + var zoom = this.props.viewport.zoom; + return n / Math.pow(2, 20 - zoom); + } + }, { + key: "breakpointWithZoom", + value: function breakpointWithZoom(threshold, a, b) { + var zoom = this.props.viewport.zoom; + return zoom > threshold ? a : b; + } + }, { + key: "getViewport", + value: function getViewport() { + return this.props.viewport; + } + }, { + key: "getZoom", + value: function getZoom() { + return this.props.viewport.zoom; + } + }, { + key: "render", + value: function render() { + var _this = this; + + var _this$props$zIndex = this.props.zIndex, + zIndex = _this$props$zIndex === void 0 ? 1 : _this$props$zIndex; + var style = Object.assign({ + zIndex: zIndex + }, styles.mainContainer); + var renderItems = []; + this.getItems().filter(Boolean).forEach(function (item, index) { + var _this$getCoords = _this.getCoords(item.props.coordinates), + _this$getCoords2 = _slicedToArray(_this$getCoords, 2), + x = _this$getCoords2[0], + y = _this$getCoords2[1]; + + if (_this.inView([x, y])) { + var key = item.key === null || item.key === undefined ? index : item.key; + renderItems.push(React.cloneElement(item, { + x: x, + y: y, + key: key + })); + } + }); + return /*#__PURE__*/React.createElement("div", { + style: style + }, renderItems); + } + }]); + + return HtmlOverlay; +}(React.Component); // This is needed for Deck.gl 8.0+ +//@ts-ignore + + +exports["default"] = HtmlOverlay; +HtmlOverlay.deckGLViewProps = true; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLW92ZXJsYXkudHN4Il0sIm5hbWVzIjpbInN0eWxlcyIsIm1haW5Db250YWluZXIiLCJ3aWR0aCIsImhlaWdodCIsInBvc2l0aW9uIiwicG9pbnRlckV2ZW50cyIsIkh0bWxPdmVybGF5IiwiY2hpbGRyZW4iLCJwcm9wcyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwicG9zIiwidmlld3BvcnQiLCJwcm9qZWN0IiwieCIsInkiLCJuIiwiem9vbSIsIk1hdGgiLCJwb3ciLCJ0aHJlc2hvbGQiLCJhIiwiYiIsInpJbmRleCIsInN0eWxlIiwiT2JqZWN0IiwiYXNzaWduIiwicmVuZGVySXRlbXMiLCJnZXRJdGVtcyIsImZpbHRlciIsIkJvb2xlYW4iLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4IiwiZ2V0Q29vcmRzIiwiaW5WaWV3Iiwia2V5IiwidW5kZWZpbmVkIiwicHVzaCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiQ29tcG9uZW50IiwiZGVja0dMVmlld1Byb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsYUFBYSxFQUFFO0FBQ2JDLElBQUFBLEtBQUssRUFBRSxNQURNO0FBRWJDLElBQUFBLE1BQU0sRUFBRSxNQUZLO0FBR2JDLElBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLElBQUFBLGFBQWEsRUFBRTtBQUpGO0FBREYsQ0FBZjs7SUFTcUJDLFc7Ozs7Ozs7Ozs7Ozs7QUFJbkI7K0JBQ3VCO0FBQUEsVUFDYkMsUUFEYSxHQUNBLEtBQUtDLEtBREwsQ0FDYkQsUUFEYTs7QUFFckIsVUFBSUEsUUFBSixFQUFjO0FBQ1osZUFBT0UsS0FBSyxDQUFDQyxPQUFOLENBQWNILFFBQWQsSUFBMEJBLFFBQTFCLEdBQXFDLENBQUNBLFFBQUQsQ0FBNUM7QUFDRDs7QUFDRCxhQUFPLEVBQVA7QUFD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ZWFjdCc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgbWFpbkNvbnRhaW5lcjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHRtbE92ZXJsYXkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIHsgdmlld3BvcnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyB6SW5kZXg/OiBudW1iZXI7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH0sXG4gIGFueVxuPiB7XG4gIC8vIE92ZXJyaWRlIHRoaXMgdG8gcHJvdmlkZSB5b3VyIGl0ZW1zXG4gIGdldEl0ZW1zKCk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldENvb3Jkcyhjb29yZGluYXRlczogbnVtYmVyW10pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLnByb3BzLnZpZXdwb3J0LnByb2plY3QoY29vcmRpbmF0ZXMpO1xuICAgIGlmICghcG9zKSByZXR1cm4gWy0xLCAtMV07XG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIGluVmlldyhbeCwgeV06IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLnByb3BzLnZpZXdwb3J0O1xuICAgIHJldHVybiAhKHggPCAwIHx8IHkgPCAwIHx8IHggPiB3aWR0aCB8fCB5ID4gaGVpZ2h0KTtcbiAgfVxuXG4gIHNjYWxlV2l0aFpvb20objogbnVtYmVyKSB7XG4gICAgY29uc3QgeyB6b29tIH0gPSB0aGlzLnByb3BzLnZpZXdwb3J0O1xuICAgIHJldHVybiBuIC8gTWF0aC5wb3coMiwgMjAgLSB6b29tKTtcbiAgfVxuXG4gIGJyZWFrcG9pbnRXaXRoWm9vbSh0aHJlc2hvbGQ6IG51bWJlciwgYTogYW55LCBiOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHsgem9vbSB9ID0gdGhpcy5wcm9wcy52aWV3cG9ydDtcbiAgICByZXR1cm4gem9vbSA+IHRocmVzaG9sZCA/IGEgOiBiO1xuICB9XG5cbiAgZ2V0Vmlld3BvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudmlld3BvcnQ7XG4gIH1cblxuICBnZXRab29tKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZpZXdwb3J0Lnpvb207XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB6SW5kZXggPSAxIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHN0eWxlID0gT2JqZWN0LmFzc2lnbih7IHpJbmRleCB9IGFzIGFueSwgc3R5bGVzLm1haW5Db250YWluZXIpO1xuXG4gICAgY29uc3QgcmVuZGVySXRlbXMgPSBbXTtcbiAgICB0aGlzLmdldEl0ZW1zKClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBbeCwgeV0gPSB0aGlzLmdldENvb3JkcyhpdGVtLnByb3BzLmNvb3JkaW5hdGVzKTtcbiAgICAgICAgaWYgKHRoaXMuaW5WaWV3KFt4LCB5XSkpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBpdGVtLmtleSA9PT0gbnVsbCB8fCBpdGVtLmtleSA9PT0gdW5kZWZpbmVkID8gaW5kZXggOiBpdGVtLmtleTtcbiAgICAgICAgICByZW5kZXJJdGVtcy5wdXNoKFJlYWN0LmNsb25lRWxlbWVudChpdGVtLCB7IHgsIHksIGtleSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e3N0eWxlfT57cmVuZGVySXRlbXN9PC9kaXY+O1xuICB9XG59XG5cbi8vIFRoaXMgaXMgbmVlZGVkIGZvciBEZWNrLmdsIDguMCtcbi8vQHRzLWlnbm9yZVxuSHRtbE92ZXJsYXkuZGVja0dMVmlld1Byb3BzID0gdHJ1ZTtcbiJdfQ== \ No newline at end of file diff --git a/modules/overlays/dist-es6/html-tooltip-overlay.js b/modules/overlays/dist-es6/html-tooltip-overlay.js new file mode 100644 index 000000000..a013de0e7 --- /dev/null +++ b/modules/overlays/dist-es6/html-tooltip-overlay.js @@ -0,0 +1,142 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +var _htmlOverlayItem = _interopRequireDefault(require("./html-overlay-item")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 styles = { + tooltip: { + transform: 'translate(-50%,-100%)', + backgroundColor: 'rgba(0, 0, 0, 0.3)', + padding: '4px 8px', + borderRadius: 8, + color: 'white' + } +}; +var SHOW_TOOLTIP_TIMEOUT = 250; + +var HtmlTooltipOverlay = /*#__PURE__*/function (_HtmlOverlay) { + _inherits(HtmlTooltipOverlay, _HtmlOverlay); + + var _super = _createSuper(HtmlTooltipOverlay); + + function HtmlTooltipOverlay(props) { + var _this; + + _classCallCheck(this, HtmlTooltipOverlay); + + _this = _super.call(this, props); + + _defineProperty(_assertThisInitialized(_this), "timeoutID", null); + + _defineProperty(_assertThisInitialized(_this), "state", void 0); + + _this.state = { + visible: false, + pickingInfo: null + }; + return _this; + } + + _createClass(HtmlTooltipOverlay, [{ + key: "componentWillMount", + value: function componentWillMount() { + var _this2 = this; + + this.context.nebula.queryObjectEvents.on('pick', function (_ref) { + var event = _ref.event, + pickingInfo = _ref.pickingInfo; + + if (_this2.timeoutID !== null) { + window.clearTimeout(_this2.timeoutID); + } + + _this2.timeoutID = null; + + if (pickingInfo && _this2._getTooltip(pickingInfo)) { + _this2.timeoutID = window.setTimeout(function () { + _this2.setState({ + visible: true, + pickingInfo: pickingInfo + }); + }, SHOW_TOOLTIP_TIMEOUT); + } else { + _this2.setState({ + visible: false + }); + } + }); + } + }, { + key: "_getTooltip", + value: function _getTooltip(pickingInfo) { + return pickingInfo.object.style.tooltip; + } + }, { + key: "_makeOverlay", + value: function _makeOverlay() { + var pickingInfo = this.state.pickingInfo; + + if (pickingInfo) { + return /*#__PURE__*/React.createElement(_htmlOverlayItem["default"], { + key: 0, + coordinates: pickingInfo.lngLat, + style: styles.tooltip + }, this._getTooltip(pickingInfo)); + } + + return null; + } + }, { + key: "getItems", + value: function getItems() { + if (this.state.visible) { + return [this._makeOverlay()]; + } + + return []; + } + }]); + + return HtmlTooltipOverlay; +}(_htmlOverlay["default"]); + +exports["default"] = HtmlTooltipOverlay; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLXRvb2x0aXAtb3ZlcmxheS50c3giXSwibmFtZXMiOlsic3R5bGVzIiwidG9vbHRpcCIsInRyYW5zZm9ybSIsImJhY2tncm91bmRDb2xvciIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJjb2xvciIsIlNIT1dfVE9PTFRJUF9USU1FT1VUIiwiSHRtbFRvb2x0aXBPdmVybGF5IiwicHJvcHMiLCJzdGF0ZSIsInZpc2libGUiLCJwaWNraW5nSW5mbyIsImNvbnRleHQiLCJuZWJ1bGEiLCJxdWVyeU9iamVjdEV2ZW50cyIsIm9uIiwiZXZlbnQiLCJ0aW1lb3V0SUQiLCJ3aW5kb3ciLCJjbGVhclRpbWVvdXQiLCJfZ2V0VG9vbHRpcCIsInNldFRpbWVvdXQiLCJzZXRTdGF0ZSIsIm9iamVjdCIsInN0eWxlIiwibG5nTGF0IiwiX21ha2VPdmVybGF5IiwiSHRtbE92ZXJsYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFNQSxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1BDLElBQUFBLFNBQVMsRUFBRSx1QkFESjtBQUVQQyxJQUFBQSxlQUFlLEVBQUUsb0JBRlY7QUFHUEMsSUFBQUEsT0FBTyxFQUFFLFNBSEY7QUFJUEMsSUFBQUEsWUFBWSxFQUFFLENBSlA7QUFLUEMsSUFBQUEsS0FBSyxFQUFFO0FBTEE7QUFESSxDQUFmO0FBVUEsSUFBTUMsb0JBQW9CLEdBQUcsR0FBN0I7O0lBRXFCQyxrQjs7Ozs7QUFDbkIsOEJBQVlDLEtBQVosRUFBd0I7QUFBQTs7QUFBQTs7QUFDdEIsOEJBQU1BLEtBQU47O0FBRHNCLGdFQXNCZSxJQXRCZjs7QUFBQTs7QUFFdEIsVUFBS0MsS0FBTCxHQUFhO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxXQUFXLEVBQUU7QUFBL0IsS0FBYjtBQUZzQjtBQUd2Qjs7Ozt5Q0FFb0I7QUFBQTs7QUFDbkIsV0FBS0MsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxpQkFBcEIsQ0FBc0NDLEVBQXRDLENBQXlDLE1BQXpDLEVBQWlELGdCQUE0QjtBQUFBLFlBQXpCQyxLQUF5QixRQUF6QkEsS0FBeUI7QUFBQSxZQUFsQkwsV0FBa0IsUUFBbEJBLFdBQWtCOztBQUMzRSxZQUFJLE1BQUksQ0FBQ00sU0FBTCxLQUFtQixJQUF2QixFQUE2QjtBQUMzQkMsVUFBQUEsTUFBTSxDQUFDQyxZQUFQLENBQW9CLE1BQUksQ0FBQ0YsU0FBekI7QUFDRDs7QUFDRCxRQUFBLE1BQUksQ0FBQ0EsU0FBTCxHQUFpQixJQUFqQjs7QUFFQSxZQUFJTixXQUFXLElBQUksTUFBSSxDQUFDUyxXQUFMLENBQWlCVCxXQUFqQixDQUFuQixFQUFrRDtBQUNoRCxVQUFBLE1BQUksQ0FBQ00sU0FBTCxHQUFpQkMsTUFBTSxDQUFDRyxVQUFQLENBQWtCLFlBQU07QUFDdkMsWUFBQSxNQUFJLENBQUNDLFFBQUwsQ0FBYztBQUFFWixjQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQkMsY0FBQUEsV0FBVyxFQUFYQTtBQUFqQixhQUFkO0FBQ0QsV0FGZ0IsRUFFZEwsb0JBRmMsQ0FBakI7QUFHRCxTQUpELE1BSU87QUFDTCxVQUFBLE1BQUksQ0FBQ2dCLFFBQUwsQ0FBYztBQUFFWixZQUFBQSxPQUFPLEVBQUU7QUFBWCxXQUFkO0FBQ0Q7QUFDRixPQWJEO0FBY0Q7OztnQ0FLV0MsVyxFQUEwQztBQUNwRCxhQUFPQSxXQUFXLENBQUNZLE1BQVosQ0FBbUJDLEtBQW5CLENBQXlCeEIsT0FBaEM7QUFDRDs7O21DQUVjO0FBQUEsVUFDTFcsV0FESyxHQUNXLEtBQUtGLEtBRGhCLENBQ0xFLFdBREs7O0FBR2IsVUFBSUEsV0FBSixFQUFpQjtBQUNmLDRCQUNFLG9CQUFDLDJCQUFEO0FBQWlCLFVBQUEsR0FBRyxFQUFFLENBQXRCO0FBQXlCLFVBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNjLE1BQWxEO0FBQTBELFVBQUEsS0FBSyxFQUFFMUIsTUFBTSxDQUFDQztBQUF4RSxXQUNHLEtBQUtvQixXQUFMLENBQWlCVCxXQUFqQixDQURILENBREY7QUFLRDs7QUFFRCxhQUFPLElBQVA7QUFDRDs7OytCQUV5RDtBQUN4RCxVQUFJLEtBQUtGLEtBQUwsQ0FBV0MsT0FBZixFQUF3QjtBQUN0QixlQUFPLENBQUMsS0FBS2dCLFlBQUwsRUFBRCxDQUFQO0FBQ0Q7O0FBRUQsYUFBTyxFQUFQO0FBQ0Q7Ozs7RUFsRDZDQyx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEh0bWxPdmVybGF5IGZyb20gJy4vaHRtbC1vdmVybGF5JztcbmltcG9ydCBIdG1sT3ZlcmxheUl0ZW0gZnJvbSAnLi9odG1sLW92ZXJsYXktaXRlbSc7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHBpY2tpbmdJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgdG9vbHRpcDoge1xuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLC0xMDAlKScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjMpJyxcbiAgICBwYWRkaW5nOiAnNHB4IDhweCcsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIGNvbG9yOiAnd2hpdGUnLFxuICB9LFxufTtcblxuY29uc3QgU0hPV19UT09MVElQX1RJTUVPVVQgPSAyNTA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0bWxUb29sdGlwT3ZlcmxheSBleHRlbmRzIEh0bWxPdmVybGF5IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyB2aXNpYmxlOiBmYWxzZSwgcGlja2luZ0luZm86IG51bGwgfTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgICB0aGlzLmNvbnRleHQubmVidWxhLnF1ZXJ5T2JqZWN0RXZlbnRzLm9uKCdwaWNrJywgKHsgZXZlbnQsIHBpY2tpbmdJbmZvIH0pID0+IHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCAhPT0gbnVsbCkge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElEKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGltZW91dElEID0gbnVsbDtcblxuICAgICAgaWYgKHBpY2tpbmdJbmZvICYmIHRoaXMuX2dldFRvb2x0aXAocGlja2luZ0luZm8pKSB7XG4gICAgICAgIHRoaXMudGltZW91dElEID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2aXNpYmxlOiB0cnVlLCBwaWNraW5nSW5mbyB9KTtcbiAgICAgICAgfSwgU0hPV19UT09MVElQX1RJTUVPVVQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZpc2libGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdGltZW91dElEOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgc3RhdGU6IFN0YXRlO1xuXG4gIF9nZXRUb29sdGlwKHBpY2tpbmdJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGlja2luZ0luZm8ub2JqZWN0LnN0eWxlLnRvb2x0aXA7XG4gIH1cblxuICBfbWFrZU92ZXJsYXkoKSB7XG4gICAgY29uc3QgeyBwaWNraW5nSW5mbyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChwaWNraW5nSW5mbykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEh0bWxPdmVybGF5SXRlbSBrZXk9ezB9IGNvb3JkaW5hdGVzPXtwaWNraW5nSW5mby5sbmdMYXR9IHN0eWxlPXtzdHlsZXMudG9vbHRpcH0+XG4gICAgICAgICAge3RoaXMuX2dldFRvb2x0aXAocGlja2luZ0luZm8pfVxuICAgICAgICA8L0h0bWxPdmVybGF5SXRlbT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRJdGVtcygpOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh0aGlzLnN0YXRlLnZpc2libGUpIHtcbiAgICAgIHJldHVybiBbdGhpcy5fbWFrZU92ZXJsYXkoKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/overlays/dist-es6/index.js b/modules/overlays/dist-es6/index.js new file mode 100644 index 000000000..cdc5c6a8e --- /dev/null +++ b/modules/overlays/dist-es6/index.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "HtmlOverlay", { + enumerable: true, + get: function get() { + return _htmlOverlay["default"]; + } +}); +Object.defineProperty(exports, "HtmlOverlayItem", { + enumerable: true, + get: function get() { + return _htmlOverlayItem["default"]; + } +}); +Object.defineProperty(exports, "HtmlClusterOverlay", { + enumerable: true, + get: function get() { + return _htmlClusterOverlay["default"]; + } +}); +Object.defineProperty(exports, "HtmlTooltipOverlay", { + enumerable: true, + get: function get() { + return _htmlTooltipOverlay["default"]; + } +}); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +var _htmlOverlayItem = _interopRequireDefault(require("./html-overlay-item")); + +var _htmlClusterOverlay = _interopRequireDefault(require("./html-cluster-overlay")); + +var _htmlTooltipOverlay = _interopRequireDefault(require("./html-tooltip-overlay")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcmVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSHRtbE92ZXJsYXkgfSBmcm9tICcuL2h0bWwtb3ZlcmxheSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEh0bWxPdmVybGF5SXRlbSB9IGZyb20gJy4vaHRtbC1vdmVybGF5LWl0ZW0nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBIdG1sQ2x1c3Rlck92ZXJsYXkgfSBmcm9tICcuL2h0bWwtY2x1c3Rlci1vdmVybGF5JztcblxuLy8gSGVscGVyXG5leHBvcnQgeyBkZWZhdWx0IGFzIEh0bWxUb29sdGlwT3ZlcmxheSB9IGZyb20gJy4vaHRtbC10b29sdGlwLW92ZXJsYXknO1xuIl19 \ No newline at end of file diff --git a/modules/overlays/dist-types/html-cluster-overlay.d.ts b/modules/overlays/dist-types/html-cluster-overlay.d.ts new file mode 100644 index 000000000..a1a061757 --- /dev/null +++ b/modules/overlays/dist-types/html-cluster-overlay.d.ts @@ -0,0 +1,13 @@ +import HtmlOverlay from './html-overlay'; +export default class HtmlClusterOverlay extends HtmlOverlay { + _superCluster: Record; + _lastObjects: ObjType[] | null | undefined; + getItems(): Record[]; + getClusterObjects(clusterId: number): ObjType[]; + getAllObjects(): ObjType[]; + getObjectCoordinates(obj: ObjType): [number, number]; + getClusterOptions(): Record | null | undefined; + renderObject(coordinates: number[], obj: ObjType): Record | null | undefined; + renderCluster(coordinates: number[], clusterId: number, pointCount: number): Record | null | undefined; +} +//# sourceMappingURL=html-cluster-overlay.d.ts.map \ No newline at end of file diff --git a/modules/overlays/dist-types/html-cluster-overlay.d.ts.map b/modules/overlays/dist-types/html-cluster-overlay.d.ts.map new file mode 100644 index 000000000..8e06964ee --- /dev/null +++ b/modules/overlays/dist-types/html-cluster-overlay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"html-cluster-overlay.d.ts","sourceRoot":"","sources":["../src/html-cluster-overlay.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,kBAAkB,CAAC,OAAO,CAAE,SAAQ,WAAW;IAClE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAQ;IAElD,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IAgCjC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAS/C,aAAa,IAAI,OAAO,EAAE;IAK1B,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKpD,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;IAO3D,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;IAMzF,aAAa,CACX,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS;CAG1C"} \ No newline at end of file diff --git a/modules/overlays/dist-types/html-overlay-item.d.ts b/modules/overlays/dist-types/html-overlay-item.d.ts new file mode 100644 index 000000000..bb673cac0 --- /dev/null +++ b/modules/overlays/dist-types/html-overlay-item.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +declare type Props = { + x?: number; + y?: number; + coordinates: number[]; + children: any; + style?: Record; +}; +export default class HtmlOverlayItem extends React.Component { + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=html-overlay-item.d.ts.map \ No newline at end of file diff --git a/modules/overlays/dist-types/html-overlay-item.d.ts.map b/modules/overlays/dist-types/html-overlay-item.d.ts.map new file mode 100644 index 000000000..e3539f7ee --- /dev/null +++ b/modules/overlays/dist-types/html-overlay-item.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"html-overlay-item.d.ts","sourceRoot":"","sources":["../src/html-overlay-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,aAAK,KAAK,GAAG;IAEX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAGX,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;IACjE,MAAM;CAUP"} \ No newline at end of file diff --git a/modules/overlays/dist-types/html-overlay.d.ts b/modules/overlays/dist-types/html-overlay.d.ts new file mode 100644 index 000000000..d776ca029 --- /dev/null +++ b/modules/overlays/dist-types/html-overlay.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +export default class HtmlOverlay extends React.Component<{ + viewport?: Record; + zIndex?: number; + children?: React.ReactNode; +}, any> { + getItems(): Array; + getCoords(coordinates: number[]): [number, number]; + inView([x, y]: number[]): boolean; + scaleWithZoom(n: number): number; + breakpointWithZoom(threshold: number, a: any, b: any): any; + getViewport(): Record; + getZoom(): any; + render(): JSX.Element; +} +//# sourceMappingURL=html-overlay.d.ts.map \ No newline at end of file diff --git a/modules/overlays/dist-types/html-overlay.d.ts.map b/modules/overlays/dist-types/html-overlay.d.ts.map new file mode 100644 index 000000000..073b69d73 --- /dev/null +++ b/modules/overlays/dist-types/html-overlay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"html-overlay.d.ts","sourceRoot":"","sources":["../src/html-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,SAAS,CACtD;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,EAC/E,GAAG,CACJ;IAEC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC;IAQtB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAMlD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IAKjC,aAAa,CAAC,CAAC,EAAE,MAAM;IAKvB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG;IAK1D,WAAW;IAIX,OAAO;IAIP,MAAM;CAiBP"} \ No newline at end of file diff --git a/modules/overlays/dist-types/html-tooltip-overlay.d.ts b/modules/overlays/dist-types/html-tooltip-overlay.d.ts new file mode 100644 index 000000000..5e7bcbd88 --- /dev/null +++ b/modules/overlays/dist-types/html-tooltip-overlay.d.ts @@ -0,0 +1,17 @@ +/// +import HtmlOverlay from './html-overlay'; +declare type State = { + visible: boolean; + pickingInfo: Record | null | undefined; +}; +export default class HtmlTooltipOverlay extends HtmlOverlay { + constructor(props: any); + componentWillMount(): void; + timeoutID: number | null | undefined; + state: State; + _getTooltip(pickingInfo: Record): string; + _makeOverlay(): JSX.Element; + getItems(): Array | null | undefined>; +} +export {}; +//# sourceMappingURL=html-tooltip-overlay.d.ts.map \ No newline at end of file diff --git a/modules/overlays/dist-types/html-tooltip-overlay.d.ts.map b/modules/overlays/dist-types/html-tooltip-overlay.d.ts.map new file mode 100644 index 000000000..9a07fe11c --- /dev/null +++ b/modules/overlays/dist-types/html-tooltip-overlay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"html-tooltip-overlay.d.ts","sourceRoot":"","sources":["../src/html-tooltip-overlay.tsx"],"names":[],"mappings":";AAEA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAGzC,aAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CACrD,CAAC;AAcF,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAW;gBAC7C,KAAK,EAAE,GAAG;IAKtB,kBAAkB;IAiBlB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAQ;IAC5C,KAAK,EAAE,KAAK,CAAC;IAEb,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAIrD,YAAY;IAcZ,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAO1D"} \ No newline at end of file diff --git a/modules/overlays/dist-types/index.d.ts b/modules/overlays/dist-types/index.d.ts new file mode 100644 index 000000000..510e55efe --- /dev/null +++ b/modules/overlays/dist-types/index.d.ts @@ -0,0 +1,5 @@ +export { default as HtmlOverlay } from './html-overlay'; +export { default as HtmlOverlayItem } from './html-overlay-item'; +export { default as HtmlClusterOverlay } from './html-cluster-overlay'; +export { default as HtmlTooltipOverlay } from './html-tooltip-overlay'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/overlays/dist-types/index.d.ts.map b/modules/overlays/dist-types/index.d.ts.map new file mode 100644 index 000000000..2eef2e776 --- /dev/null +++ b/modules/overlays/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"} \ No newline at end of file diff --git a/modules/overlays/dist/html-cluster-overlay.js b/modules/overlays/dist/html-cluster-overlay.js new file mode 100644 index 000000000..29f89a3fb --- /dev/null +++ b/modules/overlays/dist/html-cluster-overlay.js @@ -0,0 +1,145 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _helpers = require("@turf/helpers"); + +var _supercluster = _interopRequireDefault(require("supercluster")); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 HtmlClusterOverlay = /*#__PURE__*/function (_HtmlOverlay) { + _inherits(HtmlClusterOverlay, _HtmlOverlay); + + var _super = _createSuper(HtmlClusterOverlay); + + function HtmlClusterOverlay() { + var _this; + + _classCallCheck(this, HtmlClusterOverlay); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_superCluster", void 0); + + _defineProperty(_assertThisInitialized(_this), "_lastObjects", null); + + return _this; + } + + _createClass(HtmlClusterOverlay, [{ + key: "getItems", + value: function getItems() { + var _this2 = this; + + // supercluster().load() is expensive and we want to run it only + // when necessary and not for every frame. + // TODO: Warn if this is running many times / sec + var newObjects = this.getAllObjects(); + + if (newObjects !== this._lastObjects) { + this._superCluster = new _supercluster["default"](this.getClusterOptions()); + + this._superCluster.load(newObjects.map(function (object) { + return (0, _helpers.point)(_this2.getObjectCoordinates(object), { + object: object + }); + })); + + this._lastObjects = newObjects; // console.log('new Supercluster() run'); + } + + var clusters = this._superCluster.getClusters([-180, -90, 180, 90], Math.round(this.getZoom())); + + return clusters.map(function (_ref) { + var coordinates = _ref.geometry.coordinates, + _ref$properties = _ref.properties, + cluster = _ref$properties.cluster, + pointCount = _ref$properties.point_count, + clusterId = _ref$properties.cluster_id, + object = _ref$properties.object; + return cluster ? _this2.renderCluster(coordinates, clusterId, pointCount) : _this2.renderObject(coordinates, object); + }); + } + }, { + key: "getClusterObjects", + value: function getClusterObjects(clusterId) { + return this._superCluster.getLeaves(clusterId, Infinity).map(function (object) { + return object.properties.object; + }); + } // Override to provide items that need clustering. + // If the items have not changed please provide the same array to avoid + // regeneration of the cluster which causes performance issues. + + }, { + key: "getAllObjects", + value: function getAllObjects() { + return []; + } // override to provide coordinates for each object of getAllObjects() + + }, { + key: "getObjectCoordinates", + value: function getObjectCoordinates(obj) { + return [0, 0]; + } // Get options object used when instantiating supercluster + + }, { + key: "getClusterOptions", + value: function getClusterOptions() { + return { + maxZoom: 20 + }; + } // override to return an HtmlOverlayItem + + }, { + key: "renderObject", + value: function renderObject(coordinates, obj) { + return null; + } // override to return an HtmlOverlayItem + // use getClusterObjects() to get cluster contents + + }, { + key: "renderCluster", + value: function renderCluster(coordinates, clusterId, pointCount) { + return null; + } + }]); + + return HtmlClusterOverlay; +}(_htmlOverlay["default"]); + +exports["default"] = HtmlClusterOverlay; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLWNsdXN0ZXItb3ZlcmxheS50cyJdLCJuYW1lcyI6WyJIdG1sQ2x1c3Rlck92ZXJsYXkiLCJuZXdPYmplY3RzIiwiZ2V0QWxsT2JqZWN0cyIsIl9sYXN0T2JqZWN0cyIsIl9zdXBlckNsdXN0ZXIiLCJTdXBlcmNsdXN0ZXIiLCJnZXRDbHVzdGVyT3B0aW9ucyIsImxvYWQiLCJtYXAiLCJvYmplY3QiLCJnZXRPYmplY3RDb29yZGluYXRlcyIsImNsdXN0ZXJzIiwiZ2V0Q2x1c3RlcnMiLCJNYXRoIiwicm91bmQiLCJnZXRab29tIiwiY29vcmRpbmF0ZXMiLCJnZW9tZXRyeSIsInByb3BlcnRpZXMiLCJjbHVzdGVyIiwicG9pbnRDb3VudCIsInBvaW50X2NvdW50IiwiY2x1c3RlcklkIiwiY2x1c3Rlcl9pZCIsInJlbmRlckNsdXN0ZXIiLCJyZW5kZXJPYmplY3QiLCJnZXRMZWF2ZXMiLCJJbmZpbml0eSIsIm9iaiIsIm1heFpvb20iLCJIdG1sT3ZlcmxheSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXFCQSxrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O21FQUUwQixJOzs7Ozs7OytCQUVYO0FBQUE7O0FBQ2hDO0FBQ0E7QUFFQTtBQUVBLFVBQU1DLFVBQVUsR0FBRyxLQUFLQyxhQUFMLEVBQW5COztBQUNBLFVBQUlELFVBQVUsS0FBSyxLQUFLRSxZQUF4QixFQUFzQztBQUNwQyxhQUFLQyxhQUFMLEdBQXFCLElBQUlDLHdCQUFKLENBQWlCLEtBQUtDLGlCQUFMLEVBQWpCLENBQXJCOztBQUNBLGFBQUtGLGFBQUwsQ0FBbUJHLElBQW5CLENBQ0VOLFVBQVUsQ0FBQ08sR0FBWCxDQUFlLFVBQUNDLE1BQUQ7QUFBQSxpQkFBWSxvQkFBTSxNQUFJLENBQUNDLG9CQUFMLENBQTBCRCxNQUExQixDQUFOLEVBQXlDO0FBQUVBLFlBQUFBLE1BQU0sRUFBTkE7QUFBRixXQUF6QyxDQUFaO0FBQUEsU0FBZixDQURGOztBQUdBLGFBQUtOLFlBQUwsR0FBb0JGLFVBQXBCLENBTG9DLENBTXBDO0FBQ0Q7O0FBRUQsVUFBTVUsUUFBUSxHQUFHLEtBQUtQLGFBQUwsQ0FBbUJRLFdBQW5CLENBQ2YsQ0FBQyxDQUFDLEdBQUYsRUFBTyxDQUFDLEVBQVIsRUFBWSxHQUFaLEVBQWlCLEVBQWpCLENBRGUsRUFFZkMsSUFBSSxDQUFDQyxLQUFMLENBQVcsS0FBS0MsT0FBTCxFQUFYLENBRmUsQ0FBakI7O0FBS0EsYUFBT0osUUFBUSxDQUFDSCxHQUFULENBQ0w7QUFBQSxZQUNjUSxXQURkLFFBQ0VDLFFBREYsQ0FDY0QsV0FEZDtBQUFBLG1DQUVFRSxVQUZGO0FBQUEsWUFFZ0JDLE9BRmhCLG1CQUVnQkEsT0FGaEI7QUFBQSxZQUVzQ0MsVUFGdEMsbUJBRXlCQyxXQUZ6QjtBQUFBLFlBRThEQyxTQUY5RCxtQkFFa0RDLFVBRmxEO0FBQUEsWUFFeUVkLE1BRnpFLG1CQUV5RUEsTUFGekU7QUFBQSxlQUlFVSxPQUFPLEdBQ0gsTUFBSSxDQUFDSyxhQUFMLENBQW1CUixXQUFuQixFQUFnQ00sU0FBaEMsRUFBMkNGLFVBQTNDLENBREcsR0FFSCxNQUFJLENBQUNLLFlBQUwsQ0FBa0JULFdBQWxCLEVBQStCUCxNQUEvQixDQU5OO0FBQUEsT0FESyxDQUFQO0FBU0Q7OztzQ0FFaUJhLFMsRUFBOEI7QUFDOUMsYUFBTyxLQUFLbEIsYUFBTCxDQUNKc0IsU0FESSxDQUNNSixTQUROLEVBQ2lCSyxRQURqQixFQUVKbkIsR0FGSSxDQUVBLFVBQUNDLE1BQUQ7QUFBQSxlQUFZQSxNQUFNLENBQUNTLFVBQVAsQ0FBa0JULE1BQTlCO0FBQUEsT0FGQSxDQUFQO0FBR0QsSyxDQUVEO0FBQ0E7QUFDQTs7OztvQ0FDMkI7QUFDekIsYUFBTyxFQUFQO0FBQ0QsSyxDQUVEOzs7O3lDQUNxQm1CLEcsRUFBZ0M7QUFDbkQsYUFBTyxDQUFDLENBQUQsRUFBSSxDQUFKLENBQVA7QUFDRCxLLENBRUQ7Ozs7d0NBQzREO0FBQzFELGFBQU87QUFDTEMsUUFBQUEsT0FBTyxFQUFFO0FBREosT0FBUDtBQUdELEssQ0FFRDs7OztpQ0FDYWIsVyxFQUF1QlksRyxFQUFzRDtBQUN4RixhQUFPLElBQVA7QUFDRCxLLENBRUQ7QUFDQTs7OztrQ0FFRVosVyxFQUNBTSxTLEVBQ0FGLFUsRUFDd0M7QUFDeEMsYUFBTyxJQUFQO0FBQ0Q7Ozs7RUExRXNEVSx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvaW50IH0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5pbXBvcnQgU3VwZXJjbHVzdGVyIGZyb20gJ3N1cGVyY2x1c3Rlcic7XG5pbXBvcnQgSHRtbE92ZXJsYXkgZnJvbSAnLi9odG1sLW92ZXJsYXknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIdG1sQ2x1c3Rlck92ZXJsYXk8T2JqVHlwZT4gZXh0ZW5kcyBIdG1sT3ZlcmxheSB7XG4gIF9zdXBlckNsdXN0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIF9sYXN0T2JqZWN0czogT2JqVHlwZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgZ2V0SXRlbXMoKTogUmVjb3JkPHN0cmluZywgYW55PltdIHtcbiAgICAvLyBzdXBlcmNsdXN0ZXIoKS5sb2FkKCkgaXMgZXhwZW5zaXZlIGFuZCB3ZSB3YW50IHRvIHJ1biBpdCBvbmx5XG4gICAgLy8gd2hlbiBuZWNlc3NhcnkgYW5kIG5vdCBmb3IgZXZlcnkgZnJhbWUuXG5cbiAgICAvLyBUT0RPOiBXYXJuIGlmIHRoaXMgaXMgcnVubmluZyBtYW55IHRpbWVzIC8gc2VjXG5cbiAgICBjb25zdCBuZXdPYmplY3RzID0gdGhpcy5nZXRBbGxPYmplY3RzKCk7XG4gICAgaWYgKG5ld09iamVjdHMgIT09IHRoaXMuX2xhc3RPYmplY3RzKSB7XG4gICAgICB0aGlzLl9zdXBlckNsdXN0ZXIgPSBuZXcgU3VwZXJjbHVzdGVyKHRoaXMuZ2V0Q2x1c3Rlck9wdGlvbnMoKSk7XG4gICAgICB0aGlzLl9zdXBlckNsdXN0ZXIubG9hZChcbiAgICAgICAgbmV3T2JqZWN0cy5tYXAoKG9iamVjdCkgPT4gcG9pbnQodGhpcy5nZXRPYmplY3RDb29yZGluYXRlcyhvYmplY3QpLCB7IG9iamVjdCB9KSlcbiAgICAgICk7XG4gICAgICB0aGlzLl9sYXN0T2JqZWN0cyA9IG5ld09iamVjdHM7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbmV3IFN1cGVyY2x1c3RlcigpIHJ1bicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsdXN0ZXJzID0gdGhpcy5fc3VwZXJDbHVzdGVyLmdldENsdXN0ZXJzKFxuICAgICAgWy0xODAsIC05MCwgMTgwLCA5MF0sXG4gICAgICBNYXRoLnJvdW5kKHRoaXMuZ2V0Wm9vbSgpKVxuICAgICk7XG5cbiAgICByZXR1cm4gY2x1c3RlcnMubWFwKFxuICAgICAgKHtcbiAgICAgICAgZ2VvbWV0cnk6IHsgY29vcmRpbmF0ZXMgfSxcbiAgICAgICAgcHJvcGVydGllczogeyBjbHVzdGVyLCBwb2ludF9jb3VudDogcG9pbnRDb3VudCwgY2x1c3Rlcl9pZDogY2x1c3RlcklkLCBvYmplY3QgfSxcbiAgICAgIH0pID0+XG4gICAgICAgIGNsdXN0ZXJcbiAgICAgICAgICA/IHRoaXMucmVuZGVyQ2x1c3Rlcihjb29yZGluYXRlcywgY2x1c3RlcklkLCBwb2ludENvdW50KVxuICAgICAgICAgIDogdGhpcy5yZW5kZXJPYmplY3QoY29vcmRpbmF0ZXMsIG9iamVjdClcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3Rlck9iamVjdHMoY2x1c3RlcklkOiBudW1iZXIpOiBPYmpUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLl9zdXBlckNsdXN0ZXJcbiAgICAgIC5nZXRMZWF2ZXMoY2x1c3RlcklkLCBJbmZpbml0eSlcbiAgICAgIC5tYXAoKG9iamVjdCkgPT4gb2JqZWN0LnByb3BlcnRpZXMub2JqZWN0KTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHRvIHByb3ZpZGUgaXRlbXMgdGhhdCBuZWVkIGNsdXN0ZXJpbmcuXG4gIC8vIElmIHRoZSBpdGVtcyBoYXZlIG5vdCBjaGFuZ2VkIHBsZWFzZSBwcm92aWRlIHRoZSBzYW1lIGFycmF5IHRvIGF2b2lkXG4gIC8vIHJlZ2VuZXJhdGlvbiBvZiB0aGUgY2x1c3RlciB3aGljaCBjYXVzZXMgcGVyZm9ybWFuY2UgaXNzdWVzLlxuICBnZXRBbGxPYmplY3RzKCk6IE9ialR5cGVbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgdG8gcHJvdmlkZSBjb29yZGluYXRlcyBmb3IgZWFjaCBvYmplY3Qgb2YgZ2V0QWxsT2JqZWN0cygpXG4gIGdldE9iamVjdENvb3JkaW5hdGVzKG9iajogT2JqVHlwZSk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIHJldHVybiBbMCwgMF07XG4gIH1cblxuICAvLyBHZXQgb3B0aW9ucyBvYmplY3QgdXNlZCB3aGVuIGluc3RhbnRpYXRpbmcgc3VwZXJjbHVzdGVyXG4gIGdldENsdXN0ZXJPcHRpb25zKCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF4Wm9vbTogMjAsXG4gICAgfTtcbiAgfVxuXG4gIC8vIG92ZXJyaWRlIHRvIHJldHVybiBhbiBIdG1sT3ZlcmxheUl0ZW1cbiAgcmVuZGVyT2JqZWN0KGNvb3JkaW5hdGVzOiBudW1iZXJbXSwgb2JqOiBPYmpUeXBlKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgdG8gcmV0dXJuIGFuIEh0bWxPdmVybGF5SXRlbVxuICAvLyB1c2UgZ2V0Q2x1c3Rlck9iamVjdHMoKSB0byBnZXQgY2x1c3RlciBjb250ZW50c1xuICByZW5kZXJDbHVzdGVyKFxuICAgIGNvb3JkaW5hdGVzOiBudW1iZXJbXSxcbiAgICBjbHVzdGVySWQ6IG51bWJlcixcbiAgICBwb2ludENvdW50OiBudW1iZXJcbiAgKTogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/overlays/dist/html-overlay-item.js b/modules/overlays/dist/html-overlay-item.js new file mode 100644 index 000000000..7cc1859e3 --- /dev/null +++ b/modules/overlays/dist/html-overlay-item.js @@ -0,0 +1,94 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var styles = { + item: { + position: 'absolute', + userSelect: 'none' + } +}; + +var HtmlOverlayItem = /*#__PURE__*/function (_React$Component) { + _inherits(HtmlOverlayItem, _React$Component); + + var _super = _createSuper(HtmlOverlayItem); + + function HtmlOverlayItem() { + _classCallCheck(this, HtmlOverlayItem); + + return _super.apply(this, arguments); + } + + _createClass(HtmlOverlayItem, [{ + key: "render", + value: function render() { + var _this$props = this.props, + x = _this$props.x, + y = _this$props.y, + children = _this$props.children, + style = _this$props.style, + coordinates = _this$props.coordinates, + props = _objectWithoutProperties(_this$props, ["x", "y", "children", "style", "coordinates"]); + + return ( + /*#__PURE__*/ + //@ts-ignore + React.createElement("div", _extends({ + style: _objectSpread({}, styles.item, {}, style, { + left: x, + top: y + }) + }, props), children) + ); + } + }]); + + return HtmlOverlayItem; +}(React.Component); + +exports["default"] = HtmlOverlayItem; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLW92ZXJsYXktaXRlbS50c3giXSwibmFtZXMiOlsic3R5bGVzIiwiaXRlbSIsInBvc2l0aW9uIiwidXNlclNlbGVjdCIsIkh0bWxPdmVybGF5SXRlbSIsInByb3BzIiwieCIsInkiLCJjaGlsZHJlbiIsInN0eWxlIiwiY29vcmRpbmF0ZXMiLCJsZWZ0IiwidG9wIiwiUmVhY3QiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLE1BQU0sR0FBRztBQUNiQyxFQUFBQSxJQUFJLEVBQUU7QUFDSkMsSUFBQUEsUUFBUSxFQUFFLFVBRE47QUFFSkMsSUFBQUEsVUFBVSxFQUFFO0FBRlI7QUFETyxDQUFmOztJQWtCcUJDLGU7Ozs7Ozs7Ozs7Ozs7NkJBQ1Y7QUFBQSx3QkFDa0QsS0FBS0MsS0FEdkQ7QUFBQSxVQUNDQyxDQURELGVBQ0NBLENBREQ7QUFBQSxVQUNJQyxDQURKLGVBQ0lBLENBREo7QUFBQSxVQUNPQyxRQURQLGVBQ09BLFFBRFA7QUFBQSxVQUNpQkMsS0FEakIsZUFDaUJBLEtBRGpCO0FBQUEsVUFDd0JDLFdBRHhCLGVBQ3dCQSxXQUR4QjtBQUFBLFVBQ3dDTCxLQUR4Qzs7QUFHUDtBQUFBO0FBQ0U7QUFDQTtBQUFLLFVBQUEsS0FBSyxvQkFBT0wsTUFBTSxDQUFDQyxJQUFkLE1BQXVCUSxLQUF2QjtBQUE4QkUsWUFBQUEsSUFBSSxFQUFFTCxDQUFwQztBQUF1Q00sWUFBQUEsR0FBRyxFQUFFTDtBQUE1QztBQUFWLFdBQStERixLQUEvRCxHQUNHRyxRQURIO0FBRkY7QUFNRDs7OztFQVYwQ0ssS0FBSyxDQUFDQyxTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGl0ZW06IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIH0sXG59O1xuXG50eXBlIFByb3BzID0ge1xuICAvLyBJbmplY3RlZCBieSBIdG1sT3ZlcmxheVxuICB4PzogbnVtYmVyO1xuICB5PzogbnVtYmVyO1xuXG4gIC8vIFVzZXIgcHJvdmlkZWRcbiAgY29vcmRpbmF0ZXM6IG51bWJlcltdO1xuICBjaGlsZHJlbjogYW55O1xuICBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIdG1sT3ZlcmxheUl0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHM+IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgeCwgeSwgY2hpbGRyZW4sIHN0eWxlLCBjb29yZGluYXRlcywgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICA8ZGl2IHN0eWxlPXt7IC4uLnN0eWxlcy5pdGVtLCAuLi5zdHlsZSwgbGVmdDogeCwgdG9wOiB5IH19IHsuLi5wcm9wc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/overlays/dist/html-overlay.js b/modules/overlays/dist/html-overlay.js new file mode 100644 index 000000000..2492cb20f --- /dev/null +++ b/modules/overlays/dist/html-overlay.js @@ -0,0 +1,160 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var styles = { + mainContainer: { + width: '100%', + height: '100%', + position: 'absolute', + pointerEvents: 'none' + } +}; + +var HtmlOverlay = /*#__PURE__*/function (_React$Component) { + _inherits(HtmlOverlay, _React$Component); + + var _super = _createSuper(HtmlOverlay); + + function HtmlOverlay() { + _classCallCheck(this, HtmlOverlay); + + return _super.apply(this, arguments); + } + + _createClass(HtmlOverlay, [{ + key: "getItems", + // Override this to provide your items + value: function getItems() { + var children = this.props.children; + + if (children) { + return Array.isArray(children) ? children : [children]; + } + + return []; + } + }, { + key: "getCoords", + value: function getCoords(coordinates) { + var pos = this.props.viewport.project(coordinates); + if (!pos) return [-1, -1]; + return pos; + } + }, { + key: "inView", + value: function inView(_ref) { + var _ref2 = _slicedToArray(_ref, 2), + x = _ref2[0], + y = _ref2[1]; + + var _this$props$viewport = this.props.viewport, + width = _this$props$viewport.width, + height = _this$props$viewport.height; + return !(x < 0 || y < 0 || x > width || y > height); + } + }, { + key: "scaleWithZoom", + value: function scaleWithZoom(n) { + var zoom = this.props.viewport.zoom; + return n / Math.pow(2, 20 - zoom); + } + }, { + key: "breakpointWithZoom", + value: function breakpointWithZoom(threshold, a, b) { + var zoom = this.props.viewport.zoom; + return zoom > threshold ? a : b; + } + }, { + key: "getViewport", + value: function getViewport() { + return this.props.viewport; + } + }, { + key: "getZoom", + value: function getZoom() { + return this.props.viewport.zoom; + } + }, { + key: "render", + value: function render() { + var _this = this; + + var _this$props$zIndex = this.props.zIndex, + zIndex = _this$props$zIndex === void 0 ? 1 : _this$props$zIndex; + var style = Object.assign({ + zIndex: zIndex + }, styles.mainContainer); + var renderItems = []; + this.getItems().filter(Boolean).forEach(function (item, index) { + var _this$getCoords = _this.getCoords(item.props.coordinates), + _this$getCoords2 = _slicedToArray(_this$getCoords, 2), + x = _this$getCoords2[0], + y = _this$getCoords2[1]; + + if (_this.inView([x, y])) { + var key = item.key === null || item.key === undefined ? index : item.key; + renderItems.push(React.cloneElement(item, { + x: x, + y: y, + key: key + })); + } + }); + return /*#__PURE__*/React.createElement("div", { + style: style + }, renderItems); + } + }]); + + return HtmlOverlay; +}(React.Component); // This is needed for Deck.gl 8.0+ +//@ts-ignore + + +exports["default"] = HtmlOverlay; +HtmlOverlay.deckGLViewProps = true; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLW92ZXJsYXkudHN4Il0sIm5hbWVzIjpbInN0eWxlcyIsIm1haW5Db250YWluZXIiLCJ3aWR0aCIsImhlaWdodCIsInBvc2l0aW9uIiwicG9pbnRlckV2ZW50cyIsIkh0bWxPdmVybGF5IiwiY2hpbGRyZW4iLCJwcm9wcyIsIkFycmF5IiwiaXNBcnJheSIsImNvb3JkaW5hdGVzIiwicG9zIiwidmlld3BvcnQiLCJwcm9qZWN0IiwieCIsInkiLCJuIiwiem9vbSIsIk1hdGgiLCJwb3ciLCJ0aHJlc2hvbGQiLCJhIiwiYiIsInpJbmRleCIsInN0eWxlIiwiT2JqZWN0IiwiYXNzaWduIiwicmVuZGVySXRlbXMiLCJnZXRJdGVtcyIsImZpbHRlciIsIkJvb2xlYW4iLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4IiwiZ2V0Q29vcmRzIiwiaW5WaWV3Iiwia2V5IiwidW5kZWZpbmVkIiwicHVzaCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiQ29tcG9uZW50IiwiZGVja0dMVmlld1Byb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsYUFBYSxFQUFFO0FBQ2JDLElBQUFBLEtBQUssRUFBRSxNQURNO0FBRWJDLElBQUFBLE1BQU0sRUFBRSxNQUZLO0FBR2JDLElBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLElBQUFBLGFBQWEsRUFBRTtBQUpGO0FBREYsQ0FBZjs7SUFTcUJDLFc7Ozs7Ozs7Ozs7Ozs7QUFJbkI7K0JBQ3VCO0FBQUEsVUFDYkMsUUFEYSxHQUNBLEtBQUtDLEtBREwsQ0FDYkQsUUFEYTs7QUFFckIsVUFBSUEsUUFBSixFQUFjO0FBQ1osZUFBT0UsS0FBSyxDQUFDQyxPQUFOLENBQWNILFFBQWQsSUFBMEJBLFFBQTFCLEdBQXFDLENBQUNBLFFBQUQsQ0FBNUM7QUFDRDs7QUFDRCxhQUFPLEVBQVA7QUFD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ZWFjdCc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgbWFpbkNvbnRhaW5lcjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHRtbE92ZXJsYXkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIHsgdmlld3BvcnQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyB6SW5kZXg/OiBudW1iZXI7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH0sXG4gIGFueVxuPiB7XG4gIC8vIE92ZXJyaWRlIHRoaXMgdG8gcHJvdmlkZSB5b3VyIGl0ZW1zXG4gIGdldEl0ZW1zKCk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbiA6IFtjaGlsZHJlbl07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldENvb3Jkcyhjb29yZGluYXRlczogbnVtYmVyW10pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLnByb3BzLnZpZXdwb3J0LnByb2plY3QoY29vcmRpbmF0ZXMpO1xuICAgIGlmICghcG9zKSByZXR1cm4gWy0xLCAtMV07XG4gICAgcmV0dXJuIHBvcztcbiAgfVxuXG4gIGluVmlldyhbeCwgeV06IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLnByb3BzLnZpZXdwb3J0O1xuICAgIHJldHVybiAhKHggPCAwIHx8IHkgPCAwIHx8IHggPiB3aWR0aCB8fCB5ID4gaGVpZ2h0KTtcbiAgfVxuXG4gIHNjYWxlV2l0aFpvb20objogbnVtYmVyKSB7XG4gICAgY29uc3QgeyB6b29tIH0gPSB0aGlzLnByb3BzLnZpZXdwb3J0O1xuICAgIHJldHVybiBuIC8gTWF0aC5wb3coMiwgMjAgLSB6b29tKTtcbiAgfVxuXG4gIGJyZWFrcG9pbnRXaXRoWm9vbSh0aHJlc2hvbGQ6IG51bWJlciwgYTogYW55LCBiOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHsgem9vbSB9ID0gdGhpcy5wcm9wcy52aWV3cG9ydDtcbiAgICByZXR1cm4gem9vbSA+IHRocmVzaG9sZCA/IGEgOiBiO1xuICB9XG5cbiAgZ2V0Vmlld3BvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudmlld3BvcnQ7XG4gIH1cblxuICBnZXRab29tKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZpZXdwb3J0Lnpvb207XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB6SW5kZXggPSAxIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHN0eWxlID0gT2JqZWN0LmFzc2lnbih7IHpJbmRleCB9IGFzIGFueSwgc3R5bGVzLm1haW5Db250YWluZXIpO1xuXG4gICAgY29uc3QgcmVuZGVySXRlbXMgPSBbXTtcbiAgICB0aGlzLmdldEl0ZW1zKClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBbeCwgeV0gPSB0aGlzLmdldENvb3JkcyhpdGVtLnByb3BzLmNvb3JkaW5hdGVzKTtcbiAgICAgICAgaWYgKHRoaXMuaW5WaWV3KFt4LCB5XSkpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBpdGVtLmtleSA9PT0gbnVsbCB8fCBpdGVtLmtleSA9PT0gdW5kZWZpbmVkID8gaW5kZXggOiBpdGVtLmtleTtcbiAgICAgICAgICByZW5kZXJJdGVtcy5wdXNoKFJlYWN0LmNsb25lRWxlbWVudChpdGVtLCB7IHgsIHksIGtleSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e3N0eWxlfT57cmVuZGVySXRlbXN9PC9kaXY+O1xuICB9XG59XG5cbi8vIFRoaXMgaXMgbmVlZGVkIGZvciBEZWNrLmdsIDguMCtcbi8vQHRzLWlnbm9yZVxuSHRtbE92ZXJsYXkuZGVja0dMVmlld1Byb3BzID0gdHJ1ZTtcbiJdfQ== \ No newline at end of file diff --git a/modules/overlays/dist/html-tooltip-overlay.js b/modules/overlays/dist/html-tooltip-overlay.js new file mode 100644 index 000000000..a013de0e7 --- /dev/null +++ b/modules/overlays/dist/html-tooltip-overlay.js @@ -0,0 +1,142 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +var _htmlOverlayItem = _interopRequireDefault(require("./html-overlay-item")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 styles = { + tooltip: { + transform: 'translate(-50%,-100%)', + backgroundColor: 'rgba(0, 0, 0, 0.3)', + padding: '4px 8px', + borderRadius: 8, + color: 'white' + } +}; +var SHOW_TOOLTIP_TIMEOUT = 250; + +var HtmlTooltipOverlay = /*#__PURE__*/function (_HtmlOverlay) { + _inherits(HtmlTooltipOverlay, _HtmlOverlay); + + var _super = _createSuper(HtmlTooltipOverlay); + + function HtmlTooltipOverlay(props) { + var _this; + + _classCallCheck(this, HtmlTooltipOverlay); + + _this = _super.call(this, props); + + _defineProperty(_assertThisInitialized(_this), "timeoutID", null); + + _defineProperty(_assertThisInitialized(_this), "state", void 0); + + _this.state = { + visible: false, + pickingInfo: null + }; + return _this; + } + + _createClass(HtmlTooltipOverlay, [{ + key: "componentWillMount", + value: function componentWillMount() { + var _this2 = this; + + this.context.nebula.queryObjectEvents.on('pick', function (_ref) { + var event = _ref.event, + pickingInfo = _ref.pickingInfo; + + if (_this2.timeoutID !== null) { + window.clearTimeout(_this2.timeoutID); + } + + _this2.timeoutID = null; + + if (pickingInfo && _this2._getTooltip(pickingInfo)) { + _this2.timeoutID = window.setTimeout(function () { + _this2.setState({ + visible: true, + pickingInfo: pickingInfo + }); + }, SHOW_TOOLTIP_TIMEOUT); + } else { + _this2.setState({ + visible: false + }); + } + }); + } + }, { + key: "_getTooltip", + value: function _getTooltip(pickingInfo) { + return pickingInfo.object.style.tooltip; + } + }, { + key: "_makeOverlay", + value: function _makeOverlay() { + var pickingInfo = this.state.pickingInfo; + + if (pickingInfo) { + return /*#__PURE__*/React.createElement(_htmlOverlayItem["default"], { + key: 0, + coordinates: pickingInfo.lngLat, + style: styles.tooltip + }, this._getTooltip(pickingInfo)); + } + + return null; + } + }, { + key: "getItems", + value: function getItems() { + if (this.state.visible) { + return [this._makeOverlay()]; + } + + return []; + } + }]); + + return HtmlTooltipOverlay; +}(_htmlOverlay["default"]); + +exports["default"] = HtmlTooltipOverlay; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9odG1sLXRvb2x0aXAtb3ZlcmxheS50c3giXSwibmFtZXMiOlsic3R5bGVzIiwidG9vbHRpcCIsInRyYW5zZm9ybSIsImJhY2tncm91bmRDb2xvciIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJjb2xvciIsIlNIT1dfVE9PTFRJUF9USU1FT1VUIiwiSHRtbFRvb2x0aXBPdmVybGF5IiwicHJvcHMiLCJzdGF0ZSIsInZpc2libGUiLCJwaWNraW5nSW5mbyIsImNvbnRleHQiLCJuZWJ1bGEiLCJxdWVyeU9iamVjdEV2ZW50cyIsIm9uIiwiZXZlbnQiLCJ0aW1lb3V0SUQiLCJ3aW5kb3ciLCJjbGVhclRpbWVvdXQiLCJfZ2V0VG9vbHRpcCIsInNldFRpbWVvdXQiLCJzZXRTdGF0ZSIsIm9iamVjdCIsInN0eWxlIiwibG5nTGF0IiwiX21ha2VPdmVybGF5IiwiSHRtbE92ZXJsYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFNQSxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1BDLElBQUFBLFNBQVMsRUFBRSx1QkFESjtBQUVQQyxJQUFBQSxlQUFlLEVBQUUsb0JBRlY7QUFHUEMsSUFBQUEsT0FBTyxFQUFFLFNBSEY7QUFJUEMsSUFBQUEsWUFBWSxFQUFFLENBSlA7QUFLUEMsSUFBQUEsS0FBSyxFQUFFO0FBTEE7QUFESSxDQUFmO0FBVUEsSUFBTUMsb0JBQW9CLEdBQUcsR0FBN0I7O0lBRXFCQyxrQjs7Ozs7QUFDbkIsOEJBQVlDLEtBQVosRUFBd0I7QUFBQTs7QUFBQTs7QUFDdEIsOEJBQU1BLEtBQU47O0FBRHNCLGdFQXNCZSxJQXRCZjs7QUFBQTs7QUFFdEIsVUFBS0MsS0FBTCxHQUFhO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxXQUFXLEVBQUU7QUFBL0IsS0FBYjtBQUZzQjtBQUd2Qjs7Ozt5Q0FFb0I7QUFBQTs7QUFDbkIsV0FBS0MsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxpQkFBcEIsQ0FBc0NDLEVBQXRDLENBQXlDLE1BQXpDLEVBQWlELGdCQUE0QjtBQUFBLFlBQXpCQyxLQUF5QixRQUF6QkEsS0FBeUI7QUFBQSxZQUFsQkwsV0FBa0IsUUFBbEJBLFdBQWtCOztBQUMzRSxZQUFJLE1BQUksQ0FBQ00sU0FBTCxLQUFtQixJQUF2QixFQUE2QjtBQUMzQkMsVUFBQUEsTUFBTSxDQUFDQyxZQUFQLENBQW9CLE1BQUksQ0FBQ0YsU0FBekI7QUFDRDs7QUFDRCxRQUFBLE1BQUksQ0FBQ0EsU0FBTCxHQUFpQixJQUFqQjs7QUFFQSxZQUFJTixXQUFXLElBQUksTUFBSSxDQUFDUyxXQUFMLENBQWlCVCxXQUFqQixDQUFuQixFQUFrRDtBQUNoRCxVQUFBLE1BQUksQ0FBQ00sU0FBTCxHQUFpQkMsTUFBTSxDQUFDRyxVQUFQLENBQWtCLFlBQU07QUFDdkMsWUFBQSxNQUFJLENBQUNDLFFBQUwsQ0FBYztBQUFFWixjQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQkMsY0FBQUEsV0FBVyxFQUFYQTtBQUFqQixhQUFkO0FBQ0QsV0FGZ0IsRUFFZEwsb0JBRmMsQ0FBakI7QUFHRCxTQUpELE1BSU87QUFDTCxVQUFBLE1BQUksQ0FBQ2dCLFFBQUwsQ0FBYztBQUFFWixZQUFBQSxPQUFPLEVBQUU7QUFBWCxXQUFkO0FBQ0Q7QUFDRixPQWJEO0FBY0Q7OztnQ0FLV0MsVyxFQUEwQztBQUNwRCxhQUFPQSxXQUFXLENBQUNZLE1BQVosQ0FBbUJDLEtBQW5CLENBQXlCeEIsT0FBaEM7QUFDRDs7O21DQUVjO0FBQUEsVUFDTFcsV0FESyxHQUNXLEtBQUtGLEtBRGhCLENBQ0xFLFdBREs7O0FBR2IsVUFBSUEsV0FBSixFQUFpQjtBQUNmLDRCQUNFLG9CQUFDLDJCQUFEO0FBQWlCLFVBQUEsR0FBRyxFQUFFLENBQXRCO0FBQXlCLFVBQUEsV0FBVyxFQUFFQSxXQUFXLENBQUNjLE1BQWxEO0FBQTBELFVBQUEsS0FBSyxFQUFFMUIsTUFBTSxDQUFDQztBQUF4RSxXQUNHLEtBQUtvQixXQUFMLENBQWlCVCxXQUFqQixDQURILENBREY7QUFLRDs7QUFFRCxhQUFPLElBQVA7QUFDRDs7OytCQUV5RDtBQUN4RCxVQUFJLEtBQUtGLEtBQUwsQ0FBV0MsT0FBZixFQUF3QjtBQUN0QixlQUFPLENBQUMsS0FBS2dCLFlBQUwsRUFBRCxDQUFQO0FBQ0Q7O0FBRUQsYUFBTyxFQUFQO0FBQ0Q7Ozs7RUFsRDZDQyx1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEh0bWxPdmVybGF5IGZyb20gJy4vaHRtbC1vdmVybGF5JztcbmltcG9ydCBIdG1sT3ZlcmxheUl0ZW0gZnJvbSAnLi9odG1sLW92ZXJsYXktaXRlbSc7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHBpY2tpbmdJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgdG9vbHRpcDoge1xuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgtNTAlLC0xMDAlKScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjMpJyxcbiAgICBwYWRkaW5nOiAnNHB4IDhweCcsXG4gICAgYm9yZGVyUmFkaXVzOiA4LFxuICAgIGNvbG9yOiAnd2hpdGUnLFxuICB9LFxufTtcblxuY29uc3QgU0hPV19UT09MVElQX1RJTUVPVVQgPSAyNTA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0bWxUb29sdGlwT3ZlcmxheSBleHRlbmRzIEh0bWxPdmVybGF5IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0geyB2aXNpYmxlOiBmYWxzZSwgcGlja2luZ0luZm86IG51bGwgfTtcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgICB0aGlzLmNvbnRleHQubmVidWxhLnF1ZXJ5T2JqZWN0RXZlbnRzLm9uKCdwaWNrJywgKHsgZXZlbnQsIHBpY2tpbmdJbmZvIH0pID0+IHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCAhPT0gbnVsbCkge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dElEKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGltZW91dElEID0gbnVsbDtcblxuICAgICAgaWYgKHBpY2tpbmdJbmZvICYmIHRoaXMuX2dldFRvb2x0aXAocGlja2luZ0luZm8pKSB7XG4gICAgICAgIHRoaXMudGltZW91dElEID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyB2aXNpYmxlOiB0cnVlLCBwaWNraW5nSW5mbyB9KTtcbiAgICAgICAgfSwgU0hPV19UT09MVElQX1RJTUVPVVQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZpc2libGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdGltZW91dElEOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgc3RhdGU6IFN0YXRlO1xuXG4gIF9nZXRUb29sdGlwKHBpY2tpbmdJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGlja2luZ0luZm8ub2JqZWN0LnN0eWxlLnRvb2x0aXA7XG4gIH1cblxuICBfbWFrZU92ZXJsYXkoKSB7XG4gICAgY29uc3QgeyBwaWNraW5nSW5mbyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChwaWNraW5nSW5mbykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEh0bWxPdmVybGF5SXRlbSBrZXk9ezB9IGNvb3JkaW5hdGVzPXtwaWNraW5nSW5mby5sbmdMYXR9IHN0eWxlPXtzdHlsZXMudG9vbHRpcH0+XG4gICAgICAgICAge3RoaXMuX2dldFRvb2x0aXAocGlja2luZ0luZm8pfVxuICAgICAgICA8L0h0bWxPdmVybGF5SXRlbT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRJdGVtcygpOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh0aGlzLnN0YXRlLnZpc2libGUpIHtcbiAgICAgIHJldHVybiBbdGhpcy5fbWFrZU92ZXJsYXkoKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0= \ No newline at end of file diff --git a/modules/overlays/dist/index.js b/modules/overlays/dist/index.js new file mode 100644 index 000000000..cdc5c6a8e --- /dev/null +++ b/modules/overlays/dist/index.js @@ -0,0 +1,40 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "HtmlOverlay", { + enumerable: true, + get: function get() { + return _htmlOverlay["default"]; + } +}); +Object.defineProperty(exports, "HtmlOverlayItem", { + enumerable: true, + get: function get() { + return _htmlOverlayItem["default"]; + } +}); +Object.defineProperty(exports, "HtmlClusterOverlay", { + enumerable: true, + get: function get() { + return _htmlClusterOverlay["default"]; + } +}); +Object.defineProperty(exports, "HtmlTooltipOverlay", { + enumerable: true, + get: function get() { + return _htmlTooltipOverlay["default"]; + } +}); + +var _htmlOverlay = _interopRequireDefault(require("./html-overlay")); + +var _htmlOverlayItem = _interopRequireDefault(require("./html-overlay-item")); + +var _htmlClusterOverlay = _interopRequireDefault(require("./html-cluster-overlay")); + +var _htmlTooltipOverlay = _interopRequireDefault(require("./html-tooltip-overlay")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcmVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSHRtbE92ZXJsYXkgfSBmcm9tICcuL2h0bWwtb3ZlcmxheSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEh0bWxPdmVybGF5SXRlbSB9IGZyb20gJy4vaHRtbC1vdmVybGF5LWl0ZW0nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBIdG1sQ2x1c3Rlck92ZXJsYXkgfSBmcm9tICcuL2h0bWwtY2x1c3Rlci1vdmVybGF5JztcblxuLy8gSGVscGVyXG5leHBvcnQgeyBkZWZhdWx0IGFzIEh0bWxUb29sdGlwT3ZlcmxheSB9IGZyb20gJy4vaHRtbC10b29sdGlwLW92ZXJsYXknO1xuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/constants.js b/modules/react-map-gl-draw/dist-es6/constants.js new file mode 100644 index 000000000..d97143bf0 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/constants.js @@ -0,0 +1,77 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EDIT_TYPE = exports.ELEMENT_TYPE = exports.GUIDE_TYPE = exports.RENDER_STATE = exports.RENDER_TYPE = exports.SHAPE = exports.GEOJSON_TYPE = void 0; +var GEOJSON_TYPE; +exports.GEOJSON_TYPE = GEOJSON_TYPE; + +(function (GEOJSON_TYPE) { + GEOJSON_TYPE["POINT"] = "Point"; + GEOJSON_TYPE["LINE_STRING"] = "LineString"; + GEOJSON_TYPE["POLYGON"] = "Polygon"; +})(GEOJSON_TYPE || (exports.GEOJSON_TYPE = GEOJSON_TYPE = {})); + +var SHAPE; +exports.SHAPE = SHAPE; + +(function (SHAPE) { + SHAPE["POINT"] = "Point"; + SHAPE["LINE_STRING"] = "LineString"; + SHAPE["POLYGON"] = "Polygon"; + SHAPE["RECTANGLE"] = "Rectangle"; + SHAPE["CIRCLE"] = "Circle"; +})(SHAPE || (exports.SHAPE = SHAPE = {})); + +var RENDER_TYPE; +exports.RENDER_TYPE = RENDER_TYPE; + +(function (RENDER_TYPE) { + RENDER_TYPE["POINT"] = "Point"; + RENDER_TYPE["LINE_STRING"] = "LineString"; + RENDER_TYPE["POLYGON"] = "Polygon"; + RENDER_TYPE["RECTANGLE"] = "Rectangle"; +})(RENDER_TYPE || (exports.RENDER_TYPE = RENDER_TYPE = {})); + +var RENDER_STATE; +exports.RENDER_STATE = RENDER_STATE; + +(function (RENDER_STATE) { + RENDER_STATE["INACTIVE"] = "INACTIVE"; + RENDER_STATE["UNCOMMITTED"] = "UNCOMMITTED"; + RENDER_STATE["SELECTED"] = "SELECTED"; + RENDER_STATE["HOVERED"] = "HOVERED"; + RENDER_STATE["CLOSING"] = "CLOSING"; +})(RENDER_STATE || (exports.RENDER_STATE = RENDER_STATE = {})); + +var GUIDE_TYPE; +exports.GUIDE_TYPE = GUIDE_TYPE; + +(function (GUIDE_TYPE) { + GUIDE_TYPE["TENTATIVE"] = "tentative"; + GUIDE_TYPE["EDIT_HANDLE"] = "editHandle"; + GUIDE_TYPE["CURSOR_EDIT_HANDLE"] = "cursorEditHandle"; +})(GUIDE_TYPE || (exports.GUIDE_TYPE = GUIDE_TYPE = {})); + +var ELEMENT_TYPE; +exports.ELEMENT_TYPE = ELEMENT_TYPE; + +(function (ELEMENT_TYPE) { + ELEMENT_TYPE["FEATURE"] = "feature"; + ELEMENT_TYPE["FILL"] = "fill"; + ELEMENT_TYPE["SEGMENT"] = "segment"; + ELEMENT_TYPE["EDIT_HANDLE"] = "editHandle"; +})(ELEMENT_TYPE || (exports.ELEMENT_TYPE = ELEMENT_TYPE = {})); + +var EDIT_TYPE; +exports.EDIT_TYPE = EDIT_TYPE; + +(function (EDIT_TYPE) { + EDIT_TYPE["ADD_FEATURE"] = "addFeature"; + EDIT_TYPE["ADD_POSITION"] = "addPosition"; + EDIT_TYPE["REMOVE_POSITION"] = "removePosition"; + EDIT_TYPE["MOVE_POSITION"] = "movePosition"; + EDIT_TYPE["FINISH_MOVE_POSITION"] = "finishMovePosition"; +})(EDIT_TYPE || (exports.EDIT_TYPE = EDIT_TYPE = {})); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiR0VPSlNPTl9UWVBFIiwiU0hBUEUiLCJSRU5ERVJfVFlQRSIsIlJFTkRFUl9TVEFURSIsIkdVSURFX1RZUEUiLCJFTEVNRU5UX1RZUEUiLCJFRElUX1RZUEUiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFZQSxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtHQUFBQSxZLDRCQUFBQSxZOztJQU1BQyxLOzs7V0FBQUEsSztBQUFBQSxFQUFBQSxLO0FBQUFBLEVBQUFBLEs7QUFBQUEsRUFBQUEsSztBQUFBQSxFQUFBQSxLO0FBQUFBLEVBQUFBLEs7R0FBQUEsSyxxQkFBQUEsSzs7SUFRQUMsVzs7O1dBQUFBLFc7QUFBQUEsRUFBQUEsVztBQUFBQSxFQUFBQSxXO0FBQUFBLEVBQUFBLFc7QUFBQUEsRUFBQUEsVztHQUFBQSxXLDJCQUFBQSxXOztJQU9BQyxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7R0FBQUEsWSw0QkFBQUEsWTs7SUFRQUMsVTs7O1dBQUFBLFU7QUFBQUEsRUFBQUEsVTtBQUFBQSxFQUFBQSxVO0FBQUFBLEVBQUFBLFU7R0FBQUEsVSwwQkFBQUEsVTs7SUFNQUMsWTs7O1dBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtHQUFBQSxZLDRCQUFBQSxZOztJQU9BQyxTOzs7V0FBQUEsUztBQUFBQSxFQUFBQSxTO0FBQUFBLEVBQUFBLFM7QUFBQUEsRUFBQUEsUztBQUFBQSxFQUFBQSxTO0FBQUFBLEVBQUFBLFM7R0FBQUEsUyx5QkFBQUEsUyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEdFT0pTT05fVFlQRSB7XG4gIFBPSU5UID0gJ1BvaW50JyxcbiAgTElORV9TVFJJTkcgPSAnTGluZVN0cmluZycsXG4gIFBPTFlHT04gPSAnUG9seWdvbicsXG59XG5cbmV4cG9ydCBlbnVtIFNIQVBFIHtcbiAgUE9JTlQgPSAnUG9pbnQnLFxuICBMSU5FX1NUUklORyA9ICdMaW5lU3RyaW5nJyxcbiAgUE9MWUdPTiA9ICdQb2x5Z29uJyxcbiAgUkVDVEFOR0xFID0gJ1JlY3RhbmdsZScsXG4gIENJUkNMRSA9ICdDaXJjbGUnLFxufVxuXG5leHBvcnQgZW51bSBSRU5ERVJfVFlQRSB7XG4gIFBPSU5UID0gJ1BvaW50JyxcbiAgTElORV9TVFJJTkcgPSAnTGluZVN0cmluZycsXG4gIFBPTFlHT04gPSAnUG9seWdvbicsXG4gIFJFQ1RBTkdMRSA9ICdSZWN0YW5nbGUnLFxufVxuXG5leHBvcnQgZW51bSBSRU5ERVJfU1RBVEUge1xuICBJTkFDVElWRSA9ICdJTkFDVElWRScsXG4gIFVOQ09NTUlUVEVEID0gJ1VOQ09NTUlUVEVEJyxcbiAgU0VMRUNURUQgPSAnU0VMRUNURUQnLFxuICBIT1ZFUkVEID0gJ0hPVkVSRUQnLFxuICBDTE9TSU5HID0gJ0NMT1NJTkcnLFxufVxuXG5leHBvcnQgZW51bSBHVUlERV9UWVBFIHtcbiAgVEVOVEFUSVZFID0gJ3RlbnRhdGl2ZScsXG4gIEVESVRfSEFORExFID0gJ2VkaXRIYW5kbGUnLFxuICBDVVJTT1JfRURJVF9IQU5ETEUgPSAnY3Vyc29yRWRpdEhhbmRsZScsXG59XG5cbmV4cG9ydCBlbnVtIEVMRU1FTlRfVFlQRSB7XG4gIEZFQVRVUkUgPSAnZmVhdHVyZScsXG4gIEZJTEwgPSAnZmlsbCcsXG4gIFNFR01FTlQgPSAnc2VnbWVudCcsXG4gIEVESVRfSEFORExFID0gJ2VkaXRIYW5kbGUnLFxufVxuXG5leHBvcnQgZW51bSBFRElUX1RZUEUge1xuICBBRERfRkVBVFVSRSA9ICdhZGRGZWF0dXJlJyxcbiAgQUREX1BPU0lUSU9OID0gJ2FkZFBvc2l0aW9uJyxcbiAgUkVNT1ZFX1BPU0lUSU9OID0gJ3JlbW92ZVBvc2l0aW9uJyxcbiAgTU9WRV9QT1NJVElPTiA9ICdtb3ZlUG9zaXRpb24nLFxuICBGSU5JU0hfTU9WRV9QT1NJVElPTiA9ICdmaW5pc2hNb3ZlUG9zaXRpb24nLFxufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/edit-modes/base-mode.js b/modules/react-map-gl-draw/dist-es6/edit-modes/base-mode.js new file mode 100644 index 000000000..3267831d0 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/edit-modes/base-mode.js @@ -0,0 +1,125 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _constants = require("../constants"); + +var _utils = require("./utils"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 BaseMode = /*#__PURE__*/function () { + function BaseMode() { + _classCallCheck(this, BaseMode); + + _defineProperty(this, "_tentativeFeature", void 0); + + _defineProperty(this, "_editHandles", void 0); + + this._tentativeFeature = null; + this._editHandles = null; + } + + _createClass(BaseMode, [{ + key: "handlePan", + value: function handlePan(event, props) {} + }, { + key: "handleClick", + value: function handleClick(event, props) {} + }, { + key: "handleDblClick", + value: function handleDblClick(event, props) {} + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) {} + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) {} + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) {} + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) {} + }, { + key: "getGuides", + value: function getGuides(props) { + return null; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + return []; + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) {} + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._tentativeFeature; + } + }, { + key: "getEditHandles", + value: function getEditHandles() { + return this._editHandles; + } + }, { + key: "setTentativeFeature", + value: function setTentativeFeature(feature) { + this._tentativeFeature = feature; + } + }, { + key: "getEditHandlesFromFeature", + value: function getEditHandlesFromFeature(feature, featureIndex) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } // @ts-ignore + + + return coordinates.map(function (coord, i) { + return { + type: 'Feature', + properties: { + // TODO deprecate renderType + renderType: feature.properties.renderType, + guideType: _constants.GUIDE_TYPE.EDIT_HANDLE, + editHandleType: 'existing', + featureIndex: featureIndex, + positionIndexes: [i] + }, + geometry: { + type: _constants.GEOJSON_TYPE.POINT, + coordinates: coord + } + }; + }); + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature(props, featureIndex) { + var data = props.data, + selectedIndexes = props.selectedIndexes; // @ts-ignore + + var features = data && data.features; + var selectedIndex = (0, _utils.isNumeric)(featureIndex) ? Number(featureIndex) : selectedIndexes && selectedIndexes[0]; + return features && features[selectedIndex]; + } + }]); + + return BaseMode; +}(); + +exports["default"] = BaseMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2Jhc2UtbW9kZS50cyJdLCJuYW1lcyI6WyJCYXNlTW9kZSIsIl90ZW50YXRpdmVGZWF0dXJlIiwiX2VkaXRIYW5kbGVzIiwiZXZlbnQiLCJwcm9wcyIsImZlYXR1cmUiLCJmZWF0dXJlSW5kZXgiLCJjb29yZGluYXRlcyIsIm1hcCIsImNvb3JkIiwiaSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwicmVuZGVyVHlwZSIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJFRElUX0hBTkRMRSIsImVkaXRIYW5kbGVUeXBlIiwicG9zaXRpb25JbmRleGVzIiwiZ2VvbWV0cnkiLCJHRU9KU09OX1RZUEUiLCJQT0lOVCIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJmZWF0dXJlcyIsInNlbGVjdGVkSW5kZXgiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFjQTs7QUFDQTs7Ozs7Ozs7OztJQUVxQkEsUTtBQUluQixzQkFBYztBQUFBOztBQUFBOztBQUFBOztBQUNaLFNBQUtDLGlCQUFMLEdBQXlCLElBQXpCO0FBQ0EsU0FBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNEOzs7OzhCQUVTQyxLLEVBQW1CQyxLLEVBQXFDLENBQUU7OztnQ0FFeERELEssRUFBbUJDLEssRUFBcUMsQ0FBRTs7O21DQUV2REQsSyxFQUFtQkMsSyxFQUFxQyxDQUFFOzs7c0NBRXZERCxLLEVBQXlCQyxLLEVBQXFDLENBQUU7Ozt3Q0FFOURELEssRUFBMkJDLEssRUFBcUMsQ0FBRTs7O3VDQUVuRUQsSyxFQUEwQkMsSyxFQUFxQyxDQUFFOzs7Z0NBRXhFRCxLLEVBQXNCQyxLLEVBQTJDLENBQUU7Ozs4QkFFckVBLEssRUFBZ0Y7QUFDeEYsYUFBTyxJQUFQO0FBQ0Q7OztnQ0FDV0EsSyxFQUFnRDtBQUMxRCxhQUFPLEVBQVA7QUFDRDs7O21DQUNjRCxLLEVBQXNCQyxLLEVBQTJDLENBQUU7OzswQ0FFNUQ7QUFDcEIsYUFBTyxLQUFLSCxpQkFBWjtBQUNEOzs7cUNBRWdCO0FBQ2YsYUFBTyxLQUFLQyxZQUFaO0FBQ0Q7Ozt3Q0FFbUJHLE8sRUFBa0I7QUFDcEMsV0FBS0osaUJBQUwsR0FBeUJJLE9BQXpCO0FBQ0Q7Ozs4Q0FFeUJBLE8sRUFBa0JDLFksRUFBeUM7QUFDbkYsVUFBTUMsV0FBVyxHQUFHLGtDQUFzQkYsT0FBdEIsQ0FBcEI7O0FBQ0EsVUFBSSxDQUFDRSxXQUFMLEVBQWtCO0FBQ2hCLGVBQU8sSUFBUDtBQUNELE9BSmtGLENBS25GOzs7QUFDQSxhQUFPQSxXQUFXLENBQUNDLEdBQVosQ0FBZ0IsVUFBQ0MsS0FBRCxFQUFRQyxDQUFSLEVBQWM7QUFDbkMsZUFBTztBQUNMQyxVQUFBQSxJQUFJLEVBQUUsU0FERDtBQUVMQyxVQUFBQSxVQUFVLEVBQUU7QUFDVjtBQUNBQyxZQUFBQSxVQUFVLEVBQUVSLE9BQU8sQ0FBQ08sVUFBUixDQUFtQkMsVUFGckI7QUFHVkMsWUFBQUEsU0FBUyxFQUFFQyxzQkFBV0MsV0FIWjtBQUlWQyxZQUFBQSxjQUFjLEVBQUUsVUFKTjtBQUtWWCxZQUFBQSxZQUFZLEVBQVpBLFlBTFU7QUFNVlksWUFBQUEsZUFBZSxFQUFFLENBQUNSLENBQUQ7QUFOUCxXQUZQO0FBVUxTLFVBQUFBLFFBQVEsRUFBRTtBQUNSUixZQUFBQSxJQUFJLEVBQUVTLHdCQUFhQyxLQURYO0FBRVJkLFlBQUFBLFdBQVcsRUFBRUU7QUFGTDtBQVZMLFNBQVA7QUFlRCxPQWhCTSxDQUFQO0FBaUJEOzs7dUNBRWtCTCxLLEVBQXFDRSxZLEVBQXlDO0FBQUEsVUFDdkZnQixJQUR1RixHQUM3RGxCLEtBRDZELENBQ3ZGa0IsSUFEdUY7QUFBQSxVQUNqRkMsZUFEaUYsR0FDN0RuQixLQUQ2RCxDQUNqRm1CLGVBRGlGLEVBRS9GOztBQUNBLFVBQU1DLFFBQVEsR0FBR0YsSUFBSSxJQUFJQSxJQUFJLENBQUNFLFFBQTlCO0FBRUEsVUFBTUMsYUFBYSxHQUFHLHNCQUFVbkIsWUFBVixJQUNsQm9CLE1BQU0sQ0FBQ3BCLFlBQUQsQ0FEWSxHQUVsQmlCLGVBQWUsSUFBSUEsZUFBZSxDQUFDLENBQUQsQ0FGdEM7QUFJQSxhQUFPQyxRQUFRLElBQUlBLFFBQVEsQ0FBQ0MsYUFBRCxDQUEzQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWRpdE1vZGUsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBUb29sdGlwLFxuICBEcmFnZ2luZ0V2ZW50LFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBHRU9KU09OX1RZUEUsIEdVSURFX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RmVhdHVyZUNvb3JkaW5hdGVzLCBpc051bWVyaWMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZU1vZGUgaW1wbGVtZW50cyBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbj4ge1xuICBfdGVudGF0aXZlRmVhdHVyZTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9lZGl0SGFuZGxlczogRmVhdHVyZVtdIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl90ZW50YXRpdmVGZWF0dXJlID0gbnVsbDtcbiAgICB0aGlzLl9lZGl0SGFuZGxlcyA9IG51bGw7XG4gIH1cblxuICBoYW5kbGVQYW4oZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7fVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge31cblxuICBoYW5kbGVEYmxDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7fVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7fVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBnZXRUZW50YXRpdmVGZWF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRIYW5kbGVzO1xuICB9XG5cbiAgc2V0VGVudGF0aXZlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgdGhpcy5fdGVudGF0aXZlRmVhdHVyZSA9IGZlYXR1cmU7XG4gIH1cblxuICBnZXRFZGl0SGFuZGxlc0Zyb21GZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUsIGZlYXR1cmVJbmRleDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmUpO1xuICAgIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzLm1hcCgoY29vcmQsIGkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIHJlbmRlclR5cGVcbiAgICAgICAgICByZW5kZXJUeXBlOiBmZWF0dXJlLnByb3BlcnRpZXMucmVuZGVyVHlwZSxcbiAgICAgICAgICBndWlkZVR5cGU6IEdVSURFX1RZUEUuRURJVF9IQU5ETEUsXG4gICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgICAgZmVhdHVyZUluZGV4LFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2ldLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6IEdFT0pTT05fVFlQRS5QT0lOVCxcbiAgICAgICAgICBjb29yZGluYXRlczogY29vcmQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+LCBmZWF0dXJlSW5kZXg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB7IGRhdGEsIHNlbGVjdGVkSW5kZXhlcyB9ID0gcHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGZlYXR1cmVzID0gZGF0YSAmJiBkYXRhLmZlYXR1cmVzO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGlzTnVtZXJpYyhmZWF0dXJlSW5kZXgpXG4gICAgICA/IE51bWJlcihmZWF0dXJlSW5kZXgpXG4gICAgICA6IHNlbGVjdGVkSW5kZXhlcyAmJiBzZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICByZXR1cm4gZmVhdHVyZXMgJiYgZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/edit-modes/editing-mode.js b/modules/react-map-gl-draw/dist-es6/edit-modes/editing-mode.js new file mode 100644 index 000000000..b948863e6 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/edit-modes/editing-mode.js @@ -0,0 +1,366 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _editModes = require("@nebula.gl/edit-modes"); + +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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var EditingMode = /*#__PURE__*/function (_BaseMode) { + _inherits(EditingMode, _BaseMode); + + var _super = _createSuper(EditingMode); + + function EditingMode() { + _classCallCheck(this, EditingMode); + + return _super.apply(this, arguments); + } + + _createClass(EditingMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var picked = event.picks && event.picks[0]; + var selectedFeatureIndex = props.selectedIndexes && props.selectedIndexes[0]; // @ts-ignore + + if (!picked || !picked.object || picked.featureIndex !== selectedFeatureIndex) { + return; + } // @ts-ignore + + + var objectType = picked.type, + featureIndex = picked.featureIndex, + index = picked.index; + var feature = this.getSelectedFeature(props, featureIndex); + + if (feature && (feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON || feature.geometry.type === _constants.GEOJSON_TYPE.LINE_STRING) && objectType === _constants.ELEMENT_TYPE.SEGMENT) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return; + } // @ts-ignore + + + var insertIndex = (index + 1) % coordinates.length; + var positionIndexes = feature.geometry.type === _constants.SHAPE.POLYGON ? [0, insertIndex] : [insertIndex]; + + var insertMapCoords = this._getPointOnSegment(feature, picked, event.mapCoords); + + var updatedData = new _editModes.ImmutableFeatureCollection(props.data) // @ts-ignore + .addPosition(featureIndex, positionIndexes, insertMapCoords).getObject(); + props.onEdit({ + editType: _constants.EDIT_TYPE.ADD_POSITION, + updatedData: updatedData, + editContext: [{ + featureIndex: featureIndex, + editHandleIndex: insertIndex, + // @ts-ignore + screenCoords: props.viewport && props.viewport.project(insertMapCoords), + mapCoords: insertMapCoords + }] + }); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + // replace point + var picked = event.picks && event.picks[0]; // @ts-ignore + + if (!picked || !picked.Object || !(0, _utils.isNumeric)(picked.featureIndex)) { + return; + } + + var pickedObject = picked.object; + + switch (pickedObject.type) { + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + this._handleDragging(event, props); + + break; + + default: + } + } + }, { + key: "_handleDragging", + value: function _handleDragging(event, props) { + var onEdit = props.onEdit; // @ts-ignore + + var selectedFeature = this.getSelectedFeature(props); // nothing clicked + // @ts-ignore + + var isDragging = event.isDragging, + pointerDownPicks = event.pointerDownPicks, + screenCoords = event.screenCoords; + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clicked = pointerDownPicks && pointerDownPicks[0]; // @ts-ignore + + if (!clicked || !clicked.object || !(0, _utils.isNumeric)(clicked.featureIndex)) { + return; + } // @ts-ignore + + + var objectType = clicked.type, + editHandleIndex = clicked.index; // not dragging + + var updatedData = null; + var editType = isDragging ? _constants.EDIT_TYPE.MOVE_POSITION : _constants.EDIT_TYPE.FINISH_MOVE_POSITION; + + switch (objectType) { + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + case _constants.ELEMENT_TYPE.SEGMENT: + if (!props.featuresDraggable) { + break; + } // dragging feature + + + var dx = screenCoords[0] - lastPointerMoveEvent.screenCoords[0]; + var dy = screenCoords[1] - lastPointerMoveEvent.screenCoords[1]; + updatedData = this._updateFeature(props, 'feature', { + dx: dx, + dy: dy + }); + onEdit({ + editType: editType, + updatedData: updatedData, + editContext: null + }); + break; + + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + // dragging editHandle + // dragging rectangle or other shapes + var updateType = selectedFeature.properties.shape === _constants.SHAPE.RECTANGLE ? 'rectangle' : 'editHandle'; + updatedData = this._updateFeature(props, updateType, { + editHandleIndex: editHandleIndex, + mapCoords: event.mapCoords + }); + onEdit({ + editType: editType, + updatedData: updatedData, + editContext: null + }); + break; + + default: + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + // no selected feature + // @ts-ignore + var selectedFeature = this.getSelectedFeature(props); + + if (!selectedFeature) { + return; + } // @ts-ignore + + + if (!event.isDragging) { + return; + } + + this._handleDragging(event, props); + } // TODO - refactor + + }, { + key: "_updateFeature", + value: function _updateFeature(props, type) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var data = props.data, + selectedIndexes = props.selectedIndexes, + viewport = props.viewport; + var featureIndex = selectedIndexes && selectedIndexes[0]; + var feature = this.getSelectedFeature(props, featureIndex); + var geometry = null; + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + var newCoordinates = _toConsumableArray(coordinates); + + switch (type) { + case 'editHandle': + var positionIndexes = feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [0, options.editHandleIndex] : [options.editHandleIndex]; + return new _editModes.ImmutableFeatureCollection(data).replacePosition(featureIndex, positionIndexes, options.mapCoords).getObject(); + + case 'feature': + var dx = options.dx, + dy = options.dy; // @ts-ignore + + newCoordinates = newCoordinates.map(function (mapCoords) { + // @ts-ignore + var pixels = viewport && viewport.project(mapCoords); + + if (pixels) { + pixels[0] += dx; + pixels[1] += dy; + return viewport && viewport.unproject(pixels); + } + + return null; + }).filter(Boolean); + geometry = { + type: feature.geometry.type, + coordinates: feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [newCoordinates] : feature.geometry.type === _constants.GEOJSON_TYPE.POINT ? newCoordinates[0] : newCoordinates + }; + return new _editModes.ImmutableFeatureCollection(data).replaceGeometry(featureIndex, geometry).getObject(); + + case 'rectangle': + // moved editHandleIndex and destination mapCoords + newCoordinates = (0, _utils.updateRectanglePosition)( // @ts-ignore + feature, options.editHandleIndex, options.mapCoords); + geometry = { + type: _constants.GEOJSON_TYPE.POLYGON, + coordinates: newCoordinates + }; + return new _editModes.ImmutableFeatureCollection(data).replaceGeometry(featureIndex, geometry).getObject(); + + default: + return data && new _editModes.ImmutableFeatureCollection(data).getObject(); + } + } + }, { + key: "_getPointOnSegment", + value: function _getPointOnSegment(feature, picked, pickedMapCoords) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + var srcVertexIndex = picked.index; + var targetVertexIndex = picked.index + 1; + return (0, _utils.findClosestPointOnLineSegment)( // @ts-ignore + coordinates[srcVertexIndex], coordinates[targetVertexIndex], pickedMapCoords); + } + }, { + key: "_getCursorEditHandle", + value: function _getCursorEditHandle(event, feature) { + // event can be null when the user has not interacted with the map whatsoever + // and therefore props.lastPointerMoveEvent is still null + // returning null here means we can e.g. set a featureIndex without requiring an event + if (!event) { + return null; + } // @ts-ignore + + + var isDragging = event.isDragging, + picks = event.picks; // if not pick segment + + var picked = picks && picks[0]; // @ts-ignore + + if (!picked || !(0, _utils.isNumeric)(picked.featureIndex) || picked.type !== _constants.ELEMENT_TYPE.SEGMENT) { + return null; + } // if dragging or feature is neither polygon nor line string + + + if (isDragging || feature.geometry.type !== _constants.GEOJSON_TYPE.POLYGON && feature.geometry.type !== _constants.GEOJSON_TYPE.LINE_STRING) { + return null; + } + + var insertMapCoords = this._getPointOnSegment(feature, picked, event.mapCoords); + + if (!insertMapCoords) { + return null; + } + + return { + type: 'Feature', + properties: { + guideType: _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE, + shape: feature.properties.shape, + positionIndexes: [-1], + editHandleType: 'intermediate' + }, + geometry: { + type: _constants.GEOJSON_TYPE.POINT, + coordinates: insertMapCoords + } + }; + } // @ts-ignore + + }, { + key: "getGuides", + value: function getGuides(props) { + // @ts-ignore + var selectedFeature = this.getSelectedFeature(props); + var selectedFeatureIndex = props.selectedIndexes && props.selectedIndexes[0]; + + if (!selectedFeature || selectedFeature.geometry.type === _constants.GEOJSON_TYPE.POINT) { + return null; + } + + var event = props.lastPointerMoveEvent; // feature editHandles + + var editHandles = this.getEditHandlesFromFeature(selectedFeature, selectedFeatureIndex) || []; // cursor editHandle + + var cursorEditHandle = this._getCursorEditHandle(event, selectedFeature); + + if (cursorEditHandle) { + // @ts-ignore + editHandles.push(cursorEditHandle); + } + + return { + type: 'FeatureCollection', + features: editHandles.length ? editHandles : null + }; + } + }]); + + return EditingMode; +}(_baseMode["default"]); + +exports["default"] = EditingMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZS50cyJdLCJuYW1lcyI6WyJFZGl0aW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrZWQiLCJwaWNrcyIsInNlbGVjdGVkRmVhdHVyZUluZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwib2JqZWN0IiwiZmVhdHVyZUluZGV4Iiwib2JqZWN0VHlwZSIsInR5cGUiLCJpbmRleCIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJnZW9tZXRyeSIsIkdFT0pTT05fVFlQRSIsIlBPTFlHT04iLCJMSU5FX1NUUklORyIsIkVMRU1FTlRfVFlQRSIsIlNFR01FTlQiLCJjb29yZGluYXRlcyIsImluc2VydEluZGV4IiwibGVuZ3RoIiwicG9zaXRpb25JbmRleGVzIiwiU0hBUEUiLCJpbnNlcnRNYXBDb29yZHMiLCJfZ2V0UG9pbnRPblNlZ21lbnQiLCJtYXBDb29yZHMiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsImFkZFBvc2l0aW9uIiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJFRElUX1RZUEUiLCJBRERfUE9TSVRJT04iLCJlZGl0Q29udGV4dCIsImVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsInZpZXdwb3J0IiwicHJvamVjdCIsIk9iamVjdCIsInBpY2tlZE9iamVjdCIsIkZFQVRVUkUiLCJGSUxMIiwiRURJVF9IQU5ETEUiLCJfaGFuZGxlRHJhZ2dpbmciLCJzZWxlY3RlZEZlYXR1cmUiLCJpc0RyYWdnaW5nIiwicG9pbnRlckRvd25QaWNrcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiY2xpY2tlZCIsIk1PVkVfUE9TSVRJT04iLCJGSU5JU0hfTU9WRV9QT1NJVElPTiIsImZlYXR1cmVzRHJhZ2dhYmxlIiwiZHgiLCJkeSIsIl91cGRhdGVGZWF0dXJlIiwidXBkYXRlVHlwZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlJFQ1RBTkdMRSIsIm9wdGlvbnMiLCJuZXdDb29yZGluYXRlcyIsInJlcGxhY2VQb3NpdGlvbiIsIm1hcCIsInBpeGVscyIsInVucHJvamVjdCIsImZpbHRlciIsIkJvb2xlYW4iLCJQT0lOVCIsInJlcGxhY2VHZW9tZXRyeSIsInBpY2tlZE1hcENvb3JkcyIsInNyY1ZlcnRleEluZGV4IiwidGFyZ2V0VmVydGV4SW5kZXgiLCJndWlkZVR5cGUiLCJHVUlERV9UWVBFIiwiQ1VSU09SX0VESVRfSEFORExFIiwiZWRpdEhhbmRsZVR5cGUiLCJlZGl0SGFuZGxlcyIsImdldEVkaXRIYW5kbGVzRnJvbUZlYXR1cmUiLCJjdXJzb3JFZGl0SGFuZGxlIiwiX2dldEN1cnNvckVkaXRIYW5kbGUiLCJwdXNoIiwiZmVhdHVyZXMiLCJCYXNlTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9xQkEsVzs7Ozs7Ozs7Ozs7OztnQ0FDUEMsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxNQUFNLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixJQUFlSCxLQUFLLENBQUNHLEtBQU4sQ0FBWSxDQUFaLENBQTlCO0FBQ0EsVUFBTUMsb0JBQW9CLEdBQUdILEtBQUssQ0FBQ0ksZUFBTixJQUF5QkosS0FBSyxDQUFDSSxlQUFOLENBQXNCLENBQXRCLENBQXRELENBRmtFLENBR2xFOztBQUNBLFVBQUksQ0FBQ0gsTUFBRCxJQUFXLENBQUNBLE1BQU0sQ0FBQ0ksTUFBbkIsSUFBNkJKLE1BQU0sQ0FBQ0ssWUFBUCxLQUF3Qkgsb0JBQXpELEVBQStFO0FBQzdFO0FBQ0QsT0FOaUUsQ0FRbEU7OztBQVJrRSxVQVNwREksVUFUb0QsR0FTaEJOLE1BVGdCLENBUzFETyxJQVQwRDtBQUFBLFVBU3hDRixZQVR3QyxHQVNoQkwsTUFUZ0IsQ0FTeENLLFlBVHdDO0FBQUEsVUFTMUJHLEtBVDBCLEdBU2hCUixNQVRnQixDQVMxQlEs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QVQ2QyxDQVc3Qzs7QUFDQSxVQUFNNkIsV0FBVyxHQUFHLEtBQUtDLHlCQUFMLENBQStCakMsZUFBL0IsRUFBZ0QzQyxvQkFBaEQsS0FBeUUsRUFBN0YsQ0FaNkMsQ0FjN0M7O0FBQ0EsVUFBTTZFLGdCQUFnQixHQUFHLEtBQUtDLG9CQUFMLENBQTBCbEYsS0FBMUIsRUFBaUMrQyxlQUFqQyxDQUF6Qjs7QUFDQSxVQUFJa0MsZ0JBQUosRUFBc0I7QUFDcEI7QUFDQUYsUUFBQUEsV0FBVyxDQUFDSSxJQUFaLENBQWlCRixnQkFBakI7QUFDRDs7QUFFRCxhQUFPO0FBQ0x4RSxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTDJFLFFBQUFBLFFBQVEsRUFBRUwsV0FBVyxDQUFDMUQsTUFBWixHQUFxQjBELFdBQXJCLEdBQW1DO0FBRnhDLE9BQVA7QUFJRDs7OztFQTFUc0NNLG9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHR5cGUge1xuICBGZWF0dXJlLFxuICBGZWF0dXJlQ29sbGVjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFBvc2l0aW9uLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBTSEFQRSwgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUsIEdFT0pTT05fVFlQRSwgR1VJREVfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQmFzZU1vZGUgZnJvbSAnLi9iYXNlLW1vZGUnO1xuaW1wb3J0IHtcbiAgZmluZENsb3Nlc3RQb2ludE9uTGluZVNlZ21lbnQsXG4gIGdldEZlYXR1cmVDb29yZGluYXRlcyxcbiAgaXNOdW1lcmljLFxuICB1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbixcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRpbmdNb2RlIGV4dGVuZHMgQmFzZU1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwaWNrZWQgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcyAmJiBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghcGlja2VkIHx8ICFwaWNrZWQub2JqZWN0IHx8IHBpY2tlZC5mZWF0dXJlSW5kZXggIT09IHNlbGVjdGVkRmVhdHVyZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgdHlwZTogb2JqZWN0VHlwZSwgZmVhdHVyZUluZGV4LCBpbmRleCB9ID0gcGlja2VkO1xuICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcywgZmVhdHVyZUluZGV4KTtcblxuICAgIGlmIChcbiAgICAgIGZlYXR1cmUgJiZcbiAgICAgIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OIHx8XG4gICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKSAmJlxuICAgICAgb2JqZWN0VHlwZSA9PT0gRUxFTUVOVF9UWVBFLlNFR01FTlRcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmUpO1xuICAgICAgaWYgKCFjb29yZGluYXRlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpbnNlcnRJbmRleCA9IChpbmRleCArIDEpICUgY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgICAgY29uc3QgcG9zaXRpb25JbmRleGVzID1cbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBTSEFQRS5QT0xZR09OID8gWzAsIGluc2VydEluZGV4XSA6IFtpbnNlcnRJbmRleF07XG4gICAgICBjb25zdCBpbnNlcnRNYXBDb29yZHMgPSB0aGlzLl9nZXRQb2ludE9uU2VnbWVudChmZWF0dXJlLCBwaWNrZWQsIGV2ZW50Lm1hcENvb3Jkcyk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBpbnNlcnRNYXBDb29yZHMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgZWRpdFR5cGU6IEVESVRfVFlQRS5BRERfUE9TSVRJT04sXG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0Q29udGV4dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIGVkaXRIYW5kbGVJbmRleDogaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBzY3JlZW5Db29yZHM6IHByb3BzLnZpZXdwb3J0ICYmIHByb3BzLnZpZXdwb3J0LnByb2plY3QoaW5zZXJ0TWFwQ29vcmRzKSxcbiAgICAgICAgICAgIG1hcENvb3JkczogaW5zZXJ0TWFwQ29vcmRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIHJlcGxhY2UgcG9pbnRcbiAgICBjb25zdCBwaWNrZWQgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXBpY2tlZCB8fCAhcGlja2VkLk9iamVjdCB8fCAhaXNOdW1lcmljKHBpY2tlZC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGlja2VkT2JqZWN0ID0gcGlja2VkLm9iamVjdDtcbiAgICBzd2l0Y2ggKHBpY2tlZE9iamVjdC50eXBlKSB7XG4gICAgICBjYXNlIEVMRU1FTlRfVFlQRS5GRUFUVVJFOlxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRklMTDpcbiAgICAgIGNhc2UgRUxFTUVOVF9UWVBFLkVESVRfSEFORExFOlxuICAgICAgICB0aGlzLl9oYW5kbGVEcmFnZ2luZyhldmVudCwgcHJvcHMpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlRHJhZ2dpbmcoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQgfCBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApIHtcbiAgICBjb25zdCB7IG9uRWRpdCB9ID0gcHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICAvLyBub3RoaW5nIGNsaWNrZWRcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBpc0RyYWdnaW5nLCBwb2ludGVyRG93blBpY2tzLCBzY3JlZW5Db29yZHMgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgY2xpY2tlZCA9IHBvaW50ZXJEb3duUGlja3MgJiYgcG9pbnRlckRvd25QaWNrc1swXTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFjbGlja2VkIHx8ICFjbGlja2VkLm9iamVjdCB8fCAhaXNOdW1lcmljKGNsaWNrZWQuZmVhdHVyZUluZGV4KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IHR5cGU6IG9iamVjdFR5cGUsIGluZGV4OiBlZGl0SGFuZGxlSW5kZXggfSA9IGNsaWNrZWQ7XG5cbiAgICAvLyBub3QgZHJhZ2dpbmdcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBudWxsO1xuICAgIGNvbnN0IGVkaXRUeXBlID0gaXNEcmFnZ2luZyA/IEVESVRfVFlQRS5NT1ZFX1BPU0lUSU9OIDogRURJVF9UWVBFLkZJTklTSF9NT1ZFX1BPU0lUSU9OO1xuXG4gICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICBjYXNlIEVMRU1FTlRfVFlQRS5GRUFUVVJFOlxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRklMTDpcbiAgICAgIGNhc2UgRUxFTUVOVF9UWVBFLlNFR01FTlQ6XG4gICAgICAgIGlmICghcHJvcHMuZmVhdHVyZXNEcmFnZ2FibGUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSAvLyBkcmFnZ2luZyBmZWF0dXJlXG5cbiAgICAgICAgY29uc3QgZHggPSBzY3JlZW5Db29yZHNbMF0gLSBsYXN0UG9pbnRlck1vdmVFdmVudC5zY3JlZW5Db29yZHNbMF07XG4gICAgICAgIGNvbnN0IGR5ID0gc2NyZWVuQ29vcmRzWzFdIC0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQuc2NyZWVuQ29vcmRzWzFdO1xuICAgICAgICB1cGRhdGVkRGF0YSA9IHRoaXMuX3VwZGF0ZUZlYXR1cmUocHJvcHMsICdmZWF0dXJlJywgeyBkeCwgZHkgfSk7XG4gICAgICAgIG9uRWRpdCh7XG4gICAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEU6XG4gICAgICAgIC8vIGRyYWdnaW5nIGVkaXRIYW5kbGVcbiAgICAgICAgLy8gZHJhZ2dpbmcgcmVjdGFuZ2xlIG9yIG90aGVyIHNoYXBlc1xuICAgICAgICBjb25zdCB1cGRhdGVUeXBlID1cbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUucHJvcGVydGllcy5zaGFwZSA9PT0gU0hBUEUuUkVDVEFOR0xFID8gJ3JlY3RhbmdsZScgOiAnZWRpdEhhbmRsZSc7XG4gICAgICAgIHVwZGF0ZWREYXRhID0gdGhpcy5fdXBkYXRlRmVhdHVyZShwcm9wcywgdXBkYXRlVHlwZSwge1xuICAgICAgICAgIGVkaXRIYW5kbGVJbmRleCxcbiAgICAgICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uRWRpdCh7XG4gICAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICAvLyBubyBzZWxlY3RlZCBmZWF0dXJlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoIXNlbGVjdGVkRmVhdHVyZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFldmVudC5pc0RyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIC8vIFRPRE8gLSByZWZhY3RvclxuICBfdXBkYXRlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgdHlwZTogc3RyaW5nLCBvcHRpb25zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHsgZGF0YSwgc2VsZWN0ZWRJbmRleGVzLCB2aWV3cG9ydCB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXMgJiYgc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcywgZmVhdHVyZUluZGV4KTtcblxuICAgIGxldCBnZW9tZXRyeSA9IG51bGw7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgaWYgKCFjb29yZGluYXRlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IG5ld0Nvb3JkaW5hdGVzID0gWy4uLmNvb3JkaW5hdGVzXTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZWRpdEhhbmRsZSc6XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uSW5kZXhlcyA9XG4gICAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBHRU9KU09OX1RZUEUuUE9MWUdPTlxuICAgICAgICAgICAgPyBbMCwgb3B0aW9ucy5lZGl0SGFuZGxlSW5kZXhdXG4gICAgICAgICAgICA6IFtvcHRpb25zLmVkaXRIYW5kbGVJbmRleF07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIG9wdGlvbnMubWFwQ29vcmRzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY2FzZSAnZmVhdHVyZSc6XG4gICAgICAgIGNvbnN0IHsgZHgsIGR5IH0gPSBvcHRpb25zO1xuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbmV3Q29vcmRpbmF0ZXMgPSBuZXdDb29yZGluYXRlc1xuICAgICAgICAgIC5tYXAoKG1hcENvb3JkcykgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgcGl4ZWxzID0gdmlld3BvcnQgJiYgdmlld3BvcnQucHJvamVjdChtYXBDb29yZHMpO1xuICAgICAgICAgICAgaWYgKHBpeGVscykge1xuICAgICAgICAgICAgICBwaXhlbHNbMF0gKz0gZHg7XG4gICAgICAgICAgICAgIHBpeGVsc1sxXSArPSBkeTtcbiAgICAgICAgICAgICAgcmV0dXJuIHZpZXdwb3J0ICYmIHZpZXdwb3J0LnVucHJvamVjdChwaXhlbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBnZW9tZXRyeSA9IHtcbiAgICAgICAgICB0eXBlOiBmZWF0dXJlLmdlb21ldHJ5LnR5cGUsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6XG4gICAgICAgICAgICBmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OXG4gICAgICAgICAgICAgID8gW25ld0Nvb3JkaW5hdGVzXVxuICAgICAgICAgICAgICA6IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPSU5UXG4gICAgICAgICAgICAgID8gbmV3Q29vcmRpbmF0ZXNbMF1cbiAgICAgICAgICAgICAgOiBuZXdDb29yZGluYXRlcyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKGRhdGEpXG4gICAgICAgICAgLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIGdlb21ldHJ5KVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY2FzZSAncmVjdGFuZ2xlJzpcbiAgICAgICAgLy8gbW92ZWQgZWRpdEhhbmRsZUluZGV4IGFuZCBkZXN0aW5hdGlvbiBtYXBDb29yZHNcbiAgICAgICAgbmV3Q29vcmRpbmF0ZXMgPSB1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgICBvcHRpb25zLmVkaXRIYW5kbGVJbmRleCxcbiAgICAgICAgICBvcHRpb25zLm1hcENvb3Jkc1xuICAgICAgICApO1xuICAgICAgICBnZW9tZXRyeSA9IHtcbiAgICAgICAgICB0eXBlOiBHRU9KU09OX1RZUEUuUE9MWUdPTixcbiAgICAgICAgICBjb29yZGluYXRlczogbmV3Q29vcmRpbmF0ZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKVxuICAgICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCBnZW9tZXRyeSlcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRhICYmIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKS5nZXRPYmplY3QoKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0UG9pbnRPblNlZ21lbnQoZmVhdHVyZTogRmVhdHVyZSwgcGlja2VkOiBhbnksIHBpY2tlZE1hcENvb3JkczogUG9zaXRpb24pIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGdldEZlYXR1cmVDb29yZGluYXRlcyhmZWF0dXJlKTtcbiAgICBpZiAoIWNvb3JkaW5hdGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc3JjVmVydGV4SW5kZXggPSBwaWNrZWQuaW5kZXg7XG4gICAgY29uc3QgdGFyZ2V0VmVydGV4SW5kZXggPSBwaWNrZWQuaW5kZXggKyAxO1xuICAgIHJldHVybiBmaW5kQ2xvc2VzdFBvaW50T25MaW5lU2VnbWVudChcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvb3JkaW5hdGVzW3NyY1ZlcnRleEluZGV4XSxcbiAgICAgIGNvb3JkaW5hdGVzW3RhcmdldFZlcnRleEluZGV4XSxcbiAgICAgIHBpY2tlZE1hcENvb3Jkc1xuICAgICk7XG4gIH1cblxuICBfZ2V0Q3Vyc29yRWRpdEhhbmRsZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgZmVhdHVyZTogRmVhdHVyZSkge1xuICAgIC8vIGV2ZW50IGNhbiBiZSBudWxsIHdoZW4gdGhlIHVzZXIgaGFzIG5vdCBpbnRlcmFjdGVkIHdpdGggdGhlIG1hcCB3aGF0c29ldmVyXG4gICAgLy8gYW5kIHRoZXJlZm9yZSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudCBpcyBzdGlsbCBudWxsXG4gICAgLy8gcmV0dXJuaW5nIG51bGwgaGVyZSBtZWFucyB3ZSBjYW4gZS5nLiBzZXQgYSBmZWF0dXJlSW5kZXggd2l0aG91dCByZXF1aXJpbmcgYW4gZXZlbnRcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBpc0RyYWdnaW5nLCBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgLy8gaWYgbm90IHBpY2sgc2VnbWVudFxuICAgIGNvbnN0IHBpY2tlZCA9IHBpY2tzICYmIHBpY2tzWzBdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXBpY2tlZCB8fCAhaXNOdW1lcmljKHBpY2tlZC5mZWF0dXJlSW5kZXgpIHx8IHBpY2tlZC50eXBlICE9PSBFTEVNRU5UX1RZUEUuU0VHTUVOVCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgZHJhZ2dpbmcgb3IgZmVhdHVyZSBpcyBuZWl0aGVyIHBvbHlnb24gbm9yIGxpbmUgc3RyaW5nXG4gICAgaWYgKFxuICAgICAgaXNEcmFnZ2luZyB8fFxuICAgICAgKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gR0VPSlNPTl9UWVBFLlBPTFlHT04gJiZcbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSBHRU9KU09OX1RZUEUuTElORV9TVFJJTkcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRNYXBDb29yZHMgPSB0aGlzLl9nZXRQb2ludE9uU2VnbWVudChmZWF0dXJlLCBwaWNrZWQsIGV2ZW50Lm1hcENvb3Jkcyk7XG5cbiAgICBpZiAoIWluc2VydE1hcENvb3Jkcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRSxcbiAgICAgICAgc2hhcGU6IGZlYXR1cmUucHJvcGVydGllcy5zaGFwZSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLTFdLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2ludGVybWVkaWF0ZScsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogR0VPSlNPTl9UWVBFLlBPSU5ULFxuICAgICAgICBjb29yZGluYXRlczogaW5zZXJ0TWFwQ29vcmRzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIC8vIEB0cy1pZ25vcmVcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcyAmJiBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICBpZiAoIXNlbGVjdGVkRmVhdHVyZSB8fCBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPSU5UKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgLy8gZmVhdHVyZSBlZGl0SGFuZGxlc1xuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gdGhpcy5nZXRFZGl0SGFuZGxlc0Zyb21GZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSwgc2VsZWN0ZWRGZWF0dXJlSW5kZXgpIHx8IFtdO1xuXG4gICAgLy8gY3Vyc29yIGVkaXRIYW5kbGVcbiAgICBjb25zdCBjdXJzb3JFZGl0SGFuZGxlID0gdGhpcy5fZ2V0Q3Vyc29yRWRpdEhhbmRsZShldmVudCwgc2VsZWN0ZWRGZWF0dXJlKTtcbiAgICBpZiAoY3Vyc29yRWRpdEhhbmRsZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZWRpdEhhbmRsZXMucHVzaChjdXJzb3JFZGl0SGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBlZGl0SGFuZGxlcy5sZW5ndGggPyBlZGl0SGFuZGxlcyA6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/edit-modes/index.js b/modules/react-map-gl-draw/dist-es6/edit-modes/index.js new file mode 100644 index 000000000..de1a0161c --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/edit-modes/index.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "EditingMode", { + enumerable: true, + get: function get() { + return _editingMode["default"]; + } +}); + +var _editingMode = _interopRequireDefault(require("./editing-mode")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGl0aW5nTW9kZSB9IGZyb20gJy4vZWRpdGluZy1tb2RlJztcbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/edit-modes/utils.js b/modules/react-map-gl-draw/dist-es6/edit-modes/utils.js new file mode 100644 index 000000000..f939409c2 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/edit-modes/utils.js @@ -0,0 +1,148 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isNumeric = isNumeric; +exports.parseEventElement = parseEventElement; +exports.getScreenCoords = getScreenCoords; +exports.findClosestPointOnLineSegment = findClosestPointOnLineSegment; +exports.getFeatureCoordinates = getFeatureCoordinates; +exports.updateRectanglePosition = updateRectanglePosition; + +var _constants = require("../constants"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function isNumeric(val) { + return !Array.isArray(val) && !isNaN(parseFloat(val)) && isFinite(val); +} + +function parseEventElement(evt, features, guides) { + var elem = evt.target; + + if (!elem || !elem.dataset || !elem.dataset.type) { + return null; + } + + var featureIndex = elem.dataset.featureIndex; + featureIndex = isNumeric(featureIndex) ? Number(featureIndex) : -1; + var index = elem.dataset.index; + index = isNumeric(index) ? Number(index) : undefined; + var type = elem.dataset.type; + var tentativeFeature = guides && guides.find(function (g) { + return g.properties.guideType === _constants.GUIDE_TYPE.TENTATIVE; + }); + var object = null; + var isGuide = false; + + switch (type) { + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + object = guides.find(function (g) { + var indexes = g.properties.positionIndexes; + + if (indexes) { + return indexes[indexes.length - 1] === index; + } + + return false; + }); + isGuide = true; + break; + + case _constants.ELEMENT_TYPE.SEGMENT: + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + object = features[featureIndex] || tentativeFeature; + break; + + default: + } + + return { + object: object, + isGuide: isGuide, + type: type, + index: index, + featureIndex: featureIndex + }; +} + +function getScreenCoords(evt) { + var _evt$offsetCenter = evt.offsetCenter, + x = _evt$offsetCenter.x, + y = _evt$offsetCenter.y; + return [Number(x), Number(y)]; +} + +function findClosestPointOnLineSegment(p1, p2, p) { + // line + var k = (p2[1] - p1[1]) / (p2[0] - p1[0]); + var b = p1[1] - k * p1[0]; // vertical line + + if (!isFinite(k)) { + var q = [p1[0], p[1]]; + return inBounds(p1, p2, q) ? q : null; + } // p is on line [p1, p2] + + + if (p[0] * k + b - p[1] === 0) { + return inBounds(p1, p2, p) ? p : null; + } + + var qx = (k * p[1] + p[0] - k * b) / (k * k + 1); + var qy = k * qx + b; + return inBounds(p1, p2, [qx, qy]) ? [qx, qy] : null; +} + +function getFeatureCoordinates(feature) { + var coordinates = feature && feature.geometry && feature.geometry.coordinates; + + if (!coordinates) { + return null; + } + + var isPolygonal = feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON; + var isSinglePoint = feature.geometry.type === _constants.GEOJSON_TYPE.POINT; + return isPolygonal ? coordinates[0] : isSinglePoint ? [coordinates] : coordinates; +} + +function updateRectanglePosition(feature, editHandleIndex, mapCoords) { + var coordinates = getFeatureCoordinates(feature); + + if (!coordinates) { + return null; + } // @ts-ignore + + + var points = coordinates.slice(0, 4); + points[editHandleIndex % 4] = mapCoords; + /* + * p0.x, p0.y (p0) ------ p2.x, p0.y (p1) + * | | + * | | + * p0.x, p2.y (p3) ----- p2.x, p2.y (p2) + */ + + var p0 = points[(editHandleIndex + 2) % 4]; + var p2 = points[editHandleIndex % 4]; + points[(editHandleIndex + 1) % 4] = [p2[0], p0[1]]; + points[(editHandleIndex + 3) % 4] = [p0[0], p2[1]]; + return feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [[].concat(_toConsumableArray(points), [points[0]])] : points; +} + +function inBounds(p1, p2, p) { + var bounds = [Math.min(p1[0], p2[0]), Math.max(p1[0], p2[0]), Math.min(p1[1], p2[1]), Math.max(p1[1], p2[1])]; + return p[0] >= bounds[0] && p[0] <= bounds[1] && p[1] >= bounds[2] && p[1] <= bounds[3]; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL3V0aWxzLnRzIl0sIm5hbWVzIjpbImlzTnVtZXJpYyIsInZhbCIsIkFycmF5IiwiaXNBcnJheSIsImlzTmFOIiwicGFyc2VGbG9hdCIsImlzRmluaXRlIiwicGFyc2VFdmVudEVsZW1lbnQiLCJldnQiLCJmZWF0dXJlcyIsImd1aWRlcyIsImVsZW0iLCJ0YXJnZXQiLCJkYXRhc2V0IiwidHlwZSIsImZlYXR1cmVJbmRleCIsIk51bWJlciIsImluZGV4IiwidW5kZWZpbmVkIiwidGVudGF0aXZlRmVhdHVyZSIsImZpbmQiLCJnIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJURU5UQVRJVkUiLCJvYmplY3QiLCJpc0d1aWRlIiwiRUxFTUVOVF9UWVBFIiwiRURJVF9IQU5ETEUiLCJpbmRleGVzIiwicG9zaXRpb25JbmRleGVzIiwibGVuZ3RoIiwiU0VHTUVOVCIsIkZFQVRVUkUiLCJGSUxMIiwiZ2V0U2NyZWVuQ29vcmRzIiwib2Zmc2V0Q2VudGVyIiwieCIsInkiLCJmaW5kQ2xvc2VzdFBvaW50T25MaW5lU2VnbWVudCIsInAxIiwicDIiLCJwIiwiayIsImIiLCJxIiwiaW5Cb3VuZHMiLCJxeCIsInF5IiwiZ2V0RmVhdHVyZUNvb3JkaW5hdGVzIiwiZmVhdHVyZSIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJpc1BvbHlnb25hbCIsIkdFT0pTT05fVFlQRSIsIlBPTFlHT04iLCJpc1NpbmdsZVBvaW50IiwiUE9JTlQiLCJ1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbiIsImVkaXRIYW5kbGVJbmRleCIsIm1hcENvb3JkcyIsInBvaW50cyIsInNsaWNlIiwicDAiLCJib3VuZHMiLCJNYXRoIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxTQUFULENBQW1CQyxHQUFuQixFQUE2QjtBQUNsQyxTQUFPLENBQUNDLEtBQUssQ0FB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QVFzQixNQUFNLENBQUMsQ0FBRCxDQUF4RCxJQUErRHRCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBUXNCLE1BQU0sQ0FBQyxDQUFELENBQXBGO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNam9sbmlyRXZlbnQgfSBmcm9tICdtam9sbmlyLmpzJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZU9mLCBGZWF0dXJlLCBQb2x5Z29uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IEdFT0pTT05fVFlQRSwgRUxFTUVOVF9UWVBFLCBHVUlERV9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpYyh2YWw6IGFueSkge1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSAmJiAhaXNOYU4ocGFyc2VGbG9hdCh2YWwpKSAmJiBpc0Zpbml0ZSh2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFdmVudEVsZW1lbnQoZXZ0OiBNam9sbmlyRXZlbnQsIGZlYXR1cmVzOiBGZWF0dXJlW10sIGd1aWRlczogRmVhdHVyZVtdKSB7XG4gIGNvbnN0IGVsZW0gPSBldnQudGFyZ2V0O1xuICBpZiAoIWVsZW0gfHwgIWVsZW0uZGF0YXNldCB8fCAhZWxlbS5kYXRhc2V0LnR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBmZWF0dXJlSW5kZXggPSBlbGVtLmRhdGFzZXQuZmVhdHVyZUluZGV4O1xuICBmZWF0dXJlSW5kZXggPSBpc051bWVyaWMoZmVhdHVyZUluZGV4KSA/IE51bWJlcihmZWF0dXJlSW5kZXgpIDogLTE7XG5cbiAgbGV0IGluZGV4ID0gZWxlbS5kYXRhc2V0LmluZGV4O1xuICBpbmRleCA9IGlzTnVtZXJpYyhpbmRleCkgPyBOdW1iZXIoaW5kZXgpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHR5cGUgPSBlbGVtLmRhdGFzZXQudHlwZTtcbiAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9XG4gICAgZ3VpZGVzICYmIGd1aWRlcy5maW5kKChnKSA9PiBnLnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSBHVUlERV9UWVBFLlRFTlRBVElWRSk7XG4gIGxldCBvYmplY3QgPSBudWxsO1xuICBsZXQgaXNHdWlkZSA9IGZhbHNlO1xuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRUxFTUVOVF9UWVBFLkVESVRfSEFORExFOlxuICAgICAgb2JqZWN0ID0gZ3VpZGVzLmZpbmQoKGcpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IGcucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChpbmRleGVzKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4ZXNbaW5kZXhlcy5sZW5ndGggLSAxXSA9PT0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICBpc0d1aWRlID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRUxFTUVOVF9UWVBFLlNFR01FTlQ6XG4gICAgY2FzZSBFTEVNRU5UX1RZUEUuRkVBVFVSRTpcbiAgICBjYXNlIEVMRU1FTlRfVFlQRS5GSUxMOlxuICAgICAgb2JqZWN0ID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XSB8fCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2JqZWN0LFxuICAgIGlzR3VpZGUsXG4gICAgdHlwZSxcbiAgICBpbmRleCxcbiAgICBmZWF0dXJlSW5kZXgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JlZW5Db29yZHMoZXZ0OiBNam9sbmlyRXZlbnQpIHtcbiAgY29uc3Qge1xuICAgIG9mZnNldENlbnRlcjogeyB4LCB5IH0sXG4gIH0gPSBldnQ7XG4gIHJldHVybiBbTnVtYmVyKHgpLCBOdW1iZXIoeSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENsb3Nlc3RQb2ludE9uTGluZVNlZ21lbnQocDE6IFBvc2l0aW9uLCBwMjogUG9zaXRpb24sIHA6IFBvc2l0aW9uKSB7XG4gIC8vIGxpbmVcbiAgY29uc3QgayA9IChwMlsxXSAtIHAxWzFdKSAvIChwMlswXSAtIHAxWzBdKTtcbiAgY29uc3QgYiA9IHAxWzFdIC0gayAqIHAxWzBdO1xuXG4gIC8vIHZlcnRpY2FsIGxpbmVcbiAgaWYgKCFpc0Zpbml0ZShrKSkge1xuICAgIGNvbnN0IHE6IFBvc2l0aW9uID0gW3AxWzBdLCBwWzFdXTtcbiAgICByZXR1cm4gaW5Cb3VuZHMocDEsIHAyLCBxKSA/IHEgOiBudWxsO1xuICB9XG5cbiAgLy8gcCBpcyBvbiBsaW5lIFtwMSwgcDJdXG4gIGlmIChwWzBdICogayArIGIgLSBwWzFdID09PSAwKSB7XG4gICAgcmV0dXJuIGluQm91bmRzKHAxLCBwMiwgcCkgPyBwIDogbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHF4ID0gKGsgKiBwWzFdICsgcFswXSAtIGsgKiBiKSAvIChrICogayArIDEpO1xuICBjb25zdCBxeSA9IGsgKiBxeCArIGI7XG5cbiAgcmV0dXJuIGluQm91bmRzKHAxLCBwMiwgW3F4LCBxeV0pID8gW3F4LCBxeV0gOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBmZWF0dXJlICYmIGZlYXR1cmUuZ2VvbWV0cnkgJiYgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgaWYgKCFjb29yZGluYXRlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaXNQb2x5Z29uYWwgPSBmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OO1xuICBjb25zdCBpc1NpbmdsZVBvaW50ID0gZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBHRU9KU09OX1RZUEUuUE9JTlQ7XG4gIHJldHVybiBpc1BvbHlnb25hbCA/IGNvb3JkaW5hdGVzWzBdIDogaXNTaW5nbGVQb2ludCA/IFtjb29yZGluYXRlc10gOiBjb29yZGluYXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICBmZWF0dXJlOiBGZWF0dXJlT2Y8UG9seWdvbj4sXG4gIGVkaXRIYW5kbGVJbmRleDogbnVtYmVyLFxuICBtYXBDb29yZHM6IFBvc2l0aW9uXG4pIHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHBvaW50cyA9IGNvb3JkaW5hdGVzLnNsaWNlKDAsIDQpO1xuICBwb2ludHNbZWRpdEhhbmRsZUluZGV4ICUgNF0gPSBtYXBDb29yZHM7XG5cbiAgLypcbiAgICogICBwMC54LCBwMC55IChwMCkgLS0tLS0tIHAyLngsIHAwLnkgKHAxKVxuICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqICAgcDAueCwgcDIueSAocDMpIC0tLS0tIHAyLngsIHAyLnkgKHAyKVxuICAgKi9cbiAgY29uc3QgcDAgPSBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDIpICUgNF07XG4gIGNvbnN0IHAyID0gcG9pbnRzW2VkaXRIYW5kbGVJbmRleCAlIDRdO1xuICBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDEpICUgNF0gPSBbcDJbMF0sIHAwWzFdXTtcbiAgcG9pbnRzWyhlZGl0SGFuZGxlSW5kZXggKyAzKSAlIDRdID0gW3AwWzBdLCBwMlsxXV07XG5cbiAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPTFlHT04gPyBbWy4uLnBvaW50cywgcG9pbnRzWzBdXV0gOiBwb2ludHM7XG59XG5cbmZ1bmN0aW9uIGluQm91bmRzKHAxOiBQb3NpdGlvbiwgcDI6IFBvc2l0aW9uLCBwOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICBjb25zdCBib3VuZHMgPSBbXG4gICAgTWF0aC5taW4ocDFbMF0sIHAyWzBdKSxcbiAgICBNYXRoLm1heChwMVswXSwgcDJbMF0pLFxuICAgIE1hdGgubWluKHAxWzFdLCBwMlsxXSksXG4gICAgTWF0aC5tYXgocDFbMV0sIHAyWzFdKSxcbiAgXTtcblxuICByZXR1cm4gcFswXSA+PSBib3VuZHNbMF0gJiYgcFswXSA8PSBib3VuZHNbMV0gJiYgcFsxXSA+PSBib3VuZHNbMl0gJiYgcFsxXSA8PSBib3VuZHNbM107XG59XG4iXX0= \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/editor.js b/modules/react-map-gl-draw/dist-es6/editor.js new file mode 100644 index 000000000..501f3bf41 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/editor.js @@ -0,0 +1,705 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _constants = require("./constants"); + +var _modeHandler = _interopRequireDefault(require("./mode-handler")); + +var _utils = require("./edit-modes/utils"); + +var _style = require("./style"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 defaultProps = _objectSpread({}, _modeHandler["default"].defaultProps, { + clickRadius: 0, + featureShape: 'circle', + editHandleShape: 'rect', + editHandleStyle: _style.editHandleStyle, + featureStyle: _style.featureStyle, + featuresDraggable: true +}); + +var Editor = /*#__PURE__*/function (_ModeHandler) { + _inherits(Editor, _ModeHandler); + + var _super = _createSuper(Editor); + + function Editor() { + var _this; + + _classCallCheck(this, Editor); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_getEditHandleState", function (editHandle, renderState) { + var _this$state = _this.state, + pointerDownPicks = _this$state.pointerDownPicks, + hovered = _this$state.hovered; + + if (renderState) { + return renderState; + } + + var editHandleIndex = editHandle.properties.positionIndexes[0]; + var draggingEditHandleIndex = null; + var pickedObject = pointerDownPicks && pointerDownPicks[0] && pointerDownPicks[0].object; + + if (pickedObject && pickedObject.guideType === _constants.GUIDE_TYPE.EDIT_HANDLE) { + draggingEditHandleIndex = pickedObject.index; + } + + if (editHandleIndex === draggingEditHandleIndex || _this.state.selectedEditHandleIndexes.includes(editHandleIndex)) { + return _constants.RENDER_STATE.SELECTED; + } // @ts-ignore + + + if (hovered && hovered.type === _constants.ELEMENT_TYPE.EDIT_HANDLE) { + if (hovered.index === editHandleIndex) { + return _constants.RENDER_STATE.HOVERED; + } // cursor hovered on first vertex when drawing polygon + + + if (hovered.index === 0 && editHandle.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE) { + return _constants.RENDER_STATE.CLOSING; + } + } + + return _constants.RENDER_STATE.INACTIVE; + }); + + _defineProperty(_assertThisInitialized(_this), "_getFeatureRenderState", function (index, renderState) { + var hovered = _this.state.hovered; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + if (renderState) { + return renderState; + } + + if (index === selectedFeatureIndex) { + return _constants.RENDER_STATE.SELECTED; + } // @ts-ignore + + + if (hovered && hovered.type === _constants.ELEMENT_TYPE.FEATURE && hovered.featureIndex === index) { + return _constants.RENDER_STATE.HOVERED; + } + + return _constants.RENDER_STATE.INACTIVE; + }); + + _defineProperty(_assertThisInitialized(_this), "_getStyleProp", function (styleProp, params) { + return typeof styleProp === 'function' ? styleProp(params) : styleProp; + }); + + _defineProperty(_assertThisInitialized(_this), "_renderEditHandle", function (editHandle, feature) { + /* eslint-enable max-params */ + var coordinates = (0, _utils.getFeatureCoordinates)(editHandle); + + var p = _this.project(coordinates && coordinates[0]); + + if (!p) { + return null; + } + + var _editHandle$propertie = editHandle.properties, + featureIndex = _editHandle$propertie.featureIndex, + positionIndexes = _editHandle$propertie.positionIndexes, + editHandleType = _editHandle$propertie.editHandleType; + var _this$props = _this.props, + clickRadius = _this$props.clickRadius, + editHandleShape = _this$props.editHandleShape, + editHandleStyle = _this$props.editHandleStyle; + var index = positionIndexes.length > 1 ? positionIndexes[1] : positionIndexes[0]; + + var shape = _this._getStyleProp(editHandleShape, { + feature: feature || editHandle, + index: index, + featureIndex: featureIndex, + // @ts-ignore + state: _this._getEditHandleState(editHandle) + }); + + var style = _this._getStyleProp(editHandleStyle, { + feature: feature || editHandle, + index: index, + featureIndex: featureIndex, + shape: shape, + // @ts-ignore + state: _this._getEditHandleState(editHandle) + }); // disable events for cursor editHandle + + + if (editHandle.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE) { + style = _objectSpread({}, style, { + // disable pointer events for cursor + pointerEvents: 'none' + }); + } + + var elemKey = "".concat(_constants.ELEMENT_TYPE.EDIT_HANDLE, ".").concat(featureIndex, ".").concat(index, ".").concat(editHandleType); // first is to make path easily interacted with + + switch (shape) { + case 'circle': + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(p[0], ", ").concat(p[1], ")") + }, /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + stroke: 'none', + fill: '#000', + fillOpacity: 0 + }), + cx: 0, + cy: 0, + r: clickRadius + }), /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: elemKey, + style: style, + cx: 0, + cy: 0 + })); + + case 'rect': + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(p[0], ", ").concat(p[1], ")") + }, /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + height: clickRadius, + width: clickRadius, + fill: '#000', + fillOpacity: 0 + }), + r: clickRadius + }), /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey), + style: style + })); + + default: + return null; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_renderSegment", function (featureIndex, index, coordinates, style) { + var path = _this._getPathInScreenCoords(coordinates, _constants.GEOJSON_TYPE.LINE_STRING); + + var radius = style.radius, + others = _objectWithoutProperties(style, ["radius"]); + + var clickRadius = _this.props.clickRadius; + var elemKey = "".concat(_constants.ELEMENT_TYPE.SEGMENT, ".").concat(featureIndex, ".").concat(index); + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, /*#__PURE__*/React.createElement("path", { + key: "".concat(elemKey, ".hidden"), + "data-type": _constants.ELEMENT_TYPE.SEGMENT, + "data-index": index, + "data-feature-index": featureIndex, + style: _objectSpread({}, others, { + stroke: 'rgba(0,0,0,0)', + strokeWidth: clickRadius || radius, + opacity: 0 + }), + d: path + }), /*#__PURE__*/React.createElement("path", { + key: elemKey, + "data-type": _constants.ELEMENT_TYPE.SEGMENT, + "data-index": index, + "data-feature-index": featureIndex, + style: others, + d: path + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderSegments", function (featureIndex, coordinates, style) { + var segments = []; + + for (var i = 0; i < coordinates.length - 1; i++) { + segments.push(_this._renderSegment(featureIndex, i, [coordinates[i], coordinates[i + 1]], style)); + } + + return segments; + }); + + _defineProperty(_assertThisInitialized(_this), "_renderFill", function (featureIndex, coordinates, style) { + var path = _this._getPathInScreenCoords(coordinates, _constants.GEOJSON_TYPE.POLYGON); + + return /*#__PURE__*/React.createElement("path", { + key: "".concat(_constants.ELEMENT_TYPE.FILL, ".").concat(featureIndex), + "data-type": _constants.ELEMENT_TYPE.FILL, + "data-feature-index": featureIndex, + style: _objectSpread({}, style, { + stroke: 'none' + }), + d: path + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderTentativeFeature", function (feature, cursorEditHandle) { + var featureStyle = _this.props.featureStyle; + var geojsonType = feature.geometry.type, + properties = feature.properties; + var shape = properties === null || properties === void 0 ? void 0 : properties.shape; + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates || !Array.isArray(coordinates) || coordinates.length < 2) { + return null; + } // >= 2 coordinates + + + var firstCoords = coordinates[0]; + var lastCoords = coordinates[coordinates.length - 1]; + + var uncommittedStyle = _this._getStyleProp(featureStyle, { + feature: feature, + index: null, + state: _constants.RENDER_STATE.UNCOMMITTED + }); + + var committedPath; + var uncommittedPath; + var closingPath; // @ts-ignore + + var fill = _this._renderFill('tentative', coordinates, uncommittedStyle); + + var type = shape || geojsonType; + + switch (type) { + case _constants.SHAPE.LINE_STRING: + case _constants.SHAPE.POLYGON: + var committedStyle = _this._getStyleProp(featureStyle, { + feature: feature, + state: _constants.RENDER_STATE.SELECTED + }); + + if (cursorEditHandle) { + // @ts-ignore + var cursorCoords = coordinates[coordinates.length - 2]; + committedPath = _this._renderSegments('tentative', // @ts-ignore + coordinates.slice(0, coordinates.length - 1), committedStyle); + uncommittedPath = _this._renderSegment('tentative-uncommitted', // @ts-ignore + coordinates.length - 2, // @ts-ignore + [cursorCoords, lastCoords], uncommittedStyle); + } else { + // @ts-ignore + committedPath = _this._renderSegments('tentative', coordinates, committedStyle); + } + + if (shape === _constants.SHAPE.POLYGON) { + var closingStyle = _this._getStyleProp(featureStyle, { + feature: feature, + index: null, + state: _constants.RENDER_STATE.CLOSING + }); + + closingPath = _this._renderSegment('tentative-closing', // @ts-ignore + coordinates.length - 1, // @ts-ignore + [lastCoords, firstCoords], closingStyle); + } + + break; + + case _constants.SHAPE.RECTANGLE: + uncommittedPath = _this._renderSegments('tentative', // @ts-ignore + [].concat(_toConsumableArray(coordinates), [firstCoords]), uncommittedStyle); + break; + + default: + } + + return [fill, committedPath, uncommittedPath, closingPath].filter(Boolean); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderGuides", function (guideFeatures) { + var features = _this.getFeatures(); + + var cursorEditHandle = guideFeatures && guideFeatures.find(function (f) { + return f.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE; + }); + var tentativeFeature = features.find(function (f) { + return f.properties.guideType === _constants.GUIDE_TYPE.TENTATIVE; + }); + return /*#__PURE__*/React.createElement("g", { + key: "feature-guides" + }, guideFeatures.map(function (guide) { + var guideType = guide.properties.guideType; + + switch (guideType) { + case _constants.GUIDE_TYPE.TENTATIVE: + return _this._renderTentativeFeature(guide, cursorEditHandle); + + case _constants.GUIDE_TYPE.EDIT_HANDLE: + case _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE: + var shape = guide.properties.shape || guide.geometry.type; // TODO this should be removed when fix editing mode + // don't render cursor for rectangle + + if (shape === _constants.SHAPE.RECTANGLE && guide.properties.editHandleType === 'intermediate') { + return null; + } + + var feature = features && features[guide.properties.featureIndex] || tentativeFeature; + return _this._renderEditHandle(guide, feature); + + default: + return null; + } + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPoint", function (feature, index, path) { + // @ts-ignore + var renderState = _this._getFeatureRenderState(index); + + var _this$props2 = _this.props, + featureStyle = _this$props2.featureStyle, + featureShape = _this$props2.featureShape, + clickRadius = _this$props2.clickRadius; + + var shape = _this._getStyleProp(featureShape, { + feature: feature, + index: index, + state: renderState + }); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (shape === 'rect') { + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(path[0][0], ", ").concat(path[0][1], ")") + }, /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + width: clickRadius, + height: clickRadius, + fill: '#000', + fillOpacity: 0 + }) + }), /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style + })); + } + + return /*#__PURE__*/React.createElement("g", { + key: "feature.".concat(index), + transform: "translate(".concat(path[0][0], ", ").concat(path[0][1], ")") + }, /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + opacity: 0 + }), + cx: 0, + cy: 0, + r: clickRadius + }), /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + cx: 0, + cy: 0 + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPath", function (feature, index, path) { + var _this$props3 = _this.props, + featureStyle = _this$props3.featureStyle, + clickRadius = _this$props3.clickRadius; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + var selected = index === selectedFeatureIndex; // @ts-ignore + + var renderState = _this._getFeatureRenderState(index); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (selected) { + return ( + /*#__PURE__*/ + // @ts-ignore + React.createElement("g", { + key: elemKey + }, _this._renderSegments(index, feature.geometry.coordinates, style)) + ); + } // first is to make path easily interacted with + + + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + stroke: 'rgba(0,0,0,0)', + strokeWidth: clickRadius, + opacity: 0 + }), + d: path + }), /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + d: path + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPolygon", function (feature, index, path) { + var featureStyle = _this.props.featureStyle; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + var selected = index === selectedFeatureIndex; // @ts-ignore + + var renderState = _this._getFeatureRenderState(index); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (selected) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, // eslint-disable-next-line prettier/prettier + //@ts-ignore + _this._renderFill(index, coordinates, style), // eslint-disable-next-line prettier/prettier + // @ts-ignore + _this._renderSegments(index, coordinates, style)); + } + + return /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + d: path + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderFeature", function (feature, index) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); // @ts-ignore + + if (!coordinates || !coordinates.length) { + return null; + } + + var properties = feature.properties, + geojsonType = feature.geometry.type; + var shape = properties === null || properties === void 0 ? void 0 : properties.shape; // @ts-ignore + + var path = _this._getPathInScreenCoords(coordinates, geojsonType); + + if (!path) { + return null; + } + + var type = shape || geojsonType; + + switch (type) { + case _constants.SHAPE.POINT: + return _this._renderPoint(feature, index, path); + + case _constants.SHAPE.LINE_STRING: + return _this._renderPath(feature, index, path); + + case _constants.SHAPE.CIRCLE: + case _constants.SHAPE.POLYGON: + case _constants.SHAPE.RECTANGLE: + return _this._renderPolygon(feature, index, path); + + default: + return null; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_renderCanvas", function () { + var features = _this.getFeatures(); + + var guides = _this._modeHandler && _this._modeHandler.getGuides(_this.getModeProps()); + + var guideFeatures = guides && guides.features; + return /*#__PURE__*/React.createElement("svg", { + key: "draw-canvas", + width: "100%", + height: "100%" + }, features && features.length > 0 && /*#__PURE__*/React.createElement("g", { + key: "feature-group" + }, features.map(_this._renderFeature)), guideFeatures && guideFeatures.length > 0 && /*#__PURE__*/React.createElement("g", { + key: "feature-guides" + }, _this._renderGuides(guideFeatures))); + }); + + _defineProperty(_assertThisInitialized(_this), "_render", function () { + var viewport = _this._context && _this._context.viewport || {}; + var style = _this.props.style; // @ts-ignore + + var _viewport$width = viewport.width, + width = _viewport$width === void 0 ? 0 : _viewport$width, + _viewport$height = viewport.height, + height = _viewport$height === void 0 ? 0 : _viewport$height; + return /*#__PURE__*/React.createElement("div", { + id: "editor", + style: _objectSpread({ + width: width, + height: height + }, style), + ref: function ref(_) { + _this._containerRef = _; + } + }, _this._renderCanvas()); + }); + + return _this; + } + + _createClass(Editor, [{ + key: "_getPathInScreenCoords", + + /* HELPERS */ + value: function _getPathInScreenCoords(coordinates, type) { + var _this2 = this; + + if (coordinates.length === 0) { + return ''; + } + + var screenCoords = coordinates.map(function (p) { + return _this2.project(p); + }); + var pathString = ''; + + switch (type) { + case _constants.GEOJSON_TYPE.POINT: + return screenCoords; + + case _constants.GEOJSON_TYPE.LINE_STRING: + pathString = screenCoords.map(function (p) { + return "".concat(p[0], ",").concat(p[1]); + }).join('L'); + return "M ".concat(pathString); + + case _constants.GEOJSON_TYPE.POLYGON: + pathString = screenCoords.map(function (p) { + return "".concat(p[0], ",").concat(p[1]); + }).join('L'); + return "M ".concat(pathString, " z"); + + default: + return null; + } + } + }]); + + return Editor; +}(_modeHandler["default"]); + +exports["default"] = Editor; + +_defineProperty(Editor, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3IudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsIk1vZGVIYW5kbGVyIiwiY2xpY2tSYWRpdXMiLCJmZWF0dXJlU2hhcGUiLCJlZGl0SGFuZGxlU2hhcGUiLCJlZGl0SGFuZGxlU3R5bGUiLCJkZWZhdWx0RWRpdEhhbmRsZVN0eWxlIiwiZmVhdHVyZVN0eWxlIiwiZGVmYXVsdEZlYXR1cmVTdHlsZSIsImZlYXR1cmVzRHJhZ2dhYmxlIiwiRWRpdG9yIiwiZWRpdEhhbmRsZSIsInJlbmRlclN0YXRlIiwic3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwiaG92ZXJlZCIsImVkaXRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJkcmFnZ2luZ0VkaXRIYW5kbGVJbmRleCIsInBpY2tlZE9iamVjdCIsIm9iamVjdCIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJFRElUX0hBTkRMRSIsImluZGV4Iiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyIsImluY2x1ZGVzIiwiUkVOREVSX1NUQVRFIiwiU0VMRUNURUQiLCJ0eXBlIiwiRUxFTUVOVF9UWVBFIiwiSE9WRVJFRCIsIkNVUlNPUl9FRElUX0hBTkRMRSIsIkNMT1NJTkciLCJJTkFDVElWRSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4IiwiRkVBVFVSRSIsImZlYXR1cmVJbmRleCIsInN0eWxlUHJvcCIsInBhcmFtcyIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsInAiLCJwcm9qZWN0IiwiZWRpdEhhbmRsZVR5cGUiLCJwcm9wcyIsImxlbmd0aCIsInNoYXBlIiwiX2dldFN0eWxlUHJvcCIsIl9nZXRFZGl0SGFuZGxlU3RhdGUiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJlbGVtS2V5Iiwic3Ryb2tlIiwiZmlsbCIsImZpbGxPcGFjaXR5IiwiaGVpZ2h0Iiwid2lkdGgiLCJwYXRoIiwiX2dldFBhdGhJblNjcmVlbkNvb3JkcyIsIkdFT0pTT05fVFlQRSIsIkxJTkVfU1RSSU5HIiwicmFkaXVzIiwib3RoZXJzIiwiU0VHTUVOVCIsInN0cm9rZVdpZHRoIiwib3BhY2l0eSIsInNlZ21lbnRzIiwiaSIsInB1c2giLCJfcmVuZGVyU2VnbWVudCIsIlBPTFlHT04iLCJGSUxMIiwiY3Vyc29yRWRpdEhhbmRsZSIsImdlb2pzb25UeXBlIiwiZ2VvbWV0cnkiLCJBcnJheSIsImlzQXJyYXkiLCJmaXJzdENvb3JkcyIsImxhc3RDb29yZHMiLCJ1bmNvbW1pdHRlZFN0eWxlIiwiVU5DT01NSVRURUQiLCJjb21taXR0ZWRQYXRoIiwidW5jb21taXR0ZWRQYXRoIiwiY2xvc2luZ1BhdGgiLCJfcmVuZGVyRmlsbCIsIlNIQVBFIiwiY29tbWl0dGVkU3R5bGUiLCJjdXJzb3JDb29yZHMiLCJfcmVuZGVyU2VnbWVudHMiLCJzbGljZSIsImNsb3NpbmdTdHlsZSIsIlJFQ1RBTkdMRSIsImZpbHRlciIsIkJvb2xlYW4iLCJndWlkZUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJnZXRGZWF0dXJlcyIsImZpbmQiLCJmIiwidGVudGF0aXZlRmVhdHVyZSIsIlRFTlRBVElWRSIsIm1hcCIsImd1aWRlIiwiX3JlbmRlclRlbnRhdGl2ZUZlYXR1cmUiLCJfcmVuZGVyRWRpdEhhbmRsZSIsIl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUiLCJzZWxlY3RlZCIsIlBPSU5UIiwiX3JlbmRlclBvaW50IiwiX3JlbmRlclBhdGgiLCJDSVJDTEUiLCJfcmVuZGVyUG9seWdvbiIsImd1aWRlcyIsIl9tb2RlSGFuZGxlciIsImdldEd1aWRlcyIsImdldE1vZGVQcm9wcyIsIl9yZW5kZXJGZWF0dXJlIiwiX3JlbmRlckd1aWRlcyIsInZpZXdwb3J0IiwiX2NvbnRleHQiLCJfIiwiX2NvbnRhaW5lclJlZiIsIl9yZW5kZXJDYW52YXMiLCJzY3JlZW5Db29yZHMiLCJwYXRoU3RyaW5nIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBS0E7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QUN0QixHQUFiLENBQWlCLFVBQUM1RCxDQUFEO0FBQUEsNkJBQVVBLENBQUMsQ0FBQyxDQUFELENBQVgsY0FBa0JBLENBQUMsQ0FBQyxDQUFELENBQW5CO0FBQUEsV0FBakIsRUFBMkNvRixJQUEzQyxDQUFnRCxHQUFoRCxDQUFiO0FBQ0EsNkJBQVlELFVBQVo7O0FBRUY7QUFDRSxpQkFBTyxJQUFQO0FBYko7QUFlRDs7OztFQTNCaUM5SCx1Qjs7OztnQkFBZlMsTSxrQkFDR1YsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBHZW9Kc29uVHlwZSwgUmVuZGVyU3RhdGUsIElkIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IFJFTkRFUl9TVEFURSwgU0hBUEUsIEdFT0pTT05fVFlQRSwgR1VJREVfVFlQRSwgRUxFTUVOVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IE1vZGVIYW5kbGVyIGZyb20gJy4vbW9kZS1oYW5kbGVyJztcbmltcG9ydCB7IGdldEZlYXR1cmVDb29yZGluYXRlcyB9IGZyb20gJy4vZWRpdC1tb2Rlcy91dGlscyc7XG5cbmltcG9ydCB7XG4gIGVkaXRIYW5kbGVTdHlsZSBhcyBkZWZhdWx0RWRpdEhhbmRsZVN0eWxlLFxuICBmZWF0dXJlU3R5bGUgYXMgZGVmYXVsdEZlYXR1cmVTdHlsZSxcbn0gZnJvbSAnLi9zdHlsZSc7XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uTW9kZUhhbmRsZXIuZGVmYXVsdFByb3BzLFxuICBjbGlja1JhZGl1czogMCxcbiAgZmVhdHVyZVNoYXBlOiAnY2lyY2xlJyxcbiAgZWRpdEhhbmRsZVNoYXBlOiAncmVjdCcsXG4gIGVkaXRIYW5kbGVTdHlsZTogZGVmYXVsdEVkaXRIYW5kbGVTdHlsZSxcbiAgZmVhdHVyZVN0eWxlOiBkZWZhdWx0RmVhdHVyZVN0eWxlLFxuICBmZWF0dXJlc0RyYWdnYWJsZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRvciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvKiBIRUxQRVJTICovXG4gIF9nZXRQYXRoSW5TY3JlZW5Db29yZHMoY29vcmRpbmF0ZXM6IGFueSwgdHlwZTogR2VvSnNvblR5cGUpIHtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NyZWVuQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChwKSA9PiB0aGlzLnByb2plY3QocCkpO1xuXG4gICAgbGV0IHBhdGhTdHJpbmcgPSAnJztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgR0VPSlNPTl9UWVBFLlBPSU5UOlxuICAgICAgICByZXR1cm4gc2NyZWVuQ29vcmRzO1xuXG4gICAgICBjYXNlIEdFT0pTT05fVFlQRS5MSU5FX1NUUklORzpcbiAgICAgICAgcGF0aFN0cmluZyA9IHNjcmVlbkNvb3Jkcy5tYXAoKHApID0+IGAke3BbMF19LCR7cFsxXX1gKS5qb2luKCdMJyk7XG4gICAgICAgIHJldHVybiBgTSAke3BhdGhTdHJpbmd9YDtcblxuICAgICAgY2FzZSBHRU9KU09OX1RZUEUuUE9MWUdPTjpcbiAgICAgICAgcGF0aFN0cmluZyA9IHNjcmVlbkNvb3Jkcy5tYXAoKHApID0+IGAke3BbMF19LCR7cFsxXX1gKS5qb2luKCdMJyk7XG4gICAgICAgIHJldHVybiBgTSAke3BhdGhTdHJpbmd9IHpgO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfZ2V0RWRpdEhhbmRsZVN0YXRlID0gKGVkaXRIYW5kbGU6IEZlYXR1cmUsIHJlbmRlclN0YXRlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93blBpY2tzLCBob3ZlcmVkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKHJlbmRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyU3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdEhhbmRsZUluZGV4ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXTtcbiAgICBsZXQgZHJhZ2dpbmdFZGl0SGFuZGxlSW5kZXggPSBudWxsO1xuICAgIGNvbnN0IHBpY2tlZE9iamVjdCA9IHBvaW50ZXJEb3duUGlja3MgJiYgcG9pbnRlckRvd25QaWNrc1swXSAmJiBwb2ludGVyRG93blBpY2tzWzBdLm9iamVjdDtcbiAgICBpZiAocGlja2VkT2JqZWN0ICYmIHBpY2tlZE9iamVjdC5ndWlkZVR5cGUgPT09IEdVSURFX1RZUEUuRURJVF9IQU5ETEUpIHtcbiAgICAgIGRyYWdnaW5nRWRpdEhhbmRsZUluZGV4ID0gcGlja2VkT2JqZWN0LmluZGV4O1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGVkaXRIYW5kbGVJbmRleCA9PT0gZHJhZ2dpbmdFZGl0SGFuZGxlSW5kZXggfHxcbiAgICAgIHRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5pbmNsdWRlcyhlZGl0SGFuZGxlSW5kZXgpXG4gICAgKSB7XG4gICAgICByZXR1cm4gUkVOREVSX1NUQVRFLlNFTEVDVEVEO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKGhvdmVyZWQgJiYgaG92ZXJlZC50eXBlID09PSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEUpIHtcbiAgICAgIGlmIChob3ZlcmVkLmluZGV4ID09PSBlZGl0SGFuZGxlSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIFJFTkRFUl9TVEFURS5IT1ZFUkVEO1xuICAgICAgfVxuXG4gICAgICAvLyBjdXJzb3IgaG92ZXJlZCBvbiBmaXJzdCB2ZXJ0ZXggd2hlbiBkcmF3aW5nIHBvbHlnb25cbiAgICAgIGlmIChcbiAgICAgICAgaG92ZXJlZC5pbmRleCA9PT0gMCAmJlxuICAgICAgICBlZGl0SGFuZGxlLnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBSRU5ERVJfU1RBVEUuQ0xPU0lORztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUkVOREVSX1NUQVRFLklOQUNUSVZFO1xuICB9O1xuXG4gIF9nZXRGZWF0dXJlUmVuZGVyU3RhdGUgPSAoaW5kZXg6IG51bWJlciwgcmVuZGVyU3RhdGU6IFJlbmRlclN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGNvbnN0IHsgaG92ZXJlZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgaWYgKHJlbmRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyU3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID09PSBzZWxlY3RlZEZlYXR1cmVJbmRleCkge1xuICAgICAgcmV0dXJuIFJFTkRFUl9TVEFURS5TRUxFQ1RFRDtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChob3ZlcmVkICYmIGhvdmVyZWQudHlwZSA9PT0gRUxFTUVOVF9UWVBFLkZFQVRVUkUgJiYgaG92ZXJlZC5mZWF0dXJlSW5kZXggPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gUkVOREVSX1NUQVRFLkhPVkVSRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIFJFTkRFUl9TVEFURS5JTkFDVElWRTtcbiAgfTtcblxuICBfZ2V0U3R5bGVQcm9wID0gKHN0eWxlUHJvcDogYW55LCBwYXJhbXM6IGFueSkgPT4ge1xuICAgIHJldHVybiB0eXBlb2Ygc3R5bGVQcm9wID09PSAnZnVuY3Rpb24nID8gc3R5bGVQcm9wKHBhcmFtcykgOiBzdHlsZVByb3A7XG4gIH07XG5cbiAgLyogUkVOREVSICovXG5cbiAgLyogZXNsaW50LWRpc2FibGUgbWF4LXBhcmFtcyAqL1xuICBfcmVuZGVyRWRpdEhhbmRsZSA9IChlZGl0SGFuZGxlOiBGZWF0dXJlLCBmZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBtYXgtcGFyYW1zICovXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZWRpdEhhbmRsZSk7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvamVjdChjb29yZGluYXRlcyAmJiBjb29yZGluYXRlc1swXSk7XG4gICAgaWYgKCFwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9wZXJ0aWVzOiB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlVHlwZSB9LFxuICAgIH0gPSBlZGl0SGFuZGxlO1xuICAgIGNvbnN0IHsgY2xpY2tSYWRpdXMsIGVkaXRIYW5kbGVTaGFwZSwgZWRpdEhhbmRsZVN0eWxlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgaW5kZXggPSBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID4gMSA/IHBvc2l0aW9uSW5kZXhlc1sxXSA6IHBvc2l0aW9uSW5kZXhlc1swXTtcblxuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGVkaXRIYW5kbGVTaGFwZSwge1xuICAgICAgZmVhdHVyZTogZmVhdHVyZSB8fCBlZGl0SGFuZGxlLFxuICAgICAgaW5kZXgsXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzdGF0ZTogdGhpcy5fZ2V0RWRpdEhhbmRsZVN0YXRlKGVkaXRIYW5kbGUpLFxuICAgIH0pO1xuXG4gICAgbGV0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGVkaXRIYW5kbGVTdHlsZSwge1xuICAgICAgZmVhdHVyZTogZmVhdHVyZSB8fCBlZGl0SGFuZGxlLFxuICAgICAgaW5kZXgsXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBzaGFwZSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHN0YXRlOiB0aGlzLl9nZXRFZGl0SGFuZGxlU3RhdGUoZWRpdEhhbmRsZSksXG4gICAgfSk7XG5cbiAgICAvLyBkaXNhYmxlIGV2ZW50cyBmb3IgY3Vyc29yIGVkaXRIYW5kbGVcbiAgICBpZiAoZWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gR1VJREVfVFlQRS5DVVJTT1JfRURJVF9IQU5ETEUpIHtcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgLy8gZGlzYWJsZSBwb2ludGVyIGV2ZW50cyBmb3IgY3Vyc29yXG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbUtleSA9IGAke0VMRU1FTlRfVFlQRS5FRElUX0hBTkRMRX0uJHtmZWF0dXJlSW5kZXh9LiR7aW5kZXh9LiR7ZWRpdEhhbmRsZVR5cGV9YDtcbiAgICAvLyBmaXJzdCA8Y2lyY2xlfHJlY3Q+IGlzIHRvIG1ha2UgcGF0aCBlYXNpbHkgaW50ZXJhY3RlZCB3aXRoXG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8ZyBrZXk9e2VsZW1LZXl9IHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke3BbMF19LCAke3BbMV19KWB9PlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5FRElUX0hBTkRMRX1cbiAgICAgICAgICAgICAgZGF0YS1pbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCBzdHJva2U6ICdub25lJywgZmlsbDogJyMwMDAnLCBmaWxsT3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBjeD17MH1cbiAgICAgICAgICAgICAgY3k9ezB9XG4gICAgICAgICAgICAgIHI9e2NsaWNrUmFkaXVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEV9XG4gICAgICAgICAgICAgIGRhdGEtaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2ZlYXR1cmVJbmRleH1cbiAgICAgICAgICAgICAga2V5PXtlbGVtS2V5fVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAgIGN4PXswfVxuICAgICAgICAgICAgICBjeT17MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICApO1xuICAgICAgY2FzZSAncmVjdCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGcga2V5PXtlbGVtS2V5fSB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtwWzBdfSwgJHtwWzFdfSlgfT5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkVESVRfSEFORExFfVxuICAgICAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtmZWF0dXJlSW5kZXh9XG4gICAgICAgICAgICAgIGtleT17YCR7ZWxlbUtleX0uaGlkZGVuYH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBjbGlja1JhZGl1cyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHI9e2NsaWNrUmFkaXVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkVESVRfSEFORExFfVxuICAgICAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtmZWF0dXJlSW5kZXh9XG4gICAgICAgICAgICAgIGtleT17YCR7ZWxlbUtleX1gfVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJTZWdtZW50ID0gKFxuICAgIGZlYXR1cmVJbmRleDogSWQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb29yZGluYXRlczogbnVtYmVyW10sXG4gICAgc3R5bGU6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuX2dldFBhdGhJblNjcmVlbkNvb3Jkcyhjb29yZGluYXRlcywgR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKTtcbiAgICBjb25zdCB7IHJhZGl1cywgLi4ub3RoZXJzIH0gPSBzdHlsZTtcbiAgICBjb25zdCB7IGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGAke0VMRU1FTlRfVFlQRS5TRUdNRU5UfS4ke2ZlYXR1cmVJbmRleH0uJHtpbmRleH1gO1xuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2VsZW1LZXl9PlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGtleT17YCR7ZWxlbUtleX0uaGlkZGVuYH1cbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5TRUdNRU5UfVxuICAgICAgICAgIGRhdGEtaW5kZXg9e2luZGV4fVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5vdGhlcnMsXG4gICAgICAgICAgICBzdHJva2U6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBjbGlja1JhZGl1cyB8fCByYWRpdXMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZD17cGF0aH1cbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuU0VHTUVOVH1cbiAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2ZlYXR1cmVJbmRleH1cbiAgICAgICAgICBzdHlsZT17b3RoZXJzfVxuICAgICAgICAgIGQ9e3BhdGh9XG4gICAgICAgIC8+XG4gICAgICA8L2c+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyU2VnbWVudHMgPSAoZmVhdHVyZUluZGV4OiBJZCwgY29vcmRpbmF0ZXM6IG51bWJlcltdLCBzdHlsZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goXG4gICAgICAgIHRoaXMuX3JlbmRlclNlZ21lbnQoZmVhdHVyZUluZGV4LCBpLCBbY29vcmRpbmF0ZXNbaV0sIGNvb3JkaW5hdGVzW2kgKyAxXV0sIHN0eWxlKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9O1xuXG4gIF9yZW5kZXJGaWxsID0gKGZlYXR1cmVJbmRleDogSWQsIGNvb3JkaW5hdGVzOiBudW1iZXJbXSwgc3R5bGU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5fZ2V0UGF0aEluU2NyZWVuQ29vcmRzKGNvb3JkaW5hdGVzLCBHRU9KU09OX1RZUEUuUE9MWUdPTik7XG4gICAgcmV0dXJuIChcbiAgICAgIDxwYXRoXG4gICAgICAgIGtleT17YCR7RUxFTUVOVF9UWVBFLkZJTEx9LiR7ZmVhdHVyZUluZGV4fWB9XG4gICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZJTEx9XG4gICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICBzdHlsZT17eyAuLi5zdHlsZSwgc3Ryb2tlOiAnbm9uZScgfX1cbiAgICAgICAgZD17cGF0aH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyVGVudGF0aXZlRmVhdHVyZSA9IChmZWF0dXJlOiBGZWF0dXJlLCBjdXJzb3JFZGl0SGFuZGxlOiBGZWF0dXJlKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgZ2VvbWV0cnk6IHsgdHlwZTogZ2VvanNvblR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgfSA9IGZlYXR1cmU7XG5cbiAgICBjb25zdCBzaGFwZSA9IHByb3BlcnRpZXM/LnNoYXBlO1xuXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgaWYgKCFjb29yZGluYXRlcyB8fCAhQXJyYXkuaXNBcnJheShjb29yZGluYXRlcykgfHwgY29vcmRpbmF0ZXMubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gPj0gMiBjb29yZGluYXRlc1xuICAgIGNvbnN0IGZpcnN0Q29vcmRzID0gY29vcmRpbmF0ZXNbMF07XG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHVuY29tbWl0dGVkU3R5bGUgPSB0aGlzLl9nZXRTdHlsZVByb3AoZmVhdHVyZVN0eWxlLCB7XG4gICAgICBmZWF0dXJlLFxuICAgICAgaW5kZXg6IG51bGwsXG4gICAgICBzdGF0ZTogUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVELFxuICAgIH0pO1xuXG4gICAgbGV0IGNvbW1pdHRlZFBhdGg7XG4gICAgbGV0IHVuY29tbWl0dGVkUGF0aDtcbiAgICBsZXQgY2xvc2luZ1BhdGg7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGZpbGwgPSB0aGlzLl9yZW5kZXJGaWxsKCd0ZW50YXRpdmUnLCBjb29yZGluYXRlcywgdW5jb21taXR0ZWRTdHlsZSk7XG5cbiAgICBjb25zdCB0eXBlID0gc2hhcGUgfHwgZ2VvanNvblR5cGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFNIQVBFLkxJTkVfU1RSSU5HOlxuICAgICAgY2FzZSBTSEFQRS5QT0xZR09OOlxuICAgICAgICBjb25zdCBjb21taXR0ZWRTdHlsZSA9IHRoaXMuX2dldFN0eWxlUHJvcChmZWF0dXJlU3R5bGUsIHtcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIHN0YXRlOiBSRU5ERVJfU1RBVEUuU0VMRUNURUQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJzb3JFZGl0SGFuZGxlKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbnN0IGN1cnNvckNvb3JkcyA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgIGNvbW1pdHRlZFBhdGggPSB0aGlzLl9yZW5kZXJTZWdtZW50cyhcbiAgICAgICAgICAgICd0ZW50YXRpdmUnLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMuc2xpY2UoMCwgY29vcmRpbmF0ZXMubGVuZ3RoIC0gMSksXG4gICAgICAgICAgICBjb21taXR0ZWRTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdW5jb21taXR0ZWRQYXRoID0gdGhpcy5fcmVuZGVyU2VnbWVudChcbiAgICAgICAgICAgICd0ZW50YXRpdmUtdW5jb21taXR0ZWQnLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMubGVuZ3RoIC0gMixcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIFtjdXJzb3JDb29yZHMsIGxhc3RDb29yZHNdLFxuICAgICAgICAgICAgdW5jb21taXR0ZWRTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbW1pdHRlZFBhdGggPSB0aGlzLl9yZW5kZXJTZWdtZW50cygndGVudGF0aXZlJywgY29vcmRpbmF0ZXMsIGNvbW1pdHRlZFN0eWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaGFwZSA9PT0gU0hBUEUuUE9MWUdPTikge1xuICAgICAgICAgIGNvbnN0IGNsb3NpbmdTdHlsZSA9IHRoaXMuX2dldFN0eWxlUHJvcChmZWF0dXJlU3R5bGUsIHtcbiAgICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgICBpbmRleDogbnVsbCxcbiAgICAgICAgICAgIHN0YXRlOiBSRU5ERVJfU1RBVEUuQ0xPU0lORyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNsb3NpbmdQYXRoID0gdGhpcy5fcmVuZGVyU2VnbWVudChcbiAgICAgICAgICAgICd0ZW50YXRpdmUtY2xvc2luZycsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb29yZGluYXRlcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgW2xhc3RDb29yZHMsIGZpcnN0Q29vcmRzXSxcbiAgICAgICAgICAgIGNsb3NpbmdTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTSEFQRS5SRUNUQU5HTEU6XG4gICAgICAgIHVuY29tbWl0dGVkUGF0aCA9IHRoaXMuX3JlbmRlclNlZ21lbnRzKFxuICAgICAgICAgICd0ZW50YXRpdmUnLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBbLi4uY29vcmRpbmF0ZXMsIGZpcnN0Q29vcmRzXSxcbiAgICAgICAgICB1bmNvbW1pdHRlZFN0eWxlXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIHJldHVybiBbZmlsbCwgY29tbWl0dGVkUGF0aCwgdW5jb21taXR0ZWRQYXRoLCBjbG9zaW5nUGF0aF0uZmlsdGVyKEJvb2xlYW4pO1xuICB9O1xuXG4gIF9yZW5kZXJHdWlkZXMgPSAoZ3VpZGVGZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLmdldEZlYXR1cmVzKCk7XG4gICAgY29uc3QgY3Vyc29yRWRpdEhhbmRsZSA9XG4gICAgICBndWlkZUZlYXR1cmVzICYmXG4gICAgICBndWlkZUZlYXR1cmVzLmZpbmQoKGYpID0+IGYucHJvcGVydGllcy5ndWlkZVR5cGUgPT09IEdVSURFX1RZUEUuQ1VSU09SX0VESVRfSEFORExFKTtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gZmVhdHVyZXMuZmluZCgoZikgPT4gZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gR1VJREVfVFlQRS5URU5UQVRJVkUpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxnIGtleT1cImZlYXR1cmUtZ3VpZGVzXCI+XG4gICAgICAgIHtndWlkZUZlYXR1cmVzLm1hcCgoZ3VpZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBndWlkZVR5cGUgPSBndWlkZS5wcm9wZXJ0aWVzLmd1aWRlVHlwZTtcbiAgICAgICAgICBzd2l0Y2ggKGd1aWRlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLlRFTlRBVElWRTpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclRlbnRhdGl2ZUZlYXR1cmUoZ3VpZGUsIGN1cnNvckVkaXRIYW5kbGUpO1xuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLkVESVRfSEFORExFOlxuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRTpcbiAgICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSBndWlkZS5wcm9wZXJ0aWVzLnNoYXBlIHx8IGd1aWRlLmdlb21ldHJ5LnR5cGU7XG4gICAgICAgICAgICAgIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGZpeCBlZGl0aW5nIG1vZGVcbiAgICAgICAgICAgICAgLy8gZG9uJ3QgcmVuZGVyIGN1cnNvciBmb3IgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgIGlmIChzaGFwZSA9PT0gU0hBUEUuUkVDVEFOR0xFICYmIGd1aWRlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdpbnRlcm1lZGlhdGUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgICAgICAgICAgKGZlYXR1cmVzICYmIGZlYXR1cmVzW2d1aWRlLnByb3BlcnRpZXMuZmVhdHVyZUluZGV4XSkgfHwgdGVudGF0aXZlRmVhdHVyZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckVkaXRIYW5kbGUoZ3VpZGUsIGZlYXR1cmUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KX1cbiAgICAgIDwvZz5cbiAgICApO1xuICB9O1xuXG4gIF9yZW5kZXJQb2ludCA9IChmZWF0dXJlOiBGZWF0dXJlLCBpbmRleDogbnVtYmVyLCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVuZGVyU3RhdGUgPSB0aGlzLl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUoaW5kZXgpO1xuICAgIGNvbnN0IHsgZmVhdHVyZVN0eWxlLCBmZWF0dXJlU2hhcGUsIGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTaGFwZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTdHlsZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGBmZWF0dXJlLiR7aW5kZXh9YDtcbiAgICBpZiAoc2hhcGUgPT09ICdyZWN0Jykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fSB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtwYXRoWzBdWzBdfSwgJHtwYXRoWzBdWzFdfSlgfT5cbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuRkVBVFVSRX1cbiAgICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgd2lkdGg6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIGtleT17ZWxlbUtleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2BmZWF0dXJlLiR7aW5kZXh9YH0gdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7cGF0aFswXVswXX0sICR7cGF0aFswXVsxXX0pYH0+XG4gICAgICAgIDxjaXJjbGVcbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAga2V5PXtgJHtlbGVtS2V5fS5oaWRkZW5gfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjeD17MH1cbiAgICAgICAgICBjeT17MH1cbiAgICAgICAgICByPXtjbGlja1JhZGl1c31cbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZFQVRVUkV9XG4gICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgIGN4PXswfVxuICAgICAgICAgIGN5PXswfVxuICAgICAgICAvPlxuICAgICAgPC9nPlxuICAgICk7XG4gIH07XG5cbiAgX3JlbmRlclBhdGggPSAoZmVhdHVyZTogRmVhdHVyZSwgaW5kZXg6IG51bWJlciwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUsIGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGluZGV4ID09PSBzZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVuZGVyU3RhdGUgPSB0aGlzLl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUoaW5kZXgpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTdHlsZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGBmZWF0dXJlLiR7aW5kZXh9YDtcbiAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fT57dGhpcy5fcmVuZGVyU2VnbWVudHMoaW5kZXgsIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHN0eWxlKX08L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGZpcnN0IDxwYXRoPiBpcyB0byBtYWtlIHBhdGggZWFzaWx5IGludGVyYWN0ZWQgd2l0aFxuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2VsZW1LZXl9PlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZFQVRVUkV9XG4gICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgc3Ryb2tlOiAncmdiYSgwLDAsMCwwKScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogY2xpY2tSYWRpdXMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZD17cGF0aH1cbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAga2V5PXtlbGVtS2V5fVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBkPXtwYXRofVxuICAgICAgICAvPlxuICAgICAgPC9nPlxuICAgICk7XG4gIH07XG5cbiAgX3JlbmRlclBvbHlnb24gPSAoZmVhdHVyZTogRmVhdHVyZSwgaW5kZXg6IG51bWJlciwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gaW5kZXggPT09IHNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZW5kZXJTdGF0ZSA9IHRoaXMuX2dldEZlYXR1cmVSZW5kZXJTdGF0ZShpbmRleCk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9nZXRTdHlsZVByb3AoZmVhdHVyZVN0eWxlLCB7IGZlYXR1cmUsIGluZGV4LCBzdGF0ZTogcmVuZGVyU3RhdGUgfSk7XG5cbiAgICBjb25zdCBlbGVtS2V5ID0gYGZlYXR1cmUuJHtpbmRleH1gO1xuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgICBpZiAoIWNvb3JkaW5hdGVzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fT5cbiAgICAgICAgICB7Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5fcmVuZGVyRmlsbChpbmRleCwgY29vcmRpbmF0ZXMsIHN0eWxlKX1cbiAgICAgICAgICB7Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3JlbmRlclNlZ21lbnRzKGluZGV4LCBjb29yZGluYXRlcywgc3R5bGUpfVxuICAgICAgICA8L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8cGF0aFxuICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2luZGV4fVxuICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgZD17cGF0aH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyRmVhdHVyZSA9IChmZWF0dXJlOiBGZWF0dXJlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghY29vcmRpbmF0ZXMgfHwgIWNvb3JkaW5hdGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgICBnZW9tZXRyeTogeyB0eXBlOiBnZW9qc29uVHlwZSB9LFxuICAgIH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3Qgc2hhcGUgPSBwcm9wZXJ0aWVzPy5zaGFwZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuX2dldFBhdGhJblNjcmVlbkNvb3Jkcyhjb29yZGluYXRlcywgZ2VvanNvblR5cGUpO1xuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZSA9IHNoYXBlIHx8IGdlb2pzb25UeXBlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBTSEFQRS5QT0lOVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclBvaW50KGZlYXR1cmUsIGluZGV4LCBwYXRoKTtcbiAgICAgIGNhc2UgU0hBUEUuTElORV9TVFJJTkc6XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJQYXRoKGZlYXR1cmUsIGluZGV4LCBwYXRoKTtcblxuICAgICAgY2FzZSBTSEFQRS5DSVJDTEU6XG4gICAgICBjYXNlIFNIQVBFLlBPTFlHT046XG4gICAgICBjYXNlIFNIQVBFLlJFQ1RBTkdMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclBvbHlnb24oZmVhdHVyZSwgaW5kZXgsIHBhdGgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckNhbnZhcyA9ICgpID0+IHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuZ2V0RmVhdHVyZXMoKTtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLl9tb2RlSGFuZGxlciAmJiB0aGlzLl9tb2RlSGFuZGxlci5nZXRHdWlkZXModGhpcy5nZXRNb2RlUHJvcHMoKSk7XG4gICAgY29uc3QgZ3VpZGVGZWF0dXJlcyA9IGd1aWRlcyAmJiBndWlkZXMuZmVhdHVyZXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPHN2ZyBrZXk9XCJkcmF3LWNhbnZhc1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAge2ZlYXR1cmVzICYmIGZlYXR1cmVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxnIGtleT1cImZlYXR1cmUtZ3JvdXBcIj57ZmVhdHVyZXMubWFwKHRoaXMuX3JlbmRlckZlYXR1cmUpfTwvZz5cbiAgICAgICAgKX1cbiAgICAgICAge2d1aWRlRmVhdHVyZXMgJiYgZ3VpZGVGZWF0dXJlcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8ZyBrZXk9XCJmZWF0dXJlLWd1aWRlc1wiPnt0aGlzLl9yZW5kZXJHdWlkZXMoZ3VpZGVGZWF0dXJlcyl9PC9nPlxuICAgICAgICApfVxuICAgICAgPC9zdmc+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gKHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC52aWV3cG9ydCkgfHwge307XG4gICAgY29uc3QgeyBzdHlsZSB9ID0gdGhpcy5wcm9wcztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyB3aWR0aCA9IDAsIGhlaWdodCA9IDAgfSA9IHZpZXdwb3J0O1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwiZWRpdG9yXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17KF8pID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250YWluZXJSZWYgPSBfO1xuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5fcmVuZGVyQ2FudmFzKCl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/index.js b/modules/react-map-gl-draw/dist-es6/index.js new file mode 100644 index 000000000..4bb2d4c26 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/index.js @@ -0,0 +1,133 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _exportNames = { + Editor: true, + GEOJSON_TYPE: true, + SHAPE: true, + RENDER_STATE: true, + ELEMENT_TYPE: true, + EDIT_TYPE: true, + DrawCircleFromCenterMode: true, + DrawCircleByDiameterMode: true, + DrawPointMode: true, + DrawLineStringMode: true, + DrawPolygonMode: true, + DrawRectangleMode: true, + DrawPolygonByDraggingMode: true +}; +Object.defineProperty(exports, "Editor", { + enumerable: true, + get: function get() { + return _editor["default"]; + } +}); +Object.defineProperty(exports, "GEOJSON_TYPE", { + enumerable: true, + get: function get() { + return _constants.GEOJSON_TYPE; + } +}); +Object.defineProperty(exports, "SHAPE", { + enumerable: true, + get: function get() { + return _constants.SHAPE; + } +}); +Object.defineProperty(exports, "RENDER_STATE", { + enumerable: true, + get: function get() { + return _constants.RENDER_STATE; + } +}); +Object.defineProperty(exports, "ELEMENT_TYPE", { + enumerable: true, + get: function get() { + return _constants.ELEMENT_TYPE; + } +}); +Object.defineProperty(exports, "EDIT_TYPE", { + enumerable: true, + get: function get() { + return _constants.EDIT_TYPE; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPolygonByDraggingMode; + } +}); + +var _editor = _interopRequireDefault(require("./editor")); + +var _constants = require("./constants"); + +var _editModes = require("./edit-modes"); + +Object.keys(_editModes).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _editModes[key]; + } + }); +}); + +var _types = require("./types"); + +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); +}); + +var _editModes2 = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdG9yIH0gZnJvbSAnLi9lZGl0b3InO1xuXG5leHBvcnQgeyBHRU9KU09OX1RZUEUsIFNIQVBFLCBSRU5ERVJfU1RBVEUsIEVMRU1FTlRfVFlQRSwgRURJVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2VkaXQtbW9kZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/mode-handler.js b/modules/react-map-gl-draw/dist-es6/mode-handler.js new file mode 100644 index 000000000..461ad72d2 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/mode-handler.js @@ -0,0 +1,708 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _reactMapGl = require("react-map-gl"); + +var React = _interopRequireWildcard(require("react")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editingMode = _interopRequireDefault(require("./edit-modes/editing-mode")); + +var _utils = require("./edit-modes/utils"); + +var _constants = require("./constants"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultProps = { + selectable: true, + mode: null, + features: null, + onSelect: null, + onUpdate: null, + onUpdateCursor: function onUpdateCursor() {} +}; +var defaultState = { + featureCollection: new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: [] + }), + selectedFeatureIndex: null, + selectedEditHandleIndexes: [], + // index, isGuide, mapCoords, screenCoords + hovered: null, + isDragging: false, + didDrag: false, + lastPointerMoveEvent: null, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null +}; + +var ModeHandler = /*#__PURE__*/function (_React$PureComponent) { + _inherits(ModeHandler, _React$PureComponent); + + var _super = _createSuper(ModeHandler); + + function ModeHandler(props) { + var _this; + + _classCallCheck(this, ModeHandler); + + _this = _super.call(this, props); + + _defineProperty(_assertThisInitialized(_this), "_events", void 0); + + _defineProperty(_assertThisInitialized(_this), "_eventsRegistered", void 0); + + _defineProperty(_assertThisInitialized(_this), "_modeHandler", void 0); + + _defineProperty(_assertThisInitialized(_this), "_context", void 0); + + _defineProperty(_assertThisInitialized(_this), "_containerRef", void 0); + + _defineProperty(_assertThisInitialized(_this), "getFeatures", function () { + var featureCollection = _this._getFeatureCollection(); + + featureCollection = featureCollection && featureCollection.getObject(); + return featureCollection && featureCollection.features; + }); + + _defineProperty(_assertThisInitialized(_this), "addFeatures", function (features) { + var featureCollection = _this._getFeatureCollection(); + + if (featureCollection) { + if (!Array.isArray(features)) { + features = [features]; + } + + featureCollection = featureCollection.addFeatures(features); + + _this.setState({ + featureCollection: featureCollection + }); + } + }); + + _defineProperty(_assertThisInitialized(_this), "deleteFeatures", function (featureIndexes) { + var featureCollection = _this._getFeatureCollection(); + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + if (featureCollection) { + if (!Array.isArray(featureIndexes)) { + featureIndexes = [featureIndexes]; + } + + featureCollection = featureCollection.deleteFeatures(featureIndexes); + var newState = { + featureCollection: featureCollection + }; + + if (featureIndexes.findIndex(function (index) { + return selectedFeatureIndex === index; + }) >= 0) { + newState.selectedFeatureIndex = null; + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + } + }); + + _defineProperty(_assertThisInitialized(_this), "deleteHandles", function (featureIndex, handleIndexes) { + var featureCollection = _this._getFeatureCollection(); + + if (!featureIndex) { + featureIndex = _this._getSelectedFeatureIndex(); + } + + if (!handleIndexes) { + if (!_this.state.selectedEditHandleIndexes.length) { + return featureCollection; + } + + handleIndexes = _this.state.selectedEditHandleIndexes; + } + + var features = featureCollection.getObject().features; // It seems currently only POLYGON and LINE_STRING are supported + // see handleClick event in editing-mode.ts + + var allowedTypes = [_constants.GEOJSON_TYPE.LINE_STRING, _constants.GEOJSON_TYPE.POLYGON]; + + if (featureIndex !== null && features[featureIndex] && allowedTypes.includes(features[featureIndex].geometry.type)) { + // Remove first indexes in DESC order + handleIndexes.sort(function (n1, n2) { + return n2 - n1; + }); + var positionIndexes; + + if (features[featureIndex].geometry.type === _constants.GEOJSON_TYPE.LINE_STRING) { + positionIndexes = handleIndexes.map(function (pos) { + return [pos]; + }); + } else { + // Currently only spport to handle simple polygons, thus pos 0 + positionIndexes = handleIndexes.map(function (pos) { + return [0, pos]; + }); + } + + positionIndexes.forEach(function (pos) { + featureCollection = featureCollection.removePosition(featureIndex, pos); + }); + + var selectedEditHandleIndexes = _this.state.selectedEditHandleIndexes.filter(function (handleIndex) { + return !handleIndexes.includes(handleIndex); + }); + + _this.setState({ + featureCollection: featureCollection, + selectedEditHandleIndexes: selectedEditHandleIndexes + }); + } + + return featureCollection; + }); + + _defineProperty(_assertThisInitialized(_this), "_getMemorizedFeatureCollection", (0, _editModes._memoize)(function (_ref) { + var propsFeatures = _ref.propsFeatures, + stateFeatures = _ref.stateFeatures; + var features = propsFeatures || stateFeatures; // Any changes in ImmutableFeatureCollection will create a new object + + if (features instanceof _editModes.ImmutableFeatureCollection) { + return features; + } + + if (features && features.type === 'FeatureCollection') { + return new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: features.features + }); + } + + return new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: features || [] + }); + })); + + _defineProperty(_assertThisInitialized(_this), "_getFeatureCollection", function () { + return _this._getMemorizedFeatureCollection({ + propsFeatures: _this.props.features, + stateFeatures: _this.state.featureCollection + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_setupModeHandler", function () { + var mode = _this.props.mode; + _this._modeHandler = mode; + + if (!mode) { + _this._degregisterEvents(); + + return; + } + + _this._registerEvents(); + }); + + _defineProperty(_assertThisInitialized(_this), "_clearEditingState", function () { + _this.setState({ + selectedFeatureIndex: null, + selectedEditHandleIndexes: [], + hovered: null, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + isDragging: false, + didDrag: false + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_getSelectedFeatureIndex", function () { + if ('selectedFeatureIndex' in _this.props) { + return _this.props.selectedFeatureIndex; + } + + return _this.state.selectedFeatureIndex; + }); + + _defineProperty(_assertThisInitialized(_this), "_onSelect", function (selected) { + var selectedFeatureIndex = selected.selectedFeatureIndex; + var selectedEditHandleIndexes = _this.state.selectedEditHandleIndexes; + var newState = { + selectedFeatureIndex: selectedFeatureIndex, + selectedEditHandleIndexes: selectedEditHandleIndexes + }; + + if (_this.state.selectedFeatureIndex !== selectedFeatureIndex) { + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + + if (_this.props.onSelect) { + _this.props.onSelect(selected); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onEdit", function (editAction) { + var editType = editAction.editType, + updatedData = editAction.updatedData, + editContext = editAction.editContext; + var newState = { + featureCollection: new _editModes.ImmutableFeatureCollection(updatedData) + }; + + if (editType === _constants.EDIT_TYPE.ADD_POSITION) { + // @ts-ignore + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + + switch (editType) { + case _constants.EDIT_TYPE.ADD_FEATURE: + _this._onSelect({ + selectedFeature: null, + selectedFeatureIndex: null, + selectedEditHandleIndex: null, + selectedEditHandleIndexes: [], + screenCoords: editContext && editContext.screenCoords, + mapCoords: editContext && editContext.mapCoords + }); + + break; + + default: + } + + if (_this.props.onUpdate) { + _this.props.onUpdate({ + data: updatedData && updatedData.features, + editType: editType, + editContext: editContext + }); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_degregisterEvents", function () { + var eventManager = _this._context && _this._context.eventManager; + + if (!_this._events || !eventManager) { + return; + } + + if (_this._eventsRegistered) { + eventManager.off(_this._events); + _this._eventsRegistered = false; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_registerEvents", function () { + var ref = _this._containerRef; + var eventManager = _this._context && _this._context.eventManager; + + if (!_this._events || !ref || !eventManager) { + return; + } + + if (_this._eventsRegistered) { + return; + } + + eventManager.on(_this._events, ref); + _this._eventsRegistered = true; + }); + + _defineProperty(_assertThisInitialized(_this), "_onEvent", function (handler, evt, stopPropagation) { + var event = _this._getEvent(evt); + + handler(event); + + if (stopPropagation) { + evt.stopImmediatePropagation(); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onClick", function (event) { + var modeProps = _this.getModeProps(); // TODO refactor EditingMode + // @ts-ignore + + + if (_this._modeHandler instanceof _editingMode["default"] || _this.props.selectable) { + var mapCoords = event.mapCoords, + screenCoords = event.screenCoords; + var pickedObject = event.picks && event.picks[0]; + + var selectedEditHandleIndexes = _toConsumableArray(_this.state.selectedEditHandleIndexes); // @ts-ignore + + + if (pickedObject && (0, _utils.isNumeric)(pickedObject.featureIndex)) { + var handleIndex = // @ts-ignore + pickedObject.type === _constants.ELEMENT_TYPE.EDIT_HANDLE ? pickedObject.index : null; + var index = selectedEditHandleIndexes.indexOf(handleIndex); + + if (handleIndex !== null) { + if (index !== -1) { + selectedEditHandleIndexes.splice(index, 1); + } else { + selectedEditHandleIndexes.push(handleIndex); + } + + _this.setState({ + selectedEditHandleIndexes: selectedEditHandleIndexes + }); + } // @ts-ignore + + + var selectedFeatureIndex = pickedObject.featureIndex; + + _this._onSelect({ + selectedFeature: pickedObject.object, + selectedFeatureIndex: selectedFeatureIndex, + selectedEditHandleIndex: handleIndex, + selectedEditHandleIndexes: selectedEditHandleIndexes, + // @ts-ignore + mapCoords: mapCoords, + screenCoords: screenCoords + }); + } else { + _this._onSelect({ + selectedFeature: null, + selectedFeatureIndex: null, + selectedEditHandleIndex: null, + selectedEditHandleIndexes: selectedEditHandleIndexes, + // @ts-ignore + mapCoords: mapCoords, + screenCoords: screenCoords + }); + } + } + + _this._modeHandler.handleClick(event, modeProps); + }); + + _defineProperty(_assertThisInitialized(_this), "_onDblclick", function (event) { + if ((0, _utils.isNumeric)(_this._getSelectedFeatureIndex())) { + event.sourceEvent.stopImmediatePropagation(); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerMove", function (event) { + // hovering + var hovered = _this._getHoverState(event); + + var _this$state = _this.state, + isDragging = _this$state.isDragging, + didDrag = _this$state.didDrag, + pointerDownPicks = _this$state.pointerDownPicks, + pointerDownScreenCoords = _this$state.pointerDownScreenCoords, + pointerDownMapCoords = _this$state.pointerDownMapCoords; + + if (isDragging && !didDrag && pointerDownScreenCoords) { + var dx = event.screenCoords[0] - pointerDownScreenCoords[0]; + var dy = event.screenCoords[1] - pointerDownScreenCoords[1]; + + if (dx * dx + dy * dy > 5) { + _this.setState({ + didDrag: true + }); + } + } + + var pointerMoveEvent = _objectSpread({}, event, { + isDragging: isDragging, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + cancelPan: event.sourceEvent.stopImmediatePropagation + }); + + if (_this.state.didDrag) { + var modeProps = _this.getModeProps(); + + if (_this._modeHandler.handleDragging) { + _this._modeHandler.handleDragging(pointerMoveEvent, modeProps); + } else { + _this._modeHandler.handlePointerMove(pointerMoveEvent, modeProps); + } + } + + _this.setState({ + hovered: hovered, + // @ts-ignore + lastPointerMoveEvent: pointerMoveEvent + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerDown", function (event) { + var dragToDraw = _this.props.modeConfig && _this.props.modeConfig.dragToDraw; + var isDragging = Boolean(event.picks && event.picks[0]) || dragToDraw; + + var startDraggingEvent = _objectSpread({}, event, { + isDragging: isDragging, + pointerDownScreenCoords: event.screenCoords, + pointerDownMapCoords: event.mapCoords, + cancelPan: event.sourceEvent.stopImmediatePropagation + }); + + var newState = { + isDragging: isDragging, + pointerDownPicks: event.picks, + pointerDownScreenCoords: event.screenCoords, + pointerDownMapCoords: event.mapCoords + }; // @ts-ignore + + _this.setState(newState); + + var modeProps = _this.getModeProps(); + + _this._modeHandler.handleStartDragging(startDraggingEvent, modeProps); + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerUp", function (event) { + var _this$state2 = _this.state, + didDrag = _this$state2.didDrag, + pointerDownPicks = _this$state2.pointerDownPicks, + pointerDownScreenCoords = _this$state2.pointerDownScreenCoords, + pointerDownMapCoords = _this$state2.pointerDownMapCoords; + + var stopDraggingEvent = _objectSpread({}, event, { + isDragging: false, + pointerDownPicks: didDrag ? pointerDownPicks : null, + pointerDownScreenCoords: didDrag ? pointerDownScreenCoords : null, + pointerDownMapCoords: didDrag ? pointerDownMapCoords : null, + cancelPan: event.sourceEvent.cancelPan + }); + + var newState = { + isDragging: false, + didDrag: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null + }; + + _this.setState(newState); + + var modeProps = _this.getModeProps(); + + if (didDrag) { + _this._modeHandler.handleStopDragging(stopDraggingEvent, modeProps); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onPan", function (event) { + var isDragging = _this.state.isDragging; + + if (isDragging) { + event.sourceEvent.stopImmediatePropagation(); + } + + if (_this._modeHandler.handlePan) { + _this._modeHandler.handlePan(event, _this.getModeProps()); + } + }); + + _defineProperty(_assertThisInitialized(_this), "project", function (pt) { + var viewport = _this._context && _this._context.viewport; + return viewport && viewport.project(pt); + }); + + _defineProperty(_assertThisInitialized(_this), "unproject", function (pt) { + var viewport = _this._context && _this._context.viewport; + return viewport && viewport.unproject(pt); + }); + + _defineProperty(_assertThisInitialized(_this), "_getHoverState", function (event) { + var object = event.picks && event.picks[0]; + + if (!object) { + return null; + } + + return _objectSpread({ + screenCoords: event.screenCoords, + mapCoords: event.mapCoords + }, object); + }); + + _this.state = defaultState; + _this._eventsRegistered = false; + _this._events = { + anyclick: function anyclick(evt) { + return _this._onEvent(_this._onClick, evt, true); + }, + dblclick: function dblclick(evt) { + return _this._onEvent(_this._onDblclick, evt, false); + }, + click: function click(evt) { + return evt.stopImmediatePropagation(); + }, + pointermove: function pointermove(evt) { + return _this._onEvent(_this._onPointerMove, evt, false); + }, + pointerdown: function pointerdown(evt) { + return _this._onEvent(_this._onPointerDown, evt, true); + }, + pointerup: function pointerup(evt) { + return _this._onEvent(_this._onPointerUp, evt, true); + }, + panmove: function panmove(evt) { + return _this._onEvent(_this._onPan, evt, false); + }, + panstart: function panstart(evt) { + return _this._onEvent(_this._onPan, evt, false); + }, + panend: function panend(evt) { + return _this._onEvent(_this._onPan, evt, false); + } + }; + return _this; + } + + _createClass(ModeHandler, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._setupModeHandler(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.mode !== this.props.mode) { + this._clearEditingState(); + + this._setupModeHandler(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._degregisterEvents(); + } + }, { + key: "getModeProps", + value: function getModeProps() { + var featureCollection = this._getFeatureCollection(); + + var lastPointerMoveEvent = this.state.lastPointerMoveEvent; + + var selectedFeatureIndex = this._getSelectedFeatureIndex(); + + var selectedEditHandleIndexes = this.state.selectedEditHandleIndexes; + var viewport = this._context && this._context.viewport; + return { + data: featureCollection && featureCollection.featureCollection, + selectedIndexes: (0, _utils.isNumeric)(selectedFeatureIndex) ? [selectedFeatureIndex] : [], + selectedEditHandleIndexes: selectedEditHandleIndexes, + lastPointerMoveEvent: lastPointerMoveEvent, + viewport: viewport, + featuresDraggable: this.props.featuresDraggable, + onEdit: this._onEdit, + onUpdateCursor: this.props.onUpdateCursor, + modeConfig: this.props.modeConfig + }; + } + /* MEMORIZERS */ + + }, { + key: "_getEvent", + value: function _getEvent(evt) { + var features = this.getFeatures(); + + var guides = this._modeHandler.getGuides(this.getModeProps()); + + var picked = (0, _utils.parseEventElement)(evt, features, guides && guides.features); + var screenCoords = (0, _utils.getScreenCoords)(evt); // @ts-ignore + + var mapCoords = this.unproject(screenCoords); + return { + picks: picked ? [picked] : null, + screenCoords: screenCoords, + mapCoords: mapCoords, + sourceEvent: evt + }; + } + }, { + key: "_render", + value: function _render() { + return /*#__PURE__*/React.createElement("div", null); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + return /*#__PURE__*/React.createElement(_reactMapGl._MapContext.Consumer, null, function (context) { + _this2._context = context; + var viewport = context && context.viewport; + + if (!viewport || viewport.height <= 0 || viewport.width <= 0) { + return null; + } + + return _this2._render(); + }); + } + }]); + + return ModeHandler; +}(React.PureComponent); + +exports["default"] = ModeHandler; + +_defineProperty(ModeHandler, "displayName", 'ModeHandler'); + +_defineProperty(ModeHandler, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4Iiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyIsImhvdmVyZWQiLCJpc0RyYWdnaW5nIiwiZGlkRHJhZyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwicG9pbnRlckRvd25QaWNrcyIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJNb2RlSGFuZGxlciIsInByb3BzIiwiX2dldEZlYXR1cmVDb2xsZWN0aW9uIiwiZ2V0T2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiYWRkRmVhdHVyZXMiLCJzZXRTdGF0ZSIsImZlYXR1cmVJbmRleGVzIiwiX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4IiwiZGVsZXRlRmVhdHVyZXMiLCJuZXdTdGF0ZSIsImZpbmRJbmRleCIsImluZGV4IiwiZmVhdHVyZUluZGV4IiwiaGFuZGxlSW5kZXhlcyIsInN0YXRlIiwibGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiR0VPSlNPTl9UWVBFIiwiTElORV9TVFJJTkciLCJQT0xZR09OIiwiaW5jbHVkZXMiLCJnZW9tZXRyeSIsInNvcnQiLCJuMSIsIm4yIiwicG9zaXRpb25JbmRleGVzIiwibWFwIiwicG9zIiwiZm9yRWFjaCIsInJlbW92ZVBvc2l0aW9uIiwiZmlsdGVyIiwiaGFuZGxlSW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsIl9tb2RlSGFuZGxlciIsIl9kZWdyZWdpc3RlckV2ZW50cyIsIl9yZWdpc3RlckV2ZW50cyIsInNlbGVjdGVkIiwiZWRpdEFjdGlvbiIsImVkaXRUeXBlIiwidXBkYXRlZERhdGEiLCJlZGl0Q29udGV4dCIsIkVESVRfVFlQRSIsIkFERF9QT1NJVElPTiIsIkFERF9GRUFUVVJFIiwiX29uU2VsZWN0Iiwic2VsZWN0ZWRGZWF0dXJlIiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXgiLCJzY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJkYXRhIiwiZXZlbnRNYW5hZ2VyIiwiX2NvbnRleHQiLCJfZXZlbnRzIiwiX2V2ZW50c1JlZ2lzdGVyZWQiLCJvZmYiLCJyZWYiLCJfY29udGFpbmVyUmVmIiwib24iLCJoYW5kbGVyIiwiZXZ0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZXZlbnQiLCJfZ2V0RXZlbnQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJtb2RlUHJvcHMiLCJnZXRNb2RlUHJvcHMiLCJFZGl0aW5nTW9kZSIsInBpY2tlZE9iamVjdCIsInBpY2tzIiwiRUxFTUVOVF9UWVBFIiwiRURJVF9IQU5ETEUiLCJpbmRleE9mIiwic3BsaWNlIiwicHVzaCIsIm9iamVjdCIsImhhbmRsZUNsaWNrIiwic291cmNlRXZlbnQiLCJfZ2V0SG92ZXJTdGF0ZSIsImR4IiwiZHkiLCJwb2ludGVyTW92ZUV2ZW50IiwiY2FuY2VsUGFuIiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsImRyYWdUb0RyYXciLCJtb2RlQ29uZmlnIiwiQm9vbGVhbiIsInN0YXJ0RHJhZ2dpbmdFdmVudCIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJzdG9wRHJhZ2dpbmdFdmVudCIsImhhbmRsZVN0b3BEcmFnZ2luZyIsImhhbmRsZVBhbiIsInB0Iiwidmlld3BvcnQiLCJwcm9qZWN0IiwidW5wcm9qZWN0IiwiYW55Y2xpY2siLCJfb25FdmVudCIsIl9vbkNsaWNrIiwiZGJsY2xpY2siLCJfb25EYmxjbGljayIsImNsaWNrIiwicG9pbnRlcm1vdmUiLCJfb25Qb2ludGVyTW92ZSIsInBvaW50ZXJkb3duIiwiX29uUG9pbnRlckRvd24iLCJwb2ludGVydXAiLCJfb25Qb2ludGVyVXAiLCJwYW5tb3ZlIiwiX29uUGFuIiwicGFuc3RhcnQiLCJwYW5lbmQiLCJfc2V0dXBNb2RlSGFuZGxlciIsInByZXZQcm9wcyIsIl9jbGVhckVkaXRpbmdTdGF0ZSIsInNlbGVjdGVkSW5kZXhlcyIsImZlYXR1cmVzRHJhZ2dhYmxlIiwib25FZGl0IiwiX29uRWRpdCIsImdldEZlYXR1cmVzIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwicGlja2VkIiwiY29udGV4dCIsImhlaWdodCIsIndpZHRoIiwiX3JlbmRlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLFVBQVUsRUFBRSxJQURPO0FBRW5CQyxFQUFBQSxJQUFJLEVBQUUsSUFGYTtBQUduQkMsRUFBQUEsUUFBUSxFQUFFLElBSFM7QUFJbkJDLEVBQUFBLFFBQVEsRUFBRSxJQUpTO0FBS25CQyxFQUFBQSxRQUFRLEVBQUUsSUFMUztBQU1uQkMsRUFBQUEsY0FBYyxFQUFFLDBCQUFNLENBQUU7QUFOTCxDQUFyQjtBQVNBLElBQU1DLFlBQVksR0FBRztBQUNuQkMsRUFBQUEsaUJBQWlCLEVBQUUsSUFBSUMscUNBQUosQ0FBK0I7QUFDaERDLElBQUFBLElBQUksRUFBRSxtQkFEMEM7QUFFaERQLElBQUFBLFFBQVEsRUFBRTtBQUZzQyxHQUEvQixDQURBO0FBTW5CUSxFQUFBQSxvQkFBb0IsRUFBRSxJQU5IO0FBT25CQyxFQUFBQSx5QkFBeUIsRUFBRSxFQVBSO0FBU25CO0FBQ0FDLEVBQUFBLE9BQU8sRUFBRSxJQVZVO0FBWW5CQyxFQUFBQSxVQUFVLEVBQUUsS0FaTztBQWFuQkMsRUFBQUEsT0FBTyxF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Q0FBM0QsRUFBOEQ7QUFDNUQsaUJBQU8sSUFBUDtBQUNEOztBQUVELGVBQU8sTUFBSSxDQUFDQyxPQUFMLEVBQVA7QUFDRCxPQVZILENBREY7QUFjRDs7OztFQTNmc0NDLEtBQUssQ0FBQ0MsYTs7OztnQkFBMUJwSSxXLGlCQUNFLGE7O2dCQURGQSxXLGtCQUVHcEIsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9NYXBDb250ZXh0IGFzIE1hcENvbnRleHQsIE1hcENvbnRleHRQcm9wcyB9IGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEVkaXRBY3Rpb24sXG4gIF9tZW1vaXplIGFzIG1lbW9pemUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IE1qb2xuaXJFdmVudCB9IGZyb20gJ21qb2xuaXIuanMnO1xuaW1wb3J0IHsgQmFzZUV2ZW50LCBFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGUsIFNlbGVjdEFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgRWRpdGluZ01vZGUgZnJvbSAnLi9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZSc7XG5pbXBvcnQgeyBnZXRTY3JlZW5Db29yZHMsIHBhcnNlRXZlbnRFbGVtZW50LCBpc051bWVyaWMgfSBmcm9tICcuL2VkaXQtbW9kZXMvdXRpbHMnO1xuaW1wb3J0IHsgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUsIEdFT0pTT05fVFlQRSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBzZWxlY3RhYmxlOiB0cnVlLFxuICBtb2RlOiBudWxsLFxuICBmZWF0dXJlczogbnVsbCxcbiAgb25TZWxlY3Q6IG51bGwsXG4gIG9uVXBkYXRlOiBudWxsLFxuICBvblVwZGF0ZUN1cnNvcjogKCkgPT4ge30sXG59O1xuXG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgZmVhdHVyZXM6IFtdLFxuICB9KSxcblxuICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlczogW10sXG5cbiAgLy8gaW5kZXgsIGlzR3VpZGUsIG1hcENvb3Jkcywgc2NyZWVuQ29vcmRzXG4gIGhvdmVyZWQ6IG51bGwsXG5cbiAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIGRpZERyYWc6IGZhbHNlLFxuXG4gIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBudWxsLFxuXG4gIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGVIYW5kbGVyIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGU+IHtcbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ01vZGVIYW5kbGVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IGRlZmF1bHRTdGF0ZTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9ldmVudHMgPSB7XG4gICAgICBhbnljbGljazogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vbkNsaWNrLCBldnQsIHRydWUpLFxuICAgICAgZGJsY2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25EYmxjbGljaywgZXZ0LCBmYWxzZSksXG4gICAgICBjbGljazogKGV2dCkgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLFxuICAgICAgcG9pbnRlcm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyTW92ZSwgZXZ0LCBmYWxzZSksXG4gICAgICBwb2ludGVyZG93bjogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJEb3duLCBldnQsIHRydWUpLFxuICAgICAgcG9pbnRlcnVwOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUG9pbnRlclVwLCBldnQsIHRydWUpLFxuICAgICAgcGFubW92ZTogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgICBwYW5zdGFydDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgICBwYW5lbmQ6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZXR1cE1vZGVIYW5kbGVyKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBFZGl0b3JQcm9wcykge1xuICAgIGlmIChwcmV2UHJvcHMubW9kZSAhPT0gdGhpcy5wcm9wcy5tb2RlKSB7XG4gICAgICB0aGlzLl9jbGVhckVkaXRpbmdTdGF0ZSgpO1xuICAgICAgdGhpcy5fc2V0dXBNb2RlSGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX2RlZ3JlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBfZXZlbnRzOiBhbnk7XG4gIF9ldmVudHNSZWdpc3RlcmVkOiBib29sZWFuO1xuICBfbW9kZUhhbmRsZXI6IGFueTtcbiAgX2NvbnRleHQ6IE1hcENvbnRleHRQcm9wcyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9jb250YWluZXJSZWY6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBnZXRGZWF0dXJlcyA9ICgpID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzO1xuICB9O1xuXG4gIGFkZEZlYXR1cmVzID0gKGZlYXR1cmVzOiBGZWF0dXJlIHwgRmVhdHVyZVtdKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBpZiAoZmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmZWF0dXJlcykpIHtcbiAgICAgICAgZmVhdHVyZXMgPSBbZmVhdHVyZXNdO1xuICAgICAgfVxuXG4gICAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uLmFkZEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbiB9KTtcbiAgICB9XG4gIH07XG5cbiAgZGVsZXRlRmVhdHVyZXMgPSAoZmVhdHVyZUluZGV4ZXM6IG51bWJlciB8IG51bWJlcltdKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgaWYgKGZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmVhdHVyZUluZGV4ZXMpKSB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzID0gW2ZlYXR1cmVJbmRleGVzXTtcbiAgICAgIH1cbiAgICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24uZGVsZXRlRmVhdHVyZXMoZmVhdHVyZUluZGV4ZXMpO1xuICAgICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHsgZmVhdHVyZUNvbGxlY3Rpb24gfTtcbiAgICAgIGlmIChmZWF0dXJlSW5kZXhlcy5maW5kSW5kZXgoKGluZGV4KSA9PiBzZWxlY3RlZEZlYXR1cmVJbmRleCA9PT0gaW5kZXgpID49IDApIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSBudWxsO1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgZGVsZXRlSGFuZGxlcyA9IChcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBoYW5kbGVJbmRleGVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBGZWF0dXJlQ29sbGVjdGlvbiA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBpZiAoIWZlYXR1cmVJbmRleCkge1xuICAgICAgZmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICB9XG4gICAgaWYgKCFoYW5kbGVJbmRleGVzKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uO1xuICAgICAgfVxuICAgICAgaGFuZGxlSW5kZXhlcyA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcztcbiAgICB9XG4gICAgY29uc3QgZmVhdHVyZXMgPSBmZWF0dXJlQ29sbGVjdGlvbi5nZXRPYmplY3QoKS5mZWF0dXJlcztcbiAgICAvLyBJdCBzZWVtcyBjdXJyZW50bHkgb25seSBQT0xZR09OIGFuZCBMSU5FX1NUUklORyBhcmUgc3VwcG9ydGVkXG4gICAgLy8gc2VlIGhhbmRsZUNsaWNrIGV2ZW50IGluIGVkaXRpbmctbW9kZS50c1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtHRU9KU09OX1RZUEUuTElORV9TVFJJTkcsIEdFT0pTT05fVFlQRS5QT0xZR09OXTtcbiAgICBpZiAoXG4gICAgICBmZWF0dXJlSW5kZXggIT09IG51bGwgJiZcbiAgICAgIGZlYXR1cmVzW2ZlYXR1cmVJbmRleF0gJiZcbiAgICAgIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyhmZWF0dXJlc1tmZWF0dXJlSW5kZXhdLmdlb21ldHJ5LnR5cGUpXG4gICAgKSB7XG4gICAgICAvLyBSZW1vdmUgZmlyc3QgaW5kZXhlcyBpbiBERVNDIG9yZGVyXG4gICAgICBoYW5kbGVJbmRleGVzLnNvcnQoKG4xLCBuMikgPT4gbjIgLSBuMSk7XG4gICAgICBsZXQgcG9zaXRpb25JbmRleGVzO1xuICAgICAgaWYgKGZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKSB7XG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IGhhbmRsZUluZGV4ZXMubWFwKChwb3MpID0+IFtwb3NdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHNwcG9ydCB0byBoYW5kbGUgc2ltcGxlIHBvbHlnb25zLCB0aHVzIHBvcyAwXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IGhhbmRsZUluZGV4ZXMubWFwKChwb3MpID0+IFswLCBwb3NdKTtcbiAgICAgIH1cbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5mb3JFYWNoKChwb3MpID0+IHtcbiAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5yZW1vdmVQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvcyk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSB0aGlzLnN0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMuZmlsdGVyKFxuICAgICAgICAoaGFuZGxlSW5kZXgpID0+ICFoYW5kbGVJbmRleGVzLmluY2x1ZGVzKGhhbmRsZUluZGV4KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbiwgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uO1xuICB9O1xuXG4gIGdldE1vZGVQcm9wcygpIHtcbiAgICBjb25zdCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG5cbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBpc051bWVyaWMoc2VsZWN0ZWRGZWF0dXJlSW5kZXgpID8gW3NlbGVjdGVkRmVhdHVyZUluZGV4XSA6IFtdLFxuICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyxcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50LFxuICAgICAgdmlld3BvcnQsXG4gICAgICBmZWF0dXJlc0RyYWdnYWJsZTogdGhpcy5wcm9wcy5mZWF0dXJlc0RyYWdnYWJsZSxcbiAgICAgIG9uRWRpdDogdGhpcy5fb25FZGl0LFxuICAgICAgb25VcGRhdGVDdXJzb3I6IHRoaXMucHJvcHMub25VcGRhdGVDdXJzb3IsXG4gICAgICBtb2RlQ29uZmlnOiB0aGlzLnByb3BzLm1vZGVDb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIC8qIE1FTU9SSVpFUlMgKi9cbiAgX2dldE1lbW9yaXplZEZlYXR1cmVDb2xsZWN0aW9uID0gbWVtb2l6ZSgoeyBwcm9wc0ZlYXR1cmVzLCBzdGF0ZUZlYXR1cmVzIH06IGFueSkgPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gcHJvcHNGZWF0dXJlcyB8fCBzdGF0ZUZlYXR1cmVzO1xuICAgIC8vIEFueSBjaGFuZ2VzIGluIEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHdpbGwgY3JlYXRlIGEgbmV3IG9iamVjdFxuICAgIGlmIChmZWF0dXJlcyBpbnN0YW5jZW9mIEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gZmVhdHVyZXM7XG4gICAgfVxuXG4gICAgaWYgKGZlYXR1cmVzICYmIGZlYXR1cmVzLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMuZmVhdHVyZXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogZmVhdHVyZXMgfHwgW10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIF9nZXRGZWF0dXJlQ29sbGVjdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0TWVtb3JpemVkRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgcHJvcHNGZWF0dXJlczogdGhpcy5wcm9wcy5mZWF0dXJlcyxcbiAgICAgIHN0YXRlRmVhdHVyZXM6IHRoaXMuc3RhdGUuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgfSk7XG4gIH07XG5cbiAgX3NldHVwTW9kZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMucHJvcHMubW9kZTtcbiAgICB0aGlzLl9tb2RlSGFuZGxlciA9IG1vZGU7XG5cbiAgICBpZiAoIW1vZGUpIHtcbiAgICAgIHRoaXMuX2RlZ3JlZ2lzdGVyRXZlbnRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVnaXN0ZXJFdmVudHMoKTtcbiAgfTtcblxuICAvKiBFRElUSU5HIE9QRVJBVElPTlMgKi9cbiAgX2NsZWFyRWRpdGluZ1N0YXRlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzOiBbXSxcblxuICAgICAgaG92ZXJlZDogbnVsbCxcblxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgfSk7XG4gIH07XG5cbiAgX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4ID0gKCkgPT4ge1xuICAgIGlmICgnc2VsZWN0ZWRGZWF0dXJlSW5kZXgnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgfTtcblxuICBfb25TZWxlY3QgPSAoc2VsZWN0ZWQ6IFNlbGVjdEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRGZWF0dXJlSW5kZXggfSA9IHNlbGVjdGVkO1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRGZWF0dXJlSW5kZXgsIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgfTtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleCAhPT0gc2VsZWN0ZWRGZWF0dXJlSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpO1xuICAgIH1cbiAgfTtcblxuICBfb25FZGl0ID0gKGVkaXRBY3Rpb246IEVkaXRBY3Rpb248YW55PikgPT4ge1xuICAgIGNvbnN0IHsgZWRpdFR5cGUsIHVwZGF0ZWREYXRhLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRGF0YSkgfTtcbiAgICBpZiAoZWRpdFR5cGUgPT09IEVESVRfVFlQRS5BRERfUE9TSVRJT04pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG5cbiAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICBjYXNlIEVESVRfVFlQRS5BRERfRkVBVFVSRTpcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzOiBbXSxcbiAgICAgICAgICBzY3JlZW5Db29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0LnNjcmVlbkNvb3JkcyxcbiAgICAgICAgICBtYXBDb29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vblVwZGF0ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh7XG4gICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhICYmIHVwZGF0ZWREYXRhLmZlYXR1cmVzLFxuICAgICAgICBlZGl0VHlwZSxcbiAgICAgICAgZWRpdENvbnRleHQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyogRVZFTlRTICovXG4gIF9kZWdyZWdpc3RlckV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFldmVudE1hbmFnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCkge1xuICAgICAgZXZlbnRNYW5hZ2VyLm9mZih0aGlzLl9ldmVudHMpO1xuICAgICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBfcmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fY29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGV2ZW50TWFuYWdlciA9IHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5ldmVudE1hbmFnZXI7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXJlZiB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudE1hbmFnZXIub24odGhpcy5fZXZlbnRzLCByZWYpO1xuICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9O1xuXG4gIF9vbkV2ZW50ID0gKGhhbmRsZXI6IEZ1bmN0aW9uLCBldnQ6IE1qb2xuaXJFdmVudCwgc3RvcFByb3BhZ2F0aW9uOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9nZXRFdmVudChldnQpO1xuICAgIGhhbmRsZXIoZXZlbnQpO1xuXG4gICAgaWYgKHN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25DbGljayA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICAvLyBUT0RPIHJlZmFjdG9yIEVkaXRpbmdNb2RlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9tb2RlSGFuZGxlciBpbnN0YW5jZW9mIEVkaXRpbmdNb2RlIHx8IHRoaXMucHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgY29uc3QgeyBtYXBDb29yZHMsIHNjcmVlbkNvb3JkcyB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCBwaWNrZWRPYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbLi4udGhpcy5zdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChwaWNrZWRPYmplY3QgJiYgaXNOdW1lcmljKHBpY2tlZE9iamVjdC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGlja2VkT2JqZWN0LnR5cGUgPT09IEVMRU1FTlRfVFlQRS5FRElUX0hBTkRMRSA/IHBpY2tlZE9iamVjdC5pbmRleCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5pbmRleE9mKGhhbmRsZUluZGV4KTtcbiAgICAgICAgaWYgKGhhbmRsZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzLnB1c2goaGFuZGxlSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gcGlja2VkT2JqZWN0LmZlYXR1cmVJbmRleDtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogcGlja2VkT2JqZWN0Lm9iamVjdCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogaGFuZGxlSW5kZXgsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyxcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwQ29vcmRzLFxuICAgICAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vblNlbGVjdCh7XG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4OiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZUNsaWNrKGV2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vbkRibGNsaWNrID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBpZiAoaXNOdW1lcmljKHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCkpKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgX29uUG9pbnRlck1vdmUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIC8vIGhvdmVyaW5nXG4gICAgY29uc3QgaG92ZXJlZCA9IHRoaXMuX2dldEhvdmVyU3RhdGUoZXZlbnQpO1xuICAgIGNvbnN0IHtcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBkaWREcmFnLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAoaXNEcmFnZ2luZyAmJiAhZGlkRHJhZyAmJiBwb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgY29uc3QgZHggPSBldmVudC5zY3JlZW5Db29yZHNbMF0gLSBwb2ludGVyRG93blNjcmVlbkNvb3Jkc1swXTtcbiAgICAgIGNvbnN0IGR5ID0gZXZlbnQuc2NyZWVuQ29vcmRzWzFdIC0gcG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV07XG4gICAgICBpZiAoZHggKiBkeCArIGR5ICogZHkgPiA1KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaWREcmFnOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBvaW50ZXJNb3ZlRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc291cmNlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5kaWREcmFnKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZURyYWdnaW5nKSB7XG4gICAgICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZURyYWdnaW5nKHBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShwb2ludGVyTW92ZUV2ZW50LCBtb2RlUHJvcHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaG92ZXJlZCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBwb2ludGVyTW92ZUV2ZW50LFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblBvaW50ZXJEb3duID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBkcmFnVG9EcmF3ID0gdGhpcy5wcm9wcy5tb2RlQ29uZmlnICYmIHRoaXMucHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3O1xuICAgIGNvbnN0IGlzRHJhZ2dpbmcgPSBCb29sZWFuKGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdKSB8fCBkcmFnVG9EcmF3O1xuICAgIGNvbnN0IHN0YXJ0RHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgY2FuY2VsUGFuOiBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IGV2ZW50LnBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBldmVudC5tYXBDb29yZHMsXG4gICAgfTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG5cbiAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoc3RhcnREcmFnZ2luZ0V2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vblBvaW50ZXJVcCA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBkaWREcmFnLCBwb2ludGVyRG93blBpY2tzLCBwb2ludGVyRG93blNjcmVlbkNvb3JkcywgcG9pbnRlckRvd25NYXBDb29yZHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc3RvcERyYWdnaW5nRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogZGlkRHJhZyA/IHBvaW50ZXJEb3duUGlja3MgOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGRpZERyYWcgPyBwb2ludGVyRG93blNjcmVlbkNvb3JkcyA6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZGlkRHJhZyA/IHBvaW50ZXJEb3duTWFwQ29vcmRzIDogbnVsbCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc291cmNlRXZlbnQuY2FuY2VsUGFuLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcblxuICAgIGlmIChkaWREcmFnKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoc3RvcERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgfVxuICB9O1xuXG4gIF9vblBhbiA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBpc0RyYWdnaW5nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVBhbikge1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICB9XG4gIH07XG5cbiAgLyogSEVMUEVSUyAqL1xuICBwcm9qZWN0ID0gKHB0OiBbbnVtYmVyLCBudW1iZXJdKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgcmV0dXJuIHZpZXdwb3J0ICYmIHZpZXdwb3J0LnByb2plY3QocHQpO1xuICB9O1xuXG4gIHVucHJvamVjdCA9IChwdDogW251bWJlciwgbnVtYmVyXSkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC51bnByb2plY3QocHQpO1xuICB9O1xuXG4gIF9nZXRFdmVudChldnQ6IE1qb2xuaXJFdmVudCkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5nZXRGZWF0dXJlcygpO1xuICAgIGNvbnN0IGd1aWRlcyA9IHRoaXMuX21vZGVIYW5kbGVyLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICBjb25zdCBwaWNrZWQgPSBwYXJzZUV2ZW50RWxlbWVudChldnQsIGZlYXR1cmVzLCBndWlkZXMgJiYgZ3VpZGVzLmZlYXR1cmVzKTtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSBnZXRTY3JlZW5Db29yZHMoZXZ0KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy51bnByb2plY3Qoc2NyZWVuQ29vcmRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwaWNrczogcGlja2VkID8gW3BpY2tlZF0gOiBudWxsLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgc291cmNlRXZlbnQ6IGV2dCxcbiAgICB9O1xuICB9XG5cbiAgX2dldEhvdmVyU3RhdGUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG9iamVjdCA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIC4uLm9iamVjdCxcbiAgICB9O1xuICB9O1xuXG4gIF9yZW5kZXIoKSB7XG4gICAgcmV0dXJuIDxkaXYgLz47XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRleHQgJiYgY29udGV4dC52aWV3cG9ydDtcblxuICAgICAgICAgIGlmICghdmlld3BvcnQgfHwgdmlld3BvcnQuaGVpZ2h0IDw9IDAgfHwgdmlld3BvcnQud2lkdGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpO1xuICAgICAgICB9fVxuICAgICAgPC9NYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/style.js b/modules/react-map-gl-draw/dist-es6/style.js new file mode 100644 index 000000000..7920779b4 --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/style.js @@ -0,0 +1,154 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.featureStyle = featureStyle; +exports.editHandleStyle = editHandleStyle; + +var _constants = require("./constants"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 RECT_STYLE = { + stroke: '#7ac943', + strokeWidth: 2, + x: -6, + y: -6, + height: 12, + width: 12 +}; +var CIRCLE_RADIUS = 8; +var SELECTED_STYLE = { + stroke: 'rgb(38, 181, 242)', + strokeWidth: 2, + fill: 'rgb(189,189,189)', + fillOpacity: 0.3 +}; +var HOVERED_STYLE = { + stroke: 'rgb(38, 181, 242)', + strokeWidth: 2, + fill: 'rgb(122,202,67)', + fillOpacity: 0.3 +}; +var UNCOMMITTED_STYLE = { + stroke: 'rgb(189,189,189)', + strokeDasharray: '4,2', + strokeWidth: 2, + fill: 'rgb(189,189,189)', + fillOpacity: 0.1 +}; +var INACTIVE_STYLE = UNCOMMITTED_STYLE; +var DEFAULT_STYLE = { + stroke: '#000000', + strokeWidth: 2, + fill: '#a9a9a9', + fillOpacity: 0.1 +}; + +function featureStyle(_ref) { + var feature = _ref.feature, + state = _ref.state; + var type = feature.properties.shape || feature.geometry.type; + var style = null; + + switch (state) { + case _constants.RENDER_STATE.SELECTED: + style = _objectSpread({}, SELECTED_STYLE); + break; + + case _constants.RENDER_STATE.HOVERED: + style = _objectSpread({}, HOVERED_STYLE); + break; + + case _constants.RENDER_STATE.UNCOMMITTED: + case _constants.RENDER_STATE.CLOSING: + style = _objectSpread({}, UNCOMMITTED_STYLE); + break; + + case _constants.RENDER_STATE.INACTIVE: + style = _objectSpread({}, INACTIVE_STYLE); + break; + + default: + style = _objectSpread({}, DEFAULT_STYLE); + } + + switch (type) { + case _constants.SHAPE.POINT: + style.r = CIRCLE_RADIUS; + break; + + case _constants.SHAPE.LINE_STRING: + style.fill = 'none'; + break; + + case _constants.SHAPE.POLYGON: + if (state === _constants.RENDER_STATE.CLOSING) { + style.strokeDasharray = '4,2'; + } + + break; + + case _constants.SHAPE.RECTANGLE: + if (state === _constants.RENDER_STATE.UNCOMMITTED) { + style.strokeDasharray = '4,2'; + } + + break; + + default: + } + + return style; +} + +function editHandleStyle(_ref2) { + var feature = _ref2.feature, + shape = _ref2.shape, + index = _ref2.index, + state = _ref2.state; + var style = {}; + + switch (state) { + case _constants.RENDER_STATE.SELECTED: + style = _objectSpread({}, SELECTED_STYLE); + break; + + case _constants.RENDER_STATE.HOVERED: + style = _objectSpread({}, HOVERED_STYLE); + break; + + case _constants.RENDER_STATE.UNCOMMITTED: + case _constants.RENDER_STATE.CLOSING: + style = _objectSpread({}, UNCOMMITTED_STYLE); + break; + + case _constants.RENDER_STATE.INACTIVE: + style = _objectSpread({}, INACTIVE_STYLE); + break; + + default: + style = _objectSpread({}, DEFAULT_STYLE); + } + + switch (shape) { + case 'circle': + //@ts-ignore + style.r = CIRCLE_RADIUS; + break; + + case 'rect': + style = _objectSpread({}, style, {}, RECT_STYLE); + break; + + default: + } + + return style; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJSRUNUX1NUWUxFIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJ4IiwieSIsImhlaWdodCIsIndpZHRoIiwiQ0lSQ0xFX1JBRElVUyIsIlNFTEVDVEVEX1NUWUxFIiwiZmlsbCIsImZpbGxPcGFjaXR5IiwiSE9WRVJFRF9TVFlMRSIsIlVOQ09NTUlUVEVEX1NUWUxFIiwic3Ryb2tlRGFzaGFycmF5IiwiSU5BQ1RJVkVfU1RZTEUiLCJERUZBVUxUX1NUWUxFIiwiZmVhdHVyZVN0eWxlIiwiZmVhdHVyZSIsInN0YXRlIiwidHlwZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImdlb21ldHJ5Iiwic3R5bGUiLCJSRU5ERVJfU1RBVEUiLCJTRUxFQ1RFRCIsIkhPVkVSRUQiLCJVTkNPTU1JVFRFRCIsIkNMT1NJTkciLCJJTkFDVElWRSIsIlNIQVBFIiwiUE9JTlQiLCJyIiwiTElORV9TVFJJTkciLCJQT0xZR09OIiwiUkVDVEFOR0xFIiwiZWRpdEhhbmRsZVN0eWxlIiwiaW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsSUFBTUEsVUFBVSxHQUFHO0FBQ2pCQyxFQUFBQSxNQUFNLEVBQUUsU0FEUztBQUVqQkMsRUFBQUEsV0FBVyxFQUFFLENBRkk7QUFHakJDLEVBQUFBLENBQUMsRUFBRSxDQUFDLENBSGE7QUFJakJDLEVBQUFBLENBQUMsRUFBRSxDQUFDLENBSmE7QUFLakJDLEVBQUFBLE1BQU0sRUFBRSxFQUxTO0FBTWpCQyxFQUFBQSxLQUFLLEVBQUU7QUFOVSxDQUFuQjtBQVNBLElBQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUVBLElBQU1DLGNBQWMsR0FBRztBQUNyQlAsRUFBQUEsTUFBTSxFQUFFLG1CQURhO0FBRXJCQyxFQUFBQSxXQUFXLEVBQUUsQ0FGUTtBQUdyQk8sRUFBQUEsSUFBSSxFQUFFLGtCQUhlO0FBSXJCQyxFQUFBQSxXQUFXLEVBQUU7QUFKUSxDQUF2QjtBQU9BLElB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SSxPQUFsQjtBQUNFTCxNQUFBQSxLQUFLLHFCQUFRWCxpQkFBUixDQUFMO0FBQ0E7O0FBRUYsU0FBS1ksd0JBQWFLLFFBQWxCO0FBQ0VOLE1BQUFBLEtBQUsscUJBQVFULGNBQVIsQ0FBTDtBQUNBOztBQUVGO0FBQ0VTLE1BQUFBLEtBQUsscUJBQVFSLGFBQVIsQ0FBTDtBQW5CSjs7QUFzQkEsVUFBUU0sS0FBUjtBQUNFLFNBQUssUUFBTDtBQUNFO0FBQ0FFLE1BQUFBLEtBQUssQ0FBQ1MsQ0FBTixHQUFVekIsYUFBVjtBQUNBOztBQUNGLFNBQUssTUFBTDtBQUNFZ0IsTUFBQUEsS0FBSyxxQkFBUUEsS0FBUixNQUFrQnZCLFVBQWxCLENBQUw7QUFDQTs7QUFDRjtBQVJGOztBQVdBLFNBQU91QixLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSRU5ERVJfU1RBVEUsIFNIQVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRUNUX1NUWUxFID0ge1xuICBzdHJva2U6ICcjN2FjOTQzJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHg6IC02LFxuICB5OiAtNixcbiAgaGVpZ2h0OiAxMixcbiAgd2lkdGg6IDEyLFxufTtcblxuY29uc3QgQ0lSQ0xFX1JBRElVUyA9IDg7XG5cbmNvbnN0IFNFTEVDVEVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMzgsIDE4MSwgMjQyKScsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBmaWxsOiAncmdiKDE4OSwxODksMTg5KScsXG4gIGZpbGxPcGFjaXR5OiAwLjMsXG59O1xuXG5jb25zdCBIT1ZFUkVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMzgsIDE4MSwgMjQyKScsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBmaWxsOiAncmdiKDEyMiwyMDIsNjcpJyxcbiAgZmlsbE9wYWNpdHk6IDAuMyxcbn07XG5cbmNvbnN0IFVOQ09NTUlUVEVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMTg5LDE4OSwxODkpJyxcbiAgc3Ryb2tlRGFzaGFycmF5OiAnNCwyJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIGZpbGw6ICdyZ2IoMTg5LDE4OSwxODkpJyxcbiAgZmlsbE9wYWNpdHk6IDAuMSxcbn07XG5cbmNvbnN0IElOQUNUSVZFX1NUWUxFID0gVU5DT01NSVRURURfU1RZTEU7XG5cbmNvbnN0IERFRkFVTFRfU1RZTEUgPSB7XG4gIHN0cm9rZTogJyMwMDAwMDAnLFxuICBzdHJva2VXaWR0aDogMixcbiAgZmlsbDogJyNhOWE5YTknLFxuICBmaWxsT3BhY2l0eTogMC4xLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZlYXR1cmVTdHlsZSh7IGZlYXR1cmUsIHN0YXRlIH0pIHtcbiAgY29uc3QgdHlwZSA9IGZlYXR1cmUucHJvcGVydGllcy5zaGFwZSB8fCBmZWF0dXJlLmdlb21ldHJ5LnR5cGU7XG4gIGxldCBzdHlsZSA9IG51bGw7XG5cbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgUkVOREVSX1NUQVRFLlNFTEVDVEVEOlxuICAgICAgc3R5bGUgPSB7IC4uLlNFTEVDVEVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLkhPVkVSRUQ6XG4gICAgICBzdHlsZSA9IHsgLi4uSE9WRVJFRF9TVFlMRSB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFJFTkRFUl9TVEFURS5VTkNPTU1JVFRFRDpcbiAgICBjYXNlIFJFTkRFUl9TVEFURS5DTE9TSU5HOlxuICAgICAgc3R5bGUgPSB7IC4uLlVOQ09NTUlUVEVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLklOQUNUSVZFOlxuICAgICAgc3R5bGUgPSB7IC4uLklOQUNUSVZFX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzdHlsZSA9IHsgLi4uREVGQVVMVF9TVFlMRSB9O1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBTSEFQRS5QT0lOVDpcbiAgICAgIHN0eWxlLnIgPSBDSVJDTEVfUkFESVVTO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTSEFQRS5MSU5FX1NUUklORzpcbiAgICAgIHN0eWxlLmZpbGwgPSAnbm9uZSc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNIQVBFLlBPTFlHT046XG4gICAgICBpZiAoc3RhdGUgPT09IFJFTkRFUl9TVEFURS5DTE9TSU5HKSB7XG4gICAgICAgIHN0eWxlLnN0cm9rZURhc2hhcnJheSA9ICc0LDInO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlIFNIQVBFLlJFQ1RBTkdMRTpcbiAgICAgIGlmIChzdGF0ZSA9PT0gUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVEKSB7XG4gICAgICAgIHN0eWxlLnN0cm9rZURhc2hhcnJheSA9ICc0LDInO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRpdEhhbmRsZVN0eWxlKHsgZmVhdHVyZSwgc2hhcGUsIGluZGV4LCBzdGF0ZSB9KSB7XG4gIGxldCBzdHlsZSA9IHt9O1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuU0VMRUNURUQ6XG4gICAgICBzdHlsZSA9IHsgLi4uU0VMRUNURURfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuSE9WRVJFRDpcbiAgICAgIHN0eWxlID0geyAuLi5IT1ZFUkVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVEOlxuICAgIGNhc2UgUkVOREVSX1NUQVRFLkNMT1NJTkc6XG4gICAgICBzdHlsZSA9IHsgLi4uVU5DT01NSVRURURfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuSU5BQ1RJVkU6XG4gICAgICBzdHlsZSA9IHsgLi4uSU5BQ1RJVkVfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHN0eWxlID0geyAuLi5ERUZBVUxUX1NUWUxFIH07XG4gIH1cblxuICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgc3R5bGUuciA9IENJUkNMRV9SQURJVVM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyZWN0JzpcbiAgICAgIHN0eWxlID0geyAuLi5zdHlsZSwgLi4uUkVDVF9TVFlMRSB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-es6/types.js b/modules/react-map-gl-draw/dist-es6/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/react-map-gl-draw/dist-es6/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/constants.d.ts b/modules/react-map-gl-draw/dist-types/constants.d.ts new file mode 100644 index 000000000..2c673153d --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/constants.d.ts @@ -0,0 +1,44 @@ +export declare enum GEOJSON_TYPE { + POINT = "Point", + LINE_STRING = "LineString", + POLYGON = "Polygon" +} +export declare enum SHAPE { + POINT = "Point", + LINE_STRING = "LineString", + POLYGON = "Polygon", + RECTANGLE = "Rectangle", + CIRCLE = "Circle" +} +export declare enum RENDER_TYPE { + POINT = "Point", + LINE_STRING = "LineString", + POLYGON = "Polygon", + RECTANGLE = "Rectangle" +} +export declare enum RENDER_STATE { + INACTIVE = "INACTIVE", + UNCOMMITTED = "UNCOMMITTED", + SELECTED = "SELECTED", + HOVERED = "HOVERED", + CLOSING = "CLOSING" +} +export declare enum GUIDE_TYPE { + TENTATIVE = "tentative", + EDIT_HANDLE = "editHandle", + CURSOR_EDIT_HANDLE = "cursorEditHandle" +} +export declare enum ELEMENT_TYPE { + FEATURE = "feature", + FILL = "fill", + SEGMENT = "segment", + EDIT_HANDLE = "editHandle" +} +export declare enum EDIT_TYPE { + ADD_FEATURE = "addFeature", + ADD_POSITION = "addPosition", + REMOVE_POSITION = "removePosition", + MOVE_POSITION = "movePosition", + FINISH_MOVE_POSITION = "finishMovePosition" +} +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/constants.d.ts.map b/modules/react-map-gl-draw/dist-types/constants.d.ts.map new file mode 100644 index 000000000..100283efc --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,WAAW,eAAe;IAC1B,OAAO,YAAY;CACpB;AAED,oBAAY,KAAK;IACf,KAAK,UAAU;IACf,WAAW,eAAe;IAC1B,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,WAAW,eAAe;IAC1B,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,oBAAY,UAAU;IACpB,SAAS,cAAc;IACvB,WAAW,eAAe;IAC1B,kBAAkB,qBAAqB;CACxC;AAED,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,eAAe;CAC3B;AAED,oBAAY,SAAS;IACnB,WAAW,eAAe;IAC1B,YAAY,gBAAgB;IAC5B,eAAe,mBAAmB;IAClC,aAAa,iBAAiB;IAC9B,oBAAoB,uBAAuB;CAC5C"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts b/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts new file mode 100644 index 000000000..4d10ceec9 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts @@ -0,0 +1,23 @@ +import { EditMode, GuideFeatureCollection, Feature, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, FeatureCollection, Tooltip, DraggingEvent } from '@nebula.gl/edit-modes'; +import { ModeProps } from '../types'; +export default class BaseMode implements EditMode { + _tentativeFeature: Feature | null | undefined; + _editHandles: Feature[] | null | undefined; + constructor(); + handlePan(event: ClickEvent, props: ModeProps): void; + handleClick(event: ClickEvent, props: ModeProps): void; + handleDblClick(event: ClickEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + handleStartDragging(event: StartDraggingEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + handleKeyUp(event: KeyboardEvent, props: ModeProps): void; + getGuides(props: ModeProps): GuideFeatureCollection | null | undefined; + getTooltips(props: ModeProps): Tooltip[]; + handleDragging(event: DraggingEvent, props: ModeProps): void; + getTentativeFeature(): Feature; + getEditHandles(): Feature[]; + setTentativeFeature(feature: Feature): void; + getEditHandlesFromFeature(feature: Feature, featureIndex: number | null | undefined): any; + getSelectedFeature(props: ModeProps, featureIndex: number | null | undefined): Feature; +} +//# sourceMappingURL=base-mode.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts.map b/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts.map new file mode 100644 index 000000000..243cf969b --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/base-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"base-mode.d.ts","sourceRoot":"","sources":["../../src/edit-modes/base-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAKrC,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1F,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;;IAO3C,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAEhE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAElE,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAErE,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAE9E,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAElF,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAEhF,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAE5E,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,sBAAsB,GAAG,IAAI,GAAG,SAAS;IAGzF,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,OAAO,EAAE;IAG3D,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAE/E,mBAAmB;IAInB,cAAc;IAId,mBAAmB,CAAC,OAAO,EAAE,OAAO;IAIpC,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAyBnF,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CAWhG"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts b/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts new file mode 100644 index 000000000..92fee6557 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts @@ -0,0 +1,30 @@ +import type { Feature, FeatureCollection, ClickEvent, StopDraggingEvent, PointerMoveEvent, Position } from '@nebula.gl/edit-modes'; +import { ModeProps } from '../types'; +import { GEOJSON_TYPE, GUIDE_TYPE } from '../constants'; +import BaseMode from './base-mode'; +export default class EditingMode extends BaseMode { + handleClick(event: ClickEvent, props: ModeProps): void; + handleStopDragging(event: StopDraggingEvent, props: ModeProps): void; + _handleDragging(event: PointerMoveEvent | StopDraggingEvent, props: ModeProps): void; + handlePointerMove(event: PointerMoveEvent, props: ModeProps): void; + _updateFeature(props: ModeProps, type: string, options?: any): FeatureCollection; + _getPointOnSegment(feature: Feature, picked: any, pickedMapCoords: Position): number[]; + _getCursorEditHandle(event: PointerMoveEvent, feature: Feature): { + type: string; + properties: { + guideType: GUIDE_TYPE; + shape: any; + positionIndexes: number[]; + editHandleType: string; + }; + geometry: { + type: GEOJSON_TYPE; + coordinates: number[]; + }; + }; + getGuides(props: ModeProps): { + type: string; + features: any; + }; +} +//# sourceMappingURL=editing-mode.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts.map b/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts.map new file mode 100644 index 000000000..ee2431fa6 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/editing-mode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editing-mode.d.ts","sourceRoot":"","sources":["../../src/edit-modes/editing-mode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAkC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,QAAQ,MAAM,aAAa,CAAC;AAQnC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,QAAQ;IAC/C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAiDlE,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAqBhF,eAAe,CACb,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,EAC3C,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IA6DrC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAgB9E,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ;IA6EnF,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,QAAQ;IAe3E,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;IA+C9D,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;;;;CA0B9C"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts b/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts new file mode 100644 index 000000000..068bf38c0 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts @@ -0,0 +1,2 @@ +export { default as EditingMode } from './editing-mode'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts.map b/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts.map new file mode 100644 index 000000000..135044e99 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edit-modes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts b/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts new file mode 100644 index 000000000..76885a58b --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts @@ -0,0 +1,15 @@ +import { MjolnirEvent } from 'mjolnir.js'; +import type { FeatureOf, Feature, Polygon, Position } from '@nebula.gl/edit-modes'; +export declare function isNumeric(val: any): boolean; +export declare function parseEventElement(evt: MjolnirEvent, features: Feature[], guides: Feature[]): { + object: any; + isGuide: boolean; + type: any; + index: any; + featureIndex: any; +}; +export declare function getScreenCoords(evt: MjolnirEvent): number[]; +export declare function findClosestPointOnLineSegment(p1: Position, p2: Position, p: Position): number[]; +export declare function getFeatureCoordinates(feature: Feature): number | [number, number] | [number, number, number] | ([number, number] | [number, number, number] | import("@nebula.gl/edit-modes").LineStringCoordinates | import("@nebula.gl/edit-modes").PolygonCoordinates | import("@nebula.gl/edit-modes").MultiPointCoordinates | import("@nebula.gl/edit-modes").MultiLineStringCoordinates | import("@nebula.gl/edit-modes").MultiPolygonCoordinates)[]; +export declare function updateRectanglePosition(feature: FeatureOf, editHandleIndex: number, mapCoords: Position): any; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts.map b/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts.map new file mode 100644 index 000000000..02e14f652 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/edit-modes/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/edit-modes/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAInF,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,WAEjC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;;;;;;EA4C1F;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,YAKhD;AAED,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,YAoBpF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,sYASrD;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAC3B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,QAAQ,OAsBpB"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/editor.d.ts b/modules/react-map-gl-draw/dist-types/editor.d.ts new file mode 100644 index 000000000..687c1004c --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/editor.d.ts @@ -0,0 +1,39 @@ +/// +import { Feature } from '@nebula.gl/edit-modes'; +import { GeoJsonType } from './types'; +import { RENDER_STATE } from './constants'; +import ModeHandler from './mode-handler'; +import { editHandleStyle as defaultEditHandleStyle, featureStyle as defaultFeatureStyle } from './style'; +export default class Editor extends ModeHandler { + static defaultProps: { + clickRadius: number; + featureShape: string; + editHandleShape: string; + editHandleStyle: typeof defaultEditHandleStyle; + featureStyle: typeof defaultFeatureStyle; + featuresDraggable: boolean; + selectable: boolean; + mode: any; + features: any; + onSelect: any; + onUpdate: any; + onUpdateCursor: () => void; + }; + _getPathInScreenCoords(coordinates: any, type: GeoJsonType): any; + _getEditHandleState: (editHandle: Feature, renderState: string) => string; + _getFeatureRenderState: (index: number, renderState: RENDER_STATE) => RENDER_STATE.INACTIVE | RENDER_STATE.INACTIVE | RENDER_STATE.UNCOMMITTED | RENDER_STATE; + _getStyleProp: (styleProp: any, params: any) => any; + _renderEditHandle: (editHandle: Feature, feature: Feature) => JSX.Element; + _renderSegment: (featureIndex: string | number, index: number, coordinates: number[], style: Record) => JSX.Element; + _renderSegments: (featureIndex: string | number, coordinates: number[], style: Record) => any[]; + _renderFill: (featureIndex: string | number, coordinates: number[], style: Record) => JSX.Element; + _renderTentativeFeature: (feature: Feature, cursorEditHandle: Feature) => any[]; + _renderGuides: (guideFeatures: Feature[]) => JSX.Element; + _renderPoint: (feature: Feature, index: number, path: string) => JSX.Element; + _renderPath: (feature: Feature, index: number, path: string) => JSX.Element; + _renderPolygon: (feature: Feature, index: number, path: string) => JSX.Element; + _renderFeature: (feature: Feature, index: number) => JSX.Element; + _renderCanvas: () => JSX.Element; + _render: () => JSX.Element; +} +//# sourceMappingURL=editor.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/editor.d.ts.map b/modules/react-map-gl-draw/dist-types/editor.d.ts.map new file mode 100644 index 000000000..03396277e --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/editor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAmB,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAiD,MAAM,aAAa,CAAC;AAC1F,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EACL,eAAe,IAAI,sBAAsB,EACzC,YAAY,IAAI,mBAAmB,EACpC,MAAM,SAAS,CAAC;AAYjB,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW;IAC7C,MAAM,CAAC,YAAY;;;;;;;;;;;;;MAAgB;IAGnC,sBAAsB,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW;IAyB1D,mBAAmB,uDAoCjB;IAEF,sBAAsB,wIAgBpB;IAEF,aAAa,uCAEX;IAKF,iBAAiB,yDAkGf;IAEF,cAAc,mHAoCZ;IAEF,eAAe,8FAQb;IAEF,WAAW,oGAWT;IAEF,uBAAuB,yDA4FrB;IAEF,aAAa,4CA+BX;IAEF,YAAY,iEAyDV;IAEF,WAAW,iEAwCT;IAEF,cAAc,iEAmCZ;IAEF,cAAc,mDAiCZ;IAEF,aAAa,oBAeX;IAEF,OAAO,oBAoBL;CACH"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/index.d.ts b/modules/react-map-gl-draw/dist-types/index.d.ts new file mode 100644 index 000000000..c514f714c --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export { default as Editor } from './editor'; +export { GEOJSON_TYPE, SHAPE, RENDER_STATE, ELEMENT_TYPE, EDIT_TYPE } from './constants'; +export * from './edit-modes'; +export * from './types'; +export { DrawCircleFromCenterMode, DrawCircleByDiameterMode, DrawPointMode, DrawLineStringMode, DrawPolygonMode, DrawRectangleMode, DrawPolygonByDraggingMode, } from '@nebula.gl/edit-modes'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/index.d.ts.map b/modules/react-map-gl-draw/dist-types/index.d.ts.map new file mode 100644 index 000000000..3be627617 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzF,cAAc,cAAc,CAAC;AAE7B,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/mode-handler.d.ts b/modules/react-map-gl-draw/dist-types/mode-handler.d.ts new file mode 100644 index 000000000..90cb9fbab --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/mode-handler.d.ts @@ -0,0 +1,80 @@ +import { MapContextProps } from 'react-map-gl'; +import * as React from 'react'; +import { Feature, FeatureCollection, EditAction } from '@nebula.gl/edit-modes'; +import { MjolnirEvent } from 'mjolnir.js'; +import { EditorProps, EditorState, SelectAction } from './types'; +export default class ModeHandler extends React.PureComponent { + static displayName: string; + static defaultProps: { + selectable: boolean; + mode: any; + features: any; + onSelect: any; + onUpdate: any; + onUpdateCursor: () => void; + }; + constructor(props: EditorProps); + componentDidMount(): void; + componentDidUpdate(prevProps: EditorProps): void; + componentWillUnmount(): void; + _events: any; + _eventsRegistered: boolean; + _modeHandler: any; + _context: MapContextProps | null | undefined; + _containerRef: HTMLElement | null | undefined; + getFeatures: () => any; + addFeatures: (features: import("@nebula.gl/edit-modes").FeatureOf | import("@nebula.gl/edit-modes").FeatureOf | import("@nebula.gl/edit-modes").FeatureOf | import("@nebula.gl/edit-modes").FeatureOf | import("@nebula.gl/edit-modes").FeatureOf | import("@nebula.gl/edit-modes").FeatureOf | Feature[]) => void; + deleteFeatures: (featureIndexes: number | number[]) => void; + deleteHandles: (featureIndex: number, handleIndexes: number[]) => FeatureCollection; + getModeProps(): { + data: any; + selectedIndexes: number[]; + selectedEditHandleIndexes: number[]; + lastPointerMoveEvent: import("@nebula.gl/edit-modes").PointerMoveEvent; + viewport: import("viewport-mercator-project").WebMercatorViewport; + featuresDraggable: boolean; + onEdit: (editAction: EditAction) => void; + onUpdateCursor: Function; + modeConfig: any; + }; + _getMemorizedFeatureCollection: (args: any) => any; + _getFeatureCollection: () => any; + _setupModeHandler: () => void; + _clearEditingState: () => void; + _getSelectedFeatureIndex: () => number; + _onSelect: (selected: SelectAction) => void; + _onEdit: (editAction: EditAction) => void; + _degregisterEvents: () => void; + _registerEvents: () => void; + _onEvent: (handler: Function, evt: any, stopPropagation: boolean) => void; + _onClick: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + _onDblclick: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + _onPointerMove: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + _onPointerDown: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + _onPointerUp: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + _onPan: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void; + project: (pt: [number, number]) => import("viewport-mercator-project").Coordinates; + unproject: (pt: [number, number]) => import("viewport-mercator-project").Coordinates; + _getEvent(evt: MjolnirEvent): { + picks: { + object: any; + isGuide: boolean; + type: any; + index: any; + featureIndex: any; + }[]; + screenCoords: number[]; + mapCoords: import("viewport-mercator-project").Coordinates; + sourceEvent: any; + }; + _getHoverState: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => { + object: any; + index: number; + isGuide: boolean; + screenCoords: import("@nebula.gl/edit-modes").ScreenCoordinates; + mapCoords: import("@nebula.gl/edit-modes").Position; + }; + _render(): JSX.Element; + render(): JSX.Element; +} +//# sourceMappingURL=mode-handler.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/mode-handler.d.ts.map b/modules/react-map-gl-draw/dist-types/mode-handler.d.ts.map new file mode 100644 index 000000000..d48e94e32 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/mode-handler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"mode-handler.d.ts","sourceRoot":"","sources":["../src/mode-handler.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,OAAO,EACP,iBAAiB,EACjB,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAa,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAqC5E,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC;IACpF,MAAM,CAAC,WAAW,SAAiB;IACnC,MAAM,CAAC,YAAY;;;;;;;MAAgB;gBAEvB,KAAK,EAAE,WAAW;IAkB9B,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE,WAAW;IAOzC,oBAAoB;IAIpB,OAAO,EAAE,GAAG,CAAC;IACb,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,GAAG,CAAC;IAClB,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,aAAa,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAE9C,WAAW,YAIT;IAEF,WAAW,+iBAUT;IAEF,cAAc,8CAeZ;IAEF,aAAa,uEAyCX;IAEF,YAAY;;;;;;;;;;;IAsBZ,8BAA8B,qBAkB3B;IAEH,qBAAqB,YAKnB;IAEF,iBAAiB,aAUf;IAGF,kBAAkB,aAchB;IAEF,wBAAwB,eAKtB;IAEF,SAAS,mCAWP;IAEF,OAAO,wCA8BL;IAGF,kBAAkB,aAUhB;IAEF,eAAe,aAab;IAEF,QAAQ,kEAON;IAEF,QAAQ,qFA+CN;IAEF,WAAW,qFAIT;IAEF,cAAc,qFA0CZ;IAEF,cAAc,qFAsBZ;IAEF,YAAY,qFAyBV;IAEF,MAAM,qFAQJ;IAGF,OAAO,4EAGL;IAEF,SAAS,4EAGP;IAEF,SAAS,CAAC,GAAG,EAAE,YAAY;;;;;;;;;;;;IAgB3B,cAAc;;;;;;MAWZ;IAEF,OAAO;IAIP,MAAM;CAgBP"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/style.d.ts b/modules/react-map-gl-draw/dist-types/style.d.ts new file mode 100644 index 000000000..9668c67a9 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/style.d.ts @@ -0,0 +1,11 @@ +export declare function featureStyle({ feature, state }: { + feature: any; + state: any; +}): any; +export declare function editHandleStyle({ feature, shape, index, state }: { + feature: any; + shape: any; + index: any; + state: any; +}): {}; +//# sourceMappingURL=style.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/style.d.ts.map b/modules/react-map-gl-draw/dist-types/style.d.ts.map new file mode 100644 index 000000000..546ad0221 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/style.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AA4CA,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;;;CAAA,OAiD9C;AAED,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;;;;;CAAA,MAoC/D"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/types.d.ts b/modules/react-map-gl-draw/dist-types/types.d.ts new file mode 100644 index 000000000..a26196eac --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/types.d.ts @@ -0,0 +1,50 @@ +import { WebMercatorViewport } from 'viewport-mercator-project'; +import { ModeProps as BaseModeProps, Feature, ImmutableFeatureCollection, PointerMoveEvent, Pick, ClickEvent, ScreenCoordinates } from '@nebula.gl/edit-modes'; +import { RENDER_STATE, GEOJSON_TYPE, RENDER_TYPE } from './constants'; +export declare type Id = string | number; +export declare type RenderState = RENDER_STATE; +export declare type GeoJsonType = GEOJSON_TYPE; +export declare type RenderType = RENDER_TYPE; +export declare type SelectAction = { + selectedFeature: Feature | null | undefined; + selectedFeatureIndex?: number | null | undefined; + selectedEditHandleIndex?: number | null | undefined; + selectedEditHandleIndexes: number[]; + screenCoords: ScreenCoordinates | null | undefined; + mapCoords: Position | null | undefined; +}; +export declare type ModeProps = BaseModeProps & { + viewport: WebMercatorViewport | null | undefined; + featuresDraggable: boolean | null | undefined; +}; +export declare type EditorProps = { + mode?: Record; + style?: Record | null | undefined; + features?: Feature[] | null | undefined; + selectedFeatureIndex?: number | null | undefined; + selectable?: Boolean; + clickRadius?: number; + featureShape?: Function | string; + editHandleShape?: Function | string; + editHandleStyle?: Function | any; + featureStyle?: Function | any; + featuresDraggable?: boolean | null | undefined; + onUpdate?: Function; + onSelect?: Function; + onUpdateCursor?: Function; + modeConfig?: any; +}; +export declare type EditorState = { + featureCollection: ImmutableFeatureCollection | null | undefined; + selectedFeatureIndex: number | null | undefined; + selectedEditHandleIndexes: number[]; + hovered: Pick | null | undefined; + lastPointerMoveEvent: PointerMoveEvent; + isDragging: boolean; + didDrag: boolean; + pointerDownPicks: Pick[] | null | undefined; + pointerDownScreenCoords: ScreenCoordinates | null | undefined; + pointerDownMapCoords: Position | null | undefined; +}; +export declare type BaseEvent = ClickEvent; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist-types/types.d.ts.map b/modules/react-map-gl-draw/dist-types/types.d.ts.map new file mode 100644 index 000000000..1e760d370 --- /dev/null +++ b/modules/react-map-gl-draw/dist-types/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,OAAO,EACP,0BAA0B,EAC1B,gBAAgB,EAChB,IAAI,EACJ,UAAU,EACV,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE,oBAAY,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC,oBAAY,WAAW,GAAG,YAAY,CAAC;AACvC,oBAAY,WAAW,GAAG,YAAY,CAAC;AACvC,oBAAY,UAAU,GAAG,WAAW,CAAC;AAErC,oBAAY,YAAY,GAAG;IACzB,eAAe,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,SAAS,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACxC,CAAC;AAGF,oBAAY,SAAS,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG;IACpD,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAEjD,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CAC/C,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACpC,eAAe,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IACjC,YAAY,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,iBAAiB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,CAAC;IAEjE,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,yBAAyB,EAAE,MAAM,EAAE,CAAC;IAEpC,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,oBAAoB,EAAE,gBAAgB,CAAC;IAEvC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IAEjB,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,uBAAuB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9D,oBAAoB,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACnD,CAAC;AAEF,oBAAY,SAAS,GAAG,UAAU,CAAC"} \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/constants.js b/modules/react-map-gl-draw/dist/constants.js new file mode 100644 index 000000000..d97143bf0 --- /dev/null +++ b/modules/react-map-gl-draw/dist/constants.js @@ -0,0 +1,77 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EDIT_TYPE = exports.ELEMENT_TYPE = exports.GUIDE_TYPE = exports.RENDER_STATE = exports.RENDER_TYPE = exports.SHAPE = exports.GEOJSON_TYPE = void 0; +var GEOJSON_TYPE; +exports.GEOJSON_TYPE = GEOJSON_TYPE; + +(function (GEOJSON_TYPE) { + GEOJSON_TYPE["POINT"] = "Point"; + GEOJSON_TYPE["LINE_STRING"] = "LineString"; + GEOJSON_TYPE["POLYGON"] = "Polygon"; +})(GEOJSON_TYPE || (exports.GEOJSON_TYPE = GEOJSON_TYPE = {})); + +var SHAPE; +exports.SHAPE = SHAPE; + +(function (SHAPE) { + SHAPE["POINT"] = "Point"; + SHAPE["LINE_STRING"] = "LineString"; + SHAPE["POLYGON"] = "Polygon"; + SHAPE["RECTANGLE"] = "Rectangle"; + SHAPE["CIRCLE"] = "Circle"; +})(SHAPE || (exports.SHAPE = SHAPE = {})); + +var RENDER_TYPE; +exports.RENDER_TYPE = RENDER_TYPE; + +(function (RENDER_TYPE) { + RENDER_TYPE["POINT"] = "Point"; + RENDER_TYPE["LINE_STRING"] = "LineString"; + RENDER_TYPE["POLYGON"] = "Polygon"; + RENDER_TYPE["RECTANGLE"] = "Rectangle"; +})(RENDER_TYPE || (exports.RENDER_TYPE = RENDER_TYPE = {})); + +var RENDER_STATE; +exports.RENDER_STATE = RENDER_STATE; + +(function (RENDER_STATE) { + RENDER_STATE["INACTIVE"] = "INACTIVE"; + RENDER_STATE["UNCOMMITTED"] = "UNCOMMITTED"; + RENDER_STATE["SELECTED"] = "SELECTED"; + RENDER_STATE["HOVERED"] = "HOVERED"; + RENDER_STATE["CLOSING"] = "CLOSING"; +})(RENDER_STATE || (exports.RENDER_STATE = RENDER_STATE = {})); + +var GUIDE_TYPE; +exports.GUIDE_TYPE = GUIDE_TYPE; + +(function (GUIDE_TYPE) { + GUIDE_TYPE["TENTATIVE"] = "tentative"; + GUIDE_TYPE["EDIT_HANDLE"] = "editHandle"; + GUIDE_TYPE["CURSOR_EDIT_HANDLE"] = "cursorEditHandle"; +})(GUIDE_TYPE || (exports.GUIDE_TYPE = GUIDE_TYPE = {})); + +var ELEMENT_TYPE; +exports.ELEMENT_TYPE = ELEMENT_TYPE; + +(function (ELEMENT_TYPE) { + ELEMENT_TYPE["FEATURE"] = "feature"; + ELEMENT_TYPE["FILL"] = "fill"; + ELEMENT_TYPE["SEGMENT"] = "segment"; + ELEMENT_TYPE["EDIT_HANDLE"] = "editHandle"; +})(ELEMENT_TYPE || (exports.ELEMENT_TYPE = ELEMENT_TYPE = {})); + +var EDIT_TYPE; +exports.EDIT_TYPE = EDIT_TYPE; + +(function (EDIT_TYPE) { + EDIT_TYPE["ADD_FEATURE"] = "addFeature"; + EDIT_TYPE["ADD_POSITION"] = "addPosition"; + EDIT_TYPE["REMOVE_POSITION"] = "removePosition"; + EDIT_TYPE["MOVE_POSITION"] = "movePosition"; + EDIT_TYPE["FINISH_MOVE_POSITION"] = "finishMovePosition"; +})(EDIT_TYPE || (exports.EDIT_TYPE = EDIT_TYPE = {})); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMudHMiXSwibmFtZXMiOlsiR0VPSlNPTl9UWVBFIiwiU0hBUEUiLCJSRU5ERVJfVFlQRSIsIlJFTkRFUl9TVEFURSIsIkdVSURFX1RZUEUiLCJFTEVNRU5UX1RZUEUiLCJFRElUX1RZUEUiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFZQSxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtHQUFBQSxZLDRCQUFBQSxZOztJQU1BQyxLOzs7V0FBQUEsSztBQUFBQSxFQUFBQSxLO0FBQUFBLEVBQUFBLEs7QUFBQUEsRUFBQUEsSztBQUFBQSxFQUFBQSxLO0FBQUFBLEVBQUFBLEs7R0FBQUEsSyxxQkFBQUEsSzs7SUFRQUMsVzs7O1dBQUFBLFc7QUFBQUEsRUFBQUEsVztBQUFBQSxFQUFBQSxXO0FBQUFBLEVBQUFBLFc7QUFBQUEsRUFBQUEsVztHQUFBQSxXLDJCQUFBQSxXOztJQU9BQyxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7R0FBQUEsWSw0QkFBQUEsWTs7SUFRQUMsVTs7O1dBQUFBLFU7QUFBQUEsRUFBQUEsVTtBQUFBQSxFQUFBQSxVO0FBQUFBLEVBQUFBLFU7R0FBQUEsVSwwQkFBQUEsVTs7SUFNQUMsWTs7O1dBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtHQUFBQSxZLDRCQUFBQSxZOztJQU9BQyxTOzs7V0FBQUEsUztBQUFBQSxFQUFBQSxTO0FBQUFBLEVBQUFBLFM7QUFBQUEsRUFBQUEsUztBQUFBQSxFQUFBQSxTO0FBQUFBLEVBQUFBLFM7R0FBQUEsUyx5QkFBQUEsUyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEdFT0pTT05fVFlQRSB7XG4gIFBPSU5UID0gJ1BvaW50JyxcbiAgTElORV9TVFJJTkcgPSAnTGluZVN0cmluZycsXG4gIFBPTFlHT04gPSAnUG9seWdvbicsXG59XG5cbmV4cG9ydCBlbnVtIFNIQVBFIHtcbiAgUE9JTlQgPSAnUG9pbnQnLFxuICBMSU5FX1NUUklORyA9ICdMaW5lU3RyaW5nJyxcbiAgUE9MWUdPTiA9ICdQb2x5Z29uJyxcbiAgUkVDVEFOR0xFID0gJ1JlY3RhbmdsZScsXG4gIENJUkNMRSA9ICdDaXJjbGUnLFxufVxuXG5leHBvcnQgZW51bSBSRU5ERVJfVFlQRSB7XG4gIFBPSU5UID0gJ1BvaW50JyxcbiAgTElORV9TVFJJTkcgPSAnTGluZVN0cmluZycsXG4gIFBPTFlHT04gPSAnUG9seWdvbicsXG4gIFJFQ1RBTkdMRSA9ICdSZWN0YW5nbGUnLFxufVxuXG5leHBvcnQgZW51bSBSRU5ERVJfU1RBVEUge1xuICBJTkFDVElWRSA9ICdJTkFDVElWRScsXG4gIFVOQ09NTUlUVEVEID0gJ1VOQ09NTUlUVEVEJyxcbiAgU0VMRUNURUQgPSAnU0VMRUNURUQnLFxuICBIT1ZFUkVEID0gJ0hPVkVSRUQnLFxuICBDTE9TSU5HID0gJ0NMT1NJTkcnLFxufVxuXG5leHBvcnQgZW51bSBHVUlERV9UWVBFIHtcbiAgVEVOVEFUSVZFID0gJ3RlbnRhdGl2ZScsXG4gIEVESVRfSEFORExFID0gJ2VkaXRIYW5kbGUnLFxuICBDVVJTT1JfRURJVF9IQU5ETEUgPSAnY3Vyc29yRWRpdEhhbmRsZScsXG59XG5cbmV4cG9ydCBlbnVtIEVMRU1FTlRfVFlQRSB7XG4gIEZFQVRVUkUgPSAnZmVhdHVyZScsXG4gIEZJTEwgPSAnZmlsbCcsXG4gIFNFR01FTlQgPSAnc2VnbWVudCcsXG4gIEVESVRfSEFORExFID0gJ2VkaXRIYW5kbGUnLFxufVxuXG5leHBvcnQgZW51bSBFRElUX1RZUEUge1xuICBBRERfRkVBVFVSRSA9ICdhZGRGZWF0dXJlJyxcbiAgQUREX1BPU0lUSU9OID0gJ2FkZFBvc2l0aW9uJyxcbiAgUkVNT1ZFX1BPU0lUSU9OID0gJ3JlbW92ZVBvc2l0aW9uJyxcbiAgTU9WRV9QT1NJVElPTiA9ICdtb3ZlUG9zaXRpb24nLFxuICBGSU5JU0hfTU9WRV9QT1NJVElPTiA9ICdmaW5pc2hNb3ZlUG9zaXRpb24nLFxufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/edit-modes/base-mode.js b/modules/react-map-gl-draw/dist/edit-modes/base-mode.js new file mode 100644 index 000000000..3267831d0 --- /dev/null +++ b/modules/react-map-gl-draw/dist/edit-modes/base-mode.js @@ -0,0 +1,125 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _constants = require("../constants"); + +var _utils = require("./utils"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +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 BaseMode = /*#__PURE__*/function () { + function BaseMode() { + _classCallCheck(this, BaseMode); + + _defineProperty(this, "_tentativeFeature", void 0); + + _defineProperty(this, "_editHandles", void 0); + + this._tentativeFeature = null; + this._editHandles = null; + } + + _createClass(BaseMode, [{ + key: "handlePan", + value: function handlePan(event, props) {} + }, { + key: "handleClick", + value: function handleClick(event, props) {} + }, { + key: "handleDblClick", + value: function handleDblClick(event, props) {} + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) {} + }, { + key: "handleStartDragging", + value: function handleStartDragging(event, props) {} + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) {} + }, { + key: "handleKeyUp", + value: function handleKeyUp(event, props) {} + }, { + key: "getGuides", + value: function getGuides(props) { + return null; + } + }, { + key: "getTooltips", + value: function getTooltips(props) { + return []; + } + }, { + key: "handleDragging", + value: function handleDragging(event, props) {} + }, { + key: "getTentativeFeature", + value: function getTentativeFeature() { + return this._tentativeFeature; + } + }, { + key: "getEditHandles", + value: function getEditHandles() { + return this._editHandles; + } + }, { + key: "setTentativeFeature", + value: function setTentativeFeature(feature) { + this._tentativeFeature = feature; + } + }, { + key: "getEditHandlesFromFeature", + value: function getEditHandlesFromFeature(feature, featureIndex) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } // @ts-ignore + + + return coordinates.map(function (coord, i) { + return { + type: 'Feature', + properties: { + // TODO deprecate renderType + renderType: feature.properties.renderType, + guideType: _constants.GUIDE_TYPE.EDIT_HANDLE, + editHandleType: 'existing', + featureIndex: featureIndex, + positionIndexes: [i] + }, + geometry: { + type: _constants.GEOJSON_TYPE.POINT, + coordinates: coord + } + }; + }); + } + }, { + key: "getSelectedFeature", + value: function getSelectedFeature(props, featureIndex) { + var data = props.data, + selectedIndexes = props.selectedIndexes; // @ts-ignore + + var features = data && data.features; + var selectedIndex = (0, _utils.isNumeric)(featureIndex) ? Number(featureIndex) : selectedIndexes && selectedIndexes[0]; + return features && features[selectedIndex]; + } + }]); + + return BaseMode; +}(); + +exports["default"] = BaseMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2Jhc2UtbW9kZS50cyJdLCJuYW1lcyI6WyJCYXNlTW9kZSIsIl90ZW50YXRpdmVGZWF0dXJlIiwiX2VkaXRIYW5kbGVzIiwiZXZlbnQiLCJwcm9wcyIsImZlYXR1cmUiLCJmZWF0dXJlSW5kZXgiLCJjb29yZGluYXRlcyIsIm1hcCIsImNvb3JkIiwiaSIsInR5cGUiLCJwcm9wZXJ0aWVzIiwicmVuZGVyVHlwZSIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJFRElUX0hBTkRMRSIsImVkaXRIYW5kbGVUeXBlIiwicG9zaXRpb25JbmRleGVzIiwiZ2VvbWV0cnkiLCJHRU9KU09OX1RZUEUiLCJQT0lOVCIsImRhdGEiLCJzZWxlY3RlZEluZGV4ZXMiLCJmZWF0dXJlcyIsInNlbGVjdGVkSW5kZXgiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFjQTs7QUFDQTs7Ozs7Ozs7OztJQUVxQkEsUTtBQUluQixzQkFBYztBQUFBOztBQUFBOztBQUFBOztBQUNaLFNBQUtDLGlCQUFMLEdBQXlCLElBQXpCO0FBQ0EsU0FBS0MsWUFBTCxHQUFvQixJQUFwQjtBQUNEOzs7OzhCQUVTQyxLLEVBQW1CQyxLLEVBQXFDLENBQUU7OztnQ0FFeERELEssRUFBbUJDLEssRUFBcUMsQ0FBRTs7O21DQUV2REQsSyxFQUFtQkMsSyxFQUFxQyxDQUFFOzs7c0NBRXZERCxLLEVBQXlCQyxLLEVBQXFDLENBQUU7Ozt3Q0FFOURELEssRUFBMkJDLEssRUFBcUMsQ0FBRTs7O3VDQUVuRUQsSyxFQUEwQkMsSyxFQUFxQyxDQUFFOzs7Z0NBRXhFRCxLLEVBQXNCQyxLLEVBQTJDLENBQUU7Ozs4QkFFckVBLEssRUFBZ0Y7QUFDeEYsYUFBTyxJQUFQO0FBQ0Q7OztnQ0FDV0EsSyxFQUFnRDtBQUMxRCxhQUFPLEVBQVA7QUFDRDs7O21DQUNjRCxLLEVBQXNCQyxLLEVBQTJDLENBQUU7OzswQ0FFNUQ7QUFDcEIsYUFBTyxLQUFLSCxpQkFBWjtBQUNEOzs7cUNBRWdCO0FBQ2YsYUFBTyxLQUFLQyxZQUFaO0FBQ0Q7Ozt3Q0FFbUJHLE8sRUFBa0I7QUFDcEMsV0FBS0osaUJBQUwsR0FBeUJJLE9BQXpCO0FBQ0Q7Ozs4Q0FFeUJBLE8sRUFBa0JDLFksRUFBeUM7QUFDbkYsVUFBTUMsV0FBVyxHQUFHLGtDQUFzQkYsT0FBdEIsQ0FBcEI7O0FBQ0EsVUFBSSxDQUFDRSxXQUFMLEVBQWtCO0FBQ2hCLGVBQU8sSUFBUDtBQUNELE9BSmtGLENBS25GOzs7QUFDQSxhQUFPQSxXQUFXLENBQUNDLEdBQVosQ0FBZ0IsVUFBQ0MsS0FBRCxFQUFRQyxDQUFSLEVBQWM7QUFDbkMsZUFBTztBQUNMQyxVQUFBQSxJQUFJLEVBQUUsU0FERDtBQUVMQyxVQUFBQSxVQUFVLEVBQUU7QUFDVjtBQUNBQyxZQUFBQSxVQUFVLEVBQUVSLE9BQU8sQ0FBQ08sVUFBUixDQUFtQkMsVUFGckI7QUFHVkMsWUFBQUEsU0FBUyxFQUFFQyxzQkFBV0MsV0FIWjtBQUlWQyxZQUFBQSxjQUFjLEVBQUUsVUFKTjtBQUtWWCxZQUFBQSxZQUFZLEVBQVpBLFlBTFU7QUFNVlksWUFBQUEsZUFBZSxFQUFFLENBQUNSLENBQUQ7QUFOUCxXQUZQO0FBVUxTLFVBQUFBLFFBQVEsRUFBRTtBQUNSUixZQUFBQSxJQUFJLEVBQUVTLHdCQUFhQyxLQURYO0FBRVJkLFlBQUFBLFdBQVcsRUFBRUU7QUFGTDtBQVZMLFNBQVA7QUFlRCxPQWhCTSxDQUFQO0FBaUJEOzs7dUNBRWtCTCxLLEVBQXFDRSxZLEVBQXlDO0FBQUEsVUFDdkZnQixJQUR1RixHQUM3RGxCLEtBRDZELENBQ3ZGa0IsSUFEdUY7QUFBQSxVQUNqRkMsZUFEaUYsR0FDN0RuQixLQUQ2RCxDQUNqRm1CLGVBRGlGLEVBRS9GOztBQUNBLFVBQU1DLFFBQVEsR0FBR0YsSUFBSSxJQUFJQSxJQUFJLENBQUNFLFFBQTlCO0FBRUEsVUFBTUMsYUFBYSxHQUFHLHNCQUFVbkIsWUFBVixJQUNsQm9CLE1BQU0sQ0FBQ3BCLFlBQUQsQ0FEWSxHQUVsQmlCLGVBQWUsSUFBSUEsZUFBZSxDQUFDLENBQUQsQ0FGdEM7QUFJQSxhQUFPQyxRQUFRLElBQUlBLFFBQVEsQ0FBQ0MsYUFBRCxDQUEzQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWRpdE1vZGUsXG4gIEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIENsaWNrRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFN0YXJ0RHJhZ2dpbmdFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBUb29sdGlwLFxuICBEcmFnZ2luZ0V2ZW50LFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBHRU9KU09OX1RZUEUsIEdVSURFX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0RmVhdHVyZUNvb3JkaW5hdGVzLCBpc051bWVyaWMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZU1vZGUgaW1wbGVtZW50cyBFZGl0TW9kZTxGZWF0dXJlQ29sbGVjdGlvbiwgR3VpZGVGZWF0dXJlQ29sbGVjdGlvbj4ge1xuICBfdGVudGF0aXZlRmVhdHVyZTogRmVhdHVyZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9lZGl0SGFuZGxlczogRmVhdHVyZVtdIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl90ZW50YXRpdmVGZWF0dXJlID0gbnVsbDtcbiAgICB0aGlzLl9lZGl0SGFuZGxlcyA9IG51bGw7XG4gIH1cblxuICBoYW5kbGVQYW4oZXZlbnQ6IENsaWNrRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7fVxuXG4gIGhhbmRsZUNsaWNrKGV2ZW50OiBDbGlja0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge31cblxuICBoYW5kbGVEYmxDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlUG9pbnRlck1vdmUoZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7fVxuXG4gIGhhbmRsZVN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IFN0YXJ0RHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlU3RvcERyYWdnaW5nKGV2ZW50OiBTdG9wRHJhZ2dpbmdFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHt9XG5cbiAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KTogdm9pZCB7fVxuXG4gIGdldEd1aWRlcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IEd1aWRlRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXRUb29sdGlwcyhwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IFRvb2x0aXBbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGhhbmRsZURyYWdnaW5nKGV2ZW50OiBEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPik6IHZvaWQge31cblxuICBnZXRUZW50YXRpdmVGZWF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLl90ZW50YXRpdmVGZWF0dXJlO1xuICB9XG5cbiAgZ2V0RWRpdEhhbmRsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRIYW5kbGVzO1xuICB9XG5cbiAgc2V0VGVudGF0aXZlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKSB7XG4gICAgdGhpcy5fdGVudGF0aXZlRmVhdHVyZSA9IGZlYXR1cmU7XG4gIH1cblxuICBnZXRFZGl0SGFuZGxlc0Zyb21GZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUsIGZlYXR1cmVJbmRleDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmUpO1xuICAgIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzLm1hcCgoY29vcmQsIGkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFRPRE8gZGVwcmVjYXRlIHJlbmRlclR5cGVcbiAgICAgICAgICByZW5kZXJUeXBlOiBmZWF0dXJlLnByb3BlcnRpZXMucmVuZGVyVHlwZSxcbiAgICAgICAgICBndWlkZVR5cGU6IEdVSURFX1RZUEUuRURJVF9IQU5ETEUsXG4gICAgICAgICAgZWRpdEhhbmRsZVR5cGU6ICdleGlzdGluZycsXG4gICAgICAgICAgZmVhdHVyZUluZGV4LFxuICAgICAgICAgIHBvc2l0aW9uSW5kZXhlczogW2ldLFxuICAgICAgICB9LFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIHR5cGU6IEdFT0pTT05fVFlQRS5QT0lOVCxcbiAgICAgICAgICBjb29yZGluYXRlczogY29vcmQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+LCBmZWF0dXJlSW5kZXg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB7IGRhdGEsIHNlbGVjdGVkSW5kZXhlcyB9ID0gcHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGZlYXR1cmVzID0gZGF0YSAmJiBkYXRhLmZlYXR1cmVzO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IGlzTnVtZXJpYyhmZWF0dXJlSW5kZXgpXG4gICAgICA/IE51bWJlcihmZWF0dXJlSW5kZXgpXG4gICAgICA6IHNlbGVjdGVkSW5kZXhlcyAmJiBzZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICByZXR1cm4gZmVhdHVyZXMgJiYgZmVhdHVyZXNbc2VsZWN0ZWRJbmRleF07XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/edit-modes/editing-mode.js b/modules/react-map-gl-draw/dist/edit-modes/editing-mode.js new file mode 100644 index 000000000..b948863e6 --- /dev/null +++ b/modules/react-map-gl-draw/dist/edit-modes/editing-mode.js @@ -0,0 +1,366 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _editModes = require("@nebula.gl/edit-modes"); + +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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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); } + +var EditingMode = /*#__PURE__*/function (_BaseMode) { + _inherits(EditingMode, _BaseMode); + + var _super = _createSuper(EditingMode); + + function EditingMode() { + _classCallCheck(this, EditingMode); + + return _super.apply(this, arguments); + } + + _createClass(EditingMode, [{ + key: "handleClick", + value: function handleClick(event, props) { + var picked = event.picks && event.picks[0]; + var selectedFeatureIndex = props.selectedIndexes && props.selectedIndexes[0]; // @ts-ignore + + if (!picked || !picked.object || picked.featureIndex !== selectedFeatureIndex) { + return; + } // @ts-ignore + + + var objectType = picked.type, + featureIndex = picked.featureIndex, + index = picked.index; + var feature = this.getSelectedFeature(props, featureIndex); + + if (feature && (feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON || feature.geometry.type === _constants.GEOJSON_TYPE.LINE_STRING) && objectType === _constants.ELEMENT_TYPE.SEGMENT) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return; + } // @ts-ignore + + + var insertIndex = (index + 1) % coordinates.length; + var positionIndexes = feature.geometry.type === _constants.SHAPE.POLYGON ? [0, insertIndex] : [insertIndex]; + + var insertMapCoords = this._getPointOnSegment(feature, picked, event.mapCoords); + + var updatedData = new _editModes.ImmutableFeatureCollection(props.data) // @ts-ignore + .addPosition(featureIndex, positionIndexes, insertMapCoords).getObject(); + props.onEdit({ + editType: _constants.EDIT_TYPE.ADD_POSITION, + updatedData: updatedData, + editContext: [{ + featureIndex: featureIndex, + editHandleIndex: insertIndex, + // @ts-ignore + screenCoords: props.viewport && props.viewport.project(insertMapCoords), + mapCoords: insertMapCoords + }] + }); + } + } + }, { + key: "handleStopDragging", + value: function handleStopDragging(event, props) { + // replace point + var picked = event.picks && event.picks[0]; // @ts-ignore + + if (!picked || !picked.Object || !(0, _utils.isNumeric)(picked.featureIndex)) { + return; + } + + var pickedObject = picked.object; + + switch (pickedObject.type) { + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + this._handleDragging(event, props); + + break; + + default: + } + } + }, { + key: "_handleDragging", + value: function _handleDragging(event, props) { + var onEdit = props.onEdit; // @ts-ignore + + var selectedFeature = this.getSelectedFeature(props); // nothing clicked + // @ts-ignore + + var isDragging = event.isDragging, + pointerDownPicks = event.pointerDownPicks, + screenCoords = event.screenCoords; + var lastPointerMoveEvent = props.lastPointerMoveEvent; + var clicked = pointerDownPicks && pointerDownPicks[0]; // @ts-ignore + + if (!clicked || !clicked.object || !(0, _utils.isNumeric)(clicked.featureIndex)) { + return; + } // @ts-ignore + + + var objectType = clicked.type, + editHandleIndex = clicked.index; // not dragging + + var updatedData = null; + var editType = isDragging ? _constants.EDIT_TYPE.MOVE_POSITION : _constants.EDIT_TYPE.FINISH_MOVE_POSITION; + + switch (objectType) { + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + case _constants.ELEMENT_TYPE.SEGMENT: + if (!props.featuresDraggable) { + break; + } // dragging feature + + + var dx = screenCoords[0] - lastPointerMoveEvent.screenCoords[0]; + var dy = screenCoords[1] - lastPointerMoveEvent.screenCoords[1]; + updatedData = this._updateFeature(props, 'feature', { + dx: dx, + dy: dy + }); + onEdit({ + editType: editType, + updatedData: updatedData, + editContext: null + }); + break; + + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + // dragging editHandle + // dragging rectangle or other shapes + var updateType = selectedFeature.properties.shape === _constants.SHAPE.RECTANGLE ? 'rectangle' : 'editHandle'; + updatedData = this._updateFeature(props, updateType, { + editHandleIndex: editHandleIndex, + mapCoords: event.mapCoords + }); + onEdit({ + editType: editType, + updatedData: updatedData, + editContext: null + }); + break; + + default: + } + } + }, { + key: "handlePointerMove", + value: function handlePointerMove(event, props) { + // no selected feature + // @ts-ignore + var selectedFeature = this.getSelectedFeature(props); + + if (!selectedFeature) { + return; + } // @ts-ignore + + + if (!event.isDragging) { + return; + } + + this._handleDragging(event, props); + } // TODO - refactor + + }, { + key: "_updateFeature", + value: function _updateFeature(props, type) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var data = props.data, + selectedIndexes = props.selectedIndexes, + viewport = props.viewport; + var featureIndex = selectedIndexes && selectedIndexes[0]; + var feature = this.getSelectedFeature(props, featureIndex); + var geometry = null; + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + var newCoordinates = _toConsumableArray(coordinates); + + switch (type) { + case 'editHandle': + var positionIndexes = feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [0, options.editHandleIndex] : [options.editHandleIndex]; + return new _editModes.ImmutableFeatureCollection(data).replacePosition(featureIndex, positionIndexes, options.mapCoords).getObject(); + + case 'feature': + var dx = options.dx, + dy = options.dy; // @ts-ignore + + newCoordinates = newCoordinates.map(function (mapCoords) { + // @ts-ignore + var pixels = viewport && viewport.project(mapCoords); + + if (pixels) { + pixels[0] += dx; + pixels[1] += dy; + return viewport && viewport.unproject(pixels); + } + + return null; + }).filter(Boolean); + geometry = { + type: feature.geometry.type, + coordinates: feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [newCoordinates] : feature.geometry.type === _constants.GEOJSON_TYPE.POINT ? newCoordinates[0] : newCoordinates + }; + return new _editModes.ImmutableFeatureCollection(data).replaceGeometry(featureIndex, geometry).getObject(); + + case 'rectangle': + // moved editHandleIndex and destination mapCoords + newCoordinates = (0, _utils.updateRectanglePosition)( // @ts-ignore + feature, options.editHandleIndex, options.mapCoords); + geometry = { + type: _constants.GEOJSON_TYPE.POLYGON, + coordinates: newCoordinates + }; + return new _editModes.ImmutableFeatureCollection(data).replaceGeometry(featureIndex, geometry).getObject(); + + default: + return data && new _editModes.ImmutableFeatureCollection(data).getObject(); + } + } + }, { + key: "_getPointOnSegment", + value: function _getPointOnSegment(feature, picked, pickedMapCoords) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + var srcVertexIndex = picked.index; + var targetVertexIndex = picked.index + 1; + return (0, _utils.findClosestPointOnLineSegment)( // @ts-ignore + coordinates[srcVertexIndex], coordinates[targetVertexIndex], pickedMapCoords); + } + }, { + key: "_getCursorEditHandle", + value: function _getCursorEditHandle(event, feature) { + // event can be null when the user has not interacted with the map whatsoever + // and therefore props.lastPointerMoveEvent is still null + // returning null here means we can e.g. set a featureIndex without requiring an event + if (!event) { + return null; + } // @ts-ignore + + + var isDragging = event.isDragging, + picks = event.picks; // if not pick segment + + var picked = picks && picks[0]; // @ts-ignore + + if (!picked || !(0, _utils.isNumeric)(picked.featureIndex) || picked.type !== _constants.ELEMENT_TYPE.SEGMENT) { + return null; + } // if dragging or feature is neither polygon nor line string + + + if (isDragging || feature.geometry.type !== _constants.GEOJSON_TYPE.POLYGON && feature.geometry.type !== _constants.GEOJSON_TYPE.LINE_STRING) { + return null; + } + + var insertMapCoords = this._getPointOnSegment(feature, picked, event.mapCoords); + + if (!insertMapCoords) { + return null; + } + + return { + type: 'Feature', + properties: { + guideType: _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE, + shape: feature.properties.shape, + positionIndexes: [-1], + editHandleType: 'intermediate' + }, + geometry: { + type: _constants.GEOJSON_TYPE.POINT, + coordinates: insertMapCoords + } + }; + } // @ts-ignore + + }, { + key: "getGuides", + value: function getGuides(props) { + // @ts-ignore + var selectedFeature = this.getSelectedFeature(props); + var selectedFeatureIndex = props.selectedIndexes && props.selectedIndexes[0]; + + if (!selectedFeature || selectedFeature.geometry.type === _constants.GEOJSON_TYPE.POINT) { + return null; + } + + var event = props.lastPointerMoveEvent; // feature editHandles + + var editHandles = this.getEditHandlesFromFeature(selectedFeature, selectedFeatureIndex) || []; // cursor editHandle + + var cursorEditHandle = this._getCursorEditHandle(event, selectedFeature); + + if (cursorEditHandle) { + // @ts-ignore + editHandles.push(cursorEditHandle); + } + + return { + type: 'FeatureCollection', + features: editHandles.length ? editHandles : null + }; + } + }]); + + return EditingMode; +}(_baseMode["default"]); + +exports["default"] = EditingMode; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZS50cyJdLCJuYW1lcyI6WyJFZGl0aW5nTW9kZSIsImV2ZW50IiwicHJvcHMiLCJwaWNrZWQiLCJwaWNrcyIsInNlbGVjdGVkRmVhdHVyZUluZGV4Iiwic2VsZWN0ZWRJbmRleGVzIiwib2JqZWN0IiwiZmVhdHVyZUluZGV4Iiwib2JqZWN0VHlwZSIsInR5cGUiLCJpbmRleCIsImZlYXR1cmUiLCJnZXRTZWxlY3RlZEZlYXR1cmUiLCJnZW9tZXRyeSIsIkdFT0pTT05fVFlQRSIsIlBPTFlHT04iLCJMSU5FX1NUUklORyIsIkVMRU1FTlRfVFlQRSIsIlNFR01FTlQiLCJjb29yZGluYXRlcyIsImluc2VydEluZGV4IiwibGVuZ3RoIiwicG9zaXRpb25JbmRleGVzIiwiU0hBUEUiLCJpbnNlcnRNYXBDb29yZHMiLCJfZ2V0UG9pbnRPblNlZ21lbnQiLCJtYXBDb29yZHMiLCJ1cGRhdGVkRGF0YSIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwiZGF0YSIsImFkZFBvc2l0aW9uIiwiZ2V0T2JqZWN0Iiwib25FZGl0IiwiZWRpdFR5cGUiLCJFRElUX1RZUEUiLCJBRERfUE9TSVRJT04iLCJlZGl0Q29udGV4dCIsImVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsInZpZXdwb3J0IiwicHJvamVjdCIsIk9iamVjdCIsInBpY2tlZE9iamVjdCIsIkZFQVRVUkUiLCJGSUxMIiwiRURJVF9IQU5ETEUiLCJfaGFuZGxlRHJhZ2dpbmciLCJzZWxlY3RlZEZlYXR1cmUiLCJpc0RyYWdnaW5nIiwicG9pbnRlckRvd25QaWNrcyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwiY2xpY2tlZCIsIk1PVkVfUE9TSVRJT04iLCJGSU5JU0hfTU9WRV9QT1NJVElPTiIsImZlYXR1cmVzRHJhZ2dhYmxlIiwiZHgiLCJkeSIsIl91cGRhdGVGZWF0dXJlIiwidXBkYXRlVHlwZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsIlJFQ1RBTkdMRSIsIm9wdGlvbnMiLCJuZXdDb29yZGluYXRlcyIsInJlcGxhY2VQb3NpdGlvbiIsIm1hcCIsInBpeGVscyIsInVucHJvamVjdCIsImZpbHRlciIsIkJvb2xlYW4iLCJQT0lOVCIsInJlcGxhY2VHZW9tZXRyeSIsInBpY2tlZE1hcENvb3JkcyIsInNyY1ZlcnRleEluZGV4IiwidGFyZ2V0VmVydGV4SW5kZXgiLCJndWlkZVR5cGUiLCJHVUlERV9UWVBFIiwiQ1VSU09SX0VESVRfSEFORExFIiwiZWRpdEhhbmRsZVR5cGUiLCJlZGl0SGFuZGxlcyIsImdldEVkaXRIYW5kbGVzRnJvbUZlYXR1cmUiLCJjdXJzb3JFZGl0SGFuZGxlIiwiX2dldEN1cnNvckVkaXRIYW5kbGUiLCJwdXNoIiwiZmVhdHVyZXMiLCJCYXNlTW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9xQkEsVzs7Ozs7Ozs7Ozs7OztnQ0FDUEMsSyxFQUFtQkMsSyxFQUFxQztBQUNsRSxVQUFNQyxNQUFNLEdBQUdGLEtBQUssQ0FBQ0csS0FBTixJQUFlSCxLQUFLLENBQUNHLEtBQU4sQ0FBWSxDQUFaLENBQTlCO0FBQ0EsVUFBTUMsb0JBQW9CLEdBQUdILEtBQUssQ0FBQ0ksZUFBTixJQUF5QkosS0FBSyxDQUFDSSxlQUFOLENBQXNCLENBQXRCLENBQXRELENBRmtFLENBR2xFOztBQUNBLFVBQUksQ0FBQ0gsTUFBRCxJQUFXLENBQUNBLE1BQU0sQ0FBQ0ksTUFBbkIsSUFBNkJKLE1BQU0sQ0FBQ0ssWUFBUCxLQUF3Qkgsb0JBQXpELEVBQStFO0FBQzdFO0FBQ0QsT0FOaUUsQ0FRbEU7OztBQVJrRSxVQVNwREksVUFUb0QsR0FTaEJOLE1BVGdCLENBUzFETyxJQVQwRDtBQUFBLFVBU3hDRixZQVR3QyxHQVNoQkwsTUFUZ0IsQ0FTeENLLFlBVHdDO0FBQUEsVUFTMUJHLEtBVDBCLEdBU2hCUixNQVRnQixDQVMxQlEs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QVQ2QyxDQVc3Qzs7QUFDQSxVQUFNNkIsV0FBVyxHQUFHLEtBQUtDLHlCQUFMLENBQStCakMsZUFBL0IsRUFBZ0QzQyxvQkFBaEQsS0FBeUUsRUFBN0YsQ0FaNkMsQ0FjN0M7O0FBQ0EsVUFBTTZFLGdCQUFnQixHQUFHLEtBQUtDLG9CQUFMLENBQTBCbEYsS0FBMUIsRUFBaUMrQyxlQUFqQyxDQUF6Qjs7QUFDQSxVQUFJa0MsZ0JBQUosRUFBc0I7QUFDcEI7QUFDQUYsUUFBQUEsV0FBVyxDQUFDSSxJQUFaLENBQWlCRixnQkFBakI7QUFDRDs7QUFFRCxhQUFPO0FBQ0x4RSxRQUFBQSxJQUFJLEVBQUUsbUJBREQ7QUFFTDJFLFFBQUFBLFFBQVEsRUFBRUwsV0FBVyxDQUFDMUQsTUFBWixHQUFxQjBELFdBQXJCLEdBQW1DO0FBRnhDLE9BQVA7QUFJRDs7OztFQTFUc0NNLG9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHR5cGUge1xuICBGZWF0dXJlLFxuICBGZWF0dXJlQ29sbGVjdGlvbixcbiAgQ2xpY2tFdmVudCxcbiAgU3RvcERyYWdnaW5nRXZlbnQsXG4gIFBvaW50ZXJNb3ZlRXZlbnQsXG4gIFBvc2l0aW9uLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuaW1wb3J0IHsgTW9kZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBTSEFQRSwgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUsIEdFT0pTT05fVFlQRSwgR1VJREVfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQmFzZU1vZGUgZnJvbSAnLi9iYXNlLW1vZGUnO1xuaW1wb3J0IHtcbiAgZmluZENsb3Nlc3RQb2ludE9uTGluZVNlZ21lbnQsXG4gIGdldEZlYXR1cmVDb29yZGluYXRlcyxcbiAgaXNOdW1lcmljLFxuICB1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbixcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRpbmdNb2RlIGV4dGVuZHMgQmFzZU1vZGUge1xuICBoYW5kbGVDbGljayhldmVudDogQ2xpY2tFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICBjb25zdCBwaWNrZWQgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcyAmJiBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghcGlja2VkIHx8ICFwaWNrZWQub2JqZWN0IHx8IHBpY2tlZC5mZWF0dXJlSW5kZXggIT09IHNlbGVjdGVkRmVhdHVyZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgdHlwZTogb2JqZWN0VHlwZSwgZmVhdHVyZUluZGV4LCBpbmRleCB9ID0gcGlja2VkO1xuICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcywgZmVhdHVyZUluZGV4KTtcblxuICAgIGlmIChcbiAgICAgIGZlYXR1cmUgJiZcbiAgICAgIChmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OIHx8XG4gICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKSAmJlxuICAgICAgb2JqZWN0VHlwZSA9PT0gRUxFTUVOVF9UWVBFLlNFR01FTlRcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmUpO1xuICAgICAgaWYgKCFjb29yZGluYXRlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBpbnNlcnRJbmRleCA9IChpbmRleCArIDEpICUgY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgICAgY29uc3QgcG9zaXRpb25JbmRleGVzID1cbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBTSEFQRS5QT0xZR09OID8gWzAsIGluc2VydEluZGV4XSA6IFtpbnNlcnRJbmRleF07XG4gICAgICBjb25zdCBpbnNlcnRNYXBDb29yZHMgPSB0aGlzLl9nZXRQb2ludE9uU2VnbWVudChmZWF0dXJlLCBwaWNrZWQsIGV2ZW50Lm1hcENvb3Jkcyk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHByb3BzLmRhdGEpXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLmFkZFBvc2l0aW9uKGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBpbnNlcnRNYXBDb29yZHMpXG4gICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgcHJvcHMub25FZGl0KHtcbiAgICAgICAgZWRpdFR5cGU6IEVESVRfVFlQRS5BRERfUE9TSVRJT04sXG4gICAgICAgIHVwZGF0ZWREYXRhLFxuICAgICAgICBlZGl0Q29udGV4dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZlYXR1cmVJbmRleCxcbiAgICAgICAgICAgIGVkaXRIYW5kbGVJbmRleDogaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBzY3JlZW5Db29yZHM6IHByb3BzLnZpZXdwb3J0ICYmIHByb3BzLnZpZXdwb3J0LnByb2plY3QoaW5zZXJ0TWFwQ29vcmRzKSxcbiAgICAgICAgICAgIG1hcENvb3JkczogaW5zZXJ0TWFwQ29vcmRzLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdG9wRHJhZ2dpbmcoZXZlbnQ6IFN0b3BEcmFnZ2luZ0V2ZW50LCBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPikge1xuICAgIC8vIHJlcGxhY2UgcG9pbnRcbiAgICBjb25zdCBwaWNrZWQgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXBpY2tlZCB8fCAhcGlja2VkLk9iamVjdCB8fCAhaXNOdW1lcmljKHBpY2tlZC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGlja2VkT2JqZWN0ID0gcGlja2VkLm9iamVjdDtcbiAgICBzd2l0Y2ggKHBpY2tlZE9iamVjdC50eXBlKSB7XG4gICAgICBjYXNlIEVMRU1FTlRfVFlQRS5GRUFUVVJFOlxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRklMTDpcbiAgICAgIGNhc2UgRUxFTUVOVF9UWVBFLkVESVRfSEFORExFOlxuICAgICAgICB0aGlzLl9oYW5kbGVEcmFnZ2luZyhldmVudCwgcHJvcHMpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlRHJhZ2dpbmcoXG4gICAgZXZlbnQ6IFBvaW50ZXJNb3ZlRXZlbnQgfCBTdG9wRHJhZ2dpbmdFdmVudCxcbiAgICBwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPlxuICApIHtcbiAgICBjb25zdCB7IG9uRWRpdCB9ID0gcHJvcHM7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICAvLyBub3RoaW5nIGNsaWNrZWRcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBpc0RyYWdnaW5nLCBwb2ludGVyRG93blBpY2tzLCBzY3JlZW5Db29yZHMgfSA9IGV2ZW50O1xuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgY2xpY2tlZCA9IHBvaW50ZXJEb3duUGlja3MgJiYgcG9pbnRlckRvd25QaWNrc1swXTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFjbGlja2VkIHx8ICFjbGlja2VkLm9iamVjdCB8fCAhaXNOdW1lcmljKGNsaWNrZWQuZmVhdHVyZUluZGV4KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IHR5cGU6IG9iamVjdFR5cGUsIGluZGV4OiBlZGl0SGFuZGxlSW5kZXggfSA9IGNsaWNrZWQ7XG5cbiAgICAvLyBub3QgZHJhZ2dpbmdcbiAgICBsZXQgdXBkYXRlZERhdGEgPSBudWxsO1xuICAgIGNvbnN0IGVkaXRUeXBlID0gaXNEcmFnZ2luZyA/IEVESVRfVFlQRS5NT1ZFX1BPU0lUSU9OIDogRURJVF9UWVBFLkZJTklTSF9NT1ZFX1BPU0lUSU9OO1xuXG4gICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICBjYXNlIEVMRU1FTlRfVFlQRS5GRUFUVVJFOlxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRklMTDpcbiAgICAgIGNhc2UgRUxFTUVOVF9UWVBFLlNFR01FTlQ6XG4gICAgICAgIGlmICghcHJvcHMuZmVhdHVyZXNEcmFnZ2FibGUpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSAvLyBkcmFnZ2luZyBmZWF0dXJlXG5cbiAgICAgICAgY29uc3QgZHggPSBzY3JlZW5Db29yZHNbMF0gLSBsYXN0UG9pbnRlck1vdmVFdmVudC5zY3JlZW5Db29yZHNbMF07XG4gICAgICAgIGNvbnN0IGR5ID0gc2NyZWVuQ29vcmRzWzFdIC0gbGFzdFBvaW50ZXJNb3ZlRXZlbnQuc2NyZWVuQ29vcmRzWzFdO1xuICAgICAgICB1cGRhdGVkRGF0YSA9IHRoaXMuX3VwZGF0ZUZlYXR1cmUocHJvcHMsICdmZWF0dXJlJywgeyBkeCwgZHkgfSk7XG4gICAgICAgIG9uRWRpdCh7XG4gICAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEU6XG4gICAgICAgIC8vIGRyYWdnaW5nIGVkaXRIYW5kbGVcbiAgICAgICAgLy8gZHJhZ2dpbmcgcmVjdGFuZ2xlIG9yIG90aGVyIHNoYXBlc1xuICAgICAgICBjb25zdCB1cGRhdGVUeXBlID1cbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmUucHJvcGVydGllcy5zaGFwZSA9PT0gU0hBUEUuUkVDVEFOR0xFID8gJ3JlY3RhbmdsZScgOiAnZWRpdEhhbmRsZSc7XG4gICAgICAgIHVwZGF0ZWREYXRhID0gdGhpcy5fdXBkYXRlRmVhdHVyZShwcm9wcywgdXBkYXRlVHlwZSwge1xuICAgICAgICAgIGVkaXRIYW5kbGVJbmRleCxcbiAgICAgICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uRWRpdCh7XG4gICAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgICAgdXBkYXRlZERhdGEsXG4gICAgICAgICAgZWRpdENvbnRleHQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICBoYW5kbGVQb2ludGVyTW92ZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgcHJvcHM6IE1vZGVQcm9wczxGZWF0dXJlQ29sbGVjdGlvbj4pIHtcbiAgICAvLyBubyBzZWxlY3RlZCBmZWF0dXJlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBpZiAoIXNlbGVjdGVkRmVhdHVyZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCFldmVudC5pc0RyYWdnaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faGFuZGxlRHJhZ2dpbmcoZXZlbnQsIHByb3BzKTtcbiAgfVxuXG4gIC8vIFRPRE8gLSByZWZhY3RvclxuICBfdXBkYXRlRmVhdHVyZShwcm9wczogTW9kZVByb3BzPEZlYXR1cmVDb2xsZWN0aW9uPiwgdHlwZTogc3RyaW5nLCBvcHRpb25zOiBhbnkgPSB7fSkge1xuICAgIGNvbnN0IHsgZGF0YSwgc2VsZWN0ZWRJbmRleGVzLCB2aWV3cG9ydCB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBmZWF0dXJlSW5kZXggPSBzZWxlY3RlZEluZGV4ZXMgJiYgc2VsZWN0ZWRJbmRleGVzWzBdO1xuICAgIGNvbnN0IGZlYXR1cmUgPSB0aGlzLmdldFNlbGVjdGVkRmVhdHVyZShwcm9wcywgZmVhdHVyZUluZGV4KTtcblxuICAgIGxldCBnZW9tZXRyeSA9IG51bGw7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgaWYgKCFjb29yZGluYXRlcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IG5ld0Nvb3JkaW5hdGVzID0gWy4uLmNvb3JkaW5hdGVzXTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZWRpdEhhbmRsZSc6XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uSW5kZXhlcyA9XG4gICAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBHRU9KU09OX1RZUEUuUE9MWUdPTlxuICAgICAgICAgICAgPyBbMCwgb3B0aW9ucy5lZGl0SGFuZGxlSW5kZXhdXG4gICAgICAgICAgICA6IFtvcHRpb25zLmVkaXRIYW5kbGVJbmRleF07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKVxuICAgICAgICAgIC5yZXBsYWNlUG9zaXRpb24oZmVhdHVyZUluZGV4LCBwb3NpdGlvbkluZGV4ZXMsIG9wdGlvbnMubWFwQ29vcmRzKVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY2FzZSAnZmVhdHVyZSc6XG4gICAgICAgIGNvbnN0IHsgZHgsIGR5IH0gPSBvcHRpb25zO1xuXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbmV3Q29vcmRpbmF0ZXMgPSBuZXdDb29yZGluYXRlc1xuICAgICAgICAgIC5tYXAoKG1hcENvb3JkcykgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgcGl4ZWxzID0gdmlld3BvcnQgJiYgdmlld3BvcnQucHJvamVjdChtYXBDb29yZHMpO1xuICAgICAgICAgICAgaWYgKHBpeGVscykge1xuICAgICAgICAgICAgICBwaXhlbHNbMF0gKz0gZHg7XG4gICAgICAgICAgICAgIHBpeGVsc1sxXSArPSBkeTtcbiAgICAgICAgICAgICAgcmV0dXJuIHZpZXdwb3J0ICYmIHZpZXdwb3J0LnVucHJvamVjdChwaXhlbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBnZW9tZXRyeSA9IHtcbiAgICAgICAgICB0eXBlOiBmZWF0dXJlLmdlb21ldHJ5LnR5cGUsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6XG4gICAgICAgICAgICBmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OXG4gICAgICAgICAgICAgID8gW25ld0Nvb3JkaW5hdGVzXVxuICAgICAgICAgICAgICA6IGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPSU5UXG4gICAgICAgICAgICAgID8gbmV3Q29vcmRpbmF0ZXNbMF1cbiAgICAgICAgICAgICAgOiBuZXdDb29yZGluYXRlcyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKGRhdGEpXG4gICAgICAgICAgLnJlcGxhY2VHZW9tZXRyeShmZWF0dXJlSW5kZXgsIGdlb21ldHJ5KVxuICAgICAgICAgIC5nZXRPYmplY3QoKTtcblxuICAgICAgY2FzZSAncmVjdGFuZ2xlJzpcbiAgICAgICAgLy8gbW92ZWQgZWRpdEhhbmRsZUluZGV4IGFuZCBkZXN0aW5hdGlvbiBtYXBDb29yZHNcbiAgICAgICAgbmV3Q29vcmRpbmF0ZXMgPSB1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbihcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgICBvcHRpb25zLmVkaXRIYW5kbGVJbmRleCxcbiAgICAgICAgICBvcHRpb25zLm1hcENvb3Jkc1xuICAgICAgICApO1xuICAgICAgICBnZW9tZXRyeSA9IHtcbiAgICAgICAgICB0eXBlOiBHRU9KU09OX1RZUEUuUE9MWUdPTixcbiAgICAgICAgICBjb29yZGluYXRlczogbmV3Q29vcmRpbmF0ZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKVxuICAgICAgICAgIC5yZXBsYWNlR2VvbWV0cnkoZmVhdHVyZUluZGV4LCBnZW9tZXRyeSlcbiAgICAgICAgICAuZ2V0T2JqZWN0KCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXRhICYmIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbihkYXRhKS5nZXRPYmplY3QoKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0UG9pbnRPblNlZ21lbnQoZmVhdHVyZTogRmVhdHVyZSwgcGlja2VkOiBhbnksIHBpY2tlZE1hcENvb3JkczogUG9zaXRpb24pIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGdldEZlYXR1cmVDb29yZGluYXRlcyhmZWF0dXJlKTtcbiAgICBpZiAoIWNvb3JkaW5hdGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc3JjVmVydGV4SW5kZXggPSBwaWNrZWQuaW5kZXg7XG4gICAgY29uc3QgdGFyZ2V0VmVydGV4SW5kZXggPSBwaWNrZWQuaW5kZXggKyAxO1xuICAgIHJldHVybiBmaW5kQ2xvc2VzdFBvaW50T25MaW5lU2VnbWVudChcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvb3JkaW5hdGVzW3NyY1ZlcnRleEluZGV4XSxcbiAgICAgIGNvb3JkaW5hdGVzW3RhcmdldFZlcnRleEluZGV4XSxcbiAgICAgIHBpY2tlZE1hcENvb3Jkc1xuICAgICk7XG4gIH1cblxuICBfZ2V0Q3Vyc29yRWRpdEhhbmRsZShldmVudDogUG9pbnRlck1vdmVFdmVudCwgZmVhdHVyZTogRmVhdHVyZSkge1xuICAgIC8vIGV2ZW50IGNhbiBiZSBudWxsIHdoZW4gdGhlIHVzZXIgaGFzIG5vdCBpbnRlcmFjdGVkIHdpdGggdGhlIG1hcCB3aGF0c29ldmVyXG4gICAgLy8gYW5kIHRoZXJlZm9yZSBwcm9wcy5sYXN0UG9pbnRlck1vdmVFdmVudCBpcyBzdGlsbCBudWxsXG4gICAgLy8gcmV0dXJuaW5nIG51bGwgaGVyZSBtZWFucyB3ZSBjYW4gZS5nLiBzZXQgYSBmZWF0dXJlSW5kZXggd2l0aG91dCByZXF1aXJpbmcgYW4gZXZlbnRcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBpc0RyYWdnaW5nLCBwaWNrcyB9ID0gZXZlbnQ7XG4gICAgLy8gaWYgbm90IHBpY2sgc2VnbWVudFxuICAgIGNvbnN0IHBpY2tlZCA9IHBpY2tzICYmIHBpY2tzWzBdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXBpY2tlZCB8fCAhaXNOdW1lcmljKHBpY2tlZC5mZWF0dXJlSW5kZXgpIHx8IHBpY2tlZC50eXBlICE9PSBFTEVNRU5UX1RZUEUuU0VHTUVOVCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gaWYgZHJhZ2dpbmcgb3IgZmVhdHVyZSBpcyBuZWl0aGVyIHBvbHlnb24gbm9yIGxpbmUgc3RyaW5nXG4gICAgaWYgKFxuICAgICAgaXNEcmFnZ2luZyB8fFxuICAgICAgKGZlYXR1cmUuZ2VvbWV0cnkudHlwZSAhPT0gR0VPSlNPTl9UWVBFLlBPTFlHT04gJiZcbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeS50eXBlICE9PSBHRU9KU09OX1RZUEUuTElORV9TVFJJTkcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbnNlcnRNYXBDb29yZHMgPSB0aGlzLl9nZXRQb2ludE9uU2VnbWVudChmZWF0dXJlLCBwaWNrZWQsIGV2ZW50Lm1hcENvb3Jkcyk7XG5cbiAgICBpZiAoIWluc2VydE1hcENvb3Jkcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgZ3VpZGVUeXBlOiBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRSxcbiAgICAgICAgc2hhcGU6IGZlYXR1cmUucHJvcGVydGllcy5zaGFwZSxcbiAgICAgICAgcG9zaXRpb25JbmRleGVzOiBbLTFdLFxuICAgICAgICBlZGl0SGFuZGxlVHlwZTogJ2ludGVybWVkaWF0ZScsXG4gICAgICB9LFxuICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgdHlwZTogR0VPSlNPTl9UWVBFLlBPSU5ULFxuICAgICAgICBjb29yZGluYXRlczogaW5zZXJ0TWFwQ29vcmRzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIC8vIEB0cy1pZ25vcmVcbiAgZ2V0R3VpZGVzKHByb3BzOiBNb2RlUHJvcHM8RmVhdHVyZUNvbGxlY3Rpb24+KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZSA9IHRoaXMuZ2V0U2VsZWN0ZWRGZWF0dXJlKHByb3BzKTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHByb3BzLnNlbGVjdGVkSW5kZXhlcyAmJiBwcm9wcy5zZWxlY3RlZEluZGV4ZXNbMF07XG5cbiAgICBpZiAoIXNlbGVjdGVkRmVhdHVyZSB8fCBzZWxlY3RlZEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPSU5UKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IHByb3BzLmxhc3RQb2ludGVyTW92ZUV2ZW50O1xuXG4gICAgLy8gZmVhdHVyZSBlZGl0SGFuZGxlc1xuICAgIGNvbnN0IGVkaXRIYW5kbGVzID0gdGhpcy5nZXRFZGl0SGFuZGxlc0Zyb21GZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSwgc2VsZWN0ZWRGZWF0dXJlSW5kZXgpIHx8IFtdO1xuXG4gICAgLy8gY3Vyc29yIGVkaXRIYW5kbGVcbiAgICBjb25zdCBjdXJzb3JFZGl0SGFuZGxlID0gdGhpcy5fZ2V0Q3Vyc29yRWRpdEhhbmRsZShldmVudCwgc2VsZWN0ZWRGZWF0dXJlKTtcbiAgICBpZiAoY3Vyc29yRWRpdEhhbmRsZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZWRpdEhhbmRsZXMucHVzaChjdXJzb3JFZGl0SGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBlZGl0SGFuZGxlcy5sZW5ndGggPyBlZGl0SGFuZGxlcyA6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/edit-modes/index.js b/modules/react-map-gl-draw/dist/edit-modes/index.js new file mode 100644 index 000000000..de1a0161c --- /dev/null +++ b/modules/react-map-gl-draw/dist/edit-modes/index.js @@ -0,0 +1,16 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "EditingMode", { + enumerable: true, + get: function get() { + return _editingMode["default"]; + } +}); + +var _editingMode = _interopRequireDefault(require("./editing-mode")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGl0aW5nTW9kZSB9IGZyb20gJy4vZWRpdGluZy1tb2RlJztcbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/edit-modes/utils.js b/modules/react-map-gl-draw/dist/edit-modes/utils.js new file mode 100644 index 000000000..f939409c2 --- /dev/null +++ b/modules/react-map-gl-draw/dist/edit-modes/utils.js @@ -0,0 +1,148 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isNumeric = isNumeric; +exports.parseEventElement = parseEventElement; +exports.getScreenCoords = getScreenCoords; +exports.findClosestPointOnLineSegment = findClosestPointOnLineSegment; +exports.getFeatureCoordinates = getFeatureCoordinates; +exports.updateRectanglePosition = updateRectanglePosition; + +var _constants = require("../constants"); + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function isNumeric(val) { + return !Array.isArray(val) && !isNaN(parseFloat(val)) && isFinite(val); +} + +function parseEventElement(evt, features, guides) { + var elem = evt.target; + + if (!elem || !elem.dataset || !elem.dataset.type) { + return null; + } + + var featureIndex = elem.dataset.featureIndex; + featureIndex = isNumeric(featureIndex) ? Number(featureIndex) : -1; + var index = elem.dataset.index; + index = isNumeric(index) ? Number(index) : undefined; + var type = elem.dataset.type; + var tentativeFeature = guides && guides.find(function (g) { + return g.properties.guideType === _constants.GUIDE_TYPE.TENTATIVE; + }); + var object = null; + var isGuide = false; + + switch (type) { + case _constants.ELEMENT_TYPE.EDIT_HANDLE: + object = guides.find(function (g) { + var indexes = g.properties.positionIndexes; + + if (indexes) { + return indexes[indexes.length - 1] === index; + } + + return false; + }); + isGuide = true; + break; + + case _constants.ELEMENT_TYPE.SEGMENT: + case _constants.ELEMENT_TYPE.FEATURE: + case _constants.ELEMENT_TYPE.FILL: + object = features[featureIndex] || tentativeFeature; + break; + + default: + } + + return { + object: object, + isGuide: isGuide, + type: type, + index: index, + featureIndex: featureIndex + }; +} + +function getScreenCoords(evt) { + var _evt$offsetCenter = evt.offsetCenter, + x = _evt$offsetCenter.x, + y = _evt$offsetCenter.y; + return [Number(x), Number(y)]; +} + +function findClosestPointOnLineSegment(p1, p2, p) { + // line + var k = (p2[1] - p1[1]) / (p2[0] - p1[0]); + var b = p1[1] - k * p1[0]; // vertical line + + if (!isFinite(k)) { + var q = [p1[0], p[1]]; + return inBounds(p1, p2, q) ? q : null; + } // p is on line [p1, p2] + + + if (p[0] * k + b - p[1] === 0) { + return inBounds(p1, p2, p) ? p : null; + } + + var qx = (k * p[1] + p[0] - k * b) / (k * k + 1); + var qy = k * qx + b; + return inBounds(p1, p2, [qx, qy]) ? [qx, qy] : null; +} + +function getFeatureCoordinates(feature) { + var coordinates = feature && feature.geometry && feature.geometry.coordinates; + + if (!coordinates) { + return null; + } + + var isPolygonal = feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON; + var isSinglePoint = feature.geometry.type === _constants.GEOJSON_TYPE.POINT; + return isPolygonal ? coordinates[0] : isSinglePoint ? [coordinates] : coordinates; +} + +function updateRectanglePosition(feature, editHandleIndex, mapCoords) { + var coordinates = getFeatureCoordinates(feature); + + if (!coordinates) { + return null; + } // @ts-ignore + + + var points = coordinates.slice(0, 4); + points[editHandleIndex % 4] = mapCoords; + /* + * p0.x, p0.y (p0) ------ p2.x, p0.y (p1) + * | | + * | | + * p0.x, p2.y (p3) ----- p2.x, p2.y (p2) + */ + + var p0 = points[(editHandleIndex + 2) % 4]; + var p2 = points[editHandleIndex % 4]; + points[(editHandleIndex + 1) % 4] = [p2[0], p0[1]]; + points[(editHandleIndex + 3) % 4] = [p0[0], p2[1]]; + return feature.geometry.type === _constants.GEOJSON_TYPE.POLYGON ? [[].concat(_toConsumableArray(points), [points[0]])] : points; +} + +function inBounds(p1, p2, p) { + var bounds = [Math.min(p1[0], p2[0]), Math.max(p1[0], p2[0]), Math.min(p1[1], p2[1]), Math.max(p1[1], p2[1])]; + return p[0] >= bounds[0] && p[0] <= bounds[1] && p[1] >= bounds[2] && p[1] <= bounds[3]; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lZGl0LW1vZGVzL3V0aWxzLnRzIl0sIm5hbWVzIjpbImlzTnVtZXJpYyIsInZhbCIsIkFycmF5IiwiaXNBcnJheSIsImlzTmFOIiwicGFyc2VGbG9hdCIsImlzRmluaXRlIiwicGFyc2VFdmVudEVsZW1lbnQiLCJldnQiLCJmZWF0dXJlcyIsImd1aWRlcyIsImVsZW0iLCJ0YXJnZXQiLCJkYXRhc2V0IiwidHlwZSIsImZlYXR1cmVJbmRleCIsIk51bWJlciIsImluZGV4IiwidW5kZWZpbmVkIiwidGVudGF0aXZlRmVhdHVyZSIsImZpbmQiLCJnIiwicHJvcGVydGllcyIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJURU5UQVRJVkUiLCJvYmplY3QiLCJpc0d1aWRlIiwiRUxFTUVOVF9UWVBFIiwiRURJVF9IQU5ETEUiLCJpbmRleGVzIiwicG9zaXRpb25JbmRleGVzIiwibGVuZ3RoIiwiU0VHTUVOVCIsIkZFQVRVUkUiLCJGSUxMIiwiZ2V0U2NyZWVuQ29vcmRzIiwib2Zmc2V0Q2VudGVyIiwieCIsInkiLCJmaW5kQ2xvc2VzdFBvaW50T25MaW5lU2VnbWVudCIsInAxIiwicDIiLCJwIiwiayIsImIiLCJxIiwiaW5Cb3VuZHMiLCJxeCIsInF5IiwiZ2V0RmVhdHVyZUNvb3JkaW5hdGVzIiwiZmVhdHVyZSIsImNvb3JkaW5hdGVzIiwiZ2VvbWV0cnkiLCJpc1BvbHlnb25hbCIsIkdFT0pTT05fVFlQRSIsIlBPTFlHT04iLCJpc1NpbmdsZVBvaW50IiwiUE9JTlQiLCJ1cGRhdGVSZWN0YW5nbGVQb3NpdGlvbiIsImVkaXRIYW5kbGVJbmRleCIsIm1hcENvb3JkcyIsInBvaW50cyIsInNsaWNlIiwicDAiLCJib3VuZHMiLCJNYXRoIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxTQUFULENBQW1CQyxHQUFuQixFQUE2QjtBQUNsQyxTQUFPLENBQUNDLEtBQUssQ0FB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QVFzQixNQUFNLENBQUMsQ0FBRCxDQUF4RCxJQUErRHRCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBUXNCLE1BQU0sQ0FBQyxDQUFELENBQXBGO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNam9sbmlyRXZlbnQgfSBmcm9tICdtam9sbmlyLmpzJztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZU9mLCBGZWF0dXJlLCBQb2x5Z29uLCBQb3NpdGlvbiB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IEdFT0pTT05fVFlQRSwgRUxFTUVOVF9UWVBFLCBHVUlERV9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpYyh2YWw6IGFueSkge1xuICByZXR1cm4gIUFycmF5LmlzQXJyYXkodmFsKSAmJiAhaXNOYU4ocGFyc2VGbG9hdCh2YWwpKSAmJiBpc0Zpbml0ZSh2YWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFdmVudEVsZW1lbnQoZXZ0OiBNam9sbmlyRXZlbnQsIGZlYXR1cmVzOiBGZWF0dXJlW10sIGd1aWRlczogRmVhdHVyZVtdKSB7XG4gIGNvbnN0IGVsZW0gPSBldnQudGFyZ2V0O1xuICBpZiAoIWVsZW0gfHwgIWVsZW0uZGF0YXNldCB8fCAhZWxlbS5kYXRhc2V0LnR5cGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBmZWF0dXJlSW5kZXggPSBlbGVtLmRhdGFzZXQuZmVhdHVyZUluZGV4O1xuICBmZWF0dXJlSW5kZXggPSBpc051bWVyaWMoZmVhdHVyZUluZGV4KSA/IE51bWJlcihmZWF0dXJlSW5kZXgpIDogLTE7XG5cbiAgbGV0IGluZGV4ID0gZWxlbS5kYXRhc2V0LmluZGV4O1xuICBpbmRleCA9IGlzTnVtZXJpYyhpbmRleCkgPyBOdW1iZXIoaW5kZXgpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHR5cGUgPSBlbGVtLmRhdGFzZXQudHlwZTtcbiAgY29uc3QgdGVudGF0aXZlRmVhdHVyZSA9XG4gICAgZ3VpZGVzICYmIGd1aWRlcy5maW5kKChnKSA9PiBnLnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSBHVUlERV9UWVBFLlRFTlRBVElWRSk7XG4gIGxldCBvYmplY3QgPSBudWxsO1xuICBsZXQgaXNHdWlkZSA9IGZhbHNlO1xuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRUxFTUVOVF9UWVBFLkVESVRfSEFORExFOlxuICAgICAgb2JqZWN0ID0gZ3VpZGVzLmZpbmQoKGcpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXhlcyA9IGcucHJvcGVydGllcy5wb3NpdGlvbkluZGV4ZXM7XG4gICAgICAgIGlmIChpbmRleGVzKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4ZXNbaW5kZXhlcy5sZW5ndGggLSAxXSA9PT0gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICBpc0d1aWRlID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRUxFTUVOVF9UWVBFLlNFR01FTlQ6XG4gICAgY2FzZSBFTEVNRU5UX1RZUEUuRkVBVFVSRTpcbiAgICBjYXNlIEVMRU1FTlRfVFlQRS5GSUxMOlxuICAgICAgb2JqZWN0ID0gZmVhdHVyZXNbZmVhdHVyZUluZGV4XSB8fCB0ZW50YXRpdmVGZWF0dXJlO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2JqZWN0LFxuICAgIGlzR3VpZGUsXG4gICAgdHlwZSxcbiAgICBpbmRleCxcbiAgICBmZWF0dXJlSW5kZXgsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JlZW5Db29yZHMoZXZ0OiBNam9sbmlyRXZlbnQpIHtcbiAgY29uc3Qge1xuICAgIG9mZnNldENlbnRlcjogeyB4LCB5IH0sXG4gIH0gPSBldnQ7XG4gIHJldHVybiBbTnVtYmVyKHgpLCBOdW1iZXIoeSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENsb3Nlc3RQb2ludE9uTGluZVNlZ21lbnQocDE6IFBvc2l0aW9uLCBwMjogUG9zaXRpb24sIHA6IFBvc2l0aW9uKSB7XG4gIC8vIGxpbmVcbiAgY29uc3QgayA9IChwMlsxXSAtIHAxWzFdKSAvIChwMlswXSAtIHAxWzBdKTtcbiAgY29uc3QgYiA9IHAxWzFdIC0gayAqIHAxWzBdO1xuXG4gIC8vIHZlcnRpY2FsIGxpbmVcbiAgaWYgKCFpc0Zpbml0ZShrKSkge1xuICAgIGNvbnN0IHE6IFBvc2l0aW9uID0gW3AxWzBdLCBwWzFdXTtcbiAgICByZXR1cm4gaW5Cb3VuZHMocDEsIHAyLCBxKSA/IHEgOiBudWxsO1xuICB9XG5cbiAgLy8gcCBpcyBvbiBsaW5lIFtwMSwgcDJdXG4gIGlmIChwWzBdICogayArIGIgLSBwWzFdID09PSAwKSB7XG4gICAgcmV0dXJuIGluQm91bmRzKHAxLCBwMiwgcCkgPyBwIDogbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHF4ID0gKGsgKiBwWzFdICsgcFswXSAtIGsgKiBiKSAvIChrICogayArIDEpO1xuICBjb25zdCBxeSA9IGsgKiBxeCArIGI7XG5cbiAgcmV0dXJuIGluQm91bmRzKHAxLCBwMiwgW3F4LCBxeV0pID8gW3F4LCBxeV0gOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmVhdHVyZUNvb3JkaW5hdGVzKGZlYXR1cmU6IEZlYXR1cmUpIHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBmZWF0dXJlICYmIGZlYXR1cmUuZ2VvbWV0cnkgJiYgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcztcbiAgaWYgKCFjb29yZGluYXRlcykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaXNQb2x5Z29uYWwgPSBmZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09IEdFT0pTT05fVFlQRS5QT0xZR09OO1xuICBjb25zdCBpc1NpbmdsZVBvaW50ID0gZmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSBHRU9KU09OX1RZUEUuUE9JTlQ7XG4gIHJldHVybiBpc1BvbHlnb25hbCA/IGNvb3JkaW5hdGVzWzBdIDogaXNTaW5nbGVQb2ludCA/IFtjb29yZGluYXRlc10gOiBjb29yZGluYXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJlY3RhbmdsZVBvc2l0aW9uKFxuICBmZWF0dXJlOiBGZWF0dXJlT2Y8UG9seWdvbj4sXG4gIGVkaXRIYW5kbGVJbmRleDogbnVtYmVyLFxuICBtYXBDb29yZHM6IFBvc2l0aW9uXG4pIHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gIGlmICghY29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHBvaW50cyA9IGNvb3JkaW5hdGVzLnNsaWNlKDAsIDQpO1xuICBwb2ludHNbZWRpdEhhbmRsZUluZGV4ICUgNF0gPSBtYXBDb29yZHM7XG5cbiAgLypcbiAgICogICBwMC54LCBwMC55IChwMCkgLS0tLS0tIHAyLngsIHAwLnkgKHAxKVxuICAgKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqICAgcDAueCwgcDIueSAocDMpIC0tLS0tIHAyLngsIHAyLnkgKHAyKVxuICAgKi9cbiAgY29uc3QgcDAgPSBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDIpICUgNF07XG4gIGNvbnN0IHAyID0gcG9pbnRzW2VkaXRIYW5kbGVJbmRleCAlIDRdO1xuICBwb2ludHNbKGVkaXRIYW5kbGVJbmRleCArIDEpICUgNF0gPSBbcDJbMF0sIHAwWzFdXTtcbiAgcG9pbnRzWyhlZGl0SGFuZGxlSW5kZXggKyAzKSAlIDRdID0gW3AwWzBdLCBwMlsxXV07XG5cbiAgcmV0dXJuIGZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLlBPTFlHT04gPyBbWy4uLnBvaW50cywgcG9pbnRzWzBdXV0gOiBwb2ludHM7XG59XG5cbmZ1bmN0aW9uIGluQm91bmRzKHAxOiBQb3NpdGlvbiwgcDI6IFBvc2l0aW9uLCBwOiBQb3NpdGlvbik6IGJvb2xlYW4ge1xuICBjb25zdCBib3VuZHMgPSBbXG4gICAgTWF0aC5taW4ocDFbMF0sIHAyWzBdKSxcbiAgICBNYXRoLm1heChwMVswXSwgcDJbMF0pLFxuICAgIE1hdGgubWluKHAxWzFdLCBwMlsxXSksXG4gICAgTWF0aC5tYXgocDFbMV0sIHAyWzFdKSxcbiAgXTtcblxuICByZXR1cm4gcFswXSA+PSBib3VuZHNbMF0gJiYgcFswXSA8PSBib3VuZHNbMV0gJiYgcFsxXSA+PSBib3VuZHNbMl0gJiYgcFsxXSA8PSBib3VuZHNbM107XG59XG4iXX0= \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/editor.js b/modules/react-map-gl-draw/dist/editor.js new file mode 100644 index 000000000..501f3bf41 --- /dev/null +++ b/modules/react-map-gl-draw/dist/editor.js @@ -0,0 +1,705 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var React = _interopRequireWildcard(require("react")); + +var _constants = require("./constants"); + +var _modeHandler = _interopRequireDefault(require("./mode-handler")); + +var _utils = require("./edit-modes/utils"); + +var _style = require("./style"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } + +function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 defaultProps = _objectSpread({}, _modeHandler["default"].defaultProps, { + clickRadius: 0, + featureShape: 'circle', + editHandleShape: 'rect', + editHandleStyle: _style.editHandleStyle, + featureStyle: _style.featureStyle, + featuresDraggable: true +}); + +var Editor = /*#__PURE__*/function (_ModeHandler) { + _inherits(Editor, _ModeHandler); + + var _super = _createSuper(Editor); + + function Editor() { + var _this; + + _classCallCheck(this, Editor); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _super.call.apply(_super, [this].concat(args)); + + _defineProperty(_assertThisInitialized(_this), "_getEditHandleState", function (editHandle, renderState) { + var _this$state = _this.state, + pointerDownPicks = _this$state.pointerDownPicks, + hovered = _this$state.hovered; + + if (renderState) { + return renderState; + } + + var editHandleIndex = editHandle.properties.positionIndexes[0]; + var draggingEditHandleIndex = null; + var pickedObject = pointerDownPicks && pointerDownPicks[0] && pointerDownPicks[0].object; + + if (pickedObject && pickedObject.guideType === _constants.GUIDE_TYPE.EDIT_HANDLE) { + draggingEditHandleIndex = pickedObject.index; + } + + if (editHandleIndex === draggingEditHandleIndex || _this.state.selectedEditHandleIndexes.includes(editHandleIndex)) { + return _constants.RENDER_STATE.SELECTED; + } // @ts-ignore + + + if (hovered && hovered.type === _constants.ELEMENT_TYPE.EDIT_HANDLE) { + if (hovered.index === editHandleIndex) { + return _constants.RENDER_STATE.HOVERED; + } // cursor hovered on first vertex when drawing polygon + + + if (hovered.index === 0 && editHandle.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE) { + return _constants.RENDER_STATE.CLOSING; + } + } + + return _constants.RENDER_STATE.INACTIVE; + }); + + _defineProperty(_assertThisInitialized(_this), "_getFeatureRenderState", function (index, renderState) { + var hovered = _this.state.hovered; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + if (renderState) { + return renderState; + } + + if (index === selectedFeatureIndex) { + return _constants.RENDER_STATE.SELECTED; + } // @ts-ignore + + + if (hovered && hovered.type === _constants.ELEMENT_TYPE.FEATURE && hovered.featureIndex === index) { + return _constants.RENDER_STATE.HOVERED; + } + + return _constants.RENDER_STATE.INACTIVE; + }); + + _defineProperty(_assertThisInitialized(_this), "_getStyleProp", function (styleProp, params) { + return typeof styleProp === 'function' ? styleProp(params) : styleProp; + }); + + _defineProperty(_assertThisInitialized(_this), "_renderEditHandle", function (editHandle, feature) { + /* eslint-enable max-params */ + var coordinates = (0, _utils.getFeatureCoordinates)(editHandle); + + var p = _this.project(coordinates && coordinates[0]); + + if (!p) { + return null; + } + + var _editHandle$propertie = editHandle.properties, + featureIndex = _editHandle$propertie.featureIndex, + positionIndexes = _editHandle$propertie.positionIndexes, + editHandleType = _editHandle$propertie.editHandleType; + var _this$props = _this.props, + clickRadius = _this$props.clickRadius, + editHandleShape = _this$props.editHandleShape, + editHandleStyle = _this$props.editHandleStyle; + var index = positionIndexes.length > 1 ? positionIndexes[1] : positionIndexes[0]; + + var shape = _this._getStyleProp(editHandleShape, { + feature: feature || editHandle, + index: index, + featureIndex: featureIndex, + // @ts-ignore + state: _this._getEditHandleState(editHandle) + }); + + var style = _this._getStyleProp(editHandleStyle, { + feature: feature || editHandle, + index: index, + featureIndex: featureIndex, + shape: shape, + // @ts-ignore + state: _this._getEditHandleState(editHandle) + }); // disable events for cursor editHandle + + + if (editHandle.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE) { + style = _objectSpread({}, style, { + // disable pointer events for cursor + pointerEvents: 'none' + }); + } + + var elemKey = "".concat(_constants.ELEMENT_TYPE.EDIT_HANDLE, ".").concat(featureIndex, ".").concat(index, ".").concat(editHandleType); // first is to make path easily interacted with + + switch (shape) { + case 'circle': + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(p[0], ", ").concat(p[1], ")") + }, /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + stroke: 'none', + fill: '#000', + fillOpacity: 0 + }), + cx: 0, + cy: 0, + r: clickRadius + }), /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: elemKey, + style: style, + cx: 0, + cy: 0 + })); + + case 'rect': + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(p[0], ", ").concat(p[1], ")") + }, /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + height: clickRadius, + width: clickRadius, + fill: '#000', + fillOpacity: 0 + }), + r: clickRadius + }), /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.EDIT_HANDLE, + "data-index": index, + "data-feature-index": featureIndex, + key: "".concat(elemKey), + style: style + })); + + default: + return null; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_renderSegment", function (featureIndex, index, coordinates, style) { + var path = _this._getPathInScreenCoords(coordinates, _constants.GEOJSON_TYPE.LINE_STRING); + + var radius = style.radius, + others = _objectWithoutProperties(style, ["radius"]); + + var clickRadius = _this.props.clickRadius; + var elemKey = "".concat(_constants.ELEMENT_TYPE.SEGMENT, ".").concat(featureIndex, ".").concat(index); + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, /*#__PURE__*/React.createElement("path", { + key: "".concat(elemKey, ".hidden"), + "data-type": _constants.ELEMENT_TYPE.SEGMENT, + "data-index": index, + "data-feature-index": featureIndex, + style: _objectSpread({}, others, { + stroke: 'rgba(0,0,0,0)', + strokeWidth: clickRadius || radius, + opacity: 0 + }), + d: path + }), /*#__PURE__*/React.createElement("path", { + key: elemKey, + "data-type": _constants.ELEMENT_TYPE.SEGMENT, + "data-index": index, + "data-feature-index": featureIndex, + style: others, + d: path + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderSegments", function (featureIndex, coordinates, style) { + var segments = []; + + for (var i = 0; i < coordinates.length - 1; i++) { + segments.push(_this._renderSegment(featureIndex, i, [coordinates[i], coordinates[i + 1]], style)); + } + + return segments; + }); + + _defineProperty(_assertThisInitialized(_this), "_renderFill", function (featureIndex, coordinates, style) { + var path = _this._getPathInScreenCoords(coordinates, _constants.GEOJSON_TYPE.POLYGON); + + return /*#__PURE__*/React.createElement("path", { + key: "".concat(_constants.ELEMENT_TYPE.FILL, ".").concat(featureIndex), + "data-type": _constants.ELEMENT_TYPE.FILL, + "data-feature-index": featureIndex, + style: _objectSpread({}, style, { + stroke: 'none' + }), + d: path + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderTentativeFeature", function (feature, cursorEditHandle) { + var featureStyle = _this.props.featureStyle; + var geojsonType = feature.geometry.type, + properties = feature.properties; + var shape = properties === null || properties === void 0 ? void 0 : properties.shape; + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates || !Array.isArray(coordinates) || coordinates.length < 2) { + return null; + } // >= 2 coordinates + + + var firstCoords = coordinates[0]; + var lastCoords = coordinates[coordinates.length - 1]; + + var uncommittedStyle = _this._getStyleProp(featureStyle, { + feature: feature, + index: null, + state: _constants.RENDER_STATE.UNCOMMITTED + }); + + var committedPath; + var uncommittedPath; + var closingPath; // @ts-ignore + + var fill = _this._renderFill('tentative', coordinates, uncommittedStyle); + + var type = shape || geojsonType; + + switch (type) { + case _constants.SHAPE.LINE_STRING: + case _constants.SHAPE.POLYGON: + var committedStyle = _this._getStyleProp(featureStyle, { + feature: feature, + state: _constants.RENDER_STATE.SELECTED + }); + + if (cursorEditHandle) { + // @ts-ignore + var cursorCoords = coordinates[coordinates.length - 2]; + committedPath = _this._renderSegments('tentative', // @ts-ignore + coordinates.slice(0, coordinates.length - 1), committedStyle); + uncommittedPath = _this._renderSegment('tentative-uncommitted', // @ts-ignore + coordinates.length - 2, // @ts-ignore + [cursorCoords, lastCoords], uncommittedStyle); + } else { + // @ts-ignore + committedPath = _this._renderSegments('tentative', coordinates, committedStyle); + } + + if (shape === _constants.SHAPE.POLYGON) { + var closingStyle = _this._getStyleProp(featureStyle, { + feature: feature, + index: null, + state: _constants.RENDER_STATE.CLOSING + }); + + closingPath = _this._renderSegment('tentative-closing', // @ts-ignore + coordinates.length - 1, // @ts-ignore + [lastCoords, firstCoords], closingStyle); + } + + break; + + case _constants.SHAPE.RECTANGLE: + uncommittedPath = _this._renderSegments('tentative', // @ts-ignore + [].concat(_toConsumableArray(coordinates), [firstCoords]), uncommittedStyle); + break; + + default: + } + + return [fill, committedPath, uncommittedPath, closingPath].filter(Boolean); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderGuides", function (guideFeatures) { + var features = _this.getFeatures(); + + var cursorEditHandle = guideFeatures && guideFeatures.find(function (f) { + return f.properties.guideType === _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE; + }); + var tentativeFeature = features.find(function (f) { + return f.properties.guideType === _constants.GUIDE_TYPE.TENTATIVE; + }); + return /*#__PURE__*/React.createElement("g", { + key: "feature-guides" + }, guideFeatures.map(function (guide) { + var guideType = guide.properties.guideType; + + switch (guideType) { + case _constants.GUIDE_TYPE.TENTATIVE: + return _this._renderTentativeFeature(guide, cursorEditHandle); + + case _constants.GUIDE_TYPE.EDIT_HANDLE: + case _constants.GUIDE_TYPE.CURSOR_EDIT_HANDLE: + var shape = guide.properties.shape || guide.geometry.type; // TODO this should be removed when fix editing mode + // don't render cursor for rectangle + + if (shape === _constants.SHAPE.RECTANGLE && guide.properties.editHandleType === 'intermediate') { + return null; + } + + var feature = features && features[guide.properties.featureIndex] || tentativeFeature; + return _this._renderEditHandle(guide, feature); + + default: + return null; + } + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPoint", function (feature, index, path) { + // @ts-ignore + var renderState = _this._getFeatureRenderState(index); + + var _this$props2 = _this.props, + featureStyle = _this$props2.featureStyle, + featureShape = _this$props2.featureShape, + clickRadius = _this$props2.clickRadius; + + var shape = _this._getStyleProp(featureShape, { + feature: feature, + index: index, + state: renderState + }); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (shape === 'rect') { + return /*#__PURE__*/React.createElement("g", { + key: elemKey, + transform: "translate(".concat(path[0][0], ", ").concat(path[0][1], ")") + }, /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + width: clickRadius, + height: clickRadius, + fill: '#000', + fillOpacity: 0 + }) + }), /*#__PURE__*/React.createElement("rect", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style + })); + } + + return /*#__PURE__*/React.createElement("g", { + key: "feature.".concat(index), + transform: "translate(".concat(path[0][0], ", ").concat(path[0][1], ")") + }, /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + opacity: 0 + }), + cx: 0, + cy: 0, + r: clickRadius + }), /*#__PURE__*/React.createElement("circle", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + cx: 0, + cy: 0 + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPath", function (feature, index, path) { + var _this$props3 = _this.props, + featureStyle = _this$props3.featureStyle, + clickRadius = _this$props3.clickRadius; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + var selected = index === selectedFeatureIndex; // @ts-ignore + + var renderState = _this._getFeatureRenderState(index); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (selected) { + return ( + /*#__PURE__*/ + // @ts-ignore + React.createElement("g", { + key: elemKey + }, _this._renderSegments(index, feature.geometry.coordinates, style)) + ); + } // first is to make path easily interacted with + + + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: "".concat(elemKey, ".hidden"), + style: _objectSpread({}, style, { + stroke: 'rgba(0,0,0,0)', + strokeWidth: clickRadius, + opacity: 0 + }), + d: path + }), /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + d: path + })); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderPolygon", function (feature, index, path) { + var featureStyle = _this.props.featureStyle; + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + var selected = index === selectedFeatureIndex; // @ts-ignore + + var renderState = _this._getFeatureRenderState(index); + + var style = _this._getStyleProp(featureStyle, { + feature: feature, + index: index, + state: renderState + }); + + var elemKey = "feature.".concat(index); + + if (selected) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); + + if (!coordinates) { + return null; + } + + return /*#__PURE__*/React.createElement("g", { + key: elemKey + }, // eslint-disable-next-line prettier/prettier + //@ts-ignore + _this._renderFill(index, coordinates, style), // eslint-disable-next-line prettier/prettier + // @ts-ignore + _this._renderSegments(index, coordinates, style)); + } + + return /*#__PURE__*/React.createElement("path", { + "data-type": _constants.ELEMENT_TYPE.FEATURE, + "data-feature-index": index, + key: elemKey, + style: style, + d: path + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_renderFeature", function (feature, index) { + var coordinates = (0, _utils.getFeatureCoordinates)(feature); // @ts-ignore + + if (!coordinates || !coordinates.length) { + return null; + } + + var properties = feature.properties, + geojsonType = feature.geometry.type; + var shape = properties === null || properties === void 0 ? void 0 : properties.shape; // @ts-ignore + + var path = _this._getPathInScreenCoords(coordinates, geojsonType); + + if (!path) { + return null; + } + + var type = shape || geojsonType; + + switch (type) { + case _constants.SHAPE.POINT: + return _this._renderPoint(feature, index, path); + + case _constants.SHAPE.LINE_STRING: + return _this._renderPath(feature, index, path); + + case _constants.SHAPE.CIRCLE: + case _constants.SHAPE.POLYGON: + case _constants.SHAPE.RECTANGLE: + return _this._renderPolygon(feature, index, path); + + default: + return null; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_renderCanvas", function () { + var features = _this.getFeatures(); + + var guides = _this._modeHandler && _this._modeHandler.getGuides(_this.getModeProps()); + + var guideFeatures = guides && guides.features; + return /*#__PURE__*/React.createElement("svg", { + key: "draw-canvas", + width: "100%", + height: "100%" + }, features && features.length > 0 && /*#__PURE__*/React.createElement("g", { + key: "feature-group" + }, features.map(_this._renderFeature)), guideFeatures && guideFeatures.length > 0 && /*#__PURE__*/React.createElement("g", { + key: "feature-guides" + }, _this._renderGuides(guideFeatures))); + }); + + _defineProperty(_assertThisInitialized(_this), "_render", function () { + var viewport = _this._context && _this._context.viewport || {}; + var style = _this.props.style; // @ts-ignore + + var _viewport$width = viewport.width, + width = _viewport$width === void 0 ? 0 : _viewport$width, + _viewport$height = viewport.height, + height = _viewport$height === void 0 ? 0 : _viewport$height; + return /*#__PURE__*/React.createElement("div", { + id: "editor", + style: _objectSpread({ + width: width, + height: height + }, style), + ref: function ref(_) { + _this._containerRef = _; + } + }, _this._renderCanvas()); + }); + + return _this; + } + + _createClass(Editor, [{ + key: "_getPathInScreenCoords", + + /* HELPERS */ + value: function _getPathInScreenCoords(coordinates, type) { + var _this2 = this; + + if (coordinates.length === 0) { + return ''; + } + + var screenCoords = coordinates.map(function (p) { + return _this2.project(p); + }); + var pathString = ''; + + switch (type) { + case _constants.GEOJSON_TYPE.POINT: + return screenCoords; + + case _constants.GEOJSON_TYPE.LINE_STRING: + pathString = screenCoords.map(function (p) { + return "".concat(p[0], ",").concat(p[1]); + }).join('L'); + return "M ".concat(pathString); + + case _constants.GEOJSON_TYPE.POLYGON: + pathString = screenCoords.map(function (p) { + return "".concat(p[0], ",").concat(p[1]); + }).join('L'); + return "M ".concat(pathString, " z"); + + default: + return null; + } + } + }]); + + return Editor; +}(_modeHandler["default"]); + +exports["default"] = Editor; + +_defineProperty(Editor, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGl0b3IudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsIk1vZGVIYW5kbGVyIiwiY2xpY2tSYWRpdXMiLCJmZWF0dXJlU2hhcGUiLCJlZGl0SGFuZGxlU2hhcGUiLCJlZGl0SGFuZGxlU3R5bGUiLCJkZWZhdWx0RWRpdEhhbmRsZVN0eWxlIiwiZmVhdHVyZVN0eWxlIiwiZGVmYXVsdEZlYXR1cmVTdHlsZSIsImZlYXR1cmVzRHJhZ2dhYmxlIiwiRWRpdG9yIiwiZWRpdEhhbmRsZSIsInJlbmRlclN0YXRlIiwic3RhdGUiLCJwb2ludGVyRG93blBpY2tzIiwiaG92ZXJlZCIsImVkaXRIYW5kbGVJbmRleCIsInByb3BlcnRpZXMiLCJwb3NpdGlvbkluZGV4ZXMiLCJkcmFnZ2luZ0VkaXRIYW5kbGVJbmRleCIsInBpY2tlZE9iamVjdCIsIm9iamVjdCIsImd1aWRlVHlwZSIsIkdVSURFX1RZUEUiLCJFRElUX0hBTkRMRSIsImluZGV4Iiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyIsImluY2x1ZGVzIiwiUkVOREVSX1NUQVRFIiwiU0VMRUNURUQiLCJ0eXBlIiwiRUxFTUVOVF9UWVBFIiwiSE9WRVJFRCIsIkNVUlNPUl9FRElUX0hBTkRMRSIsIkNMT1NJTkciLCJJTkFDVElWRSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4IiwiRkVBVFVSRSIsImZlYXR1cmVJbmRleCIsInN0eWxlUHJvcCIsInBhcmFtcyIsImZlYXR1cmUiLCJjb29yZGluYXRlcyIsInAiLCJwcm9qZWN0IiwiZWRpdEhhbmRsZVR5cGUiLCJwcm9wcyIsImxlbmd0aCIsInNoYXBlIiwiX2dldFN0eWxlUHJvcCIsIl9nZXRFZGl0SGFuZGxlU3RhdGUiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJlbGVtS2V5Iiwic3Ryb2tlIiwiZmlsbCIsImZpbGxPcGFjaXR5IiwiaGVpZ2h0Iiwid2lkdGgiLCJwYXRoIiwiX2dldFBhdGhJblNjcmVlbkNvb3JkcyIsIkdFT0pTT05fVFlQRSIsIkxJTkVfU1RSSU5HIiwicmFkaXVzIiwib3RoZXJzIiwiU0VHTUVOVCIsInN0cm9rZVdpZHRoIiwib3BhY2l0eSIsInNlZ21lbnRzIiwiaSIsInB1c2giLCJfcmVuZGVyU2VnbWVudCIsIlBPTFlHT04iLCJGSUxMIiwiY3Vyc29yRWRpdEhhbmRsZSIsImdlb2pzb25UeXBlIiwiZ2VvbWV0cnkiLCJBcnJheSIsImlzQXJyYXkiLCJmaXJzdENvb3JkcyIsImxhc3RDb29yZHMiLCJ1bmNvbW1pdHRlZFN0eWxlIiwiVU5DT01NSVRURUQiLCJjb21taXR0ZWRQYXRoIiwidW5jb21taXR0ZWRQYXRoIiwiY2xvc2luZ1BhdGgiLCJfcmVuZGVyRmlsbCIsIlNIQVBFIiwiY29tbWl0dGVkU3R5bGUiLCJjdXJzb3JDb29yZHMiLCJfcmVuZGVyU2VnbWVudHMiLCJzbGljZSIsImNsb3NpbmdTdHlsZSIsIlJFQ1RBTkdMRSIsImZpbHRlciIsIkJvb2xlYW4iLCJndWlkZUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJnZXRGZWF0dXJlcyIsImZpbmQiLCJmIiwidGVudGF0aXZlRmVhdHVyZSIsIlRFTlRBVElWRSIsIm1hcCIsImd1aWRlIiwiX3JlbmRlclRlbnRhdGl2ZUZlYXR1cmUiLCJfcmVuZGVyRWRpdEhhbmRsZSIsIl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUiLCJzZWxlY3RlZCIsIlBPSU5UIiwiX3JlbmRlclBvaW50IiwiX3JlbmRlclBhdGgiLCJDSVJDTEUiLCJfcmVuZGVyUG9seWdvbiIsImd1aWRlcyIsIl9tb2RlSGFuZGxlciIsImdldEd1aWRlcyIsImdldE1vZGVQcm9wcyIsIl9yZW5kZXJGZWF0dXJlIiwiX3JlbmRlckd1aWRlcyIsInZpZXdwb3J0IiwiX2NvbnRleHQiLCJfIiwiX2NvbnRhaW5lclJlZiIsIl9yZW5kZXJDYW52YXMiLCJzY3JlZW5Db29yZHMiLCJwYXRoU3RyaW5nIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBS0E7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QUN0QixHQUFiLENBQWlCLFVBQUM1RCxDQUFEO0FBQUEsNkJBQVVBLENBQUMsQ0FBQyxDQUFELENBQVgsY0FBa0JBLENBQUMsQ0FBQyxDQUFELENBQW5CO0FBQUEsV0FBakIsRUFBMkNvRixJQUEzQyxDQUFnRCxHQUFoRCxDQUFiO0FBQ0EsNkJBQVlELFVBQVo7O0FBRUY7QUFDRSxpQkFBTyxJQUFQO0FBYko7QUFlRDs7OztFQTNCaUM5SCx1Qjs7OztnQkFBZlMsTSxrQkFDR1YsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5pbXBvcnQgeyBHZW9Kc29uVHlwZSwgUmVuZGVyU3RhdGUsIElkIH0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCB7IFJFTkRFUl9TVEFURSwgU0hBUEUsIEdFT0pTT05fVFlQRSwgR1VJREVfVFlQRSwgRUxFTUVOVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IE1vZGVIYW5kbGVyIGZyb20gJy4vbW9kZS1oYW5kbGVyJztcbmltcG9ydCB7IGdldEZlYXR1cmVDb29yZGluYXRlcyB9IGZyb20gJy4vZWRpdC1tb2Rlcy91dGlscyc7XG5cbmltcG9ydCB7XG4gIGVkaXRIYW5kbGVTdHlsZSBhcyBkZWZhdWx0RWRpdEhhbmRsZVN0eWxlLFxuICBmZWF0dXJlU3R5bGUgYXMgZGVmYXVsdEZlYXR1cmVTdHlsZSxcbn0gZnJvbSAnLi9zdHlsZSc7XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uTW9kZUhhbmRsZXIuZGVmYXVsdFByb3BzLFxuICBjbGlja1JhZGl1czogMCxcbiAgZmVhdHVyZVNoYXBlOiAnY2lyY2xlJyxcbiAgZWRpdEhhbmRsZVNoYXBlOiAncmVjdCcsXG4gIGVkaXRIYW5kbGVTdHlsZTogZGVmYXVsdEVkaXRIYW5kbGVTdHlsZSxcbiAgZmVhdHVyZVN0eWxlOiBkZWZhdWx0RmVhdHVyZVN0eWxlLFxuICBmZWF0dXJlc0RyYWdnYWJsZTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRvciBleHRlbmRzIE1vZGVIYW5kbGVyIHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICAvKiBIRUxQRVJTICovXG4gIF9nZXRQYXRoSW5TY3JlZW5Db29yZHMoY29vcmRpbmF0ZXM6IGFueSwgdHlwZTogR2VvSnNvblR5cGUpIHtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NyZWVuQ29vcmRzID0gY29vcmRpbmF0ZXMubWFwKChwKSA9PiB0aGlzLnByb2plY3QocCkpO1xuXG4gICAgbGV0IHBhdGhTdHJpbmcgPSAnJztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgR0VPSlNPTl9UWVBFLlBPSU5UOlxuICAgICAgICByZXR1cm4gc2NyZWVuQ29vcmRzO1xuXG4gICAgICBjYXNlIEdFT0pTT05fVFlQRS5MSU5FX1NUUklORzpcbiAgICAgICAgcGF0aFN0cmluZyA9IHNjcmVlbkNvb3Jkcy5tYXAoKHApID0+IGAke3BbMF19LCR7cFsxXX1gKS5qb2luKCdMJyk7XG4gICAgICAgIHJldHVybiBgTSAke3BhdGhTdHJpbmd9YDtcblxuICAgICAgY2FzZSBHRU9KU09OX1RZUEUuUE9MWUdPTjpcbiAgICAgICAgcGF0aFN0cmluZyA9IHNjcmVlbkNvb3Jkcy5tYXAoKHApID0+IGAke3BbMF19LCR7cFsxXX1gKS5qb2luKCdMJyk7XG4gICAgICAgIHJldHVybiBgTSAke3BhdGhTdHJpbmd9IHpgO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfZ2V0RWRpdEhhbmRsZVN0YXRlID0gKGVkaXRIYW5kbGU6IEZlYXR1cmUsIHJlbmRlclN0YXRlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93blBpY2tzLCBob3ZlcmVkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKHJlbmRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyU3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgZWRpdEhhbmRsZUluZGV4ID0gZWRpdEhhbmRsZS5wcm9wZXJ0aWVzLnBvc2l0aW9uSW5kZXhlc1swXTtcbiAgICBsZXQgZHJhZ2dpbmdFZGl0SGFuZGxlSW5kZXggPSBudWxsO1xuICAgIGNvbnN0IHBpY2tlZE9iamVjdCA9IHBvaW50ZXJEb3duUGlja3MgJiYgcG9pbnRlckRvd25QaWNrc1swXSAmJiBwb2ludGVyRG93blBpY2tzWzBdLm9iamVjdDtcbiAgICBpZiAocGlja2VkT2JqZWN0ICYmIHBpY2tlZE9iamVjdC5ndWlkZVR5cGUgPT09IEdVSURFX1RZUEUuRURJVF9IQU5ETEUpIHtcbiAgICAgIGRyYWdnaW5nRWRpdEhhbmRsZUluZGV4ID0gcGlja2VkT2JqZWN0LmluZGV4O1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGVkaXRIYW5kbGVJbmRleCA9PT0gZHJhZ2dpbmdFZGl0SGFuZGxlSW5kZXggfHxcbiAgICAgIHRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5pbmNsdWRlcyhlZGl0SGFuZGxlSW5kZXgpXG4gICAgKSB7XG4gICAgICByZXR1cm4gUkVOREVSX1NUQVRFLlNFTEVDVEVEO1xuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKGhvdmVyZWQgJiYgaG92ZXJlZC50eXBlID09PSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEUpIHtcbiAgICAgIGlmIChob3ZlcmVkLmluZGV4ID09PSBlZGl0SGFuZGxlSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIFJFTkRFUl9TVEFURS5IT1ZFUkVEO1xuICAgICAgfVxuXG4gICAgICAvLyBjdXJzb3IgaG92ZXJlZCBvbiBmaXJzdCB2ZXJ0ZXggd2hlbiBkcmF3aW5nIHBvbHlnb25cbiAgICAgIGlmIChcbiAgICAgICAgaG92ZXJlZC5pbmRleCA9PT0gMCAmJlxuICAgICAgICBlZGl0SGFuZGxlLnByb3BlcnRpZXMuZ3VpZGVUeXBlID09PSBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBSRU5ERVJfU1RBVEUuQ0xPU0lORztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUkVOREVSX1NUQVRFLklOQUNUSVZFO1xuICB9O1xuXG4gIF9nZXRGZWF0dXJlUmVuZGVyU3RhdGUgPSAoaW5kZXg6IG51bWJlciwgcmVuZGVyU3RhdGU6IFJlbmRlclN0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIGNvbnN0IHsgaG92ZXJlZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgaWYgKHJlbmRlclN0YXRlKSB7XG4gICAgICByZXR1cm4gcmVuZGVyU3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID09PSBzZWxlY3RlZEZlYXR1cmVJbmRleCkge1xuICAgICAgcmV0dXJuIFJFTkRFUl9TVEFURS5TRUxFQ1RFRDtcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChob3ZlcmVkICYmIGhvdmVyZWQudHlwZSA9PT0gRUxFTUVOVF9UWVBFLkZFQVRVUkUgJiYgaG92ZXJlZC5mZWF0dXJlSW5kZXggPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gUkVOREVSX1NUQVRFLkhPVkVSRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIFJFTkRFUl9TVEFURS5JTkFDVElWRTtcbiAgfTtcblxuICBfZ2V0U3R5bGVQcm9wID0gKHN0eWxlUHJvcDogYW55LCBwYXJhbXM6IGFueSkgPT4ge1xuICAgIHJldHVybiB0eXBlb2Ygc3R5bGVQcm9wID09PSAnZnVuY3Rpb24nID8gc3R5bGVQcm9wKHBhcmFtcykgOiBzdHlsZVByb3A7XG4gIH07XG5cbiAgLyogUkVOREVSICovXG5cbiAgLyogZXNsaW50LWRpc2FibGUgbWF4LXBhcmFtcyAqL1xuICBfcmVuZGVyRWRpdEhhbmRsZSA9IChlZGl0SGFuZGxlOiBGZWF0dXJlLCBmZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBtYXgtcGFyYW1zICovXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZWRpdEhhbmRsZSk7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvamVjdChjb29yZGluYXRlcyAmJiBjb29yZGluYXRlc1swXSk7XG4gICAgaWYgKCFwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBwcm9wZXJ0aWVzOiB7IGZlYXR1cmVJbmRleCwgcG9zaXRpb25JbmRleGVzLCBlZGl0SGFuZGxlVHlwZSB9LFxuICAgIH0gPSBlZGl0SGFuZGxlO1xuICAgIGNvbnN0IHsgY2xpY2tSYWRpdXMsIGVkaXRIYW5kbGVTaGFwZSwgZWRpdEhhbmRsZVN0eWxlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgaW5kZXggPSBwb3NpdGlvbkluZGV4ZXMubGVuZ3RoID4gMSA/IHBvc2l0aW9uSW5kZXhlc1sxXSA6IHBvc2l0aW9uSW5kZXhlc1swXTtcblxuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGVkaXRIYW5kbGVTaGFwZSwge1xuICAgICAgZmVhdHVyZTogZmVhdHVyZSB8fCBlZGl0SGFuZGxlLFxuICAgICAgaW5kZXgsXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzdGF0ZTogdGhpcy5fZ2V0RWRpdEhhbmRsZVN0YXRlKGVkaXRIYW5kbGUpLFxuICAgIH0pO1xuXG4gICAgbGV0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGVkaXRIYW5kbGVTdHlsZSwge1xuICAgICAgZmVhdHVyZTogZmVhdHVyZSB8fCBlZGl0SGFuZGxlLFxuICAgICAgaW5kZXgsXG4gICAgICBmZWF0dXJlSW5kZXgsXG4gICAgICBzaGFwZSxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHN0YXRlOiB0aGlzLl9nZXRFZGl0SGFuZGxlU3RhdGUoZWRpdEhhbmRsZSksXG4gICAgfSk7XG5cbiAgICAvLyBkaXNhYmxlIGV2ZW50cyBmb3IgY3Vyc29yIGVkaXRIYW5kbGVcbiAgICBpZiAoZWRpdEhhbmRsZS5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gR1VJREVfVFlQRS5DVVJTT1JfRURJVF9IQU5ETEUpIHtcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgLy8gZGlzYWJsZSBwb2ludGVyIGV2ZW50cyBmb3IgY3Vyc29yXG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbUtleSA9IGAke0VMRU1FTlRfVFlQRS5FRElUX0hBTkRMRX0uJHtmZWF0dXJlSW5kZXh9LiR7aW5kZXh9LiR7ZWRpdEhhbmRsZVR5cGV9YDtcbiAgICAvLyBmaXJzdCA8Y2lyY2xlfHJlY3Q+IGlzIHRvIG1ha2UgcGF0aCBlYXNpbHkgaW50ZXJhY3RlZCB3aXRoXG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8ZyBrZXk9e2VsZW1LZXl9IHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke3BbMF19LCAke3BbMV19KWB9PlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5FRElUX0hBTkRMRX1cbiAgICAgICAgICAgICAgZGF0YS1pbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCBzdHJva2U6ICdub25lJywgZmlsbDogJyMwMDAnLCBmaWxsT3BhY2l0eTogMCB9fVxuICAgICAgICAgICAgICBjeD17MH1cbiAgICAgICAgICAgICAgY3k9ezB9XG4gICAgICAgICAgICAgIHI9e2NsaWNrUmFkaXVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEV9XG4gICAgICAgICAgICAgIGRhdGEtaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2ZlYXR1cmVJbmRleH1cbiAgICAgICAgICAgICAga2V5PXtlbGVtS2V5fVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAgIGN4PXswfVxuICAgICAgICAgICAgICBjeT17MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICApO1xuICAgICAgY2FzZSAncmVjdCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGcga2V5PXtlbGVtS2V5fSB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtwWzBdfSwgJHtwWzFdfSlgfT5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkVESVRfSEFORExFfVxuICAgICAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtmZWF0dXJlSW5kZXh9XG4gICAgICAgICAgICAgIGtleT17YCR7ZWxlbUtleX0uaGlkZGVuYH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBjbGlja1JhZGl1cyxcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHI9e2NsaWNrUmFkaXVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkVESVRfSEFORExFfVxuICAgICAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtmZWF0dXJlSW5kZXh9XG4gICAgICAgICAgICAgIGtleT17YCR7ZWxlbUtleX1gfVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJTZWdtZW50ID0gKFxuICAgIGZlYXR1cmVJbmRleDogSWQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb29yZGluYXRlczogbnVtYmVyW10sXG4gICAgc3R5bGU6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuX2dldFBhdGhJblNjcmVlbkNvb3Jkcyhjb29yZGluYXRlcywgR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKTtcbiAgICBjb25zdCB7IHJhZGl1cywgLi4ub3RoZXJzIH0gPSBzdHlsZTtcbiAgICBjb25zdCB7IGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGAke0VMRU1FTlRfVFlQRS5TRUdNRU5UfS4ke2ZlYXR1cmVJbmRleH0uJHtpbmRleH1gO1xuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2VsZW1LZXl9PlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGtleT17YCR7ZWxlbUtleX0uaGlkZGVuYH1cbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5TRUdNRU5UfVxuICAgICAgICAgIGRhdGEtaW5kZXg9e2luZGV4fVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5vdGhlcnMsXG4gICAgICAgICAgICBzdHJva2U6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBjbGlja1JhZGl1cyB8fCByYWRpdXMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZD17cGF0aH1cbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuU0VHTUVOVH1cbiAgICAgICAgICBkYXRhLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2ZlYXR1cmVJbmRleH1cbiAgICAgICAgICBzdHlsZT17b3RoZXJzfVxuICAgICAgICAgIGQ9e3BhdGh9XG4gICAgICAgIC8+XG4gICAgICA8L2c+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyU2VnbWVudHMgPSAoZmVhdHVyZUluZGV4OiBJZCwgY29vcmRpbmF0ZXM6IG51bWJlcltdLCBzdHlsZTogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goXG4gICAgICAgIHRoaXMuX3JlbmRlclNlZ21lbnQoZmVhdHVyZUluZGV4LCBpLCBbY29vcmRpbmF0ZXNbaV0sIGNvb3JkaW5hdGVzW2kgKyAxXV0sIHN0eWxlKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZ21lbnRzO1xuICB9O1xuXG4gIF9yZW5kZXJGaWxsID0gKGZlYXR1cmVJbmRleDogSWQsIGNvb3JkaW5hdGVzOiBudW1iZXJbXSwgc3R5bGU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5fZ2V0UGF0aEluU2NyZWVuQ29vcmRzKGNvb3JkaW5hdGVzLCBHRU9KU09OX1RZUEUuUE9MWUdPTik7XG4gICAgcmV0dXJuIChcbiAgICAgIDxwYXRoXG4gICAgICAgIGtleT17YCR7RUxFTUVOVF9UWVBFLkZJTEx9LiR7ZmVhdHVyZUluZGV4fWB9XG4gICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZJTEx9XG4gICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17ZmVhdHVyZUluZGV4fVxuICAgICAgICBzdHlsZT17eyAuLi5zdHlsZSwgc3Ryb2tlOiAnbm9uZScgfX1cbiAgICAgICAgZD17cGF0aH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyVGVudGF0aXZlRmVhdHVyZSA9IChmZWF0dXJlOiBGZWF0dXJlLCBjdXJzb3JFZGl0SGFuZGxlOiBGZWF0dXJlKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgZ2VvbWV0cnk6IHsgdHlwZTogZ2VvanNvblR5cGUgfSxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgfSA9IGZlYXR1cmU7XG5cbiAgICBjb25zdCBzaGFwZSA9IHByb3BlcnRpZXM/LnNoYXBlO1xuXG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgaWYgKCFjb29yZGluYXRlcyB8fCAhQXJyYXkuaXNBcnJheShjb29yZGluYXRlcykgfHwgY29vcmRpbmF0ZXMubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gPj0gMiBjb29yZGluYXRlc1xuICAgIGNvbnN0IGZpcnN0Q29vcmRzID0gY29vcmRpbmF0ZXNbMF07XG4gICAgY29uc3QgbGFzdENvb3JkcyA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHVuY29tbWl0dGVkU3R5bGUgPSB0aGlzLl9nZXRTdHlsZVByb3AoZmVhdHVyZVN0eWxlLCB7XG4gICAgICBmZWF0dXJlLFxuICAgICAgaW5kZXg6IG51bGwsXG4gICAgICBzdGF0ZTogUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVELFxuICAgIH0pO1xuXG4gICAgbGV0IGNvbW1pdHRlZFBhdGg7XG4gICAgbGV0IHVuY29tbWl0dGVkUGF0aDtcbiAgICBsZXQgY2xvc2luZ1BhdGg7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGZpbGwgPSB0aGlzLl9yZW5kZXJGaWxsKCd0ZW50YXRpdmUnLCBjb29yZGluYXRlcywgdW5jb21taXR0ZWRTdHlsZSk7XG5cbiAgICBjb25zdCB0eXBlID0gc2hhcGUgfHwgZ2VvanNvblR5cGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFNIQVBFLkxJTkVfU1RSSU5HOlxuICAgICAgY2FzZSBTSEFQRS5QT0xZR09OOlxuICAgICAgICBjb25zdCBjb21taXR0ZWRTdHlsZSA9IHRoaXMuX2dldFN0eWxlUHJvcChmZWF0dXJlU3R5bGUsIHtcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIHN0YXRlOiBSRU5ERVJfU1RBVEUuU0VMRUNURUQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjdXJzb3JFZGl0SGFuZGxlKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbnN0IGN1cnNvckNvb3JkcyA9IGNvb3JkaW5hdGVzW2Nvb3JkaW5hdGVzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgIGNvbW1pdHRlZFBhdGggPSB0aGlzLl9yZW5kZXJTZWdtZW50cyhcbiAgICAgICAgICAgICd0ZW50YXRpdmUnLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMuc2xpY2UoMCwgY29vcmRpbmF0ZXMubGVuZ3RoIC0gMSksXG4gICAgICAgICAgICBjb21taXR0ZWRTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdW5jb21taXR0ZWRQYXRoID0gdGhpcy5fcmVuZGVyU2VnbWVudChcbiAgICAgICAgICAgICd0ZW50YXRpdmUtdW5jb21taXR0ZWQnLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29vcmRpbmF0ZXMubGVuZ3RoIC0gMixcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIFtjdXJzb3JDb29yZHMsIGxhc3RDb29yZHNdLFxuICAgICAgICAgICAgdW5jb21taXR0ZWRTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbW1pdHRlZFBhdGggPSB0aGlzLl9yZW5kZXJTZWdtZW50cygndGVudGF0aXZlJywgY29vcmRpbmF0ZXMsIGNvbW1pdHRlZFN0eWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaGFwZSA9PT0gU0hBUEUuUE9MWUdPTikge1xuICAgICAgICAgIGNvbnN0IGNsb3NpbmdTdHlsZSA9IHRoaXMuX2dldFN0eWxlUHJvcChmZWF0dXJlU3R5bGUsIHtcbiAgICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgICBpbmRleDogbnVsbCxcbiAgICAgICAgICAgIHN0YXRlOiBSRU5ERVJfU1RBVEUuQ0xPU0lORyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNsb3NpbmdQYXRoID0gdGhpcy5fcmVuZGVyU2VnbWVudChcbiAgICAgICAgICAgICd0ZW50YXRpdmUtY2xvc2luZycsXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb29yZGluYXRlcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgW2xhc3RDb29yZHMsIGZpcnN0Q29vcmRzXSxcbiAgICAgICAgICAgIGNsb3NpbmdTdHlsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTSEFQRS5SRUNUQU5HTEU6XG4gICAgICAgIHVuY29tbWl0dGVkUGF0aCA9IHRoaXMuX3JlbmRlclNlZ21lbnRzKFxuICAgICAgICAgICd0ZW50YXRpdmUnLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBbLi4uY29vcmRpbmF0ZXMsIGZpcnN0Q29vcmRzXSxcbiAgICAgICAgICB1bmNvbW1pdHRlZFN0eWxlXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cblxuICAgIHJldHVybiBbZmlsbCwgY29tbWl0dGVkUGF0aCwgdW5jb21taXR0ZWRQYXRoLCBjbG9zaW5nUGF0aF0uZmlsdGVyKEJvb2xlYW4pO1xuICB9O1xuXG4gIF9yZW5kZXJHdWlkZXMgPSAoZ3VpZGVGZWF0dXJlczogRmVhdHVyZVtdKSA9PiB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLmdldEZlYXR1cmVzKCk7XG4gICAgY29uc3QgY3Vyc29yRWRpdEhhbmRsZSA9XG4gICAgICBndWlkZUZlYXR1cmVzICYmXG4gICAgICBndWlkZUZlYXR1cmVzLmZpbmQoKGYpID0+IGYucHJvcGVydGllcy5ndWlkZVR5cGUgPT09IEdVSURFX1RZUEUuQ1VSU09SX0VESVRfSEFORExFKTtcbiAgICBjb25zdCB0ZW50YXRpdmVGZWF0dXJlID0gZmVhdHVyZXMuZmluZCgoZikgPT4gZi5wcm9wZXJ0aWVzLmd1aWRlVHlwZSA9PT0gR1VJREVfVFlQRS5URU5UQVRJVkUpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxnIGtleT1cImZlYXR1cmUtZ3VpZGVzXCI+XG4gICAgICAgIHtndWlkZUZlYXR1cmVzLm1hcCgoZ3VpZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBndWlkZVR5cGUgPSBndWlkZS5wcm9wZXJ0aWVzLmd1aWRlVHlwZTtcbiAgICAgICAgICBzd2l0Y2ggKGd1aWRlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLlRFTlRBVElWRTpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclRlbnRhdGl2ZUZlYXR1cmUoZ3VpZGUsIGN1cnNvckVkaXRIYW5kbGUpO1xuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLkVESVRfSEFORExFOlxuICAgICAgICAgICAgY2FzZSBHVUlERV9UWVBFLkNVUlNPUl9FRElUX0hBTkRMRTpcbiAgICAgICAgICAgICAgY29uc3Qgc2hhcGUgPSBndWlkZS5wcm9wZXJ0aWVzLnNoYXBlIHx8IGd1aWRlLmdlb21ldHJ5LnR5cGU7XG4gICAgICAgICAgICAgIC8vIFRPRE8gdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGZpeCBlZGl0aW5nIG1vZGVcbiAgICAgICAgICAgICAgLy8gZG9uJ3QgcmVuZGVyIGN1cnNvciBmb3IgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgIGlmIChzaGFwZSA9PT0gU0hBUEUuUkVDVEFOR0xFICYmIGd1aWRlLnByb3BlcnRpZXMuZWRpdEhhbmRsZVR5cGUgPT09ICdpbnRlcm1lZGlhdGUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZSA9XG4gICAgICAgICAgICAgICAgKGZlYXR1cmVzICYmIGZlYXR1cmVzW2d1aWRlLnByb3BlcnRpZXMuZmVhdHVyZUluZGV4XSkgfHwgdGVudGF0aXZlRmVhdHVyZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlckVkaXRIYW5kbGUoZ3VpZGUsIGZlYXR1cmUpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KX1cbiAgICAgIDwvZz5cbiAgICApO1xuICB9O1xuXG4gIF9yZW5kZXJQb2ludCA9IChmZWF0dXJlOiBGZWF0dXJlLCBpbmRleDogbnVtYmVyLCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVuZGVyU3RhdGUgPSB0aGlzLl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUoaW5kZXgpO1xuICAgIGNvbnN0IHsgZmVhdHVyZVN0eWxlLCBmZWF0dXJlU2hhcGUsIGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTaGFwZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTdHlsZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGBmZWF0dXJlLiR7aW5kZXh9YDtcbiAgICBpZiAoc2hhcGUgPT09ICdyZWN0Jykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fSB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtwYXRoWzBdWzBdfSwgJHtwYXRoWzBdWzFdfSlgfT5cbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgZGF0YS10eXBlPXtFTEVNRU5UX1RZUEUuRkVBVFVSRX1cbiAgICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgd2lkdGg6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGNsaWNrUmFkaXVzLFxuICAgICAgICAgICAgICBmaWxsOiAnIzAwMCcsXG4gICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIGtleT17ZWxlbUtleX1cbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2BmZWF0dXJlLiR7aW5kZXh9YH0gdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7cGF0aFswXVswXX0sICR7cGF0aFswXVsxXX0pYH0+XG4gICAgICAgIDxjaXJjbGVcbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAga2V5PXtgJHtlbGVtS2V5fS5oaWRkZW5gfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjeD17MH1cbiAgICAgICAgICBjeT17MH1cbiAgICAgICAgICByPXtjbGlja1JhZGl1c31cbiAgICAgICAgLz5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZFQVRVUkV9XG4gICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgIGN4PXswfVxuICAgICAgICAgIGN5PXswfVxuICAgICAgICAvPlxuICAgICAgPC9nPlxuICAgICk7XG4gIH07XG5cbiAgX3JlbmRlclBhdGggPSAoZmVhdHVyZTogRmVhdHVyZSwgaW5kZXg6IG51bWJlciwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUsIGNsaWNrUmFkaXVzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGluZGV4ID09PSBzZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcmVuZGVyU3RhdGUgPSB0aGlzLl9nZXRGZWF0dXJlUmVuZGVyU3RhdGUoaW5kZXgpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5fZ2V0U3R5bGVQcm9wKGZlYXR1cmVTdHlsZSwgeyBmZWF0dXJlLCBpbmRleCwgc3RhdGU6IHJlbmRlclN0YXRlIH0pO1xuXG4gICAgY29uc3QgZWxlbUtleSA9IGBmZWF0dXJlLiR7aW5kZXh9YDtcbiAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fT57dGhpcy5fcmVuZGVyU2VnbWVudHMoaW5kZXgsIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsIHN0eWxlKX08L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGZpcnN0IDxwYXRoPiBpcyB0byBtYWtlIHBhdGggZWFzaWx5IGludGVyYWN0ZWQgd2l0aFxuICAgIHJldHVybiAoXG4gICAgICA8ZyBrZXk9e2VsZW1LZXl9PlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGRhdGEtdHlwZT17RUxFTUVOVF9UWVBFLkZFQVRVUkV9XG4gICAgICAgICAgZGF0YS1mZWF0dXJlLWluZGV4PXtpbmRleH1cbiAgICAgICAgICBrZXk9e2Ake2VsZW1LZXl9LmhpZGRlbmB9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgc3Ryb2tlOiAncmdiYSgwLDAsMCwwKScsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogY2xpY2tSYWRpdXMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgZD17cGF0aH1cbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICAgIGRhdGEtZmVhdHVyZS1pbmRleD17aW5kZXh9XG4gICAgICAgICAga2V5PXtlbGVtS2V5fVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBkPXtwYXRofVxuICAgICAgICAvPlxuICAgICAgPC9nPlxuICAgICk7XG4gIH07XG5cbiAgX3JlbmRlclBvbHlnb24gPSAoZmVhdHVyZTogRmVhdHVyZSwgaW5kZXg6IG51bWJlciwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBmZWF0dXJlU3R5bGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkID0gaW5kZXggPT09IHNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCByZW5kZXJTdGF0ZSA9IHRoaXMuX2dldEZlYXR1cmVSZW5kZXJTdGF0ZShpbmRleCk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9nZXRTdHlsZVByb3AoZmVhdHVyZVN0eWxlLCB7IGZlYXR1cmUsIGluZGV4LCBzdGF0ZTogcmVuZGVyU3RhdGUgfSk7XG5cbiAgICBjb25zdCBlbGVtS2V5ID0gYGZlYXR1cmUuJHtpbmRleH1gO1xuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgICBpZiAoIWNvb3JkaW5hdGVzKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGcga2V5PXtlbGVtS2V5fT5cbiAgICAgICAgICB7Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgdGhpcy5fcmVuZGVyRmlsbChpbmRleCwgY29vcmRpbmF0ZXMsIHN0eWxlKX1cbiAgICAgICAgICB7Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHRoaXMuX3JlbmRlclNlZ21lbnRzKGluZGV4LCBjb29yZGluYXRlcywgc3R5bGUpfVxuICAgICAgICA8L2c+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8cGF0aFxuICAgICAgICBkYXRhLXR5cGU9e0VMRU1FTlRfVFlQRS5GRUFUVVJFfVxuICAgICAgICBkYXRhLWZlYXR1cmUtaW5kZXg9e2luZGV4fVxuICAgICAgICBrZXk9e2VsZW1LZXl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgZD17cGF0aH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyRmVhdHVyZSA9IChmZWF0dXJlOiBGZWF0dXJlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSBnZXRGZWF0dXJlQ29vcmRpbmF0ZXMoZmVhdHVyZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghY29vcmRpbmF0ZXMgfHwgIWNvb3JkaW5hdGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgICBnZW9tZXRyeTogeyB0eXBlOiBnZW9qc29uVHlwZSB9LFxuICAgIH0gPSBmZWF0dXJlO1xuXG4gICAgY29uc3Qgc2hhcGUgPSBwcm9wZXJ0aWVzPy5zaGFwZTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuX2dldFBhdGhJblNjcmVlbkNvb3Jkcyhjb29yZGluYXRlcywgZ2VvanNvblR5cGUpO1xuICAgIGlmICghcGF0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZSA9IHNoYXBlIHx8IGdlb2pzb25UeXBlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBTSEFQRS5QT0lOVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclBvaW50KGZlYXR1cmUsIGluZGV4LCBwYXRoKTtcbiAgICAgIGNhc2UgU0hBUEUuTElORV9TVFJJTkc6XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJQYXRoKGZlYXR1cmUsIGluZGV4LCBwYXRoKTtcblxuICAgICAgY2FzZSBTSEFQRS5DSVJDTEU6XG4gICAgICBjYXNlIFNIQVBFLlBPTFlHT046XG4gICAgICBjYXNlIFNIQVBFLlJFQ1RBTkdMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlclBvbHlnb24oZmVhdHVyZSwgaW5kZXgsIHBhdGgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckNhbnZhcyA9ICgpID0+IHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuZ2V0RmVhdHVyZXMoKTtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLl9tb2RlSGFuZGxlciAmJiB0aGlzLl9tb2RlSGFuZGxlci5nZXRHdWlkZXModGhpcy5nZXRNb2RlUHJvcHMoKSk7XG4gICAgY29uc3QgZ3VpZGVGZWF0dXJlcyA9IGd1aWRlcyAmJiBndWlkZXMuZmVhdHVyZXM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPHN2ZyBrZXk9XCJkcmF3LWNhbnZhc1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIj5cbiAgICAgICAge2ZlYXR1cmVzICYmIGZlYXR1cmVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxnIGtleT1cImZlYXR1cmUtZ3JvdXBcIj57ZmVhdHVyZXMubWFwKHRoaXMuX3JlbmRlckZlYXR1cmUpfTwvZz5cbiAgICAgICAgKX1cbiAgICAgICAge2d1aWRlRmVhdHVyZXMgJiYgZ3VpZGVGZWF0dXJlcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICA8ZyBrZXk9XCJmZWF0dXJlLWd1aWRlc1wiPnt0aGlzLl9yZW5kZXJHdWlkZXMoZ3VpZGVGZWF0dXJlcyl9PC9nPlxuICAgICAgICApfVxuICAgICAgPC9zdmc+XG4gICAgKTtcbiAgfTtcblxuICBfcmVuZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gKHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC52aWV3cG9ydCkgfHwge307XG4gICAgY29uc3QgeyBzdHlsZSB9ID0gdGhpcy5wcm9wcztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyB3aWR0aCA9IDAsIGhlaWdodCA9IDAgfSA9IHZpZXdwb3J0O1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwiZWRpdG9yXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgLi4uc3R5bGUsXG4gICAgICAgIH19XG4gICAgICAgIHJlZj17KF8pID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250YWluZXJSZWYgPSBfO1xuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGhpcy5fcmVuZGVyQ2FudmFzKCl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xufVxuIl19 \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/index.js b/modules/react-map-gl-draw/dist/index.js new file mode 100644 index 000000000..4bb2d4c26 --- /dev/null +++ b/modules/react-map-gl-draw/dist/index.js @@ -0,0 +1,133 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var _exportNames = { + Editor: true, + GEOJSON_TYPE: true, + SHAPE: true, + RENDER_STATE: true, + ELEMENT_TYPE: true, + EDIT_TYPE: true, + DrawCircleFromCenterMode: true, + DrawCircleByDiameterMode: true, + DrawPointMode: true, + DrawLineStringMode: true, + DrawPolygonMode: true, + DrawRectangleMode: true, + DrawPolygonByDraggingMode: true +}; +Object.defineProperty(exports, "Editor", { + enumerable: true, + get: function get() { + return _editor["default"]; + } +}); +Object.defineProperty(exports, "GEOJSON_TYPE", { + enumerable: true, + get: function get() { + return _constants.GEOJSON_TYPE; + } +}); +Object.defineProperty(exports, "SHAPE", { + enumerable: true, + get: function get() { + return _constants.SHAPE; + } +}); +Object.defineProperty(exports, "RENDER_STATE", { + enumerable: true, + get: function get() { + return _constants.RENDER_STATE; + } +}); +Object.defineProperty(exports, "ELEMENT_TYPE", { + enumerable: true, + get: function get() { + return _constants.ELEMENT_TYPE; + } +}); +Object.defineProperty(exports, "EDIT_TYPE", { + enumerable: true, + get: function get() { + return _constants.EDIT_TYPE; + } +}); +Object.defineProperty(exports, "DrawCircleFromCenterMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawCircleFromCenterMode; + } +}); +Object.defineProperty(exports, "DrawCircleByDiameterMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawCircleByDiameterMode; + } +}); +Object.defineProperty(exports, "DrawPointMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPointMode; + } +}); +Object.defineProperty(exports, "DrawLineStringMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawLineStringMode; + } +}); +Object.defineProperty(exports, "DrawPolygonMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPolygonMode; + } +}); +Object.defineProperty(exports, "DrawRectangleMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawRectangleMode; + } +}); +Object.defineProperty(exports, "DrawPolygonByDraggingMode", { + enumerable: true, + get: function get() { + return _editModes2.DrawPolygonByDraggingMode; + } +}); + +var _editor = _interopRequireDefault(require("./editor")); + +var _constants = require("./constants"); + +var _editModes = require("./edit-modes"); + +Object.keys(_editModes).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _editModes[key]; + } + }); +}); + +var _types = require("./types"); + +Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); +}); + +var _editModes2 = require("@nebula.gl/edit-modes"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgRWRpdG9yIH0gZnJvbSAnLi9lZGl0b3InO1xuXG5leHBvcnQgeyBHRU9KU09OX1RZUEUsIFNIQVBFLCBSRU5ERVJfU1RBVEUsIEVMRU1FTlRfVFlQRSwgRURJVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2VkaXQtbW9kZXMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgRHJhd0NpcmNsZUZyb21DZW50ZXJNb2RlLFxuICBEcmF3Q2lyY2xlQnlEaWFtZXRlck1vZGUsXG4gIERyYXdQb2ludE1vZGUsXG4gIERyYXdMaW5lU3RyaW5nTW9kZSxcbiAgRHJhd1BvbHlnb25Nb2RlLFxuICBEcmF3UmVjdGFuZ2xlTW9kZSxcbiAgRHJhd1BvbHlnb25CeURyYWdnaW5nTW9kZSxcbn0gZnJvbSAnQG5lYnVsYS5nbC9lZGl0LW1vZGVzJztcbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/mode-handler.js b/modules/react-map-gl-draw/dist/mode-handler.js new file mode 100644 index 000000000..461ad72d2 --- /dev/null +++ b/modules/react-map-gl-draw/dist/mode-handler.js @@ -0,0 +1,708 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; 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); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _reactMapGl = require("react-map-gl"); + +var React = _interopRequireWildcard(require("react")); + +var _editModes = require("@nebula.gl/edit-modes"); + +var _editingMode = _interopRequireDefault(require("./edit-modes/editing-mode")); + +var _utils = require("./edit-modes/utils"); + +var _constants = require("./constants"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; 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 _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +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 defaultProps = { + selectable: true, + mode: null, + features: null, + onSelect: null, + onUpdate: null, + onUpdateCursor: function onUpdateCursor() {} +}; +var defaultState = { + featureCollection: new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: [] + }), + selectedFeatureIndex: null, + selectedEditHandleIndexes: [], + // index, isGuide, mapCoords, screenCoords + hovered: null, + isDragging: false, + didDrag: false, + lastPointerMoveEvent: null, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null +}; + +var ModeHandler = /*#__PURE__*/function (_React$PureComponent) { + _inherits(ModeHandler, _React$PureComponent); + + var _super = _createSuper(ModeHandler); + + function ModeHandler(props) { + var _this; + + _classCallCheck(this, ModeHandler); + + _this = _super.call(this, props); + + _defineProperty(_assertThisInitialized(_this), "_events", void 0); + + _defineProperty(_assertThisInitialized(_this), "_eventsRegistered", void 0); + + _defineProperty(_assertThisInitialized(_this), "_modeHandler", void 0); + + _defineProperty(_assertThisInitialized(_this), "_context", void 0); + + _defineProperty(_assertThisInitialized(_this), "_containerRef", void 0); + + _defineProperty(_assertThisInitialized(_this), "getFeatures", function () { + var featureCollection = _this._getFeatureCollection(); + + featureCollection = featureCollection && featureCollection.getObject(); + return featureCollection && featureCollection.features; + }); + + _defineProperty(_assertThisInitialized(_this), "addFeatures", function (features) { + var featureCollection = _this._getFeatureCollection(); + + if (featureCollection) { + if (!Array.isArray(features)) { + features = [features]; + } + + featureCollection = featureCollection.addFeatures(features); + + _this.setState({ + featureCollection: featureCollection + }); + } + }); + + _defineProperty(_assertThisInitialized(_this), "deleteFeatures", function (featureIndexes) { + var featureCollection = _this._getFeatureCollection(); + + var selectedFeatureIndex = _this._getSelectedFeatureIndex(); + + if (featureCollection) { + if (!Array.isArray(featureIndexes)) { + featureIndexes = [featureIndexes]; + } + + featureCollection = featureCollection.deleteFeatures(featureIndexes); + var newState = { + featureCollection: featureCollection + }; + + if (featureIndexes.findIndex(function (index) { + return selectedFeatureIndex === index; + }) >= 0) { + newState.selectedFeatureIndex = null; + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + } + }); + + _defineProperty(_assertThisInitialized(_this), "deleteHandles", function (featureIndex, handleIndexes) { + var featureCollection = _this._getFeatureCollection(); + + if (!featureIndex) { + featureIndex = _this._getSelectedFeatureIndex(); + } + + if (!handleIndexes) { + if (!_this.state.selectedEditHandleIndexes.length) { + return featureCollection; + } + + handleIndexes = _this.state.selectedEditHandleIndexes; + } + + var features = featureCollection.getObject().features; // It seems currently only POLYGON and LINE_STRING are supported + // see handleClick event in editing-mode.ts + + var allowedTypes = [_constants.GEOJSON_TYPE.LINE_STRING, _constants.GEOJSON_TYPE.POLYGON]; + + if (featureIndex !== null && features[featureIndex] && allowedTypes.includes(features[featureIndex].geometry.type)) { + // Remove first indexes in DESC order + handleIndexes.sort(function (n1, n2) { + return n2 - n1; + }); + var positionIndexes; + + if (features[featureIndex].geometry.type === _constants.GEOJSON_TYPE.LINE_STRING) { + positionIndexes = handleIndexes.map(function (pos) { + return [pos]; + }); + } else { + // Currently only spport to handle simple polygons, thus pos 0 + positionIndexes = handleIndexes.map(function (pos) { + return [0, pos]; + }); + } + + positionIndexes.forEach(function (pos) { + featureCollection = featureCollection.removePosition(featureIndex, pos); + }); + + var selectedEditHandleIndexes = _this.state.selectedEditHandleIndexes.filter(function (handleIndex) { + return !handleIndexes.includes(handleIndex); + }); + + _this.setState({ + featureCollection: featureCollection, + selectedEditHandleIndexes: selectedEditHandleIndexes + }); + } + + return featureCollection; + }); + + _defineProperty(_assertThisInitialized(_this), "_getMemorizedFeatureCollection", (0, _editModes._memoize)(function (_ref) { + var propsFeatures = _ref.propsFeatures, + stateFeatures = _ref.stateFeatures; + var features = propsFeatures || stateFeatures; // Any changes in ImmutableFeatureCollection will create a new object + + if (features instanceof _editModes.ImmutableFeatureCollection) { + return features; + } + + if (features && features.type === 'FeatureCollection') { + return new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: features.features + }); + } + + return new _editModes.ImmutableFeatureCollection({ + type: 'FeatureCollection', + features: features || [] + }); + })); + + _defineProperty(_assertThisInitialized(_this), "_getFeatureCollection", function () { + return _this._getMemorizedFeatureCollection({ + propsFeatures: _this.props.features, + stateFeatures: _this.state.featureCollection + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_setupModeHandler", function () { + var mode = _this.props.mode; + _this._modeHandler = mode; + + if (!mode) { + _this._degregisterEvents(); + + return; + } + + _this._registerEvents(); + }); + + _defineProperty(_assertThisInitialized(_this), "_clearEditingState", function () { + _this.setState({ + selectedFeatureIndex: null, + selectedEditHandleIndexes: [], + hovered: null, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null, + isDragging: false, + didDrag: false + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_getSelectedFeatureIndex", function () { + if ('selectedFeatureIndex' in _this.props) { + return _this.props.selectedFeatureIndex; + } + + return _this.state.selectedFeatureIndex; + }); + + _defineProperty(_assertThisInitialized(_this), "_onSelect", function (selected) { + var selectedFeatureIndex = selected.selectedFeatureIndex; + var selectedEditHandleIndexes = _this.state.selectedEditHandleIndexes; + var newState = { + selectedFeatureIndex: selectedFeatureIndex, + selectedEditHandleIndexes: selectedEditHandleIndexes + }; + + if (_this.state.selectedFeatureIndex !== selectedFeatureIndex) { + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + + if (_this.props.onSelect) { + _this.props.onSelect(selected); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onEdit", function (editAction) { + var editType = editAction.editType, + updatedData = editAction.updatedData, + editContext = editAction.editContext; + var newState = { + featureCollection: new _editModes.ImmutableFeatureCollection(updatedData) + }; + + if (editType === _constants.EDIT_TYPE.ADD_POSITION) { + // @ts-ignore + newState.selectedEditHandleIndexes = []; + } + + _this.setState(newState); + + switch (editType) { + case _constants.EDIT_TYPE.ADD_FEATURE: + _this._onSelect({ + selectedFeature: null, + selectedFeatureIndex: null, + selectedEditHandleIndex: null, + selectedEditHandleIndexes: [], + screenCoords: editContext && editContext.screenCoords, + mapCoords: editContext && editContext.mapCoords + }); + + break; + + default: + } + + if (_this.props.onUpdate) { + _this.props.onUpdate({ + data: updatedData && updatedData.features, + editType: editType, + editContext: editContext + }); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_degregisterEvents", function () { + var eventManager = _this._context && _this._context.eventManager; + + if (!_this._events || !eventManager) { + return; + } + + if (_this._eventsRegistered) { + eventManager.off(_this._events); + _this._eventsRegistered = false; + } + }); + + _defineProperty(_assertThisInitialized(_this), "_registerEvents", function () { + var ref = _this._containerRef; + var eventManager = _this._context && _this._context.eventManager; + + if (!_this._events || !ref || !eventManager) { + return; + } + + if (_this._eventsRegistered) { + return; + } + + eventManager.on(_this._events, ref); + _this._eventsRegistered = true; + }); + + _defineProperty(_assertThisInitialized(_this), "_onEvent", function (handler, evt, stopPropagation) { + var event = _this._getEvent(evt); + + handler(event); + + if (stopPropagation) { + evt.stopImmediatePropagation(); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onClick", function (event) { + var modeProps = _this.getModeProps(); // TODO refactor EditingMode + // @ts-ignore + + + if (_this._modeHandler instanceof _editingMode["default"] || _this.props.selectable) { + var mapCoords = event.mapCoords, + screenCoords = event.screenCoords; + var pickedObject = event.picks && event.picks[0]; + + var selectedEditHandleIndexes = _toConsumableArray(_this.state.selectedEditHandleIndexes); // @ts-ignore + + + if (pickedObject && (0, _utils.isNumeric)(pickedObject.featureIndex)) { + var handleIndex = // @ts-ignore + pickedObject.type === _constants.ELEMENT_TYPE.EDIT_HANDLE ? pickedObject.index : null; + var index = selectedEditHandleIndexes.indexOf(handleIndex); + + if (handleIndex !== null) { + if (index !== -1) { + selectedEditHandleIndexes.splice(index, 1); + } else { + selectedEditHandleIndexes.push(handleIndex); + } + + _this.setState({ + selectedEditHandleIndexes: selectedEditHandleIndexes + }); + } // @ts-ignore + + + var selectedFeatureIndex = pickedObject.featureIndex; + + _this._onSelect({ + selectedFeature: pickedObject.object, + selectedFeatureIndex: selectedFeatureIndex, + selectedEditHandleIndex: handleIndex, + selectedEditHandleIndexes: selectedEditHandleIndexes, + // @ts-ignore + mapCoords: mapCoords, + screenCoords: screenCoords + }); + } else { + _this._onSelect({ + selectedFeature: null, + selectedFeatureIndex: null, + selectedEditHandleIndex: null, + selectedEditHandleIndexes: selectedEditHandleIndexes, + // @ts-ignore + mapCoords: mapCoords, + screenCoords: screenCoords + }); + } + } + + _this._modeHandler.handleClick(event, modeProps); + }); + + _defineProperty(_assertThisInitialized(_this), "_onDblclick", function (event) { + if ((0, _utils.isNumeric)(_this._getSelectedFeatureIndex())) { + event.sourceEvent.stopImmediatePropagation(); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerMove", function (event) { + // hovering + var hovered = _this._getHoverState(event); + + var _this$state = _this.state, + isDragging = _this$state.isDragging, + didDrag = _this$state.didDrag, + pointerDownPicks = _this$state.pointerDownPicks, + pointerDownScreenCoords = _this$state.pointerDownScreenCoords, + pointerDownMapCoords = _this$state.pointerDownMapCoords; + + if (isDragging && !didDrag && pointerDownScreenCoords) { + var dx = event.screenCoords[0] - pointerDownScreenCoords[0]; + var dy = event.screenCoords[1] - pointerDownScreenCoords[1]; + + if (dx * dx + dy * dy > 5) { + _this.setState({ + didDrag: true + }); + } + } + + var pointerMoveEvent = _objectSpread({}, event, { + isDragging: isDragging, + pointerDownPicks: pointerDownPicks, + pointerDownScreenCoords: pointerDownScreenCoords, + pointerDownMapCoords: pointerDownMapCoords, + cancelPan: event.sourceEvent.stopImmediatePropagation + }); + + if (_this.state.didDrag) { + var modeProps = _this.getModeProps(); + + if (_this._modeHandler.handleDragging) { + _this._modeHandler.handleDragging(pointerMoveEvent, modeProps); + } else { + _this._modeHandler.handlePointerMove(pointerMoveEvent, modeProps); + } + } + + _this.setState({ + hovered: hovered, + // @ts-ignore + lastPointerMoveEvent: pointerMoveEvent + }); + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerDown", function (event) { + var dragToDraw = _this.props.modeConfig && _this.props.modeConfig.dragToDraw; + var isDragging = Boolean(event.picks && event.picks[0]) || dragToDraw; + + var startDraggingEvent = _objectSpread({}, event, { + isDragging: isDragging, + pointerDownScreenCoords: event.screenCoords, + pointerDownMapCoords: event.mapCoords, + cancelPan: event.sourceEvent.stopImmediatePropagation + }); + + var newState = { + isDragging: isDragging, + pointerDownPicks: event.picks, + pointerDownScreenCoords: event.screenCoords, + pointerDownMapCoords: event.mapCoords + }; // @ts-ignore + + _this.setState(newState); + + var modeProps = _this.getModeProps(); + + _this._modeHandler.handleStartDragging(startDraggingEvent, modeProps); + }); + + _defineProperty(_assertThisInitialized(_this), "_onPointerUp", function (event) { + var _this$state2 = _this.state, + didDrag = _this$state2.didDrag, + pointerDownPicks = _this$state2.pointerDownPicks, + pointerDownScreenCoords = _this$state2.pointerDownScreenCoords, + pointerDownMapCoords = _this$state2.pointerDownMapCoords; + + var stopDraggingEvent = _objectSpread({}, event, { + isDragging: false, + pointerDownPicks: didDrag ? pointerDownPicks : null, + pointerDownScreenCoords: didDrag ? pointerDownScreenCoords : null, + pointerDownMapCoords: didDrag ? pointerDownMapCoords : null, + cancelPan: event.sourceEvent.cancelPan + }); + + var newState = { + isDragging: false, + didDrag: false, + pointerDownPicks: null, + pointerDownScreenCoords: null, + pointerDownMapCoords: null + }; + + _this.setState(newState); + + var modeProps = _this.getModeProps(); + + if (didDrag) { + _this._modeHandler.handleStopDragging(stopDraggingEvent, modeProps); + } + }); + + _defineProperty(_assertThisInitialized(_this), "_onPan", function (event) { + var isDragging = _this.state.isDragging; + + if (isDragging) { + event.sourceEvent.stopImmediatePropagation(); + } + + if (_this._modeHandler.handlePan) { + _this._modeHandler.handlePan(event, _this.getModeProps()); + } + }); + + _defineProperty(_assertThisInitialized(_this), "project", function (pt) { + var viewport = _this._context && _this._context.viewport; + return viewport && viewport.project(pt); + }); + + _defineProperty(_assertThisInitialized(_this), "unproject", function (pt) { + var viewport = _this._context && _this._context.viewport; + return viewport && viewport.unproject(pt); + }); + + _defineProperty(_assertThisInitialized(_this), "_getHoverState", function (event) { + var object = event.picks && event.picks[0]; + + if (!object) { + return null; + } + + return _objectSpread({ + screenCoords: event.screenCoords, + mapCoords: event.mapCoords + }, object); + }); + + _this.state = defaultState; + _this._eventsRegistered = false; + _this._events = { + anyclick: function anyclick(evt) { + return _this._onEvent(_this._onClick, evt, true); + }, + dblclick: function dblclick(evt) { + return _this._onEvent(_this._onDblclick, evt, false); + }, + click: function click(evt) { + return evt.stopImmediatePropagation(); + }, + pointermove: function pointermove(evt) { + return _this._onEvent(_this._onPointerMove, evt, false); + }, + pointerdown: function pointerdown(evt) { + return _this._onEvent(_this._onPointerDown, evt, true); + }, + pointerup: function pointerup(evt) { + return _this._onEvent(_this._onPointerUp, evt, true); + }, + panmove: function panmove(evt) { + return _this._onEvent(_this._onPan, evt, false); + }, + panstart: function panstart(evt) { + return _this._onEvent(_this._onPan, evt, false); + }, + panend: function panend(evt) { + return _this._onEvent(_this._onPan, evt, false); + } + }; + return _this; + } + + _createClass(ModeHandler, [{ + key: "componentDidMount", + value: function componentDidMount() { + this._setupModeHandler(); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.mode !== this.props.mode) { + this._clearEditingState(); + + this._setupModeHandler(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this._degregisterEvents(); + } + }, { + key: "getModeProps", + value: function getModeProps() { + var featureCollection = this._getFeatureCollection(); + + var lastPointerMoveEvent = this.state.lastPointerMoveEvent; + + var selectedFeatureIndex = this._getSelectedFeatureIndex(); + + var selectedEditHandleIndexes = this.state.selectedEditHandleIndexes; + var viewport = this._context && this._context.viewport; + return { + data: featureCollection && featureCollection.featureCollection, + selectedIndexes: (0, _utils.isNumeric)(selectedFeatureIndex) ? [selectedFeatureIndex] : [], + selectedEditHandleIndexes: selectedEditHandleIndexes, + lastPointerMoveEvent: lastPointerMoveEvent, + viewport: viewport, + featuresDraggable: this.props.featuresDraggable, + onEdit: this._onEdit, + onUpdateCursor: this.props.onUpdateCursor, + modeConfig: this.props.modeConfig + }; + } + /* MEMORIZERS */ + + }, { + key: "_getEvent", + value: function _getEvent(evt) { + var features = this.getFeatures(); + + var guides = this._modeHandler.getGuides(this.getModeProps()); + + var picked = (0, _utils.parseEventElement)(evt, features, guides && guides.features); + var screenCoords = (0, _utils.getScreenCoords)(evt); // @ts-ignore + + var mapCoords = this.unproject(screenCoords); + return { + picks: picked ? [picked] : null, + screenCoords: screenCoords, + mapCoords: mapCoords, + sourceEvent: evt + }; + } + }, { + key: "_render", + value: function _render() { + return /*#__PURE__*/React.createElement("div", null); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + return /*#__PURE__*/React.createElement(_reactMapGl._MapContext.Consumer, null, function (context) { + _this2._context = context; + var viewport = context && context.viewport; + + if (!viewport || viewport.height <= 0 || viewport.width <= 0) { + return null; + } + + return _this2._render(); + }); + } + }]); + + return ModeHandler; +}(React.PureComponent); + +exports["default"] = ModeHandler; + +_defineProperty(ModeHandler, "displayName", 'ModeHandler'); + +_defineProperty(ModeHandler, "defaultProps", defaultProps); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4Iiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyIsImhvdmVyZWQiLCJpc0RyYWdnaW5nIiwiZGlkRHJhZyIsImxhc3RQb2ludGVyTW92ZUV2ZW50IiwicG9pbnRlckRvd25QaWNrcyIsInBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIiwicG9pbnRlckRvd25NYXBDb29yZHMiLCJNb2RlSGFuZGxlciIsInByb3BzIiwiX2dldEZlYXR1cmVDb2xsZWN0aW9uIiwiZ2V0T2JqZWN0IiwiQXJyYXkiLCJpc0FycmF5IiwiYWRkRmVhdHVyZXMiLCJzZXRTdGF0ZSIsImZlYXR1cmVJbmRleGVzIiwiX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4IiwiZGVsZXRlRmVhdHVyZXMiLCJuZXdTdGF0ZSIsImZpbmRJbmRleCIsImluZGV4IiwiZmVhdHVyZUluZGV4IiwiaGFuZGxlSW5kZXhlcyIsInN0YXRlIiwibGVuZ3RoIiwiYWxsb3dlZFR5cGVzIiwiR0VPSlNPTl9UWVBFIiwiTElORV9TVFJJTkciLCJQT0xZR09OIiwiaW5jbHVkZXMiLCJnZW9tZXRyeSIsInNvcnQiLCJuMSIsIm4yIiwicG9zaXRpb25JbmRleGVzIiwibWFwIiwicG9zIiwiZm9yRWFjaCIsInJlbW92ZVBvc2l0aW9uIiwiZmlsdGVyIiwiaGFuZGxlSW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsIl9tb2RlSGFuZGxlciIsIl9kZWdyZWdpc3RlckV2ZW50cyIsIl9yZWdpc3RlckV2ZW50cyIsInNlbGVjdGVkIiwiZWRpdEFjdGlvbiIsImVkaXRUeXBlIiwidXBkYXRlZERhdGEiLCJlZGl0Q29udGV4dCIsIkVESVRfVFlQRSIsIkFERF9QT1NJVElPTiIsIkFERF9GRUFUVVJFIiwiX29uU2VsZWN0Iiwic2VsZWN0ZWRGZWF0dXJlIiwic2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXgiLCJzY3JlZW5Db29yZHMiLCJtYXBDb29yZHMiLCJkYXRhIiwiZXZlbnRNYW5hZ2VyIiwiX2NvbnRleHQiLCJfZXZlbnRzIiwiX2V2ZW50c1JlZ2lzdGVyZWQiLCJvZmYiLCJyZWYiLCJfY29udGFpbmVyUmVmIiwib24iLCJoYW5kbGVyIiwiZXZ0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZXZlbnQiLCJfZ2V0RXZlbnQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJtb2RlUHJvcHMiLCJnZXRNb2RlUHJvcHMiLCJFZGl0aW5nTW9kZSIsInBpY2tlZE9iamVjdCIsInBpY2tzIiwiRUxFTUVOVF9UWVBFIiwiRURJVF9IQU5ETEUiLCJpbmRleE9mIiwic3BsaWNlIiwicHVzaCIsIm9iamVjdCIsImhhbmRsZUNsaWNrIiwic291cmNlRXZlbnQiLCJfZ2V0SG92ZXJTdGF0ZSIsImR4IiwiZHkiLCJwb2ludGVyTW92ZUV2ZW50IiwiY2FuY2VsUGFuIiwiaGFuZGxlRHJhZ2dpbmciLCJoYW5kbGVQb2ludGVyTW92ZSIsImRyYWdUb0RyYXciLCJtb2RlQ29uZmlnIiwiQm9vbGVhbiIsInN0YXJ0RHJhZ2dpbmdFdmVudCIsImhhbmRsZVN0YXJ0RHJhZ2dpbmciLCJzdG9wRHJhZ2dpbmdFdmVudCIsImhhbmRsZVN0b3BEcmFnZ2luZyIsImhhbmRsZVBhbiIsInB0Iiwidmlld3BvcnQiLCJwcm9qZWN0IiwidW5wcm9qZWN0IiwiYW55Y2xpY2siLCJfb25FdmVudCIsIl9vbkNsaWNrIiwiZGJsY2xpY2siLCJfb25EYmxjbGljayIsImNsaWNrIiwicG9pbnRlcm1vdmUiLCJfb25Qb2ludGVyTW92ZSIsInBvaW50ZXJkb3duIiwiX29uUG9pbnRlckRvd24iLCJwb2ludGVydXAiLCJfb25Qb2ludGVyVXAiLCJwYW5tb3ZlIiwiX29uUGFuIiwicGFuc3RhcnQiLCJwYW5lbmQiLCJfc2V0dXBNb2RlSGFuZGxlciIsInByZXZQcm9wcyIsIl9jbGVhckVkaXRpbmdTdGF0ZSIsInNlbGVjdGVkSW5kZXhlcyIsImZlYXR1cmVzRHJhZ2dhYmxlIiwib25FZGl0IiwiX29uRWRpdCIsImdldEZlYXR1cmVzIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwicGlja2VkIiwiY29udGV4dCIsImhlaWdodCIsIndpZHRoIiwiX3JlbmRlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUc7QUFDbkJDLEVBQUFBLFVBQVUsRUFBRSxJQURPO0FBRW5CQyxFQUFBQSxJQUFJLEVBQUUsSUFGYTtBQUduQkMsRUFBQUEsUUFBUSxFQUFFLElBSFM7QUFJbkJDLEVBQUFBLFFBQVEsRUFBRSxJQUpTO0FBS25CQyxFQUFBQSxRQUFRLEVBQUUsSUFMUztBQU1uQkMsRUFBQUEsY0FBYyxFQUFFLDBCQUFNLENBQUU7QUFOTCxDQUFyQjtBQVNBLElBQU1DLFlBQVksR0FBRztBQUNuQkMsRUFBQUEsaUJBQWlCLEVBQUUsSUFBSUMscUNBQUosQ0FBK0I7QUFDaERDLElBQUFBLElBQUksRUFBRSxtQkFEMEM7QUFFaERQLElBQUFBLFFBQVEsRUFBRTtBQUZzQyxHQUEvQixDQURBO0FBTW5CUSxFQUFBQSxvQkFBb0IsRUFBRSxJQU5IO0FBT25CQyxFQUFBQSx5QkFBeUIsRUFBRSxFQVBSO0FBU25CO0FBQ0FDLEVBQUFBLE9BQU8sRUFBRSxJQVZVO0FBWW5CQyxFQUFBQSxVQUFVLEVBQUUsS0FaTztBQWFuQkMsRUFBQUEsT0FBTyxF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Q0FBM0QsRUFBOEQ7QUFDNUQsaUJBQU8sSUFBUDtBQUNEOztBQUVELGVBQU8sTUFBSSxDQUFDQyxPQUFMLEVBQVA7QUFDRCxPQVZILENBREY7QUFjRDs7OztFQTNmc0NDLEtBQUssQ0FBQ0MsYTs7OztnQkFBMUJwSSxXLGlCQUNFLGE7O2dCQURGQSxXLGtCQUVHcEIsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9NYXBDb250ZXh0IGFzIE1hcENvbnRleHQsIE1hcENvbnRleHRQcm9wcyB9IGZyb20gJ3JlYWN0LW1hcC1nbCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEVkaXRBY3Rpb24sXG4gIF9tZW1vaXplIGFzIG1lbW9pemUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IE1qb2xuaXJFdmVudCB9IGZyb20gJ21qb2xuaXIuanMnO1xuaW1wb3J0IHsgQmFzZUV2ZW50LCBFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGUsIFNlbGVjdEFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgRWRpdGluZ01vZGUgZnJvbSAnLi9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZSc7XG5pbXBvcnQgeyBnZXRTY3JlZW5Db29yZHMsIHBhcnNlRXZlbnRFbGVtZW50LCBpc051bWVyaWMgfSBmcm9tICcuL2VkaXQtbW9kZXMvdXRpbHMnO1xuaW1wb3J0IHsgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUsIEdFT0pTT05fVFlQRSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBzZWxlY3RhYmxlOiB0cnVlLFxuICBtb2RlOiBudWxsLFxuICBmZWF0dXJlczogbnVsbCxcbiAgb25TZWxlY3Q6IG51bGwsXG4gIG9uVXBkYXRlOiBudWxsLFxuICBvblVwZGF0ZUN1cnNvcjogKCkgPT4ge30sXG59O1xuXG5jb25zdCBkZWZhdWx0U3RhdGUgPSB7XG4gIGZlYXR1cmVDb2xsZWN0aW9uOiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgZmVhdHVyZXM6IFtdLFxuICB9KSxcblxuICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlczogW10sXG5cbiAgLy8gaW5kZXgsIGlzR3VpZGUsIG1hcENvb3Jkcywgc2NyZWVuQ29vcmRzXG4gIGhvdmVyZWQ6IG51bGwsXG5cbiAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIGRpZERyYWc6IGZhbHNlLFxuXG4gIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBudWxsLFxuXG4gIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGVIYW5kbGVyIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGU+IHtcbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ01vZGVIYW5kbGVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IGRlZmF1bHRTdGF0ZTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9ldmVudHMgPSB7XG4gICAgICBhbnljbGljazogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vbkNsaWNrLCBldnQsIHRydWUpLFxuICAgICAgZGJsY2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25EYmxjbGljaywgZXZ0LCBmYWxzZSksXG4gICAgICBjbGljazogKGV2dCkgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLFxuICAgICAgcG9pbnRlcm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyTW92ZSwgZXZ0LCBmYWxzZSksXG4gICAgICBwb2ludGVyZG93bjogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJEb3duLCBldnQsIHRydWUpLFxuICAgICAgcG9pbnRlcnVwOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUG9pbnRlclVwLCBldnQsIHRydWUpLFxuICAgICAgcGFubW92ZTogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgICBwYW5zdGFydDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgICBwYW5lbmQ6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZXR1cE1vZGVIYW5kbGVyKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBFZGl0b3JQcm9wcykge1xuICAgIGlmIChwcmV2UHJvcHMubW9kZSAhPT0gdGhpcy5wcm9wcy5tb2RlKSB7XG4gICAgICB0aGlzLl9jbGVhckVkaXRpbmdTdGF0ZSgpO1xuICAgICAgdGhpcy5fc2V0dXBNb2RlSGFuZGxlcigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuX2RlZ3JlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBfZXZlbnRzOiBhbnk7XG4gIF9ldmVudHNSZWdpc3RlcmVkOiBib29sZWFuO1xuICBfbW9kZUhhbmRsZXI6IGFueTtcbiAgX2NvbnRleHQ6IE1hcENvbnRleHRQcm9wcyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIF9jb250YWluZXJSZWY6IEhUTUxFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBnZXRGZWF0dXJlcyA9ICgpID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZ2V0T2JqZWN0KCk7XG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzO1xuICB9O1xuXG4gIGFkZEZlYXR1cmVzID0gKGZlYXR1cmVzOiBGZWF0dXJlIHwgRmVhdHVyZVtdKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBpZiAoZmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmZWF0dXJlcykpIHtcbiAgICAgICAgZmVhdHVyZXMgPSBbZmVhdHVyZXNdO1xuICAgICAgfVxuXG4gICAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uLmFkZEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbiB9KTtcbiAgICB9XG4gIH07XG5cbiAgZGVsZXRlRmVhdHVyZXMgPSAoZmVhdHVyZUluZGV4ZXM6IG51bWJlciB8IG51bWJlcltdKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgaWYgKGZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmVhdHVyZUluZGV4ZXMpKSB7XG4gICAgICAgIGZlYXR1cmVJbmRleGVzID0gW2ZlYXR1cmVJbmRleGVzXTtcbiAgICAgIH1cbiAgICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24uZGVsZXRlRmVhdHVyZXMoZmVhdHVyZUluZGV4ZXMpO1xuICAgICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHsgZmVhdHVyZUNvbGxlY3Rpb24gfTtcbiAgICAgIGlmIChmZWF0dXJlSW5kZXhlcy5maW5kSW5kZXgoKGluZGV4KSA9PiBzZWxlY3RlZEZlYXR1cmVJbmRleCA9PT0gaW5kZXgpID49IDApIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSBudWxsO1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgZGVsZXRlSGFuZGxlcyA9IChcbiAgICBmZWF0dXJlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBoYW5kbGVJbmRleGVzOiBudW1iZXJbXSB8IHVuZGVmaW5lZFxuICApOiBGZWF0dXJlQ29sbGVjdGlvbiA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBpZiAoIWZlYXR1cmVJbmRleCkge1xuICAgICAgZmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICB9XG4gICAgaWYgKCFoYW5kbGVJbmRleGVzKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uO1xuICAgICAgfVxuICAgICAgaGFuZGxlSW5kZXhlcyA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcztcbiAgICB9XG4gICAgY29uc3QgZmVhdHVyZXMgPSBmZWF0dXJlQ29sbGVjdGlvbi5nZXRPYmplY3QoKS5mZWF0dXJlcztcbiAgICAvLyBJdCBzZWVtcyBjdXJyZW50bHkgb25seSBQT0xZR09OIGFuZCBMSU5FX1NUUklORyBhcmUgc3VwcG9ydGVkXG4gICAgLy8gc2VlIGhhbmRsZUNsaWNrIGV2ZW50IGluIGVkaXRpbmctbW9kZS50c1xuICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtHRU9KU09OX1RZUEUuTElORV9TVFJJTkcsIEdFT0pTT05fVFlQRS5QT0xZR09OXTtcbiAgICBpZiAoXG4gICAgICBmZWF0dXJlSW5kZXggIT09IG51bGwgJiZcbiAgICAgIGZlYXR1cmVzW2ZlYXR1cmVJbmRleF0gJiZcbiAgICAgIGFsbG93ZWRUeXBlcy5pbmNsdWRlcyhmZWF0dXJlc1tmZWF0dXJlSW5kZXhdLmdlb21ldHJ5LnR5cGUpXG4gICAgKSB7XG4gICAgICAvLyBSZW1vdmUgZmlyc3QgaW5kZXhlcyBpbiBERVNDIG9yZGVyXG4gICAgICBoYW5kbGVJbmRleGVzLnNvcnQoKG4xLCBuMikgPT4gbjIgLSBuMSk7XG4gICAgICBsZXQgcG9zaXRpb25JbmRleGVzO1xuICAgICAgaWYgKGZlYXR1cmVzW2ZlYXR1cmVJbmRleF0uZ2VvbWV0cnkudHlwZSA9PT0gR0VPSlNPTl9UWVBFLkxJTkVfU1RSSU5HKSB7XG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IGhhbmRsZUluZGV4ZXMubWFwKChwb3MpID0+IFtwb3NdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHNwcG9ydCB0byBoYW5kbGUgc2ltcGxlIHBvbHlnb25zLCB0aHVzIHBvcyAwXG4gICAgICAgIHBvc2l0aW9uSW5kZXhlcyA9IGhhbmRsZUluZGV4ZXMubWFwKChwb3MpID0+IFswLCBwb3NdKTtcbiAgICAgIH1cbiAgICAgIHBvc2l0aW9uSW5kZXhlcy5mb3JFYWNoKChwb3MpID0+IHtcbiAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5yZW1vdmVQb3NpdGlvbihmZWF0dXJlSW5kZXgsIHBvcyk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSB0aGlzLnN0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMuZmlsdGVyKFxuICAgICAgICAoaGFuZGxlSW5kZXgpID0+ICFoYW5kbGVJbmRleGVzLmluY2x1ZGVzKGhhbmRsZUluZGV4KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbiwgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVDb2xsZWN0aW9uO1xuICB9O1xuXG4gIGdldE1vZGVQcm9wcygpIHtcbiAgICBjb25zdCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG5cbiAgICBjb25zdCB7IGxhc3RQb2ludGVyTW92ZUV2ZW50IH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBpc051bWVyaWMoc2VsZWN0ZWRGZWF0dXJlSW5kZXgpID8gW3NlbGVjdGVkRmVhdHVyZUluZGV4XSA6IFtdLFxuICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyxcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50LFxuICAgICAgdmlld3BvcnQsXG4gICAgICBmZWF0dXJlc0RyYWdnYWJsZTogdGhpcy5wcm9wcy5mZWF0dXJlc0RyYWdnYWJsZSxcbiAgICAgIG9uRWRpdDogdGhpcy5fb25FZGl0LFxuICAgICAgb25VcGRhdGVDdXJzb3I6IHRoaXMucHJvcHMub25VcGRhdGVDdXJzb3IsXG4gICAgICBtb2RlQ29uZmlnOiB0aGlzLnByb3BzLm1vZGVDb25maWcsXG4gICAgfTtcbiAgfVxuXG4gIC8qIE1FTU9SSVpFUlMgKi9cbiAgX2dldE1lbW9yaXplZEZlYXR1cmVDb2xsZWN0aW9uID0gbWVtb2l6ZSgoeyBwcm9wc0ZlYXR1cmVzLCBzdGF0ZUZlYXR1cmVzIH06IGFueSkgPT4ge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gcHJvcHNGZWF0dXJlcyB8fCBzdGF0ZUZlYXR1cmVzO1xuICAgIC8vIEFueSBjaGFuZ2VzIGluIEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIHdpbGwgY3JlYXRlIGEgbmV3IG9iamVjdFxuICAgIGlmIChmZWF0dXJlcyBpbnN0YW5jZW9mIEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gZmVhdHVyZXM7XG4gICAgfVxuXG4gICAgaWYgKGZlYXR1cmVzICYmIGZlYXR1cmVzLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMuZmVhdHVyZXMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICBmZWF0dXJlczogZmVhdHVyZXMgfHwgW10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIF9nZXRGZWF0dXJlQ29sbGVjdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0TWVtb3JpemVkRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgcHJvcHNGZWF0dXJlczogdGhpcy5wcm9wcy5mZWF0dXJlcyxcbiAgICAgIHN0YXRlRmVhdHVyZXM6IHRoaXMuc3RhdGUuZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgfSk7XG4gIH07XG5cbiAgX3NldHVwTW9kZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMucHJvcHMubW9kZTtcbiAgICB0aGlzLl9tb2RlSGFuZGxlciA9IG1vZGU7XG5cbiAgICBpZiAoIW1vZGUpIHtcbiAgICAgIHRoaXMuX2RlZ3JlZ2lzdGVyRXZlbnRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVnaXN0ZXJFdmVudHMoKTtcbiAgfTtcblxuICAvKiBFRElUSU5HIE9QRVJBVElPTlMgKi9cbiAgX2NsZWFyRWRpdGluZ1N0YXRlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzOiBbXSxcblxuICAgICAgaG92ZXJlZDogbnVsbCxcblxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgfSk7XG4gIH07XG5cbiAgX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4ID0gKCkgPT4ge1xuICAgIGlmICgnc2VsZWN0ZWRGZWF0dXJlSW5kZXgnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgfTtcblxuICBfb25TZWxlY3QgPSAoc2VsZWN0ZWQ6IFNlbGVjdEFjdGlvbikgPT4ge1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRGZWF0dXJlSW5kZXggfSA9IHNlbGVjdGVkO1xuICAgIGNvbnN0IHsgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgc2VsZWN0ZWRGZWF0dXJlSW5kZXgsIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgfTtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleCAhPT0gc2VsZWN0ZWRGZWF0dXJlSW5kZXgpIHtcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpO1xuICAgIH1cbiAgfTtcblxuICBfb25FZGl0ID0gKGVkaXRBY3Rpb246IEVkaXRBY3Rpb248YW55PikgPT4ge1xuICAgIGNvbnN0IHsgZWRpdFR5cGUsIHVwZGF0ZWREYXRhLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRGF0YSkgfTtcbiAgICBpZiAoZWRpdFR5cGUgPT09IEVESVRfVFlQRS5BRERfUE9TSVRJT04pIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG5cbiAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICBjYXNlIEVESVRfVFlQRS5BRERfRkVBVFVSRTpcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzOiBbXSxcbiAgICAgICAgICBzY3JlZW5Db29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0LnNjcmVlbkNvb3JkcyxcbiAgICAgICAgICBtYXBDb29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vblVwZGF0ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh7XG4gICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhICYmIHVwZGF0ZWREYXRhLmZlYXR1cmVzLFxuICAgICAgICBlZGl0VHlwZSxcbiAgICAgICAgZWRpdENvbnRleHQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyogRVZFTlRTICovXG4gIF9kZWdyZWdpc3RlckV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFldmVudE1hbmFnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCkge1xuICAgICAgZXZlbnRNYW5hZ2VyLm9mZih0aGlzLl9ldmVudHMpO1xuICAgICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBfcmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fY29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGV2ZW50TWFuYWdlciA9IHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5ldmVudE1hbmFnZXI7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXJlZiB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudE1hbmFnZXIub24odGhpcy5fZXZlbnRzLCByZWYpO1xuICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9O1xuXG4gIF9vbkV2ZW50ID0gKGhhbmRsZXI6IEZ1bmN0aW9uLCBldnQ6IE1qb2xuaXJFdmVudCwgc3RvcFByb3BhZ2F0aW9uOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9nZXRFdmVudChldnQpO1xuICAgIGhhbmRsZXIoZXZlbnQpO1xuXG4gICAgaWYgKHN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25DbGljayA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICAvLyBUT0RPIHJlZmFjdG9yIEVkaXRpbmdNb2RlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9tb2RlSGFuZGxlciBpbnN0YW5jZW9mIEVkaXRpbmdNb2RlIHx8IHRoaXMucHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgY29uc3QgeyBtYXBDb29yZHMsIHNjcmVlbkNvb3JkcyB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCBwaWNrZWRPYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMgPSBbLi4udGhpcy5zdGF0ZS5zZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChwaWNrZWRPYmplY3QgJiYgaXNOdW1lcmljKHBpY2tlZE9iamVjdC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZUluZGV4ID1cbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGlja2VkT2JqZWN0LnR5cGUgPT09IEVMRU1FTlRfVFlQRS5FRElUX0hBTkRMRSA/IHBpY2tlZE9iamVjdC5pbmRleCA6IG51bGw7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5pbmRleE9mKGhhbmRsZUluZGV4KTtcbiAgICAgICAgaWYgKGhhbmRsZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleGVzLnB1c2goaGFuZGxlSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gcGlja2VkT2JqZWN0LmZlYXR1cmVJbmRleDtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogcGlja2VkT2JqZWN0Lm9iamVjdCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogaGFuZGxlSW5kZXgsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXhlcyxcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwQ29vcmRzLFxuICAgICAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vblNlbGVjdCh7XG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4OiBudWxsLFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4ZXMsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZUNsaWNrKGV2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vbkRibGNsaWNrID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBpZiAoaXNOdW1lcmljKHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCkpKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgX29uUG9pbnRlck1vdmUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIC8vIGhvdmVyaW5nXG4gICAgY29uc3QgaG92ZXJlZCA9IHRoaXMuX2dldEhvdmVyU3RhdGUoZXZlbnQpO1xuICAgIGNvbnN0IHtcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBkaWREcmFnLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBpZiAoaXNEcmFnZ2luZyAmJiAhZGlkRHJhZyAmJiBwb2ludGVyRG93blNjcmVlbkNvb3Jkcykge1xuICAgICAgY29uc3QgZHggPSBldmVudC5zY3JlZW5Db29yZHNbMF0gLSBwb2ludGVyRG93blNjcmVlbkNvb3Jkc1swXTtcbiAgICAgIGNvbnN0IGR5ID0gZXZlbnQuc2NyZWVuQ29vcmRzWzFdIC0gcG9pbnRlckRvd25TY3JlZW5Db29yZHNbMV07XG4gICAgICBpZiAoZHggKiBkeCArIGR5ICogZHkgPiA1KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaWREcmFnOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBvaW50ZXJNb3ZlRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc291cmNlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5kaWREcmFnKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZURyYWdnaW5nKSB7XG4gICAgICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZURyYWdnaW5nKHBvaW50ZXJNb3ZlRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShwb2ludGVyTW92ZUV2ZW50LCBtb2RlUHJvcHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaG92ZXJlZCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBwb2ludGVyTW92ZUV2ZW50LFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblBvaW50ZXJEb3duID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBkcmFnVG9EcmF3ID0gdGhpcy5wcm9wcy5tb2RlQ29uZmlnICYmIHRoaXMucHJvcHMubW9kZUNvbmZpZy5kcmFnVG9EcmF3O1xuICAgIGNvbnN0IGlzRHJhZ2dpbmcgPSBCb29sZWFuKGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdKSB8fCBkcmFnVG9EcmF3O1xuICAgIGNvbnN0IHN0YXJ0RHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgICAgY2FuY2VsUGFuOiBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IGV2ZW50LnBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGV2ZW50LnNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBldmVudC5tYXBDb29yZHMsXG4gICAgfTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG5cbiAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVN0YXJ0RHJhZ2dpbmcoc3RhcnREcmFnZ2luZ0V2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vblBvaW50ZXJVcCA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBkaWREcmFnLCBwb2ludGVyRG93blBpY2tzLCBwb2ludGVyRG93blNjcmVlbkNvb3JkcywgcG9pbnRlckRvd25NYXBDb29yZHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc3RvcERyYWdnaW5nRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogZGlkRHJhZyA/IHBvaW50ZXJEb3duUGlja3MgOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IGRpZERyYWcgPyBwb2ludGVyRG93blNjcmVlbkNvb3JkcyA6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZGlkRHJhZyA/IHBvaW50ZXJEb3duTWFwQ29vcmRzIDogbnVsbCxcbiAgICAgIGNhbmNlbFBhbjogZXZlbnQuc291cmNlRXZlbnQuY2FuY2VsUGFuLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcblxuICAgIGlmIChkaWREcmFnKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoc3RvcERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgfVxuICB9O1xuXG4gIF9vblBhbiA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBpc0RyYWdnaW5nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVBhbikge1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICB9XG4gIH07XG5cbiAgLyogSEVMUEVSUyAqL1xuICBwcm9qZWN0ID0gKHB0OiBbbnVtYmVyLCBudW1iZXJdKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgcmV0dXJuIHZpZXdwb3J0ICYmIHZpZXdwb3J0LnByb2plY3QocHQpO1xuICB9O1xuXG4gIHVucHJvamVjdCA9IChwdDogW251bWJlciwgbnVtYmVyXSkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC51bnByb2plY3QocHQpO1xuICB9O1xuXG4gIF9nZXRFdmVudChldnQ6IE1qb2xuaXJFdmVudCkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5nZXRGZWF0dXJlcygpO1xuICAgIGNvbnN0IGd1aWRlcyA9IHRoaXMuX21vZGVIYW5kbGVyLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICBjb25zdCBwaWNrZWQgPSBwYXJzZUV2ZW50RWxlbWVudChldnQsIGZlYXR1cmVzLCBndWlkZXMgJiYgZ3VpZGVzLmZlYXR1cmVzKTtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSBnZXRTY3JlZW5Db29yZHMoZXZ0KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy51bnByb2plY3Qoc2NyZWVuQ29vcmRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwaWNrczogcGlja2VkID8gW3BpY2tlZF0gOiBudWxsLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgc291cmNlRXZlbnQ6IGV2dCxcbiAgICB9O1xuICB9XG5cbiAgX2dldEhvdmVyU3RhdGUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG9iamVjdCA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIC4uLm9iamVjdCxcbiAgICB9O1xuICB9O1xuXG4gIF9yZW5kZXIoKSB7XG4gICAgcmV0dXJuIDxkaXYgLz47XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRleHQgJiYgY29udGV4dC52aWV3cG9ydDtcblxuICAgICAgICAgIGlmICghdmlld3BvcnQgfHwgdmlld3BvcnQuaGVpZ2h0IDw9IDAgfHwgdmlld3BvcnQud2lkdGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpO1xuICAgICAgICB9fVxuICAgICAgPC9NYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/style.js b/modules/react-map-gl-draw/dist/style.js new file mode 100644 index 000000000..7920779b4 --- /dev/null +++ b/modules/react-map-gl-draw/dist/style.js @@ -0,0 +1,154 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.featureStyle = featureStyle; +exports.editHandleStyle = editHandleStyle; + +var _constants = require("./constants"); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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 RECT_STYLE = { + stroke: '#7ac943', + strokeWidth: 2, + x: -6, + y: -6, + height: 12, + width: 12 +}; +var CIRCLE_RADIUS = 8; +var SELECTED_STYLE = { + stroke: 'rgb(38, 181, 242)', + strokeWidth: 2, + fill: 'rgb(189,189,189)', + fillOpacity: 0.3 +}; +var HOVERED_STYLE = { + stroke: 'rgb(38, 181, 242)', + strokeWidth: 2, + fill: 'rgb(122,202,67)', + fillOpacity: 0.3 +}; +var UNCOMMITTED_STYLE = { + stroke: 'rgb(189,189,189)', + strokeDasharray: '4,2', + strokeWidth: 2, + fill: 'rgb(189,189,189)', + fillOpacity: 0.1 +}; +var INACTIVE_STYLE = UNCOMMITTED_STYLE; +var DEFAULT_STYLE = { + stroke: '#000000', + strokeWidth: 2, + fill: '#a9a9a9', + fillOpacity: 0.1 +}; + +function featureStyle(_ref) { + var feature = _ref.feature, + state = _ref.state; + var type = feature.properties.shape || feature.geometry.type; + var style = null; + + switch (state) { + case _constants.RENDER_STATE.SELECTED: + style = _objectSpread({}, SELECTED_STYLE); + break; + + case _constants.RENDER_STATE.HOVERED: + style = _objectSpread({}, HOVERED_STYLE); + break; + + case _constants.RENDER_STATE.UNCOMMITTED: + case _constants.RENDER_STATE.CLOSING: + style = _objectSpread({}, UNCOMMITTED_STYLE); + break; + + case _constants.RENDER_STATE.INACTIVE: + style = _objectSpread({}, INACTIVE_STYLE); + break; + + default: + style = _objectSpread({}, DEFAULT_STYLE); + } + + switch (type) { + case _constants.SHAPE.POINT: + style.r = CIRCLE_RADIUS; + break; + + case _constants.SHAPE.LINE_STRING: + style.fill = 'none'; + break; + + case _constants.SHAPE.POLYGON: + if (state === _constants.RENDER_STATE.CLOSING) { + style.strokeDasharray = '4,2'; + } + + break; + + case _constants.SHAPE.RECTANGLE: + if (state === _constants.RENDER_STATE.UNCOMMITTED) { + style.strokeDasharray = '4,2'; + } + + break; + + default: + } + + return style; +} + +function editHandleStyle(_ref2) { + var feature = _ref2.feature, + shape = _ref2.shape, + index = _ref2.index, + state = _ref2.state; + var style = {}; + + switch (state) { + case _constants.RENDER_STATE.SELECTED: + style = _objectSpread({}, SELECTED_STYLE); + break; + + case _constants.RENDER_STATE.HOVERED: + style = _objectSpread({}, HOVERED_STYLE); + break; + + case _constants.RENDER_STATE.UNCOMMITTED: + case _constants.RENDER_STATE.CLOSING: + style = _objectSpread({}, UNCOMMITTED_STYLE); + break; + + case _constants.RENDER_STATE.INACTIVE: + style = _objectSpread({}, INACTIVE_STYLE); + break; + + default: + style = _objectSpread({}, DEFAULT_STYLE); + } + + switch (shape) { + case 'circle': + //@ts-ignore + style.r = CIRCLE_RADIUS; + break; + + case 'rect': + style = _objectSpread({}, style, {}, RECT_STYLE); + break; + + default: + } + + return style; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdHlsZS50cyJdLCJuYW1lcyI6WyJSRUNUX1NUWUxFIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJ4IiwieSIsImhlaWdodCIsIndpZHRoIiwiQ0lSQ0xFX1JBRElVUyIsIlNFTEVDVEVEX1NUWUxFIiwiZmlsbCIsImZpbGxPcGFjaXR5IiwiSE9WRVJFRF9TVFlMRSIsIlVOQ09NTUlUVEVEX1NUWUxFIiwic3Ryb2tlRGFzaGFycmF5IiwiSU5BQ1RJVkVfU1RZTEUiLCJERUZBVUxUX1NUWUxFIiwiZmVhdHVyZVN0eWxlIiwiZmVhdHVyZSIsInN0YXRlIiwidHlwZSIsInByb3BlcnRpZXMiLCJzaGFwZSIsImdlb21ldHJ5Iiwic3R5bGUiLCJSRU5ERVJfU1RBVEUiLCJTRUxFQ1RFRCIsIkhPVkVSRUQiLCJVTkNPTU1JVFRFRCIsIkNMT1NJTkciLCJJTkFDVElWRSIsIlNIQVBFIiwiUE9JTlQiLCJyIiwiTElORV9TVFJJTkciLCJQT0xZR09OIiwiUkVDVEFOR0xFIiwiZWRpdEhhbmRsZVN0eWxlIiwiaW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsSUFBTUEsVUFBVSxHQUFHO0FBQ2pCQyxFQUFBQSxNQUFNLEVBQUUsU0FEUztBQUVqQkMsRUFBQUEsV0FBVyxFQUFFLENBRkk7QUFHakJDLEVBQUFBLENBQUMsRUFBRSxDQUFDLENBSGE7QUFJakJDLEVBQUFBLENBQUMsRUFBRSxDQUFDLENBSmE7QUFLakJDLEVBQUFBLE1BQU0sRUFBRSxFQUxTO0FBTWpCQyxFQUFBQSxLQUFLLEVBQUU7QUFOVSxDQUFuQjtBQVNBLElBQU1DLGFBQWEsR0FBRyxDQUF0QjtBQUVBLElBQU1DLGNBQWMsR0FBRztBQUNyQlAsRUFBQUEsTUFBTSxFQUFFLG1CQURhO0FBRXJCQyxFQUFBQSxXQUFXLEVBQUUsQ0FGUTtBQUdyQk8sRUFBQUEsSUFBSSxFQUFFLGtCQUhlO0FBSXJCQyxFQUFBQSxXQUFXLEVBQUU7QUFKUSxDQUF2QjtBQU9BLElB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SSxPQUFsQjtBQUNFTCxNQUFBQSxLQUFLLHFCQUFRWCxpQkFBUixDQUFMO0FBQ0E7O0FBRUYsU0FBS1ksd0JBQWFLLFFBQWxCO0FBQ0VOLE1BQUFBLEtBQUsscUJBQVFULGNBQVIsQ0FBTDtBQUNBOztBQUVGO0FBQ0VTLE1BQUFBLEtBQUsscUJBQVFSLGFBQVIsQ0FBTDtBQW5CSjs7QUFzQkEsVUFBUU0sS0FBUjtBQUNFLFNBQUssUUFBTDtBQUNFO0FBQ0FFLE1BQUFBLEtBQUssQ0FBQ1MsQ0FBTixHQUFVekIsYUFBVjtBQUNBOztBQUNGLFNBQUssTUFBTDtBQUNFZ0IsTUFBQUEsS0FBSyxxQkFBUUEsS0FBUixNQUFrQnZCLFVBQWxCLENBQUw7QUFDQTs7QUFDRjtBQVJGOztBQVdBLFNBQU91QixLQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSRU5ERVJfU1RBVEUsIFNIQVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRUNUX1NUWUxFID0ge1xuICBzdHJva2U6ICcjN2FjOTQzJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIHg6IC02LFxuICB5OiAtNixcbiAgaGVpZ2h0OiAxMixcbiAgd2lkdGg6IDEyLFxufTtcblxuY29uc3QgQ0lSQ0xFX1JBRElVUyA9IDg7XG5cbmNvbnN0IFNFTEVDVEVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMzgsIDE4MSwgMjQyKScsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBmaWxsOiAncmdiKDE4OSwxODksMTg5KScsXG4gIGZpbGxPcGFjaXR5OiAwLjMsXG59O1xuXG5jb25zdCBIT1ZFUkVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMzgsIDE4MSwgMjQyKScsXG4gIHN0cm9rZVdpZHRoOiAyLFxuICBmaWxsOiAncmdiKDEyMiwyMDIsNjcpJyxcbiAgZmlsbE9wYWNpdHk6IDAuMyxcbn07XG5cbmNvbnN0IFVOQ09NTUlUVEVEX1NUWUxFID0ge1xuICBzdHJva2U6ICdyZ2IoMTg5LDE4OSwxODkpJyxcbiAgc3Ryb2tlRGFzaGFycmF5OiAnNCwyJyxcbiAgc3Ryb2tlV2lkdGg6IDIsXG4gIGZpbGw6ICdyZ2IoMTg5LDE4OSwxODkpJyxcbiAgZmlsbE9wYWNpdHk6IDAuMSxcbn07XG5cbmNvbnN0IElOQUNUSVZFX1NUWUxFID0gVU5DT01NSVRURURfU1RZTEU7XG5cbmNvbnN0IERFRkFVTFRfU1RZTEUgPSB7XG4gIHN0cm9rZTogJyMwMDAwMDAnLFxuICBzdHJva2VXaWR0aDogMixcbiAgZmlsbDogJyNhOWE5YTknLFxuICBmaWxsT3BhY2l0eTogMC4xLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZlYXR1cmVTdHlsZSh7IGZlYXR1cmUsIHN0YXRlIH0pIHtcbiAgY29uc3QgdHlwZSA9IGZlYXR1cmUucHJvcGVydGllcy5zaGFwZSB8fCBmZWF0dXJlLmdlb21ldHJ5LnR5cGU7XG4gIGxldCBzdHlsZSA9IG51bGw7XG5cbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgUkVOREVSX1NUQVRFLlNFTEVDVEVEOlxuICAgICAgc3R5bGUgPSB7IC4uLlNFTEVDVEVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLkhPVkVSRUQ6XG4gICAgICBzdHlsZSA9IHsgLi4uSE9WRVJFRF9TVFlMRSB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFJFTkRFUl9TVEFURS5VTkNPTU1JVFRFRDpcbiAgICBjYXNlIFJFTkRFUl9TVEFURS5DTE9TSU5HOlxuICAgICAgc3R5bGUgPSB7IC4uLlVOQ09NTUlUVEVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLklOQUNUSVZFOlxuICAgICAgc3R5bGUgPSB7IC4uLklOQUNUSVZFX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzdHlsZSA9IHsgLi4uREVGQVVMVF9TVFlMRSB9O1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBTSEFQRS5QT0lOVDpcbiAgICAgIHN0eWxlLnIgPSBDSVJDTEVfUkFESVVTO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTSEFQRS5MSU5FX1NUUklORzpcbiAgICAgIHN0eWxlLmZpbGwgPSAnbm9uZSc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNIQVBFLlBPTFlHT046XG4gICAgICBpZiAoc3RhdGUgPT09IFJFTkRFUl9TVEFURS5DTE9TSU5HKSB7XG4gICAgICAgIHN0eWxlLnN0cm9rZURhc2hhcnJheSA9ICc0LDInO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBjYXNlIFNIQVBFLlJFQ1RBTkdMRTpcbiAgICAgIGlmIChzdGF0ZSA9PT0gUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVEKSB7XG4gICAgICAgIHN0eWxlLnN0cm9rZURhc2hhcnJheSA9ICc0LDInO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRpdEhhbmRsZVN0eWxlKHsgZmVhdHVyZSwgc2hhcGUsIGluZGV4LCBzdGF0ZSB9KSB7XG4gIGxldCBzdHlsZSA9IHt9O1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuU0VMRUNURUQ6XG4gICAgICBzdHlsZSA9IHsgLi4uU0VMRUNURURfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuSE9WRVJFRDpcbiAgICAgIHN0eWxlID0geyAuLi5IT1ZFUkVEX1NUWUxFIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgUkVOREVSX1NUQVRFLlVOQ09NTUlUVEVEOlxuICAgIGNhc2UgUkVOREVSX1NUQVRFLkNMT1NJTkc6XG4gICAgICBzdHlsZSA9IHsgLi4uVU5DT01NSVRURURfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBSRU5ERVJfU1RBVEUuSU5BQ1RJVkU6XG4gICAgICBzdHlsZSA9IHsgLi4uSU5BQ1RJVkVfU1RZTEUgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHN0eWxlID0geyAuLi5ERUZBVUxUX1NUWUxFIH07XG4gIH1cblxuICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgY2FzZSAnY2lyY2xlJzpcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgc3R5bGUuciA9IENJUkNMRV9SQURJVVM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyZWN0JzpcbiAgICAgIHN0eWxlID0geyAuLi5zdHlsZSwgLi4uUkVDVF9TVFlMRSB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/modules/react-map-gl-draw/dist/types.js b/modules/react-map-gl-draw/dist/types.js new file mode 100644 index 000000000..4310b4ffa --- /dev/null +++ b/modules/react-map-gl-draw/dist/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= \ No newline at end of file diff --git a/package.json b/package.json index 742458469..2085a3290 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,6 @@ { + "name": "nebula.gl", + "version": "0.22.4", "description": "A suite of 3D-enabled data editing layers for deck.gl", "license": "MIT", "private": true, diff --git a/yarn.lock b/yarn.lock index 3344d4aff..a9a899fbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2259,10 +2259,10 @@ resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-8.4.3.tgz#d9c77844328ade0b7eda39f2086636157a0e91ad" integrity sha512-sInPqqnSijiSUiGmfXqIbh4GGFCOhRcqUAtawXFEOUqSHJh8Amytr35s8arqBVzav+rT8uxFUxdUmnPJ93AOsQ== -"@luma.gl/constants@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-8.1.0.tgz" - integrity sha512-mKd3FKkvr17/MdrFgtVAMddTiBwgAtAtXx3XCx6bpR1nJg39f7j7MnrFB3omu/twISLWLxv9GqIo+yxuO5hnhw== +"@luma.gl/constants@^8.4.3": + version "8.4.4" + resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-8.4.4.tgz#a4dd5edba10081142e1407ecba93076695f33d07" + integrity sha512-4e58QW6UKXkxiIvWSLoAnTc4cT8nvb0PhLzu1h8KiCuaDT5Vq8csOymcNOy/jhpfcIhHlmT1KwowF5m/DcOlKg== "@luma.gl/core@^8.4.1": version "8.4.3" @@ -2618,6 +2618,17 @@ resolved "https://registry.yarnpkg.com/@tmcw%2ftogeojson/-/togeojson-3.2.0.tgz" integrity sha1-BZDpmyAZcUaPqbq9LSTxEO+ACZk= +"@turf/along@>=6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@turf/along/-/along-6.3.0.tgz#9a1d2d418027945f113e15029f53069b335bf426" + integrity sha512-2j0nHp38IuzESyv5/9hLYM2MuUe155Kw390lkQtiLjhRtTeYQNEaRy+uhZhf3/DWrjGULH1HatLc5j0CmiwrJA== + dependencies: + "@turf/bearing" "^6.3.0" + "@turf/destination" "^6.3.0" + "@turf/distance" "^6.3.0" + "@turf/helpers" "^6.3.0" + "@turf/invariant" "^6.3.0" + "@turf/area@6.x": version "6.0.1" resolved "https://registry.yarnpkg.com/@turf/area/-/area-6.0.1.tgz" @@ -2660,6 +2671,14 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" +"@turf/bearing@^6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@turf/bearing/-/bearing-6.3.0.tgz#4de3f398382772031e84491734902b8d37bc8c84" + integrity sha512-apuUm9xN6VQLO33m7F2mmzlm3dHfeesJjMSzh9iehGtgmp1IaVndjdcIvs0ieiwm8bN9UhwXpfPtO3pV0n9SFw== + dependencies: + "@turf/helpers" "^6.3.0" + "@turf/invariant" "^6.3.0" + "@turf/boolean-clockwise@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz" @@ -2741,6 +2760,14 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" +"@turf/destination@^6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@turf/destination/-/destination-6.3.0.tgz#7032eeb0ec5d1a035d98faaddac039eea96abb04" + integrity sha512-aLt3U/XkJWyZW08Ln1qZwBNAGh27yhmYLu892+dBj3gKP6UUiR6ZopXxrBwjBVe00A6k2ktftKDn79qe0hptuw== + dependencies: + "@turf/helpers" "^6.3.0" + "@turf/invariant" "^6.3.0" + "@turf/difference@>=4.0.0": version "6.0.1" resolved "https://registry.yarnpkg.com/@turf/difference/-/difference-6.0.1.tgz" @@ -2759,6 +2786,14 @@ "@turf/helpers" "6.x" "@turf/invariant" "6.x" +"@turf/distance@^6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.3.0.tgz#4bd084af7fe369e921476e52b597a638dae4ed95" + integrity sha512-basi24ssNFnH3iXPFjp/aNUrukjObiFWoIyDRqKyBJxVwVOwAWvfk4d38QQyBj5nDo5IahYRq/Q+T47/5hSs9w== + dependencies: + "@turf/helpers" "^6.3.0" + "@turf/invariant" "^6.3.0" + "@turf/ellipse@>=4.0.0": version "5.1.5" resolved "https://registry.yarnpkg.com/@turf/ellipse/-/ellipse-5.1.5.tgz" @@ -2801,6 +2836,13 @@ dependencies: "@turf/helpers" "^5.1.5" +"@turf/invariant@^6.3.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.3.0.tgz#04a22b26c5503146c03fa6198176b72bd591eadf" + integrity sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw== + dependencies: + "@turf/helpers" "^6.3.0" + "@turf/line-intersect@6.x", "@turf/line-intersect@>=4.0.0": version "6.0.2" resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.0.2.tgz"