From 828fa9001acae064555a300eb557dbfe3e705957 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 15:13:48 +0200 Subject: [PATCH 01/15] draftlog --- draftlogs/7115_change.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 draftlogs/7115_change.md diff --git a/draftlogs/7115_change.md b/draftlogs/7115_change.md new file mode 100644 index 00000000000..d5487ee215c --- /dev/null +++ b/draftlogs/7115_change.md @@ -0,0 +1,2 @@ + - Update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)] + \ No newline at end of file From 917c05d2413971bb1a31b06b83ccf2e1c3368cc2 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 15:04:41 +0200 Subject: [PATCH 02/15] Bump turf --- package-lock.json | 113 +++++++++++++++++++--------------- package.json | 6 +- src/lib/geo_location_utils.js | 6 +- 3 files changed, 68 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index d13796b002d..59def33838a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/mapbox-gl": "1.13.4", - "@turf/area": "^6.4.0", - "@turf/bbox": "^6.4.0", - "@turf/centroid": "^6.0.2", + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", @@ -2613,69 +2613,74 @@ } }, "node_modules/@turf/area": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.4.0.tgz", - "integrity": "sha512-zJxRZX8UUCHlKuk0oRfYUnEMKw6+TiNDJHJ3R4q7/AC+yz/Wh3m+CkEoTryiXJ8+VoMiPFXrseleUHidfOOZzQ==", - "dependencies": { - "@turf/helpers": "^6.4.0", - "@turf/meta": "^6.4.0" - } - }, - "node_modules/@turf/area/node_modules/@turf/helpers": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.4.0.tgz", - "integrity": "sha512-7vVpWZwHP0Qn8DDSlM++nhs3/6zfPt+GODjvLVZ+sWIG4S3vOtUUOfO5eIjRzxsUHHqhgiIL0QA17u79uLM+mQ==" - }, - "node_modules/@turf/area/node_modules/@turf/meta": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.4.0.tgz", - "integrity": "sha512-fMra6vMskwz1knn0/tb22ppOeE8CCmpvOvTIxLdV1WYWAoC4bJ4WdXKvZRsJKpHOX5iFehx4DT8aaGdROA4Y3Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", + "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.4.0" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@turf/bbox": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.4.0.tgz", - "integrity": "sha512-eASq6Op3sGAA293Qo3gTwuQAvdoQCKah4rgA5FZkQ2xvkYquQnkUhV2U18bFgw58aSP1g2Y+rpmSEPHDFX6/6g==", - "dependencies": { - "@turf/helpers": "^6.4.0", - "@turf/meta": "^6.4.0" - } - }, - "node_modules/@turf/bbox/node_modules/@turf/helpers": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.4.0.tgz", - "integrity": "sha512-7vVpWZwHP0Qn8DDSlM++nhs3/6zfPt+GODjvLVZ+sWIG4S3vOtUUOfO5eIjRzxsUHHqhgiIL0QA17u79uLM+mQ==" - }, - "node_modules/@turf/bbox/node_modules/@turf/meta": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.4.0.tgz", - "integrity": "sha512-fMra6vMskwz1knn0/tb22ppOeE8CCmpvOvTIxLdV1WYWAoC4bJ4WdXKvZRsJKpHOX5iFehx4DT8aaGdROA4Y3Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", + "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.4.0" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@turf/centroid": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.0.2.tgz", - "integrity": "sha512-auyDauOtC4eddH7GC3CHFTDu2PKhpSeKCRhwhHhXtJqn2dWCJQNIoCeJRmfXRIbzCWhWvgvQafvvhq8HNvmvWw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", + "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", + "license": "MIT", "dependencies": { - "@turf/helpers": "6.x", - "@turf/meta": "6.x" + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@turf/helpers": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.1.4.tgz", - "integrity": "sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, "node_modules/@turf/meta": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", - "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", + "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", + "license": "MIT", "dependencies": { - "@turf/helpers": "6.x" + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, "node_modules/@types/bluebird": { @@ -12494,6 +12499,12 @@ "node": ">=6" } }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", diff --git a/package.json b/package.json index f2dfb29212e..87e468da773 100644 --- a/package.json +++ b/package.json @@ -71,9 +71,9 @@ "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/mapbox-gl": "1.13.4", - "@turf/area": "^6.4.0", - "@turf/bbox": "^6.4.0", - "@turf/centroid": "^6.0.2", + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/centroid": "^7.1.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 04771902143..1be0e90ebd6 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -2,9 +2,9 @@ var d3 = require('@plotly/d3'); var countryRegex = require('country-regex'); -var turfArea = require('@turf/area'); -var turfCentroid = require('@turf/centroid'); -var turfBbox = require('@turf/bbox'); +var { area: turfArea } = require('@turf/area'); +var { centroid: turfCentroid } = require('@turf/centroid'); +var { bbox: turfBbox } = require('@turf/bbox'); var identity = require('./identity'); var loggers = require('./loggers'); From 715e4ffc8c99184dd53cd628ab1618c475f71370 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 15:23:57 +0200 Subject: [PATCH 03/15] fix computeBbox --- src/lib/geo_location_utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 1be0e90ebd6..b1af457324e 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -362,7 +362,7 @@ function fetchTraceGeoData(calcData) { // TODO `turf/bbox` gives wrong result when the input feature/geometry // crosses the anti-meridian. We should try to implement our own bbox logic. function computeBbox(d) { - return turfBbox.default(d); + return turfBbox(d); } module.exports = { From a937945a1e8fa8701fad4d654875cc51d3b8a9ff Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 15:26:07 +0200 Subject: [PATCH 04/15] remove .default --- src/lib/geo_location_utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index b1af457324e..56c4b41e207 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -291,7 +291,7 @@ function findCentroid(feature) { for(var i = 0; i < coords.length; i++) { var polyi = {type: 'Polygon', coordinates: coords[i]}; - var area = turfArea.default(polyi); + var area = turfArea(polyi); if(area > maxArea) { maxArea = area; poly = polyi; @@ -301,7 +301,7 @@ function findCentroid(feature) { poly = geometry; } - return turfCentroid.default(poly).geometry.coordinates; + return turfCentroid(poly).geometry.coordinates; } function fetchTraceGeoData(calcData) { From d205bc9c2839c47abc73817ed54a474c9b4555e8 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 15:41:33 +0200 Subject: [PATCH 05/15] update test --- test/jasmine/tests/choroplethmap_test.js | 2 +- test/jasmine/tests/choroplethmapbox_test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/choroplethmap_test.js b/test/jasmine/tests/choroplethmap_test.js index acb55cb3a22..b17bfde4a60 100644 --- a/test/jasmine/tests/choroplethmap_test.js +++ b/test/jasmine/tests/choroplethmap_test.js @@ -639,7 +639,7 @@ describe('Test choroplethmap hover:', function() { return fig; }, nums: '### 100', - name: '-86.7 | 32.0 ###', + name: '-86.7 | 31.9 ###', evtPts: [{location: 100, z: 10, pointNumber: 0, curveNumber: 0}] }]; diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index df061c8fcd0..7ae8be38b5d 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -640,7 +640,7 @@ describe('Test choroplethmapbox hover:', function() { return fig; }, nums: '### 100', - name: '-86.7 | 32.0 ###', + name: '-86.7 | 31.9 ###', evtPts: [{location: 100, z: 10, pointNumber: 0, curveNumber: 0}] }]; From b978c7a0061eb4202c6141be8b876535fcbd8696 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:28:50 +0200 Subject: [PATCH 06/15] fix single polygon case --- test/jasmine/tests/choroplethmap_test.js | 2 +- test/jasmine/tests/choroplethmapbox_test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/choroplethmap_test.js b/test/jasmine/tests/choroplethmap_test.js index b17bfde4a60..f3b084ca683 100644 --- a/test/jasmine/tests/choroplethmap_test.js +++ b/test/jasmine/tests/choroplethmap_test.js @@ -489,7 +489,7 @@ describe('Test choroplethmap convert:', function() { var opts = convertModule.convert(calcTrace); expect(opts.geojson.features[0].geometry.coordinates).toBe(coordsIn); - expect(calcTrace[0].ct).toEqual([100.4, 0.4]); + expect(calcTrace[0].ct).toEqual([100.5, 0.5]); }); it('should find correct centroid (multi-polygon case)', function() { diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index 7ae8be38b5d..39e2961cab2 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -490,7 +490,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = convertModule.convert(calcTrace); expect(opts.geojson.features[0].geometry.coordinates).toBe(coordsIn); - expect(calcTrace[0].ct).toEqual([100.4, 0.4]); + expect(calcTrace[0].ct).toEqual([100.5, 0.5]); }); it('should find correct centroid (multi-polygon case)', function() { From 3418503158802761e1364621818c9a70b1faabef Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:34:35 +0200 Subject: [PATCH 07/15] gracefully handle empty coordinate arrays --- src/lib/geo_location_utils.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index 56c4b41e207..e15659f8f45 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -226,7 +226,11 @@ function extractTraceFeature(calcTrace) { }; // Compute centroid, add it to the properties - fOut.properties.ct = findCentroid(fOut); + if (fOut.geometry.coordinates.length > 0) { + fOut.properties.ct = findCentroid(fOut); + } else { + fOut.properties.ct = [NaN, NaN]; + } // Mutate in in/out features into calcdata cdi.fIn = fIn; From 90ee3da629c7b85c70dc692f427e179ced81ffad Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:39:02 +0200 Subject: [PATCH 08/15] update draftlog --- draftlogs/{7115_change.md => 7115_fix.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename draftlogs/{7115_change.md => 7115_fix.md} (100%) diff --git a/draftlogs/7115_change.md b/draftlogs/7115_fix.md similarity index 100% rename from draftlogs/7115_change.md rename to draftlogs/7115_fix.md From f4de36e083725e69aa98a255a56e56e950bc9915 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:46:45 +0200 Subject: [PATCH 09/15] fix multipolygon case --- test/jasmine/tests/choroplethmap_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/choroplethmap_test.js b/test/jasmine/tests/choroplethmap_test.js index f3b084ca683..5e587505f67 100644 --- a/test/jasmine/tests/choroplethmap_test.js +++ b/test/jasmine/tests/choroplethmap_test.js @@ -498,7 +498,7 @@ describe('Test choroplethmap convert:', function() { var coordsIn = [ [ // this one has the bigger area - [[30, 20], [45, 40], [10, 40], [30, 20]] + [[30, 20], [47, 40], [10, 33], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] @@ -511,7 +511,7 @@ describe('Test choroplethmap convert:', function() { var opts = convertModule.convert(calcTrace); expect(opts.geojson.features[0].geometry.coordinates).toBe(coordsIn); - expect(calcTrace[0].ct).toEqual([28.75, 30]); + expect(calcTrace[0].ct).toEqual([29, 31]); }); }); From 8a5f221603d844cc49e2428e92c881af154205e2 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:47:11 +0200 Subject: [PATCH 10/15] fix multipolygon test --- test/jasmine/tests/choroplethmapbox_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/choroplethmapbox_test.js b/test/jasmine/tests/choroplethmapbox_test.js index 39e2961cab2..c9133894265 100644 --- a/test/jasmine/tests/choroplethmapbox_test.js +++ b/test/jasmine/tests/choroplethmapbox_test.js @@ -499,7 +499,7 @@ describe('Test choroplethmapbox convert:', function() { var coordsIn = [ [ // this one has the bigger area - [[30, 20], [45, 40], [10, 40], [30, 20]] + [[30, 20], [47, 40], [10, 33], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] @@ -512,7 +512,7 @@ describe('Test choroplethmapbox convert:', function() { var opts = convertModule.convert(calcTrace); expect(opts.geojson.features[0].geometry.coordinates).toBe(coordsIn); - expect(calcTrace[0].ct).toEqual([28.75, 30]); + expect(calcTrace[0].ct).toEqual([29, 31]); }); }); From 9c618e3d1f3e6eb949ad46942af3fd1fea589ea6 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:54:17 +0200 Subject: [PATCH 11/15] add thanks message similar to other draftlog --- draftlogs/7115_fix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draftlogs/7115_fix.md b/draftlogs/7115_fix.md index d5487ee215c..f16f7e0e955 100644 --- a/draftlogs/7115_fix.md +++ b/draftlogs/7115_fix.md @@ -1,2 +1,2 @@ - - Update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)] + - Update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)], with thanks to @birkskyum for the contribution! \ No newline at end of file From dd05e55aff4d4eeb0236be87bc54e2da794428c0 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 16:55:14 +0200 Subject: [PATCH 12/15] update draftlog --- draftlogs/7115_fix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draftlogs/7115_fix.md b/draftlogs/7115_fix.md index f16f7e0e955..503e7db936e 100644 --- a/draftlogs/7115_fix.md +++ b/draftlogs/7115_fix.md @@ -1,2 +1,2 @@ - - Update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)], with thanks to @birkskyum for the contribution! + - Fix centroid calculation and update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)], with thanks to @birkskyum for the contribution! \ No newline at end of file From 912244b19da54f699a035c6b07dc32af8074c07c Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 17:04:04 +0200 Subject: [PATCH 13/15] fix choropleth hover --- test/jasmine/tests/choropleth_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/choropleth_test.js b/test/jasmine/tests/choropleth_test.js index 5a813a81ec4..d26468b8fcb 100644 --- a/test/jasmine/tests/choropleth_test.js +++ b/test/jasmine/tests/choropleth_test.js @@ -353,7 +353,7 @@ describe('Test choropleth hover:', function() { fig.data[0].hovertemplate = '%{properties.name}%{ct[0]:.1f} | %{ct[1]:.1f}'; fig.layout.geo.projection = {scale: 20}; - run(hasCssTransform, [300, 200], fig, ['New York', '-75.1 | 42.6']) + run(hasCssTransform, [300, 200], fig, ['New York', '-75.2 | 42.6']) .then(done, done.fail); }); }); From 8e810056160a9d5b8a0cad22ca24b0fb5d532b91 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 17:16:49 +0200 Subject: [PATCH 14/15] update geo baselines --- test/image/baselines/geo_featureidkey.png | Bin 16704 -> 16710 bytes .../image/baselines/geo_fitbounds-geojson.png | Bin 25665 -> 25736 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/geo_featureidkey.png b/test/image/baselines/geo_featureidkey.png index 761c1ccc24ddbf151a234ac61fe6cd5fb2b9e898..ab0735a6b76e0cf245c241664e079d85bc754d26 100644 GIT binary patch literal 16710 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 LHSQNHn!o%%NoAVh literal 16704 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 R0FRELB&RA{BxCyi{{XZz?*0G( diff --git a/test/image/baselines/geo_fitbounds-geojson.png b/test/image/baselines/geo_fitbounds-geojson.png index 6578bfc7e5de3bcff01e41c1728051048d3e289a..f75fc2ea1b0ad17401552d5e319b4887a3b677c0 100644 GIT binary patch literal 25736 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�~JjUWzL;XZ^-mmk=(Yogf_f5ahNT&qZzx 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 literal 25665 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 From a6e151a67e6a3b184070d1a281c75ef842e60161 Mon Sep 17 00:00:00 2001 From: Birk Skyum Date: Mon, 19 Aug 2024 17:45:00 +0200 Subject: [PATCH 15/15] turf 6.5 --- draftlogs/7115_fix.md | 2 +- package-lock.json | 72 ++++++++++++----------------------- package.json | 6 +-- src/lib/geo_location_utils.js | 12 +++--- 4 files changed, 35 insertions(+), 57 deletions(-) diff --git a/draftlogs/7115_fix.md b/draftlogs/7115_fix.md index 503e7db936e..03020ae3516 100644 --- a/draftlogs/7115_fix.md +++ b/draftlogs/7115_fix.md @@ -1,2 +1,2 @@ - - Fix centroid calculation and update turf.js to v7 [[#7115](https://github.com/plotly/plotly.js/pull/7115)], with thanks to @birkskyum for the contribution! + - Fix centroid calculation in turf [[#7115](https://github.com/plotly/plotly.js/pull/7115)], with thanks to @birkskyum for the contribution! \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 59def33838a..0c6e9dab90b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/mapbox-gl": "1.13.4", - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/centroid": "^7.1.0", + "@turf/area": "^6.5.0", + "@turf/bbox": "^6.5.0", + "@turf/centroid": "^6.5.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", @@ -2613,71 +2613,55 @@ } }, "node_modules/@turf/area": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", - "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", - "license": "MIT", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz", + "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/bbox": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", - "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", - "license": "MIT", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/centroid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", - "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", - "license": "MIT", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz", + "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/helpers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", - "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", - "license": "MIT", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "funding": { "url": "https://opencollective.com/turf" } }, "node_modules/@turf/meta": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", - "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", - "license": "MIT", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10" + "@turf/helpers": "^6.5.0" }, "funding": { "url": "https://opencollective.com/turf" @@ -12499,12 +12483,6 @@ "node": ">=6" } }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "license": "0BSD" - }, "node_modules/tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", diff --git a/package.json b/package.json index 87e468da773..5a49e94ea79 100644 --- a/package.json +++ b/package.json @@ -71,9 +71,9 @@ "@plotly/d3-sankey": "0.7.2", "@plotly/d3-sankey-circular": "0.33.1", "@plotly/mapbox-gl": "1.13.4", - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/centroid": "^7.1.0", + "@turf/area": "^6.5.0", + "@turf/bbox": "^6.5.0", + "@turf/centroid": "^6.5.0", "base64-arraybuffer": "^1.0.2", "canvas-fit": "^1.5.0", "color-alpha": "1.0.4", diff --git a/src/lib/geo_location_utils.js b/src/lib/geo_location_utils.js index e15659f8f45..a691e5c3eee 100644 --- a/src/lib/geo_location_utils.js +++ b/src/lib/geo_location_utils.js @@ -2,9 +2,9 @@ var d3 = require('@plotly/d3'); var countryRegex = require('country-regex'); -var { area: turfArea } = require('@turf/area'); -var { centroid: turfCentroid } = require('@turf/centroid'); -var { bbox: turfBbox } = require('@turf/bbox'); +var turfArea = require('@turf/area'); +var turfCentroid = require('@turf/centroid'); +var turfBbox = require('@turf/bbox'); var identity = require('./identity'); var loggers = require('./loggers'); @@ -295,7 +295,7 @@ function findCentroid(feature) { for(var i = 0; i < coords.length; i++) { var polyi = {type: 'Polygon', coordinates: coords[i]}; - var area = turfArea(polyi); + var area = turfArea.default(polyi); if(area > maxArea) { maxArea = area; poly = polyi; @@ -305,7 +305,7 @@ function findCentroid(feature) { poly = geometry; } - return turfCentroid(poly).geometry.coordinates; + return turfCentroid.default(poly).geometry.coordinates; } function fetchTraceGeoData(calcData) { @@ -366,7 +366,7 @@ function fetchTraceGeoData(calcData) { // TODO `turf/bbox` gives wrong result when the input feature/geometry // crosses the anti-meridian. We should try to implement our own bbox logic. function computeBbox(d) { - return turfBbox(d); + return turfBbox.default(d); } module.exports = {