diff --git a/package-lock.json b/package-lock.json index 74808d41..dc7d615b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@mapbox/mapbox-gl-rtl-text": "^0.2.3", "@maplibre/maplibre-gl-geocoder": "^1.5.0", + "@maplibre/maplibre-gl-inspect": "^1.6.3", "@maplibre/maplibre-gl-style-spec": "^20.1.0", "@mdi/js": "^6.6.96", "@mdi/react": "^1.5.0", @@ -33,12 +34,10 @@ "lodash.get": "^4.4.2", "lodash.isequal": "^4.5.0", "lodash.throttle": "^4.1.1", - "mapbox-gl-inspect": "^1.3.1", "maplibre-gl": "^4.0.0", "maputnik-design": "github:maputnik/design#172b06c", "ol": "^6.14.1", "ol-mapbox-style": "^7.1.1", - "patch-package": "^8.0.0", "prop-types": "^15.8.1", "react": "^16.0.0", "react-accessible-accordion": "^4.0.0", @@ -76,6 +75,7 @@ "@types/lodash.get": "^4.4.9", "@types/lodash.isequal": "^4.5.8", "@types/lodash.throttle": "^4.1.9", + "@types/randomcolor": "^0.5.9", "@types/react": "^16.14.52", "@types/react-aria-menubutton": "^6.2.13", "@types/react-aria-modal": "^4.0.9", @@ -2591,6 +2591,23 @@ "maplibre-gl": ">=1.14.0" } }, + "node_modules/@maplibre/maplibre-gl-inspect": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-inspect/-/maplibre-gl-inspect-1.6.3.tgz", + "integrity": "sha512-lJqLyTyrkhKF5+4bkXw7+ldzjFLtn6EiFj1dqrnvbCUo/ci7hSXflJFvDNjKjz5mAxGxdAOp0ku3k5bPwdTWAQ==", + "dependencies": { + "lodash.isequal": "^4.5.0", + "randomcolor": "^0.6.2" + }, + "peerDependencies": { + "maplibre-gl": ">3.0.0" + } + }, + "node_modules/@maplibre/maplibre-gl-inspect/node_modules/randomcolor": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/randomcolor/-/randomcolor-0.6.2.tgz", + "integrity": "sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A==" + }, "node_modules/@maplibre/maplibre-gl-style-spec": { "version": "20.1.0", "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.1.0.tgz", @@ -3473,6 +3490,12 @@ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", "dev": true }, + "node_modules/@types/randomcolor": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@types/randomcolor/-/randomcolor-0.5.9.tgz", + "integrity": "sha512-k58cfpkK15AKn1m+oRd9nh5BnuiowhbyvBBdAzcddtARMr3xRzP0VlFaAKovSG6N6Knx08EicjPlOMzDejerrQ==", + "dev": true + }, "node_modules/@types/react": { "version": "16.14.55", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.55.tgz", @@ -4105,11 +4128,6 @@ "dev": true, "peer": true }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" - }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -4564,6 +4582,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, "engines": { "node": ">= 4.0.0" } @@ -5194,6 +5213,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -7072,14 +7092,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dependencies": { - "micromatch": "^4.0.2" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -7180,6 +7192,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -7579,7 +7592,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/grapheme-splitter": { "version": "1.0.4", @@ -8098,20 +8112,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -8416,21 +8416,11 @@ "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -8988,23 +8978,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "node_modules/json-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", - "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", - "dependencies": { - "call-bind": "^1.0.5", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -9049,6 +9022,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -9056,14 +9030,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/jsonlint": { "version": "1.6.2", "resolved": "git+ssh://git@github.com/josdejong/jsonlint.git#85a19d77126771f3177582e3d09c6ffae185d391", @@ -9138,14 +9104,6 @@ "node": ">=0.10.0" } }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, "node_modules/known-css-properties": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", @@ -9627,18 +9585,6 @@ "node": ">=6.4.0" } }, - "node_modules/mapbox-gl-inspect": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mapbox-gl-inspect/-/mapbox-gl-inspect-1.3.1.tgz", - "integrity": "sha512-qkcT8lcYQy2x8wn+BUb6a6YXCEIHeGKHlt01/FSf58yYEmeufuihtbCjN9of2JDQm2XeRGdDEksAH7if7tPyyg==", - "dependencies": { - "lodash.isequal": "^4.4.0", - "randomcolor": "^0.4.4" - }, - "peerDependencies": { - "mapbox-gl": ">0.28.0" - } - }, "node_modules/mapbox-to-css-font": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz", @@ -10561,6 +10507,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -10713,21 +10660,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -10744,14 +10676,6 @@ "node": ">= 0.8.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", @@ -10873,170 +10797,6 @@ "node": ">= 0.8" } }, - "node_modules/patch-package": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", - "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", - "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "ci-info": "^3.7.0", - "cross-spawn": "^7.0.3", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "json-stable-stringify": "^1.0.2", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^7.5.3", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^2.2.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=14", - "npm": ">5" - } - }, - "node_modules/patch-package/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/patch-package/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/patch-package/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/patch-package/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/patch-package/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/patch-package/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/patch-package/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/patch-package/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/patch-package/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/patch-package/node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11423,11 +11183,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomcolor": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/randomcolor/-/randomcolor-0.4.4.tgz", - "integrity": "sha512-P/TR+4tzL9qXlSl6PD7Ur4q1nAkmXTPce0e2WyuhhOc1q1AmmXBSA3wPYmNLdxxDBx9x6tfd6ivsGA5YJtztug==" - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -13672,6 +13427,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "engines": { "node": ">= 10.0.0" } diff --git a/package.json b/package.json index 3230a93b..38272065 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,7 @@ "lint": "eslint ./src ./cypress --ext ts,tsx,js,jsx --report-unused-disable-directives --max-warnings 0", "test": "cypress run", "cy:open": "cypress open", - "lint-css": "stylelint \"src/styles/*.scss\"", - "install": "patch-package" + "lint-css": "stylelint \"src/styles/*.scss\"" }, "repository": { "type": "git", @@ -23,6 +22,7 @@ "dependencies": { "@mapbox/mapbox-gl-rtl-text": "^0.2.3", "@maplibre/maplibre-gl-geocoder": "^1.5.0", + "@maplibre/maplibre-gl-inspect": "^1.6.3", "@maplibre/maplibre-gl-style-spec": "^20.1.0", "@mdi/js": "^6.6.96", "@mdi/react": "^1.5.0", @@ -45,12 +45,10 @@ "lodash.get": "^4.4.2", "lodash.isequal": "^4.5.0", "lodash.throttle": "^4.1.1", - "mapbox-gl-inspect": "^1.3.1", "maplibre-gl": "^4.0.0", "maputnik-design": "github:maputnik/design#172b06c", "ol": "^6.14.1", "ol-mapbox-style": "^7.1.1", - "patch-package": "^8.0.0", "prop-types": "^15.8.1", "react": "^16.0.0", "react-accessible-accordion": "^4.0.0", @@ -105,6 +103,7 @@ "@types/lodash.get": "^4.4.9", "@types/lodash.isequal": "^4.5.8", "@types/lodash.throttle": "^4.1.9", + "@types/randomcolor": "^0.5.9", "@types/react": "^16.14.52", "@types/react-aria-menubutton": "^6.2.13", "@types/react-aria-modal": "^4.0.9", diff --git a/patches/mapbox-gl-inspect+1.3.1.patch b/patches/mapbox-gl-inspect+1.3.1.patch deleted file mode 100644 index b1e9d1b1..00000000 --- a/patches/mapbox-gl-inspect+1.3.1.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/node_modules/mapbox-gl-inspect/lib/MapboxInspect.js b/node_modules/mapbox-gl-inspect/lib/MapboxInspect.js -index ea9bf07..3e7ab38 100644 ---- a/node_modules/mapbox-gl-inspect/lib/MapboxInspect.js -+++ b/node_modules/mapbox-gl-inspect/lib/MapboxInspect.js -@@ -159,7 +159,12 @@ MapboxInspect.prototype._onSourceChange = function () { - }); - - if (!isEqual(previousSources, sources) && Object.keys(sources).length > 0) { -- this.render(); -+ setTimeout(() => { -+ // The calling method is being called when the sources are being updated. -+ // render might call setStyle, which is not a good idea while updating the source. -+ // So, we are delaying the render to the next event loop. -+ this.render(); -+ }, 100); - } - }; - diff --git a/src/components/MapMaplibreGl.tsx b/src/components/MapMaplibreGl.tsx index 1d440d36..2b4d6085 100644 --- a/src/components/MapMaplibreGl.tsx +++ b/src/components/MapMaplibreGl.tsx @@ -1,10 +1,8 @@ import React, {type JSX} from 'react' import ReactDOM from 'react-dom' import MapLibreGl, {LayerSpecification, LngLat, Map, MapOptions, SourceSpecification, StyleSpecification} from 'maplibre-gl' -// @ts-ignore -import MapboxInspect from 'mapbox-gl-inspect' -// @ts-ignore -import colors from 'mapbox-gl-inspect/lib/colors' +import MaplibreInspect from '@maplibre/maplibre-gl-inspect' +import colors from '@maplibre/maplibre-gl-inspect/lib/colors' import MapMaplibreGlLayerPopup from './MapMaplibreGlLayerPopup' import MapMaplibreGlFeaturePropertyPopup, { InspectFeature } from './MapMaplibreGlFeaturePropertyPopup' import Color from 'color' @@ -17,9 +15,9 @@ import '../libs/maplibre-rtl' import MaplibreGeocoder from '@maplibre/maplibre-gl-geocoder'; import '@maplibre/maplibre-gl-geocoder/dist/maplibre-gl-geocoder.css'; -function renderPopup(popup: JSX.Element, mountNode: ReactDOM.Container) { +function renderPopup(popup: JSX.Element, mountNode: ReactDOM.Container): HTMLElement { ReactDOM.render(popup, mountNode); - return mountNode; + return mountNode as HTMLElement; } function buildInspectStyle(originalMapStyle: StyleSpecification, coloredLayers: HighlightedLayer[], highlightedLayer?: HighlightedLayer) { @@ -37,6 +35,7 @@ function buildInspectStyle(originalMapStyle: StyleSpecification, coloredLayers: } const sources: {[key:string]: SourceSpecification} = {} + Object.keys(originalMapStyle.sources).forEach(sourceId => { const source = originalMapStyle.sources[sourceId] if(source.type !== 'raster' && source.type !== 'raster-dem') { @@ -69,7 +68,7 @@ type MapMaplibreGlProps = { type MapMaplibreGlState = { map: Map | null - inspect: MapboxInspect | null + inspect: MaplibreInspect | null zoom?: number }; @@ -96,6 +95,11 @@ export default class MapMaplibreGl extends React.Component, while we wait for a proper fix. - // eslint-disable-next-line - this.state.inspect._popupBlocked = false; this.state.inspect.toggleInspector() } + if (this.state.inspect && this.props.inspectModeEnabled) { + this.state.inspect!.setOriginalStyle(this.props.replaceAccessTokens(this.props.mapStyle)); + } if (map) { - if (this.props.inspectModeEnabled) { - // HACK: We need to work out why we need to do this and what's causing - // this error. I'm assuming an issue with maplibre-gl update and - // mapbox-gl-inspect. - try { - this.state.inspect.render(); - } catch(err) { - console.error("FIXME: Caught error", err); - } - } - map.showTileBoundaries = this.props.options?.showTileBoundaries!; map.showCollisionBoxes = this.props.options?.showCollisionBoxes!; map.showOverdrawInspector = this.props.options?.showOverdrawInspector!; @@ -173,7 +166,7 @@ export default class MapMaplibreGl extends React.Component {key} {value} @@ -27,8 +23,8 @@ function renderKeyValueTableRow(key: string, value: string) { } function renderFeature(feature: InspectFeature, idx: number) { - return <> - + return + {feature.layer['source']}: {feature.layer['source-layer']}{feature.inspectModeCounter && × {feature.inspectModeCounter}} {renderKeyValueTableRow("$type", feature.geometry.type)} @@ -37,7 +33,7 @@ function renderFeature(feature: InspectFeature, idx: number) { const property = feature.properties[propertyName]; return renderKeyValueTableRow(propertyName, displayValue(property)) })} - + } function removeDuplicatedFeatures(features: InspectFeature[]) { @@ -72,7 +68,9 @@ class FeaturePropertyPopup extends React.Component { const features = removeDuplicatedFeatures(this.props.features) return
- {features.map(renderFeature)} + + {features.map(renderFeature)} +
} diff --git a/src/components/MapMaplibreGlLayerPopup.tsx b/src/components/MapMaplibreGlLayerPopup.tsx index 42291562..fbe665c4 100644 --- a/src/components/MapMaplibreGlLayerPopup.tsx +++ b/src/components/MapMaplibreGlLayerPopup.tsx @@ -8,15 +8,16 @@ function groupFeaturesBySourceLayer(features: InspectFeature[]) { const returnedFeatures: {[key: string]: number} = {} features.forEach(feature => { + const sourceKey = feature.layer['source-layer'] as string; if(Object.prototype.hasOwnProperty.call(returnedFeatures, feature.layer.id)) { returnedFeatures[feature.layer.id]++ - const featureObject = sources[feature.layer['source-layer']].find((f: InspectFeature) => f.layer.id === feature.layer.id) + const featureObject = sources[sourceKey].find((f: InspectFeature) => f.layer.id === feature.layer.id) featureObject!.counter = returnedFeatures[feature.layer.id] } else { - sources[feature.layer['source-layer']] = sources[feature.layer['source-layer']] || [] - sources[feature.layer['source-layer']].push(feature) + sources[sourceKey] = sources[sourceKey] || [] + sources[sourceKey].push(feature) returnedFeatures[feature.layer.id] = 1 } @@ -40,29 +41,21 @@ class FeatureLayerPopup extends React.Component { try { const paintProps = feature.layer.paint; - let propName; - if(Object.prototype.hasOwnProperty.call(paintProps, "text-color") && paintProps["text-color"]) { - propName = "text-color"; + if("text-color" in paintProps && paintProps["text-color"]) { + return String(paintProps["text-color"]); } - else if (Object.prototype.hasOwnProperty.call(paintProps, "fill-color") && paintProps["fill-color"]) { - propName = "fill-color"; + if ("fill-color" in paintProps && paintProps["fill-color"]) { + return String(paintProps["fill-color"]); } - else if (Object.prototype.hasOwnProperty.call(paintProps, "line-color") && paintProps["line-color"]) { - propName = "line-color"; + if ("line-color" in paintProps && paintProps["line-color"]) { + return String(paintProps["line-color"]); } - else if (Object.prototype.hasOwnProperty.call(paintProps, "fill-extrusion-color") && paintProps["fill-extrusion-color"]) { - propName = "fill-extrusion-color"; - } - - if(propName) { - const color = feature.layer.paint[propName]; - return String(color); - } - else { - // Default color - return "black"; + if ("fill-extrusion-color" in paintProps && paintProps["fill-extrusion-color"]) { + return String(paintProps["fill-extrusion-color"]); } + // Default color + return "black"; } // This is quite complex, just incase there's an edgecase we're missing // always return black if we get an unexpected error. diff --git a/src/libs/highlight.ts b/src/libs/highlight.ts index e6fe5686..511e35e6 100644 --- a/src/libs/highlight.ts +++ b/src/libs/highlight.ts @@ -1,7 +1,5 @@ -// @ts-ignore -import stylegen from 'mapbox-gl-inspect/lib/stylegen' -// @ts-ignore -import colors from 'mapbox-gl-inspect/lib/colors' +import stylegen from '@maplibre/maplibre-gl-inspect/lib/stylegen' +import colors from '@maplibre/maplibre-gl-inspect/lib/colors' import type {FilterSpecification,LayerSpecification } from 'maplibre-gl' export type HighlightedLayer = LayerSpecification & {filter?: FilterSpecification};