From d00a828514346893056f3a41ef30e7a4e9ad644a Mon Sep 17 00:00:00 2001 From: Clay Anderson Date: Sat, 13 Oct 2018 22:38:00 -0600 Subject: [PATCH] Fix turf v5 compatibility --- .../src/lib/mode-handlers/mode-handler.js | 30 ++++++++++++++----- yarn.lock | 4 +-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/core/src/lib/mode-handlers/mode-handler.js b/modules/core/src/lib/mode-handlers/mode-handler.js index e3fc39a3e..d24a8555a 100644 --- a/modules/core/src/lib/mode-handlers/mode-handler.js +++ b/modules/core/src/lib/mode-handlers/mode-handler.js @@ -57,9 +57,17 @@ export class ModeHandler { return this.featureCollection; } - getSelectedGeometry(): ?Geometry { + getSelectedFeature(): ?Feature { if (this._selectedFeatureIndexes.length === 1) { - return this.featureCollection.getObject().features[this._selectedFeatureIndexes[0]].geometry; + return this.featureCollection.getObject().features[this._selectedFeatureIndexes[0]]; + } + return null; + } + + getSelectedGeometry(): ?Geometry { + const feature = this.getSelectedFeature(); + if (feature) { + return feature.geometry; } return null; } @@ -163,12 +171,13 @@ export class ModeHandler { } getAddFeatureOrBooleanPolygonAction(geometry: Polygon) { - const selectedGeometry = this.getSelectedGeometry(); + const selectedFeature = this.getSelectedFeature(); const modeConfig = this.getModeConfig(); if (modeConfig && modeConfig.booleanOperation) { if ( - !selectedGeometry || - (selectedGeometry.type !== 'Polygon' && selectedGeometry.type !== 'MultiPolygon') + !selectedFeature || + (selectedFeature.geometry.type !== 'Polygon' && + selectedFeature.geometry.type !== 'MultiPolygon') ) { // eslint-disable-next-line no-console,no-undef console.warn( @@ -177,13 +186,18 @@ export class ModeHandler { return null; } + const feature = { + type: 'Feature', + geometry + }; + let updatedGeometry; if (modeConfig.booleanOperation === 'union') { - updatedGeometry = turfUnion(selectedGeometry, geometry); + updatedGeometry = turfUnion(selectedFeature, feature); } else if (modeConfig.booleanOperation === 'difference') { - updatedGeometry = turfDifference(selectedGeometry, geometry); + updatedGeometry = turfDifference(selectedFeature, feature); } else if (modeConfig.booleanOperation === 'intersection') { - updatedGeometry = turfIntersect(selectedGeometry, geometry); + updatedGeometry = turfIntersect(selectedFeature, feature); } else { // eslint-disable-next-line no-console,no-undef console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`); diff --git a/yarn.lock b/yarn.lock index 0b4197a66..5f2340b93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -767,7 +767,7 @@ seer "^0.2.4" viewport-mercator-project "^5.2.0" -"@deck.gl/experimental-layers@>=6.0.3": +"@deck.gl/experimental-layers@>=6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@deck.gl/experimental-layers/-/experimental-layers-6.1.1.tgz#daeb1974ac0b47cb59dec41b4e068bbce76c200b" dependencies: @@ -2565,7 +2565,7 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -deck.gl@>=6.0.3: +deck.gl@>=6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-6.1.1.tgz#a31e2eb0e0f2d411dcf717393f8ef084a586831d" dependencies: