{"version":3,"sources":["webpack:///./src/utils/mapFeatureLayer.ts","webpack:///./node_modules/@esri/arcgis-to-geojson-utils/index.js","webpack:///./src/utils/ApplyArrayChange.ts"],"names":["featureLayers","url","template","title","content","type","fieldInfos","fieldName","label","MapServerImageLayersUrl","addFeatureLayers","map","fl","Layers","FeatureLayer","visible","popupEnabled","popupTemplate","layer","load","add","console","log","addMapImageLayer","MapImageLayer","addExistingGraphics","geometryType","fields","makePolygonGraphic","makePointGraphic","makeSimpleFillRenderer","makeSimpleMarkerRenderer","Renderers","SimpleRenderer","symbol","style","size","color","outline","width","Geometry","PointConstructor","pointConstructor","Support","webMercatorUtils","geometryUtils","graphics","f","index","Point","geoJSON","geometry","geographicToWebMercator","attributes","OBJECTID","nome","Graphic","Promise","all","PolygonConstructor","polygonConstructor","Polygon","_layer","_fields","alias","name","nullable","render","_layerId","create","toString","objectIdField","id","source","renderer","visibile","legendEnabled","addUserPositionGraphic","mapView","positionSymbol","height","yoffset","getters","ui","currentGPSPosition","userPosition","latitude","longitude","positionGraphic","pointsEqual","a","b","i","length","closeRing","coordinates","push","ringIsClockwise","ringToTest","pt2","total","rLength","pt1","vertexIntersectsVertex","a1","a2","b1","b2","uaT","ubT","uB","ua","ub","arrayIntersectsArray","j","coordinatesContainPoint","point","contains","l","coordinatesContainCoordinates","outer","inner","intersects","convertRingsToGeoJSON","rings","x","outerRing","hole","outerRings","holes","r","ring","slice","polygon","reverse","uncontainedHoles","pop","contained","orientRings","poly","output","shift","flattenMultiPolygonRings","shallowClone","obj","target","hasOwnProperty","getId","idAttribute","keys","key","Error","arcgisToGeoJSON","arcgis","geojson","features","y","z","points","paths","xmin","ymin","xmax","ymax","properties","err","JSON","stringify","spatialReference","wkid","warn","geojsonToArcGIS","result","geometries","applyArrayChanges","dest","comparer","Array","from","forEach","element","status","unchanged","deleted","idx","findIndex","item","splice","changed","find","Object","assign"],"mappings":"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","file":"chunk-1944dfcc.js","sourcesContent":["import { Esri } from '@/esriMap'\r\nimport { arcgisToGeoJSON, geojsonToArcGIS } from \"@esri/arcgis-to-geojson-utils\";\r\nimport { Guid } from 'guid-typescript';\r\nimport { store } from '@/store';\r\n\r\n\r\nconst featureLayers: Array<{ url: string, template: any }> = [\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Siti_Natura2000/FeatureServer/0',\r\n template: {\r\n title: \"Siti Natura 2000: {SITENAME}\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"SITECODE\", label: \"Codice sito (EAA)\" },\r\n { fieldName: \"SITENAME\", label: \"Nome sito\" },\r\n { fieldName: \"RELEASE_DA\", label: \"Data di rilascio\" },\r\n { fieldName: \"SITETYPE\", label: \"Tipo sito (EAA)\" },\r\n { fieldName: \"ZSC_SIC\", label: \"ZSC/SIC\" },\r\n { fieldName: \"ZPS\", label: \"ZPS\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Territori_di_protezione_esterna_ai_parchi_(aree_contigue)/FeatureServer/0',\r\n template: {\r\n title: \"Territori di protezione esterna ai parchi\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"DESCR_TIPO \", label: \"Descrizione\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Parchi/FeatureServer/0',\r\n template: {\r\n title: \"{NOME}\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"NOME\", label: \"Nome\" },\r\n { fieldName: \"DESCR_TIPO\", label: \"Descrizione tipologia\" },\r\n { fieldName: \"NORME\", label: \"Normativa\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Foreste_e_boschi/FeatureServer/0',\r\n template: {\r\n title: \"Foreste e boschi\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"TIP_FOR1\", label: \"Tipo di foresta\" },\r\n { fieldName: \"GOVERNO\", label: \"Governo\" },\r\n { fieldName: \"FONTE_DATI\", label: \"Fonte dati\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Catasto_Terreni_Umbraflor/FeatureServer/0',\r\n template: {\r\n title: \"Catasto terreni Umbraflor {IDENTIFICA}\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"COMUNE\", label: \"Comune\" },\r\n { fieldName: \"FOGLIO\", label: \"Foglio\" },\r\n { fieldName: \"PARTICELLA\", label: \"Particella\" },\r\n { fieldName: \"NOM_COMUNE\", label: \"Nome Comune\" },\r\n { fieldName: \"IDENTIFICA\", label: \"Identifica\" },\r\n { fieldName: \"Date\", label: \"Data\" },\r\n { fieldName: \"Foglio_n\", label: \"Numero foglio\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n url: 'https://services-eu1.arcgis.com/VUxojzcglbceQdqR/arcgis/rest/services/Confini_comunali/FeatureServer/0',\r\n template: {\r\n title: \"Confine comune: {PRO_COM_T}\",\r\n content: [\r\n {\r\n type: \"fields\",\r\n fieldInfos: [\r\n { fieldName: \"COD_REG\", label: \"Regione\" },\r\n { fieldName: \"COD_PROV\", label: \"Provincia\" },\r\n { fieldName: \"COMUNE\", label: \"Comune\" },\r\n { fieldName: \"PRO_COM_T\", label: \"Pro/Com\" },\r\n ]\r\n }\r\n ]\r\n }\r\n },\r\n]\r\n\r\nconst MapServerImageLayersUrl: Array = [\r\n 'https://siat.regione.umbria.it/arcgis/rest/services/public/CATASTO_5K_WGS84_UTM/MapServer'\r\n]\r\n\r\nexport async function addFeatureLayers(map: __esri.Map)\r\n{\r\n\r\n for (const fl of featureLayers)\r\n {\r\n var layer = await Esri.Layers.FeatureLayer({\r\n url: fl.url,\r\n visible: false,\r\n popupEnabled: true,\r\n popupTemplate: fl.template\r\n } as __esri.FeatureLayerProperties)\r\n\r\n try\r\n {\r\n await layer.load();\r\n map.add(layer);\r\n } catch (e)\r\n {\r\n console.log(e);\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport async function addMapImageLayer(map: __esri.Map)\r\n{\r\n for (const url of MapServerImageLayersUrl)\r\n {\r\n\r\n var layer = await Esri.Layers.MapImageLayer({\r\n url: url,\r\n visible: false\r\n } as __esri.MapImageLayer);\r\n\r\n try\r\n {\r\n await layer.load();\r\n map.add(layer);\r\n } catch (e)\r\n {\r\n console.log(e);\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport async function addExistingGraphics(map: __esri.Map, geometryType: string,\r\n title: string,\r\n fields: Array<{ nome: string; geoJSON: any; }>, visible: boolean = true): Promise<__esri.Graphic[]>\r\n{\r\n\r\n let _layer: __esri.FeatureLayer = null;\r\n const _fields: __esri.FieldProperties[] = [\r\n { alias: \"OBJECTID\", name: \"OBJECTID\", nullable: false, type: \"oid\" },\r\n { alias: \"Nome\", name: \"nome\", nullable: false, type: \"string\" },\r\n ];\r\n\r\n const graphics = geometryType === \"point\" ? await makePointGraphic() : await makePolygonGraphic();\r\n const render = geometryType === \"point\" ? await makeSimpleMarkerRenderer() : await makeSimpleFillRenderer();\r\n\r\n const _layerId = Guid.create().toString();\r\n _layer = await Esri.Layers.FeatureLayer({\r\n fields: _fields,\r\n objectIdField: \"OBJECTID\",\r\n geometryType: geometryType,\r\n id: _layerId,\r\n popupEnabled: true,\r\n popupTemplate: { title: \"{nome}\" },\r\n source: graphics,\r\n renderer: render,\r\n title: title,\r\n visibile: visible,\r\n legendEnabled: true,\r\n } as __esri.FeatureLayerProperties);\r\n\r\n map.add(_layer, 0);\r\n return graphics;\r\n\r\n async function makePolygonGraphic(): Promise<__esri.Graphic[]>\r\n {\r\n const polygonConstructor: __esri.PolygonConstructor = await Esri.Geometry.PolygonConstructor();\r\n const geometryUtils = await Esri.Geometry.Support.webMercatorUtils();\r\n const graphics = fields.map(async (f, index) =>\r\n {\r\n const geometry = geometryUtils.geographicToWebMercator(await Esri.Geometry.Polygon(new polygonConstructor(geojsonToArcGIS(f.geoJSON))));\r\n const attributes = {\r\n OBJECTID: index,\r\n nome: f.nome\r\n };\r\n return Esri.Graphic({ attributes, geometry });\r\n });\r\n return Promise.all(graphics);\r\n }\r\n\r\n async function makePointGraphic(): Promise<__esri.Graphic[]>\r\n {\r\n const pointConstructor: __esri.PointConstructor = await Esri.Geometry.PointConstructor();\r\n const geometryUtils = await Esri.Geometry.Support.webMercatorUtils();\r\n const graphics = fields.map(async (f, index) =>\r\n {\r\n const geometry = geometryUtils.geographicToWebMercator(await Esri.Geometry.Point(new pointConstructor(geojsonToArcGIS(f.geoJSON))));\r\n const attributes = {\r\n OBJECTID: index,\r\n nome: f.nome\r\n };\r\n return Esri.Graphic({ attributes, geometry });\r\n });\r\n return Promise.all(graphics);\r\n }\r\n\r\n async function makeSimpleFillRenderer(): Promise<__esri.renderers.SimpleRenderer>\r\n {\r\n return Esri.Renderers.SimpleRenderer({\r\n symbol: {\r\n type: \"simple-fill\",\r\n color: [3, 169, 244, 0.8],\r\n style: \"backward-diagonal\",\r\n outline: {\r\n width: 1,\r\n color: [3, 169, 244, 1],\r\n },\r\n }\r\n });\r\n }\r\n\r\n async function makeSimpleMarkerRenderer(): Promise<__esri.renderers.SimpleRenderer>\r\n {\r\n return Esri.Renderers.SimpleRenderer({\r\n symbol: {\r\n type: \"simple-marker\", // autocasts as new SimpleMarkerSymbol()\r\n style: \"circle\",\r\n size: \"15px\", // pixels\r\n color: [3, 169, 244, 0.8],\r\n outline: { // autocasts as new SimpleLineSymbol()\r\n color: \"white\",\r\n width: 1\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport async function addUserPositionGraphic(mapView: __esri.MapView)\r\n{\r\n\r\n let positionSymbol = {\r\n color: \"white\",\r\n height: \"30px\",\r\n type: \"picture-marker\",\r\n url: \"img/user-pin.png\",\r\n width: \"30px\",\r\n yoffset: 12,\r\n }\r\n\r\n let userPosition = await store.getters.ui.currentGPSPosition();\r\n if (userPosition)\r\n {\r\n let pointConstructor: __esri.PointConstructor = await Esri.Geometry.PointConstructor();\r\n let positionGraphic = await Esri.Graphic({\r\n geometry: new pointConstructor({ latitude: userPosition.latitude, longitude: userPosition.longitude }),\r\n symbol: positionSymbol\r\n });\r\n mapView.graphics.add(positionGraphic);\r\n }\r\n}","/*\n * Copyright 2017 Esri\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// checks if 2 x,y points are equal\nfunction pointsEqual (a, b) {\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// checks if the first and last points of a ring are equal and closes the ring\nfunction closeRing (coordinates) {\n if (!pointsEqual(coordinates[0], coordinates[coordinates.length - 1])) {\n coordinates.push(coordinates[0]);\n }\n return coordinates;\n}\n\n// determine if polygon ring coordinates are clockwise. clockwise signifies outer ring, counter-clockwise an inner ring\n// or hole. this logic was found at http://stackoverflow.com/questions/1165647/how-to-determine-if-a-list-of-polygon-\n// points-are-in-clockwise-order\nfunction ringIsClockwise (ringToTest) {\n var total = 0;\n var i = 0;\n var rLength = ringToTest.length;\n var pt1 = ringToTest[i];\n var pt2;\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n return (total >= 0);\n}\n\n// ported from terraformer.js https://github.com/Esri/Terraformer/blob/master/terraformer.js#L504-L519\nfunction vertexIntersectsVertex (a1, a2, b1, b2) {\n var uaT = ((b2[0] - b1[0]) * (a1[1] - b1[1])) - ((b2[1] - b1[1]) * (a1[0] - b1[0]));\n var ubT = ((a2[0] - a1[0]) * (a1[1] - b1[1])) - ((a2[1] - a1[1]) * (a1[0] - b1[0]));\n var uB = ((b2[1] - b1[1]) * (a2[0] - a1[0])) - ((b2[0] - b1[0]) * (a2[1] - a1[1]));\n\n if (uB !== 0) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return true;\n }\n }\n\n return false;\n}\n\n// ported from terraformer.js https://github.com/Esri/Terraformer/blob/master/terraformer.js#L521-L531\nfunction arrayIntersectsArray (a, b) {\n for (var i = 0; i < a.length - 1; i++) {\n for (var j = 0; j < b.length - 1; j++) {\n if (vertexIntersectsVertex(a[i], a[i + 1], b[j], b[j + 1])) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n// ported from terraformer.js https://github.com/Esri/Terraformer/blob/master/terraformer.js#L470-L480\nfunction coordinatesContainPoint (coordinates, point) {\n var contains = false;\n for (var i = -1, l = coordinates.length, j = l - 1; ++i < l; j = i) {\n if (((coordinates[i][1] <= point[1] && point[1] < coordinates[j][1]) ||\n (coordinates[j][1] <= point[1] && point[1] < coordinates[i][1])) &&\n (point[0] < (((coordinates[j][0] - coordinates[i][0]) * (point[1] - coordinates[i][1])) / (coordinates[j][1] - coordinates[i][1])) + coordinates[i][0])) {\n contains = !contains;\n }\n }\n return contains;\n}\n\n// ported from terraformer-arcgis-parser.js https://github.com/Esri/terraformer-arcgis-parser/blob/master/terraformer-arcgis-parser.js#L106-L113\nfunction coordinatesContainCoordinates (outer, inner) {\n var intersects = arrayIntersectsArray(outer, inner);\n var contains = coordinatesContainPoint(outer, inner[0]);\n if (!intersects && contains) {\n return true;\n }\n return false;\n}\n\n// do any polygons in this array contain any other polygons in this array?\n// used for checking for holes in arcgis rings\n// ported from terraformer-arcgis-parser.js https://github.com/Esri/terraformer-arcgis-parser/blob/master/terraformer-arcgis-parser.js#L117-L172\nfunction convertRingsToGeoJSON (rings) {\n var outerRings = [];\n var holes = [];\n var x; // iterator\n var outerRing; // current outer ring being evaluated\n var hole; // current hole being evaluated\n\n // for each ring\n for (var r = 0; r < rings.length; r++) {\n var ring = closeRing(rings[r].slice(0));\n if (ring.length < 4) {\n continue;\n }\n // is this ring an outer ring? is it clockwise?\n if (ringIsClockwise(ring)) {\n var polygon = [ ring.slice().reverse() ]; // wind outer rings counterclockwise for RFC 7946 compliance\n outerRings.push(polygon); // push to outer rings\n } else {\n holes.push(ring.slice().reverse()); // wind inner rings clockwise for RFC 7946 compliance\n }\n }\n\n var uncontainedHoles = [];\n\n // while there are holes left...\n while (holes.length) {\n // pop a hole off out stack\n hole = holes.pop();\n\n // loop over all outer rings and see if they contain our hole.\n var contained = false;\n for (x = outerRings.length - 1; x >= 0; x--) {\n outerRing = outerRings[x][0];\n if (coordinatesContainCoordinates(outerRing, hole)) {\n // the hole is contained push it into our polygon\n outerRings[x].push(hole);\n contained = true;\n break;\n }\n }\n\n // ring is not contained in any outer ring\n // sometimes this happens https://github.com/Esri/esri-leaflet/issues/320\n if (!contained) {\n uncontainedHoles.push(hole);\n }\n }\n\n // if we couldn't match any holes using contains we can try intersects...\n while (uncontainedHoles.length) {\n // pop a hole off out stack\n hole = uncontainedHoles.pop();\n\n // loop over all outer rings and see if any intersect our hole.\n var intersects = false;\n\n for (x = outerRings.length - 1; x >= 0; x--) {\n outerRing = outerRings[x][0];\n if (arrayIntersectsArray(outerRing, hole)) {\n // the hole is contained push it into our polygon\n outerRings[x].push(hole);\n intersects = true;\n break;\n }\n }\n\n if (!intersects) {\n outerRings.push([hole.reverse()]);\n }\n }\n\n if (outerRings.length === 1) {\n return {\n type: 'Polygon',\n coordinates: outerRings[0]\n };\n } else {\n return {\n type: 'MultiPolygon',\n coordinates: outerRings\n };\n }\n}\n\n// This function ensures that rings are oriented in the right directions\n// outer rings are clockwise, holes are counterclockwise\n// used for converting GeoJSON Polygons to ArcGIS Polygons\nfunction orientRings (poly) {\n var output = [];\n var polygon = poly.slice(0);\n var outerRing = closeRing(polygon.shift().slice(0));\n if (outerRing.length >= 4) {\n if (!ringIsClockwise(outerRing)) {\n outerRing.reverse();\n }\n\n output.push(outerRing);\n\n for (var i = 0; i < polygon.length; i++) {\n var hole = closeRing(polygon[i].slice(0));\n if (hole.length >= 4) {\n if (ringIsClockwise(hole)) {\n hole.reverse();\n }\n output.push(hole);\n }\n }\n }\n\n return output;\n}\n\n// This function flattens holes in multipolygons to one array of polygons\n// used for converting GeoJSON Polygons to ArcGIS Polygons\nfunction flattenMultiPolygonRings (rings) {\n var output = [];\n for (var i = 0; i < rings.length; i++) {\n var polygon = orientRings(rings[i]);\n for (var x = polygon.length - 1; x >= 0; x--) {\n var ring = polygon[x].slice(0);\n output.push(ring);\n }\n }\n return output;\n}\n\n// shallow object clone for feature properties and attributes\n// from http://jsperf.com/cloning-an-object/2\nfunction shallowClone (obj) {\n var target = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\nfunction getId (attributes, idAttribute) {\n var keys = idAttribute ? [idAttribute, 'OBJECTID', 'FID'] : ['OBJECTID', 'FID'];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (\n key in attributes &&\n (typeof attributes[key] === 'string' ||\n typeof attributes[key] === 'number')\n ) {\n return attributes[key];\n }\n }\n throw Error('No valid id attribute found');\n}\n\nexport function arcgisToGeoJSON (arcgis, idAttribute) {\n var geojson = {};\n\n if (arcgis.features) {\n geojson.type = 'FeatureCollection';\n geojson.features = [];\n for (var i = 0; i < arcgis.features.length; i++) {\n geojson.features.push(arcgisToGeoJSON(arcgis.features[i], idAttribute));\n }\n }\n\n if (typeof arcgis.x === 'number' && typeof arcgis.y === 'number') {\n geojson.type = 'Point';\n geojson.coordinates = [arcgis.x, arcgis.y];\n if (typeof arcgis.z === 'number') {\n geojson.coordinates.push(arcgis.z);\n }\n }\n\n if (arcgis.points) {\n geojson.type = 'MultiPoint';\n geojson.coordinates = arcgis.points.slice(0);\n }\n\n if (arcgis.paths) {\n if (arcgis.paths.length === 1) {\n geojson.type = 'LineString';\n geojson.coordinates = arcgis.paths[0].slice(0);\n } else {\n geojson.type = 'MultiLineString';\n geojson.coordinates = arcgis.paths.slice(0);\n }\n }\n\n if (arcgis.rings) {\n geojson = convertRingsToGeoJSON(arcgis.rings.slice(0));\n }\n\n if (\n typeof arcgis.xmin === 'number' &&\n typeof arcgis.ymin === 'number' &&\n typeof arcgis.xmax === 'number' &&\n typeof arcgis.ymax === 'number'\n ) {\n geojson.type = 'Polygon';\n geojson.coordinates = [[\n [arcgis.xmax, arcgis.ymax],\n [arcgis.xmin, arcgis.ymax],\n [arcgis.xmin, arcgis.ymin],\n [arcgis.xmax, arcgis.ymin],\n [arcgis.xmax, arcgis.ymax]\n ]];\n }\n\n if (arcgis.geometry || arcgis.attributes) {\n geojson.type = 'Feature';\n geojson.geometry = (arcgis.geometry) ? arcgisToGeoJSON(arcgis.geometry) : null;\n geojson.properties = (arcgis.attributes) ? shallowClone(arcgis.attributes) : null;\n if (arcgis.attributes) {\n try {\n geojson.id = getId(arcgis.attributes, idAttribute);\n } catch (err) {\n // don't set an id\n }\n }\n }\n\n // if no valid geometry was encountered\n if (JSON.stringify(geojson.geometry) === JSON.stringify({})) {\n geojson.geometry = null;\n }\n\n if (\n arcgis.spatialReference &&\n arcgis.spatialReference.wkid &&\n arcgis.spatialReference.wkid !== 4326\n ) {\n console.warn('Object converted in non-standard crs - ' + JSON.stringify(arcgis.spatialReference));\n }\n\n return geojson;\n}\n\nexport function geojsonToArcGIS (geojson, idAttribute) {\n idAttribute = idAttribute || 'OBJECTID';\n var spatialReference = { wkid: 4326 };\n var result = {};\n var i;\n\n switch (geojson.type) {\n case 'Point':\n result.x = geojson.coordinates[0];\n result.y = geojson.coordinates[1];\n result.spatialReference = spatialReference;\n break;\n case 'MultiPoint':\n result.points = geojson.coordinates.slice(0);\n result.spatialReference = spatialReference;\n break;\n case 'LineString':\n result.paths = [geojson.coordinates.slice(0)];\n result.spatialReference = spatialReference;\n break;\n case 'MultiLineString':\n result.paths = geojson.coordinates.slice(0);\n result.spatialReference = spatialReference;\n break;\n case 'Polygon':\n result.rings = orientRings(geojson.coordinates.slice(0));\n result.spatialReference = spatialReference;\n break;\n case 'MultiPolygon':\n result.rings = flattenMultiPolygonRings(geojson.coordinates.slice(0));\n result.spatialReference = spatialReference;\n break;\n case 'Feature':\n if (geojson.geometry) {\n result.geometry = geojsonToArcGIS(geojson.geometry, idAttribute);\n }\n result.attributes = (geojson.properties) ? shallowClone(geojson.properties) : {};\n if (geojson.id) {\n result.attributes[idAttribute] = geojson.id;\n }\n break;\n case 'FeatureCollection':\n result = [];\n for (i = 0; i < geojson.features.length; i++) {\n result.push(geojsonToArcGIS(geojson.features[i], idAttribute));\n }\n break;\n case 'GeometryCollection':\n result = [];\n for (i = 0; i < geojson.geometries.length; i++) {\n result.push(geojsonToArcGIS(geojson.geometries[i], idAttribute));\n }\n break;\n }\n\n return result;\n}\n\nexport default { arcgisToGeoJSON: arcgisToGeoJSON, geojsonToArcGIS: geojsonToArcGIS };\n","import { DataItem, DataItemStatus } from '@/components';\r\nexport function applyArrayChanges(source: Iterable>, dest: Array, comparer: (d: T, s: T) => boolean): Array {\r\n Array.from(source).forEach(element => {\r\n\r\n switch (element.status) {\r\n case DataItemStatus.unchanged: return;\r\n case DataItemStatus.deleted:\r\n var idx = dest.findIndex(i => comparer(i, element.item));\r\n if (idx >= 0)\r\n dest.splice(idx, 1);\r\n return;\r\n case DataItemStatus.changed:\r\n var result = dest.find(i => comparer(i, element.item));\r\n if (result)\r\n Object.assign(result, element.item);\r\n else\r\n dest.push(element.item);\r\n return;\r\n }\r\n });\r\n return dest;\r\n}"],"sourceRoot":""}