diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 05b481a8..534c66f4 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -20,7 +20,7 @@ on:
- 'assets/**'
env:
- DEMO_MAVEN_MODULE: ${{ github.event.repository.name }}-demo
+ DEMO_MAVEN_MODULE: flow-demo
jobs:
build:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c3420b88..f6353427 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -4,9 +4,6 @@ on:
push:
branches: [ master ]
-env:
- PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }}
-
permissions:
contents: write
pull-requests: write
@@ -66,10 +63,9 @@ jobs:
- name: Get version
id: version
run: |
- version=$(../mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
+ version=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
echo "release=$version" >> $GITHUB_OUTPUT
echo "releasenumber=${version//[!0-9]/}" >> $GITHUB_OUTPUT
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
- name: Commit and Push
run: |
@@ -94,12 +90,14 @@ jobs:
Add the following lines to your pom:
```XML
- software.xdev
- ${{ env.PRIMARY_MAVEN_MODULE }}
+ software.xdev.vaadin.maps-leaflet
+ flow
${{ steps.version.outputs.release }}
```
+ You can also use the [BOM](https://github.com/${{ github.repository }}/tree/develop/bom) for easier dependency management.
+
### Additional notes
* [Spring-Boot] You may have to include ``software/xdev`` inside [``vaadin.allowed-packages``](https://vaadin.com/docs/latest/integrations/spring/configuration#configure-the-scanning-of-packages)
@@ -125,14 +123,19 @@ jobs:
server-password: PACKAGES_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once
-
- - name: Publish to GitHub Packages Central
- run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
+
+ - name: Publish to GitHub Packages
+ run: |
+ modules=("bom")
+ dependency_management_block=$(grep -ozP '(\r|\n|.)*<\/dependencyManagement>' 'bom/pom.xml' | tr -d '\0')
+ modules+=($(echo $dependency_management_block | grep -oP '(?<=)[^<]+'))
+ printf -v modules_joined '%s,' "${modules[@]}"
+ modules_arg=$(echo "${modules_joined%,}")
+ ./mvnw -B deploy -pl "$modules_arg" -am -T2C -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
env:
PACKAGES_CENTRAL_TOKEN: ${{ secrets.PACKAGES_CENTRAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
-
+
- name: Set up JDK
uses: actions/setup-java@v4
with: # running setup-java again overwrites the settings.xml
@@ -144,12 +147,17 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Publish to Central Portal
- run: ../mvnw -B deploy -P publish,publish-sonatype-central-portal -DskipTests
+ run: |
+ modules=("bom")
+ dependency_management_block=$(grep -ozP '(\r|\n|.)*<\/dependencyManagement>' 'bom/pom.xml' | tr -d '\0')
+ modules+=($(echo $dependency_management_block | grep -oP '(?<=)[^<]+'))
+ printf -v modules_joined '%s,' "${modules[@]}"
+ modules_arg=$(echo "${modules_joined%,}")
+ ./mvnw -B deploy -pl "$modules_arg" -am -T2C -P publish,publish-sonatype-central-portal -DskipTests
env:
MAVEN_CENTRAL_USERNAME: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
publish-pages:
runs-on: ubuntu-latest
@@ -172,14 +180,22 @@ jobs:
cache: 'maven'
- name: Build site
- run: ../mvnw -B compile site -DskipTests -T2C
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
+ run: ./mvnw -B compile site -DskipTests -T2C
+
+ - name: Aggregate site
+ run: |
+ modules=($(grep -ozP '(?<=module>)[^<]+' 'pom.xml' | tr -d '\0'))
+ for m in "${modules[@]}"
+ do
+ echo "$m/target/site -> ./target/site/$m"
+ cp -r $m/target/site ./target/site/$m
+ done
- name: Deploy to Github pages
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./${{ env.PRIMARY_MAVEN_MODULE }}/target/site
+ publish_dir: ./target/site
force_orphan: true
after-release:
diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml
index 046be633..291ff7b9 100644
--- a/.github/workflows/test-deploy.yml
+++ b/.github/workflows/test-deploy.yml
@@ -13,23 +13,18 @@ jobs:
steps:
- uses: actions/checkout@v4
- - name: Set up JDK
- uses: actions/setup-java@v4
- with: # running setup-java overwrites the settings.xml
- distribution: 'temurin'
- java-version: '17'
- server-id: github-central
- server-password: PACKAGES_CENTRAL_TOKEN
- gpg-passphrase: MAVEN_GPG_PASSPHRASE
- gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once
-
- - name: Publish to GitHub Packages Central
- run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
+ - name: Publish to GitHub Packages
+ run: |
+ modules=("bom")
+ dependency_management_block=$(grep -ozP '(\r|\n|.)*<\/dependencyManagement>' 'bom/pom.xml' | tr -d '\0')
+ modules+=($(echo $dependency_management_block | grep -oP '(?<=)[^<]+'))
+ printf -v modules_joined '%s,' "${modules[@]}"
+ modules_arg=$(echo "${modules_joined%,}")
+ ./mvnw -B deploy -pl "$modules_arg" -am -T2C -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
env:
PACKAGES_CENTRAL_TOKEN: ${{ secrets.PACKAGES_CENTRAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
-
+
- name: Set up JDK
uses: actions/setup-java@v4
with: # running setup-java again overwrites the settings.xml
@@ -41,8 +36,13 @@ jobs:
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Publish to Central Portal
- run: ../mvnw -B deploy -P publish,publish-sonatype-central-portal -DskipTests
- working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
+ run: |
+ modules=("bom")
+ dependency_management_block=$(grep -ozP '(\r|\n|.)*<\/dependencyManagement>' 'bom/pom.xml' | tr -d '\0')
+ modules+=($(echo $dependency_management_block | grep -oP '(?<=)[^<]+'))
+ printf -v modules_joined '%s,' "${modules[@]}"
+ modules_arg=$(echo "${modules_joined%,}")
+ ./mvnw -B deploy -pl "$modules_arg" -am -T2C -P publish,publish-sonatype-central-portal -DskipTests
env:
MAVEN_CENTRAL_USERNAME: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_TOKEN }}
diff --git a/.run/Run Demo.run.xml b/.run/Run Demo.run.xml
index 35fc9a23..61e43097 100644
--- a/.run/Run Demo.run.xml
+++ b/.run/Run Demo.run.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index de163364..86df2da5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,17 @@
+# 5.0.0
+
+> [!WARNING]
+> Breaking change - Artifact relocation:
+> ``software.xdev:vaadin-maps-leaflet-flow`` was moved to ``software.xdev.vaadin.maps-leaflet:flow``
+
+* Introduced support for Leaflet plugins #307
+ * Plugins can be installed from ``software.xdev.vaadin.maps-leaflet.plugins:``
+ * The following [plugins](./plugins/) are currently available:
+ * geoman
+ * leaflet-markercluster
+ * maplibre-gl-leaflet
+ * You can also use the [``bom``](./bom/) for easier dependency management
+
# 4.6.4
* Updated dependencies
diff --git a/README.md b/README.md
index c1500401..c7481d89 100644
--- a/README.md
+++ b/README.md
@@ -12,15 +12,15 @@ A Vaadin Flow Java API for [Leaflet](https://leafletjs.com/)
This API wraps the Leaflet API in a Vaadin friendly way.
It uses a similar structure (classes, methods) as the [Leaflet JavaScript API](https://leafletjs.com/reference.html).
-To get started it's recommended to have a look at the [demo](./vaadin-maps-leaflet-flow-demo), notably the [minimalistic example](./vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java).
+To get started it's recommended to have a look at the [demo](./flow-demo), notably the [minimalistic example](./flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java).
> [!NOTE]
> **The API only supports sending instructions to the client**
> Due to data integrity retrieving client-side data (that can be modified by users) is not supported.
>
-> Event listeners can still be registered but this needs to be done manually. An example is available [in the demo](./vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java).
+> Event listeners can still be registered but this needs to be done manually. An example is available [in the demo](./flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java).
>
-> The following code snippet is a simplification of an even more complex example which sends (unvalidated!) client side data back to the server (click to expand)
+> The following code snippet is a simplification of an even more complex example which sends (unvalidated!) client side data back to the server (click to expand)
>
> ```java
> this.map.on("click", "e => document.getElementById('" + ID + "').$server.mapClicked(e.latlng.lat, e.latng.lng)");
@@ -38,7 +38,7 @@ To get started it's recommended to have a look at the [demo](./vaadin-maps-leafl
#### Static resources
Please note that Leaflet uses a few default icons for various components (e.g. Markers).
-These are also shipped with the library and can be found inside [``META-INF/resources``](./vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/).
+These are also shipped with the library and can be found inside [``META-INF/resources``](./flow/src/main/resources/META-INF/resources/).
You might have to fine tune your security configuration to allow these.
#### Compatibility with Vaadin
@@ -51,7 +51,7 @@ You might have to fine tune your security configuration to allow these.
## Run the Demo
* Checkout the repo
-* Run ``mvn install && mvn -f vaadin-maps-leaflet-flow-demo spring-boot:run``
+* Run ``mvn install && mvn -f flow-demo spring-boot:run``
* Open http://localhost:8080
diff --git a/bom/README.md b/bom/README.md
new file mode 100644
index 00000000..54ecb45c
--- /dev/null
+++ b/bom/README.md
@@ -0,0 +1,16 @@
+# BOM - [Bill of Materials](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Bill_of_Materials_.28BOM.29_POMs)
+
+Add it like this
+```xml
+
+
+
+ software.xdev.vaadin.maps-leaflet
+ bom
+ ...
+ pom
+ import
+
+
+
+```
diff --git a/bom/pom.xml b/bom/pom.xml
new file mode 100644
index 00000000..8a9dfcc0
--- /dev/null
+++ b/bom/pom.xml
@@ -0,0 +1,155 @@
+
+
+ 4.0.0
+
+ software.xdev.vaadin.maps-leaflet
+ bom
+ 5.0.0-SNAPSHOT
+ pom
+
+ LeafletMap for Vaadin - BOM
+ LeafletMap for Vaadin - BOM
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+
+
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+ scm:git:https://github.com/xdev-software/vaadin-maps-leaflet-flow.git
+
+
+ 2019
+
+
+ XDEV Software
+ https://xdev.software
+
+
+
+
+ XDEV Software
+ XDEV Software
+ https://xdev.software
+
+
+
+
+
+ Apache-2.0
+ https://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ UTF-8
+ UTF-8
+
+
+
+
+
+ software.xdev.vaadin.maps-leaflet
+ flow
+ 5.0.0-SNAPSHOT
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ geoman
+ 5.0.0-SNAPSHOT
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ leaflet-markercluster
+ 5.0.0-SNAPSHOT
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ maplibre-gl-leaflet
+ 5.0.0-SNAPSHOT
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 4.0.0-M16
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 3.9.0
+
+
+
+
+
+
+ publish
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ 1.7.2
+
+ bom
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.2.8
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+
+
+ publish-sonatype-central-portal
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.8.0
+ true
+
+ sonatype-central-portal
+ true
+
+
+
+
+
+
+
diff --git a/vaadin-maps-leaflet-flow-demo/pom.xml b/flow-demo/pom.xml
similarity index 88%
rename from vaadin-maps-leaflet-flow-demo/pom.xml
rename to flow-demo/pom.xml
index c3395e73..56a21c28 100644
--- a/vaadin-maps-leaflet-flow-demo/pom.xml
+++ b/flow-demo/pom.xml
@@ -5,13 +5,13 @@
4.0.0
- software.xdev
- vaadin-maps-leaflet-flow-root
- 4.6.5-SNAPSHOT
+ software.xdev.vaadin.maps-leaflet
+ root
+ 5.0.0-SNAPSHOT
- vaadin-maps-leaflet-flow-demo
- 4.6.5-SNAPSHOT
+ flow-demo
+ 5.0.0-SNAPSHOT
jar
@@ -94,8 +94,23 @@
- software.xdev
- vaadin-maps-leaflet-flow
+ software.xdev.vaadin.maps-leaflet
+ flow
+ ${project.version}
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ geoman
+ ${project.version}
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ leaflet-markercluster
+ ${project.version}
+
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ maplibre-gl-leaflet
${project.version}
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/Application.java b/flow-demo/src/main/java/software/xdev/vaadin/Application.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/Application.java
rename to flow-demo/src/main/java/software/xdev/vaadin/Application.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java
similarity index 81%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java
index e5fe26f6..06e389a2 100644
--- a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java
+++ b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/DemoView.java
@@ -12,6 +12,7 @@
import com.vaadin.flow.data.renderer.ComponentRenderer;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
+import com.vaadin.flow.theme.lumo.LumoUtility;
import software.xdev.vaadin.maps.leaflet.flow.demo.ComplexDemo;
import software.xdev.vaadin.maps.leaflet.flow.demo.EventDemo;
@@ -22,6 +23,9 @@
import software.xdev.vaadin.maps.leaflet.flow.demo.MultiLayerWithPyramidDemo;
import software.xdev.vaadin.maps.leaflet.flow.demo.NotOfThisEarthDemo;
import software.xdev.vaadin.maps.leaflet.flow.demo.WatermarkControlDemo;
+import software.xdev.vaadin.maps.leaflet.flow.demo.plugins.GeomanDemo;
+import software.xdev.vaadin.maps.leaflet.flow.demo.plugins.LeafletMarkerClusterDemo;
+import software.xdev.vaadin.maps.leaflet.flow.demo.plugins.MaplibreGLDemo;
@PageTitle("Leaflet + Vaadin demos")
@@ -41,6 +45,8 @@ public DemoView()
spDesc.getStyle().set("white-space", "pre");
final VerticalLayout vl = new VerticalLayout(anchor, spDesc);
+ vl.addClassName(LumoUtility.Padding.SMALL);
+ vl.setPadding(false);
vl.setSpacing(false);
return vl;
}))
@@ -103,6 +109,21 @@ protected void onAttach(final AttachEvent attachEvent)
FreeingUpResourceBenchmarkDemo.NAV,
"Freeing up resources Benchmark",
"Benchmark for showcasing how resources a freed up when handling huge amounts of components"
+ ),
+ new Example(
+ LeafletMarkerClusterDemo.NAV,
+ "Plugin: Leaflet.markercluster",
+ "Showcases markers can be clustered using Leaflet.markercluster"
+ ),
+ new Example(
+ MaplibreGLDemo.NAV,
+ "Plugin: MapLibre GL Leaflet",
+ "Showcases how vector tile servers can be used with MapLibre GL Leaflet"
+ ),
+ new Example(
+ GeomanDemo.NAV,
+ "Plugin: leaflet-geoman",
+ "Showcases how to created, edit, draw, cut, drag, cut, ... layers"
)
));
}
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/AbstractDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/AbstractDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/AbstractDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/AbstractDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/ComplexDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/ComplexDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/ComplexDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/ComplexDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/EventDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/FreeingUpResourceBenchmarkDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/FreeingUpResourceBenchmarkDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/FreeingUpResourceBenchmarkDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/FreeingUpResourceBenchmarkDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/GeoJSONDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/GeoJSONDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/GeoJSONDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/GeoJSONDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/InitialResizeDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/InitialResizeDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/InitialResizeDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/InitialResizeDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MinimalisticDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MultiLayerWithPyramidDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MultiLayerWithPyramidDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MultiLayerWithPyramidDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/MultiLayerWithPyramidDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/NotOfThisEarthDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/NotOfThisEarthDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/NotOfThisEarthDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/NotOfThisEarthDemo.java
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/WatermarkControlDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/WatermarkControlDemo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/WatermarkControlDemo.java
rename to flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/WatermarkControlDemo.java
diff --git a/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/GeomanDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/GeomanDemo.java
new file mode 100644
index 00000000..e78eaab1
--- /dev/null
+++ b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/GeomanDemo.java
@@ -0,0 +1,67 @@
+package software.xdev.vaadin.maps.leaflet.flow.demo.plugins;
+
+import com.vaadin.flow.component.button.Button;
+import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
+import com.vaadin.flow.component.orderedlayout.VerticalLayout;
+import com.vaadin.flow.router.Route;
+
+import software.xdev.vaadin.maps.leaflet.MapContainer;
+import software.xdev.vaadin.maps.leaflet.basictypes.LLatLng;
+import software.xdev.vaadin.maps.leaflet.geoman.LTextOptions;
+import software.xdev.vaadin.maps.leaflet.geoman.map.LMapPM;
+import software.xdev.vaadin.maps.leaflet.layer.raster.LTileLayer;
+import software.xdev.vaadin.maps.leaflet.layer.ui.LMarker;
+import software.xdev.vaadin.maps.leaflet.map.LMap;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+import software.xdev.vaadin.maps.leaflet.registry.LDefaultComponentManagementRegistry;
+
+
+@Route(GeomanDemo.NAV)
+@SuppressWarnings("checkstyle:MagicNumber")
+public class GeomanDemo extends VerticalLayout
+{
+ public static final String NAV = "/geoman";
+
+ public GeomanDemo()
+ {
+ // Let the view use 100% of the site
+ this.setSizeFull();
+
+ // Create the registry which is needed so that components can be reused and their methods invoked
+ // Note: You normally don't need to invoke any methods of the registry and just hand it over to the components
+ final LComponentManagementRegistry reg = new LDefaultComponentManagementRegistry(this);
+
+ // Create and add the MapContainer (which contains the map) to the UI
+ final MapContainer mapContainer = new MapContainer(reg);
+ mapContainer.setSizeFull();
+ this.add(mapContainer);
+
+ final LMap map = mapContainer.getlMap();
+
+ // Add a (default) TileLayer so that we can see something on the map
+ map.addLayer(LTileLayer.createDefaultForOpenStreetMapTileServer(reg));
+
+ // Set what part of the world should be shown
+ map.setView(new LLatLng(reg, 49.6751, 12.1607), 17);
+
+ // Create a new marker
+ new LMarker(reg, new LLatLng(reg, 49.6756, 12.1610))
+ // Bind a popup which is displayed when clicking the marker
+ .bindPopup("XDEV Software")
+ // Add it to the map
+ .addTo(map);
+
+ // Add Geoman Controls
+ final LMapPM lMapPM = new LMapPM(map);
+ lMapPM.addControls();
+
+ final HorizontalLayout hlButtons = new HorizontalLayout();
+ this.add(hlButtons);
+
+ final Button btnText = new Button(
+ "Add text", ev -> lMapPM.enableDrawText(new LTextOptions()
+ .withText("Some text")
+ .withTextMarkerCentered(true)));
+ hlButtons.add(btnText);
+ }
+}
diff --git a/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/LeafletMarkerClusterDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/LeafletMarkerClusterDemo.java
new file mode 100644
index 00000000..1ebe151b
--- /dev/null
+++ b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/LeafletMarkerClusterDemo.java
@@ -0,0 +1,65 @@
+package software.xdev.vaadin.maps.leaflet.flow.demo.plugins;
+
+import com.vaadin.flow.component.orderedlayout.VerticalLayout;
+import com.vaadin.flow.router.Route;
+
+import software.xdev.vaadin.maps.leaflet.MapContainer;
+import software.xdev.vaadin.maps.leaflet.basictypes.LLatLng;
+import software.xdev.vaadin.maps.leaflet.layer.raster.LTileLayer;
+import software.xdev.vaadin.maps.leaflet.layer.ui.LMarker;
+import software.xdev.vaadin.maps.leaflet.map.LMap;
+import software.xdev.vaadin.maps.leaflet.markercluster.layer.other.LMarkerClusterGroup;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+import software.xdev.vaadin.maps.leaflet.registry.LDefaultComponentManagementRegistry;
+
+
+@Route(LeafletMarkerClusterDemo.NAV)
+@SuppressWarnings("checkstyle:MagicNumber")
+public class LeafletMarkerClusterDemo extends VerticalLayout
+{
+ public static final String NAV = "/leaflet-markercluster";
+
+ public LeafletMarkerClusterDemo()
+ {
+ // Let the view use 100% of the site
+ this.setSizeFull();
+
+ // Create the registry which is needed so that components can be reused and their methods invoked
+ // Note: You normally don't need to invoke any methods of the registry and just hand it over to the components
+ final LComponentManagementRegistry reg = new LDefaultComponentManagementRegistry(this);
+
+ // Create and add the MapContainer (which contains the map) to the UI
+ final MapContainer mapContainer = new MapContainer(reg);
+ mapContainer.setSizeFull();
+ this.add(mapContainer);
+
+ final LMap map = mapContainer.getlMap();
+
+ // Add a (default) TileLayer so that we can see something on the map
+ map.addLayer(LTileLayer.createDefaultForOpenStreetMapTileServer(reg));
+
+ // Set what part of the world should be shown
+ map.setView(new LLatLng(reg, 49.1, 12), 8);
+
+ final LMarkerClusterGroup markerClusterGroup = new LMarkerClusterGroup(reg);
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.6756, 12.1610))
+ .bindPopup("XDEV Software"));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.673800, 12.160113))
+ .bindPopup("Schnitzel"));
+
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.67, 12.16))
+ .bindPopup("Weiden i.d.OPf."));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.44, 11.86))
+ .bindPopup("Amberg"));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.33, 12.11))
+ .bindPopup("Schwandorf"));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.45, 11.08))
+ .bindPopup("Nürnberg"));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 49.02, 12.1))
+ .bindPopup("Regensburg"));
+ markerClusterGroup.addLayer(new LMarker(reg, new LLatLng(reg, 48.14, 11.57))
+ .bindPopup("München"));
+
+ map.addLayer(markerClusterGroup);
+ }
+}
diff --git a/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/MaplibreGLDemo.java b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/MaplibreGLDemo.java
new file mode 100644
index 00000000..a69ddbe7
--- /dev/null
+++ b/flow-demo/src/main/java/software/xdev/vaadin/maps/leaflet/flow/demo/plugins/MaplibreGLDemo.java
@@ -0,0 +1,50 @@
+package software.xdev.vaadin.maps.leaflet.flow.demo.plugins;
+
+import com.vaadin.flow.component.orderedlayout.VerticalLayout;
+import com.vaadin.flow.router.Route;
+
+import software.xdev.vaadin.maps.leaflet.MapContainer;
+import software.xdev.vaadin.maps.leaflet.basictypes.LLatLng;
+import software.xdev.vaadin.maps.leaflet.layer.ui.LMarker;
+import software.xdev.vaadin.maps.leaflet.map.LMap;
+import software.xdev.vaadin.maps.leaflet.maplibregl.layer.vector.LMaplibreGL;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+import software.xdev.vaadin.maps.leaflet.registry.LDefaultComponentManagementRegistry;
+
+
+@Route(MaplibreGLDemo.NAV)
+@SuppressWarnings("checkstyle:MagicNumber")
+public class MaplibreGLDemo extends VerticalLayout
+{
+ public static final String NAV = "/maplibre-gl";
+
+ public MaplibreGLDemo()
+ {
+ // Let the view use 100% of the site
+ this.setSizeFull();
+
+ // Create the registry which is needed so that components can be reused and their methods invoked
+ // Note: You normally don't need to invoke any methods of the registry and just hand it over to the components
+ final LComponentManagementRegistry reg = new LDefaultComponentManagementRegistry(this);
+
+ // Create and add the MapContainer (which contains the map) to the UI
+ final MapContainer mapContainer = new MapContainer(reg);
+ mapContainer.setSizeFull();
+ this.add(mapContainer);
+
+ final LMap map = mapContainer.getlMap();
+
+ // Add maplibre layer
+ new LMaplibreGL(reg, "https://demotiles.maplibre.org/style.json").addTo(map);
+
+ // Set what part of the world should be shown
+ map.setView(new LLatLng(reg, 49.6751, 12.1607), 5);
+
+ // Create a new marker
+ new LMarker(reg, new LLatLng(reg, 49.6756, 12.1610))
+ // Bind a popup which is displayed when clicking the marker
+ .bindPopup("XDEV Software")
+ // Add it to the map
+ .addTo(map);
+ }
+}
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/resources/META-INF/resources/assets/XDEV_LOGO.svg b/flow-demo/src/main/resources/META-INF/resources/assets/XDEV_LOGO.svg
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/resources/META-INF/resources/assets/XDEV_LOGO.svg
rename to flow-demo/src/main/resources/META-INF/resources/assets/XDEV_LOGO.svg
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/resources/META-INF/resources/uqm_map_full.png b/flow-demo/src/main/resources/META-INF/resources/uqm_map_full.png
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/resources/META-INF/resources/uqm_map_full.png
rename to flow-demo/src/main/resources/META-INF/resources/uqm_map_full.png
diff --git a/vaadin-maps-leaflet-flow-demo/src/main/resources/application.yml b/flow-demo/src/main/resources/application.yml
similarity index 100%
rename from vaadin-maps-leaflet-flow-demo/src/main/resources/application.yml
rename to flow-demo/src/main/resources/application.yml
diff --git a/vaadin-maps-leaflet-flow/pom.xml b/flow/pom.xml
similarity index 98%
rename from vaadin-maps-leaflet-flow/pom.xml
rename to flow/pom.xml
index fd1bf1a7..1481c0c8 100644
--- a/vaadin-maps-leaflet-flow/pom.xml
+++ b/flow/pom.xml
@@ -4,9 +4,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- software.xdev
- vaadin-maps-leaflet-flow
- 4.6.5-SNAPSHOT
+ software.xdev.vaadin.maps-leaflet
+ flow
+ 5.0.0-SNAPSHOT
jar
LeafletMap for Vaadin
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/MapContainer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/MapContainer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/MapContainer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/MapContainer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LAbstractComponent.java
similarity index 68%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LAbstractComponent.java
index 961cd7a2..5db154a8 100644
--- a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java
+++ b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LAbstractComponent.java
@@ -15,23 +15,19 @@
*/
package software.xdev.vaadin.maps.leaflet.base;
-import java.io.Serializable;
import java.util.Objects;
import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
-public abstract class LBaseComponent> implements LComponent
+public abstract class LAbstractComponent> implements LComponent
{
private final LComponentManagementRegistry componentRegistry;
- protected LBaseComponent(
- final LComponentManagementRegistry compReg,
- final String jsConstructorCallExpression,
- final Serializable... parameters)
+ protected LAbstractComponent(
+ final LComponentManagementRegistry compReg)
{
this.componentRegistry = Objects.requireNonNull(compReg);
- this.componentRegistry.add(this.self(), jsConstructorCallExpression, parameters);
}
@Override
@@ -39,10 +35,4 @@ public LComponentManagementRegistry componentRegistry()
{
return this.componentRegistry;
}
-
- @Override
- public String clientComponentJsAccessor()
- {
- return this.componentRegistry.clientComponentJsAccessor(this);
- }
}
diff --git a/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java
new file mode 100644
index 00000000..8995e2af
--- /dev/null
+++ b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LBaseComponent.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.base;
+
+import java.io.Serializable;
+
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+
+
+public abstract class LBaseComponent> extends LAbstractComponent
+{
+ protected LBaseComponent(
+ final LComponentManagementRegistry compReg,
+ final String jsConstructorCallExpression,
+ final Serializable... parameters)
+ {
+ super(compReg);
+ this.componentRegistry().add(this.self(), jsConstructorCallExpression, parameters);
+ }
+
+ @Override
+ public String clientComponentJsAccessor()
+ {
+ return this.componentRegistry().clientComponentJsAccessor(this);
+ }
+}
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java
similarity index 92%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java
index 0897ce8a..7b335dab 100644
--- a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java
+++ b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponent.java
@@ -26,10 +26,7 @@ public interface LComponent>
{
LComponentManagementRegistry componentRegistry();
- default String clientComponentJsAccessor()
- {
- return this.componentRegistry().clientComponentJsAccessor(this);
- }
+ String clientComponentJsAccessor();
default PendingJavaScriptResult invokeSelf(final String payload, final Serializable... params)
{
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponentOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponentOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponentOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LComponentOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LEvented.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LEvented.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LEvented.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/LEvented.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/RawString.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/RawString.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/RawString.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/RawString.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasBringTo.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasBringTo.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasBringTo.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasBringTo.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasOpacity.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasOpacity.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasOpacity.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasOpacity.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasRedraw.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasRedraw.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasRedraw.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasRedraw.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetLatLng.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetLatLng.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetLatLng.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetLatLng.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetStylePath.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetStylePath.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetStylePath.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetStylePath.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetZIndex.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetZIndex.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetZIndex.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/base/has/LHasSetZIndex.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LAbstractIconOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LAbstractIconOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LAbstractIconOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LAbstractIconOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIcon.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIcon.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIcon.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIcon.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIconOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIconOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIconOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LDivIconOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIcon.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIcon.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIcon.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIcon.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIconOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIconOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIconOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LIconOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLng.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLng.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLng.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLng.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLngBounds.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLngBounds.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLngBounds.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LLatLngBounds.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LPoint.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LPoint.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LPoint.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/basictypes/LPoint.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControl.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControl.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControl.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControl.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttribution.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttribution.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttribution.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttribution.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttributionOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttributionOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttributionOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlAttributionOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayers.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayers.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayers.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayers.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayersOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayersOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayersOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlLayersOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScale.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScale.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScale.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScale.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScaleOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScaleOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScaleOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlScaleOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoom.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoom.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoom.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoom.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoomOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoomOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoomOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/controls/LControlZoomOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/crs/LCRS.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/crs/LCRS.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/crs/LCRS.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/crs/LCRS.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractImageOverlayOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractImageOverlayOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractImageOverlayOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractImageOverlayOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractLayerGroup.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractLayerGroup.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractLayerGroup.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LAbstractLayerGroup.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LGridLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LInteractiveLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerGroup.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerGroup.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerGroup.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerGroup.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/LLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LAbstractFeatureGroup.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LAbstractFeatureGroup.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LAbstractFeatureGroup.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LAbstractFeatureGroup.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LFeatureGroup.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LFeatureGroup.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LFeatureGroup.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LFeatureGroup.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/other/LGeoJSONLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LAbstractTileLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlay.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlay.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlay.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlay.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlayOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlayOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlayOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LImageOverlayOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayer.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayer.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayer.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayer.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMS.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMS.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMS.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMS.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMSOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMSOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMSOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LTileLayerWMSOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlay.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlay.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlay.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlay.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlayOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlayOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlayOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/raster/LVideoOverlayOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlay.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlay.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlay.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlay.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlayOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlayOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlayOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LDivOverlayOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarker.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarker.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarker.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarker.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarkerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarkerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarkerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LMarkerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopup.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopup.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopup.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopup.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopupOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopupOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopupOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LPopupOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltip.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltip.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltip.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltip.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltipOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltipOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltipOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/ui/LTooltipOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LAbstractCircle.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LAbstractCircle.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LAbstractCircle.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LAbstractCircle.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircle.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircle.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircle.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircle.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarker.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarker.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarker.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarker.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarkerOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarkerOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarkerOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleMarkerOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LCircleOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPath.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPath.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPath.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPath.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPathOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPathOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPathOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPathOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolygon.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolygon.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolygon.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolygon.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolyline.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolyline.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolyline.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolyline.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolylineOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolylineOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolylineOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LPolylineOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LRectangle.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LRectangle.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LRectangle.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LRectangle.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlay.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlay.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlay.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlay.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlayOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlayOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlayOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/layer/vector/LSVGOverlayOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapPanOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapPanOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapPanOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapPanOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapZoomPanOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapZoomPanOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapZoomPanOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/AbstractLMapZoomPanOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMap.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMap.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMap.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMap.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapFitBoundOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapFitBoundOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapFitBoundOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapFitBoundOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapLocateOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapLocateOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapLocateOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapLocateOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingBaseOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingBaseOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingBaseOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingBaseOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPaddingOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanBaseOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanBaseOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanBaseOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanBaseOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapPanOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomBaseOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomBaseOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomBaseOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomBaseOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomPanOptions.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomPanOptions.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomPanOptions.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/map/LMapZoomPanOptions.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LComponentManagementRegistry.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LComponentManagementRegistry.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LComponentManagementRegistry.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LComponentManagementRegistry.java
diff --git a/vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LDefaultComponentManagementRegistry.java b/flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LDefaultComponentManagementRegistry.java
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LDefaultComponentManagementRegistry.java
rename to flow/src/main/java/software/xdev/vaadin/maps/leaflet/registry/LDefaultComponentManagementRegistry.java
diff --git a/vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/layers-2x.png b/flow/src/main/resources/META-INF/resources/layers-2x.png
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/layers-2x.png
rename to flow/src/main/resources/META-INF/resources/layers-2x.png
diff --git a/vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/layers.png b/flow/src/main/resources/META-INF/resources/layers.png
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/layers.png
rename to flow/src/main/resources/META-INF/resources/layers.png
diff --git a/vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-icon-2x.png b/flow/src/main/resources/META-INF/resources/marker-icon-2x.png
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-icon-2x.png
rename to flow/src/main/resources/META-INF/resources/marker-icon-2x.png
diff --git a/vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-icon.png b/flow/src/main/resources/META-INF/resources/marker-icon.png
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-icon.png
rename to flow/src/main/resources/META-INF/resources/marker-icon.png
diff --git a/vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-shadow.png b/flow/src/main/resources/META-INF/resources/marker-shadow.png
similarity index 100%
rename from vaadin-maps-leaflet-flow/src/main/resources/META-INF/resources/marker-shadow.png
rename to flow/src/main/resources/META-INF/resources/marker-shadow.png
diff --git a/plugins/geoman/README.md b/plugins/geoman/README.md
new file mode 100644
index 00000000..7382f530
--- /dev/null
+++ b/plugins/geoman/README.md
@@ -0,0 +1 @@
+# Plugin for [leaflet-geoman](https://github.com/geoman-io/leaflet-geoman)
diff --git a/plugins/geoman/pom.xml b/plugins/geoman/pom.xml
new file mode 100644
index 00000000..6cecee1f
--- /dev/null
+++ b/plugins/geoman/pom.xml
@@ -0,0 +1,310 @@
+
+
+ 4.0.0
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ geoman
+ 5.0.0-SNAPSHOT
+ jar
+
+ LeafletMap for Vaadin - Plugin - geoman
+ LeafletMap for Vaadin - Plugin - geoman
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+
+
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+ scm:git:https://github.com/xdev-software/vaadin-maps-leaflet-flow.git
+
+
+ 2019
+
+
+ XDEV Software
+ https://xdev.software
+
+
+
+
+ XDEV Software
+ XDEV Software
+ https://xdev.software
+
+
+
+
+
+ Apache-2.0
+ https://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ 17
+ ${javaVersion}
+
+ UTF-8
+ UTF-8
+
+
+
+
+ software.xdev.vaadin.maps-leaflet
+ flow
+ 5.0.0-SNAPSHOT
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 4.0.0-M16
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 3.9.0
+
+
+
+
+
+ com.mycila
+ license-maven-plugin
+ 5.0.0
+
+
+ ${project.organization.url}
+
+
+
+ com/mycila/maven/plugin/license/templates/APACHE-2.txt
+
+ src/main/java/**
+ src/test/java/**
+
+
+
+
+
+
+ first
+
+ format
+
+ process-sources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.0
+
+ ${maven.compiler.release}
+
+ -proc:none
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.11.2
+
+
+ attach-javadocs
+ package
+
+ jar
+
+
+
+
+ true
+ none
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.3.1
+
+
+ attach-sources
+ package
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.4.2
+
+
+ true
+
+ false
+ true
+
+
+
+ 1
+
+
+
+
+
+ META-INF/VAADIN/
+
+
+
+
+
+
+
+
+ publish
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ 1.7.2
+
+ ossrh
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.2.8
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+
+
+ publish-sonatype-central-portal
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.8.0
+ true
+
+ sonatype-central-portal
+ true
+
+
+
+
+
+
+ checkstyle
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.6.0
+
+
+ com.puppycrawl.tools
+ checkstyle
+ 10.26.1
+
+
+
+ ../../.config/checkstyle/checkstyle.xml
+ true
+
+
+
+
+ check
+
+
+
+
+
+
+
+
+ pmd
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.27.0
+
+ true
+ true
+
+ ../../.config/pmd/java/ruleset.xml
+
+
+
+
+ net.sourceforge.pmd
+ pmd-core
+ 7.16.0
+
+
+ net.sourceforge.pmd
+ pmd-java
+ 7.16.0
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 3.6.0
+
+
+
+
+
+
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawEditOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawEditOptions.java
new file mode 100644
index 00000000..a6e3ae2c
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawEditOptions.java
@@ -0,0 +1,281 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+// Java has not multi-inheritance CPD-OFF
+/**
+ * Combination of {@link LAbstractDrawOptions} and {@link LAbstractEditOptions}
+ */
+public abstract class LAbstractDrawEditOptions>
+ extends LAbstractDrawOptions
+{
+ private Boolean allowSelfIntersectionEdit;
+ private Boolean preventMarkerRemoval;
+ private Boolean removeLayerBelowMinVertexCount;
+ private Boolean syncLayersOnDrag;
+ private Boolean allowEditing;
+ private Boolean allowRemoval;
+ private Boolean allowCutting;
+ private Boolean allowRotation;
+ private Boolean draggable;
+ private Boolean addVertexOn;
+ private Object addVertexValidation;
+ private Object removeVertexOn;
+ private Object removeVertexValidation;
+ private Object moveVertexValidation;
+ private Number limitMarkersToCount;
+
+ public Boolean getAllowSelfIntersectionEdit()
+ {
+ return this.allowSelfIntersectionEdit;
+ }
+
+ public void setAllowSelfIntersectionEdit(final Boolean allowSelfIntersectionEdit)
+ {
+ this.allowSelfIntersectionEdit = allowSelfIntersectionEdit;
+ }
+
+ public S withAllowSelfIntersectionEdit(final Boolean allowSelfIntersectionEdit)
+ {
+ this.setAllowSelfIntersection(allowSelfIntersectionEdit);
+ return this.self();
+ }
+
+ public Boolean getPreventMarkerRemoval()
+ {
+ return this.preventMarkerRemoval;
+ }
+
+ public void setPreventMarkerRemoval(final Boolean preventMarkerRemoval)
+ {
+ this.preventMarkerRemoval = preventMarkerRemoval;
+ }
+
+ public S withPreventMarkerRemoval(final Boolean preventMarkerRemoval)
+ {
+ this.setPreventMarkerRemoval(preventMarkerRemoval);
+ return this.self();
+ }
+
+ public Boolean getRemoveLayerBelowMinVertexCount()
+ {
+ return this.removeLayerBelowMinVertexCount;
+ }
+
+ public void setRemoveLayerBelowMinVertexCount(final Boolean removeLayerBelowMinVertexCount)
+ {
+ this.removeLayerBelowMinVertexCount = removeLayerBelowMinVertexCount;
+ }
+
+ public S withRemoveLayerBelowMinVertexCount(final Boolean removeLayerBelowMinVertexCount)
+ {
+ this.setRemoveLayerBelowMinVertexCount(removeLayerBelowMinVertexCount);
+ return this.self();
+ }
+
+ public Boolean getSyncLayersOnDrag()
+ {
+ return this.syncLayersOnDrag;
+ }
+
+ public void setSyncLayersOnDrag(final Boolean syncLayersOnDrag)
+ {
+ this.syncLayersOnDrag = syncLayersOnDrag;
+ }
+
+ public S withSyncLayersOnDrag(final Boolean syncLayersOnDrag)
+ {
+ this.setSyncLayersOnDrag(syncLayersOnDrag);
+ return this.self();
+ }
+
+ public Boolean getAllowEditing()
+ {
+ return this.allowEditing;
+ }
+
+ public void setAllowEditing(final Boolean allowEditing)
+ {
+ this.allowEditing = allowEditing;
+ }
+
+ public S withAllowEditing(final Boolean allowEditing)
+ {
+ this.setAllowEditing(allowEditing);
+ return this.self();
+ }
+
+ public Boolean getAllowRemoval()
+ {
+ return this.allowRemoval;
+ }
+
+ public void setAllowRemoval(final Boolean allowRemoval)
+ {
+ this.allowRemoval = allowRemoval;
+ }
+
+ public S withAllowRemoval(final Boolean allowRemoval)
+ {
+ this.setAllowRemoval(allowRemoval);
+ return this.self();
+ }
+
+ public Boolean getAllowCutting()
+ {
+ return this.allowCutting;
+ }
+
+ public void setAllowCutting(final Boolean allowCutting)
+ {
+ this.allowCutting = allowCutting;
+ }
+
+ public S withAllowCutting(final Boolean allowCutting)
+ {
+ this.setAllowCutting(allowCutting);
+ return this.self();
+ }
+
+ public Boolean getAllowRotation()
+ {
+ return this.allowRotation;
+ }
+
+ public void setAllowRotation(final Boolean allowRotation)
+ {
+ this.allowRotation = allowRotation;
+ }
+
+ public S withAllowRotation(final Boolean allowRotation)
+ {
+ this.setAllowRotation(allowRotation);
+ return this.self();
+ }
+
+ public Boolean getDraggable()
+ {
+ return this.draggable;
+ }
+
+ public void setDraggable(final Boolean draggable)
+ {
+ this.draggable = draggable;
+ }
+
+ public S withDraggable(final Boolean draggable)
+ {
+ this.setDraggable(draggable);
+ return this.self();
+ }
+
+ public Boolean getAddVertexOn()
+ {
+ return this.addVertexOn;
+ }
+
+ public void setAddVertexOn(final Boolean addVertexOn)
+ {
+ this.addVertexOn = addVertexOn;
+ }
+
+ public S withAddVertexOn(final Boolean addVertexOn)
+ {
+ this.setAddVertexOn(addVertexOn);
+ return this.self();
+ }
+
+ public Object getAddVertexValidation()
+ {
+ return this.addVertexValidation;
+ }
+
+ public void setAddVertexValidation(final Object addVertexValidation)
+ {
+ this.addVertexValidation = addVertexValidation;
+ }
+
+ public S withAddVertexValidation(final Object addVertexValidation)
+ {
+ this.setAddVertexValidation(addVertexValidation);
+ return this.self();
+ }
+
+ public Object getRemoveVertexOn()
+ {
+ return this.removeVertexOn;
+ }
+
+ public void setRemoveVertexOn(final Object removeVertexOn)
+ {
+ this.removeVertexOn = removeVertexOn;
+ }
+
+ public S withRemoveVertexOn(final Object removeVertexOn)
+ {
+ this.setRemoveVertexOn(removeVertexOn);
+ return this.self();
+ }
+
+ public Object getRemoveVertexValidation()
+ {
+ return this.removeVertexValidation;
+ }
+
+ public void setRemoveVertexValidation(final Object removeVertexValidation)
+ {
+ this.removeVertexValidation = removeVertexValidation;
+ }
+
+ public S withRemoveVertexValidation(final Object removeVertexValidation)
+ {
+ this.setRemoveVertexValidation(removeVertexValidation);
+ return this.self();
+ }
+
+ public Object getMoveVertexValidation()
+ {
+ return this.moveVertexValidation;
+ }
+
+ public void setMoveVertexValidation(final Object moveVertexValidation)
+ {
+ this.moveVertexValidation = moveVertexValidation;
+ }
+
+ public S withMoveVertexValidation(final Object moveVertexValidation)
+ {
+ this.setMoveVertexValidation(moveVertexValidation);
+ return this.self();
+ }
+
+ public Number getLimitMarkersToCount()
+ {
+ return this.limitMarkersToCount;
+ }
+
+ public void setLimitMarkersToCount(final Number limitMarkersToCount)
+ {
+ this.limitMarkersToCount = limitMarkersToCount;
+ }
+
+ public S withLimitMarkersToCount(final Number limitMarkersToCount)
+ {
+ this.setLimitMarkersToCount(limitMarkersToCount);
+ return this.self();
+ }
+}
+// CPD-ON
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOptions.java
new file mode 100644
index 00000000..29b039cd
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOptions.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public abstract class LAbstractDrawOptions>
+ extends LAbstractDrawOrEditOptions
+{
+ private Object templineStyle;
+ private Object hintlineStyle;
+ private Object pathOptions;
+ private Object markerStyle;
+ private Boolean cursorMarker;
+ private Object finishOn;
+ private Boolean hideMiddleMarkers;
+ private Number minRadiusCircle;
+ private Number maxRadiusCircle;
+ private Number minRadiusCircleMarker;
+ private Number maxRadiusCircleMarker;
+ private Boolean resizeableCircle;
+ private Boolean resizeableCircleMarker;
+ private Boolean markerEditable;
+ private Boolean continueDrawing;
+ private Number rectangleAngle;
+ private Object layersToCut;
+ private Object textOptions;
+
+ public Object getTemplineStyle()
+ {
+ return this.templineStyle;
+ }
+
+ public void setTemplineStyle(final Object templineStyle)
+ {
+ this.templineStyle = templineStyle;
+ }
+
+ public S withTemplineStyle(final Object templineStyle)
+ {
+ this.setTemplineStyle(templineStyle);
+ return this.self();
+ }
+
+ public Object getHintlineStyle()
+ {
+ return this.hintlineStyle;
+ }
+
+ public void setHintlineStyle(final Object hintlineStyle)
+ {
+ this.hintlineStyle = hintlineStyle;
+ }
+
+ public S withHintlineStyle(final Object hintlineStyle)
+ {
+ this.setHintlineStyle(hintlineStyle);
+ return this.self();
+ }
+
+ public Object getPathOptions()
+ {
+ return this.pathOptions;
+ }
+
+ public void setPathOptions(final Object pathOptions)
+ {
+ this.pathOptions = pathOptions;
+ }
+
+ public S withPathOptions(final Object pathOptions)
+ {
+ this.setPathOptions(pathOptions);
+ return this.self();
+ }
+
+ public Object getMarkerStyle()
+ {
+ return this.markerStyle;
+ }
+
+ public void setMarkerStyle(final Object markerStyle)
+ {
+ this.markerStyle = markerStyle;
+ }
+
+ public S withMarkerStyle(final Object markerStyle)
+ {
+ this.setMarkerStyle(markerStyle);
+ return this.self();
+ }
+
+ public Boolean getCursorMarker()
+ {
+ return this.cursorMarker;
+ }
+
+ public void setCursorMarker(final Boolean cursorMarker)
+ {
+ this.cursorMarker = cursorMarker;
+ }
+
+ public S withCursorMarker(final Boolean cursorMarker)
+ {
+ this.setCursorMarker(cursorMarker);
+ return this.self();
+ }
+
+ public Object getFinishOn()
+ {
+ return this.finishOn;
+ }
+
+ public void setFinishOn(final Object finishOn)
+ {
+ this.finishOn = finishOn;
+ }
+
+ public S withFinishOn(final Object finishOn)
+ {
+ this.setFinishOn(finishOn);
+ return this.self();
+ }
+
+ public Boolean getHideMiddleMarkers()
+ {
+ return this.hideMiddleMarkers;
+ }
+
+ public void setHideMiddleMarkers(final Boolean hideMiddleMarkers)
+ {
+ this.hideMiddleMarkers = hideMiddleMarkers;
+ }
+
+ public S withHideMiddleMarkers(final Boolean hideMiddleMarkers)
+ {
+ this.setHideMiddleMarkers(hideMiddleMarkers);
+ return this.self();
+ }
+
+ public Number getMinRadiusCircle()
+ {
+ return this.minRadiusCircle;
+ }
+
+ public void setMinRadiusCircle(final Number minRadiusCircle)
+ {
+ this.minRadiusCircle = minRadiusCircle;
+ }
+
+ public S withMinRadiusCircle(final Number minRadiusCircle)
+ {
+ this.setMinRadiusCircle(minRadiusCircle);
+ return this.self();
+ }
+
+ public Number getMaxRadiusCircle()
+ {
+ return this.maxRadiusCircle;
+ }
+
+ public void setMaxRadiusCircle(final Number maxRadiusCircle)
+ {
+ this.maxRadiusCircle = maxRadiusCircle;
+ }
+
+ public S withMaxRadiusCircle(final Number maxRadiusCircle)
+ {
+ this.setMaxRadiusCircle(maxRadiusCircle);
+ return this.self();
+ }
+
+ public Number getMinRadiusCircleMarker()
+ {
+ return this.minRadiusCircleMarker;
+ }
+
+ public void setMinRadiusCircleMarker(final Number minRadiusCircleMarker)
+ {
+ this.minRadiusCircleMarker = minRadiusCircleMarker;
+ }
+
+ public S withMinRadiusCircleMarker(final Number minRadiusCircleMarker)
+ {
+ this.setMinRadiusCircleMarker(minRadiusCircleMarker);
+ return this.self();
+ }
+
+ public Number getMaxRadiusCircleMarker()
+ {
+ return this.maxRadiusCircleMarker;
+ }
+
+ public void setMaxRadiusCircleMarker(final Number maxRadiusCircleMarker)
+ {
+ this.maxRadiusCircleMarker = maxRadiusCircleMarker;
+ }
+
+ public S withMaxRadiusCircleMarker(final Number maxRadiusCircleMarker)
+ {
+ this.setMaxRadiusCircleMarker(maxRadiusCircleMarker);
+ return this.self();
+ }
+
+ public Boolean getResizeableCircle()
+ {
+ return this.resizeableCircle;
+ }
+
+ public void setResizeableCircle(final Boolean resizeableCircle)
+ {
+ this.resizeableCircle = resizeableCircle;
+ }
+
+ public S withResizeableCircle(final Boolean resizeableCircle)
+ {
+ this.setResizeableCircle(resizeableCircle);
+ return this.self();
+ }
+
+ public Boolean getResizeableCircleMarker()
+ {
+ return this.resizeableCircleMarker;
+ }
+
+ public void setResizeableCircleMarker(final Boolean resizeableCircleMarker)
+ {
+ this.resizeableCircleMarker = resizeableCircleMarker;
+ }
+
+ public S withResizeableCircleMarker(final Boolean resizeableCircleMarker)
+ {
+ this.setResizeableCircleMarker(resizeableCircleMarker);
+ return this.self();
+ }
+
+ public Boolean getMarkerEditable()
+ {
+ return this.markerEditable;
+ }
+
+ public void setMarkerEditable(final Boolean markerEditable)
+ {
+ this.markerEditable = markerEditable;
+ }
+
+ public S withMarkerEditable(final Boolean markerEditable)
+ {
+ this.setMarkerEditable(markerEditable);
+ return this.self();
+ }
+
+ public Boolean getContinueDrawing()
+ {
+ return this.continueDrawing;
+ }
+
+ public void setContinueDrawing(final Boolean continueDrawing)
+ {
+ this.continueDrawing = continueDrawing;
+ }
+
+ public S withContinueDrawing(final Boolean continueDrawing)
+ {
+ this.setContinueDrawing(continueDrawing);
+ return this.self();
+ }
+
+ public Number getRectangleAngle()
+ {
+ return this.rectangleAngle;
+ }
+
+ public void setRectangleAngle(final Number rectangleAngle)
+ {
+ this.rectangleAngle = rectangleAngle;
+ }
+
+ public S withRectangleAngle(final Number rectangleAngle)
+ {
+ this.setRectangleAngle(rectangleAngle);
+ return this.self();
+ }
+
+ public Object getLayersToCut()
+ {
+ return this.layersToCut;
+ }
+
+ public void setLayersToCut(final Object layersToCut)
+ {
+ this.layersToCut = layersToCut;
+ }
+
+ public S withLayersToCut(final Object layersToCut)
+ {
+ this.setLayersToCut(layersToCut);
+ return this.self();
+ }
+
+ public Object getTextOptions()
+ {
+ return this.textOptions;
+ }
+
+ public void setTextOptions(final Object textOptions)
+ {
+ this.textOptions = textOptions;
+ }
+
+ public S withTextOptions(final Object textOptions)
+ {
+ this.setTextOptions(textOptions);
+ return this.self();
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOrEditOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOrEditOptions.java
new file mode 100644
index 00000000..0d5c3f79
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractDrawOrEditOptions.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+import software.xdev.vaadin.maps.leaflet.base.LComponentOptions;
+
+
+/**
+ * Common properties shared by {@link LAbstractDrawOptions} and {@link LAbstractEditOptions}
+ */
+public abstract class LAbstractDrawOrEditOptions>
+ implements LComponentOptions
+{
+ private Boolean snappable;
+ private Number snapDistance;
+ private Boolean snapMiddle;
+ private Boolean snapSegment;
+ private Boolean snapVertex;
+ private Boolean requireSnapToFinish;
+ private Boolean tooltips;
+ private Boolean allowSelfIntersection;
+
+ public Boolean getSnappable()
+ {
+ return this.snappable;
+ }
+
+ public void setSnappable(final Boolean snappable)
+ {
+ this.snappable = snappable;
+ }
+
+ public S withSnappable(final Boolean snappable)
+ {
+ this.setSnappable(snappable);
+ return this.self();
+ }
+
+ public Number getSnapDistance()
+ {
+ return this.snapDistance;
+ }
+
+ public void setSnapDistance(final Number snapDistance)
+ {
+ this.snapDistance = snapDistance;
+ }
+
+ public S withSnapDistance(final Number snapDistance)
+ {
+ this.setSnapDistance(snapDistance);
+ return this.self();
+ }
+
+ public Boolean getSnapMiddle()
+ {
+ return this.snapMiddle;
+ }
+
+ public void setSnapMiddle(final Boolean snapMiddle)
+ {
+ this.snapMiddle = snapMiddle;
+ }
+
+ public S withSnapMiddle(final Boolean snapMiddle)
+ {
+ this.setSnapMiddle(snapMiddle);
+ return this.self();
+ }
+
+ public Boolean getSnapSegment()
+ {
+ return this.snapSegment;
+ }
+
+ public void setSnapSegment(final Boolean snapSegment)
+ {
+ this.snapSegment = snapSegment;
+ }
+
+ public S withSnapSegment(final Boolean snapSegment)
+ {
+ this.setSnapSegment(snapSegment);
+ return this.self();
+ }
+
+ public Boolean getSnapVertex()
+ {
+ return this.snapVertex;
+ }
+
+ public void setSnapVertex(final Boolean snapVertex)
+ {
+ this.snapVertex = snapVertex;
+ }
+
+ public S withSnapVertex(final Boolean snapVertex)
+ {
+ this.setSnapVertex(snapVertex);
+ return this.self();
+ }
+
+ public Boolean getRequireSnapToFinish()
+ {
+ return this.requireSnapToFinish;
+ }
+
+ public void setRequireSnapToFinish(final Boolean requireSnapToFinish)
+ {
+ this.requireSnapToFinish = requireSnapToFinish;
+ }
+
+ public S withRequireSnapToFinish(final Boolean requireSnapToFinish)
+ {
+ this.setRequireSnapToFinish(requireSnapToFinish);
+ return this.self();
+ }
+
+ public Boolean getTooltips()
+ {
+ return this.tooltips;
+ }
+
+ public void setTooltips(final Boolean tooltips)
+ {
+ this.tooltips = tooltips;
+ }
+
+ public S withTooltips(final Boolean tooltips)
+ {
+ this.setTooltips(tooltips);
+ return this.self();
+ }
+
+ public Boolean getAllowSelfIntersection()
+ {
+ return this.allowSelfIntersection;
+ }
+
+ public void setAllowSelfIntersection(final Boolean allowSelfIntersection)
+ {
+ this.allowSelfIntersection = allowSelfIntersection;
+ }
+
+ public S withAllowSelfIntersection(final Boolean allowSelfIntersection)
+ {
+ this.setAllowSelfIntersection(allowSelfIntersection);
+ return this.self();
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractEditOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractEditOptions.java
new file mode 100644
index 00000000..e0b2017e
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LAbstractEditOptions.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public abstract class LAbstractEditOptions>
+ extends LAbstractDrawOrEditOptions
+{
+ private Boolean allowSelfIntersectionEdit;
+ private Boolean preventMarkerRemoval;
+ private Boolean removeLayerBelowMinVertexCount;
+ private Boolean syncLayersOnDrag;
+ private Boolean allowEditing;
+ private Boolean allowRemoval;
+ private Boolean allowCutting;
+ private Boolean allowRotation;
+ private Boolean draggable;
+ private Boolean addVertexOn;
+ private Object addVertexValidation;
+ private Object removeVertexOn;
+ private Object removeVertexValidation;
+ private Object moveVertexValidation;
+ private Number limitMarkersToCount;
+
+ public Boolean getAllowSelfIntersectionEdit()
+ {
+ return this.allowSelfIntersectionEdit;
+ }
+
+ public void setAllowSelfIntersectionEdit(final Boolean allowSelfIntersectionEdit)
+ {
+ this.allowSelfIntersectionEdit = allowSelfIntersectionEdit;
+ }
+
+ public S withAllowSelfIntersectionEdit(final Boolean allowSelfIntersectionEdit)
+ {
+ this.setAllowSelfIntersection(allowSelfIntersectionEdit);
+ return this.self();
+ }
+
+ public Boolean getPreventMarkerRemoval()
+ {
+ return this.preventMarkerRemoval;
+ }
+
+ public void setPreventMarkerRemoval(final Boolean preventMarkerRemoval)
+ {
+ this.preventMarkerRemoval = preventMarkerRemoval;
+ }
+
+ public S withPreventMarkerRemoval(final Boolean preventMarkerRemoval)
+ {
+ this.setPreventMarkerRemoval(preventMarkerRemoval);
+ return this.self();
+ }
+
+ public Boolean getRemoveLayerBelowMinVertexCount()
+ {
+ return this.removeLayerBelowMinVertexCount;
+ }
+
+ public void setRemoveLayerBelowMinVertexCount(final Boolean removeLayerBelowMinVertexCount)
+ {
+ this.removeLayerBelowMinVertexCount = removeLayerBelowMinVertexCount;
+ }
+
+ public S withRemoveLayerBelowMinVertexCount(final Boolean removeLayerBelowMinVertexCount)
+ {
+ this.setRemoveLayerBelowMinVertexCount(removeLayerBelowMinVertexCount);
+ return this.self();
+ }
+
+ public Boolean getSyncLayersOnDrag()
+ {
+ return this.syncLayersOnDrag;
+ }
+
+ public void setSyncLayersOnDrag(final Boolean syncLayersOnDrag)
+ {
+ this.syncLayersOnDrag = syncLayersOnDrag;
+ }
+
+ public S withSyncLayersOnDrag(final Boolean syncLayersOnDrag)
+ {
+ this.setSyncLayersOnDrag(syncLayersOnDrag);
+ return this.self();
+ }
+
+ public Boolean getAllowEditing()
+ {
+ return this.allowEditing;
+ }
+
+ public void setAllowEditing(final Boolean allowEditing)
+ {
+ this.allowEditing = allowEditing;
+ }
+
+ public S withAllowEditing(final Boolean allowEditing)
+ {
+ this.setAllowEditing(allowEditing);
+ return this.self();
+ }
+
+ public Boolean getAllowRemoval()
+ {
+ return this.allowRemoval;
+ }
+
+ public void setAllowRemoval(final Boolean allowRemoval)
+ {
+ this.allowRemoval = allowRemoval;
+ }
+
+ public S withAllowRemoval(final Boolean allowRemoval)
+ {
+ this.setAllowRemoval(allowRemoval);
+ return this.self();
+ }
+
+ public Boolean getAllowCutting()
+ {
+ return this.allowCutting;
+ }
+
+ public void setAllowCutting(final Boolean allowCutting)
+ {
+ this.allowCutting = allowCutting;
+ }
+
+ public S withAllowCutting(final Boolean allowCutting)
+ {
+ this.setAllowCutting(allowCutting);
+ return this.self();
+ }
+
+ public Boolean getAllowRotation()
+ {
+ return this.allowRotation;
+ }
+
+ public void setAllowRotation(final Boolean allowRotation)
+ {
+ this.allowRotation = allowRotation;
+ }
+
+ public S withAllowRotation(final Boolean allowRotation)
+ {
+ this.setAllowRotation(allowRotation);
+ return this.self();
+ }
+
+ public Boolean getDraggable()
+ {
+ return this.draggable;
+ }
+
+ public void setDraggable(final Boolean draggable)
+ {
+ this.draggable = draggable;
+ }
+
+ public S withDraggable(final Boolean draggable)
+ {
+ this.setDraggable(draggable);
+ return this.self();
+ }
+
+ public Boolean getAddVertexOn()
+ {
+ return this.addVertexOn;
+ }
+
+ public void setAddVertexOn(final Boolean addVertexOn)
+ {
+ this.addVertexOn = addVertexOn;
+ }
+
+ public S withAddVertexOn(final Boolean addVertexOn)
+ {
+ this.setAddVertexOn(addVertexOn);
+ return this.self();
+ }
+
+ public Object getAddVertexValidation()
+ {
+ return this.addVertexValidation;
+ }
+
+ public void setAddVertexValidation(final Object addVertexValidation)
+ {
+ this.addVertexValidation = addVertexValidation;
+ }
+
+ public S withAddVertexValidation(final Object addVertexValidation)
+ {
+ this.setAddVertexValidation(addVertexValidation);
+ return this.self();
+ }
+
+ public Object getRemoveVertexOn()
+ {
+ return this.removeVertexOn;
+ }
+
+ public void setRemoveVertexOn(final Object removeVertexOn)
+ {
+ this.removeVertexOn = removeVertexOn;
+ }
+
+ public S withRemoveVertexOn(final Object removeVertexOn)
+ {
+ this.setRemoveVertexOn(removeVertexOn);
+ return this.self();
+ }
+
+ public Object getRemoveVertexValidation()
+ {
+ return this.removeVertexValidation;
+ }
+
+ public void setRemoveVertexValidation(final Object removeVertexValidation)
+ {
+ this.removeVertexValidation = removeVertexValidation;
+ }
+
+ public S withRemoveVertexValidation(final Object removeVertexValidation)
+ {
+ this.setRemoveVertexValidation(removeVertexValidation);
+ return this.self();
+ }
+
+ public Object getMoveVertexValidation()
+ {
+ return this.moveVertexValidation;
+ }
+
+ public void setMoveVertexValidation(final Object moveVertexValidation)
+ {
+ this.moveVertexValidation = moveVertexValidation;
+ }
+
+ public S withMoveVertexValidation(final Object moveVertexValidation)
+ {
+ this.setMoveVertexValidation(moveVertexValidation);
+ return this.self();
+ }
+
+ public Number getLimitMarkersToCount()
+ {
+ return this.limitMarkersToCount;
+ }
+
+ public void setLimitMarkersToCount(final Number limitMarkersToCount)
+ {
+ this.limitMarkersToCount = limitMarkersToCount;
+ }
+
+ public S withLimitMarkersToCount(final Number limitMarkersToCount)
+ {
+ this.setLimitMarkersToCount(limitMarkersToCount);
+ return this.self();
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawEditOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawEditOptions.java
new file mode 100644
index 00000000..02bc2d81
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawEditOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public class LDrawEditOptions extends LAbstractEditOptions
+{
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawOptions.java
new file mode 100644
index 00000000..9a8cb522
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LDrawOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public class LDrawOptions extends LAbstractDrawOptions
+{
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LEditOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LEditOptions.java
new file mode 100644
index 00000000..d11b5679
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LEditOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public class LEditOptions extends LAbstractEditOptions
+{
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LPM.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LPM.java
new file mode 100644
index 00000000..bd9d7108
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LPM.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+import com.vaadin.flow.component.dependency.CssImport;
+import com.vaadin.flow.component.dependency.JsModule;
+import com.vaadin.flow.component.dependency.NpmPackage;
+
+import software.xdev.vaadin.maps.leaflet.base.LAbstractComponent;
+import software.xdev.vaadin.maps.leaflet.layer.LLayer;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+
+
+/**
+ * @see Docs
+ */
+@NpmPackage(value = "@geoman-io/leaflet-geoman-free", version = "2.18.3")
+@JsModule("@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.js")
+@CssImport("@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css")
+public class LPM extends LAbstractComponent
+{
+ public LPM(final LComponentManagementRegistry compReg)
+ {
+ super(compReg);
+ }
+
+ public LPM setOptIn(final boolean optIn)
+ {
+ this.invokeSelf(".setOptIn(" + optIn + ")");
+ return this;
+ }
+
+ public LPM reInitLayer(final LLayer> layer)
+ {
+ this.invokeSelf(".reInitLayer(" + layer.clientComponentJsAccessor() + ")");
+ return this;
+ }
+
+ @Override
+ public String clientComponentJsAccessor()
+ {
+ return "L.PM";
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LTextOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LTextOptions.java
new file mode 100644
index 00000000..a7eafc3d
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/LTextOptions.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman;
+
+public class LTextOptions
+{
+ private String text;
+ private Boolean focusAfterDraw;
+ private Boolean removeIfEmpty;
+ private String className;
+ private Boolean textMarkerCentered;
+
+ public String getText()
+ {
+ return this.text;
+ }
+
+ public void setText(final String text)
+ {
+ this.text = text;
+ }
+
+ public LTextOptions withText(final String text)
+ {
+ this.setText(text);
+ return this;
+ }
+
+ public Boolean getFocusAfterDraw()
+ {
+ return this.focusAfterDraw;
+ }
+
+ public void setFocusAfterDraw(final Boolean focusAfterDraw)
+ {
+ this.focusAfterDraw = focusAfterDraw;
+ }
+
+ public LTextOptions withFocusAfterDraw(final Boolean focusAfterDraw)
+ {
+ this.setFocusAfterDraw(focusAfterDraw);
+ return this;
+ }
+
+ public Boolean getRemoveIfEmpty()
+ {
+ return this.removeIfEmpty;
+ }
+
+ public void setRemoveIfEmpty(final Boolean removeIfEmpty)
+ {
+ this.removeIfEmpty = removeIfEmpty;
+ }
+
+ public LTextOptions withRemoveIfEmpty(final Boolean removeIfEmpty)
+ {
+ this.setRemoveIfEmpty(removeIfEmpty);
+ return this;
+ }
+
+ public String getClassName()
+ {
+ return this.className;
+ }
+
+ public void setClassName(final String className)
+ {
+ this.className = className;
+ }
+
+ public LTextOptions withClassName(final String className)
+ {
+ this.setClassName(className);
+ return this;
+ }
+
+ public Boolean getTextMarkerCentered()
+ {
+ return this.textMarkerCentered;
+ }
+
+ public void setTextMarkerCentered(final Boolean textMarkerCentered)
+ {
+ this.textMarkerCentered = textMarkerCentered;
+ }
+
+ public LTextOptions withTextMarkerCentered(final Boolean textMarkerCentered)
+ {
+ this.setTextMarkerCentered(textMarkerCentered);
+ return this;
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/layer/LLayerPM.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/layer/LLayerPM.java
new file mode 100644
index 00000000..c6c0999c
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/layer/LLayerPM.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman.layer;
+
+import software.xdev.vaadin.maps.leaflet.base.LAbstractComponent;
+import software.xdev.vaadin.maps.leaflet.basictypes.LLatLng;
+import software.xdev.vaadin.maps.leaflet.geoman.LAbstractEditOptions;
+import software.xdev.vaadin.maps.leaflet.layer.LLayer;
+
+
+/**
+ * @see Docs
+ */
+public class LLayerPM extends LAbstractComponent
+{
+ private final LLayer> layer;
+
+ public LLayerPM(final LLayer> layer)
+ {
+ super(layer.componentRegistry());
+ this.layer = layer;
+ }
+
+ public LLayerPM enable(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".enable(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LLayerPM disable()
+ {
+ this.invokeSelf(".disable()");
+ return this;
+ }
+
+ public LLayerPM toggleEdit(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".toggleEdit(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LLayerPM remove()
+ {
+ this.invokeSelf(".remove()");
+ return this;
+ }
+
+ public LLayerPM setOptions(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".setOptions(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LLayerPM enableLayerDrag()
+ {
+ this.invokeSelf(".enableLayerDrag()");
+ return this;
+ }
+
+ public LLayerPM disableLayerDrag()
+ {
+ this.invokeSelf(".disableLayerDrag()");
+ return this;
+ }
+
+ public LLayerPM enableRotate()
+ {
+ this.invokeSelf(".enableRotate()");
+ return this;
+ }
+
+ public LLayerPM disableRotate()
+ {
+ this.invokeSelf(".disableRotate()");
+ return this;
+ }
+
+ public LLayerPM rotateLayer(final Number degrees)
+ {
+ this.invokeSelf(".rotateLayer($0)", degrees);
+ return this;
+ }
+
+ public LLayerPM rotateLayerToAngle(final Number degrees)
+ {
+ this.invokeSelf(".rotateLayerToAngle($0)", degrees);
+ return this;
+ }
+
+ public LLayerPM setInitAngle(final Number degrees)
+ {
+ this.invokeSelf(".setInitAngle($0)", degrees);
+ return this;
+ }
+
+ public LLayerPM setRotationCenter(final LLatLng center)
+ {
+ this.invokeSelf(".setRotationCenter(" + center.clientComponentJsAccessor() + ")");
+ return this;
+ }
+
+ @Override
+ public String clientComponentJsAccessor()
+ {
+ return this.layer.clientComponentJsAccessor() + ".pm";
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LAbstractMapPMControlOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LAbstractMapPMControlOptions.java
new file mode 100644
index 00000000..da6732da
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LAbstractMapPMControlOptions.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman.map;
+
+import software.xdev.vaadin.maps.leaflet.base.LComponentOptions;
+
+
+public abstract class LAbstractMapPMControlOptions>
+ implements LComponentOptions
+{
+ private String position;
+ private Object positions;
+ private Boolean drawMarker;
+ private Boolean drawCircleMarker;
+ private Boolean drawPolyline;
+ private Boolean drawRectangle;
+ private Boolean drawPolygon;
+ private Boolean drawCircle;
+ private Boolean drawText;
+ private Boolean editMode;
+ private Boolean dragMode;
+ private Boolean cutPolygon;
+ private Boolean removalMode;
+ private Boolean rotateMode;
+ private Boolean oneBlock;
+ private Boolean drawControls;
+ private Boolean editControls;
+ private Boolean customControls;
+
+ public String getPosition()
+ {
+ return this.position;
+ }
+
+ public void setPosition(final String position)
+ {
+ this.position = position;
+ }
+
+ public S withPosition(final String position)
+ {
+ this.setPosition(position);
+ return this.self();
+ }
+
+ public Object getPositions()
+ {
+ return this.positions;
+ }
+
+ public void setPositions(final Object positions)
+ {
+ this.positions = positions;
+ }
+
+ public S withPositions(final Object positions)
+ {
+ this.setPositions(positions);
+ return this.self();
+ }
+
+ public Boolean getDrawMarker()
+ {
+ return this.drawMarker;
+ }
+
+ public void setDrawMarker(final Boolean drawMarker)
+ {
+ this.drawMarker = drawMarker;
+ }
+
+ public S withDrawMarker(final Boolean drawMarker)
+ {
+ this.setDrawMarker(drawMarker);
+ return this.self();
+ }
+
+ public Boolean getDrawCircleMarker()
+ {
+ return this.drawCircleMarker;
+ }
+
+ public void setDrawCircleMarker(final Boolean drawCircleMarker)
+ {
+ this.drawCircleMarker = drawCircleMarker;
+ }
+
+ public S withDrawCircleMarker(final Boolean drawCircleMarker)
+ {
+ this.setDrawCircleMarker(drawCircleMarker);
+ return this.self();
+ }
+
+ public Boolean getDrawPolyline()
+ {
+ return this.drawPolyline;
+ }
+
+ public void setDrawPolyline(final Boolean drawPolyline)
+ {
+ this.drawPolyline = drawPolyline;
+ }
+
+ public S withDrawPolyline(final Boolean drawPolyline)
+ {
+ this.setDrawPolyline(drawPolyline);
+ return this.self();
+ }
+
+ public Boolean getDrawRectangle()
+ {
+ return this.drawRectangle;
+ }
+
+ public void setDrawRectangle(final Boolean drawRectangle)
+ {
+ this.drawRectangle = drawRectangle;
+ }
+
+ public S withDrawRectangle(final Boolean drawRectangle)
+ {
+ this.setDrawRectangle(drawRectangle);
+ return this.self();
+ }
+
+ public Boolean getDrawPolygon()
+ {
+ return this.drawPolygon;
+ }
+
+ public void setDrawPolygon(final Boolean drawPolygon)
+ {
+ this.drawPolygon = drawPolygon;
+ }
+
+ public S withDrawPolygon(final Boolean drawPolygon)
+ {
+ this.setDrawPolygon(drawPolygon);
+ return this.self();
+ }
+
+ public Boolean getDrawCircle()
+ {
+ return this.drawCircle;
+ }
+
+ public void setDrawCircle(final Boolean drawCircle)
+ {
+ this.drawCircle = drawCircle;
+ }
+
+ public S withDrawCircle(final Boolean drawCircle)
+ {
+ this.setDrawCircle(drawCircle);
+ return this.self();
+ }
+
+ public Boolean getDrawText()
+ {
+ return this.drawText;
+ }
+
+ public void setDrawText(final Boolean drawText)
+ {
+ this.drawText = drawText;
+ }
+
+ public S withDrawText(final Boolean drawText)
+ {
+ this.setDrawText(drawText);
+ return this.self();
+ }
+
+ public Boolean getEditMode()
+ {
+ return this.editMode;
+ }
+
+ public void setEditMode(final Boolean editMode)
+ {
+ this.editMode = editMode;
+ }
+
+ public S withEditMode(final Boolean editMode)
+ {
+ this.setEditMode(editMode);
+ return this.self();
+ }
+
+ public Boolean getDragMode()
+ {
+ return this.dragMode;
+ }
+
+ public void setDragMode(final Boolean dragMode)
+ {
+ this.dragMode = dragMode;
+ }
+
+ public S withDragMode(final Boolean dragMode)
+ {
+ this.setDragMode(dragMode);
+ return this.self();
+ }
+
+ public Boolean getCutPolygon()
+ {
+ return this.cutPolygon;
+ }
+
+ public void setCutPolygon(final Boolean cutPolygon)
+ {
+ this.cutPolygon = cutPolygon;
+ }
+
+ public S withCutPolygon(final Boolean cutPolygon)
+ {
+ this.setCutPolygon(cutPolygon);
+ return this.self();
+ }
+
+ public Boolean getRemovalMode()
+ {
+ return this.removalMode;
+ }
+
+ public void setRemovalMode(final Boolean removalMode)
+ {
+ this.removalMode = removalMode;
+ }
+
+ public S withRemovalMode(final Boolean removalMode)
+ {
+ this.setRemovalMode(removalMode);
+ return this.self();
+ }
+
+ public Boolean getRotateMode()
+ {
+ return this.rotateMode;
+ }
+
+ public void setRotateMode(final Boolean rotateMode)
+ {
+ this.rotateMode = rotateMode;
+ }
+
+ public S withRotateMode(final Boolean rotateMode)
+ {
+ this.setRotateMode(rotateMode);
+ return this.self();
+ }
+
+ public Boolean getOneBlock()
+ {
+ return this.oneBlock;
+ }
+
+ public void setOneBlock(final Boolean oneBlock)
+ {
+ this.oneBlock = oneBlock;
+ }
+
+ public S withOneBlock(final Boolean oneBlock)
+ {
+ this.setOneBlock(oneBlock);
+ return this.self();
+ }
+
+ public Boolean getDrawControls()
+ {
+ return this.drawControls;
+ }
+
+ public void setDrawControls(final Boolean drawControls)
+ {
+ this.drawControls = drawControls;
+ }
+
+ public S withDrawControls(final Boolean drawControls)
+ {
+ this.setDrawControls(drawControls);
+ return this.self();
+ }
+
+ public Boolean getEditControls()
+ {
+ return this.editControls;
+ }
+
+ public void setEditControls(final Boolean editControls)
+ {
+ this.editControls = editControls;
+ }
+
+ public S withEditControls(final Boolean editControls)
+ {
+ this.setEditControls(editControls);
+ return this.self();
+ }
+
+ public Boolean getCustomControls()
+ {
+ return this.customControls;
+ }
+
+ public void setCustomControls(final Boolean customControls)
+ {
+ this.customControls = customControls;
+ }
+
+ public S withCustomControls(final Boolean customControls)
+ {
+ this.setCustomControls(customControls);
+ return this.self();
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPM.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPM.java
new file mode 100644
index 00000000..06f25ae4
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPM.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman.map;
+
+import software.xdev.vaadin.maps.leaflet.base.LAbstractComponent;
+import software.xdev.vaadin.maps.leaflet.geoman.LAbstractDrawOptions;
+import software.xdev.vaadin.maps.leaflet.geoman.LAbstractDrawOrEditOptions;
+import software.xdev.vaadin.maps.leaflet.geoman.LAbstractEditOptions;
+import software.xdev.vaadin.maps.leaflet.geoman.LDrawOptions;
+import software.xdev.vaadin.maps.leaflet.geoman.LTextOptions;
+import software.xdev.vaadin.maps.leaflet.map.LMap;
+
+
+/**
+ * @see Docs
+ */
+public class LMapPM extends LAbstractComponent
+{
+ private final LMap map;
+
+ public LMapPM(final LMap map)
+ {
+ super(map.componentRegistry());
+ this.map = map;
+ }
+
+ public LMapPM addControls()
+ {
+ return this.addControls(null);
+ }
+
+ public LMapPM addControls(final LAbstractMapPMControlOptions> options)
+ {
+ this.invokeSelf(".addControls(" + this.componentRegistry().writeOptions(options) + ")");
+ return this;
+ }
+
+ public LMapPM removeControls()
+ {
+ this.invokeSelf(".removeControls()");
+ return this;
+ }
+
+ public LMapPM toggleControls()
+ {
+ this.invokeSelf(".toggleControls()");
+ return this;
+ }
+
+ public LMapPM enableDraw(final String shape)
+ {
+ return this.enableDraw(shape, null);
+ }
+
+ public LMapPM enableDraw(final String shape, final LAbstractDrawOptions> options)
+ {
+ this.invokeSelf(".enableDraw('" + shape + "'"
+ + this.componentRegistry().writeOptionsOptionalNextParameter(options)
+ + ")");
+ return this;
+ }
+
+ public LMapPM enableDrawText(final LTextOptions textOptions)
+ {
+ return this.enableDraw("Text", new LDrawOptions().withTextOptions(textOptions));
+ }
+
+ public LMapPM disableDraw()
+ {
+ this.invokeSelf(".disableDraw()");
+ return this;
+ }
+
+ public LMapPM setGlobalOptions(final LAbstractDrawOrEditOptions> options)
+ {
+ this.invokeSelf(".setGlobalOptions(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LMapPM applyGlobalOptions()
+ {
+ this.invokeSelf(".applyGlobalOptions()");
+ return this;
+ }
+
+ public LMapPM enableGlobalEditMode(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".enableGlobalEditMode(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LMapPM disableGlobalEditMode()
+ {
+ this.invokeSelf(".disableGlobalEditMode()");
+ return this;
+ }
+
+ public LMapPM toggleGlobalEditMode(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".toggleGlobalEditMode(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LMapPM enableGlobalDragMode()
+ {
+ this.invokeSelf(".enableGlobalDragMode()");
+ return this;
+ }
+
+ public LMapPM disableGlobalDragMode()
+ {
+ this.invokeSelf(".disableGlobalDragMode()");
+ return this;
+ }
+
+ public LMapPM toggleGlobalDragMode()
+ {
+ this.invokeSelf(".toggleGlobalDragMode()");
+ return this;
+ }
+
+ public LMapPM enableGlobalRemovalMode()
+ {
+ this.invokeSelf(".enableGlobalRemovalMode()");
+ return this;
+ }
+
+ public LMapPM disableGlobalRemovalMode()
+ {
+ this.invokeSelf(".disableGlobalRemovalMode()");
+ return this;
+ }
+
+ public LMapPM toggleGlobalRemovalMode()
+ {
+ this.invokeSelf(".toggleGlobalRemovalMode()");
+ return this;
+ }
+
+ public LMapPM enableGlobalCutMode(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".enableGlobalCutMode(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LMapPM disableGlobalCutMode()
+ {
+ this.invokeSelf(".disableGlobalCutMode()");
+ return this;
+ }
+
+ public LMapPM toggleGlobalCutMode(final LAbstractEditOptions> options)
+ {
+ this.invokeSelf(".toggleGlobalCutMode(" + this.componentRegistry().writeOptionsOrEmptyObject(options) + ")");
+ return this;
+ }
+
+ public LMapPM enableGlobalRotateMode()
+ {
+ this.invokeSelf(".enableGlobalRotateMode()");
+ return this;
+ }
+
+ public LMapPM disableGlobalRotateMode()
+ {
+ this.invokeSelf(".disableGlobalRotateMode()");
+ return this;
+ }
+
+ public LMapPM toggleGlobalRotateMode()
+ {
+ this.invokeSelf(".toggleGlobalRotateMode()");
+ return this;
+ }
+
+ @Override
+ public String clientComponentJsAccessor()
+ {
+ return this.map.clientComponentJsAccessor() + ".pm";
+ }
+}
diff --git a/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPMControlOptions.java b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPMControlOptions.java
new file mode 100644
index 00000000..f6d33ef0
--- /dev/null
+++ b/plugins/geoman/src/main/java/software/xdev/vaadin/maps/leaflet/geoman/map/LMapPMControlOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.geoman.map;
+
+public class LMapPMControlOptions extends LAbstractMapPMControlOptions
+{
+}
diff --git a/plugins/leaflet-markercluster/README.md b/plugins/leaflet-markercluster/README.md
new file mode 100644
index 00000000..006e30de
--- /dev/null
+++ b/plugins/leaflet-markercluster/README.md
@@ -0,0 +1 @@
+# Plugin for [Leaflet.markercluster](https://github.com/Leaflet/Leaflet.markercluster)
diff --git a/plugins/leaflet-markercluster/pom.xml b/plugins/leaflet-markercluster/pom.xml
new file mode 100644
index 00000000..a4f9ef9b
--- /dev/null
+++ b/plugins/leaflet-markercluster/pom.xml
@@ -0,0 +1,310 @@
+
+
+ 4.0.0
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ leaflet-markercluster
+ 5.0.0-SNAPSHOT
+ jar
+
+ LeafletMap for Vaadin - Plugin - leaflet-markercluster
+ LeafletMap for Vaadin - Plugin - leaflet-markercluster
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+
+
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+ scm:git:https://github.com/xdev-software/vaadin-maps-leaflet-flow.git
+
+
+ 2019
+
+
+ XDEV Software
+ https://xdev.software
+
+
+
+
+ XDEV Software
+ XDEV Software
+ https://xdev.software
+
+
+
+
+
+ Apache-2.0
+ https://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ 17
+ ${javaVersion}
+
+ UTF-8
+ UTF-8
+
+
+
+
+ software.xdev.vaadin.maps-leaflet
+ flow
+ 5.0.0-SNAPSHOT
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 4.0.0-M16
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 3.9.0
+
+
+
+
+
+ com.mycila
+ license-maven-plugin
+ 5.0.0
+
+
+ ${project.organization.url}
+
+
+
+ com/mycila/maven/plugin/license/templates/APACHE-2.txt
+
+ src/main/java/**
+ src/test/java/**
+
+
+
+
+
+
+ first
+
+ format
+
+ process-sources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.0
+
+ ${maven.compiler.release}
+
+ -proc:none
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.11.2
+
+
+ attach-javadocs
+ package
+
+ jar
+
+
+
+
+ true
+ none
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.3.1
+
+
+ attach-sources
+ package
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.4.2
+
+
+ true
+
+ false
+ true
+
+
+
+ 1
+
+
+
+
+
+ META-INF/VAADIN/
+
+
+
+
+
+
+
+
+ publish
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ 1.7.2
+
+ ossrh
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.2.8
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+
+
+ publish-sonatype-central-portal
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.8.0
+ true
+
+ sonatype-central-portal
+ true
+
+
+
+
+
+
+ checkstyle
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.6.0
+
+
+ com.puppycrawl.tools
+ checkstyle
+ 10.26.1
+
+
+
+ ../../.config/checkstyle/checkstyle.xml
+ true
+
+
+
+
+ check
+
+
+
+
+
+
+
+
+ pmd
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.27.0
+
+ true
+ true
+
+ ../../.config/pmd/java/ruleset.xml
+
+
+
+
+ net.sourceforge.pmd
+ pmd-core
+ 7.16.0
+
+
+ net.sourceforge.pmd
+ pmd-java
+ 7.16.0
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 3.6.0
+
+
+
+
+
+
diff --git a/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LAbstractMarkerClusterGroupOptions.java b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LAbstractMarkerClusterGroupOptions.java
new file mode 100644
index 00000000..73d1cdda
--- /dev/null
+++ b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LAbstractMarkerClusterGroupOptions.java
@@ -0,0 +1,373 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.markercluster.layer.other;
+
+import software.xdev.vaadin.maps.leaflet.base.LComponentOptions;
+import software.xdev.vaadin.maps.leaflet.base.RawString;
+
+
+/**
+ * @see Docs
+ * @see Source
+ */
+public abstract class LAbstractMarkerClusterGroupOptions>
+ implements LComponentOptions
+{
+ private Number maxClusterRadius;
+ private RawString iconCreateFunction;
+ private RawString clusterPane;
+
+ private Boolean spiderfyOnEveryZoom;
+ private Boolean spiderfyOnMaxZoom;
+ private Boolean showCoverageOnHover;
+ private Boolean zoomToBoundsOnClick;
+ private Boolean singleMarkerMode;
+
+ private Number disableClusteringAtZoom;
+ private Boolean removeOutsideVisibleBounds;
+ private Boolean animate;
+ private Boolean animateAddingMarkers;
+ private RawString spiderfyShapePositions;
+ private Number spiderfyDistanceMultiplier;
+ // Should be of LPolylineOptions
+ private Object spiderLegPolylineOptions;
+ private Boolean chunkedLoading;
+ private Number chunkInterval;
+ private Number chunkDelay;
+ private RawString chunkProgress;
+ // Data to pass to L.Polygon
+ private Object polygonOptions;
+
+ public Number getMaxClusterRadius()
+ {
+ return this.maxClusterRadius;
+ }
+
+ public void setMaxClusterRadius(final Number maxClusterRadius)
+ {
+ this.maxClusterRadius = maxClusterRadius;
+ }
+
+ public S withMaxClusterRadius(final Number maxClusterRadius)
+ {
+ this.setMaxClusterRadius(maxClusterRadius);
+ return this.self();
+ }
+
+ public RawString getIconCreateFunction()
+ {
+ return this.iconCreateFunction;
+ }
+
+ public void setIconCreateFunction(final RawString iconCreateFunction)
+ {
+ this.iconCreateFunction = iconCreateFunction;
+ }
+
+ public S withIconCreateFunction(final RawString iconCreateFunction)
+ {
+ this.setIconCreateFunction(iconCreateFunction);
+ return this.self();
+ }
+
+ public RawString getClusterPane()
+ {
+ return this.clusterPane;
+ }
+
+ public void setClusterPane(final RawString clusterPane)
+ {
+ this.clusterPane = clusterPane;
+ }
+
+ public S withClusterPane(final RawString clusterPane)
+ {
+ this.setClusterPane(clusterPane);
+ return this.self();
+ }
+
+ public Boolean getSpiderfyOnEveryZoom()
+ {
+ return this.spiderfyOnEveryZoom;
+ }
+
+ public void setSpiderfyOnEveryZoom(final Boolean spiderfyOnEveryZoom)
+ {
+ this.spiderfyOnEveryZoom = spiderfyOnEveryZoom;
+ }
+
+ public S withSpiderfyOnEveryZoom(final Boolean spiderfyOnEveryZoom)
+ {
+ this.setSpiderfyOnEveryZoom(spiderfyOnEveryZoom);
+ return this.self();
+ }
+
+ public Boolean getSpiderfyOnMaxZoom()
+ {
+ return this.spiderfyOnMaxZoom;
+ }
+
+ public void setSpiderfyOnMaxZoom(final Boolean spiderfyOnMaxZoom)
+ {
+ this.spiderfyOnMaxZoom = spiderfyOnMaxZoom;
+ }
+
+ public S withSpiderfyOnMaxZoom(final Boolean spiderfyOnMaxZoom)
+ {
+ this.setSpiderfyOnMaxZoom(spiderfyOnMaxZoom);
+ return this.self();
+ }
+
+ public Boolean getShowCoverageOnHover()
+ {
+ return this.showCoverageOnHover;
+ }
+
+ public void setShowCoverageOnHover(final Boolean showCoverageOnHover)
+ {
+ this.showCoverageOnHover = showCoverageOnHover;
+ }
+
+ public S withShowCoverageOnHover(final Boolean showCoverageOnHover)
+ {
+ this.setShowCoverageOnHover(showCoverageOnHover);
+ return this.self();
+ }
+
+ public Boolean getZoomToBoundsOnClick()
+ {
+ return this.zoomToBoundsOnClick;
+ }
+
+ public void setZoomToBoundsOnClick(final Boolean zoomToBoundsOnClick)
+ {
+ this.zoomToBoundsOnClick = zoomToBoundsOnClick;
+ }
+
+ public S withZoomToBoundsOnClick(final Boolean zoomToBoundsOnClick)
+ {
+ this.setZoomToBoundsOnClick(zoomToBoundsOnClick);
+ return this.self();
+ }
+
+ public Boolean getSingleMarkerMode()
+ {
+ return this.singleMarkerMode;
+ }
+
+ public void setSingleMarkerMode(final Boolean singleMarkerMode)
+ {
+ this.singleMarkerMode = singleMarkerMode;
+ }
+
+ public S withSingleMarkerMode(final Boolean singleMarkerMode)
+ {
+ this.setSingleMarkerMode(singleMarkerMode);
+ return this.self();
+ }
+
+ public Number getDisableClusteringAtZoom()
+ {
+ return this.disableClusteringAtZoom;
+ }
+
+ public void setDisableClusteringAtZoom(final Number disableClusteringAtZoom)
+ {
+ this.disableClusteringAtZoom = disableClusteringAtZoom;
+ }
+
+ public S withDisableClusteringAtZoom(final Number disableClusteringAtZoom)
+ {
+ this.setDisableClusteringAtZoom(disableClusteringAtZoom);
+ return this.self();
+ }
+
+ public Boolean getRemoveOutsideVisibleBounds()
+ {
+ return this.removeOutsideVisibleBounds;
+ }
+
+ public void setRemoveOutsideVisibleBounds(final Boolean removeOutsideVisibleBounds)
+ {
+ this.removeOutsideVisibleBounds = removeOutsideVisibleBounds;
+ }
+
+ public S withRemoveOutsideVisibleBounds(final Boolean removeOutsideVisibleBounds)
+ {
+ this.setRemoveOutsideVisibleBounds(removeOutsideVisibleBounds);
+ return this.self();
+ }
+
+ public Boolean getAnimate()
+ {
+ return this.animate;
+ }
+
+ public void setAnimate(final Boolean animate)
+ {
+ this.animate = animate;
+ }
+
+ public S withAnimate(final Boolean animate)
+ {
+ this.setAnimate(animate);
+ return this.self();
+ }
+
+ public Boolean getAnimateAddingMarkers()
+ {
+ return this.animateAddingMarkers;
+ }
+
+ public void setAnimateAddingMarkers(final Boolean animateAddingMarkers)
+ {
+ this.animateAddingMarkers = animateAddingMarkers;
+ }
+
+ public S withAnimateAddingMarkers(final Boolean animateAddingMarkers)
+ {
+ this.setAnimateAddingMarkers(animateAddingMarkers);
+ return this.self();
+ }
+
+ public RawString getSpiderfyShapePositions()
+ {
+ return this.spiderfyShapePositions;
+ }
+
+ public void setSpiderfyShapePositions(final RawString spiderfyShapePositions)
+ {
+ this.spiderfyShapePositions = spiderfyShapePositions;
+ }
+
+ public S withSpiderfyShapePositions(final RawString spiderfyShapePositions)
+ {
+ this.setSpiderfyShapePositions(spiderfyShapePositions);
+ return this.self();
+ }
+
+ public Number getSpiderfyDistanceMultiplier()
+ {
+ return this.spiderfyDistanceMultiplier;
+ }
+
+ public void setSpiderfyDistanceMultiplier(final Number spiderfyDistanceMultiplier)
+ {
+ this.spiderfyDistanceMultiplier = spiderfyDistanceMultiplier;
+ }
+
+ public S withSpiderfyDistanceMultiplier(final Number spiderfyDistanceMultiplier)
+ {
+ this.setSpiderfyDistanceMultiplier(spiderfyDistanceMultiplier);
+ return this.self();
+ }
+
+ public Object getSpiderLegPolylineOptions()
+ {
+ return this.spiderLegPolylineOptions;
+ }
+
+ public void setSpiderLegPolylineOptions(final Object spiderLegPolylineOptions)
+ {
+ this.spiderLegPolylineOptions = spiderLegPolylineOptions;
+ }
+
+ public S withSpiderLegPolylineOptions(final Object spiderLegPolylineOptions)
+ {
+ this.setSpiderLegPolylineOptions(spiderLegPolylineOptions);
+ return this.self();
+ }
+
+ public Boolean getChunkedLoading()
+ {
+ return this.chunkedLoading;
+ }
+
+ public void setChunkedLoading(final Boolean chunkedLoading)
+ {
+ this.chunkedLoading = chunkedLoading;
+ }
+
+ public S withChunkedLoading(final Boolean chunkedLoading)
+ {
+ this.setChunkedLoading(chunkedLoading);
+ return this.self();
+ }
+
+ public Number getChunkInterval()
+ {
+ return this.chunkInterval;
+ }
+
+ public void setChunkInterval(final Number chunkInterval)
+ {
+ this.chunkInterval = chunkInterval;
+ }
+
+ public S withChunkInterval(final Number chunkInterval)
+ {
+ this.setChunkInterval(chunkInterval);
+ return this.self();
+ }
+
+ public Number getChunkDelay()
+ {
+ return this.chunkDelay;
+ }
+
+ public void setChunkDelay(final Number chunkDelay)
+ {
+ this.chunkDelay = chunkDelay;
+ }
+
+ public S withChunkDelay(final Number chunkDelay)
+ {
+ this.setChunkDelay(chunkDelay);
+ return this.self();
+ }
+
+ public RawString getChunkProgress()
+ {
+ return this.chunkProgress;
+ }
+
+ public void setChunkProgress(final RawString chunkProgress)
+ {
+ this.chunkProgress = chunkProgress;
+ }
+
+ public S withChunkProgress(final RawString chunkProgress)
+ {
+ this.setChunkProgress(chunkProgress);
+ return this.self();
+ }
+
+ public Object getPolygonOptions()
+ {
+ return this.polygonOptions;
+ }
+
+ public void setPolygonOptions(final Object polygonOptions)
+ {
+ this.polygonOptions = polygonOptions;
+ }
+
+ public S withPolygonOptions(final Object polygonOptions)
+ {
+ this.setPolygonOptions(polygonOptions);
+ return this.self();
+ }
+}
diff --git a/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroup.java b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroup.java
new file mode 100644
index 00000000..02a189d0
--- /dev/null
+++ b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroup.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.markercluster.layer.other;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import com.vaadin.flow.component.dependency.CssImport;
+import com.vaadin.flow.component.dependency.JsModule;
+import com.vaadin.flow.component.dependency.NpmPackage;
+
+import software.xdev.vaadin.maps.leaflet.base.LBaseComponent;
+import software.xdev.vaadin.maps.leaflet.layer.LAbstractLayerGroup;
+import software.xdev.vaadin.maps.leaflet.layer.LLayer;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+
+
+/**
+ * @see Docs
+ */
+@NpmPackage(value = "leaflet.markercluster", version = "1.5.3")
+@JsModule("leaflet.markercluster/dist/leaflet.markercluster.js")
+@CssImport("leaflet.markercluster/dist/MarkerCluster.css")
+@CssImport("leaflet.markercluster/dist/MarkerCluster.Default.css")
+public class LMarkerClusterGroup extends LAbstractLayerGroup
+{
+ public LMarkerClusterGroup(
+ final LComponentManagementRegistry compReg,
+ final LAbstractMarkerClusterGroupOptions> options)
+ {
+ super(
+ compReg,
+ "L.markerClusterGroup("
+ + compReg.writeOptions(options)
+ + ")");
+ }
+
+ public LMarkerClusterGroup(final LComponentManagementRegistry compReg)
+ {
+ this(compReg, null);
+ }
+
+ public LMarkerClusterGroup refreshClusters()
+ {
+ this.invokeSelf(".refreshClusters()");
+ return this.self();
+ }
+
+ public LMarkerClusterGroup refreshClusters(final LLayer> layer)
+ {
+ this.invokeSelf(".refreshClusters(" + layer.clientComponentJsAccessor() + ")");
+ return this.self();
+ }
+
+ public LMarkerClusterGroup refreshClusters(final Collection> layers)
+ {
+ this.invokeSelf(".refreshClusters(["
+ + layers.stream().map(LBaseComponent::clientComponentJsAccessor).collect(Collectors.joining(", "))
+ + "])");
+ return this.self();
+ }
+
+ public LMarkerClusterGroup zoomToShowLayer(final LLayer> layer)
+ {
+ return this.zoomToShowLayer(layer, null);
+ }
+
+ public LMarkerClusterGroup zoomToShowLayer(final LLayer> layer, final String callback)
+ {
+ this.invokeSelf(".zoomToShowLayer("
+ + layer.clientComponentJsAccessor()
+ + (callback != null ? ", " + callback : "")
+ + ")");
+ return this.self();
+ }
+}
diff --git a/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroupOptions.java b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroupOptions.java
new file mode 100644
index 00000000..54f7db81
--- /dev/null
+++ b/plugins/leaflet-markercluster/src/main/java/software/xdev/vaadin/maps/leaflet/markercluster/layer/other/LMarkerClusterGroupOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.markercluster.layer.other;
+
+public class LMarkerClusterGroupOptions extends LAbstractMarkerClusterGroupOptions
+{
+}
diff --git a/plugins/maplibre-gl-leaflet/README.md b/plugins/maplibre-gl-leaflet/README.md
new file mode 100644
index 00000000..3cd2ad83
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/README.md
@@ -0,0 +1 @@
+# Plugin for [MapLibre GL Leaflet](https://github.com/maplibre/maplibre-gl-leaflet)
diff --git a/plugins/maplibre-gl-leaflet/pom.xml b/plugins/maplibre-gl-leaflet/pom.xml
new file mode 100644
index 00000000..2ecd2b7b
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/pom.xml
@@ -0,0 +1,310 @@
+
+
+ 4.0.0
+
+ software.xdev.vaadin.maps-leaflet.plugins
+ maplibre-gl-leaflet
+ 5.0.0-SNAPSHOT
+ jar
+
+ LeafletMap for Vaadin - Plugin - maplibre-gl-leaflet
+ LeafletMap for Vaadin - Plugin - maplibre-gl-leaflet
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+
+
+ https://github.com/xdev-software/vaadin-maps-leaflet-flow
+ scm:git:https://github.com/xdev-software/vaadin-maps-leaflet-flow.git
+
+
+ 2019
+
+
+ XDEV Software
+ https://xdev.software
+
+
+
+
+ XDEV Software
+ XDEV Software
+ https://xdev.software
+
+
+
+
+
+ Apache-2.0
+ https://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ 17
+ ${javaVersion}
+
+ UTF-8
+ UTF-8
+
+
+
+
+ software.xdev.vaadin.maps-leaflet
+ flow
+ 5.0.0-SNAPSHOT
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 4.0.0-M16
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 3.9.0
+
+
+
+
+
+ com.mycila
+ license-maven-plugin
+ 5.0.0
+
+
+ ${project.organization.url}
+
+
+
+ com/mycila/maven/plugin/license/templates/APACHE-2.txt
+
+ src/main/java/**
+ src/test/java/**
+
+
+
+
+
+
+ first
+
+ format
+
+ process-sources
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.14.0
+
+ ${maven.compiler.release}
+
+ -proc:none
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.11.2
+
+
+ attach-javadocs
+ package
+
+ jar
+
+
+
+
+ true
+ none
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.3.1
+
+
+ attach-sources
+ package
+
+ jar-no-fork
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.4.2
+
+
+ true
+
+ false
+ true
+
+
+
+ 1
+
+
+
+
+
+ META-INF/VAADIN/
+
+
+
+
+
+
+
+
+ publish
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ 1.7.2
+
+ ossrh
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.2.8
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+
+
+ publish-sonatype-central-portal
+
+
+
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.8.0
+ true
+
+ sonatype-central-portal
+ true
+
+
+
+
+
+
+ checkstyle
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ 3.6.0
+
+
+ com.puppycrawl.tools
+ checkstyle
+ 10.26.1
+
+
+
+ ../../.config/checkstyle/checkstyle.xml
+ true
+
+
+
+
+ check
+
+
+
+
+
+
+
+
+ pmd
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.27.0
+
+ true
+ true
+
+ ../../.config/pmd/java/ruleset.xml
+
+
+
+
+ net.sourceforge.pmd
+ pmd-core
+ 7.16.0
+
+
+ net.sourceforge.pmd
+ pmd-java
+ 7.16.0
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jxr-plugin
+ 3.6.0
+
+
+
+
+
+
diff --git a/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LAbstractMaplibreGLOptions.java b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LAbstractMaplibreGLOptions.java
new file mode 100644
index 00000000..bc853a05
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LAbstractMaplibreGLOptions.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.maplibregl.layer.vector;
+
+import software.xdev.vaadin.maps.leaflet.base.LComponentOptions;
+
+
+/**
+ * @see MapLibre docs
+ */
+public abstract class LAbstractMaplibreGLOptions>
+ implements LComponentOptions
+{
+ private String style;
+
+ public String getStyle()
+ {
+ return this.style;
+ }
+
+ public void setStyle(final String style)
+ {
+ this.style = style;
+ }
+
+ public S withStyle(final String style)
+ {
+ this.setStyle(style);
+ return this.self();
+ }
+}
diff --git a/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGL.java b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGL.java
new file mode 100644
index 00000000..6efdd9f5
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGL.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.maplibregl.layer.vector;
+
+import com.vaadin.flow.component.dependency.CssImport;
+import com.vaadin.flow.component.dependency.JsModule;
+import com.vaadin.flow.component.dependency.NpmPackage;
+
+import software.xdev.vaadin.maps.leaflet.layer.LLayer;
+import software.xdev.vaadin.maps.leaflet.registry.LComponentManagementRegistry;
+
+
+/**
+ * Layer for MaplibreGL
+ *
+ * @see MapLibre-GL-Leaflet API docs
+ */
+@NpmPackage(value = "maplibre-gl", version = "5.6.1")
+@JsModule("maplibre-gl/dist/maplibre-gl.js")
+@CssImport("maplibre-gl/dist/maplibre-gl.css")
+@JsModule("./src/leaflet-maplibre-gl.js") // Use bundled forked version to load it correctly
+public class LMaplibreGL extends LLayer
+{
+ public LMaplibreGL(
+ final LComponentManagementRegistry compReg,
+ final LAbstractMaplibreGLOptions> options)
+ {
+ super(compReg, "L.maplibreGL(" + compReg.writeOptionsOrEmptyObject(options) + ")");
+ }
+
+ public LMaplibreGL(
+ final LComponentManagementRegistry compReg,
+ final String style)
+ {
+ this(compReg, new LMaplibreGLOptions().withStyle(style));
+ }
+}
diff --git a/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGLOptions.java b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGLOptions.java
new file mode 100644
index 00000000..b5b4334b
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/src/main/java/software/xdev/vaadin/maps/leaflet/maplibregl/layer/vector/LMaplibreGLOptions.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2019 XDEV Software (https://xdev.software)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package software.xdev.vaadin.maps.leaflet.maplibregl.layer.vector;
+
+public class LMaplibreGLOptions extends LAbstractMaplibreGLOptions
+{
+}
diff --git a/plugins/maplibre-gl-leaflet/src/main/resources/META-INF/resources/frontend/src/leaflet-maplibre-gl.js b/plugins/maplibre-gl-leaflet/src/main/resources/META-INF/resources/frontend/src/leaflet-maplibre-gl.js
new file mode 100644
index 00000000..87f6ede7
--- /dev/null
+++ b/plugins/maplibre-gl-leaflet/src/main/resources/META-INF/resources/frontend/src/leaflet-maplibre-gl.js
@@ -0,0 +1,348 @@
+/**
+ * This is a fork of https://github.com/maplibre/maplibre-gl-leaflet/blob/v0.1.3/leaflet-maplibre-gl.js
+ *
+ * It was forked so that it's loaded correctly because the default version overwrites all other plugins and brings it's own leaflet (generates "requireLeafletSrc").
+ *
+ * Modifications:
+ * 1. Added "import maplibregl from 'maplibre-gl';" to fix maplibre being loaded correctly
+ * 2. Changed the dependency loading (code between "(function (root, factory) {... }(typeof globalThis !== 'undefined'") to use above import correctly
+ */
+import maplibregl from 'maplibre-gl';
+
+(function (root, factory) {
+ root.returnExports = factory(root.L, maplibregl);
+}(typeof globalThis !== 'undefined' ? globalThis : this || self, function (L, maplibregl) {
+ L.MaplibreGL = L.Layer.extend({
+ options: {
+ updateInterval: 32,
+ // How much to extend the overlay view (relative to map size)
+ // e.g. 0.1 would be 10% of map view in each direction
+ padding: 0.1,
+ // whether or not to register the mouse and keyboard
+ // events on the maplibre overlay
+ interactive: false,
+ // set the tilepane as the default pane to draw gl tiles
+ pane: 'tilePane'
+ },
+
+ initialize: function (options) {
+ L.setOptions(this, options);
+
+ // setup throttling the update event when panning
+ this._throttledUpdate = L.Util.throttle(this._update, this.options.updateInterval, this);
+ },
+
+ onAdd: function (map) {
+ if (!this._container) {
+ this._initContainer();
+ }
+
+ var paneName = this.getPaneName();
+ map.getPane(paneName).appendChild(this._container);
+
+ this._initGL();
+
+ this._offset = this._map.containerPointToLayerPoint([0, 0]);
+
+ // work around https://github.com/mapbox/mapbox-gl-leaflet/issues/47
+ if (map.options.zoomAnimation) {
+ L.DomEvent.on(map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);
+ }
+ },
+
+ onRemove: function (map) {
+ if (this._map._proxy && this._map.options.zoomAnimation) {
+ L.DomEvent.off(this._map._proxy, L.DomUtil.TRANSITION_END, this._transitionEnd, this);
+ }
+ var paneName = this.getPaneName();
+ map.getPane(paneName).removeChild(this._container);
+
+ this._glMap.remove();
+ this._glMap = null;
+ },
+
+ getEvents: function () {
+ return {
+ move: this._throttledUpdate, // sensibly throttle updating while panning
+ zoomanim: this._animateZoom, // applys the zoom animation to the