From 144c0c89a55a93f011d7b90170c7dee748de8189 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Date: Thu, 11 May 2023 22:56:23 +0200 Subject: [PATCH 01/30] chore(docs): update docs website --- README.md | 172 +++++++++++++++++++++++++----------------------------- 1 file changed, 80 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index e1df035e..2cf70211 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- + Geoman Logo

@@ -8,7 +8,7 @@

Leaflet Plugin For Creating And Editing Geometry Layers
- Draw, Edit, Drag, Cut, Rotate, Split⭐, Scale⭐, Measure⭐, Snap and Pin⭐ Layers
+ Draw, Edit, Drag, Cut, Rotate, Split, Scale, Measure, Snap and Pin Layers
Supports Markers, CircleMarkers, Polylines, Polygons, Circles, Rectangles, ImageOverlays, LayerGroups, GeoJSON, MultiLineStrings and MultiPolygons

@@ -17,117 +17,105 @@ - - - star this repo - - - NPM Downloads - + NPM Downloads

-## [👉 Live Demo 👈](https://geoman.io/leaflet-geoman) - -![Demo](https://file-gmeileqfmg.now.sh/) - -### Using Leaflet-Geoman in production? -[Please consider sponsoring its development](https://github.com/sponsors/codeofsumit) +## [👉 Live Demo 👈](https://www.geoman.io/demo) -#### Leaflet-Geoman Pro ⭐ -Features marked with ⭐ in this documentation are available in Leaflet-Geoman Pro. [Purchase Pro](https://geoman.io/leaflet-geoman-pro#pricing) or [get in touch](mailto:sumit@geoman.io) +![Demo](https://file-gmeileqfmg.now.sh/) -## Documentation - -- [Installation](#installation) -- [Getting Started](#getting-started) -- [Draw Mode](#draw-mode) -- [Edit Mode](#edit-mode) -- [Drag Mode](#drag-mode) -- [Removal Mode](#removal-mode) -- [Cut Mode](#cut-mode) -- [Rotation Mode](#rotation-mode) +### Leaflet-Geoman Pro ⭐ +Features marked with ⭐ in this documentation are only available with a Pro license. + +[View Pricing](https://www.geoman.io/#pricing) + +## Documentation + +- [Installation](#installation) +- [Getting Started](#getting-started) +- [Draw Mode](#draw-mode) +- [Edit Mode](#edit-mode) +- [Drag Mode](#drag-mode) +- [Removal Mode](#removal-mode) +- [Cut Mode](#cut-mode) +- [Rotation Mode](#rotation-mode) - [Split Mode ⭐](#split-mode-) - [Scale Mode ⭐](#scale-mode-) - [Text Layer](#text-layer) -- [Options](#options) +- [Options](#options) - [Snapping](#snapping) - [Pinning ⭐](#pinning-) - [Measurement ⭐](#measurement-) - [AutoTracing ⭐](#autotracing-) - [LayerGroup](#layergroup) -- [Customization](#customize) -- [Toolbar](#toolbar) -- [Utils](#utils) -- [Lazy loading](#lazy-loading) -- [Need a feature? | Existing Feature Requests](https://github.com/geoman-io/Leaflet-Geoman/issues?q=is%3Aissue+is%3Aclosed+label%3A%22feature+request%22+sort%3Areactions-%2B1-desc) - - -### Installation - -#### Migrate from Leaflet.PM - -``` -npm uninstall leaflet.pm -npm i @geoman-io/leaflet-geoman-free -``` -That's it. - -#### Install via npm - -``` -npm i @geoman-io/leaflet-geoman-free -``` - -#### Install Manually - +- [Customization](#customize) +- [Toolbar](#toolbar) +- [Utils](#utils) +- [Lazy loading](#lazy-loading) +- [Need a feature? | Existing Feature Requests](https://github.com/geoman-io/Leaflet-Geoman/issues?q=is%3Aissue+is%3Aclosed+label%3A%22feature+request%22+sort%3Areactions-%2B1-desc) + +### Installation + +#### Install via npm + +``` +npm i @geoman-io/leaflet-geoman-free +``` + +#### Install Manually + Download [`leaflet-geoman.css`](https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.css) and [`leaflet-geoman.min.js`](https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.min.js) -and include them in your project. - -#### Include via CDN - -CSS - - -```html - - -``` - -JS - -```html - -``` - -#### Include as ES6 Module - -```js -import '@geoman-io/leaflet-geoman-free'; -import '@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css'; -``` - -### Getting Started - -#### Init Leaflet-Geoman - +and include them in your project. + +#### Include via CDN + +CSS + + +```html + +``` + +JS + +```html + +``` + +#### Include as ES6 Module + +```js +import '@geoman-io/leaflet-geoman-free'; +import '@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css'; +``` + +### Getting Started + +#### Init Leaflet-Geoman + Just include `leaflet-geoman.min.js` right after Leaflet. It initializes itself. If you want certain layers to be ignored by Leaflet-Geoman, pass `pmIgnore: true` to -their options when creating them. Example: - -```js -L.marker([51.50915, -0.096112], { pmIgnore: true }).addTo(map); -``` - -Enable Leaflet-Geoman on an ignored layer: -```js +their options when creating them. Example: + +```js +L.marker([51.50915, -0.096112], { pmIgnore: true }).addTo(map); +``` + +Enable Leaflet-Geoman on an ignored layer: + +```js layer.options.pmIgnore = false; -L.PM.reInitLayer(layer); -``` +L.PM.reInitLayer(layer); +``` + If `Opt-In` (look below) is `true`, a layers `pmIgnore` property has to be set to `false` to get initiated. #### Opt-In From 39e3debd4569563b5e45215d5c27112e003d62c3 Mon Sep 17 00:00:00 2001 From: andreasvatne Date: Mon, 5 Jun 2023 02:21:02 +1000 Subject: [PATCH 02/30] Fix Norwegian translation typos (lower case) (#1322) (patch) * Fix Norwegian translation typoes (lower case) * Translate missing items to Norwegian --- src/assets/translations/no.json | 36 ++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/assets/translations/no.json b/src/assets/translations/no.json index 09774f6d..25803ca4 100644 --- a/src/assets/translations/no.json +++ b/src/assets/translations/no.json @@ -8,7 +8,8 @@ "finishRect": "Klikk for å fullføre", "startCircle": "Klikk for å sette sirkel midtpunkt", "finishCircle": "Klikk for å fullføre sirkel", - "placeCircleMarker": "Klikk for å plassere sirkel" + "placeCircleMarker": "Klikk for å plassere sirkel", + "placeText": "Klikk for å plassere tekst" }, "actions": { "finish": "Fullfør", @@ -16,17 +17,32 @@ "removeLastVertex": "Fjern forrige punkt" }, "buttonTitles": { - "drawMarkerButton": "Tegn Punkt", - "drawPolyButton": "Tegn Flate", - "drawLineButton": "Tegn Linje", - "drawCircleButton": "Tegn Sirkel", + "drawMarkerButton": "Tegn punkt", + "drawPolyButton": "Tegn flate", + "drawLineButton": "Tegn linje", + "drawCircleButton": "Tegn sirkel", "drawRectButton": "Tegn rektangel", - "editButton": "Rediger Objekter", - "dragButton": "Dra Objekter", - "cutButton": "Kutt Objekter", - "deleteButton": "Fjern Objekter", + "editButton": "Rediger objekter", + "dragButton": "Dra objekter", + "cutButton": "Kutt objekter", + "deleteButton": "Fjern objekter", "drawCircleMarkerButton": "Tegn sirkel-punkt", "snappingButton": "Fest dratt punkt til andre objekter og punkt", - "pinningButton": "Pin delte punkt sammen" + "pinningButton": "Pin delte punkter sammen", + "rotateButton": "Rotér objekter", + "drawTextButton": "Tegn tekst", + "scaleButton": "Skalér objekter", + "autoTracingButton": "Automatisk sporing av linje" + }, + "measurements": { + "totalLength": "Lengde", + "segmentLength": "Segmentlengde", + "area": "Område", + "radius": "Radius", + "perimeter": "Omriss", + "height": "Høyde", + "width": "Bredde", + "coordinates": "Posisjon", + "coordinatesMarker": "Posisjonsmarkør" } } From 929f221ee04acc58588019f1721b70bc364d8e8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jun 2023 18:21:24 +0200 Subject: [PATCH 03/30] chore(deps): Bump minimist from 1.2.5 to 1.2.8 (#1325) Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8. - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 691b7687..d2930218 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@geoman-io/leaflet-geoman-free", - "version": "2.13.1", + "version": "2.14.2", "license": "MIT", "dependencies": { "@turf/boolean-contains": "^6.5.0", @@ -6044,10 +6044,13 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { "version": "0.5.5", @@ -12789,9 +12792,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "mkdirp": { From 0698d69ac5b58ec76774e5f56ff60d647708c86b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 4 Jun 2023 18:21:31 +0200 Subject: [PATCH 04/30] chore(deps-dev): Bump webpack from 5.36.2 to 5.76.0 (#1335) Bumps [webpack](https://github.com/webpack/webpack) from 5.36.2 to 5.76.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.36.2...v5.76.0) --- updated-dependencies: - dependency-name: webpack dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 557 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 277 insertions(+), 282 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2930218..9aeefe9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ "prosthetic-hand": "1.3.1", "terser-webpack-plugin": "^5.1.2", "url-loader": "4.1.1", - "webpack": "5.36.2", + "webpack": "5.76.0", "webpack-cli": "4.7.0" }, "peerDependencies": { @@ -2064,9 +2064,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", - "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "version": "8.21.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.2.tgz", + "integrity": "sha512-EMpxUyystd3uZVByZap1DACsMXvb82ypQnGn89e1Y0a+LYu3JJscUd/gqhRsVFDkaD2MIiWo0MT8EfXr3DGRKw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -2074,9 +2074,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz", - "integrity": "sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -2084,9 +2084,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.47", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", - "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "node_modules/@types/geojson": { @@ -2134,148 +2134,148 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -3496,9 +3496,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -3576,9 +3576,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, "node_modules/es-to-primitive": { @@ -4664,9 +4664,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/has": { @@ -5361,10 +5361,10 @@ "node": ">=4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "node_modules/json-schema": { @@ -7913,9 +7913,9 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -7926,34 +7926,35 @@ } }, "node_modules/webpack": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.36.2.tgz", - "integrity": "sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.47", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.2.1", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", + "schema-utils": "^3.1.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -8101,9 +8102,9 @@ } }, "node_modules/webpack/node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -8112,6 +8113,15 @@ "node": ">=0.4.0" } }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -8130,24 +8140,11 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, "engines": { "node": ">=10.13.0" } @@ -9740,9 +9737,9 @@ } }, "@types/eslint": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz", - "integrity": "sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==", + "version": "8.21.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.2.tgz", + "integrity": "sha512-EMpxUyystd3uZVByZap1DACsMXvb82ypQnGn89e1Y0a+LYu3JJscUd/gqhRsVFDkaD2MIiWo0MT8EfXr3DGRKw==", "dev": true, "requires": { "@types/estree": "*", @@ -9750,9 +9747,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz", - "integrity": "sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -9760,9 +9757,9 @@ } }, "@types/estree": { - "version": "0.0.47", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", - "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, "@types/geojson": { @@ -9810,148 +9807,148 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -10868,9 +10865,9 @@ } }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -10930,9 +10927,9 @@ } }, "es-module-lexer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, "es-to-primitive": { @@ -11775,9 +11772,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "has": { @@ -12267,10 +12264,10 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, "json-schema": { @@ -14201,9 +14198,9 @@ } }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -14211,42 +14208,50 @@ } }, "webpack": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.36.2.tgz", - "integrity": "sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.47", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.2.1", + "version": "5.76.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", + "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", + "schema-utils": "^3.1.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, "dependencies": { "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", @@ -14258,21 +14263,11 @@ "ajv-keywords": "^3.5.2" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true } } }, diff --git a/package.json b/package.json index 4a01a52b..b28d2cb7 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "prosthetic-hand": "1.3.1", "terser-webpack-plugin": "^5.1.2", "url-loader": "4.1.1", - "webpack": "5.36.2", + "webpack": "5.76.0", "webpack-cli": "4.7.0" }, "peerDependencies": { From c3461b3475e1891de4fe27f0457fc91469359970 Mon Sep 17 00:00:00 2001 From: beig Date: Sun, 4 Jun 2023 18:24:37 +0200 Subject: [PATCH 05/30] Fix listen to layerremove instead of pm:remove to keep snapList updated (#1343) Co-authored-by: Sumit Kumar --- src/js/Mixins/Snapping.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/js/Mixins/Snapping.js b/src/js/Mixins/Snapping.js index aa8011fb..38dc9b91 100644 --- a/src/js/Mixins/Snapping.js +++ b/src/js/Mixins/Snapping.js @@ -48,7 +48,7 @@ const SnapMixin = { } // remove map event - this._map.off('pm:remove', this._handleSnapLayerRemoval, this); + this._map.off('layerremove', this._handleSnapLayerRemoval, this); if (this.debugIndicatorLines) { this.debugIndicatorLines.forEach((line) => { @@ -183,8 +183,8 @@ const SnapMixin = { const debugIndicatorLines = []; const map = this._map; - map.off('pm:remove', this._handleSnapLayerRemoval, this); - map.on('pm:remove', this._handleSnapLayerRemoval, this); + map.off('layerremove', this._handleSnapLayerRemoval, this); + map.on('layerremove', this._handleSnapLayerRemoval, this); // find all layers that are or inherit from Polylines... and markers that are not // temporary markers of polygon-edits @@ -257,12 +257,17 @@ const SnapMixin = { this.debugIndicatorLines = debugIndicatorLines; }, _handleSnapLayerRemoval({ layer }) { + if (!layer._leaflet_id) { + return; + } // find the layers index in snaplist const index = this._snapList.findIndex( (e) => e._leaflet_id === layer._leaflet_id ); - // remove it from the snaplist - this._snapList.splice(index, 1); + if (index > -1) { + // remove it from the snaplist + this._snapList.splice(index, 1); + } }, _calcClosestLayer(latlng, layers) { return this._calcClosestLayers(latlng, layers, 1)[0]; From 932d4a986ec5853f183a1a69fa8d9d55bff963de Mon Sep 17 00:00:00 2001 From: Sumit Kumar Date: Wed, 7 Jun 2023 18:21:42 +0200 Subject: [PATCH 06/30] update docs (patch) (#1360) * update docs to link to new docs & demo * update package.json URLs * move image up * update comment link --- README.md | 1212 +----------------------------------------------- package.json | 4 +- src/js/L.PM.js | 2 +- 3 files changed, 8 insertions(+), 1210 deletions(-) diff --git a/README.md b/README.md index 2cf70211..91d5c20f 100644 --- a/README.md +++ b/README.md @@ -21,1219 +21,17 @@ NPM Downloads -

- -## [👉 Live Demo 👈](https://www.geoman.io/demo) - -![Demo](https://file-gmeileqfmg.now.sh/) - -### Leaflet-Geoman Pro ⭐ -Features marked with ⭐ in this documentation are only available with a Pro license. +

-[View Pricing](https://www.geoman.io/#pricing) +![Demo](https://file-gmeileqfmg.now.sh/) ## Documentation -- [Installation](#installation) -- [Getting Started](#getting-started) -- [Draw Mode](#draw-mode) -- [Edit Mode](#edit-mode) -- [Drag Mode](#drag-mode) -- [Removal Mode](#removal-mode) -- [Cut Mode](#cut-mode) -- [Rotation Mode](#rotation-mode) -- [Split Mode ⭐](#split-mode-) -- [Scale Mode ⭐](#scale-mode-) -- [Text Layer](#text-layer) -- [Options](#options) - - [Snapping](#snapping) - - [Pinning ⭐](#pinning-) - - [Measurement ⭐](#measurement-) - - [AutoTracing ⭐](#autotracing-) -- [LayerGroup](#layergroup) -- [Customization](#customize) -- [Toolbar](#toolbar) -- [Utils](#utils) -- [Lazy loading](#lazy-loading) -- [Need a feature? | Existing Feature Requests](https://github.com/geoman-io/Leaflet-Geoman/issues?q=is%3Aissue+is%3Aclosed+label%3A%22feature+request%22+sort%3Areactions-%2B1-desc) - -### Installation - -#### Install via npm - -``` -npm i @geoman-io/leaflet-geoman-free -``` - -#### Install Manually - -Download -[`leaflet-geoman.css`](https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.css) and -[`leaflet-geoman.min.js`](https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.min.js) -and include them in your project. - -#### Include via CDN - -CSS - - -```html - -``` - -JS - -```html - -``` - -#### Include as ES6 Module - -```js -import '@geoman-io/leaflet-geoman-free'; -import '@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css'; -``` - -### Getting Started - -#### Init Leaflet-Geoman - -Just include `leaflet-geoman.min.js` right after Leaflet. It initializes itself. If -you want certain layers to be ignored by Leaflet-Geoman, pass `pmIgnore: true` to -their options when creating them. Example: - -```js -L.marker([51.50915, -0.096112], { pmIgnore: true }).addTo(map); -``` - -Enable Leaflet-Geoman on an ignored layer: - -```js -layer.options.pmIgnore = false; -L.PM.reInitLayer(layer); -``` - -If `Opt-In` (look below) is `true`, a layers `pmIgnore` property has to be set to `false` to get initiated. - -#### Opt-In - -If you want to use Leaflet-Geoman as opt-in, call the following function right after importing: - -```js -L.PM.setOptIn(true); -``` - -And to disable it: - -```js -L.PM.setOptIn(false); -``` - -If you have enabled opt-in before you init the map, you need to specify `pmIgnore: false` in the map options: - -```js -const map = L.map('map', { pmIgnore: false }); -``` - -All layers will be ignored by Leaflet-Geoman, unless you specify `pmIgnore: false` on a layer: - -```js -L.marker([51.50915, -0.096112], { pmIgnore: false }).addTo(map); -``` - -Newly drawn layers will be ignored as well. - -To prevent this you can add the following event handler: - -```js -map.on('pm:create', (e) => { - e.layer.options.pmIgnore = false; - L.PM.reInitLayer(e.layer); -}); -``` - -#### Leaflet-Geoman Toolbar - -Leaflet-Geoman Toolbar - -You can add a toolbar to the map to use Leaflet-Geoman features via a user interface. - -```js -// add Leaflet-Geoman controls with some options to the map -map.pm.addControls({ - position: 'topleft', - drawCircle: false, -}); -``` -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :---------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------ | -| addControls(`options`) | - | Adds the Toolbar to the map. The `options` are optional. Buttons can be removed with setting them to `false`. | -| removeControls() | - | Removes the Toolbar from the map. | -| toggleControls() | - | Toggle the visiblity of the Toolbar. | -| controlsVisible() | `Boolean` | Returns `true` if the Toolbar is visible on the map. | - - -See the available options in the table below. - -| Option | Default | Description | -| :----------------- | :---------- | :----------------------------------------------------------------------------------------------- | -| position | `'topleft'` | Toolbar position, possible values are `'topleft'`, `'topright'`, `'bottomleft'`, `'bottomright'` | -| positions | `Object` | The position of each block (`draw`, `edit`, `custom`, `options`⭐) can be customized. If not set, the value from `position` is taken. Default: `{draw: '', edit: '', options: '', custom: ''}` [Block Position](#toolbar-block-position) | -| drawMarker | `true` | Adds button to draw Markers. | -| drawCircleMarker | `true` | Adds button to draw CircleMarkers. | -| drawPolyline | `true` | Adds button to draw Line. | -| drawRectangle | `true` | Adds button to draw Rectangle. | -| drawPolygon | `true` | Adds button to draw Polygon. | -| drawCircle | `true` | Adds button to draw Circle. | -| drawText | `true` | Adds button to draw Text. | -| editMode | `true` | Adds button to toggle Edit Mode for all layers. | -| dragMode | `true` | Adds button to toggle Drag Mode for all layers. | -| cutPolygon | `true` | Adds button to cut a hole in a Polygon or Line. | -| removalMode | `true` | Adds a button to remove layers. | -| rotateMode | `true` | Adds a button to rotate layers. | -| oneBlock | `false` | All buttons will be displayed as one block [Customize Controls](#customize-controls). | -| drawControls | `true` | Shows all draw buttons / buttons in the `draw` block. | -| editControls | `true` | Shows all edit buttons / buttons in the `edit` block. | -| customControls | `true` | Shows all buttons in the `custom` block. | -| optionsControls | `true` | Shows all options buttons / buttons in the `option` block ⭐. | -| pinningOption | `true` | Adds a button to toggle the Pinning Option ⭐. | -| snappingOption | `true` | Adds a button to toggle the Snapping Option ⭐. | -| splitMode | `true` | Adds a button to toggle the Split Mode for all layers ⭐. | -| scaleMode | `true` | Adds a button to toggle the Scale Mode for all layers ⭐. | -| autoTracingOption | `false` | Adds a button to toggle the Auto Tracing Option ⭐. | - -To pass options to the buttons you have two ways: -```js -// make polygon not snappable during draw -map.pm.enableDraw('Polygon',{ snappable: false }); -map.pm.disableDraw(); -``` -```js -// make all layers not snappable during draw -map.pm.setGlobalOptions({ snappable: false }); -``` -The options will persist, even when the mode is enabled/disabled via the toolbar. - -All available options for drawing and editing are specified in the sections below. - -### Draw Mode - -Use Draw Mode on a map like this: - -```js -// enable polygon Draw Mode -map.pm.enableDraw('Polygon', { - snappable: true, - snapDistance: 20, -}); - -// disable Draw Mode -map.pm.disableDraw(); -``` - -Currently available shapes are `Marker`, `CircleMarker`, `Circle`, `Line`, `Rectangle`, `Polygon`, `Text`, `Cut`, `CutCircle`⭐ and `Split`⭐. - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :------------------------------------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| enableDraw(`shape`,`options`) | - | Enable Draw Mode with the passed shape. The `options` are optional. | -| disableDraw() | - | Disable Draw Mode. | -| Draw.getShapes() | `Array` | Array of available shapes. | -| Draw.getActiveShape() | `String` | Returns the active shape. | -| globalDrawModeEnabled() | `Boolean` | Returns `true` if global Draw Mode is enabled. `false` when disabled. | -| setPathOptions(`options`, `optionsModifier`) | - | Customize the style of the drawn layer. Only for L.Path layers. Shapes can be excluded with a `ignoreShapes` array or merged with the current style with `merge: true` in `optionsModifier` [Details](#customize-style). | -| setGlobalOptions(`options`) | - | Set `globalOptions` and apply them. | -| applyGlobalOptions() | - | Apply the current `globalOptions` to all existing layers. | -| getGlobalOptions() | `Object` | Returns the `globalOptions`. | -| getGeomanLayers(`Boolean`) | `Array` | Returns all Leaflet-Geoman layers on the map as array. Pass `true` to get a L.FeatureGroup. | -| getGeomanDrawLayers(`Boolean`) | `Array` | Returns all drawn Leaflet-Geoman layers on the map as array. Pass `true` to get a L.FeatureGroup. | -| Draw..setOptions(`options`) | - | Applies the options to the drawing shape and calls `setStyle`. `map.pm.Draw.Line.setOptions(options)`. | -| Draw..setStyle(`options`) | - | Applies the styles (`templineStyle`, `hintlineStyle`, `pathOptions`, `markerStyle`) to the drawing layer. `map.pm.Draw.Line.setStlye(options)`. | - -See the available options in the table below. - -| Option | Default | Description | -| :-------------------- | :---------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| snappable | `true` | Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the `ALT` key. | -| snapDistance | `20` | The distance to another vertex when a snap should happen. | -| snapMiddle | `false` | Allow snapping in the middle of two vertices (middleMarker). | -| snapSegment | `true` | Allow snapping between two vertices. | -| requireSnapToFinish | `false` | Require the last point of a shape to be snapped. | -| tooltips | `true` | Show helpful tooltips for your user. | -| allowSelfIntersection | `true` | Allow self intersections. | -| templineStyle | `{ color: '#3388ff' },` | [Leaflet path options](https://leafletjs.com/reference.html#path) for the lines between drawn vertices/markers. | -| hintlineStyle | `{ color: '#3388ff', dashArray: [5, 5] }` | [Leaflet path options](https://leafletjs.com/reference.html#path) for the helper line between last drawn vertex and the cursor. | -| pathOptions | `null` | [Leaflet path options](https://leafletjs.com/reference.html#path) for the drawn layer (Only for L.Path layers). | -| markerStyle | `{ draggable: true }` | [Leaflet marker options](https://leafletjs.com/reference.html#marker-icon) (only for drawing markers). | -| cursorMarker | `true` | Show a marker at the cursor. | -| finishOn | `null` | Leaflet layer event to finish the drawn shape, like `'dblclick'`. [Here's a list](http://leafletjs.com/reference.html#interactive-layer-click). `snap` is also an option for Line, Polygon and Rectangle. | -| hideMiddleMarkers | `false` | Hide the middle Markers in Edit Mode from Polyline and Polygon. | -| minRadiusCircle | `null` | Set the min radius of a `Circle`. | -| maxRadiusCircle | `null` | Set the max radius of a `Circle`. | -| minRadiusCircleMarker | `null` | Set the min radius of a `CircleMarker` when editable is active. | -| maxRadiusCircleMarker | `null` | Set the max radius of a `CircleMarker` when editable is active. | -| editable | `false` | Makes a `CircleMarker` editable like a `Circle`. | -| markerEditable | `true` | Markers and CircleMarkers are editable during the draw-session (you can drag them around immediately after drawing them). | -| continueDrawing | `false` / `true` | Draw Mode stays enabled after finishing a layer to immediately draw the next layer. Defaults to `true` for Markers and CircleMarkers and `false` for all other layers. | -| rectangleAngle | `0` | Rectangle can drawn with a rotation angle 0-360 degrees | -| layersToCut | `[]` | Cut-Mode: Only the passed layers can be cut. Cutted layers are removed from the Array until no layers are left anymore and cutting is working on all layers again. | -| textOptions | `{}` | Text Layer options. Look into [textOptions](#text-layer-drawing). | -| closedPolygonEdge | `false` | Closes the Polygon while drawing ⭐. | -| closedPolygonFill | `false` | Shows the Polygon fill while drawing ⭐. | -| autoTracing | `false` | Enables auto tracing while drawing ⭐. | -| allowCircleCut | `true` | Allow Cutting of a Circle ⭐. | - -This options can only set over `map.pm.setGlobalOptions({})`: - -| Option | Default | Description | -| :--------- | :------ | :--------------------------------------------------------- | -| layerGroup | `map` | Add the created layers to a layergroup instead to the map. | - -You can listen to map events to hook into the drawing procedure like this: - -```js -map.on('pm:drawstart', (e) => { - console.log(e); -}); -``` - -Here's a list of map events you can listen to: - -| Event | Params | Description | Output | -| :----------------------- | :----- | :-------------------------------------------------------------------------------------- | :------------------------ | -| pm:globaldrawmodetoggled | `e` | Fired when Drawing Mode is toggled. | `enabled`, `shape`, `map` | -| pm:drawstart | `e` | Called when Draw Mode is enabled. Payload includes the shape type and working layer. | `shape`, `workingLayer` | -| pm:drawend | `e` | Called when Draw Mode is disabled. Payload includes the shape type. | `shape` | -| pm:create | `e` | Called when a shape is drawn/finished. Payload includes shape type and the drawn layer. | `shape`, `layer` | - -There are also several events for layers during draw. Register an event like this: - -```js -// listen to vertexes being added to currently drawn layer (called workingLayer) -map.on('pm:drawstart', ({ workingLayer }) => { - workingLayer.on('pm:vertexadded', (e) => { - console.log(e); - }); -}); -``` - -Here's a list of layer events you can listen to: - -| Event | Params | Description | Output | -| :-------------- | :----- | :-------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | -| pm:vertexadded | `e` | Called when a new vertex is added. Payload includes the new vertex, it's marker, index, working layer and shape type. | `shape`, `workingLayer`, `marker`, `latlng` | -| pm:snapdrag | `e` | Fired during a marker move/drag. Payload includes info about involved layers and snapping calculation. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:snap | `e` | Fired when a vertex is snapped. Payload is the same as in `snapdrag`. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:unsnap | `e` | Fired when a vertex is unsnapped. Payload is the same as in `snapdrag`. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:centerplaced | `e` | Called when the center of a circle is placed/moved. | `shape`, `workingLayer`, `latlng` | -| pm:change | `e` | Fired coordinates of the layer changed. | `layer`, `latlngs`, `shape` | - -For making the snapping to other layers selective, you can add the "snapIgnore" option to your layers to disable the snapping to them during drawing. - -```js -//This layer will be ignored by the snapping engine during drawing -L.geoJSON(data, { - snapIgnore: true, -}); -``` - -### Edit Mode - -You can enable Edit Mode for all layers on a map like this: - -```js -// enable global Edit Mode -map.pm.enableGlobalEditMode(options); -``` - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :------------------------------ | :-------- | :-------------------------------------------------------------------- | -| enableGlobalEditMode(`options`) | - | Enables global Edit Mode. | -| disableGlobalEditMode() | - | Disables global Edit Mode. | -| toggleGlobalEditMode(`options`) | - | Toggles global Edit Mode. | -| globalEditModeEnabled() | `Boolean` | Returns `true` if global Edit Mode is enabled. `false` when disabled. | - -Enable Edit Mode only for one layer: - -```js -// enable Edit Mode -layer.pm.enable({ - allowSelfIntersection: false, -}); -``` - -The following methods are available for layers under `layer.pm`: - -| Method | Returns | Description | -| :-------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------- | -| enable(`options`) | - | Enables Edit Mode. The passed options are preserved, even when the mode is enabled via the Toolbar. `options` is optional. | -| disable() | - | Disables Edit Mode. | -| toggleEdit(`options`) | - | Toggles Edit Mode. Passed options are preserved. `options` is optional. | -| enabled() | `Boolean` | Returns `true` if Edit Mode is enabled. `false` when disabled. | -| hasSelfIntersection() | `Boolean` | Returns `true` if `Line` or `Polygon` has a self intersection. | -| remove() | - | Removes the layer with the same checks as GlobalRemovalMode. | -| getShape() | `String` | Returns the shape of the layer. | -| setOptions(`options`) | - | Set the options on the layer. | -| getOptions() | `Object` | Returns the options of the layer. | - -See the available options in the table below. - -| Option | Default | Description | -| :----------------------------- | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| snappable | `true` | Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the `ALT` key. | -| snapDistance | `20` | The distance to another vertex when a snap should happen. | -| allowSelfIntersection | `true` | Allow/Disallow self-intersections on Polygons and Polylines. | -| allowSelfIntersectionEdit | `false` | Allow/Disallow to change vertices they are connected to a intersecting line. Only working if allowSelfIntersection is `true` and the layer is already self-intersecting while enabling Edit Mode. | -| preventMarkerRemoval | `false` | Disable the removal of markers/vertexes via right click. | -| removeLayerBelowMinVertexCount | `true` | If `true`, vertex removal that cause a layer to fall below their minimum required vertices will remove the entire layer. If `false`, these vertices can't be removed. Minimum vertices are 2 for Lines and 3 for Polygons. | -| syncLayersOnDrag | `false` | Defines which layers should dragged with this layer together. `true` syncs all layers in the same LayerGroup(s) or you pass an `Array` of layers to sync. | -| allowEditing | `true` | Edit-Mode for the layer can disabled (`pm.enable()`). | -| allowRemoval | `true` | Removing can be disabled for the layer. | -| allowCutting | `true` | Layer can be prevented from cutting. | -| allowRotation | `true` | Layer can be prevented from rotation. | -| draggable | `true` | Dragging can be disabled for the layer. | -| addVertexOn | `click` | Leaflet layer event to add a vertex to a Line or Polygon, like `'dblclick'`. [Here's a list](http://leafletjs.com/reference.html#interactive-layer-click). | -| addVertexValidation | `undefined` | A function for validation if a vertex (of a Line / Polygon) is allowed to add. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. | -| removeVertexOn | `contextmenu` | Leaflet layer event to remove a vertex from a Line or Polygon, like `'dblclick'`. [Here's a list](http://leafletjs.com/reference.html#interactive-layer-click). | -| removeVertexValidation | `undefined` | A function for validation if a vertex (of a Line / Polygon) is allowed to remove. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. | -| moveVertexValidation | `undefined` | A function for validation if a vertex / helper-marker is allowed to move / drag. It passes a object with `[layer, marker, event}`. For example to check if the layer has a certain property or if the `Ctrl` key is pressed. | -| limitMarkersToCount | `-1` | Shows only `n` markers closest to the cursor. Use `-1` for no limit. | -| limitMarkersToZoom | `-1` | Shows markers when under the given zoom level. ⭐ | -| limitMarkersToViewport | `false` | Shows only markers in the viewport. ⭐ | -| limitMarkersToClick | `false` | Shows markers only after the layer was clicked. ⭐ | -| pinning | `false` | Pin shared vertices/markers together during edit [Details](#pinning-⭐). ⭐ | -| allowPinning | `true` | Layer can be prevented from pinning.⭐ | -| allowScale | `true` | Layer can be prevented from scaling.⭐ | -| centerScaling | `true` | Scale origin is the center, else it is the opposite corner. If `false` Alt-Key can be used. [Scale Mode](#scale-mode-). ⭐ | -| uniformScaling | `true` | Width and height are scaled with the same ratio. If `false` Shift-Key can be used. [Scale Mode](#scale-mode-). ⭐ | -| allowAutoTracing | `true` | Layer can be prevented from auto tracing.⭐ | -| addVertexOnClick | `false` | Add Vertices while clicking on the line of Polyline or Polygon⭐ | - -You can listen to events related to editing on events like this: - -```js -// listen to when a layer is changed in Edit Mode -layer.on('pm:edit', (e) => { - console.log(e); -}); -``` - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :----------------- | :----- | :----------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | -| pm:edit | `e` | Fired when a layer is edited. | `layer`, `shape` | -| pm:update | `e` | Fired when Edit Mode is disabled and a layer is edited and its coordinates have changed. | `layer`, `shape` | -| pm:enable | `e` | Fired when Edit Mode on a layer is enabled. | `layer`, `shape` | -| pm:disable | `e` | Fired when Edit Mode on a layer is disabled. | `layer`, `shape` | -| pm:vertexadded | `e` | Fired when a vertex is added. | `layer`, `indexPath`, `latlng`, `marker`, `shape` | -| pm:vertexremoved | `e` | Fired when a vertex is removed. | `layer`, `indexPath`, `marker`, `shape` | -| pm:vertexclick | `e` | Fired when a vertex is clicked. | `layer`, `indexPath`, `markerEvent`, `shape` | -| pm:markerdragstart | `e` | Fired when dragging of a marker which corresponds to a vertex starts. | `layer`, `indexPath`, `markerEvent`, `shape` | -| pm:markerdrag | `e` | Fired when dragging a vertex-marker. | `layer`, `indexPath`, `markerEvent`, `shape` | -| pm:markerdragend | `e` | Fired when dragging of a vertex-marker ends. | `layer`, `indexPath`, `markerEvent`, `shape`, `intersectionReset` | -| pm:layerreset | `e` | Fired when coords of a layer are reset. E.g. by self-intersection. | `layer`, `indexPath`, `markerEvent`, `shape` | -| pm:snapdrag | `e` | Fired during a marker move/drag. Payload includes info about involved layers and snapping calculation. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:snap | `e` | Fired when a vertex-marker is snapped to another vertex. Also fired on the marker itself. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:unsnap | `e` | Fired when a vertex-marker is unsnapped from a vertex. Also fired on the marker itself. | `shape`, `distance`, `layer` = `workingLayer`, `marker`, `layerInteractedWith`, `segment`, `snapLatLng` | -| pm:intersect | `e` | When `allowSelfIntersection: false`, this event is fired as soon as a self-intersection is detected. | `layer`, `intersection`, `shape` | -| pm:centerplaced | `e` | Fired when the center of a circle is moved. | `layer`, `latlng`, `shape` | -| pm:change | `e` | Fired coordinates of the layer changed. | `layer`, `latlngs`, `shape` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :----------------------- | :----- | :------------------------------- | :--------------- | -| pm:globaleditmodetoggled | `e` | Fired when Edit Mode is toggled. | `enabled`, `map` | - -You can also listen to specific Edit Mode events on the map instance like this: - -```js -map.on('pm:globaleditmodetoggled', (e) => { - console.log(e); -}); -``` - -### Drag Mode - -You can enable Drag Mode for all layers on a map like this: - -```js -// enable Drag Mode like this: -map.pm.enableGlobalDragMode(); -``` - -Or you enable dragging for a specific layer: - -```js -layer.pm.enableLayerDrag(); -``` - -The following methods are available on `layer.pm`: - -| Method | Returns | Description | -| :----------------- | :-------- | :--------------------------------------------- | -| enableLayerDrag() | - | Enables dragging for the layer. | -| disableLayerDrag() | - | Disables dragging for the layer. | -| layerDragEnabled() | `Boolean` | Returns if Drag Mode is enabled for the layer. | -| dragging() | `Boolean` | Returns if the layer is currently dragging. | - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :---------------------- | :-------- | :-------------------------------------------------------------------- | -| enableGlobalDragMode() | - | Enables global Drag Mode. | -| disableGlobalDragMode() | - | Disables global Drag Mode. | -| toggleGlobalDragMode() | - | Toggles global Drag Mode. | -| globalDragModeEnabled() | `Boolean` | Returns `true` if global Drag Mode is enabled. `false` when disabled. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :------------- | :----- | :------------------------------------------- | :------------------------------------------------------------------------ | -| pm:dragstart | `e` | Fired when a layer starts being dragged. | `layer`, `shape` | -| pm:drag | `e` | Fired when a layer is dragged. | `layer`, `containerPoint`,`latlng`, `layerPoint`,`originalEvent`, `shape` | -| pm:dragend | `e` | Fired when a layer stops being dragged. | `layer`, `shape` | -| pm:dragenable | `e` | Fired when Drag Mode on a layer is enabled. | `layer`, `shape` | -| pm:dragdisable | `e` | Fired when Drag Mode on a layer is disabled. | `layer`, `shape` | -| pm:change | `e` | Fired coordinates of the layer changed. | `layer`, `latlngs`, `shape` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :----------------------- | :----- | :------------------------------- | :--------------- | -| pm:globaldragmodetoggled | `e` | Fired when Drag Mode is toggled. | `enabled`, `map` | - -You can also listen to specific Drag Mode events on the map instance like this: - -```js -map.on('pm:globaldragmodetoggled', (e) => { - console.log(e); -}); -``` - -### Removal Mode - -You can enable Removal Mode for all layers on a map like this: - -```js -// enable removal mode like this: -map.pm.enableGlobalRemovalMode(); -``` - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :------------------------- | :-------- | :----------------------------------------------------------------------- | -| enableGlobalRemovalMode() | - | Enables global removal mode. | -| disableGlobalRemovalMode() | - | Disables global removal mode. | -| toggleGlobalRemovalMode() | - | Toggles global removal mode. | -| globalRemovalModeEnabled() | `Boolean` | Returns `true` if global removal mode is enabled. `false` when disabled. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :-------- | :----- | :--------------------------------------------- | :--------------- | -| pm:remove | `e` | Fired when a layer is removed via Removal Mode | `layer`, `shape` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :-------------------------- | :----- | :------------------------------------------------------- | :--------------- | -| pm:globalremovalmodetoggled | `e` | Fired when Removal Mode is toggled | `enabled`, `map` | -| pm:remove | `e` | Fired when a layer is removed via Removal Mode | `layer`, `shape` | -| layerremove | `e` | Standard Leaflet event. Fired when any layer is removed. | `layer` | - -You can also listen to specific removal mode events on the map instance like this: - -```js -map.on('pm:globalremovalmodetoggled', (e) => { - console.log(e); -}); -``` - -### Cut Mode - -![cut polygon](https://file-xdeoyklwhw.now.sh/) - -Enables drawing for the shape "Cut" to draw a polygon that gets subtracted from all underlying polygons. This way you can create holes, cut polygons or polylines in half or remove parts of it. - -Important: the cutted layer will be replaced, not updated. Listen to the `pm:cut` event to update your layer references in your code. The `pm:cut` event will provide you with the original layer and returns the resulting layer(s) that is/are added to the map as a Polygon / MultiPolygon or Polyline / MultiPolyline. - -```js -// enable cutting mode -map.pm.enableGlobalCutMode({ - allowSelfIntersection: false, -}); -``` - -Available options are the same as in [Draw Mode](#draw-mode). -If the option `layersToCut: [layer1, layer2]` is passed, only this certain layers will be cutted. - -In the Pro-Version ⭐ is the option `allowCircleCut` available, which makes it possible to cut Circles. - -Over the Global Options you enable cutting in shape form of a Circle `cutAsCircle: true` for the cut-button. Else you can enable `CutCircle` over `map.pm.enableDraw('CutCircle')` - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :----------------------------- | :-------- | :------------------------------------------------------------------- | -| enableGlobalCutMode(`options`) | - | Enable Cut Mode. | -| disableGlobalCutMode() | - | Disable Cut Mode. | -| toggleGlobalCutMode(`options`) | - | Toggle Cut Mode. | -| globalCutModeEnabled() | `Boolean` | Returns `true` if global cut mode is enabled. `false` when disabled. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :------ | :----- | :---------------------------------- | :-------------------------------- | -| pm:cut | `e` | Fired when the layer being cut. | `shape`, `layer`, `originalLayer` | -| pm:edit | `e` | Fired when a layer is edited / cut. | `layer`, `shape` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :---------------------- | :----- | :--------------------------------- | :-------------------------------- | -| pm:globalcutmodetoggled | `e` | Fired when Cut Mode is toggled. | `enabled`, `map` | -| pm:cut | `e` | Fired when any layer is being cut. | `shape`, `layer`, `originalLayer` | - -### Rotation Mode - -![Rotation Feature](https://user-images.githubusercontent.com/2399810/118522132-06817400-b73c-11eb-8d59-1f340bca86a6.gif) - -The rotation is clockwise. It starts in the North with 0° and goes over East (90°) and South (180°) to West (270°). -The rotation center is the center (`layer.getCenter()`) of a Polygon with the LatLngs of the layer. - -**Rotation of Rectangles:** - -If a rotated rectangle is created programmatically, it is important to set the initial angle with `setInitAngle(degrees)`. - -```js -const rect = L.rectangle(coords).addTo(map); // the Leaflet constructor always creates a non-rotated rectangle -rect.setLatLngs(coords); // setting the rotated coordinates -rect.pm.setInitAngle(angle); -``` - -You can enable Rotate Mode for all layers on a map like this: - -```js -map.pm.enableGlobalRotateMode(); -``` - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :------------------------ | :-------- | :---------------------------------------------------------------------- | -| enableGlobalRotateMode() | - | Enables global Rotate Mode. | -| disableGlobalRotateMode() | - | Disables global Rotate Mode. | -| toggleGlobalRotateMode() | - | Toggles global Rotate Mode. | -| globalRotateModeEnabled() | `Boolean` | Returns `true` if global Rotate Mode is enabled. `false` when disabled. | - -The following methods are available for layers under `layer.pm`: - -| Method | Returns | Description | -| :---------------------------- | :-------- | :----------------------------------------------- | -| enableRotate() | - | Enables Rotate Mode on the layer. | -| disableRotate() | - | Disables Rotate Mode on the layer. | -| rotateEnabled() | `Boolean` | Returns if Rotate Mode is enabled for the layer. | -| rotateLayer(`degrees`) | - | Rotates the layer by `x` degrees. | -| rotateLayerToAngle(`degrees`) | - | Rotates the layer to `x` degrees. | -| getAngle() | `Degrees` | Returns the angle of the layer in degrees. | -| setInitAngle(`degrees`) | - | Set the initial angle of the layer in degrees. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :--------------- | :----- | :------------------------------------------- | :----------------------------------------------------------------------------------- | -| pm:rotateenable | `e` | Fired when rotation is enabled for a layer. | `layer`, `helpLayer`, `shape` | -| pm:rotatedisable | `e` | Fired when rotation is disabled for a layer. | `layer`, `shape` | -| pm:rotatestart | `e` | Fired when rotation starts on a layer. | `layer`, `helpLayer`, `startAngle`, `originLatLngs` | -| pm:rotate | `e` | Fired when a layer is rotated. | `layer`, `helpLayer`, `startAngle`, `angle`, `angleDiff`, `oldLatLngs`, `newLatLngs` | -| pm:rotateend | `e` | Fired when rotation ends on a layer. | `layer`, `helpLayer`, `startAngle`, `angle`, `originLatLngs`, `newLatLngs` | -| pm:change | `e` | Fired coordinates of the layer changed. | `layer`, `latlngs`, `shape` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :------------------------- | :----- | :------------------------------------------- | :----------------------------------------------------------------------------------- | -| pm:globalrotatemodetoggled | `e` | Fired when Rotate Mode is toggled. | `enabled`, `map` | -| pm:rotateenable | `e` | Fired when rotation is enabled for a layer. | `layer`, `helpLayer`, `shape` | -| pm:rotatedisable | `e` | Fired when rotation is disabled for a layer. | `layer`, `shape` | -| pm:rotatestart | `e` | Fired when rotation starts on a layer. | `layer`, `helpLayer`, `startAngle`, `originLatLngs` | -| pm:rotate | `e` | Fired when a layer is rotated. | `layer`, `helpLayer`, `startAngle`, `angle`, `angleDiff`, `oldLatLngs`, `newLatLngs` | -| pm:rotateend | `e` | Fired when rotation ends on a layer. | `layer`, `helpLayer`, `startAngle`, `angle`, `originLatLngs`, `newLatLngs` | - -### Split Mode ⭐ - -![Split Mode Demo](https://user-images.githubusercontent.com/2399810/118527306-721a1000-b741-11eb-86ce-da6caeba8214.gif) - -Enable drawing for the shape "Split" to draw a line that splits all underlying Polygons and Polylines. - -Important: the splitted layer will be replaced, not updated. Listen to the `pm:split` event to update your layer references in your code. The `pm:split` event will provide you with the original layer and returns the resulting layer(s) that is/are added to the map as a Polygon / MultiPolygon or Polyline / MultiPolyline. - -```js -// enable cutting mode -map.pm.enableGlobalSplitMode({ - allowSelfIntersection: false, -}); -``` - -Available options are the same as in [Draw Mode](#draw-mode) and in table below: - -| Option | Default | Description | -| :-------------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| splitOnlyMarkedLayers | `false` | If it is set to `false` layers can be excluded with the option `splitMark: false`. Set it to `true` to enable splitting only for the layers with the option `splitMark: true`. | - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :------------------------------- | :-------- | :--------------------------------------------------------------------- | -| enableGlobalSplitMode(`options`) | - | Enable Split Mode. | -| disableGlobalSplitMode() | - | Disable Split Mode. | -| toggleGlobalSplitMode(`options`) | - | Toggle Split Mode. | -| globalSplitModeEnabled() | `Boolean` | Returns `true` if global Split Mode is enabled. `false` when disabled. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :------- | :----- | :-------------------------------------------------------------------------------------------------- | :----------------------------------------------- | -| pm:split | `e` | Fired when the layer being split. Returns a LayerGroup containing all resulting layers in `layers`. | `shape`, `splitLayer`, `layers`, `originalLayer` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :------------------------ | :----- | :----------------------------------- | :----------------------------------------------- | -| pm:globalsplitmodetoggled | `e` | Fired when Split Mode is toggled. | `enabled`, `map` | -| pm:split | `e` | Fired when any layer is being split. | `shape`, `splitLayer`, `layers`, `originalLayer` | - -### Scale Mode ⭐ - -You can enable Scale Mode for all layers on a map like this: - -```js -map.pm.enableGlobalScaleMode(); -``` - -With the option `centerScaling` the scale origin cen be the center of the layer or the opposite corner of the dragged marker. If `false` Alt-Key can be used. -The option `uniformScaling` the scales the width and the height with the same ratio. If `false` Shift-Key can be used. - -The following methods are available on `map.pm`: - -| Method | Returns | Description | -| :----------------------- | :-------- | :--------------------------------------------------------------------- | -| enableGlobalScaleMode() | - | Enables global Scale Mode. | -| disableGlobalScaleMode() | - | Disables global Scale Mode. | -| toggleGlobalScaleMode() | - | Toggles global Scale Mode. | -| globalScaleModeEnabled() | `Boolean` | Returns `true` if global Scale Mode is enabled. `false` when disabled. | - -The following methods are available for layers under `layer.pm`: - -| Method | Returns | Description | -| :-------------------- | :-------- | :---------------------------------------------------------------------------------------------------------------------------- | -| enableScale() | - | Enables Scale Mode on the layer. | -| disableScale() | - | Disables Scale Mode on the layer. | -| scaleEnabled() | `Boolean` | Returns if Scale Mode is enabled for the layer. | -| scaleLayer(`percent`) | - | Scale the layer by `x` percent. Also an Object with `{w: width, h: height}` can be passed. Scale up `> 0` , scale down `< 0`. | - -The following events are available on a layer instance: - -| Event | Params | Description | Output | -| :-------------- | :----- | :---------------------------------------- | :----------------------------------------------------- | -| pm:scaleenable | `e` | Fired when scale is enabled for a layer. | `layer`, `helpLayer` | -| pm:scaledisable | `e` | Fired when scale is disabled for a layer. | `layer` | -| pm:scalestart | `e` | Fired when scale starts on a layer. | `layer`, `helpLayer`, `originLatLngs`, `originLatLngs` | -| pm:scale | `e` | Fired when a layer is scaled. | `layer`, `helpLayer`, `oldLatLngs`, `newLatLngs` | -| pm:scaleend | `e` | Fired when scale ends on a layer. | `layer`, `helpLayer`, `originLatLngs`, `newLatLngs` | - -The following events are available on a map instance: - -| Event | Params | Description | Output | -| :------------------------ | :----- | :---------------------------------------- | :----------------------------------------------------- | -| pm:globalscalemodetoggled | `e` | Fired when Scale Mode is toggled. | `enabled`, `map` | -| pm:scaleenable | `e` | Fired when scale is enabled for a layer. | `layer`, `helpLayer` | -| pm:scaledisable | `e` | Fired when scale is disabled for a layer. | `layer` | -| pm:scalestart | `e` | Fired when scale starts on a layer. | `layer`, `helpLayer`, `originLatLngs`, `originLatLngs` | -| pm:scale | `e` | Fired when a layer is scaled. | `layer`, `helpLayer`, `oldLatLngs`, `newLatLngs` | -| pm:scaleend | `e` | Fired when scale ends on a layer. | `layer`, `helpLayer`, `originLatLngs`, `newLatLngs` | - -### Text Layer - -![text-layer](https://user-images.githubusercontent.com/19800037/168420156-953c7d1a-ed61-4a33-bc90-f18ebea425bd.gif) - -Additional to the default methods and options there are a few more possibilities for Text Layers: - -#### Text Layer Drawing: - -```js -map.pm.enableDraw('Text', { textOptions: { text: 'Geoman is fantastic! 🚀' } }); -``` - -See the available options for `textOptions` in the table below. - -| Option | Default | Description | -| :------------- | :------ | :------------------------------------------------------------ | -| text | `` | Predefined text. | -| focusAfterDraw | `true` | Directly after placing the marker, text editing is activated. | -| removeIfEmpty | `true` | The text layer is removed if no text is written. | -| className | `` | Custom CSS Classes. Separated by a space. | - -#### Text Layer Editing: - -The following methods are available on `layer.pm`: - -| Method | Returns | Description | -| :-------------- | :------------ | :-------------------------------------------------------------------- | -| focus() | - | Activate text editing. Layer needs first to be enabled `.enable()`. | -| blur() | - | Deactivate text editing. Layer needs first to be enabled `.enable()`. | -| hasFocus() | `Boolean` | Is text editing active. | -| getElement() | `HTMLElement` | Returns the `