UNPKG

445 kBSource Map (JSON)View Raw
1{"version":3,"file":"l7-draw.js","sources":["../node_modules/@turf/helpers/index.js","../src/util/constant.ts","../node_modules/@turf/invariant/index.js","../node_modules/@turf/destination/index.js","../node_modules/@turf/circle/index.js","../node_modules/@turf/distance/index.js","../src/util/create_geometry.ts","../src/util/move_featrues.ts","../src/render/renderFeature.ts","../src/render/base_render.ts","../src/render/draw.ts","../src/render/draw_result.ts","../src/render/draw_vertex.ts","../node_modules/eventemitter3/index.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/eq.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_root.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/identity.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/constant.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/merge.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/keys.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/cloneDeep.js","../src/source.ts","../src/util/layerstyle.ts","../src/modes/draw_mode.ts","../src/modes/draw_delete.ts","../src/modes/draw_edit.ts","../src/modes/draw_selected.ts","../src/modes/draw_feature.ts","../src/modes/draw_circle.ts","../node_modules/@turf/bearing/node_modules/@turf/helpers/main.es.js","../node_modules/@turf/bearing/node_modules/@turf/invariant/main.es.js","../node_modules/@turf/bearing/main.es.js","../node_modules/@turf/midpoint/node_modules/@turf/helpers/main.es.js","../node_modules/@turf/midpoint/node_modules/@turf/invariant/main.es.js","../node_modules/@turf/midpoint/node_modules/@turf/destination/main.es.js","../node_modules/@turf/midpoint/node_modules/@turf/distance/main.es.js","../node_modules/@turf/midpoint/main.es.js","../src/render/draw_mid_vertex.ts","../src/modes/draw_polygon.ts","../src/modes/draw_line.ts","../src/modes/draw_point.ts","../src/modes/draw_rect.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/draw_control.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n centimeters: exports.earthRadius * 100,\n centimetres: exports.earthRadius * 100,\n degrees: exports.earthRadius / 111325,\n feet: exports.earthRadius * 3.28084,\n inches: exports.earthRadius * 39.370,\n kilometers: exports.earthRadius / 1000,\n kilometres: exports.earthRadius / 1000,\n meters: exports.earthRadius,\n metres: exports.earthRadius,\n miles: exports.earthRadius / 1609.344,\n millimeters: exports.earthRadius * 1000,\n millimetres: exports.earthRadius * 1000,\n nauticalmiles: exports.earthRadius / 1852,\n radians: 1,\n yards: exports.earthRadius / 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.370,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / exports.earthRadius,\n yards: 1 / 1.0936,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, options) {\n if (options === void 0) { options = {}; }\n switch (type) {\n case \"Point\": return point(coordinates).geometry;\n case \"LineString\": return lineString(coordinates).geometry;\n case \"Polygon\": return polygon(coordinates).geometry;\n case \"MultiPoint\": return multiPoint(coordinates).geometry;\n case \"MultiLineString\": return multiLineString(coordinates).geometry;\n case \"MultiPolygon\": return multiPolygon(coordinates).geometry;\n default: throw new Error(type + \" is invalid\");\n }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = exports.areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = exports.areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexports.validateId = validateId;\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nexports.radians2degrees = radians2degrees;\nfunction degrees2radians() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nexports.degrees2radians = degrees2radians;\nfunction distanceToDegrees() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nexports.distanceToDegrees = distanceToDegrees;\nfunction distanceToRadians() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nexports.distanceToRadians = distanceToRadians;\nfunction radiansToDistance() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nexports.radiansToDistance = radiansToDistance;\nfunction bearingToAngle() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nexports.bearingToAngle = bearingToAngle;\nfunction convertDistance() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\nexports.convertDistance = convertDistance;\n","export enum DrawEvent {\n CREATE = 'draw.create',\n DELETE = 'draw.delete',\n Move = 'draw.move',\n Edit = 'draw.edit',\n UPDATE = 'draw.update',\n CHANGE = 'draw.change',\n SELECTION_CHANGE = 'draw.selectionchange',\n MODE_CHANGE = 'draw.modechange',\n ACTIONABLE = 'draw.actionable',\n RENDER = 'draw.render',\n COMBINE_FEATURES = 'draw.combine',\n UNCOMBINE_FEATURES = 'draw.uncombine',\n}\n\nexport enum DrawModes {\n DRAW_Circle = 'draw_circle',\n DRAW_Rect = 'draw_react',\n DRAW_LINE_STRING = 'draw_line_string',\n DRAW_POLYGON = 'draw_polygon',\n DRAW_POINT = 'draw_point',\n SIMPLE_SELECT = 'simple_select',\n DIRECT_SELECT = 'direct_select',\n STATIC = 'static',\n}\n\nexport type unitsType = 'degrees' | 'radians' | 'miles' | 'kilometers';\n\nexport enum FeatureType {\n FEATURE = 'Feature',\n POLYGON = 'Polygon',\n LINE_STRING = 'LineString',\n POINT = 'Point',\n FEATURE_COLLECTION = 'FeatureCollection',\n MULTI_PREFIX = 'Multi',\n MULTI_POINT = 'MultiPoint',\n MULTI_LINE_STRING = 'MultiLineString',\n MULTI_POLYGON = 'MultiPolygon',\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\r\n *\r\n * @name getCoord\r\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\r\n * @returns {Array<number>} coordinates\r\n * @example\r\n * var pt = turf.point([10, 10]);\r\n *\r\n * var coord = turf.getCoord(pt);\r\n * //= [10, 10]\r\n */\r\nfunction getCoord(coord) {\r\n if (!coord) {\r\n throw new Error(\"coord is required\");\r\n }\r\n if (!Array.isArray(coord)) {\r\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\r\n return coord.geometry.coordinates;\r\n }\r\n if (coord.type === \"Point\") {\r\n return coord.coordinates;\r\n }\r\n }\r\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\r\n return coord;\r\n }\r\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\r\n}\r\nexports.getCoord = getCoord;\r\n/**\r\n * Unwrap coordinates from a Feature, Geometry Object or an Array\r\n *\r\n * @name getCoords\r\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\r\n * @returns {Array<any>} coordinates\r\n * @example\r\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\r\n *\r\n * var coords = turf.getCoords(poly);\r\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\r\n */\r\nfunction getCoords(coords) {\r\n if (Array.isArray(coords)) {\r\n return coords;\r\n }\r\n // Feature\r\n if (coords.type === \"Feature\") {\r\n if (coords.geometry !== null) {\r\n return coords.geometry.coordinates;\r\n }\r\n }\r\n else {\r\n // Geometry\r\n if (coords.coordinates) {\r\n return coords.coordinates;\r\n }\r\n }\r\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\r\n}\r\nexports.getCoords = getCoords;\r\n/**\r\n * Checks if coordinates contains a number\r\n *\r\n * @name containsNumber\r\n * @param {Array<any>} coordinates GeoJSON Coordinates\r\n * @returns {boolean} true if Array contains a number\r\n */\r\nfunction containsNumber(coordinates) {\r\n if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) {\r\n return true;\r\n }\r\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\r\n return containsNumber(coordinates[0]);\r\n }\r\n throw new Error(\"coordinates must only contain numbers\");\r\n}\r\nexports.containsNumber = containsNumber;\r\n/**\r\n * Enforce expectations about types of GeoJSON objects for Turf.\r\n *\r\n * @name geojsonType\r\n * @param {GeoJSON} value any GeoJSON object\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction geojsonType(value, type, name) {\r\n if (!type || !name) {\r\n throw new Error(\"type and name required\");\r\n }\r\n if (!value || value.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\r\n }\r\n}\r\nexports.geojsonType = geojsonType;\r\n/**\r\n * Enforce expectations about types of {@link Feature} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name featureOf\r\n * @param {Feature} feature a feature with an expected geometry type\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} error if value is not the expected type.\r\n */\r\nfunction featureOf(feature, type, name) {\r\n if (!feature) {\r\n throw new Error(\"No feature passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".featureOf() requires a name\");\r\n }\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n}\r\nexports.featureOf = featureOf;\r\n/**\r\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name collectionOf\r\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction collectionOf(featureCollection, type, name) {\r\n if (!featureCollection) {\r\n throw new Error(\"No featureCollection passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".collectionOf() requires a name\");\r\n }\r\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\r\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\r\n }\r\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\r\n var feature = _a[_i];\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n }\r\n}\r\nexports.collectionOf = collectionOf;\r\n/**\r\n * Get Geometry from Feature or Geometry Object\r\n *\r\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\r\n * @returns {Geometry|null} GeoJSON Geometry Object\r\n * @throws {Error} if geojson is not a Feature or Geometry Object\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getGeom(point)\r\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\r\n */\r\nfunction getGeom(geojson) {\r\n if (geojson.type === \"Feature\") {\r\n return geojson.geometry;\r\n }\r\n return geojson;\r\n}\r\nexports.getGeom = getGeom;\r\n/**\r\n * Get GeoJSON object's type, Geometry type is prioritize.\r\n *\r\n * @param {GeoJSON} geojson GeoJSON object\r\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\r\n * @returns {string} GeoJSON type\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getType(point)\r\n * //=\"Point\"\r\n */\r\nfunction getType(geojson, name) {\r\n if (geojson.type === \"FeatureCollection\") {\r\n return \"FeatureCollection\";\r\n }\r\n if (geojson.type === \"GeometryCollection\") {\r\n return \"GeometryCollection\";\r\n }\r\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\r\n return geojson.geometry.type;\r\n }\r\n return geojson.type;\r\n}\r\nexports.getType = getType;\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature<Point>} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nfunction destination(origin, distance, bearing, options) {\n if (options === void 0) { options = {}; }\n // Handle input\n var coordinates1 = invariant_1.getCoord(origin);\n var longitude1 = helpers_1.degreesToRadians(coordinates1[0]);\n var latitude1 = helpers_1.degreesToRadians(coordinates1[1]);\n var bearingRad = helpers_1.degreesToRadians(bearing);\n var radians = helpers_1.lengthToRadians(distance, options.units);\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = helpers_1.radiansToDegrees(longitude2);\n var lat = helpers_1.radiansToDegrees(latitude2);\n return helpers_1.point([lng, lat], options.properties);\n}\nexports.default = destination;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar destination_1 = require(\"@turf/destination\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.\n *\n * @name circle\n * @param {Feature<Point>|number[]} center center point\n * @param {number} radius radius of the circle\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] properties\n * @returns {Feature<Polygon>} circle polygon\n * @example\n * var center = [-75.343, 39.984];\n * var radius = 5;\n * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};\n * var circle = turf.circle(center, radius, options);\n *\n * //addToMap\n * var addToMap = [turf.point(center), circle]\n */\nfunction circle(center, radius, options) {\n if (options === void 0) { options = {}; }\n // default params\n var steps = options.steps || 64;\n var properties = options.properties ? options.properties : (!Array.isArray(center) && center.type === 'Feature' && center.properties) ? center.properties : {};\n // main\n var coordinates = [];\n for (var i = 0; i < steps; i++) {\n coordinates.push(destination_1.default(center, radius, i * -360 / steps, options).geometry.coordinates);\n }\n coordinates.push(coordinates[0]);\n return helpers_1.polygon([coordinates], properties);\n}\nexports.default = circle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n if (options === void 0) { options = {}; }\n var coordinates1 = invariant_1.getCoord(from);\n var coordinates2 = invariant_1.getCoord(to);\n var dLat = helpers_1.degreesToRadians((coordinates2[1] - coordinates1[1]));\n var dLon = helpers_1.degreesToRadians((coordinates2[0] - coordinates1[0]));\n var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexports.default = distance;\n","// @ts-ignore\nimport turfCircle from '@turf/circle';\n// @ts-ignore\nimport turfDistance from '@turf/distance';\nimport {\n Feature,\n featureCollection,\n FeatureCollection,\n lineString,\n point,\n polygon,\n} from '@turf/helpers';\nimport { unitsType } from './constant';\n\nexport function createCircle(\n center: [number, number],\n endPoint: [number, number],\n options: {\n units: unitsType;\n steps: number;\n id: string;\n pointFeatures: Feature[];\n },\n): Feature {\n const radius = turfDistance(point(center), point(endPoint), options);\n const feature = turfCircle(center, radius, {\n units: options.units,\n steps: options.steps,\n properties: {\n ...options,\n active: true,\n type: 'circle',\n radius,\n startPoint: {\n lng: center[0],\n lat: center[1],\n },\n endPoint: {\n lng: endPoint[0],\n lat: endPoint[1],\n },\n },\n });\n return feature as Feature;\n}\n\nexport function createRect(\n startPoint: [number, number],\n endPoint: [number, number],\n options: {\n id: string;\n pointFeatures: Feature[];\n [key: string]: any;\n },\n): Feature {\n const minX = Math.min(startPoint[0], endPoint[0]);\n const minY = Math.min(startPoint[1], endPoint[1]);\n const maxX = Math.max(startPoint[0], endPoint[0]);\n const maxY = Math.max(startPoint[1], endPoint[1]);\n const feature = {\n type: 'Feature',\n properties: {\n type: 'rect',\n active: true,\n startPoint: {\n lng: startPoint[0],\n lat: startPoint[1],\n },\n endPoint: {\n lng: endPoint[0],\n lat: endPoint[1],\n },\n ...options,\n },\n geometry: {\n type: 'Polygon',\n coordinates: [\n [\n [minX, minY],\n [minX, maxY],\n [maxX, maxY],\n [maxX, minY],\n [minX, minY],\n ],\n ],\n },\n };\n return feature as Feature;\n}\n\nexport function createPolygon(\n points: Array<{ lng: number; lat: number }>,\n options: {\n id?: string | number;\n pointFeatures: Feature[];\n [key: string]: any;\n },\n): any {\n const coords = points.map(p => [p.lng, p.lat]);\n if (points.length < 2) {\n return point(coords[0], options);\n } else if (points.length < 3) {\n return lineString(coords, options);\n } else {\n coords.push(coords[0]);\n return polygon([coords], options);\n }\n}\n\nexport function createLine(\n points: Array<{ lng: number; lat: number }>,\n options: any,\n): any {\n const coords = points.map(p => [p.lng, p.lat]);\n if (points.length < 2) {\n return point(coords[0], options);\n } else {\n return lineString(coords, options);\n }\n}\n\nexport function createPoint(\n points: Array<{ lng: number; lat: number }>,\n): FeatureCollection {\n const features = points.map((p, index) =>\n point([p.lng, p.lat], {\n active: true,\n id: index.toString(),\n }),\n );\n return featureCollection(features);\n}\n","import { Feature, Geometry, Properties } from '@turf/helpers';\nimport { FeatureType } from './constant';\ninterface IDelta {\n lng: number;\n lat: number;\n}\ntype RingType = Array<[number, number]>;\nexport default function(features: Feature[], delta: IDelta) {\n features.forEach(feature => {\n const geometry = feature.geometry as Geometry;\n let nextCoord;\n const { type, coordinates } = geometry;\n switch (type) {\n case FeatureType.POINT:\n nextCoord = movePoint(coordinates as [number, number], delta);\n break;\n case FeatureType.LINE_STRING:\n case FeatureType.MULTI_POINT:\n nextCoord = moveRing(coordinates as RingType, delta);\n break;\n case FeatureType.POLYGON:\n case FeatureType.MULTI_LINE_STRING:\n nextCoord = moveMultiPolygon(coordinates as RingType[], delta);\n break;\n case FeatureType.MULTI_POLYGON:\n nextCoord = (coordinates as RingType[][]).map(mult =>\n moveMultiPolygon(mult as RingType[], delta),\n );\n break;\n }\n if (nextCoord) {\n geometry.coordinates = nextCoord;\n }\n });\n\n return features;\n}\n\nexport function movePoint(\n coord: [number, number],\n delta: IDelta,\n): [number, number] {\n return [coord[0] + delta.lng, coord[1] + delta.lat];\n}\n\nexport function moveRing(coords: RingType, delta: IDelta) {\n return coords.map(coord => movePoint(coord, delta));\n}\n\nexport function moveMultiPolygon(mult: RingType[], delta: IDelta) {\n return mult.map(ring => moveRing(ring, delta));\n}\n","import { ILayer, LineLayer, PointLayer, PolygonLayer } from '@antv/l7';\nimport { FeatureCollection } from '@turf/helpers';\nexport function renderFeature(fe: FeatureCollection, style: any): ILayer[] {\n const type = fe.features[0]?.geometry?.type;\n let layers;\n switch (type) {\n case 'Point':\n layers = drawPoint(fe, style.point);\n break;\n case 'LineString':\n layers = drawLine(fe, style.line);\n break;\n case 'Polygon':\n layers = drawPolyon(fe, style.polygon);\n break;\n }\n return layers as ILayer[];\n}\n\nfunction drawPoint(fe: FeatureCollection, style: any) {\n const layer = new PointLayer({\n zIndex: 2,\n pickingBuffer: 3,\n })\n .source(fe)\n .shape('circle')\n .color(style.color)\n .size(style.size)\n .style(style.style);\n return [layer];\n}\n\nfunction drawLine(fe: FeatureCollection, style: any) {\n const layer = new LineLayer({\n pickingBuffer: 3,\n })\n .source(fe)\n .shape('line')\n .color(style.color)\n .size(style.size)\n .style(style.style);\n return [layer];\n}\n\nfunction drawPolyon(fe: FeatureCollection, style: any) {\n const fill = new PolygonLayer()\n .source(fe)\n .shape('fill')\n .color(style.color)\n .size(style.size)\n .style({\n opacity: style.style.opacity,\n });\n const line = new PolygonLayer()\n .source(fe)\n .shape('line')\n .color(style.style.stroke)\n .size(style.style.strokeWidth)\n .style({\n opacity: style.style.strokeOpacity,\n lineType: style.style.lineType,\n dashArray: style.style.dashArray,\n });\n return [fill, line];\n}\n","import { IInteractionTarget, ILayer, Scene } from '@antv/l7';\nconst InitFeature = {\n type: 'FeatureCollection',\n features: [],\n};\ntype CallBack = (...args: any[]) => any;\nimport { FeatureCollection } from '@turf/helpers';\nimport Draw from '../modes/draw_feature';\nimport { DrawEvent, DrawModes } from '../util/constant';\nimport { renderFeature } from './renderFeature';\nexport default class BaseRenderLayer {\n public drawLayers: ILayer[] = [];\n protected draw: Draw;\n protected isEnableDrag: boolean;\n protected isEnableEdit: boolean;\n constructor(draw: Draw) {\n this.draw = draw;\n }\n public update(feature: FeatureCollection) {\n if (this.drawLayers.length > 0) {\n this.updateData(feature);\n }\n this.removeLayers();\n const style = this.draw.getStyle('normal');\n this.drawLayers = renderFeature(feature, style);\n this.addLayers();\n }\n public on(type: any, handler: CallBack) {\n const layer = this.drawLayers[0];\n layer.on(type, handler);\n }\n public off(type: any, handler: CallBack) {\n const layer = this.drawLayers[0];\n layer.off(type, handler);\n }\n\n public emit(type: string, e: any) {\n const layer = this.drawLayers[0];\n layer.emit(type, e);\n }\n\n public updateData(data: any) {\n if (this.drawLayers.length === 0) {\n this.update(data);\n }\n this.drawLayers.forEach(layer => layer.setData(data));\n }\n\n public destroy() {\n this.removeLayers();\n }\n\n public removeLayers() {\n if (this.drawLayers.length !== 0) {\n this.drawLayers.forEach(layer => this.draw.scene.removeLayer(layer));\n }\n }\n public addLayers() {\n this.drawLayers.forEach(layer => this.draw.scene.addLayer(layer));\n }\n\n public show() {\n this.drawLayers.forEach(layer => layer.show());\n }\n\n public hide() {\n this.drawLayers.forEach(layer => layer.hide());\n }\n}\n","import { IInteractionTarget, ILayer, Scene } from '@antv/l7';\nconst InitFeature = {\n type: 'FeatureCollection',\n features: [],\n};\nimport { Feature, FeatureCollection } from '@turf/helpers';\nimport Draw from '../modes/draw_feature';\nimport { DrawEvent, DrawModes } from '../util/constant';\nimport BaseRender from './base_render';\nimport { renderFeature } from './renderFeature';\nexport default class DrawLayer extends BaseRender {\n public update(feature: FeatureCollection) {\n this.removeLayers();\n const style = this.draw.getStyle('active');\n this.drawLayers = renderFeature(feature, style);\n this.addLayers();\n }\n public enableSelect() {\n this.show();\n if (this.isEnableDrag) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.on('mouseenter', this.onMouseMove);\n layer.on('mouseout', this.onUnMouseMove);\n if (this.draw.editEnable) {\n layer.on('click', this.onClick);\n }\n layer.on('unclick', this.onUnClick);\n this.isEnableDrag = true;\n }\n public disableSelect() {\n if (!this.isEnableDrag) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.off('mouseenter', this.onMouseMove);\n layer.off('mouseout', this.onUnMouseMove);\n layer.off('click', this.onClick);\n layer.off('unclick', this.onUnClick);\n this.isEnableDrag = false;\n }\n\n public enableEdit() {\n if (this.isEnableEdit) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.on('unclick', this.onUnClick);\n this.isEnableDrag = true;\n }\n\n public disableEdit() {\n if (!this.isEnableEdit) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.off('unclick', this.onUnClick);\n this.isEnableDrag = false;\n }\n\n private onMouseMove = (e: any) => {\n this.draw.setCursor('move');\n this.draw.selectMode.enable();\n };\n private onUnMouseMove = (e: any) => {\n this.draw.resetCursor();\n this.draw.selectMode.disable();\n };\n private onClick = (e: any) => {\n this.draw.selectMode.disable();\n this.draw.editMode.enable();\n this.disableSelect();\n this.draw.resetCursor();\n this.enableEdit();\n this.draw.setCurrentFeature(e.feature);\n this.draw.emit(DrawEvent.MODE_CHANGE, DrawModes.DIRECT_SELECT);\n };\n\n private onUnClick = (e: any) => {\n this.draw.selectMode.disable();\n this.draw.editMode.disable();\n this.draw.source.setFeatureUnActive(\n this.draw.getCurrentFeature() as Feature,\n );\n this.disableSelect();\n this.disableEdit();\n this.hide();\n this.draw.emit(DrawEvent.MODE_CHANGE, DrawModes.STATIC);\n };\n}\n","import { Feature, FeatureCollection } from '@turf/helpers';\nimport { DrawEvent, DrawModes } from '../util/constant';\nimport BaseRender from './base_render';\nimport { renderFeature } from './renderFeature';\nexport default class DrawResultLayer extends BaseRender {\n public update(feature: FeatureCollection) {\n if (this.drawLayers.length > 0) {\n this.updateData(feature);\n return;\n }\n this.removeLayers();\n const style = this.draw.getStyle('normal');\n this.drawLayers = renderFeature(feature, style);\n this.addFilter();\n this.addLayers();\n }\n public enableSelect() {\n if (this.isEnableDrag) {\n return;\n }\n if (!this.draw.selectEnable) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.on('click', this.onClick);\n this.isEnableDrag = true;\n }\n public disableSelect() {\n if (!this.isEnableDrag) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.off('click', this.onClick);\n this.isEnableDrag = false;\n }\n public enableDelete() {\n this.disableSelect();\n const layer = this.drawLayers[0];\n layer.on('click', this.onDeleteClick);\n }\n\n public disableDelete() {\n const layer = this.drawLayers[0];\n layer.off('click', this.onDeleteClick);\n }\n public addFilter() {\n this.drawLayers.forEach(layer =>\n layer.filter('active', active => {\n return !active;\n }),\n );\n }\n private onClick = (e: any) => {\n this.draw.source.setFeatureUnActive(\n this.draw.getCurrentFeature() as Feature,\n );\n this.draw.setCurrentFeature(e.feature);\n this.draw.source.setFeatureActive(e.feature as Feature);\n this.updateData(this.draw.source.data);\n this.draw.emit(DrawEvent.MODE_CHANGE, DrawModes.SIMPLE_SELECT);\n };\n\n private onDeleteClick = (e: any) => {\n this.draw.source.removeFeature(e.feature);\n this.updateData(this.draw.source.data);\n };\n}\n","import { FeatureCollection } from '@turf/helpers';\nimport BaseRender from './base_render';\nimport { renderFeature } from './renderFeature';\nexport default class DrawVertexLayer extends BaseRender {\n public update(feature: FeatureCollection) {\n this.removeLayers();\n const style = this.draw.getStyle('active');\n this.drawLayers = renderFeature(feature, style);\n this.addLayers();\n }\n public enableSelect() {\n return;\n }\n public disableSelect() {\n return;\n }\n\n public enableEdit() {\n if (this.isEnableEdit) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.on('mouseenter', this.onMouseEnter);\n layer.on('mouseout', this.onMouseOut);\n layer.on('click', this.onClick);\n this.isEnableEdit = true;\n }\n\n public disableEdit() {\n if (!this.isEnableEdit) {\n return;\n }\n const layer = this.drawLayers[0];\n layer.off('mouseenter', this.onMouseEnter);\n layer.off('mouseout', this.onMouseOut);\n layer.off('click', this.onClick);\n this.isEnableEdit = false;\n }\n\n private onMouseEnter = (e: any) => {\n this.draw.setCursor('move');\n this.draw.setCurrentVertex(e.feature);\n this.draw.editMode.enable();\n };\n private onMouseOut = (e: any) => {\n this.draw.resetCursor();\n this.draw.editMode.disable();\n };\n private onClick = (e: any) => {\n this.draw.setCurrentVertex(e.feature);\n this.draw.editMode.enable();\n };\n}\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","import { Feature, FeatureCollection } from '@turf/helpers';\n// tslint:disable-next-line:no-submodule-imports\nimport cloneDeep from 'lodash/cloneDeep';\nexport default class DrawSource {\n public data: FeatureCollection;\n constructor(data?: FeatureCollection) {\n this.data = data || this.getDefaultData();\n }\n\n public addFeature(feature: any) {\n this.data.features.push(feature);\n }\n\n public getData(): FeatureCollection {\n const features = cloneDeep(this.data.features).map((feature: Feature) => {\n feature.properties = {\n id: feature?.properties?.id,\n type: feature?.properties?.type,\n };\n return feature;\n });\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n\n public getFeature(id: string): Feature | undefined {\n const result = this.data.features.find((fe: Feature) => {\n return fe?.properties?.id === id;\n });\n\n return result;\n }\n public removeAllFeatures() {\n this.data = this.getDefaultData();\n }\n public removeFeature(feature: Feature) {\n const index = this.getFeatureIndex(feature);\n if (index !== undefined) {\n this.data.features.splice(index, 1);\n }\n }\n public setFeatureActive(feature: Feature) {\n const fe = this.getFeature(feature?.properties?.id);\n if (fe && fe.properties) {\n fe.properties.active = true;\n }\n }\n\n public setFeatureUnActive(feature: Feature) {\n const fe = this.getFeature(feature?.properties?.id);\n if (fe && fe.properties) {\n fe.properties.active = false;\n }\n }\n public clearFeatureActive() {\n this.data.features.forEach((fe: Feature) => {\n if (fe && fe.properties) {\n fe.properties.active = false;\n }\n });\n }\n public updateFeature(feature: Feature) {\n this.removeFeature(feature);\n this.addFeature(feature);\n }\n public destroy() {\n this.data = this.getDefaultData();\n }\n private getDefaultData(): FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n };\n }\n\n private getFeatureIndex(feature: Feature): number | undefined {\n return this.data.features.findIndex(fe => {\n return fe?.properties?.id === feature?.properties?.id;\n });\n }\n}\n","const LayerStyles = {\n active: {\n point: {\n type: 'PointLayer',\n shape: 'circle',\n color: '#fbb03b',\n size: 5,\n style: {\n stroke: '#fff',\n strokeWidth: 2,\n },\n },\n line: {\n type: 'LineLayer',\n shape: 'line',\n color: '#fbb03b',\n size: 1,\n style: {\n opacity: 1,\n lineType: 'dash',\n dashArray: [2, 2],\n },\n },\n polygon: {\n shape: 'fill',\n color: '#fbb03b',\n style: {\n opacity: 0.1,\n stroke: '#fbb03b',\n strokeWidth: 1,\n strokeOpacity: 1,\n lineType: 'dash',\n dashArray: [2, 2],\n },\n },\n },\n normal: {\n polygon: {\n type: 'PolygonLayer',\n shape: 'fill',\n color: '#3bb2d0',\n style: {\n opacity: 0.1,\n stroke: '#3bb2d0',\n strokeWidth: 1,\n strokeOpacity: 1,\n lineType: 'solid',\n dashArray: [2, 2],\n },\n },\n line: {\n type: 'LineLayer',\n shape: 'line',\n size: 1,\n color: '#3bb2d0',\n style: {\n opacity: 1,\n },\n },\n point: {\n type: 'PointLayer',\n shape: 'circle',\n color: '#3bb2d0',\n size: 3,\n style: {\n stroke: '#fff',\n strokeWidth: 2,\n },\n },\n },\n normal_point: {\n type: 'PointLayer',\n shape: 'circle',\n color: '#3bb2d0',\n size: 3,\n style: {\n stroke: '#fff',\n strokeWidth: 2,\n },\n },\n mid_point: {\n point: {\n type: 'PointLayer',\n shape: 'circle',\n color: '#fbb03b',\n size: 3,\n style: {},\n },\n },\n};\n\nexport default LayerStyles;\n","import { IInteractionTarget, IPopup, Scene } from '@antv/l7';\nimport { Feature, FeatureCollection } from '@turf/helpers';\nimport { EventEmitter } from 'eventemitter3';\n// tslint:disable-next-line:no-submodule-imports\nimport merge from 'lodash/merge';\nimport DrawSource from '../source';\nimport LayerStyles from '../util/layerstyle';\n\nexport interface IDrawOption {\n data: FeatureCollection;\n title: string;\n style: any;\n}\n\nexport type DrawStatus =\n | 'Drawing'\n | 'DrawSelected'\n | 'DrawEdit'\n | 'DrawFinish'\n | 'EditFinish'\n | 'DrawDelete';\n\nlet DrawFeatureId = 0;\n\nexport default abstract class DrawMode extends EventEmitter {\n public source: DrawSource;\n public scene: Scene;\n public type: string;\n public title: string;\n public isEnable: boolean = false;\n\n protected options: {\n [key: string]: any;\n } = {\n style: LayerStyles,\n };\n protected drawStatus: DrawStatus = 'Drawing';\n protected currentFeature: Feature | null;\n protected currentVertex: Feature | null;\n protected popup: IPopup;\n constructor(scene: Scene, options: Partial<IDrawOption> = {}) {\n super();\n const { data } = options;\n this.scene = scene;\n this.source = new DrawSource(data);\n this.options = merge(this.options, this.getDefaultOptions(), options);\n this.title = this.getOption('title');\n }\n public enable() {\n if (this.isEnable) {\n return;\n }\n // @ts-ignore\n this.scene.setMapStatus({\n dragEnable: false,\n });\n this.scene.on('dragstart', this.onDragStart);\n this.scene.on('dragging', this.onDragging);\n this.scene.on('dragend', this.onDragEnd);\n this.scene.on('click', this.onClick);\n this.setCursor(this.getOption('cursor'));\n this.isEnable = true;\n }\n\n public disable() {\n if (!this.isEnable) {\n return;\n }\n this.scene.off('dragstart', this.onDragStart);\n this.scene.off('dragging', this.onDragging);\n this.scene.off('dragend', this.onDragEnd);\n this.scene.off('click', this.onClick);\n this.resetCursor();\n // @ts-ignore\n this.scene.setMapStatus({\n dragEnable: true,\n });\n this.isEnable = false;\n }\n public setCurrentFeature(feature: Feature) {\n this.currentFeature = feature;\n this.source.setFeatureActive(feature);\n }\n\n public setCurrentVertex(feature: Feature) {\n this.currentVertex = feature;\n }\n public deleteCurrentFeature() {\n throw new Error('子类未实现该方法');\n }\n\n public getCurrentVertex(): Feature {\n return this.currentVertex as Feature;\n }\n public getCurrentFeature(): Feature {\n return this.currentFeature as Feature;\n }\n\n public getOption(key: string) {\n return this.options[key];\n }\n\n public getStyle(id: string) {\n return this.getOption('style')[id];\n }\n\n public getUniqId() {\n return DrawFeatureId++;\n }\n\n public setCursor(cursor: string) {\n const container = this.scene.getMapCanvasContainer();\n if (container) {\n container.style.cursor = cursor;\n }\n }\n public resetCursor() {\n const container = this.scene.getMapCanvasContainer();\n if (container) {\n container.removeAttribute('style');\n }\n }\n public destroy() {\n DrawFeatureId = 0;\n this.removeAllListeners();\n this.disable();\n }\n\n protected getDefaultOptions(): any {\n return {};\n }\n\n protected abstract onDragStart(e: IInteractionTarget): void;\n\n protected abstract onDragging(e: IInteractionTarget): void;\n\n protected abstract onDragEnd(e: IInteractionTarget): void;\n\n protected onClick(e: IInteractionTarget): any {\n return null;\n }\n}\n","import { IInteractionTarget, ILngLat, Scene } from '@antv/l7';\nimport { Feature } from '@turf/helpers';\nimport { DrawEvent } from '../util/constant';\nimport { IDrawFeatureOption } from './draw_feature';\nimport DrawFeature, { IDrawOption } from './draw_mode';\nexport default class DrawDelete extends DrawFeature {\n // 绘制完成之后显示\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n }\n\n public enable() {\n this.emit(DrawEvent.DELETE, '');\n }\n public disable() {\n return null;\n }\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '删除图形',\n };\n }\n\n protected onDragStart(e: any): void {\n throw new Error('Method not implemented.');\n }\n protected onDragging = (e: IInteractionTarget) => {\n return;\n };\n\n protected onDragEnd = () => {\n throw new Error('Method not implemented.');\n };\n protected onClick = () => {\n return null;\n };\n}\n","import { IInteractionTarget, ILngLat, Scene } from '@antv/l7';\nimport { Feature } from '@turf/helpers';\nimport { DrawEvent } from '../util/constant';\nimport { IDrawFeatureOption } from './draw_feature';\nimport DrawFeature, { IDrawOption } from './draw_mode';\nexport default class DrawEdit extends DrawFeature {\n private endPoint: ILngLat;\n // 绘制完成之后显示\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n }\n\n public setEditFeature(feature: Feature) {\n this.currentFeature = feature;\n }\n\n protected onDragStart = (e: IInteractionTarget) => {\n // @ts-ignore\n };\n\n protected getDefaultOptions() {\n return {\n steps: 64,\n units: 'kilometres',\n cursor: 'move',\n };\n }\n\n protected onDragging = (e: IInteractionTarget) => {\n this.endPoint = e.lngLat;\n this.emit(DrawEvent.Edit, this.endPoint);\n return;\n };\n\n protected onDragEnd = () => {\n this.emit(DrawEvent.UPDATE, this.currentFeature);\n this.resetCursor();\n this.disable();\n };\n protected onClick = () => {\n return null;\n };\n}\n","import {\n IInteractionTarget,\n ILayer,\n ILngLat,\n IPopup,\n LineLayer,\n PointLayer,\n PolygonLayer,\n Popup,\n Scene,\n} from '@antv/l7';\nimport { Feature, featureCollection, point } from '@turf/helpers';\nimport { DrawEvent, DrawModes } from '../util/constant';\nimport moveFeatures from '../util/move_featrues';\nimport { IDrawFeatureOption } from './draw_feature';\nimport DrawFeature, { IDrawOption } from './draw_mode';\nconst InitFeature = {\n type: 'FeatureCollection',\n features: [],\n};\nexport default class DrawSelect extends DrawFeature {\n private center: ILngLat;\n private dragStartPoint: ILngLat;\n // 绘制完成之后显示\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n }\n\n public setSelectedFeature(feature: Feature) {\n this.currentFeature = feature;\n }\n\n protected onDragStart = (e: IInteractionTarget) => {\n this.scene.setMapStatus({ dragEnable: false });\n this.dragStartPoint = e.lngLat;\n };\n\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n steps: 64,\n units: 'kilometers',\n cursor: 'move',\n };\n }\n\n protected onDragging = (e: IInteractionTarget) => {\n const delta = {\n lng: e.lngLat.lng - this.dragStartPoint.lng,\n lat: e.lngLat.lat - this.dragStartPoint.lat,\n };\n this.emit(DrawEvent.Move, delta);\n this.dragStartPoint = e.lngLat;\n\n return;\n };\n\n protected onDragEnd = () => {\n this.emit(DrawEvent.UPDATE, this.currentFeature);\n };\n protected onClick = () => {\n return null;\n };\n}\n","import { IInteractionTarget, ILayer, ILngLat, Popup, Scene } from '@antv/l7';\nimport {\n Feature,\n FeatureCollection,\n featureCollection,\n point,\n Units,\n unitsFactors,\n} from '@turf/helpers';\nimport DrawRender from '../render/draw';\nimport RenderLayer from '../render/draw_result';\nimport DrawVertexLayer from '../render/draw_vertex';\nimport { DrawEvent, DrawModes } from '../util/constant';\nimport DrawDelete from './draw_delete';\nimport DrawEdit from './draw_edit';\nimport DrawMode, { IDrawOption } from './draw_mode';\nimport DrawSelected from './draw_selected';\nexport interface IDrawFeatureOption extends IDrawOption {\n units: Units;\n steps: number;\n editEnable: boolean;\n selectEnable: boolean;\n cursor: string;\n}\nexport default abstract class DrawFeature extends DrawMode {\n // 绘制完成之后显示\n public selectMode: DrawSelected;\n public editMode: DrawEdit;\n public deleteMode: DrawDelete;\n public editEnable: boolean;\n public selectEnable: boolean;\n\n protected normalLayer: RenderLayer;\n protected drawLayer: DrawRender;\n protected drawVertexLayer: DrawVertexLayer;\n\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n this.drawLayer = new DrawRender(this);\n this.drawVertexLayer = new DrawVertexLayer(this);\n this.normalLayer = new RenderLayer(this);\n this.selectEnable = this.getOption('selectEnable');\n this.editEnable = this.getOption('editEnable');\n\n // this.editLayer = new EditLayer(this);\n this.selectMode = new DrawSelected(this.scene, {});\n this.editMode = new DrawEdit(this.scene, {});\n this.deleteMode = new DrawDelete(this.scene, {});\n\n this.selectMode.on(DrawEvent.UPDATE, this.onDrawUpdate);\n this.selectMode.on(DrawEvent.Move, this.onDrawMove);\n this.editMode.on(DrawEvent.MODE_CHANGE, this.onModeChange);\n this.editMode.on(DrawEvent.UPDATE, this.onDrawUpdate);\n this.editMode.on(DrawEvent.Edit, this.onDrawEdit);\n this.selectMode.on(DrawEvent.MODE_CHANGE, this.onModeChange);\n\n this.deleteMode.on(DrawEvent.DELETE, this.onDrawDelete);\n this.on(DrawEvent.CREATE, this.onDrawCreate);\n this.on(DrawEvent.MODE_CHANGE, this.onModeChange);\n document.addEventListener('keydown', this.addKeyDownEvent);\n if (this.options.data && this.initData()) {\n this.normalLayer.update(this.source.data);\n this.normalLayer.enableSelect();\n }\n }\n public abstract drawFinish(): void;\n public setCurrentFeature(feature: Feature) {\n this.currentFeature = feature as Feature;\n // @ts-ignore\n this.pointFeatures = feature.properties.pointFeatures;\n\n this.source.setFeatureActive(feature);\n }\n public deleteCurrentFeature() {\n this.deleteMode.enable();\n }\n public disableLayer() {\n // this.emit(DrawEvent.MODE_CHANGE, DrawModes.STATIC);\n this.drawLayer.disableSelect();\n }\n public enableLayer() {\n this.drawLayer.enableSelect();\n }\n\n public getData(): FeatureCollection {\n return this.source.getData();\n }\n\n public removeAllData(): void {\n this.source.removeAllFeatures();\n this.currentFeature = null;\n this.drawLayer.hide();\n this.drawVertexLayer.hide();\n this.normalLayer.hide();\n this.hideOtherLayer();\n }\n\n public clear() {\n this.drawLayer.disableSelect();\n this.drawLayer.disableEdit();\n this.drawLayer.hide();\n this.drawVertexLayer.hide();\n this.hideOtherLayer();\n this.emit(DrawEvent.MODE_CHANGE, DrawModes.STATIC);\n }\n public reset() {\n this.drawLayer.show();\n this.drawVertexLayer.show();\n this.showOtherLayer();\n }\n\n public addVertex(feature: Feature): void {\n throw new Error('子类未实现该方法');\n }\n\n public onRemove() {\n this.destroy();\n this.selectMode.destroy();\n this.editMode.destroy();\n this.source.destroy();\n this.drawLayer.destroy();\n this.drawVertexLayer.destroy();\n this.normalLayer.destroy();\n document.removeEventListener('keydown', this.addKeyDownEvent);\n }\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n steps: 64,\n units: 'kilometers',\n cursor: 'crosshair',\n editEnable: true,\n selectEnable: true,\n };\n }\n protected abstract onDragStart(e: IInteractionTarget): void;\n\n protected abstract onDragging(e: IInteractionTarget): void;\n\n protected abstract onDragEnd(e: IInteractionTarget): void;\n\n protected abstract createFeature(e?: any): Feature;\n\n protected abstract moveFeature(e: ILngLat): void;\n\n protected abstract editFeature(e: any): void;\n\n protected abstract hideOtherLayer(): void;\n\n protected abstract showOtherLayer(): void;\n protected initData(): boolean {\n return false;\n }\n\n private addDrawPopup(lnglat: ILngLat, dis: number) {\n const popup = new Popup({\n anchor: 'left',\n closeButton: false,\n })\n .setLnglat(lnglat)\n .setText(`半径:${dis.toFixed(2)}千米`);\n this.scene.addPopup(popup);\n this.popup = popup;\n }\n\n private onModeChange = (mode: DrawModes[any]) => {\n switch (mode) {\n case DrawModes.DIRECT_SELECT:\n if (!this.editEnable) {\n return;\n }\n this.editMode.enable();\n this.editMode.setEditFeature(this.currentFeature as Feature);\n this.drawLayer.updateData(\n featureCollection([this.currentFeature as Feature]),\n );\n this.drawVertexLayer.updateData(\n featureCollection(this.currentFeature?.properties?.pointFeatures),\n );\n this.drawVertexLayer.show();\n this.drawVertexLayer.enableEdit();\n this.showOtherLayer();\n this.drawStatus = 'DrawEdit';\n break;\n case DrawModes.SIMPLE_SELECT:\n if (!this.selectEnable) {\n this.drawLayer.hide();\n this.drawVertexLayer.hide();\n this.hideOtherLayer();\n this.emit(DrawEvent.MODE_CHANGE, DrawModes.STATIC);\n return;\n }\n this.selectMode.setSelectedFeature(this.currentFeature as Feature);\n this.selectMode.enable();\n this.drawLayer.updateData(\n // TODO:导入数据不能正常使用\n featureCollection([this.currentFeature as Feature]),\n );\n this.drawLayer.enableSelect();\n this.drawVertexLayer.updateData(\n featureCollection(this.currentFeature?.properties?.pointFeatures),\n );\n this.drawVertexLayer.disableEdit();\n this.drawVertexLayer.show();\n this.drawLayer.show();\n this.showOtherLayer();\n this.drawStatus = 'DrawSelected';\n break;\n case DrawModes.STATIC:\n this.source.updateFeature(this.currentFeature as Feature);\n this.selectMode.disable();\n this.editMode.disable();\n this.source.clearFeatureActive();\n this.drawVertexLayer.hide();\n this.drawVertexLayer.disableEdit();\n this.hideOtherLayer();\n this.normalLayer.update(this.source.data);\n this.normalLayer.enableSelect();\n this.drawStatus = 'DrawFinish';\n break;\n }\n };\n\n private onDrawCreate = (feature: Feature) => {\n this.source.addFeature(feature);\n };\n\n private onDrawUpdate = (feature: Feature) => {\n this.source.updateFeature(this.currentFeature as Feature);\n this.emit(DrawEvent.UPDATE, this.currentFeature);\n };\n\n private onDrawMove = (delta: ILngLat) => {\n if (this.drawStatus === 'DrawSelected') {\n this.moveFeature(delta);\n }\n };\n\n private onDrawEdit = (endpoint: ILngLat) => {\n this.editFeature(endpoint);\n };\n\n private onDrawDelete = () => {\n if (this.drawStatus === 'DrawSelected') {\n this.clear();\n this.source.removeFeature(this.currentFeature as Feature);\n\n this.normalLayer.update(this.source.data);\n this.drawLayer.disableSelect();\n this.selectMode.disable();\n this.currentFeature = null;\n // this.drawStatus = 'DrawDelete';\n }\n };\n\n private addKeyDownEvent = (event: KeyboardEvent) => {\n // tslint:disable-next-line:no-arg\n const e = event || window.event;\n if (e && e.keyCode === 8) {\n this.deleteMode.enable();\n }\n };\n}\n","import {\n IInteractionTarget,\n ILayer,\n ILngLat,\n PointLayer,\n Scene,\n} from '@antv/l7';\nimport {\n Feature,\n featureCollection,\n Geometries,\n Properties,\n} from '@turf/helpers';\nimport { DrawEvent, DrawModes, unitsType } from '../util/constant';\nimport { createCircle, createPoint } from '../util/create_geometry';\nimport moveFeatures, { movePoint } from '../util/move_featrues';\nimport DrawFeature, { IDrawFeatureOption } from './draw_feature';\nexport default class DrawCircle extends DrawFeature {\n protected startPoint: ILngLat;\n protected endPoint: ILngLat;\n protected pointFeatures: Feature[];\n protected centerLayer: ILayer;\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n this.type = 'circle';\n }\n\n public drawFinish() {\n return null;\n }\n\n public setCurrentFeature(feature: Feature) {\n this.currentFeature = feature as Feature;\n // @ts-ignore\n this.pointFeatures = feature.properties.pointFeatures;\n // @ts-ignore\n this.startPoint = feature.properties.startPoint;\n // @ts-ignore\n this.endPoint = feature.properties.endPoint;\n this.source.setFeatureActive(feature);\n }\n\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '绘制圆',\n };\n }\n\n protected onDragStart = (e: IInteractionTarget) => {\n if (this.drawStatus !== 'Drawing') {\n this.drawLayer.emit('unclick', null);\n }\n this.startPoint = e.lngLat;\n this.setCursor('grabbing');\n this.initCenterLayer();\n this.centerLayer.setData([this.startPoint]);\n };\n\n protected onDragging = (e: IInteractionTarget) => {\n this.endPoint = e.lngLat;\n const feature = this.createFeature() as Feature<Geometries, Properties>;\n const properties = feature.properties as { pointFeatures: Feature[] };\n this.drawLayer.update(featureCollection([feature]));\n this.drawVertexLayer.update(featureCollection(properties.pointFeatures));\n };\n\n protected onDragEnd = () => {\n const feature = this.createFeature(`${this.getUniqId()}`);\n const properties = feature.properties as { pointFeatures: Feature[] };\n this.drawLayer.update(featureCollection([feature]));\n this.drawVertexLayer.update(featureCollection(properties.pointFeatures));\n this.emit(DrawEvent.CREATE, this.currentFeature);\n this.emit(DrawEvent.MODE_CHANGE, DrawModes.SIMPLE_SELECT);\n this.disable();\n };\n\n protected moveFeature(delta: ILngLat): void {\n const newFeature = moveFeatures([this.currentFeature as Feature], delta);\n this.drawLayer.updateData(featureCollection(newFeature));\n const newPointFeture = moveFeatures(this.pointFeatures, delta);\n this.drawVertexLayer.updateData(featureCollection(newPointFeture));\n const newStartPoint = movePoint(\n [this.startPoint.lng, this.startPoint.lat],\n delta,\n );\n this.startPoint = {\n lat: newStartPoint[1],\n lng: newStartPoint[0],\n };\n const newEndPoint = movePoint(\n [this.endPoint.lng, this.endPoint.lat],\n delta,\n );\n const endPointObj = {\n lat: newEndPoint[1],\n lng: newEndPoint[0],\n };\n newFeature[0].properties = {\n ...newFeature[0].properties,\n startPoint: this.startPoint,\n endPoint: endPointObj,\n pointFeatures: newPointFeture,\n };\n this.centerLayer.setData([this.startPoint]);\n this.setCurrentFeature(newFeature[0]);\n const changeFeature = {\n ...newFeature[0],\n };\n this.emit(DrawEvent.CHANGE, changeFeature);\n }\n\n protected createFeature(id: string = '0'): Feature {\n const points = createPoint([this.endPoint]);\n const feature = createCircle(\n [this.startPoint.lng, this.startPoint.lat],\n [this.endPoint.lng, this.endPoint.lat],\n {\n pointFeatures: points.features,\n units: this.getOption('units'),\n steps: this.getOption('steps'),\n id,\n },\n );\n this.setCurrentFeature(feature as Feature);\n return feature;\n }\n\n protected editFeature(endPoint: ILngLat): void {\n this.endPoint = endPoint;\n const newFeature = this.createFeature();\n const properties = newFeature.properties as { pointFeatures: Feature[] };\n this.drawLayer.updateData(featureCollection([newFeature]));\n this.drawVertexLayer.updateData(\n featureCollection(properties.pointFeatures),\n );\n this.emit(DrawEvent.CHANGE, featureCollection([newFeature]).features[0]);\n }\n\n protected showOtherLayer() {\n this.centerLayer.setData([this.currentFeature?.properties?.startPoint]);\n this.centerLayer.show();\n }\n\n protected hideOtherLayer() {\n if (this.currentFeature) {\n this.centerLayer.hide();\n }\n }\n\n private initCenterLayer() {\n const centerStyle = this.getStyle('active').point;\n const layer = new PointLayer()\n .source([this.startPoint], {\n parser: {\n type: 'json',\n x: 'lng',\n y: 'lat',\n },\n })\n .shape('circle')\n .color(centerStyle.color)\n .size(centerStyle.size)\n .style(centerStyle.style);\n this.scene.addLayer(layer);\n this.centerLayer = layer;\n }\n}\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { getCoord } from '@turf/invariant';\nimport { degreesToRadians, isObject, radiansToDegrees } from '@turf/helpers';\n\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nfunction bearing(start, end, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var final = options.final;\n\n // Reverse calculation\n if (final === true) return calculateFinalBearing(start, end);\n\n var coordinates1 = getCoord(start);\n var coordinates2 = getCoord(end);\n\n var lon1 = degreesToRadians(coordinates1[0]);\n var lon2 = degreesToRadians(coordinates2[0]);\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n var b = Math.cos(lat1) * Math.sin(lat2) -\n Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n\n return radiansToDegrees(Math.atan2(a, b));\n}\n\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n // Swap start & end\n var bear = bearing(end, start);\n bear = (bear + 180) % 360;\n return bear;\n}\n\nexport default bearing;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { getCoord } from '@turf/invariant';\nimport { degreesToRadians, isObject, lengthToRadians, point, radiansToDegrees } from '@turf/helpers';\n\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in degrees, radians, miles, or kilometers; and bearing in degrees. This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature<Point>} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nfunction destination(origin, distance, bearing, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var properties = options.properties;\n\n // Handle input\n var coordinates1 = getCoord(origin);\n var longitude1 = degreesToRadians(coordinates1[0]);\n var latitude1 = degreesToRadians(coordinates1[1]);\n var bearing_rad = degreesToRadians(bearing);\n var radians = lengthToRadians(distance, units);\n\n // Main\n var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearing_rad));\n var longitude2 = longitude1 + Math.atan2(Math.sin(bearing_rad) * Math.sin(radians) * Math.cos(latitude1),\n Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n var lng = radiansToDegrees(longitude2);\n var lat = radiansToDegrees(latitude2);\n\n return point([lng, lat], properties);\n}\n\nexport default destination;\n","import { getCoord } from '@turf/invariant';\nimport { degreesToRadians, isObject, radiansToLength } from '@turf/helpers';\n\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians,\n * miles, or kilometers. This uses the\n * [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula)\n * to account for global curvature.\n *\n * @name distance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n\n var coordinates1 = getCoord(from);\n var coordinates2 = getCoord(to);\n var dLat = degreesToRadians((coordinates2[1] - coordinates1[1]));\n var dLon = degreesToRadians((coordinates2[0] - coordinates1[0]));\n var lat1 = degreesToRadians(coordinates1[1]);\n var lat2 = degreesToRadians(coordinates2[1]);\n\n var a = Math.pow(Math.sin(dLat / 2), 2) +\n Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n\n return radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), units);\n}\n\nexport default distance;\n","import bearing from '@turf/bearing';\nimport destination from '@turf/destination';\nimport distance from '@turf/distance';\n\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Coord} point1 first point\n * @param {Coord} point2 second point\n * @returns {Feature<Point>} a point midway between `pt1` and `pt2`\n * @example\n * var point1 = turf.point([144.834823, -37.771257]);\n * var point2 = turf.point([145.14244, -37.830937]);\n *\n * var midpoint = turf.midpoint(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2, midpoint];\n * midpoint.properties['marker-color'] = '#f00';\n */\nfunction midpoint(point1, point2) {\n var dist = distance(point1, point2);\n var heading = bearing(point1, point2);\n var midpoint = destination(point1, dist / 2, heading);\n\n return midpoint;\n}\n\nexport default midpoint;\n","import {\n feature,\n Feature,\n featureCollection,\n FeatureCollection,\n Point,\n Properties,\n} from '@turf/helpers';\nimport midPoint from '@turf/midpoint';\nimport BaseRender from './base_render';\nimport { renderFeature } from './renderFeature';\nexport default class DrawVertexLayer extends BaseRender {\n public update(pointFeatures: FeatureCollection) {\n this.removeLayers();\n const midFeatures = this.calcMidPointData(pointFeatures);\n const style = this.draw.getStyle('mid_point');\n this.drawLayers = renderFeature(midFeatures, style);\n this.addLayers();\n this.enableEdit();\n }\n public updateData(data: any) {\n const midFeatures = this.calcMidPointData(data);\n this.drawLayers.forEach(layer => layer.setData(midFeatures));\n }\n public enableEdit() {\n const layer = this.drawLayers[0];\n layer.on('mouseenter', this.onMouseEnter);\n layer.on('mouseout', this.onMouseOut);\n layer.on('click', this.onClick);\n }\n\n public disableEdit() {\n const layer = this.drawLayers[0];\n layer.off('mouseenter', this.onMouseEnter);\n layer.off('mouseout', this.onMouseOut);\n layer.off('click', this.onClick);\n }\n\n private onMouseEnter = (e: any) => {\n this.draw.setCursor('pointer');\n };\n private onMouseOut = (e: any) => {\n this.draw.resetCursor();\n };\n private onClick = (e: any) => {\n this.draw.addVertex(e.feature);\n // 添加一个顶点 1.更新顶点 2.更新重点\n };\n\n private calcMidPointData(fe: FeatureCollection) {\n const midFeatures: Feature[] = [];\n fe.features.forEach((item, index) => {\n const preFeature = (item as unknown) as Feature<Point, Properties>;\n if (this.draw.type === 'line' && index === fe.features.length - 1) {\n return;\n }\n const nextFeature =\n index !== fe.features.length - 1\n ? ((fe.features[index + 1] as unknown) as Feature<Point, Properties>)\n : ((fe.features[0] as unknown) as Feature<Point, Properties>);\n // @ts-ignore\n const point = midPoint(preFeature, nextFeature) as Feature<\n Point,\n Properties\n >;\n // @ts-ignore\n point.properties.id = index;\n midFeatures.push(point);\n });\n return featureCollection(midFeatures);\n }\n}\n","import { IInteractionTarget, ILayer, ILngLat, Scene } from '@antv/l7';\nimport {\n Feature,\n FeatureCollection,\n featureCollection,\n Geometries,\n point,\n Position,\n Properties,\n} from '@turf/helpers';\nimport DrawMidVertex from '../render/draw_mid_vertex';\nimport { DrawEvent, DrawModes, unitsType } from '../util/constant';\nimport { createPoint, createPolygon } from '../util/create_geometry';\nimport moveFeatures from '../util/move_featrues';\nimport DrawFeature, { IDrawFeatureOption } from './draw_feature';\nexport interface IDrawRectOption extends IDrawFeatureOption {\n units: unitsType;\n steps: number;\n}\nexport default class DrawPolygon extends DrawFeature {\n protected startPoint: ILngLat;\n protected endPoint: ILngLat;\n protected points: ILngLat[] = [];\n protected pointFeatures: Feature[];\n protected drawMidVertexLayer: DrawMidVertex;\n\n constructor(scene: Scene, options: Partial<IDrawRectOption> = {}) {\n super(scene, options);\n this.type = 'polygon';\n this.drawMidVertexLayer = new DrawMidVertex(this);\n this.on(DrawEvent.MODE_CHANGE, this.addMidLayerEvent);\n }\n public enable() {\n super.enable();\n this.scene.on('mousemove', this.onMouseMove);\n this.scene.on('dblclick', this.onDblClick);\n // 关闭双击放大\n }\n\n public disable() {\n super.disable();\n this.scene.off('mousemove', this.onMouseMove);\n this.scene.off('dblclick', this.onDblClick);\n }\n\n public drawFinish() {\n this.points = this.points.reverse();\n const feature = this.createFeature(this.points);\n const properties = feature.properties as { pointFeatures: Feature[] };\n this.drawLayer.update(featureCollection([feature]));\n this.drawVertexLayer.update(featureCollection(properties.pointFeatures));\n // @ts-ignore\n this.emit(DrawEvent.CREATE, this.currentFeature);\n this.emit(DrawEvent.MODE_CHANGE, DrawModes.SIMPLE_SELECT);\n this.points = [];\n this.disable();\n }\n\n public addVertex(vertex: Feature<Geometries, Properties>) {\n // @ts-ignore\n const id = vertex.properties.id;\n const coord = vertex?.geometry?.coordinates as Position;\n const feature = this.currentFeature as Feature<Geometries, Properties>;\n const type = feature?.geometry?.type;\n const points = [];\n if (type === 'Polygon') {\n const coords = feature?.geometry?.coordinates as Position[][];\n coords[0].splice(id + 1, 0, coord);\n for (let i = 0; i < coords[0].length - 1; i++) {\n points.push({\n lng: coords[0][i][0],\n lat: coords[0][i][1],\n });\n }\n } else {\n const coords = feature?.geometry?.coordinates as Position[];\n coords.splice(id + 1, 0, coord);\n for (const coor of coords) {\n points.push({\n lng: coor[0],\n lat: coor[1],\n });\n }\n }\n const pointfeatures = createPoint(points);\n this.pointFeatures = pointfeatures.features;\n this.drawLayer.updateData(featureCollection([feature]));\n this.drawVertexLayer.updateData(pointfeatures);\n this.drawMidVertexLayer.updateData(featureCollection(this.pointFeatures));\n // @ts-ignore\n feature.properties.pointFeatures = pointfeatures.features;\n this.setCurrentFeature(feature);\n }\n\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '绘制多边形',\n };\n }\n protected onDragStart = (e: IInteractionTarget) => {\n return null;\n };\n protected onDragging = (e: IInteractionTarget) => {\n return null;\n };\n\n protected onDragEnd = () => {\n return null;\n };\n\n protected onClick = (e: any) => {\n if (this.drawStatus !== 'Drawing') {\n this.drawLayer.emit('unclick', null);\n }\n const lngLat = e.lngLat || e.lnglat;\n this.endPoint = lngLat;\n this.points.push(lngLat);\n const feature = this.createFeature(this.points);\n const pointfeatures = createPoint([this.points[0], this.endPoint]);\n this.drawLayer.update(featureCollection([feature]));\n this.drawVertexLayer.update(featureCollection(pointfeatures.features));\n this.onDraw();\n };\n\n protected onMouseMove = (e: any) => {\n const lngLat = e.lngLat || e.lnglat;\n if (this.points.length === 0) {\n return;\n }\n const tmpPoints = this.points.slice();\n tmpPoints.push(lngLat);\n const feature = this.createFeature(tmpPoints);\n this.drawLayer.update(featureCollection([feature]));\n };\n\n protected onDblClick = (e: any) => {\n const lngLat = e.lngLat || e.lnglat;\n if (this.points.length < 2) {\n return;\n }\n this.points.push(lngLat);\n this.drawFinish();\n };\n\n protected moveFeature(delta: ILngLat): void {\n const newFeature = moveFeatures([this.currentFeature as Feature], delta);\n const newPointFeture = moveFeatures(this.pointFeatures, delta);\n this.drawLayer.updateData(featureCollection(newFeature));\n this.drawVertexLayer.updateData(featureCollection(newPointFeture));\n newFeature[0].properties = {\n ...newFeature[0].properties,\n pointFeatures: newPointFeture,\n };\n this.setCurrentFeature(newFeature[0]);\n }\n protected createFeature(\n points: ILngLat[],\n id?: string,\n active: boolean = true,\n ): Feature {\n const pointfeatures = createPoint(points);\n this.pointFeatures = pointfeatures.features;\n const feature = createPolygon(points, {\n id: id || this.getUniqId(),\n type: 'polygon',\n active,\n pointFeatures: this.pointFeatures,\n });\n this.setCurrentFeature(feature as Feature);\n return feature;\n }\n\n protected editFeature(vertex: ILngLat): void {\n const selectVertexed = this.currentVertex as Feature<\n Geometries,\n Properties\n >;\n if (selectVertexed === null) {\n return;\n } else {\n // @ts-ignore\n const id = selectVertexed.properties.id * 1;\n // @ts-ignore\n selectVertexed.geometry.coordinates = [vertex.lng, vertex.lat];\n // @ts-ignore\n this.pointFeatures[id].geometry.coordinates = [vertex.lng, vertex.lat];\n this.drawVertexLayer.updateData(featureCollection(this.pointFeatures));\n this.drawMidVertexLayer.updateData(featureCollection(this.pointFeatures));\n this.editPolygonVertex(id, vertex);\n this.drawLayer.updateData(\n featureCollection([this.currentFeature as Feature]),\n );\n const feature = this.currentFeature as Feature;\n feature.properties = {\n ...this.currentFeature?.properties,\n pointFeatures: this.pointFeatures,\n };\n this.setCurrentFeature(feature);\n }\n }\n\n protected onDraw = () => {\n this.drawVertexLayer.on('mousemove', (e: any) => {\n this.setCursor('pointer');\n });\n this.drawVertexLayer.on('mouseout', () => {\n this.setCursor('crosshair');\n });\n this.drawVertexLayer.on('click', () => {\n this.resetCursor();\n this.drawFinish();\n });\n };\n\n protected showOtherLayer() {\n // if (this.editMode.isEnable) {\n // this.drawMidVertexLayer.update(featureCollection(this.pointFeatures));\n // this.drawMidVertexLayer.show();\n // }\n return null;\n }\n\n protected hideOtherLayer() {\n return null;\n }\n\n protected addMidLayerEvent(mode: DrawModes[any]) {\n switch (mode) {\n case DrawModes.DIRECT_SELECT:\n this.drawMidVertexLayer.update(featureCollection(this.pointFeatures));\n this.drawMidVertexLayer.show();\n break;\n case DrawModes.STATIC:\n this.drawMidVertexLayer.hide();\n break;\n }\n }\n protected initData(): boolean {\n const features: Feature[] = [];\n this.source.data.features.forEach(feature => {\n if (feature.geometry.type === 'Polygon') {\n const points = (feature.geometry.coordinates[0] as Position[]).map(\n coord => {\n return {\n lng: coord[0],\n lat: coord[1],\n };\n },\n );\n features.push(\n this.createFeature(points.slice(1), feature?.properties?.id, false),\n );\n }\n });\n this.source.data.features = features;\n return true;\n }\n\n private editPolygonVertex(id: number, vertex: ILngLat) {\n const feature = this.currentFeature as Feature<Geometries, Properties>;\n const type = feature?.geometry?.type;\n if (type === 'Polygon') {\n const coords = feature?.geometry?.coordinates as Position[][];\n coords[0][id] = [vertex.lng, vertex.lat];\n if (-id === 0) {\n coords[0][coords[0].length - 1] = [vertex.lng, vertex.lat];\n }\n } else {\n const coords = feature?.geometry?.coordinates as Position[];\n coords[id] = [vertex.lng, vertex.lat];\n }\n this.setCurrentFeature(feature);\n this.drawLayer.updateData(\n featureCollection([this.currentFeature as Feature]),\n );\n }\n}\n/**\n * draw 端点响应事件\n * select Polyon 响应事件\n * edit 端点 中心点响应事件\n */\n","import { ILngLat, Scene } from '@antv/l7';\nimport { Feature, featureCollection } from '@turf/helpers';\nimport { unitsType } from '../util/constant';\nimport { createLine, createPoint } from '../util/create_geometry';\nimport moveFeatures from '../util/move_featrues';\nimport { IDrawFeatureOption } from './draw_feature';\nimport DrawPolygon from './draw_polygon';\nexport interface IDrawRectOption extends IDrawFeatureOption {\n units: unitsType;\n steps: number;\n}\nexport default class DrawLine extends DrawPolygon {\n constructor(scene: Scene, options: Partial<IDrawRectOption> = {}) {\n super(scene, options);\n this.type = 'line';\n }\n\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '绘制线',\n };\n }\n protected moveFeature(delta: ILngLat): Feature {\n const newFeature = moveFeatures([this.currentFeature as Feature], delta);\n const newPointFeture = moveFeatures(this.pointFeatures, delta);\n this.drawLayer.updateData(featureCollection(newFeature));\n this.drawVertexLayer.updateData(featureCollection(newPointFeture));\n this.currentFeature = newFeature[0];\n this.pointFeatures = newPointFeture;\n return this.currentFeature;\n }\n protected createFeature(\n points: ILngLat[],\n id?: string,\n active: boolean = true,\n ): Feature {\n const pointfeatures = createPoint(points);\n this.pointFeatures = pointfeatures.features;\n const feature = createLine(points, {\n id: id || this.getUniqId(),\n type: 'line',\n active,\n pointFeatures: this.pointFeatures,\n });\n this.setCurrentFeature(feature as Feature);\n return feature;\n }\n protected initData(): boolean {\n const features: Feature[] = [];\n this.source.data.features.forEach(feature => {\n if (feature.geometry.type === 'LineString') {\n // @ts-ignore\n const points = feature.geometry.coordinates.map(coord => {\n return {\n lng: coord[0],\n lat: coord[1],\n };\n });\n features.push(\n this.createFeature(points, feature?.properties?.id, false),\n );\n }\n });\n this.source.data.features = features;\n return true;\n }\n}\n","import { IInteractionTarget, ILayer, ILngLat, Scene } from '@antv/l7';\nimport { Feature, featureCollection, point } from '@turf/helpers';\nimport { DrawEvent, DrawModes, unitsType } from '../util/constant';\nimport moveFeatures from '../util/move_featrues';\nimport DrawFeature, { IDrawFeatureOption } from './draw_feature';\nexport default class DrawPoint extends DrawFeature {\n protected pointFeatures: Feature[];\n\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n this.type = 'point';\n }\n public drawFinish() {\n this.emit(DrawEvent.CREATE, this.currentFeature);\n this.emit(DrawEvent.MODE_CHANGE, DrawModes.SIMPLE_SELECT);\n this.disable();\n }\n\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '绘制点',\n };\n }\n\n protected onDragStart = (e: IInteractionTarget) => {\n return null;\n };\n protected onDragging = (e: IInteractionTarget) => {\n return null;\n };\n\n protected onDragEnd = () => {\n return null;\n };\n\n protected onClick = (e: any) => {\n if (this.drawStatus !== 'Drawing') {\n this.drawLayer.emit('unclick', null);\n }\n const lngLat = e.lngLat || e.lnglat;\n const feature = this.createFeature(lngLat);\n this.drawLayer.update(featureCollection([feature]));\n this.drawVertexLayer.update(featureCollection([feature]));\n this.drawFinish();\n };\n\n protected moveFeature(delta: ILngLat): Feature {\n const newFeature = moveFeatures([this.currentFeature as Feature], delta);\n this.drawLayer.updateData(featureCollection(newFeature));\n this.drawVertexLayer.updateData(featureCollection(newFeature));\n this.currentFeature = newFeature[0];\n this.pointFeatures = newFeature;\n this.currentFeature.properties = {\n ...this.currentFeature.properties,\n pointFeatures: newFeature,\n };\n return this.currentFeature;\n }\n protected createFeature(\n p: ILngLat,\n id?: string,\n active: boolean = true,\n ): Feature {\n const feature = point([p.lng, p.lat], {\n id: id || this.getUniqId(),\n type: 'point',\n active,\n pointFeatures: [point([p.lng, p.lat])],\n });\n this.setCurrentFeature(feature as Feature);\n return feature;\n }\n protected initData(): boolean {\n const features: Feature[] = [];\n this.source.data.features.forEach(feature => {\n if (feature.geometry.type === 'Point') {\n const p = {\n lng: feature.geometry.coordinates[0] as number,\n lat: feature.geometry.coordinates[1] as number,\n };\n features.push(this.createFeature(p, feature?.properties?.id, false));\n }\n });\n this.source.data.features = features;\n return true;\n }\n\n protected editFeature(endPoint: ILngLat): void {\n this.createFeature(endPoint);\n }\n\n protected showOtherLayer() {\n return null;\n }\n\n protected hideOtherLayer() {\n return null;\n }\n}\n","import { Scene } from '@antv/l7';\nimport {\n Feature,\n FeatureCollection,\n featureCollection,\n point,\n} from '@turf/helpers';\nimport { unitsType } from '../util/constant';\nimport { createPoint, createRect } from '../util/create_geometry';\nimport DrawCircle from './draw_circle';\nimport { IDrawFeatureOption } from './draw_feature';\nexport default class DrawRect extends DrawCircle {\n constructor(scene: Scene, options: Partial<IDrawFeatureOption> = {}) {\n super(scene, options);\n this.type = 'rect';\n }\n public drawFinish() {\n return null;\n }\n protected getDefaultOptions(): Partial<IDrawFeatureOption> {\n return {\n ...super.getDefaultOptions(),\n title: '绘制矩形',\n };\n }\n\n protected createFeature(id: string = '0'): Feature {\n const points = createPoint([this.endPoint]);\n const feature = createRect(\n [this.startPoint.lng, this.startPoint.lat],\n [this.endPoint.lng, this.endPoint.lat],\n {\n id,\n pointFeatures: points.features,\n },\n );\n this.setCurrentFeature(feature as Feature);\n return feature;\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/*\n * @Author: lzxue\n * @Date: 2020-04-03 19:24:16\n * @Last Modified by: lzxue\n * @Last Modified time: 2020-06-22 17:33:14\n */\nimport { Control, DOM, IControlOption, PositionType, Scene } from '@antv/l7';\nimport './css/draw.less';\nimport {\n DrawCircle,\n DrawDelete,\n DrawFeature,\n DrawLine,\n DrawPoint,\n DrawPolygon,\n DrawRect,\n} from './modes';\nimport { IDrawFeatureOption } from './modes/draw_feature';\nconst DrawType: {\n [key: string]: any;\n} = {\n point: DrawPoint,\n line: DrawLine,\n polygon: DrawPolygon,\n circle: DrawCircle,\n rect: DrawRect,\n};\nimport { isObject, polygon } from '@turf/helpers';\nimport { DrawEvent, DrawModes } from './util/constant';\nexport interface IControls {\n [key: string]: boolean | IDrawFeatureOption;\n}\n\nexport interface IDrawControlOption extends IControlOption {\n pickBuffer: number;\n controls: IControls;\n layout: 'horizontal' | 'vertical';\n style: any;\n}\nexport class DrawControl extends Control {\n private draw: {\n [key: string]: DrawFeature;\n } = {};\n private currentDraw: DrawFeature;\n private scene: Scene;\n constructor(scene: Scene, options: Partial<IDrawControlOption>) {\n super(options);\n this.scene = scene;\n }\n\n public getDefault() {\n return {\n position: PositionType.TOPLEFT,\n controls: {\n point: true,\n line: true,\n polygon: true,\n rect: true,\n circle: true,\n delete: true,\n },\n name: 'draw',\n };\n }\n\n public onAdd(): HTMLElement {\n const { layout } = this.controlOption;\n const controlClass = 'l7-control-draw' + ' ' + layout;\n const { controls } = this.controlOption as IDrawControlOption;\n const container = DOM.create('div', controlClass) as HTMLElement;\n this.addControls(controls, container);\n\n // 代理每个绘制组件的事件\n\n this.addControlEvent();\n // 监听组件 选中, 编辑\n return container;\n }\n\n public onRemove() {\n for (const draw in this.draw) {\n if (this.draw[draw]) {\n this.draw[draw].destroy();\n }\n }\n }\n\n public getDraw(type: string): DrawFeature | null {\n const { controls } = this.controlOption as IDrawControlOption;\n if (controls[type]) {\n return this.draw[type];\n }\n return null;\n }\n\n public getAllData() {\n const res: { [key: string]: any } = {};\n for (const draw in this.draw) {\n if (this.draw[draw]) {\n res[draw] = this.draw[draw].getData();\n }\n }\n return res;\n }\n public removeAllData() {\n for (const draw in this.draw) {\n if (this.draw[draw]) {\n this.draw[draw].removeAllData();\n }\n }\n }\n\n private addControls(controls: IControls, container: HTMLElement) {\n const { style } = this.controlOption as IDrawControlOption;\n for (const type in controls) {\n if (DrawType[type] && controls[type] !== false) {\n const drawOption: Partial<IDrawFeatureOption> = isObject(controls[type])\n ? (controls[type] as Partial<IDrawFeatureOption>)\n : {};\n if (style) {\n drawOption.style = style;\n }\n const draw = new DrawType[type](this.scene, drawOption);\n draw.on(DrawEvent.MODE_CHANGE, this.onModeChange.bind(null, type));\n this.draw[type] = draw;\n this.createButton(\n draw.title,\n 'draw-' + type,\n container,\n 'click',\n this.onButtonClick.bind(null, type),\n );\n } else if (type === 'delete' && controls[type] !== false) {\n const draw = new DrawDelete(this.scene);\n draw.on(DrawEvent.MODE_CHANGE, this.onModeChange.bind(null, type));\n this.createButton(\n draw.title,\n 'draw-' + type,\n container,\n 'mousedown',\n this.onDeleteMode.bind(null, type),\n );\n }\n }\n }\n\n private addControlEvent() {\n for (const draw in this.draw) {\n if (this.draw[draw]) {\n ['draw.create', 'draw.update', 'draw.delete'].forEach(\n (type: string) => {\n this.draw[draw].on(type, feature => {\n this.emit(type, {\n drawType: draw,\n feature,\n });\n });\n },\n );\n }\n }\n }\n private createButton(\n tile: string,\n className: string,\n container: HTMLElement,\n eventType: string,\n fn: (...arg: any[]) => any,\n ) {\n const link = DOM.create('button', className, container);\n link.title = tile;\n link.addEventListener(eventType, fn, false);\n return link;\n }\n\n private onButtonClick = (type: string, e: MouseEvent) => {\n for (const draw in this.draw) {\n if (draw === type) {\n this.draw[draw].enable();\n } else {\n this.draw[draw].disable();\n }\n }\n };\n\n private onDeleteMode = (type: string, e: MouseEvent) => {\n e.stopPropagation();\n if (!this.currentDraw) {\n return;\n }\n this.currentDraw.deleteMode.enable();\n return false;\n };\n\n private onModeChange = (type: string, mode: string) => {\n if (mode === DrawModes.SIMPLE_SELECT) {\n this.currentDraw = this.draw[type];\n }\n };\n}\n"],"names":["DrawEvent","DrawModes","FeatureType","helpers_1","invariant_1","createCircle","center","endPoint","options","radius","turfDistance","point","feature","turfCircle","units","steps","properties","active","type","startPoint","lng","lat","createRect","minX","Math","min","minY","maxX","max","maxY","geometry","coordinates","createPolygon","points","coords","map","p","length","lineString","push","polygon","createLine","createPoint","features","index","id","toString","featureCollection","delta","forEach","nextCoord","POINT","movePoint","LINE_STRING","MULTI_POINT","moveRing","POLYGON","MULTI_LINE_STRING","moveMultiPolygon","MULTI_POLYGON","mult","coord","ring","renderFeature","fe","style","layers","drawPoint","drawLine","line","drawPolyon","layer","PointLayer","zIndex","pickingBuffer","source","shape","color","size","LineLayer","fill","PolygonLayer","opacity","stroke","strokeWidth","strokeOpacity","lineType","dashArray","BaseRenderLayer","draw","drawLayers","updateData","removeLayers","getStyle","addLayers","handler","on","off","e","emit","data","update","setData","scene","removeLayer","addLayer","show","hide","DrawLayer","setCursor","selectMode","enable","resetCursor","disable","editMode","disableSelect","enableEdit","setCurrentFeature","MODE_CHANGE","DIRECT_SELECT","setFeatureUnActive","getCurrentFeature","disableEdit","STATIC","isEnableDrag","onMouseMove","onUnMouseMove","editEnable","onClick","onUnClick","isEnableEdit","BaseRender","DrawResultLayer","setFeatureActive","SIMPLE_SELECT","removeFeature","addFilter","selectEnable","onDeleteClick","filter","DrawVertexLayer","setCurrentVertex","onMouseEnter","onMouseOut","eq","assocIndexOf","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","global","freeGlobal","Symbol","root","objectProto","nativeObjectToString","symToStringTag","getRawTag","objectToString","isObject","baseGetTag","coreJsData","funcProto","funcToString","hasOwnProperty","isMasked","isFunction","toSource","getValue","baseIsNative","getNative","nativeCreate","HASH_UNDEFINED","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","Map","isKeyable","getMapData","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","stackClear","stackDelete","stackGet","stackHas","stackSet","defineProperty","baseAssignValue","createBaseFor","Uint8Array","cloneArrayBuffer","overArg","isPrototype","baseCreate","getPrototype","isObjectLike","baseIsArguments","isLength","isArrayLike","stubFalse","argsTag","funcTag","objectTag","nodeUtil","baseUnary","baseIsTypedArray","assignValue","MAX_SAFE_INTEGER","isArray","isArguments","isBuffer","isTypedArray","baseTimes","isIndex","nativeKeysIn","arrayLikeKeys","baseKeysIn","copyObject","keysIn","safeGet","assignMergeValue","isArrayLikeObject","copyArray","cloneBuffer","cloneTypedArray","isPlainObject","toPlainObject","initCloneObject","baseFor","Stack","baseMergeDeep","apply","identity","constant","shortOut","baseSetToString","setToString","overRest","baseRest","isIterateeCall","createAssigner","baseMerge","nativeKeys","baseKeys","keys","propertyIsEnumerable","stubArray","arrayFilter","getSymbols","nativeGetSymbols","arrayPush","getSymbolsIn","baseGetAllKeys","mapTag","setTag","weakMapTag","dataViewTag","DataView","Promise","Set","WeakMap","boolTag","dateTag","numberTag","regexpTag","stringTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","cloneDataView","cloneRegExp","cloneSymbol","getTag","baseIsMap","baseIsSet","arrayTag","errorTag","genTag","symbolTag","initCloneArray","copySymbolsIn","baseAssignIn","copySymbols","baseAssign","initCloneByTag","isSet","isMap","getAllKeysIn","getAllKeys","arrayEach","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","baseClone","DrawSource","getDefaultData","cloneDeep","result","find","getFeatureIndex","undefined","splice","getFeature","addFeature","findIndex","LayerStyles","normal","normal_point","mid_point","DrawFeatureId","DrawMode","merge","getDefaultOptions","title","getOption","isEnable","setMapStatus","dragEnable","onDragStart","onDragging","onDragEnd","currentFeature","currentVertex","Error","key","cursor","container","getMapCanvasContainer","removeAttribute","removeAllListeners","EventEmitter","DrawDelete","DELETE","DrawFeature","DrawEdit","lngLat","Edit","UPDATE","DrawSelect","dragStartPoint","Move","mode","setEditFeature","drawLayer","drawVertexLayer","pointFeatures","showOtherLayer","drawStatus","hideOtherLayer","setSelectedFeature","enableSelect","updateFeature","clearFeatureActive","normalLayer","moveFeature","endpoint","editFeature","clear","event","window","keyCode","deleteMode","DrawRender","RenderLayer","DrawSelected","onDrawUpdate","onDrawMove","onModeChange","onDrawEdit","onDrawDelete","CREATE","onDrawCreate","document","addEventListener","addKeyDownEvent","initData","getData","removeAllFeatures","destroy","removeEventListener","lnglat","dis","popup","Popup","anchor","closeButton","setLnglat","setText","toFixed","addPopup","DrawCircle","initCenterLayer","centerLayer","createFeature","getUniqId","newFeature","moveFeatures","newPointFeture","newStartPoint","newEndPoint","endPointObj","changeFeature","CHANGE","centerStyle","parser","x","y","radiansToDegrees","degreesToRadians","getCoord","addVertex","midFeatures","calcMidPointData","item","preFeature","nextFeature","midPoint","DrawPolygon","pointfeatures","onDraw","tmpPoints","slice","drawFinish","drawMidVertexLayer","DrawMidVertex","addMidLayerEvent","onDblClick","reverse","vertex","i","coor","selectVertexed","editPolygonVertex","DrawLine","DrawPoint","DrawRect","DrawType","circle","rect","DrawControl","stopPropagation","currentDraw","position","PositionType","TOPLEFT","controls","delete","name","layout","controlOption","controlClass","DOM","create","addControls","addControlEvent","res","removeAllData","drawOption","bind","createButton","onButtonClick","onDeleteMode","drawType","tile","className","eventType","fn","link","Control"],"mappings":"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"}
\No newline at end of file