From a9918e614a8eb9718f18779ce0886c3b9b7409e2 Mon Sep 17 00:00:00 2001 From: Harel M Date: Sun, 12 Jan 2025 17:21:47 +0200 Subject: [PATCH] Revert breaking changes in`geomerty-type` (#5331) * Update spec package * Update changelog * Update test to reflect revert * Update changelog * Simplify scratched out breaking change --- CHANGELOG.md | 14 ++++---------- package-lock.json | 8 ++++---- package.json | 2 +- .../geometry-type/all-geometries/expected.png | Bin 11531 -> 9737 bytes 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60dae150ab..4a5ca51cc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,24 +1,18 @@ ## main ### ✨ Features and improvements -- _...Add new stuff here..._ + +- Revert changes made in `geometry-type` ([#5285](https://github.com/maplibre/maplibre-gl-js/pull/5331)). This change was causing issues in a [large number of styles](https://github.com/maplibre/maplibre-style-spec/issues/965) and thus reverted. ### 🐞 Bug fixes -- Skip control button css hover effects on touch devices (https://github.com/maplibre/maplibre-gl-js/pull/5285) +- Skip control button css hover effects on touch devices ([#5285](https://github.com/maplibre/maplibre-gl-js/pull/5285)) ## 5.0.0 ### ✨ Features and improvements -- ⚠️ Changed `geometry-type` to identify "Multi-" features ([#4877](https://github.com/maplibre/maplibre-gl-js/pull/4877)). Use `$type` which has no "Multi-" support or use `in` expression to get the previous behavior. - Example: - ⚠️ This change means that a filter like `["==", ["geometry-type"], "Polygon"]` would not display `MultiPolygon` features any more. - To fix this, you can - ```diff - - "filter": ["==", ["geometry-type"], "Polygon"] - + "filter": ["==", "$type", "Polygon"] - ``` +- ~~⚠️ Changed `geometry-type` to identify "Multi-" features ([#4877](https://github.com/maplibre/maplibre-gl-js/pull/4877)). Use `$type` which has no "Multi-" support or use `in` expression to get the previous behavior.~~ - ⚠️ `StyleLayer`'s `queryIntersectsFeature` method parameters were moved to `QueryIntersectsFeatureParams`. ([#5276](https://github.com/maplibre/maplibre-gl-js/pull/5276)) Wrap the method parameters with `{}` to solve this - ⚠️ Support setting WebGL context options on map creation ([#5196](https://github.com/maplibre/maplibre-gl-js/pull/5196)). Previously supported WebGL context options like `antialias`, `preserveDrawingBuffer` and `failIfMajorPerformanceCaveat` must now be defined inside the `canvasContextAttributes` object on `MapOptions`. - ⚠️ Change the return type of `on` method to return a `Subscription` to allow for easy unsubscribe ([#5080](https://github.com/maplibre/maplibre-gl-js/pull/5080)). `map.on('x').on('y')` => `map.on('x'); map.on('y');`. diff --git a/package-lock.json b/package-lock.json index 3869d4bdc2..2f322e8b56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^22.0.1", + "@maplibre/maplibre-gl-style-spec": "^23.0.0", "@types/geojson": "^7946.0.15", "@types/geojson-vt": "3.2.5", "@types/mapbox__point-geometry": "^0.1.4", @@ -2243,9 +2243,9 @@ } }, "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "22.0.1", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-22.0.1.tgz", - "integrity": "sha512-V7bSw7Ui6+NhpeeuYqGoqamvKuy+3+uCvQ/t4ZJkwN8cx527CAlQQQ2kp+w5R9q+Tw6bUAH+fsq+mPEkicgT8g==", + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-23.0.0.tgz", + "integrity": "sha512-Q3L4TTs/cAuebQolBrDvfoLj3f/9C+wo2qiup9paye+e77IXoAAoZnR+2M/qEiZWAPfPZWuARLx81a5PN5LTUw==", "dependencies": { "@mapbox/jsonlint-lines-primitives": "~2.0.2", "@mapbox/unitbezier": "^0.0.1", diff --git a/package.json b/package.json index ab559bfdd4..02e8a246d3 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@mapbox/unitbezier": "^0.0.1", "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", - "@maplibre/maplibre-gl-style-spec": "^22.0.1", + "@maplibre/maplibre-gl-style-spec": "^23.0.0", "@types/geojson": "^7946.0.15", "@types/geojson-vt": "3.2.5", "@types/mapbox__point-geometry": "^0.1.4", diff --git a/test/integration/render/tests/geometry-type/all-geometries/expected.png b/test/integration/render/tests/geometry-type/all-geometries/expected.png index 44a92c74087236956591b3f88b9bc8519918222e..0f57d44a90d24b8d949b3dee044bd5f4e494b38e 100644 GIT binary patch literal 9737 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 HcKv?<8IbGB