From b1794cfcf35b0082e2cec1c70d1afe0ac0b3a0d4 Mon Sep 17 00:00:00 2001 From: Stefan Froemken Date: Thu, 18 Jun 2026 11:44:52 +0200 Subject: [PATCH] [TASK] Replace Gulp with Esbuild for Maps2 build chain Switches the JavaScript build chain from Gulp to Esbuild to enhance performance, simplify dependencies, and enable modern JavaScript features such as ES2020. Removes the `gulpfile.js` alongside related npm packages, and integrates `build.js` with Esbuild configurations for bundling and minification. This transition also updates dependencies in `package.json` and adjusts the output files accordingly. --- Resources/Private/Build/README.md | 49 +- Resources/Private/Build/build.js | 53 + Resources/Private/Build/gulpfile.js | 83 - Resources/Private/Build/package-lock.json | 4182 ++--------------- Resources/Private/Build/package.json | 9 +- Resources/Public/JavaScript/Classes.js | 2 +- Resources/Public/JavaScript/Classes.js.map | 8 +- .../Public/JavaScript/GoogleMaps2.min.js | 4 +- .../Public/JavaScript/GoogleMaps2.min.js.map | 8 +- .../Public/JavaScript/GoogleMapsModule.min.js | 2 +- .../JavaScript/GoogleMapsModule.min.js.map | 8 +- .../Public/JavaScript/OpenStreetMap2.min.js | 4 +- .../JavaScript/OpenStreetMap2.min.js.map | 8 +- .../JavaScript/OpenStreetMapModule.min.js | 2 +- .../JavaScript/OpenStreetMapModule.min.js.map | 8 +- Resources/Public/JavaScript/leaflet.min.js | 11 +- .../Public/JavaScript/leaflet.min.js.map | 8 +- 17 files changed, 566 insertions(+), 3883 deletions(-) create mode 100644 Resources/Private/Build/build.js delete mode 100644 Resources/Private/Build/gulpfile.js diff --git a/Resources/Private/Build/README.md b/Resources/Private/Build/README.md index 686a256e..9c001e17 100644 --- a/Resources/Private/Build/README.md +++ b/Resources/Private/Build/README.md @@ -1,39 +1,36 @@ -## Working with GULP, NPM, and DDEV +# Working with esbuild, npm, and DDEV -Follow these steps to build fresh JS files: +Follow these steps to build fresh JavaScript files for the maps2 extension. -- *Step 1: Access the DDEV Container* +## Step 1: Access the DDEV Container - If you're working locally with DDEV, you need to jump into the DDEV container - using the following command: +If you are working locally with DDEV, ssh into the DDEV web container: - ``` - ddev ssh - ``` +```bash +ddev ssh +``` -- *Step 2: Navigate to the 'maps2' folder* +## Step 2: Navigate to the Build Directory - Use the 'cd' command to change the current working directory to the `maps2` - folder: +Change your current working directory to the Build folder of the `maps2` extension: - ``` - cd [pathOfMaps2]/Resouces/Private/Build - ``` +```bash +cd [pathOfMaps2]/Resources/Private/Build +``` -- *Step 3: Install Necessary Tools* +## Step 3: Install Dependencies - Execute the following command to install necessary tools like `gulp` - and `typescript`: +Execute the following command to install the required build tools (like `esbuild`) and frontend libraries: - ``` - npm install - ``` +```bash +npm install +``` -- *Step 4: Build/Compile JS Files & Move them to the appropriate Directory* +## Step 4: Build and Compile JavaScript Files - Use the 'gulp' command to build/compile and move the resulting JS files into - the `Resources/Public/JavaScript` folder: +Run the custom build script using Node.js. This will compile, bundle, and minify the JavaScript files and move them directly into the `Resources/Public/JavaScript/` folder: + +```bash +node build.js +``` - ``` - ./node_modules/.bin/gulp - ``` diff --git a/Resources/Private/Build/build.js b/Resources/Private/Build/build.js new file mode 100644 index 00000000..2160668f --- /dev/null +++ b/Resources/Private/Build/build.js @@ -0,0 +1,53 @@ +const esbuild = require('esbuild'); +const path = require('path'); + +// Base options shared across all build tasks +const baseOptions = { + minify: true, + sourcemap: true, + target: 'es2020', + outdir: '../../Public/JavaScript', +}; + +async function runBuild() { + try { + // 1. Leaflet Bundle via stdin (enforces strict concatenation order) + await esbuild.build({ + ...baseOptions, + bundle: true, + // Simulate a JS entry point that loads the three scripts sequentially + stdin: { + contents: ` + require('leaflet/dist/leaflet.js'); + require('leaflet.path.drag/src/Path.Drag.js'); + require('leaflet-editable/src/Leaflet.Editable.js'); + `, + resolveDir: __dirname, // Tells esbuild where to locate node_modules + }, + outfile: path.join(baseOptions.outdir, 'leaflet.min.js'), + // Remove outdir here since outfile is explicitly set + outdir: undefined, + }); + + // 2. TYPO3 JavaScript Modules (Native ESM, NO bundling!) + await esbuild.build({ + ...baseOptions, + bundle: false, + format: 'esm', // Preserves native "import/export" statements for the browser + entryPoints: { + 'Classes': 'JavaScript/Classes.js', + 'GoogleMapsModule.min': 'JavaScript/GoogleMapsModule.js', + 'OpenStreetMapModule.min': 'JavaScript/OpenStreetMapModule.js', + 'GoogleMaps2.min': 'JavaScript/GoogleMaps2.js', + 'OpenStreetMap2.min': 'JavaScript/OpenStreetMap2.js', + }, + }); + + console.log('🎉 Build completed successfully!'); + } catch (err) { + console.error('❌ Build failed:', err); + process.exit(1); + } +} + +runBuild(); diff --git a/Resources/Private/Build/gulpfile.js b/Resources/Private/Build/gulpfile.js deleted file mode 100644 index 31ed6ff5..00000000 --- a/Resources/Private/Build/gulpfile.js +++ /dev/null @@ -1,83 +0,0 @@ -const gulp = require('gulp'); -const concat = require('gulp-concat'); -const uglify = require('gulp-uglify'); -const sourcemaps = require('gulp-sourcemaps'); - -gulp.task('leaflet', function buildLeaflet () { - const paths = [ - 'node_modules/leaflet/dist/leaflet.js', - 'node_modules/leaflet.path.drag/src/Path.Drag.js', - 'node_modules/leaflet-editable/src/Leaflet.Editable.js' - ]; - - return gulp.src(paths) - .pipe(sourcemaps.init()) - .pipe(concat('leaflet.min.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task('classes', function () { - return gulp.src([ - 'JavaScript/Classes.js' - ]) - .pipe(sourcemaps.init()) - .pipe(concat('Classes.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task('google_be', function () { - return gulp.src([ - 'JavaScript/GoogleMapsModule.js' - ]) - .pipe(sourcemaps.init()) - .pipe(concat('GoogleMapsModule.min.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task('osm_be', function () { - return gulp.src([ - 'JavaScript/OpenStreetMapModule.js' - ]) - .pipe(sourcemaps.init()) - .pipe(concat('OpenStreetMapModule.min.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task('google_fe', function () { - return gulp.src([ - 'JavaScript/GoogleMaps2.js' - ]) - .pipe(sourcemaps.init()) - .pipe(concat('GoogleMaps2.min.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task('osm_fe', function () { - return gulp.src([ - 'JavaScript/OpenStreetMap2.js' - ]) - .pipe(sourcemaps.init()) - .pipe(concat('OpenStreetMap2.min.js')) - .pipe(uglify()) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('../../Public/JavaScript')); -}); - -gulp.task( - 'default', - gulp.series( - 'leaflet', - 'classes', - gulp.parallel('google_be', 'osm_be', 'google_fe', 'osm_fe') - ) -); diff --git a/Resources/Private/Build/package-lock.json b/Resources/Private/Build/package-lock.json index dcb91b16..551cb2c3 100644 --- a/Resources/Private/Build/package-lock.json +++ b/Resources/Private/Build/package-lock.json @@ -12,3861 +12,533 @@ "@types/geojson": "^7946.0.13", "@types/leaflet": "^1.9.8", "@types/leaflet-editable": "^1.2.6", - "gulp": "^4.0.2", - "gulp-concat": "^2.6.1", - "gulp-sourcemaps": "^3.0.0", - "gulp-uglify": "^3.0.2", "leaflet": "^1.9.4", "leaflet-editable": "^1.2.0", "leaflet.path.drag": "^0.0.6" - } - }, - "node_modules/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", - "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" }, - "engines": { - "node": ">= 0.10" + "devDependencies": { + "esbuild": "^0.28.1" } }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.13", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", - "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==" - }, - "node_modules/@types/leaflet": { - "version": "1.9.8", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", - "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/leaflet-editable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@types/leaflet-editable/-/leaflet-editable-1.2.6.tgz", - "integrity": "sha512-8K1QEDiWZvbShO0bcT4UxjkUJRx0Szp7PXewYxi9AjKNMttM9lxKTbioKm8t4ieZQlqmM+DTd8yUliMoAbA/Cw==", - "dependencies": { - "@types/leaflet": "*" + "node": ">=18" } }, - "node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.4.0" + "node": ">=18" } }, - "node_modules/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dependencies": { - "ansi-wrap": "^0.1.0" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dependencies": { - "ansi-wrap": "0.1.0" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", - "dependencies": { - "buffer-equal": "^1.0.0" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", - "dependencies": { - "make-iterator": "^1.0.0" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", - "dependencies": { - "make-iterator": "^1.0.0" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dependencies": { - "is-number": "^4.0.0" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">= 0.10" + "node": ">=18" } }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", - "dependencies": { - "async-done": "^1.2.2" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.10" + "node": ">=18" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 4.5.0" + "node": ">=18" } }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.10" + "node": ">=18" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/geojson": { + "version": "7946.0.13", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", + "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==" }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/@types/leaflet": { + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", + "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "engines": { - "node": ">=0.10.0" + "@types/geojson": "*" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, + "node_modules/@types/leaflet-editable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/leaflet-editable/-/leaflet-editable-1.2.6.tgz", + "integrity": "sha512-8K1QEDiWZvbShO0bcT4UxjkUJRx0Szp7PXewYxi9AjKNMttM9lxKTbioKm8t4ieZQlqmM+DTd8yUliMoAbA/Cw==", "dependencies": { - "file-uri-to-path": "1.0.0" + "@types/leaflet": "*" } }, - "node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" + "node": ">=18" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "node_modules/leaflet-editable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/leaflet-editable/-/leaflet-editable-1.2.0.tgz", + "integrity": "sha512-wG11JwpL8zqIbypTop6xCRGagMuWw68ihYu4uqrqc5Ep0wnEJeyob7NB2Rt5t74Oih4rwJ3OfwaGbzdowOGfYQ==" }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/css/node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - } - }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/debug-fabulous/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esniff/node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC" - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", - "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gulp-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dependencies": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", - "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", - "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", - "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/leaflet": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" - }, - "node_modules/leaflet-editable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/leaflet-editable/-/leaflet-editable-1.2.0.tgz", - "integrity": "sha512-wG11JwpL8zqIbypTop6xCRGagMuWw68ihYu4uqrqc5Ep0wnEJeyob7NB2Rt5t74Oih4rwJ3OfwaGbzdowOGfYQ==" - }, - "node_modules/leaflet.path.drag": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/leaflet.path.drag/-/leaflet.path.drag-0.0.6.tgz", - "integrity": "sha512-U6jp7sqX4kZss2FCm7bGPltOl8URWd+c4DPcRnEO9mYoZ1hfrteZ3XXVJ6zcEU8zxjnWeu1YywF08EDYbelmFg==" - }, - "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha512-4TO2Y3HkBnis4c0dxhAgD/jprySYLACf7nwN6V0HAHDx59g12WlRpUmFy1bRHamjGUEEBrEvCq6SUpsEE2lhUg==", - "dependencies": { - "make-error": "^1.2.0" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "engines": { - "node": "*" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", - "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.1", - "is-data-descriptor": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/typedarray": { + "node_modules/leaflet.path.drag": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } + "resolved": "https://registry.npmjs.org/leaflet.path.drag/-/leaflet.path.drag-0.0.6.tgz", + "integrity": "sha512-U6jp7sqX4kZss2FCm7bGPltOl8URWd+c4DPcRnEO9mYoZ1hfrteZ3XXVJ6zcEU8zxjnWeu1YywF08EDYbelmFg==" } } } diff --git a/Resources/Private/Build/package.json b/Resources/Private/Build/package.json index c4e27aad..8c15e98d 100644 --- a/Resources/Private/Build/package.json +++ b/Resources/Private/Build/package.json @@ -3,10 +3,6 @@ "@types/geojson": "^7946.0.13", "@types/leaflet": "^1.9.8", "@types/leaflet-editable": "^1.2.6", - "gulp": "^4.0.2", - "gulp-concat": "^2.6.1", - "gulp-sourcemaps": "^3.0.0", - "gulp-uglify": "^3.0.2", "leaflet": "^1.9.4", "leaflet-editable": "^1.2.0", "leaflet.path.drag": "^0.0.6" @@ -16,5 +12,8 @@ "version": "10.0.8", "main": "index.js", "author": "Stefan Froemken", - "license": "GPL-2.0-or-later" + "license": "GPL-2.0-or-later", + "devDependencies": { + "esbuild": "^0.28.1" + } } diff --git a/Resources/Public/JavaScript/Classes.js b/Resources/Public/JavaScript/Classes.js index 7e2d85b5..ac7cddfb 100644 --- a/Resources/Public/JavaScript/Classes.js +++ b/Resources/Public/JavaScript/Classes.js @@ -1,2 +1,2 @@ -class Category{#uid="";#title="";constructor(t,e){this.#uid=t,this.#title=e}get uid(){return this.#uid}get title(){return this.#title}}class ContentRecord{#CType="";#bodytext="";#colPos="";#crdate="";#date="";#endtime="";#frame_class="";#header="";#hidden="";#imageheight="";#imagewidth="";#pages="";#pid="";#starttime="";#subheader="";#sys_language_uid="";#target="";#tstamp="";#uid="";constructor(t){this.#CType=t.CType,this.#bodytext=t.bodytext,this.#colPos=t.colPos,this.#crdate=t.crdate,this.#date=t.date,this.#endtime=t.endtime,this.#frame_class=t.frame_class,this.#header=t.header,this.#hidden=t.hidden,this.#imageheight=t.imageheight,this.#imagewidth=t.imagewidth,this.#pages=t.pages,this.#pid=t.pid,this.#starttime=t.starttime,this.#subheader=t.subheader,this.#sys_language_uid=t.sys_language_uid,this.#target=t.target,this.#tstamp=t.tstamp,this.#uid=t.uid}get CType(){return this.#CType}get bodytext(){return this.#bodytext}get colPos(){return this.#colPos}get crdate(){return this.#crdate}get date(){return this.#date}get endtime(){return this.#endtime}get frame_class(){return this.#frame_class}get header(){return this.#header}get hidden(){return this.#hidden}get imageheight(){return this.#imageheight}get imagewidth(){return this.#imagewidth}get pages(){return this.#pages}get pid(){return this.#pid}get starttime(){return this.#starttime}get subheader(){return this.#subheader}get sys_language_uid(){return this.#sys_language_uid}get target(){return this.#target}get tstamp(){return this.#tstamp}get uid(){return this.#uid}}class Environment{#ajaxUrl="";#contentRecord={};#extConf={};#settings={};#lat="";#lng="";constructor(t){this.#ajaxUrl=t.ajaxUrl,this.#contentRecord=t.contentRecord,this.#extConf=t.extConf,this.#settings=t.settings,this.#lat=t.lat,this.#lng=t.lng}get ajaxUrl(){return this.#ajaxUrl}get contentRecord(){return this.#contentRecord}get extConf(){return this.#extConf}get settings(){return this.#settings}get lat(){return this.#lat}get lng(){return this.#lng}}class ExtConf{#defaultCountry="";#defaultLatitude="";#defaultLongitude="";#defaultMapProvider="";#defaultMapType="";#defaultRadius="";#explicitAllowMapProviderRequests="";#explicitAllowMapProviderRequestsBySessionOnly="";#fillColor="";#fillOpacity="";#googleMapsGeocodeApiKey="";#googleMapsGeocodeUri="";#googleMapsJavaScriptApiKey="";#googleMapsMapId="";#infoWindowContentTemplatePath="";#mapProvider="";#markerIconAnchorPosX="";#markerIconAnchorPosY="";#markerIconHeight="";#markerIconWidth="";#openStreetMapGeocodeUri="";#strokeColor="";#strokeOpacity="";#strokeWeight="";constructor(t){this.#defaultCountry=t.defaultCountry,this.#defaultLatitude=t.defaultLatitude,this.#defaultLongitude=t.defaultLongitude,this.#defaultMapProvider=t.defaultMapProvider,this.#defaultMapType=t.defaultMapType,this.#defaultRadius=t.defaultRadius,this.#explicitAllowMapProviderRequests=t.explicitAllowMapProviderRequests,this.#explicitAllowMapProviderRequestsBySessionOnly=t.explicitAllowMapProviderRequestsBySessionOnly,this.#fillColor=t.fillColor,this.#fillOpacity=t.fillOpacity,this.#googleMapsGeocodeApiKey=t.googleMapsGeocodeApiKey,this.#googleMapsGeocodeUri=t.googleMapsGeocodeUri,this.#googleMapsJavaScriptApiKey=t.googleMapsJavaScriptApiKey,this.#googleMapsMapId=t.googleMapsMapId,this.#infoWindowContentTemplatePath=t.infoWindowContentTemplatePath,this.#mapProvider=t.mapProvider,this.#markerIconAnchorPosX=t.markerIconAnchorPosX,this.#markerIconAnchorPosY=t.markerIconAnchorPosY,this.#markerIconHeight=t.markerIconHeight,this.#markerIconWidth=t.markerIconWidth,this.#openStreetMapGeocodeUri=t.openStreetMapGeocodeUri,this.#strokeColor=t.strokeColor,this.#strokeOpacity=t.strokeOpacity,this.#strokeWeight=t.strokeWeight}get defaultCountry(){return this.#defaultCountry}get defaultLatitude(){return this.#defaultLatitude}get defaultLongitude(){return this.#defaultLongitude}get defaultMapProvider(){return this.#defaultMapProvider}get defaultMapType(){return this.#defaultMapType}get defaultRadius(){return this.#defaultRadius}get explicitAllowMapProviderRequests(){return this.#explicitAllowMapProviderRequests}get explicitAllowMapProviderRequestsBySessionOnly(){return this.#explicitAllowMapProviderRequestsBySessionOnly}get fillColor(){return this.#fillColor}get fillOpacity(){return this.#fillOpacity}get googleMapsGeocodeApiKey(){return this.#googleMapsGeocodeApiKey}get googleMapsGeocodeUri(){return this.#googleMapsGeocodeUri}get googleMapsJavaScriptApiKey(){return this.#googleMapsJavaScriptApiKey}get googleMapsMapId(){return this.#googleMapsMapId}get infoWindowContentTemplatePath(){return this.#infoWindowContentTemplatePath}get mapProvider(){return this.#mapProvider}get markerIconAnchorPosX(){return this.#markerIconAnchorPosX}get markerIconAnchorPosY(){return this.#markerIconAnchorPosY}get markerIconHeight(){return this.#markerIconHeight}get markerIconWidth(){return this.#markerIconWidth}get openStreetMapGeocodeUri(){return this.#openStreetMapGeocodeUri}get strokeColor(){return this.#strokeColor}get strokeOpacity(){return this.#strokeOpacity}get strokeWeight(){return this.#strokeWeight}}class Image{#width="";#height="";constructor(t,e){this.#width=t,this.#height=e}get width(){return this.#width}get height(){return this.#height}}class InfoWindow{#image={};constructor(t){this.#image=t}get image(){return this.#image}}class Link{#addSection="";constructor(t){this.#addSection=t}get addSection(){return this.#addSection}}class Overlay{#link={};constructor(t){this.#link=t}get link(){return this.#link}}class PoiCollection{#address="";#categories="";#collectionType="";#configurationMap=[];#distance="";#fillColor="";#fillOpacity="";#foreignRecords="";#infoWindowContent="";#latitude="";#longitude="";#markerIcon="";#markerIconAnchorPosX="";#markerIconAnchorPosY="";#markerIconHeight="";#markerIconWidth="";#pid="";#pois="";#radius="";#strokeColor="";#strokeOpacity="";#strokeWeight="";#title="";#uid="";constructor(t){this.#address=t.address,this.#categories=t.categories,this.#collectionType=void 0!==t.collectionType?t.collectionType:t.collection_type,this.#configurationMap=void 0!==t.configurationMap?t.configurationMap:t.configuration_map,this.#distance=t.distance,this.#fillColor=void 0!==t.fillColor?t.fillColor:t.fill_color,this.#fillOpacity=void 0!==t.fillOpacity?t.fillOpacity:t.fill_opacity,this.#foreignRecords=void 0!==t.foreignRecords?t.foreignRecords:t.foreign_records,this.#infoWindowContent=void 0!==t.infoWindowContent?t.infoWindowContent:t.info_window_content,this.#latitude=t.latitude,this.#longitude=t.longitude,this.#markerIcon=void 0!==t.markerIcon?t.markerIcon:t.marker_icon,this.#markerIconAnchorPosX=void 0!==t.markerIconAnchorPosX?t.markerIconAnchorPosX:t.marker_icon_pos_x,this.#markerIconAnchorPosY=void 0!==t.markerIconAnchorPosY?t.markerIconAnchorPosY:t.marker_icon_pos_y,this.#markerIconHeight=void 0!==t.markerIconHeight?t.markerIconHeight:t.marker_icon_height,this.#markerIconWidth=void 0!==t.markerIconWidth?t.markerIconWidth:t.marker_icon_width,this.#pid=t.pid,this.#pois=t.pois,this.#radius=t.radius,this.#strokeColor=void 0!==t.strokeColor?t.strokeColor:t.stroke_color,this.#strokeOpacity=void 0!==t.strokeOpacity?t.strokeOpacity:t.stroke_opacity,this.#strokeWeight=void 0!==t.strokeWeight?t.strokeWeight:t.stroke_weight,this.#title=t.title,this.#uid=t.uid}get address(){return this.#address}get categories(){return this.#categories}get collectionType(){return this.#collectionType}get configurationMap(){return this.#configurationMap}get distance(){return this.#distance}get fillColor(){return this.#fillColor}set fillColor(t){this.#fillColor=t}get fillOpacity(){return this.#fillOpacity}set fillOpacity(t){this.#fillOpacity=t}get foreignRecords(){return this.#foreignRecords}get infoWindowContent(){return this.#infoWindowContent}get latitude(){return this.#latitude}get longitude(){return this.#longitude}get markerIcon(){return this.#markerIcon}get markerIconAnchorPosX(){return this.#markerIconAnchorPosX}get markerIconAnchorPosY(){return this.#markerIconAnchorPosY}get markerIconHeight(){return this.#markerIconHeight}get markerIconWidth(){return this.#markerIconWidth}get pid(){return this.#pid}get pois(){return this.#pois}get radius(){return this.#radius}get strokeColor(){return this.#strokeColor}set strokeColor(t){this.#strokeColor=t}get strokeOpacity(){return this.#strokeOpacity}set strokeOpacity(t){this.#strokeOpacity=t}get strokeWeight(){return this.#strokeWeight}set strokeWeight(t){this.#strokeWeight=t}get title(){return this.#title}get uid(){return this.#uid}}class Settings{#activateScrollWheel="";#categories="";#forceZoom="";#fullScreenControl="";#infoWindow="";#infoWindowContentTemplatePath="";#mapHeight="";#mapProvider="";#mapTile="";#mapTileAttribution="";#mapTypeControl="";#mapTypeId="";#mapWidth="";#overlay="";#poiCollection="";#scaleControl="";#streetViewControl="";#styles="";#zoom="";#zoomControl="";constructor(t){this.#activateScrollWheel=t.activateScrollWheel,this.#categories=t.categories,this.#forceZoom=t.forceZoom,this.#fullScreenControl=t.fullScreenControl,this.#infoWindow=t.infoWindow,this.#infoWindowContentTemplatePath=t.infoWindowContentTemplatePath,this.#mapHeight=t.mapHeight,this.#mapProvider=t.mapProvider,this.#mapTile=t.mapTile,this.#mapTileAttribution=t.mapTileAttribution,this.#mapTypeControl=t.mapTypeControl,this.#mapTypeId=t.mapTypeId,this.#mapWidth=t.mapWidth,this.#overlay=t.overlay,this.#poiCollection=t.poiCollection,this.#scaleControl=t.scaleControl,this.#streetViewControl=t.streetViewControl,this.#styles=t.styles,this.#zoom=t.zoom,this.#zoomControl=t.zoomControl}get activateScrollWheel(){return this.#activateScrollWheel}get categories(){return this.#categories}get forceZoom(){return this.#forceZoom}get fullScreenControl(){return this.#fullScreenControl}get infoWindow(){return this.#infoWindow}get infoWindowContentTemplatePath(){return this.#infoWindowContentTemplatePath}get mapHeight(){return this.#mapHeight}get mapProvider(){return this.#mapProvider}get mapTile(){return this.#mapTile}get mapTileAttribution(){return this.#mapTileAttribution}get mapTypeControl(){return this.#mapTypeControl}get mapTypeId(){return this.#mapTypeId}get mapWidth(){return this.#mapWidth}get overlay(){return this.#overlay}get scaleControl(){return this.#scaleControl}get streetViewControl(){return this.#streetViewControl}get styles(){return this.#styles}get zoom(){return this.#zoom}get zoomControl(){return this.#zoomControl}}export{Category,ContentRecord,Environment,ExtConf,Image,InfoWindow,Link,Overlay,PoiCollection,Settings}; +var Ct=s=>{throw TypeError(s)};var te=(s,t,h)=>t.has(s)||Ct("Cannot "+h);var i=(s,t,h)=>(te(s,t,"read from private field"),h?h.call(s):t.get(s)),r=(s,t,h)=>t.has(s)?Ct("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,h),e=(s,t,h,Rt)=>(te(s,t,"write to private field"),Rt?Rt.call(s,h):t.set(s,h),h);var d,l,p,c,m,f,y,k,I,P,W,M,w,_,A,T,v,O,S,H,b,G,U,L,X,Y,q,z,K,x,j,B,J,V,Z,E,D,F,N,Q,$,R,C,tt,et,rt,it,st,ht,at,ot,nt,ut,gt,dt,lt,pt,ct,mt,ft,yt,a,o,kt,It,Pt,Wt,Mt,wt,_t,At,Tt,vt,Ot,St,n,u,g,Ht,bt,Gt,Ut,Lt,Xt,Yt,qt,zt,Kt,xt,jt,Bt,Jt,Vt,Zt,$t,Et,Dt,Ft,Nt,Qt;class re{constructor(t,h){r(this,d,"");r(this,l,"");e(this,d,t),e(this,l,h)}get uid(){return i(this,d)}get title(){return i(this,l)}}d=new WeakMap,l=new WeakMap;class ie{constructor(t){r(this,p,"");r(this,c,"");r(this,m,"");r(this,f,"");r(this,y,"");r(this,k,"");r(this,I,"");r(this,P,"");r(this,W,"");r(this,M,"");r(this,w,"");r(this,_,"");r(this,A,"");r(this,T,"");r(this,v,"");r(this,O,"");r(this,S,"");r(this,H,"");r(this,b,"");e(this,p,t.CType),e(this,c,t.bodytext),e(this,m,t.colPos),e(this,f,t.crdate),e(this,y,t.date),e(this,k,t.endtime),e(this,I,t.frame_class),e(this,P,t.header),e(this,W,t.hidden),e(this,M,t.imageheight),e(this,w,t.imagewidth),e(this,_,t.pages),e(this,A,t.pid),e(this,T,t.starttime),e(this,v,t.subheader),e(this,O,t.sys_language_uid),e(this,S,t.target),e(this,H,t.tstamp),e(this,b,t.uid)}get CType(){return i(this,p)}get bodytext(){return i(this,c)}get colPos(){return i(this,m)}get crdate(){return i(this,f)}get date(){return i(this,y)}get endtime(){return i(this,k)}get frame_class(){return i(this,I)}get header(){return i(this,P)}get hidden(){return i(this,W)}get imageheight(){return i(this,M)}get imagewidth(){return i(this,w)}get pages(){return i(this,_)}get pid(){return i(this,A)}get starttime(){return i(this,T)}get subheader(){return i(this,v)}get sys_language_uid(){return i(this,O)}get target(){return i(this,S)}get tstamp(){return i(this,H)}get uid(){return i(this,b)}}p=new WeakMap,c=new WeakMap,m=new WeakMap,f=new WeakMap,y=new WeakMap,k=new WeakMap,I=new WeakMap,P=new WeakMap,W=new WeakMap,M=new WeakMap,w=new WeakMap,_=new WeakMap,A=new WeakMap,T=new WeakMap,v=new WeakMap,O=new WeakMap,S=new WeakMap,H=new WeakMap,b=new WeakMap;class se{constructor(t){r(this,G,"");r(this,U,{});r(this,L,{});r(this,X,{});r(this,Y,"");r(this,q,"");e(this,G,t.ajaxUrl),e(this,U,t.contentRecord),e(this,L,t.extConf),e(this,X,t.settings),e(this,Y,t.lat),e(this,q,t.lng)}get ajaxUrl(){return i(this,G)}get contentRecord(){return i(this,U)}get extConf(){return i(this,L)}get settings(){return i(this,X)}get lat(){return i(this,Y)}get lng(){return i(this,q)}}G=new WeakMap,U=new WeakMap,L=new WeakMap,X=new WeakMap,Y=new WeakMap,q=new WeakMap;class he{constructor(t){r(this,z,"");r(this,K,"");r(this,x,"");r(this,j,"");r(this,B,"");r(this,J,"");r(this,V,"");r(this,Z,"");r(this,E,"");r(this,D,"");r(this,F,"");r(this,N,"");r(this,Q,"");r(this,$,"");r(this,R,"");r(this,C,"");r(this,tt,"");r(this,et,"");r(this,rt,"");r(this,it,"");r(this,st,"");r(this,ht,"");r(this,at,"");r(this,ot,"");e(this,z,t.defaultCountry),e(this,K,t.defaultLatitude),e(this,x,t.defaultLongitude),e(this,j,t.defaultMapProvider),e(this,B,t.defaultMapType),e(this,J,t.defaultRadius),e(this,V,t.explicitAllowMapProviderRequests),e(this,Z,t.explicitAllowMapProviderRequestsBySessionOnly),e(this,E,t.fillColor),e(this,D,t.fillOpacity),e(this,F,t.googleMapsGeocodeApiKey),e(this,N,t.googleMapsGeocodeUri),e(this,Q,t.googleMapsJavaScriptApiKey),e(this,$,t.googleMapsMapId),e(this,R,t.infoWindowContentTemplatePath),e(this,C,t.mapProvider),e(this,tt,t.markerIconAnchorPosX),e(this,et,t.markerIconAnchorPosY),e(this,rt,t.markerIconHeight),e(this,it,t.markerIconWidth),e(this,st,t.openStreetMapGeocodeUri),e(this,ht,t.strokeColor),e(this,at,t.strokeOpacity),e(this,ot,t.strokeWeight)}get defaultCountry(){return i(this,z)}get defaultLatitude(){return i(this,K)}get defaultLongitude(){return i(this,x)}get defaultMapProvider(){return i(this,j)}get defaultMapType(){return i(this,B)}get defaultRadius(){return i(this,J)}get explicitAllowMapProviderRequests(){return i(this,V)}get explicitAllowMapProviderRequestsBySessionOnly(){return i(this,Z)}get fillColor(){return i(this,E)}get fillOpacity(){return i(this,D)}get googleMapsGeocodeApiKey(){return i(this,F)}get googleMapsGeocodeUri(){return i(this,N)}get googleMapsJavaScriptApiKey(){return i(this,Q)}get googleMapsMapId(){return i(this,$)}get infoWindowContentTemplatePath(){return i(this,R)}get mapProvider(){return i(this,C)}get markerIconAnchorPosX(){return i(this,tt)}get markerIconAnchorPosY(){return i(this,et)}get markerIconHeight(){return i(this,rt)}get markerIconWidth(){return i(this,it)}get openStreetMapGeocodeUri(){return i(this,st)}get strokeColor(){return i(this,ht)}get strokeOpacity(){return i(this,at)}get strokeWeight(){return i(this,ot)}}z=new WeakMap,K=new WeakMap,x=new WeakMap,j=new WeakMap,B=new WeakMap,J=new WeakMap,V=new WeakMap,Z=new WeakMap,E=new WeakMap,D=new WeakMap,F=new WeakMap,N=new WeakMap,Q=new WeakMap,$=new WeakMap,R=new WeakMap,C=new WeakMap,tt=new WeakMap,et=new WeakMap,rt=new WeakMap,it=new WeakMap,st=new WeakMap,ht=new WeakMap,at=new WeakMap,ot=new WeakMap;class ae{constructor(t,h){r(this,nt,"");r(this,ut,"");e(this,nt,t),e(this,ut,h)}get width(){return i(this,nt)}get height(){return i(this,ut)}}nt=new WeakMap,ut=new WeakMap;class oe{constructor(t){r(this,gt,{});e(this,gt,t)}get image(){return i(this,gt)}}gt=new WeakMap;class ne{constructor(t){r(this,dt,"");e(this,dt,t)}get addSection(){return i(this,dt)}}dt=new WeakMap;class ue{constructor(t){r(this,lt,{});e(this,lt,t)}get link(){return i(this,lt)}}lt=new WeakMap;class ge{constructor(t){r(this,pt,"");r(this,ct,"");r(this,mt,"");r(this,ft,[]);r(this,yt,"");r(this,a,"");r(this,o,"");r(this,kt,"");r(this,It,"");r(this,Pt,"");r(this,Wt,"");r(this,Mt,"");r(this,wt,"");r(this,_t,"");r(this,At,"");r(this,Tt,"");r(this,vt,"");r(this,Ot,"");r(this,St,"");r(this,n,"");r(this,u,"");r(this,g,"");r(this,Ht,"");r(this,bt,"");e(this,pt,t.address),e(this,ct,t.categories),e(this,mt,typeof t.collectionType<"u"?t.collectionType:t.collection_type),e(this,ft,typeof t.configurationMap<"u"?t.configurationMap:t.configuration_map),e(this,yt,t.distance),e(this,a,typeof t.fillColor<"u"?t.fillColor:t.fill_color),e(this,o,typeof t.fillOpacity<"u"?t.fillOpacity:t.fill_opacity),e(this,kt,typeof t.foreignRecords<"u"?t.foreignRecords:t.foreign_records),e(this,It,typeof t.infoWindowContent<"u"?t.infoWindowContent:t.info_window_content),e(this,Pt,t.latitude),e(this,Wt,t.longitude),e(this,Mt,typeof t.markerIcon<"u"?t.markerIcon:t.marker_icon),e(this,wt,typeof t.markerIconAnchorPosX<"u"?t.markerIconAnchorPosX:t.marker_icon_pos_x),e(this,_t,typeof t.markerIconAnchorPosY<"u"?t.markerIconAnchorPosY:t.marker_icon_pos_y),e(this,At,typeof t.markerIconHeight<"u"?t.markerIconHeight:t.marker_icon_height),e(this,Tt,typeof t.markerIconWidth<"u"?t.markerIconWidth:t.marker_icon_width),e(this,vt,t.pid),e(this,Ot,t.pois),e(this,St,t.radius),e(this,n,typeof t.strokeColor<"u"?t.strokeColor:t.stroke_color),e(this,u,typeof t.strokeOpacity<"u"?t.strokeOpacity:t.stroke_opacity),e(this,g,typeof t.strokeWeight<"u"?t.strokeWeight:t.stroke_weight),e(this,Ht,t.title),e(this,bt,t.uid)}get address(){return i(this,pt)}get categories(){return i(this,ct)}get collectionType(){return i(this,mt)}get configurationMap(){return i(this,ft)}get distance(){return i(this,yt)}get fillColor(){return i(this,a)}set fillColor(t){e(this,a,t)}get fillOpacity(){return i(this,o)}set fillOpacity(t){e(this,o,t)}get foreignRecords(){return i(this,kt)}get infoWindowContent(){return i(this,It)}get latitude(){return i(this,Pt)}get longitude(){return i(this,Wt)}get markerIcon(){return i(this,Mt)}get markerIconAnchorPosX(){return i(this,wt)}get markerIconAnchorPosY(){return i(this,_t)}get markerIconHeight(){return i(this,At)}get markerIconWidth(){return i(this,Tt)}get pid(){return i(this,vt)}get pois(){return i(this,Ot)}get radius(){return i(this,St)}get strokeColor(){return i(this,n)}set strokeColor(t){e(this,n,t)}get strokeOpacity(){return i(this,u)}set strokeOpacity(t){e(this,u,t)}get strokeWeight(){return i(this,g)}set strokeWeight(t){e(this,g,t)}get title(){return i(this,Ht)}get uid(){return i(this,bt)}}pt=new WeakMap,ct=new WeakMap,mt=new WeakMap,ft=new WeakMap,yt=new WeakMap,a=new WeakMap,o=new WeakMap,kt=new WeakMap,It=new WeakMap,Pt=new WeakMap,Wt=new WeakMap,Mt=new WeakMap,wt=new WeakMap,_t=new WeakMap,At=new WeakMap,Tt=new WeakMap,vt=new WeakMap,Ot=new WeakMap,St=new WeakMap,n=new WeakMap,u=new WeakMap,g=new WeakMap,Ht=new WeakMap,bt=new WeakMap;class de{constructor(t){r(this,Gt,"");r(this,Ut,"");r(this,Lt,"");r(this,Xt,"");r(this,Yt,"");r(this,qt,"");r(this,zt,"");r(this,Kt,"");r(this,xt,"");r(this,jt,"");r(this,Bt,"");r(this,Jt,"");r(this,Vt,"");r(this,Zt,"");r(this,$t,"");r(this,Et,"");r(this,Dt,"");r(this,Ft,"");r(this,Nt,"");r(this,Qt,"");e(this,Gt,t.activateScrollWheel),e(this,Ut,t.categories),e(this,Lt,t.forceZoom),e(this,Xt,t.fullScreenControl),e(this,Yt,t.infoWindow),e(this,qt,t.infoWindowContentTemplatePath),e(this,zt,t.mapHeight),e(this,Kt,t.mapProvider),e(this,xt,t.mapTile),e(this,jt,t.mapTileAttribution),e(this,Bt,t.mapTypeControl),e(this,Jt,t.mapTypeId),e(this,Vt,t.mapWidth),e(this,Zt,t.overlay),e(this,$t,t.poiCollection),e(this,Et,t.scaleControl),e(this,Dt,t.streetViewControl),e(this,Ft,t.styles),e(this,Nt,t.zoom),e(this,Qt,t.zoomControl)}get activateScrollWheel(){return i(this,Gt)}get categories(){return i(this,Ut)}get forceZoom(){return i(this,Lt)}get fullScreenControl(){return i(this,Xt)}get infoWindow(){return i(this,Yt)}get infoWindowContentTemplatePath(){return i(this,qt)}get mapHeight(){return i(this,zt)}get mapProvider(){return i(this,Kt)}get mapTile(){return i(this,xt)}get mapTileAttribution(){return i(this,jt)}get mapTypeControl(){return i(this,Bt)}get mapTypeId(){return i(this,Jt)}get mapWidth(){return i(this,Vt)}get overlay(){return i(this,Zt)}get scaleControl(){return i(this,Et)}get streetViewControl(){return i(this,Dt)}get styles(){return i(this,Ft)}get zoom(){return i(this,Nt)}get zoomControl(){return i(this,Qt)}}Gt=new WeakMap,Ut=new WeakMap,Lt=new WeakMap,Xt=new WeakMap,Yt=new WeakMap,qt=new WeakMap,zt=new WeakMap,Kt=new WeakMap,xt=new WeakMap,jt=new WeakMap,Bt=new WeakMap,Jt=new WeakMap,Vt=new WeakMap,Zt=new WeakMap,$t=new WeakMap,Et=new WeakMap,Dt=new WeakMap,Ft=new WeakMap,Nt=new WeakMap,Qt=new WeakMap;export{re as Category,ie as ContentRecord,se as Environment,he as ExtConf,ae as Image,oe as InfoWindow,ne as Link,ue as Overlay,ge as PoiCollection,de as Settings}; //# sourceMappingURL=Classes.js.map diff --git a/Resources/Public/JavaScript/Classes.js.map b/Resources/Public/JavaScript/Classes.js.map index c5f6a3b9..8240fa47 100644 --- a/Resources/Public/JavaScript/Classes.js.map +++ b/Resources/Public/JavaScript/Classes.js.map @@ -1 +1,7 @@ -{"version":3,"sources":["Classes.js"],"names":["Category","#uid","#title","constructor","uid","title","this","ContentRecord","#CType","#bodytext","#colPos","#crdate","#date","#endtime","#frame_class","#header","#hidden","#imageheight","#imagewidth","#pages","#pid","#starttime","#subheader","#sys_language_uid","#target","#tstamp","contentRecord","CType","bodytext","colPos","crdate","date","endtime","frame_class","header","hidden","imageheight","imagewidth","pages","pid","starttime","subheader","sys_language_uid","target","tstamp","Environment","#ajaxUrl","#contentRecord","#extConf","#settings","#lat","#lng","environment","ajaxUrl","extConf","settings","lat","lng","ExtConf","#defaultCountry","#defaultLatitude","#defaultLongitude","#defaultMapProvider","#defaultMapType","#defaultRadius","#explicitAllowMapProviderRequests","#explicitAllowMapProviderRequestsBySessionOnly","#fillColor","#fillOpacity","#googleMapsGeocodeApiKey","#googleMapsGeocodeUri","#googleMapsJavaScriptApiKey","#googleMapsMapId","#infoWindowContentTemplatePath","#mapProvider","#markerIconAnchorPosX","#markerIconAnchorPosY","#markerIconHeight","#markerIconWidth","#openStreetMapGeocodeUri","#strokeColor","#strokeOpacity","#strokeWeight","defaultCountry","defaultLatitude","defaultLongitude","defaultMapProvider","defaultMapType","defaultRadius","explicitAllowMapProviderRequests","explicitAllowMapProviderRequestsBySessionOnly","fillColor","fillOpacity","googleMapsGeocodeApiKey","googleMapsGeocodeUri","googleMapsJavaScriptApiKey","googleMapsMapId","infoWindowContentTemplatePath","mapProvider","markerIconAnchorPosX","markerIconAnchorPosY","markerIconHeight","markerIconWidth","openStreetMapGeocodeUri","strokeColor","strokeOpacity","strokeWeight","Image","#width","#height","width","height","InfoWindow","#image","image","Link","#addSection","addSection","Overlay","#link","link","PoiCollection","#address","#categories","#collectionType","#configurationMap","#distance","#foreignRecords","#infoWindowContent","#latitude","#longitude","#markerIcon","#pois","#radius","poiCollection","address","categories","collectionType","collection_type","configurationMap","configuration_map","distance","fill_color","fill_opacity","foreignRecords","foreign_records","infoWindowContent","info_window_content","latitude","longitude","markerIcon","marker_icon","marker_icon_pos_x","marker_icon_pos_y","marker_icon_height","marker_icon_width","pois","radius","stroke_color","stroke_opacity","stroke_weight","Settings","#activateScrollWheel","#forceZoom","#fullScreenControl","#infoWindow","#mapHeight","#mapTile","#mapTileAttribution","#mapTypeControl","#mapTypeId","#mapWidth","#overlay","#poiCollection","#scaleControl","#streetViewControl","#styles","#zoom","#zoomControl","activateScrollWheel","forceZoom","fullScreenControl","infoWindow","mapHeight","mapTile","mapTileAttribution","mapTypeControl","mapTypeId","mapWidth","overlay","scaleControl","streetViewControl","styles","zoom","zoomControl"],"mappings":"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","file":"Classes.js","sourcesContent":["export class Category {\n #uid = '';\n #title = '';\n\n /**\n * @constructor\n * @param {string} uid\n * @param {string} title\n */\n constructor(uid, title) {\n this.#uid = uid;\n this.#title = title;\n };\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n\n /**\n * @returns {string}\n */\n get title() {\n return this.#title;\n }\n}\n\nexport class ContentRecord {\n #CType = '';\n #bodytext = '';\n #colPos = '';\n #crdate = '';\n #date = '';\n #endtime = '';\n #frame_class = '';\n #header = '';\n #hidden = '';\n #imageheight = '';\n #imagewidth = '';\n #pages = '';\n #pid = '';\n #starttime = '';\n #subheader = '';\n #sys_language_uid = '';\n #target = '';\n #tstamp = '';\n #uid = '';\n\n /**\n * @constructor\n * @param {object} contentRecord\n */\n constructor(contentRecord) {\n this.#CType = contentRecord.CType;\n this.#bodytext = contentRecord.bodytext;\n this.#colPos = contentRecord.colPos;\n this.#crdate = contentRecord.crdate;\n this.#date = contentRecord.date;\n this.#endtime = contentRecord.endtime;\n this.#frame_class = contentRecord.frame_class;\n this.#header = contentRecord.header;\n this.#hidden = contentRecord.hidden;\n this.#imageheight = contentRecord.imageheight;\n this.#imagewidth = contentRecord.imagewidth;\n this.#pages = contentRecord.pages;\n this.#pid = contentRecord.pid;\n this.#starttime = contentRecord.starttime;\n this.#subheader = contentRecord.subheader;\n this.#sys_language_uid = contentRecord.sys_language_uid;\n this.#target = contentRecord.target;\n this.#tstamp = contentRecord.tstamp;\n this.#uid = contentRecord.uid;\n };\n\n /**\n * @returns {string}\n */\n get CType() {\n return this.#CType;\n }\n\n /**\n * @returns {string}\n */\n get bodytext() {\n return this.#bodytext;\n }\n\n /**\n * @returns {string}\n */\n get colPos() {\n return this.#colPos;\n }\n\n /**\n * @returns {string}\n */\n get crdate() {\n return this.#crdate;\n }\n\n /**\n * @returns {string}\n */\n get date() {\n return this.#date;\n }\n\n /**\n * @returns {string}\n */\n get endtime() {\n return this.#endtime;\n }\n\n /**\n * @returns {string}\n */\n get frame_class() {\n return this.#frame_class;\n }\n\n /**\n * @returns {string}\n */\n get header() {\n return this.#header;\n }\n\n /**\n * @returns {string}\n */\n get hidden() {\n return this.#hidden;\n }\n\n /**\n * @returns {string}\n */\n get imageheight() {\n return this.#imageheight;\n }\n\n /**\n * @returns {string}\n */\n get imagewidth() {\n return this.#imagewidth;\n }\n\n /**\n * @returns {string}\n */\n get pages() {\n return this.#pages;\n }\n\n /**\n * @returns {string}\n */\n get pid() {\n return this.#pid;\n }\n\n /**\n * @returns {string}\n */\n get starttime() {\n return this.#starttime;\n }\n\n /**\n * @returns {string}\n */\n get subheader() {\n return this.#subheader;\n }\n\n /**\n * @returns {string}\n */\n get sys_language_uid() {\n return this.#sys_language_uid;\n }\n\n /**\n * @returns {string}\n */\n get target() {\n return this.#target;\n }\n\n /**\n * @returns {string}\n */\n get tstamp() {\n return this.#tstamp;\n }\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n}\n\nexport class Environment {\n #ajaxUrl = '';\n #contentRecord = {};\n #extConf = {};\n #settings = {};\n #lat = '';\n #lng = '';\n\n /**\n * @constructor\n * @param {object} environment\n */\n constructor(environment) {\n this.#ajaxUrl = environment.ajaxUrl;\n this.#contentRecord = environment.contentRecord;\n this.#extConf = environment.extConf;\n this.#settings = environment.settings;\n this.#lat = environment.lat;\n this.#lng = environment.lng;\n }\n\n /**\n * @returns {string}\n */\n get ajaxUrl() {\n return this.#ajaxUrl;\n }\n\n /**\n * @returns {string}\n */\n get contentRecord() {\n return this.#contentRecord;\n }\n\n /**\n * @returns {string}\n */\n get extConf() {\n return this.#extConf;\n }\n\n /**\n * @returns {string}\n */\n get settings() {\n return this.#settings;\n }\n\n /**\n * @returns {string}\n */\n get lat() {\n return this.#lat;\n }\n\n /**\n * @returns {string}\n */\n get lng() {\n return this.#lng;\n }\n}\n\nexport class ExtConf {\n #defaultCountry = '';\n #defaultLatitude = '';\n #defaultLongitude = '';\n #defaultMapProvider = '';\n #defaultMapType = '';\n #defaultRadius = '';\n #explicitAllowMapProviderRequests = '';\n #explicitAllowMapProviderRequestsBySessionOnly = '';\n #fillColor = '';\n #fillOpacity = '';\n #googleMapsGeocodeApiKey = '';\n #googleMapsGeocodeUri = '';\n #googleMapsJavaScriptApiKey = '';\n #googleMapsMapId = '';\n #infoWindowContentTemplatePath = '';\n #mapProvider = '';\n #markerIconAnchorPosX = '';\n #markerIconAnchorPosY = '';\n #markerIconHeight = '';\n #markerIconWidth = '';\n #openStreetMapGeocodeUri = '';\n #strokeColor = '';\n #strokeOpacity = '';\n #strokeWeight = '';\n\n /**\n * @constructor\n * @param {object} extConf\n */\n constructor(extConf) {\n this.#defaultCountry = extConf.defaultCountry;\n this.#defaultLatitude = extConf.defaultLatitude;\n this.#defaultLongitude = extConf.defaultLongitude;\n this.#defaultMapProvider = extConf.defaultMapProvider;\n this.#defaultMapType = extConf.defaultMapType;\n this.#defaultRadius = extConf.defaultRadius;\n this.#explicitAllowMapProviderRequests = extConf.explicitAllowMapProviderRequests;\n this.#explicitAllowMapProviderRequestsBySessionOnly = extConf.explicitAllowMapProviderRequestsBySessionOnly;\n this.#fillColor = extConf.fillColor;\n this.#fillOpacity = extConf.fillOpacity;\n this.#googleMapsGeocodeApiKey = extConf.googleMapsGeocodeApiKey;\n this.#googleMapsGeocodeUri = extConf.googleMapsGeocodeUri;\n this.#googleMapsJavaScriptApiKey = extConf.googleMapsJavaScriptApiKey;\n this.#googleMapsMapId = extConf.googleMapsMapId;\n this.#infoWindowContentTemplatePath = extConf.infoWindowContentTemplatePath;\n this.#mapProvider = extConf.mapProvider;\n this.#markerIconAnchorPosX = extConf.markerIconAnchorPosX;\n this.#markerIconAnchorPosY = extConf.markerIconAnchorPosY;\n this.#markerIconHeight = extConf.markerIconHeight;\n this.#markerIconWidth = extConf.markerIconWidth;\n this.#openStreetMapGeocodeUri = extConf.openStreetMapGeocodeUri;\n this.#strokeColor = extConf.strokeColor;\n this.#strokeOpacity = extConf.strokeOpacity;\n this.#strokeWeight = extConf.strokeWeight;\n };\n\n /**\n * @returns {string}\n */\n get defaultCountry() {\n return this.#defaultCountry;\n }\n\n /**\n * @returns {string}\n */\n get defaultLatitude() {\n return this.#defaultLatitude;\n }\n\n /**\n * @returns {string}\n */\n get defaultLongitude() {\n return this.#defaultLongitude;\n }\n\n /**\n * @returns {string}\n */\n get defaultMapProvider() {\n return this.#defaultMapProvider;\n }\n\n /**\n * @returns {string}\n */\n get defaultMapType() {\n return this.#defaultMapType;\n }\n\n /**\n * @returns {string}\n */\n get defaultRadius() {\n return this.#defaultRadius;\n }\n\n /**\n * @returns {string}\n */\n get explicitAllowMapProviderRequests() {\n return this.#explicitAllowMapProviderRequests;\n }\n\n /**\n * @returns {string}\n */\n get explicitAllowMapProviderRequestsBySessionOnly() {\n return this.#explicitAllowMapProviderRequestsBySessionOnly;\n }\n\n /**\n * @returns {string}\n */\n get fillColor() {\n return this.#fillColor;\n }\n\n /**\n * @returns {string}\n */\n get fillOpacity() {\n return this.#fillOpacity;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsGeocodeApiKey() {\n return this.#googleMapsGeocodeApiKey;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsGeocodeUri() {\n return this.#googleMapsGeocodeUri;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsJavaScriptApiKey() {\n return this.#googleMapsJavaScriptApiKey;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsMapId() {\n return this.#googleMapsMapId;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContentTemplatePath() {\n return this.#infoWindowContentTemplatePath;\n }\n\n /**\n * @returns {string}\n */\n get mapProvider() {\n return this.#mapProvider;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosX() {\n return this.#markerIconAnchorPosX;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosY() {\n return this.#markerIconAnchorPosY;\n }\n\n /**\n * @returns {string}\n */\n get markerIconHeight() {\n return this.#markerIconHeight;\n }\n\n /**\n * @returns {string}\n */\n get markerIconWidth() {\n return this.#markerIconWidth;\n }\n\n /**\n * @returns {string}\n */\n get openStreetMapGeocodeUri() {\n return this.#openStreetMapGeocodeUri;\n }\n\n /**\n * @returns {string}\n */\n get strokeColor() {\n return this.#strokeColor;\n }\n\n /**\n * @returns {string}\n */\n get strokeOpacity() {\n return this.#strokeOpacity;\n }\n\n /**\n * @returns {string}\n */\n get strokeWeight() {\n return this.#strokeWeight;\n }\n}\n\nexport class Image {\n #width = '';\n #height = '';\n\n /**\n * @constructor\n * @param {string} width\n * @param {string} height\n */\n constructor(width, height) {\n this.#width = width;\n this.#height = height;\n };\n\n /**\n * @returns {string}\n */\n get width() {\n return this.#width;\n }\n\n /**\n * @returns {string}\n */\n get height() {\n return this.#height;\n }\n}\n\nexport class InfoWindow {\n #image = {};\n\n /**\n * @constructor\n * @param {Image} image\n */\n constructor(image) {\n this.#image = image;\n };\n\n /**\n * @returns {Image}\n */\n get image() {\n return this.#image;\n }\n}\n\nexport class Link {\n #addSection = '';\n\n /**\n * @constructor\n * @param {boolean} addSection\n */\n constructor(addSection) {\n this.#addSection = addSection;\n };\n\n /**\n * @returns {string}\n */\n get addSection() {\n return this.#addSection;\n }\n}\n\nexport class Overlay {\n #link = {};\n\n /**\n * @constructor\n * @param {object} link\n */\n constructor(link) {\n this.#link = link;\n };\n\n /**\n * @returns {Link}\n */\n get link() {\n return this.#link;\n }\n}\n\nexport class PoiCollection {\n #address = '';\n #categories = '';\n #collectionType = '';\n #configurationMap = [];\n #distance = '';\n #fillColor = '';\n #fillOpacity = '';\n #foreignRecords = '';\n #infoWindowContent = '';\n #latitude = '';\n #longitude = '';\n #markerIcon = '';\n #markerIconAnchorPosX = '';\n #markerIconAnchorPosY = '';\n #markerIconHeight = '';\n #markerIconWidth = '';\n #pid = '';\n #pois = '';\n #radius = '';\n #strokeColor = '';\n #strokeOpacity = '';\n #strokeWeight = '';\n #title = '';\n #uid = '';\n\n /**\n * @constructor\n * @param {object} poiCollection\n */\n constructor(poiCollection) {\n this.#address = poiCollection.address;\n this.#categories = poiCollection.categories;\n this.#collectionType = typeof poiCollection.collectionType !== 'undefined' ? poiCollection.collectionType : poiCollection.collection_type;\n this.#configurationMap = typeof poiCollection.configurationMap !== 'undefined' ? poiCollection.configurationMap : poiCollection.configuration_map;\n this.#distance = poiCollection.distance;\n this.#fillColor = typeof poiCollection.fillColor !== 'undefined' ? poiCollection.fillColor : poiCollection.fill_color;\n this.#fillOpacity = typeof poiCollection.fillOpacity !== 'undefined' ? poiCollection.fillOpacity : poiCollection.fill_opacity;\n this.#foreignRecords = typeof poiCollection.foreignRecords !== 'undefined' ? poiCollection.foreignRecords : poiCollection.foreign_records;\n this.#infoWindowContent = typeof poiCollection.infoWindowContent !== 'undefined' ? poiCollection.infoWindowContent : poiCollection.info_window_content;\n this.#latitude = poiCollection.latitude;\n this.#longitude = poiCollection.longitude;\n this.#markerIcon = typeof poiCollection.markerIcon !== 'undefined' ? poiCollection.markerIcon : poiCollection.marker_icon;\n this.#markerIconAnchorPosX = typeof poiCollection.markerIconAnchorPosX !== 'undefined' ? poiCollection.markerIconAnchorPosX : poiCollection.marker_icon_pos_x;\n this.#markerIconAnchorPosY = typeof poiCollection.markerIconAnchorPosY !== 'undefined' ? poiCollection.markerIconAnchorPosY : poiCollection.marker_icon_pos_y;\n this.#markerIconHeight = typeof poiCollection.markerIconHeight !== 'undefined' ? poiCollection.markerIconHeight : poiCollection.marker_icon_height;\n this.#markerIconWidth = typeof poiCollection.markerIconWidth !== 'undefined' ? poiCollection.markerIconWidth : poiCollection.marker_icon_width;\n this.#pid = poiCollection.pid;\n this.#pois = poiCollection.pois;\n this.#radius = poiCollection.radius;\n this.#strokeColor = typeof poiCollection.strokeColor !== 'undefined' ? poiCollection.strokeColor : poiCollection.stroke_color;\n this.#strokeOpacity = typeof poiCollection.strokeOpacity !== 'undefined' ? poiCollection.strokeOpacity : poiCollection.stroke_opacity;\n this.#strokeWeight = typeof poiCollection.strokeWeight !== 'undefined' ? poiCollection.strokeWeight : poiCollection.stroke_weight;\n this.#title = poiCollection.title;\n this.#uid = poiCollection.uid;\n };\n\n /**\n * @returns {string}\n */\n get address() {\n return this.#address;\n }\n\n /**\n * @returns {string}\n */\n get categories() {\n return this.#categories;\n }\n\n /**\n * @returns {string}\n */\n get collectionType() {\n return this.#collectionType;\n }\n\n /**\n * @returns {array}\n */\n get configurationMap() {\n return this.#configurationMap;\n }\n\n /**\n * @returns {string}\n */\n get distance() {\n return this.#distance;\n }\n\n /**\n * @returns {string}\n */\n get fillColor() {\n return this.#fillColor;\n }\n\n /**\n * @param {string} fillColor\n */\n set fillColor(fillColor) {\n this.#fillColor = fillColor;\n }\n\n /**\n * @returns {string}\n */\n get fillOpacity() {\n return this.#fillOpacity;\n }\n\n /**\n * @param {string} fillOpacity\n */\n set fillOpacity(fillOpacity) {\n this.#fillOpacity = fillOpacity;\n }\n\n /**\n * @returns {string}\n */\n get foreignRecords() {\n return this.#foreignRecords;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContent() {\n return this.#infoWindowContent;\n }\n\n /**\n * @returns {string}\n */\n get latitude() {\n return this.#latitude;\n }\n\n /**\n * @returns {string}\n */\n get longitude() {\n return this.#longitude;\n }\n\n /**\n * @returns {string}\n */\n get markerIcon() {\n return this.#markerIcon;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosX() {\n return this.#markerIconAnchorPosX;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosY() {\n return this.#markerIconAnchorPosY;\n }\n\n /**\n * @returns {string}\n */\n get markerIconHeight() {\n return this.#markerIconHeight;\n }\n\n /**\n * @returns {string}\n */\n get markerIconWidth() {\n return this.#markerIconWidth;\n }\n\n /**\n * @returns {string}\n */\n get pid() {\n return this.#pid;\n }\n\n /**\n * @returns {string}\n */\n get pois() {\n return this.#pois;\n }\n\n /**\n * @returns {string}\n */\n get radius() {\n return this.#radius;\n }\n\n /**\n * @returns {string}\n */\n get strokeColor() {\n return this.#strokeColor;\n }\n\n /**\n * @param {string} strokeColor\n */\n set strokeColor(strokeColor) {\n this.#strokeColor = strokeColor;\n }\n\n /**\n * @returns {string}\n */\n get strokeOpacity() {\n return this.#strokeOpacity;\n }\n\n /**\n * @param {string} strokeOpacity\n */\n set strokeOpacity(strokeOpacity) {\n this.#strokeOpacity = strokeOpacity;\n }\n\n /**\n * @returns {string}\n */\n get strokeWeight() {\n return this.#strokeWeight;\n }\n\n /**\n * @param {string} strokeWeight\n */\n set strokeWeight(strokeWeight) {\n this.#strokeWeight = strokeWeight;\n }\n\n /**\n * @returns {string}\n */\n get title() {\n return this.#title;\n }\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n}\n\nexport class Settings {\n #activateScrollWheel = '';\n #categories = '';\n #forceZoom = '';\n #fullScreenControl = '';\n #infoWindow = '';\n #infoWindowContentTemplatePath = '';\n #mapHeight = '';\n #mapProvider = '';\n #mapTile = '';\n #mapTileAttribution = '';\n #mapTypeControl = '';\n #mapTypeId = '';\n #mapWidth = '';\n #overlay = '';\n #poiCollection = '';\n #scaleControl = '';\n #streetViewControl = '';\n #styles = '';\n #zoom = '';\n #zoomControl = '';\n\n /**\n * @constructor\n * @param {object} settings\n */\n constructor(settings) {\n this.#activateScrollWheel = settings.activateScrollWheel;\n this.#categories = settings.categories;\n this.#forceZoom = settings.forceZoom;\n this.#fullScreenControl = settings.fullScreenControl;\n this.#infoWindow = settings.infoWindow;\n this.#infoWindowContentTemplatePath = settings.infoWindowContentTemplatePath;\n this.#mapHeight = settings.mapHeight;\n this.#mapProvider = settings.mapProvider;\n this.#mapTile = settings.mapTile;\n this.#mapTileAttribution = settings.mapTileAttribution;\n this.#mapTypeControl = settings.mapTypeControl;\n this.#mapTypeId = settings.mapTypeId;\n this.#mapWidth = settings.mapWidth;\n this.#overlay = settings.overlay;\n this.#poiCollection = settings.poiCollection;\n this.#scaleControl = settings.scaleControl;\n this.#streetViewControl = settings.streetViewControl;\n this.#styles = settings.styles;\n this.#zoom = settings.zoom;\n this.#zoomControl = settings.zoomControl;\n };\n\n /**\n * @returns {string}\n */\n get activateScrollWheel() {\n return this.#activateScrollWheel;\n }\n\n /**\n * @returns {string}\n */\n get categories() {\n return this.#categories;\n }\n\n /**\n * @returns {string}\n */\n get forceZoom() {\n return this.#forceZoom;\n }\n\n /**\n * @returns {string}\n */\n get fullScreenControl() {\n return this.#fullScreenControl;\n }\n\n /**\n * @returns {string}\n */\n get infoWindow() {\n return this.#infoWindow;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContentTemplatePath() {\n return this.#infoWindowContentTemplatePath;\n }\n\n /**\n * @returns {string}\n */\n get mapHeight() {\n return this.#mapHeight;\n }\n\n /**\n * @returns {string}\n */\n get mapProvider() {\n return this.#mapProvider;\n }\n\n /**\n * @returns {string}\n */\n get mapTile() {\n return this.#mapTile;\n }\n\n /**\n * @returns {string}\n */\n get mapTileAttribution() {\n return this.#mapTileAttribution;\n }\n\n /**\n * @returns {string}\n */\n get mapTypeControl() {\n return this.#mapTypeControl;\n }\n\n /**\n * @returns {string}\n */\n get mapTypeId() {\n return this.#mapTypeId;\n }\n\n /**\n * @returns {string}\n */\n get mapWidth() {\n return this.#mapWidth;\n }\n\n /**\n * @returns {string}\n */\n get overlay() {\n return this.#overlay;\n }\n\n /**\n * @returns {string}\n */\n get scaleControl() {\n return this.#scaleControl;\n }\n\n /**\n * @returns {string}\n */\n get streetViewControl() {\n return this.#streetViewControl;\n }\n\n /**\n * @returns {string}\n */\n get styles() {\n return this.#styles;\n }\n\n /**\n * @returns {string}\n */\n get zoom() {\n return this.#zoom;\n }\n\n /**\n * @returns {string}\n */\n get zoomControl() {\n return this.#zoomControl;\n }\n}\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/JavaScript/Classes.js"], + "sourcesContent": ["export class Category {\n #uid = '';\n #title = '';\n\n /**\n * @constructor\n * @param {string} uid\n * @param {string} title\n */\n constructor(uid, title) {\n this.#uid = uid;\n this.#title = title;\n };\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n\n /**\n * @returns {string}\n */\n get title() {\n return this.#title;\n }\n}\n\nexport class ContentRecord {\n #CType = '';\n #bodytext = '';\n #colPos = '';\n #crdate = '';\n #date = '';\n #endtime = '';\n #frame_class = '';\n #header = '';\n #hidden = '';\n #imageheight = '';\n #imagewidth = '';\n #pages = '';\n #pid = '';\n #starttime = '';\n #subheader = '';\n #sys_language_uid = '';\n #target = '';\n #tstamp = '';\n #uid = '';\n\n /**\n * @constructor\n * @param {object} contentRecord\n */\n constructor(contentRecord) {\n this.#CType = contentRecord.CType;\n this.#bodytext = contentRecord.bodytext;\n this.#colPos = contentRecord.colPos;\n this.#crdate = contentRecord.crdate;\n this.#date = contentRecord.date;\n this.#endtime = contentRecord.endtime;\n this.#frame_class = contentRecord.frame_class;\n this.#header = contentRecord.header;\n this.#hidden = contentRecord.hidden;\n this.#imageheight = contentRecord.imageheight;\n this.#imagewidth = contentRecord.imagewidth;\n this.#pages = contentRecord.pages;\n this.#pid = contentRecord.pid;\n this.#starttime = contentRecord.starttime;\n this.#subheader = contentRecord.subheader;\n this.#sys_language_uid = contentRecord.sys_language_uid;\n this.#target = contentRecord.target;\n this.#tstamp = contentRecord.tstamp;\n this.#uid = contentRecord.uid;\n };\n\n /**\n * @returns {string}\n */\n get CType() {\n return this.#CType;\n }\n\n /**\n * @returns {string}\n */\n get bodytext() {\n return this.#bodytext;\n }\n\n /**\n * @returns {string}\n */\n get colPos() {\n return this.#colPos;\n }\n\n /**\n * @returns {string}\n */\n get crdate() {\n return this.#crdate;\n }\n\n /**\n * @returns {string}\n */\n get date() {\n return this.#date;\n }\n\n /**\n * @returns {string}\n */\n get endtime() {\n return this.#endtime;\n }\n\n /**\n * @returns {string}\n */\n get frame_class() {\n return this.#frame_class;\n }\n\n /**\n * @returns {string}\n */\n get header() {\n return this.#header;\n }\n\n /**\n * @returns {string}\n */\n get hidden() {\n return this.#hidden;\n }\n\n /**\n * @returns {string}\n */\n get imageheight() {\n return this.#imageheight;\n }\n\n /**\n * @returns {string}\n */\n get imagewidth() {\n return this.#imagewidth;\n }\n\n /**\n * @returns {string}\n */\n get pages() {\n return this.#pages;\n }\n\n /**\n * @returns {string}\n */\n get pid() {\n return this.#pid;\n }\n\n /**\n * @returns {string}\n */\n get starttime() {\n return this.#starttime;\n }\n\n /**\n * @returns {string}\n */\n get subheader() {\n return this.#subheader;\n }\n\n /**\n * @returns {string}\n */\n get sys_language_uid() {\n return this.#sys_language_uid;\n }\n\n /**\n * @returns {string}\n */\n get target() {\n return this.#target;\n }\n\n /**\n * @returns {string}\n */\n get tstamp() {\n return this.#tstamp;\n }\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n}\n\nexport class Environment {\n #ajaxUrl = '';\n #contentRecord = {};\n #extConf = {};\n #settings = {};\n #lat = '';\n #lng = '';\n\n /**\n * @constructor\n * @param {object} environment\n */\n constructor(environment) {\n this.#ajaxUrl = environment.ajaxUrl;\n this.#contentRecord = environment.contentRecord;\n this.#extConf = environment.extConf;\n this.#settings = environment.settings;\n this.#lat = environment.lat;\n this.#lng = environment.lng;\n }\n\n /**\n * @returns {string}\n */\n get ajaxUrl() {\n return this.#ajaxUrl;\n }\n\n /**\n * @returns {string}\n */\n get contentRecord() {\n return this.#contentRecord;\n }\n\n /**\n * @returns {string}\n */\n get extConf() {\n return this.#extConf;\n }\n\n /**\n * @returns {string}\n */\n get settings() {\n return this.#settings;\n }\n\n /**\n * @returns {string}\n */\n get lat() {\n return this.#lat;\n }\n\n /**\n * @returns {string}\n */\n get lng() {\n return this.#lng;\n }\n}\n\nexport class ExtConf {\n #defaultCountry = '';\n #defaultLatitude = '';\n #defaultLongitude = '';\n #defaultMapProvider = '';\n #defaultMapType = '';\n #defaultRadius = '';\n #explicitAllowMapProviderRequests = '';\n #explicitAllowMapProviderRequestsBySessionOnly = '';\n #fillColor = '';\n #fillOpacity = '';\n #googleMapsGeocodeApiKey = '';\n #googleMapsGeocodeUri = '';\n #googleMapsJavaScriptApiKey = '';\n #googleMapsMapId = '';\n #infoWindowContentTemplatePath = '';\n #mapProvider = '';\n #markerIconAnchorPosX = '';\n #markerIconAnchorPosY = '';\n #markerIconHeight = '';\n #markerIconWidth = '';\n #openStreetMapGeocodeUri = '';\n #strokeColor = '';\n #strokeOpacity = '';\n #strokeWeight = '';\n\n /**\n * @constructor\n * @param {object} extConf\n */\n constructor(extConf) {\n this.#defaultCountry = extConf.defaultCountry;\n this.#defaultLatitude = extConf.defaultLatitude;\n this.#defaultLongitude = extConf.defaultLongitude;\n this.#defaultMapProvider = extConf.defaultMapProvider;\n this.#defaultMapType = extConf.defaultMapType;\n this.#defaultRadius = extConf.defaultRadius;\n this.#explicitAllowMapProviderRequests = extConf.explicitAllowMapProviderRequests;\n this.#explicitAllowMapProviderRequestsBySessionOnly = extConf.explicitAllowMapProviderRequestsBySessionOnly;\n this.#fillColor = extConf.fillColor;\n this.#fillOpacity = extConf.fillOpacity;\n this.#googleMapsGeocodeApiKey = extConf.googleMapsGeocodeApiKey;\n this.#googleMapsGeocodeUri = extConf.googleMapsGeocodeUri;\n this.#googleMapsJavaScriptApiKey = extConf.googleMapsJavaScriptApiKey;\n this.#googleMapsMapId = extConf.googleMapsMapId;\n this.#infoWindowContentTemplatePath = extConf.infoWindowContentTemplatePath;\n this.#mapProvider = extConf.mapProvider;\n this.#markerIconAnchorPosX = extConf.markerIconAnchorPosX;\n this.#markerIconAnchorPosY = extConf.markerIconAnchorPosY;\n this.#markerIconHeight = extConf.markerIconHeight;\n this.#markerIconWidth = extConf.markerIconWidth;\n this.#openStreetMapGeocodeUri = extConf.openStreetMapGeocodeUri;\n this.#strokeColor = extConf.strokeColor;\n this.#strokeOpacity = extConf.strokeOpacity;\n this.#strokeWeight = extConf.strokeWeight;\n };\n\n /**\n * @returns {string}\n */\n get defaultCountry() {\n return this.#defaultCountry;\n }\n\n /**\n * @returns {string}\n */\n get defaultLatitude() {\n return this.#defaultLatitude;\n }\n\n /**\n * @returns {string}\n */\n get defaultLongitude() {\n return this.#defaultLongitude;\n }\n\n /**\n * @returns {string}\n */\n get defaultMapProvider() {\n return this.#defaultMapProvider;\n }\n\n /**\n * @returns {string}\n */\n get defaultMapType() {\n return this.#defaultMapType;\n }\n\n /**\n * @returns {string}\n */\n get defaultRadius() {\n return this.#defaultRadius;\n }\n\n /**\n * @returns {string}\n */\n get explicitAllowMapProviderRequests() {\n return this.#explicitAllowMapProviderRequests;\n }\n\n /**\n * @returns {string}\n */\n get explicitAllowMapProviderRequestsBySessionOnly() {\n return this.#explicitAllowMapProviderRequestsBySessionOnly;\n }\n\n /**\n * @returns {string}\n */\n get fillColor() {\n return this.#fillColor;\n }\n\n /**\n * @returns {string}\n */\n get fillOpacity() {\n return this.#fillOpacity;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsGeocodeApiKey() {\n return this.#googleMapsGeocodeApiKey;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsGeocodeUri() {\n return this.#googleMapsGeocodeUri;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsJavaScriptApiKey() {\n return this.#googleMapsJavaScriptApiKey;\n }\n\n /**\n * @returns {string}\n */\n get googleMapsMapId() {\n return this.#googleMapsMapId;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContentTemplatePath() {\n return this.#infoWindowContentTemplatePath;\n }\n\n /**\n * @returns {string}\n */\n get mapProvider() {\n return this.#mapProvider;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosX() {\n return this.#markerIconAnchorPosX;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosY() {\n return this.#markerIconAnchorPosY;\n }\n\n /**\n * @returns {string}\n */\n get markerIconHeight() {\n return this.#markerIconHeight;\n }\n\n /**\n * @returns {string}\n */\n get markerIconWidth() {\n return this.#markerIconWidth;\n }\n\n /**\n * @returns {string}\n */\n get openStreetMapGeocodeUri() {\n return this.#openStreetMapGeocodeUri;\n }\n\n /**\n * @returns {string}\n */\n get strokeColor() {\n return this.#strokeColor;\n }\n\n /**\n * @returns {string}\n */\n get strokeOpacity() {\n return this.#strokeOpacity;\n }\n\n /**\n * @returns {string}\n */\n get strokeWeight() {\n return this.#strokeWeight;\n }\n}\n\nexport class Image {\n #width = '';\n #height = '';\n\n /**\n * @constructor\n * @param {string} width\n * @param {string} height\n */\n constructor(width, height) {\n this.#width = width;\n this.#height = height;\n };\n\n /**\n * @returns {string}\n */\n get width() {\n return this.#width;\n }\n\n /**\n * @returns {string}\n */\n get height() {\n return this.#height;\n }\n}\n\nexport class InfoWindow {\n #image = {};\n\n /**\n * @constructor\n * @param {Image} image\n */\n constructor(image) {\n this.#image = image;\n };\n\n /**\n * @returns {Image}\n */\n get image() {\n return this.#image;\n }\n}\n\nexport class Link {\n #addSection = '';\n\n /**\n * @constructor\n * @param {boolean} addSection\n */\n constructor(addSection) {\n this.#addSection = addSection;\n };\n\n /**\n * @returns {string}\n */\n get addSection() {\n return this.#addSection;\n }\n}\n\nexport class Overlay {\n #link = {};\n\n /**\n * @constructor\n * @param {object} link\n */\n constructor(link) {\n this.#link = link;\n };\n\n /**\n * @returns {Link}\n */\n get link() {\n return this.#link;\n }\n}\n\nexport class PoiCollection {\n #address = '';\n #categories = '';\n #collectionType = '';\n #configurationMap = [];\n #distance = '';\n #fillColor = '';\n #fillOpacity = '';\n #foreignRecords = '';\n #infoWindowContent = '';\n #latitude = '';\n #longitude = '';\n #markerIcon = '';\n #markerIconAnchorPosX = '';\n #markerIconAnchorPosY = '';\n #markerIconHeight = '';\n #markerIconWidth = '';\n #pid = '';\n #pois = '';\n #radius = '';\n #strokeColor = '';\n #strokeOpacity = '';\n #strokeWeight = '';\n #title = '';\n #uid = '';\n\n /**\n * @constructor\n * @param {object} poiCollection\n */\n constructor(poiCollection) {\n this.#address = poiCollection.address;\n this.#categories = poiCollection.categories;\n this.#collectionType = typeof poiCollection.collectionType !== 'undefined' ? poiCollection.collectionType : poiCollection.collection_type;\n this.#configurationMap = typeof poiCollection.configurationMap !== 'undefined' ? poiCollection.configurationMap : poiCollection.configuration_map;\n this.#distance = poiCollection.distance;\n this.#fillColor = typeof poiCollection.fillColor !== 'undefined' ? poiCollection.fillColor : poiCollection.fill_color;\n this.#fillOpacity = typeof poiCollection.fillOpacity !== 'undefined' ? poiCollection.fillOpacity : poiCollection.fill_opacity;\n this.#foreignRecords = typeof poiCollection.foreignRecords !== 'undefined' ? poiCollection.foreignRecords : poiCollection.foreign_records;\n this.#infoWindowContent = typeof poiCollection.infoWindowContent !== 'undefined' ? poiCollection.infoWindowContent : poiCollection.info_window_content;\n this.#latitude = poiCollection.latitude;\n this.#longitude = poiCollection.longitude;\n this.#markerIcon = typeof poiCollection.markerIcon !== 'undefined' ? poiCollection.markerIcon : poiCollection.marker_icon;\n this.#markerIconAnchorPosX = typeof poiCollection.markerIconAnchorPosX !== 'undefined' ? poiCollection.markerIconAnchorPosX : poiCollection.marker_icon_pos_x;\n this.#markerIconAnchorPosY = typeof poiCollection.markerIconAnchorPosY !== 'undefined' ? poiCollection.markerIconAnchorPosY : poiCollection.marker_icon_pos_y;\n this.#markerIconHeight = typeof poiCollection.markerIconHeight !== 'undefined' ? poiCollection.markerIconHeight : poiCollection.marker_icon_height;\n this.#markerIconWidth = typeof poiCollection.markerIconWidth !== 'undefined' ? poiCollection.markerIconWidth : poiCollection.marker_icon_width;\n this.#pid = poiCollection.pid;\n this.#pois = poiCollection.pois;\n this.#radius = poiCollection.radius;\n this.#strokeColor = typeof poiCollection.strokeColor !== 'undefined' ? poiCollection.strokeColor : poiCollection.stroke_color;\n this.#strokeOpacity = typeof poiCollection.strokeOpacity !== 'undefined' ? poiCollection.strokeOpacity : poiCollection.stroke_opacity;\n this.#strokeWeight = typeof poiCollection.strokeWeight !== 'undefined' ? poiCollection.strokeWeight : poiCollection.stroke_weight;\n this.#title = poiCollection.title;\n this.#uid = poiCollection.uid;\n };\n\n /**\n * @returns {string}\n */\n get address() {\n return this.#address;\n }\n\n /**\n * @returns {string}\n */\n get categories() {\n return this.#categories;\n }\n\n /**\n * @returns {string}\n */\n get collectionType() {\n return this.#collectionType;\n }\n\n /**\n * @returns {array}\n */\n get configurationMap() {\n return this.#configurationMap;\n }\n\n /**\n * @returns {string}\n */\n get distance() {\n return this.#distance;\n }\n\n /**\n * @returns {string}\n */\n get fillColor() {\n return this.#fillColor;\n }\n\n /**\n * @param {string} fillColor\n */\n set fillColor(fillColor) {\n this.#fillColor = fillColor;\n }\n\n /**\n * @returns {string}\n */\n get fillOpacity() {\n return this.#fillOpacity;\n }\n\n /**\n * @param {string} fillOpacity\n */\n set fillOpacity(fillOpacity) {\n this.#fillOpacity = fillOpacity;\n }\n\n /**\n * @returns {string}\n */\n get foreignRecords() {\n return this.#foreignRecords;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContent() {\n return this.#infoWindowContent;\n }\n\n /**\n * @returns {string}\n */\n get latitude() {\n return this.#latitude;\n }\n\n /**\n * @returns {string}\n */\n get longitude() {\n return this.#longitude;\n }\n\n /**\n * @returns {string}\n */\n get markerIcon() {\n return this.#markerIcon;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosX() {\n return this.#markerIconAnchorPosX;\n }\n\n /**\n * @returns {string}\n */\n get markerIconAnchorPosY() {\n return this.#markerIconAnchorPosY;\n }\n\n /**\n * @returns {string}\n */\n get markerIconHeight() {\n return this.#markerIconHeight;\n }\n\n /**\n * @returns {string}\n */\n get markerIconWidth() {\n return this.#markerIconWidth;\n }\n\n /**\n * @returns {string}\n */\n get pid() {\n return this.#pid;\n }\n\n /**\n * @returns {string}\n */\n get pois() {\n return this.#pois;\n }\n\n /**\n * @returns {string}\n */\n get radius() {\n return this.#radius;\n }\n\n /**\n * @returns {string}\n */\n get strokeColor() {\n return this.#strokeColor;\n }\n\n /**\n * @param {string} strokeColor\n */\n set strokeColor(strokeColor) {\n this.#strokeColor = strokeColor;\n }\n\n /**\n * @returns {string}\n */\n get strokeOpacity() {\n return this.#strokeOpacity;\n }\n\n /**\n * @param {string} strokeOpacity\n */\n set strokeOpacity(strokeOpacity) {\n this.#strokeOpacity = strokeOpacity;\n }\n\n /**\n * @returns {string}\n */\n get strokeWeight() {\n return this.#strokeWeight;\n }\n\n /**\n * @param {string} strokeWeight\n */\n set strokeWeight(strokeWeight) {\n this.#strokeWeight = strokeWeight;\n }\n\n /**\n * @returns {string}\n */\n get title() {\n return this.#title;\n }\n\n /**\n * @returns {string}\n */\n get uid() {\n return this.#uid;\n }\n}\n\nexport class Settings {\n #activateScrollWheel = '';\n #categories = '';\n #forceZoom = '';\n #fullScreenControl = '';\n #infoWindow = '';\n #infoWindowContentTemplatePath = '';\n #mapHeight = '';\n #mapProvider = '';\n #mapTile = '';\n #mapTileAttribution = '';\n #mapTypeControl = '';\n #mapTypeId = '';\n #mapWidth = '';\n #overlay = '';\n #poiCollection = '';\n #scaleControl = '';\n #streetViewControl = '';\n #styles = '';\n #zoom = '';\n #zoomControl = '';\n\n /**\n * @constructor\n * @param {object} settings\n */\n constructor(settings) {\n this.#activateScrollWheel = settings.activateScrollWheel;\n this.#categories = settings.categories;\n this.#forceZoom = settings.forceZoom;\n this.#fullScreenControl = settings.fullScreenControl;\n this.#infoWindow = settings.infoWindow;\n this.#infoWindowContentTemplatePath = settings.infoWindowContentTemplatePath;\n this.#mapHeight = settings.mapHeight;\n this.#mapProvider = settings.mapProvider;\n this.#mapTile = settings.mapTile;\n this.#mapTileAttribution = settings.mapTileAttribution;\n this.#mapTypeControl = settings.mapTypeControl;\n this.#mapTypeId = settings.mapTypeId;\n this.#mapWidth = settings.mapWidth;\n this.#overlay = settings.overlay;\n this.#poiCollection = settings.poiCollection;\n this.#scaleControl = settings.scaleControl;\n this.#streetViewControl = settings.streetViewControl;\n this.#styles = settings.styles;\n this.#zoom = settings.zoom;\n this.#zoomControl = settings.zoomControl;\n };\n\n /**\n * @returns {string}\n */\n get activateScrollWheel() {\n return this.#activateScrollWheel;\n }\n\n /**\n * @returns {string}\n */\n get categories() {\n return this.#categories;\n }\n\n /**\n * @returns {string}\n */\n get forceZoom() {\n return this.#forceZoom;\n }\n\n /**\n * @returns {string}\n */\n get fullScreenControl() {\n return this.#fullScreenControl;\n }\n\n /**\n * @returns {string}\n */\n get infoWindow() {\n return this.#infoWindow;\n }\n\n /**\n * @returns {string}\n */\n get infoWindowContentTemplatePath() {\n return this.#infoWindowContentTemplatePath;\n }\n\n /**\n * @returns {string}\n */\n get mapHeight() {\n return this.#mapHeight;\n }\n\n /**\n * @returns {string}\n */\n get mapProvider() {\n return this.#mapProvider;\n }\n\n /**\n * @returns {string}\n */\n get mapTile() {\n return this.#mapTile;\n }\n\n /**\n * @returns {string}\n */\n get mapTileAttribution() {\n return this.#mapTileAttribution;\n }\n\n /**\n * @returns {string}\n */\n get mapTypeControl() {\n return this.#mapTypeControl;\n }\n\n /**\n * @returns {string}\n */\n get mapTypeId() {\n return this.#mapTypeId;\n }\n\n /**\n * @returns {string}\n */\n get mapWidth() {\n return this.#mapWidth;\n }\n\n /**\n * @returns {string}\n */\n get overlay() {\n return this.#overlay;\n }\n\n /**\n * @returns {string}\n */\n get scaleControl() {\n return this.#scaleControl;\n }\n\n /**\n * @returns {string}\n */\n get streetViewControl() {\n return this.#streetViewControl;\n }\n\n /**\n * @returns {string}\n */\n get styles() {\n return this.#styles;\n }\n\n /**\n * @returns {string}\n */\n get zoom() {\n return this.#zoom;\n }\n\n /**\n * @returns {string}\n */\n get zoomControl() {\n return this.#zoomControl;\n }\n}\n"], + "mappings": "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", + "names": ["_uid", "_title", "_CType", "_bodytext", "_colPos", "_crdate", "_date", "_endtime", "_frame_class", "_header", "_hidden", "_imageheight", "_imagewidth", "_pages", "_pid", "_starttime", "_subheader", "_sys_language_uid", "_target", "_tstamp", "_ajaxUrl", "_contentRecord", "_extConf", "_settings", "_lat", "_lng", "_defaultCountry", "_defaultLatitude", "_defaultLongitude", "_defaultMapProvider", "_defaultMapType", "_defaultRadius", "_explicitAllowMapProviderRequests", "_explicitAllowMapProviderRequestsBySessionOnly", "_fillColor", "_fillOpacity", "_googleMapsGeocodeApiKey", "_googleMapsGeocodeUri", "_googleMapsJavaScriptApiKey", "_googleMapsMapId", "_infoWindowContentTemplatePath", "_mapProvider", "_markerIconAnchorPosX", "_markerIconAnchorPosY", "_markerIconHeight", "_markerIconWidth", "_openStreetMapGeocodeUri", "_strokeColor", "_strokeOpacity", "_strokeWeight", "_width", "_height", "_image", "_addSection", "_link", "_address", "_categories", "_collectionType", "_configurationMap", "_distance", "_foreignRecords", "_infoWindowContent", "_latitude", "_longitude", "_markerIcon", "_pois", "_radius", "_activateScrollWheel", "_forceZoom", "_fullScreenControl", "_infoWindow", "_mapHeight", "_mapTile", "_mapTileAttribution", "_mapTypeControl", "_mapTypeId", "_mapWidth", "_overlay", "_poiCollection", "_scaleControl", "_streetViewControl", "_styles", "_zoom", "_zoomControl", "Category", "uid", "title", "__privateAdd", "__privateSet", "__privateGet", "ContentRecord", "contentRecord", "Environment", "environment", "ExtConf", "extConf", "Image", "width", "height", "InfoWindow", "image", "Link", "addSection", "Overlay", "link", "PoiCollection", "poiCollection", "fillColor", "fillOpacity", "strokeColor", "strokeOpacity", "strokeWeight", "Settings", "settings"] +} diff --git a/Resources/Public/JavaScript/GoogleMaps2.min.js b/Resources/Public/JavaScript/GoogleMaps2.min.js index f3d5e0f2..3dceb4a5 100644 --- a/Resources/Public/JavaScript/GoogleMaps2.min.js +++ b/Resources/Public/JavaScript/GoogleMaps2.min.js @@ -1,7 +1,7 @@ -class GoogleMaps2{allMarkers=[];categorizedMarkers={};pointMarkers=[];bounds={};infoWindow={};poiCollections={};editable={};map={};constructor(e,t){this.allMarkers=[],this.categorizedMarkers={},this.pointMarkers=[],this.bounds=new google.maps.LatLngBounds,this.infoWindow=new google.maps.InfoWindow,this.poiCollections=JSON.parse(e.dataset.pois||"null"),this.editable=e.classList.contains("editMarker"),this.setMapDimensions(e,t.settings),this.initialize(e,t)}initialize=async(e,t)=>{var o,i;this.createMap(e,t),void 0===this.poiCollections||null===this.poiCollections?(o=Number(e.dataset.latitude),i=Number(e.dataset.longitude),o&&i?(await this.createMarkerByLatLng(o,i),this.map.setCenter(new google.maps.LatLng(o,i))):this.map.setCenter(new google.maps.LatLng(t.extConf.defaultLatitude,t.extConf.defaultLongitude))):(await this.createPointByCollectionType(e,t),void 0!==t.settings.markerClusterer&&1===t.settings.markerClusterer.enable&&new MarkerClusterer(this.map,this.pointMarkers,{imagePath:t.settings.markerClusterer.imagePath}),1{let mapOptions={mapTypeId:"",zoom:parseInt(settings.zoom),zoomControl:0!==parseInt(settings.zoomControl),mapTypeControl:0!==parseInt(settings.mapTypeControl),scaleControl:0!==parseInt(settings.scaleControl),streetViewControl:0!==parseInt(settings.streetViewControl),fullscreenControl:0!==parseInt(settings.fullScreenControl),scrollwheel:settings.activateScrollWheel,styles:""};switch(settings.styles&&(mapOptions.styles=eval(settings.styles)),settings.mapTypeId){case"google.maps.MapTypeId.HYBRID":case"hybrid":mapOptions.mapTypeId=google.maps.MapTypeId.HYBRID;break;case"google.maps.MapTypeId.ROADMAP":case"roadmap":mapOptions.mapTypeId=google.maps.MapTypeId.ROADMAP;break;case"google.maps.MapTypeId.SATELLITE":case"satellite":mapOptions.mapTypeId=google.maps.MapTypeId.SATELLITE;break;case"google.maps.MapTypeId.TERRAIN":case"terrain":mapOptions.mapTypeId=google.maps.MapTypeId.TERRAIN}return mapOptions};getCircleOptions(e,t,o){return{map:e,center:t,radius:o.radius,strokeColor:o.strokeColor,strokeOpacity:o.strokeOpacity,strokeWeight:o.strokeWeight,fillColor:o.fillColor,fillOpacity:o.fillOpacity}}getPolygonOptions(e,t){return{paths:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}}getPolylineOptions(e,t){return{path:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight}}createMap(e,t){var o=this.getMapOptions(t.settings);o.mapId=t.settings.googleMapsMapId||"",this.map=new google.maps.Map(e,o)}canBeInterpretedAsNumber(e){return"number"==typeof e||!isNaN(Number(e))}normalizeDimension(e){let t=String(e);return this.canBeInterpretedAsNumber(t)&&(t+="px"),t}shouldFitBounds(e){return!0!==e.forceZoom&&null!==this.poiCollections&&(1{var i,s={};for(let t=0;t{let o=[];return(t?e.querySelectorAll("input:checked"):e.querySelectorAll("input:not(input:checked)")).forEach(e=>{o.push(parseInt(e.value))}),o};getMarkersToChangeVisibilityFor=(e,t,i)=>{var s=[];if(0!==this.allMarkers.length){var a,r,n=this.getCategoriesOfCheckboxesWithStatus(t,i);for(let e=0;e{var o=this.groupCategories(t);let i=document.createElement("form");for(var s in i.classList.add("txMaps2Form"),i.setAttribute("id","txMaps2Form-"+t.contentRecord.uid),o)o.hasOwnProperty(s)&&(i.appendChild(this.getCheckbox(o[s])),i.querySelector("#checkCategory_"+s)?.insertAdjacentHTML("afterend",`${o[s].title}`));i.querySelectorAll("input").forEach(o=>{o.addEventListener("click",()=>{let t=o.checked;var e=o.value;this.getMarkersToChangeVisibilityFor(e,i,t).forEach(e=>{"function"==typeof e.setVisible?e.setVisible(t):"function"==typeof e.setMap?e.setMap(t?this.map:null):e.map=t?this.map:null})})}),e.insertAdjacentElement("afterend",i)};getCheckbox(e){var t=document.createElement("div");return t.classList.add("form-group"),t.innerHTML=` +var m=Object.defineProperty;var k=(e,t,s)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var l=(e,t,s)=>k(e,typeof t!="symbol"?t+"":t,s);class GoogleMaps2{constructor(e,t){l(this,"allMarkers",[]);l(this,"categorizedMarkers",{});l(this,"pointMarkers",[]);l(this,"bounds",{});l(this,"infoWindow",{});l(this,"poiCollections",{});l(this,"editable",{});l(this,"map",{});l(this,"initialize",async(e,t)=>{if(this.createMap(e,t),typeof this.poiCollections>"u"||this.poiCollections===null){let s=Number(e.dataset.latitude),i=Number(e.dataset.longitude);s&&i?(await this.createMarkerByLatLng(s,i),this.map.setCenter(new google.maps.LatLng(s,i))):this.map.setCenter(new google.maps.LatLng(t.extConf.defaultLatitude,t.extConf.defaultLongitude))}else await this.createPointByCollectionType(e,t),typeof t.settings.markerClusterer<"u"&&t.settings.markerClusterer.enable===1&&new MarkerClusterer(this.map,this.pointMarkers,{imagePath:t.settings.markerClusterer.imagePath}),this.countObjectProperties(this.categorizedMarkers)>1&&this.showSwitchableCategories(e,t),this.shouldFitBounds(t.settings)?this.map.fitBounds(this.bounds):this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude,this.poiCollections[0].longitude))});l(this,"getMapOptions",settings=>{let mapOptions={mapTypeId:"",zoom:parseInt(settings.zoom),zoomControl:parseInt(settings.zoomControl)!==0,mapTypeControl:parseInt(settings.mapTypeControl)!==0,scaleControl:parseInt(settings.scaleControl)!==0,streetViewControl:parseInt(settings.streetViewControl)!==0,fullscreenControl:parseInt(settings.fullScreenControl)!==0,scrollwheel:settings.activateScrollWheel,styles:""};switch(settings.styles&&(mapOptions.styles=eval(settings.styles)),settings.mapTypeId){case"google.maps.MapTypeId.HYBRID":case"hybrid":mapOptions.mapTypeId=google.maps.MapTypeId.HYBRID;break;case"google.maps.MapTypeId.ROADMAP":case"roadmap":mapOptions.mapTypeId=google.maps.MapTypeId.ROADMAP;break;case"google.maps.MapTypeId.SATELLITE":case"satellite":mapOptions.mapTypeId=google.maps.MapTypeId.SATELLITE;break;case"google.maps.MapTypeId.TERRAIN":case"terrain":mapOptions.mapTypeId=google.maps.MapTypeId.TERRAIN;break}return mapOptions});l(this,"groupCategories",e=>{let t={},s="0";for(let i=0;i-1&&!t.hasOwnProperty(s)&&(t[s]=this.poiCollections[i].categories[a]);return t});l(this,"getCategoriesOfCheckboxesWithStatus",(e,t)=>{let s=[];return(t?e.querySelectorAll("input:checked"):e.querySelectorAll("input:not(input:checked)")).forEach(a=>{s.push(parseInt(a.value))}),s});l(this,"getMarkersToChangeVisibilityFor",(e,t,s)=>{let i=[];if(this.allMarkers.length===0)return i;let a=null,o=null,r=this.getCategoriesOfCheckboxesWithStatus(t,s);for(let p=0;p{let s=this.groupCategories(t),i=document.createElement("form"),a={};i.classList.add("txMaps2Form"),i.setAttribute("id","txMaps2Form-"+t.contentRecord.uid);for(let o in s)s.hasOwnProperty(o)&&(i.appendChild(this.getCheckbox(s[o])),i.querySelector("#checkCategory_"+o)?.insertAdjacentHTML("afterend",`${s[o].title}`));i.querySelectorAll("input").forEach(o=>{o.addEventListener("click",()=>{let r=o.checked,p=o.value;this.getMarkersToChangeVisibilityFor(p,i,r).forEach(n=>{typeof n.setVisible=="function"?n.setVisible(r):typeof n.setMap=="function"?n.setMap(r?this.map:null):n.map=r?this.map:null})})}),e.insertAdjacentElement("afterend",i)});l(this,"countObjectProperties",e=>{let t=0;for(let s in e)e.hasOwnProperty(s)&&t++;return t});l(this,"createPointByCollectionType",async(e,t)=>{let s,i=0;if(this.poiCollections!==null&&this.poiCollections.length)for(const a of this.poiCollections){switch(a.strokeColor===""&&(a.strokeColor=t.extConf.strokeColor),a.strokeOpacity===""&&(a.strokeOpacity=t.extConf.strokeOpacity),a.strokeWeight===""&&(a.strokeWeight=t.extConf.strokeWeight),a.fillColor===""&&(a.fillColor=t.extConf.fillColor),a.fillOpacity===""&&(a.fillOpacity=t.extConf.fillOpacity),s=null,a.collectionType){case"Point":s=await this.createMarker(a,e,t);break;case"Area":s=this.createArea(a,t);break;case"Route":s=this.createRoute(a,t);break;case"Radius":s=this.createRadius(a,t);break}if(s!==null){this.allMarkers.push({marker:s,poiCollection:a}),i=0;for(let o=0;o{const{AdvancedMarkerElement:i}=await google.maps.importLibrary("marker");let a={position:new google.maps.LatLng(e.latitude,e.longitude),map:this.map,gmpDraggable:this.editable};if(e.hasOwnProperty("markerIcon")&&e.markerIcon!==""){const r=document.createElement("img");let p=e.markerIcon;p.startsWith("/")&&(p=p.substring(1)),r.src=s.siteUrl+p;const c=e.markerIconWidth||s.extConf.markerIconWidth,n=e.markerIconHeight||s.extConf.markerIconHeight,d=e.markerIconAnchorPosX||s.extConf.markerIconAnchorPosX,u=e.markerIconAnchorPosY||s.extConf.markerIconAnchorPosY;c&&(r.style.width=c+"px"),n&&(r.style.height=n+"px"),a.content=r,d&&(a.anchorLeft="-"+d+"px"),u&&(a.anchorTop="-"+u+"px")}let o=new i(a);return this.pointMarkers.push(o),this.bounds.extend(o.position),this.editable?this.addEditListeners(t,o,e,s):this.addInfoWindow(o,e,s),o});l(this,"createArea",(e,t)=>{let s,i=[];for(let o=0;o{let s,i=[];for(let o=0;o{let s=new google.maps.Circle(this.getCircleOptions(this.map,new google.maps.LatLng(e.latitude,e.longitude),e));return this.bounds.union(s.getBounds()),this.addInfoWindow(s,e,t),s});l(this,"addInfoWindow",(e,t,s)=>{let i=this.infoWindow,a=this.map;google.maps.event.addListener(e,"click",o=>{fetch(s.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/json","ext-maps2":"infoWindowContent"},body:JSON.stringify({poiCollection:t.uid})}).then(r=>r.json()).then(r=>{i.close(),i.setContent(r.content),t.collectionType==="Point"?(i.setPosition(null),i.open({anchor:e,map:a})):(i.setPosition(new google.maps.LatLng(t.latitude,t.longitude)),i.open(a))}).catch(r=>console.error("Error:",r))})});l(this,"inList",(e,t)=>{let s=","+e+",";return t=","+t+",",s.search(t)});l(this,"createMarkerByLatLng",async(e,t)=>{const{AdvancedMarkerElement:s}=await google.maps.importLibrary("marker");let i=new s({position:new google.maps.LatLng(e,t),map:this.map});this.bounds.extend(i.position)});l(this,"addEditListeners",(e,t,s,i)=>{google.maps.event.addListener(t,"dragend",()=>{let a=t.position,o=(typeof a.lat=="function"?a.lat():a.lat).toFixed(6),r=(typeof a.lng=="function"?a.lng():a.lng).toFixed(6);e.prevAll("input.latitude-"+i.contentRecord.uid).val(o),e.prevAll("input.longitude-"+i.contentRecord.uid).val(r)}),google.maps.event.addListener(this.map,"click",a=>{t.position=a.latLng,e.prevAll("input.latitude-"+i.contentRecord.uid).val(a.latLng.lat().toFixed(6)),e.prevAll("input.longitude-"+i.contentRecord.uid).val(a.latLng.lng().toFixed(6))})});this.allMarkers=[],this.categorizedMarkers={},this.pointMarkers=[],this.bounds=new google.maps.LatLngBounds,this.infoWindow=new google.maps.InfoWindow,this.poiCollections=JSON.parse(e.dataset.pois||"null"),this.editable=e.classList.contains("editMarker"),this.setMapDimensions(e,t.settings),this.initialize(e,t)}getCircleOptions(e,t,s){return{map:e,center:t,radius:s.radius,strokeColor:s.strokeColor,strokeOpacity:s.strokeOpacity,strokeWeight:s.strokeWeight,fillColor:s.fillColor,fillOpacity:s.fillOpacity}}getPolygonOptions(e,t){return{paths:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}}getPolylineOptions(e,t){return{path:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight}}createMap(e,t){let s=this.getMapOptions(t.settings);s.mapId=t.settings.googleMapsMapId||"",this.map=new google.maps.Map(e,s)}canBeInterpretedAsNumber(e){return typeof e=="number"||!isNaN(Number(e))}normalizeDimension(e){let t=String(e);return this.canBeInterpretedAsNumber(t)&&(t+="px"),t}shouldFitBounds(e){return e.forceZoom===!0||this.poiCollections===null?!1:this.poiCollections.length>1||this.poiCollections.length===1&&(this.poiCollections[0].collectionType==="Area"||this.poiCollections[0].collectionType==="Route")}setMapDimensions(e,t){e.style.height=this.normalizeDimension(t.mapHeight),e.style.width=this.normalizeDimension(t.mapWidth)}getCheckbox(e){let t=document.createElement("div");return t.classList.add("form-group"),t.innerHTML=`
-
`,t}countObjectProperties=e=>{let t=0;for(var o in e)e.hasOwnProperty(o)&&t++;return t};createPointByCollectionType=async(e,t)=>{let o;var i;if(null!==this.poiCollections&&this.poiCollections.length)for(const s of this.poiCollections){switch(""===s.strokeColor&&(s.strokeColor=t.extConf.strokeColor),""===s.strokeOpacity&&(s.strokeOpacity=t.extConf.strokeOpacity),""===s.strokeWeight&&(s.strokeWeight=t.extConf.strokeWeight),""===s.fillColor&&(s.fillColor=t.extConf.fillColor),""===s.fillOpacity&&(s.fillOpacity=t.extConf.fillOpacity),o=null,s.collectionType){case"Point":o=await this.createMarker(s,e,t);break;case"Area":o=this.createArea(s,t);break;case"Route":o=this.createRoute(s,t);break;case"Radius":o=this.createRadius(s,t)}if(null!==o){this.allMarkers.push({marker:o,poiCollection:s});for(let e=0;e{var i=(await google.maps.importLibrary("marker"))["AdvancedMarkerElement"],s={position:new google.maps.LatLng(t.latitude,t.longitude),map:this.map,gmpDraggable:this.editable};if(t.hasOwnProperty("markerIcon")&&""!==t.markerIcon){var a=document.createElement("img");let e=t.markerIcon;e.startsWith("/")&&(e=e.substring(1)),a.src=o.siteUrl+e;var r=t.markerIconWidth||o.extConf.markerIconWidth,n=t.markerIconHeight||o.extConf.markerIconHeight,l=t.markerIconAnchorPosX||o.extConf.markerIconAnchorPosX,p=t.markerIconAnchorPosY||o.extConf.markerIconAnchorPosY;r&&(a.style.width=r+"px"),n&&(a.style.height=n+"px"),s.content=a,l&&(s.anchorLeft="-"+l+"px"),p&&(s.anchorTop="-"+p+"px")}r=new i(s);return this.pointMarkers.push(r),this.bounds.extend(r.position),this.editable?this.addEditListeners(e,r,t,o):this.addInfoWindow(r,t,o),r};createArea=(t,e)=>{var o,i=[];for(let e=0;e{var o,i=[];for(let e=0;e{var o=new google.maps.Circle(this.getCircleOptions(this.map,new google.maps.LatLng(e.latitude,e.longitude),e));return this.bounds.union(o.getBounds()),this.addInfoWindow(o,e,t),o};addInfoWindow=(t,o,i)=>{let s=this.infoWindow,a=this.map;google.maps.event.addListener(t,"click",e=>{fetch(i.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/json","ext-maps2":"infoWindowContent"},body:JSON.stringify({poiCollection:o.uid})}).then(e=>e.json()).then(e=>{s.close(),s.setContent(e.content),"Point"===o.collectionType?(s.setPosition(null),s.open({anchor:t,map:a})):(s.setPosition(new google.maps.LatLng(o.latitude,o.longitude)),s.open(a))}).catch(e=>console.error("Error:",e))})};inList=(e,t)=>{return(","+e+",").search(t=","+t+",")};createMarkerByLatLng=async(e,t)=>{var o=(await google.maps.importLibrary("marker"))["AdvancedMarkerElement"],o=new o({position:new google.maps.LatLng(e,t),map:this.map});this.bounds.extend(o.position)};addEditListeners=(o,i,e,s)=>{google.maps.event.addListener(i,"dragend",()=>{var e=i.position,t=("function"==typeof e.lat?e.lat():e.lat).toFixed(6),e=("function"==typeof e.lng?e.lng():e.lng).toFixed(6);o.prevAll("input.latitude-"+s.contentRecord.uid).val(t),o.prevAll("input.longitude-"+s.contentRecord.uid).val(e)}),google.maps.event.addListener(this.map,"click",e=>{i.position=e.latLng,o.prevAll("input.latitude-"+s.contentRecord.uid).val(e.latLng.lat().toFixed(6)),o.prevAll("input.longitude-"+s.contentRecord.uid).val(e.latLng.lng().toFixed(6))})}}let maps2GoogleMaps=[];function initMap(){document.querySelectorAll(".maps2").forEach(e=>{var t=void 0!==e.dataset.environment?e.dataset.environment:"{}",o=void 0!==e.dataset.override?e.dataset.override:"{}";const l=(...e)=>{let t={},o=!1,i=0;var s=e.length;for("[object Boolean]"===Object.prototype.toString.call(e[0])&&(o=e[0],i++);i{if(13===e.keyCode)return!1}))} + `,t}}let maps2GoogleMaps=[];function initMap(){document.querySelectorAll(".maps2").forEach(s=>{const i=typeof s.dataset.environment<"u"?s.dataset.environment:"{}",a=typeof s.dataset.override<"u"?s.dataset.override:"{}",o=(...r)=>{let p={},c=!1,n=0,d=r.length;Object.prototype.toString.call(r[0])==="[object Boolean]"&&(c=r[0],n++);const u=function(h){for(var g in h)Object.prototype.hasOwnProperty.call(h,g)&&(c&&Object.prototype.toString.call(h[g])==="[object Object]"?p[g]=o(!0,p[g],h[g]):p[g]=h[g])};for(;n{if(i.keyCode===13)return!1})}} //# sourceMappingURL=GoogleMaps2.min.js.map diff --git a/Resources/Public/JavaScript/GoogleMaps2.min.js.map b/Resources/Public/JavaScript/GoogleMaps2.min.js.map index 18e9bb29..4e1a0c5b 100644 --- a/Resources/Public/JavaScript/GoogleMaps2.min.js.map +++ b/Resources/Public/JavaScript/GoogleMaps2.min.js.map @@ -1 +1,7 @@ -{"version":3,"sources":["GoogleMaps2.js"],"names":["GoogleMaps2","allMarkers","categorizedMarkers","pointMarkers","bounds","infoWindow","poiCollections","editable","map","constructor","element","environment","this","google","maps","LatLngBounds","InfoWindow","JSON","parse","dataset","pois","classList","contains","setMapDimensions","settings","initialize","async","lat","lng","createMap","Number","latitude","longitude","await","createMarkerByLatLng","setCenter","LatLng","extConf","defaultLatitude","defaultLongitude","createPointByCollectionType","markerClusterer","enable","MarkerClusterer","imagePath","countObjectProperties","showSwitchableCategories","shouldFitBounds","fitBounds","getMapOptions","let","mapOptions","mapTypeId","zoom","parseInt","zoomControl","mapTypeControl","scaleControl","streetViewControl","fullscreenControl","fullScreenControl","scrollwheel","activateScrollWheel","styles","eval","MapTypeId","HYBRID","ROADMAP","SATELLITE","TERRAIN","getCircleOptions","centerPosition","poiCollection","center","radius","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","getPolygonOptions","paths","getPolylineOptions","path","mapId","googleMapsMapId","Map","canBeInterpretedAsNumber","value","isNaN","normalizeDimension","dimension","normalizedDimension","String","forceZoom","length","collectionType","style","height","mapHeight","width","mapWidth","groupCategories","categoryUid","groupedCategories","x","y","categories","uid","inList","hasOwnProperty","getCategoriesOfCheckboxesWithStatus","form","isChecked","querySelectorAll","forEach","checkbox","push","getMarkersToChangeVisibilityFor","markers","marker","allCategoriesOfMarker","categoriesOfCheckboxesWithStatus","i","markerCategoryHasCheckboxWithStatus","j","k","document","createElement","add","setAttribute","contentRecord","appendChild","getCheckbox","querySelector","insertAdjacentHTML","title","addEventListener","checked","setVisible","setMap","insertAdjacentElement","category","div","innerHTML","obj","count","key","createMarker","createArea","createRoute","createRadius","c","relatedCategories","AdvancedMarkerElement","importLibrary","markerOptions","position","gmpDraggable","markerIcon","img","markerIconPath","startsWith","substring","src","siteUrl","markerIconWidth","markerIconHeight","markerIconAnchorPosX","markerIconAnchorPosY","content","anchorLeft","anchorTop","extend","addEditListeners","addInfoWindow","latLng","mapPosition","area","Polygon","route","Polyline","circle","Circle","union","getBounds","event","addListener","fetch","ajaxUrl","method","headers","Content-Type","ext-maps2","body","stringify","then","response","json","data","close","setContent","setPosition","open","anchor","catch","error","console","list","item","search","mapContainer","toFixed","prevAll","val","maps2GoogleMaps","initMap","override","args","extended","deep","Object","prototype","toString","call","prop","address","places","Autocomplete","fields","keyCode"],"mappings":"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","file":"GoogleMaps2.min.js","sourcesContent":["class GoogleMaps2 {\n allMarkers = [];\n categorizedMarkers = {};\n pointMarkers = [];\n bounds = {};\n infoWindow = {};\n poiCollections = {};\n editable = {};\n map = {};\n\n /**\n * @param {HTMLElement} element\n * @param {Environment} environment\n * @constructor\n */\n constructor (element, environment) {\n this.allMarkers = [];\n this.categorizedMarkers = {};\n this.pointMarkers = [];\n this.bounds = new google.maps.LatLngBounds();\n this.infoWindow = new google.maps.InfoWindow();\n this.poiCollections = JSON.parse(element.dataset.pois || \"null\");\n this.editable = element.classList.contains('editMarker');\n\n this.setMapDimensions(element, environment.settings);\n\n this.initialize(element, environment);\n }\n\n /**\n * Initialize Map and Markers asynchronously\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n initialize = async (element, environment) => {\n this.createMap(element, environment);\n\n if (typeof this.poiCollections === 'undefined' || this.poiCollections === null) {\n let lat = Number(element.dataset.latitude);\n let lng = Number(element.dataset.longitude);\n if (lat && lng) {\n await this.createMarkerByLatLng(lat, lng);\n this.map.setCenter(new google.maps.LatLng(lat, lng));\n } else {\n this.map.setCenter(new google.maps.LatLng(environment.extConf.defaultLatitude, environment.extConf.defaultLongitude));\n }\n } else {\n await this.createPointByCollectionType(element, environment);\n if (\n typeof environment.settings.markerClusterer !== 'undefined'\n && environment.settings.markerClusterer.enable === 1\n ) {\n new MarkerClusterer(\n this.map,\n this.pointMarkers,\n { imagePath: environment.settings.markerClusterer.imagePath }\n );\n }\n\n if (this.countObjectProperties(this.categorizedMarkers) > 1) {\n this.showSwitchableCategories(element, environment);\n }\n\n if (this.shouldFitBounds(environment.settings)) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude, this.poiCollections[0].longitude));\n }\n }\n }\n\n /**\n * Return a MapOptions object which can be assigned to the Map object of Google\n *\n * @param {Settings} settings\n * @return {object}\n */\n getMapOptions = settings => {\n let mapOptions = {\n mapTypeId: '',\n zoom: parseInt(settings.zoom),\n zoomControl: (parseInt(settings.zoomControl) !== 0),\n mapTypeControl: (parseInt(settings.mapTypeControl) !== 0),\n scaleControl: (parseInt(settings.scaleControl) !== 0),\n streetViewControl: (parseInt(settings.streetViewControl) !== 0),\n fullscreenControl: (parseInt(settings.fullScreenControl) !== 0),\n scrollwheel: settings.activateScrollWheel,\n styles: ''\n };\n\n if (settings.styles) {\n mapOptions.styles = eval(settings.styles);\n }\n\n switch (settings.mapTypeId) {\n case 'google.maps.MapTypeId.HYBRID':\n case 'hybrid':\n mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;\n break;\n case 'google.maps.MapTypeId.ROADMAP':\n case 'roadmap':\n mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;\n break;\n case 'google.maps.MapTypeId.SATELLITE':\n case 'satellite':\n mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;\n break;\n case 'google.maps.MapTypeId.TERRAIN':\n case 'terrain':\n mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;\n break;\n }\n\n return mapOptions;\n }\n\n /**\n * Returns CircleOptions which can be assigned to the Circle object of Google\n *\n * @param {L.Map} map\n * @param {object} centerPosition\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getCircleOptions (map, centerPosition, poiCollection) {\n return {\n map: map,\n center: centerPosition,\n radius: poiCollection.radius,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Returns PolygonOptions which can be assigned to the Polygon object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolygonOptions (paths, poiCollection) {\n return {\n paths: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Return PolylineOptions which can be assigned to the Polyline object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolylineOptions (paths, poiCollection) {\n return {\n path: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n };\n }\n\n /**\n * Create Map\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMap (element, environment) {\n let mapOptions = this.getMapOptions(environment.settings);\n mapOptions.mapId = environment.settings.googleMapsMapId || '';\n\n this.map = new google.maps.Map(element, mapOptions);\n }\n\n /**\n * @param {string | number} value\n * @return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n /**\n * @param {Settings} settings\n * @returns {boolean}\n */\n shouldFitBounds(settings) {\n if (settings.forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Settings} settings\n */\n setMapDimensions(element, settings) {\n element.style.height = this.normalizeDimension(settings.mapHeight);\n element.style.width = this.normalizeDimension(settings.mapWidth);\n }\n\n /**\n * Group Categories\n *\n * @param {Environment} environment\n */\n groupCategories = environment => {\n let groupedCategories = {};\n let categoryUid = \"0\";\n for (let x = 0; x < this.poiCollections.length; x++) {\n for (let y = 0; y < this.poiCollections[x].categories.length; y++) {\n categoryUid = String(this.poiCollections[x].categories[y].uid);\n if (this.inList(environment.settings.categories, categoryUid) > -1 && !groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = this.poiCollections[x].categories[y];\n }\n }\n }\n\n return groupedCategories;\n };\n\n /**\n * Get categories of all checkboxes with a given status\n *\n * @param {HTMLElement} form The HTML form element containing the checkboxes\n * @param {boolean} isChecked Get checkboxes of this status only\n */\n getCategoriesOfCheckboxesWithStatus = (form, isChecked) => {\n let categories = [];\n let checkboxes = isChecked ? form.querySelectorAll(\"input:checked\") : form.querySelectorAll(\"input:not(input:checked)\");\n\n checkboxes.forEach(checkbox => {\n categories.push(parseInt(checkbox.value));\n });\n\n return categories;\n }\n\n getMarkersToChangeVisibilityFor = (categoryUid, form, isChecked) => {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n /**\n * Show switchable categories\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n showSwitchableCategories = (element, environment) => {\n let categories = this.groupCategories(environment);\n let form = document.createElement(\"form\");\n let span = {};\n\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + environment.contentRecord.uid);\n\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentHTML(\n \"afterend\",\n `${categories[categoryUid].title}`\n );\n }\n }\n\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (typeof marker.setVisible === 'function') {\n marker.setVisible(isChecked);\n } else if (typeof marker.setMap === 'function') {\n marker.setMap(isChecked ? this.map : null);\n } else {\n marker.map = isChecked ? this.map : null;\n }\n });\n });\n });\n\n element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * Get Checkbox for Category\n *\n * @param category\n */\n getCheckbox(category) {\n let div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n div.innerHTML = `\n
\n \n
`;\n\n return div;\n }\n\n /**\n * Count Object properties\n *\n * @param obj\n */\n countObjectProperties = obj => {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n /**\n * Create Point by CollectionType\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createPointByCollectionType = async (element, environment) => {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n for (const poiCollection of this.poiCollections) {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = environment.extConf.strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = environment.extConf.strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = environment.extConf.strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = environment.extConf.fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = environment.extConf.fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = await this.createMarker(poiCollection, element, environment);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection, environment);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection, environment);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, environment);\n break;\n }\n\n if (marker !== null) {\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push({\n marker: marker,\n relatedCategories: poiCollection.categories\n });\n }\n }\n }\n }\n }\n\n /**\n * Create Marker with InfoWindow\n *\n * @param {PoiCollection} poiCollection\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMarker = async (poiCollection, element, environment) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let markerOptions = {\n position: new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n map: this.map,\n gmpDraggable: this.editable\n };\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const img = document.createElement('img');\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n img.src = environment.siteUrl + markerIconPath;\n\n const markerIconWidth = poiCollection.markerIconWidth || environment.extConf.markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || environment.extConf.markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || environment.extConf.markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || environment.extConf.markerIconAnchorPosY;\n\n if (markerIconWidth) img.style.width = markerIconWidth + 'px';\n if (markerIconHeight) img.style.height = markerIconHeight + 'px';\n markerOptions.content = img;\n\n if (markerIconAnchorPosX) {\n markerOptions.anchorLeft = '-' + markerIconAnchorPosX + 'px';\n }\n if (markerIconAnchorPosY) {\n markerOptions.anchorTop = '-' + markerIconAnchorPosY + 'px';\n }\n }\n\n let marker = new AdvancedMarkerElement(markerOptions);\n\n this.pointMarkers.push(marker);\n this.bounds.extend(marker.position);\n\n if (this.editable) {\n this.addEditListeners(element, marker, poiCollection, environment);\n } else {\n this.addInfoWindow(marker, poiCollection, environment);\n }\n\n return marker;\n }\n\n /**\n * Create Area\n *\n * @param poiCollection\n * @param environment\n */\n createArea = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let area = new google.maps.Polygon(this.getPolygonOptions(paths, poiCollection));\n area.setMap(this.map);\n this.addInfoWindow(area, poiCollection, environment);\n\n return area;\n }\n\n /**\n * Create Route\n *\n * @param poiCollection\n * @param environment\n */\n createRoute = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let route = new google.maps.Polyline(this.getPolylineOptions(paths, poiCollection));\n route.setMap(this.map);\n this.addInfoWindow(route, poiCollection, environment);\n\n return route;\n }\n\n /**\n * Create Radius\n *\n * @param poiCollection\n * @param environment\n */\n createRadius = (poiCollection, environment) => {\n let circle = new google.maps.Circle(\n this.getCircleOptions(\n this.map,\n new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n poiCollection\n )\n );\n\n this.bounds.union(circle.getBounds());\n this.addInfoWindow(circle, poiCollection, environment);\n\n return circle;\n }\n\n /**\n * Add Info Window to element\n *\n * @param element\n * @param poiCollection\n * @param environment\n */\n addInfoWindow = (element, poiCollection, environment) => {\n let infoWindow = this.infoWindow;\n let map = this.map;\n google.maps.event.addListener(element, \"click\", event => {\n fetch(environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n infoWindow.close();\n infoWindow.setContent(data.content);\n\n if (poiCollection.collectionType === \"Point\") {\n infoWindow.setPosition(null);\n infoWindow.open({\n anchor: element,\n map: map\n });\n } else {\n infoWindow.setPosition(new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude));\n infoWindow.open(map);\n }\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * Check for item in list\n * Check if an item exists in a comma-separated list of items.\n *\n * @param list\n * @param item\n */\n inList = (list, item) => {\n let catSearch = ',' + list + ',';\n item = ',' + item + ',';\n return catSearch.search(item);\n };\n\n /**\n * Create Marker with InfoWindow\n *\n * @param latitude\n * @param longitude\n */\n createMarkerByLatLng = async (latitude, longitude) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let marker = new AdvancedMarkerElement({\n position: new google.maps.LatLng(latitude, longitude),\n map: this.map\n });\n this.bounds.extend(marker.position);\n };\n\n /**\n * Add Edit Listeners\n * This will only work for Markers (Point)\n *\n * @param mapContainer\n * @param marker\n * @param poiCollection\n * @param environment\n */\n addEditListeners = (mapContainer, marker, poiCollection, environment) => {\n google.maps.event.addListener(marker, 'dragend', () => {\n let position = marker.position;\n let lat = (typeof position.lat === 'function' ? position.lat() : position.lat).toFixed(6);\n let lng = (typeof position.lng === 'function' ? position.lng() : position.lng).toFixed(6);\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(lat);\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(lng);\n });\n\n google.maps.event.addListener(this.map, 'click', event => {\n marker.position = event.latLng;\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(event.latLng.lat().toFixed(6));\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(event.latLng.lng().toFixed(6));\n });\n };\n}\n\nlet maps2GoogleMaps = [];\n\n/**\n * This function will be called by the &callback argument of the Google Maps API library\n */\nfunction initMap () {\n document.querySelectorAll(\".maps2\").forEach(element => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2GoogleMaps.push(new GoogleMaps2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n });\n\n let address = document.querySelector('#maps2Address');\n let radius = document.querySelector('#maps2Radius');\n if (address !== null && radius !== null) {\n let autocomplete = new google.maps.places.Autocomplete(address, {\n fields: [\"id\", \"location\", \"formattedAddress\", \"displayName\"]\n });\n\n address.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13) return false;\n });\n }\n}\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/JavaScript/GoogleMaps2.js"], + "sourcesContent": ["class GoogleMaps2 {\n allMarkers = [];\n categorizedMarkers = {};\n pointMarkers = [];\n bounds = {};\n infoWindow = {};\n poiCollections = {};\n editable = {};\n map = {};\n\n /**\n * @param {HTMLElement} element\n * @param {Environment} environment\n * @constructor\n */\n constructor (element, environment) {\n this.allMarkers = [];\n this.categorizedMarkers = {};\n this.pointMarkers = [];\n this.bounds = new google.maps.LatLngBounds();\n this.infoWindow = new google.maps.InfoWindow();\n this.poiCollections = JSON.parse(element.dataset.pois || \"null\");\n this.editable = element.classList.contains('editMarker');\n\n this.setMapDimensions(element, environment.settings);\n\n this.initialize(element, environment);\n }\n\n /**\n * Initialize Map and Markers asynchronously\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n initialize = async (element, environment) => {\n this.createMap(element, environment);\n\n if (typeof this.poiCollections === 'undefined' || this.poiCollections === null) {\n let lat = Number(element.dataset.latitude);\n let lng = Number(element.dataset.longitude);\n if (lat && lng) {\n await this.createMarkerByLatLng(lat, lng);\n this.map.setCenter(new google.maps.LatLng(lat, lng));\n } else {\n this.map.setCenter(new google.maps.LatLng(environment.extConf.defaultLatitude, environment.extConf.defaultLongitude));\n }\n } else {\n await this.createPointByCollectionType(element, environment);\n if (\n typeof environment.settings.markerClusterer !== 'undefined'\n && environment.settings.markerClusterer.enable === 1\n ) {\n new MarkerClusterer(\n this.map,\n this.pointMarkers,\n { imagePath: environment.settings.markerClusterer.imagePath }\n );\n }\n\n if (this.countObjectProperties(this.categorizedMarkers) > 1) {\n this.showSwitchableCategories(element, environment);\n }\n\n if (this.shouldFitBounds(environment.settings)) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.setCenter(new google.maps.LatLng(this.poiCollections[0].latitude, this.poiCollections[0].longitude));\n }\n }\n }\n\n /**\n * Return a MapOptions object which can be assigned to the Map object of Google\n *\n * @param {Settings} settings\n * @return {object}\n */\n getMapOptions = settings => {\n let mapOptions = {\n mapTypeId: '',\n zoom: parseInt(settings.zoom),\n zoomControl: (parseInt(settings.zoomControl) !== 0),\n mapTypeControl: (parseInt(settings.mapTypeControl) !== 0),\n scaleControl: (parseInt(settings.scaleControl) !== 0),\n streetViewControl: (parseInt(settings.streetViewControl) !== 0),\n fullscreenControl: (parseInt(settings.fullScreenControl) !== 0),\n scrollwheel: settings.activateScrollWheel,\n styles: ''\n };\n\n if (settings.styles) {\n mapOptions.styles = eval(settings.styles);\n }\n\n switch (settings.mapTypeId) {\n case 'google.maps.MapTypeId.HYBRID':\n case 'hybrid':\n mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;\n break;\n case 'google.maps.MapTypeId.ROADMAP':\n case 'roadmap':\n mapOptions.mapTypeId = google.maps.MapTypeId.ROADMAP;\n break;\n case 'google.maps.MapTypeId.SATELLITE':\n case 'satellite':\n mapOptions.mapTypeId = google.maps.MapTypeId.SATELLITE;\n break;\n case 'google.maps.MapTypeId.TERRAIN':\n case 'terrain':\n mapOptions.mapTypeId = google.maps.MapTypeId.TERRAIN;\n break;\n }\n\n return mapOptions;\n }\n\n /**\n * Returns CircleOptions which can be assigned to the Circle object of Google\n *\n * @param {L.Map} map\n * @param {object} centerPosition\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getCircleOptions (map, centerPosition, poiCollection) {\n return {\n map: map,\n center: centerPosition,\n radius: poiCollection.radius,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Returns PolygonOptions which can be assigned to the Polygon object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolygonOptions (paths, poiCollection) {\n return {\n paths: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n };\n }\n\n /**\n * Return PolylineOptions which can be assigned to the Polyline object of Google\n *\n * @param {object} paths\n * @param {PoiCollection} poiCollection\n * @return {object}\n */\n getPolylineOptions (paths, poiCollection) {\n return {\n path: paths,\n strokeColor: poiCollection.strokeColor,\n strokeOpacity: poiCollection.strokeOpacity,\n strokeWeight: poiCollection.strokeWeight,\n };\n }\n\n /**\n * Create Map\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMap (element, environment) {\n let mapOptions = this.getMapOptions(environment.settings);\n mapOptions.mapId = environment.settings.googleMapsMapId || '';\n\n this.map = new google.maps.Map(element, mapOptions);\n }\n\n /**\n * @param {string | number} value\n * @return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n /**\n * @param {Settings} settings\n * @returns {boolean}\n */\n shouldFitBounds(settings) {\n if (settings.forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Settings} settings\n */\n setMapDimensions(element, settings) {\n element.style.height = this.normalizeDimension(settings.mapHeight);\n element.style.width = this.normalizeDimension(settings.mapWidth);\n }\n\n /**\n * Group Categories\n *\n * @param {Environment} environment\n */\n groupCategories = environment => {\n let groupedCategories = {};\n let categoryUid = \"0\";\n for (let x = 0; x < this.poiCollections.length; x++) {\n for (let y = 0; y < this.poiCollections[x].categories.length; y++) {\n categoryUid = String(this.poiCollections[x].categories[y].uid);\n if (this.inList(environment.settings.categories, categoryUid) > -1 && !groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = this.poiCollections[x].categories[y];\n }\n }\n }\n\n return groupedCategories;\n };\n\n /**\n * Get categories of all checkboxes with a given status\n *\n * @param {HTMLElement} form The HTML form element containing the checkboxes\n * @param {boolean} isChecked Get checkboxes of this status only\n */\n getCategoriesOfCheckboxesWithStatus = (form, isChecked) => {\n let categories = [];\n let checkboxes = isChecked ? form.querySelectorAll(\"input:checked\") : form.querySelectorAll(\"input:not(input:checked)\");\n\n checkboxes.forEach(checkbox => {\n categories.push(parseInt(checkbox.value));\n });\n\n return categories;\n }\n\n getMarkersToChangeVisibilityFor = (categoryUid, form, isChecked) => {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n /**\n * Show switchable categories\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n showSwitchableCategories = (element, environment) => {\n let categories = this.groupCategories(environment);\n let form = document.createElement(\"form\");\n let span = {};\n\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + environment.contentRecord.uid);\n\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentHTML(\n \"afterend\",\n `${categories[categoryUid].title}`\n );\n }\n }\n\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (typeof marker.setVisible === 'function') {\n marker.setVisible(isChecked);\n } else if (typeof marker.setMap === 'function') {\n marker.setMap(isChecked ? this.map : null);\n } else {\n marker.map = isChecked ? this.map : null;\n }\n });\n });\n });\n\n element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * Get Checkbox for Category\n *\n * @param category\n */\n getCheckbox(category) {\n let div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n div.innerHTML = `\n
\n \n
`;\n\n return div;\n }\n\n /**\n * Count Object properties\n *\n * @param obj\n */\n countObjectProperties = obj => {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n /**\n * Create Point by CollectionType\n *\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createPointByCollectionType = async (element, environment) => {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n for (const poiCollection of this.poiCollections) {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = environment.extConf.strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = environment.extConf.strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = environment.extConf.strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = environment.extConf.fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = environment.extConf.fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = await this.createMarker(poiCollection, element, environment);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection, environment);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection, environment);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, environment);\n break;\n }\n\n if (marker !== null) {\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push({\n marker: marker,\n relatedCategories: poiCollection.categories\n });\n }\n }\n }\n }\n }\n\n /**\n * Create Marker with InfoWindow\n *\n * @param {PoiCollection} poiCollection\n * @param {HTMLElement} element\n * @param {Environment} environment\n */\n createMarker = async (poiCollection, element, environment) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let markerOptions = {\n position: new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n map: this.map,\n gmpDraggable: this.editable\n };\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const img = document.createElement('img');\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n img.src = environment.siteUrl + markerIconPath;\n\n const markerIconWidth = poiCollection.markerIconWidth || environment.extConf.markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || environment.extConf.markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || environment.extConf.markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || environment.extConf.markerIconAnchorPosY;\n\n if (markerIconWidth) img.style.width = markerIconWidth + 'px';\n if (markerIconHeight) img.style.height = markerIconHeight + 'px';\n markerOptions.content = img;\n\n if (markerIconAnchorPosX) {\n markerOptions.anchorLeft = '-' + markerIconAnchorPosX + 'px';\n }\n if (markerIconAnchorPosY) {\n markerOptions.anchorTop = '-' + markerIconAnchorPosY + 'px';\n }\n }\n\n let marker = new AdvancedMarkerElement(markerOptions);\n\n this.pointMarkers.push(marker);\n this.bounds.extend(marker.position);\n\n if (this.editable) {\n this.addEditListeners(element, marker, poiCollection, environment);\n } else {\n this.addInfoWindow(marker, poiCollection, environment);\n }\n\n return marker;\n }\n\n /**\n * Create Area\n *\n * @param poiCollection\n * @param environment\n */\n createArea = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let area = new google.maps.Polygon(this.getPolygonOptions(paths, poiCollection));\n area.setMap(this.map);\n this.addInfoWindow(area, poiCollection, environment);\n\n return area;\n }\n\n /**\n * Create Route\n *\n * @param poiCollection\n * @param environment\n */\n createRoute = (poiCollection, environment) => {\n let latLng;\n let paths = [];\n for (let i = 0; i < poiCollection.pois.length; i++) {\n latLng = new google.maps.LatLng(poiCollection.pois[i].latitude, poiCollection.pois[i].longitude);\n this.bounds.extend(latLng);\n paths.push(latLng);\n }\n\n if (paths.length === 0) {\n paths.push(this.mapPosition);\n }\n\n let route = new google.maps.Polyline(this.getPolylineOptions(paths, poiCollection));\n route.setMap(this.map);\n this.addInfoWindow(route, poiCollection, environment);\n\n return route;\n }\n\n /**\n * Create Radius\n *\n * @param poiCollection\n * @param environment\n */\n createRadius = (poiCollection, environment) => {\n let circle = new google.maps.Circle(\n this.getCircleOptions(\n this.map,\n new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude),\n poiCollection\n )\n );\n\n this.bounds.union(circle.getBounds());\n this.addInfoWindow(circle, poiCollection, environment);\n\n return circle;\n }\n\n /**\n * Add Info Window to element\n *\n * @param element\n * @param poiCollection\n * @param environment\n */\n addInfoWindow = (element, poiCollection, environment) => {\n let infoWindow = this.infoWindow;\n let map = this.map;\n google.maps.event.addListener(element, \"click\", event => {\n fetch(environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n infoWindow.close();\n infoWindow.setContent(data.content);\n\n if (poiCollection.collectionType === \"Point\") {\n infoWindow.setPosition(null);\n infoWindow.open({\n anchor: element,\n map: map\n });\n } else {\n infoWindow.setPosition(new google.maps.LatLng(poiCollection.latitude, poiCollection.longitude));\n infoWindow.open(map);\n }\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * Check for item in list\n * Check if an item exists in a comma-separated list of items.\n *\n * @param list\n * @param item\n */\n inList = (list, item) => {\n let catSearch = ',' + list + ',';\n item = ',' + item + ',';\n return catSearch.search(item);\n };\n\n /**\n * Create Marker with InfoWindow\n *\n * @param latitude\n * @param longitude\n */\n createMarkerByLatLng = async (latitude, longitude) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n let marker = new AdvancedMarkerElement({\n position: new google.maps.LatLng(latitude, longitude),\n map: this.map\n });\n this.bounds.extend(marker.position);\n };\n\n /**\n * Add Edit Listeners\n * This will only work for Markers (Point)\n *\n * @param mapContainer\n * @param marker\n * @param poiCollection\n * @param environment\n */\n addEditListeners = (mapContainer, marker, poiCollection, environment) => {\n google.maps.event.addListener(marker, 'dragend', () => {\n let position = marker.position;\n let lat = (typeof position.lat === 'function' ? position.lat() : position.lat).toFixed(6);\n let lng = (typeof position.lng === 'function' ? position.lng() : position.lng).toFixed(6);\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(lat);\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(lng);\n });\n\n google.maps.event.addListener(this.map, 'click', event => {\n marker.position = event.latLng;\n mapContainer.prevAll(\"input.latitude-\" + environment.contentRecord.uid).val(event.latLng.lat().toFixed(6));\n mapContainer.prevAll(\"input.longitude-\" + environment.contentRecord.uid).val(event.latLng.lng().toFixed(6));\n });\n };\n}\n\nlet maps2GoogleMaps = [];\n\n/**\n * This function will be called by the &callback argument of the Google Maps API library\n */\nfunction initMap () {\n document.querySelectorAll(\".maps2\").forEach(element => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2GoogleMaps.push(new GoogleMaps2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n });\n\n let address = document.querySelector('#maps2Address');\n let radius = document.querySelector('#maps2Radius');\n if (address !== null && radius !== null) {\n let autocomplete = new google.maps.places.Autocomplete(address, {\n fields: [\"id\", \"location\", \"formattedAddress\", \"displayName\"]\n });\n\n address.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13) return false;\n });\n }\n}\n"], + "mappings": "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", + "names": ["element", "environment", "__publicField", "lat", "lng", "groupedCategories", "categoryUid", "x", "y", "form", "isChecked", "categories", "checkbox", "markers", "marker", "allCategoriesOfMarker", "categoriesOfCheckboxesWithStatus", "i", "markerCategoryHasCheckboxWithStatus", "j", "k", "span", "obj", "count", "key", "poiCollection", "c", "AdvancedMarkerElement", "markerOptions", "img", "markerIconPath", "markerIconWidth", "markerIconHeight", "markerIconAnchorPosX", "markerIconAnchorPosY", "latLng", "paths", "area", "route", "circle", "infoWindow", "map", "event", "response", "data", "error", "list", "item", "catSearch", "latitude", "longitude", "mapContainer", "position", "centerPosition", "mapOptions", "value", "dimension", "normalizedDimension", "settings", "category", "div", "override", "extend", "args", "extended", "deep", "length", "merge", "prop", "address", "radius", "autocomplete"] +} diff --git a/Resources/Public/JavaScript/GoogleMapsModule.min.js b/Resources/Public/JavaScript/GoogleMapsModule.min.js index 72e0ccc1..6480b0ec 100644 --- a/Resources/Public/JavaScript/GoogleMapsModule.min.js +++ b/Resources/Public/JavaScript/GoogleMapsModule.min.js @@ -1,2 +1,2 @@ -import{ExtConf,PoiCollection}from"@jweiland/maps2/Classes.js";import FormEngine from"@typo3/backend/form-engine.js";import Notification from"@typo3/backend/notification.js";class GoogleMapsModule{selector="#maps2ConfigurationMap";record=[];extConf=[];marker={};shape={};map={};constructor(){const e=document.querySelector(this.selector);if(e){const t=new PoiCollection(JSON.parse(e.dataset.poiCollection)),a=new ExtConf(JSON.parse(e.dataset.extConf));this.load(a).then(()=>{this.initialize(e,t,a)})}}load=t=>(window._GoogleMapsModule=this,window._GoogleMapsModule.initMaps=this.initMaps,new Promise(e=>{this.resolve=e;e=document.createElement("script");e.src=`https://maps.googleapis.com/maps/api/js?key=${t.googleMapsJavaScriptApiKey}&libraries=marker,places&callback=_GoogleMapsModule.initMaps&loading=async`,e.async=!0,e.defer=!0,document.body.append(e)}));initMaps=()=>{this.resolve&&this.resolve()};initialize=async(e,t,a)=>{this.record=t,this.extConf=a;var s=(await google.maps.importLibrary("maps"))["Map"];switch(this.map=new s(e,this.createMapOptions()),""===a.googleMapsJavaScriptApiKey&&Notification.warning("Missing JS API Key","You have forgotten to set Google Maps JavaScript ApiKey in Extension Settings.",15),""===a.googleMapsGeocodeApiKey&&Notification.warning("Missing GeoCode API Key","You have forgotten to set Google Maps Geocode ApiKey in Extension Settings.",15),t.collectionType){case"Point":this.createMarker(t);break;case"Area":this.createArea(t);break;case"Route":this.createRoute(t);break;case"Radius":this.createRadius(t)}this.findAddress(),t.latitude&&t.longitude?this.map.setCenter({lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)}):this.map.setCenter({lat:parseFloat(a.defaultLatitude),lng:parseFloat(a.defaultLongitude)});s=document.querySelector("ul.t3js-tabs li:nth-of-type(2) button[data-bs-toggle='tab']");s&&s.addEventListener("shown.bs.tab",()=>{google.maps.event.trigger(this.map,"resize"),t.latitude&&t.longitude?this.map.setCenter({lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)}):this.map.setCenter({lat:parseFloat(a.defaultLatitude),lng:parseFloat(a.defaultLongitude)})})};createMapOptions=()=>({zoom:14,mapTypeId:google.maps.MapTypeId.ROADMAP,mapId:this.extConf.googleMapsMapId});createCircleOptions=(e,t,a)=>({map:e,center:{lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)},strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight,fillColor:a.fillColor,fillOpacity:a.fillOpacity,editable:!0,radius:0===t.radius?a.defaultRadius:t.radius});createPolygonOptions=(e,t)=>({paths:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity,editable:!0});createPolylineOptions=(e,t)=>({path:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,editable:!0});createMap=e=>new google.maps.Map(e,this.createMapOptions());createMarker=async e=>{var t=(await google.maps.importLibrary("marker"))["AdvancedMarkerElement"];this.marker=new t({position:{lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)},map:this.map,gmpDraggable:!0}),google.maps.event.addListener(this.marker,"dragend",()=>{var e,t=this.marker.position;t&&(e="function"==typeof t.lat?t.lat():t.lat,t="function"==typeof t.lng?t.lng():t.lng,this.setLatLngFields(e,t,0))}),google.maps.event.addListener(this.map,"click",e=>{this.marker.position=e.latLng,this.setLatLngFields(e.latLng.lat(),e.latLng.lng(),0)})};createArea=e=>{let t=[];e.configurationMap&&e.configurationMap.forEach(e=>{t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)})}),0===t.length&&t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)}),this.shape=new google.maps.Polygon(this.createPolygonOptions(t,this.extConf)),this.shape.setMap(this.map);const a=this.shape.getPath();["set_at","insert_at"].forEach(e=>{google.maps.event.addListener(a,e,()=>this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.shape,"rightclick",e=>{void 0!==e.vertex&&(a.removeAt(e.vertex),this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.map,"click",e=>a.push(e.latLng)),google.maps.event.addListener(this.map,"dragend",()=>{var e=this.map.getCenter();this.setLatLngFields(e.lat(),e.lng(),0)})};createRoute=e=>{let t=[];e.configurationMap&&e.configurationMap.forEach(e=>{t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)})}),0===t.length&&t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)}),this.shape=new google.maps.Polyline(this.createPolylineOptions(t,this.extConf)),this.shape.setMap(this.map);const a=this.shape.getPath();["set_at","insert_at"].forEach(e=>{google.maps.event.addListener(a,e,()=>this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.shape,"rightclick",e=>{void 0!==e.vertex&&(a.removeAt(e.vertex),this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.map,"click",e=>a.push(e.latLng)),google.maps.event.addListener(this.map,"dragend",()=>{var e=this.map.getCenter();this.setLatLngFields(e.lat(),e.lng(),0)})};createRadius=e=>{this.marker=new google.maps.Circle(this.createCircleOptions(this.map,e,this.extConf)),google.maps.event.addListener(this.marker,"center_changed",()=>{var e=this.marker.getCenter();this.setLatLngFields(e.lat(),e.lng(),this.marker.getRadius())}),google.maps.event.addListener(this.marker,"radius_changed",()=>{var e=this.marker.getCenter();this.setLatLngFields(e.lat(),e.lng(),this.marker.getRadius())}),google.maps.event.addListener(this.map,"click",e=>{this.marker.setCenter(e.latLng),this.setLatLngFields(e.latLng.lat(),e.latLng.lng(),this.marker.getRadius())}),this.setLatLngFields(parseFloat(e.latitude),parseFloat(e.longitude),e.radius)};setLatLngFields=(e,t,a,s)=>{this.setFieldValue("latitude",Number(e).toFixed(6)),this.setFieldValue("longitude",Number(t).toFixed(6)),0{const a={};return e.getPath().getArray().forEach((e,t)=>{a[t]=e.toUrlValue()}),a};getFieldElement=e=>FormEngine.getFieldElement(this.buildFieldName(e),"_list");buildFieldName=e=>`data[tx_maps2_domain_model_poicollection][${this.record.uid}][${e}]`;setFieldValue=(e,t)=>{var e=this.getFieldElement(e);e&&e.length&&((e=e.get(0)).value=t,e.dispatchEvent(new Event("change")))};storeRouteAsJson=e=>{this.setFieldValue("configuration_map",JSON.stringify(this.getUriForRoute(e)))};findAddress=async()=>{var e=(await google.maps.importLibrary("places"))["PlaceAutocompleteElement"],e=new e;this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(e),e.addEventListener("gmp-select",async e=>{e=e.placePrediction;if(e){e=e.toPlace();if(await e.fetchFields({fields:["displayName","formattedAddress","location"]}),e&&e.location){var t,a=e.location,s="function"==typeof a.lat?a.lat():a.lat,i="function"==typeof a.lng?a.lng():a.lng,o=e.formattedAddress;switch(this.record.collectionType){case"Point":this.marker.position=a,this.setLatLngFields(s,i,0,o);break;case"Area":case"Route":this.shape&&"function"==typeof this.shape.getPath&&((t=this.shape.getPath()).clear(),t.push(a),this.storeRouteAsJson(this.shape)),this.setLatLngFields(s,i,0,o);break;case"Radius":this.marker.setCenter(a),this.setLatLngFields(s,i,this.marker.getRadius(),o)}this.map.setCenter(a)}}})}}export default new GoogleMapsModule; +var u=Object.defineProperty;var m=(r,e,t)=>e in r?u(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var i=(r,e,t)=>m(r,typeof e!="symbol"?e+"":e,t);import{ExtConf as f,PoiCollection as k}from"@jweiland/maps2/Classes.js";import L from"@typo3/backend/form-engine.js";import c from"@typo3/backend/notification.js";class F{constructor(){i(this,"selector","#maps2ConfigurationMap");i(this,"record",[]);i(this,"extConf",[]);i(this,"marker",{});i(this,"shape",{});i(this,"map",{});i(this,"load",e=>(window._GoogleMapsModule=this,window._GoogleMapsModule.initMaps=this.initMaps,new Promise(t=>{this.resolve=t;const a=document.createElement("script");a.src=`https://maps.googleapis.com/maps/api/js?key=${e.googleMapsJavaScriptApiKey}&libraries=marker,places&callback=_GoogleMapsModule.initMaps&loading=async`,a.async=!0,a.defer=!0,document.body.append(a)})));i(this,"initMaps",()=>{this.resolve&&this.resolve()});i(this,"initialize",async(e,t,a)=>{this.record=t,this.extConf=a;const{Map:s}=await google.maps.importLibrary("maps");switch(this.map=new s(e,this.createMapOptions()),a.googleMapsJavaScriptApiKey===""&&c.warning("Missing JS API Key","You have forgotten to set Google Maps JavaScript ApiKey in Extension Settings.",15),a.googleMapsGeocodeApiKey===""&&c.warning("Missing GeoCode API Key","You have forgotten to set Google Maps Geocode ApiKey in Extension Settings.",15),t.collectionType){case"Point":this.createMarker(t);break;case"Area":this.createArea(t);break;case"Route":this.createRoute(t);break;case"Radius":this.createRadius(t);break}this.findAddress(),t.latitude&&t.longitude?this.map.setCenter({lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)}):this.map.setCenter({lat:parseFloat(a.defaultLatitude),lng:parseFloat(a.defaultLongitude)});const l=document.querySelector("ul.t3js-tabs li:nth-of-type(2) button[data-bs-toggle='tab']");l&&l.addEventListener("shown.bs.tab",()=>{google.maps.event.trigger(this.map,"resize"),t.latitude&&t.longitude?this.map.setCenter({lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)}):this.map.setCenter({lat:parseFloat(a.defaultLatitude),lng:parseFloat(a.defaultLongitude)})})});i(this,"createMapOptions",()=>({zoom:14,mapTypeId:google.maps.MapTypeId.ROADMAP,mapId:this.extConf.googleMapsMapId}));i(this,"createCircleOptions",(e,t,a)=>({map:e,center:{lat:parseFloat(t.latitude),lng:parseFloat(t.longitude)},strokeColor:a.strokeColor,strokeOpacity:a.strokeOpacity,strokeWeight:a.strokeWeight,fillColor:a.fillColor,fillOpacity:a.fillOpacity,editable:!0,radius:t.radius===0?a.defaultRadius:t.radius}));i(this,"createPolygonOptions",(e,t)=>({paths:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity,editable:!0}));i(this,"createPolylineOptions",(e,t)=>({path:e,strokeColor:t.strokeColor,strokeOpacity:t.strokeOpacity,strokeWeight:t.strokeWeight,editable:!0}));i(this,"createMap",e=>new google.maps.Map(e,this.createMapOptions()));i(this,"createMarker",async e=>{const{AdvancedMarkerElement:t}=await google.maps.importLibrary("marker");this.marker=new t({position:{lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)},map:this.map,gmpDraggable:!0}),google.maps.event.addListener(this.marker,"dragend",()=>{const a=this.marker.position;if(a){const s=typeof a.lat=="function"?a.lat():a.lat,l=typeof a.lng=="function"?a.lng():a.lng;this.setLatLngFields(s,l,0)}}),google.maps.event.addListener(this.map,"click",a=>{this.marker.position=a.latLng,this.setLatLngFields(a.latLng.lat(),a.latLng.lng(),0)})});i(this,"createArea",e=>{let t=[];e.configurationMap&&e.configurationMap.forEach(s=>{t.push({lat:parseFloat(s.latitude),lng:parseFloat(s.longitude)})}),t.length===0&&t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)}),this.shape=new google.maps.Polygon(this.createPolygonOptions(t,this.extConf)),this.shape.setMap(this.map);const a=this.shape.getPath();["set_at","insert_at"].forEach(s=>{google.maps.event.addListener(a,s,()=>this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.shape,"rightclick",s=>{s.vertex!==void 0&&(a.removeAt(s.vertex),this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.map,"click",s=>a.push(s.latLng)),google.maps.event.addListener(this.map,"dragend",()=>{const s=this.map.getCenter();this.setLatLngFields(s.lat(),s.lng(),0)})});i(this,"createRoute",e=>{let t=[];e.configurationMap&&e.configurationMap.forEach(s=>{t.push({lat:parseFloat(s.latitude),lng:parseFloat(s.longitude)})}),t.length===0&&t.push({lat:parseFloat(e.latitude),lng:parseFloat(e.longitude)}),this.shape=new google.maps.Polyline(this.createPolylineOptions(t,this.extConf)),this.shape.setMap(this.map);const a=this.shape.getPath();["set_at","insert_at"].forEach(s=>{google.maps.event.addListener(a,s,()=>this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.shape,"rightclick",s=>{s.vertex!==void 0&&(a.removeAt(s.vertex),this.storeRouteAsJson(this.shape))}),google.maps.event.addListener(this.map,"click",s=>a.push(s.latLng)),google.maps.event.addListener(this.map,"dragend",()=>{const s=this.map.getCenter();this.setLatLngFields(s.lat(),s.lng(),0)})});i(this,"createRadius",e=>{this.marker=new google.maps.Circle(this.createCircleOptions(this.map,e,this.extConf)),google.maps.event.addListener(this.marker,"center_changed",()=>{const t=this.marker.getCenter();this.setLatLngFields(t.lat(),t.lng(),this.marker.getRadius())}),google.maps.event.addListener(this.marker,"radius_changed",()=>{const t=this.marker.getCenter();this.setLatLngFields(t.lat(),t.lng(),this.marker.getRadius())}),google.maps.event.addListener(this.map,"click",t=>{this.marker.setCenter(t.latLng),this.setLatLngFields(t.latLng.lat(),t.latLng.lng(),this.marker.getRadius())}),this.setLatLngFields(parseFloat(e.latitude),parseFloat(e.longitude),e.radius)});i(this,"setLatLngFields",(e,t,a,s)=>{this.setFieldValue("latitude",Number(e).toFixed(6)),this.setFieldValue("longitude",Number(t).toFixed(6)),a>0&&this.setFieldValue("radius",Math.round(a)),s&&this.setFieldValue("address",s)});i(this,"getUriForRoute",e=>{const t={};return e.getPath().getArray().forEach((a,s)=>{t[s]=a.toUrlValue()}),t});i(this,"getFieldElement",e=>L.getFieldElement(this.buildFieldName(e),"_list"));i(this,"buildFieldName",e=>`data[tx_maps2_domain_model_poicollection][${this.record.uid}][${e}]`);i(this,"setFieldValue",(e,t)=>{const a=this.getFieldElement(e);if(a&&a.length){const s=a.get(0);s.value=t,s.dispatchEvent(new Event("change"))}});i(this,"storeRouteAsJson",e=>{this.setFieldValue("configuration_map",JSON.stringify(this.getUriForRoute(e)))});i(this,"findAddress",async()=>{const{Place:e,PlaceAutocompleteElement:t}=await google.maps.importLibrary("places"),a=new t;this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(a),a.addEventListener("gmp-select",async s=>{const l=s.placePrediction;if(!l)return;const n=l.toPlace();if(await n.fetchFields({fields:["displayName","formattedAddress","location"]}),!n||!n.location)return;const o=n.location,p=typeof o.lat=="function"?o.lat():o.lat,g=typeof o.lng=="function"?o.lng():o.lng,h=n.formattedAddress;switch(this.record.collectionType){case"Point":this.marker.position=o,this.setLatLngFields(p,g,0,h);break;case"Area":case"Route":if(this.shape&&typeof this.shape.getPath=="function"){const d=this.shape.getPath();d.clear(),d.push(o),this.storeRouteAsJson(this.shape)}this.setLatLngFields(p,g,0,h);break;case"Radius":this.marker.setCenter(o),this.setLatLngFields(p,g,this.marker.getRadius(),h);break}this.map.setCenter(o)})});const e=document.querySelector(this.selector);if(!e)return;const t=new k(JSON.parse(e.dataset.poiCollection)),a=new f(JSON.parse(e.dataset.extConf));this.load(a).then(()=>{this.initialize(e,t,a)})}}var v=new F;export{v as default}; //# sourceMappingURL=GoogleMapsModule.min.js.map diff --git a/Resources/Public/JavaScript/GoogleMapsModule.min.js.map b/Resources/Public/JavaScript/GoogleMapsModule.min.js.map index 47cd2a0e..92eec13d 100644 --- a/Resources/Public/JavaScript/GoogleMapsModule.min.js.map +++ b/Resources/Public/JavaScript/GoogleMapsModule.min.js.map @@ -1 +1,7 @@ -{"version":3,"sources":["GoogleMapsModule.js"],"names":["ExtConf","PoiCollection","FormEngine","Notification","GoogleMapsModule","selector","record","extConf","marker","shape","map","constructor","googleMaps","document","querySelector","this","poiCollection","JSON","parse","dataset","load","then","initialize","window","_GoogleMapsModule","initMaps","Promise","resolve","script","createElement","src","googleMapsJavaScriptApiKey","async","defer","body","append","element","Map","await","google","maps","importLibrary","createMapOptions","warning","googleMapsGeocodeApiKey","collectionType","createMarker","createArea","createRoute","createRadius","findAddress","latitude","longitude","setCenter","lat","parseFloat","lng","defaultLatitude","defaultLongitude","tabButton","addEventListener","event","trigger","zoom","mapTypeId","MapTypeId","ROADMAP","mapId","googleMapsMapId","createCircleOptions","center","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","editable","radius","defaultRadius","createPolygonOptions","paths","createPolylineOptions","path","createMap","AdvancedMarkerElement","position","gmpDraggable","addListener","setLatLngFields","latLng","let","coordinatesArray","configurationMap","forEach","coord","push","length","Polygon","setMap","getPath","eventName","storeRouteAsJson","undefined","vertex","removeAt","getCenter","Polyline","Circle","getRadius","rad","address","setFieldValue","Number","toFixed","Math","round","getUriForRoute","routeObject","route","getArray","index","toUrlValue","getFieldElement","buildFieldName","field","uid","value","$fieldElement","humanReadableField","get","dispatchEvent","Event","stringify","PlaceAutocompleteElement","pacInput","controls","ControlPosition","TOP_LEFT","placePrediction","place","toPlace","fetchFields","fields","location","formattedAddress","clear"],"mappings":"OAAAA,QAAAC,aAAA,KAAA,oCACAC,eAAA,uCACAC,iBAAA,uCAEAC,iBACAC,SAAA,yBACAC,OAAA,GACAC,QAAA,GACAC,OAAA,GACAC,MAAA,GACAC,IAAA,GAEAC,cACA,MAAAC,EAAAC,SAAAC,cAAAC,KAAAV,QAAA,EACA,GAAAO,EAAA,CAGA,MAAAI,EAAA,IAAAf,cAAAgB,KAAAC,MAAAN,EAAAO,QAAAH,aAAA,CAAA,EACAT,EAAA,IAAAP,QAAAiB,KAAAC,MAAAN,EAAAO,QAAAZ,OAAA,CAAA,EAEAQ,KAAAK,KAAAb,CAAA,EAAAc,KAAA,KACAN,KAAAO,WAAAV,EAAAI,EAAAT,CAAA,CACA,CAAA,CANA,CAOA,CAEAa,KAAA,IACAG,OAAAC,kBAAAT,KACAQ,OAAAC,kBAAAC,SAAAV,KAAAU,SAEA,IAAAC,QAAAC,IACAZ,KAAAY,QAAAA,EACAC,EAAAf,SAAAgB,cAAA,QAAA,EACAD,EAAAE,mDAAAvB,EAAAwB,uGACAH,EAAAI,MAAA,CAAA,EACAJ,EAAAK,MAAA,CAAA,EACApB,SAAAqB,KAAAC,OAAAP,CAAA,CACA,CAAA,GAGAH,SAAA,KACAV,KAAAY,SACAZ,KAAAY,QAAA,CAEA,EAEAL,WAAAU,MAAAI,EAAApB,EAAAT,KACAQ,KAAAT,OAAAU,EACAD,KAAAR,QAAAA,EAEA,IAAA8B,GAAAC,MAAAC,OAAAC,KAAAC,cAAA,MAAA,GAAAJ,OAWA,OAVAtB,KAAAL,IAAA,IAAA2B,EAAAD,EAAArB,KAAA2B,iBAAA,CAAA,EAEA,KAAAnC,EAAAwB,4BACA5B,aAAAwC,QAAA,qBAAA,iFAAA,EAAA,EAGA,KAAApC,EAAAqC,yBACAzC,aAAAwC,QAAA,0BAAA,8EAAA,EAAA,EAGA3B,EAAA6B,gBACA,IAAA,QACA9B,KAAA+B,aAAA9B,CAAA,EACA,MACA,IAAA,OACAD,KAAAgC,WAAA/B,CAAA,EACA,MACA,IAAA,QACAD,KAAAiC,YAAAhC,CAAA,EACA,MACA,IAAA,SACAD,KAAAkC,aAAAjC,CAAA,CAEA,CAEAD,KAAAmC,YAAA,EAEAlC,EAAAmC,UAAAnC,EAAAoC,UACArC,KAAAL,IAAA2C,UAAA,CAAAC,IAAAC,WAAAvC,EAAAmC,QAAA,EAAAK,IAAAD,WAAAvC,EAAAoC,SAAA,CAAA,CAAA,EAEArC,KAAAL,IAAA2C,UAAA,CAAAC,IAAAC,WAAAhD,EAAAkD,eAAA,EAAAD,IAAAD,WAAAhD,EAAAmD,gBAAA,CAAA,CAAA,EAGAC,EAAA9C,SAAAC,cAAA,6DAAA,EACA6C,GACAA,EAAAC,iBAAA,eAAA,KACArB,OAAAC,KAAAqB,MAAAC,QAAA/C,KAAAL,IAAA,QAAA,EACAM,EAAAmC,UAAAnC,EAAAoC,UACArC,KAAAL,IAAA2C,UAAA,CAAAC,IAAAC,WAAAvC,EAAAmC,QAAA,EAAAK,IAAAD,WAAAvC,EAAAoC,SAAA,CAAA,CAAA,EAEArC,KAAAL,IAAA2C,UAAA,CAAAC,IAAAC,WAAAhD,EAAAkD,eAAA,EAAAD,IAAAD,WAAAhD,EAAAmD,gBAAA,CAAA,CAAA,CAEA,CAAA,CAEA,EAEAhB,iBAAA,KAAA,CACAqB,KAAA,GACAC,UAAAzB,OAAAC,KAAAyB,UAAAC,QACAC,MAAApD,KAAAR,QAAA6D,eACA,GAEAC,oBAAA,CAAA3D,EAAAJ,EAAAC,KACA,CACAG,IAAAA,EACA4D,OAAA,CAAAhB,IAAAC,WAAAjD,EAAA6C,QAAA,EAAAK,IAAAD,WAAAjD,EAAA8C,SAAA,CAAA,EACAmB,YAAAhE,EAAAgE,YACAC,cAAAjE,EAAAiE,cACAC,aAAAlE,EAAAkE,aACAC,UAAAnE,EAAAmE,UACAC,YAAApE,EAAAoE,YACAC,SAAA,CAAA,EACAC,OAAA,IAAAvE,EAAAuE,OAAAtE,EAAAuE,cAAAxE,EAAAuE,MACA,GAGAE,qBAAA,CAAAC,EAAAzE,KAAA,CACAyE,MAAAA,EACAT,YAAAhE,EAAAgE,YACAC,cAAAjE,EAAAiE,cACAC,aAAAlE,EAAAkE,aACAC,UAAAnE,EAAAmE,UACAC,YAAApE,EAAAoE,YACAC,SAAA,CAAA,CACA,GAEAK,sBAAA,CAAAD,EAAAzE,KAAA,CACA2E,KAAAF,EACAT,YAAAhE,EAAAgE,YACAC,cAAAjE,EAAAiE,cACAC,aAAAlE,EAAAkE,aACAG,SAAA,CAAA,CACA,GAEAO,UAAA,GAAA,IAAA5C,OAAAC,KAAAH,IAAAD,EAAArB,KAAA2B,iBAAA,CAAA,EAEAI,aAAAd,MAAA1B,IACA,IAAA8E,GAAA9C,MAAAC,OAAAC,KAAAC,cAAA,QAAA,GAAA2C,yBACArE,KAAAP,OAAA,IAAA4E,EAAA,CACAC,SAAA,CAAA/B,IAAAC,WAAAjD,EAAA6C,QAAA,EAAAK,IAAAD,WAAAjD,EAAA8C,SAAA,CAAA,EACA1C,IAAAK,KAAAL,IACA4E,aAAA,CAAA,CACA,CAAA,EAEA/C,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAP,OAAA,UAAA,KACA,IAEA8C,EAFA+B,EAAAtE,KAAAP,OAAA6E,SACAA,IACA/B,EAAA,YAAA,OAAA+B,EAAA/B,IAAA+B,EAAA/B,IAAA,EAAA+B,EAAA/B,IACAE,EAAA,YAAA,OAAA6B,EAAA7B,IAAA6B,EAAA7B,IAAA,EAAA6B,EAAA7B,IACAzC,KAAAyE,gBAAAlC,EAAAE,EAAA,CAAA,EAEA,CAAA,EAEAjB,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,QAAA,IACAK,KAAAP,OAAA6E,SAAAxB,EAAA4B,OACA1E,KAAAyE,gBAAA3B,EAAA4B,OAAAnC,IAAA,EAAAO,EAAA4B,OAAAjC,IAAA,EAAA,CAAA,CACA,CAAA,CACA,EAEAT,WAAA,IACA2C,IAAAC,EAAA,GACArF,EAAAsF,kBACAtF,EAAAsF,iBAAAC,QAAAC,IACAH,EAAAI,KAAA,CAAAzC,IAAAC,WAAAuC,EAAA3C,QAAA,EAAAK,IAAAD,WAAAuC,EAAA1C,SAAA,CAAA,CAAA,CACA,CAAA,EAEA,IAAAuC,EAAAK,QACAL,EAAAI,KAAA,CAAAzC,IAAAC,WAAAjD,EAAA6C,QAAA,EAAAK,IAAAD,WAAAjD,EAAA8C,SAAA,CAAA,CAAA,EAGArC,KAAAN,MAAA,IAAA8B,OAAAC,KAAAyD,QAAAlF,KAAAgE,qBAAAY,EAAA5E,KAAAR,OAAA,CAAA,EACAQ,KAAAN,MAAAyF,OAAAnF,KAAAL,GAAA,EACA,MAAAwE,EAAAnE,KAAAN,MAAA0F,QAAA,EAEA,CAAA,SAAA,aAAAN,QAAAO,IACA7D,OAAAC,KAAAqB,MAAA0B,YAAAL,EAAAkB,EAAA,IAAArF,KAAAsF,iBAAAtF,KAAAN,KAAA,CAAA,CACA,CAAA,EAEA8B,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAN,MAAA,aAAA,IACA6F,KAAAA,IAAAzC,EAAA0C,SACArB,EAAAsB,SAAA3C,EAAA0C,MAAA,EACAxF,KAAAsF,iBAAAtF,KAAAN,KAAA,EAEA,CAAA,EAEA8B,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,QAAA,GAAAwE,EAAAa,KAAAlC,EAAA4B,MAAA,CAAA,EACAlD,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,UAAA,KACA,IAAA4D,EAAAvD,KAAAL,IAAA+F,UAAA,EACA1F,KAAAyE,gBAAAlB,EAAAhB,IAAA,EAAAgB,EAAAd,IAAA,EAAA,CAAA,CACA,CAAA,CACA,EAEAR,YAAA,IACA0C,IAAAC,EAAA,GACArF,EAAAsF,kBACAtF,EAAAsF,iBAAAC,QAAAC,IACAH,EAAAI,KAAA,CAAAzC,IAAAC,WAAAuC,EAAA3C,QAAA,EAAAK,IAAAD,WAAAuC,EAAA1C,SAAA,CAAA,CAAA,CACA,CAAA,EAEA,IAAAuC,EAAAK,QACAL,EAAAI,KAAA,CAAAzC,IAAAC,WAAAjD,EAAA6C,QAAA,EAAAK,IAAAD,WAAAjD,EAAA8C,SAAA,CAAA,CAAA,EAGArC,KAAAN,MAAA,IAAA8B,OAAAC,KAAAkE,SAAA3F,KAAAkE,sBAAAU,EAAA5E,KAAAR,OAAA,CAAA,EACAQ,KAAAN,MAAAyF,OAAAnF,KAAAL,GAAA,EACA,MAAAwE,EAAAnE,KAAAN,MAAA0F,QAAA,EAEA,CAAA,SAAA,aAAAN,QAAAO,IACA7D,OAAAC,KAAAqB,MAAA0B,YAAAL,EAAAkB,EAAA,IAAArF,KAAAsF,iBAAAtF,KAAAN,KAAA,CAAA,CACA,CAAA,EAEA8B,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAN,MAAA,aAAA,IACA6F,KAAAA,IAAAzC,EAAA0C,SACArB,EAAAsB,SAAA3C,EAAA0C,MAAA,EACAxF,KAAAsF,iBAAAtF,KAAAN,KAAA,EAEA,CAAA,EAEA8B,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,QAAA,GAAAwE,EAAAa,KAAAlC,EAAA4B,MAAA,CAAA,EACAlD,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,UAAA,KACA,IAAA4D,EAAAvD,KAAAL,IAAA+F,UAAA,EACA1F,KAAAyE,gBAAAlB,EAAAhB,IAAA,EAAAgB,EAAAd,IAAA,EAAA,CAAA,CACA,CAAA,CACA,EAEAP,aAAA,IACAlC,KAAAP,OAAA,IAAA+B,OAAAC,KAAAmE,OAAA5F,KAAAsD,oBAAAtD,KAAAL,IAAAJ,EAAAS,KAAAR,OAAA,CAAA,EAEAgC,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAP,OAAA,iBAAA,KACA,IAAA8D,EAAAvD,KAAAP,OAAAiG,UAAA,EACA1F,KAAAyE,gBAAAlB,EAAAhB,IAAA,EAAAgB,EAAAd,IAAA,EAAAzC,KAAAP,OAAAoG,UAAA,CAAA,CACA,CAAA,EAEArE,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAP,OAAA,iBAAA,KACA,IAAA8D,EAAAvD,KAAAP,OAAAiG,UAAA,EACA1F,KAAAyE,gBAAAlB,EAAAhB,IAAA,EAAAgB,EAAAd,IAAA,EAAAzC,KAAAP,OAAAoG,UAAA,CAAA,CACA,CAAA,EAEArE,OAAAC,KAAAqB,MAAA0B,YAAAxE,KAAAL,IAAA,QAAA,IACAK,KAAAP,OAAA6C,UAAAQ,EAAA4B,MAAA,EACA1E,KAAAyE,gBAAA3B,EAAA4B,OAAAnC,IAAA,EAAAO,EAAA4B,OAAAjC,IAAA,EAAAzC,KAAAP,OAAAoG,UAAA,CAAA,CACA,CAAA,EAEA7F,KAAAyE,gBAAAjC,WAAAjD,EAAA6C,QAAA,EAAAI,WAAAjD,EAAA8C,SAAA,EAAA9C,EAAAuE,MAAA,CACA,EAEAW,gBAAA,CAAAlC,EAAAE,EAAAqD,EAAAC,KACA/F,KAAAgG,cAAA,WAAAC,OAAA1D,CAAA,EAAA2D,QAAA,CAAA,CAAA,EACAlG,KAAAgG,cAAA,YAAAC,OAAAxD,CAAA,EAAAyD,QAAA,CAAA,CAAA,EACA,EAAAJ,GACA9F,KAAAgG,cAAA,SAAAG,KAAAC,MAAAN,CAAA,CAAA,EAEAC,GACA/F,KAAAgG,cAAA,UAAAD,CAAA,CAEA,EAEAM,eAAA,IACA,MAAAC,EAAA,GAIA,OAHAC,EAAAnB,QAAA,EAAAoB,SAAA,EAAA1B,QAAA,CAAAJ,EAAA+B,KACAH,EAAAG,GAAA/B,EAAAgC,WAAA,CACA,CAAA,EACAJ,CACA,EAEAK,gBAAA,GAAAxH,WAAAwH,gBAAA3G,KAAA4G,eAAAC,CAAA,EAAA,OAAA,EAEAD,eAAA,gDAAA5G,KAAAT,OAAAuH,QAAAD,KAEAb,cAAA,CAAAa,EAAAE,KACA,IAAAC,EAAAhH,KAAA2G,gBAAAE,CAAA,EACAG,GAAAA,EAAA/B,UACAgC,EAAAD,EAAAE,IAAA,CAAA,GACAH,MAAAA,EACAE,EAAAE,cAAA,IAAAC,MAAA,QAAA,CAAA,EAEA,EAEA9B,iBAAA,IACAtF,KAAAgG,cAAA,oBAAA9F,KAAAmH,UAAArH,KAAAqG,eAAAE,CAAA,CAAA,CAAA,CACA,EAEApE,YAAAlB,UACA,IAAAqG,GAAA/F,MAAAC,OAAAC,KAAAC,cAAA,QAAA,GAAA4F,4BACAC,EAAA,IAAAD,EAEAtH,KAAAL,IAAA6H,SAAAhG,OAAAC,KAAAgG,gBAAAC,UAAA1C,KAAAuC,CAAA,EAEAA,EAAA1E,iBAAA,aAAA5B,MAAA6B,IACA6E,EAAA7E,EAAA6E,gBAEA,GAAAA,EAAA,CAIAC,EAAAD,EAAAE,QAAA,EAKA,GAJAtG,MAAAqG,EAAAE,YAAA,CACAC,OAAA,CAAA,cAAA,mBAAA,WACA,CAAA,EAEAH,GAAAA,EAAAI,SAAA,CAIA,IAaA7D,EAbA6D,EAAAJ,EAAAI,SACAzF,EAAA,YAAA,OAAAyF,EAAAzF,IAAAyF,EAAAzF,IAAA,EAAAyF,EAAAzF,IACAE,EAAA,YAAA,OAAAuF,EAAAvF,IAAAuF,EAAAvF,IAAA,EAAAuF,EAAAvF,IACAsD,EAAA6B,EAAAK,iBAEA,OAAAjI,KAAAT,OAAAuC,gBACA,IAAA,QACA9B,KAAAP,OAAA6E,SAAA0D,EACAhI,KAAAyE,gBAAAlC,EAAAE,EAAA,EAAAsD,CAAA,EACA,MACA,IAAA,OACA,IAAA,QACA/F,KAAAN,OAAA,YAAA,OAAAM,KAAAN,MAAA0F,WACAjB,EAAAnE,KAAAN,MAAA0F,QAAA,GACA8C,MAAA,EACA/D,EAAAa,KAAAgD,CAAA,EACAhI,KAAAsF,iBAAAtF,KAAAN,KAAA,GAEAM,KAAAyE,gBAAAlC,EAAAE,EAAA,EAAAsD,CAAA,EACA,MACA,IAAA,SACA/F,KAAAP,OAAA6C,UAAA0F,CAAA,EACAhI,KAAAyE,gBAAAlC,EAAAE,EAAAzC,KAAAP,OAAAoG,UAAA,EAAAE,CAAA,CAEA,CAEA/F,KAAAL,IAAA2C,UAAA0F,CAAA,CA5BA,CATA,CAsCA,CAAA,CACA,CACA,gBAEA,IAAA3I","file":"GoogleMapsModule.min.js","sourcesContent":["import { ExtConf, PoiCollection } from '@jweiland/maps2/Classes.js';\nimport FormEngine from '@typo3/backend/form-engine.js';\nimport Notification from '@typo3/backend/notification.js';\n\nclass GoogleMapsModule {\n selector = '#maps2ConfigurationMap';\n record = [];\n extConf = [];\n marker = {};\n shape = {};\n map = {};\n\n constructor() {\n const googleMaps = document.querySelector(this.selector);\n if (!googleMaps) {\n return;\n }\n const poiCollection = new PoiCollection(JSON.parse(googleMaps.dataset.poiCollection));\n const extConf = new ExtConf(JSON.parse(googleMaps.dataset.extConf));\n\n this.load(extConf).then(() => {\n this.initialize(googleMaps, poiCollection, extConf);\n });\n }\n\n load = (extConf) => {\n window._GoogleMapsModule = this;\n window._GoogleMapsModule.initMaps = this.initMaps;\n\n return new Promise(resolve => {\n this.resolve = resolve;\n const script = document.createElement(\"script\");\n script.src = `https://maps.googleapis.com/maps/api/js?key=${extConf.googleMapsJavaScriptApiKey}&libraries=marker,places&callback=_GoogleMapsModule.initMaps&loading=async`;\n script.async = true;\n script.defer = true;\n document.body.append(script);\n });\n }\n\n initMaps = () => {\n if (this.resolve) {\n this.resolve();\n }\n };\n\n initialize = async (element, poiCollection, extConf) => {\n this.record = poiCollection;\n this.extConf = extConf;\n\n const { Map } = await google.maps.importLibrary(\"maps\");\n this.map = new Map(element, this.createMapOptions());\n\n if (extConf.googleMapsJavaScriptApiKey === \"\") {\n Notification.warning('Missing JS API Key', 'You have forgotten to set Google Maps JavaScript ApiKey in Extension Settings.', 15);\n }\n\n if (extConf.googleMapsGeocodeApiKey === \"\") {\n Notification.warning('Missing GeoCode API Key', 'You have forgotten to set Google Maps Geocode ApiKey in Extension Settings.', 15);\n }\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n this.createMarker(poiCollection);\n break;\n case \"Area\":\n this.createArea(poiCollection);\n break;\n case \"Route\":\n this.createRoute(poiCollection);\n break;\n case \"Radius\":\n this.createRadius(poiCollection);\n break;\n }\n\n this.findAddress();\n\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.setCenter({ lat: parseFloat(poiCollection.latitude), lng: parseFloat(poiCollection.longitude) });\n } else {\n this.map.setCenter({ lat: parseFloat(extConf.defaultLatitude), lng: parseFloat(extConf.defaultLongitude) });\n }\n\n const tabButton = document.querySelector(\"ul.t3js-tabs li:nth-of-type(2) button[data-bs-toggle='tab']\");\n if (tabButton) {\n tabButton.addEventListener(\"shown.bs.tab\", () => {\n google.maps.event.trigger(this.map, \"resize\");\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.setCenter({ lat: parseFloat(poiCollection.latitude), lng: parseFloat(poiCollection.longitude) });\n } else {\n this.map.setCenter({ lat: parseFloat(extConf.defaultLatitude), lng: parseFloat(extConf.defaultLongitude) });\n }\n });\n }\n };\n\n createMapOptions = () => ({\n zoom: 14,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapId: this.extConf.googleMapsMapId\n });\n\n createCircleOptions = (map, record, extConf) => {\n return {\n map: map,\n center: { lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) },\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n editable: true,\n radius: record.radius === 0 ? extConf.defaultRadius : record.radius\n };\n };\n\n createPolygonOptions = (paths, extConf) => ({\n paths: paths,\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n editable: true\n });\n\n createPolylineOptions = (paths, extConf) => ({\n path: paths,\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n editable: true\n });\n\n createMap = (element) => new google.maps.Map(element, this.createMapOptions());\n\n createMarker = async (record) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n this.marker = new AdvancedMarkerElement({\n position: { lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) },\n map: this.map,\n gmpDraggable: true\n });\n\n google.maps.event.addListener(this.marker, 'dragend', () => {\n const position = this.marker.position;\n if (position) {\n const lat = typeof position.lat === 'function' ? position.lat() : position.lat;\n const lng = typeof position.lng === 'function' ? position.lng() : position.lng;\n this.setLatLngFields(lat, lng, 0);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => {\n this.marker.position = event.latLng;\n this.setLatLngFields(event.latLng.lat(), event.latLng.lng(), 0);\n });\n };\n\n createArea = (record) => {\n let coordinatesArray = [];\n if (record.configurationMap) {\n record.configurationMap.forEach(coord => {\n coordinatesArray.push({ lat: parseFloat(coord.latitude), lng: parseFloat(coord.longitude) });\n });\n }\n if (coordinatesArray.length === 0) {\n coordinatesArray.push({ lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) });\n }\n\n this.shape = new google.maps.Polygon(this.createPolygonOptions(coordinatesArray, this.extConf));\n this.shape.setMap(this.map);\n const path = this.shape.getPath();\n\n ['set_at', 'insert_at'].forEach(eventName => {\n google.maps.event.addListener(path, eventName, () => this.storeRouteAsJson(this.shape));\n });\n\n google.maps.event.addListener(this.shape, 'rightclick', (event) => {\n if (event.vertex !== undefined) {\n path.removeAt(event.vertex);\n this.storeRouteAsJson(this.shape);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => path.push(event.latLng));\n google.maps.event.addListener(this.map, 'dragend', () => {\n const center = this.map.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), 0);\n });\n };\n\n createRoute = (record) => {\n let coordinatesArray = [];\n if (record.configurationMap) {\n record.configurationMap.forEach(coord => {\n coordinatesArray.push({ lat: parseFloat(coord.latitude), lng: parseFloat(coord.longitude) });\n });\n }\n if (coordinatesArray.length === 0) {\n coordinatesArray.push({ lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) });\n }\n\n this.shape = new google.maps.Polyline(this.createPolylineOptions(coordinatesArray, this.extConf));\n this.shape.setMap(this.map);\n const path = this.shape.getPath();\n\n ['set_at', 'insert_at'].forEach(eventName => {\n google.maps.event.addListener(path, eventName, () => this.storeRouteAsJson(this.shape));\n });\n\n google.maps.event.addListener(this.shape, 'rightclick', (event) => {\n if (event.vertex !== undefined) {\n path.removeAt(event.vertex);\n this.storeRouteAsJson(this.shape);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => path.push(event.latLng));\n google.maps.event.addListener(this.map, 'dragend', () => {\n const center = this.map.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), 0);\n });\n };\n\n createRadius = (record) => {\n this.marker = new google.maps.Circle(this.createCircleOptions(this.map, record, this.extConf));\n\n google.maps.event.addListener(this.marker, 'center_changed', () => {\n const center = this.marker.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), this.marker.getRadius());\n });\n\n google.maps.event.addListener(this.marker, 'radius_changed', () => {\n const center = this.marker.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), this.marker.getRadius());\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => {\n this.marker.setCenter(event.latLng);\n this.setLatLngFields(event.latLng.lat(), event.latLng.lng(), this.marker.getRadius());\n });\n\n this.setLatLngFields(parseFloat(record.latitude), parseFloat(record.longitude), record.radius);\n };\n\n setLatLngFields = (lat, lng, rad, address) => {\n this.setFieldValue(\"latitude\", Number(lat).toFixed(6));\n this.setFieldValue(\"longitude\", Number(lng).toFixed(6));\n if (rad > 0) {\n this.setFieldValue(\"radius\", Math.round(rad));\n }\n if (address) {\n this.setFieldValue(\"address\", address);\n }\n };\n\n getUriForRoute = (route) => {\n const routeObject = {};\n route.getPath().getArray().forEach((latLng, index) => {\n routeObject[index] = latLng.toUrlValue();\n });\n return routeObject;\n };\n\n getFieldElement = (field) => FormEngine.getFieldElement(this.buildFieldName(field), '_list');\n\n buildFieldName = (field) => `data[tx_maps2_domain_model_poicollection][${this.record.uid}][${field}]`;\n\n setFieldValue = (field, value) => {\n const $fieldElement = this.getFieldElement(field);\n if ($fieldElement && $fieldElement.length) {\n const humanReadableField = $fieldElement.get(0);\n humanReadableField.value = value;\n humanReadableField.dispatchEvent(new Event('change'));\n }\n };\n\n storeRouteAsJson = (route) => {\n this.setFieldValue(\"configuration_map\", JSON.stringify(this.getUriForRoute(route)));\n };\n\n findAddress = async () => {\n const { Place, PlaceAutocompleteElement } = await google.maps.importLibrary(\"places\");\n const pacInput = new PlaceAutocompleteElement();\n\n this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(pacInput);\n\n pacInput.addEventListener(\"gmp-select\", async (event) => {\n const placePrediction = event.placePrediction;\n\n if (!placePrediction) {\n return;\n }\n\n const place = placePrediction.toPlace();\n await place.fetchFields({\n fields: [\"displayName\", \"formattedAddress\", \"location\"]\n });\n\n if (!place || !place.location) {\n return;\n }\n\n const location = place.location;\n const lat = typeof location.lat === 'function' ? location.lat() : location.lat;\n const lng = typeof location.lng === 'function' ? location.lng() : location.lng;\n const address = place.formattedAddress;\n\n switch (this.record.collectionType) {\n case 'Point':\n this.marker.position = location;\n this.setLatLngFields(lat, lng, 0, address);\n break;\n case 'Area':\n case 'Route':\n if (this.shape && typeof this.shape.getPath === 'function') {\n const path = this.shape.getPath();\n path.clear();\n path.push(location);\n this.storeRouteAsJson(this.shape);\n }\n this.setLatLngFields(lat, lng, 0, address);\n break;\n case 'Radius':\n this.marker.setCenter(location);\n this.setLatLngFields(lat, lng, this.marker.getRadius(), address);\n break;\n }\n\n this.map.setCenter(location);\n });\n };\n}\n\nexport default new GoogleMapsModule();\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/JavaScript/GoogleMapsModule.js"], + "sourcesContent": ["import { ExtConf, PoiCollection } from '@jweiland/maps2/Classes.js';\nimport FormEngine from '@typo3/backend/form-engine.js';\nimport Notification from '@typo3/backend/notification.js';\n\nclass GoogleMapsModule {\n selector = '#maps2ConfigurationMap';\n record = [];\n extConf = [];\n marker = {};\n shape = {};\n map = {};\n\n constructor() {\n const googleMaps = document.querySelector(this.selector);\n if (!googleMaps) {\n return;\n }\n const poiCollection = new PoiCollection(JSON.parse(googleMaps.dataset.poiCollection));\n const extConf = new ExtConf(JSON.parse(googleMaps.dataset.extConf));\n\n this.load(extConf).then(() => {\n this.initialize(googleMaps, poiCollection, extConf);\n });\n }\n\n load = (extConf) => {\n window._GoogleMapsModule = this;\n window._GoogleMapsModule.initMaps = this.initMaps;\n\n return new Promise(resolve => {\n this.resolve = resolve;\n const script = document.createElement(\"script\");\n script.src = `https://maps.googleapis.com/maps/api/js?key=${extConf.googleMapsJavaScriptApiKey}&libraries=marker,places&callback=_GoogleMapsModule.initMaps&loading=async`;\n script.async = true;\n script.defer = true;\n document.body.append(script);\n });\n }\n\n initMaps = () => {\n if (this.resolve) {\n this.resolve();\n }\n };\n\n initialize = async (element, poiCollection, extConf) => {\n this.record = poiCollection;\n this.extConf = extConf;\n\n const { Map } = await google.maps.importLibrary(\"maps\");\n this.map = new Map(element, this.createMapOptions());\n\n if (extConf.googleMapsJavaScriptApiKey === \"\") {\n Notification.warning('Missing JS API Key', 'You have forgotten to set Google Maps JavaScript ApiKey in Extension Settings.', 15);\n }\n\n if (extConf.googleMapsGeocodeApiKey === \"\") {\n Notification.warning('Missing GeoCode API Key', 'You have forgotten to set Google Maps Geocode ApiKey in Extension Settings.', 15);\n }\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n this.createMarker(poiCollection);\n break;\n case \"Area\":\n this.createArea(poiCollection);\n break;\n case \"Route\":\n this.createRoute(poiCollection);\n break;\n case \"Radius\":\n this.createRadius(poiCollection);\n break;\n }\n\n this.findAddress();\n\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.setCenter({ lat: parseFloat(poiCollection.latitude), lng: parseFloat(poiCollection.longitude) });\n } else {\n this.map.setCenter({ lat: parseFloat(extConf.defaultLatitude), lng: parseFloat(extConf.defaultLongitude) });\n }\n\n const tabButton = document.querySelector(\"ul.t3js-tabs li:nth-of-type(2) button[data-bs-toggle='tab']\");\n if (tabButton) {\n tabButton.addEventListener(\"shown.bs.tab\", () => {\n google.maps.event.trigger(this.map, \"resize\");\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.setCenter({ lat: parseFloat(poiCollection.latitude), lng: parseFloat(poiCollection.longitude) });\n } else {\n this.map.setCenter({ lat: parseFloat(extConf.defaultLatitude), lng: parseFloat(extConf.defaultLongitude) });\n }\n });\n }\n };\n\n createMapOptions = () => ({\n zoom: 14,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n mapId: this.extConf.googleMapsMapId\n });\n\n createCircleOptions = (map, record, extConf) => {\n return {\n map: map,\n center: { lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) },\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n editable: true,\n radius: record.radius === 0 ? extConf.defaultRadius : record.radius\n };\n };\n\n createPolygonOptions = (paths, extConf) => ({\n paths: paths,\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n editable: true\n });\n\n createPolylineOptions = (paths, extConf) => ({\n path: paths,\n strokeColor: extConf.strokeColor,\n strokeOpacity: extConf.strokeOpacity,\n strokeWeight: extConf.strokeWeight,\n editable: true\n });\n\n createMap = (element) => new google.maps.Map(element, this.createMapOptions());\n\n createMarker = async (record) => {\n const { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\n this.marker = new AdvancedMarkerElement({\n position: { lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) },\n map: this.map,\n gmpDraggable: true\n });\n\n google.maps.event.addListener(this.marker, 'dragend', () => {\n const position = this.marker.position;\n if (position) {\n const lat = typeof position.lat === 'function' ? position.lat() : position.lat;\n const lng = typeof position.lng === 'function' ? position.lng() : position.lng;\n this.setLatLngFields(lat, lng, 0);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => {\n this.marker.position = event.latLng;\n this.setLatLngFields(event.latLng.lat(), event.latLng.lng(), 0);\n });\n };\n\n createArea = (record) => {\n let coordinatesArray = [];\n if (record.configurationMap) {\n record.configurationMap.forEach(coord => {\n coordinatesArray.push({ lat: parseFloat(coord.latitude), lng: parseFloat(coord.longitude) });\n });\n }\n if (coordinatesArray.length === 0) {\n coordinatesArray.push({ lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) });\n }\n\n this.shape = new google.maps.Polygon(this.createPolygonOptions(coordinatesArray, this.extConf));\n this.shape.setMap(this.map);\n const path = this.shape.getPath();\n\n ['set_at', 'insert_at'].forEach(eventName => {\n google.maps.event.addListener(path, eventName, () => this.storeRouteAsJson(this.shape));\n });\n\n google.maps.event.addListener(this.shape, 'rightclick', (event) => {\n if (event.vertex !== undefined) {\n path.removeAt(event.vertex);\n this.storeRouteAsJson(this.shape);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => path.push(event.latLng));\n google.maps.event.addListener(this.map, 'dragend', () => {\n const center = this.map.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), 0);\n });\n };\n\n createRoute = (record) => {\n let coordinatesArray = [];\n if (record.configurationMap) {\n record.configurationMap.forEach(coord => {\n coordinatesArray.push({ lat: parseFloat(coord.latitude), lng: parseFloat(coord.longitude) });\n });\n }\n if (coordinatesArray.length === 0) {\n coordinatesArray.push({ lat: parseFloat(record.latitude), lng: parseFloat(record.longitude) });\n }\n\n this.shape = new google.maps.Polyline(this.createPolylineOptions(coordinatesArray, this.extConf));\n this.shape.setMap(this.map);\n const path = this.shape.getPath();\n\n ['set_at', 'insert_at'].forEach(eventName => {\n google.maps.event.addListener(path, eventName, () => this.storeRouteAsJson(this.shape));\n });\n\n google.maps.event.addListener(this.shape, 'rightclick', (event) => {\n if (event.vertex !== undefined) {\n path.removeAt(event.vertex);\n this.storeRouteAsJson(this.shape);\n }\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => path.push(event.latLng));\n google.maps.event.addListener(this.map, 'dragend', () => {\n const center = this.map.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), 0);\n });\n };\n\n createRadius = (record) => {\n this.marker = new google.maps.Circle(this.createCircleOptions(this.map, record, this.extConf));\n\n google.maps.event.addListener(this.marker, 'center_changed', () => {\n const center = this.marker.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), this.marker.getRadius());\n });\n\n google.maps.event.addListener(this.marker, 'radius_changed', () => {\n const center = this.marker.getCenter();\n this.setLatLngFields(center.lat(), center.lng(), this.marker.getRadius());\n });\n\n google.maps.event.addListener(this.map, 'click', (event) => {\n this.marker.setCenter(event.latLng);\n this.setLatLngFields(event.latLng.lat(), event.latLng.lng(), this.marker.getRadius());\n });\n\n this.setLatLngFields(parseFloat(record.latitude), parseFloat(record.longitude), record.radius);\n };\n\n setLatLngFields = (lat, lng, rad, address) => {\n this.setFieldValue(\"latitude\", Number(lat).toFixed(6));\n this.setFieldValue(\"longitude\", Number(lng).toFixed(6));\n if (rad > 0) {\n this.setFieldValue(\"radius\", Math.round(rad));\n }\n if (address) {\n this.setFieldValue(\"address\", address);\n }\n };\n\n getUriForRoute = (route) => {\n const routeObject = {};\n route.getPath().getArray().forEach((latLng, index) => {\n routeObject[index] = latLng.toUrlValue();\n });\n return routeObject;\n };\n\n getFieldElement = (field) => FormEngine.getFieldElement(this.buildFieldName(field), '_list');\n\n buildFieldName = (field) => `data[tx_maps2_domain_model_poicollection][${this.record.uid}][${field}]`;\n\n setFieldValue = (field, value) => {\n const $fieldElement = this.getFieldElement(field);\n if ($fieldElement && $fieldElement.length) {\n const humanReadableField = $fieldElement.get(0);\n humanReadableField.value = value;\n humanReadableField.dispatchEvent(new Event('change'));\n }\n };\n\n storeRouteAsJson = (route) => {\n this.setFieldValue(\"configuration_map\", JSON.stringify(this.getUriForRoute(route)));\n };\n\n findAddress = async () => {\n const { Place, PlaceAutocompleteElement } = await google.maps.importLibrary(\"places\");\n const pacInput = new PlaceAutocompleteElement();\n\n this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(pacInput);\n\n pacInput.addEventListener(\"gmp-select\", async (event) => {\n const placePrediction = event.placePrediction;\n\n if (!placePrediction) {\n return;\n }\n\n const place = placePrediction.toPlace();\n await place.fetchFields({\n fields: [\"displayName\", \"formattedAddress\", \"location\"]\n });\n\n if (!place || !place.location) {\n return;\n }\n\n const location = place.location;\n const lat = typeof location.lat === 'function' ? location.lat() : location.lat;\n const lng = typeof location.lng === 'function' ? location.lng() : location.lng;\n const address = place.formattedAddress;\n\n switch (this.record.collectionType) {\n case 'Point':\n this.marker.position = location;\n this.setLatLngFields(lat, lng, 0, address);\n break;\n case 'Area':\n case 'Route':\n if (this.shape && typeof this.shape.getPath === 'function') {\n const path = this.shape.getPath();\n path.clear();\n path.push(location);\n this.storeRouteAsJson(this.shape);\n }\n this.setLatLngFields(lat, lng, 0, address);\n break;\n case 'Radius':\n this.marker.setCenter(location);\n this.setLatLngFields(lat, lng, this.marker.getRadius(), address);\n break;\n }\n\n this.map.setCenter(location);\n });\n };\n}\n\nexport default new GoogleMapsModule();\n"], + "mappings": "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", + "names": ["ExtConf", "PoiCollection", "FormEngine", "Notification", "GoogleMapsModule", "__publicField", "extConf", "resolve", "script", "element", "poiCollection", "Map", "tabButton", "map", "record", "paths", "AdvancedMarkerElement", "position", "lat", "lng", "event", "coordinatesArray", "coord", "path", "eventName", "center", "rad", "address", "route", "routeObject", "latLng", "index", "field", "value", "$fieldElement", "humanReadableField", "Place", "PlaceAutocompleteElement", "pacInput", "placePrediction", "place", "location", "googleMaps", "GoogleMapsModule_default"] +} diff --git a/Resources/Public/JavaScript/OpenStreetMap2.min.js b/Resources/Public/JavaScript/OpenStreetMap2.min.js index 94ccfd93..4c4c9bf2 100644 --- a/Resources/Public/JavaScript/OpenStreetMap2.min.js +++ b/Resources/Public/JavaScript/OpenStreetMap2.min.js @@ -1,7 +1,7 @@ -class OpenStreetMap2{element={};environment={};editable=!1;bounds={};allMarkers=[];categorizedMarkers={};poiCollections=[];map={};constructor(t,e){this.element=t,this.environment=e,this.editable=this.element.classList.contains("editMarker"),this.bounds=new L.LatLngBounds,this.preparePoiCollection(),this.setMapDimensions(),this.createMap(),this.setMarkersOnMap()}preparePoiCollection(){this.poiCollections=JSON.parse(this.element.getAttribute("data-pois")||"[]")}setMarkersOnMap(){this.isPOICollectionsEmpty()?this.createMarkerBasedOnDataAttributes():this.createMarkerBasedOnPOICollections()}isPOICollectionsEmpty(){return 0===this.poiCollections.length}createMarkerBasedOnDataAttributes(){var t=this.getAttributeAsFloat("data-latitude"),e=this.getAttributeAsFloat("data-longitude");isNaN(t)||isNaN(e)||this.createMarkerByLatLng(t,e)}getAttributeAsFloat(t){return parseFloat(this.element.getAttribute(t)||"")}createMarkerBasedOnPOICollections(){this.createPointByCollectionType(),1{t.categories.map(t=>String(t.uid)).filter(t=>this.getSettings().categories.includes(t)).forEach(e=>{i.hasOwnProperty(e)||(i[e]=t.categories.find(t=>String(t.uid)===e))})}),i}getCategoriesOfCheckboxesWithStatus(t,e){let i=[];return(e?Array.from(t.querySelectorAll("input:checked")):Array.from(t.querySelectorAll("input:not(:checked)"))).forEach(t=>{i.push(parseInt(t.value))}),i}getMarkersToChangeVisibilityFor(t,e,o){var r=[];if(0!==this.allMarkers.length){var s,n,a=this.getCategoriesOfCheckboxesWithStatus(e,o);for(let t=0;t${e[t].title}`));o.querySelectorAll("input").forEach(i=>{i.addEventListener("click",()=>{let e=i.checked;var t=i.value;this.getMarkersToChangeVisibilityFor(t,o,e).forEach(t=>{e?this.map.addLayer(t):this.map.removeLayer(t)})})}),this.element.insertAdjacentElement("afterend",o)}getCheckbox(t){var e=document.createElement("div");return e.classList.add("form-group"),e.innerHTML=` +var f=Object.defineProperty;var m=(a,t,e)=>t in a?f(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e;var c=(a,t,e)=>m(a,typeof t!="symbol"?t+"":t,e);class k{constructor(t,e){c(this,"element",{});c(this,"environment",{});c(this,"editable",!1);c(this,"bounds",{});c(this,"allMarkers",[]);c(this,"categorizedMarkers",{});c(this,"poiCollections",[]);c(this,"map",{});this.element=t,this.environment=e,this.editable=this.element.classList.contains("editMarker"),this.bounds=new L.LatLngBounds,this.preparePoiCollection(),this.setMapDimensions(),this.createMap(),this.setMarkersOnMap()}preparePoiCollection(){this.poiCollections=JSON.parse(this.element.getAttribute("data-pois")||"[]")}setMarkersOnMap(){this.isPOICollectionsEmpty()?this.createMarkerBasedOnDataAttributes():this.createMarkerBasedOnPOICollections()}isPOICollectionsEmpty(){return this.poiCollections.length===0}createMarkerBasedOnDataAttributes(){const t=this.getAttributeAsFloat("data-latitude"),e=this.getAttributeAsFloat("data-longitude");!isNaN(t)&&!isNaN(e)&&this.createMarkerByLatLng(t,e)}getAttributeAsFloat(t){return parseFloat(this.element.getAttribute(t)||"")}createMarkerBasedOnPOICollections(){this.createPointByCollectionType(),this.countObjectProperties(this.categorizedMarkers)>1&&this.showSwitchableCategories(),this.adjustMapZoom()}adjustMapZoom(){this.shouldFitBounds()?this.map.fitBounds(this.bounds):this.map.panTo([this.poiCollections[0].latitude,this.poiCollections[0].longitude])}shouldFitBounds(){return this.getSettings().forceZoom===!0||this.poiCollections===null?!1:this.poiCollections.length>1||this.poiCollections.length===1&&(this.poiCollections[0].collectionType==="Area"||this.poiCollections[0].collectionType==="Route")}setMapDimensions(){this.element.style.height=this.normalizeDimension(this.getSettings().mapHeight),this.element.style.width=this.normalizeDimension(this.getSettings().mapWidth)}normalizeDimension(t){let e=String(t);return this.canBeInterpretedAsNumber(e)&&(e+="px"),e}createMap(){this.map=L.map(this.element,{center:[this.getExtConf().defaultLatitude,this.getExtConf().defaultLongitude],zoom:this.getSettings().zoom?this.getSettings().zoom:12,editable:this.editable,scrollWheelZoom:this.getSettings().activateScrollWheel!=="0"}),L.tileLayer(this.getSettings().mapTile,{attribution:this.getSettings().mapTileAttribution,maxZoom:20}).addTo(this.map)}groupCategories(){const t={};return this.poiCollections.forEach(e=>{e.categories.map(i=>String(i.uid)).filter(i=>this.getSettings().categories.includes(i)).forEach(i=>{t.hasOwnProperty(i)||(t[i]=e.categories.find(s=>String(s.uid)===i))})}),t}getCategoriesOfCheckboxesWithStatus(t,e){let r=[];return Array.from(e?t.querySelectorAll("input:checked"):t.querySelectorAll("input:not(:checked)")).forEach(s=>{r.push(parseInt(s.value))}),r}getMarkersToChangeVisibilityFor(t,e,r){let i=[];if(this.allMarkers.length===0)return i;let s=null,o=null,n=this.getCategoriesOfCheckboxesWithStatus(e,r);for(let l=0;l${t[r].title}`));e.querySelectorAll("input").forEach(r=>{r.addEventListener("click",()=>{let i=r.checked,s=r.value;this.getMarkersToChangeVisibilityFor(s,e,i).forEach(n=>{i?this.map.addLayer(n):this.map.removeLayer(n)})})}),this.element.insertAdjacentElement("afterend",e)}getCheckbox(t){let e=document.createElement("div");return e.classList.add("form-group"),e.innerHTML=`
-
`,e}countObjectProperties(t){let e=0;for(var i in t)t.hasOwnProperty(i)&&e++;return e}createPointByCollectionType(){let i,o=0;null!==this.poiCollections&&this.poiCollections.length&&this.poiCollections.forEach(e=>{switch(""===e.strokeColor&&(e.strokeColor=this.getExtConf().strokeColor),""===e.strokeOpacity&&(e.strokeOpacity=this.getExtConf().strokeOpacity),""===e.strokeWeight&&(e.strokeWeight=this.getExtConf().strokeWeight),""===e.fillColor&&(e.fillColor=this.getExtConf().fillColor),""===e.fillOpacity&&(e.fillOpacity=this.getExtConf().fillOpacity),i=null,e.collectionType){case"Point":i=this.createMarker(e);break;case"Area":i=this.createArea(e);break;case"Route":i=this.createRoute(e);break;case"Radius":i=this.createRadius(e)}this.allMarkers.push({marker:i,poiCollection:e});for(let t=o=0;t{let t=e.markerIcon;return t.startsWith("/")&&(t=t.substring(1)),this.environment.siteUrl+t})(),iconSize:[r,t],iconAnchor:[i,o]}),s.setIcon(r)),this.bounds.extend(s.getLatLng()),this.editable?this.addEditListeners(this.element,s,e):this.addInfoWindow(s,e),s}createArea(t){let e=[];t.pois.forEach(t=>{t=[t.latitude,t.longitude];this.bounds.extend(t),e.push(t)});var i=L.polygon(e,{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}).addTo(this.map);return this.addInfoWindow(i,t),i}createRoute(t){let e=[];t.pois.forEach(t=>{t=[t.latitude,t.longitude];this.bounds.extend(t),e.push(t)});var i=L.polyline(e,{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}).addTo(this.map);return this.addInfoWindow(i,t),i}createRadius(t){var e=L.circle([t.latitude,t.longitude],{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity,radius:t.radius}).addTo(this.map);return this.bounds.extend(e.getBounds()),this.addInfoWindow(e,t),e}addInfoWindow(e,t){e.addEventListener("click",()=>{fetch(this.environment.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/json","ext-maps2":"infoWindowContent"},body:JSON.stringify({poiCollection:t.uid})}).then(t=>t.json()).then(t=>{e.bindPopup(t.content).openPopup()}).catch(t=>console.error("Error:",t))})}addEditListeners(i,o,t){o.on("dragend",()=>{var t=o.getLatLng().lat.toFixed(6),e=o.getLatLng().lng.toFixed(6);i.previousElementSibling?.querySelector("input.latitude-"+this.getContentRecord().uid).setAttribute("value",t),i.previousElementSibling?.querySelector("input.longitude-"+this.getContentRecord().uid).setAttribute("value",e)}),this.map.on("click",t=>{o.setLatLng(t.latlng),i.previousElementSibling?.querySelector("input.latitude-"+this.getContentRecord().uid).setAttribute("value",t.latlng.lat.toFixed(6)),i.previousElementSibling?.querySelector("input.longitude-"+this.getContentRecord().uid).setAttribute("value",t.latlng.lng.toFixed(6))})}canBeInterpretedAsNumber(t){return"number"==typeof t||!isNaN(Number(t))}getContentRecord(){return this.environment.contentRecord}getExtConf(){return this.environment.extConf}getSettings(){return this.environment.settings}}let maps2OpenStreetMaps=[];document.querySelectorAll(".maps2").forEach(t=>{var e=void 0!==t.dataset.environment?t.dataset.environment:"{}",i=void 0!==t.dataset.override?t.dataset.override:"{}";const l=(...t)=>{let e={},i=!1,o=0;var r=t.length;for("[object Boolean]"===Object.prototype.toString.call(t[0])&&(i=t[0],o++);o`,e}countObjectProperties(t){let e=0;for(let r in t)t.hasOwnProperty(r)&&e++;return e}createPointByCollectionType(){let t,e=0;this.poiCollections!==null&&this.poiCollections.length&&this.poiCollections.forEach(r=>{switch(r.strokeColor===""&&(r.strokeColor=this.getExtConf().strokeColor),r.strokeOpacity===""&&(r.strokeOpacity=this.getExtConf().strokeOpacity),r.strokeWeight===""&&(r.strokeWeight=this.getExtConf().strokeWeight),r.fillColor===""&&(r.fillColor=this.getExtConf().fillColor),r.fillOpacity===""&&(r.fillOpacity=this.getExtConf().fillOpacity),t=null,r.collectionType){case"Point":t=this.createMarker(r);break;case"Area":t=this.createArea(r);break;case"Route":t=this.createRoute(r);break;case"Radius":t=this.createRadius(r);break}this.allMarkers.push({marker:t,poiCollection:r}),e=0;for(let i=0;i{let l=t.markerIcon;return l.startsWith("/")&&(l=l.substring(1)),this.environment.siteUrl+l})(),iconSize:[r,i],iconAnchor:[s,o]});e.setIcon(n)}return this.bounds.extend(e.getLatLng()),this.editable?this.addEditListeners(this.element,e,t):this.addInfoWindow(e,t),e}createArea(t){let e=[];t.pois.forEach(i=>{let s=[i.latitude,i.longitude];this.bounds.extend(s),e.push(s)});let r=L.polygon(e,{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}).addTo(this.map);return this.addInfoWindow(r,t),r}createRoute(t){let e=[];t.pois.forEach(i=>{let s=[i.latitude,i.longitude];this.bounds.extend(s),e.push(s)});let r=L.polyline(e,{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity}).addTo(this.map);return this.addInfoWindow(r,t),r}createRadius(t){let e=L.circle([t.latitude,t.longitude],{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity,radius:t.radius}).addTo(this.map);return this.bounds.extend(e.getBounds()),this.addInfoWindow(e,t),e}addInfoWindow(t,e){t.addEventListener("click",()=>{fetch(this.environment.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/json","ext-maps2":"infoWindowContent"},body:JSON.stringify({poiCollection:e.uid})}).then(r=>r.json()).then(r=>{t.bindPopup(r.content).openPopup()}).catch(r=>console.error("Error:",r))})}addEditListeners(t,e,r){e.on("dragend",()=>{let i=e.getLatLng().lat.toFixed(6),s=e.getLatLng().lng.toFixed(6);t.previousElementSibling?.querySelector(`input.latitude-${this.getContentRecord().uid}`).setAttribute("value",i),t.previousElementSibling?.querySelector(`input.longitude-${this.getContentRecord().uid}`).setAttribute("value",s)}),this.map.on("click",i=>{e.setLatLng(i.latlng),t.previousElementSibling?.querySelector(`input.latitude-${this.getContentRecord().uid}`).setAttribute("value",i.latlng.lat.toFixed(6)),t.previousElementSibling?.querySelector(`input.longitude-${this.getContentRecord().uid}`).setAttribute("value",i.latlng.lng.toFixed(6))})}canBeInterpretedAsNumber(t){return typeof t=="number"||!isNaN(Number(t))}getContentRecord(){return this.environment.contentRecord}getExtConf(){return this.environment.extConf}getSettings(){return this.environment.settings}}let p=[];document.querySelectorAll(".maps2").forEach(a=>{const t=typeof a.dataset.environment<"u"?a.dataset.environment:"{}",e=typeof a.dataset.override<"u"?a.dataset.override:"{}",r=(...i)=>{let s={},o=!1,n=0,l=i.length;Object.prototype.toString.call(i[0])==="[object Boolean]"&&(o=i[0],n++);const u=function(h){for(var d in h)Object.prototype.hasOwnProperty.call(h,d)&&(o&&Object.prototype.toString.call(h[d])==="[object Object]"?s[d]=r(!0,s[d],h[d]):s[d]=h[d])};for(;n 1) {\n this.showSwitchableCategories();\n }\n this.adjustMapZoom();\n }\n\n adjustMapZoom() {\n if (this.shouldFitBounds()) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.panTo([this.poiCollections[0].latitude, this.poiCollections[0].longitude]);\n }\n }\n\n /**\n * @returns {boolean}\n */\n shouldFitBounds() {\n if (this.getSettings().forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n setMapDimensions() {\n this.element.style.height = this.normalizeDimension(this.getSettings().mapHeight);\n this.element.style.width = this.normalizeDimension(this.getSettings().mapWidth);\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n createMap() {\n this.map = L.map(\n this.element, {\n center: [this.getExtConf().defaultLatitude, this.getExtConf().defaultLongitude],\n zoom: this.getSettings().zoom ? this.getSettings().zoom : 12,\n editable: this.editable,\n scrollWheelZoom: this.getSettings().activateScrollWheel !== \"0\"\n }\n );\n\n L.tileLayer(this.getSettings().mapTile, {\n attribution: this.getSettings().mapTileAttribution,\n maxZoom: 20\n }).addTo(this.map);\n }\n\n /**\n * @returns {{[p: string]: Category}}\n */\n groupCategories() {\n const groupedCategories = {};\n\n this.poiCollections.forEach((poiCollection) => {\n const categoryUids = poiCollection.categories.map((category) => String(category.uid));\n\n categoryUids\n .filter((categoryUid) => this.getSettings().categories.includes(categoryUid))\n .forEach((categoryUid) => {\n if (!groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = poiCollection.categories.find((category) => String(category.uid) === categoryUid);\n }\n });\n });\n\n return groupedCategories;\n }\n\n /**\n * @param {HTMLElement} form\n * @param {boolean} isChecked\n * @returns {number[]}\n */\n getCategoriesOfCheckboxesWithStatus(form, isChecked) {\n let categories = [];\n let checkboxes = isChecked\n ? Array.from(form.querySelectorAll(\"input:checked\"))\n : Array.from(form.querySelectorAll(\"input:not(:checked)\"));\n\n checkboxes.forEach((checkbox) => {\n categories.push(parseInt((checkbox).value));\n });\n\n return categories;\n }\n\n /**\n * @param {string} categoryUid\n * @param {HTMLElement} form\n * @param { boolean} isChecked\n * @returns {*[]}\n */\n getMarkersToChangeVisibilityFor(categoryUid, form, isChecked) {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n showSwitchableCategories() {\n let categories = this.groupCategories();\n let form = document.createElement(\"form\");\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + this.getContentRecord().uid);\n\n // Add checkbox for category\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentHTML(\n \"afterend\",\n `${categories[categoryUid].title}`\n );\n }\n }\n\n // Add listener for checkboxes\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (isChecked) {\n this.map.addLayer(marker);\n } else {\n this.map.removeLayer(marker);\n }\n });\n });\n });\n\n this.element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * @param {Category} category\n * @returns {HTMLElement}\n */\n getCheckbox(category) {\n let div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n div.innerHTML = `\n
\n \n
`;\n\n return div;\n }\n\n /**\n * @param {object} obj\n * @returns {number}\n */\n countObjectProperties(obj) {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n createPointByCollectionType() {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n this.poiCollections.forEach(poiCollection => {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = this.getExtConf().strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = this.getExtConf().strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = this.getExtConf().strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = this.getExtConf().fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = this.getExtConf().fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = this.createMarker(poiCollection);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection);\n break;\n }\n\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push(marker);\n }\n });\n }\n }\n\n /**\n * @param {number} latitude\n * @param {number} longitude\n */\n createMarkerByLatLng(latitude, longitude) {\n let marker = L.marker(\n [latitude, longitude]\n ).addTo(this.map);\n\n this.bounds.extend(marker.getLatLng());\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Marker}\n */\n createMarker(poiCollection) {\n let marker = L.marker(\n [poiCollection.latitude, poiCollection.longitude],\n {\n 'draggable': this.editable\n }\n ).addTo(this.map);\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const markerIconWidth = poiCollection.markerIconWidth || this.getExtConf().markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || this.getExtConf().markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || this.getExtConf().markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || this.getExtConf().markerIconAnchorPosY;\n\n let icon = L.icon({\n iconUrl: (() => {\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n return this.environment.siteUrl + markerIconPath;\n })(),\n iconSize: [markerIconWidth, markerIconHeight],\n iconAnchor: [markerIconAnchorPosX, markerIconAnchorPosY]\n });\n marker.setIcon(icon);\n }\n\n this.bounds.extend(marker.getLatLng());\n\n if (this.editable) {\n this.addEditListeners(this.element, marker, poiCollection);\n } else {\n this.addInfoWindow(marker, poiCollection);\n }\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Polygon}\n */\n createArea(poiCollection) {\n let latlngs = [];\n\n poiCollection.pois.forEach(poi => {\n let latLng = [poi.latitude, poi.longitude];\n this.bounds.extend(latLng);\n latlngs.push(latLng);\n });\n\n let marker = L.polygon(latlngs, {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n }).addTo(this.map);\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Polyline}\n */\n createRoute(poiCollection) {\n let latlngs = [];\n\n poiCollection.pois.forEach(poi => {\n let latLng = [poi.latitude, poi.longitude];\n this.bounds.extend(latLng);\n latlngs.push(latLng);\n });\n\n let marker = L.polyline(latlngs, {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n }).addTo(this.map);\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Circle}\n */\n createRadius(poiCollection) {\n let marker = L.circle([poiCollection.latitude, poiCollection.longitude], {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity,\n radius: poiCollection.radius\n }).addTo(this.map);\n\n this.bounds.extend(marker.getBounds());\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {PoiCollection} poiCollection\n */\n addInfoWindow(element, poiCollection) {\n element.addEventListener(\"click\", () => {\n fetch(this.environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n element.bindPopup(data.content).openPopup();\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * @param {HTMLElement} mapContainer\n * @param {L.Marker} marker\n * @param {PoiCollection} poiCollection\n */\n addEditListeners(mapContainer, marker, poiCollection) {\n marker.on('dragend', () => {\n let lat = marker.getLatLng().lat.toFixed(6);\n let lng = marker.getLatLng().lng.toFixed(6);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.latitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", lat);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.longitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", lng);\n });\n\n this.map.on('click', (event) => {\n marker.setLatLng(event.latlng);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.latitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", event.latlng.lat.toFixed(6));\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.longitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", event.latlng.lng.toFixed(6));\n });\n }\n\n /**\n * return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * return {ContentRecord}\n */\n getContentRecord() {\n return this.environment.contentRecord;\n }\n\n /**\n * return {ExtConf}\n */\n getExtConf() {\n return this.environment.extConf;\n }\n\n /**\n * return {Settings}\n */\n getSettings() {\n return this.environment.settings;\n }\n}\n\nlet maps2OpenStreetMaps = [];\n\ndocument.querySelectorAll(\".maps2\").forEach((element) => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n // Pass in the objects to merge as arguments.\n // For a deep extend, set the first argument to `true`.\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n // Check for deep merge\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n // Merge the object into the extended object\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n // If deep merge and property is an object, merge properties\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n // Loop through each object and conduct a merge\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2OpenStreetMaps.push(new OpenStreetMap2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n});\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/JavaScript/OpenStreetMap2.js"], + "sourcesContent": ["class OpenStreetMap2 {\n element = {};\n environment = {};\n editable = false;\n bounds = {};\n\n allMarkers = [];\n categorizedMarkers = {};\n poiCollections = [];\n map = {};\n\n constructor(element, environment) {\n this.element = element;\n this.environment = environment;\n this.editable = this.element.classList.contains(\"editMarker\");\n this.bounds = new L.LatLngBounds();\n\n this.preparePoiCollection();\n this.setMapDimensions();\n this.createMap();\n this.setMarkersOnMap();\n }\n\n preparePoiCollection() {\n this.poiCollections = JSON.parse(this.element.getAttribute(\"data-pois\") || '[]');\n }\n\n setMarkersOnMap() {\n if (this.isPOICollectionsEmpty()) {\n this.createMarkerBasedOnDataAttributes();\n } else {\n this.createMarkerBasedOnPOICollections();\n }\n }\n\n /**\n * @returns {boolean}\n */\n isPOICollectionsEmpty() {\n return this.poiCollections.length === 0;\n }\n\n createMarkerBasedOnDataAttributes() {\n const latitude = this.getAttributeAsFloat(\"data-latitude\");\n const longitude = this.getAttributeAsFloat(\"data-longitude\");\n\n if (!isNaN(latitude) && !isNaN(longitude)) {\n this.createMarkerByLatLng(latitude, longitude);\n }\n }\n\n /**\n * @param {string} attributeName\n * @returns {number}\n */\n getAttributeAsFloat(attributeName) {\n return parseFloat(this.element.getAttribute(attributeName) || \"\");\n }\n\n createMarkerBasedOnPOICollections() {\n this.createPointByCollectionType();\n if (this.countObjectProperties(this.categorizedMarkers) > 1) {\n this.showSwitchableCategories();\n }\n this.adjustMapZoom();\n }\n\n adjustMapZoom() {\n if (this.shouldFitBounds()) {\n this.map.fitBounds(this.bounds);\n } else {\n this.map.panTo([this.poiCollections[0].latitude, this.poiCollections[0].longitude]);\n }\n }\n\n /**\n * @returns {boolean}\n */\n shouldFitBounds() {\n if (this.getSettings().forceZoom === true) {\n return false;\n }\n\n if (this.poiCollections === null) {\n return false;\n }\n\n if (this.poiCollections.length > 1) {\n return true;\n }\n\n if (\n this.poiCollections.length === 1\n && (\n this.poiCollections[0].collectionType === \"Area\"\n || this.poiCollections[0].collectionType === \"Route\"\n )\n ) {\n return true;\n }\n\n return false;\n }\n\n setMapDimensions() {\n this.element.style.height = this.normalizeDimension(this.getSettings().mapHeight);\n this.element.style.width = this.normalizeDimension(this.getSettings().mapWidth);\n }\n\n /**\n * @param {string | number} dimension\n * @returns {string}\n */\n normalizeDimension(dimension) {\n let normalizedDimension = String(dimension);\n\n if (this.canBeInterpretedAsNumber(normalizedDimension)) {\n normalizedDimension += 'px';\n }\n\n return normalizedDimension;\n }\n\n createMap() {\n this.map = L.map(\n this.element, {\n center: [this.getExtConf().defaultLatitude, this.getExtConf().defaultLongitude],\n zoom: this.getSettings().zoom ? this.getSettings().zoom : 12,\n editable: this.editable,\n scrollWheelZoom: this.getSettings().activateScrollWheel !== \"0\"\n }\n );\n\n L.tileLayer(this.getSettings().mapTile, {\n attribution: this.getSettings().mapTileAttribution,\n maxZoom: 20\n }).addTo(this.map);\n }\n\n /**\n * @returns {{[p: string]: Category}}\n */\n groupCategories() {\n const groupedCategories = {};\n\n this.poiCollections.forEach((poiCollection) => {\n const categoryUids = poiCollection.categories.map((category) => String(category.uid));\n\n categoryUids\n .filter((categoryUid) => this.getSettings().categories.includes(categoryUid))\n .forEach((categoryUid) => {\n if (!groupedCategories.hasOwnProperty(categoryUid)) {\n groupedCategories[categoryUid] = poiCollection.categories.find((category) => String(category.uid) === categoryUid);\n }\n });\n });\n\n return groupedCategories;\n }\n\n /**\n * @param {HTMLElement} form\n * @param {boolean} isChecked\n * @returns {number[]}\n */\n getCategoriesOfCheckboxesWithStatus(form, isChecked) {\n let categories = [];\n let checkboxes = isChecked\n ? Array.from(form.querySelectorAll(\"input:checked\"))\n : Array.from(form.querySelectorAll(\"input:not(:checked)\"));\n\n checkboxes.forEach((checkbox) => {\n categories.push(parseInt((checkbox).value));\n });\n\n return categories;\n }\n\n /**\n * @param {string} categoryUid\n * @param {HTMLElement} form\n * @param { boolean} isChecked\n * @returns {*[]}\n */\n getMarkersToChangeVisibilityFor(categoryUid, form, isChecked) {\n let markers = [];\n if (this.allMarkers.length === 0) {\n return markers;\n }\n\n let marker = null;\n let allCategoriesOfMarker = null;\n let categoriesOfCheckboxesWithStatus = this.getCategoriesOfCheckboxesWithStatus(form, isChecked);\n for (let i = 0; i < this.allMarkers.length; i++) {\n marker = this.allMarkers[i];\n allCategoriesOfMarker = marker.poiCollection.categories;\n if (allCategoriesOfMarker.length === 0) {\n continue;\n }\n\n let markerCategoryHasCheckboxWithStatus;\n for (let j = 0; j < allCategoriesOfMarker.length; j++) {\n markerCategoryHasCheckboxWithStatus = false;\n for (let k = 0; k < categoriesOfCheckboxesWithStatus.length; k++) {\n if (allCategoriesOfMarker[j].uid === categoriesOfCheckboxesWithStatus[k]) {\n markerCategoryHasCheckboxWithStatus = true;\n }\n }\n if (markerCategoryHasCheckboxWithStatus === isChecked) {\n break;\n }\n }\n\n if (markerCategoryHasCheckboxWithStatus) {\n markers.push(marker.marker);\n }\n }\n\n return markers;\n }\n\n showSwitchableCategories() {\n let categories = this.groupCategories();\n let form = document.createElement(\"form\");\n form.classList.add(\"txMaps2Form\");\n form.setAttribute(\"id\", \"txMaps2Form-\" + this.getContentRecord().uid);\n\n // Add checkbox for category\n for (let categoryUid in categories) {\n if (categories.hasOwnProperty(categoryUid)) {\n form.appendChild(this.getCheckbox(categories[categoryUid]));\n form.querySelector(\"#checkCategory_\" + categoryUid)?.insertAdjacentHTML(\n \"afterend\",\n `${categories[categoryUid].title}`\n );\n }\n }\n\n // Add listener for checkboxes\n form.querySelectorAll(\"input\").forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () => {\n let isChecked = (checkbox).checked;\n let categoryUid = (checkbox).value;\n let markers = this.getMarkersToChangeVisibilityFor(categoryUid, form, isChecked);\n\n markers.forEach((marker) => {\n if (isChecked) {\n this.map.addLayer(marker);\n } else {\n this.map.removeLayer(marker);\n }\n });\n });\n });\n\n this.element.insertAdjacentElement(\"afterend\", form);\n }\n\n /**\n * @param {Category} category\n * @returns {HTMLElement}\n */\n getCheckbox(category) {\n let div = document.createElement(\"div\");\n div.classList.add(\"form-group\");\n div.innerHTML = `\n
\n \n
`;\n\n return div;\n }\n\n /**\n * @param {object} obj\n * @returns {number}\n */\n countObjectProperties(obj) {\n let count = 0;\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n count++;\n }\n }\n return count;\n }\n\n createPointByCollectionType() {\n let marker;\n let categoryUid = 0;\n\n if (this.poiCollections !== null && this.poiCollections.length) {\n this.poiCollections.forEach(poiCollection => {\n if (poiCollection.strokeColor === \"\") {\n poiCollection.strokeColor = this.getExtConf().strokeColor;\n }\n if (poiCollection.strokeOpacity === \"\") {\n poiCollection.strokeOpacity = this.getExtConf().strokeOpacity;\n }\n if (poiCollection.strokeWeight === \"\") {\n poiCollection.strokeWeight = this.getExtConf().strokeWeight;\n }\n if (poiCollection.fillColor === \"\") {\n poiCollection.fillColor = this.getExtConf().fillColor;\n }\n if (poiCollection.fillOpacity === \"\") {\n poiCollection.fillOpacity = this.getExtConf().fillOpacity;\n }\n\n marker = null;\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = this.createMarker(poiCollection);\n break;\n case \"Area\":\n marker = this.createArea(poiCollection);\n break;\n case \"Route\":\n marker = this.createRoute(poiCollection);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection);\n break;\n }\n\n this.allMarkers.push({\n marker: marker,\n poiCollection: poiCollection\n });\n\n categoryUid = 0;\n for (let c = 0; c < poiCollection.categories.length; c++) {\n categoryUid = poiCollection.categories[c].uid;\n if (!this.categorizedMarkers.hasOwnProperty(categoryUid)) {\n this.categorizedMarkers[categoryUid] = [];\n }\n this.categorizedMarkers[categoryUid].push(marker);\n }\n });\n }\n }\n\n /**\n * @param {number} latitude\n * @param {number} longitude\n */\n createMarkerByLatLng(latitude, longitude) {\n let marker = L.marker(\n [latitude, longitude]\n ).addTo(this.map);\n\n this.bounds.extend(marker.getLatLng());\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Marker}\n */\n createMarker(poiCollection) {\n let marker = L.marker(\n [poiCollection.latitude, poiCollection.longitude],\n {\n 'draggable': this.editable\n }\n ).addTo(this.map);\n\n if (poiCollection.hasOwnProperty(\"markerIcon\") && poiCollection.markerIcon !== \"\") {\n const markerIconWidth = poiCollection.markerIconWidth || this.getExtConf().markerIconWidth;\n const markerIconHeight = poiCollection.markerIconHeight || this.getExtConf().markerIconHeight;\n const markerIconAnchorPosX = poiCollection.markerIconAnchorPosX || this.getExtConf().markerIconAnchorPosX;\n const markerIconAnchorPosY = poiCollection.markerIconAnchorPosY || this.getExtConf().markerIconAnchorPosY;\n\n let icon = L.icon({\n iconUrl: (() => {\n let markerIconPath = poiCollection.markerIcon;\n\n // Remove leading slash if present, to avoid double slashes with siteUrl\n if (markerIconPath.startsWith('/')) {\n markerIconPath = markerIconPath.substring(1);\n }\n\n return this.environment.siteUrl + markerIconPath;\n })(),\n iconSize: [markerIconWidth, markerIconHeight],\n iconAnchor: [markerIconAnchorPosX, markerIconAnchorPosY]\n });\n marker.setIcon(icon);\n }\n\n this.bounds.extend(marker.getLatLng());\n\n if (this.editable) {\n this.addEditListeners(this.element, marker, poiCollection);\n } else {\n this.addInfoWindow(marker, poiCollection);\n }\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Polygon}\n */\n createArea(poiCollection) {\n let latlngs = [];\n\n poiCollection.pois.forEach(poi => {\n let latLng = [poi.latitude, poi.longitude];\n this.bounds.extend(latLng);\n latlngs.push(latLng);\n });\n\n let marker = L.polygon(latlngs, {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n }).addTo(this.map);\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Polyline}\n */\n createRoute(poiCollection) {\n let latlngs = [];\n\n poiCollection.pois.forEach(poi => {\n let latLng = [poi.latitude, poi.longitude];\n this.bounds.extend(latLng);\n latlngs.push(latLng);\n });\n\n let marker = L.polyline(latlngs, {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity\n }).addTo(this.map);\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {PoiCollection} poiCollection\n * @returns {Circle}\n */\n createRadius(poiCollection) {\n let marker = L.circle([poiCollection.latitude, poiCollection.longitude], {\n color: poiCollection.strokeColor,\n opacity: poiCollection.strokeOpacity,\n weight: poiCollection.strokeWeight,\n fillColor: poiCollection.fillColor,\n fillOpacity: poiCollection.fillOpacity,\n radius: poiCollection.radius\n }).addTo(this.map);\n\n this.bounds.extend(marker.getBounds());\n\n this.addInfoWindow(marker, poiCollection);\n\n return marker;\n }\n\n /**\n * @param {HTMLElement} element\n * @param {PoiCollection} poiCollection\n */\n addInfoWindow(element, poiCollection) {\n element.addEventListener(\"click\", () => {\n fetch(this.environment.ajaxUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"ext-maps2\": \"infoWindowContent\"\n },\n body: JSON.stringify({\n poiCollection: poiCollection.uid\n })\n })\n .then(response => response.json())\n .then(data => {\n element.bindPopup(data.content).openPopup();\n })\n .catch(error => console.error('Error:', error));\n });\n }\n\n /**\n * @param {HTMLElement} mapContainer\n * @param {L.Marker} marker\n * @param {PoiCollection} poiCollection\n */\n addEditListeners(mapContainer, marker, poiCollection) {\n marker.on('dragend', () => {\n let lat = marker.getLatLng().lat.toFixed(6);\n let lng = marker.getLatLng().lng.toFixed(6);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.latitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", lat);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.longitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", lng);\n });\n\n this.map.on('click', (event) => {\n marker.setLatLng(event.latlng);\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.latitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", event.latlng.lat.toFixed(6));\n mapContainer\n .previousElementSibling\n ?.querySelector(`input.longitude-${this.getContentRecord().uid}`)\n .setAttribute(\"value\", event.latlng.lng.toFixed(6));\n });\n }\n\n /**\n * return {boolean}\n */\n canBeInterpretedAsNumber(value) {\n return typeof value === 'number' || !isNaN(Number(value));\n }\n\n /**\n * return {ContentRecord}\n */\n getContentRecord() {\n return this.environment.contentRecord;\n }\n\n /**\n * return {ExtConf}\n */\n getExtConf() {\n return this.environment.extConf;\n }\n\n /**\n * return {Settings}\n */\n getSettings() {\n return this.environment.settings;\n }\n}\n\nlet maps2OpenStreetMaps = [];\n\ndocument.querySelectorAll(\".maps2\").forEach((element) => {\n const environment = typeof element.dataset.environment !== 'undefined' ? element.dataset.environment : '{}';\n const override = typeof element.dataset.override !== 'undefined' ? element.dataset.override : '{}';\n\n // Pass in the objects to merge as arguments.\n // For a deep extend, set the first argument to `true`.\n const extend = (...args) => {\n let extended = {};\n let deep = false;\n let i = 0;\n let length = args.length;\n\n // Check for deep merge\n if (Object.prototype.toString.call(args[0]) === '[object Boolean]') {\n deep = args[0];\n i++;\n }\n\n // Merge the object into the extended object\n const merge = function (obj) {\n for ( var prop in obj ) {\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\n // If deep merge and property is an object, merge properties\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\n extended[prop] = extend( true, extended[prop], obj[prop] );\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n // Loop through each object and conduct a merge\n for ( ; i < length; i++ ) {\n var obj = args[i];\n merge(obj);\n }\n\n return extended;\n };\n\n maps2OpenStreetMaps.push(new OpenStreetMap2(\n element,\n extend(true, JSON.parse(environment), JSON.parse(override))\n ));\n});\n"], + "mappings": "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", + "names": ["OpenStreetMap2", "element", "environment", "__publicField", "latitude", "longitude", "attributeName", "dimension", "normalizedDimension", "groupedCategories", "poiCollection", "category", "categoryUid", "form", "isChecked", "categories", "checkbox", "markers", "marker", "allCategoriesOfMarker", "categoriesOfCheckboxesWithStatus", "i", "markerCategoryHasCheckboxWithStatus", "j", "k", "div", "obj", "count", "key", "c", "markerIconWidth", "markerIconHeight", "markerIconAnchorPosX", "markerIconAnchorPosY", "icon", "markerIconPath", "latlngs", "poi", "latLng", "response", "data", "error", "mapContainer", "lat", "lng", "event", "value", "maps2OpenStreetMaps", "override", "extend", "args", "extended", "deep", "length", "merge", "prop"] +} diff --git a/Resources/Public/JavaScript/OpenStreetMapModule.min.js b/Resources/Public/JavaScript/OpenStreetMapModule.min.js index 3c2d4d30..9bb00441 100644 --- a/Resources/Public/JavaScript/OpenStreetMapModule.min.js +++ b/Resources/Public/JavaScript/OpenStreetMapModule.min.js @@ -1,2 +1,2 @@ -import{ExtConf,PoiCollection}from"@jweiland/maps2/Classes.js";import FormEngine from"@typo3/backend/form-engine.js";class OpenStreetMapModule{"use strict";element={};map={};constructor(){if(this.element=document.querySelector("#maps2ConfigurationMap"),this.element){let t=new ExtConf(JSON.parse(this.element.dataset.extConf)),a=new PoiCollection(JSON.parse(this.element.dataset.poiCollection)),e={};switch(this.createMap(),a.collectionType){case"Point":e=this.createMarker(a);break;case"Area":this.createArea(a,t);break;case"Route":this.createRoute(a,t);break;case"Radius":e=this.createRadius(a,t)}this.findAddress(a,e),this.panToCenter(a,t),new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&(this.map.invalidateSize(),this.panToCenter(a,t))})},{root:null,threshold:.1}).observe(this.element)}}panToCenter=(e,t)=>{e.latitude&&e.longitude?this.map.panTo([e.latitude,e.longitude]):this.map.panTo([t.defaultLatitude,t.defaultLongitude])};createMap=()=>{this.map=L.map(this.element,{editable:!0}).setView([51.505,-.09],15),L.tileLayer(location.protocol+"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox',id:"mapbox.streets"}).addTo(this.map)};createMarker=t=>{let a=this,o=L.marker([t.latitude,t.longitude],{draggable:!0}).addTo(this.map);return o.on("dragend",()=>{a.setLatLngFields(t,o.getLatLng().lat.toFixed(6),o.getLatLng().lng.toFixed(6),0)}),this.map.on("click",e=>{o.setLatLng(e.latlng),a.setLatLngFields(t,e.latlng.lat.toFixed(6),e.latlng.lng.toFixed(6),0)}),o};createArea=(t,e)=>{let a=this,o={};var i=[],e={color:e.strokeColor,weight:e.strokeWeight,opacity:e.strokeOpacity,fillColor:e.fillColor,fillOpacity:e.fillOpacity};if(t.configurationMap)for(let e=0;e{a.setLatLngFields(t,e.target.getCenter().lat.toFixed(6),e.target.getCenter().lng.toFixed(6),0)}),this.map.on("editable:vertex:new",e=>{a.storeRouteAsJson(t,o.getLatLngs()[0])}),this.map.on("editable:vertex:deleted",e=>{a.storeRouteAsJson(t,o.getLatLngs()[0])}),this.map.on("editable:vertex:dragend",e=>{a.storeRouteAsJson(t,o.getLatLngs()[0])})};createRoute=(t,e)=>{let a=this,o={};var i=[],e={color:e.strokeColor,weight:e.strokeWeight,opacity:e.strokeOpacity};if(t.configurationMap)for(let e=0;e{a.setLatLngFields(t,e.target.getCenter().lat.toFixed(6),e.target.getCenter().lng.toFixed(6),0)}),this.map.on("editable:vertex:new",e=>{a.storeRouteAsJson(t,o.getLatLngs())}),this.map.on("editable:vertex:deleted",e=>{a.storeRouteAsJson(t,o.getLatLngs())}),this.map.on("editable:vertex:dragend",e=>{a.storeRouteAsJson(t,o.getLatLngs())})};createRadius=(t,e)=>{let a=this,o=L.circle([t.latitude,t.longitude],{color:e.strokeColor,opacity:e.strokeOpacity,weight:e.strokeWeight,fillColor:e.fillColor,fillOpacity:e.fillOpacity,radius:t.radius||e.defaultRadius}).addTo(this.map);o.enableEdit();return o.on("editable:dragend editable:vertex:dragend",e=>{a.setLatLngFields(t,o.getLatLng().lat.toFixed(6),o.getLatLng().lng.toFixed(6),o.getRadius())}),o};setLatLngFields=(e,t,a,o,i)=>{this.setFieldValue(e,"latitude",t),this.setFieldValue(e,"longitude",a),void 0!==o&&0{var a={};for(let e=0;eFormEngine.getFieldElement(this.buildFieldName(e,t),"_list");buildFieldName=(e,t)=>"data[tx_maps2_domain_model_poicollection]["+e.uid+"]["+t+"]";setFieldValue=(e,t,a)=>{e=this.getFieldElement(e,t);e&&e.length&&((t=e.get(0)).value=a,t.dispatchEvent(new Event("change")))};storeRouteAsJson=(e,t)=>{this.setFieldValue(e,"configuration_map",JSON.stringify(this.getUriForCoordinates(t)))};findAddress=(i,s)=>{let n=this;document.querySelector("#pac-search").addEventListener("keydown",e=>{if(13===e.keyCode&&e.target.value)return e.preventDefault(),fetch("https://nominatim.openstreetmap.org/search?q="+encodeURI(e.target.value)+"&format=json&addressdetails=1",{method:"GET",headers:{"Content-Type":"application/json"}}).then(e=>e.json()).then(e=>{if(0===e.length)alert("Address not found");else{var t=parseFloat(e[0].lat).toFixed(6),a=parseFloat(e[0].lon).toFixed(6),e=e[0].address,o=n.getFormattedAddress(e);switch(i.collectionType){case"Point":s.setLatLng([t,a]),n.setLatLngFields(i,t,a,0,o);break;case"Area":case"Route":n.setLatLngFields(i,t,a,0,o);break;case"Radius":s.setLatLng([t,a]),s.editor.updateResizeLatLng(),s.editor.reset(),n.setLatLngFields(i,t,a,s.getRadius(),o)}n.map.panTo([t,a])}}).catch(e=>console.error("Error:",e)),!1})};getFormattedAddress=e=>{let t="",a="";var o=e.road||e.pedestrian||e.footway||e.path||e.cycleway||e.street,o=(o&&(t+=o),e.house_number||e.houseNumber);return o&&(t+=" "+o),e.hasOwnProperty("postcode")&&(t+=", "+e.postcode),e.hasOwnProperty("village")&&(a=e.village),e.hasOwnProperty("town")&&(a=e.town),e.hasOwnProperty("city")&&(a=e.city),t+=" "+a,e.hasOwnProperty("country")&&(t+=", "+e.country),t}}export default new OpenStreetMapModule; +var h=Object.defineProperty;var p=(d,e,t)=>e in d?h(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var n=(d,e,t)=>p(d,typeof e!="symbol"?e+"":e,t);import{ExtConf as m,PoiCollection as c}from"@jweiland/maps2/Classes.js";import f from"@typo3/backend/form-engine.js";class y{constructor(){n(this,"use strict");n(this,"element",{});n(this,"map",{});n(this,"panToCenter",(e,t)=>{e.latitude&&e.longitude?this.map.panTo([e.latitude,e.longitude]):this.map.panTo([t.defaultLatitude,t.defaultLongitude])});n(this,"createMap",()=>{this.map=L.map(this.element,{editable:!0}).setView([51.505,-.09],15),L.tileLayer(location.protocol+"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{maxZoom:18,attribution:'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery \xA9 Mapbox',id:"mapbox.streets"}).addTo(this.map)});n(this,"createMarker",e=>{let t=this,a=L.marker([e.latitude,e.longitude],{draggable:!0}).addTo(this.map);return a.on("dragend",()=>{t.setLatLngFields(e,a.getLatLng().lat.toFixed(6),a.getLatLng().lng.toFixed(6),0)}),this.map.on("click",r=>{a.setLatLng(r.latlng),t.setLatLngFields(e,r.latlng.lat.toFixed(6),r.latlng.lng.toFixed(6),0)}),a});n(this,"createArea",(e,t)=>{let a=this,r={},i=[],o={color:t.strokeColor,weight:t.strokeWeight,opacity:t.strokeOpacity,fillColor:t.fillColor,fillOpacity:t.fillOpacity};if(e.configurationMap)for(let s=0;s{a.setLatLngFields(e,s.target.getCenter().lat.toFixed(6),s.target.getCenter().lng.toFixed(6),0)}),this.map.on("editable:vertex:new",s=>{a.storeRouteAsJson(e,r.getLatLngs()[0])}),this.map.on("editable:vertex:deleted",s=>{a.storeRouteAsJson(e,r.getLatLngs()[0])}),this.map.on("editable:vertex:dragend",s=>{a.storeRouteAsJson(e,r.getLatLngs()[0])})});n(this,"createRoute",(e,t)=>{let a=this,r={},i=[],o={color:t.strokeColor,weight:t.strokeWeight,opacity:t.strokeOpacity};if(e.configurationMap)for(let s=0;s{a.setLatLngFields(e,s.target.getCenter().lat.toFixed(6),s.target.getCenter().lng.toFixed(6),0)}),this.map.on("editable:vertex:new",s=>{a.storeRouteAsJson(e,r.getLatLngs())}),this.map.on("editable:vertex:deleted",s=>{a.storeRouteAsJson(e,r.getLatLngs())}),this.map.on("editable:vertex:dragend",s=>{a.storeRouteAsJson(e,r.getLatLngs())})});n(this,"createRadius",(e,t)=>{let a=this,r=L.circle([e.latitude,e.longitude],{color:t.strokeColor,opacity:t.strokeOpacity,weight:t.strokeWeight,fillColor:t.fillColor,fillOpacity:t.fillOpacity,radius:e.radius?e.radius:t.defaultRadius}).addTo(this.map),i=r.enableEdit();return r.on("editable:dragend editable:vertex:dragend",o=>{a.setLatLngFields(e,r.getLatLng().lat.toFixed(6),r.getLatLng().lng.toFixed(6),r.getRadius())}),r});n(this,"setLatLngFields",(e,t,a,r,i)=>{this.setFieldValue(e,"latitude",t),this.setFieldValue(e,"longitude",a),typeof r<"u"&&r>0&&this.setFieldValue(e,"radius",parseInt(r)),typeof i<"u"&&this.setFieldValue(e,"address",i)});n(this,"getUriForCoordinates",e=>{let t={};for(let a=0;af.getFieldElement(this.buildFieldName(e,t),"_list"));n(this,"buildFieldName",(e,t)=>"data[tx_maps2_domain_model_poicollection]["+e.uid+"]["+t+"]");n(this,"setFieldValue",(e,t,a)=>{let r=this.getFieldElement(e,t);if(r&&r.length){let i=r.get(0);i.value=a,i.dispatchEvent(new Event("change"))}});n(this,"storeRouteAsJson",(e,t)=>{this.setFieldValue(e,"configuration_map",JSON.stringify(this.getUriForCoordinates(t)))});n(this,"findAddress",(e,t)=>{let a=this;document.querySelector("#pac-search").addEventListener("keydown",i=>{if(i.keyCode===13&&i.target.value)return i.preventDefault(),fetch("https://nominatim.openstreetmap.org/search?q="+encodeURI(i.target.value)+"&format=json&addressdetails=1",{method:"GET",headers:{"Content-Type":"application/json"}}).then(o=>o.json()).then(o=>{if(o.length===0)alert("Address not found");else{let s=parseFloat(o[0].lat).toFixed(6),l=parseFloat(o[0].lon).toFixed(6),u=o[0].address,g=a.getFormattedAddress(u);switch(e.collectionType){case"Point":t.setLatLng([s,l]),a.setLatLngFields(e,s,l,0,g);break;case"Area":a.setLatLngFields(e,s,l,0,g);break;case"Route":a.setLatLngFields(e,s,l,0,g);break;case"Radius":t.setLatLng([s,l]),t.editor.updateResizeLatLng(),t.editor.reset(),a.setLatLngFields(e,s,l,t.getRadius(),g);break}a.map.panTo([s,l])}}).catch(o=>console.error("Error:",o)),!1})});n(this,"getFormattedAddress",e=>{let t="",a="";const r=e.road||e.pedestrian||e.footway||e.path||e.cycleway||e.street;r&&(t+=r);const i=e.house_number||e.houseNumber;return i&&(t+=" "+i),e.hasOwnProperty("postcode")&&(t+=", "+e.postcode),e.hasOwnProperty("village")&&(a=e.village),e.hasOwnProperty("town")&&(a=e.town),e.hasOwnProperty("city")&&(a=e.city),t+=" "+a,e.hasOwnProperty("country")&&(t+=", "+e.country),t});if(this.element=document.querySelector("#maps2ConfigurationMap"),!this.element)return;let e=new m(JSON.parse(this.element.dataset.extConf)),t=new c(JSON.parse(this.element.dataset.poiCollection)),a={};switch(this.createMap(),t.collectionType){case"Point":a=this.createMarker(t);break;case"Area":this.createArea(t,e);break;case"Route":this.createRoute(t,e);break;case"Radius":a=this.createRadius(t,e);break}this.findAddress(t,a),this.panToCenter(t,e),new IntersectionObserver(i=>{i.forEach(o=>{o.isIntersecting&&(this.map.invalidateSize(),this.panToCenter(t,e))})},{root:null,threshold:.1}).observe(this.element)}}var v=new y;export{v as default}; //# sourceMappingURL=OpenStreetMapModule.min.js.map diff --git a/Resources/Public/JavaScript/OpenStreetMapModule.min.js.map b/Resources/Public/JavaScript/OpenStreetMapModule.min.js.map index 4efb33ba..ddbd0c0d 100644 --- a/Resources/Public/JavaScript/OpenStreetMapModule.min.js.map +++ b/Resources/Public/JavaScript/OpenStreetMapModule.min.js.map @@ -1 +1,7 @@ -{"version":3,"sources":["OpenStreetMapModule.js"],"names":["ExtConf","PoiCollection","FormEngine","OpenStreetMapModule","use strict","element","map","constructor","this","document","querySelector","let","extConf","JSON","parse","dataset","poiCollection","marker","createMap","collectionType","createMarker","createArea","createRoute","createRadius","findAddress","panToCenter","IntersectionObserver","entries","forEach","entry","isIntersecting","invalidateSize","root","threshold","observe","latitude","longitude","panTo","defaultLatitude","defaultLongitude","L","editable","setView","tileLayer","location","protocol","maxZoom","attribution","id","addTo","osm","draggable","on","setLatLngFields","getLatLng","lat","toFixed","lng","event","setLatLng","latlng","area","coordinatesArray","options","color","strokeColor","weight","strokeWeight","opacity","strokeOpacity","fillColor","fillOpacity","configurationMap","i","length","push","editTools","startPolygon","polygon","enableEdit","target","getCenter","storeRouteAsJson","getLatLngs","route","startPolyline","polyline","circle","radius","defaultRadius","getRadius","rad","address","setFieldValue","parseInt","getUriForCoordinates","coordinates","routeObject","index","getFieldElement","field","buildFieldName","uid","value","$fieldElement","humanReadableField","get","dispatchEvent","Event","stringify","addEventListener","keyCode","preventDefault","fetch","encodeURI","method","headers","Content-Type","then","response","json","data","alert","parseFloat","lon","formattedAddress","getFormattedAddress","editor","updateResizeLatLng","reset","catch","error","console","city","road","pedestrian","footway","path","cycleway","street","houseNumber","house_number","hasOwnProperty","postcode","village","town","country"],"mappings":"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","file":"OpenStreetMapModule.min.js","sourcesContent":["import { ExtConf, PoiCollection } from '@jweiland/maps2/Classes.js';\nimport FormEngine from \"@typo3/backend/form-engine.js\";\n\nclass OpenStreetMapModule {\n \"use strict\"\n\n /**\n * @type {HTMLElement}\n */\n element = {};\n\n /**\n * @type {L.Map}\n */\n map = {};\n\n constructor() {\n this.element = document.querySelector(\"#maps2ConfigurationMap\");\n\n if (!this.element) {\n return;\n }\n\n let extConf = new ExtConf(JSON.parse(this.element.dataset.extConf));\n let poiCollection = new PoiCollection(JSON.parse(this.element.dataset.poiCollection));\n let marker = {};\n\n this.createMap();\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = this.createMarker(poiCollection);\n break;\n case \"Area\":\n this.createArea(poiCollection, extConf);\n break;\n case \"Route\":\n this.createRoute(poiCollection, extConf);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, extConf);\n break;\n }\n\n this.findAddress(poiCollection, marker);\n this.panToCenter(poiCollection, extConf);\n\n // Re-render map dynamically when it becomes visible (e.g. switching FormEngine tabs)\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.map.invalidateSize();\n this.panToCenter(poiCollection, extConf);\n }\n });\n }, { root: null, threshold: 0.1 });\n\n observer.observe(this.element);\n }\n\n panToCenter = (poiCollection, extConf) => {\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.panTo([poiCollection.latitude, poiCollection.longitude]);\n } else {\n this.map.panTo([extConf.defaultLatitude, extConf.defaultLongitude]);\n }\n };\n\n createMap = () => {\n this.map = L.map(\n this.element,\n {\n editable: true\n }).setView([51.505, -0.09], 15);\n\n L.tileLayer(location.protocol + \"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n maxZoom: 18,\n attribution: 'Map data © OpenStreetMap contributors, ' + 'CC-BY-SA, ' + 'Imagery © Mapbox',\n id: \"mapbox.streets\"\n }).addTo(this.map);\n };\n\n createMarker = poiCollection => {\n let osm = this;\n let marker = L.marker(\n [poiCollection.latitude, poiCollection.longitude],\n {\n \"draggable\": true\n }\n ).addTo(this.map);\n\n // update fields and marker while dragging\n marker.on(\"dragend\", () => {\n osm.setLatLngFields(\n poiCollection,\n marker.getLatLng().lat.toFixed(6),\n marker.getLatLng().lng.toFixed(6),\n 0\n );\n });\n\n // update fields and marker when clicking on the map\n this.map.on(\"click\", event => {\n marker.setLatLng(event.latlng);\n osm.setLatLngFields(\n poiCollection,\n event.latlng.lat.toFixed(6),\n event.latlng.lng.toFixed(6),\n 0\n );\n });\n\n return marker;\n };\n\n createArea = (poiCollection, extConf) => {\n let osm = this;\n let area = {};\n let coordinatesArray = [];\n let options = {\n color: extConf.strokeColor,\n weight: extConf.strokeWeight,\n opacity: extConf.strokeOpacity,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity\n };\n\n if (poiCollection.configurationMap) {\n for (let i = 0; i < poiCollection.configurationMap.length; i++) {\n coordinatesArray.push([\n poiCollection.configurationMap[i].latitude,\n poiCollection.configurationMap[i].longitude]\n );\n }\n }\n\n if (coordinatesArray.length === 0) {\n area = this.map.editTools.startPolygon(null, options);\n } else {\n area = L.polygon(coordinatesArray, options).addTo(this.map);\n area.enableEdit();\n }\n\n this.map.on(\"moveend\", event => {\n osm.setLatLngFields(\n poiCollection,\n event.target.getCenter().lat.toFixed(6),\n event.target.getCenter().lng.toFixed(6),\n 0\n );\n });\n this.map.on(\"editable:vertex:new\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n this.map.on(\"editable:vertex:deleted\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n this.map.on(\"editable:vertex:dragend\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n };\n\n createRoute = (poiCollection, extConf) => {\n let osm = this;\n let route = {};\n let coordinatesArray = [];\n let options = {\n color: extConf.strokeColor,\n weight: extConf.strokeWeight,\n opacity: extConf.strokeOpacity\n };\n\n if (poiCollection.configurationMap) {\n for (let i = 0; i < poiCollection.configurationMap.length; i++) {\n coordinatesArray.push([\n poiCollection.configurationMap[i].latitude,\n poiCollection.configurationMap[i].longitude]\n );\n }\n }\n\n if (coordinatesArray.length === 0) {\n route = this.map.editTools.startPolyline(null, options);\n } else {\n route = L.polyline(coordinatesArray, options).addTo(this.map);\n route.enableEdit();\n }\n\n this.map.on(\"moveend\", event => {\n osm.setLatLngFields(\n poiCollection,\n event.target.getCenter().lat.toFixed(6),\n event.target.getCenter().lng.toFixed(6),\n 0\n );\n });\n this.map.on(\"editable:vertex:new\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n this.map.on(\"editable:vertex:deleted\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n this.map.on(\"editable:vertex:dragend\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n };\n\n createRadius = (poiCollection, extConf) => {\n let osm = this;\n let marker = L.circle(\n [poiCollection.latitude, poiCollection.longitude],\n {\n color: extConf.strokeColor,\n opacity: extConf.strokeOpacity,\n weight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n radius: poiCollection.radius ? poiCollection.radius : extConf.defaultRadius\n }\n ).addTo(this.map);\n\n let editor = marker.enableEdit();\n\n // Update fields and marker while dragging\n marker.on(\"editable:dragend editable:vertex:dragend\", event => {\n osm.setLatLngFields(\n poiCollection,\n marker.getLatLng().lat.toFixed(6),\n marker.getLatLng().lng.toFixed(6),\n marker.getRadius()\n );\n });\n\n return marker;\n };\n\n /**\n * Fill TCA fields for Lat and Lng with value of marker position\n *\n * @param number lat\n * @param number lng\n * @param number rad\n * @param string address\n */\n setLatLngFields = (poiCollection, lat, lng, rad, address) => {\n this.setFieldValue(poiCollection, \"latitude\", lat);\n this.setFieldValue(poiCollection, \"longitude\", lng);\n\n if (typeof rad !== \"undefined\" && rad > 0) {\n this.setFieldValue(poiCollection, \"radius\", parseInt(rad));\n }\n\n if (typeof address !== \"undefined\") {\n this.setFieldValue(poiCollection, \"address\", address);\n }\n };\n\n /**\n * Generate an uri to save all coordinates\n *\n * @param {array} coordinates\n * @return {object}\n */\n getUriForCoordinates = coordinates => {\n let routeObject = {};\n\n for (let index = 0; index < coordinates.length; index++) {\n routeObject[index] = coordinates[index][\"lat\"] + \",\" + coordinates[index][\"lng\"];\n }\n\n return routeObject;\n };\n\n /**\n * Return FieldElement from TCEFORM by fieldName\n *\n * @param field\n * @returns {*|HTMLElement} jQuery object. FormEngine works with $ selectors\n */\n getFieldElement = (poiCollection, field) => {\n // Return the FieldElement which is visible to the editor\n return FormEngine.getFieldElement(this.buildFieldName(poiCollection, field), \"_list\");\n };\n\n /**\n * Build fieldName like \"data[tx_maps2_domain_model_poicollection][1][latitude]\"\n *\n * @param poiCollection\n * @param field\n * @returns {string}\n */\n buildFieldName = (poiCollection, field) => {\n return \"data[tx_maps2_domain_model_poicollection][\" + poiCollection.uid + \"][\" + field + \"]\";\n };\n\n /**\n * Set field value\n *\n * @param {PoiCollection} poiCollection\n * @param {string} field\n * @param {string | number} value\n */\n setFieldValue = (poiCollection, field, value) => {\n /* getFieldName returns a jquery object via FormEngine */\n let $fieldElement = this.getFieldElement(poiCollection, field);\n\n if ($fieldElement && $fieldElement.length) {\n let humanReadableField = $fieldElement.get(0);\n humanReadableField.value = value;\n humanReadableField.dispatchEvent(new Event('change'));\n }\n };\n\n /**\n * Store route/area path into configurationMap as JSON\n *\n * @param {PoiCollection} poiCollection\n * @param coordinates\n */\n storeRouteAsJson = (poiCollection, coordinates) => {\n this.setFieldValue(\n poiCollection,\n \"configuration_map\",\n JSON.stringify(this.getUriForCoordinates(coordinates))\n );\n };\n\n /**\n * read address, send it to OpenStreetMap and move map/marker to new location\n */\n findAddress = (poiCollection, marker) => {\n let osm = this;\n let pacSearch = document.querySelector(\"#pac-search\");\n\n // Prevent submitting the BE form on enter\n pacSearch.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13 && event.target.value) {\n event.preventDefault();\n fetch(\"https://nominatim.openstreetmap.org/search?q=\" + encodeURI(event.target.value) + \"&format=json&addressdetails=1\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n })\n .then(response => response.json())\n .then(data => {\n if (data.length === 0) {\n alert(\"Address not found\");\n } else {\n let lat = parseFloat(data[0].lat).toFixed(6);\n let lng = parseFloat(data[0].lon).toFixed(6);\n let address = data[0].address;\n let formattedAddress = osm.getFormattedAddress(address);\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker.setLatLng([lat, lng]);\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Area\":\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Route\":\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Radius\":\n marker.setLatLng([lat, lng]);\n marker.editor.updateResizeLatLng();\n marker.editor.reset();\n osm.setLatLngFields(poiCollection, lat, lng, marker.getRadius(), formattedAddress);\n break;\n }\n\n osm.map.panTo([lat, lng]);\n }\n })\n .catch(error => console.error('Error:', error));\n\n return false;\n }\n });\n };\n\n /**\n * format address from ajax result\n *\n * @param address\n * @returns {string}\n */\n getFormattedAddress = address => {\n let formattedAddress = \"\";\n let city = \"\";\n\n // 1. extract the street/road name with fallbacks for different OSM types\n const road = address.road ||\n address.pedestrian ||\n address.footway ||\n address.path ||\n address.cycleway ||\n address.street;\n\n if (road) {\n formattedAddress += road;\n }\n\n // 2. extract house number (handles both camelCase and snake_case from the API)\n const houseNumber = address.house_number || address.houseNumber;\n if (houseNumber) {\n formattedAddress += \" \" + houseNumber;\n }\n\n // 3. handle postcode\n if (address.hasOwnProperty(\"postcode\")) {\n formattedAddress += \", \" + address.postcode;\n }\n\n // 4. extract city/locality\n if (address.hasOwnProperty(\"village\")) {\n city = address.village;\n }\n\n if (address.hasOwnProperty(\"town\")) {\n city = address.town;\n }\n\n if (address.hasOwnProperty(\"city\")) {\n city = address.city;\n }\n\n formattedAddress += \" \" + city;\n\n // 5. handle country\n if (address.hasOwnProperty(\"country\")) {\n formattedAddress += \", \" + address.country;\n }\n\n return formattedAddress;\n };\n}\n\nexport default new OpenStreetMapModule();\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/JavaScript/OpenStreetMapModule.js"], + "sourcesContent": ["import { ExtConf, PoiCollection } from '@jweiland/maps2/Classes.js';\nimport FormEngine from \"@typo3/backend/form-engine.js\";\n\nclass OpenStreetMapModule {\n \"use strict\"\n\n /**\n * @type {HTMLElement}\n */\n element = {};\n\n /**\n * @type {L.Map}\n */\n map = {};\n\n constructor() {\n this.element = document.querySelector(\"#maps2ConfigurationMap\");\n\n if (!this.element) {\n return;\n }\n\n let extConf = new ExtConf(JSON.parse(this.element.dataset.extConf));\n let poiCollection = new PoiCollection(JSON.parse(this.element.dataset.poiCollection));\n let marker = {};\n\n this.createMap();\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker = this.createMarker(poiCollection);\n break;\n case \"Area\":\n this.createArea(poiCollection, extConf);\n break;\n case \"Route\":\n this.createRoute(poiCollection, extConf);\n break;\n case \"Radius\":\n marker = this.createRadius(poiCollection, extConf);\n break;\n }\n\n this.findAddress(poiCollection, marker);\n this.panToCenter(poiCollection, extConf);\n\n // Re-render map dynamically when it becomes visible (e.g. switching FormEngine tabs)\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.map.invalidateSize();\n this.panToCenter(poiCollection, extConf);\n }\n });\n }, { root: null, threshold: 0.1 });\n\n observer.observe(this.element);\n }\n\n panToCenter = (poiCollection, extConf) => {\n if (poiCollection.latitude && poiCollection.longitude) {\n this.map.panTo([poiCollection.latitude, poiCollection.longitude]);\n } else {\n this.map.panTo([extConf.defaultLatitude, extConf.defaultLongitude]);\n }\n };\n\n createMap = () => {\n this.map = L.map(\n this.element,\n {\n editable: true\n }).setView([51.505, -0.09], 15);\n\n L.tileLayer(location.protocol + \"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n maxZoom: 18,\n attribution: 'Map data © OpenStreetMap contributors, ' + 'CC-BY-SA, ' + 'Imagery \u00A9 Mapbox',\n id: \"mapbox.streets\"\n }).addTo(this.map);\n };\n\n createMarker = poiCollection => {\n let osm = this;\n let marker = L.marker(\n [poiCollection.latitude, poiCollection.longitude],\n {\n \"draggable\": true\n }\n ).addTo(this.map);\n\n // update fields and marker while dragging\n marker.on(\"dragend\", () => {\n osm.setLatLngFields(\n poiCollection,\n marker.getLatLng().lat.toFixed(6),\n marker.getLatLng().lng.toFixed(6),\n 0\n );\n });\n\n // update fields and marker when clicking on the map\n this.map.on(\"click\", event => {\n marker.setLatLng(event.latlng);\n osm.setLatLngFields(\n poiCollection,\n event.latlng.lat.toFixed(6),\n event.latlng.lng.toFixed(6),\n 0\n );\n });\n\n return marker;\n };\n\n createArea = (poiCollection, extConf) => {\n let osm = this;\n let area = {};\n let coordinatesArray = [];\n let options = {\n color: extConf.strokeColor,\n weight: extConf.strokeWeight,\n opacity: extConf.strokeOpacity,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity\n };\n\n if (poiCollection.configurationMap) {\n for (let i = 0; i < poiCollection.configurationMap.length; i++) {\n coordinatesArray.push([\n poiCollection.configurationMap[i].latitude,\n poiCollection.configurationMap[i].longitude]\n );\n }\n }\n\n if (coordinatesArray.length === 0) {\n area = this.map.editTools.startPolygon(null, options);\n } else {\n area = L.polygon(coordinatesArray, options).addTo(this.map);\n area.enableEdit();\n }\n\n this.map.on(\"moveend\", event => {\n osm.setLatLngFields(\n poiCollection,\n event.target.getCenter().lat.toFixed(6),\n event.target.getCenter().lng.toFixed(6),\n 0\n );\n });\n this.map.on(\"editable:vertex:new\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n this.map.on(\"editable:vertex:deleted\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n this.map.on(\"editable:vertex:dragend\", event => {\n osm.storeRouteAsJson(poiCollection, area.getLatLngs()[0]);\n });\n };\n\n createRoute = (poiCollection, extConf) => {\n let osm = this;\n let route = {};\n let coordinatesArray = [];\n let options = {\n color: extConf.strokeColor,\n weight: extConf.strokeWeight,\n opacity: extConf.strokeOpacity\n };\n\n if (poiCollection.configurationMap) {\n for (let i = 0; i < poiCollection.configurationMap.length; i++) {\n coordinatesArray.push([\n poiCollection.configurationMap[i].latitude,\n poiCollection.configurationMap[i].longitude]\n );\n }\n }\n\n if (coordinatesArray.length === 0) {\n route = this.map.editTools.startPolyline(null, options);\n } else {\n route = L.polyline(coordinatesArray, options).addTo(this.map);\n route.enableEdit();\n }\n\n this.map.on(\"moveend\", event => {\n osm.setLatLngFields(\n poiCollection,\n event.target.getCenter().lat.toFixed(6),\n event.target.getCenter().lng.toFixed(6),\n 0\n );\n });\n this.map.on(\"editable:vertex:new\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n this.map.on(\"editable:vertex:deleted\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n this.map.on(\"editable:vertex:dragend\", event => {\n osm.storeRouteAsJson(poiCollection, route.getLatLngs());\n });\n };\n\n createRadius = (poiCollection, extConf) => {\n let osm = this;\n let marker = L.circle(\n [poiCollection.latitude, poiCollection.longitude],\n {\n color: extConf.strokeColor,\n opacity: extConf.strokeOpacity,\n weight: extConf.strokeWeight,\n fillColor: extConf.fillColor,\n fillOpacity: extConf.fillOpacity,\n radius: poiCollection.radius ? poiCollection.radius : extConf.defaultRadius\n }\n ).addTo(this.map);\n\n let editor = marker.enableEdit();\n\n // Update fields and marker while dragging\n marker.on(\"editable:dragend editable:vertex:dragend\", event => {\n osm.setLatLngFields(\n poiCollection,\n marker.getLatLng().lat.toFixed(6),\n marker.getLatLng().lng.toFixed(6),\n marker.getRadius()\n );\n });\n\n return marker;\n };\n\n /**\n * Fill TCA fields for Lat and Lng with value of marker position\n *\n * @param number lat\n * @param number lng\n * @param number rad\n * @param string address\n */\n setLatLngFields = (poiCollection, lat, lng, rad, address) => {\n this.setFieldValue(poiCollection, \"latitude\", lat);\n this.setFieldValue(poiCollection, \"longitude\", lng);\n\n if (typeof rad !== \"undefined\" && rad > 0) {\n this.setFieldValue(poiCollection, \"radius\", parseInt(rad));\n }\n\n if (typeof address !== \"undefined\") {\n this.setFieldValue(poiCollection, \"address\", address);\n }\n };\n\n /**\n * Generate an uri to save all coordinates\n *\n * @param {array} coordinates\n * @return {object}\n */\n getUriForCoordinates = coordinates => {\n let routeObject = {};\n\n for (let index = 0; index < coordinates.length; index++) {\n routeObject[index] = coordinates[index][\"lat\"] + \",\" + coordinates[index][\"lng\"];\n }\n\n return routeObject;\n };\n\n /**\n * Return FieldElement from TCEFORM by fieldName\n *\n * @param field\n * @returns {*|HTMLElement} jQuery object. FormEngine works with $ selectors\n */\n getFieldElement = (poiCollection, field) => {\n // Return the FieldElement which is visible to the editor\n return FormEngine.getFieldElement(this.buildFieldName(poiCollection, field), \"_list\");\n };\n\n /**\n * Build fieldName like \"data[tx_maps2_domain_model_poicollection][1][latitude]\"\n *\n * @param poiCollection\n * @param field\n * @returns {string}\n */\n buildFieldName = (poiCollection, field) => {\n return \"data[tx_maps2_domain_model_poicollection][\" + poiCollection.uid + \"][\" + field + \"]\";\n };\n\n /**\n * Set field value\n *\n * @param {PoiCollection} poiCollection\n * @param {string} field\n * @param {string | number} value\n */\n setFieldValue = (poiCollection, field, value) => {\n /* getFieldName returns a jquery object via FormEngine */\n let $fieldElement = this.getFieldElement(poiCollection, field);\n\n if ($fieldElement && $fieldElement.length) {\n let humanReadableField = $fieldElement.get(0);\n humanReadableField.value = value;\n humanReadableField.dispatchEvent(new Event('change'));\n }\n };\n\n /**\n * Store route/area path into configurationMap as JSON\n *\n * @param {PoiCollection} poiCollection\n * @param coordinates\n */\n storeRouteAsJson = (poiCollection, coordinates) => {\n this.setFieldValue(\n poiCollection,\n \"configuration_map\",\n JSON.stringify(this.getUriForCoordinates(coordinates))\n );\n };\n\n /**\n * read address, send it to OpenStreetMap and move map/marker to new location\n */\n findAddress = (poiCollection, marker) => {\n let osm = this;\n let pacSearch = document.querySelector(\"#pac-search\");\n\n // Prevent submitting the BE form on enter\n pacSearch.addEventListener(\"keydown\", event => {\n if (event.keyCode === 13 && event.target.value) {\n event.preventDefault();\n fetch(\"https://nominatim.openstreetmap.org/search?q=\" + encodeURI(event.target.value) + \"&format=json&addressdetails=1\", {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n })\n .then(response => response.json())\n .then(data => {\n if (data.length === 0) {\n alert(\"Address not found\");\n } else {\n let lat = parseFloat(data[0].lat).toFixed(6);\n let lng = parseFloat(data[0].lon).toFixed(6);\n let address = data[0].address;\n let formattedAddress = osm.getFormattedAddress(address);\n\n switch (poiCollection.collectionType) {\n case \"Point\":\n marker.setLatLng([lat, lng]);\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Area\":\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Route\":\n osm.setLatLngFields(poiCollection, lat, lng, 0, formattedAddress);\n break;\n case \"Radius\":\n marker.setLatLng([lat, lng]);\n marker.editor.updateResizeLatLng();\n marker.editor.reset();\n osm.setLatLngFields(poiCollection, lat, lng, marker.getRadius(), formattedAddress);\n break;\n }\n\n osm.map.panTo([lat, lng]);\n }\n })\n .catch(error => console.error('Error:', error));\n\n return false;\n }\n });\n };\n\n /**\n * format address from ajax result\n *\n * @param address\n * @returns {string}\n */\n getFormattedAddress = address => {\n let formattedAddress = \"\";\n let city = \"\";\n\n // 1. extract the street/road name with fallbacks for different OSM types\n const road = address.road ||\n address.pedestrian ||\n address.footway ||\n address.path ||\n address.cycleway ||\n address.street;\n\n if (road) {\n formattedAddress += road;\n }\n\n // 2. extract house number (handles both camelCase and snake_case from the API)\n const houseNumber = address.house_number || address.houseNumber;\n if (houseNumber) {\n formattedAddress += \" \" + houseNumber;\n }\n\n // 3. handle postcode\n if (address.hasOwnProperty(\"postcode\")) {\n formattedAddress += \", \" + address.postcode;\n }\n\n // 4. extract city/locality\n if (address.hasOwnProperty(\"village\")) {\n city = address.village;\n }\n\n if (address.hasOwnProperty(\"town\")) {\n city = address.town;\n }\n\n if (address.hasOwnProperty(\"city\")) {\n city = address.city;\n }\n\n formattedAddress += \" \" + city;\n\n // 5. handle country\n if (address.hasOwnProperty(\"country\")) {\n formattedAddress += \", \" + address.country;\n }\n\n return formattedAddress;\n };\n}\n\nexport default new OpenStreetMapModule();\n"], + "mappings": "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", + "names": ["ExtConf", "PoiCollection", "FormEngine", "OpenStreetMapModule", "__publicField", "poiCollection", "extConf", "osm", "marker", "event", "area", "coordinatesArray", "options", "i", "route", "editor", "lat", "lng", "rad", "address", "coordinates", "routeObject", "index", "field", "value", "$fieldElement", "humanReadableField", "response", "data", "formattedAddress", "error", "city", "road", "houseNumber", "entries", "entry", "OpenStreetMapModule_default"] +} diff --git a/Resources/Public/JavaScript/leaflet.min.js b/Resources/Public/JavaScript/leaflet.min.js index 1687695e..1b82dc77 100644 --- a/Resources/Public/JavaScript/leaflet.min.js +++ b/Resources/Public/JavaScript/leaflet.min.js @@ -1,2 +1,11 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){"use strict";function l(t){for(var e,i,n=1,o=arguments.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=d(t);var e=this.min,i=this.max,n=t.min,o=(t=t.max).x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=d(t);var e=this.min,i=this.max,n=t.min,o=(t=t.max).x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),o=(t=t.getNorthEast()).lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),o=(t=t.getNorthEast()).lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Ft.firstChild&&Ft.firstChild.namespaceURI));function x(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:Ee,ielt9:pt,edge:n,webkit:ft,android:mt,android23:gt,androidStock:vt,opera:yt,chrome:wt,gecko:xt,safari:Lt,phantom:bt,opera12:o,win:Pt,ie3d:Mt,webkit3d:Et,gecko3d:_t,any3d:Tt,mobile:qi,mobileWebkit:kt,mobileWebkit3d:Ct,msPointer:zt,pointer:St,touch:At,touchNative:Dt,mobileOpera:Zt,mobileGecko:Ot,retina:Bt,passiveEvents:It,canvas:Rt,svg:Nt,vml:!Nt&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Ft,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},jt=b.msPointer?"MSPointerDown":"pointerdown",Vt=b.msPointer?"MSPointerMove":"pointermove",Ht=b.msPointer?"MSPointerUp":"pointerup",Wt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:jt,touchmove:Vt,touchend:Ht,touchcancel:Wt},Ut={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&A(e),$t(t,e)},touchmove:$t,touchend:$t,touchcancel:$t},qt={},Kt=!1;function Xt(t){qt[t.pointerId]=t}function Yt(t){qt[t.pointerId]&&(qt[t.pointerId]=t)}function Jt(t){delete qt[t.pointerId]}function $t(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],qt)e.touches.push(qt[i]);e.changedTouches=[e],t(e)}}var Qt=200;var te,ee,ie,ne,oe,se=me(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ae=me(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),re="webkitTransition"===ae||"OTransition"===ae?ae+"End":"transitionend";function he(t){return"string"==typeof t?document.getElementById(t):t}function le(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){return(t=document.createElement(t)).className=e||"",i&&i.appendChild(t),t}function M(t){var e=t.parentNode;e&&e.removeChild(t)}function ue(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function de(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ce(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function _e(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=fe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function E(t,e){var i;if(void 0!==t.classList)for(var n=H(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=f((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=f(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=(i=d([(s=this.getPixelBounds()).min.add(i),s.max.subtract(n)])).getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round();return(n=n.subtract(o)).x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(r(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=r(this._handleGeolocationResponse,this),i=r(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,a=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(a[i]=t.coords[i]);this.fire("locationfound",a)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t])&&e.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),M(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(a(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)M(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){return e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane),t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=f(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),a=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=d(this.project(t,n),this.project(a,n)).getSize(),a=b.any3d?this.options.zoomSnap:1,r=i.x/t.x,i=i.y/t.y,t=e?Math.max(r,i):Math.min(r,i),n=this.getScaleZoom(t,n);return a&&(n=Math.round(n/(a/100))*(a/100),n=e?Math.ceil(n/a)*a:Math.floor(n/a)*a),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){return new m(t=this._getTopLeftPoint(t,e),t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(f(t),e)},layerPointToLatLng:function(t){return t=f(t).add(this.getPixelOrigin()),this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return f(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return f(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){return t=this.containerPointToLayerPoint(f(t)),this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return Be(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){if(!(t=this._container=he(t)))throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");z(t,"scroll",this._onScroll,this),this._containerId=c(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,E(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),le(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),C(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(E(t.markerPane,"leaflet-zoom-hide"),E(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){C(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return a(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){C(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?D:z;e((this._targets[c(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){a(this._resizeRequest),this._resizeRequest=y(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,a=!1;s;){if((i=this._targets[c(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){a=!0;break}if(i&&i.listens(e,!0)){if(o&&!Ne(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n.length||a||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&xe(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((r=l({},t)).type="preclick",this._fireDOMEvent(r,r.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;y(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,E(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(r(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&T(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function je(t){return new O(t)}var O=et.extend({options:{position:"topright"},initialize:function(t){h(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return E(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(M(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",(e=document.createElement("div")).innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+c(this),n),this._layerControlInputs.push(e),e.layerId=c(t.layer),z(e,"click",this._onInputClick,this);(n=document.createElement("span")).innerHTML=" "+t.name;var o=document.createElement("span");return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section,e=(this._preventClick=!0,z(t,"click",A),this.expand(),this);setTimeout(function(){D(t,"click",A),e._preventClick=!1})}})),He=O.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){return(i=P("a",i,n)).innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ae(i),z(i,"click",Ze),z(i,"click",o,this),z(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";T(this._zoomInButton,e),T(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(E(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(E(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),We=(Z.mergeOptions({zoomControl:!0}),Z.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new He,this.addControl(this.zoomControl))}),O.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=(e=this._map).getSize().y/2,e=e.distance(e.containerPointToLatLng([0,t]),e.containerPointToLatLng([this.options.maxWidth,t]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i;5280<(t=3.2808399*t)?(i=this._getRoundNum(e=t/5280),this._updateScale(this._iScale,i+" mi",i/e)):(i=this._getRoundNum(t),this._updateScale(this._iScale,i+" ft",i/t))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+"px",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1);return e*(10<=(t=t/e)?10:5<=t?5:3<=t?3:2<=t?2:1)}})),Ge=O.extend({options:{position:"bottomright",prefix:''+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){h(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ae(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}});Z.mergeOptions({attributionControl:!0}),Z.addInitHook(function(){this.options.attributionControl&&(new Ge).addTo(this)}),O.Layers=Ve,O.Zoom=He,O.Scale=We,O.Attribution=Ge,je.layers=function(t,e,i){return new Ve(t,e,i)},je.zoom=function(t){return new He(t)},je.scale=function(t){return new We(t)},je.attribution=function(t){return new Ge(t)};(n=et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})).addTo=function(t,e){return t.addHandler(e,this),this};var ft={Events:e},Ue=b.touch?"touchstart mousedown":"mousedown",qe=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){h(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(z(this._dragStartTarget,Ue,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(qe._dragging===this&&this.finishDrag(!0),D(this._dragStartTarget,Ue,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,_e(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?qe._dragging===this&&this.finishDrag():qe._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((qe._dragging=this)._preventOutline&&xe(this._element),ye(),ie(),this._moving)||(this.fire("down"),i=t.touches?t.touches[0]:t,e=be(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=ve(this._element),this._parentScale=Pe(e),i="mousedown"===t.type,z(document,i?"mousemove":"touchmove",this._onMove,this),z(document,i?"mouseup":"touchend touchcancel",this._onUp,this))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(s.push(t[a]),r=a);return re.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ni(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,a=i.y-e,r=s*s+a*a;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||mi.prototype._containsPoint.call(this,t,!0)}})),vi=hi.extend({initialize:function(t,e){h(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=u(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(a=i.x+r-s.x+o.x),i.x-a-n.x<(r=0)&&(a=i.x-n.x),i.y+e+o.y>s.y&&(r=i.y+e-s.y+o.y),i.y-r-n.y<0&&(r=i.y-n.y),(a||r)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([a,r]))))},_getAnchor:function(){return f(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ai=(Z.mergeOptions({closePopupOnClick:!0}),Z.include({openPopup:function(t,e,i){return this._initOverlay(Di,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Di,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof hi||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng))&&this._popup.openOn(this._map),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Ze(t),e=t.layer||t.target,this._popup._source!==e||e instanceof _i?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Si.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Si.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Si.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Si.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+c(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,a=n.offsetWidth,r=n.offsetHeight,h=f(this.options.offset),l=this._getAnchor(),i="top"===s?(e=a/2,r):"bottom"===s?(e=a/2,0):(e="center"===s?a/2:"right"===s?0:"left"===s?a:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){return t=new s((t=this._tileCoordsToNwSe(t))[0],t[1]),this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=new p(+(t=t.split(":"))[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(M(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){E(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=_,t.onmousemove=_,b.ielt9&&this.options.opacity<1&&k(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),r(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&y(r(this._tileReady,this,t,null,o)),C(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(k(i.el,0),a(this._fadeFrame),this._fadeFrame=y(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(E(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad())&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?y(this._pruneTiles,this):setTimeout(r(this._pruneTiles,this),250))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?j(t.x,this._wrapX):t.x,this._wrapY?j(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new m(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}})),Bi=Oi.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=h(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),Et={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Ni.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Vi("shape");E(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Vi("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[c(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;M(e),t.removeInteractiveTarget(e),delete this._layers[c(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Vi("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=u(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Vi("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){de(t._container)},_bringToBack:function(t){ce(t._container)}},Hi=b.vml?Vi:dt,Wi=Ni.extend({_initContainer:function(){this._container=Hi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Hi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){M(this._container),D(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Ni.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),C(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=Hi("path");t.options.className&&E(e,t.options.className),t.options.interactive&&E(e,"leaflet-interactive"),this._updateStyle(t),this._layers[c(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){M(t._path),t.removeInteractiveTarget(t._path),delete this._layers[c(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,ct(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){de(t._path)},_bringToBack:function(t){ce(t._path)}});function Gi(t){return b.svg||b.vml?new Wi(t):null}b.vml&&Wi.include(Et),Z.include({getRenderer:function(t){return t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer()),this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&ji(t)||Gi(t)}});var Ui=gi.extend({initialize:function(t,e){gi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),_t=(Wi.create=Hi,Wi.pointsToPath=ct,vi.geometryToLayer=yi,vi.coordsToLatLng=xi,vi.coordsToLatLngs=Li,vi.latLngToCoords=bi,vi.latLngsToCoords=Pi,vi.getFeature=Mi,vi.asFeature=Ei,Z.mergeOptions({boxZoom:!0}),n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){z(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){D(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){M(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),ie(),ye(),this._startPoint=this._map.mouseEventToContainerPoint(t),z(document,{contextmenu:Ze,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),E(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=(t=new m(this._point,this._startPoint)).getSize();C(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(M(this._box),T(this._container,"leaflet-crosshair")),Me(),we(),D(document,{contextmenu:Ze,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(r(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}})),Tt=(Z.addInitHook("addHandler","boxZoom",_t),Z.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),qi=(Z.addInitHook("addHandler","doubleClickZoom",Tt),Z.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new qe(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),E(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){T(this._map._container,"leaflet-grab"),T(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=d(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=((o=this._draggable._newPos.x)-e+i)%t+e-i,o=(o+e+i)%t-e-i,t=Math.abs(n+i)e.getMaxZoom()&&1=this.MIN_VERTEX-1&&(i=!0):0===e&&this._drawing===h.Editable.BACKWARD&&this._drawnLatLngs.length>=this.MIN_VERTEX||0===e&&this._drawing===h.Editable.FORWARD&&this._drawnLatLngs.length>=this.MIN_VERTEX&&this.CLOSED?i=!0:this.onVertexRawMarkerClick(t),this.fireAndForward("editable:vertex:clicked",t),i&&this.commitDrawing(t))},onVertexRawMarkerClick:function(t){this.fireAndForward("editable:vertex:rawclick",t),t._cancelled||this.vertexCanBeDeleted(t.vertex)&&t.vertex.delete()},vertexCanBeDeleted:function(t){return t.latlngs.length>this.MIN_VERTEX},onVertexDeleted:function(t){this.fireAndForward("editable:vertex:deleted",t)},onVertexMarkerCtrlClick:function(t){this.fireAndForward("editable:vertex:ctrlclick",t)},onVertexMarkerShiftClick:function(t){this.fireAndForward("editable:vertex:shiftclick",t)},onVertexMarkerMetaKeyClick:function(t){this.fireAndForward("editable:vertex:metakeyclick",t)},onVertexMarkerAltClick:function(t){this.fireAndForward("editable:vertex:altclick",t)},onVertexMarkerContextMenu:function(t){this.fireAndForward("editable:vertex:contextmenu",t)},onVertexMarkerMouseDown:function(t){this.fireAndForward("editable:vertex:mousedown",t)},onVertexMarkerMouseOver:function(t){this.fireAndForward("editable:vertex:mouseover",t)},onVertexMarkerMouseOut:function(t){this.fireAndForward("editable:vertex:mouseout",t)},onMiddleMarkerMouseDown:function(t){this.fireAndForward("editable:middlemarker:mousedown",t)},onVertexMarkerDrag:function(t){this.onMove(t),this.feature._bounds&&this.extendBounds(t),this.fireAndForward("editable:vertex:drag",t)},onVertexMarkerDragStart:function(t){this.fireAndForward("editable:vertex:dragstart",t)},onVertexMarkerDragEnd:function(t){this.fireAndForward("editable:vertex:dragend",t)},setDrawnLatLngs:function(t){this._drawnLatLngs=t||this.getDefaultLatLngs()},startDrawing:function(){this._drawnLatLngs||this.setDrawnLatLngs(),h.Editable.BaseEditor.prototype.startDrawing.call(this)},startDrawingForward:function(){this.startDrawing()},endDrawing:function(){this.tools.detachForwardLineGuide(),this.tools.detachBackwardLineGuide(),this._drawnLatLngs&&this._drawnLatLngs.length=t.length-1||(this.ensureMulti(),-1!==(i=this.feature._latlngs.indexOf(t))&&(n=t.slice(0,e+1),(t=t.slice(e))[0]=h.latLng(t[0].lat,t[0].lng,t[0].alt),this.feature._latlngs.splice(i,1,n,t),this.refresh(),this.reset()))}}),h.Editable.PolygonEditor=h.Editable.PathEditor.extend({CLOSED:!0,MIN_VERTEX:3,newPointForward:function(t){h.Editable.PathEditor.prototype.newPointForward.call(this,t),this.tools.backwardLineGuide._latlngs.length||this.tools.anchorBackwardLineGuide(t),2===this._drawnLatLngs.length&&this.tools.attachBackwardLineGuide()},addNewEmptyHole:function(t){this.ensureNotFlat();var t=this.feature.shapeAt(t);if(t)return t.push(t=[]),t},newHole:function(t){var e=this.addNewEmptyHole(t);e&&(this.setDrawnLatLngs(e),this.startDrawingForward(),t)&&this.newPointForward(t)},addNewEmptyShape:function(){var t;return this.feature._latlngs.length&&this.feature._latlngs[0].length?(this.appendShape(t=[]),t):this.feature._latlngs},ensureMulti:function(){this.feature._latlngs.length&&r(this.feature._latlngs[0])&&(this.feature._latlngs=[this.feature._latlngs])},ensureNotFlat:function(){this.feature._latlngs.length&&!r(this.feature._latlngs)||(this.feature._latlngs=[this.feature._latlngs])},vertexCanBeDeleted:function(t){var e=this.feature.parentShape(t.latlngs);return 0t.lat!=n.lat>t.lat&&t.lng<(n.lng-i.lng)*(t.lat-i.lat)/(n.lat-i.lat)+i.lng&&(o=!o);return o},parentShape:function(t,e){if(e=e||this._latlngs){if(-1!==h.Util.indexOf(e,t))return e;for(var i=0;i{var Gn=(d,E)=>()=>{try{return E||d((E={exports:{}}).exports,E),E.exports}catch(G){throw E=0,G}};var bo=Gn((Un,Po)=>{(function(d,E){typeof Un=="object"&&typeof Po<"u"?E(Un):typeof define=="function"&&define.amd?define(["exports"],E):E((d=typeof globalThis<"u"?globalThis:d||self).leaflet={})})(Un,function(d){"use strict";function E(e){for(var n,o,a=1,u=arguments.length;a=this.min.x&&o.x<=this.max.x&&n.y>=this.min.y&&o.y<=this.max.y},intersects:function(_){_=J(_);var n=this.min,o=this.max,a=_.min,_=_.max,u=_.x>=n.x&&a.x<=o.x,_=_.y>=n.y&&a.y<=o.y;return u&&_},overlaps:function(_){_=J(_);var n=this.min,o=this.max,a=_.min,_=_.max,u=_.x>n.x&&a.xn.y&&a.y=a.lat&&o.lat<=u.lat&&n.lng>=a.lng&&o.lng<=u.lng},intersects:function(_){_=tt(_);var n=this._southWest,o=this._northEast,a=_.getSouthWest(),_=_.getNorthEast(),u=_.lat>=n.lat&&a.lat<=o.lat,_=_.lng>=n.lng&&a.lng<=o.lng;return u&&_},overlaps:function(_){_=tt(_);var n=this._southWest,o=this._northEast,a=_.getSouthWest(),_=_.getNorthEast(),u=_.lat>n.lat&&a.latn.lng&&a.lng",(Ae.firstChild&&Ae.firstChild.namespaceURI)==="http://www.w3.org/2000/svg");function Kt(e){return 0<=navigator.userAgent.toLowerCase().indexOf(e)}var I={ie:we,ielt9:De,edge:Zt,webkit:de,android:V,android23:mt,androidStock:Ft,opera:_e,chrome:gi,gecko:oi,safari:dn,phantom:We,opera12:Bt,win:xe,ie3d:Wi,webkit3d:xi,gecko3d:ne,any3d:ji,mobile:xt,mobileWebkit:he,mobileWebkit3d:Gi,msPointer:Vt,pointer:Li,touch:Yn,touchNative:si,mobileOpera:bn,mobileGecko:Ji,retina:Tn,passiveEvents:Mn,canvas:Xn,svg:$i,vml:!$i&&(function(){try{var e=document.createElement("div"),n=(e.innerHTML='',e.firstChild);return n.style.behavior="url(#default#VML)",n&&typeof n.adj=="object"}catch{return!1}})(),inlineSvg:Ae,mac:navigator.platform.indexOf("Mac")===0,linux:navigator.platform.indexOf("Linux")===0},En=I.msPointer?"MSPointerDown":"pointerdown",Qi=I.msPointer?"MSPointerMove":"pointermove",tn=I.msPointer?"MSPointerUp":"pointerup",Cn=I.msPointer?"MSPointerCancel":"pointercancel",Ei={touchstart:En,touchmove:Qi,touchend:tn,touchcancel:Cn},Ci={touchstart:function(e,n){n.MSPOINTER_TYPE_TOUCH&&n.pointerType===n.MSPOINTER_TYPE_TOUCH&&vt(n),ai(e,n)},touchmove:ai,touchend:ai,touchcancel:ai},Le={},kn=!1;function ri(e,n,o){return n!=="touchstart"||kn||(document.addEventListener(En,Jn,!0),document.addEventListener(Qi,$n,!0),document.addEventListener(tn,en,!0),document.addEventListener(Cn,en,!0),kn=!0),Ci[n]?(o=Ci[n].bind(this,o),e.addEventListener(Ei[n],o,!1),o):(console.warn("wrong event specified:",n),h)}function Jn(e){Le[e.pointerId]=e}function $n(e){Le[e.pointerId]&&(Le[e.pointerId]=e)}function en(e){delete Le[e.pointerId]}function ai(e,n){if(n.pointerType!==(n.MSPOINTER_TYPE_MOUSE||"mouse")){for(var o in n.touches=[],Le)n.touches.push(Le[o]);n.changedTouches=[n],e(n)}}var zn=200;function Qn(e,n){e.addEventListener("dblclick",n);var o,a=0;function u(_){var g;_.detail!==1?o=_.detail:_.pointerType==="mouse"||_.sourceCapabilities&&!_.sourceCapabilities.firesTouchEvents||(g=dt(_)).some(function(m){return m instanceof HTMLLabelElement&&m.attributes.for})&&!g.some(function(m){return m instanceof HTMLInputElement||m instanceof HTMLSelectElement})||((g=Date.now())-a<=zn?++o===2&&n((function(m){var w,T,C={};for(T in m)w=m[T],C[T]=w&&w.bind?w.bind(m):w;return(m=C).type="dblclick",C.detail=2,C.isTrusted=!1,C._simulated=!0,C})(_)):o=1,a=g)}return e.addEventListener("click",u),{dblclick:n,simDblclick:u}}var nn,Ie,hi,ki,zi,ui,on=Oi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),li=Oi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),Sn=li==="webkitTransition"||li==="OTransition"?li+"End":"transitionend";function Zn(e){return typeof e=="string"?document.getElementById(e):e}function At(e,n){var o=e.style[n]||e.currentStyle&&e.currentStyle[n];return(o=o&&o!=="auto"||!document.defaultView?o:(e=document.defaultView.getComputedStyle(e,null))?e[n]:null)==="auto"?null:o}function b(e,n,o){return e=document.createElement(e),e.className=n||"",o&&o.appendChild(e),e}function ht(e){var n=e.parentNode;n&&n.removeChild(e)}function ci(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function Pe(e){var n=e.parentNode;n&&n.lastChild!==e&&n.appendChild(e)}function be(e){var n=e.parentNode;n&&n.firstChild!==e&&n.insertBefore(e,n.firstChild)}function di(e,n){return e.classList!==void 0?e.classList.contains(n):0<(e=Zi(e)).length&&new RegExp("(^|\\s)"+n+"(\\s|$)").test(e)}function Y(e,n){var o;if(e.classList!==void 0)for(var a=k(n),u=0,_=a.length;u<_;u++)e.classList.add(a[u]);else di(e,n)||Si(e,((o=Zi(e))?o+" ":"")+n)}function rt(e,n){e.classList!==void 0?e.classList.remove(n):Si(e,x((" "+Zi(e)+" ").replace(" "+n+" "," ")))}function Si(e,n){e.className.baseVal===void 0?e.className=n:e.className.baseVal=n}function Zi(e){return(e=e.correspondingElement?e.correspondingElement:e).className.baseVal===void 0?e.className:e.className.baseVal}function Gt(e,n){if("opacity"in e.style)e.style.opacity=n;else if("filter"in e.style){var o=!1,a="DXImageTransform.Microsoft.Alpha";try{o=e.filters.item(a)}catch{if(n===1)return}n=Math.round(100*n),o?(o.Enabled=n!==100,o.Opacity=n):e.style.filter+=" progid:"+a+"(opacity="+n+")"}}function Oi(e){for(var n=document.documentElement.style,o=0;othis.options.maxZoom)?this.setZoom(e):this},panInsideBounds:function(a,n){this._enforcingBounds=!0;var o=this.getCenter(),a=this._limitCenter(o,this._zoom,tt(a));return o.equals(a)||this.panTo(a,n),this._enforcingBounds=!1,this},panInside:function(u,n){var _=W((n=n||{}).paddingTopLeft||n.padding||[0,0]),o=W(n.paddingBottomRight||n.padding||[0,0]),a=this.project(this.getCenter()),u=this.project(u),g=this.getPixelBounds(),_=J([g.min.add(_),g.max.subtract(o)]),g=_.getSize();return _.contains(u)||(this._enforcingBounds=!0,o=u.subtract(_.getCenter()),_=_.extend(u).getSize().subtract(g),a.x+=o.x<0?-_.x:_.x,a.y+=o.y<0?-_.y:_.y,this.panTo(this.unproject(a),n),this._enforcingBounds=!1),this},invalidateSize:function(e){if(!this._loaded)return this;e=E({animate:!1,pan:!0},e===!0?{animate:!0}:e);var n=this.getSize(),o=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),u=n.divideBy(2).round(),a=o.divideBy(2).round(),u=u.subtract(a);return u.x||u.y?(e.animate&&e.pan?this.panBy(u):(e.pan&&this._rawPanBy(u),this.fire("move"),e.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(A(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(e){var n,o;return e=this._locateOptions=E({timeout:1e4,watch:!1},e),"geolocation"in navigator?(n=A(this._handleGeolocationResponse,this),o=A(this._handleGeolocationError,this),e.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,e):navigator.geolocation.getCurrentPosition(n,o,e)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(e){var n;this._container._leaflet_id&&(n=e.code,e=e.message||(n===1?"permission denied":n===2?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:n,message:"Geolocation error: "+e+"."}))},_handleGeolocationResponse:function(e){if(this._container._leaflet_id){var n,o,a=new D(e.coords.latitude,e.coords.longitude),u=a.toBounds(2*e.coords.accuracy),_=this._locateOptions,g=(_.setView&&(n=this.getBoundsZoom(u),this.setView(a,_.maxZoom?Math.min(n,_.maxZoom):n)),{latlng:a,bounds:u,timestamp:e.timestamp});for(o in e.coords)typeof e.coords[o]=="number"&&(g[o]=e.coords[o]);this.fire("locationfound",g)}},addHandler:function(e,n){return n&&(n=this[e]=new n(this),this._handlers.push(n),this.options[e]&&n.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}for(var e in this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),ht(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(ct(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[e].remove();for(e in this._panes)ht(this._panes[e]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(e,n){return n=b("div","leaflet-pane"+(e?" leaflet-"+e.replace("Pane","")+"-pane":""),n||this._mapPane),e&&(this._panes[e]=n),n},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var e=this.getPixelBounds();return new nt(this.unproject(e.getBottomLeft()),this.unproject(e.getTopRight()))},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(w,n,m){w=tt(w),m=W(m||[0,0]);var T=this.getZoom()||0,a=this.getMinZoom(),u=this.getMaxZoom(),_=w.getNorthWest(),w=w.getSouthEast(),m=this.getSize().subtract(m),w=J(this.project(w,T),this.project(_,T)).getSize(),_=I.any3d?this.options.zoomSnap:1,g=m.x/w.x,m=m.y/w.y,w=n?Math.max(g,m):Math.min(g,m),T=this.getScaleZoom(w,T);return _&&(T=Math.round(T/(_/100))*(_/100),T=n?Math.ceil(T/_)*_:Math.floor(T/_)*_),Math.max(a,Math.min(u,T))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new N(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(e,n){return e=this._getTopLeftPoint(e,n),new S(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(e){return this.options.crs.getProjectedBounds(e===void 0?this.getZoom():e)},getPane:function(e){return typeof e=="string"?this._panes[e]:e},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(e,n){var o=this.options.crs;return n=n===void 0?this._zoom:n,o.scale(e)/o.scale(n)},getScaleZoom:function(a,n){var o=this.options.crs,a=(n=n===void 0?this._zoom:n,o.zoom(a*o.scale(n)));return isNaN(a)?1/0:a},project:function(e,n){return n=n===void 0?this._zoom:n,this.options.crs.latLngToPoint(O(e),n)},unproject:function(e,n){return n=n===void 0?this._zoom:n,this.options.crs.pointToLatLng(W(e),n)},layerPointToLatLng:function(e){return e=W(e).add(this.getPixelOrigin()),this.unproject(e)},latLngToLayerPoint:function(e){return this.project(O(e))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(e){return this.options.crs.wrapLatLng(O(e))},wrapLatLngBounds:function(e){return this.options.crs.wrapLatLngBounds(tt(e))},distance:function(e,n){return this.options.crs.distance(O(e),O(n))},containerPointToLayerPoint:function(e){return W(e).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(e){return W(e).add(this._getMapPanePos())},containerPointToLatLng:function(e){return e=this.containerPointToLayerPoint(W(e)),this.layerPointToLatLng(e)},latLngToContainerPoint:function(e){return this.layerPointToContainerPoint(this.latLngToLayerPoint(O(e)))},mouseEventToContainerPoint:function(e){return Ii(e,this._container)},mouseEventToLayerPoint:function(e){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e))},mouseEventToLatLng:function(e){return this.layerPointToLatLng(this.mouseEventToLayerPoint(e))},_initContainer:function(e){if(e=this._container=Zn(e),!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");j(e,"scroll",this._onScroll,this),this._containerId=Z(e)},_initLayout:function(){var e=this._container,n=(this._fadeAnimated=this.options.fadeAnimation&&I.any3d,Y(e,"leaflet-container"+(I.touch?" leaflet-touch":"")+(I.retina?" leaflet-retina":"")+(I.ielt9?" leaflet-oldie":"")+(I.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),At(e,"position"));n!=="absolute"&&n!=="relative"&&n!=="fixed"&&n!=="sticky"&&(e.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var e=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),ft(this._mapPane,new N(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Y(e.markerPane,"leaflet-zoom-hide"),Y(e.shadowPane,"leaflet-zoom-hide"))},_resetView:function(e,n,o){ft(this._mapPane,new N(0,0));var a=!this._loaded,u=(this._loaded=!0,n=this._limitZoom(n),this.fire("viewprereset"),this._zoom!==n);this._moveStart(u,o)._move(e,n)._moveEnd(u),this.fire("viewreset"),a&&this.fire("load")},_moveStart:function(e,n){return e&&this.fire("zoomstart"),n||this.fire("movestart"),this},_move:function(e,n,o,a){n===void 0&&(n=this._zoom);var u=this._zoom!==n;return this._zoom=n,this._lastCenter=e,this._pixelOrigin=this._getNewPixelOrigin(e),a?o&&o.pinch&&this.fire("zoom",o):((u||o&&o.pinch)&&this.fire("zoom",o),this.fire("move",o)),this},_moveEnd:function(e){return e&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return ct(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(e){ft(this._mapPane,this._getMapPanePos().subtract(e))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){this._targets={};var n=e?ot:j;n((this._targets[Z(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&n(window,"resize",this._onResize,this),I.any3d&&this.options.transform3DLimit&&(e?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){ct(this._resizeRequest),this._resizeRequest=it(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var e=this._getMapPanePos();Math.max(Math.abs(e.x),Math.abs(e.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(e,n){for(var o,a=[],u=n==="mouseout"||n==="mouseover",_=e.target||e.srcElement,g=!1;_;){if((o=this._targets[Z(_)])&&(n==="click"||n==="preclick")&&this._draggableMoved(o)){g=!0;break}if(o&&o.listens(n,!0)&&(u&&!un(_,e)||(a.push(o),u))||_===this._container)break;_=_.parentNode}return a=a.length||g||u||!this.listens(n,!0)?a:[this]},_isClickDisabled:function(e){for(;e&&e!==this._container;){if(e._leaflet_disable_click)return!0;e=e.parentNode}},_handleDOMEvent:function(e){var n,o=e.target||e.srcElement;!this._loaded||o._leaflet_disable_events||e.type==="click"&&this._isClickDisabled(o)||((n=e.type)==="mousedown"&&rn(o),this._fireDOMEvent(e,n))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(e,n,o){e.type==="click"&&((m=E({},e)).type="preclick",this._fireDOMEvent(m,m.type,o));var a=this._findEventTargets(e,n);if(o){for(var u=[],_=0;_this.options.zoomAnimationThreshold)return!1;var a=this.getZoomScale(n),a=this._getCenterOffset(e)._divideBy(1-1/a);if(o.animate!==!0&&!this.getSize().contains(a))return!1;it(function(){this._moveStart(!0,o.noMoveStart||!1)._animateZoom(e,n,!0)},this)}return!0},_animateZoom:function(e,n,o,a){this._mapPane&&(o&&(this._animatingZoom=!0,this._animateToCenter=e,this._animateToZoom=n,Y(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:e,zoom:n,noUpdate:a}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(A(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&rt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Yt(e){return new St(e)}var St=bt.extend({options:{position:"topright"},initialize:function(e){M(this,e)},getPosition:function(){return this.options.position},setPosition:function(e){var n=this._map;return n&&n.removeControl(this),this.options.position=e,n&&n.addControl(this),this},getContainer:function(){return this._container},addTo:function(a){this.remove(),this._map=a;var n=this._container=this.onAdd(a),o=this.getPosition(),a=a._controlCorners[o];return Y(n,"leaflet-control"),o.indexOf("bottom")!==-1?a.insertBefore(n,a.firstChild):a.appendChild(n),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(ht(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(e){this._map&&e&&0",n=document.createElement("div"),n.innerHTML=e,n.firstChild},_addItem:function(e){var n,o=document.createElement("label"),a=this._map.hasLayer(e.layer),a=(e.overlay?((n=document.createElement("input")).type="checkbox",n.className="leaflet-control-layers-selector",n.defaultChecked=a):n=this._createRadioElement("leaflet-base-layers_"+Z(this),a),this._layerControlInputs.push(n),n.layerId=Z(e.layer),j(n,"click",this._onInputClick,this),document.createElement("span")),u=(a.innerHTML=" "+e.name,document.createElement("span"));return o.appendChild(u),u.appendChild(n),u.appendChild(a),(e.overlay?this._overlaysList:this._baseLayersList).appendChild(o),this._checkDisabledLayers(),o},_onInputClick:function(){if(!this._preventClick){var e,n,o=this._layerControlInputs,a=[],u=[];this._handlingClick=!0;for(var _=o.length-1;0<=_;_--)e=o[_],n=this._getLayer(e.layerId).layer,e.checked?a.push(n):e.checked||u.push(n);for(_=0;_n.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var e=this._section,n=(this._preventClick=!0,j(e,"click",vt),this.expand(),this);setTimeout(function(){ot(e,"click",vt),n._preventClick=!1})}})),_i=St.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(e){var n="leaflet-control-zoom",o=b("div",n+" leaflet-bar"),a=this.options;return this._zoomInButton=this._createButton(a.zoomInText,a.zoomInTitle,n+"-in",o,this._zoomIn),this._zoomOutButton=this._createButton(a.zoomOutText,a.zoomOutTitle,n+"-out",o,this._zoomOut),this._updateDisabled(),e.on("zoomend zoomlevelschange",this._updateDisabled,this),o},onRemove:function(e){e.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(e){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(e.shiftKey?3:1))},_createButton:function(e,n,o,a,u){return o=b("a",o,a),o.innerHTML=e,o.href="#",o.title=n,o.setAttribute("role","button"),o.setAttribute("aria-label",n),Qt(o),j(o,"click",F),j(o,"click",u,this),j(o,"click",this._refocusOnMap,this),o},_updateDisabled:function(){var e=this._map,n="leaflet-disabled";rt(this._zoomInButton,n),rt(this._zoomOutButton,n),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&e._zoom!==e.getMinZoom()||(Y(this._zoomOutButton,n),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&e._zoom!==e.getMaxZoom()||(Y(this._zoomInButton,n),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ne=(B.mergeOptions({zoomControl:!0}),B.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new _i,this.addControl(this.zoomControl))}),St.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(e){var n="leaflet-control-scale",o=b("div",n),a=this.options;return this._addScales(a,n+"-line",o),e.on(a.updateWhenIdle?"moveend":"move",this._update,this),e.whenReady(this._update,this),o},onRemove:function(e){e.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(e,n,o){e.metric&&(this._mScale=b("div",n,o)),e.imperial&&(this._iScale=b("div",n,o))},_update:function(){var n=this._map,e=n.getSize().y/2,n=n.distance(n.containerPointToLatLng([0,e]),n.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(n)},_updateScales:function(e){this.options.metric&&e&&this._updateMetric(e),this.options.imperial&&e&&this._updateImperial(e)},_updateMetric:function(e){var n=this._getRoundNum(e);this._updateScale(this._mScale,n<1e3?n+" m":n/1e3+" km",n/e)},_updateImperial:function(a){var n,o,a=3.2808399*a;5280'+(I.inlineSvg?' ':"")+"Leaflet"},initialize:function(e){M(this,e),this._attributions={}},onAdd:function(e){for(var n in(e.attributionControl=this)._container=b("div","leaflet-control-attribution"),Qt(this._container),e._layers)e._layers[n].getAttribution&&this.addAttribution(e._layers[n].getAttribution());return this._update(),e.on("layeradd",this._addAttribution,this),this._container},onRemove:function(e){e.off("layeradd",this._addAttribution,this)},_addAttribution:function(e){e.layer.getAttribution&&(this.addAttribution(e.layer.getAttribution()),e.layer.once("remove",function(){this.removeAttribution(e.layer.getAttribution())},this))},setPrefix:function(e){return this.options.prefix=e,this._update(),this},addAttribution:function(e){return e&&(this._attributions[e]||(this._attributions[e]=0),this._attributions[e]++,this._update()),this},removeAttribution:function(e){return e&&this._attributions[e]&&(this._attributions[e]--,this._update()),this},_update:function(){if(this._map){var e,n=[];for(e in this._attributions)this._attributions[e]&&n.push(e);var o=[];this.options.prefix&&o.push(this.options.prefix),n.length&&o.push(n.join(", ")),this._container.innerHTML=o.join(' ')}}}),Zt=(B.mergeOptions({attributionControl:!0}),B.addInitHook(function(){this.options.attributionControl&&new fi().addTo(this)}),St.Layers=Re,St.Zoom=_i,St.Scale=Ne,St.Attribution=fi,Yt.layers=function(e,n,o){return new Re(e,n,o)},Yt.zoom=function(e){return new _i(e)},Yt.scale=function(e){return new Ne(e)},Yt.attribution=function(e){return new fi(e)},bt.extend({initialize:function(e){this._map=e},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),de=(Zt.addTo=function(e,n){return e.addHandler(n,this),this},{Events:Rt}),Di=I.touch?"touchstart mousedown":"mousedown",te=Tt.extend({options:{clickTolerance:3},initialize:function(e,n,o,a){M(this,a),this._element=e,this._dragStartTarget=n||e,this._preventOutline=o},enable:function(){this._enabled||(j(this._dragStartTarget,Di,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(te._dragging===this&&this.finishDrag(!0),ot(this._dragStartTarget,Di,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(e){var n,o;this._enabled&&(this._moved=!1,di(this._element,"leaflet-zoom-anim")||(e.touches&&e.touches.length!==1?te._dragging===this&&this.finishDrag():te._dragging||e.shiftKey||e.which!==1&&e.button!==1&&!e.touches||((te._dragging=this)._preventOutline&&rn(this._element),Be(),hi(),this._moving||(this.fire("down"),o=e.touches?e.touches[0]:e,n=On(this._element),this._startPoint=new N(o.clientX,o.clientY),this._startPos=Me(this._element),this._parentScale=an(n),o=e.type==="mousedown",j(document,o?"mousemove":"touchmove",this._onMove,this),j(document,o?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(e){var n;this._enabled&&(e.touches&&1w&&(T.push(m[C]),X=C);return Xn.max.x&&(o|=2),e.yn.max.y&&(o|=8),o}function Ce(e,_,o,a){var u=_.x,_=_.y,g=o.x-u,m=o.y-_,w=g*g+m*m;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()e.y!=a.y>e.y&&e.x<(a.x-o.x)*(e.y-o.y)/(a.y-o.y)+o.x&&(T=!T);return T||ee.prototype._containsPoint.call(this,e,!0)}}),re=K.extend({initialize:function(e,n){M(this,n),this._layers={},e&&this.addData(e)},addData:function(e){var n,o,a,u=_t(e)?e:e.features;if(u){for(n=0,o=u.length;n_.x&&(g=o.x+m-_.x+u.x),o.x-g-a.x<(m=0)&&(g=o.x-a.x),o.y+n+u.y>_.y&&(m=o.y+n-_.y+u.y),o.y-m-a.y<0&&(m=o.y-a.y),(g||m)&&(this.options.keepInView&&(this._autopanning=!0),e.fire("autopanstart").panBy([g,m]))))},_getAnchor:function(){return W(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Vi=(B.mergeOptions({closePopupOnClick:!0}),B.include({openPopup:function(e,n,o){return this._initOverlay(Ke,e,n,o).openOn(this),this},closePopup:function(e){return(e=arguments.length?e:this._popup)&&e.close(),this}}),Bt.include({bindPopup:function(e,n){return this._popup=this._initOverlay(Ke,this._popup,e,n),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(e){return this._popup&&(this instanceof K||(this._popup._source=this),this._popup._prepareOpen(e||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(e){return this._popup&&this._popup.setContent(e),this},getPopup:function(){return this._popup},_openPopup:function(e){var n;this._popup&&this._map&&(F(e),n=e.layer||e.target,this._popup._source!==n||n instanceof fe?(this._popup._source=n,this.openPopup(e.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(e.latlng))},_movePopup:function(e){this._popup.setLatLng(e.latlng)},_onKeyPress:function(e){e.originalEvent.keyCode===13&&this._openPopup(e)}}),ie.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(e){ie.prototype.onAdd.call(this,e),this.setOpacity(this.options.opacity),e.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(e){ie.prototype.onRemove.call(this,e),e.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var e=ie.prototype.getEvents.call(this);return this.options.permanent||(e.preclick=this.close),e},_initLayout:function(){var e="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=b("div",e),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+Z(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(e){var n,T=this._map,o=this._container,a=T.latLngToContainerPoint(T.getCenter()),T=T.layerPointToContainerPoint(e),u=this.options.direction,_=o.offsetWidth,g=o.offsetHeight,m=W(this.options.offset),w=this._getAnchor(),T=u==="top"?(n=_/2,g):u==="bottom"?(n=_/2,0):(n=u==="center"?_/2:u==="right"?0:u==="left"?_:T.xthis.options.maxZoom||athis.options.maxZoom||this.options.minZoom!==void 0&&uo.max.x)||!n.wrapLat&&(e.yo.max.y))return!1}return!this.options.bounds||(n=this._tileCoordsToBounds(e),tt(this.options.bounds).overlaps(n))},_keyToBounds:function(e){return this._tileCoordsToBounds(this._keyToTileCoords(e))},_tileCoordsToNwSe:function(e){var n=this._map,a=this.getTileSize(),o=e.scaleBy(a),a=o.add(a);return[n.unproject(o,e.z),n.unproject(a,e.z)]},_tileCoordsToBounds:function(e){return e=this._tileCoordsToNwSe(e),e=new nt(e[0],e[1]),e=this.options.noWrap?e:this._map.wrapLatLngBounds(e)},_tileCoordsToKey:function(e){return e.x+":"+e.y+":"+e.z},_keyToTileCoords:function(n){var n=n.split(":"),o=new N(+n[0],+n[1]);return o.z=+n[2],o},_removeTile:function(e){var n=this._tiles[e];n&&(ht(n.el),delete this._tiles[e],this.fire("tileunload",{tile:n.el,coords:this._keyToTileCoords(e)}))},_initTile:function(e){Y(e,"leaflet-tile");var n=this.getTileSize();e.style.width=n.x+"px",e.style.height=n.y+"px",e.onselectstart=h,e.onmousemove=h,I.ielt9&&this.options.opacity<1&&Gt(e,this.options.opacity)},_addTile:function(e,n){var o=this._getTilePos(e),a=this._tileCoordsToKey(e),u=this.createTile(this._wrapCoords(e),A(this._tileReady,this,e));this._initTile(u),this.createTile.length<2&&it(A(this._tileReady,this,e,null,u)),ft(u,o),this._tiles[a]={el:u,coords:e,current:!0},n.appendChild(u),this.fire("tileloadstart",{tile:u,coords:e})},_tileReady:function(e,n,o){n&&this.fire("tileerror",{error:n,tile:o,coords:e});var a=this._tileCoordsToKey(e);(o=this._tiles[a])&&(o.loaded=+new Date,this._map._fadeAnimated?(Gt(o.el,0),ct(this._fadeFrame),this._fadeFrame=it(this._updateOpacity,this)):(o.active=!0,this._pruneTiles()),n||(Y(o.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:o.el,coords:e})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),I.ielt9||!this._map._fadeAnimated?it(this._pruneTiles,this):setTimeout(A(this._pruneTiles,this),250)))},_getTilePos:function(e){return e.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(e){var n=new N(this._wrapX?gt(e.x,this._wrapX):e.x,this._wrapY?gt(e.y,this._wrapY):e.y);return n.z=e.z,n},_pxBoundsToTileRange:function(e){var n=this.getTileSize();return new S(e.min.unscaleBy(n).floor(),e.max.unscaleBy(n).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var e in this._tiles)if(!this._tiles[e].loaded)return!1;return!0}}),ae=Ye.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(e,n){this._url=e,(n=M(this,n)).detectRetina&&I.retina&&0')}}catch{}return function(e){return document.createElement("<"+e+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),xi={_initContainer:function(){this._container=b("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Ht.prototype._update.call(this),this.fire("update"))},_initPath:function(e){var n=e._container=Xe("shape");Y(n,"leaflet-vml-shape "+(this.options.className||"")),n.coordsize="1 1",e._path=Xe("path"),n.appendChild(e._path),this._updateStyle(e),this._layers[Z(e)]=e},_addPath:function(e){var n=e._container;this._container.appendChild(n),e.options.interactive&&e.addInteractiveTarget(n)},_removePath:function(e){var n=e._container;ht(n),e.removeInteractiveTarget(n),delete this._layers[Z(e)]},_updateStyle:function(e){var n=e._stroke,o=e._fill,a=e.options,u=e._container;u.stroked=!!a.stroke,u.filled=!!a.fill,a.stroke?(n=n||(e._stroke=Xe("stroke")),u.appendChild(n),n.weight=a.weight+"px",n.color=a.color,n.opacity=a.opacity,a.dashArray?n.dashStyle=_t(a.dashArray)?a.dashArray.join(" "):a.dashArray.replace(/( *, *)/g," "):n.dashStyle="",n.endcap=a.lineCap.replace("butt","flat"),n.joinstyle=a.lineJoin):n&&(u.removeChild(n),e._stroke=null),a.fill?(o=o||(e._fill=Xe("fill")),u.appendChild(o),o.color=a.fillColor||a.color,o.opacity=a.fillOpacity):o&&(u.removeChild(o),e._fill=null)},_updateCircle:function(e){var n=e._point.round(),o=Math.round(e._radius),a=Math.round(e._radiusY||o);this._setPath(e,e._empty()?"M0 0":"AL "+n.x+","+n.y+" "+o+","+a+" 0,23592600")},_setPath:function(e,n){e._path.v=n},_bringToFront:function(e){Pe(e._container)},_bringToBack:function(e){be(e._container)}},Je=I.vml?Xe:Mi,Se=Ht.extend({_initContainer:function(){this._container=Je("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Je("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ht(this._container),ot(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var e,n,o;this._map._animatingZoom&&this._bounds||(Ht.prototype._update.call(this),n=(e=this._bounds).getSize(),o=this._container,this._svgSize&&this._svgSize.equals(n)||(this._svgSize=n,o.setAttribute("width",n.x),o.setAttribute("height",n.y)),ft(o,e.min),o.setAttribute("viewBox",[e.min.x,e.min.y,n.x,n.y].join(" ")),this.fire("update"))},_initPath:function(e){var n=e._path=Je("path");e.options.className&&Y(n,e.options.className),e.options.interactive&&Y(n,"leaflet-interactive"),this._updateStyle(e),this._layers[Z(e)]=e},_addPath:function(e){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(e._path),e.addInteractiveTarget(e._path)},_removePath:function(e){ht(e._path),e.removeInteractiveTarget(e._path),delete this._layers[Z(e)]},_updatePath:function(e){e._project(),e._update()},_updateStyle:function(o){var n=o._path,o=o.options;n&&(o.stroke?(n.setAttribute("stroke",o.color),n.setAttribute("stroke-opacity",o.opacity),n.setAttribute("stroke-width",o.weight),n.setAttribute("stroke-linecap",o.lineCap),n.setAttribute("stroke-linejoin",o.lineJoin),o.dashArray?n.setAttribute("stroke-dasharray",o.dashArray):n.removeAttribute("stroke-dasharray"),o.dashOffset?n.setAttribute("stroke-dashoffset",o.dashOffset):n.removeAttribute("stroke-dashoffset")):n.setAttribute("stroke","none"),o.fill?(n.setAttribute("fill",o.fillColor||o.color),n.setAttribute("fill-opacity",o.fillOpacity),n.setAttribute("fill-rule",o.fillRule||"evenodd")):n.setAttribute("fill","none"))},_updatePoly:function(e,n){this._setPath(e,Pn(e._parts,n))},_updateCircle:function(e){var a=e._point,n=Math.max(Math.round(e._radius),1),o="a"+n+","+(Math.max(Math.round(e._radiusY),1)||n)+" 0 1,0 ",a=e._empty()?"M0 0":"M"+(a.x-n)+","+a.y+o+2*n+",0 "+o+2*-n+",0 ";this._setPath(e,a)},_setPath:function(e,n){e._path.setAttribute("d",n)},_bringToFront:function(e){Pe(e._path)},_bringToBack:function(e){be(e._path)}});function Rn(e){return I.svg||I.vml?new Se(e):null}I.vml&&Se.include(xi),B.include({getRenderer:function(e){return e=(e=e.options.renderer||this._getPaneRenderer(e.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(e){var n;return e!=="overlayPane"&&e!==void 0&&((n=this._paneRenderers[e])===void 0&&(n=this._createRenderer({pane:e}),this._paneRenderers[e]=n),n)},_createRenderer:function(e){return this.options.preferCanvas&&gn(e)||Rn(e)}});var Nn=Ue.extend({initialize:function(e,n){Ue.prototype.initialize.call(this,this._boundsToLatLngs(e),n)},setBounds:function(e){return this.setLatLngs(this._boundsToLatLngs(e))},_boundsToLatLngs:function(e){return[(e=tt(e)).getSouthWest(),e.getNorthWest(),e.getNorthEast(),e.getSouthEast()]}});Se.create=Je,Se.pointsToPath=Pn,re.geometryToLayer=qe,re.coordsToLatLng=Ut,re.coordsToLatLngs=Ni,re.latLngToCoords=Fi,re.latLngsToCoords=Jt,re.getFeature=ze,re.asFeature=yi,B.mergeOptions({boxZoom:!0});var ne=Zt.extend({initialize:function(e){this._map=e,this._container=e._container,this._pane=e._panes.overlayPane,this._resetStateTimeout=0,e.on("unload",this._destroy,this)},addHooks:function(){j(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){ot(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ht(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(e){if(!e.shiftKey||e.which!==1&&e.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),hi(),Be(),this._startPoint=this._map.mouseEventToContainerPoint(e),j(document,{contextmenu:F,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(n){this._moved||(this._moved=!0,this._box=b("div","leaflet-zoom-box",this._container),Y(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(n);var n=new S(this._point,this._startPoint),o=n.getSize();ft(this._box,n.min),this._box.style.width=o.x+"px",this._box.style.height=o.y+"px"},_finish:function(){this._moved&&(ht(this._box),rt(this._container,"leaflet-crosshair")),ki(),sn(),ot(document,{contextmenu:F,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(e){e.which!==1&&e.button!==1||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(A(this._resetState,this),0),e=new nt(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})))},_onKeyDown:function(e){e.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),ji=(B.addInitHook("addHandler","boxZoom",ne),B.mergeOptions({doubleClickZoom:!0}),Zt.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(e){var n=this._map,a=n.getZoom(),o=n.options.zoomDelta,a=e.originalEvent.shiftKey?a-o:a+o;n.options.doubleClickZoom==="center"?n.setZoom(a):n.setZoomAround(e.containerPoint,a)}})),xt=(B.addInitHook("addHandler","doubleClickZoom",ji),B.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),Zt.extend({addHooks:function(){var e;this._draggable||(e=this._map,this._draggable=new te(e._mapPane,e._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),e.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),e.on("zoomend",this._onZoomEnd,this),e.whenReady(this._onZoomEnd,this))),Y(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){rt(this._map._container,"leaflet-grab"),rt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var e,n=this._map;n._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(e=tt(this._map.options.maxBounds),this._offsetLimit=J(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,n.fire("movestart").fire("dragstart"),n.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(e){var n,o;this._map.options.inertia&&(n=this._lastTime=+new Date,o=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(o),this._times.push(n),this._prunePositions(n)),this._map.fire("move",e).fire("drag",e)},_prunePositions:function(e){for(;1n.max.x&&(e.x=this._viscousLimit(e.x,n.max.x)),e.y>n.max.y&&(e.y=this._viscousLimit(e.y,n.max.y)),this._draggable._newPos=this._draggable._startPos.add(e))},_onPreDragWrap:function(){var u=this._worldWidth,e=Math.round(u/2),n=this._initialWorldOffset,a=this._draggable._newPos.x,o=(a-e+n)%u+e-n,a=(a+e+n)%u-e-n,u=Math.abs(o+n)n.getMaxZoom()&&1{"use strict";L.PathDraggable=L.Draggable.extend({initialize:function(d){this._path=d,this._canvas=d._map.getRenderer(d)instanceof L.Canvas;var E=this._canvas?this._path._map.getRenderer(this._path)._container:this._path._path;L.Draggable.prototype.initialize.call(this,E,E,!0)},_updatePosition:function(){var d={originalEvent:this._lastEvent};this.fire("drag",d)},_onDown:function(d){var E=d.touches?d.touches[0]:d;this._startPoint=new L.Point(E.clientX,E.clientY),!(this._canvas&&!this._path._containsPoint(this._path._map.mouseEventToLayerPoint(E)))&&L.Draggable.prototype._onDown.call(this,d)}});L.Handler.PathDrag=L.Handler.extend({initialize:function(d){this._path=d},getEvents:function(){return{dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd}},addHooks:function(){this._draggable||(this._draggable=new L.PathDraggable(this._path)),this._draggable.on(this.getEvents(),this).enable(),L.DomUtil.addClass(this._draggable._element,"leaflet-path-draggable")},removeHooks:function(){this._draggable.off(this.getEvents(),this).disable(),L.DomUtil.removeClass(this._draggable._element,"leaflet-path-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._startPoint=this._draggable._startPoint,this._path.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(d){var E=this._path,G=d.originalEvent.touches&&d.originalEvent.touches.length===1?d.originalEvent.touches[0]:d.originalEvent,Et=L.point(G.clientX,G.clientY),A=E._map.layerPointToLatLng(Et);this._offset=Et.subtract(this._startPoint),this._startPoint=Et,this._path.eachLatLng(this.updateLatLng,this),E.redraw(),d.latlng=A,d.offset=this._offset,E.fire("drag",d),d.latlng=this._path.getCenter?this._path.getCenter():this._path.getLatLng(),E.fire("move",d)},_onDragEnd:function(d){this._path._bounds&&this.resetBounds(),this._path.fire("moveend").fire("dragend",d)},latLngToLayerPoint:function(d){var E=this._path._map.project(L.latLng(d));return E._subtract(this._path._map.getPixelOrigin())},updateLatLng:function(d){var E=this.latLngToLayerPoint(d);E._add(this._offset);var G=this._path._map.layerPointToLatLng(E);d.lat=G.lat,d.lng=G.lng},resetBounds:function(){this._path._bounds=new L.LatLngBounds,this._path.eachLatLng(function(d){this._bounds.extend(d)})}});L.Path.include({eachLatLng:function(d,E){E=E||this;var G=function(Et){for(var A=0;A{(function(d,E){typeof qn=="object"&&typeof Mo<"u"?E(qn):typeof define=="function"&&define.amd?define(["exports"],E):(d=typeof globalThis<"u"?globalThis:d||self,E(d.leaflet={}))})(qn,(function(d){"use strict";var E="1.9.4";function G(t){var i,s,r,l;for(s=1,r=arguments.length;s"u"||!L||!L.Mixin)){t=_t(t)?t:[t];for(var i=0;i0?Math.floor(t):Math.ceil(t)};U.prototype={clone:function(){return new U(this.x,this.y)},add:function(t){return this.clone()._add(S(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(S(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new U(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new U(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=W(this.x),this.y=W(this.y),this},distanceTo:function(t){t=S(t);var i=t.x-this.x,s=t.y-this.y;return Math.sqrt(i*i+s*s)},equals:function(t){return t=S(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=S(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+p(this.x)+", "+p(this.y)+")"}};function S(t,i,s){return t instanceof U?t:_t(t)?new U(t[0],t[1]):t==null?t:typeof t=="object"&&"x"in t&&"y"in t?new U(t.x,t.y):new U(t,i,s)}function J(t,i){if(t)for(var s=i?[t,i]:t,r=0,l=s.length;r=this.min.x&&s.x<=this.max.x&&i.y>=this.min.y&&s.y<=this.max.y},intersects:function(t){t=nt(t);var i=this.min,s=this.max,r=t.min,l=t.max,c=l.x>=i.x&&r.x<=s.x,f=l.y>=i.y&&r.y<=s.y;return c&&f},overlaps:function(t){t=nt(t);var i=this.min,s=this.max,r=t.min,l=t.max,c=l.x>i.x&&r.xi.y&&r.y=i.lat&&l.lat<=s.lat&&r.lng>=i.lng&&l.lng<=s.lng},intersects:function(t){t=D(t);var i=this._southWest,s=this._northEast,r=t.getSouthWest(),l=t.getNorthEast(),c=l.lat>=i.lat&&r.lat<=s.lat,f=l.lng>=i.lng&&r.lng<=s.lng;return c&&f},overlaps:function(t){t=D(t);var i=this._southWest,s=this._northEast,r=t.getSouthWest(),l=t.getNorthEast(),c=l.lat>i.lat&&r.lati.lng&&r.lng1,ki=(function(){var t=!1;try{var i=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("testPassiveEventSupport",h,i),window.removeEventListener("testPassiveEventSupport",h,i)}catch{}return t})(),zi=(function(){return!!document.createElement("canvas").getContext})(),ui=!!(document.createElementNS&&we("svg").createSVGRect),on=!!ui&&(function(){var t=document.createElement("div");return t.innerHTML="",(t.firstChild&&t.firstChild.namespaceURI)==="http://www.w3.org/2000/svg"})(),li=!ui&&(function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&typeof i.adj=="object"}catch{return!1}})(),Sn=navigator.platform.indexOf("Mac")===0,Zn=navigator.platform.indexOf("Linux")===0;function At(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var b={ie:si,ielt9:Yn,edge:bn,webkit:Ji,android:Tn,android23:Mn,androidStock:$i,opera:Ae,chrome:Kt,gecko:I,safari:En,phantom:Qi,opera12:tn,win:Cn,ie3d:Ei,webkit3d:Ci,gecko3d:Le,any3d:kn,mobile:ri,mobileWebkit:Jn,mobileWebkit3d:$n,msPointer:en,pointer:ai,touch:Qn,touchNative:zn,mobileOpera:nn,mobileGecko:Ie,retina:hi,passiveEvents:ki,canvas:zi,svg:ui,vml:li,inlineSvg:on,mac:Sn,linux:Zn},ht=b.msPointer?"MSPointerDown":"pointerdown",ci=b.msPointer?"MSPointerMove":"pointermove",Pe=b.msPointer?"MSPointerUp":"pointerup",be=b.msPointer?"MSPointerCancel":"pointercancel",di={touchstart:ht,touchmove:ci,touchend:Pe,touchcancel:be},Y={touchstart:sn,touchmove:Be,touchend:Be,touchcancel:Be},rt={},Si=!1;function Zi(t,i,s){return i==="touchstart"&&Me(),Y[i]?(s=Y[i].bind(this,s),t.addEventListener(di[i],s,!1),s):(console.warn("wrong event specified:",i),h)}function Gt(t,i,s){if(!di[i]){console.warn("wrong event specified:",i);return}t.removeEventListener(di[i],s,!1)}function Oi(t){rt[t.pointerId]=t}function Te(t){rt[t.pointerId]&&(rt[t.pointerId]=t)}function ft(t){delete rt[t.pointerId]}function Me(){Si||(document.addEventListener(ht,Oi,!0),document.addEventListener(ci,Te,!0),document.addEventListener(Pe,ft,!0),document.addEventListener(be,ft,!0),Si=!0)}function Be(t,i){if(i.pointerType!==(i.MSPOINTER_TYPE_MOUSE||"mouse")){i.touches=[];for(var s in rt)i.touches.push(rt[s]);i.changedTouches=[i],t(i)}}function sn(t,i){i.MSPOINTER_TYPE_TOUCH&&i.pointerType===i.MSPOINTER_TYPE_TOUCH&&mt(i),Be(t,i)}function rn(t){var i={},s,r;for(r in t)s=t[r],i[r]=s&&s.bind?s.bind(t):s;return t=i,i.type="dblclick",i.detail=2,i.isTrusted=!1,i._simulated=!0,i}var Ai=200;function On(t,i){t.addEventListener("dblclick",i);var s=0,r;function l(c){if(c.detail!==1){r=c.detail;return}if(!(c.pointerType==="mouse"||c.sourceCapabilities&&!c.sourceCapabilities.firesTouchEvents)){var f=_e(c);if(!(f.some(function(y){return y instanceof HTMLLabelElement&&y.attributes.for})&&!f.some(function(y){return y instanceof HTMLInputElement||y instanceof HTMLSelectElement}))){var v=Date.now();v-s<=Ai?(r++,r===2&&i(rn(c))):r=1,s=v}}}return t.addEventListener("click",l),{dblclick:i,simDblclick:l}}function an(t,i){t.removeEventListener("dblclick",i.dblclick),t.removeEventListener("click",i.simDblclick)}var j=De(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),It=De(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),ot=It==="webkitTransition"||It==="OTransition"?It+"End":"transitionend";function hn(t){return typeof t=="string"?document.getElementById(t):t}function Ee(t,i){var s=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!s||s==="auto")&&document.defaultView){var r=document.defaultView.getComputedStyle(t,null);s=r?r[i]:null}return s==="auto"?null:s}function Q(t,i,s){var r=document.createElement(t);return r.className=i||"",s&&s.appendChild(r),r}function at(t){var i=t.parentNode;i&&i.removeChild(t)}function $t(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function le(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function Qt(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function vt(t,i){if(t.classList!==void 0)return t.classList.contains(i);var s=Bi(t);return s.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(s)}function F(t,i){if(t.classList!==void 0)for(var s=k(i),r=0,l=s.length;r0?2*window.devicePixelRatio:1;function _n(t){return b.edge?t.wheelDeltaY/2:t.deltaY&&t.deltaMode===0?-t.deltaY/dn:t.deltaY&&t.deltaMode===1?-t.deltaY*20:t.deltaY&&t.deltaMode===2?-t.deltaY*60:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?-t.detail*20:t.detail?t.detail/-32765*60:0}function We(t,i){var s=i.relatedTarget;if(!s)return!0;try{for(;s&&s!==t;)s=s.parentNode}catch{return!1}return s!==t}var Bt={__proto__:null,on:V,off:st,stopPropagation:wt,disableScrollPropagation:Ri,disableClickPropagation:He,preventDefault:mt,stop:Ft,getPropagationPath:_e,getMousePosition:gi,getWheelDelta:_n,isExternalTarget:We,addListener:V,removeListener:st},ke=N.extend({run:function(t,i,s,r){this.stop(),this._el=t,this._inProgress=!0,this._duration=s||.25,this._easeOutPower=1/Math.max(r||.5,.2),this._startPos=Yt(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=it(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,s=this._duration*1e3;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var s=this.getCenter(),r=this._limitCenter(s,this._zoom,D(t));return s.equals(r)||this.panTo(r,i),this._enforcingBounds=!1,this},panInside:function(t,i){i=i||{};var s=S(i.paddingTopLeft||i.padding||[0,0]),r=S(i.paddingBottomRight||i.padding||[0,0]),l=this.project(this.getCenter()),c=this.project(t),f=this.getPixelBounds(),v=nt([f.min.add(s),f.max.subtract(r)]),y=v.getSize();if(!v.contains(c)){this._enforcingBounds=!0;var P=c.subtract(v.getCenter()),z=v.extend(c).getSize().subtract(y);l.x+=P.x<0?-z.x:z.x,l.y+=P.y<0?-z.y:z.y,this.panTo(this.unproject(l),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=G({animate:!1,pan:!0},t===!0?{animate:!0}:t);var i=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var s=this.getSize(),r=i.divideBy(2).round(),l=s.divideBy(2).round(),c=r.subtract(l);return!c.x&&!c.y?this:(t.animate&&t.pan?this.panBy(c):(t.pan&&this._rawPanBy(c),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(A(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:i,newSize:s}))},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=G({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=A(this._handleGeolocationResponse,this),s=A(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,s,t):navigator.geolocation.getCurrentPosition(i,s,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){if(this._container._leaflet_id){var i=t.code,s=t.message||(i===1?"permission denied":i===2?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+s+"."})}},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var i=t.coords.latitude,s=t.coords.longitude,r=new O(i,s),l=r.toBounds(t.coords.accuracy*2),c=this._locateOptions;if(c.setView){var f=this.getBoundsZoom(l);this.setView(r,c.maxZoom?Math.min(f,c.maxZoom):f)}var v={latlng:r,bounds:l,timestamp:t.timestamp};for(var y in t.coords)typeof t.coords[y]=="number"&&(v[y]=t.coords[y]);this.fire("locationfound",v)}},addHandler:function(t,i){if(!i)return this;var s=this[t]=new i(this);return this._handlers.push(s),this.options[t]&&s.enable(),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch{this._container._leaflet_id=void 0,this._containerId=void 0}this._locationWatchId!==void 0&&this.stopLocate(),this._stop(),at(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(ct(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)at(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var s="leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),r=Q("div",s,i||this._mapPane);return t&&(this._panes[t]=r),r},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),i=this.unproject(t.getBottomLeft()),s=this.unproject(t.getTopRight());return new tt(i,s)},getMinZoom:function(){return this.options.minZoom===void 0?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===void 0?this._layersMaxZoom===void 0?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,s){t=D(t),s=S(s||[0,0]);var r=this.getZoom()||0,l=this.getMinZoom(),c=this.getMaxZoom(),f=t.getNorthWest(),v=t.getSouthEast(),y=this.getSize().subtract(s),P=nt(this.project(v,r),this.project(f,r)).getSize(),z=b.any3d?this.options.zoomSnap:1,R=y.x/P.x,$=y.y/P.y,jt=i?Math.max(R,$):Math.min(R,$);return r=this.getScaleZoom(jt,r),z&&(r=Math.round(r/(z/100))*(z/100),r=i?Math.ceil(r/z)*z:Math.floor(r/z)*z),Math.max(l,Math.min(c,r))},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new U(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var s=this._getTopLeftPoint(t,i);return new J(s,s.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(t===void 0?this.getZoom():t)},getPane:function(t){return typeof t=="string"?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var s=this.options.crs;return i=i===void 0?this._zoom:i,s.scale(t)/s.scale(i)},getScaleZoom:function(t,i){var s=this.options.crs;i=i===void 0?this._zoom:i;var r=s.zoom(t*s.scale(i));return isNaN(r)?1/0:r},project:function(t,i){return i=i===void 0?this._zoom:i,this.options.crs.latLngToPoint(q(t),i)},unproject:function(t,i){return i=i===void 0?this._zoom:i,this.options.crs.pointToLatLng(S(t),i)},layerPointToLatLng:function(t){var i=S(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){var i=this.project(q(t))._round();return i._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(q(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(D(t))},distance:function(t,i){return this.options.crs.distance(q(t),q(i))},containerPointToLayerPoint:function(t){return S(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return S(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(S(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(q(t)))},mouseEventToContainerPoint:function(t){return gi(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=hn(t);if(i){if(i._leaflet_id)throw new Error("Map container is already initialized.")}else throw new Error("Map container not found.");V(i,"scroll",this._onScroll,this),this._containerId=Z(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&b.any3d,F(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=Ee(t,"position");i!=="absolute"&&i!=="relative"&&i!=="fixed"&&i!=="sticky"&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),B(this._mapPane,new U(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(F(t.markerPane,"leaflet-zoom-hide"),F(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i,s){B(this._mapPane,new U(0,0));var r=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var l=this._zoom!==i;this._moveStart(l,s)._move(t,i)._moveEnd(l),this.fire("viewreset"),r&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,s,r){i===void 0&&(i=this._zoom);var l=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),r?s&&s.pinch&&this.fire("zoom",s):((l||s&&s.pinch)&&this.fire("zoom",s),this.fire("move",s)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return ct(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){B(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[Z(this._container)]=this;var i=t?st:V;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){ct(this._resizeRequest),this._resizeRequest=it(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var s=[],r,l=i==="mouseout"||i==="mouseover",c=t.target||t.srcElement,f=!1;c;){if(r=this._targets[Z(c)],r&&(i==="click"||i==="preclick")&&this._draggableMoved(r)){f=!0;break}if(r&&r.listens(i,!0)&&(l&&!We(c,t)||(s.push(r),l))||c===this._container)break;c=c.parentNode}return!s.length&&!f&&!l&&this.listens(i,!0)&&(s=[this]),s},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var i=t.target||t.srcElement;if(!(!this._loaded||i._leaflet_disable_events||t.type==="click"&&this._isClickDisabled(i))){var s=t.type;s==="mousedown"&&te(i),this._fireDOMEvent(t,s)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,s){if(t.type==="click"){var r=G({},t);r.type="preclick",this._fireDOMEvent(r,r.type,s)}var l=this._findEventTargets(t,i);if(s){for(var c=[],f=0;f0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),s=this.getMaxZoom(),r=b.any3d?this.options.zoomSnap:1;return r&&(t=Math.round(t/r)*r),Math.max(i,Math.min(s,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){dt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var s=this._getCenterOffset(t)._trunc();return(i&&i.animate)!==!0&&!this.getSize().contains(s)?!1:(this.panBy(s,i),!0)},_createAnimProxy:function(){var t=this._proxy=Q("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(i){var s=j,r=this._proxy.style[s];ce(this._proxy,this.project(i.center,i.zoom),this.getZoomScale(i.zoom,1)),r===this._proxy.style[s]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",this._animMoveEnd,this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){at(this._proxy),this.off("load moveend",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),i=this.getZoom();ce(this._proxy,this.project(t,i),this.getZoomScale(i,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,s){if(this._animatingZoom)return!0;if(s=s||{},!this._zoomAnimated||s.animate===!1||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var r=this.getZoomScale(i),l=this._getCenterOffset(t)._divideBy(1-1/r);return s.animate!==!0&&!this.getSize().contains(l)?!1:(it(function(){this._moveStart(!0,s.noMoveStart||!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,s,r){this._mapPane&&(s&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,F(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:r}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(A(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&dt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ve(t,i){return new K(t,i)}var Ot=bt.extend({options:{position:"topright"},initialize:function(t){M(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),s=this.getPosition(),r=t._controlCorners[s];return F(i,"leaflet-control"),s.indexOf("bottom")!==-1?r.insertBefore(i,r.firstChild):r.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map?(at(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),je=function(t){return new Ot(t)};K.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},i="leaflet-",s=this._controlContainer=Q("div",i+"control-container",this._container);function r(l,c){var f=i+l+" "+i+c;t[l+c]=Q("div",f,s)}r("top","left"),r("top","right"),r("bottom","left"),r("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)at(this._controlCorners[t]);at(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var vi=Ot.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,s,r){return s1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(Z(t.target)),s=i.overlay?t.type==="add"?"overlayadd":"overlayremove":t.type==="add"?"baselayerchange":null;s&&this._map.fire(s,i)},_createRadioElement:function(t,i){var s='",r=document.createElement("div");return r.innerHTML=s,r.firstChild},_addItem:function(t){var i=document.createElement("label"),s=this._map.hasLayer(t.layer),r;t.overlay?(r=document.createElement("input"),r.type="checkbox",r.className="leaflet-control-layers-selector",r.defaultChecked=s):r=this._createRadioElement("leaflet-base-layers_"+Z(this),s),this._layerControlInputs.push(r),r.layerId=Z(t.layer),V(r,"click",this._onInputClick,this);var l=document.createElement("span");l.innerHTML=" "+t.name;var c=document.createElement("span");i.appendChild(c),c.appendChild(r),c.appendChild(l);var f=t.overlay?this._overlaysList:this._baseLayersList;return f.appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t=this._layerControlInputs,i,s,r=[],l=[];this._handlingClick=!0;for(var c=t.length-1;c>=0;c--)i=t[c],s=this._getLayer(i.layerId).layer,i.checked?r.push(s):i.checked||l.push(s);for(c=0;c=0;l--)i=t[l],s=this._getLayer(i.layerId).layer,i.disabled=s.options.minZoom!==void 0&&rs.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;this._preventClick=!0,V(t,"click",mt),this.expand();var i=this;setTimeout(function(){st(t,"click",mt),i._preventClick=!1})}}),fe=function(t,i,s){return new vi(t,i,s)},Ge=Ot.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",s=Q("div",i+" leaflet-bar"),r=this.options;return this._zoomInButton=this._createButton(r.zoomInText,r.zoomInTitle,i+"-in",s,this._zoomIn),this._zoomOutButton=this._createButton(r.zoomOutText,r.zoomOutTitle,i+"-out",s,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),s},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,s,r,l){var c=Q("a",s,r);return c.innerHTML=t,c.href="#",c.title=i,c.setAttribute("role","button"),c.setAttribute("aria-label",i),He(c),V(c,"click",Ft),V(c,"click",l,this),V(c,"click",this._refocusOnMap,this),c},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";dt(this._zoomInButton,i),dt(this._zoomOutButton,i),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),(this._disabled||t._zoom===t.getMinZoom())&&(F(this._zoomOutButton,i),this._zoomOutButton.setAttribute("aria-disabled","true")),(this._disabled||t._zoom===t.getMaxZoom())&&(F(this._zoomInButton,i),this._zoomInButton.setAttribute("aria-disabled","true"))}});K.mergeOptions({zoomControl:!0}),K.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ge,this.addControl(this.zoomControl))});var fn=function(t){return new Ge(t)},ee=Ot.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",s=Q("div",i),r=this.options;return this._addScales(r,i+"-line",s),t.on(r.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),s},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,s){t.metric&&(this._mScale=Q("div",i,s)),t.imperial&&(this._iScale=Q("div",i,s))},_update:function(){var t=this._map,i=t.getSize().y/2,s=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(s)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),s=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,s,i/t)},_updateImperial:function(t){var i=t*3.2808399,s,r,l;i>5280?(s=i/5280,r=this._getRoundNum(s),this._updateScale(this._iScale,r+" mi",r/s)):(l=this._getRoundNum(i),this._updateScale(this._iScale,l+" ft",l/i))},_updateScale:function(t,i,s){t.style.width=Math.round(this.options.maxWidth*s)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),s=t/i;return s=s>=10?10:s>=5?5:s>=3?3:s>=2?2:1,i*s}}),Ue=function(t){return new ee(t)},re='',qe=Ot.extend({options:{position:"bottomright",prefix:''+(b.inlineSvg?re+" ":"")+"Leaflet"},initialize:function(t){M(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=Q("div","leaflet-control-attribution"),He(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var s=[];this.options.prefix&&s.push(this.options.prefix),t.length&&s.push(t.join(", ")),this._container.innerHTML=s.join(' ')}}});K.mergeOptions({attributionControl:!0}),K.addInitHook(function(){this.options.attributionControl&&new qe().addTo(this)});var In=function(t){return new qe(t)};Ot.Layers=vi,Ot.Zoom=Ge,Ot.Scale=ee,Ot.Attribution=qe,je.layers=fe,je.zoom=fn,je.scale=Ue,je.attribution=In;var Ut=bt.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ut.addTo=function(t,i){return t.addHandler(i,this),this};var Ni={Events:Tt},Fi=b.touch?"touchstart mousedown":"mousedown",Jt=N.extend({options:{clickTolerance:3},initialize:function(t,i,s,r){M(this,r),this._element=t,this._dragStartTarget=i||t,this._preventOutline=s},enable:function(){this._enabled||(V(this._dragStartTarget,Fi,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Jt._dragging===this&&this.finishDrag(!0),st(this._dragStartTarget,Fi,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(this._enabled&&(this._moved=!1,!vt(this._element,"leaflet-zoom-anim"))){if(t.touches&&t.touches.length!==1){Jt._dragging===this&&this.finishDrag();return}if(!(Jt._dragging||t.shiftKey||t.which!==1&&t.button!==1&&!t.touches)&&(Jt._dragging=this,this._preventOutline&&te(this._element),fi(),St(),!this._moving)){this.fire("down");var i=t.touches?t.touches[0]:t,s=ln(this._element);this._startPoint=new U(i.clientX,i.clientY),this._startPos=Yt(this._element),this._parentScale=mi(s);var r=t.type==="mousedown";V(document,r?"mousemove":"touchmove",this._onMove,this),V(document,r?"mouseup":"touchend touchcancel",this._onUp,this)}}},_onMove:function(t){if(this._enabled){if(t.touches&&t.touches.length>1){this._moved=!0;return}var i=t.touches&&t.touches.length===1?t.touches[0]:t,s=new U(i.clientX,i.clientY)._subtract(this._startPoint);!s.x&&!s.y||Math.abs(s.x)+Math.abs(s.y)c&&(f=v,c=y);c>s&&(i[f]=1,Ke(t,i,s,r,f),Ke(t,i,s,f,l))}function Vi(t,i){for(var s=[t[0]],r=1,l=0,c=t.length;ri&&(s.push(t[r]),l=r);return li.max.x&&(s|=2),t.yi.max.y&&(s|=8),s}function Dn(t,i){var s=i.x-t.x,r=i.y-t.y;return s*s+r*r}function Ht(t,i,s,r){var l=i.x,c=i.y,f=s.x-l,v=s.y-c,y=f*f+v*v,P;return y>0&&(P=((t.x-l)*f+(t.y-c)*v)/y,P>1?(l=s.x,c=s.y):P>0&&(l+=f*P,c+=v*P)),f=t.x-l,v=t.y-c,r?f*f+v*v:new U(l,c)}function Wt(t){return!_t(t[0])||typeof t[0][0]!="object"&&typeof t[0][0]<"u"}function gn(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),Wt(t)}function Xe(t,i){var s,r,l,c,f,v,y,P;if(!t||t.length===0)throw new Error("latlngs not passed");Wt(t)||(console.warn("latlngs are not flat! Only the first ring will be used"),t=t[0]);var z=q([0,0]),R=D(t),$=R.getNorthWest().distanceTo(R.getSouthWest())*R.getNorthEast().distanceTo(R.getNorthWest());$<1700&&(z=Hi(t));var jt=t.length,kt=[];for(s=0;sr){y=(c-r)/l,P=[v.x-y*(v.x-f.x),v.y-y*(v.y-f.y)];break}var qt=i.unproject(S(P));return q([qt.lat+z.lat,qt.lng+z.lng])}var xi={__proto__:null,simplify:wi,pointToSegmentDistance:pn,closestPointOnSegment:Bn,clipSegment:Ye,_getEdgeIntersection:ae,_getBitCode:pe,_sqClosestPointOnSegment:Ht,isFlat:Wt,_flat:gn,polylineCenter:Xe},Je={project:function(t){return new U(t.lng,t.lat)},unproject:function(t){return new O(t.y,t.x)},bounds:new J([-180,-90],[180,90])},Se={R:6378137,R_MINOR:6356752314245179e-9,bounds:new J([-2003750834279e-5,-1549657073972e-5],[2003750834279e-5,1876465623138e-5]),project:function(t){var i=Math.PI/180,s=this.R,r=t.lat*i,l=this.R_MINOR/s,c=Math.sqrt(1-l*l),f=c*Math.sin(r),v=Math.tan(Math.PI/4-r/2)/Math.pow((1-f)/(1+f),c/2);return r=-s*Math.log(Math.max(v,1e-10)),new U(t.lng*i*s,r)},unproject:function(t){for(var i=180/Math.PI,s=this.R,r=this.R_MINOR/s,l=Math.sqrt(1-r*r),c=Math.exp(-t.y/s),f=Math.PI/2-2*Math.atan(c),v=0,y=.1,P;v<15&&Math.abs(y)>1e-7;v++)P=l*Math.sin(f),P=Math.pow((1-P)/(1+P),l/2),y=Math.PI/2-2*Math.atan(c*P)-f,f+=y;return new O(f*i,t.x*i/s)}},Rn={__proto__:null,LonLat:Je,Mercator:Se,SphericalMercator:ve},Nn=G({},Mt,{code:"EPSG:3395",projection:Se,transformation:(function(){var t=.5/(Math.PI*Se.R);return ni(t,.5,-t,.5)})()}),ne=G({},Mt,{code:"EPSG:4326",projection:Je,transformation:ni(1/180,1,-1/180,.5)}),ji=G({},Ct,{projection:Je,transformation:ni(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var s=i.lng-t.lng,r=i.lat-t.lat;return Math.sqrt(s*s+r*r)},infinite:!0});Ct.Earth=Mt,Ct.EPSG3395=Nn,Ct.EPSG3857=Mi,Ct.EPSG900913=Pn,Ct.EPSG4326=ne,Ct.Simple=ji;var xt=N.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[Z(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[Z(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var s=this.getEvents();i.on(s,this),this.once("remove",function(){i.off(s,this)},this)}this.onAdd(i),this.fire("add"),i.fire("layeradd",{layer:this})}}});K.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=Z(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=Z(t);return this._layers[i]?(this._loaded&&t.onRemove(this),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return Z(t)in this._layers},eachLayer:function(t,i){for(var s in this._layers)t.call(i,this._layers[s]);return this},_addLayers:function(t){t=t?_t(t)?t:[t]:[];for(var i=0,s=t.length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),this.options.minZoom===void 0&&this._layersMinZoom&&this.getZoom()=2&&i[0]instanceof O&&i[0].equals(i[s-1])&&i.pop(),i},_setLatLngs:function(t){C.prototype._setLatLngs.call(this,t),Wt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return Wt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,s=new U(i,i);if(t=new J(t.min.subtract(s),t.max.add(s)),this._parts=[],!(!this._pxBounds||!this._pxBounds.intersects(t))){if(this.options.noClip){this._parts=this._rings;return}for(var r=0,l=this._rings.length,c;rt.y!=l.y>t.y&&t.x<(l.x-r.x)*(t.y-r.y)/(l.y-r.y)+r.x&&(i=!i);return i||C.prototype._containsPoint.call(this,t,!0)}});function ut(t,i){return new H(t,i)}var pt=Vt.extend({initialize:function(t,i){M(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i=_t(t)?t:t.features,s,r,l;if(i){for(s=0,r=i.length;s0&&l.push(l[0].slice()),l}function ue(t,i){return t.feature?G({},t.feature,{geometry:i}):bi(i)}function bi(t){return t.type==="Feature"||t.type==="FeatureCollection"?t:{type:"Feature",properties:{},geometry:t}}var to={toGeoJSON:function(t){return ue(this,{type:"Point",coordinates:yn(this.getLatLng(),t)})}};a.include(to),w.include(to),g.include(to),C.include({toGeoJSON:function(t){var i=!Wt(this._latlngs),s=lt(this._latlngs,i?1:0,!1,t);return ue(this,{type:(i?"Multi":"")+"LineString",coordinates:s})}}),H.include({toGeoJSON:function(t){var i=!Wt(this._latlngs),s=i&&!Wt(this._latlngs[0]),r=lt(this._latlngs,s?2:i?1:0,!0,t);return i||(r=[r]),ue(this,{type:(s?"Multi":"")+"Polygon",coordinates:r})}}),he.include({toMultiPoint:function(t){var i=[];return this.eachLayer(function(s){i.push(s.toGeoJSON(t).geometry.coordinates)}),ue(this,{type:"MultiPoint",coordinates:i})},toGeoJSON:function(t){var i=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(i==="MultiPoint")return this.toMultiPoint(t);var s=i==="GeometryCollection",r=[];return this.eachLayer(function(l){if(l.toGeoJSON){var c=l.toGeoJSON(t);if(s)r.push(c.geometry);else{var f=bi(c);f.type==="FeatureCollection"?r.push.apply(r,f.features):r.push(f)}}}),s?ue(this,{geometries:r,type:"GeometryCollection"}):{type:"FeatureCollection",features:r}}});function io(t,i){return new pt(t,i)}var So=io,Fn=xt.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,s){this._url=t,this._bounds=D(i),M(this,s)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(F(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){at(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&le(this._image),this},bringToBack:function(){return this._map&&Qt(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=D(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=this._url.tagName==="IMG",i=this._image=t?this._url:Q("img");if(F(i,"leaflet-image-layer"),this._zoomAnimated&&F(i,"leaflet-zoom-animated"),this.options.className&&F(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onload=A(this.fire,this,"load"),i.onerror=A(this._overlayOnError,this,"error"),(this.options.crossOrigin||this.options.crossOrigin==="")&&(i.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t){this._url=i.src;return}i.src=this._url,i.alt=this.options.alt},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),s=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;ce(this._image,s,i)},_reset:function(){var t=this._image,i=new J(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),s=i.getSize();B(t,i.min),t.style.width=s.x+"px",t.style.height=s.y+"px"},_updateOpacity:function(){Nt(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&this.options.zIndex!==void 0&&this.options.zIndex!==null&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)},getCenter:function(){return this._bounds.getCenter()}}),Zo=function(t,i,s){return new Fn(t,i,s)},no=Fn.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1,playsInline:!0},_initImage:function(){var t=this._url.tagName==="VIDEO",i=this._image=t?this._url:Q("video");if(F(i,"leaflet-image-layer"),this._zoomAnimated&&F(i,"leaflet-zoom-animated"),this.options.className&&F(i,this.options.className),i.onselectstart=h,i.onmousemove=h,i.onloadeddata=A(this.fire,this,"load"),t){for(var s=i.getElementsByTagName("source"),r=[],l=0;l0?r:[i.src];return}_t(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(i.style,"objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop,i.muted=!!this.options.muted,i.playsInline=!!this.options.playsInline;for(var c=0;cl?(i.height=l+"px",F(t,c)):dt(t,c),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),s=this._getAnchor();B(this._container,i.add(s))},_adjustPan:function(){if(this.options.autoPan){if(this._map._panAnim&&this._map._panAnim.stop(),this._autopanning){this._autopanning=!1;return}var t=this._map,i=parseInt(Ee(this._container,"marginBottom"),10)||0,s=this._container.offsetHeight+i,r=this._containerWidth,l=new U(this._containerLeft,-s-this._containerBottom);l._add(Yt(this._container));var c=t.layerPointToContainerPoint(l),f=S(this.options.autoPanPadding),v=S(this.options.autoPanPaddingTopLeft||f),y=S(this.options.autoPanPaddingBottomRight||f),P=t.getSize(),z=0,R=0;c.x+r+y.x>P.x&&(z=c.x+r-P.x+y.x),c.x-z-v.x<0&&(z=c.x-v.x),c.y+s+y.y>P.y&&(R=c.y+s-P.y+y.y),c.y-R-v.y<0&&(R=c.y-v.y),(z||R)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([z,R]))}},_getAnchor:function(){return S(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}}),Io=function(t,i){return new Hn(t,i)};K.mergeOptions({closePopupOnClick:!0}),K.include({openPopup:function(t,i,s){return this._initOverlay(Hn,t,i,s).openOn(this),this},closePopup:function(t){return t=arguments.length?t:this._popup,t&&t.close(),this}}),xt.include({bindPopup:function(t,i){return this._popup=this._initOverlay(Hn,this._popup,t,i),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof Vt||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return this._popup?this._popup.isOpen():!1},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){if(!(!this._popup||!this._map)){Ft(t);var i=t.layer||t.target;if(this._popup._source===i&&!(i instanceof _)){this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng);return}this._popup._source=i,this.openPopup(t.latlng)}},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){t.originalEvent.keyCode===13&&this._openPopup(t)}});var Wn=me.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){me.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){me.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=me.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip",i=t+" "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=Q("div",i),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+Z(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i,s,r=this._map,l=this._container,c=r.latLngToContainerPoint(r.getCenter()),f=r.layerPointToContainerPoint(t),v=this.options.direction,y=l.offsetWidth,P=l.offsetHeight,z=S(this.options.offset),R=this._getAnchor();v==="top"?(i=y/2,s=P):v==="bottom"?(i=y/2,s=0):v==="center"?(i=y/2,s=P/2):v==="right"?(i=0,s=P/2):v==="left"?(i=y,s=P/2):f.xthis.options.maxZoom||sr?this._retainParent(l,c,f,r):!1)},_retainChildren:function(t,i,s,r){for(var l=2*t;l<2*t+2;l++)for(var c=2*i;c<2*i+2;c++){var f=new U(l,c);f.z=s+1;var v=this._tileCoordsToKey(f),y=this._tiles[v];if(y&&y.active){y.retain=!0;continue}else y&&y.loaded&&(y.retain=!0);s+1this.options.maxZoom||this.options.minZoom!==void 0&&l1){this._setView(t,s);return}for(var R=l.min.y;R<=l.max.y;R++)for(var $=l.min.x;$<=l.max.x;$++){var jt=new U($,R);if(jt.z=this._tileZoom,!!this._isValidTile(jt)){var kt=this._tiles[this._tileCoordsToKey(jt)];kt?kt.current=!0:f.push(jt)}}if(f.sort(function(qt,qi){return qt.distanceTo(c)-qi.distanceTo(c)}),f.length!==0){this._loading||(this._loading=!0,this.fire("loading"));var oe=document.createDocumentFragment();for($=0;$s.max.x)||!i.wrapLat&&(t.ys.max.y))return!1}if(!this.options.bounds)return!0;var r=this._tileCoordsToBounds(t);return D(this.options.bounds).overlaps(r)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,s=this.getTileSize(),r=t.scaleBy(s),l=r.add(s),c=i.unproject(r,t.z),f=i.unproject(l,t.z);return[c,f]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),s=new tt(i[0],i[1]);return this.options.noWrap||(s=this._map.wrapLatLngBounds(s)),s},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),s=new U(+i[0],+i[1]);return s.z=+i[2],s},_removeTile:function(t){var i=this._tiles[t];i&&(at(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){F(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=h,t.onmousemove=h,b.ielt9&&this.options.opacity<1&&Nt(t,this.options.opacity)},_addTile:function(t,i){var s=this._getTilePos(t),r=this._tileCoordsToKey(t),l=this.createTile(this._wrapCoords(t),A(this._tileReady,this,t));this._initTile(l),this.createTile.length<2&&it(A(this._tileReady,this,t,null,l)),B(l,s),this._tiles[r]={el:l,coords:t,current:!0},i.appendChild(l),this.fire("tileloadstart",{tile:l,coords:t})},_tileReady:function(t,i,s){i&&this.fire("tileerror",{error:i,tile:s,coords:t});var r=this._tileCoordsToKey(t);s=this._tiles[r],s&&(s.loaded=+new Date,this._map._fadeAnimated?(Nt(s.el,0),ct(this._fadeFrame),this._fadeFrame=it(this._updateOpacity,this)):(s.active=!0,this._pruneTiles()),i||(F(s.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:s.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?it(this._pruneTiles,this):setTimeout(A(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new U(this._wrapX?gt(t.x,this._wrapX):t.x,this._wrapY?gt(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new J(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});function Ro(t){return new wn(t)}var Ui=wn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,i){this._url=t,i=M(this,i),i.detectRetina&&b.retina&&i.maxZoom>0?(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom=Math.min(i.maxZoom,i.minZoom+1)):(i.zoomOffset++,i.maxZoom=Math.max(i.minZoom,i.maxZoom-1)),i.minZoom=Math.max(0,i.minZoom)):i.zoomReverse?i.minZoom=Math.min(i.maxZoom,i.minZoom):i.maxZoom=Math.max(i.minZoom,i.maxZoom),typeof i.subdomains=="string"&&(i.subdomains=i.subdomains.split("")),this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&i===void 0&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var s=document.createElement("img");return V(s,"load",A(this._tileOnLoad,this,i,s)),V(s,"error",A(this._tileOnError,this,i,s)),(this.options.crossOrigin||this.options.crossOrigin==="")&&(s.crossOrigin=this.options.crossOrigin===!0?"":this.options.crossOrigin),typeof this.options.referrerPolicy=="string"&&(s.referrerPolicy=this.options.referrerPolicy),s.alt="",s.src=this.getTileUrl(t),s},getTileUrl:function(t){var i={r:b.retina?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var s=this._globalTileRange.max.y-t.y;this.options.tms&&(i.y=s),i["-y"]=s}return zt(this._url,G(i,this.options))},_tileOnLoad:function(t,i){b.ielt9?setTimeout(A(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,s){var r=this.options.errorTileUrl;r&&i.getAttribute("src")!==r&&(i.src=r),t(s,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,s=this.options.zoomReverse,r=this.options.zoomOffset;return s&&(t=i-t),t+r},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)if(this._tiles[t].coords.z!==this._tileZoom&&(i=this._tiles[t].el,i.onload=h,i.onerror=h,!i.complete)){i.src=ge;var s=this._tiles[t].coords;at(i),delete this._tiles[t],this.fire("tileabort",{tile:i,coords:s})}},_removeTile:function(t){var i=this._tiles[t];if(i)return i.el.setAttribute("src",ge),wn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,s){if(!(!this._map||s&&s.getAttribute("src")===ge))return wn.prototype._tileReady.call(this,t,i,s)}});function ro(t,i){return new Ui(t,i)}var ao=Ui.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var s=G({},this.defaultWmsParams);for(var r in i)r in this.options||(s[r]=i[r]);i=M(this,i);var l=i.detectRetina&&b.retina?2:1,c=this.getTileSize();s.width=c.x*l,s.height=c.y*l,this.wmsParams=s},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,Ui.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),s=this._crs,r=nt(s.project(i[0]),s.project(i[1])),l=r.min,c=r.max,f=(this._wmsVersion>=1.3&&this._crs===ne?[l.y,l.x,c.y,c.x]:[l.x,l.y,c.x,c.y]).join(","),v=Ui.prototype.getTileUrl.call(this,t);return v+et(this.wmsParams,v,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+f},setParams:function(t,i){return G(this.wmsParams,t),i||this.redraw(),this}});function No(t,i){return new ao(t,i)}Ui.WMS=ao,ro.wms=No;var Ze=xt.extend({options:{padding:.1},initialize:function(t){M(this,t),Z(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),F(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var s=this._map.getZoomScale(i,this._zoom),r=this._map.getSize().multiplyBy(.5+this.options.padding),l=this._map.project(this._center,i),c=r.multiplyBy(-s).add(l).subtract(this._map._getNewPixelOrigin(t,i));b.any3d?ce(this._container,c,s):B(this._container,c)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),s=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new J(s,s.add(i.multiplyBy(1+t*2)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),ho=Ze.extend({options:{tolerance:0},getEvents:function(){var t=Ze.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Ze.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");V(t,"mousemove",this._onMouseMove,this),V(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),V(t,"mouseout",this._handleMouseOut,this),t._leaflet_disable_events=!0,this._ctx=t.getContext("2d")},_destroyContainer:function(){ct(this._redrawRequest),delete this._ctx,at(this._container),st(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){var t;this._redrawBounds=null;for(var i in this._layers)t=this._layers[i],t._update();this._redraw()}},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Ze.prototype._update.call(this);var t=this._bounds,i=this._container,s=t.getSize(),r=b.retina?2:1;B(i,t.min),i.width=r*s.x,i.height=r*s.y,i.style.width=s.x+"px",i.style.height=s.y+"px",b.retina&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){Ze.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[Z(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,s=i.next,r=i.prev;s?s.prev=r:this._drawLast=r,r?r.next=s:this._drawFirst=s,delete t._order,delete this._layers[Z(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(typeof t.options.dashArray=="string"){var i=t.options.dashArray.split(/[, ]+/),s=[],r,l;for(l=0;l')}}catch{}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}})(),Fo={_initContainer:function(){this._container=Q("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Ze.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=xn("shape");F(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=xn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[Z(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;at(i),t.removeInteractiveTarget(i),delete this._layers[Z(t)]},_updateStyle:function(t){var i=t._stroke,s=t._fill,r=t.options,l=t._container;l.stroked=!!r.stroke,l.filled=!!r.fill,r.stroke?(i||(i=t._stroke=xn("stroke")),l.appendChild(i),i.weight=r.weight+"px",i.color=r.color,i.opacity=r.opacity,r.dashArray?i.dashStyle=_t(r.dashArray)?r.dashArray.join(" "):r.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=r.lineCap.replace("butt","flat"),i.joinstyle=r.lineJoin):i&&(l.removeChild(i),t._stroke=null),r.fill?(s||(s=t._fill=xn("fill")),l.appendChild(s),s.color=r.fillColor||r.color,s.opacity=r.fillOpacity):s&&(l.removeChild(s),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),s=Math.round(t._radius),r=Math.round(t._radiusY||s);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+s+","+r+" 0,"+65535*360)},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){le(t._container)},_bringToBack:function(t){Qt(t._container)}},Vn=b.vml?xn:we,Ln=Ze.extend({_initContainer:function(){this._container=Vn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Vn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){at(this._container),st(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){if(!(this._map._animatingZoom&&this._bounds)){Ze.prototype._update.call(this);var t=this._bounds,i=t.getSize(),s=this._container;(!this._svgSize||!this._svgSize.equals(i))&&(this._svgSize=i,s.setAttribute("width",i.x),s.setAttribute("height",i.y)),B(s,t.min),s.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=Vn("path");t.options.className&&F(i,t.options.className),t.options.interactive&&F(i,"leaflet-interactive"),this._updateStyle(t),this._layers[Z(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){at(t._path),t.removeInteractiveTarget(t._path),delete this._layers[Z(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,s=t.options;i&&(s.stroke?(i.setAttribute("stroke",s.color),i.setAttribute("stroke-opacity",s.opacity),i.setAttribute("stroke-width",s.weight),i.setAttribute("stroke-linecap",s.lineCap),i.setAttribute("stroke-linejoin",s.lineJoin),s.dashArray?i.setAttribute("stroke-dasharray",s.dashArray):i.removeAttribute("stroke-dasharray"),s.dashOffset?i.setAttribute("stroke-dashoffset",s.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),s.fill?(i.setAttribute("fill",s.fillColor||s.color),i.setAttribute("fill-opacity",s.fillOpacity),i.setAttribute("fill-rule",s.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,oi(t._parts,i))},_updateCircle:function(t){var i=t._point,s=Math.max(Math.round(t._radius),1),r=Math.max(Math.round(t._radiusY),1)||s,l="a"+s+","+r+" 0 1,0 ",c=t._empty()?"M0 0":"M"+(i.x-s)+","+i.y+l+s*2+",0 "+l+-s*2+",0 ";this._setPath(t,c)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){le(t._path)},_bringToBack:function(t){Qt(t._path)}});b.vml&&Ln.include(Fo);function lo(t){return b.svg||b.vml?new Ln(t):null}K.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if(t==="overlayPane"||t===void 0)return!1;var i=this._paneRenderers[t];return i===void 0&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&uo(t)||lo(t)}});var co=H.extend({initialize:function(t,i){H.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=D(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});function Ho(t,i){return new co(t,i)}Ln.create=Vn,Ln.pointsToPath=oi,pt.geometryToLayer=Lt,pt.coordsToLatLng=vn,pt.coordsToLatLngs=Pi,pt.latLngToCoords=yn,pt.latLngsToCoords=lt,pt.getFeature=ue,pt.asFeature=bi,K.mergeOptions({boxZoom:!0});var _o=Ut.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){V(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){st(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){at(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){this._resetStateTimeout!==0&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||t.which!==1&&t.button!==1)return!1;this._clearDeferredResetState(),this._resetState(),St(),fi(),this._startPoint=this._map.mouseEventToContainerPoint(t),V(document,{contextmenu:Ft,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=Q("div","leaflet-zoom-box",this._container),F(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new J(this._point,this._startPoint),s=i.getSize();B(this._box,i.min),this._box.style.width=s.x+"px",this._box.style.height=s.y+"px"},_finish:function(){this._moved&&(at(this._box),dt(this._container,"leaflet-crosshair")),Re(),Zt(),st(document,{contextmenu:Ft,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if(!(t.which!==1&&t.button!==1)&&(this._finish(),!!this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(A(this._resetState,this),0);var i=new tt(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){t.keyCode===27&&(this._finish(),this._clearDeferredResetState(),this._resetState())}});K.addInitHook("addHandler","boxZoom",_o),K.mergeOptions({doubleClickZoom:!0});var fo=Ut.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,s=i.getZoom(),r=i.options.zoomDelta,l=t.originalEvent.shiftKey?s-r:s+r;i.options.doubleClickZoom==="center"?i.setZoom(l):i.setZoomAround(t.containerPoint,l)}});K.addInitHook("addHandler","doubleClickZoom",fo),K.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var po=Ut.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Jt(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}F(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){dt(this._map._container,"leaflet-grab"),dt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=D(this._map.options.maxBounds);this._offsetLimit=nt(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,s=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(s),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(!(!this._viscosity||!this._offsetLimit)){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),s=this._initialWorldOffset,r=this._draggable._newPos.x,l=(r-i+s)%t+i-s,c=(r+i+s)%t-i-s,f=Math.abs(l+s)0?c:-c))-i;this._delta=0,this._startTime=null,f&&(t.options.scrollWheelZoom==="center"?t.setZoom(i+f):t.setZoomAround(this._lastMousePos,i+f))}});K.addInitHook("addHandler","scrollWheelZoom",go);var Wo=600;K.mergeOptions({tapHold:b.touchNative&&b.safari&&b.mobile,tapTolerance:15});var vo=Ut.extend({addHooks:function(){V(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){st(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(clearTimeout(this._holdTimeout),t.touches.length===1){var i=t.touches[0];this._startPos=this._newPos=new U(i.clientX,i.clientY),this._holdTimeout=setTimeout(A(function(){this._cancel(),this._isTapValid()&&(V(document,"touchend",mt),V(document,"touchend touchcancel",this._cancelClickPrevent),this._simulateEvent("contextmenu",i))},this),Wo),V(document,"touchend touchcancel contextmenu",this._cancel,this),V(document,"touchmove",this._onMove,this)}},_cancelClickPrevent:function t(){st(document,"touchend",mt),st(document,"touchend touchcancel",t)},_cancel:function(){clearTimeout(this._holdTimeout),st(document,"touchend touchcancel contextmenu",this._cancel,this),st(document,"touchmove",this._onMove,this)},_onMove:function(t){var i=t.touches[0];this._newPos=new U(i.clientX,i.clientY)},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_simulateEvent:function(t,i){var s=new MouseEvent(t,{bubbles:!0,cancelable:!0,view:window,screenX:i.screenX,screenY:i.screenY,clientX:i.clientX,clientY:i.clientY});s._simulated=!0,i.target.dispatchEvent(s)}});K.addInitHook("addHandler","tapHold",vo),K.mergeOptions({touchZoom:b.touch,bounceAtZoomLimits:!0});var yo=Ut.extend({addHooks:function(){F(this._map._container,"leaflet-touch-zoom"),V(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){dt(this._map._container,"leaflet-touch-zoom"),st(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(!(!t.touches||t.touches.length!==2||i._animatingZoom||this._zooming)){var s=i.mouseEventToContainerPoint(t.touches[0]),r=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),i.options.touchZoom!=="center"&&(this._pinchStartLatLng=i.containerPointToLatLng(s.add(r)._divideBy(2))),this._startDist=s.distanceTo(r),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),V(document,"touchmove",this._onTouchMove,this),V(document,"touchend touchcancel",this._onTouchEnd,this),mt(t)}},_onTouchMove:function(t){if(!(!t.touches||t.touches.length!==2||!this._zooming)){var i=this._map,s=i.mouseEventToContainerPoint(t.touches[0]),r=i.mouseEventToContainerPoint(t.touches[1]),l=s.distanceTo(r)/this._startDist;if(this._zoom=i.getScaleZoom(l,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&l>1)&&(this._zoom=i._limitZoom(this._zoom)),i.options.touchZoom==="center"){if(this._center=this._startLatLng,l===1)return}else{var c=s._add(r)._divideBy(2)._subtract(this._centerPoint);if(l===1&&c.x===0&&c.y===0)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(c),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),ct(this._animRequest);var f=A(i._move,i,this._center,this._zoom,{pinch:!0,round:!1},void 0);this._animRequest=it(f,this,!0),mt(t)}},_onTouchEnd:function(){if(!this._moved||!this._zooming){this._zooming=!1;return}this._zooming=!1,ct(this._animRequest),st(document,"touchmove",this._onTouchMove,this),st(document,"touchend touchcancel",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))}});K.addInitHook("addHandler","touchZoom",yo),K.BoxZoom=_o,K.DoubleClickZoom=fo,K.Drag=po,K.Keyboard=mo,K.ScrollWheelZoom=go,K.TapHold=vo,K.TouchZoom=yo,d.Bounds=J,d.Browser=b,d.CRS=Ct,d.Canvas=ho,d.Circle=w,d.CircleMarker=g,d.Class=bt,d.Control=Ot,d.DivIcon=so,d.DivOverlay=me,d.DomEvent=Bt,d.DomUtil=An,d.Draggable=Jt,d.Evented=N,d.FeatureGroup=Vt,d.GeoJSON=pt,d.GridLayer=wn,d.Handler=Ut,d.Icon=$e,d.ImageOverlay=Fn,d.LatLng=O,d.LatLngBounds=tt,d.Layer=xt,d.LayerGroup=he,d.LineUtil=xi,d.Map=K,d.Marker=a,d.Mixin=Ni,d.Path=_,d.Point=U,d.PolyUtil=Wi,d.Polygon=H,d.Polyline=C,d.Popup=Hn,d.PosAnimation=ke,d.Projection=Rn,d.Rectangle=co,d.Renderer=Ze,d.SVG=Ln,d.SVGOverlay=oo,d.TileLayer=Ui,d.Tooltip=Wn,d.Transformation=ye,d.Util=Kn,d.VideoOverlay=no,d.bind=A,d.bounds=nt,d.canvas=uo,d.circle=T,d.circleMarker=m,d.control=je,d.divIcon=Do,d.extend=G,d.featureGroup=Li,d.geoJSON=io,d.geoJson=So,d.gridLayer=Ro,d.icon=e,d.imageOverlay=Zo,d.latLng=q,d.latLngBounds=D,d.layerGroup=Gi,d.map=Ve,d.marker=u,d.point=S,d.polygon=ut,d.polyline=X,d.popup=Io,d.rectangle=Ho,d.setOptions=M,d.stamp=Z,d.svg=lo,d.svgOverlay=Ao,d.tileLayer=ro,d.tooltip=Bo,d.transformation=ni,d.version=E,d.videoOverlay=Oo;var Vo=window.L;d.noConflict=function(){return window.L=Vo,this},window.L=d}))});var zo=Gn((Co,ko)=>{"use strict";(function(d,E){typeof define=="function"&&define.amd?define(["leaflet"],d):typeof Co=="object"&&(ko.exports=d(Eo())),typeof E<"u"&&E.L&&d(E.L)})(function(d){d.Editable=d.Evented.extend({statics:{FORWARD:1,BACKWARD:-1},options:{zIndex:1e3,polygonClass:d.Polygon,polylineClass:d.Polyline,markerClass:d.Marker,rectangleClass:d.Rectangle,circleClass:d.Circle,drawingCSSClass:"leaflet-editable-drawing",drawingCursor:"crosshair",editLayer:void 0,featuresLayer:void 0,polylineEditorClass:void 0,polygonEditorClass:void 0,markerEditorClass:void 0,rectangleEditorClass:void 0,circleEditorClass:void 0,lineGuideOptions:{},skipMiddleMarkers:!1},initialize:function(h,p){d.setOptions(this,p),this._lastZIndex=this.options.zIndex,this.map=h,this.editLayer=this.createEditLayer(),this.featuresLayer=this.createFeaturesLayer(),this.forwardLineGuide=this.createLineGuide(),this.backwardLineGuide=this.createLineGuide()},fireAndForward:function(h,p){p=p||{},p.editTools=this,this.fire(h,p),this.map.fire(h,p)},createLineGuide:function(){var h=d.extend({dashArray:"5,10",weight:1,interactive:!1},this.options.lineGuideOptions);return d.polyline([],h)},createVertexIcon:function(h){return d.Browser.mobile&&d.Browser.touch?new d.Editable.TouchVertexIcon(h):new d.Editable.VertexIcon(h)},createEditLayer:function(){return this.options.editLayer||new d.LayerGroup().addTo(this.map)},createFeaturesLayer:function(){return this.options.featuresLayer||new d.LayerGroup().addTo(this.map)},moveForwardLineGuide:function(h){this.forwardLineGuide._latlngs.length&&(this.forwardLineGuide._latlngs[1]=h,this.forwardLineGuide._bounds.extend(h),this.forwardLineGuide.redraw())},moveBackwardLineGuide:function(h){this.backwardLineGuide._latlngs.length&&(this.backwardLineGuide._latlngs[1]=h,this.backwardLineGuide._bounds.extend(h),this.backwardLineGuide.redraw())},anchorForwardLineGuide:function(h){this.forwardLineGuide._latlngs[0]=h,this.forwardLineGuide._bounds.extend(h),this.forwardLineGuide.redraw()},anchorBackwardLineGuide:function(h){this.backwardLineGuide._latlngs[0]=h,this.backwardLineGuide._bounds.extend(h),this.backwardLineGuide.redraw()},attachForwardLineGuide:function(){this.editLayer.addLayer(this.forwardLineGuide)},attachBackwardLineGuide:function(){this.editLayer.addLayer(this.backwardLineGuide)},detachForwardLineGuide:function(){this.forwardLineGuide.setLatLngs([]),this.editLayer.removeLayer(this.forwardLineGuide)},detachBackwardLineGuide:function(){this.backwardLineGuide.setLatLngs([]),this.editLayer.removeLayer(this.backwardLineGuide)},blockEvents:function(){this._oldTargets||(this._oldTargets=this.map._targets,this.map._targets={})},unblockEvents:function(){this._oldTargets&&(this.map._targets=d.extend(this.map._targets,this._oldTargets),delete this._oldTargets)},registerForDrawing:function(h){this._drawingEditor&&this.unregisterForDrawing(this._drawingEditor),this.blockEvents(),h.reset(),this._drawingEditor=h,this.map.on("mousemove touchmove",h.onDrawingMouseMove,h),this.map.on("mousedown",this.onMousedown,this),this.map.on("mouseup",this.onMouseup,this),d.DomUtil.addClass(this.map._container,this.options.drawingCSSClass),this.defaultMapCursor=this.map._container.style.cursor,this.map._container.style.cursor=this.options.drawingCursor},unregisterForDrawing:function(h){this.unblockEvents(),d.DomUtil.removeClass(this.map._container,this.options.drawingCSSClass),this.map._container.style.cursor=this.defaultMapCursor,h=h||this._drawingEditor,h&&(this.map.off("mousemove touchmove",h.onDrawingMouseMove,h),this.map.off("mousedown",this.onMousedown,this),this.map.off("mouseup",this.onMouseup,this),h===this._drawingEditor&&(delete this._drawingEditor,h._drawing&&h.cancelDrawing()))},onMousedown:function(h){h.originalEvent.which==1&&(this._mouseDown=h,this._drawingEditor.onDrawingMouseDown(h))},onMouseup:function(h){if(this._mouseDown){var p=this._drawingEditor,x=this._mouseDown;if(this._mouseDown=null,p.onDrawingMouseUp(h),this._drawingEditor!==p)return;var k=d.point(x.originalEvent.clientX,x.originalEvent.clientY),M=d.point(h.originalEvent.clientX,h.originalEvent.clientY).distanceTo(k);Math.abs(M)<9*(window.devicePixelRatio||1)&&this._drawingEditor.onDrawingClick(h)}},drawing:function(){return this._drawingEditor&&this._drawingEditor.drawing()},stopDrawing:function(){this.unregisterForDrawing()},commitDrawing:function(h){this._drawingEditor&&this._drawingEditor.commitDrawing(h)},connectCreatedToMap:function(h){return this.featuresLayer.addLayer(h)},startPolyline:function(h,p){var x=this.createPolyline([],p);return x.enableEdit(this.map).newShape(h),x},startPolygon:function(h,p){var x=this.createPolygon([],p);return x.enableEdit(this.map).newShape(h),x},startMarker:function(h,p){h=h||this.map.getCenter().clone();var x=this.createMarker(h,p);return x.enableEdit(this.map).startDrawing(),x},startRectangle:function(h,p){var x=h||d.latLng([0,0]),k=new d.LatLngBounds(x,x),M=this.createRectangle(k,p);return M.enableEdit(this.map).startDrawing(),M},startCircle:function(h,p){h=h||this.map.getCenter().clone();var x=this.createCircle(h,p);return x.enableEdit(this.map).startDrawing(),x},startHole:function(h,p){h.newHole(p)},createLayer:function(h,p,x){x=d.Util.extend({editOptions:{editTools:this}},x);var k=new h(p,x);return this.fireAndForward("editable:created",{layer:k}),k},createPolyline:function(h,p){return this.createLayer(p&&p.polylineClass||this.options.polylineClass,h,p)},createPolygon:function(h,p){return this.createLayer(p&&p.polygonClass||this.options.polygonClass,h,p)},createMarker:function(h,p){return this.createLayer(p&&p.markerClass||this.options.markerClass,h,p)},createRectangle:function(h,p){return this.createLayer(p&&p.rectangleClass||this.options.rectangleClass,h,p)},createCircle:function(h,p){return this.createLayer(p&&p.circleClass||this.options.circleClass,h,p)}}),d.extend(d.Editable,{makeCancellable:function(h){h.cancel=function(){h._cancelled=!0}}}),d.Map.mergeOptions({editToolsClass:d.Editable,editable:!1,editOptions:{}}),d.Map.addInitHook(function(){this.whenReady(function(){this.options.editable&&(this.editTools=new this.options.editToolsClass(this,this.options.editOptions))})}),d.Editable.VertexIcon=d.DivIcon.extend({options:{iconSize:new d.Point(8,8)}}),d.Editable.TouchVertexIcon=d.Editable.VertexIcon.extend({options:{iconSize:new d.Point(20,20)}}),d.Editable.VertexMarker=d.Marker.extend({options:{draggable:!0,className:"leaflet-div-icon leaflet-vertex-icon"},initialize:function(h,p,x,k){this.latlng=h,this.latlngs=p,this.editor=x,d.Marker.prototype.initialize.call(this,h,k),this.options.icon=this.editor.tools.createVertexIcon({className:this.options.className}),this.latlng.__vertex=this,this.editor.editLayer.addLayer(this),this.setZIndexOffset(x.tools._lastZIndex+1)},onAdd:function(h){d.Marker.prototype.onAdd.call(this,h),this.on("drag",this.onDrag),this.on("dragstart",this.onDragStart),this.on("dragend",this.onDragEnd),this.on("mouseup",this.onMouseup),this.on("click",this.onClick),this.on("contextmenu",this.onContextMenu),this.on("mousedown touchstart",this.onMouseDown),this.on("mouseover",this.onMouseOver),this.on("mouseout",this.onMouseOut),this.addMiddleMarkers()},onRemove:function(h){this.middleMarker&&this.middleMarker.delete(),delete this.latlng.__vertex,this.off("drag",this.onDrag),this.off("dragstart",this.onDragStart),this.off("dragend",this.onDragEnd),this.off("mouseup",this.onMouseup),this.off("click",this.onClick),this.off("contextmenu",this.onContextMenu),this.off("mousedown touchstart",this.onMouseDown),this.off("mouseover",this.onMouseOver),this.off("mouseout",this.onMouseOut),d.Marker.prototype.onRemove.call(this,h)},onDrag:function(h){h.vertex=this,this.editor.onVertexMarkerDrag(h);var p=d.DomUtil.getPosition(this._icon),x=this._map.layerPointToLatLng(p);this.latlng.update(x),this._latlng=this.latlng,this.editor.refresh(),this.middleMarker&&this.middleMarker.updateLatLng();var k=this.getNext();k&&k.middleMarker&&k.middleMarker.updateLatLng()},onDragStart:function(h){h.vertex=this,this.editor.onVertexMarkerDragStart(h)},onDragEnd:function(h){h.vertex=this,this.editor.onVertexMarkerDragEnd(h)},onClick:function(h){h.vertex=this,this.editor.onVertexMarkerClick(h)},onMouseup:function(h){d.DomEvent.stop(h),h.vertex=this,this.editor.map.fire("mouseup",h)},onContextMenu:function(h){h.vertex=this,this.editor.onVertexMarkerContextMenu(h)},onMouseDown:function(h){h.vertex=this,this.editor.onVertexMarkerMouseDown(h)},onMouseOver:function(h){h.vertex=this,this.editor.onVertexMarkerMouseOver(h)},onMouseOut:function(h){h.vertex=this,this.editor.onVertexMarkerMouseOut(h)},delete:function(){var h=this.getNext();this.latlngs.splice(this.getIndex(),1),this.editor.editLayer.removeLayer(this),this.editor.onVertexDeleted({latlng:this.latlng,vertex:this}),this.latlngs.length||this.editor.deleteShape(this.latlngs),h&&h.resetMiddleMarker(),this.editor.refresh()},getIndex:function(){return this.latlngs.indexOf(this.latlng)},getLastIndex:function(){return this.latlngs.length-1},getPrevious:function(){if(!(this.latlngs.length<2)){var h=this.getIndex(),p=h-1;h===0&&this.editor.CLOSED&&(p=this.getLastIndex());var x=this.latlngs[p];if(x)return x.__vertex}},getNext:function(){if(!(this.latlngs.length<2)){var h=this.getIndex(),p=h+1;h===this.getLastIndex()&&this.editor.CLOSED&&(p=0);var x=this.latlngs[p];if(x)return x.__vertex}},addMiddleMarker:function(h){this.editor.hasMiddleMarkers()&&(h=h||this.getPrevious(),h&&!this.middleMarker&&(this.middleMarker=this.editor.addMiddleMarker(h,this,this.latlngs,this.editor)))},addMiddleMarkers:function(){if(this.editor.hasMiddleMarkers()){var h=this.getPrevious();h&&this.addMiddleMarker(h);var p=this.getNext();p&&p.resetMiddleMarker()}},resetMiddleMarker:function(){this.middleMarker&&this.middleMarker.delete(),this.addMiddleMarker()},split:function(){this.editor.splitShape&&this.editor.splitShape(this.latlngs,this.getIndex())},continue:function(){if(this.editor.continueBackward){var h=this.getIndex();h===0?this.editor.continueBackward(this.latlngs):h===this.getLastIndex()&&this.editor.continueForward(this.latlngs)}}}),d.Editable.mergeOptions({vertexMarkerClass:d.Editable.VertexMarker}),d.Editable.MiddleMarker=d.Marker.extend({options:{opacity:.5,className:"leaflet-div-icon leaflet-middle-icon",draggable:!0},initialize:function(h,p,x,k,M){this.left=h,this.right=p,this.editor=k,this.latlngs=x,d.Marker.prototype.initialize.call(this,this.computeLatLng(),M),this._opacity=this.options.opacity,this.options.icon=this.editor.tools.createVertexIcon({className:this.options.className}),this.editor.editLayer.addLayer(this),this.setVisibility()},setVisibility:function(){var h=this._map.latLngToContainerPoint(this.left.latlng),p=this._map.latLngToContainerPoint(this.right.latlng),x=d.point(this.options.icon.options.iconSize);h.distanceTo(p)=this.MIN_VERTEX-1&&(x=!0):p===0&&this._drawing===d.Editable.BACKWARD&&this._drawnLatLngs.length>=this.MIN_VERTEX||p===0&&this._drawing===d.Editable.FORWARD&&this._drawnLatLngs.length>=this.MIN_VERTEX&&this.CLOSED?x=!0:this.onVertexRawMarkerClick(h),this.fireAndForward("editable:vertex:clicked",h),x&&this.commitDrawing(h)}},onVertexRawMarkerClick:function(h){this.fireAndForward("editable:vertex:rawclick",h),!h._cancelled&&this.vertexCanBeDeleted(h.vertex)&&h.vertex.delete()},vertexCanBeDeleted:function(h){return h.latlngs.length>this.MIN_VERTEX},onVertexDeleted:function(h){this.fireAndForward("editable:vertex:deleted",h)},onVertexMarkerCtrlClick:function(h){this.fireAndForward("editable:vertex:ctrlclick",h)},onVertexMarkerShiftClick:function(h){this.fireAndForward("editable:vertex:shiftclick",h)},onVertexMarkerMetaKeyClick:function(h){this.fireAndForward("editable:vertex:metakeyclick",h)},onVertexMarkerAltClick:function(h){this.fireAndForward("editable:vertex:altclick",h)},onVertexMarkerContextMenu:function(h){this.fireAndForward("editable:vertex:contextmenu",h)},onVertexMarkerMouseDown:function(h){this.fireAndForward("editable:vertex:mousedown",h)},onVertexMarkerMouseOver:function(h){this.fireAndForward("editable:vertex:mouseover",h)},onVertexMarkerMouseOut:function(h){this.fireAndForward("editable:vertex:mouseout",h)},onMiddleMarkerMouseDown:function(h){this.fireAndForward("editable:middlemarker:mousedown",h)},onVertexMarkerDrag:function(h){this.onMove(h),this.feature._bounds&&this.extendBounds(h),this.fireAndForward("editable:vertex:drag",h)},onVertexMarkerDragStart:function(h){this.fireAndForward("editable:vertex:dragstart",h)},onVertexMarkerDragEnd:function(h){this.fireAndForward("editable:vertex:dragend",h)},setDrawnLatLngs:function(h){this._drawnLatLngs=h||this.getDefaultLatLngs()},startDrawing:function(){this._drawnLatLngs||this.setDrawnLatLngs(),d.Editable.BaseEditor.prototype.startDrawing.call(this)},startDrawingForward:function(){this.startDrawing()},endDrawing:function(){this.tools.detachForwardLineGuide(),this.tools.detachBackwardLineGuide(),this._drawnLatLngs&&this._drawnLatLngs.length"u"&&(p=this.feature._latlngs.length),this.feature._latlngs.splice(p,0,h),this.feature.redraw(),this._enabled&&this.reset()},extendBounds:function(h){this.feature._bounds.extend(h.vertex.latlng)},onDragStart:function(h){this.editLayer.clearLayers(),d.Editable.BaseEditor.prototype.onDragStart.call(this,h)},onDragEnd:function(h){this.initVertexMarkers(),d.Editable.BaseEditor.prototype.onDragEnd.call(this,h)}}),d.Editable.PolylineEditor=d.Editable.PathEditor.extend({startDrawingBackward:function(){this._drawing=d.Editable.BACKWARD,this.startDrawing()},continueBackward:function(h){this.drawing()||(h=h||this.getDefaultLatLngs(),this.setDrawnLatLngs(h),h.length>0&&(this.tools.attachBackwardLineGuide(),this.tools.anchorBackwardLineGuide(h[0])),this.startDrawingBackward())},continueForward:function(h){this.drawing()||(h=h||this.getDefaultLatLngs(),this.setDrawnLatLngs(h),h.length>0&&(this.tools.attachForwardLineGuide(),this.tools.anchorForwardLineGuide(h[h.length-1])),this.startDrawingForward())},getDefaultLatLngs:function(h){return h=h||this.feature._latlngs,!h.length||h[0]instanceof d.LatLng?h:this.getDefaultLatLngs(h[0])},ensureMulti:function(){this.feature._latlngs.length&>(this.feature._latlngs)&&(this.feature._latlngs=[this.feature._latlngs])},addNewEmptyShape:function(){if(this.feature._latlngs.length){var h=[];return this.appendShape(h),h}else return this.feature._latlngs},formatShape:function(h){if(gt(h))return h;if(h[0])return this.formatShape(h[0])},splitShape:function(h,p){if(!(!p||p>=h.length-1)){this.ensureMulti();var x=this.feature._latlngs.indexOf(h);if(x!==-1){var k=h.slice(0,p+1),M=h.slice(p);M[0]=d.latLng(M[0].lat,M[0].lng,M[0].alt),this.feature._latlngs.splice(x,1,k,M),this.refresh(),this.reset()}}}}),d.Editable.PolygonEditor=d.Editable.PathEditor.extend({CLOSED:!0,MIN_VERTEX:3,newPointForward:function(h){d.Editable.PathEditor.prototype.newPointForward.call(this,h),this.tools.backwardLineGuide._latlngs.length||this.tools.anchorBackwardLineGuide(h),this._drawnLatLngs.length===2&&this.tools.attachBackwardLineGuide()},addNewEmptyHole:function(h){this.ensureNotFlat();var p=this.feature.shapeAt(h);if(p){var x=[];return p.push(x),x}},newHole:function(h){var p=this.addNewEmptyHole(h);p&&(this.setDrawnLatLngs(p),this.startDrawingForward(),h&&this.newPointForward(h))},addNewEmptyShape:function(){if(this.feature._latlngs.length&&this.feature._latlngs[0].length){var h=[];return this.appendShape(h),h}else return this.feature._latlngs},ensureMulti:function(){this.feature._latlngs.length&>(this.feature._latlngs[0])&&(this.feature._latlngs=[this.feature._latlngs])},ensureNotFlat:function(){(!this.feature._latlngs.length||gt(this.feature._latlngs))&&(this.feature._latlngs=[this.feature._latlngs])},vertexCanBeDeleted:function(h){var p=this.feature.parentShape(h.latlngs),x=d.Util.indexOf(p,h.latlngs);return x>0?!0:d.Editable.PathEditor.prototype.vertexCanBeDeleted.call(this,h)},getDefaultLatLngs:function(){return this.feature._latlngs.length||this.feature._latlngs.push([]),this.feature._latlngs[0]},formatShape:function(h){return gt(h)&&(!h[0]||h[0].length!==0)?[h]:h}}),d.Editable.RectangleEditor=d.Editable.PathEditor.extend({CLOSED:!0,MIN_VERTEX:4,options:{skipMiddleMarkers:!0},extendBounds:function(h){var p=h.vertex.getIndex(),x=h.vertex.getNext(),k=h.vertex.getPrevious(),M=(p+2)%4,et=h.vertex.latlngs[M],yt=new d.LatLngBounds(h.latlng,et);k.latlng.update([h.latlng.lat,et.lng]),x.latlng.update([et.lat,h.latlng.lng]),this.updateBounds(yt),this.refreshVertexMarkers()},onDrawingMouseDown:function(h){d.Editable.PathEditor.prototype.onDrawingMouseDown.call(this,h),this.connect();var p=this.getDefaultLatLngs();p.length===3&&p.push(h.latlng);var x=new d.LatLngBounds(h.latlng,h.latlng);this.updateBounds(x),this.updateLatLngs(x),this.refresh(),this.reset(),h.originalEvent._simulated=!1,this.map.dragging._draggable._onUp(h.originalEvent),p[3].__vertex.dragging._draggable._onDown(h.originalEvent)},onDrawingMouseUp:function(h){this.commitDrawing(h),h.originalEvent._simulated=!1,d.Editable.PathEditor.prototype.onDrawingMouseUp.call(this,h)},onDrawingMouseMove:function(h){h.originalEvent._simulated=!1,d.Editable.PathEditor.prototype.onDrawingMouseMove.call(this,h)},getDefaultLatLngs:function(h){return h||this.feature._latlngs[0]},updateBounds:function(h){this.feature._bounds=h},updateLatLngs:function(h){for(var p=this.getDefaultLatLngs(),x=this.feature._boundsToLatLngs(h),k=0;kh.lat!=M.lat>h.lat&&h.lng<(M.lng-k.lng)*(h.lat-k.lat)/(M.lat-k.lat)+k.lng&&(x=!x);return x},parentShape:function(h,p){if(p=p||this._latlngs,!!p){var x=d.Util.indexOf(p,h);if(x!==-1)return p;for(var k=0;k=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng\",\"http://www.w3.org/2000/svg\"===(Wt.firstChild&&Wt.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement(\"div\"),e=(t.innerHTML='',t.firstChild);return e.style.behavior=\"url(#default#VML)\",e&&\"object\"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Wt,mac:0===navigator.platform.indexOf(\"Mac\"),linux:0===navigator.platform.indexOf(\"Linux\")},Ft=b.msPointer?\"MSPointerDown\":\"pointerdown\",Ut=b.msPointer?\"MSPointerMove\":\"pointermove\",Vt=b.msPointer?\"MSPointerUp\":\"pointerup\",qt=b.msPointer?\"MSPointerCancel\":\"pointercancel\",Gt={touchstart:Ft,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return\"touchstart\"!==e||Xt||(document.addEventListener(Ft,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn(\"wrong event specified:\",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||\"mouse\")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener(\"dblclick\",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:\"mouse\"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type=\"dblclick\",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener(\"click\",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we([\"transform\",\"webkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),ce=we([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),de=\"webkitTransition\"===ce||\"OTransition\"===ce?ce+\"End\":\"transitionend\";function _e(t){return\"string\"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return\"auto\"===(i=i&&\"auto\"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||\"\",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=F(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),\"geolocation\"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?\"permission denied\":2===e?\"position unavailable\":\"timeout\"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:e,message:\"Geolocation error: \"+t+\".\"}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)\"number\"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire(\"locationfound\",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire(\"unload\"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error(\"Map container not found.\");if(t._leaflet_id)throw new Error(\"Map container is already initialized.\");S(t,\"scroll\",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,\"leaflet-container\"+(b.touch?\" leaflet-touch\":\"\")+(b.retina?\" leaflet-retina\":\"\")+(b.ielt9?\" leaflet-oldie\":\"\")+(b.safari?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\")),pe(t,\"position\"));\"absolute\"!==e&&\"relative\"!==e&&\"fixed\"!==e&&\"sticky\"!==e&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),Z(this._mapPane,new p(0,0)),this.createPane(\"tilePane\"),this.createPane(\"overlayPane\"),this.createPane(\"shadowPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(M(t.markerPane,\"leaflet-zoom-hide\"),M(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire(\"viewprereset\"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire(\"viewreset\"),n&&this.fire(\"load\")},_moveStart:function(t,e){return t&&this.fire(\"zoomstart\"),e||this.fire(\"movestart\"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire(\"zoom\",i):((o||i&&i.pinch)&&this.fire(\"zoom\",i),this.fire(\"move\",i)),this},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup\",this._handleDOMEvent,this),this.options.trackResize&&e(window,\"resize\",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o=\"mouseout\"===e||\"mouseover\"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&(\"click\"===e||\"preclick\"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!We(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||\"click\"===t.type&&this._isClickDisabled(i)||(\"mousedown\"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,e,i){\"click\"===t.type&&((a=l({},t)).type=\"preclick\",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,i.noMoveStart||!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire(\"zoom\"),delete this._tempFireZoomEvent,this.fire(\"move\"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var B=et.extend({options:{position:\"topright\"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,\"leaflet-control\"),-1!==i.indexOf(\"bottom\")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on(\"unload\",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off(\"unload\",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0\",e=document.createElement(\"div\");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement(\"label\"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement(\"input\")).type=\"checkbox\",e.className=\"leaflet-control-layers-selector\",e.defaultChecked=n):e=this._createRadioElement(\"leaflet-base-layers_\"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,\"click\",this._onInputClick,this),document.createElement(\"span\")),o=(n.innerHTML=\" \"+t.name,document.createElement(\"span\"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){if(!this._preventClick){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section,e=(this._preventClick=!0,S(t,\"click\",O),this.expand(),this);setTimeout(function(){k(t,\"click\",O),e._preventClick=!1})}})),qe=B.extend({options:{position:\"topleft\",zoomInText:'+',zoomInTitle:\"Zoom in\",zoomOutText:'',zoomOutTitle:\"Zoom out\"},onAdd:function(t){var e=\"leaflet-control-zoom\",i=P(\"div\",e+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+\"-in\",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+\"-out\",i,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),i},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P(\"a\",i,n);return i.innerHTML=t,i.href=\"#\",i.title=e,i.setAttribute(\"role\",\"button\"),i.setAttribute(\"aria-label\",e),Ie(i),S(i,\"click\",Re),S(i,\"click\",o,this),S(i,\"click\",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e=\"leaflet-disabled\";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute(\"aria-disabled\",\"false\"),this._zoomOutButton.setAttribute(\"aria-disabled\",\"false\"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute(\"aria-disabled\",\"true\")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute(\"aria-disabled\",\"true\"))}}),Ge=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new qe,this.addControl(this.zoomControl))}),B.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e=\"leaflet-control-scale\",i=P(\"div\",e),n=this.options;return this._addScales(n,e+\"-line\",i),t.on(n.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P(\"div\",e,i)),t.imperial&&(this._iScale=P(\"div\",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+\" m\":e/1e3+\" km\",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':\"\")+\"Leaflet\"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P(\"div\",\"leaflet-control-attribution\"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on(\"layeradd\",this._addAttribution,this),this._container},onRemove:function(t){t.off(\"layeradd\",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once(\"remove\",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(\", \")),this._container.innerHTML=i.join(' | ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ke).addTo(this)}),B.Layers=Ve,B.Zoom=qe,B.Scale=Ge,B.Attribution=Ke,Ue.layers=function(t,e,i){return new Ve(t,e,i)},Ue.zoom=function(t){return new qe(t)},Ue.scale=function(t){return new Ge(t)},Ue.attribution=function(t){return new Ke(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Ye=b.touch?\"touchstart mousedown\":\"mousedown\",Xe=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Xe._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Ye,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,\"leaflet-zoom-anim\")||(t.touches&&1!==t.touches.length?Xe._dragging===this&&this.finishDrag():Xe._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Xe._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire(\"down\"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i=\"mousedown\"===t.type,S(document,i?\"mousemove\":\"touchmove\",this._onMove,this),S(document,i?\"mouseup\":\"touchend touchcancel\",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ri(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||yi.prototype._containsPoint.call(this,t,!0)}});var wi=ci.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;e×',S(i,\"click\",function(t){O(t),this.close()},this))},_updateLayout:function(){var t=this._contentNode,e=t.style,i=(e.width=\"\",e.whiteSpace=\"nowrap\",t.offsetWidth),i=Math.min(i,this.options.maxWidth),i=(i=Math.max(i,this.options.minWidth),e.width=i+1+\"px\",e.whiteSpace=\"\",e.height=\"\",t.offsetHeight),n=this.options.maxHeight,o=\"leaflet-popup-scrolled\";(n&&ns.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire(\"autopanstart\").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Ii=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Bi,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Bi,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ci||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof fi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Ai.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Ai.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire(\"tooltipopen\",{tooltip:this},!0))},onRemove:function(t){Ai.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire(\"tooltipclose\",{tooltip:this},!0))},getEvents:function(){var t=Ai.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=P(\"div\",t),this._container.setAttribute(\"role\",\"tooltip\"),this._container.setAttribute(\"id\",\"leaflet-tooltip-\"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i=\"top\"===s?(e=r/2,a):\"bottom\"===s?(e=r/2,0):(e=\"center\"===s?r/2:\"right\"===s?0:\"left\"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var t=t.split(\":\"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,\"leaflet-tile\");var e=this.getTileSize();t.style.width=e.x+\"px\",t.style.height=e.y+\"px\",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire(\"tileloadstart\",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire(\"tileerror\",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Di=Ni.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}(),zt={_initContainer:function(){this._container=P(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(Wi.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var e=t._container=Vi(\"shape\");M(e,\"leaflet-vml-shape \"+(this.options.className||\"\")),e.coordsize=\"1 1\",t._path=Vi(\"path\"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Vi(\"stroke\")),o.appendChild(e),e.weight=n.weight+\"px\",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):e.dashStyle=\"\",e.endcap=n.lineCap.replace(\"butt\",\"flat\"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Vi(\"fill\")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+e.x+\",\"+e.y+\" \"+i+\",\"+n+\" 0,23592600\")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},qi=b.vml?Vi:ct,Gi=Wi.extend({_initContainer:function(){this._container=qi(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=qi(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Wi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute(\"width\",e.x),i.setAttribute(\"height\",e.y)),Z(i,t.min),i.setAttribute(\"viewBox\",[t.min.x,t.min.y,e.x,e.y].join(\" \")),this.fire(\"update\"))},_initPath:function(t){var e=t._path=qi(\"path\");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,\"leaflet-interactive\"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute(\"stroke\",t.color),e.setAttribute(\"stroke-opacity\",t.opacity),e.setAttribute(\"stroke-width\",t.weight),e.setAttribute(\"stroke-linecap\",t.lineCap),e.setAttribute(\"stroke-linejoin\",t.lineJoin),t.dashArray?e.setAttribute(\"stroke-dasharray\",t.dashArray):e.removeAttribute(\"stroke-dasharray\"),t.dashOffset?e.setAttribute(\"stroke-dashoffset\",t.dashOffset):e.removeAttribute(\"stroke-dashoffset\")):e.setAttribute(\"stroke\",\"none\"),t.fill?(e.setAttribute(\"fill\",t.fillColor||t.color),e.setAttribute(\"fill-opacity\",t.fillOpacity),e.setAttribute(\"fill-rule\",t.fillRule||\"evenodd\")):e.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n=\"a\"+i+\",\"+(Math.max(Math.round(t._radiusY),1)||i)+\" 0 1,0 \",e=t._empty()?\"M0 0\":\"M\"+(e.x-i)+\",\"+e.y+n+2*i+\",0 \"+n+2*-i+\",0 \";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute(\"d\",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Ki(t){return b.svg||b.vml?new Gi(t):null}b.vml&&Gi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return\"overlayPane\"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Ui(t)||Ki(t)}});var Yi=xi.extend({initialize:function(t,e){xi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Gi.create=qi,Gi.pointsToPath=dt,wi.geometryToLayer=bi,wi.coordsToLatLng=Li,wi.coordsToLatLngs=Ti,wi.latLngToCoords=Mi,wi.latLngsToCoords=zi,wi.getFeature=Ci,wi.asFeature=Zi,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){S(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){k(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P(\"div\",\"leaflet-zoom-box\",this._container),M(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+\"px\",this._box.style.height=e.y+\"px\"},_finish:function(){this._moved&&(T(this._box),z(this._container,\"leaflet-crosshair\")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire(\"boxzoomend\",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook(\"addHandler\",\"boxZoom\",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;\"center\"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook(\"addHandler\",\"doubleClickZoom\",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Xe(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,\"leaflet-grab\"),z(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire(\"movestart\").fire(\"dragstart\"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1= this.MIN_VERTEX - 1) commit = true;\n } else if (index === 0 && this._drawing === L.Editable.BACKWARD && this._drawnLatLngs.length >= this.MIN_VERTEX) {\n commit = true;\n } else if (index === 0 && this._drawing === L.Editable.FORWARD && this._drawnLatLngs.length >= this.MIN_VERTEX && this.CLOSED) {\n commit = true; // Allow to close on first point also for polygons\n } else {\n this.onVertexRawMarkerClick(e);\n }\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:clicked: VertexEvent\n // Fired when a `click` is issued on a vertex, after all internal actions.\n this.fireAndForward('editable:vertex:clicked', e);\n if (commit) this.commitDrawing(e);\n },\n\n onVertexRawMarkerClick: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:rawclick: CancelableVertexEvent\n // Fired when a `click` is issued on a vertex without any special key and without being in drawing mode.\n this.fireAndForward('editable:vertex:rawclick', e);\n if (e._cancelled) return;\n if (!this.vertexCanBeDeleted(e.vertex)) return;\n e.vertex.delete();\n },\n\n vertexCanBeDeleted: function (vertex) {\n return vertex.latlngs.length > this.MIN_VERTEX;\n },\n\n onVertexDeleted: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:deleted: VertexEvent\n // Fired after a vertex has been deleted by user.\n this.fireAndForward('editable:vertex:deleted', e);\n },\n\n onVertexMarkerCtrlClick: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:ctrlclick: VertexEvent\n // Fired when a `click` with `ctrlKey` is issued on a vertex.\n this.fireAndForward('editable:vertex:ctrlclick', e);\n },\n\n onVertexMarkerShiftClick: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:shiftclick: VertexEvent\n // Fired when a `click` with `shiftKey` is issued on a vertex.\n this.fireAndForward('editable:vertex:shiftclick', e);\n },\n\n onVertexMarkerMetaKeyClick: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:metakeyclick: VertexEvent\n // Fired when a `click` with `metaKey` is issued on a vertex.\n this.fireAndForward('editable:vertex:metakeyclick', e);\n },\n\n onVertexMarkerAltClick: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:altclick: VertexEvent\n // Fired when a `click` with `altKey` is issued on a vertex.\n this.fireAndForward('editable:vertex:altclick', e);\n },\n\n onVertexMarkerContextMenu: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:contextmenu: VertexEvent\n // Fired when a `contextmenu` is issued on a vertex.\n this.fireAndForward('editable:vertex:contextmenu', e);\n },\n\n onVertexMarkerMouseDown: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:mousedown: VertexEvent\n // Fired when user `mousedown` a vertex.\n this.fireAndForward('editable:vertex:mousedown', e);\n },\n\n onVertexMarkerMouseOver: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:mouseover: VertexEvent\n // Fired when a user's mouse enters the vertex\n this.fireAndForward('editable:vertex:mouseover', e);\n },\n\n onVertexMarkerMouseOut: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:mouseout: VertexEvent\n // Fired when a user's mouse leaves the vertex\n this.fireAndForward('editable:vertex:mouseout', e);\n },\n\n onMiddleMarkerMouseDown: function (e) {\n // 🍂namespace Editable\n // 🍂section MiddleMarker events\n // 🍂event editable:middlemarker:mousedown: VertexEvent\n // Fired when user `mousedown` a middle marker.\n this.fireAndForward('editable:middlemarker:mousedown', e);\n },\n\n onVertexMarkerDrag: function (e) {\n this.onMove(e);\n if (this.feature._bounds) this.extendBounds(e);\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:drag: VertexEvent\n // Fired when a vertex is dragged by user.\n this.fireAndForward('editable:vertex:drag', e);\n },\n\n onVertexMarkerDragStart: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:dragstart: VertexEvent\n // Fired before a vertex is dragged by user.\n this.fireAndForward('editable:vertex:dragstart', e);\n },\n\n onVertexMarkerDragEnd: function (e) {\n // 🍂namespace Editable\n // 🍂section Vertex events\n // 🍂event editable:vertex:dragend: VertexEvent\n // Fired after a vertex is dragged by user.\n this.fireAndForward('editable:vertex:dragend', e);\n },\n\n setDrawnLatLngs: function (latlngs) {\n this._drawnLatLngs = latlngs || this.getDefaultLatLngs();\n },\n\n startDrawing: function () {\n if (!this._drawnLatLngs) this.setDrawnLatLngs();\n L.Editable.BaseEditor.prototype.startDrawing.call(this);\n },\n\n startDrawingForward: function () {\n this.startDrawing();\n },\n\n endDrawing: function () {\n this.tools.detachForwardLineGuide();\n this.tools.detachBackwardLineGuide();\n if (this._drawnLatLngs && this._drawnLatLngs.length < this.MIN_VERTEX) this.deleteShape(this._drawnLatLngs);\n L.Editable.BaseEditor.prototype.endDrawing.call(this);\n delete this._drawnLatLngs;\n },\n\n addLatLng: function (latlng) {\n if (this._drawing === L.Editable.FORWARD) this._drawnLatLngs.push(latlng);\n else this._drawnLatLngs.unshift(latlng);\n this.feature._bounds.extend(latlng);\n var vertex = this.addVertexMarker(latlng, this._drawnLatLngs);\n this.onNewVertex(vertex);\n this.refresh();\n },\n\n newPointForward: function (latlng) {\n this.addLatLng(latlng);\n this.tools.attachForwardLineGuide();\n this.tools.anchorForwardLineGuide(latlng);\n },\n\n newPointBackward: function (latlng) {\n this.addLatLng(latlng);\n this.tools.anchorBackwardLineGuide(latlng);\n },\n\n // 🍂namespace PathEditor\n // 🍂method push()\n // Programmatically add a point while drawing.\n push: function (latlng) {\n if (!latlng) return console.error('L.Editable.PathEditor.push expect a valid latlng as parameter');\n if (this._drawing === L.Editable.FORWARD) this.newPointForward(latlng);\n else this.newPointBackward(latlng);\n },\n\n removeLatLng: function (latlng) {\n latlng.__vertex.delete();\n this.refresh();\n },\n\n // 🍂method pop(): L.LatLng or null\n // Programmatically remove last point (if any) while drawing.\n pop: function () {\n if (this._drawnLatLngs.length <= 1) return;\n var latlng;\n if (this._drawing === L.Editable.FORWARD) latlng = this._drawnLatLngs[this._drawnLatLngs.length - 1];\n else latlng = this._drawnLatLngs[0];\n this.removeLatLng(latlng);\n if (this._drawing === L.Editable.FORWARD) this.tools.anchorForwardLineGuide(this._drawnLatLngs[this._drawnLatLngs.length - 1]);\n else this.tools.anchorForwardLineGuide(this._drawnLatLngs[0]);\n return latlng;\n },\n\n processDrawingClick: function (e) {\n if (e.vertex && e.vertex.editor === this) return;\n if (this._drawing === L.Editable.FORWARD) this.newPointForward(e.latlng);\n else this.newPointBackward(e.latlng);\n this.fireAndForward('editable:drawing:clicked', e);\n },\n\n onDrawingMouseMove: function (e) {\n L.Editable.BaseEditor.prototype.onDrawingMouseMove.call(this, e);\n if (this._drawing) {\n this.tools.moveForwardLineGuide(e.latlng);\n this.tools.moveBackwardLineGuide(e.latlng);\n }\n },\n\n refresh: function () {\n this.feature.redraw();\n this.onEditing();\n },\n\n // 🍂namespace PathEditor\n // 🍂method newShape(latlng?: L.LatLng)\n // Add a new shape (Polyline, Polygon) in a multi, and setup up drawing tools to draw it;\n // if optional `latlng` is given, start a path at this point.\n newShape: function (latlng) {\n var shape = this.addNewEmptyShape();\n if (!shape) return;\n this.setDrawnLatLngs(shape[0] || shape); // Polygon or polyline\n this.startDrawingForward();\n // 🍂namespace Editable\n // 🍂section Shape events\n // 🍂event editable:shape:new: ShapeEvent\n // Fired when a new shape is created in a multi (Polygon or Polyline).\n this.fireAndForward('editable:shape:new', {shape: shape});\n if (latlng) this.newPointForward(latlng);\n },\n\n deleteShape: function (shape, latlngs) {\n var e = {shape: shape};\n L.Editable.makeCancellable(e);\n // 🍂namespace Editable\n // 🍂section Shape events\n // 🍂event editable:shape:delete: CancelableShapeEvent\n // Fired before a new shape is deleted in a multi (Polygon or Polyline).\n this.fireAndForward('editable:shape:delete', e);\n if (e._cancelled) return;\n shape = this._deleteShape(shape, latlngs);\n if (this.ensureNotFlat) this.ensureNotFlat(); // Polygon.\n this.feature.setLatLngs(this.getLatLngs()); // Force bounds reset.\n this.refresh();\n this.reset();\n // 🍂namespace Editable\n // 🍂section Shape events\n // 🍂event editable:shape:deleted: ShapeEvent\n // Fired after a new shape is deleted in a multi (Polygon or Polyline).\n this.fireAndForward('editable:shape:deleted', {shape: shape});\n return shape;\n },\n\n _deleteShape: function (shape, latlngs) {\n latlngs = latlngs || this.getLatLngs();\n if (!latlngs.length) return;\n var self = this,\n inplaceDelete = function (latlngs, shape) {\n // Called when deleting a flat latlngs\n shape = latlngs.splice(0, Number.MAX_VALUE);\n return shape;\n },\n spliceDelete = function (latlngs, shape) {\n // Called when removing a latlngs inside an array\n latlngs.splice(latlngs.indexOf(shape), 1);\n if (!latlngs.length) self._deleteShape(latlngs);\n return shape;\n };\n if (latlngs === shape) return inplaceDelete(latlngs, shape);\n for (var i = 0; i < latlngs.length; i++) {\n if (latlngs[i] === shape) return spliceDelete(latlngs, shape);\n else if (latlngs[i].indexOf(shape) !== -1) return spliceDelete(latlngs[i], shape);\n }\n },\n\n // 🍂namespace PathEditor\n // 🍂method deleteShapeAt(latlng: L.LatLng): Array\n // Remove a path shape at the given `latlng`.\n deleteShapeAt: function (latlng) {\n var shape = this.feature.shapeAt(latlng);\n if (shape) return this.deleteShape(shape);\n },\n\n // 🍂method appendShape(shape: Array)\n // Append a new shape to the Polygon or Polyline.\n appendShape: function (shape) {\n this.insertShape(shape);\n },\n\n // 🍂method prependShape(shape: Array)\n // Prepend a new shape to the Polygon or Polyline.\n prependShape: function (shape) {\n this.insertShape(shape, 0);\n },\n\n // 🍂method insertShape(shape: Array, index: int)\n // Insert a new shape to the Polygon or Polyline at given index (default is to append).\n insertShape: function (shape, index) {\n this.ensureMulti();\n shape = this.formatShape(shape);\n if (typeof index === 'undefined') index = this.feature._latlngs.length;\n this.feature._latlngs.splice(index, 0, shape);\n this.feature.redraw();\n if (this._enabled) this.reset();\n },\n\n extendBounds: function (e) {\n this.feature._bounds.extend(e.vertex.latlng);\n },\n\n onDragStart: function (e) {\n this.editLayer.clearLayers();\n L.Editable.BaseEditor.prototype.onDragStart.call(this, e);\n },\n\n onDragEnd: function (e) {\n this.initVertexMarkers();\n L.Editable.BaseEditor.prototype.onDragEnd.call(this, e);\n }\n\n });\n\n // 🍂namespace Editable; 🍂class PolylineEditor; 🍂aka L.Editable.PolylineEditor\n // 🍂inherits PathEditor\n L.Editable.PolylineEditor = L.Editable.PathEditor.extend({\n\n startDrawingBackward: function () {\n this._drawing = L.Editable.BACKWARD;\n this.startDrawing();\n },\n\n // 🍂method continueBackward(latlngs?: Array)\n // Set up drawing tools to continue the line backward.\n continueBackward: function (latlngs) {\n if (this.drawing()) return;\n latlngs = latlngs || this.getDefaultLatLngs();\n this.setDrawnLatLngs(latlngs);\n if (latlngs.length > 0) {\n this.tools.attachBackwardLineGuide();\n this.tools.anchorBackwardLineGuide(latlngs[0]);\n }\n this.startDrawingBackward();\n },\n\n // 🍂method continueForward(latlngs?: Array)\n // Set up drawing tools to continue the line forward.\n continueForward: function (latlngs) {\n if (this.drawing()) return;\n latlngs = latlngs || this.getDefaultLatLngs();\n this.setDrawnLatLngs(latlngs);\n if (latlngs.length > 0) {\n this.tools.attachForwardLineGuide();\n this.tools.anchorForwardLineGuide(latlngs[latlngs.length - 1]);\n }\n this.startDrawingForward();\n },\n\n getDefaultLatLngs: function (latlngs) {\n latlngs = latlngs || this.feature._latlngs;\n if (!latlngs.length || latlngs[0] instanceof L.LatLng) return latlngs;\n else return this.getDefaultLatLngs(latlngs[0]);\n },\n\n ensureMulti: function () {\n if (this.feature._latlngs.length && isFlat(this.feature._latlngs)) {\n this.feature._latlngs = [this.feature._latlngs];\n }\n },\n\n addNewEmptyShape: function () {\n if (this.feature._latlngs.length) {\n var shape = [];\n this.appendShape(shape);\n return shape;\n } else {\n return this.feature._latlngs;\n }\n },\n\n formatShape: function (shape) {\n if (isFlat(shape)) return shape;\n else if (shape[0]) return this.formatShape(shape[0]);\n },\n\n // 🍂method splitShape(latlngs?: Array, index: int)\n // Split the given `latlngs` shape at index `index` and integrate new shape in instance `latlngs`.\n splitShape: function (shape, index) {\n if (!index || index >= shape.length - 1) return;\n this.ensureMulti();\n var shapeIndex = this.feature._latlngs.indexOf(shape);\n if (shapeIndex === -1) return;\n var first = shape.slice(0, index + 1),\n second = shape.slice(index);\n // We deal with reference, we don't want twice the same latlng around.\n second[0] = L.latLng(second[0].lat, second[0].lng, second[0].alt);\n this.feature._latlngs.splice(shapeIndex, 1, first, second);\n this.refresh();\n this.reset();\n }\n\n });\n\n // 🍂namespace Editable; 🍂class PolygonEditor; 🍂aka L.Editable.PolygonEditor\n // 🍂inherits PathEditor\n L.Editable.PolygonEditor = L.Editable.PathEditor.extend({\n\n CLOSED: true,\n MIN_VERTEX: 3,\n\n newPointForward: function (latlng) {\n L.Editable.PathEditor.prototype.newPointForward.call(this, latlng);\n if (!this.tools.backwardLineGuide._latlngs.length) this.tools.anchorBackwardLineGuide(latlng);\n if (this._drawnLatLngs.length === 2) this.tools.attachBackwardLineGuide();\n },\n\n addNewEmptyHole: function (latlng) {\n this.ensureNotFlat();\n var latlngs = this.feature.shapeAt(latlng);\n if (!latlngs) return;\n var holes = [];\n latlngs.push(holes);\n return holes;\n },\n\n // 🍂method newHole(latlng?: L.LatLng, index: int)\n // Set up drawing tools for creating a new hole on the Polygon. If the `latlng` param is given, a first point is created.\n newHole: function (latlng) {\n var holes = this.addNewEmptyHole(latlng);\n if (!holes) return;\n this.setDrawnLatLngs(holes);\n this.startDrawingForward();\n if (latlng) this.newPointForward(latlng);\n },\n\n addNewEmptyShape: function () {\n if (this.feature._latlngs.length && this.feature._latlngs[0].length) {\n var shape = [];\n this.appendShape(shape);\n return shape;\n } else {\n return this.feature._latlngs;\n }\n },\n\n ensureMulti: function () {\n if (this.feature._latlngs.length && isFlat(this.feature._latlngs[0])) {\n this.feature._latlngs = [this.feature._latlngs];\n }\n },\n\n ensureNotFlat: function () {\n if (!this.feature._latlngs.length || isFlat(this.feature._latlngs)) this.feature._latlngs = [this.feature._latlngs];\n },\n\n vertexCanBeDeleted: function (vertex) {\n var parent = this.feature.parentShape(vertex.latlngs),\n idx = L.Util.indexOf(parent, vertex.latlngs);\n if (idx > 0) return true; // Holes can be totally deleted without removing the layer itself.\n return L.Editable.PathEditor.prototype.vertexCanBeDeleted.call(this, vertex);\n },\n\n getDefaultLatLngs: function () {\n if (!this.feature._latlngs.length) this.feature._latlngs.push([]);\n return this.feature._latlngs[0];\n },\n\n formatShape: function (shape) {\n // [[1, 2], [3, 4]] => must be nested\n // [] => must be nested\n // [[]] => is already nested\n if (isFlat(shape) && (!shape[0] || shape[0].length !== 0)) return [shape];\n else return shape;\n }\n\n });\n\n // 🍂namespace Editable; 🍂class RectangleEditor; 🍂aka L.Editable.RectangleEditor\n // 🍂inherits PathEditor\n L.Editable.RectangleEditor = L.Editable.PathEditor.extend({\n\n CLOSED: true,\n MIN_VERTEX: 4,\n\n options: {\n skipMiddleMarkers: true\n },\n\n extendBounds: function (e) {\n var index = e.vertex.getIndex(),\n next = e.vertex.getNext(),\n previous = e.vertex.getPrevious(),\n oppositeIndex = (index + 2) % 4,\n opposite = e.vertex.latlngs[oppositeIndex],\n bounds = new L.LatLngBounds(e.latlng, opposite);\n // Update latlngs by hand to preserve order.\n previous.latlng.update([e.latlng.lat, opposite.lng]);\n next.latlng.update([opposite.lat, e.latlng.lng]);\n this.updateBounds(bounds);\n this.refreshVertexMarkers();\n },\n\n onDrawingMouseDown: function (e) {\n L.Editable.PathEditor.prototype.onDrawingMouseDown.call(this, e);\n this.connect();\n var latlngs = this.getDefaultLatLngs();\n // L.Polygon._convertLatLngs removes last latlng if it equals first point,\n // which is the case here as all latlngs are [0, 0]\n if (latlngs.length === 3) latlngs.push(e.latlng);\n var bounds = new L.LatLngBounds(e.latlng, e.latlng);\n this.updateBounds(bounds);\n this.updateLatLngs(bounds);\n this.refresh();\n this.reset();\n // Stop dragging map.\n // L.Draggable has two workflows:\n // - mousedown => mousemove => mouseup\n // - touchstart => touchmove => touchend\n // Problem: L.Map.Tap does not allow us to listen to touchstart, so we only\n // can deal with mousedown, but then when in a touch device, we are dealing with\n // simulated events (actually simulated by L.Map.Tap), which are no more taken\n // into account by L.Draggable.\n // Ref.: https://github.com/Leaflet/Leaflet.Editable/issues/103\n e.originalEvent._simulated = false;\n this.map.dragging._draggable._onUp(e.originalEvent);\n // Now transfer ongoing drag action to the bottom right corner.\n // Should we refine which corner will handle the drag according to\n // drag direction?\n latlngs[3].__vertex.dragging._draggable._onDown(e.originalEvent);\n },\n\n onDrawingMouseUp: function (e) {\n this.commitDrawing(e);\n e.originalEvent._simulated = false;\n L.Editable.PathEditor.prototype.onDrawingMouseUp.call(this, e);\n },\n\n onDrawingMouseMove: function (e) {\n e.originalEvent._simulated = false;\n L.Editable.PathEditor.prototype.onDrawingMouseMove.call(this, e);\n },\n\n\n getDefaultLatLngs: function (latlngs) {\n return latlngs || this.feature._latlngs[0];\n },\n\n updateBounds: function (bounds) {\n this.feature._bounds = bounds;\n },\n\n updateLatLngs: function (bounds) {\n var latlngs = this.getDefaultLatLngs(),\n newLatlngs = this.feature._boundsToLatLngs(bounds);\n // Keep references.\n for (var i = 0; i < latlngs.length; i++) {\n latlngs[i].update(newLatlngs[i]);\n }\n }\n\n });\n\n // 🍂namespace Editable; 🍂class CircleEditor; 🍂aka L.Editable.CircleEditor\n // 🍂inherits PathEditor\n L.Editable.CircleEditor = L.Editable.PathEditor.extend({\n\n MIN_VERTEX: 2,\n\n options: {\n skipMiddleMarkers: true\n },\n\n initialize: function (map, feature, options) {\n L.Editable.PathEditor.prototype.initialize.call(this, map, feature, options);\n this._resizeLatLng = this.computeResizeLatLng();\n },\n\n computeResizeLatLng: function () {\n // While circle is not added to the map, _radius is not set.\n var delta = (this.feature._radius || this.feature._mRadius) * Math.cos(Math.PI / 4),\n point = this.map.project(this.feature._latlng);\n return this.map.unproject([point.x + delta, point.y - delta]);\n },\n\n updateResizeLatLng: function () {\n this._resizeLatLng.update(this.computeResizeLatLng());\n this._resizeLatLng.__vertex.update();\n },\n\n getLatLngs: function () {\n return [this.feature._latlng, this._resizeLatLng];\n },\n\n getDefaultLatLngs: function () {\n return this.getLatLngs();\n },\n\n onVertexMarkerDrag: function (e) {\n if (e.vertex.getIndex() === 1) this.resize(e);\n else this.updateResizeLatLng(e);\n L.Editable.PathEditor.prototype.onVertexMarkerDrag.call(this, e);\n },\n\n resize: function (e) {\n var radius = this.feature._latlng.distanceTo(e.latlng);\n this.feature.setRadius(radius);\n },\n\n onDrawingMouseDown: function (e) {\n L.Editable.PathEditor.prototype.onDrawingMouseDown.call(this, e);\n this._resizeLatLng.update(e.latlng);\n this.feature._latlng.update(e.latlng);\n this.connect();\n // Stop dragging map.\n e.originalEvent._simulated = false;\n this.map.dragging._draggable._onUp(e.originalEvent);\n // Now transfer ongoing drag action to the radius handler.\n this._resizeLatLng.__vertex.dragging._draggable._onDown(e.originalEvent);\n },\n\n onDrawingMouseUp: function (e) {\n this.commitDrawing(e);\n e.originalEvent._simulated = false;\n L.Editable.PathEditor.prototype.onDrawingMouseUp.call(this, e);\n },\n\n onDrawingMouseMove: function (e) {\n e.originalEvent._simulated = false;\n L.Editable.PathEditor.prototype.onDrawingMouseMove.call(this, e);\n },\n\n onDrag: function (e) {\n L.Editable.PathEditor.prototype.onDrag.call(this, e);\n this.feature.dragging.updateLatLng(this._resizeLatLng);\n }\n\n });\n\n // 🍂namespace Editable; 🍂class EditableMixin\n // `EditableMixin` is included to `L.Polyline`, `L.Polygon`, `L.Rectangle`, `L.Circle`\n // and `L.Marker`. It adds some methods to them.\n // *When editing is enabled, the editor is accessible on the instance with the\n // `editor` property.*\n var EditableMixin = {\n\n createEditor: function (map) {\n map = map || this._map;\n var tools = (this.options.editOptions || {}).editTools || map.editTools;\n if (!tools) throw Error('Unable to detect Editable instance.');\n var Klass = this.options.editorClass || this.getEditorClass(tools);\n return new Klass(map, this, this.options.editOptions);\n },\n\n // 🍂method enableEdit(map?: L.Map): this.editor\n // Enable editing, by creating an editor if not existing, and then calling `enable` on it.\n enableEdit: function (map) {\n if (!this.editor) this.createEditor(map);\n this.editor.enable();\n return this.editor;\n },\n\n // 🍂method editEnabled(): boolean\n // Return true if current instance has an editor attached, and this editor is enabled.\n editEnabled: function () {\n return this.editor && this.editor.enabled();\n },\n\n // 🍂method disableEdit()\n // Disable editing, also remove the editor property reference.\n disableEdit: function () {\n if (this.editor) {\n this.editor.disable();\n delete this.editor;\n }\n },\n\n // 🍂method toggleEdit()\n // Enable or disable editing, according to current status.\n toggleEdit: function () {\n if (this.editEnabled()) this.disableEdit();\n else this.enableEdit();\n },\n\n _onEditableAdd: function () {\n if (this.editor) this.enableEdit();\n }\n\n };\n\n var PolylineMixin = {\n\n getEditorClass: function (tools) {\n return (tools && tools.options.polylineEditorClass) ? tools.options.polylineEditorClass : L.Editable.PolylineEditor;\n },\n\n shapeAt: function (latlng, latlngs) {\n // We can have those cases:\n // - latlngs are just a flat array of latlngs, use this\n // - latlngs is an array of arrays of latlngs, loop over\n var shape = null;\n latlngs = latlngs || this._latlngs;\n if (!latlngs.length) return shape;\n else if (isFlat(latlngs) && this.isInLatLngs(latlng, latlngs)) shape = latlngs;\n else for (var i = 0; i < latlngs.length; i++) if (this.isInLatLngs(latlng, latlngs[i])) return latlngs[i];\n return shape;\n },\n\n isInLatLngs: function (l, latlngs) {\n if (!latlngs) return false;\n var i, k, len, part = [], p,\n w = this._clickTolerance();\n this._projectLatlngs(latlngs, part, this._pxBounds);\n part = part[0];\n p = this._map.latLngToLayerPoint(l);\n\n if (!this._pxBounds.contains(p)) { return false; }\n for (i = 1, len = part.length, k = 0; i < len; k = i++) {\n\n if (L.LineUtil.pointToSegmentDistance(p, part[k], part[i]) <= w) {\n return true;\n }\n }\n return false;\n }\n\n };\n\n var PolygonMixin = {\n\n getEditorClass: function (tools) {\n return (tools && tools.options.polygonEditorClass) ? tools.options.polygonEditorClass : L.Editable.PolygonEditor;\n },\n\n shapeAt: function (latlng, latlngs) {\n // We can have those cases:\n // - latlngs are just a flat array of latlngs, use this\n // - latlngs is an array of arrays of latlngs, this is a simple polygon (maybe with holes), use the first\n // - latlngs is an array of arrays of arrays, this is a multi, loop over\n var shape = null;\n latlngs = latlngs || this._latlngs;\n if (!latlngs.length) return shape;\n else if (isFlat(latlngs) && this.isInLatLngs(latlng, latlngs)) shape = latlngs;\n else if (isFlat(latlngs[0]) && this.isInLatLngs(latlng, latlngs[0])) shape = latlngs;\n else for (var i = 0; i < latlngs.length; i++) if (this.isInLatLngs(latlng, latlngs[i][0])) return latlngs[i];\n return shape;\n },\n\n isInLatLngs: function (l, latlngs) {\n var inside = false, l1, l2, j, k, len2;\n\n for (j = 0, len2 = latlngs.length, k = len2 - 1; j < len2; k = j++) {\n l1 = latlngs[j];\n l2 = latlngs[k];\n\n if (((l1.lat > l.lat) !== (l2.lat > l.lat)) &&\n (l.lng < (l2.lng - l1.lng) * (l.lat - l1.lat) / (l2.lat - l1.lat) + l1.lng)) {\n inside = !inside;\n }\n }\n\n return inside;\n },\n\n parentShape: function (shape, latlngs) {\n latlngs = latlngs || this._latlngs;\n if (!latlngs) return;\n var idx = L.Util.indexOf(latlngs, shape);\n if (idx !== -1) return latlngs;\n for (var i = 0; i < latlngs.length; i++) {\n idx = L.Util.indexOf(latlngs[i], shape);\n if (idx !== -1) return latlngs[i];\n }\n }\n\n };\n\n\n var MarkerMixin = {\n\n getEditorClass: function (tools) {\n return (tools && tools.options.markerEditorClass) ? tools.options.markerEditorClass : L.Editable.MarkerEditor;\n }\n\n };\n\n var RectangleMixin = {\n\n getEditorClass: function (tools) {\n return (tools && tools.options.rectangleEditorClass) ? tools.options.rectangleEditorClass : L.Editable.RectangleEditor;\n }\n\n };\n\n var CircleMixin = {\n\n getEditorClass: function (tools) {\n return (tools && tools.options.circleEditorClass) ? tools.options.circleEditorClass : L.Editable.CircleEditor;\n }\n\n };\n\n var keepEditable = function () {\n // Make sure you can remove/readd an editable layer.\n this.on('add', this._onEditableAdd);\n };\n\n var isFlat = L.LineUtil.isFlat || L.LineUtil._flat || L.Polyline._flat; // <=> 1.1 compat.\n\n\n if (L.Polyline) {\n L.Polyline.include(EditableMixin);\n L.Polyline.include(PolylineMixin);\n L.Polyline.addInitHook(keepEditable);\n }\n if (L.Polygon) {\n L.Polygon.include(EditableMixin);\n L.Polygon.include(PolygonMixin);\n }\n if (L.Marker) {\n L.Marker.include(EditableMixin);\n L.Marker.include(MarkerMixin);\n L.Marker.addInitHook(keepEditable);\n }\n if (L.Rectangle) {\n L.Rectangle.include(EditableMixin);\n L.Rectangle.include(RectangleMixin);\n }\n if (L.Circle) {\n L.Circle.include(EditableMixin);\n L.Circle.include(CircleMixin);\n }\n\n L.LatLng.prototype.update = function (latlng) {\n latlng = L.latLng(latlng);\n this.lat = latlng.lat;\n this.lng = latlng.lng;\n }\n\n}, window));\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../../Private/Build/node_modules/leaflet/src/core/Util.js", "../../Private/Build/node_modules/leaflet/src/core/Class.js", "../../Private/Build/node_modules/leaflet/src/core/Events.js", "../../Private/Build/node_modules/leaflet/src/geometry/Point.js", "../../Private/Build/node_modules/leaflet/src/geometry/Bounds.js", "../../Private/Build/node_modules/leaflet/src/geo/LatLngBounds.js", "../../Private/Build/node_modules/leaflet/src/geo/LatLng.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.Earth.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js", "../../Private/Build/node_modules/leaflet/src/geometry/Transformation.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.Util.js", "../../Private/Build/node_modules/leaflet/src/core/Browser.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.Pointer.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.DoubleTap.js", "../../Private/Build/node_modules/leaflet/src/dom/DomUtil.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.js", "../../Private/Build/node_modules/leaflet/src/dom/PosAnimation.js", "../../Private/Build/node_modules/leaflet/src/map/Map.js", "../../Private/Build/node_modules/leaflet/src/control/Control.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Layers.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Zoom.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Scale.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Attribution.js", "../../Private/Build/node_modules/leaflet/src/core/Handler.js", "../../Private/Build/node_modules/leaflet/src/control/index.js", "../../Private/Build/node_modules/leaflet/src/core/index.js", "../../Private/Build/node_modules/leaflet/src/dom/Draggable.js", "../../Private/Build/node_modules/leaflet/src/geometry/PolyUtil.js", "../../Private/Build/node_modules/leaflet/src/geometry/LineUtil.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.LonLat.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.Mercator.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.Simple.js", "../../Private/Build/node_modules/leaflet/src/layer/Layer.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/index.js", "../../Private/Build/node_modules/leaflet/src/layer/LayerGroup.js", "../../Private/Build/node_modules/leaflet/src/layer/FeatureGroup.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Icon.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Icon.Default.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Marker.Drag.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Marker.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Path.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/CircleMarker.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Circle.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Polyline.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Polygon.js", "../../Private/Build/node_modules/leaflet/src/layer/GeoJSON.js", "../../Private/Build/node_modules/leaflet/src/layer/ImageOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/VideoOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/SVGOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/DivOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/Popup.js", "../../Private/Build/node_modules/leaflet/src/layer/Tooltip.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/DivIcon.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/index.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/GridLayer.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/TileLayer.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/TileLayer.WMS.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/index.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Renderer.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Canvas.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.VML.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Rectangle.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/index.js", "../../Private/Build/node_modules/leaflet/src/layer/index.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.BoxZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.Drag.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.Keyboard.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.TapHold.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.TouchZoom.js", "../../Private/Build/node_modules/leaflet/src/map/index.js", "../../Private/Build/node_modules/leaflet.path.drag/src/Path.Drag.js", "../../Private/Build/node_modules/leaflet/src/core/Util.js", "../../Private/Build/node_modules/leaflet/src/core/Class.js", "../../Private/Build/node_modules/leaflet/src/core/Events.js", "../../Private/Build/node_modules/leaflet/src/geometry/Point.js", "../../Private/Build/node_modules/leaflet/src/geometry/Bounds.js", "../../Private/Build/node_modules/leaflet/src/geo/LatLngBounds.js", "../../Private/Build/node_modules/leaflet/src/geo/LatLng.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.Earth.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js", "../../Private/Build/node_modules/leaflet/src/geometry/Transformation.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.Util.js", "../../Private/Build/node_modules/leaflet/src/core/Browser.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.Pointer.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.DoubleTap.js", "../../Private/Build/node_modules/leaflet/src/dom/DomUtil.js", "../../Private/Build/node_modules/leaflet/src/dom/DomEvent.js", "../../Private/Build/node_modules/leaflet/src/dom/PosAnimation.js", "../../Private/Build/node_modules/leaflet/src/map/Map.js", "../../Private/Build/node_modules/leaflet/src/control/Control.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Layers.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Zoom.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Scale.js", "../../Private/Build/node_modules/leaflet/src/control/Control.Attribution.js", "../../Private/Build/node_modules/leaflet/src/control/index.js", "../../Private/Build/node_modules/leaflet/src/core/Handler.js", "../../Private/Build/node_modules/leaflet/src/core/index.js", "../../Private/Build/node_modules/leaflet/src/dom/Draggable.js", "../../Private/Build/node_modules/leaflet/src/geometry/PolyUtil.js", "../../Private/Build/node_modules/leaflet/src/geometry/LineUtil.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.LonLat.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/Projection.Mercator.js", "../../Private/Build/node_modules/leaflet/src/geo/projection/index.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/CRS.Simple.js", "../../Private/Build/node_modules/leaflet/src/geo/crs/index.js", "../../Private/Build/node_modules/leaflet/src/layer/Layer.js", "../../Private/Build/node_modules/leaflet/src/layer/LayerGroup.js", "../../Private/Build/node_modules/leaflet/src/layer/FeatureGroup.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Icon.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Icon.Default.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Marker.Drag.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/Marker.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Path.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/CircleMarker.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Circle.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Polyline.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Polygon.js", "../../Private/Build/node_modules/leaflet/src/layer/GeoJSON.js", "../../Private/Build/node_modules/leaflet/src/layer/ImageOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/VideoOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/SVGOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/DivOverlay.js", "../../Private/Build/node_modules/leaflet/src/layer/Popup.js", "../../Private/Build/node_modules/leaflet/src/layer/Tooltip.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/DivIcon.js", "../../Private/Build/node_modules/leaflet/src/layer/marker/index.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/GridLayer.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/TileLayer.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/TileLayer.WMS.js", "../../Private/Build/node_modules/leaflet/src/layer/tile/index.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Renderer.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Canvas.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.VML.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/SVG.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/Rectangle.js", "../../Private/Build/node_modules/leaflet/src/layer/vector/index.js", "../../Private/Build/node_modules/leaflet/src/layer/index.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.BoxZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.Drag.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.Keyboard.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.TapHold.js", "../../Private/Build/node_modules/leaflet/src/map/handler/Map.TouchZoom.js", "../../Private/Build/node_modules/leaflet/src/map/index.js", "../../Private/Build/node_modules/leaflet-editable/src/Leaflet.Editable.js", ""], + "sourcesContent": ["/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nexport function extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nexport var create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, \u2026): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nexport function bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nexport var lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nexport function stamp(obj) {\r\n\tif (!('_leaflet_id' in obj)) {\r\n\t\tobj['_leaflet_id'] = ++lastId;\r\n\t}\r\n\treturn obj._leaflet_id;\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nexport function throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nexport function wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t min = range[0],\r\n\t d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nexport function falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, precision?: Number|false): Number\r\n// Returns the number `num` rounded with specified `precision`.\r\n// The default `precision` value is 6 decimal places.\r\n// `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\nexport function formatNum(num, precision) {\r\n\tif (precision === false) { return num; }\r\n\tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nexport function trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nexport function splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nexport function setOptions(obj, options) {\r\n\tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nexport function getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values \u2014 they will be evaluated passing `data` as an argument.\r\nexport function template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nexport var isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nexport function indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nexport var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nexport var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nexport var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nexport function requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nexport function cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n", "import * as Util from './Util';\r\n\r\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nexport function Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\tUtil.setOptions(this);\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = Util.create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\tUtil.extend(NewClass, props.statics);\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\tUtil.extend.apply(null, [proto].concat(props.includes));\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\tUtil.extend(proto, props);\r\n\tdelete proto.statics;\r\n\tdelete proto.includes;\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tproto.options = parentProto.options ? Util.create(parentProto.options) : {};\r\n\t\tUtil.extend(proto.options, props.options);\r\n\t}\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\tvar parentOptions = this.prototype.options;\r\n\tUtil.extend(this.prototype, props);\r\n\tif (props.options) {\r\n\t\tthis.prototype.options = parentOptions;\r\n\t\tthis.mergeOptions(props.options);\r\n\t}\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\tUtil.extend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\t/* global L: true */\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = Util.isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\r\n", "import {Class} from './Class';\r\nimport * as Util from './Util';\r\n\r\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nexport var Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!arguments.length) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tvar removeAll = arguments.length === 1;\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tif (removeAll) {\r\n\t\t\t\t\tthis._off(types[i]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context, _once) {\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if fn already there\r\n\t\tif (this._listens(type, fn, context) !== false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar newListener = {fn: fn, ctx: context};\r\n\t\tif (_once) {\r\n\t\t\tnewListener.once = true;\r\n\t\t}\r\n\r\n\t\tthis._events = this._events || {};\r\n\t\tthis._events[type] = this._events[type] || [];\r\n\t\tthis._events[type].push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t i,\r\n\t\t len;\r\n\r\n\t\tif (!this._events) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlisteners = this._events[type];\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (arguments.length === 1) { // remove all\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// Set all removed listeners to noop\r\n\t\t\t\t// so they are not called if remove happens in fire\r\n\t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tlisteners[i].fn = Util.falseFn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// find fn and remove it\r\n\t\tvar index = this._listens(type, fn, context);\r\n\t\tif (index !== false) {\r\n\t\t\tvar listener = listeners[index];\r\n\t\t\tif (this._firingCount) {\r\n\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\tlistener.fn = Util.falseFn;\r\n\r\n\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t}\r\n\t\t\tlisteners.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide a data\r\n\t// object \u2014 the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = Util.extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n\t\t\t\t\tvar fn = l.fn;\r\n\t\t\t\t\tif (l.once) {\r\n\t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String, propagate?: Boolean): Boolean\r\n\t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n\tlistens: function (type, fn, context, propagate) {\r\n\t\tif (typeof type !== 'string') {\r\n\t\t\tconsole.warn('\"string\" type argument expected');\r\n\t\t}\r\n\r\n\t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n\t\tvar _fn = fn;\r\n\t\tif (typeof fn !== 'function') {\r\n\t\t\tpropagate = !!fn;\r\n\t\t\t_fn = undefined;\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) {\r\n\t\t\tif (this._listens(type, _fn, context) !== false) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// returns the index (number) or false\r\n\t_listens: function (type, fn, context) {\r\n\t\tif (!this._events) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tvar listeners = this._events[type] || [];\r\n\t\tif (!fn) {\r\n\t\t\treturn !!listeners.length;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\r\n\t},\r\n\r\n\t// @method once(\u2026): this\r\n\t// Behaves as [`on(\u2026)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn, true);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = Util.splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[Util.stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[Util.stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, Util.extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(\u2026): this\r\n// Alias to [`on(\u2026)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(\u2026): this\r\n// Alias to [`off(\u2026)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(\u2026): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(\u2026): this\r\n// Alias to [`once(\u2026)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(\u2026): this\r\n// Alias to [`fire(\u2026)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(\u2026): Boolean\r\n// Alias to [`listens(\u2026)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nexport var Evented = Class.extend(Events);\r\n", "import {isArray, formatNum} from '../core/Util';\r\n\r\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t formatNum(this.x) + ', ' +\r\n\t\t formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nexport function toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\r\n", "import {Point, toPoint} from './Point';\r\n\r\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: Bounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar min2, max2;\r\n\t\tif (!obj) { return this; }\r\n\r\n\t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n\t\t\tmin2 = max2 = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t\tmin2 = obj.min;\r\n\t\t\tmax2 = obj.max;\r\n\r\n\t\t\tif (!min2 || !max2) { return this; }\r\n\t\t}\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = min2.clone();\r\n\t\t\tthis.max = max2.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn toPoint(\r\n\t\t (this.min.x + this.max.x) / 2,\r\n\t\t (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn toPoint(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn toPoint(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t (max.x <= this.max.x) &&\r\n\t\t (min.y >= this.min.y) &&\r\n\t\t (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t max = this.max,\r\n\t\t min2 = bounds.min,\r\n\t\t max2 = bounds.max,\r\n\t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t},\r\n\r\n\r\n\t// @method pad(bufferRatio: Number): Bounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar min = this.min,\r\n\t\tmax = this.max,\r\n\t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n\t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n\t\treturn toBounds(\r\n\t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n\t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n\t},\r\n\r\n\r\n\t// @method equals(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n\tequals: function (bounds) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n\t\t\tthis.max.equals(bounds.getBottomRight());\r\n\t},\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nexport function toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\r\n", "import {LatLng, toLatLng} from './LatLng';\r\n\r\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t ne = this._northEast,\r\n\t\t sw2 = bounds.getSouthWest(),\r\n\t\t ne2 = bounds.getNorthEast(),\r\n\r\n\t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nexport function toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\r\n", "import * as Util from '../core/Util';\r\nimport {Earth} from './crs/CRS.Earth';\r\nimport {toLatLngBounds} from './LatLngBounds';\r\n\r\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nexport function LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t Math.abs(this.lat - obj.lat),\r\n\t\t Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t Util.formatNum(this.lat, precision) + ', ' +\r\n\t\t Util.formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nexport function toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (Util.isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\r\n", "\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {LatLng} from '../LatLng';\r\nimport {LatLngBounds} from '../LatLngBounds';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nexport var CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t s = this.scale(zoom),\r\n\t\t min = this.transformation.transform(b.min, s),\r\n\t\t max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t lat = this.wrapLat ? Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t newCenter = this.wrapLatLng(center),\r\n\t\t latShift = center.lat - newCenter.lat,\r\n\t\t lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t ne = bounds.getNorthEast(),\r\n\t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\r\n", "import {CRS} from './CRS';\nimport * as Util from '../../core/Util';\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nexport var Earth = Util.extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see https://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t lat1 = latlng1.lat * rad,\n\t\t lat2 = latlng2.lat * rad,\n\t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n", "import {LatLng} from '../LatLng';\r\nimport {Bounds} from '../../geometry/Bounds';\r\nimport {Point} from '../../geometry/Point';\r\n\r\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection \u2014 the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nexport var SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t max = this.MAX_LATITUDE,\r\n\t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\r\n", "import {Point} from './Point';\r\nimport * as Util from '../core/Util';\r\n\r\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nexport function Transformation(a, b, c, d) {\r\n\tif (Util.isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t (point.x / scale - this._b) / this._a,\r\n\t\t (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nexport function toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\r\n", "import {Earth} from './CRS.Earth';\r\nimport {SphericalMercator} from '../projection/Projection.SphericalMercator';\r\nimport {toTransformation} from '../../geometry/Transformation';\r\nimport * as Util from '../../core/Util';\r\n\r\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nexport var EPSG3857 = Util.extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nexport var EPSG900913 = Util.extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\r\n", "import Browser from '../../core/Browser';\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nexport function svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nexport function pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n\n\n\n", "import * as Util from './Util';\r\nimport {svgCreate} from '../layer/vector/SVG.Util';\r\n\r\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// **Deprecated.** `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = !edge && userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !!(window.PointerEvent || msPointer);\r\n\r\n// @property touchNative: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// **This does not necessarily mean** that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\nvar touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () { // eslint-disable-line getter-return\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', Util.falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n}());\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\nvar inlineSvg = !!svg && (function () {\r\n\tvar div = document.createElement('div');\r\n\tdiv.innerHTML = '';\r\n\treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n})();\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Mac platform\r\nvar mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n// @property mac: Boolean; `true` when the browser is running in a Linux platform\r\nvar linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\r\n\r\nexport default {\r\n\tie: ie,\r\n\tielt9: ielt9,\r\n\tedge: edge,\r\n\twebkit: webkit,\r\n\tandroid: android,\r\n\tandroid23: android23,\r\n\tandroidStock: androidStock,\r\n\topera: opera,\r\n\tchrome: chrome,\r\n\tgecko: gecko,\r\n\tsafari: safari,\r\n\tphantom: phantom,\r\n\topera12: opera12,\r\n\twin: win,\r\n\tie3d: ie3d,\r\n\twebkit3d: webkit3d,\r\n\tgecko3d: gecko3d,\r\n\tany3d: any3d,\r\n\tmobile: mobile,\r\n\tmobileWebkit: mobileWebkit,\r\n\tmobileWebkit3d: mobileWebkit3d,\r\n\tmsPointer: msPointer,\r\n\tpointer: pointer,\r\n\ttouch: touch,\r\n\ttouchNative: touchNative,\r\n\tmobileOpera: mobileOpera,\r\n\tmobileGecko: mobileGecko,\r\n\tretina: retina,\r\n\tpassiveEvents: passiveEvents,\r\n\tcanvas: canvas,\r\n\tsvg: svg,\r\n\tvml: vml,\r\n\tinlineSvg: inlineSvg,\r\n\tmac: mac,\r\n\tlinux: linux\r\n};\r\n", "import * as DomEvent from './DomEvent';\nimport Browser from '../core/Browser';\nimport {falseFn} from '../core/Util';\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\nvar POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\nvar POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\nvar POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\nvar POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar pEvent = {\n\ttouchstart : POINTER_DOWN,\n\ttouchmove : POINTER_MOVE,\n\ttouchend : POINTER_UP,\n\ttouchcancel : POINTER_CANCEL\n};\nvar handle = {\n\ttouchstart : _onPointerStart,\n\ttouchmove : _handlePointer,\n\ttouchend : _handlePointer,\n\ttouchcancel : _handlePointer\n};\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nexport function addPointerListener(obj, type, handler) {\n\tif (type === 'touchstart') {\n\t\t_addPointerDocListener();\n\t}\n\tif (!handle[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn falseFn;\n\t}\n\thandler = handle[type].bind(this, handler);\n\tobj.addEventListener(pEvent[type], handler, false);\n\treturn handler;\n}\n\nexport function removePointerListener(obj, type, handler) {\n\tif (!pEvent[type]) {\n\t\tconsole.warn('wrong event specified:', type);\n\t\treturn;\n\t}\n\tobj.removeEventListener(pEvent[type], handler, false);\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n}\n\nfunction _addPointerDocListener() {\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _handlePointer(handler, e) {\n\tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _onPointerStart(handler, e) {\n\t// IE10 specific: MsTouch needs preventDefault. See #2000\n\tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n\t\tDomEvent.preventDefault(e);\n\t}\n\t_handlePointer(handler, e);\n}\n", "import * as DomEvent from './DomEvent';\r\n\r\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\nfunction makeDblclick(event) {\r\n\t// in modern browsers `type` cannot be just overridden:\r\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n\tvar newEvent = {},\r\n\t prop, i;\r\n\tfor (i in event) {\r\n\t\tprop = event[i];\r\n\t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n\t}\r\n\tevent = newEvent;\r\n\tnewEvent.type = 'dblclick';\r\n\tnewEvent.detail = 2;\r\n\tnewEvent.isTrusted = false;\r\n\tnewEvent._simulated = true; // for debug purposes\r\n\treturn newEvent;\r\n}\r\n\r\nvar delay = 200;\r\nexport function addDoubleTapListener(obj, handler) {\r\n\t// Most browsers handle double tap natively\r\n\tobj.addEventListener('dblclick', handler);\r\n\r\n\t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n\t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n\t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n\tvar last = 0,\r\n\t detail;\r\n\tfunction simDblclick(e) {\r\n\t\tif (e.detail !== 1) {\r\n\t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (e.pointerType === 'mouse' ||\r\n\t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// When clicking on an , the browser generates a click on its\r\n\t\t//