{"version":3,"file":"mapbox-gl-draw-unminified.js","sources":["../src/lib/mode_handler.js","../node_modules/wgs84/index.js","../node_modules/@mapbox/geojson-area/index.js","../src/constants.js","../src/lib/sort_features.js","../src/lib/map_event_to_bounding_box.js","../src/lib/string_set.js","../src/lib/features_at.js","../src/lib/get_features_and_set_cursor.js","../src/lib/euclidean_distance.js","../src/lib/is_click.js","../src/lib/is_tap.js","../node_modules/hat/index.js","../src/feature_types/feature.js","../src/feature_types/point.js","../src/feature_types/line_string.js","../src/feature_types/polygon.js","../src/feature_types/multi_feature.js","../src/modes/mode_interface_accessors.js","../src/modes/mode_interface.js","../src/modes/object_to_mode.js","../src/events.js","../src/lib/to_dense_array.js","../src/render.js","../src/store.js","../node_modules/xtend/immutable.js","../src/ui.js","../src/setup.js","../src/lib/theme.js","../src/lib/common_selectors.js","../node_modules/@mapbox/point-geometry/index.js","../src/lib/mouse_event_point.js","../src/lib/create_vertex.js","../src/lib/create_midpoint.js","../src/lib/create_supplementary_points.js","../src/lib/double_click_zoom.js","../node_modules/@mapbox/geojson-normalize/index.js","../node_modules/geojson-flatten/dist/index.es.js","../node_modules/@mapbox/geojson-coords/flatten.js","../node_modules/@mapbox/geojson-coords/index.js","../node_modules/traverse/index.js","../node_modules/@mapbox/extent/index.js","../node_modules/@mapbox/geojson-extent/index.js","../src/lib/constrain_feature_movement.js","../src/lib/move_features.js","../src/modes/simple_select.js","../src/modes/direct_select.js","../src/modes/draw_point.js","../src/lib/is_event_at_coordinates.js","../src/modes/draw_polygon.js","../src/modes/draw_line_string.js","../src/modes/index.js","../src/options.js","../node_modules/lodash.isequal/index.js","../src/lib/string_sets_are_equal.js","../src/api.js","../index.js"],"sourcesContent":["\nconst ModeHandler = function(mode, DrawContext) {\n\n const handlers = {\n drag: [],\n click: [],\n mousemove: [],\n mousedown: [],\n mouseup: [],\n mouseout: [],\n keydown: [],\n keyup: [],\n touchstart: [],\n touchmove: [],\n touchend: [],\n tap: []\n };\n\n const ctx = {\n on(event, selector, fn) {\n if (handlers[event] === undefined) {\n throw new Error(`Invalid event type: ${event}`);\n }\n handlers[event].push({\n selector,\n fn\n });\n },\n render(id) {\n DrawContext.store.featureChanged(id);\n }\n };\n\n const delegate = function (eventName, event) {\n const handles = handlers[eventName];\n let iHandle = handles.length;\n while (iHandle--) {\n const handle = handles[iHandle];\n if (handle.selector(event)) {\n const skipRender = handle.fn.call(ctx, event);\n if (!skipRender) {\n DrawContext.store.render();\n }\n DrawContext.ui.updateMapClasses();\n\n // ensure an event is only handled once\n // we do this to let modes have multiple overlapping selectors\n // and relay on order of oppertations to filter\n break;\n }\n }\n };\n\n mode.start.call(ctx);\n\n return {\n render: mode.render,\n stop() {\n if (mode.stop) mode.stop();\n },\n trash() {\n if (mode.trash) {\n mode.trash();\n DrawContext.store.render();\n }\n },\n combineFeatures() {\n if (mode.combineFeatures) {\n mode.combineFeatures();\n }\n },\n uncombineFeatures() {\n if (mode.uncombineFeatures) {\n mode.uncombineFeatures();\n }\n },\n drag(event) {\n delegate('drag', event);\n },\n click(event) {\n delegate('click', event);\n },\n mousemove(event) {\n delegate('mousemove', event);\n },\n mousedown(event) {\n delegate('mousedown', event);\n },\n mouseup(event) {\n delegate('mouseup', event);\n },\n mouseout(event) {\n delegate('mouseout', event);\n },\n keydown(event) {\n delegate('keydown', event);\n },\n keyup(event) {\n delegate('keyup', event);\n },\n touchstart(event) {\n delegate('touchstart', event);\n },\n touchmove(event) {\n delegate('touchmove', event);\n },\n touchend(event) {\n delegate('touchend', event);\n },\n tap(event) {\n delegate('tap', event);\n }\n };\n};\n\nexport default ModeHandler;\n","module.exports.RADIUS = 6378137;\nmodule.exports.FLATTENING = 1/298.257223563;\nmodule.exports.POLAR_RADIUS = 6356752.3142;\n","var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\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\nexport const modes = {\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 const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\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 const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import area from '@mapbox/geojson-area';\nimport * as Constants from '../constants';\n\nconst FEATURE_SORT_RANKS = {\n Point: 0,\n LineString: 1,\n MultiLineString: 1,\n Polygon: 2\n};\n\nfunction comparator(a, b) {\n const score = FEATURE_SORT_RANKS[a.geometry.type] - FEATURE_SORT_RANKS[b.geometry.type];\n\n if (score === 0 && a.geometry.type === Constants.geojsonTypes.POLYGON) {\n return a.area - b.area;\n }\n\n return score;\n}\n\n// Sort in the order above, then sort polygons by area ascending.\nfunction sortFeatures(features) {\n return features.map((feature) => {\n if (feature.geometry.type === Constants.geojsonTypes.POLYGON) {\n feature.area = area.geometry({\n type: Constants.geojsonTypes.FEATURE,\n property: {},\n geometry: feature.geometry\n });\n }\n return feature;\n }).sort(comparator).map((feature) => {\n delete feature.area;\n return feature;\n });\n}\n\nexport default sortFeatures;\n","/**\n * Returns a bounding box representing the event's location.\n *\n * @param {Event} mapEvent - Mapbox GL JS map event, with a point properties.\n * @return {Array>} Bounding box.\n */\nfunction mapEventToBoundingBox(mapEvent, buffer = 0) {\n return [\n [mapEvent.point.x - buffer, mapEvent.point.y - buffer],\n [mapEvent.point.x + buffer, mapEvent.point.y + buffer]\n ];\n}\n\nexport default mapEventToBoundingBox;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import sortFeatures from './sort_features';\nimport mapEventToBoundingBox from './map_event_to_bounding_box';\nimport * as Constants from '../constants';\nimport StringSet from './string_set';\n\nconst META_TYPES = [\n Constants.meta.FEATURE,\n Constants.meta.MIDPOINT,\n Constants.meta.VERTEX\n];\n\n// Requires either event or bbox\nexport default {\n click: featuresAtClick,\n touch: featuresAtTouch\n};\n\nfunction featuresAtClick(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.clickBuffer);\n}\n\nfunction featuresAtTouch(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.touchBuffer);\n}\n\nfunction featuresAt(event, bbox, ctx, buffer) {\n if (ctx.map === null) return [];\n\n const box = (event) ? mapEventToBoundingBox(event, buffer) : bbox;\n\n const queryParams = {};\n\n if (ctx.options.styles) queryParams.layers = ctx.options.styles.map(s => s.id).filter(id => ctx.map.getLayer(id) != null);\n\n const features = ctx.map.queryRenderedFeatures(box, queryParams)\n .filter(feature => META_TYPES.indexOf(feature.properties.meta) !== -1);\n\n const featureIds = new StringSet();\n const uniqueFeatures = [];\n features.forEach((feature) => {\n const featureId = feature.properties.id;\n if (featureIds.has(featureId)) return;\n featureIds.add(featureId);\n uniqueFeatures.push(feature);\n });\n\n return sortFeatures(uniqueFeatures);\n}\n","import featuresAt from './features_at';\nimport * as Constants from '../constants';\n\nexport default function getFeatureAtAndSetCursors(event, ctx) {\n const features = featuresAt.click(event, null, ctx);\n const classes = { mouse: Constants.cursors.NONE };\n\n if (features[0]) {\n classes.mouse = (features[0].properties.active === Constants.activeStates.ACTIVE) ?\n Constants.cursors.MOVE : Constants.cursors.POINTER;\n classes.feature = features[0].properties.meta;\n }\n\n if (ctx.events.currentModeName().indexOf('draw') !== -1) {\n classes.mouse = Constants.cursors.ADD;\n }\n\n ctx.ui.queueMapClasses(classes);\n ctx.ui.updateMapClasses();\n\n return features[0];\n}\n","export default function(a, b) {\n const x = a.x - b.x;\n const y = a.y - b.y;\n return Math.sqrt((x * x) + (y * y));\n}\n","import euclideanDistance from './euclidean_distance';\n\nconst FINE_TOLERANCE = 4;\nconst GROSS_TOLERANCE = 12;\nconst INTERVAL = 500;\n\nexport default function isClick(start, end, options = {}) {\n const fineTolerance = (options.fineTolerance != null) ? options.fineTolerance : FINE_TOLERANCE;\n const grossTolerance = (options.grossTolerance != null) ? options.grossTolerance : GROSS_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < fineTolerance ||\n (moveDistance < grossTolerance && (end.time - start.time) < interval);\n}\n","import euclideanDistance from './euclidean_distance';\n\nexport const TAP_TOLERANCE = 25;\nexport const TAP_INTERVAL = 250;\n\nexport default function isTap(start, end, options = {}) {\n const tolerance = (options.tolerance != null) ? options.tolerance : TAP_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : TAP_INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < tolerance && (end.time - start.time) < interval;\n}\n","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","import hat from 'hat';\nimport * as Constants from '../constants';\n\nconst Feature = function(ctx, geojson) {\n this.ctx = ctx;\n this.properties = geojson.properties || {};\n this.coordinates = geojson.geometry.coordinates;\n this.id = geojson.id || hat();\n this.type = geojson.geometry.type;\n};\n\nFeature.prototype.changed = function() {\n this.ctx.store.featureChanged(this.id);\n};\n\nFeature.prototype.incomingCoords = function(coords) {\n this.setCoordinates(coords);\n};\n\nFeature.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.coordinates));\n};\n\nFeature.prototype.setProperty = function(property, value) {\n this.properties[property] = value;\n};\n\nFeature.prototype.toGeoJSON = function() {\n return JSON.parse(JSON.stringify({\n id: this.id,\n type: Constants.geojsonTypes.FEATURE,\n properties: this.properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n }));\n};\n\nFeature.prototype.internal = function(mode) {\n const properties = {\n id: this.id,\n meta: Constants.meta.FEATURE,\n 'meta:type': this.type,\n active: Constants.activeStates.INACTIVE,\n mode\n };\n\n if (this.ctx.options.userProperties) {\n for (const name in this.properties) {\n properties[`user_${name}`] = this.properties[name];\n }\n }\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n };\n};\n\nexport default Feature;\n","import Feature from './feature';\n\nconst Point = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nPoint.prototype = Object.create(Feature.prototype);\n\nPoint.prototype.isValid = function() {\n return typeof this.coordinates[0] === 'number' &&\n typeof this.coordinates[1] === 'number';\n};\n\nPoint.prototype.updateCoordinate = function(pathOrLng, lngOrLat, lat) {\n if (arguments.length === 3) {\n this.coordinates = [lngOrLat, lat];\n } else {\n this.coordinates = [pathOrLng, lngOrLat];\n }\n this.changed();\n};\n\nPoint.prototype.getCoordinate = function() {\n return this.getCoordinates();\n};\n\nexport default Point;\n","import Feature from './feature';\n\nconst LineString = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nLineString.prototype = Object.create(Feature.prototype);\n\nLineString.prototype.isValid = function() {\n return this.coordinates.length > 1;\n};\n\nLineString.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const id = parseInt(path, 10);\n this.coordinates.splice(id, 0, [lng, lat]);\n};\n\nLineString.prototype.getCoordinate = function(path) {\n const id = parseInt(path, 10);\n return JSON.parse(JSON.stringify(this.coordinates[id]));\n};\n\nLineString.prototype.removeCoordinate = function(path) {\n this.changed();\n this.coordinates.splice(parseInt(path, 10), 1);\n};\n\nLineString.prototype.updateCoordinate = function(path, lng, lat) {\n const id = parseInt(path, 10);\n this.coordinates[id] = [lng, lat];\n this.changed();\n};\n\nexport default LineString;\n","import Feature from './feature';\n\nconst Polygon = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n this.coordinates = this.coordinates.map(ring => ring.slice(0, -1));\n};\n\nPolygon.prototype = Object.create(Feature.prototype);\n\nPolygon.prototype.isValid = function() {\n if (this.coordinates.length === 0) return false;\n return this.coordinates.every(ring => ring.length > 2);\n};\n\n// Expects valid geoJSON polygon geometry: first and last positions must be equivalent.\nPolygon.prototype.incomingCoords = function(coords) {\n this.coordinates = coords.map(ring => ring.slice(0, -1));\n this.changed();\n};\n\n// Does NOT expect valid geoJSON polygon geometry: first and last positions should not be equivalent.\nPolygon.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nPolygon.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n\n const ring = this.coordinates[ids[0]];\n\n ring.splice(ids[1], 0, [lng, lat]);\n};\n\nPolygon.prototype.removeCoordinate = function(path) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n if (ring) {\n ring.splice(ids[1], 1);\n if (ring.length < 3) {\n this.coordinates.splice(ids[0], 1);\n }\n }\n};\n\nPolygon.prototype.getCoordinate = function(path) {\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n return JSON.parse(JSON.stringify(ring[ids[1]]));\n};\n\nPolygon.prototype.getCoordinates = function() {\n return this.coordinates.map(coords => coords.concat([coords[0]]));\n};\n\nPolygon.prototype.updateCoordinate = function(path, lng, lat) {\n this.changed();\n const parts = path.split('.');\n const ringId = parseInt(parts[0], 10);\n const coordId = parseInt(parts[1], 10);\n\n if (this.coordinates[ringId] === undefined) {\n this.coordinates[ringId] = [];\n }\n\n this.coordinates[ringId][coordId] = [lng, lat];\n};\n\nexport default Polygon;\n","import Feature from './feature';\nimport * as Constants from '../constants';\nimport hat from 'hat';\n\nimport MultiPoint from './point';\nimport MultiLineString from './line_string';\nimport MultiPolygon from './polygon';\n\nconst models = {\n MultiPoint,\n MultiLineString,\n MultiPolygon\n};\n\nconst takeAction = (features, action, path, lng, lat) => {\n const parts = path.split('.');\n const idx = parseInt(parts[0], 10);\n const tail = (!parts[1]) ? null : parts.slice(1).join('.');\n return features[idx][action](tail, lng, lat);\n};\n\nconst MultiFeature = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n\n delete this.coordinates;\n this.model = models[geojson.geometry.type];\n if (this.model === undefined) throw new TypeError(`${geojson.geometry.type} is not a valid type`);\n this.features = this._coordinatesToFeatures(geojson.geometry.coordinates);\n};\n\nMultiFeature.prototype = Object.create(Feature.prototype);\n\nMultiFeature.prototype._coordinatesToFeatures = function(coordinates) {\n const Model = this.model.bind(this);\n return coordinates.map(coords => new Model(this.ctx, {\n id: hat(),\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n coordinates: coords,\n type: this.type.replace('Multi', '')\n }\n }));\n};\n\nMultiFeature.prototype.isValid = function() {\n return this.features.every(f => f.isValid());\n};\n\nMultiFeature.prototype.setCoordinates = function(coords) {\n this.features = this._coordinatesToFeatures(coords);\n this.changed();\n};\n\nMultiFeature.prototype.getCoordinate = function(path) {\n return takeAction(this.features, 'getCoordinate', path);\n};\n\nMultiFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.features.map((f) => {\n if (f.type === Constants.geojsonTypes.POLYGON) return f.getCoordinates();\n return f.coordinates;\n })));\n};\n\nMultiFeature.prototype.updateCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'updateCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.addCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'addCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.removeCoordinate = function(path) {\n takeAction(this.features, 'removeCoordinate', path);\n this.changed();\n};\n\nMultiFeature.prototype.getFeatures = function() {\n return this.features;\n};\n\nexport default MultiFeature;\n","import * as Constants from '../constants';\nimport featuresAt from '../lib/features_at';\nimport Point from '../feature_types/point';\nimport LineString from '../feature_types/line_string';\nimport Polygon from '../feature_types/polygon';\nimport MultiFeature from '../feature_types/multi_feature';\n\nexport default function ModeInterface(ctx) {\n this.map = ctx.map;\n this.drawConfig = JSON.parse(JSON.stringify(ctx.options || {}));\n this._ctx = ctx;\n}\n\n/**\n * Sets Draw's interal selected state\n * @name this.setSelected\n * @param {DrawFeature[]} - whats selected as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n */\nModeInterface.prototype.setSelected = function(features) {\n return this._ctx.store.setSelected(features);\n};\n\n/**\n * Sets Draw's internal selected coordinate state\n * @name this.setSelectedCoordinates\n * @param {Object[]} coords - a array of {coord_path: 'string', feature_id: 'string'}\n */\nModeInterface.prototype.setSelectedCoordinates = function(coords) {\n this._ctx.store.setSelectedCoordinates(coords);\n coords.reduce((m, c) => {\n if (m[c.feature_id] === undefined) {\n m[c.feature_id] = true;\n this._ctx.store.get(c.feature_id).changed();\n }\n return m;\n }, {});\n};\n\n/**\n * Get all selected features as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.getSelected\n * @returns {DrawFeature[]}\n */\nModeInterface.prototype.getSelected = function() {\n return this._ctx.store.getSelected();\n};\n\n/**\n * Get the ids of all currently selected features\n * @name this.getSelectedIds\n * @returns {String[]}\n */\nModeInterface.prototype.getSelectedIds = function() {\n return this._ctx.store.getSelectedIds();\n};\n\n/**\n * Check if a feature is selected\n * @name this.isSelected\n * @param {String} id - a feature id\n * @returns {Boolean}\n */\nModeInterface.prototype.isSelected = function(id) {\n return this._ctx.store.isSelected(id);\n};\n\n/**\n * Get a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) by its id\n * @name this.getFeature\n * @param {String} id - a feature id\n * @returns {DrawFeature}\n */\nModeInterface.prototype.getFeature = function(id) {\n return this._ctx.store.get(id);\n};\n\n/**\n * Add a feature to draw's internal selected state\n * @name this.select\n * @param {String} id\n */\nModeInterface.prototype.select = function(id) {\n return this._ctx.store.select(id);\n};\n\n/**\n * Remove a feature from draw's internal selected state\n * @name this.delete\n * @param {String} id\n */\nModeInterface.prototype.deselect = function(id) {\n return this._ctx.store.deselect(id);\n};\n\n/**\n * Delete a feature from draw\n * @name this.deleteFeature\n * @param {String} id - a feature id\n */\nModeInterface.prototype.deleteFeature = function(id, opts = {}) {\n return this._ctx.store.delete(id, opts);\n};\n\n/**\n * Add a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) to draw.\n * See `this.newFeature` for converting geojson into a DrawFeature\n * @name this.addFeature\n * @param {DrawFeature} feature - the feature to add\n */\nModeInterface.prototype.addFeature = function(feature) {\n return this._ctx.store.add(feature);\n};\n\n/**\n * Clear all selected features\n */\nModeInterface.prototype.clearSelectedFeatures = function() {\n return this._ctx.store.clearSelected();\n};\n\n/**\n * Clear all selected coordinates\n */\nModeInterface.prototype.clearSelectedCoordinates = function() {\n return this._ctx.store.clearSelectedCoordinates();\n};\n\n/**\n * Indicate if the different action are currently possible with your mode\n * See [draw.actionalbe](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#drawactionable) for a list of possible actions. All undefined actions are set to **false** by default\n * @name this.setActionableState\n * @param {Object} actions\n */\nModeInterface.prototype.setActionableState = function(actions = {}) {\n const newSet = {\n trash: actions.trash || false,\n combineFeatures: actions.combineFeatures || false,\n uncombineFeatures: actions.uncombineFeatures || false\n };\n return this._ctx.events.actionable(newSet);\n};\n\n/**\n * Trigger a mode change\n * @name this.changeMode\n * @param {String} mode - the mode to transition into\n * @param {Object} opts - the options object to pass to the new mode\n * @param {Object} eventOpts - used to control what kind of events are emitted.\n */\nModeInterface.prototype.changeMode = function(mode, opts = {}, eventOpts = {}) {\n return this._ctx.events.changeMode(mode, opts, eventOpts);\n};\n\n/**\n * Update the state of draw map classes\n * @name this.updateUIClasses\n * @param {Object} opts\n */\nModeInterface.prototype.updateUIClasses = function(opts) {\n return this._ctx.ui.queueMapClasses(opts);\n};\n\n/**\n * If a name is provided it makes that button active, else if makes all buttons inactive\n * @name this.activateUIButton\n * @param {String?} name - name of the button to make active, leave as undefined to set buttons to be inactive\n */\nModeInterface.prototype.activateUIButton = function(name) {\n return this._ctx.ui.setActiveButton(name);\n};\n\n/**\n * Get the features at the location of an event object or in a bbox\n * @name this.featuresAt\n * @param {Event||NULL} event - a mapbox-gl event object\n * @param {BBOX||NULL} bbox - the area to get features from\n * @param {String} bufferType - is this `click` or `tap` event, defaults to click\n */\nModeInterface.prototype.featuresAt = function(event, bbox, bufferType = 'click') {\n if (bufferType !== 'click' && bufferType !== 'touch') throw new Error('invalid buffer type');\n return featuresAt[bufferType](event, bbox, this._ctx);\n};\n\n/**\n * Create a new [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) from geojson\n * @name this.newFeature\n * @param {GeoJSONFeature} geojson\n * @returns {DrawFeature}\n */\nModeInterface.prototype.newFeature = function(geojson) {\n const type = geojson.geometry.type;\n if (type === Constants.geojsonTypes.POINT) return new Point(this._ctx, geojson);\n if (type === Constants.geojsonTypes.LINE_STRING) return new LineString(this._ctx, geojson);\n if (type === Constants.geojsonTypes.POLYGON) return new Polygon(this._ctx, geojson);\n return new MultiFeature(this._ctx, geojson);\n};\n\n/**\n * Check is an object is an instance of a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.isInstanceOf\n * @param {String} type - `Point`, `LineString`, `Polygon`, `MultiFeature`\n * @param {Object} feature - the object that needs to be checked\n * @returns {Boolean}\n */\nModeInterface.prototype.isInstanceOf = function(type, feature) {\n if (type === Constants.geojsonTypes.POINT) return feature instanceof Point;\n if (type === Constants.geojsonTypes.LINE_STRING) return feature instanceof LineString;\n if (type === Constants.geojsonTypes.POLYGON) return feature instanceof Polygon;\n if (type === 'MultiFeature') return feature instanceof MultiFeature;\n throw new Error(`Unknown feature class: ${type}`);\n};\n\n/**\n * Force draw to rerender the feature of the provided id\n * @name this.doRender\n * @param {String} id - a feature id\n */\nModeInterface.prototype.doRender = function(id) {\n return this._ctx.store.featureChanged(id);\n};\n\n","import ModeInterface from './mode_interface_accessors';\nexport default ModeInterface;\n\n/**\n * Triggered while a mode is being transitioned into.\n * @param opts {Object} - this is the object passed via `draw.changeMode('mode', opts)`;\n * @name MODE.onSetup\n * @returns {Object} - this object will be passed to all other life cycle functions\n */\nModeInterface.prototype.onSetup = function() {};\n\n/**\n * Triggered when a drag event is detected on the map\n * @name MODE.onDrag\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onDrag = function() {};\n\n/**\n * Triggered when the mouse is clicked\n * @name MODE.onClick\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onClick = function() {};\n\n/**\n * Triggered with the mouse is moved\n * @name MODE.onMouseMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseMove = function() {};\n\n/**\n * Triggered when the mouse button is pressed down\n * @name MODE.onMouseDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseDown = function() {};\n\n/**\n * Triggered when the mouse button is released\n * @name MODE.onMouseUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseUp = function() {};\n\n/**\n * Triggered when the mouse leaves the map's container\n * @name MODE.onMouseOut\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseOut = function() {};\n\n/**\n * Triggered when a key up event is detected\n * @name MODE.onKeyUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyUp = function() {};\n\n/**\n * Triggered when a key down event is detected\n * @name MODE.onKeyDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyDown = function() {};\n\n/**\n * Triggered when a touch event is started\n * @name MODE.onTouchStart\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchStart = function() {};\n\n/**\n * Triggered when one drags thier finger on a mobile device\n * @name MODE.onTouchMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchMove = function() {};\n\n/**\n * Triggered when one removes their finger from the map\n * @name MODE.onTouchEnd\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchEnd = function() {};\n\n/**\n * Triggered when one quicly taps the map\n * @name MODE.onTap\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTap = function() {};\n\n/**\n * Triggered when the mode is being exited, to be used for cleaning up artifacts such as invalid features\n * @name MODE.onStop\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onStop = function() {};\n\n/**\n * Triggered when [draw.trash()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#trash-draw) is called.\n * @name MODE.onTrash\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onTrash = function() {};\n\n/**\n * Triggered when [draw.combineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#combinefeatures-draw) is called.\n * @name MODE.onCombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onCombineFeature = function() {};\n\n/**\n * Triggered when [draw.uncombineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#uncombinefeatures-draw) is called.\n * @name MODE.onUncombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onUncombineFeature = function() {};\n\n/**\n * Triggered per feature on render to convert raw features into set of features for display on the map\n * See [styling draw](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#styling-draw) for information about what geojson properties Draw uses as part of rendering.\n * @name MODE.toDisplayFeatures\n * @param state {Object} - a mutible state object created by onSetup\n * @param geojson {Object} - a geojson being evaulated. To render, pass to `display`.\n * @param display {Function} - all geojson objects passed to this be rendered onto the map\n */\nModeInterface.prototype.toDisplayFeatures = function() {\n throw new Error('You must overwrite toDisplayFeatures');\n};\n\n","import ModeInterface from './mode_interface';\n\nconst eventMapper = {\n drag: 'onDrag',\n click: 'onClick',\n mousemove: 'onMouseMove',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseout: 'onMouseOut',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd',\n tap: 'onTap'\n};\n\nconst eventKeys = Object.keys(eventMapper);\n\nexport default function(modeObject) {\n const modeObjectKeys = Object.keys(modeObject);\n\n return function(ctx, startOpts = {}) {\n let state = {};\n\n const mode = modeObjectKeys.reduce((m, k) => {\n m[k] = modeObject[k];\n return m;\n }, new ModeInterface(ctx));\n\n function wrapper(eh) {\n return e => mode[eh](state, e);\n }\n\n return {\n start() {\n state = mode.onSetup(startOpts); // this should set ui buttons\n\n // Adds event handlers for all event options\n // add sets the selector to false for all\n // handlers that are not present in the mode\n // to reduce on render calls for functions that\n // have no logic\n eventKeys.forEach((key) => {\n const modeHandler = eventMapper[key];\n let selector = () => false;\n if (modeObject[modeHandler]) {\n selector = () => true;\n }\n this.on(key, selector, wrapper(modeHandler));\n });\n\n },\n stop() {\n mode.onStop(state);\n },\n trash() {\n mode.onTrash(state);\n },\n combineFeatures() {\n mode.onCombineFeatures(state);\n },\n uncombineFeatures() {\n mode.onUncombineFeatures(state);\n },\n render(geojson, push) {\n mode.toDisplayFeatures(state, geojson, push);\n }\n };\n };\n}\n","import setupModeHandler from './lib/mode_handler';\nimport getFeaturesAndSetCursor from './lib/get_features_and_set_cursor';\nimport featuresAt from './lib/features_at';\nimport isClick from './lib/is_click';\nimport isTap from './lib/is_tap';\nimport * as Constants from './constants';\nimport objectToMode from './modes/object_to_mode';\n\nexport default function(ctx) {\n\n const modes = Object.keys(ctx.options.modes).reduce((m, k) => {\n m[k] = objectToMode(ctx.options.modes[k]);\n return m;\n }, {});\n\n let mouseDownInfo = {};\n let touchStartInfo = {};\n const events = {};\n let currentModeName = null;\n let currentMode = null;\n\n events.drag = function(event, isDrag) {\n if (isDrag({\n point: event.point,\n time: new Date().getTime()\n })) {\n ctx.ui.queueMapClasses({ mouse: Constants.cursors.DRAG });\n currentMode.drag(event);\n } else {\n event.originalEvent.stopPropagation();\n }\n };\n\n events.mousedrag = function(event) {\n events.drag(event, endInfo => !isClick(mouseDownInfo, endInfo));\n };\n\n events.touchdrag = function(event) {\n events.drag(event, endInfo => !isTap(touchStartInfo, endInfo));\n };\n\n events.mousemove = function(event) {\n const button = event.originalEvent.buttons !== undefined ? event.originalEvent.buttons : event.originalEvent.which;\n if (button === 1) {\n return events.mousedrag(event);\n }\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousemove(event);\n };\n\n events.mousedown = function(event) {\n mouseDownInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousedown(event);\n };\n\n events.mouseup = function(event) {\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n\n if (isClick(mouseDownInfo, {\n point: event.point,\n time: new Date().getTime()\n })) {\n currentMode.click(event);\n } else {\n currentMode.mouseup(event);\n }\n };\n\n events.mouseout = function(event) {\n currentMode.mouseout(event);\n };\n\n events.touchstart = function(event) {\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n touchStartInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n currentMode.touchstart(event);\n };\n\n events.touchmove = function(event) {\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n currentMode.touchmove(event);\n return events.touchdrag(event);\n };\n\n events.touchend = function(event) {\n // Prevent emulated mouse events because we will fully handle the touch here.\n // This does not stop the touch events from propogating to mapbox though.\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n if (isTap(touchStartInfo, {\n time: new Date().getTime(),\n point: event.point\n })) {\n currentMode.tap(event);\n } else {\n currentMode.touchend(event);\n }\n };\n\n // 8 - Backspace\n // 46 - Delete\n const isKeyModeValid = code => !(code === 8 || code === 46 || (code >= 48 && code <= 57));\n\n events.keydown = function(event) {\n const isMapElement = (event.srcElement || event.target).classList.contains('mapboxgl-canvas');\n if (!isMapElement) return; // we only handle events on the map\n\n if ((event.keyCode === 8 || event.keyCode === 46) && ctx.options.controls.trash) {\n event.preventDefault();\n currentMode.trash();\n } else if (isKeyModeValid(event.keyCode)) {\n currentMode.keydown(event);\n } else if (event.keyCode === 49 && ctx.options.controls.point) {\n changeMode(Constants.modes.DRAW_POINT);\n } else if (event.keyCode === 50 && ctx.options.controls.line_string) {\n changeMode(Constants.modes.DRAW_LINE_STRING);\n } else if (event.keyCode === 51 && ctx.options.controls.polygon) {\n changeMode(Constants.modes.DRAW_POLYGON);\n }\n };\n\n events.keyup = function(event) {\n if (isKeyModeValid(event.keyCode)) {\n currentMode.keyup(event);\n }\n };\n\n events.zoomend = function() {\n ctx.store.changeZoom();\n };\n\n events.data = function(event) {\n if (event.dataType === 'style') {\n const { setup, map, options, store } = ctx;\n const hasLayers = options.styles.some(style => map.getLayer(style.id));\n if (!hasLayers) {\n setup.addLayers();\n store.setDirty();\n store.render();\n }\n }\n };\n\n function changeMode(modename, nextModeOptions, eventOptions = {}) {\n currentMode.stop();\n\n const modebuilder = modes[modename];\n if (modebuilder === undefined) {\n throw new Error(`${modename} is not valid`);\n }\n currentModeName = modename;\n const mode = modebuilder(ctx, nextModeOptions);\n currentMode = setupModeHandler(mode, ctx);\n\n if (!eventOptions.silent) {\n ctx.map.fire(Constants.events.MODE_CHANGE, { mode: modename});\n }\n\n ctx.store.setDirty();\n ctx.store.render();\n }\n\n const actionState = {\n trash: false,\n combineFeatures: false,\n uncombineFeatures: false\n };\n\n function actionable(actions) {\n let changed = false;\n Object.keys(actions).forEach((action) => {\n if (actionState[action] === undefined) throw new Error('Invalid action type');\n if (actionState[action] !== actions[action]) changed = true;\n actionState[action] = actions[action];\n });\n if (changed) ctx.map.fire(Constants.events.ACTIONABLE, { actions: actionState });\n }\n\n const api = {\n start() {\n currentModeName = ctx.options.defaultMode;\n currentMode = setupModeHandler(modes[currentModeName](ctx), ctx);\n },\n changeMode,\n actionable,\n currentModeName() {\n return currentModeName;\n },\n currentModeRender(geojson, push) {\n return currentMode.render(geojson, push);\n },\n fire(name, event) {\n if (events[name]) {\n events[name](event);\n }\n },\n addEventListeners() {\n ctx.map.on('mousemove', events.mousemove);\n ctx.map.on('mousedown', events.mousedown);\n ctx.map.on('mouseup', events.mouseup);\n ctx.map.on('data', events.data);\n\n ctx.map.on('touchmove', events.touchmove);\n ctx.map.on('touchstart', events.touchstart);\n ctx.map.on('touchend', events.touchend);\n\n ctx.container.addEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.addEventListener('keydown', events.keydown);\n ctx.container.addEventListener('keyup', events.keyup);\n }\n },\n removeEventListeners() {\n ctx.map.off('mousemove', events.mousemove);\n ctx.map.off('mousedown', events.mousedown);\n ctx.map.off('mouseup', events.mouseup);\n ctx.map.off('data', events.data);\n\n ctx.map.off('touchmove', events.touchmove);\n ctx.map.off('touchstart', events.touchstart);\n ctx.map.off('touchend', events.touchend);\n\n ctx.container.removeEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.removeEventListener('keydown', events.keydown);\n ctx.container.removeEventListener('keyup', events.keyup);\n }\n },\n trash(options) {\n currentMode.trash(options);\n },\n combineFeatures() {\n currentMode.combineFeatures();\n },\n uncombineFeatures() {\n currentMode.uncombineFeatures();\n },\n getMode() {\n return currentModeName;\n }\n };\n\n return api;\n}\n","/**\n * Derive a dense array (no `undefined`s) from a single value or array.\n *\n * @param {any} x\n * @return {Array}\n */\nfunction toDenseArray(x) {\n return [].concat(x).filter(y => y !== undefined);\n}\n\nexport default toDenseArray;\n","import * as Constants from './constants';\n\nexport default function render() {\n // eslint-disable-next-line no-invalid-this\n const store = this;\n const mapExists = store.ctx.map && store.ctx.map.getSource(Constants.sources.HOT) !== undefined;\n if (!mapExists) return cleanup();\n\n const mode = store.ctx.events.currentModeName();\n\n store.ctx.ui.queueMapClasses({ mode });\n\n let newHotIds = [];\n let newColdIds = [];\n\n if (store.isDirty) {\n newColdIds = store.getAllIds();\n } else {\n newHotIds = store.getChangedIds().filter(id => store.get(id) !== undefined);\n newColdIds = store.sources.hot.filter(geojson => geojson.properties.id && newHotIds.indexOf(geojson.properties.id) === -1 && store.get(geojson.properties.id) !== undefined).map(geojson => geojson.properties.id);\n }\n\n store.sources.hot = [];\n const lastColdCount = store.sources.cold.length;\n store.sources.cold = store.isDirty ? [] : store.sources.cold.filter((geojson) => {\n const id = geojson.properties.id || geojson.properties.parent;\n return newHotIds.indexOf(id) === -1;\n });\n\n const coldChanged = lastColdCount !== store.sources.cold.length || newColdIds.length > 0;\n newHotIds.forEach(id => renderFeature(id, 'hot'));\n newColdIds.forEach(id => renderFeature(id, 'cold'));\n\n function renderFeature(id, source) {\n const feature = store.get(id);\n const featureInternal = feature.internal(mode);\n store.ctx.events.currentModeRender(featureInternal, (geojson) => {\n store.sources[source].push(geojson);\n });\n }\n\n if (coldChanged) {\n store.ctx.map.getSource(Constants.sources.COLD).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.cold\n });\n }\n\n store.ctx.map.getSource(Constants.sources.HOT).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.hot\n });\n\n if (store._emitSelectionChange) {\n store.ctx.map.fire(Constants.events.SELECTION_CHANGE, {\n features: store.getSelected().map(feature => feature.toGeoJSON()),\n points: store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n });\n store._emitSelectionChange = false;\n }\n\n if (store._deletedFeaturesToEmit.length) {\n const geojsonToEmit = store._deletedFeaturesToEmit.map(feature => feature.toGeoJSON());\n\n store._deletedFeaturesToEmit = [];\n\n store.ctx.map.fire(Constants.events.DELETE, {\n features: geojsonToEmit\n });\n }\n\n cleanup();\n store.ctx.map.fire(Constants.events.RENDER, {});\n\n function cleanup() {\n store.isDirty = false;\n store.clearChangedIds();\n }\n}\n","import toDenseArray from './lib/to_dense_array';\nimport StringSet from './lib/string_set';\nimport render from './render';\nimport {interactions} from './constants';\n\nexport default function Store(ctx) {\n this._features = {};\n this._featureIds = new StringSet();\n this._selectedFeatureIds = new StringSet();\n this._selectedCoordinates = [];\n this._changedFeatureIds = new StringSet();\n this._deletedFeaturesToEmit = [];\n this._emitSelectionChange = false;\n this._mapInitialConfig = {};\n this.ctx = ctx;\n this.sources = {\n hot: [],\n cold: []\n };\n\n // Deduplicate requests to render and tie them to animation frames.\n let renderRequest;\n this.render = () => {\n if (!renderRequest) {\n renderRequest = requestAnimationFrame(() => {\n renderRequest = null;\n render.call(this);\n });\n }\n };\n this.isDirty = false;\n}\n\n\n/**\n * Delays all rendering until the returned function is invoked\n * @return {Function} renderBatch\n */\nStore.prototype.createRenderBatch = function() {\n const holdRender = this.render;\n let numRenders = 0;\n this.render = function() {\n numRenders++;\n };\n\n return () => {\n this.render = holdRender;\n if (numRenders > 0) {\n this.render();\n }\n };\n};\n\n/**\n * Sets the store's state to dirty.\n * @return {Store} this\n */\nStore.prototype.setDirty = function() {\n this.isDirty = true;\n return this;\n};\n\n/**\n * Sets a feature's state to changed.\n * @param {string} featureId\n * @return {Store} this\n */\nStore.prototype.featureChanged = function(featureId) {\n this._changedFeatureIds.add(featureId);\n return this;\n};\n\n/**\n * Gets the ids of all features currently in changed state.\n * @return {Store} this\n */\nStore.prototype.getChangedIds = function() {\n return this._changedFeatureIds.values();\n};\n\n/**\n * Sets all features to unchanged state.\n * @return {Store} this\n */\nStore.prototype.clearChangedIds = function() {\n this._changedFeatureIds.clear();\n return this;\n};\n\n/**\n * Gets the ids of all features in the store.\n * @return {Store} this\n */\nStore.prototype.getAllIds = function() {\n return this._featureIds.values();\n};\n\n/**\n * Adds a feature to the store.\n * @param {Object} feature\n *\n * @return {Store} this\n */\nStore.prototype.add = function(feature) {\n this.featureChanged(feature.id);\n this._features[feature.id] = feature;\n this._featureIds.add(feature.id);\n return this;\n};\n\n/**\n * Deletes a feature or array of features from the store.\n * Cleans up after the deletion by deselecting the features.\n * If changes were made, sets the state to the dirty\n * and fires an event.\n * @param {string | Array} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.delete = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._featureIds.has(id)) return;\n this._featureIds.delete(id);\n this._selectedFeatureIds.delete(id);\n if (!options.silent) {\n if (this._deletedFeaturesToEmit.indexOf(this._features[id]) === -1) {\n this._deletedFeaturesToEmit.push(this._features[id]);\n }\n }\n delete this._features[id];\n this.isDirty = true;\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Returns a feature in the store matching the specified value.\n * @return {Object | undefined} feature\n */\nStore.prototype.get = function(id) {\n return this._features[id];\n};\n\n/**\n * Returns all features in the store.\n * @return {Array}\n */\nStore.prototype.getAll = function() {\n return Object.keys(this._features).map(id => this._features[id]);\n};\n\n/**\n * Adds features to the current selection.\n * @param {string | Array} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.select = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.add(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n return this;\n};\n\n/**\n * Deletes features from the current selection.\n * @param {string | Array} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.deselect = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.delete(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Clears the current selection.\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.clearSelected = function(options = {}) {\n this.deselect(this._selectedFeatureIds.values(), { silent: options.silent });\n return this;\n};\n\n/**\n * Sets the store's selection, clearing any prior values.\n * If no feature ids are passed, the store is just cleared.\n * @param {string | Array | undefined} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.setSelected = function(featureIds, options = {}) {\n featureIds = toDenseArray(featureIds);\n\n // Deselect any features not in the new selection\n this.deselect(this._selectedFeatureIds.values().filter(id => featureIds.indexOf(id) === -1), { silent: options.silent });\n\n // Select any features in the new selection that were not already selected\n this.select(featureIds.filter(id => !this._selectedFeatureIds.has(id)), { silent: options.silent });\n\n return this;\n};\n\n/**\n * Sets the store's coordinates selection, clearing any prior values.\n * @param {Array>} coordinates\n * @return {Store} this\n */\nStore.prototype.setSelectedCoordinates = function(coordinates) {\n this._selectedCoordinates = coordinates;\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Clears the current coordinates selection.\n * @param {Object} [options]\n * @return {Store} this\n */\nStore.prototype.clearSelectedCoordinates = function() {\n this._selectedCoordinates = [];\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Returns the ids of features in the current selection.\n * @return {Array} Selected feature ids.\n */\nStore.prototype.getSelectedIds = function() {\n return this._selectedFeatureIds.values();\n};\n\n/**\n * Returns features in the current selection.\n * @return {Array} Selected features.\n */\nStore.prototype.getSelected = function() {\n return this._selectedFeatureIds.values().map(id => this.get(id));\n};\n\n/**\n * Returns selected coordinates in the currently selected feature.\n * @return {Array} Selected coordinates.\n */\nStore.prototype.getSelectedCoordinates = function() {\n const selected = this._selectedCoordinates.map((coordinate) => {\n const feature = this.get(coordinate.feature_id);\n return {\n coordinates: feature.getCoordinate(coordinate.coord_path)\n };\n });\n return selected;\n};\n\n/**\n * Indicates whether a feature is selected.\n * @param {string} featureId\n * @return {boolean} `true` if the feature is selected, `false` if not.\n */\nStore.prototype.isSelected = function(featureId) {\n return this._selectedFeatureIds.has(featureId);\n};\n\n/**\n * Sets a property on the given feature\n * @param {string} featureId\n * @param {string} property property\n * @param {string} property value\n*/\nStore.prototype.setFeatureProperty = function(featureId, property, value) {\n this.get(featureId).setProperty(property, value);\n this.featureChanged(featureId);\n};\n\nfunction refreshSelectedCoordinates(store, options) {\n const newSelectedCoordinates = store._selectedCoordinates.filter(point => store._selectedFeatureIds.has(point.feature_id));\n if (store._selectedCoordinates.length !== newSelectedCoordinates.length && !options.silent) {\n store._emitSelectionChange = true;\n }\n store._selectedCoordinates = newSelectedCoordinates;\n}\n\n/**\n * Stores the initial config for a map, so that we can set it again after we're done.\n*/\nStore.prototype.storeMapConfig = function() {\n interactions.forEach((interaction) => {\n const interactionSet = this.ctx.map[interaction];\n if (interactionSet) {\n this._mapInitialConfig[interaction] = this.ctx.map[interaction].isEnabled();\n }\n });\n};\n\n/**\n * Restores the initial config for a map, ensuring all is well.\n*/\nStore.prototype.restoreMapConfig = function() {\n Object.keys(this._mapInitialConfig).forEach((key) => {\n const value = this._mapInitialConfig[key];\n if (value) {\n this.ctx.map[key].enable();\n } else {\n this.ctx.map[key].disable();\n }\n });\n};\n\n/**\n * Returns the initial state of an interaction setting.\n * @param {string} interaction\n * @return {boolean} `true` if the interaction is enabled, `false` if not.\n * Defaults to `true`. (Todo: include defaults.)\n*/\nStore.prototype.getInitialConfigValue = function(interaction) {\n if (this._mapInitialConfig[interaction] !== undefined) {\n return this._mapInitialConfig[interaction];\n } else {\n // This needs to be set to whatever the default is for that interaction\n // It seems to be true for all cases currently, so let's send back `true`.\n return true;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nconst classTypes = ['mode', 'feature', 'mouse'];\n\nexport default function(ctx) {\n\n\n const buttonElements = {};\n let activeButton = null;\n\n let currentMapClasses = {\n mode: null, // e.g. mode-direct_select\n feature: null, // e.g. feature-vertex\n mouse: null // e.g. mouse-move\n };\n\n let nextMapClasses = {\n mode: null,\n feature: null,\n mouse: null\n };\n\n function clearMapClasses() {\n queueMapClasses({mode:null, feature:null, mouse:null});\n updateMapClasses();\n }\n\n function queueMapClasses(options) {\n nextMapClasses = xtend(nextMapClasses, options);\n }\n\n function updateMapClasses() {\n if (!ctx.container) return;\n\n const classesToRemove = [];\n const classesToAdd = [];\n\n classTypes.forEach((type) => {\n if (nextMapClasses[type] === currentMapClasses[type]) return;\n\n classesToRemove.push(`${type}-${currentMapClasses[type]}`);\n if (nextMapClasses[type] !== null) {\n classesToAdd.push(`${type}-${nextMapClasses[type]}`);\n }\n });\n\n if (classesToRemove.length > 0) {\n ctx.container.classList.remove(...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n ctx.container.classList.add(...classesToAdd);\n }\n\n currentMapClasses = xtend(currentMapClasses, nextMapClasses);\n }\n\n function createControlButton(id, options = {}) {\n const button = document.createElement('button');\n button.className = `${Constants.classes.CONTROL_BUTTON} ${options.className}`;\n button.setAttribute('title', options.title);\n options.container.appendChild(button);\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const clickedButton = e.target;\n if (clickedButton === activeButton) {\n deactivateButtons();\n options.onDeactivate();\n return;\n }\n\n setActiveButton(id);\n options.onActivate();\n }, true);\n\n return button;\n }\n\n function deactivateButtons() {\n if (!activeButton) return;\n activeButton.classList.remove(Constants.classes.ACTIVE_BUTTON);\n activeButton = null;\n }\n\n function setActiveButton(id) {\n deactivateButtons();\n\n const button = buttonElements[id];\n if (!button) return;\n\n if (button && id !== 'trash') {\n button.classList.add(Constants.classes.ACTIVE_BUTTON);\n activeButton = button;\n }\n }\n\n function addButtons() {\n const controls = ctx.options.controls;\n const controlGroup = document.createElement('div');\n controlGroup.className = `${Constants.classes.CONTROL_GROUP} ${Constants.classes.CONTROL_BASE}`;\n\n if (!controls) return controlGroup;\n\n if (controls[Constants.types.LINE]) {\n buttonElements[Constants.types.LINE] = createControlButton(Constants.types.LINE, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_LINE,\n title: `LineString tool ${ctx.options.keybindings ? '(l)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_LINE_STRING),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POLYGON]) {\n buttonElements[Constants.types.POLYGON] = createControlButton(Constants.types.POLYGON, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POLYGON,\n title: `Polygon tool ${ctx.options.keybindings ? '(p)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POLYGON),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POINT]) {\n buttonElements[Constants.types.POINT] = createControlButton(Constants.types.POINT, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POINT,\n title: `Marker tool ${ctx.options.keybindings ? '(m)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POINT),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls.trash) {\n buttonElements.trash = createControlButton('trash', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_TRASH,\n title: 'Delete',\n onActivate: () => {\n ctx.events.trash();\n }\n });\n }\n\n if (controls.combine_features) {\n buttonElements.combine_features = createControlButton('combineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_COMBINE_FEATURES,\n title: 'Combine',\n onActivate: () => {\n ctx.events.combineFeatures();\n }\n });\n }\n\n if (controls.uncombine_features) {\n buttonElements.uncombine_features = createControlButton('uncombineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_UNCOMBINE_FEATURES,\n title: 'Uncombine',\n onActivate: () => {\n ctx.events.uncombineFeatures();\n }\n });\n }\n\n return controlGroup;\n }\n\n function removeButtons() {\n Object.keys(buttonElements).forEach((buttonId) => {\n const button = buttonElements[buttonId];\n if (button.parentNode) {\n button.parentNode.removeChild(button);\n }\n delete buttonElements[buttonId];\n });\n }\n\n return {\n setActiveButton,\n queueMapClasses,\n updateMapClasses,\n clearMapClasses,\n addButtons,\n removeButtons\n };\n}\n","import events from './events';\nimport Store from './store';\nimport ui from './ui';\nimport * as Constants from './constants';\nimport xtend from 'xtend';\n\nexport default function(ctx) {\n\n let controlContainer = null;\n let mapLoadedInterval = null;\n\n const setup = {\n onRemove() {\n // Stop connect attempt in the event that control is removed before map is loaded\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n\n setup.removeLayers();\n ctx.store.restoreMapConfig();\n ctx.ui.removeButtons();\n ctx.events.removeEventListeners();\n ctx.ui.clearMapClasses();\n if (ctx.boxZoomInitial) ctx.map.boxZoom.enable();\n ctx.map = null;\n ctx.container = null;\n ctx.store = null;\n\n if (controlContainer && controlContainer.parentNode) controlContainer.parentNode.removeChild(controlContainer);\n controlContainer = null;\n\n return this;\n },\n connect() {\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n setup.addLayers();\n ctx.store.storeMapConfig();\n ctx.events.addEventListeners();\n },\n onAdd(map) {\n if (process.env.NODE_ENV !== 'test') {\n // Monkey patch to resolve breaking change to `fire` introduced by\n // mapbox-gl-js. See mapbox/mapbox-gl-draw/issues/766.\n const _fire = map.fire;\n map.fire = function(type, event) {\n // eslint-disable-next-line\n let args = arguments;\n\n if (_fire.length === 1 && arguments.length !== 1) {\n args = [xtend({}, { type }, event)];\n }\n\n return _fire.apply(map, args);\n };\n }\n\n ctx.map = map;\n ctx.events = events(ctx);\n ctx.ui = ui(ctx);\n ctx.container = map.getContainer();\n ctx.store = new Store(ctx);\n\n\n controlContainer = ctx.ui.addButtons();\n\n if (ctx.options.boxSelect) {\n ctx.boxZoomInitial = map.boxZoom.isEnabled();\n map.boxZoom.disable();\n // Need to toggle dragPan on and off or else first\n // dragPan disable attempt in simple_select doesn't work\n map.dragPan.disable();\n map.dragPan.enable();\n }\n\n if (map.loaded()) {\n setup.connect();\n } else {\n map.on('load', setup.connect);\n mapLoadedInterval = setInterval(() => { if (map.loaded()) setup.connect(); }, 16);\n }\n\n ctx.events.start();\n return controlContainer;\n },\n addLayers() {\n // drawn features style\n ctx.map.addSource(Constants.sources.COLD, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n // hot features style\n ctx.map.addSource(Constants.sources.HOT, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n ctx.options.styles.forEach((style) => {\n ctx.map.addLayer(style);\n });\n\n ctx.store.setDirty(true);\n ctx.store.render();\n },\n // Check for layers and sources before attempting to remove\n // If user adds draw control and removes it before the map is loaded, layers and sources will be missing\n removeLayers() {\n ctx.options.styles.forEach((style) => {\n if (ctx.map.getLayer(style.id)) {\n ctx.map.removeLayer(style.id);\n }\n });\n\n if (ctx.map.getSource(Constants.sources.COLD)) {\n ctx.map.removeSource(Constants.sources.COLD);\n }\n\n if (ctx.map.getSource(Constants.sources.HOT)) {\n ctx.map.removeSource(Constants.sources.HOT);\n }\n }\n };\n\n ctx.setup = setup;\n\n return setup;\n}\n","export default [\n {\n 'id': 'gl-draw-polygon-fill-inactive',\n 'type': 'fill',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'fill-color': '#3bb2d0',\n 'fill-outline-color': '#3bb2d0',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-active',\n 'type': 'fill',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#fbb03b',\n 'fill-outline-color': '#fbb03b',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-midpoint',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'meta', 'midpoint']],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-active',\n 'type': 'line',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'LineString'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-active',\n 'type': 'line',\n 'filter': ['all',\n ['==', '$type', 'LineString'],\n ['==', 'active', 'true']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-point-point-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#3bb2d0'\n }\n },\n {\n 'id': 'gl-draw-point-stroke-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'active', 'true'],\n ['!=', 'meta', 'midpoint']\n ],\n 'paint': {\n 'circle-radius': 7,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['!=', 'meta', 'midpoint'],\n ['==', 'active', 'true']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-static',\n 'type': 'fill',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'LineString']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-point-static',\n 'type': 'circle',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Point']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#404040'\n }\n }\n];\n","import * as Constants from '../constants';\n\nexport function isOfMetaType(type) {\n return function(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from '../constants';\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nexport default function(parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: (selected) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates\n }\n };\n}\n","import * as Constants from '../constants';\n\nexport default function(parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat]\n }\n };\n}\n","import createVertex from './create_vertex';\nimport createMidpoint from './create_midpoint';\nimport * as Constants from '../constants';\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(createVertex(featureId, coordinates, basePath, isSelectedPath(basePath)));\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(line, (basePath !== null) ? `${basePath}.${lineIndex}` : String(lineIndex));\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = '';\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath = (lineBasePath !== undefined && lineBasePath !== null) ? `${lineBasePath}.${pointIndex}` : String(pointIndex);\n const vertex = createVertex(featureId, point, pointPath, isSelectedPath(pointPath));\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, '');\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates\n }\n };\n supplementaryPoints = supplementaryPoints.concat(createSupplementaryPoints(subFeature, options, index));\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","export default {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (!ctx.map || !ctx.map.doubleClickZoom || !ctx._ctx || !ctx._ctx.store || !ctx._ctx.store.getInitialConfigValue) return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue('doubleClickZoom')) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n }\n};\n","module.exports = normalize;\n\nvar types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featurecollection'\n};\n\n/**\n * Normalize a GeoJSON feature into a FeatureCollection.\n *\n * @param {object} gj geojson data\n * @returns {object} normalized geojson data\n */\nfunction normalize(gj) {\n if (!gj || !gj.type) return null;\n var type = types[gj.type];\n if (!type) return null;\n\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: gj\n }]\n };\n } else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj]\n };\n } else if (type === 'featurecollection') {\n return gj;\n }\n}\n","export default function e(t){switch(t&&t.type||null){case\"FeatureCollection\":return t.features=t.features.reduce(function(t,r){return t.concat(e(r))},[]),t;case\"Feature\":return t.geometry?e(t.geometry).map(function(e){var r={type:\"Feature\",properties:JSON.parse(JSON.stringify(t.properties)),geometry:e};return void 0!==t.id&&(r.id=t.id),r}):[t];case\"MultiPoint\":return t.coordinates.map(function(e){return{type:\"Point\",coordinates:e}});case\"MultiPolygon\":return t.coordinates.map(function(e){return{type:\"Polygon\",coordinates:e}});case\"MultiLineString\":return t.coordinates.map(function(e){return{type:\"LineString\",coordinates:e}});case\"GeometryCollection\":return t.geometries.map(e).reduce(function(e,t){return e.concat(t)},[]);case\"Point\":case\"Polygon\":case\"LineString\":return[t]}}\n//# sourceMappingURL=index.es.js.map\n","module.exports = function flatten(list) {\n return _flatten(list);\n\n function _flatten(list) {\n if (Array.isArray(list) && list.length &&\n typeof list[0] === 'number') {\n return [list];\n }\n return list.reduce(function (acc, item) {\n if (Array.isArray(item) && Array.isArray(item[0])) {\n return acc.concat(_flatten(item));\n } else {\n acc.push(item);\n return acc;\n }\n }, []);\n }\n};\n","var geojsonNormalize = require('@mapbox/geojson-normalize'),\n geojsonFlatten = require('geojson-flatten'),\n flatten = require('./flatten');\n\nif (!(geojsonFlatten instanceof Function)) geojsonFlatten = geojsonFlatten.default;\n\nmodule.exports = function(_) {\n if (!_) return [];\n var normalized = geojsonFlatten(geojsonNormalize(_)),\n coordinates = [];\n normalized.features.forEach(function(feature) {\n if (!feature.geometry) return;\n coordinates = coordinates.concat(flatten(feature.geometry.coordinates));\n });\n return coordinates;\n};\n","var traverse = module.exports = function (obj) {\n return new Traverse(obj);\n};\n\nfunction Traverse (obj) {\n this.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n node = undefined;\n break;\n }\n node = node[key];\n }\n return node;\n};\n\nTraverse.prototype.has = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n return false;\n }\n node = node[key];\n }\n return true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n var node = this.value;\n for (var i = 0; i < ps.length - 1; i ++) {\n var key = ps[i];\n if (!hasOwnProperty.call(node, key)) node[key] = {};\n node = node[key];\n }\n node[ps[i]] = value;\n return value;\n};\n\nTraverse.prototype.map = function (cb) {\n return walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n this.value = walk(this.value, cb, false);\n return this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n var skip = arguments.length === 1;\n var acc = skip ? this.value : init;\n this.forEach(function (x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n};\n\nTraverse.prototype.paths = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.path); \n });\n return acc;\n};\n\nTraverse.prototype.nodes = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.node);\n });\n return acc;\n};\n\nTraverse.prototype.clone = function () {\n var parents = [], nodes = [];\n \n return (function clone (src) {\n for (var i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n \n if (typeof src === 'object' && src !== null) {\n var dst = copy(src);\n \n parents.push(src);\n nodes.push(dst);\n \n forEach(objectKeys(src), function (key) {\n dst[key] = clone(src[key]);\n });\n \n parents.pop();\n nodes.pop();\n return dst;\n }\n else {\n return src;\n }\n })(this.value);\n};\n\nfunction walk (root, cb, immutable) {\n var path = [];\n var parents = [];\n var alive = true;\n \n return (function walker (node_) {\n var node = immutable ? copy(node_) : node_;\n var modifiers = {};\n \n var keepGoing = true;\n \n var state = {\n node : node,\n node_ : node_,\n path : [].concat(path),\n parent : parents[parents.length - 1],\n parents : parents,\n key : path.slice(-1)[0],\n isRoot : path.length === 0,\n level : path.length,\n circular : null,\n update : function (x, stopHere) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) keepGoing = false;\n },\n 'delete' : function (stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) keepGoing = false;\n },\n remove : function (stopHere) {\n if (isArray(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n }\n else {\n delete state.parent.node[state.key];\n }\n if (stopHere) keepGoing = false;\n },\n keys : null,\n before : function (f) { modifiers.before = f },\n after : function (f) { modifiers.after = f },\n pre : function (f) { modifiers.pre = f },\n post : function (f) { modifiers.post = f },\n stop : function () { alive = false },\n block : function () { keepGoing = false }\n };\n \n if (!alive) return state;\n \n function updateState() {\n if (typeof state.node === 'object' && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = objectKeys(state.node)\n }\n \n state.isLeaf = state.keys.length == 0;\n \n for (var i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n }\n else {\n state.isLeaf = true;\n state.keys = null;\n }\n \n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n \n updateState();\n \n // use return values to update if defined\n var ret = cb.call(state, state.node);\n if (ret !== undefined && state.update) state.update(ret);\n \n if (modifiers.before) modifiers.before.call(state, state.node);\n \n if (!keepGoing) return state;\n \n if (typeof state.node == 'object'\n && state.node !== null && !state.circular) {\n parents.push(state);\n \n updateState();\n \n forEach(state.keys, function (key, i) {\n path.push(key);\n \n if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);\n \n var child = walker(state.node[key]);\n if (immutable && hasOwnProperty.call(state.node, key)) {\n state.node[key] = child.node;\n }\n \n child.isLast = i == state.keys.length - 1;\n child.isFirst = i == 0;\n \n if (modifiers.post) modifiers.post.call(state, child);\n \n path.pop();\n });\n parents.pop();\n }\n \n if (modifiers.after) modifiers.after.call(state, state.node);\n \n return state;\n })(root).node;\n}\n\nfunction copy (src) {\n if (typeof src === 'object' && src !== null) {\n var dst;\n \n if (isArray(src)) {\n dst = [];\n }\n else if (isDate(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n }\n else if (isRegExp(src)) {\n dst = new RegExp(src);\n }\n else if (isError(src)) {\n dst = { message: src.message };\n }\n else if (isBoolean(src)) {\n dst = new Boolean(src);\n }\n else if (isNumber(src)) {\n dst = new Number(src);\n }\n else if (isString(src)) {\n dst = new String(src);\n }\n else if (Object.create && Object.getPrototypeOf) {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n else if (src.constructor === Object) {\n dst = {};\n }\n else {\n var proto =\n (src.constructor && src.constructor.prototype)\n || src.__proto__\n || {}\n ;\n var T = function () {};\n T.prototype = proto;\n dst = new T;\n }\n \n forEach(objectKeys(src), function (key) {\n dst[key] = src[key];\n });\n return dst;\n }\n else return src;\n}\n\nvar objectKeys = Object.keys || function keys (obj) {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n};\n\nfunction toS (obj) { return Object.prototype.toString.call(obj) }\nfunction isDate (obj) { return toS(obj) === '[object Date]' }\nfunction isRegExp (obj) { return toS(obj) === '[object RegExp]' }\nfunction isError (obj) { return toS(obj) === '[object Error]' }\nfunction isBoolean (obj) { return toS(obj) === '[object Boolean]' }\nfunction isNumber (obj) { return toS(obj) === '[object Number]' }\nfunction isString (obj) { return toS(obj) === '[object String]' }\n\nvar isArray = Array.isArray || function isArray (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nforEach(objectKeys(Traverse.prototype), function (key) {\n traverse[key] = function (obj) {\n var args = [].slice.call(arguments, 1);\n var t = new Traverse(obj);\n return t[key].apply(t, args);\n };\n});\n\nvar hasOwnProperty = Object.hasOwnProperty || function (obj, key) {\n return key in obj;\n};\n","module.exports = Extent;\n\nfunction Extent(bbox) {\n if (!(this instanceof Extent)) {\n return new Extent(bbox);\n }\n this._bbox = bbox || [Infinity, Infinity, -Infinity, -Infinity];\n this._valid = !!bbox;\n}\n\nExtent.prototype.include = function(ll) {\n this._valid = true;\n this._bbox[0] = Math.min(this._bbox[0], ll[0]);\n this._bbox[1] = Math.min(this._bbox[1], ll[1]);\n this._bbox[2] = Math.max(this._bbox[2], ll[0]);\n this._bbox[3] = Math.max(this._bbox[3], ll[1]);\n return this;\n};\n\nExtent.prototype.equals = function(_) {\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n return this._bbox[0] == other[0] &&\n this._bbox[1] == other[1] &&\n this._bbox[2] == other[2] &&\n this._bbox[3] == other[3];\n};\n\nExtent.prototype.center = function(_) {\n if (!this._valid) return null;\n return [\n (this._bbox[0] + this._bbox[2]) / 2,\n (this._bbox[1] + this._bbox[3]) / 2]\n};\n\nExtent.prototype.union = function(_) {\n this._valid = true;\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n this._bbox[0] = Math.min(this._bbox[0], other[0]);\n this._bbox[1] = Math.min(this._bbox[1], other[1]);\n this._bbox[2] = Math.max(this._bbox[2], other[2]);\n this._bbox[3] = Math.max(this._bbox[3], other[3]);\n return this;\n};\n\nExtent.prototype.bbox = function() {\n if (!this._valid) return null;\n return this._bbox;\n};\n\nExtent.prototype.contains = function(ll) {\n if (!ll) return this._fastContains();\n if (!this._valid) return null;\n var lon = ll[0], lat = ll[1];\n return this._bbox[0] <= lon &&\n this._bbox[1] <= lat &&\n this._bbox[2] >= lon &&\n this._bbox[3] >= lat;\n};\n\nExtent.prototype.intersect = function(_) {\n if (!this._valid) return null;\n\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n\n return !(\n this._bbox[0] > other[2] ||\n this._bbox[2] < other[0] ||\n this._bbox[3] < other[1] ||\n this._bbox[1] > other[3]\n );\n};\n\nExtent.prototype._fastContains = function() {\n if (!this._valid) return new Function('return null;');\n var body = 'return ' +\n this._bbox[0] + '<= ll[0] &&' +\n this._bbox[1] + '<= ll[1] &&' +\n this._bbox[2] + '>= ll[0] &&' +\n this._bbox[3] + '>= ll[1]';\n return new Function('ll', body);\n};\n\nExtent.prototype.polygon = function() {\n if (!this._valid) return null;\n return {\n type: 'Polygon',\n coordinates: [\n [\n // W, S\n [this._bbox[0], this._bbox[1]],\n // E, S\n [this._bbox[2], this._bbox[1]],\n // E, N\n [this._bbox[2], this._bbox[3]],\n // W, N\n [this._bbox[0], this._bbox[3]],\n // W, S\n [this._bbox[0], this._bbox[1]]\n ]\n ]\n };\n};\n","var geojsonCoords = require('@mapbox/geojson-coords'),\n traverse = require('traverse'),\n extent = require('@mapbox/extent');\n\nvar geojsonTypesByDataAttributes = {\n features: ['FeatureCollection'],\n coordinates: ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'],\n geometry: ['Feature'],\n geometries: ['GeometryCollection']\n}\n\nvar dataAttributes = Object.keys(geojsonTypesByDataAttributes);\n\nmodule.exports = function(_) {\n return getExtent(_).bbox();\n};\n\nmodule.exports.polygon = function(_) {\n return getExtent(_).polygon();\n};\n\nmodule.exports.bboxify = function(_) {\n return traverse(_).map(function(value) {\n if (!value) return ;\n\n var isValid = dataAttributes.some(function(attribute){\n if(value[attribute]) {\n return geojsonTypesByDataAttributes[attribute].indexOf(value.type) !== -1;\n }\n return false;\n });\n\n if(isValid){\n value.bbox = getExtent(value).bbox();\n this.update(value);\n }\n\n });\n};\n\nfunction getExtent(_) {\n var ext = extent(),\n coords = geojsonCoords(_);\n for (var i = 0; i < coords.length; i++) ext.include(coords[i]);\n return ext;\n}\n","import extent from '@mapbox/geojson-extent';\nimport * as Constants from '../constants';\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nexport default function(geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n}\n","import constrainFeatureMovement from './constrain_feature_movement';\nimport * as Constants from '../constants';\n\nexport default function(features, delta) {\n const constrainedDelta = constrainFeatureMovement(features.map(feature => feature.toGeoJSON()), delta);\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat\n };\n return [point.lng, point.lat];\n };\n const moveRing = ring => ring.map(coord => moveCoordinate(coord));\n const moveMultiPolygon = multi => multi.map(ring => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (feature.type === Constants.geojsonTypes.LINE_STRING || feature.type === Constants.geojsonTypes.MULTI_POINT) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (feature.type === Constants.geojsonTypes.POLYGON || feature.type === Constants.geojsonTypes.MULTI_LINE_STRING) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n}\n","import * as CommonSelectors from '../lib/common_selectors';\nimport mouseEventPoint from '../lib/mouse_event_point';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport StringSet from '../lib/string_set';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport moveFeatures from '../lib/move_features';\nimport * as Constants from '../constants';\n\nconst SimpleSelect = {};\n\nSimpleSelect.onSetup = function(opts) {\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || []\n };\n\n this.setSelected(state.initiallySelectedFeatureIds.filter(id => this.getFeature(id) !== undefined));\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true\n });\n\n return state;\n};\n\nSimpleSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nSimpleSelect.fireActionable = function() {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter(\n feature => this.isInstanceOf('MultiFeature', feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace('Multi', '') !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures, uncombineFeatures, trash\n });\n};\n\nSimpleSelect.getUniqueIds = function(allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures.map(s => s.properties.id)\n .filter(id => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nSimpleSelect.stopExtendedInteractions = function(state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode) state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nSimpleSelect.onStop = function() {\n doubleClickZoom.enable(this);\n};\n\nSimpleSelect.onMouseMove = function(state, e) {\n const isFeature = CommonSelectors.isFeature(e);\n if (isFeature && state.dragMoving) this.fireUpdate();\n\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n this.stopExtendedInteractions(state);\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onTap = SimpleSelect.onClick = function(state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e)) return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nSimpleSelect.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach(id => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.clickOnVertex = function(state, e) {\n // Enter direct select mode\n this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nSimpleSelect.startOnActiveFeature = function(state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.clickOnFeature = function(state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (!isShiftClick && isFeatureSelected && this.getFeature(featureId).type !== Constants.geojsonTypes.POINT) {\n // Enter direct select mode\n return this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach(id => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nSimpleSelect.onMouseDown = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e)) return this.startBoxSelect(state, e);\n};\n\nSimpleSelect.startBoxSelect = function(state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(e.originalEvent, this.map.getContainer());\n state.canBoxSelect = true;\n};\n\nSimpleSelect.onTouchStart = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nSimpleSelect.onDrag = function(state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect) return this.whileBoxSelect(state, e);\n};\n\nSimpleSelect.whileBoxSelect = function(state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement('div');\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nSimpleSelect.dragMove = function(state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.onTouchEnd = SimpleSelect.onMouseUp = function(state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer())\n ];\n const featuresInBox = this.featuresAt(null, bbox, 'click');\n const idsToSelect = this.getUniqueIds(featuresInBox)\n .filter(id => !this.isSelected(id));\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach(id => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.toDisplayFeatures = function(state, geojson, display) {\n geojson.properties.active = (this.isSelected(geojson.properties.id)) ?\n Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT) return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nSimpleSelect.onTrash = function() {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nSimpleSelect.onCombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [], featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace('Multi', '') !== featureType) {\n return;\n }\n if (feature.type.includes('Multi')) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates\n }\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined\n });\n }\n this.fireActionable();\n};\n\nSimpleSelect.onUncombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf('MultiFeature', feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined\n });\n }\n this.fireActionable();\n};\n\nexport default SimpleSelect;\n","import {noTarget, isOfMetaType, isActiveFeature, isInactiveFeature, isShiftDown} from '../lib/common_selectors';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport constrainFeatureMovement from '../lib/constrain_feature_movement';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport moveFeatures from '../lib/move_features';\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nDirectSelect.fireActionable = function(state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0\n });\n};\n\nDirectSelect.startDragging = function(state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function(state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n const selectedCoordinates = this.pathsToCoordinates(state.featureId, state.selectedCoordPaths);\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function(state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function(featureId, paths) {\n return paths.map(coord_path => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function(state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function(state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function(state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map(coord_path => state.feature.getCoordinate(coord_path));\n const selectedCoordPoints = selectedCoords.map(coords => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords\n }\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(state.selectedCoordPaths[i], coord[0] + constrainedDelta.lng, coord[1] + constrainedDelta.lat);\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function(opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error('You must provide a featureId to enter direct_select mode');\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError('direct_select mode doesn\\'t handle point features');\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : []\n };\n\n this.setSelectedCoordinates(this.pathsToCoordinates(featureId, state.selectedCoordPaths));\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true\n });\n\n return state;\n};\n\nDirectSelect.onStop = function() {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function(state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function(state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))\n .forEach(id => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(Constants.modes.SIMPLE_SELECT, {});\n }\n};\n\nDirectSelect.onMouseMove = function(state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const isMidPoint = isMidpoint(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n\n const isDraggableItem = onVertex || isFeature || isMidPoint;\n if (isDraggableItem && state.dragMoving) this.fireUpdate();\n\n this.stopDragging(state);\n\n // Skip render\n return true;\n};\n\nDirectSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function(state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function(state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function(state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n\n","import * as CommonSelectors from '../lib/common_selectors';\nimport * as Constants from '../constants';\n\nconst DrawPoint = {};\n\nDrawPoint.onSetup = function() {\n const point = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: []\n }\n });\n\n this.addFeature(point);\n\n this.clearSelectedFeatures();\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POINT);\n\n this.setActionableState({\n trash: true\n });\n\n return { point };\n};\n\nDrawPoint.stopDrawingAndRemove = function(state) {\n this.deleteFeature([state.point.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawPoint.onTap = DrawPoint.onClick = function(state, e) {\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n state.point.updateCoordinate('', e.lngLat.lng, e.lngLat.lat);\n this.map.fire(Constants.events.CREATE, {\n features: [state.point.toGeoJSON()]\n });\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.point.id] });\n};\n\nDrawPoint.onStop = function(state) {\n this.activateUIButton();\n if (!state.point.getCoordinate().length) {\n this.deleteFeature([state.point.id], { silent: true });\n }\n};\n\nDrawPoint.toDisplayFeatures = function(state, geojson, display) {\n // Never render the point we're drawing\n const isActivePoint = geojson.properties.id === state.point.id;\n geojson.properties.active = (isActivePoint) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePoint) return display(geojson);\n};\n\nDrawPoint.onTrash = DrawPoint.stopDrawingAndRemove;\n\nDrawPoint.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e) || CommonSelectors.isEnterKey(e)) {\n return this.stopDrawingAndRemove(state, e);\n }\n};\n\nexport default DrawPoint;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawPolygon = {};\n\nDrawPolygon.onSetup = function() {\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]]\n }\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true\n });\n\n return {\n polygon,\n currentVertexPosition: 0\n };\n};\n\nDrawPolygon.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.polygon.coordinates[0][state.currentVertexPosition - 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n};\n\nDrawPolygon.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n};\n\nDrawPolygon.onMouseMove = function(state, e) {\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawPolygon.onTap = DrawPolygon.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nDrawPolygon.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n};\n\nDrawPolygon.onStop = function(state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawPolygon.toDisplayFeatures = function(state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = (isActivePolygon) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], '0.0', false));\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][endPos], `0.${endPos}`, false));\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]], [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]]\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING\n }\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nDrawPolygon.onTrash = function(state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nexport default DrawPolygon;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawLineString = {};\n\nDrawLineString.onSetup = function(opts) {\n opts = opts || {};\n const featureId = opts.featureId;\n\n let line, currentVertexPosition;\n let direction = 'forward';\n if (featureId) {\n line = this.getFeature(featureId);\n if (!line) {\n throw new Error('Could not find a feature with the provided featureId');\n }\n let from = opts.from;\n if (from && from.type === 'Feature' && from.geometry && from.geometry.type === 'Point') {\n from = from.geometry;\n }\n if (from && from.type === 'Point' && from.coordinates && from.coordinates.length === 2) {\n from = from.coordinates;\n }\n if (!from || !Array.isArray(from)) {\n throw new Error('Please use the `from` property to indicate which point to continue the line from');\n }\n const lastCoord = line.coordinates.length - 1;\n if (line.coordinates[lastCoord][0] === from[0] && line.coordinates[lastCoord][1] === from[1]) {\n currentVertexPosition = lastCoord + 1;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[lastCoord]);\n } else if (line.coordinates[0][0] === from[0] && line.coordinates[0][1] === from[1]) {\n direction = 'backwards';\n currentVertexPosition = 0;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[0]);\n } else {\n throw new Error('`from` should match the point at either the start or the end of the provided LineString');\n }\n } else {\n line = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.LINE_STRING,\n coordinates: []\n }\n });\n currentVertexPosition = 0;\n this.addFeature(line);\n }\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.LINE);\n this.setActionableState({\n trash: true\n });\n\n return {\n line,\n currentVertexPosition,\n direction\n };\n};\n\nDrawLineString.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition - 1]) ||\n state.direction === 'backwards' && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition + 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (state.direction === 'forward') {\n state.currentVertexPosition++;\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n } else {\n state.line.addCoordinate(0, e.lngLat.lng, e.lngLat.lat);\n }\n};\n\nDrawLineString.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n};\n\nDrawLineString.onMouseMove = function(state, e) {\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawLineString.onTap = DrawLineString.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n this.clickAnywhere(state, e);\n};\n\nDrawLineString.onKeyUp = function(state, e) {\n if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n } else if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n }\n};\n\nDrawLineString.onStop = function(state) {\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.line.id) === undefined) return;\n\n //remove last added coordinate\n state.line.removeCoordinate(`${state.currentVertexPosition}`);\n if (state.line.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.line.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawLineString.onTrash = function(state) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawLineString.toDisplayFeatures = function(state, geojson, display) {\n const isActiveLine = geojson.properties.id === state.line.id;\n geojson.properties.active = (isActiveLine) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActiveLine) return display(geojson);\n // Only render the line if it has at least one real coordinate\n if (geojson.geometry.coordinates.length < 2) return;\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(\n state.line.id,\n geojson.geometry.coordinates[state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1],\n `${state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1}`,\n false\n ));\n\n display(geojson);\n};\n\nexport default DrawLineString;\n","\nimport simple_select from './simple_select';\nimport direct_select from './direct_select';\nimport draw_point from './draw_point';\nimport draw_polygon from './draw_polygon';\nimport draw_line_string from './draw_line_string';\n\nexport default {\n simple_select,\n direct_select,\n draw_point,\n draw_polygon,\n draw_line_string,\n};\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nimport styles from './lib/theme';\nimport modes from './modes/index';\n\nconst defaultOptions = {\n defaultMode: Constants.modes.SIMPLE_SELECT,\n keybindings: true,\n touchEnabled: true,\n clickBuffer: 2,\n touchBuffer: 25,\n boxSelect: true,\n displayControlsDefault: true,\n styles,\n modes,\n controls: {},\n userProperties: false\n};\n\nconst showControls = {\n point: true,\n line_string: true,\n polygon: true,\n trash: true,\n combine_features: true,\n uncombine_features: true\n};\n\nconst hideControls = {\n point: false,\n line_string: false,\n polygon: false,\n trash: false,\n combine_features: false,\n uncombine_features: false\n};\n\nfunction addSources(styles, sourceBucket) {\n return styles.map((style) => {\n if (style.source) return style;\n return xtend(style, {\n id: `${style.id}.${sourceBucket}`,\n source: (sourceBucket === 'hot') ? Constants.sources.HOT : Constants.sources.COLD\n });\n });\n}\n\nexport default function(options = {}) {\n let withDefaults = xtend(options);\n\n if (!options.controls) {\n withDefaults.controls = {};\n }\n\n if (options.displayControlsDefault === false) {\n withDefaults.controls = xtend(hideControls, options.controls);\n } else {\n withDefaults.controls = xtend(showControls, options.controls);\n }\n\n withDefaults = xtend(defaultOptions, withDefaults);\n\n // Layers with a shared source should be adjacent for performance reasons\n withDefaults.styles = addSources(withDefaults.styles, 'cold').concat(addSources(withDefaults.styles, 'hot'));\n\n return withDefaults;\n}\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\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 nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\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/**\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 to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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 return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\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\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\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\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\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\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 cacheHas(cache, key) {\n return cache.has(key);\n}\n\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\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\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\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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 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 * 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/** 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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\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/** 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 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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\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/**\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\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\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\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\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\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\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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/**\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\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\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\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\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\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\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\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\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\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\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\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\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\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\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\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\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\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\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\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\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\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\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 length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\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\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\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\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\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\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\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\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\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\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\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\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\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\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\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\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\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\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\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 = isEqual;\n","export default function(a, b) {\n if (a.length !== b.length) return false;\n return JSON.stringify(a.map(id => id).sort()) === JSON.stringify(b.map(id => id).sort());\n}\n","import isEqual from 'lodash.isequal';\nimport normalize from '@mapbox/geojson-normalize';\nimport hat from 'hat';\nimport featuresAt from './lib/features_at';\nimport stringSetsAreEqual from './lib/string_sets_are_equal';\nimport * as Constants from './constants';\nimport StringSet from './lib/string_set';\n\nimport Polygon from './feature_types/polygon';\nimport LineString from './feature_types/line_string';\nimport Point from './feature_types/point';\nimport MultiFeature from './feature_types/multi_feature';\n\nconst featureTypes = {\n Polygon,\n LineString,\n Point,\n MultiPolygon: MultiFeature,\n MultiLineString: MultiFeature,\n MultiPoint: MultiFeature\n};\n\nexport default function(ctx, api) {\n\n api.modes = Constants.modes;\n\n api.getFeatureIdsAt = function(point) {\n const features = featuresAt.click({ point }, null, ctx);\n return features.map(feature => feature.properties.id);\n };\n\n api.getSelectedIds = function () {\n return ctx.store.getSelectedIds();\n };\n\n api.getSelected = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedIds().map(id => ctx.store.get(id)).map(feature => feature.toGeoJSON())\n };\n };\n\n api.getSelectedPoints = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n };\n };\n\n api.set = function(featureCollection) {\n if (featureCollection.type === undefined || featureCollection.type !== Constants.geojsonTypes.FEATURE_COLLECTION || !Array.isArray(featureCollection.features)) {\n throw new Error('Invalid FeatureCollection');\n }\n const renderBatch = ctx.store.createRenderBatch();\n let toDelete = ctx.store.getAllIds().slice();\n const newIds = api.add(featureCollection);\n const newIdsLookup = new StringSet(newIds);\n\n toDelete = toDelete.filter(id => !newIdsLookup.has(id));\n if (toDelete.length) {\n api.delete(toDelete);\n }\n\n renderBatch();\n return newIds;\n };\n\n api.add = function (geojson) {\n const featureCollection = JSON.parse(JSON.stringify(normalize(geojson)));\n\n const ids = featureCollection.features.map((feature) => {\n feature.id = feature.id || hat();\n\n if (feature.geometry === null) {\n throw new Error('Invalid geometry: null');\n }\n\n if (ctx.store.get(feature.id) === undefined || ctx.store.get(feature.id).type !== feature.geometry.type) {\n // If the feature has not yet been created ...\n const Model = featureTypes[feature.geometry.type];\n if (Model === undefined) {\n throw new Error(`Invalid geometry type: ${feature.geometry.type}.`);\n }\n const internalFeature = new Model(ctx, feature);\n ctx.store.add(internalFeature);\n } else {\n // If a feature of that id has already been created, and we are swapping it out ...\n const internalFeature = ctx.store.get(feature.id);\n internalFeature.properties = feature.properties;\n if (!isEqual(internalFeature.properties, feature.properties)) {\n ctx.store.featureChanged(internalFeature.id);\n }\n if (!isEqual(internalFeature.getCoordinates(), feature.geometry.coordinates)) {\n internalFeature.incomingCoords(feature.geometry.coordinates);\n }\n }\n return feature.id;\n });\n\n ctx.store.render();\n return ids;\n };\n\n\n api.get = function (id) {\n const feature = ctx.store.get(id);\n if (feature) {\n return feature.toGeoJSON();\n }\n };\n\n api.getAll = function() {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getAll().map(feature => feature.toGeoJSON())\n };\n };\n\n api.delete = function(featureIds) {\n ctx.store.delete(featureIds, { silent: true });\n // If we were in direct select mode and our selected feature no longer exists\n // (because it was deleted), we need to get out of that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT && !ctx.store.getSelectedIds().length) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.deleteAll = function() {\n ctx.store.delete(ctx.store.getAllIds(), { silent: true });\n // If we were in direct select mode, now our selected feature no longer exists,\n // so escape that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.changeMode = function(mode, modeOptions = {}) {\n // Avoid changing modes just to re-select what's already selected\n if (mode === Constants.modes.SIMPLE_SELECT && api.getMode() === Constants.modes.SIMPLE_SELECT) {\n if (stringSetsAreEqual((modeOptions.featureIds || []), ctx.store.getSelectedIds())) return api;\n // And if we are changing the selection within simple_select mode, just change the selection,\n // instead of stopping and re-starting the mode\n ctx.store.setSelected(modeOptions.featureIds, { silent: true });\n ctx.store.render();\n return api;\n }\n\n if (mode === Constants.modes.DIRECT_SELECT && api.getMode() === Constants.modes.DIRECT_SELECT &&\n modeOptions.featureId === ctx.store.getSelectedIds()[0]) {\n return api;\n }\n\n ctx.events.changeMode(mode, modeOptions, { silent: true });\n return api;\n };\n\n api.getMode = function() {\n return ctx.events.getMode();\n };\n\n api.trash = function() {\n ctx.events.trash({ silent: true });\n return api;\n };\n\n api.combineFeatures = function() {\n ctx.events.combineFeatures({ silent: true });\n return api;\n };\n\n api.uncombineFeatures = function() {\n ctx.events.uncombineFeatures({ silent: true });\n return api;\n };\n\n api.setFeatureProperty = function(featureId, property, value) {\n ctx.store.setFeatureProperty(featureId, property, value);\n return api;\n };\n\n return api;\n}\n","import runSetup from './src/setup';\nimport setupOptions from './src/options';\nimport setupAPI from './src/api';\nimport * as Constants from './src/constants';\nimport * as lib from './src/lib';\n\nconst setupDraw = function(options, api) {\n options = setupOptions(options);\n\n const ctx = {\n options\n };\n\n api = setupAPI(ctx, api);\n ctx.api = api;\n\n const setup = runSetup(ctx);\n\n api.onAdd = setup.onAdd;\n api.onRemove = setup.onRemove;\n api.types = Constants.types;\n api.options = options;\n\n return api;\n};\n\nfunction MapboxDraw(options) {\n setupDraw(options, this);\n}\n\nimport modes from './src/modes/index';\nMapboxDraw.modes = modes;\nMapboxDraw.constants = Constants;\nMapboxDraw.lib = lib;\n\nexport default MapboxDraw;\n"],"names":["const","let","wgs84","require$$0","types","modes","events","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","Constants.geojsonTypes","area","this","Constants.meta","featuresAt","Constants.cursors","Constants.activeStates","hatModule","hat","Point","MultiPoint","MultiLineString","MultiPolygon","getFeaturesAndSetCursor","Constants.modes","setupModeHandler","Constants.events","Constants.sources","hasOwnProperty","arguments","Constants.classes","Constants.types","isVertex","Constants.LAT_RENDERED_MAX","Constants.LAT_RENDERED_MIN","geojsonNormalize","flatten","require$$2","geojsonCoords","traverse","traverseModule","extent","require$$1","geojsonExtentModule","Constants.LAT_MIN","Constants.LAT_MAX","Constants.LNG_MIN","Constants.LNG_MAX","Constants.updateActions","isFeature","CommonSelectors.isFeature","CommonSelectors.noTarget","CommonSelectors.isOfMetaType","CommonSelectors.isShiftDown","CommonSelectors.isActiveFeature","CommonSelectors.isShiftMousedown","i","CommonSelectors.isEscapeKey","CommonSelectors.isEnterKey","CommonSelectors.isVertex","simple_select","direct_select","draw_point","draw_polygon","draw_line_string","e","normalize","internalFeature"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,GAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EACtE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,GAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAClC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,GAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;KACpB,OAAO,KAAK,CAAC;IACd;AACH;AACA;AACA,GAAE,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC;EAC9E;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;EAC7D;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,GAAE,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;EAClE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;GAC3B,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;EAClD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,IAAI,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,IAAI,CAAC,MAAM,EAAE;AACtB,GAAE,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EACvE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,GAAG;GACnB,OAAO,EAAE,CAAC;EACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SA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"}